From 6648e74a007254e167c5508de5d25402cd4bb63b Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期一, 10 三月 2025 16:39:50 +0800 Subject: [PATCH] 完成保养工单明细 --- eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue | 85 +++++++++++++++++++++++++++++++++++++++--- 1 files changed, 79 insertions(+), 6 deletions(-) diff --git a/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue b/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue index 3b24afa..226fdcf 100644 --- a/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue +++ b/eims-ui/apps/web-antd/src/views/eims/repair-res/index.vue @@ -1,8 +1,9 @@ <script setup lang="ts"> import type { Recordable } from '@vben/types'; -import { onMounted, ref } from 'vue'; +import { computed, onMounted, ref } from 'vue'; +import { useAccess } from '@vben/access'; import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; import { $t } from '@vben/locales'; import { useUserStore } from '@vben/stores'; @@ -11,11 +12,16 @@ import { Modal, Popconfirm, Space } from 'ant-design-vue'; import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table'; +import { listRepairRecord } from '#/api/eims/repair-record'; import { delRepairRes, listRepairRes, repairResExport } from '#/api/eims/repair-res'; import { getDeptTree, userList } from '#/api/system/user'; +import { REPAIR_RES_STATUS } from '#/constants/dict'; import { commonDownloadExcel } from '#/utils/file/download'; +import BasisSubTable from '#/views/eims/components/basis-sub-table.vue'; -import RepairRecord from '../repair-record/index.vue'; +import fbPreviewDrawer from '../repair-fb/fb-preview-drawer.vue'; +import repairFbDrawer from '../repair-fb/repair-fb-drawer.vue'; +import { columns as repairRecordCol } from '../repair-record/data'; import { columns, querySchema } from './data'; import repairResDrawer from './repair-res-drawer.vue'; @@ -92,6 +98,24 @@ connectedComponent: repairResDrawer }); +const [RepairFbDrawer, repairFbDrawerApi] = useVbenDrawer({ + connectedComponent: repairFbDrawer +}); + +const [FbPreviewDrawer, fbPreviewDrawerApi] = useVbenDrawer({ + connectedComponent: fbPreviewDrawer +}); + +function handleAddFb(record: Recordable<any>) { + repairFbDrawerApi.setData({ resId: record.id, resCode: record.resCode, fbUser: userId, fbDept: deptId }); + repairFbDrawerApi.open(); +} + +function handleDetailFb(record: Recordable<any>) { + fbPreviewDrawerApi.setData({ id: record.fbId }); + fbPreviewDrawerApi.open(); +} + function handleAdd() { repairResDrawerApi.setData({ resUser: userId, resDept: deptId }); repairResDrawerApi.open(); @@ -100,6 +124,31 @@ async function handleEdit(record: Recordable<any>) { repairResDrawerApi.setData({ id: record.id }); repairResDrawerApi.open(); +} + +async function handleEditStatus(record: Recordable<any>, status: string) { + repairResDrawerApi.setData({ id: record.id, action: status, status }); + repairResDrawerApi.open(); +} + +const { hasAccessByRoles } = useAccess(); +const isSuperAdmin = computed(() => hasAccessByRoles(['superadmin'])); +const isLeader = computed(() => hasAccessByRoles(['leader'])); + +function pingjiaAdd(row: any) { + return (isSuperAdmin.value || isLeader.value || row.reqUser === userId) && row.status === REPAIR_RES_STATUS.WANCHENG && !row.fbId; +} + +function pingjiaDetail(row: any) { + return (isSuperAdmin.value || isLeader.value || row.reqUser === userId) && row.status === REPAIR_RES_STATUS.WANCHENG && row.fbId; +} + +function weixiu(row: any) { + return (isSuperAdmin.value || isLeader.value || row.resUser === userId) && row.status === REPAIR_RES_STATUS.YIJIEDAN; +} + +function wancheng(row: any) { + return (isSuperAdmin.value || isLeader.value || row.resUser === userId) && row.status === REPAIR_RES_STATUS.WEIXIU; } async function handleDelete(row: Recordable<any>) { @@ -217,14 +266,36 @@ > {{ $t('pages.common.delete') }} </a-button> - <a-button type="primary" v-access:code="['eims:repairRes:add']" @click="handleAdd"> - {{ $t('pages.common.add') }} - </a-button> + <a-button type="primary" v-access:code="['eims:repairRes:add']" @click="handleAdd"> 鎺ュ崟</a-button> </Space> </template> <template #action="{ row }"> <Space> + <ghost-button v-if="pingjiaAdd(row)" class="btn-success" v-access:code="['eims:repairRes:edit']" @click.stop="handleAddFb(row)"> + 璇勪环 + </ghost-button> + <ghost-button v-if="pingjiaDetail(row)" class="btn-success" v-access:code="['eims:repairRes:edit']" @click.stop="handleDetailFb(row)"> + 闃呰瘎 + </ghost-button> + <ghost-button + v-if="weixiu(row)" + class="btn-success" + v-access:code="['eims:repairRes:edit']" + @click.stop="handleEditStatus(row, REPAIR_RES_STATUS.WEIXIU)" + > + 缁翠慨 + </ghost-button> + + <ghost-button + v-if="wancheng(row)" + class="btn-success" + v-access:code="['eims:repairRes:edit']" + @click.stop="handleEditStatus(row, REPAIR_RES_STATUS.WANCHENG)" + > + 瀹屾垚 + </ghost-button> + <ghost-button v-access:code="['eims:repairRes:edit']" @click.stop="handleEdit(row)"> {{ $t('pages.common.edit') }} </ghost-button> @@ -236,8 +307,10 @@ </Space> </template> </BasicTable> - <RepairRecord :res-id="resId" class="h-1/3" table-title="缁翠慨璁板綍" /> + <BasisSubTable :columns="repairRecordCol" :list-api="listRepairRecord" :req-value="resId" class="h-1/3" req-key="resId" title="鎿嶄綔璁板綍" /> </div> <RepairResDrawer @reload="tableApi.query()" /> + <RepairFbDrawer @reload="tableApi.query()" /> + <FbPreviewDrawer /> </Page> </template> -- Gitblit v1.9.3