| | |
| | | <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" /> |
| | |
| | | </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'; |
| | |
| | | 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'; |
| | | import { useUserStore } from '/@/store/modules/user'; |
| | | |
| | | 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, |
| | | searchInfo: { TABLE_NAME: 'BAS_ITEM' }, |
| | | searchInfo: { |
| | | TABLE_NAME: 'BAS_ITEM', |
| | | option: { |
| | | //根据据点查询,必需带这个参数 |
| | | UserId: useUserStore().getUserInfo.userId, |
| | | ByOrg: true, |
| | | CurOrg: useUserStore().getUserInfo.orgCode, |
| | | }, |
| | | }, |
| | | columns, |
| | | formConfig: { |
| | | labelWidth: 120, |
| | |
| | | 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), |
| | | }; |
| | | } |
| | | } |
| | | 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: '', |
| | | }); |
| | | } |
| | | }); |
| | | return actionItem; |
| | | } |
| | | |
| | | function handleCreate(fnName: string) { |
| | | openDrawer(true, { |
| | | isUpdate: false, |
| | | }); |
| | |
| | | }); |
| | | } |
| | | |
| | | 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字符串并保存到sessionStorage |
| | | 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 getMenuButtons(currentRoute.value.meta.menuCode as string)).Data.Items; |
| | | const roles = useUserStore().getUserInfo.roles; |
| | | const btnsByrole = buttons.value.filter((btn) => roles.some((item) => item.MENU_CODE === btn['FUNC_CODE'])); |
| | | buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string); |
| | | }); |
| | | </script> |