| | |
| | | <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'; |
| | | |
| | | 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, |
| | |
| | | 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, |
| | | }); |
| | |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * @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) |
| | | // }) |
| | | } |
| | | onMounted(async () => { |
| | | buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string); |
| | | }); |
| | | </script> |