From c18622226ede4497142058af8a8700a5ce732a11 Mon Sep 17 00:00:00 2001 From: shiran Date: Tue, 2 Jun 2026 17:28:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E5=B7=A5=E5=8D=95=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20UI=20=E4=BC=98=E5=8C=96=E4=B8=8E=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E3=80=81=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 工单列表与详情 UI/交互优化及新工单提醒;新增回复模板与工单类型管理;文件管理增加管理员筛选并优化详情展示。 Co-authored-by: Cursor --- src/api/ticket.js | 46 +- src/components/layout/AdminLayout.vue | 21 +- src/components/layout/GlobalSearch.vue | 581 ++++++++++++++++++ src/config/menus.js | 8 + src/router/index.js | 16 + src/views/system/DomainWhitelist.vue | 7 +- src/views/system/SystemFile.vue | 300 ++++++--- src/views/ticket/TicketDetail.vue | 718 ++++++++++++++++++---- src/views/ticket/TicketList.vue | 808 +++++++++++++++++-------- src/views/ticket/TicketTemplates.vue | 220 +++++++ src/views/ticket/TicketTypes.vue | 194 ++++++ src/views/user-vm/UserVmDetail.vue | 38 +- 12 files changed, 2480 insertions(+), 477 deletions(-) create mode 100644 src/components/layout/GlobalSearch.vue create mode 100644 src/views/ticket/TicketTemplates.vue create mode 100644 src/views/ticket/TicketTypes.vue diff --git a/src/api/ticket.js b/src/api/ticket.js index 87d4701..fcdc8d5 100644 --- a/src/api/ticket.js +++ b/src/api/ticket.js @@ -5,14 +5,14 @@ import request from "@/utils/request.js"; * @returns {Promise} */ -export function getTickerList(count, page, status, orderBy, order, userId, keyword) { +export function getTickerList(count, page, status, orderBy, order, userId, keyword, type) { const params = { count, page } if (status !== undefined && status !== '') params.status = status if (orderBy) params.orderBy = orderBy if (order) params.order = order if (userId) params.user_id = userId if (keyword) params.keyword = keyword - console.log('工单列表请求参数:', params) // 调试日志 + if (type) params.type = type return request.get('/api/v1/admin/work_order/list', params) } @@ -43,12 +43,16 @@ export function getTicketDetail(work_id) { // 回复工单 export function replyTicket(work_id, content, files) { - return request.post('/api/v1/admin/work_order/reply', { work_id, content, files }) + return request.post('/api/v1/admin/work_order/reply', { work_id, content, files }, { + headers: { 'Content-Type': 'multipart/form-data' } + }) } // 关闭工单 export function closeTicket(work_id) { - return request.post('/api/v1/admin/work_order/close', { work_id }) + return request.post('/api/v1/admin/work_order/close', { work_id }, { + headers: { 'Content-Type': 'multipart/form-data' } + }) } export function getFile(file_id) { @@ -106,10 +110,9 @@ export function updateTicketType(data) { } /**删除工单类型 */ export function deleteTicketType(data) { - return request.delete('/api/v1/admin/work_order/delete_type', data,{ - headers:{ - 'Content-Type':'multipart/form-data' - } + return request.delete('/api/v1/admin/work_order/delete_type', { + data: data, + headers: { 'Content-Type': 'multipart/form-data' } }) } /**获取工单类型列表 */ @@ -124,3 +127,30 @@ export function updateTicketReplayInfo(data){ } }) } + +/**获取回复模板列表 */ +export function getReplyTemplateList(params = {}) { + return request.get('/api/v1/admin/work_order/reply_template/list', params) +} + +/**创建回复模板 */ +export function createReplyTemplate(data) { + return request.post('/api/v1/admin/work_order/reply_template/create', data, { + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +/**修改回复模板 */ +export function updateReplyTemplate(data) { + return request.post('/api/v1/admin/work_order/reply_template/update', data, { + headers: { 'Content-Type': 'multipart/form-data' } + }) +} + +/**删除回复模板 */ +export function deleteReplyTemplate(data) { + return request.delete('/api/v1/admin/work_order/reply_template/delete', { + data: data, + headers: { 'Content-Type': 'multipart/form-data' } + }) +} diff --git a/src/components/layout/AdminLayout.vue b/src/components/layout/AdminLayout.vue index fbf3f94..8efa4fd 100644 --- a/src/components/layout/AdminLayout.vue +++ b/src/components/layout/AdminLayout.vue @@ -45,12 +45,8 @@