祁鹏飞 2 месяцев назад
Родитель
Сommit
514a8ebc08

+ 71 - 29
src/views/quoteConfig/dispatch/components/rule.vue

@@ -32,7 +32,7 @@
 
                 <!-- 多选下拉 -->
                 <el-select v-model="domain.minArray" placeholder="选择值" multiple style="width: 341px"
-                  v-if="getConditionType(domain.attrCode) === 'checkbox'" :disabled="!domain.operator" clearable >
+                  v-if="getConditionType(domain.attrCode) === 'checkbox'" :disabled="!domain.operator" clearable>
                   <template #header>
                     <el-checkbox v-model="domain.checkAll" :indeterminate="domain.indeterminate"
                       @change="(val) => handleCheckAll(domain, val)">
@@ -147,33 +147,33 @@
 
         <!-- 对接人变更方式选择 -->
         <el-form-item>
-          <el-radio-group v-model="formData.actionJson[1].linkType" @change="handleTypeChange">
+          <el-checkbox-group v-model="linkTypeList" @change="handleTypeChange">
             <!-- 手动输入对接人 -->
-            <el-radio value="manual_input" size="large" style="margin: 20px 0; display: block">
+            <el-checkbox value="manual_input" size="large" style="margin: 20px 0; display: block">
               手动输入对接人信息:
               <el-form-item prop="actionJson.name" style="display: inline-block; margin: 0 20px">
-                <el-input v-model="formData.actionJson[1].name" style="width: 327px" placeholder="变更后对接人姓名" :disabled="formData.actionJson[1].linkType === 'select_account'
-                  " clearable />
+                <el-input v-model="formData.actionJson[1].name" style="width: 327px" placeholder="变更后对接人姓名"
+                  :disabled="!linkTypeList.includes('manual_input')" clearable />
               </el-form-item>
               <el-form-item prop="actionJson.phone" style="display: inline-block">
                 <el-input v-model="formData.actionJson[1].phone" style="width: 327px" type="number"
-                  placeholder="变更后对接人手机号" maxlength="11" @input="handlePhoneInput" :disabled="formData.actionJson[1].linkType === 'select_account'
-                    " clearable />
+                  placeholder="变更后对接人手机号" maxlength="11" @input="handlePhoneInput"
+                  :disabled="!linkTypeList.includes('manual_input')" clearable />
               </el-form-item>
-            </el-radio>
+            </el-checkbox>
 
             <!-- 选择保司账号 -->
-            <el-radio value="select_account" size="large" style="margin: 20px 0; display: block">
+            <el-checkbox value="select_account" size="large" style="margin: 20px 0; display: block">
               选择已有保司账号:
               <el-form-item prop="actionJson.accountId" style="display: inline-block; margin-left: 20px">
-                <el-select v-model="formData.actionJson[1].accountId" placeholder="选择变更后的保司账号" style="width: 662px"
-                  :disabled="formData.actionJson[1].linkType === 'manual_input'" clearable>
+                <el-select v-model="formData.actionJson[2].accountId" placeholder="选择变更后的保司账号" style="width: 662px"
+                  :disabled="!linkTypeList.includes('select_account')" clearable>
                   <!--  -->
                   <el-option v-for="item in accountList" :key="item.id" :label="item.username" :value="item.id" />
                 </el-select>
               </el-form-item>
-            </el-radio>
-          </el-radio-group>
+            </el-checkbox>
+          </el-checkbox-group>
         </el-form-item>
       </el-form>
 
@@ -241,6 +241,8 @@ interface ConditionGroup {
   actions: ConditionRow[];
 }
 
