From 930befb92274802ab32bc5a442b95b87a004af52 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 二月 2026 11:49:58 +0800
Subject: [PATCH] pda优化
---
pages/login/login.vue | 4 +-
pages/home/index.vue | 62 +++++++++++++++++++++++++------
2 files changed, 52 insertions(+), 14 deletions(-)
diff --git a/pages/home/index.vue b/pages/home/index.vue
index ff2647d..1ac7f7f 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -77,20 +77,59 @@
}
},
onShow() {
- this.user = uni.getStorageSync('userData')
-
+ this.user = this.getStorageUser()
},
- mounted(){
- this.loadMenusAndPermissions()
+ mounted() {
+ const user = this.getStorageUser()
+ this.user = user
+ this.loadMenusAndPermissions(user)
},
methods: {
- // 骞惰鑾峰彇鑿滃崟鍜屾潈闄愭暟鎹�
- async loadMenusAndPermissions() {
+ // 浠� storage 鎷疯礉涓烘櫘閫氬璞★紝閬垮厤 Vue 鏃犳硶鏋氫妇瀵艰嚧 this.user 涓虹┖
+ getStorageUser() {
+ let raw = uni.getStorageSync('userData')
+ if (raw == null) return {}
+ if (typeof raw === 'string') {
+ try {
+ raw = JSON.parse(raw)
+ } catch (e) {
+ return {}
+ }
+ }
+ if (typeof raw !== 'object') return {}
+ const keys =
+ Object.keys(raw).length > 0
+ ? Object.keys(raw)
+ : Object.getOwnPropertyNames(raw)
+ if (keys.length === 0) {
+ try {
+ return JSON.parse(JSON.stringify(raw)) || {}
+ } catch (e) {
+ return {}
+ }
+ }
+ const copy = {}
+ for (const key of keys) {
+ try {
+ const val = raw[key]
+ if (Array.isArray(val)) copy[key] = val.slice()
+ else if (val != null && typeof val === 'object')
+ copy[key] = JSON.parse(JSON.stringify(val))
+ else copy[key] = val
+ } catch (e) {
+ copy[key] = raw[key]
+ }
+ }
+ return copy
+ },
+ // 骞惰鑾峰彇鑿滃崟鍜屾潈闄愭暟鎹紝浼犲叆 user 閬垮厤寮傛鏃� this.user 鏈氨缁�
+ async loadMenusAndPermissions(user) {
this.loading = true
+ const u = user != null ? user : this.getStorageUser()
try {
const [menuRes, permRes] = await Promise.all([
this.fetchMenuTree(),
- this.fetchPermissions()
+ this.fetchPermissions(u)
])
this.menuTree = menuRes
this.permissionIds = new Set(permRes)
@@ -127,11 +166,10 @@
}
},
- // 鑾峰彇鏉冮檺锛堟敮鎸佸瑙掕壊锛�
- async fetchPermissions() {
- console.log('this.user:', this.user)
- const roleIds = this.user.userRoleIds || []
- console.log('roleIds:', roleIds)
+ // 鑾峰彇鏉冮檺锛堟敮鎸佸瑙掕壊锛夛紝浣跨敤浼犲叆鐨� user 閬垮厤 this.user 鏈氨缁紱鍚庣鐧诲綍杩斿洖 roleIds锛坲serRoleIds 琚� @JsonIgnore锛�
+ async fetchPermissions(user) {
+ const u = user != null ? user : this.user
+ const roleIds = (u && (u.userRoleIds || u.roleIds)) ? (u.userRoleIds || u.roleIds) : []
if (roleIds.length === 0) {
console.warn('鐢ㄦ埛娌℃湁瑙掕壊ID')
return []
diff --git a/pages/login/login.vue b/pages/login/login.vue
index 3430788..3f031d6 100644
--- a/pages/login/login.vue
+++ b/pages/login/login.vue
@@ -295,8 +295,8 @@
this.loading = true;
this.loginButton = 'login.loging';
uni.setStorageSync('token', data.accessToken);
- uni.setStorageSync('userData', data.user);
- if (this.remberPassword) {
+ uni.setStorageSync('userData', data.user);
+ if (this.remberPassword) {
uni.setStorageSync('user', this.user);
} else {
uni.removeStorageSync('user');
--
Gitblit v1.9.1