From c65b90aaa3477a90ebc325024927d80227c0c841 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期四, 09 四月 2026 14:09:25 +0800
Subject: [PATCH] 测试完成

---
 src/views/Satisfaction/configurationmyd/index.vue |  589 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 563 insertions(+), 26 deletions(-)

diff --git a/src/views/Satisfaction/configurationmyd/index.vue b/src/views/Satisfaction/configurationmyd/index.vue
index 7034876..75038c3 100644
--- a/src/views/Satisfaction/configurationmyd/index.vue
+++ b/src/views/Satisfaction/configurationmyd/index.vue
@@ -272,6 +272,45 @@
                 </div>
               </div>
               <div class="header-right">
+                <!-- 寮傚父閫夐」鐘舵�� -->
+                <div
+                  class="option-status"
+                  v-if="
+                    templateForm.templateType != 3 &&
+                    templateForm.templateType != 4
+                  "
+                >
+                  <el-tooltip
+                    :content="
+                      checkHasAbnormalOptions(question)
+                        ? '宸叉湁寮傚父閫夐」'
+                        : '鏆傛棤寮傚父閫夐」'
+                    "
+                    placement="top"
+                  >
+                    <el-tag
+                      :type="
+                        checkHasAbnormalOptions(question) ? 'success' : 'danger'
+                      "
+                      size="small"
+                      class="status-tag"
+                    >
+                      <i
+                        :class="
+                          checkHasAbnormalOptions(question)
+                            ? 'el-icon-success'
+                            : 'el-icon-warning'
+                        "
+                      ></i>
+                      {{
+                        checkHasAbnormalOptions(question)
+                          ? "寮傚父閫夐」宸查厤缃�"
+                          : "鏃犲紓甯搁�夐」"
+                      }}
+                    </el-tag>
+                  </el-tooltip>
+                </div>
+
                 <el-button
                   type="text"
                   icon="el-icon-view"
@@ -279,6 +318,20 @@
                   size="small"
                 >
                   棰勮
+                </el-button>
+
+                <!-- 娣诲姞閰嶇疆閫夐」鎸夐挳 -->
+                <el-button
+                  v-if="
+                    templateForm.templateType != 3 &&
+                    templateForm.templateType != 4
+                  "
+                  type="text"
+                  icon="el-icon-setting"
+                  @click="openOptionDialog(question)"
+                  size="small"
+                >
+                  閰嶇疆閫夐」
                 </el-button>
               </div>
             </div>
@@ -428,7 +481,114 @@
         </div>
       </div>
     </div>
+    <!-- 閫夐」閰嶇疆瀵硅瘽妗� -->
+    <el-dialog
+      title="閫夐」寮傚父鐘舵�侀厤缃�"
+      :visible.sync="optionDialogVisible"
+      width="700px"
+      center
+      :close-on-click-modal="false"
+    >
+      <div v-if="editingQuestion" class="option-config-wrapper">
+        <div class="dialog-header">
+          <h4>{{ editingQuestion.scriptTopic || "鏃犱富棰�" }}</h4>
+          <p class="dialog-subtitle">{{ editingQuestion.scriptContent }}</p>
+        </div>
 
+        <div class="option-list">
+          <el-alert
+            v-if="!currentOptions.some((opt) => opt.isabnormal === 1)"
+            title="璇疯嚦灏戣缃竴涓紓甯搁�夐」锛堟爣璁颁负寮傚父锛�"
+            type="warning"
+            :closable="false"
+            show-icon
+            style="margin-bottom: 20px"
+          />
+
+          <div
+            v-for="(option, index) in currentOptions"
+            :key="index"
+            class="option-item"
+          >
+            <el-form
+              :model="option"
+              :rules="optionRules"
+              ref="optionForm"
+              size="small"
+              class="option-form"
+            >
+              <el-row :gutter="12" align="middle">
+                <el-col :span="2">
+                  <div class="option-index">#{{ index + 1 }}</div>
+                </el-col>
+
+                <el-col :span="12">
+                  <el-form-item prop="targetvalue">
+                    <el-input
+                      v-model="option.targetvalue"
+                      placeholder="璇疯緭鍏ラ�夐」鍐呭"
+                      clearable
+                      maxlength="200"
+                      show-word-limit
+                    />
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="6">
+                  <el-form-item prop="isabnormal">
+                    <el-select
+                      v-model="option.isabnormal"
+                      placeholder="閫夋嫨鐘舵��"
+                      style="width: 100%"
+                    >
+                      <el-option
+                        v-for="status in abnormalOptions"
+                        :key="status.value"
+                        :label="status.label"
+                        :value="status.value"
+                      >
+                        <el-tag :type="status.type" size="small">{{
+                          status.label
+                        }}</el-tag>
+                      </el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="4">
+                  <el-button
+                    type="danger"
+                    icon="el-icon-delete"
+                    @click="removeOption(index)"
+                    size="small"
+                    circle
+                    plain
+                  />
+                </el-col>
+              </el-row>
+            </el-form>
+          </div>
+
+          <!-- <el-button
+        type="primary"
+        icon="el-icon-plus"
+        @click="addNewOption"
+        size="small"
+        plain
+        style="width: 100%; margin-top: 10px;"
+      >
+        娣诲姞閫夐」
+      </el-button> -->
+        </div>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="optionDialogVisible = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="saveOptions" :loading="savingOptions">
+          淇濆瓨閰嶇疆
+        </el-button>
+      </span>
+    </el-dialog>
     <!-- 棰樼洰棰勮瀵硅瘽妗� -->
     <el-dialog
       title="棰樼洰棰勮"
