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 |  546 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 283 insertions(+), 263 deletions(-)

diff --git a/src/views/Satisfaction/configurationmyd/index.vue b/src/views/Satisfaction/configurationmyd/index.vue
index b92dfd9..75038c3 100644
--- a/src/views/Satisfaction/configurationmyd/index.vue
+++ b/src/views/Satisfaction/configurationmyd/index.vue
@@ -481,89 +481,95 @@
         </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>
+    <!-- 閫夐」閰嶇疆瀵硅瘽妗� -->
+    <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 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>
+          <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="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="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-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
+          <!-- <el-button
         type="primary"
         icon="el-icon-plus"
         @click="addNewOption"
@@ -573,16 +579,16 @@
       >
         娣诲姞閫夐」
       </el-button> -->
-    </div>
-  </div>
+        </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>
+      <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="棰樼洰棰勮"
@@ -848,30 +854,12 @@
           this.voiceCategories.includes(q.scriptAssortid)
         ).length;
       }
+      return 0;
     },
-    // 妫�鏌ラ鐩槸鍚︽湁寮傚父閫夐」
-    hasAbnormalOption(question) {
-      return (question) => {
-        if (!question) return false;
 
-        // 闂嵎妯℃澘
-        if (this.templateForm.templateType === 1) {
-          const options = question.svyLibTemplateTargetoptions || [];
-          return options.some((opt) => opt.isabnormal === 1);
-        }
-        // 璇煶妯℃澘
-        else if (this.templateForm.templateType === 2) {
-          const options = question.ivrLibaScriptTargetoptionList || [];
-          return options.some((opt) => opt.isabnormal === 1);
-        }
-
-        return false;
-      };
-    },
     // 绛涢�夊悗鐨勯鐩垪琛�
     filteredQuestionList() {
       let filtered = this.questionList;
-      console.log(this.questionnaireCategorys);
 
       // 绛涢�夋弧鎰忓害棰樼洰
       if (this.templateForm.templateType === 1) {
@@ -888,7 +876,7 @@
       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)
         );
       }
 
@@ -1212,9 +1200,9 @@
     /** 閰嶇疆鍙樻洿澶勭悊 */
     handleConfigChange(question) {
       this.$nextTick(() => {
-        const index = this.filteredQuestionList.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) {
@@ -1261,24 +1249,61 @@
       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;
+      }
 
-      const index = this.filteredQuestionList.findIndex(
-        (q) => q.id === question.id
-      );
-      console.log(index, "filteredQuestionList");
+      // 妫�鏌ユ槸鍚︽湁寮傚父閫夐」
+      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;
 
       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;
       }
@@ -1339,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;
 
@@ -1375,7 +1412,6 @@
       }
     },
 
-    /** 澶勭悊淇濆瓨鎴愬姛 */
     /** 澶勭悊淇濆瓨鎴愬姛 */
     handleSaveSuccess(question) {
       // 鍚屾椂鏇存柊棰樼洰椤跺眰瀛楁
@@ -1450,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: "鍙栨秷",
@@ -1458,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,
               });
             }
           }
