hsy
4 天以前 3df96cc4dade2aa2cf58a611647339f1b636a9a4
feat(wls): 限制产品入库选择未开工的生产订单

- 改造 `ProWorkOrderSelect` 和 `ProWorkOrderSelectDialog` 组件,增加 `checkMethod` 属性并透传至 VxeTable 底层,提供对单/多选的禁用控制能力。
- 在产品入库单 (productreceipt/data.ts) 的生产订单选择中增加拦截规则,校验 `productionStatus !== 0`。将“待生产”状态的订单选择框置灰禁用,防止未开始生产即入库的错误操作。
已修改3个文件
14 ■■■■ 文件已修改
src/views/mes/pro/workorder/components/select-dialog.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pro/workorder/components/select.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wls/productreceipt/data.ts 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/pro/workorder/components/select-dialog.vue
@@ -1,4 +1,4 @@
<script lang="ts" setup>
<script lang="ts" setup>
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder';
@@ -21,10 +21,12 @@
  defineProps<{
    status?: number;
    type?: number;
    checkMethod?: (row: MesProWorkOrderApi.WorkOrder) => boolean;
  }>(),
  {
    status: undefined,
    type: undefined,
    checkMethod: undefined,
  },
);
const emit = defineEmits<{
@@ -133,10 +135,12 @@
      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: {
src/views/mes/pro/workorder/components/select.vue
@@ -1,4 +1,4 @@
<script lang="ts" setup>
<script lang="ts" setup>
import type { MesProWorkOrderApi } from '#/api/mes/pro/workorder';
import { computed, ref, useAttrs, watch } from 'vue';
@@ -21,6 +21,7 @@
    placeholder?: string;
    status?: number;
    type?: number;
    checkMethod?: (row: MesProWorkOrderApi.WorkOrder) => boolean;
  }>(),
  {
    allowClear: true,
@@ -29,6 +30,7 @@
    placeholder: '请选择订单',
    status: undefined,
    type: undefined,
    checkMethod: undefined,
  },
);
@@ -140,6 +142,7 @@
    ref="dialogRef"
    :status="status"
    :type="type"
    :check-method="checkMethod"
    @selected="handleSelected"
  />
</template>
src/views/wls/productreceipt/data.ts
@@ -1,4 +1,4 @@
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';
@@ -108,6 +108,7 @@
      component: markRaw(ProWorkOrderSelect),
      componentProps: {
        status: MesProWorkOrderStatusEnum.CONFIRMED,
        checkMethod: (row: any) => row.productionStatus !== 0,
      },
    },
    {