|
|
@@ -477,33 +477,23 @@ const route = useRoute()
|
|
|
const userStore = useUserStore()
|
|
|
|
|
|
/**
|
|
|
- * 本组件被多个菜单复用,不同菜单按业务口径查询不同范围的工单:
|
|
|
- * - 运维工单处置菜单(默认):查询全部工单
|
|
|
- * - 燃气工单管理菜单:仅查 parentTypeId=3 的设备工单
|
|
|
- * - 排水工单菜单:仅查 parentTypeId=2 的设备工单
|
|
|
- * - 案件工单处置菜单:仅查 parentTypeId=4 的设备工单
|
|
|
+ * 本组件被多个菜单复用,业务口径(查哪类设备的工单)由菜单在 sys_menu.query 中配置的
|
|
|
+ * rootTypeId 下发,与项目整体约定一致(报警复核、设备预警阈值等菜单均使用 {"rootTypeId":N} 隔离范围)。
|
|
|
*
|
|
|
- * 判定方式:同一组件由后台 sys_menu.component 指向本文件时,菜单的 path 会体现在路由 path 中,
|
|
|
- * 因此按路由 path 关键字区分来源;匹配不上时走默认(全量),保证新菜单接入不会误过滤。
|
|
|
- * 若后续调整菜单 path,同步维护 MENU_DEVICE_TYPE_SCOPE.pathKey 即可。
|
|
|
+ * 各菜单 path 统一为 workOrderDispose,仅通过 query.rootTypeId 区分;不再依赖路由 path 关键字推断,
|
|
|
+ * 新增业务菜单只需在后台配置 {"rootTypeId":N},无需改代码、无需重新发版。
|
|
|
+ * rootTypeId 为空表示不限制(全量工单)。
|
|
|
*/
|
|
|
-const MENU_DEVICE_TYPE_SCOPE = [
|
|
|
- { pathKey: 'BusinessWorkOrder', parentTypeId: '3', name: '燃气' },
|
|
|
- { pathKey: 'DrainageWorkOrder', parentTypeId: '2', name: '排水' },
|
|
|
- { pathKey: 'orderDisposal', parentTypeId: '4', name: '案件' },
|
|
|
- { pathKey: 'maintain', parentTypeId: '1', name: '设备维修派单' }
|
|
|
-]
|
|
|
-
|
|
|
const menuScope = computed(() => {
|
|
|
- const curPath = String(route.path || '')
|
|
|
- return MENU_DEVICE_TYPE_SCOPE.find((m) => curPath.includes(m.pathKey))
|
|
|
+ const rt = route.query.rootTypeId
|
|
|
+ return rt != null && rt !== '' ? String(rt) : undefined
|
|
|
})
|
|
|
|
|
|
-/** 统一构造查询入参:命中业务菜单时附加设备父类别过滤,且不随查询重置丢失 */
|
|
|
+/** 统一构造查询入参:命中业务菜单时附加 rootTypeId 过滤,且不随查询重置丢失 */
|
|
|
function buildQueryParams() {
|
|
|
return {
|
|
|
...queryParams,
|
|
|
- ...(menuScope.value ? { deviceTypeParentId: menuScope.value.parentTypeId } : {})
|
|
|
+ ...(menuScope.value ? { rootTypeId: menuScope.value } : {})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1064,10 +1054,11 @@ function handleDelete(o) {
|
|
|
}
|
|
|
|
|
|
// 同一组件被多个菜单复用(运维处置/燃气/排水/案件/设备维修派单),
|
|
|
+// 各菜单 path 统一为 workOrderDispose,仅靠 query.rootTypeId 区分业务口径,
|
|
|
// 路由切换时组件实例被复用、onMounted 不会重新执行,
|
|
|
-// 必须监听路由变化按新菜单的业务口径重新拉取数据
|
|
|
+// 必须监听 fullPath(含 query)按新菜单的业务口径重新拉取数据
|
|
|
watch(
|
|
|
- () => route.path,
|
|
|
+ () => route.fullPath,
|
|
|
(nv, ov) => {
|
|
|
if (nv === ov) return
|
|
|
// 支持从报警处理列表跳转进来时按工单号预填筛选;其余入口不带该 query,行为与之前一致
|