将前端所有显示用户名称的地方统一改为显示 nickName(昵称),而不是 userName(登录账号)。
文件路径:app/utils/constant.js
修改内容:javascript const constant = { userId: 'vuex_userId', avatar: 'vuex_avatar', name: 'vuex_name', // 保留:存储 userName(登录账号) nickName: 'vuex_nickName', // 新增:存储 nickName(昵称) roles: 'vuex_roles', permissions: 'vuex_permissions', deptId: 'vuex_deptId', branchCompanyId: 'vuex_branchCompanyId', branchCompanyName: 'vuex_branchCompanyName', oaUserId: 'vuex_oaUserId' }
说明:添加 nickName 常量,用于 localStorage 持久化存储
文件路径:app/store/modules/user.js
state: {
token: getToken(),
userId: storage.get(constant.userId),
name: storage.get(constant.name), // userName(登录账号)
nickName: storage.get(constant.nickName), // nickName(昵称)- 新增
avatar: storage.get(constant.avatar),
// ... 其他状态
}
SET_NICK_NAME: (state, nickName) => {
state.nickName = nickName
storage.set(constant.nickName, nickName)
}
getInfo().then(res => {
const user = res.user
const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
const nickname = (user == null || user.nickName == "" || user.nickName == null) ? username : user.nickName
// 保存两个字段
commit('SET_NAME', username) // 保存 userName
commit('SET_NICK_NAME', nickname) // 保存 nickName,如果为空则使用 userName
// ...
})
逻辑说明:
- 优先使用 user.nickName
- 如果 nickName 为空,则回退使用 userName
- 确保显示名称始终有值
文件路径:app/pages/index.vue
修改内容:javascript computed: { ...mapState({ userName: state => state.user.nickName, // 改为使用 nickName currentUser: state => state.user }), // ... }
显示内容:
- 用户昵称(nickName)
- 所在分公司(branchCompanyName)
- 关联车牌号(boundVehicle)
文件路径:app/pages/mine/index.vue
修改内容:
```javascript
// data 初始化
name: this.$store.state.user.nickName,
// onShow 方法
this.name = this.$store.state.user.nickName || '未登录'
```
文件路径:app/pages/task/create-emergency.vue
修改内容:javascript computed: { ...mapState({ name: state => state.user.nickName || '张三', nickName: state => state.user.nickName || '张三', // ... }) }
文件路径:app/pages/task/create-normal.vue
修改内容:javascript computed: { ...mapState({ name: state => state.user.nickName || '张三', // ... }) }
文件路径:app/pages/task/create-welfare.vue
修改内容:javascript computed: { ...mapState({ name: state => state.user.nickName || '张三', // ... }) }
graph LR
A[用户登录] --> B[调用getInfo接口]
B --> C[获取user.userName和user.nickName]
C --> D[存储到Vuex State]
D --> E[持久化到localStorage]
E --> F[页面从state.user.nickName读取]
F --> G[界面显示昵称]
{
"code": 200,
"user": {
"userId": 1,
"userName": "admin", // 登录账号
"nickName": "管理员", // 昵称(必须返回)
"avatar": "/profile/avatar.jpg",
"deptId": 103,
"branchCompanyId": 100,
"branchCompanyName": "广州分公司"
},
"roles": ["admin"],
"permissions": ["*:*:*"]
}
重要说明:
- userName:用户登录账号,用于系统认证
- nickName:用户昵称,用于界面显示
- 如果后端未设置 nickName,前端会自动使用 userName 作为显示名称
| 文件路径 | 修改类型 | 说明 |
|---|---|---|
app/utils/constant.js |
新增 | 添加 nickName 常量 |
app/store/modules/user.js |
扩展 | 添加 nickName 状态管理 |
app/pages/index.vue |
修改 | 首页显示昵称 |
app/pages/mine/index.vue |
修改 | 个人中心显示昵称 |
app/pages/task/create-emergency.vue |
修改 | 任务创建页使用昵称 |
app/pages/task/create-normal.vue |
修改 | 任务创建页使用昵称 |
app/pages/task/create-welfare.vue |
修改 | 任务创建页使用昵称 |
admin、u001、zhangsan 等登录账号管理员、张三、李四 等中文姓名state.user.nickName本次修改实现了前端用户显示名称的统一规范:
- ✅ 所有界面统一显示昵称(nickName)
- ✅ 登录账号(userName)仅用于系统认证
- ✅ 完善的数据回退机制
- ✅ 良好的兼容性和用户体验