Commit 2e2b95d37d97ede62b86047b9339ec4046d26307

Authored by 刘淇
1 parent eaaa8665

修改接口路径 和命名

api/regional-order-manage/regional-order-manage.js
  1 +import { post, get, put } from '@/common/utils/request';
  2 +
  3 +
  4 +/**
  5 + * 获得审批详情 流程节点
  6 + * @returns {Promise}
  7 + */
  8 +export const getApprovalDetail = (params) => {
  9 + return get('/app-api/bpm/garden/workorder/getApprovalDetail',params);
  10 +};
  11 +
  12 +
  13 +
  14 +/**
  15 + * 获得园林养护员列表、共同处理人也调用此接口
  16 + * @returns {Promise}
  17 + */
  18 +export const getYlWorkersPage = (params) => {
  19 + return get('/app-api/bpm/garden/workorder/getYlWorkersPage',params);
  20 +};
  21 +
  22 +
  23 +/**
  24 + * 我发起的列表-工单详情
  25 + * @returns {Promise}
  26 + */
  27 +export const getMyTaskDetail = (params) => {
  28 + return get('/app-api/bpm/garden/workorder/getMyTaskDetail',params);
  29 +};
  30 +
  31 +
  32 +/**
  33 + * 已办列表-工单详情
  34 + * @returns {Promise}
  35 + */
  36 +export const getDoneTaskDetail = (params) => {
  37 + return get('/app-api/bpm/garden/workorder/getDoneTaskDetail',params);
  38 +};
  39 +
  40 +/**
  41 + * 待办列表-工单详情
  42 + * @returns {Promise}
  43 + */
  44 +export const getTodoTaskDetail = (params) => {
  45 + return get('/app-api/bpm/garden/workorder/getTodoTaskDetail',params);
  46 +};
  47 +
  48 +
  49 +/**
  50 + * 我发起的列表
  51 + * @returns {Promise}
  52 + */
  53 +export const myBuzSimplePage = (params) => {
  54 + return get('/app-api/bpm/garden/workorder/myBuzSimplePage',params);
  55 +};
  56 +
  57 +/**
  58 + * 已办汇总
  59 + * @returns {Promise}
  60 + */
  61 +export const doneBuzSimplePage = (params) => {
  62 + return get('/app-api/bpm/garden/workorder/doneBuzSimplePage',params);
  63 +};
  64 +
  65 +
  66 +
  67 +/**
  68 + * 待办汇总
  69 + * @returns {Promise}
  70 + */
  71 +export const todoBuzSimplePage = (params) => {
  72 + return get('/app-api/bpm/garden/workorder/todoBuzSimplePage',params);
  73 +};
  74 +
  75 +
  76 +
  77 +
  78 +/**
  79 + * 问题工单创建 大区经理
  80 + * @returns {Promise}
  81 + */
  82 +export const daquWorkorderCreate = (data) => {
  83 + return post('/app-api/bpm/regionmgr/workorder/create',data);
  84 +
  85 +};
  86 +
  87 +/**
  88 + * app端统一审批入口 -- 大区经理
  89 + * @returns {Promise}
  90 + */
  91 +export const daquUniversalApproval = (params) => {
  92 + return post('/app-api/bpm/regionmgr/workorder/universalApproval',params);
  93 +};
  94 +
  95 +
  96 +/**
  97 + * 问题工单创建 全域巡查员
  98 + * @returns {Promise}
  99 + */
  100 +export const qyWorkorderCreate = (data) => {
  101 + return post('/app-api/bpm/universal/workorder/create',data);
  102 +};
  103 +
  104 +
  105 +
  106 +/**
  107 + * app端统一审批入口 大区经理 对全域巡查员 单子 回退 分配和 全域巡查员 。
  108 + * @returns {Promise}
  109 + */
  110 +export const qyUniversalApproval = (params) => {
  111 + return post('/app-api/bpm/universal/workorder/universalApproval',params);
  112 +};
  113 +
  114 +/**
  115 + * 问题工单创建 全域督察员创建工单
  116 + * @returns {Promise}
  117 + */
  118 +export const dcyWorkorderCreate = (data) => {
  119 + return post('/app-api/bpm/inspector/workorder/create',data);
  120 +};
  121 +
  122 +
  123 +/**
  124 + * 问题工单创建 全域督察员发起审批入口 ,大区经理对督察员的单子 回退 分配
  125 + * @returns {Promise}
  126 + */
  127 +export const dcyUniversalApproval = (data) => {
  128 + return post('/app-api/bpm/inspector/workorder/universalApproval',data);
  129 +};
  130 +
  131 +
  132 +
  133 +
  134 +
  135 +
  136 +
  137 +
api/work-order-manage/work-order-manage.js
@@ -107,58 +107,6 @@ export const workorderCreate = (data) => { @@ -107,58 +107,6 @@ export const workorderCreate = (data) => {
107 }; 107 };
108 108
109 109
110 -/**  
111 - * 问题工单创建 大区经理 ai经理  
112 - * @returns {Promise}  
113 - */  
114 -export const regionmgrWorkorderCreate = (data) => {  
115 - return post('/app-api/bpm/regionmgr/workorder/create',data);  
116 -};  
117 -  
118 -/**  
119 - * 问题工单创建 全域巡查员  
120 - * @returns {Promise}  
121 - */  
122 -export const qyWorkorderCreate = (data) => {  
123 - return post('/app-api/bpm/universal/workorder/create',data);  
124 -};  
125 -  
126 -/**  
127 - * app端统一审批入口 -- 大区经理 ai经理  
128 - * @returns {Promise}  
129 - */  
130 -export const regionmgrUniversalApproval = (params) => {  
131 - return post('/app-api/bpm/regionmgr/workorder/universalApproval',params);  
132 -};  
133 -  
134 -  
135 -/**  
136 - * app端统一审批入口 大区经理 回退 分配和 全域巡查员 。  
137 - * @returns {Promise}  
138 - */  
139 -export const qyUniversalApproval = (params) => {  
140 - return post('/app-api/bpm/universal/workorder/universalApproval',params);  
141 -};  
142 -  
143 -/**  
144 - * 问题工单创建 全域督察员创建工单  
145 - * @returns {Promise}  
146 - */  
147 -export const inspectorWorkorderCreate = (data) => {  
148 - return post('/app-api/bpm/inspector/workorder/create',data);  
149 -};  
150 -  
151 -  
152 -/**  
153 - * 问题工单创建 全域督察员发起审批入口  
154 - * @returns {Promise}  
155 - */  
156 -export const inspectorUniversalApproval = (data) => {  
157 - return post('/app-api/bpm/inspector/workorder/universalApproval',data);  
158 -};  
159 -  
160 -  
161 -  
162 110
163 111
164 112
common/utils/common.js
@@ -50,6 +50,17 @@ export const nextStepMap = { @@ -50,6 +50,17 @@ export const nextStepMap = {
50 backShow: true, 50 backShow: true,
51 renewShow: false 51 renewShow: false
52 }, 52 },
  53 +
  54 +
  55 + shRegionManager: {
  56 + name: '督察员单子大区经理分配',
  57 + btnText: '分配',
  58 + operateTypePass: 60, // 大区经理分配:60
  59 + operateTypeNoPass: 70, // 大区经理退回:70
  60 + // operateTypeRenew: 100, //巡查员重新发起:100
  61 + backShow: true,
  62 + renewShow: false
  63 + },
