| | |
| | | <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'; |
| | | |
| | | 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' }, |
| | | 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), |
| | | }; |
| | | } |
| | | } |
| | | actionItem.push({ |
| | | icon: isNullOrEmpty(x['ICON_URL']) ? url : x['ICON_URL'], |
| | | onClick: _click, |
| | | color: color, |
| | | popConfirm: _popConfirm, |
| | | }); |
| | | } |
| | | 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, |
| | | }; |
| | | }, |
| | | onMounted(async () => { |
| | | buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string); |
| | | }); |
| | | </script> |