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