Procházet zdrojové kódy

修改售后管理修改数据回显问题

hezhanp před 8 měsíci
rodič
revize
c74d793641

+ 39 - 99
src/views/salesServiceManagement/components/info.vue

@@ -44,8 +44,7 @@
               :key="item.value"
               :label="item.label"
               :value="item.value"
-            >
-            </el-option>
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -73,8 +72,7 @@
               :key="item.value"
               :label="item.label"
               :value="item.value"
-            >
-            </el-option>
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -233,8 +231,7 @@
               :key="item.value"
               :label="item.label"
               :value="item.value"
-            >
-            </el-option>
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -258,8 +255,7 @@
               :key="item.value"
               :label="item.label"
               :value="item.value"
-            >
-            </el-option>
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -283,8 +279,7 @@
               :key="item.value"
               :label="item.label"
               :value="item.value"
-            >
-            </el-option>
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -308,8 +303,7 @@
               :key="item.value"
               :label="item.label"
               :value="item.value"
-            >
-            </el-option>
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -335,8 +329,7 @@
               :key="item.value"
               :label="item.label"
               :value="item.value"
-            >
-            </el-option>
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-col>
@@ -745,7 +738,6 @@
       @selection-change="handleSelectionChange"
       v-if="source != '报工信息'"
     >
-      <!-- 表头工具栏 -->
       <template v-slot:toolbar>
         <el-button type="primary" v-if="tableOperate" @click="addBank"
           >添加</el-button
@@ -761,7 +753,6 @@
         <span class="is-required">{{ column.label }}</span>
       </template>
       <template v-slot:action="{ row, $index }">
-        <!-- v-if="type != 'view'" -->
         <el-link
           type="danger"
           :underline="false"
@@ -936,7 +927,6 @@ export default {
           slot: 'telephone',
           align: 'center'
         },
-
         {
           label: '微信号',
           prop: 'wechat',
@@ -974,7 +964,6 @@ export default {
           align: 'center',
           fixed: 'right',
           showOverflowTooltip: true
-          // show: this.type != 'view'
         }
       ];
     },
@@ -1007,7 +996,6 @@ export default {
           align: 'center',
           showOverflowTooltip: true
         },
-
         {
           prop: 'categoryName',
           label: '名称',
@@ -1076,13 +1064,10 @@ export default {
           align: 'center',
           resizable: false,
           slot: 'action',
-          // fixed: 'right',
           showOverflowTooltip: true
-          // show: this.type != 'view'
         }
       ];
     },
