Files
guoju0808/ry-vue3/src/store/user.js
T
郭庆泰 2eb2d1a43b feat(front): 项目/会议管理 admin 端补齐 + 删除按钮 + 级联 UI + 角色劳务组件
admin 会议管理:
- 新建 admin/AdminMeetings.vue (查看/删除/批量删除, 面包屑 首页/项目管理/会议管理)
- AdminLayout.vue 加 /admin/meetings 菜单
- router/index.js 加 admin-meetings + admin-meetings-detail 路由
- MeetingDetail.vue admin 删除按钮改 admin+manager 双角色可触发 (onAdminDelete 跳回按角色)

manager 会议管理:
- Meetings.vue 加批量删除 + 删除按钮 + 删除确认文案 (6 张表级联)
- MeetingDetail.vue 删除按钮 v-if 改 canDeleteMeeting = isAdmin || isManager

manager 项目管理:
- Projects.vue 加批量删除 + 删除项 + doDelete 改走 cascade (5 张项目表 + 会议链)
- ProjectsNew.vue style-alignment: page-card 居左 (max-width 1200px, 无 margin auto), form-actions 包在 el-form 内
- Projects.vue + Meetings.vue + AdminMeetings.vue 删页内冗余删除提示

store + 组件:
- store/user.js 加 isAdmin getter
- components/ProjectRoleSelect.vue 新建 (项目级角色劳务下拉, 接 roleLabor)
2026-08-22 20:16:46 +08:00

51 lines
1.5 KiB
JavaScript

import { defineStore } from 'pinia'
export const useUserStore = defineStore('user', {
state: () => ({
token: localStorage.getItem('ry_token') || '',
user: JSON.parse(localStorage.getItem('ry_user') || 'null'),
/**
* 当前用户 (doctor 角色) 的专家审核状态
* true = 审核通过 (audit_status='2'), false = 待审核/被拒绝/未注册
* 用于侧栏 menu 和首页 pannel 的可见性控制
* 非 doctor 角色保持 false (无意义)
*/
expertAuditApproved: false
}),
getters: {
role: (s) => s.user?.role || '',
isLogin: (s) => !!s.user,
accountType: (s) => s.user?.accountType || 'MAIN',
parentUserId: (s) => s.user?.parentUserId || null,
isMain: (s) => (s.user?.accountType || 'MAIN') === 'MAIN',
isSub: (s) => s.user?.accountType === 'SUB',
isAdmin: (s) => s.user?.role === 'admin'
},
actions: {
setLogin(token, user) {
this.token = token
this.user = user
localStorage.setItem('ry_token', token)
localStorage.setItem('ry_user', JSON.stringify(user))
},
setToken(token) {
this.token = token
localStorage.setItem('ry_token', token)
},
setUser(user) {
this.user = user
localStorage.setItem('ry_user', JSON.stringify(user))
},
setExpertAuditApproved(v) {
this.expertAuditApproved = !!v
},
logout() {
this.token = ''
this.user = null
this.expertAuditApproved = false
localStorage.removeItem('ry_token')
localStorage.removeItem('ry_user')
}
}
})