|
|
@ -11,82 +11,22 @@ |
|
|
|
/> |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<edfs-table |
|
|
|
<el-auto-resizer class="table"> |
|
|
|
|
|
|
|
<template #default="{ height, width }"> |
|
|
|
|
|
|
|
<el-table-v2 |
|
|
|
|
|
|
|
ref="mainTable" |
|
|
|
|
|
|
|
scrollbar-always-on |
|
|
|
|
|
|
|
:columns="tableCol" |
|
|
|
:data="dataList" |
|
|
|
:data="dataList" |
|
|
|
:highlight-current-row="true" |
|
|
|
v-if="visibilityTable" |
|
|
|
ref="tableRef" |
|
|
|
:border="true" |
|
|
|
row-class-name="row" |
|
|
|
:width="width" |
|
|
|
:page-size="pageSize" |
|
|
|
:estimated-row-height="60" |
|
|
|
:page-total="pageTotal" |
|
|
|
:height="height" |
|
|
|
class="table" |
|
|
|
row-key="id" |
|
|
|
:current-page="pageIndex" |
|
|
|
|
|
|
|
@pageCurrentChange="handleJump" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template v-for="(col, idx) in tableColumns" :key="idx"> |
|
|
|
|
|
|
|
<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-if="col.prop === 'status'" |
|
|
|
|
|
|
|
:label="col.label" |
|
|
|
|
|
|
|
:prop="col.prop" |
|
|
|
|
|
|
|
:min-width="col.width" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
|
|
{{ taskStatusMap[scope.row.status] }} |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
|
|
v-else-if="col.prop === 'executeTime'" |
|
|
|
|
|
|
|
:label="col.label" |
|
|
|
|
|
|
|
:prop="col.prop" |
|
|
|
|
|
|
|
:min-width="col.width" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
|
|
{{ dayjs(scope.row.executeTime).format('YYYY-MM-DD HH:mm:ss') }} |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
|
|
v-else-if="col.prop === 'deviceUpgradeDetail'" |
|
|
|
|
|
|
|
:label="col.label" |
|
|
|
|
|
|
|
:prop="col.prop" |
|
|
|
|
|
|
|
:min-width="col.width" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
|
|
<div> |
|
|
|
|
|
|
|
<div>升级中:{{ scope.row.processingCount }}</div> |
|
|
|
|
|
|
|
<div>失败数量: {{ scope.row.failCount }}</div> |
|
|
|
|
|
|
|
<div>升级完成: {{ scope.row.successCount }}</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</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="8%"> |
|
|
|
|
|
|
|
<template #default="scope"> |
|
|
|
|
|
|
|
<EdfsButton |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
link |
|
|
|
|
|
|
|
v-if="scope.row.status === 1 || scope.row.status === 2" |
|
|
|
|
|
|
|
inner-text="详情" |
|
|
|
|
|
|
|
@click="onDetails(scope.row)" |
|
|
|
|
|
|
|
/> |
|
|
|
/> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-auto-resizer> |
|
|
|
</edfs-table> |
|
|
|
|
|
|
|
</EdfsWrap> |
|
|
|
</EdfsWrap> |
|
|
|
<createTaskDlg :isShow="isShowDlg" @on-close="onClose" @on-save="onSave" /> |
|
|
|
<createTaskDlg :isShow="isShowDlg" @on-close="onClose" @on-save="onSave" /> |
|
|
|
<detailsDrawer |
|
|
|
<detailsDrawer |
|
|
@ -104,7 +44,7 @@ import { |
|
|
|
removeListener, |
|
|
|
removeListener, |
|
|
|
type SocketMsgListener, |
|
|
|
type SocketMsgListener, |
|
|
|
} from '@/tools/event/socketEvent' |
|
|
|
} from '@/tools/event/socketEvent' |
|
|
|
import { tableColumns, taskStatusMap } from './utils' |
|
|
|
import { generateTableColumns, taskStatusMap } from './utils' |
|
|
|
import EdfsButton from '@/components/dashboard/Edfs-button/index.vue' |
|
|
|
import EdfsButton from '@/components/dashboard/Edfs-button/index.vue' |
|
|
|
import EdfsTable from '@/components/dashboard/Edfs-table/index.vue' |
|
|
|
import EdfsTable from '@/components/dashboard/Edfs-table/index.vue' |
|
|
|
import EdfsWrap from '@/components/dashboard/Edfs-wrap.vue' |
|
|
|
import EdfsWrap from '@/components/dashboard/Edfs-wrap.vue' |
|
|
@ -112,12 +52,14 @@ import { useIcon } from '@/utils/useIcon' |
|
|
|
import createTaskDlg from './components/create-task-dlg.vue' |
|
|
|
import createTaskDlg from './components/create-task-dlg.vue' |
|
|
|
import detailsDrawer from './components/details-drawer.vue' |
|
|
|
import detailsDrawer from './components/details-drawer.vue' |
|
|
|
import { isResError, useMessage } from '@/hooks/useMessage.js' |
|
|
|
import { isResError, useMessage } from '@/hooks/useMessage.js' |
|
|
|
import dayjs from 'dayjs' |
|
|
|
|
|
|
|
import { useRoute } from 'vue-router' |
|
|
|
import { useRoute } from 'vue-router' |
|
|
|
import { getTaskList } from '@/api/module/eam/device/task' |
|
|
|
import { getTaskList } from '@/api/module/eam/device/task' |
|
|
|
|
|
|
|
import { useWindowResize } from '@/tools/common/hooks' |
|
|
|
const route = useRoute() |
|
|
|
const route = useRoute() |
|
|
|
const message = useMessage() |
|
|
|
const message = useMessage() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const tableCol = ref(generateTableColumns(onDetails)) |
|
|
|
|
|
|
|
|
|
|
|
const createIcon = useIcon({ icon: 'gravity-ui:plus' }) |
|
|
|
const createIcon = useIcon({ icon: 'gravity-ui:plus' }) |
|
|
|
const tableRef = ref<any>(null) |
|
|
|
const tableRef = ref<any>(null) |
|
|
|
const dataList = ref<any>([]) |
|
|
|
const dataList = ref<any>([]) |
|
|
@ -131,12 +73,9 @@ type TaskMap = Map<number, DeviceMap> |
|
|
|
|
|
|
|
|
|
|
|
const taskMap: TaskMap = new Map<number, DeviceMap>() |
|
|
|
const taskMap: TaskMap = new Map<number, DeviceMap>() |
|
|
|
async function loadData() { |
|
|
|
async function loadData() { |
|
|
|
if (!pageSize.value) { |
|
|
|
|
|
|
|
pageSize.value = tableRef.value.getSize() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const res = await getTaskList({ |
|
|
|
const res = await getTaskList({ |
|
|
|
pageNo: pageIndex.value, |
|
|
|
pageNo: pageIndex.value, |
|
|
|
pageSize: pageSize.value, |
|
|
|
pageSize: pageSize.value ?? 124, |
|
|
|
}) |
|
|
|
}) |
|
|
|
if (isResError(res)) return |
|
|
|
if (isResError(res)) return |
|
|
|
const { list, total } = res.data |
|
|
|
const { list, total } = res.data |
|
|
@ -183,8 +122,27 @@ onMounted(async () => { |
|
|
|
if (queryType === 'create') { |
|
|
|
if (queryType === 'create') { |
|
|
|
addTask() |
|
|
|
addTask() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
resetColumnsWidth() |
|
|
|
|
|
|
|
useWindowResize(resetColumnsWidth) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const visibilityTable = ref(false) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async function resetColumnsWidth() { |
|
|
|
|
|
|
|
visibilityTable.value = false |
|
|
|
|
|
|
|
await nextTick() |
|
|
|
|
|
|
|
visibilityTable.value = true |
|
|
|
|
|
|
|
const table = document.querySelector('.table') |
|
|
|
|
|
|
|
if (!table) return |
|
|
|
|
|
|
|
const tableWidth = table.clientWidth |
|
|
|
|
|
|
|
const columns = tableCol.value |
|
|
|
|
|
|
|
const totalWidth = columns.reduce((acc, cur) => acc + cur.width, 0) |
|
|
|
|
|
|
|
const scale = tableWidth / totalWidth |
|
|
|
|
|
|
|
for (const col of columns) { |
|
|
|
|
|
|
|
col.width = col.width * scale |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
onBeforeUnmount(() => { |
|
|
|
onBeforeUnmount(() => { |
|
|
|
removeListener(socketMsgListener) |
|
|
|
removeListener(socketMsgListener) |
|
|
|
}) |
|
|
|
}) |
|
|
@ -210,7 +168,7 @@ const socketMsgListener: SocketMsgListener = { |
|
|
|
detailsRef.value.updateData(dataArray) |
|
|
|
detailsRef.value.updateData(dataArray) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (type === 'upgrade-task' && data.id) { |
|
|
|
if (type === 'upgradeTask' && data.id) { |
|
|
|
tasksStatusMap.set(data.id, data) |
|
|
|
tasksStatusMap.set(data.id, data) |
|
|
|
updateTaskData() |
|
|
|
updateTaskData() |
|
|
|
} |
|
|
|
} |
|
|
@ -227,136 +185,61 @@ function updateTaskData() { |
|
|
|
data.successCount = taskData.successCount |
|
|
|
data.successCount = taskData.successCount |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
// let a = [ |
|
|
|
<style lang="scss"> |
|
|
|
// { |
|
|
|
.task-management-wrap { |
|
|
|
// type: 'upgrade', |
|
|
|
.el-table-v2__header, |
|
|
|
// stationId: 1, |
|
|
|
.el-table-v2__header-wrapper { |
|
|
|
// time: 1726129158000, |
|
|
|
height: 40px !important; |
|
|
|
// data: { |
|
|
|
} |
|
|
|
// id: 1, |
|
|
|
|
|
|
|
// taskId: 32, |
|
|
|
|
|
|
|
// deviceId: 1, |
|
|
|
|
|
|
|
// node: 0, |
|
|
|
|
|
|
|
// subNode: 10, |
|
|
|
|
|
|
|
// reason: null, |
|
|
|
|
|
|
|
// deviceSn: '4', |
|
|
|
|
|
|
|
// tenantId: 162, |
|
|
|
|
|
|
|
// createTime: 1725533993000, |
|
|
|
|
|
|
|
// updateTime: 1725533993000, |
|
|
|
|
|
|
|
// creator: '145', |
|
|
|
|
|
|
|
// updater: '145', |
|
|
|
|
|
|
|
// deleted: false, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// { |
|
|
|
|
|
|
|
// type: 'upgrade', |
|
|
|
|
|
|
|
// stationId: 1, |
|
|
|
|
|
|
|
// time: 1726129158000, |
|
|
|
|
|
|
|
// data: { |
|
|
|
|
|
|
|
// id: 1, |
|
|
|
|
|
|
|
// taskId: 32, |
|
|
|
|
|
|
|
// deviceId: 1, |
|
|
|
|
|
|
|
// node: 1, |
|
|
|
|
|
|
|
// subNode: 10, |
|
|
|
|
|
|
|
// reason: 'null', |
|
|
|
|
|
|
|
// deviceSn: '5', |
|
|
|
|
|
|
|
// tenantId: 162, |
|
|
|
|
|
|
|
// createTime: 1725533993000, |
|
|
|
|
|
|
|
// updateTime: 1725533993000, |
|
|
|
|
|
|
|
// creator: '145', |
|
|
|
|
|
|
|
// updater: '145', |
|
|
|
|
|
|
|
// deleted: false, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// { |
|
|
|
|
|
|
|
// type: 'upgrade', |
|
|
|
|
|
|
|
// stationId: 1, |
|
|
|
|
|
|
|
// time: 1726129158000, |
|
|
|
|
|
|
|
// data: { |
|
|
|
|
|
|
|
// id: 1, |
|
|
|
|
|
|
|
// taskId: 32, |
|
|
|
|
|
|
|
// deviceId: 1, |
|
|
|
|
|
|
|
// node: 2, |
|
|
|
|
|
|
|
// subNode: 10, |
|
|
|
|
|
|
|
// reason: 'null', |
|
|
|
|
|
|
|
// deviceSn: '6', |
|
|
|
|
|
|
|
// tenantId: 162, |
|
|
|
|
|
|
|
// createTime: 1725533993000, |
|
|
|
|
|
|
|
// updateTime: 1725533993000, |
|
|
|
|
|
|
|
// creator: '145', |
|
|
|
|
|
|
|
// updater: '145', |
|
|
|
|
|
|
|
// deleted: false, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// { |
|
|
|
|
|
|
|
// type: 'upgrade', |
|
|
|
|
|
|
|
// stationId: 1, |
|
|
|
|
|
|
|
// time: 1726129158000, |
|
|
|
|
|
|
|
// data: { |
|
|
|
|
|
|
|
// id: 1, |
|
|
|
|
|
|
|
// taskId: 1, |
|
|
|
|
|
|
|
// deviceId: 1, |
|
|
|
|
|
|
|
// node: 3, |
|
|
|
|
|
|
|
// subNode: 10, |
|
|
|
|
|
|
|
// reason: null, |
|
|
|
|
|
|
|
// deviceSn: '6', |
|
|
|
|
|
|
|
// tenantId: 162, |
|
|
|
|
|
|
|
// createTime: 1725533993000, |
|
|
|
|
|
|
|
// updateTime: 1725533993000, |
|
|
|
|
|
|
|
// creator: '145', |
|
|
|
|
|
|
|
// updater: '145', |
|
|
|
|
|
|
|
// deleted: false, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// { |
|
|
|
|
|
|
|
// type: 'upgrade', |
|
|
|
|
|
|
|
// stationId: 1, |
|
|
|
|
|
|
|
// time: 1726129158000, |
|
|
|
|
|
|
|
// data: { |
|
|
|
|
|
|
|
// id: 1, |
|
|
|
|
|
|
|
// taskId: 1, |
|
|
|
|
|
|
|
// deviceId: 1, |
|
|
|
|
|
|
|
// node: 1, |
|
|
|
|
|
|
|
// subNode: 10, |
|
|
|
|
|
|
|
// reason: null, |
|
|
|
|
|
|
|
// deviceSn: '6', |
|
|
|
|
|
|
|
// tenantId: 162, |
|
|
|
|
|
|
|
// createTime: 1725533993000, |
|
|
|
|
|
|
|
// updateTime: 1725533993000, |
|
|
|
|
|
|
|
// creator: '145', |
|
|
|
|
|
|
|
// updater: '145', |
|
|
|
|
|
|
|
// deleted: false, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// ] |
|
|
|
|
|
|
|
// function test(type: string, stationId: number, data?: any, time?: number) { |
|
|
|
|
|
|
|
// if (type === 'upgrade') { |
|
|
|
|
|
|
|
// const { deviceSn, taskId } = data |
|
|
|
|
|
|
|
// if (!taskId || !deviceSn) return |
|
|
|
|
|
|
|
// // 存储设备状态 |
|
|
|
|
|
|
|
// let deviceMap = taskMap.get(taskId) |
|
|
|
|
|
|
|
// if (!deviceMap) { |
|
|
|
|
|
|
|
// deviceMap = new Map<number, any>() |
|
|
|
|
|
|
|
// taskMap.set(taskId, deviceMap) |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// deviceMap.set(deviceSn, data) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if (detailsRef.value && rowData.value?.id) { |
|
|
|
.el-table-v2__header { |
|
|
|
// const taskId = rowData.value?.id |
|
|
|
.el-table-v2__header-row { |
|
|
|
// let taskData = taskMap.get(taskId) |
|
|
|
height: 40px !important; |
|
|
|
// const dataArray = taskData ? Array.from(taskData.values()) : [] |
|
|
|
background-color: var(--table-header-bg); |
|
|
|
// detailsRef.value.updateData(dataArray) |
|
|
|
} |
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// setInterval(() => { |
|
|
|
.el-table-v2__header-cell { |
|
|
|
// for (const item of a) { |
|
|
|
font-size: 14px; |
|
|
|
// test(item.type, item.stationId, item.data, item.time) |
|
|
|
color: var(--table-header-text-color); |
|
|
|
// } |
|
|
|
background-color: transparent; |
|
|
|
// }, 1000) |
|
|
|
} |
|
|
|
</script> |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-table-v2__body { |
|
|
|
|
|
|
|
.el-table-v2__row { |
|
|
|
|
|
|
|
min-height: 37px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.el-table-v2__row:hover { |
|
|
|
|
|
|
|
background-color: var(--el-fill-color-light); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-table-v2__row-cell { |
|
|
|
|
|
|
|
font-size: 14px; |
|
|
|
|
|
|
|
text-align: center; |
|
|
|
|
|
|
|
color: var(--text-color); |
|
|
|
|
|
|
|
background-color: transparent; |
|
|
|
|
|
|
|
padding: 0px 0px; |
|
|
|
|
|
|
|
padding-left: 14px; |
|
|
|
|
|
|
|
word-wrap: break-word; |
|
|
|
|
|
|
|
word-break: normal; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.right-table { |
|
|
|
|
|
|
|
.el-table-v2__header-row { |
|
|
|
|
|
|
|
> :not(:first-child) { |
|
|
|
|
|
|
|
visibility: hidden; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.el-table-v2__row { |
|
|
|
|
|
|
|
> :not(:first-child) { |
|
|
|
|
|
|
|
visibility: hidden; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</style> |
|
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss"> |
|
|
|
<style scoped lang="scss"> |
|
|
|
.task-management-wrap { |
|
|
|
.task-management-wrap { |
|
|
@ -365,8 +248,6 @@ function updateTaskData() { |
|
|
|
.task-table { |
|
|
|
.task-table { |
|
|
|
height: 100%; |
|
|
|
height: 100%; |
|
|
|
box-sizing: border-box; |
|
|
|
box-sizing: border-box; |
|
|
|
|
|
|
|
|
|
|
|
background: #fff; |
|
|
|
|
|
|
|
padding-bottom: 0; |
|
|
|
padding-bottom: 0; |
|
|
|
.table { |
|
|
|
.table { |
|
|
|
height: 100%; |
|
|
|
height: 100%; |
|
|
|