Commit 98689726fd03c0317efdbd7a0700e444d0994703
1 parent
e491df85
业务线 小程序不用写死,从后端接口获取
Showing
7 changed files
with
78 additions
and
12 deletions
common/utils/common.js
| @@ -284,4 +284,34 @@ export const translateRoles = (roles = []) => { | @@ -284,4 +284,34 @@ export const translateRoles = (roles = []) => { | ||
| 284 | .filter(role => role && roleMap[role]) | 284 | .filter(role => role && roleMap[role]) |
| 285 | .map(role => roleMap[role]) | 285 | .map(role => roleMap[role]) |
| 286 | .join(','); | 286 | .join(','); |
| 287 | +} | ||
| 288 | + | ||
| 289 | +/** | ||
| 290 | + * 跳转「作业填报」页(养护员实施) | ||
| 291 | + * | ||
| 292 | + * 实施动作除了处理情况,还要选作业类型、填数据中心配置的动态字段(业务类型+作业类型)、 | ||
| 293 | + * 上传开始/进行中/结束/人员/材料五组照片,统一动作弹窗只有原因+单个附件,承载不了, | ||
| 294 | + * 因此实施动作固定进「作业填报」页。 | ||
| 295 | + * | ||
| 296 | + * 工单数据存本地缓存,URL 只带临时 key,避免参数过长。 | ||
| 297 | + * @param {Object} item 待办行数据,需包含 id(工单ID)与 taskId(流程任务ID) | ||
| 298 | + * @returns {Boolean} 是否成功跳转 | ||
| 299 | + */ | ||
| 300 | +export const toWorkerImplementPage = (item) => { | ||
| 301 | + if (!item || !item.id || !item.taskId) { | ||
| 302 | + uni.showToast({ title: '工单信息异常,无法实施', icon: 'none' }); | ||
| 303 | + return false; | ||
| 304 | + } | ||
| 305 | + const tempKey = `maintain_order_${Date.now()}_${Math.floor(Math.random() * 10000)}`; | ||
| 306 | + try { | ||
| 307 | + uni.setStorageSync(tempKey, item); | ||
| 308 | + } catch (error) { | ||
| 309 | + console.error('存储养护工单数据失败:', error); | ||
| 310 | + uni.showToast({ title: '数据存储异常,无法跳转', icon: 'none' }); | ||
| 311 | + return false; | ||
| 312 | + } | ||
| 313 | + uni.navigateTo({ | ||
| 314 | + url: `/pages-sub/problem/work-order-manage/add-maintain-order?tempKey=${tempKey}` | ||
| 315 | + }); | ||
| 316 | + return true; | ||
| 287 | } | 317 | } |
| 288 | \ No newline at end of file | 318 | \ No newline at end of file |
pages-sub/problem/ai-manage/index.vue
| @@ -276,7 +276,7 @@ import { | @@ -276,7 +276,7 @@ import { | ||
| 276 | } from '@/api/regional-order-manage/regional-order-manage' | 276 | } from '@/api/regional-order-manage/regional-order-manage' |
| 277 | import { getTaskActions } from '@/api/work-order-manage/work-order-manage' | 277 | import { getTaskActions } from '@/api/work-order-manage/work-order-manage' |
| 278 | import { useUserStore } from '@/pinia/user'; | 278 | import { useUserStore } from '@/pinia/user'; |
| 279 | -import { nextStepMap, buzStatusMap, getActionButtonType } from '@/common/utils/common' | 279 | +import { nextStepMap, buzStatusMap, getActionButtonType, toWorkerImplementPage } from '@/common/utils/common' |
| 280 | import { useUploadImgs } from '@/common/utils/useUploadImgs' | 280 | import { useUploadImgs } from '@/common/utils/useUploadImgs' |
| 281 | 281 | ||
| 282 | // ========== 全局实例 & 常量 ========== | 282 | // ========== 全局实例 & 常量 ========== |
| @@ -516,8 +516,14 @@ const handleUnifiedProcess = async (item, action = null) => { | @@ -516,8 +516,14 @@ const handleUnifiedProcess = async (item, action = null) => { | ||
| 516 | ? item.configuredActions | 516 | ? item.configuredActions |
| 517 | : await queryUnifiedActions(item) | 517 | : await queryUnifiedActions(item) |
| 518 | if (actions) { | 518 | if (actions) { |
| 519 | + const target = action || actions[0] | ||
| 520 | + // 实施动作要选作业类型、填动态字段、传五组照片,统一动作弹窗承载不了,进「作业填报」页 | ||
| 521 | + if (target?.code === 'HANDLE') { | ||
| 522 | + toWorkerImplementPage(item) | ||
| 523 | + return | ||
| 524 | + } | ||
| 519 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 | 525 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 |
| 520 | - unifiedActionsRef.value?.open(item, [action || actions[0]]) | 526 | + unifiedActionsRef.value?.open(item, [target]) |
| 521 | return | 527 | return |
| 522 | } | 528 | } |
| 523 | handleProcess(item) | 529 | handleProcess(item) |
pages-sub/problem/regional-order-manage/index.vue
| @@ -241,7 +241,7 @@ import { | @@ -241,7 +241,7 @@ import { | ||
| 241 | } from '@/api/regional-order-manage/regional-order-manage' | 241 | } from '@/api/regional-order-manage/regional-order-manage' |
| 242 | import { getTaskActions } from '@/api/work-order-manage/work-order-manage' | 242 | import { getTaskActions } from '@/api/work-order-manage/work-order-manage' |
| 243 | import { useUserStore } from '@/pinia/user'; | 243 | import { useUserStore } from '@/pinia/user'; |
| 244 | -import { nextStepMap, buzStatusMap, getActionButtonType } from '@/common/utils/common' | 244 | +import { nextStepMap, buzStatusMap, getActionButtonType, toWorkerImplementPage } from '@/common/utils/common' |
| 245 | import { useUploadImgs } from '@/common/utils/useUploadImgs' | 245 | import { useUploadImgs } from '@/common/utils/useUploadImgs' |
| 246 | 246 | ||
| 247 | // ========== 全局实例 & 常量 ========== | 247 | // ========== 全局实例 & 常量 ========== |
| @@ -497,8 +497,14 @@ const handleUnifiedProcess = async (item, action = null) => { | @@ -497,8 +497,14 @@ const handleUnifiedProcess = async (item, action = null) => { | ||
| 497 | ? item.configuredActions | 497 | ? item.configuredActions |
| 498 | : await queryUnifiedActions(item) | 498 | : await queryUnifiedActions(item) |
| 499 | if (actions) { | 499 | if (actions) { |
| 500 | + const target = action || actions[0] | ||
| 501 | + // 实施动作要选作业类型、填动态字段、传五组照片,统一动作弹窗承载不了,进「作业填报」页 | ||
| 502 | + if (target?.code === 'HANDLE') { | ||
| 503 | + toWorkerImplementPage(item) | ||
| 504 | + return | ||
| 505 | + } | ||
| 500 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 | 506 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 |
| 501 | - unifiedActionsRef.value?.open(item, [action || actions[0]]) | 507 | + unifiedActionsRef.value?.open(item, [target]) |
| 502 | return | 508 | return |
| 503 | } | 509 | } |
| 504 | handleProcess(item) | 510 | handleProcess(item) |
pages-sub/problem/regional-order-manage/list-detail.vue
| @@ -337,7 +337,7 @@ import { timeFormat } from '@/uni_modules/uview-plus' | @@ -337,7 +337,7 @@ import { timeFormat } from '@/uni_modules/uview-plus' | ||
| 337 | import { getApprovalDetail,workOrderDetailByID } from '@/api/regional-order-manage/regional-order-manage' | 337 | import { getApprovalDetail,workOrderDetailByID } from '@/api/regional-order-manage/regional-order-manage' |
| 338 | import { getTaskActions } from '@/api/work-order-manage/work-order-manage' | 338 | import { getTaskActions } from '@/api/work-order-manage/work-order-manage' |
| 339 | 339 | ||
| 340 | -import { nextStepMap, calculateFormatTimeDiff, getActionButtonType } from '@/common/utils/common' | 340 | +import { nextStepMap, calculateFormatTimeDiff, getActionButtonType, toWorkerImplementPage } from '@/common/utils/common' |
| 341 | import { useUploadImgs } from '@/common/utils/useUploadImgs' | 341 | import { useUploadImgs } from '@/common/utils/useUploadImgs' |
| 342 | import { useUserStore } from '@/pinia/user' | 342 | import { useUserStore } from '@/pinia/user' |
| 343 | 343 | ||
| @@ -552,8 +552,14 @@ const handleUnifiedProcess = async (item: any, action: any = null) => { | @@ -552,8 +552,14 @@ const handleUnifiedProcess = async (item: any, action: any = null) => { | ||
| 552 | ? configuredActions.value | 552 | ? configuredActions.value |
| 553 | : await queryUnifiedActions(item?.taskId) | 553 | : await queryUnifiedActions(item?.taskId) |
| 554 | if (actions) { | 554 | if (actions) { |
| 555 | + const target = action || actions[0] | ||
| 556 | + // 实施动作要选作业类型、填动态字段、传五组照片,统一动作弹窗承载不了,进「作业填报」页 | ||
| 557 | + if (target?.code === 'HANDLE') { | ||
| 558 | + toWorkerImplementPage(item) | ||
| 559 | + return | ||
| 560 | + } | ||
| 555 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 | 561 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 |
| 556 | - unifiedActionsRef.value?.open(item, [action || actions[0]]) | 562 | + unifiedActionsRef.value?.open(item, [target]) |
| 557 | return | 563 | return |
| 558 | } | 564 | } |
| 559 | handleProcess(item) | 565 | handleProcess(item) |
pages-sub/problem/regional-order-manage/order-detail.vue
| @@ -381,7 +381,7 @@ import { | @@ -381,7 +381,7 @@ import { | ||
| 381 | dcyUniversalApproval, | 381 | dcyUniversalApproval, |
| 382 | aiUniversalApproval | 382 | aiUniversalApproval |
| 383 | } from '@/api/regional-order-manage/regional-order-manage'; | 383 | } from '@/api/regional-order-manage/regional-order-manage'; |
| 384 | -import {nextStepMap, buzStatusMap, calculateFormatTimeDiff, getActionButtonType} from '@/common/utils/common' | 384 | +import {nextStepMap, buzStatusMap, calculateFormatTimeDiff, getActionButtonType, toWorkerImplementPage} from '@/common/utils/common' |
| 385 | import {getTaskActions} from '@/api/work-order-manage/work-order-manage'; | 385 | import {getTaskActions} from '@/api/work-order-manage/work-order-manage'; |
| 386 | import {useUploadImgs} from '@/common/utils/useUploadImgs' | 386 | import {useUploadImgs} from '@/common/utils/useUploadImgs' |
| 387 | import { useUserStore } from '@/pinia/user'; | 387 | import { useUserStore } from '@/pinia/user'; |
| @@ -622,8 +622,14 @@ const handleUnifiedProcess = async (item: any, action: any = null) => { | @@ -622,8 +622,14 @@ const handleUnifiedProcess = async (item: any, action: any = null) => { | ||
| 622 | ? configuredActions.value | 622 | ? configuredActions.value |
| 623 | : await queryUnifiedActions(item?.taskId) | 623 | : await queryUnifiedActions(item?.taskId) |
| 624 | if (actions) { | 624 | if (actions) { |
| 625 | + const target = action || actions[0] | ||
| 626 | + // 实施动作要选作业类型、填动态字段、传五组照片,统一动作弹窗承载不了,进「作业填报」页 | ||
| 627 | + if (target?.code === 'HANDLE') { | ||
| 628 | + toWorkerImplementPage(item) | ||
| 629 | + return | ||
| 630 | + } | ||
| 625 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 | 631 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 |
| 626 | - unifiedActionsRef.value?.open(item, [action || actions[0]]) | 632 | + unifiedActionsRef.value?.open(item, [target]) |
| 627 | return | 633 | return |
| 628 | } | 634 | } |
| 629 | handleProcess(item) | 635 | handleProcess(item) |
pages-sub/problem/work-order-manage/index.vue
| @@ -298,7 +298,7 @@ import { | @@ -298,7 +298,7 @@ import { | ||
| 298 | } from '@/api/work-order-manage/work-order-manage' | 298 | } from '@/api/work-order-manage/work-order-manage' |
| 299 | // 从用户store获取角色信息 | 299 | // 从用户store获取角色信息 |
| 300 | import { useUserStore } from '@/pinia/user'; | 300 | import { useUserStore } from '@/pinia/user'; |
| 301 | -import { nextStepMap, buzStatusMap, getActionButtonType } from '@/common/utils/common' | 301 | +import { nextStepMap, buzStatusMap, getActionButtonType, toWorkerImplementPage } from '@/common/utils/common' |
| 302 | // 引入图片上传组合式函数(与参考页面一致) | 302 | // 引入图片上传组合式函数(与参考页面一致) |
| 303 | import { useUploadImgs } from '@/common/utils/useUploadImgs' | 303 | import { useUploadImgs } from '@/common/utils/useUploadImgs' |
| 304 | 304 | ||
| @@ -556,8 +556,14 @@ const handleUnifiedProcess = async (item, action = null) => { | @@ -556,8 +556,14 @@ const handleUnifiedProcess = async (item, action = null) => { | ||
| 556 | ? item.configuredActions | 556 | ? item.configuredActions |
| 557 | : await queryUnifiedActions(item) | 557 | : await queryUnifiedActions(item) |
| 558 | if (actions) { | 558 | if (actions) { |
| 559 | + const target = action || actions[0] | ||
| 560 | + // 实施动作要选作业类型、填动态字段、传五组照片,统一动作弹窗承载不了,进「作业填报」页 | ||
| 561 | + if (target?.code === 'HANDLE') { | ||
| 562 | + toWorkerImplementPage(item) | ||
| 563 | + return | ||
| 564 | + } | ||
| 559 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 | 565 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 |
| 560 | - unifiedActionsRef.value?.open(item, [action || actions[0]]) | 566 | + unifiedActionsRef.value?.open(item, [target]) |
| 561 | return | 567 | return |
| 562 | } | 568 | } |
| 563 | handleProcess(item) | 569 | handleProcess(item) |
pages-sub/problem/work-order-manage/order-detail.vue
| @@ -418,7 +418,7 @@ import { | @@ -418,7 +418,7 @@ import { | ||
| 418 | getTaskActions | 418 | getTaskActions |
| 419 | } from '@/api/work-order-manage/work-order-manage'; | 419 | } from '@/api/work-order-manage/work-order-manage'; |
| 420 | import {getWorkRecordValues} from '@/api/common' | 420 | import {getWorkRecordValues} from '@/api/common' |
| 421 | -import {nextStepMap, buzStatusMap, calculateFormatTimeDiff, getActionButtonType} from '@/common/utils/common' | 421 | +import {nextStepMap, buzStatusMap, calculateFormatTimeDiff, getActionButtonType, toWorkerImplementPage} from '@/common/utils/common' |
| 422 | // 引入图片上传组合式函数 | 422 | // 引入图片上传组合式函数 |
| 423 | import {useUploadImgs} from '@/common/utils/useUploadImgs' | 423 | import {useUploadImgs} from '@/common/utils/useUploadImgs' |
| 424 | 424 | ||
| @@ -853,8 +853,14 @@ const handleUnifiedProcess = async (item: any, action: any = null) => { | @@ -853,8 +853,14 @@ const handleUnifiedProcess = async (item: any, action: any = null) => { | ||
| 853 | ? configuredActions.value | 853 | ? configuredActions.value |
| 854 | : await queryUnifiedActions(item) | 854 | : await queryUnifiedActions(item) |
| 855 | if (actions) { | 855 | if (actions) { |
| 856 | + const target = action || actions[0] | ||
| 857 | + // 实施动作要选作业类型、填动态字段、传五组照片,统一动作弹窗承载不了,进「作业填报」页 | ||
| 858 | + if (target?.code === 'HANDLE') { | ||
| 859 | + toWorkerImplementPage(item) | ||
| 860 | + return | ||
| 861 | + } | ||
| 856 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 | 862 | // 传入的动作即用户点击的配置按钮,直接执行该动作,不再弹「请选择操作」二次选择 |
| 857 | - unifiedActionsRef.value?.open(item, [action || actions[0]]) | 863 | + unifiedActionsRef.value?.open(item, [target]) |
| 858 | return | 864 | return |
| 859 | } | 865 | } |
| 860 | handleProcess(item) | 866 | handleProcess(item) |