@@ -1492,6 +1554,11 @@
             this.$message.warning(
               `鎴愬姛淇濆瓨 ${successCount} 涓紝澶辫触 ${failCount} 涓猔
             );
+            // 鍙互鏄剧ず鍏蜂綋鍝簺澶辫触浜�
+            const failedQuestions = results
+              .filter((r) => !r.success)
+              .map((r) => r.id);
+            console.error("淇濆瓨澶辫触鐨勯鐩甀D:", failedQuestions);
           }
         })
         .catch(() => {
@@ -1505,39 +1572,38 @@
       this.previewAnswer = "";
       this.previewVisible = true;
     },
-    /** 妫�鏌ラ鐩槸鍚︽湁寮傚父閫夐」 */
-    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;
-    },
 
-    /** 鎵撳紑閫夐」绠$悊瀵硅瘽妗� */
+    /** 淇敼閫夐」绠$悊瀵硅瘽妗嗙殑鎵撳紑鏂规硶锛屼繚瀛樺師濮嬮�夐」 */
     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) => ({
+        ).map((opt, index) => ({
           ...opt,
-          id: opt.id,
+          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) => ({
+        ).map((opt, index) => ({
           ...opt,
+          id: opt.id || `temp_${Date.now()}_${index}`,
           targetvalue: opt.targetvalue || "",
           isabnormal: opt.isabnormal || 0,
         }));
@@ -1549,7 +1615,7 @@
     /** 娣诲姞鏂伴�夐」 */
     addNewOption() {
       this.currentOptions.push({
-        id: Date.now(), // 涓存椂ID
+        id: `temp_${Date.now()}_${this.currentOptions.length}`,
         targetvalue: "",
         isabnormal: 0,
         isNew: true,
@@ -1558,16 +1624,25 @@
 
     /** 鍒犻櫎閫夐」 */
     removeOption(index) {
-      this.currentOptions.splice(index, 1);
+      this.$confirm("纭畾瑕佸垹闄よ繖涓�夐」鍚楋紵", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          this.currentOptions.splice(index, 1);
+        })
+        .catch(() => {});
     },
 
     /** 淇濆瓨閫夐」閰嶇疆 */
     async saveOptions() {
       try {
         // 楠岃瘉蹇呭~椤�
-        for (const option of this.currentOptions) {
+        for (let i = 0; i < this.currentOptions.length; i++) {
+          const option = this.currentOptions[i];
           if (!option.targetvalue || option.targetvalue.trim() === "") {
-            this.$message.warning("璇峰~鍐欐墍鏈夐�夐」鍐呭");
+            this.$message.warning(`绗� ${i + 1} 涓�夐」鍐呭涓嶈兘涓虹┖`);
             return;
           }
         }
@@ -1582,6 +1657,27 @@
           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 =
@@ -1589,14 +1685,24 @@
               ...opt,
               optioncontent: opt.targetvalue,
               isabnormal: opt.isabnormal,
+              // 娓呴櫎涓存椂瀛楁
+              targetvalue: undefined,
+              isNew: undefined,
             }));
         } else if (this.templateForm.templateType === 2) {
           this.editingQuestion.ivrLibaScriptTargetoptionList =
-            this.currentOptions;
+            this.currentOptions.map((opt) => ({
+              ...opt,
+              // 娓呴櫎涓存椂瀛楁
+              isNew: undefined,
+            }));
         }
 
-        // 瑙﹀彂閰嶇疆鍙樻洿妫�鏌�
-        this.handleConfigChange(this.editingQuestion);
+        // 濡傛灉閫夐」鏈夊彉鍖栵紝鍒欒缃鐩负鏈夊彉鏇寸姸鎬�
+        if (isOptionsChanged) {
+          this.editingQuestion.hasChanges = true;
+          this.updateChangedStatus();
+        }
 
         this.$message.success("閫夐」閰嶇疆淇濆瓨鎴愬姛");
         this.optionDialogVisible = false;
@@ -1605,126 +1711,39 @@
         this.$message.error("淇濆瓨閫夐」澶辫触");
       }
     },
-
-    /** 淇敼淇濆瓨鍗曚釜棰樼洰閰嶇疆鏂规硶锛屾坊鍔犲紓甯搁�夐」妫�鏌� */
-    async saveSingleConfig(question) {
-      // 妫�鏌ユ槸鍚︽湁寮傚父閫夐」
-      if (!this.checkHasAbnormalOptions(question)) {
-        this.$confirm("璇ラ鐩病鏈夎缃紓甯搁�夐」锛屾槸鍚﹀厛閰嶇疆閫夐」锛�", "鎻愮ず", {
-          confirmButtonText: "鍘婚厤缃�",
-          cancelButtonText: "鍙栨秷",
-          type: "warning",
-        })
-          .then(() => {
-            this.openOptionDialog(question);
-          })
-          .catch(() => {});
-        return;
+    /** 妫�鏌ラ�夐」鏄惁鍙戠敓鍙樺寲 */
+    checkOptionsChanged(originalOptions, newOptions, templateType) {
+      // 濡傛灉鏁伴噺涓嶅悓锛屽垯涓�瀹氬彉鍖栦簡
+      if (originalOptions.length !== newOptions.length) {
+        return true;
       }
 
-      // 鍘熸湁鐨勪繚瀛橀�昏緫...
-      if (!question.hasChanges) return;
+      // 姣旇緝姣忎釜閫夐」鐨勫唴瀹瑰拰寮傚父鐘舵��
+      for (let i = 0; i < originalOptions.length; i++) {
+        const original = originalOptions[i];
+        const current = newOptions[i];
 
-      const index = this.filteredQuestionList.findIndex(
-        (q) => q.id === question.id
-      );
-
-      if (index === -1) return;
-
-      const formRef = this.$refs.configForm && this.$refs.configForm[index];
-      if (!formRef) return;
-
-      const valid = await formRef.validate();
-      if (!valid) {
-        this.$message.warning("璇峰厛瀹屾垚蹇呭~椤�");
-        return;
-      }
-
-      // 缁х画鍘熸湁鐨勪繚瀛橀�昏緫...
-      question.saving = true;
-      question.saveStatus = null;
-
-      try {
-        // ... 鍘熸湁鐨勪繚瀛橀�昏緫涓嶅彉
-      } catch (error) {
-        // ... 閿欒澶勭悊涓嶅彉
-      } finally {
-        question.saving = false;
-      }
-    },
-
-    /** 鎵归噺淇濆瓨鏃朵篃瑕佹鏌� */
-    async handleBatchSave() {
-      if (!this.hasChanges || this.batchSaving) return;
-
-      // 妫�鏌ユ墍鏈夋湁鍙樻洿鐨勯鐩槸鍚﹂兘鏈夊紓甯搁�夐」
-      const changedQuestions = this.questionList.filter((q) => q.hasChanges);
-      const questionsWithoutAbnormal = changedQuestions.filter(
-        (q) => !this.checkHasAbnormalOptions(q)
-      );
-
-      if (questionsWithoutAbnormal.length > 0) {
-        this.$confirm(
-          `鏈� ${questionsWithoutAbnormal.length} 涓鐩病鏈夎缃紓甯搁�夐」锛岃鍏堥厤缃�夐」銆傛槸鍚︾户缁紵`,
-          "鎻愮ず",
-          {
-            confirmButtonText: "缁х画",
-            cancelButtonText: "鍘婚厤缃�",
-            type: "warning",
+        if (templateType === "questionnaire") {
+          // 闂嵎妯℃澘姣旇緝
+          if (
+            original.optioncontent !== current.targetvalue ||
+            original.isabnormal !== current.isabnormal
+          ) {
+            return true;
           }
-        )
-          .then(() => {
-            // 缁х画鎵ц鎵归噺淇濆瓨
-            this.executeBatchSave(changedQuestions);
-          })
-          .catch(() => {
-            // 鍙互鍦ㄨ繖閲岃烦杞埌绗竴涓病鏈夊紓甯搁�夐」鐨勯鐩�
-            if (questionsWithoutAbnormal.length > 0) {
-              this.openOptionDialog(questionsWithoutAbnormal[0]);
-            }
-          });
-      } else {
-        this.executeBatchSave(changedQuestions);
-      }
-    },
-
-    /** 鎵ц鎵归噺淇濆瓨 */
-    async executeBatchSave(changedQuestions) {
-      this.$confirm("纭畾瑕佷繚瀛樻墍鏈変慨鏀硅繃鐨勯厤缃悧锛�", "鎵归噺淇濆瓨", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning",
-      })
-        .then(async () => {
-          this.batchSaving = true;
-
-          const results = [];
-          for (const question of changedQuestions) {
-            try {
-              // 杩欓噷璋冪敤淇敼鍚庣殑saveSingleConfig鏂规硶
-              await this.saveSingleConfig(question);
-              results.push({
-                id: question.id,
-                success:
-                  !question.hasChanges &&
-                  question.saveStatus?.type === "success",
-              });
-            } catch (error) {
-              results.push({
-                id: question.id,
-                success: false,
-              });
-            }
+        } else if (templateType === "voice") {
+          // 璇煶妯℃澘姣旇緝
+          if (
+            original.targetvalue !== current.targetvalue ||
+            original.isabnormal !== current.isabnormal
+          ) {
+            return true;
           }
+        }
+      }
 
-          this.batchSaving = false;
-          // ... 鍚庣画澶勭悊涓嶅彉
-        })
-        .catch(() => {
-          this.batchSaving = false;
-        });
+      return false;
     },
-
     /** 鑾峰彇寮傚父閫夐」缁熻 */
     getAbnormalStats(question) {
       if (this.templateForm.templateType === 1) {
@@ -1746,6 +1765,7 @@
       }
       return { total: 0, abnormal: 0, warning: 0, normal: 0 };
     },
+
     /** 鎼滅储 */
     handleQuery() {
       // 浠呯瓫閫夋樉绀猴紝涓嶉渶瑕侀噸鏂板姞杞�

--
Gitblit v1.9.3