From f0bb114ba37709cbe1aa55047fbf0c57cc07ab9d Mon Sep 17 00:00:00 2001 From: 朱桂飞 <zhuguifei@zhuguifeideMacBook-Air.local> Date: 星期四, 20 二月 2025 15:54:42 +0800 Subject: [PATCH] 开发工具借用会还功能,以及借用记录功能 --- eims-ui/apps/web-antd/src/views/eims/fixture/dashboard/index.vue | 98 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 94 insertions(+), 4 deletions(-) diff --git a/eims-ui/apps/web-antd/src/views/eims/fixture/dashboard/index.vue b/eims-ui/apps/web-antd/src/views/eims/fixture/dashboard/index.vue index d114a9a..bebc6e9 100644 --- a/eims-ui/apps/web-antd/src/views/eims/fixture/dashboard/index.vue +++ b/eims-ui/apps/web-antd/src/views/eims/fixture/dashboard/index.vue @@ -1,14 +1,104 @@ <script setup lang="ts"> -import { AnalysisOverview, Page, WorkbenchTrends } from '@vben/common-ui'; +import { onMounted, ref } from 'vue'; -import { overviewItems, trendItems } from './data'; +import { AnalysisOverview, type AnalysisOverviewItem, Page, type WorkbenchTrendItem, WorkbenchTrends } from '@vben/common-ui'; +import { DictEnum } from '@vben/constants'; + +import { listFixture } from '#/api/eims/fixture'; +import { operLogList } from '#/api/monitor/operlog'; +import { dictDataInfo } from '#/api/system/dict/dict-data'; +import { SYS_OPER_TYPE } from '#/constants/dict'; + +const fixtureList = ref<AnalysisOverviewItem[]>([ + { + icon: 'svg:card', + title: '宸ュ叿鎬绘暟', + totalTitle: '宸ュ叿鎬绘暟', + totalValue: 0, + value: 0 + }, + { + icon: 'svg:cake', + title: '鍙敤宸ュ叿鏁�', + totalTitle: '鍙敤宸ュ叿鏁�', + totalValue: 0, + value: 0 + }, + { + icon: 'svg:download', + title: '鍊熷嚭鎬绘暟', + totalTitle: '鍊熷嚭鎬绘暟', + totalValue: 0, + value: 0 + }, + { + icon: 'svg:bell', + title: '鏈�杩戞洿鏂�', + totalTitle: '鏈�杩戞洿鏂�', + totalValue: 0, + value: 0 + } +]); +const logList = ref<WorkbenchTrendItem[]>([]); + +async function initFixtrueList() { + const data = await listFixture({ + pageNum: 1, + pageSize: 100_000 + }); + if (!data) { + console.error('Failed to fetch data.'); + return; + } + + const rows = data.rows; + const now = Date.now(); // 鑾峰彇褰撳墠鏃堕棿鐨勬椂闂存埑 + const sevenDaysAgo = now - 7 * 24 * 60 * 60 * 1000; // 璁$畻7澶╁墠鐨勬椂闂存埑 + + const kongxian = rows.filter((item) => item.borrowStatus === '0' || item.borrowStatus === null); + const jiechu = rows.filter((item) => item.borrowStatus === '1'); + const zuijin = rows.filter((item) => new Date(item.createTime).getTime() >= sevenDaysAgo); + + fixtureList.value[0]!.value = fixtureList.value[0]!.totalValue = data.total || 0; + fixtureList.value[1]!.value = fixtureList.value[1]!.totalValue = kongxian.length; + fixtureList.value[2]!.value = fixtureList.value[2]!.totalValue = jiechu.length; + fixtureList.value[3]!.value = fixtureList.value[3]!.totalValue = zuijin.length; +} + +async function initLogList() { + const params = { title: '鍊熺敤璁板綍', orderByColumn: 'operTime', isAsc: 'desc' }; + const res = await operLogList({ + pageNum: 1, + pageSize: 20, + ...params + }); + let list = res?.rows; + list = list.filter((i) => i.businessType.toString() === SYS_OPER_TYPE.ADD || i.businessType.toString() === SYS_OPER_TYPE.EDIT); + list = list.filter((i) => i.jsonResult !== null && JSON.parse(i.jsonResult).code === 200); + + const recordStatusList = await dictDataInfo(DictEnum.FIXTURE_BORROW_RECORD_STATUS); + list.forEach((row) => { + const operParam = JSON.parse(row.operParam); + const label = recordStatusList.find((item) => item.dictValue === operParam.status)?.dictLabel; + logList.value.push({ + avatar: 'svg:avatar-1', + content: `${row?.deptName} ${row?.operName} <a>${label}</a> ${operParam?.fixtureName} `, + date: row.operTime, + title: row.title + }); + }); +} +onMounted(() => { + initFixtrueList(); + initLogList(); +}); </script> <template> <Page :auto-content-height="true"> <div class="h-full"> - <AnalysisOverview :items="overviewItems" /> - <WorkbenchTrends :items="trendItems" class="mt-5" title="鏈�鏂板姩鎬�" /> + <AnalysisOverview :items="fixtureList" /> + <WorkbenchTrends :items="logList" class="mt-5" title="鏈�鏂板姩鎬�" /> <div class="h-5"></div> </div> </Page> -- Gitblit v1.9.3