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 @@
处理记录
-
-
+
+