diff --git a/api/work-order-manage/work-order-manage.js b/api/work-order-manage/work-order-manage.js index 0e423b7..36f737d 100644 --- a/api/work-order-manage/work-order-manage.js +++ b/api/work-order-manage/work-order-manage.js @@ -1,11 +1,6 @@ import { post, get, put } from '@/common/utils/request'; - -// /app-api/bpm/garden/workorder/approve 验收通过调用此接口、巡查员结束工单也调用此接口 -// /app-api/bpm/garden/workorder/returnPreviousNode 不通过和退回都使用此接口 - - /** * 获得审批详情 流程节点 * @returns {Promise} @@ -113,7 +108,7 @@ export const workorderCreate = (data) => { /** - * 问题工单创建 大区经理 全域巡查员 ai经理 督查员 + * 问题工单创建 大区经理 ai经理 督查员 * @returns {Promise} */ export const regionmgrWorkorderCreate = (data) => { @@ -121,7 +116,15 @@ export const regionmgrWorkorderCreate = (data) => { }; /** - * app端统一审批入口 -- 大区经理 全域巡查员 ai经理 督查员 + * 问题工单创建 全域巡查员 + * @returns {Promise} + */ +export const qyWorkorderCreate = (data) => { + return post('/app-api/bpm/universal/workorder/create',data); +}; + +/** + * app端统一审批入口 -- 大区经理 ai经理 督查员 * @returns {Promise} */ export const regionmgrUniversalApproval = (params) => { @@ -129,5 +132,15 @@ export const regionmgrUniversalApproval = (params) => { }; +/** + * app端统一审批入口 和大区经理 回退 分配和 全域巡查员 。 + * @returns {Promise} + */ +export const qyUniversalApproval = (params) => { + return post('/app-api/bpm/universal/workorder/universalApproval',params); +}; + + + diff --git a/common/utils/common.js b/common/utils/common.js index b3166a1..8cc8bf9 100644 --- a/common/utils/common.js +++ b/common/utils/common.js @@ -40,6 +40,16 @@ export const nextStepMap = { backShow: false, renewShow: true }, + + regionManager: { + name: '大区经理分配', + btnText: '分配', + operateTypePass: 80, // 大区经理分配:80 + operateTypeNoPass: 90, // 大区经理退回:90 + // operateTypeRenew: 100, //巡查员重新发起:100 + backShow: true, + renewShow: false + }, } @@ -55,6 +65,8 @@ export const buzStatusMap = { "230" : '验收不通过', "140" : '验收通过', "240" : '验收不通过', + '90' : '退回', + '80' : '分配', } diff --git a/pages-sub/problem/regional-order-manage/add-order.vue b/pages-sub/problem/regional-order-manage/add-order.vue index 149cd3b..6a53faa 100644 --- a/pages-sub/problem/regional-order-manage/add-order.vue +++ b/pages-sub/problem/regional-order-manage/add-order.vue @@ -573,7 +573,7 @@ const submitWorkOrder = async () => { lonLatAddress: workOrderForm.workLocation, pressingType: workOrderForm.pressingType, orderName: workOrderForm.orderName, - expectedFinishDate: new Date(workOrderForm.expectedFinishDate).getTime(), + expectedFinishDate: workOrderForm.expectedFinishDate==""?"":new Date(workOrderForm.expectedFinishDate).getTime(), sourceId: 1, sourceName: workOrderForm.busiLineCn, busiLine: busiLineEn diff --git a/pages-sub/problem/regional-order-manage/add-patrol-order.vue b/pages-sub/problem/regional-order-manage/add-patrol-order.vue index b418e2b..aa0e9a2 100644 --- a/pages-sub/problem/regional-order-manage/add-patrol-order.vue +++ b/pages-sub/problem/regional-order-manage/add-patrol-order.vue @@ -9,7 +9,7 @@ > { reason: '重新提交工单', ...commonSubmitData } - res = await regionmgrUniversalApproval(renewSubmitData) + res = await qyUniversalApproval(renewSubmitData) } else { - res = await regionmgrWorkorderCreate(commonSubmitData) + res = await qyWorkorderCreate(commonSubmitData) } uni.hideLoading() diff --git a/pages-sub/problem/regional-order-manage/distribution-order.vue b/pages-sub/problem/regional-order-manage/distribution-order.vue new file mode 100644 index 0000000..f6f99e5 --- /dev/null +++ b/pages-sub/problem/regional-order-manage/distribution-order.vue @@ -0,0 +1,632 @@ + + + + + \ No newline at end of file diff --git a/pages-sub/problem/regional-order-manage/index.vue b/pages-sub/problem/regional-order-manage/index.vue index b779970..d530463 100644 --- a/pages-sub/problem/regional-order-manage/index.vue +++ b/pages-sub/problem/regional-order-manage/index.vue @@ -138,7 +138,7 @@ 工单位置: - {{ item.roadName || '-' }} + {{ item.lonLatAddress || '-' }} 工单名称: @@ -283,7 +283,8 @@ import { myBuzSimplePage, todoBuzSimplePage, doneBuzSimplePage, - universalApproval + universalApproval, + qyUniversalApproval } from '@/api/work-order-manage/work-order-manage' // 从用户store获取角色信息 import { useUserStore } from '@/pinia/user'; @@ -442,7 +443,7 @@ const handleRenew = (item) => { // 3. URL 仅传递「唯一标识」和「重新提交标记」(数据量极小,无长度问题) uni.navigateTo({ - url: `/pages-sub/problem/work-order-manage/add-order?isRenew=1&tempKey=${tempKey}` + url: `/pages-sub/problem/regional-order-manage/add-patrol-order?isRenew=1&tempKey=${tempKey}` }); }; @@ -450,10 +451,23 @@ const handleRenew = (item) => { const handleProcess = async (item) => { console.log(nextStepMap[item.taskKey].name) try { - if (nextStepMap[item.taskKey]?.name == '养护组长分配') { + if (nextStepMap[item.taskKey]?.name == '大区经理分配') { + // ======== 核心修改:大区经理分配 改成和养护员待实施一样的逻辑 start ======== + // ① 生成唯一临时key(统一规则,避免冲突) + const tempKey = `distribute_order_${Date.now()}_${Math.floor(Math.random() * 10000)}`; + // ② 存储完整item到本地缓存(同步存储,确保立即生效) + try { + uni.setStorageSync(tempKey, item); + } catch (error) { + console.error('存储分配工单数据失败:', error); + uni.showToast({title: '数据存储异常,无法跳转', icon: 'none'}); + return; + } + // ③ URL仅传递临时key,无其他冗余参数 uni.navigateTo({ - url: `/pages-sub/problem/work-order-manage/distribution-order?taskId=${item.taskId}&orderNo=${item.orderNo}&id=${item.id}&busiLine=${item.busiLine}` + url: `/pages-sub/problem/regional-order-manage/distribution-order?tempKey=${tempKey}` }) + // ======== 核心修改 end ======== } if (nextStepMap[item.taskKey]?.name == '养护员待实施') { @@ -508,7 +522,7 @@ const handleProcess = async (item) => { "reason": '结束工单' }; // 调用回退工单接口 - const res = await universalApproval(requestData); + const res = await qyUniversalApproval(requestData); uni.showToast({title: '结束成功', icon: 'success', duration: 1000}); rejectModalShow.value = false; paging.value?.reload(); // 刷新列表 @@ -574,7 +588,7 @@ const confirmReject = async () => { "reason": rejectReasonTrim }; // 调用回退工单接口 - const res = await universalApproval(requestData); + const res = await qyUniversalApproval(requestData); uni.showToast({title: '回退成功', icon: 'success', duration: 1000}); rejectModalShow.value = false; paging.value?.reload(); // 刷新列表 @@ -599,7 +613,7 @@ const handleAddOrder = () => { } if(userStore.userInfo?.roles.includes('regional_manager')){ uni.navigateTo({ - url: '/pages-sub/problem/wregional-order-manage/add-order' + url: '/pages-sub/problem/regional-order-manage/add-order' }); } }; @@ -638,7 +652,7 @@ const handleAcceptModalConfirm = async () => { "reason": acceptReason.value.trim() } } - if (currentAcceptItem.value?.taskKey == 'ylInspector') { // 巡查员验收 + if (currentAcceptItem.value?.taskKey == 'ylInspector') { // 全域巡查员验收 postData = { "returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组 "taskKey": currentAcceptItem.value.taskKey, diff --git a/pages-sub/problem/regional-order-manage/order-detail.vue b/pages-sub/problem/regional-order-manage/order-detail.vue index 4190bee..da58ff5 100644 --- a/pages-sub/problem/regional-order-manage/order-detail.vue +++ b/pages-sub/problem/regional-order-manage/order-detail.vue @@ -191,15 +191,20 @@ {{ item.name }} - - {{ - item.tasks && item.tasks[0]?.assigneeUser?.nickname ? '(' + item.tasks[0].assigneeUser.nickname + ')' : '(未知操作人)' - }} - + + + + + + + + 处理人: + {{ item.tasks?.map(itemName => itemName.assigneeUser?.nickname).filter(Boolean).join(',') }} + 处理时间:{{ timeFormat(item.startTime, 'yyyy-mm-dd hh:MM:ss') }} @@ -248,23 +253,23 @@ - - - 回退 - + + + + + - 重新提交 - + + + - {{ - nextStepMap[orderDetail.taskKey].btnText - }} - + + + + - - + + { margin-bottom: 12rpx; .time-line { - margin-bottom: 8rpx; - .processing-tag { color: #f59e0b; margin-left: 10rpx; diff --git a/pages-sub/problem/work-order-manage/add-order.vue b/pages-sub/problem/work-order-manage/add-order.vue index 628bb3d..82f3659 100644 --- a/pages-sub/problem/work-order-manage/add-order.vue +++ b/pages-sub/problem/work-order-manage/add-order.vue @@ -155,7 +155,7 @@ @@ -402,7 +402,7 @@ const echoOrderData = (orderItem) => { workOrderForm.problemDesc = orderItem.remark || ''; workOrderForm.lat = orderItem.lat || 0; workOrderForm.lon = orderItem.lon || 0; - workOrderForm.expectedFinishDate = timeFormat(orderItem.expectedFinishDate, 'yyyy-mm-dd hh:MM:ss') || timeFormat(new Date(), 'yyyy-mm-dd hh:MM:ss'); + workOrderForm.expectedFinishDate = orderItem.expectedFinishDate?timeFormat(orderItem.expectedFinishDate, 'yyyy-mm-dd hh:MM:ss') :''; // 3. 上传图片回显(兼容useUploadImgs格式) if (orderItem.problemsImgs && Array.isArray(orderItem.problemsImgs) && orderItem.problemsImgs.length > 0) { @@ -626,7 +626,7 @@ const submitWorkOrder = async () => { uni.showToast({ title: '业务线选择异常,请重新选择', icon: 'none' }); return; } - + console.log('完成时间:'+workOrderForm.expectedFinishDate) // 构建公共提交数据 const commonSubmitData = { roadId: workOrderForm.roadId, @@ -639,12 +639,14 @@ const submitWorkOrder = async () => { lonLatAddress: workOrderForm.workLocation, pressingType: workOrderForm.pressingType, orderName: workOrderForm.orderName, - expectedFinishDate: new Date(workOrderForm.expectedFinishDate).getTime(), + expectedFinishDate:workOrderForm.expectedFinishDate=="" ?"": new Date(workOrderForm.expectedFinishDate).getTime(), sourceId: 1, sourceName: workOrderForm.busiLineCn, // 从form字段获取业务线中文名称 busiLine: busiLineEn // 传递英文标识(yl/sz/wy),接口正常使用 } - + console.log('工单数据') + console.log('完成时间:'+workOrderForm.expectedFinishDate) + console.log(commonSubmitData) // 显示加载中 uni.showLoading({ title: '提交中...' }) let res @@ -659,7 +661,7 @@ const submitWorkOrder = async () => { taskId: renewOrderData.value.taskId, operateType: nextStepMap[renewOrderData.value.taskKey]?.operateTypeRenew || '', agree: 0, - reason: '重新提交工单', + reason: workOrderForm.problemDesc.trim(), // 新编辑的工单数据 ...commonSubmitData } diff --git a/pages-sub/problem/work-order-manage/order-detail.vue b/pages-sub/problem/work-order-manage/order-detail.vue index 8c9f022..6554027 100644 --- a/pages-sub/problem/work-order-manage/order-detail.vue +++ b/pages-sub/problem/work-order-manage/order-detail.vue @@ -111,7 +111,7 @@ {{ item.name }} - - {{ - item.tasks && item.tasks[0]?.assigneeUser?.nickname ? '(' + item.tasks[0].assigneeUser.nickname + ')' : '(未知操作人)' - }} - + + + + + + + + 处理人: + {{ item.tasks?.map(itemName => itemName.assigneeUser?.nickname).filter(Boolean).join(',') }} + 处理时间:{{ timeFormat(item.startTime, 'yyyy-mm-dd hh:MM:ss') }} @@ -962,7 +967,6 @@ onShow(() => { margin-bottom: 12rpx; .time-line { - margin-bottom: 8rpx; .processing-tag { color: #f59e0b; diff --git a/pages.json b/pages.json index 050a0dc..b70529f 100644 --- a/pages.json +++ b/pages.json @@ -158,6 +158,11 @@ "path": "regional-order-manage/add-order", "style": { "navigationBarTitleText": "待派单" } }, + { + "path": "regional-order-manage/distribution-order", + "style": { "navigationBarTitleText": "分配工单" } + }, + { "path": "regional-order-manage/add-patrol-order",