From f9a12ecb4ea4b7b103b50634335704140237fef7 Mon Sep 17 00:00:00 2001 From: 朱桂飞 <zhuguifei@zhuguifeideMacBook-Air.local> Date: 星期三, 19 二月 2025 15:11:28 +0800 Subject: [PATCH] 完成工具借用、归还相关 --- eims-ui/apps/web-antd/src/views/eims/fixture/index.vue | 84 +++++++++++++++++++++++++++++++++-------- 1 files changed, 67 insertions(+), 17 deletions(-) diff --git a/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue b/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue index 76e3dde..022cd7f 100644 --- a/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue +++ b/eims-ui/apps/web-antd/src/views/eims/fixture/index.vue @@ -1,11 +1,12 @@ <script setup lang="ts"> import type { Recordable } from '@vben/types'; -import { onMounted, ref } from 'vue'; -import { useRouter } from 'vue-router'; +import { computed, onMounted, ref } from 'vue'; +import { useAccess } from '@vben/access'; import { Page, useVbenDrawer, useVbenModal, type VbenFormProps } from '@vben/common-ui'; import { $t } from '@vben/locales'; +import { useUserStore } from '@vben/stores'; import { addFullName, getPopupContainer, getVxePopupContainer } from '@vben/utils'; import { Modal, Popconfirm, Space } from 'ant-design-vue'; @@ -14,14 +15,21 @@ import { delFixture, fixtureExport, listFixture } from '#/api/eims/fixture'; import { getDeptTree, userList } from '#/api/system/user'; import { commonDownloadExcel } from '#/utils/file/download'; +import fixtureBorrowDrawer from '#/views/eims/fixture-borrow/fixture-borrow-drawer.vue'; import { columns, querySchema } from './data'; import fixtureDrawer from './fixture-drawer.vue'; import fixtureImportModal from './fixture-import-modal.vue'; import FixtureTypeTree from './fixture-type-tree.vue'; +const userStore = useUserStore(); +const userId = userStore.userInfo?.userId; + // 宸﹁竟宸ュ叿绫诲瀷 const selectTypeId = ref<string[]>([]); +defineExpose({ + tableSelect +}); const formOptions: VbenFormProps = { commonConfig: { @@ -104,6 +112,10 @@ connectedComponent: fixtureDrawer }); +const [FixtureBorrowDrawer, fixtureBorrowDrawerApi] = useVbenDrawer({ + connectedComponent: fixtureBorrowDrawer +}); + /** * 瀵煎叆 */ @@ -143,17 +155,29 @@ } }); } - +function handleBorrow(row: Recordable<any>, status: string) { + if (userId === null || userId === undefined || userId === '') { + Modal.error({ + content: '鑾峰彇鐢ㄦ埛淇℃伅澶辫触锛岃閲嶆柊鐧诲綍鍚庨噸璇曪紒', + title: '鎻愮ず' + }); + return false; + } + // 宸ュ叿鍙拌处鍊熺敤鐘舵�乀ODO fixture_borrow_status 0-绌洪棽 1-鍊熷嚭 + if (status === '0') { + // 绌洪棽鏃跺�熷嚭锛屾柊澧炰竴鏉″�熷嚭鏁版嵁 + fixtureBorrowDrawerApi.setData({ status, borrowUser: userId, fixtureId: row.id, fixtureName: row.fixtureName, fixturePage: true }); + fixtureBorrowDrawerApi.open(); + } else if (status === '1') { + // 鍊熷嚭鏃跺綊杩橈紝鏇存柊鍊熷嚭鏁版嵁 + fixtureBorrowDrawerApi.setData({ id: row.curBorrowId }); + fixtureBorrowDrawerApi.open(); + } +} function handleDownloadExcel() { commonDownloadExcel(fixtureExport, '宸ュ叿鍙拌处', tableApi.formApi.form.values, { fieldMappingTime: formOptions.fieldMappingTime }); -} - -const router = useRouter(); - -function handleDetail(record: Recordable<any>) { - router.push(`/fixture/detail/${record.id}`); } /** @@ -226,6 +250,30 @@ onMounted(async () => { await setupDeptSelect(); }); + +const { hasAccessByRoles } = useAccess(); +const isSuperAdmin = computed(() => hasAccessByRoles(['superadmin'])); +/** + * 鍙湁鍊熺敤鐢ㄦ埛鍜岀鐞嗗憳鍙互鐐瑰嚮褰掕繕 + */ +function isBorrowUser(row: any) { + return isSuperAdmin.value || row?.borrowUser === userId; +} + +function isBorrow(row: any) { + // TODO 瀵瑰簲瀛楀吀鐘舵�乫ixture_borrow_status 0-绌洪棽 1-鍊熷嚭 + return row.borrowStatus === '0' || row.borrowStatus === null; +} + +function isReturn(row: any) { + // TODO 瀵瑰簲瀛楀吀鐘舵�乫ixture_borrow_status 0-绌洪棽 1-鍊熷嚭 + return row.borrowStatus === '1'; +} + +// 閫変腑鏁版嵁 +function tableSelect() { + return tableApi.grid.getCheckboxRecords(); +} </script> <template> @@ -256,19 +304,20 @@ </Space> </template> - <template #equName="{ row }"> - <Space> - <a-button type="link" @click="handleDetail(row)"> {{ row.equName }}</a-button> - </Space> - </template> - <template #action="{ row }"> <Space> <ghost-button v-access:code="['eims:fixture:edit']" @click.stop="handleEdit(row)"> {{ $t('pages.common.edit') }} </ghost-button> - <ghost-button v-if="row.menuType !== 'F'" class="btn-success" v-access:code="['eims:fixture:list']" @click="handleDetail(row)"> - {{ $t('pages.common.info') }} + <ghost-button v-if="isBorrow(row)" class="btn-success" v-access:code="['eims:fixture:borrow']" @click="handleBorrow(row, '0')"> + 鍊熺敤 + </ghost-button> + <ghost-button + v-else-if="isReturn(row) && isBorrowUser(row)" + v-access:code="['eims:fixture:borrow']" + @click="handleBorrow(row, '1')" + > + 褰掕繕 </ghost-button> <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)"> <ghost-button danger v-access:code="['eims:fixture:remove']" @click.stop=""> @@ -280,6 +329,7 @@ </BasicTable> </div> <FixtureDrawer @reload="tableApi.query()" /> + <FixtureBorrowDrawer @reload="tableApi.query()" /> <FixtureImportModal @reload="tableApi.query()" /> </Page> </template> -- Gitblit v1.9.3