提交 518104e2 编写于 作者: 郝先瑞

refactor: state类型声明移动至types目录下

上级 c77e8878
import useStore from "@/store";
import { Directive, DirectiveBinding } from "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();
......
......@@ -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 {
......
// 导入首页模块
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
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<RouteLocationNormalized> {
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
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() {
......
import {PermissionState} from "@/store/interface";
import {PermissionState} from "@/types";
import {RouteRecordRaw} from 'vue-router'
import {constantRoutes} from '@/router'
import {listRoutes} from "@/api/system/menu";
......
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
......
import { defineStore } from "pinia";
import { TagsViewState } from "@/store/interface";
import { TagsViewState } from "@/types";
const useTagsViewStore = defineStore({
id: "tagsView",
......
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(
......
/**
* 登录请求参数类型声明
* 登录表单类型声明
*/
export interface LoginFormData {
username: string,
......
......@@ -19,7 +19,6 @@ export interface UserQueryParam extends PageQueryParam {
deptId: number | undefined
}
/**
* 用户分页列表项声明
*/
......
......@@ -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'
/**
* 用户状态类型声明
*/
export interface AppState {
device: string,
sidebar: {
opened: boolean,
withoutAnimation: boolean
},
language:string,
size:string
}
\ No newline at end of file
import {RouteRecordRaw} from "vue-router";
/**
* 权限类型声明
*/
export interface PermissionState{
routes:RouteRecordRaw[]
addRoutes: RouteRecordRaw[]
}
/**
* 设置状态类型声明
*/
export interface SettingState {
theme: string,
tagsView: boolean,
fixedHeader: boolean,
showSettings: boolean,
sidebarLogo: boolean
}
\ No newline at end of file
import {RouteLocationNormalized} from "vue-router";
/**
* 用户状态类型声明
*/
export interface TagView extends Partial<RouteLocationNormalized> {
title?: string
}
export interface TagsViewState{
visitedViews: TagView[],
cachedViews: (string)[]
}
\ No newline at end of file
/**
* 用户状态类型声明
*/
export interface UserState {
token: string,
nickname: string,
avatar: string,
roles: string[],
perms: string[]
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册