| | |
| | | getApproveProcessList, |
| | | getPurchaseRequestPage, |
| | | submitPurchaseRequest, |
| | | syncPurchaseRequestStatus, |
| | | } from '#/api/erp/purchase/request'; |
| | | import { $t } from '#/locales'; |
| | | |
| | | import { useGridColumns, useGridFormSchema } from './data'; |
| | | import Form from './modules/form.vue'; |
| | | import ImportForm from './modules/import-form.vue'; |
| | | import OrderForm from './modules/order-form.vue'; |
| | | import ProcessSelectModal from './modules/process-select-modal.vue'; |
| | | |
| | |
| | | |
| | | const [FormModal, formModalApi] = useVbenModal({ |
| | | connectedComponent: Form, |
| | | destroyOnClose: true, |
| | | }); |
| | | |
| | | const [ImportModal, importModalApi] = useVbenModal({ |
| | | connectedComponent: ImportForm, |
| | | destroyOnClose: true, |
| | | }); |
| | | |
| | |
| | | async function handleExport() { |
| | | const data = await exportPurchaseRequest(await gridApi.formApi.getValues()); |
| | | downloadFileFromBlobPart({ fileName: '采购申请.xls', source: data }); |
| | | } |
| | | |
| | | /** 导入采购申请 */ |
| | | function handleImport() { |
| | | importModalApi.open(); |
| | | } |
| | | |
| | | /** 新增采购申请 */ |
| | |
| | | proxyConfig: { |
| | | ajax: { |
| | | query: async ({ page }, formValues) => { |
| | | return await getPurchaseRequestPage({ |
| | | const result = await getPurchaseRequestPage({ |
| | | pageNo: page.currentPage, |
| | | pageSize: page.pageSize, |
| | | ...formValues, |
| | | }); |
| | | const processingItems = (result.list || []).filter( |
| | | (item) => item.status === 10 && item.processInstanceId, |
| | | ); |
| | | if (processingItems.length > 0) { |
| | | await syncPurchaseRequestStatus(processingItems); |
| | | } |
| | | return result; |
| | | }, |
| | | }, |
| | | }, |
| | |
| | | <template> |
| | | <Page auto-content-height> |
| | | <FormModal @success="handleRefresh" /> |
| | | <ImportModal @success="handleRefresh" /> |
| | | <OrderFormModal @success="handleRefresh" /> |
| | | <ProcessModal @success="handleRefresh" /> |
| | | <Grid table-title="采购申请列表"> |
| | |
| | | onClick: handleExport, |
| | | }, |
| | | { |
| | | label: '导入', |
| | | type: 'primary', |
| | | icon: ACTION_ICON.UPLOAD, |
| | | auth: ['erp:purchase-request:import'], |
| | | onClick: handleImport, |
| | | }, |
| | | { |
| | | label: '批量删除', |
| | | type: 'primary', |
| | | danger: true, |
| | |
| | | <template #status="{ row }"> |
| | | <Tag v-if="row.status === 0" color="default">未提交</Tag> |
| | | <Tag v-else-if="row.status === 10" color="processing">审批中</Tag> |
| | | <Tag v-else-if="row.status === 20" color="success">审核通过</Tag> |
| | | <Tag v-else-if="row.status === 30" color="error">审核不通过</Tag> |
| | | <Tag v-else-if="row.status === 20" color="success">审批通过</Tag> |
| | | <Tag v-else-if="row.status === 30" color="error">审批不通过</Tag> |
| | | <Tag v-else-if="row.status === 40" color="warning">已取消</Tag> |
| | | </template> |
| | | <template #inStatus="{ row }"> |
| | |
| | | type: 'link', |
| | | icon: ACTION_ICON.EDIT, |
| | | auth: ['erp:purchase-request:update'], |
| | | ifShow: () => row.status === 0, |
| | | ifShow: () => row.status === 0 || Number(row.status) === 30, |
| | | onClick: handleEdit.bind(null, row), |
| | | }, |
| | | { |