@@ -573,7 +733,25 @@
           { required: true, message: "璇烽�夋嫨妯℃澘绫诲瀷", trigger: "change" },
         ],
       },
+      // 閫夐」绠$悊鐩稿叧
+      optionDialogVisible: false,
+      currentOptions: [],
+      editingQuestion: null,
+      optionRules: {
+        targetvalue: [
+          { required: true, message: "璇疯緭鍏ラ�夐」鍐呭", trigger: "blur" },
+        ],
+        isabnormal: [
+          { required: true, message: "璇烽�夋嫨寮傚父鐘舵��", trigger: "change" },
+        ],
+      },
 
+      // 寮傚父鐘舵�侀�夐」
+      abnormalOptions: [
+        { label: "姝e父", value: 0, type: "success" },
+        { label: "寮傚父", value: 1, type: "danger" },
+        { label: "璀﹀憡", value: 2, type: "warning" },
+      ],
       // 妯℃澘閫夐」
       questionnaireTemplates: [], // 闂嵎妯℃澘鍒楄〃
       followupTemplates: [], // 璇煶妯℃澘鍒楄〃
@@ -612,8 +790,9 @@
       changedCount: 0,
 
       // 婊℃剰搴﹀垎绫籌D
-      satisfactionCategoryIds: ["404", "405", "406"],
-
+      satisfactionCategoryIds: ["404", "405", "406", "10039", "10041", "10042"],
+      questionnaireCategorys: [],
+      voiceCategories: [],
       // 琛ㄥ崟楠岃瘉瑙勫垯
       configRules: {
         responsibilityDept: [
@@ -666,9 +845,16 @@
 
     // 婊℃剰搴﹂鐩暟閲�
     satisfactionQuestionsCount() {
-      return this.questionList.filter((q) =>
-        this.satisfactionCategoryIds.includes(q.categoryid?.toString())
-      ).length;
+      if (this.templateForm.templateType === 1) {
+        return this.questionList.filter((q) =>
+          this.questionnaireCategorys.includes(q.categoryid)
+        ).length;
+      } else if (this.templateForm.templateType === 2) {
+        return this.questionList.filter((q) =>
+          this.voiceCategories.includes(q.scriptAssortid)
+        ).length;
+      }
+      return 0;
     },
 
     // 绛涢�夊悗鐨勯鐩垪琛�
@@ -676,15 +862,21 @@
       let filtered = this.questionList;
 
       // 绛涢�夋弧鎰忓害棰樼洰
-      filtered = filtered.filter((q) =>
-        this.satisfactionCategoryIds.includes(q.categoryid?.toString())
-      );
+      if (this.templateForm.templateType === 1) {
+        filtered = filtered.filter((q) =>
+          this.questionnaireCategorys.includes(q.categoryid)
+        );
+      } else if (this.templateForm.templateType === 2) {
+        filtered = filtered.filter((q) =>
+          this.voiceCategories.includes(q.scriptAssortid)
+        );
+      }
 
       // 搴旂敤鎼滅储鏉′欢
       if (this.queryParams.scriptTopic) {
         const keyword = this.queryParams.scriptTopic.toLowerCase();
         filtered = filtered.filter(
-          (q) => q.scriptTopic && q.scriptTopic.toLowerCase().includes(keyword)
+          (q) => q.scriptTopic && q.criptTopic.toLowerCase().includes(keyword)
         );
       }
 
@@ -700,6 +892,16 @@
     },
   },
   created() {
+    if (store.getters.satisfactionCategories) {
+      this.questionnaireCategorys =
+        store.getters.satisfactionCategories.questionnaireCategorys.map(
+          (item) => item.categoryid
+        );
+      this.voiceCategories =
+        store.getters.satisfactionCategories.voiceCategories.map(
+          (item) => item.categoryid
+        );
+    }
     this.getDeptOptions();
     this.loadAllTemplates();
   },
