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