-    // 故障描述 ***
     faultList() {
       return [
         {
@@ -1146,12 +1131,10 @@ export default {
           align: 'center',
           resizable: false,
           slot: 'action',
-          // fixed: 'right',
           showOverflowTooltip: true
         }
       ];
     },
-    // 需求表格修改权限 ***
     tableOperate() {
       if (this.isReportDetails) {
         return false;
@@ -1159,16 +1142,12 @@ export default {
       let flag = this.type != 'view' || this.state == '可操作';
       return flag;
     },
-
-    // 故障列表删除权限
     faultOperate() {
       return (row) => {
         let flag = (this.state == '可操作' && !row.id) || this.type != 'view';
         return flag;
       };
     },
-
-    // 故障/联系人列表更改权限 ***
     change_permission() {
       let flag = this.type === 'view';
       if (this.source) {
@@ -1176,8 +1155,6 @@ export default {
       }
       return flag;
     },
-
-    // 附件上传 更改设置
     fileStr() {
       let str;
       if (this.isReportDetails) {
@@ -1189,7 +1166,6 @@ export default {
       str = this.type == 'view' ? 'view' : 'add';
       return str;
     },
-    // 图片
     imageUrleng() {
       return (row) => {
         if (!row.imageUrl) {
@@ -1205,24 +1181,18 @@ export default {
       default: true,
       type: Boolean
     },
-    // 来源页面 ***
     source: {
       default: '',
       type: String
     },
-
-    // 表格数据 更改状态
     state: {
       default: '',
       type: String
     },
-
-    // 是否是报工售后工单详情进入
     isReportDetails: {
       default: false,
       type: Boolean
     },
-
     demandList: {
       type: Array,
       default: () => []
@@ -1237,13 +1207,6 @@ export default {
     }
   },
   watch: {
-    detailList: {
-      handler(newVal) {
-        this.tableList = newVal;
-        console.log('配件数据更新:', newVal); // 实时打印最新配件数据
-      },
-      immediate: true
-    },
     demandList: {
       handler(val) {
         this.demandList = val;
@@ -1270,26 +1233,24 @@ export default {
     return {
       tableList: [],
       selection: [],
-      // 日期选择器配置
       pickerOptions: {
         disabledDate(time) {
-          // 禁用今天之前的日期
           return time.getTime() < new Date().setHours(0, 0, 0, 0);
         }
       },
-      detailList: [],
+      detailList: [], // 配件数据列表(用于回显)
       chargeList: [
         { label: '是', value: 1 },
         { label: '否', value: 0 }
-      ], //是否收费 下拉
+      ],
       partList: [
         { label: '是', value: 1 },
         { label: '否', value: 0 }
-      ], //是否带配件 下拉
+      ],
       carList: [
         { label: '是', value: 1 },
         { label: '否', value: 0 }
-      ], //是否派车 下拉
+      ],
       typeOptions: [
         { label: '维修', value: '1' },
         { label: '保养', value: '2' },
@@ -1301,31 +1262,22 @@ export default {
         contactInfoVOS: [],
         faultDetailList: [],
         associationType: '1',
-        aftertype: [], //售后类型
-        charge: '', //是否收费
-        part: '', //是否带配件
-        car: '', //是否派车
-        pietype: '' //派车类型
+        aftertype: '',
+        charge: '',
+        part: '',
+        car: '',
+        pietype: ''
       },
       rules: {},
       radio: null,
       phoneList: [],
       phoneVisible: false,
       associationTypeList: [
-        {
-          value: '1',
-          label: '发货单'
-        },
-        {
-          value: '2',
-          label: '销售订单'
-        },
-        {
-          value: '3',
-          label: '客户'
-        }
+        { value: '1', label: '发货单' },
+        { value: '2', label: '销售订单' },
+        { value: '3', label: '客户' }
       ],
-      isOrder: false, // 是否为销售订单数据
+      isOrder: false,
       defaultTemplateList: [],
       jsonData: {},
       carByTemplate: {},
@@ -1343,14 +1295,13 @@ export default {
       return [];
     },
     async init(res) {
+      // 原有字段初始化
       let productDetail = res.productDetail ? res.productDetail : [];
       this.$set(this.form, 'tableList', productDetail);
       this.$set(this.form, 'orderCode', res.orderCode);
       this.$set(this.form, 'orderId', res.orderId);
       this.$set(this.form, 'contactInfoVOS', res.contactInfoVOS);
       this.$set(this.form, 'name', res.name);
-      console.log(this.form);
-      console.log(res);
       let faultLevel = res.faultLevel ? String(res.faultLevel) : '';
       this.$set(this.form, 'faultLevel', faultLevel);
       this.$set(this.form, 'code', res.code);
@@ -1367,6 +1318,16 @@ export default {
       if (faultDetailList.length > 0) {
         this.isOrder = true;
       }
+
+      // 核心修复:回显字段赋值
+      this.$set(this.form, 'aftertype', res.afterSalesType ?? '');
+      this.$set(this.form, 'charge', res.isFee ?? '');
+      this.$set(this.form, 'part', res.isWithAccessories ?? '');
+      this.$set(this.form, 'car', res.isPieCar ?? '');
+      this.$set(this.form, 'pietype', res.pieCarType ?? '');
+      
+      // 配件数据回显:从后端res.costListVOS获取并赋值给detailList
+      this.$set(this, 'detailList', res.costListVOS || []);
     },
     getValue() {
       return this.form;
@@ -1379,7 +1340,6 @@ export default {
       this.phoneList = [];
       this.phoneVisible = false;
     },
-    //客户选择
     handHead() {
       if (this.type != 'view') {
         this.$refs.parentRef.open();
@@ -1388,7 +1348,6 @@ export default {
     changeParent(res) {
       this.contactDetail(res.id);
     },
-    //客户回调
     async contactDetail(id, type) {
       if (!id) {
         this.contractInfo = {};
@@ -1417,26 +1376,22 @@ export default {
           })
         );
         if (this.form.associationType != '3') {
-          // 清空发货单的数据 *** 初次进来不清空
           this.$set(this.form, 'orderCode', '');
           this.$set(this.form, 'orderId', '');
           this.$set(this.form, 'tableList', []);
         }
       }
     },
-    //发货单回调
     invoiceChange(data) {
       this.$set(this.form, 'orderCode', data.orderCode);
       this.$set(this.form, 'orderId', data.orderId);
       let list = JSON.parse(JSON.stringify(data.tableList));
-      // 如果计量数量没有的话默认是 1
       list.map(
         (el) =>
           (el.measureQuantity = el.measureQuantity ? el.measureQuantity : 1)
       );
       this.$set(this.form, 'tableList', list);
     },
-    //发货单选择
     invoiceDialogOpen() {
       if (!this.form?.contractInfo?.id) {
         this.$message.warning('请先选择客户名称!');
@@ -1462,7 +1417,6 @@ export default {
         remark: ''
       });
     },
-    // *** 添加问题
     addProblem(row) {
       if (!row.faultDetails) this.$set(row, 'faultDetails', []);
       let len = row.faultDetails.length;
@@ -1472,16 +1426,13 @@ export default {
         faultPhenomenon: ''
       });
     },
-    // *** 删除问题
     delSon(row, idx) {
       row.faultDetails.splice(idx, 1);
       this.$forceUpdate();
     },
-    //
     handleSelectionChange(rows) {
       this.selection = rows;
     },
-    // *** 删除联系人
     delContact() {
       if (this.selection.length == 0) {
         this.$message.warning('请至少选择一条联系人信息');
@@ -1497,7 +1448,6 @@ export default {
     del(row, index) {
       this.form.tableList.splice(index, 1);
     },
-
     getValidate() {
       return new Promise((resolve, reject) => {
         this.$refs.form.validate((valid, obj) => {
@@ -1522,12 +1472,16 @@ export default {
         contactInfoVOS: [],
         faultDetailList: [],
         orderCode: '',
-        orderId: ''
+        orderId: '',
+        associationType: '1',
+        aftertype: '',
+        charge: '',
+        part: '',
+        car: '',
+        pietype: ''
       };
       this.$refs.form.resetFields();
     },
-
-    // 销售订单选择
     saleorderDialogOpen() {
       if (!this.form?.contractInfo?.id) {
         this.$message.warning('请先选择客户名称!');
@@ -1536,7 +1490,6 @@ export default {
       this.form.tableList = [];
       if (this.type != 'view') {
         let obj = {
-          // tableList: this.form.tableList || [],
           tableList: [],
           orderCode: this.form.orderCode || '',
           orderId: this.form.orderId || ''
@@ -1544,12 +1497,10 @@ export default {
         this.$refs.saleorderDialogRef.open(this.form.contractInfo.id, obj);
       }
     },
-    //  销售订单回调
     saleorderChange(data) {
       this.$set(this.form, 'orderCode', data.orderCode);
       this.$set(this.form, 'orderId', data.orderId);
       let list = JSON.parse(JSON.stringify(data.tableList));
-      // 如果计量数量没有的话默认是 1
       list.map(
         (el) =>
           (el.measureQuantity = el.measureQuantity ? el.measureQuantity : 1)
@@ -1561,24 +1512,20 @@ export default {
         this.$set(this.form, 'faultDetailList', []);
       }
     },
-    // 产品选择
     customersDialogOpen() {
       this.$refs.productDialogRef.open();
     },
-    // 产品选择回调
     productChange(data) {
       this.$set(this.form, 'faultDetailList', []);
       this.$set(this.form, 'orderCode', data.orderCode);
       this.$set(this.form, 'orderId', data.orderId);
       let list = JSON.parse(JSON.stringify(data.tableList));
-      // 如果计量数量没有的话默认是 1
       list.map(
         (el) =>
           (el.measureQuantity = el.measureQuantity ? el.measureQuantity : 1)
       );
       this.$set(this.form, 'tableList', list);
     },
-    // 新增故障 一级( 没有售后对象 )
     addFaults() {
       this.form.faultDetailList.push({
         maintenanceProcess: '',
@@ -1586,7 +1533,6 @@ export default {
         faultPhenomenon: ''
       });
     },
-
     faultDel(index) {
       this.form.faultDetailList.splice(index, 1);
     },
@@ -1607,25 +1553,19 @@ export default {
         );
         if (this.carByTemplate && this.carByTemplate.formJson?.makingJson) {
           this.formSchema = JSON.parse(this.carByTemplate.formJson.makingJson);
-
           this.formSchema.config.dataSource &&
             this.formSchema.config.dataSource.forEach((item) => {
               item.headers = {
                 Authorization: getToken()
               };
             });
-          console.log('表单配置', this.formSchema);
         } else {
           this.formSchema = {};
         }
-
-        // 打开弹窗
         this.processSubmitDialogFlag = true;
       }
     },
-
     handleFormSubmit(data) {
-      console.log('表单数据:', data);
       this.carFormData = data;
     }
   }
@@ -1643,4 +1583,4 @@ export default {
   margin-left: 16px;
   color: #e6a23c;
 }
-</style>
+</style>

+ 106 - 101
src/views/salesServiceManagement/components/processSubmitDialog/processSubmitDialog.vue

@@ -169,7 +169,7 @@
 </template>
 
 <script>
-// 引入流程核心依赖(剔除通知人相关)
+// 引入流程核心依赖
 import {
   getModelPage,
   getProcessDefinitionBpmnXML,
@@ -177,7 +177,7 @@ import {
   listAllUserBind,
   listSimpleUserGroups,
   getModel
-} from './api'; // 与参考代码保持一致的API路径
+} from './api';
 import { treeClassifyCodeEnum } from '@/enum/dict';
 import { listRoles } from '@/api/system/role';
 import { listOrganizations } from '@/api/system/organization';
@@ -192,7 +192,6 @@ export default {
   name: 'processSubmitDialog',
   mixins: [dictMixins],
   props: {
-    // 保留原组件props,确保外部传参兼容
     processSubmitDialogFlag: {
       type: Boolean,
       default: false
@@ -208,42 +207,43 @@ export default {
   },
   data() {
     return {
-      title: '用车', // 保留原标题
-      isRight: false, // 控制右侧流程区显示/隐藏
-      remoteFuncs: {}, // 保留原表单远程函数配置
+      title: '用车',
+      isRight: false,
+      remoteFuncs: {},
 
-      // 流程核心数据(剔除通知人相关字段)
+      // 流程核心数据:key默认值设为TYCSLC
       form: {
         LCFL: '', // 流程分类ID
-        FQLC: '', // 发起流程ID
+        FQLC: '', // 发起流程ID(流程模型ID)
         processDefinitionId: '', // 流程定义ID
         name: '', // 流程名称
-        key: '', // 流程标识(只读)
+        key: 'TYCSLC', // 流程标识默认值
         valueJson: {}, // 表单提交数据
         processModelId: '' // 流程模型ID
       },
 
       // 流程基础选项列表
-      LCFLList: [], // 流程分类列表
-      processList: [], // 发起流程列表
-      datasource: [], // 流程执行人列表
-      bpmnXML: null, // 流程图XML数据
-
-      // 执行人解析依赖数据(角色、部门、用户等)
-      roleOptions: [], // 角色列表
-      deptOptions: [], // 部门列表
-      userOptions: [], // 用户列表
-      userGroupOptions: [], // 用户组列表
-      dictList: {} // 流程相关字典(如工种类型、自定义脚本)
+      LCFLList: [],
+      processList: [],
+      datasource: [],
+      bpmnXML: null,
+
+      // 执行人解析依赖数据
+      roleOptions: [],
+      deptOptions: [],
+      userOptions: [],
+      userGroupOptions: [],
+      dictList: {}
     };
   },
   computed: {
-    // 从Vuex获取当前用户信息(用于执行人默认值等场景)
     ...mapGetters(['user'])
   },
   async created() {
-    // 初始化流程基础数据(分类、角色、部门等)
+    // 1. 初始化基础数据(分类、角色、部门等)
     await this.initProcessBaseData();
+    // 2. 通过流程标识(TYCSLC)查询关联的流程模型,自动赋值相关字段
+    await this.initDefaultProcessByKey('TYCSLC');
   },
   methods: {
     /**
@@ -256,52 +256,88 @@ export default {
       );
       this.LCFLList = typeObj[0]?.children || [];
 
-      // 加载角色、部门、用户、用户组基础数据(用于执行人名称解析)
+      // 加载角色、部门、用户、用户组(用于执行人解析)
       await this.initBaseOptions();
     },
 
     /**
-     * 2. 初始化角色/部门/用户/用户组选项(执行人解析依赖)
+     * 2. 初始化角色/部门/用户/用户组选项
      */
     async initBaseOptions() {
-      // 加载角色列表
+      // 角色列表
       const roleRes = await listRoles({ current: 1, size: 9999 });
       this.roleOptions = roleRes.list || [];
 
-      // 加载部门列表
+      // 部门列表
       const deptRes = await listOrganizations();
       this.deptOptions = deptRes || [];
 
-      // 加载用户列表
+      // 用户列表
       const userRes = await listAllUserBind();
       this.userOptions = userRes || [];
 
-      // 加载用户组列表
+      // 用户组列表
       const userGroupRes = await listSimpleUserGroups();
       this.userGroupOptions = userGroupRes || [];
 
-      // 加载流程相关字典(工种类型、自定义脚本)
+      // 加载流程相关字典
       await this.getDictList(this.dictEnum['工作流任务分配自定义脚本']);
       await this.getDictList(this.dictEnum['工种类型']);
     },
 
     /**
-     * 3. 切换流程分类:加载对应流程列表
+     * 3. 新增:通过流程标识(key)查询关联流程模型,自动赋值分类、名称等字段
+     * @param {string} targetKey - 目标流程标识(如TYCSLC)
+     */
+    async initDefaultProcessByKey(targetKey) {
+      try {
+        // 调用接口:按流程标识筛选流程模型(只查1条匹配数据)
+        const { list } = await getModelPage({
+          pageNo: 1,
+          pageSize: 1,
+          key: targetKey // 核心筛选条件:流程标识
+        });
+
+        if (list.length === 0) {
+          this.$message.warning(`未找到标识为【${targetKey}】的流程模型,请检查配置`);
+          return;
+        }
+
+        // 获取匹配的流程模型
+        const defaultModel = list[0];
+        // 自动赋值核心字段
+        this.form.LCFL = defaultModel.category; // 流程分类(模型的分类ID)
+        this.form.FQLC = defaultModel.id; // 发起流程(模型ID)
+        this.form.name = defaultModel.name; // 流程名称(模型名称)
+        this.form.processModelId = defaultModel.id; // 保存模型ID
+
+        // 加载该分类下的流程列表(让“发起流程”下拉框显示可选项)
+        await this.getProcessList(defaultModel.category);
+        // 加载流程图和执行人列表(让默认流程显示完整信息)
+        await this.changeFQLC(defaultModel.id);
+      } catch (error) {
+        console.error('通过流程标识初始化默认流程失败:', error);
+        this.$message.error('默认流程加载失败,请手动选择流程');
+      }
+    },
+
+    /**
+     * 4. 切换流程分类:加载对应流程列表(修复清空key和name的问题)
      */
     async changeLCFL(val) {
-      // 重置下游流程数据
       this.bpmnXML = null;
       this.form.processDefinitionId = '';
       this.form.FQLC = '';
-      this.form.name = '';
-      this.form.key = '';
+      // 保留流程标识和名称,不清空
+      // this.form.name = ''; 
+      // this.form.key = '';
 
       // 加载当前分类下的流程列表
       await this.getProcessList(val);
     },
 
     /**
-     * 4. 获取指定分类下的流程列表
+     * 5. 获取指定分类下的流程列表
      */
     async getProcessList(processTypeId) {
       const { list } = await getModelPage({
@@ -309,30 +345,28 @@ export default {
         pageSize: 999,
         processTypeId
       });
-      // 过滤出有流程定义的流程(排除无效数据)
+      // 过滤出有流程定义的有效流程
       this.processList = list.filter((item) => item.processDefinition);
     },
 
     /**
-     * 5. 切换发起流程:加载流程图和执行人列表
+     * 6. 切换发起流程:加载流程图和执行人列表
      */
     async changeFQLC(val) {
       if (!val) return;
 
-      // 找到当前选中的流程信息
-      const selectedProcess =
-        this.processList.find((item) => item.id === val) || {};
+      const selectedProcess = this.processList.find((item) => item.id === val) || {};
       const processDef = selectedProcess.processDefinition || {};
 
-      // 更新流程基础信息
+      // 更新流程信息(选中流程时覆盖名称和标识)
       this.form.name = selectedProcess.name || this.title;
-      this.form.key = selectedProcess.key || '';
+      this.form.key = selectedProcess.key || 'TYCSLC'; // 无key时 fallback 到默认值
       this.form.processDefinitionId = processDef.id || '';
       this.form.processModelId = val;
 
-      // 加载流程图XML
+      // 加载流程图
       await this.getProcessDefinitionBpmnXMLInfo(val);
-      // 加载流程执行人列表
+      // 加载执行人列表
       await this.getTaskAssignRuleListInfo({
         modelId: val,
         processDefinitionId: processDef.id
@@ -340,7 +374,7 @@ export default {
     },
 
     /**
-     * 6. 加载流程图XML数据
+     * 7. 加载流程图XML数据
      */
     async getProcessDefinitionBpmnXMLInfo(modelId) {
       const res = await getModel(modelId);
@@ -348,103 +382,74 @@ export default {
     },
 
     /**
-     * 7. 加载流程执行人列表(任务节点-执行人映射)
+     * 8. 加载流程执行人列表
      */
     async getTaskAssignRuleListInfo(params) {
       this.datasource = await getTaskAssignRuleList(params);
     },
 
     /**
-     * 8. 解析执行人类型,返回显示名称(角色/部门/用户等)
+     * 9. 解析执行人显示名称
      */
     getAssignRuleOptionName(row, option) {
-      // 角色类型(10)
       if (row.type === 10) {
         const role = this.roleOptions.find((item) => item.id === option);
         return role?.name || `未知角色(${option})`;
-      }
-      // 部门类型(20/21)
-      else if (row.type === 20 || row.type === 21) {
+      } else if (row.type === 20 || row.type === 21) {
         const dept = this.deptOptions.find((item) => item.id === option);
         return dept?.name || `未知部门(${option})`;
-      }
-      // 工种类型(22)
-      else if (row.type === 22) {
-        return (
-          this.getDictV(this.dictEnum['工种类型'], option + '') ||
-          `未知工种(${option})`
-        );
-      }
-      // 用户类型(30/31/32)
-      else if (row.type === 30 || row.type === 31 || row.type === 32) {
+      } else if (row.type === 22) {
+        return this.getDictV(this.dictEnum['工种类型'], option + '') || `未知工种(${option})`;
+      } else if (row.type === 30 || row.type === 31 || row.type === 32) {
         const user = this.userOptions.find((item) => item.id === option);
         return user?.nickname || user?.name || `未知用户(${option})`;
-      }
-      // 用户组类型(40)
-      else if (row.type === 40) {
+      } else if (row.type === 40) {
         const group = this.userGroupOptions.find((item) => item.id === option);
         return group?.name || `未知用户组(${option})`;
-      }
-      // 自定义脚本类型(50)
-      else if (row.type === 50) {
-        return (
-          this.getDictV(
-            this.dictEnum['工作流任务分配自定义脚本'],
-            option + ''
-          ) || `未知脚本(${option})`
-        );
-      }
-      // 变量类型(60)
-      else if (row.type === 60) {
+      } else if (row.type === 50) {
+        return this.getDictV(this.dictEnum['工作流任务分配自定义脚本'], option + '') || `未知脚本(${option})`;
+      } else if (row.type === 60) {
         return row.variableName || '变量执行人';
-      }
-      // 层级类型(70:1/2级,80:3级)
-      else if (row.type === 70) {
+      } else if (row.type === 70) {
         const data = JSON.parse(row.variableName || '{}');
         const levelList = data.direction === 1 ? topLevel2 : topLevel1;
-        return (
-          levelList.find((item) => item.value === data.topLevel)?.label ||
-          '未知层级'
-        );
+        return levelList.find((item) => item.value === data.topLevel)?.label || '未知层级';
       } else if (row.type === 80) {
         const data = JSON.parse(row.variableName || '{}');
-        return (
-          topLevel3.find((item) => item.value === data.topLevel)?.label ||
-          '未知层级'
-        );
+        return topLevel3.find((item) => item.value === data.topLevel)?.label || '未知层级';
       }
-      // 默认值
       return `未知类型(${option || '无'})`;
     },
 
     /**
-     * 9. 根据字典编码和值,获取字典标签
+     * 10. 获取字典标签
      */
     getDictV(dictCode, val) {
       if (!this.dictList[dictCode]) return '';
-      return (
-        this.dictList[dictCode].find((item) => item.value === val)?.label || ''
-      );
+      return this.dictList[dictCode].find((item) => item.value === val)?.label || '';
     },
 
     /**
-     * 10. 加载指定编码的字典列表
+     * 11. 加载字典列表
      */
     async getDictList(dictCode) {
       const { data: res } = await getByCode(dictCode);
       this.dictList[dictCode] = res.map((item) => {
         const keys = Object.keys(item);
-        return {
-          value: keys[0],
-          label: item[keys[0]]
-        };
+        return { value: keys[0], label: item[keys[0]] };
       });
     },
 
+    /**
+     * 12. 表单验证
+     */
     generateFormValid(validate = true) {
       return this.$refs.generateForm.getData(validate).then((data) => data);
     },
 
+    /**
+     * 13. 提交流程
+     */
     async submit() {
       try {
         this.form.valueJson = await this.generateFormValid();
@@ -457,7 +462,6 @@ export default {
         };
 
         this.$emit('formSubmit', submitData);
-
         this.cancel();
       } catch (error) {
         console.error('表单验证失败:', error);
@@ -465,17 +469,21 @@ export default {
       }
     },
 
+    /**
+     * 14. 关闭弹窗:重置数据(保留key默认值)
+     */
     cancel() {
       this.$emit('update:processSubmitDialogFlag', false);
       this.isRight = false;
       this.bpmnXML = null;
       this.datasource = [];
+      // 重置时保留流程标识默认值TYCSLC
       this.form = {
         LCFL: '',
         FQLC: '',
         processDefinitionId: '',
         name: '',
-        key: '',
+        key: 'TYCSLC', // 保留默认值
         valueJson: {},
         processModelId: ''
       };
@@ -485,7 +493,6 @@ export default {
 </script>
 
 <style scoped lang="scss">
-/* 流程核心样式(与参考代码保持一致) */
 .form-box {
   min-width: 400px;
   overflow: auto;
@@ -503,7 +510,6 @@ export default {
   }
 }
 
-/* 流程区表格样式优化 */
 ::v-deep .el-table {
   margin-top: 10px;
   .el-table__header th {
@@ -511,7 +517,6 @@ export default {
   }
 }
 
-/* 流程图容器样式 */
 ::v-deep .bpmn-viewer {
   border: 1px solid #e5e7eb;
   border-radius: 4px;

+ 9 - 2
src/views/salesServiceManagement/demandList/components/addDialog.vue

@@ -212,8 +212,15 @@ export default {
     // 提取公共 参数
     async handleParameter() {
       let data = this.$refs.infoRef.getValue();
-      let sparePartsData = this.$refs.infoRef.getSpareInfoData();
-      console.log(sparePartsData.length);
+      let sparePartsData = (this.$refs.infoRef.getSpareInfoData() || []).map(
+        (item) => ({
+          ...item,
+          code: item?.categoryCode,
+          name: item?.categoryName
+        })
+      );
+      
+  console.log("加工后配件数据:", sparePartsData)
       if (!data.contactInfoVOS?.length) {
         this.$message.warning('联系人信息至少有1条');
         return false;

+ 0 - 134
src/views/salesServiceManagement/vehiclerecord/components/addDialog.vue

@@ -1,134 +0,0 @@
-<template>
-  <ele-modal
-    custom-class="ele-dialog-form long-dialog-form"
-    :centered="true"
-    :visible.sync="addRepairNotesDialog"
-    title="评价"
-    :close-on-click-modal="false"
-    width="800px"
-    :maxable="true"
-    append-to-body
-    @close="handleClose"
-  >
-    <el-form
-      ref="form"
-      :model="form"
-      :rules="rules"
-      label-width="100px"
-      class="create-form"
-    >
-      <el-form-item label="服务态度" prop="attitudeRating">
-        <div class="block">
-          <el-rate v-model="form.attitudeRating" show-text :texts="texts">
-          </el-rate>
-        </div>
-      </el-form-item>
-      <el-form-item label="响应速度" prop="responseSpeed">
-        <div class="block">
-          <el-rate v-model="form.responseSpeed" show-text :texts="texts">
-          </el-rate>
-        </div>
-      </el-form-item>
-      <el-form-item label="整体满意度" prop="serviceRating">
-        <div class="block">
-          <el-rate v-model="form.serviceRating" show-text :texts="texts">
-          </el-rate>
-        </div>
-      </el-form-item>
-      <el-form-item label="评价" prop="evaluationContent">
-        <el-input
-          type="textarea"
-          placeholder="请输入内容"
-          v-model="form.evaluationContent"
-          :disabled="type == 'view'"
-        >
-        </el-input>
-      </el-form-item>
-    </el-form>
-
-    <div slot="footer" class="footer">
-      <el-button type="primary" @click="submitAdd">确认</el-button>
-      <el-button @click="handleClose">返回</el-button>
-    </div>
-  </ele-modal>
-</template>
-
-<script>
-  import { evaluateSave } from '@/api/salesServiceManagement/index';
-
-  const def = {
-    attachmen: [],
-    attitudeRating: '',
-    code: '',
-    evaluationContent: '',
-    isAnonymous: '',
-    responseSpeed: '',
-    serviceRating: '',
-    workId: ''
-  };
-  export default {
-    components: {},
-    data() {
-      return {
-        texts: ['非常不满意', '不满意', '一般', '满意', '非常满意'],
-        rules: {
-          attitudeRating: [
-            { required: true, message: '请选择服务态度', trigger: 'change' }
-          ],
-          responseSpeed: [
-            { required: true, message: '请选择响应速度', trigger: 'change' }
-          ],
-          serviceRating: [
-            { required: true, message: '请选择服务评分', trigger: 'change' }
-          ]
-        },
-        title: '新增',
-        addRepairNotesDialog: false,
-        type: 'add',
-        form: { ...def }
-      };
-    },
-    created() {},
-    methods: {
-      open(row, type) {
-        this.addRepairNotesDialog = true;
-        this.type = type;
-        this.title = type == 'add' ? '新增' : '详情';
-        if (type != 'add') {
-          this.getDetail(row.id);
-        } else {
-          this.form.workId = row.id;
-        }
-      },
-      async getDetail(id) {
-        const res = await getSalesDemandById(id);
-        this.form = res;
-      },
-
-      handleClose() {
-        this.addRepairNotesDialog = false;
-        this.form = { ...def };
-      },
-      async submitAdd() {
-
-        try {
-          let valid = await this.$refs.form.validate();
-          const res = await evaluateSave(this.form);
-          if (res) {
-            this.$message.success('操作成功!');
-            this.$emit('success');
-            this.handleClose();
-          }
-        } catch (error) {}
-      }
-    }
-  };
-</script>
-
-<style lang="scss" scoped>
-  .block {
-    height: 36px;
-    display: flex;
-    align-items: center;
-  }
-</style>