+const linkTypeList = ref([])
+
 // 表单核心数据
 // 表单核心数据 - 优化actionJson结构
 const formData = ref<{
@@ -250,6 +252,13 @@ const formData = ref<{
       actionCode: "specify_agreement"; // 固定:指定报价协议
       agreementId: string; // 报价协议ID
     },
+    {
+      actionCode: "change_bs_account"; // 固定:变更对接人
+      linkType: "manual_input" | "select_account"; // 对接人方式:手动输入/选择账号
+      name: string; // 手动输入-姓名
+      phone: string; // 手动输入-手机号
+      accountId: string; // 选择账号-账号ID
+    },
     {
       actionCode: "change_bs_account"; // 固定:变更对接人
       linkType: "manual_input" | "select_account"; // 对接人方式:手动输入/选择账号
@@ -271,6 +280,13 @@ const formData = ref<{
       phone: "",
       accountId: "",
     },
+    {
+      actionCode: "change_bs_account",
+      linkType: "select_account", // 默认选中“手动输入”
+      name: "",
+      phone: "",
+      accountId: "",
+    },
   ],
   conditionGroups: [
     {
@@ -314,7 +330,7 @@ const handleCheckAll = (item: any, val: boolean) => {
 }
 
 const change = (item: any) => {
-  console.log('change',item)
+  console.log('change', item)
   if (item?.attrType == 'select') {
     if (item.minArray.length === 0) {
       item.checkAll = false
@@ -545,17 +561,13 @@ const getAccountList = async () => {
 };
 
 //清空选项数据
-const handleTypeChange = () => {
-  const linkType = formData.value.actionJson[1].linkType;
-  const actionJson = formData.value.actionJson[1];
-
-  if (linkType === "manual_input") {
-    // 切换到手动输入:清空账号ID
-    actionJson.accountId = "";
-  } else if (linkType === "select_account") {
-    // 切换到选择账号:清空姓名和手机号
-    actionJson.name = "";
-    actionJson.phone = "";
+const handleTypeChange = (value) => {
+  if (!value.includes("manual_input")) {
+    formData.value.actionJson[1].name = "";
+    formData.value.actionJson[1].phone = "";
+  }
+  if (!value.includes("select_account")) {
+    formData.value.actionJson[2].accountId = "";
   }
 };
 
@@ -586,6 +598,17 @@ const submit = async () => {
           : { accountId: actionJson[1].accountId }),
       },
     },
+    {
+      actionCode:
+        actionJson[2].linkType == "manual_input"
+          ? "change_poc"
+          : "change_bs_account",
+      actionJson: {
+        ...(actionJson[2].linkType === "manual_input"
+          ? { name: actionJson[2].name, phone: actionJson[2].phone }
+          : { accountId: actionJson[2].accountId }),
+      },
+    },
   ];
   if (!actionJson[0].agreementId) {
     ElMessage({
@@ -654,7 +677,7 @@ onMounted(async () => {
 
   // 2. 提取props参数
   const { editType, editData } = props;
-  console.log('editData',editData)
+  console.log('editData', editData)
   dispatchId.value = editData?.dispatchId || "";
 
   // 3. 初始化formData基础结构(固定保留actionJson默认值,仅动态处理conditionGroups)
@@ -672,6 +695,13 @@ onMounted(async () => {
         phone: "",
         accountId: "",
       },
+      {
+        actionCode: "change_bs_account",
+        linkType: "select_account" as "manual_input" | "select_account",
+        name: "",
+        phone: "",
+        accountId: "",
+      },
     ],
     // 条件组:根据editType动态赋值
     conditionGroups: [] as ConditionGroup[],
@@ -766,7 +796,7 @@ onMounted(async () => {
         };
 
         rawGroup.forEach((rawRow: any, rowIdx: number) => {
-          console.log('rawRow',rawRow)
+          console.log('rawRow', rawRow)
           group.actions.push({
             key: rawRow.id || `row_${groupIdx}_${rowIdx}_${Date.now()}`,
             attrType: rawRow.attrType || "",
@@ -791,7 +821,7 @@ onMounted(async () => {
             minArray: [],
           });
         }
-        console.log('group-------------',group)
+        console.log('group-------------', group)
         return group;
       }
     );
@@ -810,20 +840,32 @@ onMounted(async () => {
       // 回显对接人信息
       const linkAction = editData.actions.find(
         (action: any) =>
-          action.actionCode === "change_bs_account" ||
           action.actionCode === "change_poc"
       );
+      const linkAction1 = editData.actions.find(
+        (action: any) =>
+          action.actionCode === "change_bs_account"
+      );
       if (linkAction?.actionJson) {
         const linkJson = linkAction.actionJson;
         if (linkJson.accountId) {
           baseFormData.actionJson[1].linkType = "select_account";
           baseFormData.actionJson[1].accountId = linkJson.accountId;
         } else {
+          linkTypeList.value.push('manual_input')
           baseFormData.actionJson[1].linkType = "manual_input";
           baseFormData.actionJson[1].name = linkJson.name || "";
           baseFormData.actionJson[1].phone = linkJson.phone || "";
         }
       }
+      if (linkAction1?.actionJson) {
+        const linkJson = linkAction1.actionJson;
+        if (linkJson.accountId) {
+          linkTypeList.value.push('select_account')
+          baseFormData.actionJson[2].linkType = "select_account";
+          baseFormData.actionJson[2].accountId = linkJson.accountId;
+        }
+      }
     }
 
     if (baseFormData.conditionGroups.length === 0) {

+ 6 - 6
src/views/quoteConfig/dispatch/index.vue

@@ -130,21 +130,21 @@
                           : "保司账号"
                       }}
                     </div>
-                    <template v-if="item.actions[1].actionCode == 'change_poc'">
+                    <div v-if="item.actions[1].actionCode == 'change_poc'">
                       {{ item.actions[1].actionJson.name || "未设置" }}-{{
                         item.actions[1].actionJson.phone || "未设置"
                       }}
-                    </template>
+                    </div>
                     <!-- <template v-if="'send_notify_msg'">
 
                     </template> -->
-                    <template v-else>
+                    <div v-if="item.actions[2].actionCode == 'change_bs_account'">
                       用户名:{{
-                        item.actions[1].actionJson.userName || "未设置"
+                        item.actions[2].actionJson.userName || "未设置"
                       }}<br />
                       简称:
-                      {{ item.actions[1].actionJson.companyName || "未设置" }}
-                    </template>
+                      {{ item.actions[2].actionJson.companyName || "未设置" }}
+                    </div>
                   </div>
                 </div>
               </div>