Files
ApiServer-Web-admin_dashboa…/src/api/ticket.js
T
wlkjyy fe1a118132
Build and Deploy Vue3 / build (push) Successful in 1m19s
Build and Deploy Vue3 / deploy (push) Successful in 1m31s
feat: 工单列表添加关键词搜索功能
- 添加关键词搜索输入框,支持搜索工单标题/内容
- 300ms 防抖优化搜索性能
- 支持与用户筛选同时使用
2026-01-07 17:27:54 +08:00

127 lines
3.3 KiB
JavaScript

import request from "@/utils/request.js";
/**
* 获取工单列表
* @param {Object} params 查询参数
* @returns {Promise}
*/
export function getTickerList(count, page, status, orderBy, order, userId, keyword) {
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) // 调试日志
return request.get('/api/v1/admin/work_order/list', params)
}
// 待处理
export function getPendingTicketList(count, page) {
return getTickerList(count,page,0)
}
// 进行中
export function getProcessingTicketList(count, page) {
return getTickerList(count,page,1)
}
//已回复
export function getRepliedTicketList(count, page) {
return getTickerList(count,page,2)
}
// 已解决
export function getCompletedTicketList(count, page) {
return getTickerList(count,page,3)
}
// 获取工单详情
export function getTicketDetail(work_id) {
return request.get('/api/v1/admin/work_order/detail', { work_id })
}
// 回复工单
export function replyTicket(work_id, content, files) {
return request.post('/api/v1/admin/work_order/reply', { work_id, content, files })
}
// 关闭工单
export function closeTicket(work_id) {
return request.post('/api/v1/admin/work_order/close', { work_id })
}
export function getFile(file_id) {
return request.get('/api/v1/tool/file/down', { file_id })
}
// 获取用户头像
export function getUserAvatar(user_id) {
// TODO: 实现获取用户头像的逻辑
return `https://avatar.example.com/${user_id}`
}
// 获取文件图片
export async function getFileImage(file_id) {
let resp = await getFile(file_id)
console.log(resp.data.content)
return resp.data.content
}
// 解析多个文件ID为图片URL数组
export async function parseFilesToImages(files) {
if (!files || files === '') return []
const fileIds = files.split(',')
return await Promise.all(fileIds.map(async (id) => await getFileImage(id.trim())))
}
/**获取工单数量 */
export function getTicketCount() {
return request.get('/api/v1/admin/work_order/count')
}
/**修改工单信息 */
export function updateTicketInfo(data) {
return request.post('/api/v1/admin/work_order/update', data,{
headers:{
'Content-Type':'multipart/form-data'
}
})
}
/**添加工单类型 */
export function addTicketType(data) {
return request.post('/api/v1/admin/work_order/add_type', data,{
headers:{
'Content-Type':'multipart/form-data'
}
})
}
/**修改工单类型 */
export function updateTicketType(data) {
return request.post('/api/v1/admin/work_order/update_type', data,{
headers:{
'Content-Type':'multipart/form-data'
}
})
}
/**删除工单类型 */
export function deleteTicketType(data) {
return request.delete('/api/v1/admin/work_order/delete_type', data,{
headers:{
'Content-Type':'multipart/form-data'
}
})
}
/**获取工单类型列表 */
export function getTicketTypeList(data) {
return request.get('/api/v1/admin/work_order/type_list', data)
}
/**修改工单回复信息 */
export function updateTicketReplayInfo(data){
return request.post('/api/v1/admin/work_order/update_reply',data,{
headers:{
'Content-Type':'multipart/form-data'
}
})
}