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 @@
+
+
+
+
+
+
+ 新建用户
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 注册后默认密码为手机号后6位
+
+
+
+
+
+