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/dispose.vue |  570 ++++++++++++++++++++++++--------------------------------
 1 files changed, 243 insertions(+), 327 deletions(-)

diff --git a/src/views/Satisfaction/configurationmyd/dispose.vue b/src/views/Satisfaction/configurationmyd/dispose.vue
index 8a59106..4c39707 100644
--- a/src/views/Satisfaction/configurationmyd/dispose.vue
+++ b/src/views/Satisfaction/configurationmyd/dispose.vue
@@ -19,9 +19,9 @@
           label-width="120px"
           class="search-form"
         >
-          <el-form-item label="婊℃剰搴︽ā鏉�" prop="templateId">
+          <el-form-item label="婊℃剰搴︾被鍨�" prop="templateid">
             <el-select
-              v-model="queryParams.templateId"
+              v-model="queryParams.templateType"
               placeholder="璇烽�夋嫨妯℃澘"
               clearable
               style="width: 200px"
@@ -35,9 +35,9 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="璐d换绉戝" prop="deptIds">
+          <el-form-item label="璐d换绉戝" prop="todeptcode">
             <el-select
-              v-model="queryParams.deptIds"
+              v-model="queryParams.todeptcode"
               placeholder="璇烽�夋嫨璐d换绉戝"
               clearable
               filterable
@@ -47,21 +47,21 @@
             >
               <el-option
                 v-for="dept in deptList"
-                :key="dept.id"
-                :label="dept.name"
-                :value="dept.id"
+                :key="dept.deptCode"
+                :label="dept.label"
+                :value="dept.deptCode"
               />
             </el-select>
           </el-form-item>
 
-          <el-form-item label="缁熻鏃堕棿" prop="dateRange">
+          <el-form-item label="澶勭悊鏃堕棿" prop="handleTimeRange">
             <el-date-picker
-              v-model="queryParams.dateRange"
-              type="daterange"
+              v-model="queryParams.handleTimeRange"
+              type="datetimerange"
               range-separator="鑷�"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-              value-format="yyyy-MM-dd"
+              start-placeholder="寮�濮嬫椂闂�"
+              end-placeholder="缁撴潫鏃堕棿"
+              value-format="yyyy-MM-dd HH:mm:ss"
               :picker-options="pickerOptions"
               style="width: 380px"
             />
@@ -96,11 +96,7 @@
           >
             鎵归噺澶勭悊 ({{ selectedIds.length }})
           </el-button>
-          <el-button
-            type="info"
-            icon="el-icon-download"
-            @click="handleExport"
-          >
+          <el-button type="info" icon="el-icon-download" @click="handleExport">
             瀵煎嚭寮傚父鏁版嵁
           </el-button>
           <el-button
@@ -117,24 +113,26 @@
     <!-- 寮傚父缁熻姒傝 -->
     <div class="overview-section">
       <el-row :gutter="20">
-        <el-col :span="6">
+        <el-col :span="8">
           <el-card shadow="never" class="stat-card">
             <div class="stat-content">
-              <div class="stat-icon" style="background: #f0f9ff;">
-                <i class="el-icon-s-claim" style="color: #5788FE;"></i>
+              <div class="stat-icon" style="background: #f0f9ff">
+                <i class="el-icon-s-claim" style="color: #5788fe"></i>
               </div>
               <div class="stat-info">
                 <div class="stat-title">鎬诲紓甯告暟閲�</div>
-                <div class="stat-value">{{ overviewData.totalExceptionCount }}</div>
+                <div class="stat-value">
+                  {{ overviewData.totalExceptionCount }}
+                </div>
               </div>
             </div>
           </el-card>
         </el-col>
-        <el-col :span="6">
+        <el-col :span="8">
           <el-card shadow="never" class="stat-card">
             <div class="stat-content">