53 } 64 }
54 65
55 66
@@ -67,6 +78,8 @@ export const buzStatusMap = { @@ -67,6 +78,8 @@ export const buzStatusMap = {
67 "240" : '验收不通过', 78 "240" : '验收不通过',
68 '90' : '退回', 79 '90' : '退回',
69 '80' : '分配', 80 '80' : '分配',
  81 + '70': '退回',
  82 + '60': '分配',
70 } 83 }
71 84
72 85
pages-sub/problem/regional-order-manage/add-order.vue
@@ -203,10 +203,13 @@ import { ref, reactive } from 'vue' @@ -203,10 +203,13 @@ import { ref, reactive } from 'vue'
203 import { onReady, onShow, onLoad } from '@dcloudio/uni-app'; 203 import { onReady, onShow, onLoad } from '@dcloudio/uni-app';
204 import { useUploadImgs } from '@/common/utils/useUploadImgs' 204 import { useUploadImgs } from '@/common/utils/useUploadImgs'
205 import { getRoadListByLatLng } from '@/api/common' 205 import { getRoadListByLatLng } from '@/api/common'
206 -import { regionmgrUniversalApproval, regionmgrWorkorderCreate, inspectorWorkorderCreate } from '@/api/work-order-manage/work-order-manage' 206 +import { daquUniversalApproval, qyUniversalApproval,
  207 + dcyUniversalApproval, daquWorkorderCreate,
  208 + dcyWorkorderCreate } from '@/api/regional-order-manage/regional-order-manage'
207 import { timeFormat } from '@/uni_modules/uview-plus' 209 import { timeFormat } from '@/uni_modules/uview-plus'
208 import { nextStepMap } from '@/common/utils/common' 210 import { nextStepMap } from '@/common/utils/common'
209 import { useUserStore } from '@/pinia/user'; 211 import { useUserStore } from '@/pinia/user';
  212 +import { qyWorkorderCreate } from "../../../api/regional-order-manage/regional-order-manage";
