From b4496ad2462843c575a3902c94a87694426f29a3 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期四, 27 六月 2024 16:03:37 +0800 Subject: [PATCH] 产品工艺路线更新 --- src/views/tigerprojects/bas/MaterialInfo/index.vue | 111 +++++++++++++++++++++++++++---------------------------- 1 files changed, 55 insertions(+), 56 deletions(-) diff --git a/src/views/tigerprojects/bas/MaterialInfo/index.vue b/src/views/tigerprojects/bas/MaterialInfo/index.vue index 531396f..3cbc98d 100644 --- a/src/views/tigerprojects/bas/MaterialInfo/index.vue +++ b/src/views/tigerprojects/bas/MaterialInfo/index.vue @@ -3,32 +3,19 @@ <BasicTable @register="registerTable"> <template #toolbar> <!-- <a-button type="primary" @click="handleRenew"> 鎵归噺鏇存柊 </a-button> --> - <a-button type="primary" @click="handleCreate" v-if="HasRole"> 鏂板鐗╂枡 </a-button> + <a-button + type="primary" + @click="handleCreate(item['DO_METHOD'])" + :preIcon="item['ICON_URL']" + v-for="item in buttons.filter((m) => m['BUTTON_TYPE'] == 0)" + :key="item" + > + {{ item['FUNC_NAME'] }} + </a-button> </template> <template #action="{ record }"> <!-- b87079a98deb456a9cfa506bfd1a7bc6 --> - <TableAction - :actions="[ - { - icon: 'clarity:note-edit-line', - onClick: handleEdit.bind(null, record), - }, - { - icon: 'ant-design:delete-outlined', - color: 'error', - popConfirm: { - title: '鏄惁纭鍒犻櫎?', - placement: 'left', - confirm: handleDelete.bind(null, record), - }, - }, - // { - // icon: 'binding|svg', - // tooltip: '缁戝畾宸ヨ壓', - // onClick: handleBinding.bind(null, record), - // }, - ]" - /> + <TableAction :actions="GenerateActionButton(record)" /> </template> </BasicTable> <MaterialDrawer @register="registerDrawer" @success="handleSuccess" /> @@ -36,7 +23,7 @@ </div> </template> <script lang="ts" setup> - import { BasicTable, useTable, TableAction } from '/@/components/Table'; + import { BasicTable, useTable, TableAction, PopConfirm, ActionItem } from '/@/components/Table'; import { useDrawer } from '/@/components/Drawer'; import MaterialDrawer from './MaterialDrawer.vue'; import MaterialModal from './MaterialModal.vue'; @@ -47,15 +34,14 @@ import { useGo } from '/@/hooks/web/usePage'; import { useRouter } from 'vue-router'; import { onMounted, ref } from 'vue'; - import { getMenuButtons } from '/@/api/sys/menu'; -import { useUserStore } from '/@/store/modules/user'; + import { getRoleButtons } from '/@/api/sys/menu'; + import { isNullOrEmpty } from '/@/utils/is'; const go = useGo(); const { currentRoute } = useRouter(); const [registerDrawer, { openDrawer }] = useDrawer(); const [registerModal, { openModal: openMaterialModal }] = useModal(); const buttons = ref([]); - const HasRole = ref(false); const [registerTable, { reload }] = useTable({ title: '鐗╂枡鍒楄〃', api: getListByPage, @@ -76,7 +62,47 @@ slots: { customRender: 'action' }, }, }); - function handleCreate() { + + /** + * @description: 鑾峰彇鏉冮檺鎸夐挳鍒楄〃 + * @param {*} params + * @return {*} + */ + function GenerateActionButton(record: Recordable) { + let actionItem = [] as ActionItem[]; + buttons.value.map((x) => { + if (x['BUTTON_TYPE'] == 1) { + let url = ''; + let color = undefined as 'success' | 'error' | 'warning' | undefined; + let _click = null as any; + let _popConfirm = undefined as PopConfirm | undefined; + if (x['DO_METHOD'] == 'Edit') { + url = 'clarity:note-edit-line'; + _click = handleEdit.bind(null, record); + } else { + _click = x['ICON_URL']; + if (x['DO_METHOD'] == 'Delete') { + url = 'ant-design:delete-outlined'; + color = 'error'; + _popConfirm = { + title: '鏄惁纭鍒犻櫎?', + placement: 'left', + confirm: handleDelete.bind(null, record), + }; + } + } + actionItem.push({ + icon: isNullOrEmpty(x['ICON_URL']) ? url : x['ICON_URL'], + onClick: _click, + color: color, + popConfirm: _popConfirm, + }); + } + }); + return actionItem; + } + + function handleCreate(fnName: string) { openDrawer(true, { isUpdate: false, }); @@ -109,33 +135,6 @@ } onMounted(async () => { - buttons.value = (await getMenuButtons(currentRoute.value.meta.menuCode as string)).Data.Items; - const roles = useUserStore().getUserInfo.roles; - HasRole.value = roles.some((item) => item.MENU_CODE === buttons.value[0]['FUNC_CODE']); + buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string); }); - - /** - * @description: 璺宠浆浜у搧宸ヨ壓缁戝畾椤甸潰 - * @param {*} record - * @return {*} - */ - function handleBinding(record: Recordable) { - const id = { - ID: record.ID, - Name: 'ProdRouteBinding', - CODE: record.ITEM_CODE, - Title: `浜у搧[${record.ITEM_CODE}]宸ヨ壓缁戝畾`, - colSlots: [], - crudColSlots: [], - dense: true, - pageTitle: `浜у搧宸ヨ壓缁戝畾`, - pageContent: `杩欓噷鏄鐞嗕骇鍝佺殑宸ヨ壓缁戝畾锛屼竴涓骇鍝佸彲浠ョ粦瀹氬涓伐鑹鸿矾绾縛, - }; - go(`/ProdRouteBinding/CP/${encodeURI(JSON.stringify(id))}`); - // let obj = JSON.stringify(id); - // push({ - // path: '/ProdRouteBinding', - // state: {obj}, //HTML5 History API 鐨勪紶鍙傦紝鍙傛暟闅愯棌涓嶅湪鍦板潃鏍忔樉绀猴紙history锛� - // }) - } </script> -- Gitblit v1.9.3