From 969725647117eb7ca148b2e8cfa9ec8b5eb432fa Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 22 十月 2024 11:04:10 +0800 Subject: [PATCH] 工艺缓存优化 --- src/views/tigerprojects/bas/MaterialInfo/index.vue | 242 +++++++++++++++++++++++++++++++---------------- 1 files changed, 158 insertions(+), 84 deletions(-) diff --git a/src/views/tigerprojects/bas/MaterialInfo/index.vue b/src/views/tigerprojects/bas/MaterialInfo/index.vue index 18ce463..aa7b5a0 100644 --- a/src/views/tigerprojects/bas/MaterialInfo/index.vue +++ b/src/views/tigerprojects/bas/MaterialInfo/index.vue @@ -2,110 +2,184 @@ <div> <BasicTable @register="registerTable"> <template #toolbar> - <a-button type="primary" @click="handleRenew"> 鎵归噺鏇存柊 </a-button> - <a-button type="primary" @click="handleCreate"> 鏂板鐗╂枡 </a-button> + <!-- <a-button type="primary" @click="handleRenew"> 鎵归噺鏇存柊 </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), - }, - }, - ]" - /> + <TableAction :actions="GenerateActionButton(record)" /> </template> </BasicTable> <MaterialDrawer @register="registerDrawer" @success="handleSuccess" /> <MaterialModal @register="registerModal" /> </div> </template> -<script lang="ts"> - import { defineComponent } from 'vue'; - import { BasicTable, useTable, TableAction } from '/@/components/Table'; +<script lang="ts" setup> + import { BasicTable, useTable, TableAction, PopConfirm, ActionItem } from '/@/components/Table'; import { useDrawer } from '/@/components/Drawer'; import MaterialDrawer from './MaterialDrawer.vue'; import MaterialModal from './MaterialModal.vue'; import { columns, searchFormSchema } from './Material.data'; import { DeleteMaterial, getMaterialListByPage } from '../../../../api/tigerapi/bas/MaterialInfo'; import { useModal } from '/@/components/Modal'; + import { getListByPage } from '/@/api/tigerapi/system'; + import { useGo } from '/@/hooks/web/usePage'; + import { useRouter } from 'vue-router'; + import { onMounted, ref } from 'vue'; + import { getRoleButtons } from '/@/api/sys/menu'; + import { isNullOrEmpty } from '/@/utils/is'; + import { useUserStore } from '/@/store/modules/user'; - export default defineComponent({ - name: 'MaterialManagement', - components: { BasicTable, MaterialDrawer, TableAction, MaterialModal }, - setup() { - const [registerDrawer, { openDrawer }] = useDrawer(); - const [registerModal, { openModal: openMaterialModal }] = useModal(); - const [registerTable, { reload }] = useTable({ - title: '鐗╂枡鍒楄〃', - api: getMaterialListByPage, - columns, - formConfig: { - labelWidth: 120, - schemas: searchFormSchema, - }, - useSearchForm: true, - showTableSetting: true, - bordered: true, - showIndexColumn: false, - actionColumn: { - width: 100, - title: '鎿嶄綔', - dataIndex: 'action', - slots: { customRender: 'action' }, - }, - }); - function handleCreate() { - openDrawer(true, { - isUpdate: false, + const go = useGo(); + const { currentRoute } = useRouter(); + const [registerDrawer, { openDrawer }] = useDrawer(); + const [registerModal, { openModal: openMaterialModal }] = useModal(); + const buttons = ref([]); + const [registerTable, { reload }] = useTable({ + title: '鐗╂枡鍒楄〃', + api: getListByPage, + searchInfo: { + TABLE_NAME: 'BAS_ITEM', + option: { + //鏍规嵁鎹偣鏌ヨ锛屽繀闇�甯﹁繖涓弬鏁� + UserId: useUserStore().getUserInfo.userId, + ByOrg: true, + CurOrg: useUserStore().getUserInfo.orgCode, + }, + }, + columns, + formConfig: { + labelWidth: 120, + schemas: searchFormSchema, + }, + useSearchForm: true, + showTableSetting: true, + bordered: true, + showIndexColumn: false, + actionColumn: { + width: 100, + title: '鎿嶄綔', + dataIndex: 'action', + slots: { customRender: 'action' }, + }, + }); + + /** + * @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), + }; + } + } + if (x['DO_METHOD'] == 'goRule') { + _click = goRule.bind(null, record); + } + actionItem.push({ + icon: isNullOrEmpty(x['ICON_URL']) ? url : x['ICON_URL'], + onClick: _click, + color: color, + popConfirm: _popConfirm, + name: '', }); } - function handleRenew() { - openMaterialModal(true, { - data: 'content', - info: 'Info', - }); - } - function handleSuccess() { + }); + return actionItem; + } + + function handleCreate(fnName: string) { + openDrawer(true, { + isUpdate: false, + }); + } + function handleRenew() { + openMaterialModal(true, { + data: 'content', + info: 'Info', + }); + } + function handleSuccess() { + reload(); + } + + function handleEdit(record: Recordable) { + openDrawer(true, { + record, + isUpdate: true, + }); + } + function handleDelete(record: Recordable) { + console.log(record); + //鍒犻櫎鐗╂枡 + const apiAction = DeleteMaterial(record); + apiAction.then((action) => { + if (action.IsSuccessed) { reload(); } + }); + } - function handleEdit(record: Recordable) { - openDrawer(true, { - record, - isUpdate: true, - }); - } - function handleDelete(record: Recordable) { - console.log(record); - //鍒犻櫎鐗╂枡 - const apiAction = DeleteMaterial(record); - apiAction.then((action) => { - if (action.IsSuccessed) { - reload(); - } - }); - } - return { - registerTable, - registerDrawer, - registerModal, - handleCreate, - handleEdit, - handleDelete, - handleRenew, - handleSuccess, - }; - }, + function goRule(record: Recordable) { + const id = { + CODE: record['ITEM_CODE'], + ID: record['ID'], + Name: 'BAS_ITEM_CUST', + SessionName: 'BAS_ITEM_CUST_update', + Title: `缂栬緫鐗╂枡鏉$爜瑙勫垯锛�${record['ITEM_CODE']}`, + IsExist: 'RULE_CODE', + IsID: false, + crudColSlots: { + BAS_ITEM_CUST: ['BAS_CUSTOMER1add', 'BAS_CODE_RULE1add'], + } /* 澧炲垹鏀硅〃鍗曞瓧娈电殑鎻掓Ы鍒楄〃锛屼竴鑸敤浜庡脊鍑洪�夋嫨妗嗘寜閽� */, + colSlotsInHigh: ['BAS_CODE_RULE1add'], + drawers: [ + { + name: 'BAS_ITEM_CUST', + dataType: 'BAS_ITEM_CUST', //濡傛灉杩欓噷缁欎簡鍊硷紝鍒欎細鏇挎崲name鐨勫疄浣撳悕鍘绘煡涔夋暟鎹簱 + code: 'ITEM_CODE', + type: 'one', + keyName: 'BAS_ITEM_CUST', + order: '', + }, + ], //drawers鏄彸杈瑰脊鍑哄鏀逛晶妗嗙殑鍚嶅瓧鍒楄〃 + }; + // 灏嗗璞¤浆鎹负JSON瀛楃涓插苟淇濆瓨鍒皊essionStorage + sessionStorage.removeItem(`${id.SessionName}_params`); + sessionStorage.setItem(`${id.SessionName}_params`, encodeURI(JSON.stringify(id))); + go( + `/BAS_ITEM_CUST/High/${encodeURI(JSON.stringify({ sName: id.SessionName, Name: id.Name }))}`, + ); + } + + onMounted(async () => { + buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string); }); </script> -- Gitblit v1.9.3