feat(wls): 限制产品入库选择未开工的生产订单
- 改造 `ProWorkOrderSelect` 和 `ProWorkOrderSelectDialog` 组件,增加 `checkMethod` 属性并透传至 VxeTable 底层,提供对单/多选的禁用控制能力。
- 在产品入库单 (productreceipt/data.ts) 的生产订单选择中增加拦截规则,校验 `productionStatus !== 0`。将“待生产”状态的订单选择框置灰禁用,防止未开始生产即入库的错误操作。
| | |
| | | <script lang="ts" setup> |
| | | <script lang="ts" setup> |
| | | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| | | import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder'; |
| | | |
| | |
| | | defineProps<{ |
| | | status?: number; |
| | | type?: number; |
| | | checkMethod?: (row: MesProWorkOrderApi.WorkOrder) => boolean; |
| | | }>(), |
| | | { |
| | | status: undefined, |
| | | type: undefined, |
| | | checkMethod: undefined, |
| | | }, |
| | | ); |
| | | const emit = defineEmits<{ |
| | |
| | | highlight: true, |
| | | range: true, |
| | | reserve: true, |
| | | checkMethod: props.checkMethod ? ({ row }) => props.checkMethod!(row) : undefined, |
| | | }, |
| | | radioConfig: { |
| | | highlight: true, |
| | | trigger: 'row', |
| | | checkMethod: props.checkMethod ? ({ row }) => props.checkMethod!(row) : undefined, |
| | | }, |
| | | proxyConfig: { |
| | | ajax: { |
| | |
| | | <script lang="ts" setup> |
| | | <script lang="ts" setup> |
| | | import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder'; |
| | | |
| | | import { computed, ref, useAttrs, watch } from 'vue'; |
| | |
| | | placeholder?: string; |
| | | status?: number; |
| | | type?: number; |
| | | checkMethod?: (row: MesProWorkOrderApi.WorkOrder) => boolean; |
| | | }>(), |
| | | { |
| | | allowClear: true, |
| | |
| | | placeholder: '请选择订单', |
| | | status: undefined, |
| | | type: undefined, |
| | | checkMethod: undefined, |
| | | }, |
| | | ); |
| | | |
| | |
| | | ref="dialogRef" |
| | | :status="status" |
| | | :type="type" |
| | | :check-method="checkMethod" |
| | | @selected="handleSelected" |
| | | /> |
| | | </template> |
| | |
| | | import type { VbenFormApi, VbenFormSchema } from '#/adapter/form'; |
| | | import type { VbenFormApi, VbenFormSchema } from '#/adapter/form'; |
| | | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| | | import type { MesWmMaterialStockApi } from '#/api/mes/wm/materialstock'; |
| | | import type { MesWmProductReceiptApi } from '#/api/mes/wm/productreceipt'; |
| | |
| | | component: markRaw(ProWorkOrderSelect), |
| | | componentProps: { |
| | | status: MesProWorkOrderStatusEnum.CONFIRMED, |
| | | checkMethod: (row: any) => row.productionStatus !== 0, |
| | | }, |
| | | }, |
| | | { |