设备管理
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

183 lines
4.7 KiB

<template>
<div class="firmware-management-wrap">
<EdfsWrap class="firmware-table" title="固件列表">
<template #title-right>
<div class="firmware-table-title">
<EdfsButton
type="primary"
inner-text="新增固件"
:icon="createIcon"
@click="addFirmware"
/>
</div>
</template>
<edfs-table
:data="dataList"
:highlight-current-row="true"
ref="tableRef"
row-class-name="row"
:page-size="pageSize"
:page-total="pageTotal"
class="table"
:current-page="pageIndex"
@pageCurrentChange="handleJump"
>
<template v-for="(col, idx) in tableColumns" :key="idx">
<!-- <el-table-column
v-if="col.prop == 'status'"
:label="col.label"
:prop="col.prop"
:min-width="col.minWidth"
>
<template #default="scope">
<div style="display: flex; align-items: center; column-gap: 4px">
<img
:src="deviceStatusImgMap[scope.row.status]"
alt=""
width="16"
height="16"
/>
{{ getDictObj('device_entity_status', scope.row.status)?.label }}
</div>
</template>
</el-table-column> -->
<el-table-column
v-if="col.prop == 'createTime'"
:label="col.label"
:prop="col.prop"
:min-width="col.width"
>
<template #default="scope">
{{ dayjs(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column
v-else
:label="col.label"
:prop="col.prop"
:min-width="col.width"
/>
</template>
<!-- <el-table-column label="操作" min-width="14%">
<template #default="scope">
<EdfsButton
type="primary"
link
inner-text="下载固件"
@click="onDownload(scope.row)"
/>
<EdfsButton
type="danger"
link
inner-text="删除"
@click="onDelete(scope.row.id)"
/>
</template>
</el-table-column>-->
</edfs-table>
</EdfsWrap>
<createFirmwareDlg :is-show="isShowDlg" @on-close="onClose" @on-save="onSave" />
</div>
</template>
<script setup lang="ts">
import { tableColumns } from './utils'
import EdfsButton from '@/components/dashboard/Edfs-button/index.vue'
import EdfsTable from '@/components/dashboard/Edfs-table/index.vue'
import EdfsWrap from '@/components/dashboard/Edfs-wrap.vue'
import { useIcon } from '@/utils/useIcon'
import createFirmwareDlg from './components/create-firmware-dlg.vue'
import { deleteFirmware, getFirmwareList } from '@/api/module/eam/device/firmware'
import { isResError, useMessage } from '@/hooks/useMessage.js'
import dayjs from 'dayjs'
import download from '@/utils/download'
const message = useMessage()
const createIcon = useIcon({ icon: 'gravity-ui:plus' })
const tableRef = ref<any>(null)
const dataList = ref([])
const pageIndex = ref(1)
const pageSize = ref()
const pageTotal = ref(0)
const pageJump = ref(1)
async function loadData() {
if (!pageSize.value) {
pageSize.value = tableRef.value.getSize()
}
const res = await getFirmwareList({
pageNo: pageIndex.value,
pageSize: pageSize.value,
})
if (isResError(res)) return
const { list, total } = res.data
dataList.value = list
pageTotal.value = total
}
watch(pageIndex, () => {
pageJump.value = pageIndex.value
loadData()
})
function handleJump(page: number) {
pageIndex.value = page
}
async function onDelete(id: string) {
try {
await message.delConfirm()
const res = await deleteFirmware(id)
if (isResError(res)) return
message.success('删除成功')
loadData()
} catch (error) {}
}
function onDownload(row: any) {
// download.word(row.downloadPath, row.name)
// const downA = document.createElement('a')
// downA.href = row.downloadPath
// downA.download = row.name
// downA.click()
// downA.remove()
}
const isShowDlg = ref(false)
function addFirmware() {
isShowDlg.value = true
}
function onClose() {
isShowDlg.value = false
}
function onSave() {
isShowDlg.value = false
loadData()
}
onMounted(() => {
loadData()
})
</script>
<style scoped lang="scss">
.firmware-management-wrap {
width: 100%;
height: 100%;
.firmware-table {
height: 100%;
box-sizing: border-box;
background: #fff;
padding-bottom: 0;
.table {
height: 100%;
width: 100%;
}
}
}
</style>