Commit cd63e10afe4b9a83c5cc14711198a577995895d1

Authored by 王彪总
1 parent 62ffd5df

业务线 小程序不用写死,从后端接口获取

common/utils/common.js
@@ -286,9 +286,6 @@ export const translateRoles = (roles = []) => { @@ -286,9 +286,6 @@ export const translateRoles = (roles = []) => {
286 .join(','); 286 .join(',');
287 } 287 }
288 288
289 -/** 配置了工单(biz_type=1)动态字段的业务线;其他业务线走统一动作弹窗 */  
290 -const WORKER_IMPLEMENT_BIZ_LINES = ['yl', 'hj'];  
291 -  
292 /** 289 /**
293 * 跳转「作业填报」页(养护员实施) 290 * 跳转「作业填报」页(养护员实施)
294 * 291 *
@@ -296,8 +293,9 @@ const WORKER_IMPLEMENT_BIZ_LINES = ['yl', 'hj']; @@ -296,8 +293,9 @@ const WORKER_IMPLEMENT_BIZ_LINES = ['yl', 'hj'];
296 * 上传开始/进行中/结束/人员/材料五组照片,统一动作弹窗只有原因+单个附件,承载不了, 293 * 上传开始/进行中/结束/人员/材料五组照片,统一动作弹窗只有原因+单个附件,承载不了,
297 * 因此实施动作固定进「作业填报」页。 294 * 因此实施动作固定进「作业填报」页。
298 * 295 *
299 - * 只有养护(yl)、环卫(hj)配置了工单动态字段,秩序(zx)/市政(sz)/物业(wy)没有配置,  
300 - * 这类工单仍走统一动作弹窗,保持原有处理流程。 296 + * 不按业务线写死:所有业务线的实施动作都进本页,页面上有哪些填报项
  297 + * 由数据中心「业务类型(busiLine 首段) + 作业类型」的字段配置(biz_type=1)决定,
  298 + * 没配的业务线/作业类型进页后展示「该作业类型暂无需填报项」。
301 * 299 *
302 * 工单数据存本地缓存,URL 只带临时 key,避免参数过长。 300 * 工单数据存本地缓存,URL 只带临时 key,避免参数过长。
303 * @param {Object} item 待办行数据,需包含 id(工单ID)与 taskId(流程任务ID) 301 * @param {Object} item 待办行数据,需包含 id(工单ID)与 taskId(流程任务ID)
@@ -305,11 +303,6 @@ const WORKER_IMPLEMENT_BIZ_LINES = ['yl', 'hj']; @@ -305,11 +303,6 @@ const WORKER_IMPLEMENT_BIZ_LINES = ['yl', 'hj'];
305 * @returns {Boolean} 是否已跳转;返回 false 时由调用方继续走统一动作弹窗 303 * @returns {Boolean} 是否已跳转;返回 false 时由调用方继续走统一动作弹窗
306 */ 304 */
307 export const toWorkerImplementPage = (item, from = 'work-order') => { 305 export const toWorkerImplementPage = (item, from = 'work-order') => {
308 - // 业务线可能多选(逗号分隔),任一命中即视为养护类工单  
309 - const bizLines = String(item?.busiLine || '').split(',').map(v => v.trim()).filter(Boolean);  
310 - if (!bizLines.some(v => WORKER_IMPLEMENT_BIZ_LINES.includes(v))) {  
311 - return false;  
312 - }  
313 if (!item || !item.id || !item.taskId) { 306 if (!item || !item.id || !item.taskId) {
314 uni.showToast({ title: '工单信息异常,无法实施', icon: 'none' }); 307 uni.showToast({ title: '工单信息异常,无法实施', icon: 'none' });
315 return false; 308 return false;
pages-sub/problem/work-order-manage/add-maintain-order.vue
@@ -437,8 +437,15 @@ onLoad((options) => { @@ -437,8 +437,15 @@ onLoad((options) => {
437 workOrderForm.workTypeId = orderItem.workTypeId 437 workOrderForm.workTypeId = orderItem.workTypeId
438 workOrderForm.workTypeName = uni.$dict.getDictLabel('maintain_type', orderItem.workTypeId) || '' 438 workOrderForm.workTypeName = uni.$dict.getDictLabel('maintain_type', orderItem.workTypeId) || ''
439 } else { 439 } else {
440 - // 该业务线只配了一个作业类型的字段时自动选中,进页即可看到填报项  
441 - loadDefaultWorkType() 440 + // 先按工单名「大类/小类」的小类匹配作业类型(如 秩序管理/经营秩序 -> 2014 经营秩序)
  441 + const matchedWorkType = matchWorkTypeByOrderName(orderItem.orderName)
  442 + if (matchedWorkType) {
  443 + workOrderForm.workTypeId = matchedWorkType.value
  444 + workOrderForm.workTypeName = matchedWorkType.label
  445 + } else {
  446 + // 兜底:该业务线只配了一个作业类型的字段时自动选中,进页即可看到填报项
  447 + loadDefaultWorkType()
  448 + }
442 } 449 }
443 // 共同处理人(如有数据则回显,转换为数组格式) 450 // 共同处理人(如有数据则回显,转换为数组格式)
444 if (orderItem.coHandlers && orderItem.coHandlersName) { 451 if (orderItem.coHandlers && orderItem.coHandlersName) {
@@ -743,7 +750,22 @@ const onDynamicFieldsLoaded = (count) => { @@ -743,7 +750,22 @@ const onDynamicFieldsLoaded = (count) => {
743 } 750 }
744 751
745 /** 752 /**
746 - * 自动带出作业类型:该业务线下只有一个作业类型配置了填报项时直接选中, 753 + * 按工单名匹配作业类型:工单名格式「大类/小类」,小类与字典 maintain_type 的 label 同名
  754 + * (如 秩序管理/经营秩序 -> 2014 经营秩序),命中即自动带出,养护员仍可在弹窗里手改。
  755 + * @param {String} orderName 工单名,如「秩序管理/经营秩序」
  756 + * @returns {{value: String, label: String}|null} 未命中返回 null
  757 + */
  758 +const matchWorkTypeByOrderName = (orderName) => {
  759 + const subName = String(orderName || '').split('/').pop().trim()
  760 + if (!subName) {
  761 + return null
  762 + }
  763 + const dictList = uni.$dict.getDictSimpleList('maintain_type') || []
  764 + return dictList.find(item => item.label === subName) || null
  765 +}
  766 +
  767 +/**
  768 + * 兜底自动带出作业类型:该业务线下只有一个作业类型配置了填报项时直接选中,
747 * 动态字段块随之渲染(v-if 绑在 workTypeId 上),用户不用先猜该选哪个作业类型。 769 * 动态字段块随之渲染(v-if 绑在 workTypeId 上),用户不用先猜该选哪个作业类型。
748 * 配了多个时不自动选,交给用户手选。 770 * 配了多个时不自动选,交给用户手选。
749 */ 771 */