-              <div class="stat-icon" style="background: #f0f9ff;">
-                <i class="el-icon-s-flag" style="color: #E6A23C;"></i>
+              <div class="stat-icon" style="background: #f0f9ff">
+                <i class="el-icon-s-flag" style="color: #e6a23c"></i>
               </div>
               <div class="stat-info">
                 <div class="stat-title">寰呭鐞嗗紓甯�</div>
@@ -143,28 +141,15 @@
             </div>
           </el-card>
         </el-col>
-        <el-col :span="6">
+        <el-col :span="8">
           <el-card shadow="never" class="stat-card">
             <div class="stat-content">
-              <div class="stat-icon" style="background: #f0f9ff;">
-                <i class="el-icon-check" style="color: #67C23A;"></i>
+              <div class="stat-icon" style="background: #f0f9ff">
+                <i class="el-icon-check" style="color: #67c23a"></i>
               </div>
               <div class="stat-info">
                 <div class="stat-title">宸插鐞嗗紓甯�</div>
                 <div class="stat-value">{{ overviewData.processedCount }}</div>
-              </div>
-            </div>
-          </el-card>
-        </el-col>
-        <el-col :span="6">
-          <el-card shadow="never" class="stat-card">
-            <div class="stat-content">
-              <div class="stat-icon" style="background: #f0f9ff;">
-                <i class="el-icon-s-order" style="color: #909399;"></i>
-              </div>
-              <div class="stat-info">
-                <div class="stat-title">浠婃棩澶勭悊鏁�</div>
-                <div class="stat-value">{{ overviewData.todayProcessedCount }}</div>
               </div>
             </div>
           </el-card>
@@ -183,11 +168,7 @@
           @selection-change="handleSelectionChange"
           class="exception-table"
         >
-          <el-table-column
-            type="selection"
-            width="55"
-            align="center"
-          />
+          <el-table-column type="selection" width="55" align="center" />
 
           <el-table-column
             label="搴忓彿"
@@ -198,25 +179,19 @@
 
           <el-table-column
             label="棰樼洰鍐呭"
-            prop="questionContent"
+            prop="questiontext"
             min-width="300"
             align="center"
           >
             <template slot-scope="{ row }">
               <div class="question-content">
-                <span class="question-text">{{ row.questionContent }}</span>
+                <span class="question-text">{{ row.questiontext }}</span>
                 <div class="question-tags">
                   <el-tag
                     size="mini"
-                    :type="getQuestionTypeTag(row.questionType)"
+                    :type="getTemplateTypeTag(row.templateType)"
                   >
-                    {{ row.questionType === 1 ? '鍗曢�夐' : '澶氶�夐' }}
-                  </el-tag>
-                  <el-tag
-                    size="mini"
-                    type="info"
-                  >
-                    {{ row.templateName }}
+                    {{ row.templateType === 1 ? "璇煶妯℃澘" : "闂嵎妯℃澘" }}
                   </el-tag>
                 </div>
               </div>
@@ -225,62 +200,64 @@
 
           <el-table-column
             label="璐熻矗绉戝"
-            prop="responsibilityDepts"
+            prop="responsibleDept"
             width="180"
             align="center"
           >
             <template slot-scope="{ row }">
               <div class="dept-list">
                 <el-tag
-                  v-for="dept in row.responsibilityDepts"
-                  :key="dept.id"
+                  v-for="dept in row.responsibleDept"
+                  :key="dept.deptCode"
                   size="small"
                   type="primary"
                   class="dept-tag"
                 >
-                  {{ dept.name }}
+                  {{ dept.deptName }}
                 </el-tag>
               </div>
             </template>
           </el-table-column>
 
-          <el-table-column
-            label="濉啓鎯呭喌"
-            width="200"
-            align="center"
-          >
+          <el-table-column label="濉啓鎯呭喌" width="200" align="center">
             <template slot-scope="{ row }">
               <div class="fill-statistics">
                 <div class="stat-item">
                   <span class="stat-label">鏈夋晥濉啓锛�</span>
