| | |
| | | <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="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 { 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'; |
| | | |
| | | 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' }, |
| | | 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, |
| | | }); |
| | |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * @description: 跳转产品工艺绑定页面 |
| | | * @param {*} record |
| | | * @return {*} |
| | | */ |
| | | function handleBinding(record: Recordable) { |
| | | function goRule(record: Recordable) { |
| | | const id = { |
| | | ID: record.ID, |
| | | Name: 'ProdRouteBinding', |
| | | CODE: record.ITEM_CODE, |
| | | Title: `产品[${record.ITEM_CODE}]工艺绑定`, |
| | | colSlots: [], |
| | | crudColSlots: [], |
| | | dense: true, |
| | | pageTitle: `产品工艺绑定`, |
| | | pageContent: `这里是管理产品的工艺绑定,一个产品可以绑定多个工艺路线`, |
| | | 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']} /* 增删改表单字段的插槽列表,一般用于弹出选择框按钮 */, |
| | | drawers: [ |
| | | { |
| | | name: 'BAS_ITEM_CUST', |
| | | dataType: 'BAS_ITEM_CUST', //如果这里给了值,则会替换name的实体名去查义数据库 |
| | | code: 'ITEM_CODE', |
| | | type: 'one', |
| | | keyName: 'BAS_ITEM_CUST', |
| | | order: '', |
| | | }, |
| | | ], //drawers是右边弹出增改侧框的名字列表 |
| | | }; |
| | | go(`/ProdRouteBinding/CP/${encodeURI(JSON.stringify(id))}`); |
| | | // let obj = JSON.stringify(id); |
| | | // push({ |
| | | // path: '/ProdRouteBinding', |
| | | // state: {obj}, //HTML5 History API 的传参,参数隐藏不在地址栏显示(history) |
| | | // }) |
| | | // 将对象转换为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 getRoleButtons(currentRoute.value.meta.menuCode as string); |
| | | }); |
| | | </script> |