fix:修改仪表盘工单
This commit is contained in:
@@ -347,7 +347,8 @@ const messagesEqual = (oldMessages, newMessages) => {
|
|||||||
|
|
||||||
// 获取工单详情
|
// 获取工单详情
|
||||||
const fetchTicketDetail = async (showLoading = true) => {
|
const fetchTicketDetail = async (showLoading = true) => {
|
||||||
const workId = route.query.id
|
// 兼容 id 和 work_id 两种参数名
|
||||||
|
const workId = route.query.id || route.query.work_id
|
||||||
if (!workId) {
|
if (!workId) {
|
||||||
// 没有ID时静默跳转到列表页
|
// 没有ID时静默跳转到列表页
|
||||||
router.replace('/ticket/list')
|
router.replace('/ticket/list')
|
||||||
@@ -418,7 +419,7 @@ const fetchTicketDetail = async (showLoading = true) => {
|
|||||||
const sendMessage = async () => {
|
const sendMessage = async () => {
|
||||||
if ((!messageInput.value.trim() && selectedImages.value.length === 0) || isSending.value) return
|
if ((!messageInput.value.trim() && selectedImages.value.length === 0) || isSending.value) return
|
||||||
|
|
||||||
const workId = route.query.id
|
const workId = route.query.id || route.query.work_id
|
||||||
const content = messageInput.value.trim() || 'empty'
|
const content = messageInput.value.trim() || 'empty'
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -526,7 +527,7 @@ const handleStatusChange = async (newStatus) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const formData = new FormData()
|
const formData = new FormData()
|
||||||
formData.append('work_id', route.query.id)
|
formData.append('work_id', route.query.id || route.query.work_id)
|
||||||
formData.append('Status', statusMap[newStatus])
|
formData.append('Status', statusMap[newStatus])
|
||||||
|
|
||||||
const res = await updateTicketInfo(formData)
|
const res = await updateTicketInfo(formData)
|
||||||
@@ -553,7 +554,7 @@ const handleComplete = () => {
|
|||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
try {
|
try {
|
||||||
const res = await closeTicket(route.query.id)
|
const res = await closeTicket(route.query.id || route.query.work_id)
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
ElMessage.success('工单已成功结束')
|
ElMessage.success('工单已成功结束')
|
||||||
ticketInfo.value.status = 'completed'
|
ticketInfo.value.status = 'completed'
|
||||||
@@ -893,7 +894,8 @@ const goToUserDetail = () => {
|
|||||||
const startAutoRefresh = () => {
|
const startAutoRefresh = () => {
|
||||||
refreshTimer.value = setInterval(() => {
|
refreshTimer.value = setInterval(() => {
|
||||||
// 只有当前路由仍在工单详情页且工单未完成时才刷新
|
// 只有当前路由仍在工单详情页且工单未完成时才刷新
|
||||||
if (route.path === '/ticket/detail' && route.query.id && ticketInfo.value?.status !== 'completed') {
|
const workId = route.query.id || route.query.work_id
|
||||||
|
if (route.path === '/ticket/detail' && workId && ticketInfo.value?.status !== 'completed') {
|
||||||
fetchTicketDetail(false) // 定时刷新时不显示 loading
|
fetchTicketDetail(false) // 定时刷新时不显示 loading
|
||||||
}
|
}
|
||||||
}, 10000)
|
}, 10000)
|
||||||
@@ -908,7 +910,7 @@ const stopAutoRefresh = () => {
|
|||||||
|
|
||||||
// 监听路由query变化,重新加载数据
|
// 监听路由query变化,重新加载数据
|
||||||
watch(
|
watch(
|
||||||
() => route.query.id,
|
() => route.query.id || route.query.work_id,
|
||||||
(newId) => {
|
(newId) => {
|
||||||
if (newId) {
|
if (newId) {
|
||||||
fetchTicketDetail()
|
fetchTicketDetail()
|
||||||
|
|||||||
@@ -1,108 +1,15 @@
|
|||||||
✅已完成、⚠️部分完成、❌未完成这样显示
|
✅已完成、⚠️部分完成、❌未完成这样显示
|
||||||
-----------------------------------------------------------------------------------------------需要解决
|
-----------------------------------------------------------------------------------------------需要解决
|
||||||
|
|
||||||
|
1.点击仪表盘的最近工单中的其中一项跳转到工单详情需要请求对应接口数据进行赋值/api/v1/admin/work_order/detail这个接口,传递work_id参数,在src/api/ticket.js文件下的getTicketDetail函数
|
||||||
|
|
||||||
以下是请求用户详情信息的接口响应数据:
|
|
||||||
{
|
|
||||||
"code": 200,
|
|
||||||
"message": "Success",
|
|
||||||
"data": {
|
|
||||||
"UserId": 1680,
|
|
||||||
"UserName": "testuser111",
|
|
||||||
"Password": "$2a$10$iOH6CYfaOsVxvRsUotcDNeAyH19Fot3Bou7chuoB8tUqg6cTyxuKG",
|
|
||||||
"UserGroup": {
|
|
||||||
"Id": 1,
|
|
||||||
"HigherLevelId": 0,
|
|
||||||
"Name": "Lv1",
|
|
||||||
"Auth": "1",
|
|
||||||
"FloorPrice": 0,
|
|
||||||
"Fixed": false,
|
|
||||||
"UserGroupDiscount": null,
|
|
||||||
"IsDeleted": false,
|
|
||||||
"CreatedAt": "2024-11-05T05:15:33+08:00",
|
|
||||||
"UpdatedAt": "2024-11-05T05:15:35+08:00",
|
|
||||||
"omitempty": null
|
|
||||||
},
|
|
||||||
"UserGroupId": 1,
|
|
||||||
"AdminGroup": {
|
|
||||||
"id": 0,
|
|
||||||
"name": "",
|
|
||||||
"auth": "",
|
|
||||||
"note": "",
|
|
||||||
"CreatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"UpdatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"omitempty": null
|
|
||||||
},
|
|
||||||
"AdminGroupId": null,
|
|
||||||
"Cover": {
|
|
||||||
"id": 3,
|
|
||||||
"realName": "7EE71869106645BA1C2BA93D298C8C5B.png",
|
|
||||||
"saveName": "173073670020",
|
|
||||||
"savePath": "static/files/2024-11-04/173073670020",
|
|
||||||
"size": 72075,
|
|
||||||
"type": "work_order",
|
|
||||||
"content": "",
|
|
||||||
"userId": 20,
|
|
||||||
"openDow": false,
|
|
||||||
"CreatedAt": "2024-11-05T00:11:40.628+08:00",
|
|
||||||
"UpdatedAt": "2024-11-05T00:11:40.628+08:00",
|
|
||||||
"omitempty": null
|
|
||||||
},
|
|
||||||
"CoverID": 3,
|
|
||||||
"IsDeleted": false,
|
|
||||||
"Sex": true,
|
|
||||||
"Age": 15,
|
|
||||||
"Phone": "13888888888",
|
|
||||||
"Email": "q21234043@gmail.com",
|
|
||||||
"IdcAgent": {
|
|
||||||
"Id": 0,
|
|
||||||
"UserId": 0,
|
|
||||||
"AgentLevent": 0,
|
|
||||||
"AgentLevelName": "",
|
|
||||||
"Uid": "",
|
|
||||||
"IdcCreatedAt": 0,
|
|
||||||
"CreatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"UpdatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"omitempty": null
|
|
||||||
},
|
|
||||||
"RealName": {
|
|
||||||
"Id": 0,
|
|
||||||
"UserId": 0,
|
|
||||||
"Name": "",
|
|
||||||
"IdCard": "",
|
|
||||||
"Status": 0,
|
|
||||||
"Type": 0,
|
|
||||||
"CreatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"UpdatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"omitempty": null
|
|
||||||
},
|
|
||||||
"EnterpriseInfo": {
|
|
||||||
"Id": 0,
|
|
||||||
"UserId": 0,
|
|
||||||
"Name": "",
|
|
||||||
"BusinessNumber": "",
|
|
||||||
"CreatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"UpdatedAt": "0001-01-01T00:00:00Z",
|
|
||||||
"omitempty": null
|
|
||||||
},
|
|
||||||
"RecommendUserId": 1679,
|
|
||||||
"CreatedAt": "2025-12-31T16:48:31.85729+08:00",
|
|
||||||
"UpdatedAt": "2026-01-23T11:01:01.384933+08:00",
|
|
||||||
"omitempty": null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
1.用户列表点击修改用户组弹出弹窗用户组id使用组件UserGroupSelector.vue文件进行选择,并且使用选择样式需要符合整体选择框样式
|
|
||||||
|
|
||||||
### TODO List
|
### TODO List
|
||||||
- [x] ✅ 导入UserGroupSelector组件
|
- [x] ✅ TicketDetail.vue兼容work_id参数(原来只支持id参数)
|
||||||
- [x] ✅ 修改用户组弹窗使用选择器组件
|
- [x] ✅ fetchTicketDetail函数使用 route.query.id || route.query.work_id
|
||||||
- [x] ✅ 显示当前用户组名称
|
- [x] ✅ sendMessage函数使用 route.query.id || route.query.work_id
|
||||||
- [x] ✅ 点击选择用户组打开选择器弹窗
|
- [x] ✅ handleStatusChange函数使用 route.query.id || route.query.work_id
|
||||||
- [x] ✅ 选择后显示用户组名称和ID
|
- [x] ✅ handleComplete函数使用 route.query.id || route.query.work_id
|
||||||
- [x] ✅ 添加清除功能
|
- [x] ✅ 定时刷新和watch监听兼容work_id参数
|
||||||
- [x] ✅ 样式与推介人选择器保持一致
|
|
||||||
|
|
||||||
-----------------------------------------------------------------------------------------------需要解决
|
-----------------------------------------------------------------------------------------------需要解决
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user