| | |
| | | import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; |
| | | |
| | | import { message, Tag, Tooltip } from 'ant-design-vue'; |
| | | import dayjs from 'dayjs'; |
| | | |
| | | import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; |
| | | import { |
| | |
| | | } from '#/api/erp/sale/order'; |
| | | import { generateFromSaleOrder } from '#/api/mes/wm/salesnotice'; |
| | | import { $t } from '#/locales'; |
| | | import { automaticApproval } from '#/store/audit-policy'; |
| | | |
| | | import { useGridColumns, useGridFormSchema } from './data'; |
| | | import Form from './modules/form.vue'; |
| | |
| | | |
| | | /** 导出表格 */ |
| | | async function handleExport() { |
| | | const data = await exportSaleOrder(await gridApi.formApi.getValues()); |
| | | const data = await exportSaleOrder( |
| | | normalizeDateRange(await gridApi.formApi.getValues()), |
| | | ); |
| | | downloadFileFromBlobPart({ fileName: '销售订单.xls', source: data }); |
| | | } |
| | | |
| | | /** 日期筛选覆盖所选起止日期的全天,兼容后端时间类型。 */ |
| | | function normalizeDateRange(values: Record<string, any>) { |
| | | const range = values.orderTime; |
| | | if (!Array.isArray(range) || range.length !== 2 || !range.every(Boolean)) { |
| | | return values; |
| | | } |
| | | return { |
| | | ...values, |
| | | orderTime: [ |
| | | dayjs(range[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss'), |
| | | dayjs(range[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss'), |
| | | ], |
| | | }; |
| | | } |
| | | |
| | | /** 导入销售订单 */ |
| | |
| | | /** 提交销售订单审批(协同办公) */ |
| | | async function handleSubmit(row: ErpSaleOrderApi.SaleOrder) { |
| | | // 获取可用的审批流程定义 |
| | | const processList = await getSaleOrderApproveProcessList(); |
| | | if (isEmpty(processList)) { |
| | | const processList = automaticApproval.value ? [] : await getSaleOrderApproveProcessList(); |
| | | if (!automaticApproval.value && isEmpty(processList)) { |
| | | message.error('销售订单审批流程未配置,请先在「协同办公→流程管理」中创建并发布销售订单审批流程'); |
| | | return; |
| | | } |
| | | const hideLoading = message.loading({ |
| | | content: '正在提交审批...', |
| | | content: automaticApproval.value ? '正在提交生效...' : '正在提交审批...', |
| | | duration: 0, |
| | | }); |
| | | try { |
| | | await submitSaleOrder(row.id!, processList[0].key); |
| | | message.success('提交审批成功,请到协同办公中处理'); |
| | | await submitSaleOrder(row.id!, automaticApproval.value ? 'sale_order_approve' : processList[0]!.key); |
| | | message.success(automaticApproval.value ? '已提交生效' : '提交审批成功,请到协同办公中处理'); |
| | | handleRefresh(); |
| | | } finally { |
| | | hideLoading(); |
| | |
| | | ajax: { |
| | | query: async ({ page }, formValues) => { |
| | | // 生产状态搜索参数转换:-1(无需生产) → needProduction=0 |
| | | const { productionStatus, ...rest } = formValues; |
| | | const { productionStatus, ...rest } = normalizeDateRange(formValues); |
| | | const params: Record<string, any> = { ...rest }; |
| | | if (productionStatus === -1) { |
| | | params.needProduction = 0; |