From 518104e2697f6ffcf1c56b391bacb7958e6d34c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=9D=E5=85=88=E7=91=9E?= <1490493387@qq.com> Date: Sun, 20 Mar 2022 23:46:03 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20state=E7=B1=BB=E5=9E=8B=E5=A3=B0?= =?UTF-8?q?=E6=98=8E=E7=A7=BB=E5=8A=A8=E8=87=B3types=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/directive/permission/index.ts | 1 - src/layout/components/TagsView/ScrollPane.vue | 2 +- src/layout/components/TagsView/index.vue | 2 +- src/store/index.ts | 2 - src/store/interface.ts | 51 ------------------- src/store/modules/app.ts | 10 ++-- src/store/modules/permission.ts | 2 +- src/store/modules/settings.ts | 12 ++--- src/store/modules/tagsView.ts | 2 +- src/store/modules/user.ts | 6 +-- src/types/api/system/login.d.ts | 2 +- src/types/api/system/user.d.ts | 1 - src/types/api/ums/index.d.ts | 1 - src/types/index.d.ts | 9 ++-- src/types/store/app.d.ts | 12 +++++ src/types/store/permission.d.ts | 9 ++++ src/types/store/setting.d.ts | 10 ++++ src/types/store/tagsView.d.ts | 12 +++++ src/types/store/user.d.ts | 10 ++++ 19 files changed, 78 insertions(+), 78 deletions(-) delete mode 100644 src/store/interface.ts delete mode 100644 src/types/api/ums/index.d.ts create mode 100644 src/types/store/app.d.ts create mode 100644 src/types/store/permission.d.ts create mode 100644 src/types/store/setting.d.ts create mode 100644 src/types/store/tagsView.d.ts create mode 100644 src/types/store/user.d.ts diff --git a/src/directive/permission/index.ts b/src/directive/permission/index.ts index da6deae..7b278b7 100644 --- a/src/directive/permission/index.ts +++ b/src/directive/permission/index.ts @@ -1,7 +1,6 @@ import useStore from "@/store"; import { Directive, DirectiveBinding } from "vue"; - /** * 按钮权限校验 */ diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue index 2303500..44207c1 100644 --- a/src/layout/components/TagsView/ScrollPane.vue +++ b/src/layout/components/TagsView/ScrollPane.vue @@ -17,7 +17,7 @@ import { onBeforeUnmount, getCurrentInstance, } from "vue"; -import { TagView } from "@/store/interface"; +import { TagView } from "@/types"; import useStore from "@/store"; const emits = defineEmits(); diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue index 808ac09..f59b966 100644 --- a/src/layout/components/TagsView/index.vue +++ b/src/layout/components/TagsView/index.vue @@ -74,7 +74,7 @@ ComponentInternalInstance, import path from "path-browserify"; import { RouteRecordRaw, useRoute, useRouter } from "vue-router"; -import { TagView } from "@/store/interface"; +import { TagView } from "@/types"; import ScrollPane from "./ScrollPane.vue"; import { diff --git a/src/store/index.ts b/src/store/index.ts index 757799d..184ebbd 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,4 +1,3 @@ -// 导入首页模块 import useUserStore from './modules/user' import useAppStore from './modules/app' import usePermissionStore from './modules/permission' @@ -11,7 +10,6 @@ const useStore = () => ({ permission: usePermissionStore(), setting: useSettingStore(), tagsView: useTagsViewStore() - }) export default useStore \ No newline at end of file diff --git a/src/store/interface.ts b/src/store/interface.ts deleted file mode 100644 index b1a7841..0000000 --- a/src/store/interface.ts +++ /dev/null @@ -1,51 +0,0 @@ -import {RouteRecordRaw,RouteLocationNormalized} from "vue-router"; - -// 接口类型声明 -export interface UserState { - token: string, - nickname: string, - avatar: string, - roles: string[], - perms: string[] -} - -export interface AppState { - device: string, - sidebar: { - opened: boolean, - withoutAnimation: boolean - }, - language:string, - size:string -} - -export interface SettingState { - theme: string, - tagsView: boolean, - fixedHeader: boolean, - showSettings: boolean, - sidebarLogo: boolean -} - -export interface PermissionState{ - routes:RouteRecordRaw[] - addRoutes: RouteRecordRaw[] -} - -export interface TagView extends Partial { - title?: string -} - -export interface TagsViewState{ - visitedViews: TagView[], - cachedViews: (string)[] -} - -// 顶级类型声明 -export interface RootStateTypes { - user: UserState, - app: AppState, - settings: SettingState, - permission:PermissionState, - tagsView:TagsViewState -} \ No newline at end of file diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts index 09143d3..c4f5320 100644 --- a/src/store/modules/app.ts +++ b/src/store/modules/app.ts @@ -1,9 +1,9 @@ -import {AppState} from "@/store/interface"; -import {localStorage} from "@/utils/storage"; -import {defineStore} from "pinia"; +import { AppState } from "@/types"; +import { localStorage } from "@/utils/storage"; +import { defineStore } from "pinia"; import { getLanguage } from '@/lang/index' - const useAppStore = defineStore({ +const useAppStore = defineStore({ id: "app", state: (): AppState => ({ device: 'desktop', @@ -12,7 +12,7 @@ import { getLanguage } from '@/lang/index' withoutAnimation: false }, language: getLanguage(), - size: localStorage.get('size')||'default' + size: localStorage.get('size') || 'default' }), actions: { toggleSidebar() { diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 32293f5..20699c7 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -1,4 +1,4 @@ -import {PermissionState} from "@/store/interface"; +import {PermissionState} from "@/types"; import {RouteRecordRaw} from 'vue-router' import {constantRoutes} from '@/router' import {listRoutes} from "@/api/system/menu"; diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts index 4b3c12b..069c75c 100644 --- a/src/store/modules/settings.ts +++ b/src/store/modules/settings.ts @@ -1,15 +1,15 @@ -import {defineStore} from "pinia"; -import {SettingState} from "@/store/interface"; +import { defineStore } from "pinia"; +import { SettingState } from "@/types"; import defaultSettings from '../../settings' -import {localStorage} from "@/utils/storage"; +import { localStorage } from "@/utils/storage"; -const {showSettings, tagsView, fixedHeader, sidebarLogo} = defaultSettings +const { showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings import variables from '@/styles/element-variables.module.scss' export const useSettingStore = defineStore({ id: "setting", state: (): SettingState => ({ - theme: localStorage.get("theme") || variables.theme , + theme: localStorage.get("theme") || variables.theme, showSettings: showSettings, tagsView: localStorage.get("tagsView") != null ? localStorage.get("tagsView") : tagsView, fixedHeader: fixedHeader, @@ -17,7 +17,7 @@ export const useSettingStore = defineStore({ }), actions: { async changeSetting(payload: { key: string, value: any }) { - const {key, value} = payload + const { key, value } = payload switch (key) { case 'theme': this.theme = value diff --git a/src/store/modules/tagsView.ts b/src/store/modules/tagsView.ts index 98fcbbc..d40849c 100644 --- a/src/store/modules/tagsView.ts +++ b/src/store/modules/tagsView.ts @@ -1,5 +1,5 @@ import { defineStore } from "pinia"; -import { TagsViewState } from "@/store/interface"; +import { TagsViewState } from "@/types"; const useTagsViewStore = defineStore({ id: "tagsView", diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 2eb32dc..868cb23 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -1,8 +1,8 @@ import { defineStore } from "pinia"; -import { UserState } from "@/store/interface"; +import { LoginFormData, UserState } from "@/types"; import { localStorage } from "@/utils/storage"; -import { login, logout } from "@/api/login"; import { resetRouter } from "@/router"; +import { login, logout } from "@/api/login"; import { getUserInfo } from "@/api/system/user"; const useUserStore = defineStore({ @@ -26,7 +26,7 @@ const useUserStore = defineStore({ * code: 验证码 * uuid: 匹配正确验证码的 key */ - login(userInfo: { username: string, password: string, code: string, uuid: string }) { + login(userInfo: LoginFormData) { const { username, password, code, uuid } = userInfo return new Promise((resolve, reject) => { login( diff --git a/src/types/api/system/login.d.ts b/src/types/api/system/login.d.ts index 24ab754..bbc3a33 100644 --- a/src/types/api/system/login.d.ts +++ b/src/types/api/system/login.d.ts @@ -1,5 +1,5 @@ /** - * 登录请求参数类型声明 + * 登录表单类型声明 */ export interface LoginFormData { username: string, diff --git a/src/types/api/system/user.d.ts b/src/types/api/system/user.d.ts index ee15a79..b9031a5 100644 --- a/src/types/api/system/user.d.ts +++ b/src/types/api/system/user.d.ts @@ -19,7 +19,6 @@ export interface UserQueryParam extends PageQueryParam { deptId: number | undefined } - /** * 用户分页列表项声明 */ diff --git a/src/types/api/ums/index.d.ts b/src/types/api/ums/index.d.ts deleted file mode 100644 index 0584ab1..0000000 --- a/src/types/api/ums/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './member' diff --git a/src/types/index.d.ts b/src/types/index.d.ts index d43c72b..4d4c625 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -11,12 +11,15 @@ export * from './api/system/client' export * from './api/pms/goods' export * from './api/pms/brand' - export * from './api/sms/advert' - export * from './api/oms/order' - export * from './api/ums/member' +export * from './store/user' +export * from './store/app' +export * from './store/permission' +export * from './store/setting' +export * from './store/tagsView' + export * from './common' diff --git a/src/types/store/app.d.ts b/src/types/store/app.d.ts new file mode 100644 index 0000000..25e244e --- /dev/null +++ b/src/types/store/app.d.ts @@ -0,0 +1,12 @@ +/** + * 用户状态类型声明 + */ +export interface AppState { + device: string, + sidebar: { + opened: boolean, + withoutAnimation: boolean + }, + language:string, + size:string +} \ No newline at end of file diff --git a/src/types/store/permission.d.ts b/src/types/store/permission.d.ts new file mode 100644 index 0000000..19c0aa9 --- /dev/null +++ b/src/types/store/permission.d.ts @@ -0,0 +1,9 @@ +import {RouteRecordRaw} from "vue-router"; + +/** + * 权限类型声明 + */ +export interface PermissionState{ + routes:RouteRecordRaw[] + addRoutes: RouteRecordRaw[] +} diff --git a/src/types/store/setting.d.ts b/src/types/store/setting.d.ts new file mode 100644 index 0000000..6151856 --- /dev/null +++ b/src/types/store/setting.d.ts @@ -0,0 +1,10 @@ +/** + * 设置状态类型声明 + */ + export interface SettingState { + theme: string, + tagsView: boolean, + fixedHeader: boolean, + showSettings: boolean, + sidebarLogo: boolean +} \ No newline at end of file diff --git a/src/types/store/tagsView.d.ts b/src/types/store/tagsView.d.ts new file mode 100644 index 0000000..55af229 --- /dev/null +++ b/src/types/store/tagsView.d.ts @@ -0,0 +1,12 @@ +import {RouteLocationNormalized} from "vue-router"; +/** + * 用户状态类型声明 + */ + export interface TagView extends Partial { + title?: string +} + +export interface TagsViewState{ + visitedViews: TagView[], + cachedViews: (string)[] +} \ No newline at end of file diff --git a/src/types/store/user.d.ts b/src/types/store/user.d.ts new file mode 100644 index 0000000..040784b --- /dev/null +++ b/src/types/store/user.d.ts @@ -0,0 +1,10 @@ +/** + * 用户状态类型声明 + */ +export interface UserState { + token: string, + nickname: string, + avatar: string, + roles: string[], + perms: string[] +} -- GitLab