-                  <span class="stat-value">{{ row.validFillCount }}</span>
+                  <span class="stat-value">{{
+                    row.fillSituation.effectiveFillNum
+                  }}</span>
                 </div>
                 <div class="stat-item">
                   <span class="stat-label">寮傚父濉啓锛�</span>
-                  <span class="stat-value exception-count">{{ row.exceptionFillCount }}</span>
+                  <span class="stat-value exception-count">{{
+                    row.fillSituation.exceptionFillNum
+                  }}</span>
                 </div>
               </div>
             </template>
           </el-table-column>
 
-          <el-table-column
-            label="寮傚父浠诲姟"
-            width="280"
-            align="center"
-          >
+          <el-table-column label="寮傚父浠诲姟" width="280" align="center">
             <template slot-scope="{ row }">
               <div class="exception-tasks">
                 <div class="task-category">
                   <div class="task-title">宸插鐞�</div>
-                  <div class="task-count processed">{{ row.processedCount }}</div>
+                  <div class="task-count processed">
+                    {{ row.exceptionQuesNum.yesDeal }}
+                  </div>
                 </div>
                 <div class="task-category">
                   <div class="task-title">寰呭鐞�</div>
-                  <div class="task-count pending">{{ row.pendingCount }}</div>
+                  <div class="task-count pending">
+                    {{ row.exceptionQuesNum.noDeal }}
+                  </div>
                 </div>
                 <div class="task-category">
                   <div class="task-title">寮傚父鎬绘暟</div>
-                  <div class="task-count total">{{ row.totalExceptionCount }}</div>
+                  <div class="task-count total">
+                    {{ row.exceptionQuesNum.all }}
+                  </div>
                 </div>
               </div>
             </template>
@@ -288,14 +265,16 @@
 
           <el-table-column
             label="鏈�杩戝鐞�"
-            prop="lastProcessTime"
+            prop="handleTime"
             width="180"
             align="center"
           >
             <template slot-scope="{ row }">
-              <div v-if="row.lastProcessTime" class="last-process">
-                <div class="process-time">{{ row.lastProcessTime }}</div>
-                <div class="process-user">{{ row.lastProcessUser }}</div>
+              <div v-if="row.handleTime" class="last-process">
+                <div class="process-time">
+                  {{ formatDateTime(row.handleTime) }}
+                </div>
+                <div class="process-user">{{ row.handleBy || "绯荤粺澶勭悊" }}</div>
               </div>
               <span v-else class="no-process">鏆傛棤澶勭悊璁板綍</span>
             </template>
@@ -308,14 +287,6 @@
             fixed="right"
           >
             <template slot-scope="{ row }">
-              <!-- <el-button
-                type="primary"
-                size="small"
-                icon="el-icon-view"
-                @click="handleViewDetail(row)"
-              >
-                璇︽儏
-              </el-button> -->
               <el-button
                 type="warning"
                 size="small"
@@ -347,17 +318,23 @@
 </template>
 
 <script>
