From fbb61549bf96e9e0910b676a5524b0760d29c4be Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 07 四月 2026 15:16:54 +0800
Subject: [PATCH] 测试完成

---
 src/views/Satisfaction/configurationmyd/dispose.vue |  980 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 980 insertions(+), 0 deletions(-)

diff --git a/src/views/Satisfaction/configurationmyd/dispose.vue b/src/views/Satisfaction/configurationmyd/dispose.vue
new file mode 100644
index 0000000..8a59106
--- /dev/null
+++ b/src/views/Satisfaction/configurationmyd/dispose.vue
@@ -0,0 +1,980 @@
+<template>
+  <div class="exception-list">
+    <!-- 椤甸潰鏍囬 -->
+    <div class="page-header">
+      <div class="header-content">
+        <h2 class="page-title">婊℃剰搴﹀紓甯稿鐞�</h2>
+        <p class="page-description">鐩戞帶鍜屽鐞嗘弧鎰忓害闂嵎涓殑寮傚父鍙嶉</p>
+      </div>
+    </div>
+
+    <!-- 鏌ヨ鏉′欢鍖哄煙 -->
+    <div class="search-section">
+      <el-card shadow="never">
+        <el-form
+          :model="queryParams"
+          ref="queryForm"
+          size="medium"
+          :inline="true"
+          label-width="120px"
+          class="search-form"
+        >
+          <el-form-item label="婊℃剰搴︽ā鏉�" prop="templateId">
+            <el-select
+              v-model="queryParams.templateId"
+              placeholder="璇烽�夋嫨妯℃澘"
+              clearable
+              style="width: 200px"
+            >
+              <el-option
+                v-for="template in templateList"
+                :key="template.id"
+                :label="template.name"
+                :value="template.id"
+              />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="璐d换绉戝" prop="deptIds">
+            <el-select
+              v-model="queryParams.deptIds"
+              placeholder="璇烽�夋嫨璐d换绉戝"
+              clearable
+              filterable
+              multiple
+              collapse-tags
+              style="width: 300px"
+            >
+              <el-option
+                v-for="dept in deptList"
+                :key="dept.id"
+                :label="dept.name"
+                :value="dept.id"
+              />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="缁熻鏃堕棿" prop="dateRange">
+            <el-date-picker
+              v-model="queryParams.dateRange"
+              type="daterange"
+              range-separator="鑷�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              value-format="yyyy-MM-dd"
+              :picker-options="pickerOptions"
+              style="width: 380px"
+            />
+          </el-form-item>
+
+          <el-form-item>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              @click="handleSearch"
+              :loading="loading"
+            >
+              鏌ヨ
+            </el-button>
+            <el-button icon="el-icon-refresh" @click="handleReset">
+              閲嶇疆
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </el-card>
+    </div>
+
+    <!-- 鎵归噺鎿嶄綔 -->
+    <div class="batch-section">
+      <el-card shadow="never">
+        <div class="batch-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-s-operation"
+            :disabled="selectedIds.length === 0"
+            @click="handleBatchProcess"
+          >
+            鎵归噺澶勭悊 ({{ selectedIds.length }})
+          </el-button>
+          <el-button
+            type="info"
+            icon="el-icon-download"
+            @click="handleExport"
+          >
+            瀵煎嚭寮傚父鏁版嵁
+          </el-button>
+          <el-button
+            type="warning"
+            icon="el-icon-refresh-right"
+            @click="refreshData"
+          >
+            鍒锋柊鏁版嵁
+          </el-button>
+        </div>
+      </el-card>
+    </div>
+
+    <!-- 寮傚父缁熻姒傝 -->
+    <div class="overview-section">
+      <el-row :gutter="20">
+        <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-claim" style="color: #5788FE;"></i>
+              </div>
+              <div class="stat-info">
+                <div class="stat-title">鎬诲紓甯告暟閲�</div>
+                <div class="stat-value">{{ overviewData.totalExceptionCount }}</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-flag" style="color: #E6A23C;"></i>
+              </div>
+              <div class="stat-info">
+                <div class="stat-title">寰呭鐞嗗紓甯�</div>
+                <div class="stat-value">{{ overviewData.pendingCount }}</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-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>
+        </el-col>
+      </el-row>
+    </div>
+
+    <!-- 寮傚父鍒楄〃 -->
+    <div class="list-section">
+      <el-card shadow="never">
+        <el-table
+          v-loading="loading"
+          :data="exceptionList"
+          :border="true"
+          style="width: 100%"
+          @selection-change="handleSelectionChange"
+          class="exception-table"
+        >
+          <el-table-column
+            type="selection"
+            width="55"
+            align="center"
+          />
+
+          <el-table-column
+            label="搴忓彿"
+            type="index"
+            width="60"
+            align="center"
+          />
+
+          <el-table-column
+            label="棰樼洰鍐呭"
+            prop="questionContent"
+            min-width="300"
+            align="center"
+          >
+            <template slot-scope="{ row }">
+              <div class="question-content">
+                <span class="question-text">{{ row.questionContent }}</span>
+                <div class="question-tags">
+                  <el-tag
+                    size="mini"
+                    :type="getQuestionTypeTag(row.questionType)"
+                  >
+                    {{ row.questionType === 1 ? '鍗曢�夐' : '澶氶�夐' }}
+                  </el-tag>
+                  <el-tag
+                    size="mini"
+                    type="info"
+                  >
+                    {{ row.templateName }}
+                  </el-tag>
+                </div>
+              </div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="璐熻矗绉戝"
+            prop="responsibilityDepts"
+            width="180"
+            align="center"
+          >
+            <template slot-scope="{ row }">
+              <div class="dept-list">
+                <el-tag
+                  v-for="dept in row.responsibilityDepts"
+                  :key="dept.id"
+                  size="small"
+                  type="primary"
+                  class="dept-tag"
+                >
+                  {{ dept.name }}
+                </el-tag>
+              </div>
+            </template>
+          </el-table-column>
+
+          <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>
+                </div>
+                <div class="stat-item">
+                  <span class="stat-label">寮傚父濉啓锛�</span>
+                  <span class="stat-value exception-count">{{ row.exceptionFillCount }}</span>
+                </div>
+              </div>
+            </template>
+          </el-table-column>
+
+          <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>
+                <div class="task-category">
+                  <div class="task-title">寰呭鐞�</div>
+                  <div class="task-count pending">{{ row.pendingCount }}</div>
+                </div>
+                <div class="task-category">
+                  <div class="task-title">寮傚父鎬绘暟</div>
+                  <div class="task-count total">{{ row.totalExceptionCount }}</div>
+                </div>
+              </div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鏈�杩戝鐞�"
+            prop="lastProcessTime"
+            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>
+              <span v-else class="no-process">鏆傛棤澶勭悊璁板綍</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            width="180"
+            align="center"
+            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"
+                icon="el-icon-s-operation"
+                @click="handleBatchQuestion(row)"
+              >
+                鎵归噺澶勭悊
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <!-- 鍒嗛〉 -->
+        <div class="pagination-section">
+          <el-pagination
+            background
+            layout="total, sizes, prev, pager, next, jumper"
+            :current-page="queryParams.pageNum"
+            :page-size="queryParams.pageSize"
+            :page-sizes="[10, 20, 30, 50]"
+            :total="total"
+            @size-change="handleSizeChange"
+            @current-change="handlePageChange"
+          />
+        </div>
+      </el-card>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'ExceptionList',
+  data() {
+    return {
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        templateId: '',
+        deptIds: [],
+        dateRange: [],
+        pageNum: 1,
+        pageSize: 10
+      },
+
+      // 鍔犺浇鐘舵��
+      loading: false,
+
+      // 閫変腑鐨処D
+      selectedIds: [],
+
+      // 妯℃澘鍒楄〃
+      templateList: [
+        { id: 1, name: '鍑洪櫌婊℃剰搴﹂棶鍗�' },
+        { id: 2, name: '浣忛櫌婊℃剰搴﹂棶鍗�' },
+        { id: 3, name: '闂ㄨ瘖婊℃剰搴﹂棶鍗�' },
+        { id: 4, 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: '鑲跨槫绉�' }
+      ],
+
+      // 寮傚父鍒楄〃鏁版嵁
+      exceptionList: [],
+      total: 0,
+
+      // 缁熻姒傝鏁版嵁
+      overviewData: {
+        totalExceptionCount: 0,
+        pendingCount: 0,
+        processedCount: 0,
+        todayProcessedCount: 0
+      },
+
+      // 鏃ユ湡閫夋嫨鍣ㄩ�夐」
+      pickerOptions: {
+        shortcuts: [
+          {
+            text: '鏈�杩戜竴鍛�',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+              picker.$emit('pick', [start, end]);
+            }
+          },
+          {
+            text: '鏈�杩戜竴涓湀',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+              picker.$emit('pick', [start, end]);
+            }
+          },
+          {
+            text: '鏈�杩戜笁涓湀',
+            onClick(picker) {
+              const end = new Date();
+              const start = new Date();
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+              picker.$emit('pick', [start, end]);
+            }
+          }
+        ],
+        disabledDate(time) {
+          return time.getTime() > Date.now();
+        }
+      }
+    };
+  },
+
+  mounted() {
+    this.loadData();
+  },
+
+  methods: {
+    // 鍔犺浇鏁版嵁
+    async loadData() {
+      this.loading = true;
+      try {
+        await Promise.all([
+          this.loadExceptionList(),
+          this.loadOverviewData()
+        ]);
+      } finally {
+        this.loading = false;
+      }
+    },
+
+    // 鍔犺浇寮傚父鍒楄〃
+    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);
+      });
+    },
+
+    // 鍔犺浇姒傝鏁版嵁
+    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);
+
+          this.overviewData = {
+            totalExceptionCount,
+            pendingCount,
+            processedCount,
+            todayProcessedCount: 8 // 浠婃棩澶勭悊鏁� mock
+          };
+          resolve();
+        }, 300);
+      });
+    },
+
+    // 鑾峰彇棰樼洰绫诲瀷鏍囩鏍峰紡
+    getQuestionTypeTag(type) {
+      return type === 1 ? 'primary' : 'success';
+    },
+
+    // 澶勭悊鏌ヨ
+    handleSearch() {
+      this.queryParams.pageNum = 1;
+      this.loadData();
+    },
+
+    // 澶勭悊閲嶇疆
+    handleReset() {
+      this.$refs.queryForm.resetFields();
+      this.queryParams.dateRange = [];
+      this.queryParams.pageNum = 1;
+      this.loadData();
+    },
+
+    // 澶勭悊鎵归噺澶勭悊
+    handleBatchProcess() {
+      if (this.selectedIds.length === 0) {
+        this.$message.warning('璇峰厛閫夋嫨瑕佸鐞嗙殑寮傚父棰樼洰');
+        return;
+      }
+
+      // 璺宠浆鍒版壒閲忓鐞嗛〉闈�
+      this.$router.push({
+        path: '/satisfaction/exception/batch-process',
+        query: {
+          questionIds: this.selectedIds.join(',')
+        }
+      });
+    },
+
+    // 澶勭悊瀵煎嚭
+    handleExport() {
+      this.$message.success('瀵煎嚭鍔熻兘寮�鍙戜腑...');
+    },
+
+    // 鍒锋柊鏁版嵁
+    refreshData() {
+      this.loadData();
+      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
+        }
+      });
+    },
+
+    // 澶勭悊鍗曚釜棰樼洰鎵归噺澶勭悊
+    handleBatchQuestion(row) {
+      this.$router.push({
+        path: '/Intelligentcenter/batch',
+        query: {
+          questionId: row.questionId
+        }
+      });
+    },
+
+    // 澶勭悊鍒嗛〉澶у皬鍙樺寲
+    handleSizeChange(size) {
+      this.queryParams.pageSize = size;
+      this.queryParams.pageNum = 1;
+      this.loadExceptionList();
+    },
+
+    // 澶勭悊椤电爜鍙樺寲
+    handlePageChange(page) {
+      this.queryParams.pageNum = page;
+      this.loadExceptionList();
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.exception-list {
+  padding: 20px;
+  background-color: #f5f7fa;
+  min-height: 100vh;
+
+  .page-header {
+    margin-bottom: 20px;
+    padding: 20px;
+    background: linear-gradient(135deg, #5788FE 0%, #66b1ff 100%);
+    border-radius: 8px;
+    color: white;
+
+    .header-content {
+      .page-title {
+        margin: 0 0 8px 0;
+        font-size: 20px;
+        font-weight: 600;
+      }
+
+      .page-description {
+        margin: 0;
+        opacity: 0.9;
+        font-size: 14px;
+      }
+    }
+  }
+
+  .search-section {
+    margin-bottom: 20px;
+
+    .search-form {
+      display: flex;
+      flex-wrap: wrap;
+      align-items: center;
+
+      ::v-deep .el-form-item {
+        margin-bottom: 0;
+        margin-right: 20px;
+
+        &:last-child {
+          margin-right: 0;
+        }
+      }
+    }
+  }
+
+  .batch-section {
+    margin-bottom: 20px;
+
+    .batch-actions {
+      display: flex;
+      gap: 10px;
+      align-items: center;
+    }
+  }
+
+  .overview-section {
+    margin-bottom: 20px;
+
+    .stat-card {
+      .stat-content {
+        display: flex;
+        align-items: center;
+        gap: 20px;
+
+        .stat-icon {
+          width: 60px;
+          height: 60px;
+          border-radius: 12px;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+
+          i {
+            font-size: 28px;
+          }
+        }
+
+        .stat-info {
+          flex: 1;
+
+          .stat-title {
+            font-size: 14px;
+            color: #606266;
+            margin-bottom: 8px;
+          }
+
+          .stat-value {
+            font-size: 24px;
+            font-weight: 600;
+            color: #303133;
+          }
+        }
+      }
+    }
+  }
+
+  .list-section {
+    .exception-table {
+      ::v-deep .el-table__header-wrapper {
+        th {
+          background-color: #f8f9fa;
+          font-weight: 600;
+          color: #333;
+        }
+      }
+
+      .question-content {
+        .question-text {
+          display: block;
+          font-size: 14px;
+          color: #303133;
+          margin-bottom: 8px;
+          line-height: 1.5;
+        }
+
+        .question-tags {
+          display: flex;
+          gap: 5px;
+          justify-content: center;
+        }
+      }
+
+      .dept-list {
+        display: flex;
+        flex-direction: column;
+        gap: 5px;
+        align-items: center;
+
+        .dept-tag {
+          margin: 2px 0;
+        }
+      }
+
+      .fill-statistics {
+        .stat-item {
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          margin-bottom: 5px;
+          padding: 2px 0;
+
+          .stat-label {
+            font-size: 12px;
+            color: #606266;
+          }
+
+          .stat-value {
+            font-size: 14px;
+            font-weight: 500;
+            color: #333;
+          }
+
+          .exception-count {
+            color: #e6a23c;
+            font-weight: 600;
+          }
+        }
+      }
+
+      .exception-tasks {
+        display: flex;
+        justify-content: space-around;
+        align-items: center;
+
+        .task-category {
+          text-align: center;
+          padding: 5px 8px;
+          border-radius: 6px;
+          min-width: 70px;
+
+          .task-title {
+            font-size: 12px;
+            color: #606266;
+            margin-bottom: 5px;
+          }
+
+          .task-count {
+            font-size: 18px;
+            font-weight: 600;
+            line-height: 1;
+
+            &.processed {
+              color: #67c23a;
+            }
+
+            &.pending {
+              color: #e6a23c;
+            }
+
+            &.total {
+              color: #5788FE;
+            }
+          }
+        }
+      }
+
+      .last-process {
+        .process-time {
+          font-size: 12px;
+          color: #606266;
+          margin-bottom: 4px;
+        }
+
+        .process-user {
+          font-size: 13px;
+          color: #5788FE;
+          font-weight: 500;
+        }
+      }
+
+      .no-process {
+        color: #909399;
+        font-style: italic;
+      }
+    }
+
+    .pagination-section {
+      display: flex;
+      justify-content: center;
+      padding: 20px 0 0 0;
+    }
+  }
+}
+
+@media (max-width: 768px) {
+  .exception-list {
+    padding: 10px;
+
+    .search-section {
+      .search-form {
+        ::v-deep .el-form-item {
+          width: 100%;
+          margin-right: 0;
+          margin-bottom: 10px;
+        }
+      }
+    }
+
+    .overview-section {
+      .el-row {
+        margin-left: 0;
+        margin-right: 0;
+
+        .el-col {
+          padding-left: 0;
+          padding-right: 0;
+          margin-bottom: 10px;
+        }
+      }
+    }
+  }
+}
+</style>

--
Gitblit v1.9.3