From 61f0c5d3a9308d1eaefd8890a46b3c569707e050 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期四, 09 四月 2026 09:24:47 +0800
Subject: [PATCH] 测试完成
---
src/views/Satisfaction/configurationmyd/dispose.vue | 422 +++++++++++++++++++---------------------------------
1 files changed, 155 insertions(+), 267 deletions(-)
diff --git a/src/views/Satisfaction/configurationmyd/dispose.vue b/src/views/Satisfaction/configurationmyd/dispose.vue
index 8a59106..8de73b1 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.templateid"
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.deptName"
+ :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"
/>
@@ -117,7 +117,7 @@
<!-- 寮傚父缁熻姒傝 -->
<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;">
@@ -130,7 +130,7 @@
</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;">
@@ -143,7 +143,7 @@
</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;">
@@ -152,19 +152,6 @@
<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>
@@ -198,25 +185,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,20 +206,20 @@
<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>
@@ -253,11 +234,11 @@
<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>
@@ -272,15 +253,15 @@
<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 +269,14 @@
<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 +289,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,15 +320,20 @@
</template>
<script>
+import { tracedeallist } from "@/api/AiCentre/index";
+
export default {
name: 'ExceptionList',
data() {
return {
// 鏌ヨ鍙傛暟
queryParams: {
- templateId: '',
- deptIds: [],
- dateRange: [],
+ todeptcode: [], // 澶勭悊绉戝缂栧彿鏁扮粍
+ todeptname: '', // 澶勭悊绉戝鍚嶇О
+ templateid: '', // 浠诲姟妯℃澘ID
+ handleStartTime: '', // 澶勭悊寮�濮嬫椂闂�
+ handleEndTime: '', // 澶勭悊缁撴潫鏃堕棿
+ handleTimeRange: [], // 鏃堕棿鑼冨洿锛岀敤浜庣晫闈㈠睍绀�
pageNum: 1,
pageSize: 10
},
@@ -368,26 +346,26 @@
// 妯℃澘鍒楄〃
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: '鑲跨槫绉�' }
+ // 浣犲彲浠ヤ粠鎺ュ彛鑾峰彇绉戝鍒楄〃锛岃繖閲屽厛鐢ㄩ潤鎬佹暟鎹�
+ { deptCode: '001', deptName: '蹇冭绠″唴绉�' },
+ { deptCode: '002', deptName: '绁炵粡鍐呯' },
+ { deptCode: '003', deptName: '鏅绉�' },
+ { deptCode: '004', deptName: '楠ㄧ' },
+ { deptCode: '005', deptName: '濡囦骇绉�' },
+ { deptCode: '006', deptName: '鍎跨' },
+ { deptCode: '007', deptName: '鎬ヨ瘖绉�' },
+ { deptCode: '008', deptName: '鍛煎惛鍐呯' },
+ { deptCode: '009', deptName: '娑堝寲鍐呯' },
+ { deptCode: '010', deptName: '鍐呭垎娉岀' },
+ { deptCode: '011', deptName: '鑲惧唴绉�' },
+ { deptCode: '012', deptName: '鑲跨槫绉�' }
],
// 寮傚父鍒楄〃鏁版嵁
@@ -445,6 +423,46 @@
},
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.templateid) {
+ params.templateid = this.queryParams.templateid;
+ }
+
+ // 澶勭悊鏃堕棿鑼冨洿
+ if (this.queryParams.handleTimeRange && this.queryParams.handleTimeRange.length === 2) {
+ params.handleStartTime = this.queryParams.handleTimeRange[0];
+ params.handleEndTime = this.queryParams.handleTimeRange[1];
+ }
+
+ return params;
+ },
+
// 鍔犺浇鏁版嵁
async loadData() {
this.loading = true;
@@ -460,185 +478,62 @@
// 鍔犺浇寮傚父鍒楄〃
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,8 +545,9 @@
// 澶勭悊閲嶇疆
handleReset() {
this.$refs.queryForm.resetFields();
- this.queryParams.dateRange = [];
+ this.queryParams.handleTimeRange = [];
this.queryParams.pageNum = 1;
+ this.queryParams.todeptcode = []; // 閲嶇疆绉戝閫夋嫨
this.loadData();
},
@@ -664,7 +560,7 @@
// 璺宠浆鍒版壒閲忓鐞嗛〉闈�
this.$router.push({
- path: '/satisfaction/exception/batch-process',
+ path: '/Intelligentcenter/batch',
query: {
questionIds: this.selectedIds.join(',')
}
@@ -684,17 +580,7 @@
// 澶勭悊閫夋嫨鍙樺寲
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);
},
// 澶勭悊鍗曚釜棰樼洰鎵归噺澶勭悊
@@ -702,7 +588,8 @@
this.$router.push({
path: '/Intelligentcenter/batch',
query: {
- questionId: row.questionId
+ questionId: row.scriptid,
+ questionText: encodeURIComponent(row.questiontext)
}
});
},
@@ -838,12 +725,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;
}
}
--
Gitblit v1.9.3