根据选择项目跟新材料管理

This commit is contained in:
zhuer
2025-03-07 09:07:42 +08:00
parent 80f4f0fad9
commit 51106f7a72
16 changed files with 1925 additions and 49 deletions

View File

@ -6,6 +6,16 @@ import defAva from '@/assets/images/profile.jpg';
import store from '@/store';
import { defineStore } from 'pinia';
// 添加两个函数用于操作localStorage
const saveSelectedProjectToStorage = (project) => {
localStorage.setItem('selectedProject', JSON.stringify(project));
};
const getSelectedProjectFromStorage = () => {
const stored = localStorage.getItem('selectedProject');
return stored ? JSON.parse(stored) : null;
};
export const useUserStore = defineStore('user', () => {
const token = ref(getToken());
const name = ref('');
@ -17,7 +27,9 @@ export const useUserStore = defineStore('user', () => {
const permissions = ref<Array<string>>([]); // 用户权限编码集合 → 判断按钮权限
const projects = ref<Array<{ id: string; name: string }>>([]);
const selectedProject = ref<{ id: string; name: string } | null>(projects.value[0]); // 默认选中第一个
// 从localStorage获取缓存的项目如果没有则默认为null
const selectedProject = ref<{ id: string; name: string } | null>(getSelectedProjectFromStorage());
/**
* 登录
* @param userInfo
@ -54,30 +66,31 @@ export const useUserStore = defineStore('user', () => {
userId.value = user.userId;
tenantId.value = user.tenantId;
// **新增项目数据获取**
const [projectErr, projectRes] = await to(getUserProject());
if (projectRes?.data) {
const projectList = projectRes.data.map(p => ({
const projectList = projectRes.data.map((p) => ({
id: p.projectId,
name: p.projectName || '未知项目'
}));
setProjects(projectList);
if (projectList.length > 0) {
// 如果有缓存的选中项目,且该项目在当前项目列表中存在,则使用缓存的项目
const storedProject = getSelectedProjectFromStorage();
if (storedProject && projectList.some((p) => p.id === storedProject.id)) {
setSelectedProject(storedProject);
} else if (projectList.length > 0) {
// 否则默认选择第一个项目
setSelectedProject(projectList[0]);
}
}
return Promise.resolve();
}
return Promise.reject(err);
};
// 注销
const logout = async (): Promise<void> => {
await logoutApi();
@ -85,6 +98,8 @@ export const useUserStore = defineStore('user', () => {
roles.value = [];
permissions.value = [];
removeToken();
// 清除项目缓存
localStorage.removeItem('selectedProject');
};
const setAvatar = (value: string) => {
@ -97,11 +112,14 @@ export const useUserStore = defineStore('user', () => {
const setSelectedProject = (project: { id: string; name: string }) => {
selectedProject.value = project;
// 将选中的项目保存到localStorage
saveSelectedProjectToStorage(project);
// ** 切换项目后,需要清空当前项目下的所有缓存数据 **
// 清空 pinia 缓存
// store.$reset();
// console.log("选择的新项目名称:" + selectedProject.value.name)
// console.log("选择的新项目id" + selectedProject.value.id)
// console.log("选择的新项目名称:" + selectedProject.value.name)
// console.log("选择的新项目id" + selectedProject.value.id)
};
return {