diff --git a/src/api/ticket.js b/src/api/ticket.js index 5f2c459..87d4701 100644 --- a/src/api/ticket.js +++ b/src/api/ticket.js @@ -5,12 +5,13 @@ import request from "@/utils/request.js"; * @returns {Promise} */ -export function getTickerList(count, page, status, orderBy, order, userId) { +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) } diff --git a/src/views/ticket/TicketList.vue b/src/views/ticket/TicketList.vue index bcb3956..d918b57 100644 --- a/src/views/ticket/TicketList.vue +++ b/src/views/ticket/TicketList.vue @@ -46,6 +46,19 @@ + + + + 刷新 @@ -187,6 +200,10 @@ const isLoading = ref(false) const ticketList = ref([]) const activeStatus = ref('pending') // 默认选中"待处理" +// 关键词搜索 +const searchKeyword = ref('') +const keywordSearchTimer = ref(null) + // 用户搜索 const userSearchKeyword = ref('') const userList = ref([]) @@ -248,7 +265,8 @@ const fetchTicketList = async () => { statusParam, sortBy.value, sortOrder.value, - selectedUser.value?.user_id + selectedUser.value?.user_id, + searchKeyword.value.trim() ) if (res.code === 200) { @@ -348,6 +366,17 @@ const clearUserFilter = () => { fetchTicketList() } +// 关键词搜索 +const handleKeywordSearch = () => { + if (keywordSearchTimer.value) { + clearTimeout(keywordSearchTimer.value) + } + keywordSearchTimer.value = setTimeout(() => { + currentPage.value = 1 + fetchTicketList() + }, 300) +} + // 按状态过滤 const filterByStatus = (status) => { if (activeStatus.value === status) return @@ -479,6 +508,9 @@ onBeforeUnmount(() => { if (userSearchTimer.value) { clearTimeout(userSearchTimer.value) } + if (keywordSearchTimer.value) { + clearTimeout(keywordSearchTimer.value) + } })