index修改
This commit is contained in:
@@ -413,26 +413,46 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 显示工单创建器
|
||||
function showCreator() {
|
||||
showWorkcaseCreator.value = true
|
||||
// 直接跳转到工单详情页的 create 模式(复用 workcaseDetail 页面)
|
||||
async function showCreator() {
|
||||
// 首页直接创建工单:为了让工单和聊天室绑定,这里先创建一个聊天室(workcase类型),再带 roomId 跳转
|
||||
// 如果你希望“无聊天室也能创建工单”,后端 WorkcaseServiceImpl 也支持 roomId 为空时自动创建聊天室
|
||||
uni.showLoading({ title: '正在创建工单...' })
|
||||
try {
|
||||
const res = await workcaseChatAPI.createChatRoom({
|
||||
guestId: userInfo.value.userId || userInfo.value.wechatId,
|
||||
guestName: userInfo.value.username || '访客',
|
||||
roomName: `${userInfo.value.username || '访客'}的工单`,
|
||||
roomType: 'workcase',
|
||||
status: 'active',
|
||||
aiSessionId: chatId.value || ''
|
||||
})
|
||||
uni.hideLoading()
|
||||
|
||||
if (res.success && res.data?.roomId) {
|
||||
const roomId = res.data.roomId
|
||||
uni.navigateTo({
|
||||
url: `/pages/workcase/workcaseDetail/workcaseDetail?mode=create&roomId=${roomId}`
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
uni.showToast({ title: res.message || '创建工单失败', icon: 'none' })
|
||||
} catch (e) {
|
||||
uni.hideLoading()
|
||||
console.error('首页创建工单失败:', e)
|
||||
uni.showToast({ title: '创建工单失败,请稍后重试', icon: 'none' })
|
||||
}
|
||||
}
|
||||
|
||||
// 隐藏工单创建器
|
||||
// 兼容旧逻辑:不再使用页面内工单创建器
|
||||
function hideCreator() {
|
||||
showWorkcaseCreator.value = false
|
||||
}
|
||||
|
||||
// 工单创建成功
|
||||
// 兼容旧逻辑:不再使用页面内工单创建器
|
||||
function onWorkcaseCreated(workcaseData : TbWorkcaseDTO) {
|
||||
hideCreator()
|
||||
|
||||
uni.showToast({
|
||||
title: '工单创建成功',
|
||||
icon: 'success'
|
||||
})
|
||||
|
||||
// 添加成功消息
|
||||
addMessage('bot', `工单创建成功!\n类型:${workcaseData.type || ''}\n设备:${workcaseData.device || ''}\n我们会尽快处理您的问题。`, ['查看工单', '创建新工单'])
|
||||
}
|
||||
|
||||
|
||||
@@ -254,72 +254,48 @@ onLoad((options: any) => {
|
||||
// 处理 mode 参数
|
||||
if (options.mode === 'create') {
|
||||
mode.value = 'create'
|
||||
|
||||
// 从 storage 读取登录信息
|
||||
// create 模式必须从上一页带入 roomId(前端先建 room 的策略)
|
||||
const roomId = options.roomId || ''
|
||||
if (!roomId) {
|
||||
uni.showToast({ title: '缺少roomId,无法创建工单', icon: 'none' })
|
||||
// 直接退出,避免后续提交失败
|
||||
setTimeout(() => uni.navigateBack(), 800)
|
||||
return
|
||||
}
|
||||
// 只使用 loginDomain(没有就空)
|
||||
let username = ''
|
||||
let phone = ''
|
||||
let userId = ''
|
||||
try {
|
||||
let loginDomainRaw = uni.getStorageSync('loginDomain')
|
||||
|
||||
let username = ''
|
||||
let phone = ''
|
||||
let userId = ''
|
||||
let roomId = options.roomId || ''
|
||||
|
||||
const loginDomainRaw = uni.getStorageSync('loginDomain')
|
||||
if (loginDomainRaw) {
|
||||
// 如果是字符串,需要先解析
|
||||
let loginDomain = loginDomainRaw
|
||||
if (typeof loginDomainRaw === 'string') {
|
||||
loginDomain = JSON.parse(loginDomainRaw)
|
||||
}
|
||||
|
||||
// 尝试多种可能的字段路径
|
||||
username = loginDomain.userInfo?.username
|
||||
|
||||
phone = loginDomain.user?.phone
|
||||
userId = loginDomain.userInfo?.userId
|
||||
}
|
||||
|
||||
// 创建模式,初始化表单并填充用户信息
|
||||
workcase.value = {
|
||||
username: username,
|
||||
phone: phone,
|
||||
userId: userId,
|
||||
device: '',
|
||||
type: '',
|
||||
address: '',
|
||||
description: '',
|
||||
emergency: 'normal',
|
||||
imgs: []
|
||||
}
|
||||
|
||||
// 如果有 roomId,添加到工单数据中
|
||||
if (roomId) {
|
||||
workcase.value.roomId = roomId
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('读取用户信息失败:', error)
|
||||
// 初始化空表单
|
||||
workcase.value = {
|
||||
username: '',
|
||||
phone: '',
|
||||
device: '',
|
||||
type: '',
|
||||
address: '',
|
||||
description: '',
|
||||
emergency: 'normal',
|
||||
imgs: []
|
||||
}
|
||||
|
||||
// 如果有 roomId,添加到工单数据中
|
||||
if (options.roomId) {
|
||||
workcase.value.roomId = options.roomId
|
||||
const loginDomain = typeof loginDomainRaw === 'string' ? JSON.parse(loginDomainRaw) : loginDomainRaw
|
||||
username = loginDomain?.userInfo?.username || ''
|
||||
phone = loginDomain?.user?.phone || ''
|
||||
userId = loginDomain?.userInfo?.userId || ''
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('读取loginDomain失败:', e)
|
||||
}
|
||||
|
||||
workcase.value = {
|
||||
username,
|
||||
phone,
|
||||
userId,
|
||||
roomId,
|
||||
device: '',
|
||||
type: '',
|
||||
address: '',
|
||||
description: '',
|
||||
emergency: 'normal',
|
||||
imgs: []
|
||||
}
|
||||
} else if (options.workcaseId) {
|
||||
// 查看模式
|
||||
workcaseId.value = options.workcaseId
|
||||
mode.value = 'view'
|
||||
loadWorkcaseDetail(workcaseId.value)
|
||||
}
|
||||
// 查看模式
|
||||
workcaseId.value = options.workcaseId
|
||||
mode.value = 'view'
|
||||
loadWorkcaseDetail(workcaseId.value)
|
||||
}
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
@@ -413,8 +389,12 @@ function getTimelineDotClass(status: string): string {
|
||||
|
||||
// 查看对话
|
||||
function handleViewChat() {
|
||||
if (!workcase.value.roomId) {
|
||||
uni.showToast({ title: '未关联聊天室', icon: 'none' })
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: `/pages/chatRoom/chatRoom/chatRoom?roomId=${workcase.value.workcaseId}`
|
||||
url: `/pages/chatRoom/chatRoom/chatRoom?roomId=${workcase.value.roomId}`
|
||||
})
|
||||
}
|
||||
|
||||
@@ -616,9 +596,12 @@ async function submitWorkcase() {
|
||||
title: '工单创建成功',
|
||||
icon: 'success'
|
||||
})
|
||||
// 创建成功后直接回到该聊天室(闭环)
|
||||
setTimeout(() => {
|
||||
uni.navigateBack()
|
||||
}, 1500)
|
||||
uni.redirectTo({
|
||||
url: `/pages/chatRoom/chatRoom/chatRoom?roomId=${workcase.value.roomId}&workcaseId=${res.data.workcaseId || ''}`
|
||||
})
|
||||
}, 600)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.message || '创建失败',
|
||||
|
||||
Reference in New Issue
Block a user