liu
2 天以前 3806307667468b929c44a935cb2376e7d6e4dd8f
feat(aftersales): 售后工单销售订单号必填,退货单反显订单和物料

- 工单表单销售订单号加必选规则(与客户/处理人必填对齐)
- 退货创建页提交前校验工单已关联销售订单
- 退货详情/弹窗展示销售订单号,API 类型补充 saleOrderNo

Co-Authored-By: Claude <noreply@anthropic.com>
已修改4个文件
17 ■■■■■ 文件已修改
src/api/aftersales/return.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/aftersales/return/data.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/aftersales/return/detail.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/aftersales/ticket/data.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/aftersales/return.ts
@@ -27,6 +27,7 @@
    customerId?: number;
    customerName?: string;
    saleOrderId?: number;
    saleOrderNo?: string;
    returnType?: number;
    returnReason?: string;
    defectCategory?: string;
src/views/aftersales/return/data.ts
@@ -49,6 +49,15 @@
      },
    },
    {
      fieldName: 'saleOrderNo',
      label: '销售订单号',
      component: 'Input',
      componentProps: {
        disabled: true,
        placeholder: '销售订单号',
      },
    },
    {
      fieldName: 'saleOrderId',
      label: '销售订单ID',
      component: 'Input',
src/views/aftersales/return/detail.vue
@@ -151,6 +151,11 @@
async function handleCreateReturn() {
  const { valid } = await createFormApi.validate();
  if (!valid) return;
  // 工单必须关联销售订单,退货单的订单与物料数据由工单反显带入
  if (!ticketData.value?.saleOrderId) {
    message.warning('该售后工单未关联销售订单,请先在工单中选择销售订单');
    return;
  }
  submitting.value = true;
  try {
@@ -289,6 +294,7 @@
              {{ returnData.ticketId }}
            </Button>
          </Descriptions.Item>
          <Descriptions.Item label="销售订单号">{{ returnData.saleOrderNo || '-' }}</Descriptions.Item>
          <Descriptions.Item label="退货类型">
            <Tag>{{ returnData.returnType ? returnTypeMap[returnData.returnType] : '-' }}</Tag>
          </Descriptions.Item>
src/views/aftersales/ticket/data.ts
@@ -93,6 +93,7 @@
          onSaleOrderChange?.(item);
        },
      },
      rules: 'selectRequired',
    },
    {
      fieldName: 'saleOrderNo',