版本预发布

This commit is contained in:
孟帅
2023-02-08 20:29:34 +08:00
parent f11c7c5bf2
commit 2068d05c93
269 changed files with 16122 additions and 12075 deletions

View File

@@ -93,16 +93,23 @@ export const useAsyncRouteStore = defineStore({
const { meta } = route;
const { permissions } = meta || {};
if (!permissions) return true;
return permissionsList.some((item) => permissions.includes(item.value));
return permissionsList.some((item) => permissions.includes(item));
};
const { getPermissionMode } = useProjectSetting();
const permissionMode = unref(getPermissionMode);
const $dialog = window['$dialog'];
if (permissionMode === 'BACK') {
// 动态获取菜单
try {
accessedRouters = await generatorDynamicRouter();
} catch (error) {
console.log(error);
$dialog.info({
title: '提示',
content: '获取动态路由失败,管理员请确认是否为角色分配菜单权限?',
positiveText: '确定',
onPositiveClick: () => {},
});
}
} else {
try {
@@ -110,8 +117,15 @@ export const useAsyncRouteStore = defineStore({
accessedRouters = filter(asyncRoutes, routeFilter);
} catch (error) {
console.log(error);
$dialog.info({
title: '提示',
content: '过滤动态路由失败,请联系管理员解决!',
positiveText: '确定',
onPositiveClick: () => {},
});
}
}
accessedRouters = accessedRouters.filter(routeFilter);
this.setRouters(accessedRouters);

View File

@@ -1,17 +1,46 @@
import { defineStore } from 'pinia';
import { store } from '@/store';
import { PullMessages } from '@/api/apply/notice';
import { MessageRow, MessageTab, parseMessage } from '@/enums/systemMessageEnum';
export interface INotificationStore {
messages: any[];
messages: MessageTab[];
notifyUnread: number;
noticeUnread: number;
letterUnread: number;
newMessage: MessageRow | null;
}
export const notificationStore = defineStore({
id: 'notificationStore',
state: (): INotificationStore => ({
messages: [],
messages: [
{
key: 1,
name: '通知',
badgeProps: { type: 'warning' },
list: [],
},
{
key: 2,
name: '公告',
badgeProps: { type: 'error' },
list: [],
},
{
key: 3,
name: '私信',
badgeProps: { type: 'info' },
list: [],
},
],
notifyUnread: 0,
noticeUnread: 0,
letterUnread: 0,
newMessage: null,
}),
getters: {
getMessages(): [any][] {
getMessages(): MessageTab[] {
return this.messages;
},
},
@@ -19,28 +48,51 @@ export const notificationStore = defineStore({
setMessages(messages) {
this.messages = messages;
},
addMessages(message) {
message = JSON.parse(message);
if (
message.event !== undefined &&
message.event === 'notice' &&
message.data !== undefined &&
message.data !== ''
) {
this.messages.unshift({
title: message.data.title,
description: message.data.type == 1 ? '通知' : '公告',
content: message.data.content,
meta: message.data.updatedAt,
});
}
// 数据最大提醒条数,超出进行清理
const limit = 10;
if (this.messages.length > limit) {
const sub = this.messages.length - limit;
this.messages.splice(this.messages.length - sub);
triggerNewMessages(message) {
message = parseMessage(message);
this.addMessages(message);
this.newMessage = message;
},
addMessages(message: MessageRow) {
switch (message.type) {
case 1:
this.messages[0].list.push(message);
this.notifyUnread++;
break;
case 2:
this.messages[1].list.push(message);
this.noticeUnread++;
break;
case 3:
this.messages[2].list.push(message);
this.letterUnread++;
break;
}
},
pullMessages() {
PullMessages().then((res) => {
if (res.list === undefined) {
return;
}
this.messages[0].list = [];
this.messages[1].list = [];
this.messages[2].list = [];
if (res.list?.length > 0) {
for (let i = 0; i < res.list.length; i++) {
this.addMessages(parseMessage(res.list[i]));
}
}
this.notifyUnread = res.notifyCount;
this.noticeUnread = res.noticeCount;
this.letterUnread = res.letterCount;
});
},
getUnreadCount() {
return this.notifyUnread + this.noticeUnread + this.letterUnread;
},
},
});

View File

@@ -7,13 +7,41 @@ import { getConfig, getUserInfo, login } from '@/api/system/user';
const Storage = createStorage({ storage: localStorage });
export interface UserInfoState {
id: number;
deptName: string;
roleName: string;
cityLabel: string;
permissions: string[];
username: string;
realName: string;
avatar: string;
balance: number;
sex: number;
qq: string;
email: string;
mobile: string;
birthday: string;
cityId: number;
address: string;
cash: {
name: string;
account: string;
payeeCode: string;
};
createdAt: string;
loginCount: number;
lastLoginAt: string;
lastLoginIp: string;
}
export interface IUserState {
token: string;
username: string;
welcome: string;
realName: string;
avatar: string;
permissions: any[];
info: any;
info: UserInfoState | null;
config: any;
}
@@ -22,11 +50,11 @@ export const useUserStore = defineStore({
state: (): IUserState => ({
token: Storage.get(ACCESS_TOKEN, ''),
username: '',
welcome: '',
realName: '',
avatar: '',
permissions: [],
info: Storage.get(CURRENT_USER, {}),
config: Storage.get(CURRENT_CONFIG, {}),
info: Storage.get(CURRENT_USER, null),
config: Storage.get(CURRENT_CONFIG, null),
}),
getters: {
getToken(): string {
@@ -35,13 +63,16 @@ export const useUserStore = defineStore({
getAvatar(): string {
return this.avatar;
},
getNickname(): string {
getUsername(): string {
return this.username;
},
getRealName(): string {
return this.realName;
},
getPermissions(): [any][] {
return this.permissions;
},
getUserInfo(): object {
getUserInfo(): UserInfoState | null {
return this.info;
},
getConfig(): object {
@@ -55,10 +86,16 @@ export const useUserStore = defineStore({
setAvatar(avatar: string) {
this.avatar = avatar;
},
setPermissions(permissions) {
setUsername(username: string) {
this.username = username;
},
setRealName(realName: string) {
this.realName = realName;
},
setPermissions(permissions: string[]) {
this.permissions = permissions;
},
setUserInfo(info) {
setUserInfo(info: UserInfoState | null) {
this.info = info;
},
setConfig(config) {
@@ -69,7 +106,6 @@ export const useUserStore = defineStore({
try {
const response = await login(userInfo);
const { data, code } = response;
console.log('data:' + JSON.stringify(data));
if (code === ResultEnum.SUCCESS) {
const ex = 7 * 24 * 60 * 60 * 1000;
storage.set(ACCESS_TOKEN, data.token, ex);
@@ -86,8 +122,7 @@ export const useUserStore = defineStore({
// 获取用户信息
GetInfo() {
// eslint-disable-next-line @typescript-eslint/no-this-alias
const that = this;
const that: any = this;
return new Promise((resolve, reject) => {
getUserInfo()
.then((res) => {
@@ -96,10 +131,12 @@ export const useUserStore = defineStore({
const permissionsList = result.permissions;
that.setPermissions(permissionsList);
that.setUserInfo(result);
that.setAvatar(result.avatar);
that.setUsername(result.username);
that.setRealName(result.realName);
} else {
reject(new Error('getInfo: permissionsList must be a non-null array !'));
}
that.setAvatar(result.avatar);
resolve(res);
})
.catch((error) => {
@@ -107,9 +144,8 @@ export const useUserStore = defineStore({
});
});
},
// 获取用户信息
// 获取用户配置
GetConfig() {
// eslint-disable-next-line @typescript-eslint/no-this-alias
const that = this;
return new Promise((resolve, reject) => {
getConfig()
@@ -127,7 +163,7 @@ export const useUserStore = defineStore({
// 登出
async logout() {
this.setPermissions([]);
this.setUserInfo('');
this.setUserInfo(null);
storage.remove(ACCESS_TOKEN);
storage.remove(CURRENT_USER);
return Promise.resolve('');