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