210 213
211 // ========== 状态管理 ========== 214 // ========== 状态管理 ==========
212 const userStore = useUserStore(); 215 const userStore = useUserStore();
@@ -330,6 +333,7 @@ onLoad((options) => { @@ -330,6 +333,7 @@ onLoad((options) => {
330 333
331 try { 334 try {
332 const orderData = uni.getStorageSync(tempKey); 335 const orderData = uni.getStorageSync(tempKey);
  336 + console.log(orderData)
333 if (orderData && typeof orderData === 'object') { 337 if (orderData && typeof orderData === 'object') {
334 renewOrderData.value = orderData; 338 renewOrderData.value = orderData;
335 echoOrderData(renewOrderData.value); 339 echoOrderData(renewOrderData.value);
@@ -562,11 +566,19 @@ const submitWorkOrder = async () => { @@ -562,11 +566,19 @@ const submitWorkOrder = async () => {
562 return; 566 return;
563 } 567 }
564 568
565 -  
566 -  
567 const commonSubmitData = { 569 const commonSubmitData = {
568 roadId: workOrderForm.roadId, 570 roadId: workOrderForm.roadId,
569 roadName: workOrderForm.roadName, 571 roadName: workOrderForm.roadName,
  572 +
  573 + // roadId: 550,
  574 + // roadName:'东明胡同(三海)',
  575 +
  576 + // roadId: 551,
  577 + // roadName:'地安门西大街51号',
  578 + //
  579 + // roadId: 553,
  580 + // roadName:'什刹海前海南沿',
  581 +
570 problemsImgs: problemImgs.getSuccessImgUrls(), 582 problemsImgs: problemImgs.getSuccessImgUrls(),
571 remark: workOrderForm.problemDesc.trim(), 583 remark: workOrderForm.problemDesc.trim(),
572 latLonType: 2, 584 latLonType: 2,
@@ -594,15 +606,34 @@ const submitWorkOrder = async () => { @@ -594,15 +606,34 @@ const submitWorkOrder = async () => {
594 reason: '重新提交工单', 606 reason: '重新提交工单',
595 ...commonSubmitData 607 ...commonSubmitData
596 } 608 }
597 - res = await regionmgrUniversalApproval(renewSubmitData) 609 +
  610 + if( userStore.userInfo.roles.includes('regional_manager')){ // 大区经理
  611 + res = await daquUniversalApproval(renewSubmitData)
  612 + }
  613 +
  614 + if( userStore.userInfo.roles.includes('Inspector_global')){ // 督察员
  615 + res = await dcyUniversalApproval(renewSubmitData)
  616 + }
  617 +
  618 + if( userStore.userInfo.roles.includes('patrol_global')){ // 全域巡查员
  619 + res = await qyUniversalApproval(renewSubmitData)
  620 + }
  621 +
598 } else { 622 } else {
599 623
600 - if( userStore.userInfo.roles.includes('team_leader_yl')){ // 督察员  
601 - res = await inspectorWorkorderCreate(commonSubmitData)  
602 - }else{  
603 - res = await regionmgrWorkorderCreate(commonSubmitData) 624 + if( userStore.userInfo.roles.includes('regional_manager')){ // 大区经理
  625 + res = await daquWorkorderCreate(commonSubmitData)
  626 + }
  627 +
  628 + if( userStore.userInfo.roles.includes('Inspector_global')){ // 督察员
  629 + res = await dcyWorkorderCreate(commonSubmitData)
  630 + }
  631 +
  632 + if( userStore.userInfo.roles.includes('patrol_global')){ // 全域巡查员
  633 + res = await qyWorkorderCreate(commonSubmitData)
604 } 634 }
605 635
  636 +
606 } 637 }
607 638
608 uni.hideLoading() 639 uni.hideLoading()
pages-sub/problem/regional-order-manage/add-patrol-order.vue
@@ -103,7 +103,7 @@ @@ -103,7 +103,7 @@
103 import { ref, reactive } from 'vue' 103 import { ref, reactive } from 'vue'
104 import { onReady, onShow, onLoad } from '@dcloudio/uni-app'; 104 import { onReady, onShow, onLoad } from '@dcloudio/uni-app';
105 import { useUploadImgs } from '@/common/utils/useUploadImgs' 105 import { useUploadImgs } from '@/common/utils/useUploadImgs'
106 -import { qyUniversalApproval, qyWorkorderCreate } from '@/api/work-order-manage/work-order-manage' 106 +import { qyUniversalApproval, qyWorkorderCreate } from '@/api/regional-order-manage/regional-order-manage'
107 import { timeFormat } from '@/uni_modules/uview-plus' 107 import { timeFormat } from '@/uni_modules/uview-plus'
108 import { nextStepMap } from '@/common/utils/common' 108 import { nextStepMap } from '@/common/utils/common'
109 import { useUserStore } from '@/pinia/user'; 109 import { useUserStore } from '@/pinia/user';
pages-sub/problem/regional-order-manage/distribution-order.vue
@@ -197,7 +197,7 @@ import { ref, reactive } from 'vue' @@ -197,7 +197,7 @@ import { ref, reactive } from 'vue'
197 import { onReady, onShow, onLoad } from '@dcloudio/uni-app'; 197 import { onReady, onShow, onLoad } from '@dcloudio/uni-app';
198 import { useUploadImgs } from '@/common/utils/useUploadImgs' 198 import { useUploadImgs } from '@/common/utils/useUploadImgs'
199 import { getRoadListByLatLng } from '@/api/common' 199 import { getRoadListByLatLng } from '@/api/common'
200 -import { regionmgrUniversalApproval, regionmgrWorkorderCreate, qyUniversalApproval } from '@/api/work-order-manage/work-order-manage' 200 +import { daquUniversalApproval, daquWorkorderCreate, qyUniversalApproval } from '@/api/regional-order-manage/regional-order-manage'
201 import { timeFormat } from '@/uni_modules/uview-plus' 201 import { timeFormat } from '@/uni_modules/uview-plus'
202 import { nextStepMap } from '@/common/utils/common' 202 import { nextStepMap } from '@/common/utils/common'
203 import { useUserStore } from '@/pinia/user'; 203 import { useUserStore } from '@/pinia/user';
@@ -338,7 +338,7 @@ onLoad((options) => { @@ -338,7 +338,7 @@ onLoad((options) => {
338 setTimeout(() => uni.navigateBack(), 1000); 338 setTimeout(() => uni.navigateBack(), 1000);
339 return; 339 return;
340 } finally { 340 } finally {
341 - // uni.removeStorageSync(tempKey); // 调试完 打开 341 + uni.removeStorageSync(tempKey); // 调试完 打开
342 } 342 }
343 } 343 }
344 }); 344 });
pages-sub/problem/regional-order-manage/index.vue
@@ -94,7 +94,7 @@ @@ -94,7 +94,7 @@
94 </view> 94 </view>
95 <view class="u-body-item u-flex"> 95 <view class="u-body-item u-flex">
96 <view class="u-body-item-title">工单状态:</view> 96 <view class="u-body-item-title">工单状态:</view>
97 - <view class="u-line-1 u-body-value">{{buzStatusMap[item.buzStatus] }}</view> 97 + <view class="u-line-1 u-body-value">{{ buzStatusMap[item.buzStatus] }}</view>
98 </view> 98 </view>
99 <view class="u-body-item u-flex"> 99 <view class="u-body-item u-flex">
100 <view class="u-body-item-title">提交时间:</view> 100 <view class="u-body-item-title">提交时间:</view>
@@ -150,7 +150,8 @@ @@ -150,7 +150,8 @@
150 </view> 150 </view>
151 151
152 <view class="u-body-item u-flex common-justify-between common-item-center"> 152 <view class="u-body-item u-flex common-justify-between common-item-center">
153 - <view class="u-body-item-title">紧急程度:{{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) }} 153 + <view class="u-body-item-title">
  154 + 紧急程度:{{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) }}
154 </view> 155 </view>
155 <view class=" "> 156 <view class=" ">
156 <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button> 157 <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button>
@@ -158,7 +159,7 @@ @@ -158,7 +159,7 @@
158 </view> 159 </view>
159 <view class="u-body-item u-flex"> 160 <view class="u-body-item u-flex">
160 <view class="u-body-item-title">工单状态:</view> 161 <view class="u-body-item-title">工单状态:</view>
161 - <view class="u-line-1 u-body-value">{{buzStatusMap[item.buzStatus] }}</view> 162 + <view class="u-line-1 u-body-value">{{ buzStatusMap[item.buzStatus] }}</view>
162 </view> 163 </view>
163 <view class="u-body-item u-flex"> 164 <view class="u-body-item u-flex">
164 <view class="u-body-item-title">提交时间:</view> 165 <view class="u-body-item-title">提交时间:</view>
@@ -171,11 +172,11 @@ @@ -171,11 +172,11 @@
171 </z-paging> 172 </z-paging>
172 173
173 <!-- 底部新增工单按钮(仅巡查员显示) --> 174 <!-- 底部新增工单按钮(仅巡查员显示) -->
174 -<!-- <view v-if="isInspector" class="fixed-bottom-btn-wrap">-->  
175 -<!-- <up-button type="primary" size="large" @click="handleAddOrder">-->  
176 -<!-- 新增工单-->  
177 -<!-- </up-button>-->  
178 -<!-- </view>--> 175 + <!-- <view v-if="isInspector" class="fixed-bottom-btn-wrap">-->
  176 + <!-- <up-button type="primary" size="large" @click="handleAddOrder">-->
  177 + <!-- 新增工单-->
  178 + <!-- </up-button>-->
  179 + <!-- </view>-->
179 180
180 <view class="fixed-bottom-btn-wrap" v-if="isInspector"> 181 <view class="fixed-bottom-btn-wrap" v-if="isInspector">
181 <up-button type="primary" size="large" @click="handleAddOrder"> 182 <up-button type="primary" size="large" @click="handleAddOrder">
@@ -283,14 +284,15 @@ import { @@ -283,14 +284,15 @@ import {
283 todoBuzSimplePage, 284 todoBuzSimplePage,
284 doneBuzSimplePage, 285 doneBuzSimplePage,
285 universalApproval, 286 universalApproval,
286 - qyUniversalApproval  
287 -} from '@/api/work-order-manage/work-order-manage' 287 + qyUniversalApproval,
  288 + daquUniversalApproval,
  289 + dcyUniversalApproval
  290 +} from '@/api/regional-order-manage/regional-order-manage'
288 // 从用户store获取角色信息 291 // 从用户store获取角色信息
289 import { useUserStore } from '@/pinia/user'; 292 import { useUserStore } from '@/pinia/user';
290 import { nextStepMap, buzStatusMap } from '@/common/utils/common' 293 import { nextStepMap, buzStatusMap } from '@/common/utils/common'
291 // 引入图片上传组合式函数(与参考页面一致) 294 // 引入图片上传组合式函数(与参考页面一致)
292 import { useUploadImgs } from '@/common/utils/useUploadImgs' 295 import { useUploadImgs } from '@/common/utils/useUploadImgs'
293 -  
294 // ========== 状态管理 ========== 296 // ========== 状态管理 ==========
295 const userStore = useUserStore(); 297 const userStore = useUserStore();
296 // 标签页切换 298 // 标签页切换
@@ -325,7 +327,6 @@ const isInspector = computed(() =&gt; { @@ -325,7 +327,6 @@ const isInspector = computed(() =&gt; {
325 const rejectModalShow = ref(false); // 回退modal显示开关 327 const rejectModalShow = ref(false); // 回退modal显示开关
326 const rejectReason = ref(''); // 回退原因 328 const rejectReason = ref(''); // 回退原因
327 const currentRejectItem = ref(null); // 当前回退工单 329 const currentRejectItem = ref(null); // 当前回退工单
328 -  
329 // 回退图片上传配置(与参考页面风格一致) 330 // 回退图片上传配置(与参考页面风格一致)
330 const rejectImgs = useUploadImgs({ 331 const rejectImgs = useUploadImgs({
331 maxCount: 3, // 最多上传3张 332 maxCount: 3, // 最多上传3张
@@ -334,14 +335,11 @@ const rejectImgs = useUploadImgs({ @@ -334,14 +335,11 @@ const rejectImgs = useUploadImgs({
334 formRef: null, // 该弹窗无表单校验 335 formRef: null, // 该弹窗无表单校验
335 fieldName: 'rejectImgs' // 自定义字段名 336 fieldName: 'rejectImgs' // 自定义字段名
336 }) 337 })
337 -  
338 -  
339 // ========== 验收弹窗相关状态(含图片上传) ========== 338 // ========== 验收弹窗相关状态(含图片上传) ==========
340 const acceptModalShow = ref(false); // 验收弹窗显示开关 339 const acceptModalShow = ref(false); // 验收弹窗显示开关
341 const acceptRadioValue = ref('0'); // 单选框值,默认0(通过) 340 const acceptRadioValue = ref('0'); // 单选框值,默认0(通过)
342 const acceptReason = ref(''); // 验收原因 341 const acceptReason = ref(''); // 验收原因
343 const currentAcceptItem = ref(null); // 当前验收的工单项 342 const currentAcceptItem = ref(null); // 当前验收的工单项
344 -  
345 // 验收图片上传配置(独立实例,参考回退弹窗) 343 // 验收图片上传配置(独立实例,参考回退弹窗)
346 const acceptImgs = useUploadImgs({ 344 const acceptImgs = useUploadImgs({
347 maxCount: 3, // 最多上传3张,与回退弹窗一致 345 maxCount: 3, // 最多上传3张,与回退弹窗一致
@@ -350,7 +348,6 @@ const acceptImgs = useUploadImgs({ @@ -350,7 +348,6 @@ const acceptImgs = useUploadImgs({
350 formRef: null, // 验收弹窗无表单校验 348 formRef: null, // 验收弹窗无表单校验
351 fieldName: 'acceptImgs' // 自定义字段名,区分回退图片 349 fieldName: 'acceptImgs' // 自定义字段名,区分回退图片
352 }) 350 })
353 -  
354 // 分页查询列表 351 // 分页查询列表
355 const queryList = async (pageNo, pageSize) => { 352 const queryList = async (pageNo, pageSize) => {
356 try { 353 try {
@@ -379,7 +376,6 @@ const queryList = async (pageNo, pageSize) =&gt; { @@ -379,7 +376,6 @@ const queryList = async (pageNo, pageSize) =&gt; {
379 uni.showToast({title: '加载失败,请重试', icon: 'none'}); 376 uni.showToast({title: '加载失败,请重试', icon: 'none'});
380 } 377 }
381 }; 378 };
382 -  
383 // ========== 事件处理 ========== 379 // ========== 事件处理 ==========
384 // 标签页切换 380 // 标签页切换
385 const handleTabChange = (item) => { 381 const handleTabChange = (item) => {
@@ -414,24 +410,19 @@ const handleDetail = (item) =&gt; { @@ -414,24 +410,19 @@ const handleDetail = (item) =&gt; {
414 } 410 }
415 }); 411 });
416 }; 412 };
417 -  
418 // 生成临时key 413 // 生成临时key
419 const generateTempKey = () => { 414 const generateTempKey = () => {
420 return 'renew_order_' + Date.now() + '_' + Math.floor(Math.random() * 10000); 415 return 'renew_order_' + Date.now() + '_' + Math.floor(Math.random() * 10000);
421 }; 416 };
422 -  
423 // 待办-重新提交工单(改造后:大数据存本地,仅传唯一标识) 417 // 待办-重新提交工单(改造后:大数据存本地,仅传唯一标识)
424 const handleRenew = (item) => { 418 const handleRenew = (item) => {
425 - // 校验工单有效性  
426 - if (!item || !item.id) {  
427 - uni.showToast({title: '工单信息异常,无法重新提交', icon: 'none'});  
428 - return;  
429 - }  
430 419
431 // 1. 生成唯一临时标识 420 // 1. 生成唯一临时标识
432 const tempKey = generateTempKey(); 421 const tempKey = generateTempKey();
433 // 2. 将完整工单数据存入本地临时存储(同步存储,确保数据立即生效) 422 // 2. 将完整工单数据存入本地临时存储(同步存储,确保数据立即生效)
434 try { 423 try {
  424 + console.log(item)
  425 + console.log('123')
435 uni.setStorageSync(tempKey, item); 426 uni.setStorageSync(tempKey, item);
436 } catch (error) { 427 } catch (error) {
437 console.error('存储工单数据失败:', error); 428 console.error('存储工单数据失败:', error);
@@ -439,12 +430,26 @@ const handleRenew = (item) =&gt; { @@ -439,12 +430,26 @@ const handleRenew = (item) =&gt; {
439 return; 430 return;
440 } 431 }
441 432
442 - // 3. URL 仅传递「唯一标识」和「重新提交标记」(数据量极小,无长度问题)  
443 - uni.navigateTo({  
444 - url: `/pages-sub/problem/regional-order-manage/add-patrol-order?isRenew=1&tempKey=${tempKey}`  
445 - }); 433 + if (userStore.userInfo?.roles.includes('patrol_global')) { // 全域巡查员
  434 + uni.navigateTo({
  435 + url: `/pages-sub/problem/regional-order-manage/add-patrol-order?isRenew=1&tempKey=${tempKey}`
  436 + });
  437 + }
  438 + if (userStore.userInfo?.roles.includes('regional_manager')) { // 大区经理
  439 + uni.navigateTo({
  440 + url: `/pages-sub/problem/regional-order-manage/add-order?isRenew=1&tempKey=${tempKey}`
  441 + });
  442 + }
  443 + if (userStore.userInfo?.roles.includes('Inspector_global')) { // 督察员
  444 + uni.navigateTo({
  445 + url: `/pages-sub/problem/regional-order-manage/add-order?isRenew=1&tempKey=${tempKey}`
  446 + });
  447 + }
  448 + // // 3. URL 仅传递「唯一标识」和「重新提交标记」(数据量极小,无长度问题)
  449 + // uni.navigateTo({
  450 + // url: `/pages-sub/problem/regional-order-manage/add-patrol-order?isRenew=1&tempKey=${tempKey}`
  451 + // });
446 }; 452 };
447 -  
448 // 待办-处理工单 453 // 待办-处理工单
449 const handleProcess = async (item) => { 454 const handleProcess = async (item) => {
450 console.log(nextStepMap[item.taskKey].name) 455 console.log(nextStepMap[item.taskKey].name)
@@ -465,10 +470,29 @@ const handleProcess = async (item) =&gt; { @@ -465,10 +470,29 @@ const handleProcess = async (item) =&gt; {
465 url: `/pages-sub/problem/regional-order-manage/distribution-order?tempKey=${tempKey}` 470 url: `/pages-sub/problem/regional-order-manage/distribution-order?tempKey=${tempKey}`
466 }) 471 })
467 } 472 }
  473 + if (nextStepMap[item.taskKey]?.name == '督察员单子大区经理分配') {
  474 + let postData = {
  475 + "taskKey":item.taskKey,
  476 + "taskId": item.taskId,
  477 + "operateType":60,
  478 + "workerDataId":item.id,
  479 + "agree":0,
  480 + "reason":item.remark,
  481 + "roadId":item.roadId,
  482 + "roadName":item.roadName,
  483 + "pressingType":item.pressingType,
  484 + "orderName":item.orderName,
  485 + "expectedFinishDate": item.expectedFinishDate,
  486 + "busiLine":item.busiLine,
  487 + }
  488 + const res = await dcyUniversalApproval(postData);
  489 + uni.showToast({title: '分配成功', icon: 'success', duration: 1000});
  490 + paging.value?.reload(); // 刷新列表
  491 + }
  492 +
468 if (nextStepMap[item.taskKey]?.name == '养护员待实施') { 493 if (nextStepMap[item.taskKey]?.name == '养护员待实施') {
469 // ① 生成唯一临时key(和重新提交工单逻辑一致,避免冲突) 494 // ① 生成唯一临时key(和重新提交工单逻辑一致,避免冲突)
470 const tempKey = `maintain_order_${Date.now()}_${Math.floor(Math.random() * 10000)}`; 495 const tempKey = `maintain_order_${Date.now()}_${Math.floor(Math.random() * 10000)}`;
471 -  
472 // ② 存储完整item到本地缓存(同步存储,确保立即生效) 496 // ② 存储完整item到本地缓存(同步存储,确保立即生效)
473 try { 497 try {
474 uni.setStorageSync(tempKey, item); 498 uni.setStorageSync(tempKey, item);
@@ -477,7 +501,6 @@ const handleProcess = async (item) =&gt; { @@ -477,7 +501,6 @@ const handleProcess = async (item) =&gt; {
477 uni.showToast({title: '数据存储异常,无法跳转', icon: 'none'}); 501 uni.showToast({title: '数据存储异常,无法跳转', icon: 'none'});
478 return; 502 return;
479 } 503 }
480 -  
481 // ③ URL仅传递临时key(可选:携带必要简单参数,方便目标页面快速使用) 504 // ③ URL仅传递临时key(可选:携带必要简单参数,方便目标页面快速使用)
482 uni.navigateTo({ 505 uni.navigateTo({
483 url: `/pages-sub/problem/regional-order-manage/add-maintain-order?tempKey=${tempKey}` 506 url: `/pages-sub/problem/regional-order-manage/add-maintain-order?tempKey=${tempKey}`
@@ -497,7 +520,6 @@ const handleProcess = async (item) =&gt; { @@ -497,7 +520,6 @@ const handleProcess = async (item) =&gt; {
497 acceptRadioValue.value = '0'; // 重置默认选中“通过” 520 acceptRadioValue.value = '0'; // 重置默认选中“通过”
498 acceptModalShow.value = true; // 显示验收弹窗 521 acceptModalShow.value = true; // 显示验收弹窗
499 } 522 }
500 -  
501 // 发起人确认 523 // 发起人确认
502 if (nextStepMap[item.taskKey]?.name == '发起人确认') { 524 if (nextStepMap[item.taskKey]?.name == '发起人确认') {
503 console.log(item) 525 console.log(item)
@@ -510,7 +532,7 @@ const handleProcess = async (item) =&gt; { @@ -510,7 +532,7 @@ const handleProcess = async (item) =&gt; {
510 const requestData = { 532 const requestData = {
511 "returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL 533 "returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL
512 "workerDataId": item.id, 534 "workerDataId": item.id,
513 - "taskKey":'ylInspectorStart', 535 + "taskKey": 'ylInspectorStart',
514 "taskId": item.taskId, 536 "taskId": item.taskId,
515 "operateType": 200, 537 "operateType": 200,
516 "agree": 1, 538 "agree": 1,
@@ -532,7 +554,6 @@ const handleProcess = async (item) =&gt; { @@ -532,7 +554,6 @@ const handleProcess = async (item) =&gt; {
532 uni.showToast({title: '处理失败,请重试', icon: 'none'}); 554 uni.showToast({title: '处理失败,请重试', icon: 'none'});
533 } 555 }
534 }; 556 };
535 -  
536 // 待办-回退工单(打开回退modal) 557 // 待办-回退工单(打开回退modal)
537 const handleReject = (item) => { 558 const handleReject = (item) => {
538 console.log('123213') 559 console.log('123213')
@@ -546,14 +567,12 @@ const handleReject = (item) =&gt; { @@ -546,14 +567,12 @@ const handleReject = (item) =&gt; {
546 rejectImgs.clearImgs(); // 改造后:使用组合式函数的清空方法 567 rejectImgs.clearImgs(); // 改造后:使用组合式函数的清空方法
547 rejectModalShow.value = true; // 显示回退modal 568 rejectModalShow.value = true; // 显示回退modal
548 }; 569 };
549 -  
550 // 回退modal - 取消按钮 570 // 回退modal - 取消按钮
551 const handleRejectModalCancel = () => { 571 const handleRejectModalCancel = () => {
552 rejectModalShow.value = false; 572 rejectModalShow.value = false;
553 rejectReason.value = ''; 573 rejectReason.value = '';
554 rejectImgs.clearImgs(); // 改造后:使用组合式函数的清空方法 574 rejectImgs.clearImgs(); // 改造后:使用组合式函数的清空方法
555 }; 575 };
556 -  
557 // 确认回退工单 576 // 确认回退工单
558 const confirmReject = async () => { 577 const confirmReject = async () => {
559 // 严格校验回退原因(去除首尾空格) 578 // 严格校验回退原因(去除首尾空格)
@@ -564,26 +583,32 @@ const confirmReject = async () =&gt; { @@ -564,26 +583,32 @@ const confirmReject = async () =&gt; {
564 } 583 }
565 // 校验当前工单有效性 584 // 校验当前工单有效性
566 if (!currentRejectItem.value || !currentRejectItem.value.id) { 585 if (!currentRejectItem.value || !currentRejectItem.value.id) {
567 - uni.showToast({title: '工单信息异常,无法提交', icon: 'none', duration:1000}); 586 + uni.showToast({title: '工单信息异常,无法提交', icon: 'none', duration: 1000});
568 rejectModalShow.value = false; 587 rejectModalShow.value = false;
569 return; 588 return;
570 } 589 }
571 try { 590 try {
572 // 显示加载中,防止重复提交 591 // 显示加载中,防止重复提交
573 uni.showLoading({title: '提交中...', mask: true}); 592 uni.showLoading({title: '提交中...', mask: true});
574 -  
575 // 构建请求参数 593 // 构建请求参数
576 const requestData = { 594 const requestData = {
577 "returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL数组 595 "returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL数组
578 "workerDataId": currentRejectItem.value.id, 596 "workerDataId": currentRejectItem.value.id,
579 "taskKey": currentRejectItem.value.taskKey, 597 "taskKey": currentRejectItem.value.taskKey,
580 "taskId": currentRejectItem.value.taskId, 598 "taskId": currentRejectItem.value.taskId,
  599 +
581 "operateType": nextStepMap[currentRejectItem.value.taskKey].operateTypeNoPass, 600 "operateType": nextStepMap[currentRejectItem.value.taskKey].operateTypeNoPass,
582 "agree": 1, 601 "agree": 1,
583 "reason": rejectReasonTrim 602 "reason": rejectReasonTrim
584 }; 603 };
585 // 调用回退工单接口 604 // 调用回退工单接口
586 - const res = await qyUniversalApproval(requestData); 605 + if(currentRejectItem.value.taskKey=='shRegionManager'){ // 对督察员单子 回退
  606 + const res = await dcyUniversalApproval(requestData);
  607 + }
  608 + if(currentRejectItem.value.taskKey=='regionManager'){ // 对全域巡查员单子 回退
  609 + const res = await qyUniversalApproval(requestData);
  610 + }
  611 + // 对大区经理单子 回退
587 uni.showToast({title: '回退成功', icon: 'success', duration: 1000}); 612 uni.showToast({title: '回退成功', icon: 'success', duration: 1000});
588 rejectModalShow.value = false; 613 rejectModalShow.value = false;
589 paging.value?.reload(); // 刷新列表 614 paging.value?.reload(); // 刷新列表
@@ -595,30 +620,28 @@ const confirmReject = async () =&gt; { @@ -595,30 +620,28 @@ const confirmReject = async () =&gt; {
595 uni.hideLoading(); 620 uni.hideLoading();
596 } 621 }
597 }; 622 };
598 -  
599 // 新增工单 623 // 新增工单
600 const handleAddOrder = () => { 624 const handleAddOrder = () => {
601 // patrol_global 全域巡查员 625 // patrol_global 全域巡查员
602 // regional_manager 大区经理 626 // regional_manager 大区经理
603 - console.log(userStore.userInfo?.roles.includes('team_leader_yl'))  
604 - if(userStore.userInfo?.roles.includes('patrol_global')){ 627 + console.log(userStore.userInfo?.roles.includes('Inspector_global'))
  628 + console.log(userStore.userInfo?.roles)
  629 + if (userStore.userInfo?.roles.includes('patrol_global')) { // 全域巡查员
605 uni.navigateTo({ 630 uni.navigateTo({
606 url: '/pages-sub/problem/regional-order-manage/add-patrol-order' 631 url: '/pages-sub/problem/regional-order-manage/add-patrol-order'
607 }); 632 });
608 } 633 }
609 - if(userStore.userInfo?.roles.includes('regional_manager')){ 634 + if (userStore.userInfo?.roles.includes('regional_manager')) {
610 uni.navigateTo({ 635 uni.navigateTo({
611 url: '/pages-sub/problem/regional-order-manage/add-order' 636 url: '/pages-sub/problem/regional-order-manage/add-order'
612 }); 637 });
613 } 638 }
614 -  
615 - if(userStore.userInfo?.roles.includes('team_leader_yl')){ 639 + if (userStore.userInfo?.roles.includes('Inspector_global')) { // 督察员
616 uni.navigateTo({ 640 uni.navigateTo({
617 url: '/pages-sub/problem/regional-order-manage/add-order' 641 url: '/pages-sub/problem/regional-order-manage/add-order'
618 }); 642 });
619 } 643 }
620 }; 644 };
621 -  
622 // 验收弹窗 - 取消按钮(清空状态) 645 // 验收弹窗 - 取消按钮(清空状态)
623 const handleAcceptModalCancel = () => { 646 const handleAcceptModalCancel = () => {
624 acceptModalShow.value = false; 647 acceptModalShow.value = false;
@@ -626,7 +649,6 @@ const handleAcceptModalCancel = () =&gt; { @@ -626,7 +649,6 @@ const handleAcceptModalCancel = () =&gt; {
626 acceptRadioValue.value = '0'; // 重置单选框为“通过” 649 acceptRadioValue.value = '0'; // 重置单选框为“通过”
627 acceptImgs.clearImgs(); // 清空验收图片 650 acceptImgs.clearImgs(); // 清空验收图片
628 }; 651 };
629 -  
630 // 验收弹窗 - 确定按钮(含returnImgs传参) 652 // 验收弹窗 - 确定按钮(含returnImgs传参)
631 const handleAcceptModalConfirm = async () => { 653 const handleAcceptModalConfirm = async () => {
632 // 1. 校验验收原因是否为空 654 // 1. 校验验收原因是否为空
@@ -642,9 +664,11 @@ const handleAcceptModalConfirm = async () =&gt; { @@ -642,9 +664,11 @@ const handleAcceptModalConfirm = async () =&gt; {
642 try { 664 try {
643 // 3. 构建请求参数(含returnImgs) 665 // 3. 构建请求参数(含returnImgs)
644 console.log(currentAcceptItem.value) 666 console.log(currentAcceptItem.value)
645 - let postData = {}  
646 - if (currentAcceptItem.value?.taskKey == 'ylTeamLeaderConfirm') { // 养护组长验收  
647 - postData = { 667 + console.log( userStore.userInfo.roles)
  668 + console.log( userStore.userInfo.roles.includes('Inspector_global'))
  669 + //
  670 + if( userStore.userInfo.roles.includes('regional_manager')){ // 大区经理验收
  671 + let postData = {
648 "returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组 672 "returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组
649 "taskKey": currentAcceptItem.value.taskKey, 673 "taskKey": currentAcceptItem.value.taskKey,
650 "workerDataId": currentAcceptItem.value.id, 674 "workerDataId": currentAcceptItem.value.id,
@@ -652,9 +676,11 @@ const handleAcceptModalConfirm = async () =&gt; { @@ -652,9 +676,11 @@ const handleAcceptModalConfirm = async () =&gt; {
652 "operateType": acceptRadioValue.value == 0 ? nextStepMap[currentAcceptItem.value.taskKey].operateTypePass : nextStepMap[currentAcceptItem.value.taskKey].operateTypeNoPass, 676 "operateType": acceptRadioValue.value == 0 ? nextStepMap[currentAcceptItem.value.taskKey].operateTypePass : nextStepMap[currentAcceptItem.value.taskKey].operateTypeNoPass,
653 "reason": acceptReason.value.trim() 677 "reason": acceptReason.value.trim()
654 } 678 }
  679 + await daquUniversalApproval(postData);
655 } 680 }
656 - if (currentAcceptItem.value?.taskKey == 'ylInspector') { // 全域巡查员验收  
657 - postData = { 681 + //
  682 + if( userStore.userInfo.roles.includes('patrol_global')){ // 全域巡查员验收
  683 + let postData = {
658 "returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组 684 "returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组
659 "taskKey": currentAcceptItem.value.taskKey, 685 "taskKey": currentAcceptItem.value.taskKey,
660 "taskId": currentAcceptItem.value.taskId, 686 "taskId": currentAcceptItem.value.taskId,
@@ -663,8 +689,22 @@ const handleAcceptModalConfirm = async () =&gt; { @@ -663,8 +689,22 @@ const handleAcceptModalConfirm = async () =&gt; {
663 "reason": acceptReason.value.trim(), 689 "reason": acceptReason.value.trim(),
664 "agree": acceptRadioValue.value 690 "agree": acceptRadioValue.value
665 } 691 }
  692 + await qyUniversalApproval(postData);
666 } 693 }
667 - const acceptRes = await universalApproval(postData); 694 + //
  695 + if( userStore.userInfo.roles.includes('Inspector_global')){ // 督察员验收
  696 + let postData = {
  697 + "returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组
  698 + "taskKey": currentAcceptItem.value.taskKey,
  699 + "taskId": currentAcceptItem.value.taskId,
  700 + "workerDataId": currentAcceptItem.value.id,
  701 + "operateType": acceptRadioValue.value == 0 ? nextStepMap[currentAcceptItem.value.taskKey].operateTypePass : nextStepMap[currentAcceptItem.value.taskKey].operateTypeNoPass,
  702 + "reason": acceptReason.value.trim(),
  703 + "agree": acceptRadioValue.value
  704 + }
  705 + await dcyUniversalApproval(postData);
  706 + }
  707 +
668 // 4. 操作成功处理 708 // 4. 操作成功处理
669 uni.showToast({title: '提交成功', icon: 'success', duration: 1000}); 709 uni.showToast({title: '提交成功', icon: 'success', duration: 1000});
670 handleAcceptModalCancel(); // 清空状态 710 handleAcceptModalCancel(); // 清空状态
@@ -675,7 +715,6 @@ const handleAcceptModalConfirm = async () =&gt; { @@ -675,7 +715,6 @@ const handleAcceptModalConfirm = async () =&gt; {
675 uni.showToast({title: '验收提交失败,请重试', icon: 'none', duration: 1000}); 715 uni.showToast({title: '验收提交失败,请重试', icon: 'none', duration: 1000});
676 } 716 }
677 }; 717 };
678 -  
679 // 页面初始化 718 // 页面初始化
680 onLoad(() => { 719 onLoad(() => {
681 // 初始化加载列表 720 // 初始化加载列表
pages-sub/problem/regional-order-manage/order-detail.vue
@@ -369,9 +369,10 @@ import { @@ -369,9 +369,10 @@ import {
369 getDoneTaskDetail, 369 getDoneTaskDetail,
370 getTodoTaskDetail, 370 getTodoTaskDetail,
371 getApprovalDetail, 371 getApprovalDetail,
372 - regionmgrUniversalApproval,  
373 - qyUniversalApproval  
374 -} from '@/api/work-order-manage/work-order-manage'; 372 + daquUniversalApproval,
  373 + qyUniversalApproval,
  374 + dcyUniversalApproval
  375 +} from '@/api/regional-order-manage/regional-order-manage';
375 import {nextStepMap, buzStatusMap, calculateFormatTimeDiff} from '@/common/utils/common' 376 import {nextStepMap, buzStatusMap, calculateFormatTimeDiff} from '@/common/utils/common'
376 // 引入图片上传组合式函数 377 // 引入图片上传组合式函数
377 import {useUploadImgs} from '@/common/utils/useUploadImgs' 378 import {useUploadImgs} from '@/common/utils/useUploadImgs'
@@ -825,7 +826,7 @@ const handleAcceptModalConfirm = async () =&gt; { @@ -825,7 +826,7 @@ const handleAcceptModalConfirm = async () =&gt; {
825 "agree": acceptRadioValue.value 826 "agree": acceptRadioValue.value
826 } 827 }
827 } 828 }
828 - const acceptRes = await regionmgrUniversalApproval(postData); 829 + const acceptRes = await daquUniversalApproval(postData);
829 // 4. 操作成功处理 830 // 4. 操作成功处理
830 831
831 handleAcceptModalCancel(); // 清空状态 832 handleAcceptModalCancel(); // 清空状态
pages-sub/problem/work-order-manage/index.vue
@@ -554,7 +554,7 @@ const confirmReject = async () =&gt; { @@ -554,7 +554,7 @@ const confirmReject = async () =&gt; {
554 try { 554 try {
555 // 显示加载中,防止重复提交 555 // 显示加载中,防止重复提交
556 uni.showLoading({title: '提交中...', mask: true}); 556 uni.showLoading({title: '提交中...', mask: true});
557 - 557 + console.log( currentRejectItem.value.roadId)
558 // 构建请求参数 558 // 构建请求参数
559 const requestData = { 559 const requestData = {
560 "returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL数组 560 "returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL数组
@@ -563,7 +563,8 @@ const confirmReject = async () =&gt; { @@ -563,7 +563,8 @@ const confirmReject = async () =&gt; {
563 "taskId": currentRejectItem.value.taskId, 563 "taskId": currentRejectItem.value.taskId,
564 "operateType": nextStepMap[currentRejectItem.value.taskKey].operateTypeNoPass, 564 "operateType": nextStepMap[currentRejectItem.value.taskKey].operateTypeNoPass,
565 "agree": 1, 565 "agree": 1,
566 - "reason": rejectReasonTrim 566 + "reason": rejectReasonTrim,
  567 + "roadId": currentRejectItem.value.roadId, // 给督察员回退的 要加上
567 }; 568 };
568 // 调用回退工单接口 569 // 调用回退工单接口
569 const res = await universalApproval(requestData); 570 const res = await universalApproval(requestData);
pages/workbench/index.vue
@@ -118,7 +118,7 @@ onShow(async () =&gt; { @@ -118,7 +118,7 @@ onShow(async () =&gt; {
118 setTimeout(() => { 118 setTimeout(() => {
119 // 使用reLaunch跳转,清空页面栈,避免返回当前菜单页 119 // 使用reLaunch跳转,清空页面栈,避免返回当前菜单页
120 uni.reLaunch({ 120 uni.reLaunch({
121 - url: '/pages/login/login', // 替换为你的实际登录页路径 121 + url: '/pages/login/index', // 替换为你的实际登录页路径
122 fail: (err) => { 122 fail: (err) => {
123 console.error('跳转登录页失败:', err); 123 console.error('跳转登录页失败:', err);
124 uni.showToast({ title: '跳转登录页异常', icon: 'none' }); 124 uni.showToast({ title: '跳转登录页异常', icon: 'none' });