gaoluyang
9 小时以前 d3c740f3699586cd90297769285b6b0387e6ed68
银川九鸿化工需求:商机状态组改为非必填

- 新增商机表单「商机状态组」去掉必填,占位提示改为「请选择商机状态组(选填)」并允许清空
- 「变更商机状态」弹窗:未设置状态组的商机没有可选阶段,阶段下拉禁用并说明原因,且不做必填校验
(动态必填写法遵循框架约定放在 dependencies.rules,避免顶层函数 rules 触发渲染异常)

Co-Authored-By: Claude Code <noreply@anthropic.com>
已修改2个文件
21 ■■■■■ 文件已修改
src/views/crm/business/data.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/crm/business/detail/data.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/crm/business/data.ts
@@ -82,14 +82,13 @@
        api: getBusinessStatusTypeSimpleList,
        labelField: 'name',
        valueField: 'id',
        placeholder: '请选择商机状态组',
        placeholder: '请选择商机状态组(选填)',
        allowClear: true,
      },
      dependencies: {
        triggerFields: ['id'],
        disabled: (values) => values.id,
      },
      rules: 'required',
    },
    {
      fieldName: 'dealTime',
src/views/crm/business/detail/data.ts
@@ -99,19 +99,29 @@
      dependencies: {
        triggerFields: [''],
        async componentProps() {
          const statusList = await getBusinessStatusSimpleList(
            formData.value?.statusTypeId ?? 0,
          );
          const statusTypeId = formData.value?.statusTypeId;
          // 商机状态组为选填:未设置状态组时没有可选阶段,禁用并说明原因
          if (!statusTypeId) {
            return {
              disabled: true,
              options: [],
              placeholder: '该商机未设置「商机状态组」,无可选商机阶段',
            };
          }
          const statusList = await getBusinessStatusSimpleList(statusTypeId);
          const options = statusList.map((item) => ({
            label: `${item.name}(赢单率:${item.percent}%)`,
            value: item.id,
          }));
          return {
            disabled: false,
            options,
            placeholder: '请选择商机阶段',
          };
        },
        // 未设置商机状态组时不做必填校验(此时也没有阶段可供选择)
        rules: () => (formData.value?.statusTypeId ? 'required' : null),
      },
      rules: 'required',
    },
  ];
}