diff --git a/web/i18n/messages/cn.json b/web/i18n/messages/cn.json index 86061d4..3afb4ae 100644 --- a/web/i18n/messages/cn.json +++ b/web/i18n/messages/cn.json @@ -49,6 +49,30 @@ "errors": { "label_error": "错误页", "text_back_to_home": "返回首页" + }, + "user_management": { + "label_user_management": "用户管理", + "label_user_list": "用户列表", + "label_phone": "手机号", + "label_wechat": "微信号", + "label_register_time": "注册时间", + "label_remark": "备注", + "label_data_count": "创建数据数量", + "label_status": "状态", + "label_actions": "操作", + "button_detail": "详情", + "button_freeze": "冻结", + "button_unfreeze": "解冻", + "button_add_user": "新建用户", + "placeholder_phone": "请输入手机号", + "placeholder_wechat": "请输入微信号", + "placeholder_remark": "请输入备注", + "message_phone_required": "请输入手机号", + "message_phone_format_error": "请输入正确的手机号格式", + "message_freeze_success": "已冻结该用户", + "message_unfreeze_success": "已解冻该用户", + "text_status_normal": "正常", + "text_status_frozen": "冻结" } }, "common": { diff --git a/web/src/api/index.js b/web/src/api/index.js index 440a7e2..69a66d2 100644 --- a/web/src/api/index.js +++ b/web/src/api/index.js @@ -39,4 +39,10 @@ export default { deleteDept: (params = {}) => request.delete('/dept/delete', { params }), // auditlog getAuditLogList: (params = {}) => request.get('/auditlog/list', { params }), + // app users (客户端用户管理) - 使用现有的后端接口 + getAppUserList: (params = {}) => request.get('/app-user/list', { params }), + getAppUserById: (params = {}) => request.get('/app-user/detail', { params }), + createAppUser: (data = {}) => request.post('/app-user/register', data), + updateAppUser: (data = {}) => request.post('/app-user/update', data), + deleteAppUser: (params = {}) => request.delete('/app-user/delete', { params }), } diff --git a/web/src/layout/components/sidebar/components/SideMenu.vue b/web/src/layout/components/sidebar/components/SideMenu.vue index 9c559c9..ee8d14b 100644 --- a/web/src/layout/components/sidebar/components/SideMenu.vue +++ b/web/src/layout/components/sidebar/components/SideMenu.vue @@ -95,9 +95,11 @@ function getIcon(meta) { } function handleMenuSelect(key, item) { + console.log("🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥 ~ handleMenuSelect ~ key, item:", key, item); if (isExternal(item.path)) { window.open(item.path) } else { + console.log("🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥 ~ handleMenuSelect ~ item.path === curRoute.path:", item.path === curRoute.path); if (item.path === curRoute.path) { appStore.reloadPage() } else { diff --git a/web/src/store/modules/permission/index.js b/web/src/store/modules/permission/index.js index f7b319d..f696f43 100644 --- a/web/src/store/modules/permission/index.js +++ b/web/src/store/modules/permission/index.js @@ -6,10 +6,17 @@ import api from '@/api' // * 后端路由相关函数 // 根据后端传来数据构建出前端路由 +function getRouteName(route) { + if (route?.id) return `menu-${route.id}` + if (route?.path) return route.path.replace(/\//g, '-') || route.name + return route?.name +} + function buildRoutes(routes = []) { return routes.map((e) => { + const routeName = getRouteName(e) const route = { - name: e.name, + name: routeName, path: e.path, component: shallowRef(Layout), isHidden: e.is_hidden, @@ -26,7 +33,7 @@ function buildRoutes(routes = []) { if (e.children && e.children.length > 0) { // 有子菜单 route.children = e.children.map((e_child) => ({ - name: e_child.name, + name: getRouteName(e_child), path: e_child.path, component: vueModules[`/src/views${e_child.component}/index.vue`], isHidden: e_child.is_hidden, @@ -40,7 +47,7 @@ function buildRoutes(routes = []) { } else { // 没有子菜单,创建一个默认的子路由 route.children.push({ - name: `${e.name}Default`, + name: `${routeName}Default`, path: '', component: vueModules[`/src/views${e.component}/index.vue`], isHidden: true, @@ -49,6 +56,7 @@ function buildRoutes(routes = []) { icon: e.icon, order: e.order, keepAlive: e.keepalive, + activeMenu: routeName, }, }) } diff --git a/web/src/views/user-management/user-list/index.vue b/web/src/views/user-management/user-list/index.vue new file mode 100644 index 0000000..1059607 --- /dev/null +++ b/web/src/views/user-management/user-list/index.vue @@ -0,0 +1,274 @@ + + +