From 6c16a58b5b7f38ce9e370eab160b516c058da6e2 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期五, 20 六月 2025 14:19:49 +0800 Subject: [PATCH] feat(eims): 优化点检记录和点检汇总查询 --- eims-ui/apps/web-antd/src/views/eims/insp-st/index.vue | 113 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 94 insertions(+), 19 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..326139f 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.Day); 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,14 +250,35 @@ function tableSelect() { return tableApi.grid.getCheckboxRecords(); } + +const dayBtn = ref<any>('primary'); +const monBtn = ref<any>('default'); + +function queryData(type: ViewMode) { + // TODO 鏃ヨ鍥惧拰鏈堣鍥惧悗绔凡缁熶竴鏂规硶 鍓嶇鍙垹闄ゆ棩瑙嗗浘澶氫綑閰嶇疆 + 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> <Page :auto-content-height="true"> <div class="flex h-full gap-[8px] flex-col"> - <BasicTable class="h-2/3" table-title="鐐规璁板綍鍒楄〃"> + <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 @@ -217,24 +301,15 @@ <ghost-button v-access:code="['eims:inspectSt:edit']" @click.stop="handleEdit(row)"> {{ $t('pages.common.edit') }} </ghost-button> - <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" - @confirm="handleDelete(row)"> + <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)"> <ghost-button danger v-access:code="['eims:inspectSt:remove']" @click.stop=""> {{ $t('pages.common.delete') }} </ghost-button> </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