@@ -830,7 +1032,7 @@
             questionCount: 0,
           };
         }
-// 鍔犺浇妯℃澘璇︽儏鏁版嵁
+        // 鍔犺浇妯℃澘璇︽儏鏁版嵁
         this.templateLoading = true;
         this.loading = true;
         this.questionList = [];
@@ -998,7 +1200,9 @@
     /** 閰嶇疆鍙樻洿澶勭悊 */
     handleConfigChange(question) {
       this.$nextTick(() => {
-        const index = this.questionList.findIndex((q) => q.id === question.id);
+        const index = this.filteredQuestionList.findIndex((q) => q.id === question.id);
+        console.log(index,'index');
+
         if (index !== -1) {
           const formRef = this.$refs.configForm && this.$refs.configForm[index];
           if (formRef) {
@@ -1045,11 +1249,50 @@
       const changedItems = this.questionList.filter((q) => q.hasChanges);
       this.changedCount = changedItems.length;
       this.hasChanges = changedItems.length > 0;
+
+      // 寮哄埗鏇存柊瑙嗗浘
+      this.$forceUpdate();
+    },
+
+    /** 妫�鏌ラ鐩槸鍚︽湁寮傚父閫夐」 */
+    checkHasAbnormalOptions(question) {
+      if (this.templateForm.templateType === 1) {
+        return (question.svyLibTemplateTargetoptions || []).some(
+          (opt) => opt.isabnormal === 1
+        );
+      } else if (this.templateForm.templateType === 2) {
+        return (question.ivrLibaScriptTargetoptionList || []).some(
+          (opt) => opt.isabnormal === 1
+        );
+      }
+      return false;
     },
 
     /** 淇濆瓨鍗曚釜棰樼洰閰嶇疆 */
-    async saveSingleConfig(question) {
-      if (!question.hasChanges) return;
+    async saveSingleConfig(question, skipAbnormalCheck = false) {
+      // 妫�鏌ユ槸鍚︽湁鍙樻洿
+      if (!question.hasChanges && !skipAbnormalCheck) {
+        this.$message.info("褰撳墠閰嶇疆鏃犲彉鍖�");
+        return;
+      }
+
+      // 妫�鏌ユ槸鍚︽湁寮傚父閫夐」
+      if (!skipAbnormalCheck && !this.checkHasAbnormalOptions(question)) {
+        this.$confirm(
+          "璇ラ鐩病鏈夎缃紓甯搁�夐」锛屽繀椤诲厛閰嶇疆寮傚父閫夐」鎵嶈兘淇濆瓨銆傛槸鍚︾珛鍗抽厤缃紵",
+          "鎻愮ず",
+          {
+            confirmButtonText: "鍘婚厤缃�",
+            cancelButtonText: "鍙栨秷",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            this.openOptionDialog(question);
+          })
+          .catch(() => {});
+        return;
+      }
 
       const index = this.questionList.findIndex((q) => q.id === question.id);
       if (index === -1) return;
@@ -1057,8 +1300,10 @@
       const formRef = this.$refs.configForm && this.$refs.configForm[index];
       if (!formRef) return;
 
-      const valid = await formRef.validate();
-      if (!valid) {
+      // 楠岃瘉琛ㄥ崟
+      try {
+        await formRef.validate();
+      } catch (error) {
         this.$message.warning("璇峰厛瀹屾垚蹇呭~椤�");
         return;
       }
@@ -1119,6 +1364,18 @@
           reportDeptName: reportDeptNames.join(","),
         };
 
+        // 濡傛灉闇�瑕侊紝涔熸洿鏂伴�夐」鏁版嵁
+        if (question.hasChanges && this.templateForm.templateType === 1) {
+          questions[questionIndex].svyLibTemplateTargetoptions =
+            question.svyLibTemplateTargetoptions || [];
+        } else if (
+          question.hasChanges &&
+          this.templateForm.templateType === 2
+        ) {
+          questions[questionIndex].ivrLibaScriptTargetoptionList =
+            question.ivrLibaScriptTargetoptionList || [];
+        }
+
         // 鏇存柊妯℃澘
         updatedTemplateDetail[questionsField] = questions;
 
@@ -1156,7 +1413,6 @@
     },
 
     /** 澶勭悊淇濆瓨鎴愬姛 */
-    /** 澶勭悊淇濆瓨鎴愬姛 */
     handleSaveSuccess(question) {
       // 鍚屾椂鏇存柊棰樼洰椤跺眰瀛楁
       const responsibilityDeptNames = this.getDeptNames(
@@ -1192,7 +1448,6 @@
       }, 5000);
     },
 
-    /** 閲嶇疆鍗曚釜棰樼洰閰嶇疆 */
     /** 閲嶇疆鍗曚釜棰樼洰閰嶇疆 */
     resetSingleConfig(question) {
       this.$confirm("纭畾瑕侀噸缃綋鍓嶉鐩殑閰嶇疆鍚楋紵", "鎻愮ず", {
@@ -1231,6 +1486,36 @@
     async handleBatchSave() {
       if (!this.hasChanges || this.batchSaving) return;
 
+      // 鑾峰彇鏈夊彉鏇寸殑棰樼洰
+      const changedQuestions = this.questionList.filter((q) => q.hasChanges);
+      if (changedQuestions.length === 0) {
+        this.$message.info("娌℃湁闇�瑕佷繚瀛樼殑閰嶇疆鍙樻洿");
+        return;
+      }
+
+      // 妫�鏌ユ槸鍚︽湁棰樼洰缂哄皯寮傚父閫夐」
+      const questionsWithoutAbnormal = changedQuestions.filter(
+        (q) => !this.checkHasAbnormalOptions(q)
+      );
+
+      if (questionsWithoutAbnormal.length > 0) {
+        this.$confirm(
+          `鏈� ${questionsWithoutAbnormal.length} 涓鐩病鏈夎缃紓甯搁�夐」锛屽繀椤婚厤缃紓甯搁�夐」鍚庢墠鑳戒繚瀛樸�傛槸鍚﹀厛鍘婚厤缃紵`,
+          "鎻愮ず",
+          {
+            confirmButtonText: "鍘婚厤缃�",
+            cancelButtonText: "鍙栨秷",
+            type: "warning",
+          }
+        )
+          .then(() => {
+            // 鎵撳紑绗竴涓病鏈夊紓甯搁�夐」鐨勯鐩殑閰嶇疆瀵硅瘽妗�
+            this.openOptionDialog(questionsWithoutAbnormal[0]);
+          })
+          .catch(() => {});
+        return;
+      }
+
       this.$confirm("纭畾瑕佷繚瀛樻墍鏈変慨鏀硅繃鐨勯厤缃悧锛�", "鎵归噺淇濆瓨", {
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
@@ -1239,24 +1524,20 @@
         .then(async () => {
           this.batchSaving = true;
 
-          const changedQuestions = this.questionList.filter(
-            (q) => q.hasChanges
-          );
           const results = [];
-
           for (const question of changedQuestions) {
             try {
-              await this.saveSingleConfig(question);
+              // 璺宠繃寮傚父妫�鏌ワ紝鍥犱负鍦ㄤ笂闈㈠凡缁忔鏌ヨ繃浜�
+              await this.saveSingleConfig(question, true);
               results.push({
                 id: question.id,
-                success:
-                  !question.hasChanges &&
-                  question.saveStatus?.type === "success",
+                success: !question.hasChanges,
               });
             } catch (error) {
               results.push({
                 id: question.id,
                 success: false,
+                error: error.message,
               });
             }
           }
@@ -1273,6 +1554,11 @@
             this.$message.warning(
               `鎴愬姛淇濆瓨 ${successCount} 涓紝澶辫触 ${failCount} 涓猔
             );
+            // 鍙互鏄剧ず鍏蜂綋鍝簺澶辫触浜�
+            const failedQuestions = results
+              .filter((r) => !r.success)
+              .map((r) => r.id);
+            console.error("淇濆瓨澶辫触鐨勯鐩甀D:", failedQuestions);
           }
         })
         .catch(() => {
@@ -1285,6 +1571,199 @@
       this.currentPreview = { ...question };
       this.previewAnswer = "";
       this.previewVisible = true;
+    },
+
+    /** 淇敼閫夐」绠$悊瀵硅瘽妗嗙殑鎵撳紑鏂规硶锛屼繚瀛樺師濮嬮�夐」 */
+    openOptionDialog(question) {
+      this.editingQuestion = question;
+
+      // 淇濆瓨鍘熷閫夐」鐨勫揩鐓�
+      if (this.templateForm.templateType === 1) {
+        this.editingQuestion.originalOptions = JSON.parse(
+          JSON.stringify(question.svyLibTemplateTargetoptions || [])
+        );
+      } else if (this.templateForm.templateType === 2) {
+        this.editingQuestion.originalOptions = JSON.parse(
+          JSON.stringify(question.ivrLibaScriptTargetoptionList || [])
+        );
+      }
+
+      // 澶嶅埗閫夐」鏁版嵁
+      if (this.templateForm.templateType === 1) {
+        this.currentOptions = JSON.parse(
+          JSON.stringify(question.svyLibTemplateTargetoptions || [])
+        ).map((opt, index) => ({
+          ...opt,
+          id: opt.id || `temp_${Date.now()}_${index}`,
+          targetvalue: opt.optioncontent || "",
+          isabnormal: opt.isabnormal || 0,
+        }));
+      } else if (this.templateForm.templateType === 2) {
+        this.currentOptions = JSON.parse(
+          JSON.stringify(question.ivrLibaScriptTargetoptionList || [])
+        ).map((opt, index) => ({
+          ...opt,
+          id: opt.id || `temp_${Date.now()}_${index}`,
+          targetvalue: opt.targetvalue || "",
+          isabnormal: opt.isabnormal || 0,
+        }));
+      }
+
+      this.optionDialogVisible = true;
+    },
+
+    /** 娣诲姞鏂伴�夐」 */
+    addNewOption() {
+      this.currentOptions.push({
+        id: `temp_${Date.now()}_${this.currentOptions.length}`,
+        targetvalue: "",
+        isabnormal: 0,
+        isNew: true,
+      });
+    },
+
+    /** 鍒犻櫎閫夐」 */
+    removeOption(index) {
+      this.$confirm("纭畾瑕佸垹闄よ繖涓�夐」鍚楋紵", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          this.currentOptions.splice(index, 1);
+        })
+        .catch(() => {});
+    },
+
+    /** 淇濆瓨閫夐」閰嶇疆 */
+    async saveOptions() {
+      try {
+        // 楠岃瘉蹇呭~椤�
+        for (let i = 0; i < this.currentOptions.length; i++) {
+          const option = this.currentOptions[i];
+          if (!option.targetvalue || option.targetvalue.trim() === "") {
+            this.$message.warning(`绗� ${i + 1} 涓�夐」鍐呭涓嶈兘涓虹┖`);
+            return;
+          }
+        }
+
+        // 妫�鏌ユ槸鍚︽湁寮傚父閫夐」
+        const hasAbnormal = this.currentOptions.some(
+          (opt) => opt.isabnormal === 1
+        );
+
+        if (!hasAbnormal) {
+          this.$message.warning("璇疯嚦灏戣缃竴涓紓甯搁�夐」锛坕sabnormal=1锛�");
+          return;
+        }
+
+        // 鍒ゆ柇閫夐」鏄惁鍙戠敓鍙樺寲
+        let isOptionsChanged = false;
+
+        if (this.templateForm.templateType === 1) {
+          const originalOptions =
+            this.editingQuestion.svyLibTemplateTargetoptions || [];
+          isOptionsChanged = this.checkOptionsChanged(
+            originalOptions,
+            this.currentOptions,
+            "questionnaire"
+          );
+        } else if (this.templateForm.templateType === 2) {
+          const originalOptions =
+            this.editingQuestion.ivrLibaScriptTargetoptionList || [];
+          isOptionsChanged = this.checkOptionsChanged(
+            originalOptions,
+            this.currentOptions,
+            "voice"
+          );
+        }
+
+        // 淇濆瓨閫昏緫 - 鏇存柊棰樼洰瀵硅薄鐨勯�夐」鏁版嵁
+        if (this.templateForm.templateType === 1) {
+          this.editingQuestion.svyLibTemplateTargetoptions =
+            this.currentOptions.map((opt) => ({
+              ...opt,
+              optioncontent: opt.targetvalue,
+              isabnormal: opt.isabnormal,
+              // 娓呴櫎涓存椂瀛楁
+              targetvalue: undefined,
+              isNew: undefined,
+            }));
+        } else if (this.templateForm.templateType === 2) {
+          this.editingQuestion.ivrLibaScriptTargetoptionList =
+            this.currentOptions.map((opt) => ({
+              ...opt,
+              // 娓呴櫎涓存椂瀛楁
+              isNew: undefined,
+            }));
+        }
+
+        // 濡傛灉閫夐」鏈夊彉鍖栵紝鍒欒缃鐩负鏈夊彉鏇寸姸鎬�
+        if (isOptionsChanged) {
+          this.editingQuestion.hasChanges = true;
+          this.updateChangedStatus();
+        }
+
+        this.$message.success("閫夐」閰嶇疆淇濆瓨鎴愬姛");
+        this.optionDialogVisible = false;
+      } catch (error) {
+        console.error("淇濆瓨閫夐」澶辫触:", error);
+        this.$message.error("淇濆瓨閫夐」澶辫触");
+      }
+    },
+    /** 妫�鏌ラ�夐」鏄惁鍙戠敓鍙樺寲 */
+    checkOptionsChanged(originalOptions, newOptions, templateType) {
+      // 濡傛灉鏁伴噺涓嶅悓锛屽垯涓�瀹氬彉鍖栦簡
+      if (originalOptions.length !== newOptions.length) {
+        return true;
+      }
+
+      // 姣旇緝姣忎釜閫夐」鐨勫唴瀹瑰拰寮傚父鐘舵��
+      for (let i = 0; i < originalOptions.length; i++) {
+        const original = originalOptions[i];
+        const current = newOptions[i];
+
+        if (templateType === "questionnaire") {
+          // 闂嵎妯℃澘姣旇緝
+          if (
+            original.optioncontent !== current.targetvalue ||
+            original.isabnormal !== current.isabnormal
+          ) {
+            return true;
+          }
+        } else if (templateType === "voice") {
+          // 璇煶妯℃澘姣旇緝
+          if (
+            original.targetvalue !== current.targetvalue ||
+            original.isabnormal !== current.isabnormal
+          ) {
+            return true;
+          }
+        }
+      }
+
+      return false;
+    },
+    /** 鑾峰彇寮傚父閫夐」缁熻 */
+    getAbnormalStats(question) {
+      if (this.templateForm.templateType === 1) {
+        const options = question.svyLibTemplateTargetoptions || [];
+        return {
+          total: options.length,
+          abnormal: options.filter((opt) => opt.isabnormal === 1).length,
+          warning: options.filter((opt) => opt.isabnormal === 2).length,
+          normal: options.filter((opt) => opt.isabnormal === 0).length,
+        };
+      } else if (this.templateForm.templateType === 2) {
+        const options = question.ivrLibaScriptTargetoptionList || [];
+        return {
+          total: options.length,
+          abnormal: options.filter((opt) => opt.isabnormal === 1).length,
+          warning: options.filter((opt) => opt.isabnormal === 2).length,
+          normal: options.filter((opt) => opt.isabnormal === 0).length,
+        };
+      }
+      return { total: 0, abnormal: 0, warning: 0, normal: 0 };
     },
 
     /** 鎼滅储 */
@@ -1581,7 +2060,20 @@
           }
 
           .header-right {
-            flex-shrink: 0;
+            display: flex;
+            flex-direction: column;
+            align-items: flex-end;
+            gap: 8px;
+
+            .option-status {
+              .status-tag {
+                cursor: default;
+
+                i {
+                  margin-right: 4px;
+                }
+              }
+            }
           }
         }
 
@@ -1775,7 +2267,52 @@
     }
   }
 }
+.option-config-wrapper {
+  .dialog-header {
+    margin-bottom: 20px;
+    padding-bottom: 15px;
+    border-bottom: 1px solid #ebeef5;
 
+    h4 {
+      margin: 0 0 8px 0;
+      color: #303133;
+      font-size: 16px;
+      font-weight: 600;
+    }
+
+    .dialog-subtitle {
+      margin: 0;
+      color: #606266;
+      font-size: 13px;
+      line-height: 1.4;
+    }
+  }
+
+  .option-list {
+    .option-item {
+      margin-bottom: 12px;
+      padding: 12px;
+      background: #f8f9fa;
+      border-radius: 4px;
+      border: 1px solid #ebeef5;
+
+      &:hover {
+        border-color: #dcdfe6;
+      }
+
+      .option-form {
+        .option-index {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          height: 100%;
+          color: #909399;
+          font-weight: 500;
+        }
+      }
+    }
+  }
+}
 @media (max-width: 768px) {
   .satisfaction-exception-config {
     padding: 12px;

--
Gitblit v1.9.3