From 35722562e9e13f0504acc15b740d042ecb810199 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 20 九月 2026 09:06:11 +0800
Subject: [PATCH] feat(mes): 添加质检指标条目类型支持并实现报告生成功能

---
 src/views/mes/qc/indicator/data.ts |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 0 deletions(-)

diff --git a/src/views/mes/qc/indicator/data.ts b/src/views/mes/qc/indicator/data.ts
index a20cc84..947d209 100644
--- a/src/views/mes/qc/indicator/data.ts
+++ b/src/views/mes/qc/indicator/data.ts
@@ -7,13 +7,16 @@
 import {
   DICT_TYPE,
   MesAutoCodeRuleCode,
+  MesQcIndicatorItemType,
   MesQcResultValueType,
 } from '@vben/constants';
 import { getDictOptions } from '@vben/hooks';
 
 import { Button } from 'ant-design-vue';
 
+import { z } from '#/adapter/form';
 import { generateAutoCode } from '#/api/mes/md/autocode/record';
+import { getIndicatorGroupList } from '#/api/mes/qc/indicator';
 
 import { QcIndicatorResultSpecificationInput } from './components';
 
@@ -63,6 +66,61 @@
       rules: 'required',
     },
     {
+      fieldName: 'itemType',
+      label: '鏉$洰绫诲瀷',
+      component: 'RadioGroup',
+      componentProps: {
+        buttonStyle: 'solid',
+        optionType: 'button',
+        options: [
+          { label: '褰曞叆椤�', value: MesQcIndicatorItemType.ENTRY },
+          { label: '鍒嗙粍椤�', value: MesQcIndicatorItemType.GROUP },
+        ],
+      },
+      dependencies: {
+        triggerFields: ['itemType'],
+        // 鍒囨垚鍒嗙粍椤规椂娓呮帀鍙睘浜庡綍鍏ラ」鐨勫瓧娈碉紱鍒嗙粍椤瑰繀椤婚《绾э紝娈嬬暀鐨� parentId 浼氳鍚庣灞傜骇鏍¢獙椤跺洖鏉�
+        trigger: (values) => {
+          if (values.itemType === MesQcIndicatorItemType.GROUP) {
+            formApi?.setFieldValue('parentId', 0);
+            formApi?.setFieldValue('resultType', undefined);
+            formApi?.setFieldValue('resultSpecification', undefined);
+          }
+        },
+      },
+      rules: z.number().default(MesQcIndicatorItemType.ENTRY),
+    },
+    {
+      fieldName: 'parentId',
+      label: '鎵�灞炲垎缁�',
+      component: 'ApiTreeSelect',
+      componentProps: {
+        allowClear: true,
+        // 鐖剁骇鍊欓�夊彧鏈夊垎缁勯」锛氬垎缁勯」鍙兘鏄《绾э紝鎵�浠ヨ繖閲屾槸涓�灞傚钩閾猴紝涓嶉渶瑕� handleTree
+        api: async () => {
+          const data = await getIndicatorGroupList();
+          return [
+            {
+              id: 0,
+              name: '椤剁骇鎸囨爣',
+              children: data,
+            },
+          ];
+        },
+        childrenField: 'children',
+        labelField: 'name',
+        placeholder: '璇烽�夋嫨鎵�灞炲垎缁勶紝涓嶉�夊垯涓洪《绾ф寚鏍�',
+        treeDefaultExpandAll: true,
+        treeNodeFilterProp: 'name',
+        valueField: 'id',
+      },
+      dependencies: {
+        triggerFields: ['itemType'],
+        if: (values) => values.itemType !== MesQcIndicatorItemType.GROUP,
+      },
+      defaultValue: 0,
+    },
+    {
       fieldName: 'type',
       label: '妫�娴嬮」绫诲瀷',
       component: 'Select',
@@ -83,6 +141,30 @@
       },
     },
     {
+      fieldName: 'formulaText',
+      label: '鍏紡',
+      component: 'Textarea',
+      componentProps: {
+        maxlength: 500,
+        placeholder: '璇疯緭鍏ュ叕寮忥紝鎶ュ憡閲屼綔涓鸿鍒嗙粍鐨勬娴嬭姹傚睍绀�',
+        rows: 2,
+      },
+      dependencies: {
+        triggerFields: ['itemType'],
+        if: (values) => values.itemType === MesQcIndicatorItemType.GROUP,
+      },
+      rules: 'required',
+    },
+    {
+      fieldName: 'sortOrder',
+      label: '鎺掑簭鍙�',
+      component: 'InputNumber',
+      componentProps: {
+        min: 0,
+        placeholder: '鐣欑┖鑷姩鎺掑埌鍚岀骇鏈熬',
+      },
+    },
+    {
       fieldName: 'resultType',
       label: '缁撴灉鍊肩被鍨�',
       component: 'Select',
@@ -93,6 +175,11 @@
           formApi?.setFieldValue('resultSpecification', undefined),
         options: getDictOptions(DICT_TYPE.MES_QC_RESULT_TYPE, 'number'),
         placeholder: '璇烽�夋嫨缁撴灉鍊肩被鍨�',
+      },
+      // 鍒嗙粍椤规病鏈夌粨鏋滃�硷紝涓嶅睍绀轰篃涓嶆牎楠岋紙钀藉簱鏃跺悗绔悓鏍蜂細娓呯┖锛�
+      dependencies: {
+        triggerFields: ['itemType'],
+        if: (values) => values.itemType !== MesQcIndicatorItemType.GROUP,
       },
       rules: 'required',
     },
@@ -147,6 +234,19 @@
       },
     },
     {
+      fieldName: 'itemType',
+      label: '鏉$洰绫诲瀷',
+      component: 'Select',
+      componentProps: {
+        allowClear: true,
+        options: [
+          { label: '褰曞叆椤�', value: MesQcIndicatorItemType.ENTRY },
+          { label: '鍒嗙粍椤�', value: MesQcIndicatorItemType.GROUP },
+        ],
+        placeholder: '璇烽�夋嫨鏉$洰绫诲瀷',
+      },
+    },
+    {
       fieldName: 'type',
       label: '妫�娴嬮」绫诲瀷',
       component: 'Select',
@@ -183,6 +283,18 @@
       minWidth: 160,
     },
     {
+      field: 'itemType',
+      title: '鏉$洰绫诲瀷',
+      width: 100,
+      slots: { default: 'itemType' },
+    },
+    {
+      field: 'parentName',
+      title: '鎵�灞炲垎缁�',
+      width: 140,
+      slots: { default: 'parentName' },
+    },
+    {
       field: 'type',
       title: '妫�娴嬮」绫诲瀷',
       width: 120,

--
Gitblit v1.9.3