| | |
| | | |
| | | import { Page, useVbenModal } from '@vben/common-ui'; |
| | | import { |
| | | MesProWorkOrderProductionStatusEnum, |
| | | MesProWorkOrderStatusEnum, |
| | | MesProWorkOrderTypeEnum, |
| | | } from '@vben/constants'; |
| | |
| | | router.push({ name: 'MesProTaskGanttEdit' }); |
| | | } |
| | | |
| | | /** 判断订单是否为“已完成类型”:订单状态=已完成 或 生产状态=生产完成 */ |
| | | function isCompletedWorkOrder(row: MesProWorkOrderApi.WorkOrder): boolean { |
| | | return ( |
| | | row.status === MesProWorkOrderStatusEnum.FINISHED || |
| | | row.productionStatus === MesProWorkOrderProductionStatusEnum.FINISHED |
| | | ); |
| | | } |
| | | |
| | | /** |
| | | * 已完成类型行的“完成态”兜底展示: |
| | | * 已生产数量按订单数量展示(若低于订单数量),使完成进度显示为 100%。 |
| | | * 仅作用于本页列表展示,不修改后端数据,不影响库存/报工/导出等真实口径。 |
| | | */ |
| | | function normalizeCompletionDisplay(row: MesProWorkOrderApi.WorkOrder): void { |
| | | if (!isCompletedWorkOrder(row)) { |
| | | return; |
| | | } |
| | | const quantity = row.quantity ?? 0; |
| | | const produced = row.quantityProduced ?? 0; |
| | | if (produced < quantity) { |
| | | row.quantityProduced = quantity; |
| | | } |
| | | } |
| | | |
| | | const [Grid, gridApi] = useVbenVxeGrid({ |
| | | formOptions: { |
| | | schema: useGridFormSchema(), |
| | |
| | | ajax: { |
| | | query: async ({ page }, formValues) => { |
| | | let scheduleStatus: number | undefined = undefined; |
| | | |
| | | |
| | | if (activeTab.value === 'PENDING') { |
| | | scheduleStatus = 0; // 待排产 |
| | | scheduleStatus = 0; // 未完成 |
| | | } else if (activeTab.value === 'FINISHED') { |
| | | scheduleStatus = 1; // 已完成 |
| | | } |
| | | // activeTab === 'ALL' 时不传 |
| | | |
| | | return await getWorkOrderSchedulePage({ |
| | | const res = await getWorkOrderSchedulePage({ |
| | | pageNo: page.currentPage, |
| | | pageSize: page.pageSize, |
| | | scheduleStatus, |
| | | type: MesProWorkOrderTypeEnum.SELF, |
| | | ...formValues, |
| | | }); |
| | | // 已完成类型行:已生产数量/完成进度做“完成态”兜底展示(仅本页展示,不改库) |
| | | if (res?.list) { |
| | | res.list.forEach(normalizeCompletionDisplay); |
| | | } |
| | | return res; |
| | | }, |
| | | }, |
| | | }, |
| | |
| | | label: '排产维护', |
| | | type: 'link', |
| | | auth: ['mes:pro-task:create'], |
| | | ifShow: row.status === MesProWorkOrderStatusEnum.CONFIRMED, |
| | | ifShow: |
| | | row.status === MesProWorkOrderStatusEnum.CONFIRMED && |
| | | !isCompletedWorkOrder(row), |
| | | onClick: handleSchedule.bind(null, row), |
| | | }, |
| | | { |