{"record":{"id":"7515db1786a2794b","repo":"jeecgboot/JeecgBoot","slug":"id-7515db","errorCode":null,"errorMessage":"地址错误, 配置ID不存在!","messagePattern":"地址错误, 配置ID不存在!","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"jeecgboot-vue3/src/views/super/online/cgform/auto/tree/OnlineAutoTreeList.vue","lineNumber":241,"sourceCode":"        handleChangeInTable,\n        loadData,\n        superQueryButtonRef,\n        superQueryStatus,\n        handleSuperQuery,\n        registerCustomModal,\n        getTreeDataByResult,\n        expandedRowKeys,\n        handleExpandedRowsChange,\n        tableReloading,\n        onlineExtConfigJson,\n        handleFormConfig,\n        pageLoading,\n      } = useOnlineTableContext();\n\n      if (!ID.value) {\n        $message.warning('地址错误, 配置ID不存在!');\n        // update-begin--author:liaozhiyang---date:20230825---for：【QQYUN-6326】部分代码找不到引用\n        throw new Error('地址错误, 配置ID不存在!');\n        // update-end--author:liaozhiyang---date:20230825---for：【QQYUN-6326】部分代码找不到引用\n      }\n      // 树列表特定方法调用\n      onlineTableContext.isTree(true);\n\n      // 处理增强\n      let { initCgEnhanceJs } = useEnhance(onlineTableContext);\n      // 处理列表button\n      const {\n        buttonSwitch,\n        cgLinkButtonList,\n        cgBIBtnMap,\n        getQueryButtonCfg,\n        getResetButtonCfg,\n        getFormConfirmButtonCfg,\n        cgTopButtonList,\n        importUrl,\n        registerModal,","sourceCodeStart":223,"sourceCodeEnd":259,"githubUrl":"https://github.com/jeecgboot/JeecgBoot/blob/96fb33f5ec68516da0b0147da06b2eb0419e063a/jeecgboot-vue3/src/views/super/online/cgform/auto/tree/OnlineAutoTreeList.vue#L223-L259","documentation":"Setup guard in the auto-style online TREE list. `ID` is the form code from `params.code ?? ''`; if empty it warns and throws at setup, because the tree list must load tree column/button configs keyed by that code (and immediately calls `onlineTableContext.isTree(true)` after this check).","triggerScenarios":"The tree list route was opened WITHOUT the `code` param: direct navigation with no `?code=...`, a stale bookmark, a menu entry omitting `code`, or a redirect that stripped the query string.","commonSituations":"Bookmark to the tree list missing `code`; backend menu config lost the code; manual URL entry forgetting `code`; sub-app handoff dropped the param.","solutions":["Open the tree list via the proper menu entry carrying `code`; confirm the URL has `code=<formCode>`.","For a custom menu, include the online form code in the route path/query.","In dev, append `?code=<yourFormCode>`.","Add a router guard redirecting when `code` is missing instead of throwing at setup."],"exampleFix":"// before\nif (!ID.value) {\n  $message.warning('地址错误, 配置ID不存在!');\n  throw new Error('地址错误, 配置ID不存在!');\n}\n\n// after — guard + redirect at the route level\nrouter.beforeEach((to) => {\n  if (to.meta?.isAutoTreeList && !to.query.code) {\n    return { name: 'ExceptionPage', query: { status: '404' } };\n  }\n  return true;\n});","handlingStrategy":"validation","validationCode":"// before rendering the tree list, confirm the route carries the online form code\nconst code = route.query.code as string | undefined;\nif (!code) {\n  router.replace({ name: 'ExceptionPage', query: { status: '404', reason: 'missing-code' } });\n}","typeGuard":"const hasFormCode = (c: unknown): c is string => typeof c === 'string' && c.trim().length > 0;","tryCatchPattern":null,"preventionTips":["Launch tree lists via the menu entry carrying `code`.","Add a router.beforeEach guard for tree-list routes requiring `code`.","Keep menu config in sync with the required param.","Assert the URL contains a code in e2e tests."],"tags":["vue3","online-cgform","tree","routing","config","setup-guard","typescript"],"backgroundTag":null,"analyzedSha":"96fb33f5ec68516da0b0147da06b2eb0419e063a","analyzedAt":"2026-08-14T00:04:16.786Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}