提交
This commit is contained in:
1 parent
5ad07c8cac
commit
a79aee2614
61 files changed
+9220
-9348
No files matched your search
@@ -116,6 +116,9 @@
|
||||
|
||||
if (!preferPanelIcon) return
|
||||
|
||||
// 已显式使用绿色竖条标题样式,不再注入图标
|
||||
if (heading.classList.contains(panelTitleBarClass)) return
|
||||
|
||||
heading.classList.remove(panelTitleBarClass)
|
||||
|
||||
// 已手写 title-ic(例如 delivery-demo)则不干预
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "label": "user.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "pinia", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_enums_appenum", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_router", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_worktab", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_types_router", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_router_guards_beforeeach", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_menu", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_storage_storage_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_auth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_router_routesalias", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_router", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_user_avatar", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/user.ts", "source_location": "L27", "weight": 1.0}], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_router_guards_beforeeach_ts", "label": "beforeEach.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L1"}, {"id": "guards_beforeeach_getpendingloading", "label": "getPendingLoading()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L75"}, {"id": "guards_beforeeach_resetpendingloading", "label": "resetPendingLoading()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L82"}, {"id": "guards_beforeeach_getrouteinitfailed", "label": "getRouteInitFailed()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L89"}, {"id": "guards_beforeeach_resetrouteinitstate", "label": "resetRouteInitState()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L96"}, {"id": "guards_beforeeach_setupbeforeeachguard", "label": "setupBeforeEachGuard()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L104"}, {"id": "guards_beforeeach_closeloading", "label": "closeLoading()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L128"}, {"id": "guards_beforeeach_handlerouteguard", "label": "handleRouteGuard()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L140"}, {"id": "guards_beforeeach_handleloginstatus", "label": "handleLoginStatus()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L204"}, {"id": "guards_beforeeach_isstaticroute", "label": "isStaticRoute()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L232"}, {"id": "guards_beforeeach_handledynamicroutes", "label": "handleDynamicRoutes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L262"}, {"id": "guards_beforeeach_fetchuserinfo", "label": "fetchUserInfo()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L379"}, {"id": "guards_beforeeach_resetrouterstate", "label": "resetRouterState()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L390"}, {"id": "guards_beforeeach_handlerootpathredirect", "label": "handleRootPathRedirect()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L408"}, {"id": "guards_beforeeach_isunauthorizederror", "label": "isUnauthorizedError()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L425"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_guards_beforeeach_ts", "target": "vue_router", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_guards_beforeeach_ts", "target": "vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L39", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_guards_beforeeach_ts", "target": "nprogress", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L40", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_guards_beforeeach_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_setting", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_guards_beforeeach_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/guards/beforeEach.ts", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_system_user_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L1"}, {"id": "user_index_loadroleoptions", "label": "loadRoleOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L338"}, {"id": "user_index_formatuserdeptdisplay", "label": "formatUserDeptDisplay()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L361"}, {"id": "user_index_formatuserroledisplay", "label": "formatUserRoleDisplay()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L367"}, {"id": "user_index_filterdeptnode", "label": "filterDeptNode()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L410"}, {"id": "user_index_handledeptnodeclick", "label": "handleDeptNodeClick()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L419"}, {"id": "user_index_loaddepttree", "label": "loadDeptTree()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L425"}, {"id": "user_index_loaddata", "label": "loadData()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L434"}, {"id": "user_index_handlesearch", "label": "handleSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L451"}, {"id": "user_index_handlereset", "label": "handleReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L456"}, {"id": "user_index_resetform", "label": "resetForm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L465"}, {"id": "user_index_handleadd", "label": "handleAdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L481"}, {"id": "user_index_handleedit", "label": "handleEdit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L492"}, {"id": "user_index_handlesubmit", "label": "handleSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L518"}, {"id": "user_index_handleselectionchange", "label": "handleSelectionChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L558"}, {"id": "user_index_handlerowdelete", "label": "handleRowDelete()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L562"}, {"id": "user_index_handlerowresetpwd", "label": "handleRowResetPwd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L570"}, {"id": "user_index_handlebatchdelete", "label": "handleBatchDelete()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L580"}, {"id": "user_index_handlebatchresetpwd", "label": "handleBatchResetPwd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L599"}, {"id": "user_index_handleview", "label": "handleView()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L651"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_system_user_index_vue", "target": "element_plus", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L310", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_system_user_index_vue", "target": "icons_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L311", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_system_user_index_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_components_business_system_view_diLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_types_import_components_d_ts", "label": "components.d.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_router_core_menuprocessor_ts", "label": "MenuProcessor.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L1"}, {"id": "core_menuprocessor_menuprocessor", "label": "MenuProcessor", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L19"}, {"id": "core_menuprocessor_menuprocessor_normalizemenucode", "label": ".normalizeMenuCode()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L24"}, {"id": "core_menuprocessor_menuprocessor_getmenulist", "label": ".getMenuList()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L40"}, {"id": "core_menuprocessor_menuprocessor_processfrontendmenu", "label": ".processFrontendMenu()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L60"}, {"id": "core_menuprocessor_menuprocessor_processbackendmenu", "label": ".processBackendMenu()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L92"}, {"id": "core_menuprocessor_menuprocessor_filtermenubyroles", "label": ".filterMenuByRoles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L100"}, {"id": "core_menuprocessor_menuprocessor_filtermenubycodes", "label": ".filterMenuByCodes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L120"}, {"id": "core_menuprocessor_menuprocessor_filteremptymenus", "label": ".filterEmptyMenus()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L146"}, {"id": "core_menuprocessor_menuprocessor_validatemenulist", "label": ".validateMenuList()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L183"}, {"id": "core_menuprocessor_menuprocessor_normalizemenupaths", "label": ".normalizeMenuPaths()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L191"}, {"id": "core_menuprocessor_menuprocessor_resolvedefaultredirect", "label": ".resolveDefaultRedirect()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L215"}, {"id": "core_menuprocessor_menuprocessor_isnavigableroute", "label": ".isNavigableRoute()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L237"}, {"id": "core_menuprocessor_menuprocessor_validatemenupaths", "label": ".validateMenuPaths()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L257"}, {"id": "core_menuprocessor_menuprocessor_isvalidabsolutepath", "label": ".isValidAbsolutePath()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L283"}, {"id": "core_menuprocessor_menuprocessor_logpatherror", "label": ".logPathError()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L294"}, {"id": "core_menuprocessor_menuprocessor_buildfullpath", "label": ".buildFullPath()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L316"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_core_menuprocessor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_types_router", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_core_menuprocessor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/router/core/MenuProcessor.ts", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_router_core_menuprocessor_ts", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_hooks_core_useappmode", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_views_system_user_index_vue", "label": "index.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L1"}, {"id": "user_index_loadroleoptions", "label": "loadRoleOptions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L325"}, {"id": "user_index_formatuserdeptdisplay", "label": "formatUserDeptDisplay()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L348"}, {"id": "user_index_formatuserroledisplay", "label": "formatUserRoleDisplay()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L354"}, {"id": "user_index_filterdeptnode", "label": "filterDeptNode()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L397"}, {"id": "user_index_handledeptnodeclick", "label": "handleDeptNodeClick()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L406"}, {"id": "user_index_loaddepttree", "label": "loadDeptTree()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L412"}, {"id": "user_index_loaddata", "label": "loadData()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L421"}, {"id": "user_index_handlesearch", "label": "handleSearch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L438"}, {"id": "user_index_handlereset", "label": "handleReset()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L443"}, {"id": "user_index_resetform", "label": "resetForm()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L452"}, {"id": "user_index_handleadd", "label": "handleAdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L468"}, {"id": "user_index_handleedit", "label": "handleEdit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L479"}, {"id": "user_index_handlesubmit", "label": "handleSubmit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L505"}, {"id": "user_index_handleselectionchange", "label": "handleSelectionChange()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L545"}, {"id": "user_index_requiresingleselection", "label": "requireSingleSelection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L549"}, {"id": "user_index_handletoolbarview", "label": "handleToolbarView()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L557"}, {"id": "user_index_handletoolbaredit", "label": "handleToolbarEdit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L562"}, {"id": "user_index_handlebatchdelete", "label": "handleBatchDelete()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L567"}, {"id": "user_index_handlebatchresetpwd", "label": "handleBatchResetPwd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L586"}, {"id": "user_index_handleview", "label": "handleView()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L638"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_system_user_index_vue", "target": "element_plus", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue", "source_location": "L297", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_views_system_user_index_vue", "target": "icons_vue", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_types_import_components_d_ts", "label": "components.d.ts", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts", "source_location": "L1"}], "edges": [], "raw_calls": []}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "label": "App.vue", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L1"}, {"id": "src_app_refreshbuttonautoicons", "label": "refreshButtonAutoIcons()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L51"}, {"id": "src_app_refreshpaneltitleicons", "label": "refreshPanelTitleIcons()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L110"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "pinia", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_store_modules_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "zh_cn", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "en", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_sys", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_ui_animation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_utils_storage", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "users_wuzilong_work_00code_zkxw_web_admin_src_hooks_core_usetheme", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "src_app_refreshbuttonautoicons", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_web_admin_src_app_vue", "target": "src_app_refreshpaneltitleicons", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L110", "weight": 1.0}], "raw_calls": [{"caller_nid": "src_app_refreshbuttonautoicons", "callee": "join", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L56"}, {"caller_nid": "src_app_refreshbuttonautoicons", "callee": "forEach", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L57"}, {"caller_nid": "src_app_refreshpaneltitleicons", "callee": "forEach", "source_file": "/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue", "source_location": "L113"}]}
|
||||
@@ -115,24 +115,20 @@ export class MenuProcessor {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 menu code 过滤菜单(仅补齐顶级父菜单)
|
||||
* 根据 menu code 过滤菜单(保留有权限的叶子及其各级父目录)
|
||||
*/
|
||||
private filterMenuByCodes(
|
||||
menu: AppRouteRecord[],
|
||||
codes: Set<string>,
|
||||
level = 1
|
||||
): AppRouteRecord[] {
|
||||
private filterMenuByCodes(menu: AppRouteRecord[], codes: Set<string>): AppRouteRecord[] {
|
||||
return menu.reduce((acc: AppRouteRecord[], item) => {
|
||||
const rawCode = (item.meta as any)?.menuCode ?? item.name
|
||||
const code = this.normalizeMenuCode(rawCode)
|
||||
const hasSelfPermission = !!code && codes.has(code)
|
||||
const filteredChildren = item.children?.length
|
||||
? this.filterMenuByCodes(item.children, codes, level + 1)
|
||||
? this.filterMenuByCodes(item.children, codes)
|
||||
: item.children
|
||||
|
||||
const shouldKeep =
|
||||
hasSelfPermission ||
|
||||
(level === 1 && Array.isArray(filteredChildren) && filteredChildren.length > 0)
|
||||
(Array.isArray(filteredChildren) && filteredChildren.length > 0)
|
||||
|
||||
if (shouldKeep) {
|
||||
acc.push({
|
||||
|
||||
@@ -278,9 +278,12 @@ async function handleDynamicRoutes(
|
||||
// 2. 获取菜单数据
|
||||
const menuList = await menuProcessor.getMenuList()
|
||||
|
||||
// 3. 验证菜单数据
|
||||
// 3. 验证菜单数据:无可用菜单时跳转 403,而非当作系统错误
|
||||
if (!menuProcessor.validateMenuList(menuList)) {
|
||||
throw new Error('获取菜单列表失败,请重新登录')
|
||||
routeInitInProgress = false
|
||||
closeLoading()
|
||||
next({ name: 'Exception403', replace: true })
|
||||
return
|
||||
}
|
||||
|
||||
// 4. 注册动态路由
|
||||
|
||||
@@ -109,9 +109,13 @@ export const useUserStore = defineStore(
|
||||
* 通知后端撤销 Redis 会话,然后清空所有用户相关状态并跳转到登录页
|
||||
*/
|
||||
const logOut = async () => {
|
||||
// 先通知后端撤销 Redis 会话(不等待结果,失败也不阻塞退出)
|
||||
// 先通知后端撤销 Redis 会话(须在清空 token 之前完成,否则请求无 Authorization)
|
||||
if (accessToken.value) {
|
||||
fetchLogout().catch(() => {})
|
||||
try {
|
||||
await fetchLogout()
|
||||
} catch {
|
||||
// 登出接口失败不阻塞本地退出
|
||||
}
|
||||
}
|
||||
|
||||
// 保存当前用户 ID,用于下次登录时判断是否为同一用户
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
<el-dialog
|
||||
v-model="accessLogVisible"
|
||||
:title="`人员进出记录 — ${accessLogRoom?.roomName || ''}`"
|
||||
width="960px"
|
||||
width="1200px"
|
||||
class="dialog-form-layout"
|
||||
align-center
|
||||
destroy-on-close
|
||||
@@ -477,7 +477,7 @@
|
||||
<el-dialog
|
||||
v-model="uvLogVisible"
|
||||
:title="`紫外线消毒记录 — ${uvLogRoom?.roomName || ''}`"
|
||||
width="960px"
|
||||
width="1200px"
|
||||
class="dialog-form-layout"
|
||||
align-center
|
||||
destroy-on-close
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<section class="panel">
|
||||
<div class="flex gap-4">
|
||||
<!-- 左侧:组织树 -->
|
||||
<div class="w-[280px] shrink-0 border-r border-[var(--mint-border)] pr-4">
|
||||
<div class="user-dept-aside w-[280px] shrink-0 border-r border-[var(--mint-border)] pr-4">
|
||||
<!-- 标题与搜索同处 panel-top:避免标题栏底边与独立输入框之间出现不可控的视觉断层 -->
|
||||
<div class="panel-top user-dept-aside__head">
|
||||
<h2>组织</h2>
|
||||
@@ -27,14 +27,19 @@
|
||||
<!-- 右侧:用户列表 -->
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="panel-top">
|
||||
<h2>用户列表</h2>
|
||||
<h2 class="title-bar-heading">用户列表</h2>
|
||||
</div>
|
||||
|
||||
<div class="filter-block">
|
||||
<el-form :model="searchForm" class="filter-form" @submit.prevent>
|
||||
<div class="filter-grid">
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="searchForm.keyword" placeholder="账号/姓名/手机号" clearable />
|
||||
<el-input
|
||||
v-model="searchForm.keyword"
|
||||
placeholder="账号/姓名/手机号"
|
||||
clearable
|
||||
@keyup.enter="handleSearch"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-select v-model="searchForm.status" placeholder="请选择" clearable>
|
||||
@@ -74,22 +79,6 @@
|
||||
<el-icon><Key /></el-icon>
|
||||
重置密码
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn-ghost"
|
||||
:disabled="selectedRows.length !== 1"
|
||||
@click="handleToolbarView"
|
||||
>
|
||||
<el-icon><View /></el-icon>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn-ghost"
|
||||
:disabled="selectedRows.length !== 1"
|
||||
@click="handleToolbarEdit"
|
||||
>
|
||||
<el-icon><Edit /></el-icon>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
class="btn-ghost"
|
||||
type="danger"
|
||||
@@ -97,7 +86,7 @@
|
||||
@click="handleBatchDelete"
|
||||
>
|
||||
<el-icon><Delete /></el-icon>
|
||||
删除
|
||||
批量删除
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -177,6 +166,39 @@
|
||||
align="center"
|
||||
header-align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
min-width="260"
|
||||
fixed="right"
|
||||
align="center"
|
||||
header-align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<div style="display: flex; justify-content: center; gap: 8px">
|
||||
<el-button class="btn-op-item primary" @click="handleView(row)">
|
||||
<el-icon><View /></el-icon>查看
|
||||
</el-button>
|
||||
<el-dropdown trigger="hover" @command="(cmd: string) => handleDropdownCommand(cmd, row)">
|
||||
<el-button class="btn-op-item">
|
||||
<el-icon><More /></el-icon>
|
||||
</el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item command="edit">
|
||||
<el-icon><Edit /></el-icon>编辑
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item command="resetPwd">
|
||||
<el-icon><Key /></el-icon>重置密码
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item command="delete" divided>
|
||||
<el-icon><Delete /></el-icon>删除
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="pagination list-pager-bar">
|
||||
@@ -305,7 +327,8 @@
|
||||
Search,
|
||||
Key,
|
||||
Edit,
|
||||
Delete
|
||||
Delete,
|
||||
More
|
||||
} from '@element-plus/icons-vue'
|
||||
import SystemViewDialog from '@/components/business/system-view-dialog/index.vue'
|
||||
import {
|
||||
@@ -546,22 +569,36 @@
|
||||
selectedRows.value = rows
|
||||
}
|
||||
|
||||
function requireSingleSelection(action: string): Api.User.UserItem | null {
|
||||
if (selectedRows.value.length !== 1) {
|
||||
ElMessage.warning(`请选择一个用户后再${action}`)
|
||||
return null
|
||||
async function handleRowDelete(row: Api.User.UserItem) {
|
||||
await ElMessageBox.confirm(`确定删除用户「${row.nickName}」吗?`, '提示', { type: 'warning' })
|
||||
await fetchDeleteUser(row.id)
|
||||
ElMessage.success('删除成功')
|
||||
selectedRows.value = selectedRows.value.filter((item) => item.id !== row.id)
|
||||
await loadData()
|
||||
}
|
||||
|
||||
async function handleRowResetPwd(row: Api.User.UserItem) {
|
||||
await ElMessageBox.confirm(
|
||||
`确定将用户「${row.nickName}」的密码重置为 111111 吗?`,
|
||||
'提示',
|
||||
{ type: 'warning' }
|
||||
)
|
||||
await fetchResetPassword(row.id)
|
||||
ElMessage.success('密码重置成功')
|
||||
}
|
||||
|
||||
function handleDropdownCommand(command: string, row: Api.User.UserItem) {
|
||||
switch (command) {
|
||||
case 'edit':
|
||||
handleEdit(row)
|
||||
break
|
||||
case 'resetPwd':
|
||||
handleRowResetPwd(row)
|
||||
break
|
||||
case 'delete':
|
||||
handleRowDelete(row)
|
||||
break
|
||||
}
|
||||
return selectedRows.value[0]
|
||||
}
|
||||
|
||||
function handleToolbarView() {
|
||||
const row = requireSingleSelection('查看')
|
||||
if (row) handleView(row)
|
||||
}
|
||||
|
||||
function handleToolbarEdit() {
|
||||
const row = requireSingleSelection('编辑')
|
||||
if (row) handleEdit(row)
|
||||
}
|
||||
|
||||
async function handleBatchDelete() {
|
||||
@@ -662,6 +699,19 @@
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
/* 左栏贴合 panel 左缘圆角,避免直角白底遮住面板左下/左上圆弧 */
|
||||
.user-dept-aside {
|
||||
border-radius: var(--mint-radius) 0 0 var(--mint-radius);
|
||||
overflow: hidden;
|
||||
background: var(--mint-surface);
|
||||
}
|
||||
|
||||
/* 分栏布局下仅保留右下圆角,避免列表区左下角与侧栏交界处出现多余弧面 */
|
||||
:deep(.list-wrap),
|
||||
:deep(.pagination.list-pager-bar) {
|
||||
border-radius: 0 0 var(--mint-radius) 0;
|
||||
}
|
||||
|
||||
/* 侧栏标题区纵向排布:与全局 panel-top 横排工具栏区分,收紧标题与搜索的间距节奏 */
|
||||
.user-dept-aside__head {
|
||||
flex-direction: column;
|
||||
|
||||
Reference in new issue
Block a user