From f8a7078cfaf8f4106f1081856260eae55a3a2579 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期二, 18 三月 2025 08:55:44 +0800
Subject: [PATCH] 完成点检模块

---
 eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue |  108 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 92 insertions(+), 16 deletions(-)

diff --git a/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue b/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue
index 203ec1a..0319a0b 100644
--- a/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue
+++ b/eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue
@@ -1,13 +1,16 @@
 <script setup lang="ts">
+import type { Recordable } from '@vben/types';
+
 import { onMounted, ref } from 'vue';
 
 import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui';
+import { $t } from '@vben/locales';
 import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils';
 
-import { Modal, Popconfirm, Space } from 'ant-design-vue';
+import { Button, Modal, Popconfirm, Space } from 'ant-design-vue';
 
 import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
-import { delMaintOrder, listMaintOrderGroupDetail } from '#/api/eims/maint-order';
+import { listInspStRecord } from '#/api/eims/insp-record';
 import { delInspectSt, listInspectSt } from '#/api/eims/insp-st';
 import { getDeptTree, userList } from '#/api/system/user';
 import BasisSubTable from '#/views/eims/components/basis-sub-table.vue';
@@ -15,13 +18,22 @@
 
 import { columns, querySchema } from './data';
 import inspStDrawer from './insp-st-drawer.vue';
-import type { Recordable } from '@vben/types';
-import { $t } from '@vben/locales';
 
 defineExpose({
   tableSelect
 });
 
+/**
+ * 瑙嗗浘妯″紡
+ * day-鏍规嵁鏃ユ眹鎬�
+ * month-鏍规嵁鏈堟眹鎬�
+ */
+enum ViewMode {
+  Day = 'Day',
+  Month = 'Month'
+}
+
+const curViewMode = ref<ViewMode>(ViewMode.Month);
 const formOptions: VbenFormProps = {
   commonConfig: {
     labelWidth: 80,
@@ -32,6 +44,14 @@
   collapsed: true,
   schema: querySchema(),
   wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',
+  handleReset: async () => {
+    // eslint-disable-next-line no-use-before-define
+    const { formApi, reload } = tableApi;
+    await formApi.resetForm();
+    const formValues = formApi.form.values;
+    formApi.setLatestSubmissionValues(formValues);
+    await reload(formValues);
+  },
   // 鏃ユ湡閫夋嫨鏍煎紡鍖�
   fieldMappingTime: [['planTime', ['params[beginPlanTime]', 'params[endPlanTime]'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59']]]
 };
@@ -52,6 +72,8 @@
   proxyConfig: {
     ajax: {
       query: async ({ page }, formValues = {}) => {
+        const params = { 'viewMode': curViewMode.value };
+        Object.assign(formValues, params);
         return await listInspectSt({
           pageNum: page.currentPage,
           pageSize: page.pageSize,
@@ -72,6 +94,46 @@
   },
   id: 'insp-st-index'
 };
+const fieldsToExclude = new Set(['action', 'inspTime', 'maintUserNames', 'specialNote', 'status']);
+const gridOptions2: VxeGridProps = {
+  checkboxConfig: {
+    // 楂樹寒
+    highlight: true,
+    // 缈婚〉鏃朵繚鐣欓�変腑鐘舵��
+    reserve: true
+    // 鐐瑰嚮琛岄�変腑
+    // trigger: 'row'
+  },
+  columns: columns?.filter((column: any) => !fieldsToExclude.has(column?.field)),
+  height: 'auto',
+  keepSource: true,
+  pagerConfig: {},
+  proxyConfig: {
+    ajax: {
+      query: async ({ page }, formValues = {}) => {
+        const params = { 'viewMode': curViewMode.value };
+        Object.assign(formValues, params);
+        return await listInspectSt({
+          pageNum: page.currentPage,
+          pageSize: page.pageSize,
+          ...formValues
+        });
+      }
+    }
+  },
+  rowConfig: {
+    isHover: true,
+    keyField: 'id'
+  },
+  sortConfig: {
+    // 杩滅▼鎺掑簭
+    remote: true,
+    // 鏀寔澶氬瓧娈垫帓搴� 榛樿鍏抽棴
+    multiple: true
+  },
+  id: 'insp-st-index'
+};
+
 const recordId = ref<string>();
 const [BasicTable, tableApi] = useVbenVxeGrid({
   formOptions,
@@ -80,7 +142,7 @@
     sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams),
     cellClick: (e: any) => {
       const { row } = e;
-      recordId.value = `${row.equId}_${row.planTime}`;
+      recordId.value = `${row.equId}_${row.planTime}_${curViewMode.value}`;
     }
   }
 });
@@ -151,15 +213,16 @@
     }
   ]);
 }
+
 const [InspStDrawer, inspStDrawerApi] = useVbenDrawer({
   connectedComponent: inspStDrawer
 });
-
 
 async function handleEdit(record: Recordable<any>) {
   inspStDrawerApi.setData({ id: record.id });
   inspStDrawerApi.open();
 }
+
 async function handleDelete(row: Recordable<any>) {
   await delInspectSt(row.id);
   await tableApi.query();
@@ -187,6 +250,24 @@
 function tableSelect() {
   return tableApi.grid.getCheckboxRecords();
 }
+
+const dayBtn = ref<any>('default');
+const monBtn = ref<any>('primary');
+
+function queryData(type: ViewMode) {
+  if (type === ViewMode.Day) {
+    dayBtn.value = 'primary';
+    monBtn.value = 'default';
+    curViewMode.value = ViewMode.Day;
+    tableApi.setGridOptions(gridOptions2);
+  } else if (type === ViewMode.Month) {
+    dayBtn.value = 'default';
+    monBtn.value = 'primary';
+    curViewMode.value = ViewMode.Month;
+    tableApi.setGridOptions(gridOptions);
+  }
+  tableApi.query();
+}
 </script>
 
 <template>
@@ -194,7 +275,9 @@
     <div class="flex h-full gap-[8px] flex-col">
       <BasicTable class="h-2/3" table-title="鐐规璁板綍鍒楄〃">
         <template #toolbar-tools>
-          <Space >
+          <Space>
+            <Button :type="dayBtn" @click.stop="queryData(ViewMode.Day)">鏃ヨ鍥�</Button>
+            <Button :type="monBtn" @click.stop="queryData(ViewMode.Month)">鏈堣鍥�</Button>
             <a-button
               :disabled="!vxeCheckboxChecked(tableApi)"
               danger
@@ -225,16 +308,9 @@
             </Popconfirm>
           </Space>
         </template>
-
       </BasicTable>
-      <BasisSubTable
-        :columns="recordCol"
-        :list-api="listMaintOrderGroupDetail"
-        :req-value="recordId"
-        class="h-1/3"
-        req-key="maintCode"
-        title="淇濆吇瀹炴柦椤圭洰"
-      />
+      <BasisSubTable :columns="recordCol" :list-api="listInspStRecord" :req-value="recordId" class="h-1/3"
+                     req-key="inspCode" title="鐐规璁板綍" />
     </div>
     <InspStDrawer @reload="tableApi.query()" />
   </Page>

--
Gitblit v1.9.3