+import { tracedeallist } from "@/api/AiCentre/index";
+import { deptTreeSelect } from "@/api/system/user";
+
 export default {
-  name: 'ExceptionList',
+  name: "ExceptionList",
   data() {
     return {
       // 鏌ヨ鍙傛暟
       queryParams: {
-        templateId: '',
-        deptIds: [],
-        dateRange: [],
+        todeptcode: [], // 澶勭悊绉戝缂栧彿鏁扮粍
+        todeptname: "", // 澶勭悊绉戝鍚嶇О
+        templateType: 2, // 浠诲姟妯℃澘ID
+        handleStartTime: "", // 澶勭悊寮�濮嬫椂闂�
+        handleEndTime: "", // 澶勭悊缁撴潫鏃堕棿
+        handleTimeRange: [], // 鏃堕棿鑼冨洿锛岀敤浜庣晫闈㈠睍绀�
         pageNum: 1,
-        pageSize: 10
+        pageSize: 10,
       },
 
       // 鍔犺浇鐘舵��
@@ -368,27 +345,13 @@
 
       // 妯℃澘鍒楄〃
       templateList: [
-        { id: 1, name: '鍑洪櫌婊℃剰搴﹂棶鍗�' },
-        { id: 2, name: '浣忛櫌婊℃剰搴﹂棶鍗�' },
-        { id: 3, name: '闂ㄨ瘖婊℃剰搴﹂棶鍗�' },
-        { id: 4, name: '甯哥敤婊℃剰搴﹂棶鍗�' }
+        { id: 1, name: "璇煶婊℃剰搴�" },
+        { id: 2, name: "闂嵎婊℃剰搴�" },
+        // 浣犲彲浠ユ牴鎹疄闄呮儏鍐典粠鎺ュ彛鑾峰彇妯℃澘鍒楄〃
       ],
 
       // 绉戝鍒楄〃
-      deptList: [
-        { id: 1, name: '蹇冭绠″唴绉�' },
-        { id: 2, name: '绁炵粡鍐呯' },
-        { id: 3, name: '鏅绉�' },
-        { id: 4, name: '楠ㄧ' },
-        { id: 5, name: '濡囦骇绉�' },
-        { id: 6, name: '鍎跨' },
-        { id: 7, name: '鎬ヨ瘖绉�' },
-        { id: 8, name: '鍛煎惛鍐呯' },
-        { id: 9, name: '娑堝寲鍐呯' },
-        { id: 10, name: '鍐呭垎娉岀' },
-        { id: 11, name: '鑲惧唴绉�' },
-        { id: 12, name: '鑲跨槫绉�' }
-      ],
+      deptList: [],
 
       // 寮傚父鍒楄〃鏁版嵁
       exceptionList: [],
@@ -399,60 +362,134 @@
         totalExceptionCount: 0,
         pendingCount: 0,
         processedCount: 0,
-        todayProcessedCount: 0
+        todayProcessedCount: 0,
       },
 
       // 鏃ユ湡閫夋嫨鍣ㄩ�夐」
       pickerOptions: {
         shortcuts: [
           {
-            text: '鏈�杩戜竴鍛�',
+            text: "鏈�杩戜竴鍛�",
             onClick(picker) {
               const end = new Date();
               const start = new Date();
               start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-              picker.$emit('pick', [start, end]);
-            }
+              picker.$emit("pick", [start, end]);
+            },
           },
           {
-            text: '鏈�杩戜竴涓湀',
+            text: "鏈�杩戜竴涓湀",
             onClick(picker) {
               const end = new Date();
               const start = new Date();
               start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-              picker.$emit('pick', [start, end]);
-            }
+              picker.$emit("pick", [start, end]);
+            },
           },
           {
-            text: '鏈�杩戜笁涓湀',
+            text: "鏈�杩戜笁涓湀",
             onClick(picker) {
               const end = new Date();
               const start = new Date();
               start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-              picker.$emit('pick', [start, end]);
-            }
-          }
+              picker.$emit("pick", [start, end]);
+            },
+          },
         ],
         disabledDate(time) {
           return time.getTime() > Date.now();
-        }
-      }
+        },
+      },
     };
   },
 
   mounted() {
     this.loadData();
+    this.getDeptOptions();
   },
 
   methods: {
+    // 鏍煎紡鍖栨棩鏈熸椂闂�
+    formatDateTime(dateTime) {
+      if (!dateTime) return "";
+      const date = new Date(dateTime);
+      return (
+        date.toLocaleDateString().replace(/\//g, "-") +
+        " " +
+        date.toTimeString().split(" ")[0]
+      );
+    },
+
+    // 鑾峰彇妯℃澘绫诲瀷鏍囩鏍峰紡
+    getTemplateTypeTag(type) {
+      return type === 1 ? "primary" : "success";
+    },
+
+    // 鏋勫缓鏌ヨ鍙傛暟
+    buildQueryParams() {
+      const params = {
+        pageNum: this.queryParams.pageNum,
+        pageSize: this.queryParams.pageSize,
+      };
+
+      // 澶勭悊绉戝缂栧彿
+      if (
+        this.queryParams.todeptcode &&
+        this.queryParams.todeptcode.length > 0
+      ) {
+        // 鎺ュ彛鍙兘闇�瑕佸瓧绗︿覆鏍煎紡鐨勭瀹ょ紪鍙凤紝鏍规嵁瀹為檯鎯呭喌璋冩暣
+        params.todeptcode = this.queryParams.todeptcode.join(",");
+      }
+
+      // 妯℃澘ID
+      if (this.queryParams.templateType) {
+        params.templateType = this.queryParams.templateType;
+      }
+
+      // 澶勭悊鏃堕棿鑼冨洿
+      if (
+        this.queryParams.handleTimeRange &&
+        this.queryParams.handleTimeRange.length === 2
+      ) {
+        params.handleStartTime = this.queryParams.handleTimeRange[0];
+        params.handleEndTime = this.queryParams.handleTimeRange[1];
+      }
+
+      return params;
+    },
+    /** 鏌ヨ绉戝鍒楄〃 */
+    getDeptOptions() {
+      deptTreeSelect()
+        .then((res) => {
+          if (res.code == 200) {
+            this.deptList = this.flattenArray(res.data) || [];
+          }
+        })
+        .catch((error) => {
+          console.error("鑾峰彇绉戝鍒楄〃澶辫触:", error);
+          this.$message.error("鑾峰彇绉戝鍒楄〃澶辫触");
+        });
+    },
+    flattenArray(multiArray) {
+      let result = [];
+
+      function flatten(element) {
+        if (element.children && element.children.length > 0) {
+          element.children.forEach((child) => flatten(child));
+        } else {
+          let item = JSON.parse(JSON.stringify(element));
+          result.push(item);
+        }
+      }
+
+      multiArray.forEach((element) => flatten(element));
+      return result;
+    },
     // 鍔犺浇鏁版嵁
     async loadData() {
       this.loading = true;
       try {
-        await Promise.all([
-          this.loadExceptionList(),
-          this.loadOverviewData()
-        ]);
+        await Promise.all([this.loadExceptionList(), this.loadOverviewData()]);
       } finally {
         this.loading = false;
       }
@@ -460,185 +497,70 @@
 
     // 鍔犺浇寮傚父鍒楄〃
     async loadExceptionList() {
-      return new Promise((resolve) => {
-        setTimeout(() => {
-          // Mock 鏁版嵁
-          this.exceptionList = [
-            {
-              id: 1,
-              questionId: 101,
-              questionContent: '鎮ㄥ鍖绘姢浜哄憳鐨勬湇鍔℃�佸害鏄惁婊℃剰锛�',
-              questionType: 1, // 1: 鍗曢�夐, 2: 澶氶�夐
-              templateName: '鍑洪櫌婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 1, name: '蹇冭绠″唴绉�' },
-                { id: 2, name: '绁炵粡鍐呯' }
-              ],
-              validFillCount: 145,
-              exceptionFillCount: 8,
-              processedCount: 5,
-              pendingCount: 3,
-              totalExceptionCount: 8,
-              lastProcessTime: '2024-01-15 10:30:25',
-              lastProcessUser: '寮犲尰鐢�'
-            },
-            {
-              id: 2,
-              questionId: 102,
-              questionContent: '鎮ㄥ鍖荤敓鐨勮瘖鐤楁按骞冲拰鎶�鏈兘鍔涜瘎浠峰浣曪紵',
-              questionType: 1,
-              templateName: '浣忛櫌婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 3, name: '鏅绉�' },
-                { id: 4, name: '楠ㄧ' }
-              ],
-              validFillCount: 120,
-              exceptionFillCount: 12,
-              processedCount: 8,
-              pendingCount: 4,
-              totalExceptionCount: 12,
-              lastProcessTime: '2024-01-14 16:20:10',
-              lastProcessUser: '鏉庢姢澹暱'
-            },
-            {
-              id: 3,
-              questionId: 103,
-              questionContent: '鎮ㄥ鍖婚櫌鐨勭幆澧冨拰鍗敓鐘跺喌鏄惁婊℃剰锛�',
-              questionType: 1,
-              templateName: '闂ㄨ瘖婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 5, name: '濡囦骇绉�' },
-                { id: 6, name: '鍎跨' },
-                { id: 7, name: '鎬ヨ瘖绉�' }
-              ],
-              validFillCount: 180,
-              exceptionFillCount: 15,
-              processedCount: 10,
-              pendingCount: 5,
-              totalExceptionCount: 15,
-              lastProcessTime: '2024-01-13 09:15:45',
-              lastProcessUser: '鐜嬩富浠�'
-            },
-            {
-              id: 4,
-              questionId: 104,
-              questionContent: '鎮ㄨ涓哄尰鎶や汉鍛樹笌鎮ㄧ殑娌熼�氭槸鍚﹀厖鍒嗭紵',
-              questionType: 1,
-              templateName: '甯哥敤婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 8, name: '鍛煎惛鍐呯' },
-                { id: 9, name: '娑堝寲鍐呯' }
-              ],
-              validFillCount: 95,
-              exceptionFillCount: 6,
-              processedCount: 4,
-              pendingCount: 2,
-              totalExceptionCount: 6,
-              lastProcessTime: '2024-01-12 14:40:30',
-              lastProcessUser: '璧靛尰鐢�'
-            },
-            {
-              id: 5,
-              questionId: 105,
-              questionContent: '鎮ㄥ绛夊緟灏辫瘖鍜屾不鐤楃殑鏃堕棿鏄惁婊℃剰锛�',
-              questionType: 1,
-              templateName: '浣忛櫌婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 10, name: '鍐呭垎娉岀' },
-                { id: 11, name: '鑲惧唴绉�' }
-              ],
-              validFillCount: 200,
-              exceptionFillCount: 25,
-              processedCount: 15,
-              pendingCount: 10,
-              totalExceptionCount: 25,
-              lastProcessTime: '2024-01-11 11:25:15',
-              lastProcessUser: '瀛欐姢澹�'
-            },
-            {
-              id: 6,
-              questionId: 106,
-              questionContent: '鎮ㄥ鍖婚櫌鏀惰垂鐨勯�忔槑搴﹀拰鍚堢悊鎬ц瘎浠峰浣曪紵',
-              questionType: 1,
-              templateName: '闂ㄨ瘖婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 12, name: '鑲跨槫绉�' }
-              ],
-              validFillCount: 160,
-              exceptionFillCount: 18,
-              processedCount: 12,
-              pendingCount: 6,
-              totalExceptionCount: 18,
-              lastProcessTime: '2024-01-10 15:50:20',
-              lastProcessUser: '鍛ㄥ尰鐢�'
-            },
-            {
-              id: 7,
-              questionId: 107,
-              questionContent: '鎮ㄤ細鍚戜翰鍙嬫帹鑽愭垜浠尰闄㈠悧锛�',
-              questionType: 1,
-              templateName: '鍑洪櫌婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 1, name: '蹇冭绠″唴绉�' },
-                { id: 8, name: '鍛煎惛鍐呯' }
-              ],
-              validFillCount: 110,
-              exceptionFillCount: 7,
-              processedCount: 5,
-              pendingCount: 2,
-              totalExceptionCount: 7,
-              lastProcessTime: '2024-01-09 10:15:40',
-              lastProcessUser: '鍚翠富浠�'
-            },
-            {
-              id: 8,
-              questionId: 108,
-              questionContent: '鎮ㄥ浠ヤ笅鍝簺鏂归潰姣旇緝婊℃剰锛堝閫夛級锛�',
-              questionType: 2,
-              templateName: '甯哥敤婊℃剰搴﹂棶鍗�',
-              responsibilityDepts: [
-                { id: 2, name: '绁炵粡鍐呯' },
-                { id: 3, name: '鏅绉�' },
-                { id: 5, name: '濡囦骇绉�' }
-              ],
-              validFillCount: 135,
-              exceptionFillCount: 9,
-              processedCount: 6,
-              pendingCount: 3,
-              totalExceptionCount: 9,
-              lastProcessTime: '2024-01-08 13:30:55',
-              lastProcessUser: '閮戝尰鐢�'
-            }
-          ];
-          this.total = this.exceptionList.length;
-          resolve();
-        }, 500);
-      });
+      try {
+        const params = this.buildQueryParams();
+        const response = await tracedeallist(params);
+
+        if (response.code == 200) {
+          this.exceptionList = response.rows.detailTraceDealDTOList || [];
+          this.overviewData.totalExceptionCount = response.rows.totalException;
+          this.overviewData.pendingCount = response.rows.noDealException;
+          this.overviewData.processedCount = response.rows.yesDealException;
+          this.total = response.total || 0;
+        } else {
+          this.exceptionList = [];
+          this.total = 0;
+        }
+      } catch (error) {
+        console.error("鍔犺浇寮傚父鍒楄〃澶辫触:", error);
+        this.$message.error("鍔犺浇寮傚父鍒楄〃澶辫触锛岃绋嶅悗閲嶈瘯");
+        this.exceptionList = [];
+        this.total = 0;
+      }
     },
 
     // 鍔犺浇姒傝鏁版嵁
     async loadOverviewData() {
-      return new Promise((resolve) => {
-        setTimeout(() => {
-          // 璁$畻缁熻鏁版嵁
-          const totalExceptionCount = this.exceptionList.reduce((sum, item) => sum + item.totalExceptionCount, 0);
-          const pendingCount = this.exceptionList.reduce((sum, item) => sum + item.pendingCount, 0);
-          const processedCount = this.exceptionList.reduce((sum, item) => sum + item.processedCount, 0);
+      try {
+        // 浠庢帴鍙f暟鎹绠楃粺璁℃暟鎹�
+        const totalExceptionCount = this.exceptionList.reduce(
+          (sum, item) => sum + (item.exceptionQuesNum?.all || 0),
+          0
+        );
+        const pendingCount = this.exceptionList.reduce(
+          (sum, item) => sum + (item.exceptionQuesNum?.noDeal || 0),
+          0
+        );
+        const processedCount = this.exceptionList.reduce(
+          (sum, item) => sum + (item.exceptionQuesNum?.yesDeal || 0),
+          0
+        );
 
-          this.overviewData = {
-            totalExceptionCount,
-            pendingCount,
-            processedCount,
-            todayProcessedCount: 8 // 浠婃棩澶勭悊鏁� mock
-          };
-          resolve();
-        }, 300);
-      });
-    },
+        // 璁$畻浠婃棩澶勭悊鏁帮紙杩欓噷鍙互鏍规嵁瀹為檯闇�姹傝皟鏁撮�昏緫锛�
+        const today = new Date().toISOString().split("T")[0];
+        const todayProcessedCount = this.exceptionList.filter((item) => {
+          if (!item.handleTime) return false;
+          const handleDate = new Date(item.handleTime)
+            .toISOString()
+            .split("T")[0];
+          return handleDate === today;
+        }).length;
 
-    // 鑾峰彇棰樼洰绫诲瀷鏍囩鏍峰紡
-    getQuestionTypeTag(type) {
-      return type === 1 ? 'primary' : 'success';
+        this.overviewData = {
+          totalExceptionCount,
+          pendingCount,
+          processedCount,
+          todayProcessedCount,
+        };
+      } catch (error) {
+        console.error("鍔犺浇姒傝鏁版嵁澶辫触:", error);
+        this.overviewData = {
+          totalExceptionCount: 0,
+          pendingCount: 0,
+          processedCount: 0,
+          todayProcessedCount: 0,
+        };
+      }
     },
 
     // 澶勭悊鏌ヨ
