diff --git a/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.vue b/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.vue index 10b760c5..d3640517 100644 --- a/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.vue +++ b/urbanLifelineWeb/packages/workcase/src/views/admin/workcase/WorkcaseView.vue @@ -83,7 +83,7 @@ @@ -151,11 +151,12 @@ - @@ -293,7 +294,7 @@ const completeWorkcaseAPI = async (workcase: TbWorkcaseDTO) => { action: 'finish', message: '工单完成' } - + const res = await workcaseAPI.createWorkcaseProcess(process) if (res.success) { ElMessage.success('完成成功') @@ -303,15 +304,25 @@ const completeWorkcaseAPI = async (workcase: TbWorkcaseDTO) => { } } -// ========================= Mock 数据 ========================= -const mockTickets = [ - { workcaseId: 'WC001', optsn: 'TK001', username: '张三', phone: '13800138000', type: 'electrical', device: 'TH-500GF', emergency: 'emergency' as const, status: 'pending' as const, processor: '', createTime: '2024-12-13 10:30' }, - { workcaseId: 'WC002', optsn: 'TK002', username: '李四', phone: '13800138001', type: 'mechanical', device: 'TH-300D', emergency: 'normal' as const, status: 'processing' as const, processor: '王五', createTime: '2024-12-13 09:15' }, - { workcaseId: 'WC003', optsn: 'TK003', username: '王五', phone: '13800138002', type: 'control', device: 'S-200X', emergency: 'normal' as const, status: 'done' as const, processor: '赵六', createTime: '2024-12-12 14:20' }, - { workcaseId: 'WC004', optsn: 'TK004', username: '赵六', phone: '13800138003', type: 'parts', device: 'TH-800GF', emergency: 'normal' as const, status: 'pending' as const, processor: '', createTime: '2024-12-13 11:00' }, - { workcaseId: 'WC005', optsn: 'TK005', username: '孙七', phone: '13800138004', type: 'install', device: 'G-100S', emergency: 'emergency' as const, status: 'processing' as const, processor: '李四', createTime: '2024-12-13 08:45' } -] +/** + * 从详情页完成工单 + */ +const handleCompleteFromDetail = async (workcaseId: string) => { + const process: TbWorkcaseProcessDTO = { + workcaseId: workcaseId, + action: 'finish', + message: '工单完成' + } + const res = await workcaseAPI.createWorkcaseProcess(process) + if (res.success) { + ElMessage.success('完成成功') + showDetailDialog.value = false + loadWorkcases() + } else { + ElMessage.error(res.message || '操作失败') + } +} // ========================= 字段映射 ========================= @@ -331,6 +342,7 @@ const emergencyMap: Record = { const statusMap: Record = { pending: '待处理', + process: '处理中', processing: '处理中', done: '已完成' } @@ -363,6 +375,7 @@ const filteredTickets = computed(() => { const getStatusType = (status: string) => { const map: Record = { pending: 'warning', + process: 'info', processing: 'info', done: 'success' } diff --git a/urbanLifelineWeb/packages/workcase/src/views/public/ChatRoom/CommentMessageCard/CommentMessageCard.scss b/urbanLifelineWeb/packages/workcase/src/views/public/ChatRoom/CommentMessageCard/CommentMessageCard.scss new file mode 100644 index 00000000..e69de29b diff --git a/urbanLifelineWeb/packages/workcase/src/views/public/ChatRoom/CommentMessageCard/CommentMessageCard.vue b/urbanLifelineWeb/packages/workcase/src/views/public/ChatRoom/CommentMessageCard/CommentMessageCard.vue new file mode 100644 index 00000000..ac961f81 --- /dev/null +++ b/urbanLifelineWeb/packages/workcase/src/views/public/ChatRoom/CommentMessageCard/CommentMessageCard.vue @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/urbanLifelineWeb/packages/workcase/src/views/public/workcase/WorkcaseDetail/WorkcaseDetail.vue b/urbanLifelineWeb/packages/workcase/src/views/public/workcase/WorkcaseDetail/WorkcaseDetail.vue index 0b2a50a0..e87b14c2 100644 --- a/urbanLifelineWeb/packages/workcase/src/views/public/workcase/WorkcaseDetail/WorkcaseDetail.vue +++ b/urbanLifelineWeb/packages/workcase/src/views/public/workcase/WorkcaseDetail/WorkcaseDetail.vue @@ -149,8 +149,13 @@
处理记录 - - + + 添加处理记录 @@ -211,14 +216,14 @@ 指派工程师 转派工程师 @@ -293,15 +298,12 @@ interface Props { mode?: 'view' | 'edit' | 'create' workcaseId?: string // 查看/编辑模式传入 workcaseId,组件内部加载数据 roomId?: string // 创建模式传入 roomId - workcase?: TbWorkcaseDTO // 兼容旧用法,直接传入数据 } const props = withDefaults(defineProps(), { mode: 'view', workcaseId: '', - roomId: '', - workcase: () => ({} as TbWorkcaseDTO) -}) + roomId: ''}) const emit = defineEmits<{ cancel: [] @@ -313,7 +315,6 @@ const emit = defineEmits<{ const loading = ref(false) const formData = ref({ - ...props.workcase }) // 故障类型选项(与微信端保持一致) @@ -526,16 +527,7 @@ onMounted(() => { if (props.mode === 'view' || props.mode === 'edit') { // 查看/编辑模式:通过 workcaseId 加载数据 - if (props.workcaseId) { - loadWorkcaseDetail(props.workcaseId) - } else if (props.workcase?.workcaseId) { - // 兼容旧用法 - formData.value = { ...props.workcase } - currentRoomId.value = props.workcase.roomId || '' - if (props.workcase.workcaseId) { - loadProcessList(props.workcase.workcaseId) - } - } + loadWorkcaseDetail(props.workcaseId) } else if (props.mode === 'create') { // 创建模式:初始化空表单,设置 roomId formData.value = { @@ -556,16 +548,10 @@ watch(() => props.workcaseId, (newVal) => { } }) -// 兼容旧用法:监听 workcase prop 变化 -watch(() => props.workcase, (newVal) => { - if (newVal && !props.workcaseId) { - formData.value = { ...newVal } - } -}, { deep: true }) - const statusLabel = (status: string) => { const map: Record = { pending: '待处理', + process: '处理中', processing: '处理中', done: '已完成' } @@ -575,6 +561,7 @@ const statusLabel = (status: string) => { const statusClass = (status: string) => { const map: Record = { pending: 'status-pending', + process: 'status-processing', processing: 'status-processing', done: 'status-done' } @@ -729,8 +716,7 @@ const submitProcessRecord = async () => { try { // 从已上传文件列表获取文件ID const fileIds = processUploadedFiles.value - .map(f => f.fileId) - .filter((id): id is string => !!id) + .map((f: TbSysFileDTO) => f.fileId) // 提交处理记录 const params: TbWorkcaseProcessDTO = { diff --git a/urbanLifelineWeb/packages/workcase_wechat/pages/workcase/workcaseDetail/workcaseDetail.uvue b/urbanLifelineWeb/packages/workcase_wechat/pages/workcase/workcaseDetail/workcaseDetail.uvue index e7d7152e..4d1ff83a 100644 --- a/urbanLifelineWeb/packages/workcase_wechat/pages/workcase/workcaseDetail/workcaseDetail.uvue +++ b/urbanLifelineWeb/packages/workcase_wechat/pages/workcase/workcaseDetail/workcaseDetail.uvue @@ -164,8 +164,8 @@ 处理记录 - - + +