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