@@ -650,60 +572,53 @@
     // 澶勭悊閲嶇疆
     handleReset() {
       this.$refs.queryForm.resetFields();
-      this.queryParams.dateRange = [];
+      this.queryParams.handleTimeRange = [];
       this.queryParams.pageNum = 1;
+      this.queryParams.todeptcode = []; // 閲嶇疆绉戝閫夋嫨
       this.loadData();
     },
 
     // 澶勭悊鎵归噺澶勭悊
     handleBatchProcess() {
       if (this.selectedIds.length === 0) {
-        this.$message.warning('璇峰厛閫夋嫨瑕佸鐞嗙殑寮傚父棰樼洰');
+        this.$message.warning("璇峰厛閫夋嫨瑕佸鐞嗙殑寮傚父棰樼洰");
         return;
       }
 
       // 璺宠浆鍒版壒閲忓鐞嗛〉闈�
       this.$router.push({
-        path: '/satisfaction/exception/batch-process',
+        path: "/Intelligentcenter/batch",
         query: {
-          questionIds: this.selectedIds.join(',')
-        }
+          questionIds: this.selectedIds.join(","),
+          type: this.queryParams.templateType,
+        },
       });
     },
 
     // 澶勭悊瀵煎嚭
     handleExport() {
-      this.$message.success('瀵煎嚭鍔熻兘寮�鍙戜腑...');
+      this.$message.success("瀵煎嚭鍔熻兘寮�鍙戜腑...");
     },
 
     // 鍒锋柊鏁版嵁
     refreshData() {
       this.loadData();
-      this.$message.success('鏁版嵁宸插埛鏂�');
+      this.$message.success("鏁版嵁宸插埛鏂�");
     },
 
     // 澶勭悊閫夋嫨鍙樺寲
     handleSelectionChange(selection) {
-      this.selectedIds = selection.map(item => item.questionId);
-    },
-
-    // 澶勭悊鏌ョ湅璇︽儏
-    handleViewDetail(row) {
-      this.$router.push({
-        path: '/satisfaction/exception/detail',
-        query: {
-          id: row.questionId
-        }
-      });
+      this.selectedIds = selection.map((item) => item.scriptid);
     },
 
     // 澶勭悊鍗曚釜棰樼洰鎵归噺澶勭悊
     handleBatchQuestion(row) {
       this.$router.push({
-        path: '/Intelligentcenter/batch',
+        path: "/Intelligentcenter/batch",
         query: {
-          questionId: row.questionId
-        }
+          questionId: row.scriptid,
+          type: this.queryParams.templateType,
+        },
       });
     },
 
@@ -718,8 +633,8 @@
     handlePageChange(page) {
       this.queryParams.pageNum = page;
       this.loadExceptionList();
-    }
-  }
+    },
+  },
 };
 </script>
 
@@ -732,7 +647,7 @@
   .page-header {
     margin-bottom: 20px;
     padding: 20px;
-    background: linear-gradient(135deg, #5788FE 0%, #66b1ff 100%);
+    background: linear-gradient(135deg, #5788fe 0%, #66b1ff 100%);
     border-radius: 8px;
     color: white;
 
@@ -838,12 +753,13 @@
           color: #303133;
           margin-bottom: 8px;
           line-height: 1.5;
+          text-align: left;
         }
 
         .question-tags {
           display: flex;
           gap: 5px;
-          justify-content: center;
+          justify-content: flex-start;
         }
       }
 
@@ -915,7 +831,7 @@
             }
 
             &.total {
-              color: #5788FE;
+              color: #5788fe;
             }
           }
         }
@@ -930,7 +846,7 @@
 
         .process-user {
           font-size: 13px;
-          color: #5788FE;
+          color: #5788fe;
           font-weight: 500;
         }
       }

--
Gitblit v1.9.3