feat: 修改类型定义

This commit is contained in:
fonghehe 2022-07-21 12:20:49 +08:00
parent fd28e0515d
commit 34da551fee
16 changed files with 490 additions and 489 deletions

View File

@ -15,7 +15,7 @@ module.exports = {
jsx: true, jsx: true,
}, },
}, },
extends: ['plugin:vue/vue3-recommended', 'plugin:@typescript-eslint/recommended', 'prettier', 'plugin:prettier/recommended'], extends: ['plugin:vue/vue3-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'],
rules: { rules: {
'vue/script-setup-uses-vars': 'error', 'vue/script-setup-uses-vars': 'error',
'@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/ban-ts-ignore': 'off',

View File

@ -1 +1,9 @@
export const IsReport = process.env.REPORT; export const IsReport = process.env.REPORT;
export const API_BASE_URL = '';
export const MOCK_API_BASE_URL = '';
export const API_TARGET_URL = '';
export const MOCK_API_TARGET_URL = '';

View File

@ -74,7 +74,7 @@
"vite-plugin-svg-icons": "^2.0.1", "vite-plugin-svg-icons": "^2.0.1",
"vite-plugin-vue-setup-extend": "^0.4.0", "vite-plugin-vue-setup-extend": "^0.4.0",
"vue-eslint-parser": "^9.0.3", "vue-eslint-parser": "^9.0.3",
"vue-tsc": "^0.38.8" "vue-tsc": "^0.38.9"
}, },
"husky": { "husky": {
"hooks": { "hooks": {

View File

@ -1,9 +1,8 @@
import { AnyObject } from '/#/global';
import { createI18n } from 'vue-i18n'; import { createI18n } from 'vue-i18n';
export function loadLang() { export function loadLang() {
const modules: Record<string, any> = import.meta.glob('./lang/*.ts', { eager: true }); const modules: Record<string, any> = import.meta.glob('./lang/*.ts', { eager: true });
const langs: AnyObject = {}; const langs: Record<string, any> = {};
for (const path in modules) { for (const path in modules) {
const name = path.replace(/(\.\/lang\/|\.ts)/g, ''); const name = path.replace(/(\.\/lang\/|\.ts)/g, '');

View File

@ -2,14 +2,13 @@ import { loginPassword } from '/@/api';
import { useCookies } from '@vueuse/integrations/useCookies'; import { useCookies } from '@vueuse/integrations/useCookies';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { watch } from 'vue'; import { watch } from 'vue';
import { AnyObject } from '/#/global';
const { VITE_TOKEN_KEY } = import.meta.env; const { VITE_TOKEN_KEY } = import.meta.env;
const token = useCookies().get(VITE_TOKEN_KEY as string); const token = useCookies().get(VITE_TOKEN_KEY as string);
interface StoreUser { interface StoreUser {
token: string; token: string;
info: AnyObject; info: Record<any, any>;
} }
export const useUserStore = defineStore({ export const useUserStore = defineStore({

View File

@ -1,5 +1,3 @@
import { AnyObject } from '/#/global';
export function typeCheck(param: any) { export function typeCheck(param: any) {
return Object.prototype.toString.call(param); return Object.prototype.toString.call(param);
} }
@ -7,7 +5,7 @@ export function typeCheck(param: any) {
/** /**
* stage * stage
*/ */
export function mutateState(state: AnyObject, payload: AnyObject) { export function mutateState(state: Record<string, any>, payload: Record<string, any>) {
if (typeCheck(state) === '[object Object]' && typeCheck(payload) === '[object Object]') { if (typeCheck(state) === '[object Object]' && typeCheck(payload) === '[object Object]') {
for (const key in payload) { for (const key in payload) {
state[key] = payload[key]; state[key] = payload[key];

View File

@ -35,8 +35,8 @@
"src/**/*.vue", "src/**/*.vue",
"types/**/*.d.ts", "types/**/*.d.ts",
"types/**/*.ts", "types/**/*.ts",
"build/**/*.ts", "config/**/*.ts",
"build/**/*.d.ts", "config/**/*.d.ts",
"mock/**/*.ts", "mock/**/*.ts",
"vite.config.ts" "vite.config.ts"
], ],

106
types/axios.d.ts vendored
View File

@ -1,53 +1,53 @@
export type ErrorMessageMode = 'none' | 'modal' | 'message' | undefined; export type ErrorMessageMode = 'none' | 'modal' | 'message' | undefined;
export interface RequestOptions { export interface RequestOptions {
// Splicing request parameters to url // Splicing request parameters to url
joinParamsToUrl?: boolean; joinParamsToUrl?: boolean;
// Format request parameter time // Format request parameter time
formatDate?: boolean; formatDate?: boolean;
// Whether to process the request result // Whether to process the request result
isTransformResponse?: boolean; isTransformResponse?: boolean;
// Whether to return native response headers // Whether to return native response headers
// For example: use this attribute when you need to get the response headers // For example: use this attribute when you need to get the response headers
isReturnNativeResponse?: boolean; isReturnNativeResponse?: boolean;
// Whether to join url // Whether to join url
joinPrefix?: boolean; joinPrefix?: boolean;
// Interface address, use the default apiUrl if you leave it blank // Interface address, use the default apiUrl if you leave it blank
apiUrl?: string; apiUrl?: string;
// 请求拼接路径 // 请求拼接路径
urlPrefix?: string; urlPrefix?: string;
// Error message prompt type // Error message prompt type
errorMessageMode?: ErrorMessageMode; errorMessageMode?: ErrorMessageMode;
// Whether to add a timestamp // Whether to add a timestamp
joinTime?: boolean; joinTime?: boolean;
ignoreCancelToken?: boolean; ignoreCancelToken?: boolean;
// Whether to send token in header // Whether to send token in header
withToken?: boolean; withToken?: boolean;
// 请求重试机制 // 请求重试机制
retryRequest?: RetryRequest; retryRequest?: RetryRequest;
} }
export interface RetryRequest { export interface RetryRequest {
isOpenRetry: boolean; isOpenRetry: boolean;
count: number; count: number;
waitTime: number; waitTime: number;
} }
export interface Result<T = any> { export interface Result<T = any> {
code: number; code: number;
type: 'success' | 'error' | 'warning'; type: 'success' | 'error' | 'warning';
message: string; message: string;
result: T; result: T;
} }
// multipart/form-data: upload file // multipart/form-data: upload file
export interface UploadFileParams { export interface UploadFileParams {
// Other parameters // Other parameters
data?: Recordable; data?: Recordable;
// File parameter interface field name // File parameter interface field name
name?: string; name?: string;
// file name // file name
file: File | Blob; file: File | Blob;
// file name // file name
filename?: string; filename?: string;
[key: string]: any; [key: string]: any;
} }

323
types/config.d.ts vendored
View File

@ -1,161 +1,162 @@
import { MenuTypeEnum, MenuModeEnum, TriggerEnum, MixSidebarTriggerEnum } from '/@/enums/menuEnum'; import { MenuTypeEnum, MenuModeEnum, TriggerEnum, MixSidebarTriggerEnum } from '/@/enums/menuEnum';
import { import {
ContentEnum, ContentEnum,
PermissionModeEnum, PermissionModeEnum,
ThemeEnum, ThemeEnum,
RouterTransitionEnum, RouterTransitionEnum,
SettingButtonPositionEnum, SettingButtonPositionEnum,
SessionTimeoutProcessingEnum, SessionTimeoutProcessingEnum,
} from '/@/enums/appEnum'; } from '/@/enums/appEnum';
import { CacheTypeEnum } from '/@/enums/cacheEnum'; import { CacheTypeEnum } from '/@/enums/cacheEnum';
export type LocaleType = 'zh_CN' | 'en' | 'ru' | 'ja' | 'ko'; export type LocaleType = 'zh_CN' | 'en' | 'ru' | 'ja' | 'ko';
export interface MenuSetting { export interface MenuSetting {
bgColor: string; bgColor: string;
fixed: boolean; fixed: boolean;
collapsed: boolean; collapsed: boolean;
canDrag: boolean; siderHidden: boolean;
show: boolean; canDrag: boolean;
hidden: boolean; show: boolean;
split: boolean; hidden: boolean;
menuWidth: number; split: boolean;
mode: MenuModeEnum; menuWidth: number;
type: MenuTypeEnum; mode: MenuModeEnum;
theme: ThemeEnum; type: MenuTypeEnum;
topMenuAlign: 'start' | 'center' | 'end'; theme: ThemeEnum;
trigger: TriggerEnum; topMenuAlign: 'start' | 'center' | 'end';
accordion: boolean; trigger: TriggerEnum;
closeMixSidebarOnChange: boolean; accordion: boolean;
collapsedShowTitle: boolean; closeMixSidebarOnChange: boolean;
mixSideTrigger: MixSidebarTriggerEnum; collapsedShowTitle: boolean;
mixSideFixed: boolean; mixSideTrigger: MixSidebarTriggerEnum;
} mixSideFixed: boolean;
}
export interface MultiTabsSetting {
cache: boolean; export interface MultiTabsSetting {
show: boolean; cache: boolean;
showQuick: boolean; show: boolean;
canDrag: boolean; showQuick: boolean;
showRedo: boolean; canDrag: boolean;
showFold: boolean; showRedo: boolean;
} showFold: boolean;
}
export interface HeaderSetting {
bgColor: string; export interface HeaderSetting {
fixed: boolean; bgColor: string;
show: boolean; fixed: boolean;
theme: ThemeEnum; show: boolean;
// Turn on full screen theme: ThemeEnum;
showFullScreen: boolean; // Turn on full screen
// Whether to show the lock screen showFullScreen: boolean;
useLockPage: boolean; // Whether to show the lock screen
// Show document button useLockPage: boolean;
showDoc: boolean; // Show document button
// Show message center button showDoc: boolean;
showNotice: boolean; // Show message center button
showSearch: boolean; showNotice: boolean;
} showSearch: boolean;
}
export interface LocaleSetting {
showPicker: boolean; export interface LocaleSetting {
// Current language showPicker: boolean;
locale: LocaleType; // Current language
// default language locale: LocaleType;
fallback: LocaleType; // default language
// available Locales fallback: LocaleType;
availableLocales: LocaleType[]; // available Locales
} availableLocales: LocaleType[];
}
export interface TransitionSetting {
// Whether to open the page switching animation export interface TransitionSetting {
enable: boolean; // Whether to open the page switching animation
// Route basic switching animation enable: boolean;
basicTransition: RouterTransitionEnum; // Route basic switching animation
// Whether to open page switching loading basicTransition: RouterTransitionEnum;
openPageLoading: boolean; // Whether to open page switching loading
// Whether to open the top progress bar openPageLoading: boolean;
openNProgress: boolean; // Whether to open the top progress bar
} openNProgress: boolean;
}
export interface ProjectConfig {
// Storage location of permission related information export interface ProjectConfig {
permissionCacheType: CacheTypeEnum; // Storage location of permission related information
// Whether to show the configuration button permissionCacheType: CacheTypeEnum;
showSettingButton: boolean; // Whether to show the configuration button
// Whether to show the theme switch button showSettingButton: boolean;
showDarkModeToggle: boolean; // Whether to show the theme switch button
// Configure where the button is displayed showDarkModeToggle: boolean;
settingButtonPosition: SettingButtonPositionEnum; // Configure where the button is displayed
// Permission mode settingButtonPosition: SettingButtonPositionEnum;
permissionMode: PermissionModeEnum; // Permission mode
// Session timeout processing permissionMode: PermissionModeEnum;
sessionTimeoutProcessing: SessionTimeoutProcessingEnum; // Session timeout processing
// Website gray mode, open for possible mourning dates sessionTimeoutProcessing: SessionTimeoutProcessingEnum;
grayMode: boolean; // Website gray mode, open for possible mourning dates
// Whether to turn on the color weak mode grayMode: boolean;
colorWeak: boolean; // Whether to turn on the color weak mode
// Theme color colorWeak: boolean;
themeColor: string; // Theme color
themeColor: string;
// The main interface is displayed in full screen, the menu is not displayed, and the top
fullContent: boolean; // The main interface is displayed in full screen, the menu is not displayed, and the top
// content width fullContent: boolean;
contentMode: ContentEnum; // content width
// Whether to display the logo contentMode: ContentEnum;
showLogo: boolean; // Whether to display the logo
// Whether to show the global footer showLogo: boolean;
showFooter: boolean; // Whether to show the global footer
// menuType: MenuTypeEnum; showFooter: boolean;
headerSetting: HeaderSetting; // menuType: MenuTypeEnum;
// menuSetting headerSetting: HeaderSetting;
menuSetting: MenuSetting; // menuSetting
// Multi-tab settings menuSetting: MenuSetting;
multiTabsSetting: MultiTabsSetting; // Multi-tab settings
// Animation configuration multiTabsSetting: MultiTabsSetting;
transitionSetting: TransitionSetting; // Animation configuration
// pageLayout whether to enable keep-alive transitionSetting: TransitionSetting;
openKeepAlive: boolean; // pageLayout whether to enable keep-alive
// Lock screen time openKeepAlive: boolean;
lockTime: number; // Lock screen time
// Show breadcrumbs lockTime: number;
showBreadCrumb: boolean; // Show breadcrumbs
// Show breadcrumb icon showBreadCrumb: boolean;
showBreadCrumbIcon: boolean; // Show breadcrumb icon
// Use error-handler-plugin showBreadCrumbIcon: boolean;
useErrorHandle: boolean; // Use error-handler-plugin
// Whether to open back to top useErrorHandle: boolean;
useOpenBackTop: boolean; // Whether to open back to top
// Is it possible to embed iframe pages useOpenBackTop: boolean;
canEmbedIFramePage: boolean; // Is it possible to embed iframe pages
// Whether to delete unclosed messages and notify when switching the interface canEmbedIFramePage: boolean;
closeMessageOnSwitch: boolean; // Whether to delete unclosed messages and notify when switching the interface
// Whether to cancel the http request that has been sent but not responded when switching the interface. closeMessageOnSwitch: boolean;
removeAllHttpPending: boolean; // Whether to cancel the http request that has been sent but not responded when switching the interface.
} removeAllHttpPending: boolean;
}
export interface GlobConfig {
// Site title export interface GlobConfig {
title: string; // Site title
// Service interface url title: string;
apiUrl: string; // Service interface url
// Upload url apiUrl: string;
uploadUrl?: string; // Upload url
// Service interface url prefix uploadUrl?: string;
urlPrefix?: string; // Service interface url prefix
// Project abbreviation urlPrefix?: string;
shortName: string; // Project abbreviation
} shortName: string;
export interface GlobEnvConfig { }
// Site title export interface GlobEnvConfig {
VITE_GLOB_APP_TITLE: string; // Site title
// Service interface url VITE_GLOB_APP_TITLE: string;
VITE_GLOB_API_URL: string; // Service interface url
// Service interface url prefix VITE_GLOB_API_URL: string;
VITE_GLOB_API_URL_PREFIX?: string; // Service interface url prefix
// Project abbreviation VITE_GLOB_API_URL_PREFIX?: string;
VITE_GLOB_APP_SHORT_NAME: string; // Project abbreviation
// Upload url VITE_GLOB_APP_SHORT_NAME: string;
VITE_GLOB_UPLOAD_URL?: string; // Upload url
} VITE_GLOB_UPLOAD_URL?: string;
}

188
types/global.d.ts vendored
View File

@ -1,96 +1,92 @@
import type { ComponentRenderProxy, VNode, VNodeChild, ComponentPublicInstance, FunctionalComponent, PropType as VuePropType } from 'vue'; import type { ComponentRenderProxy, VNode, VNodeChild, ComponentPublicInstance, FunctionalComponent, PropType as VuePropType } from 'vue';
declare global { declare global {
const __APP_INFO__: { const __APP_INFO__: {
pkg: { pkg: {
name: string; name: string;
version: string; version: string;
dependencies: Recordable<string>; dependencies: Recordable<string>;
devDependencies: Recordable<string>; devDependencies: Recordable<string>;
}; };
lastBuildTime: string; lastBuildTime: string;
}; };
// declare interface Window { // declare interface Window {
// // Global vue app instance // // Global vue app instance
// __APP__: App<Element>; // __APP__: App<Element>;
// } // }
// vue // vue
declare type PropType<T> = VuePropType<T>; declare type PropType<T> = VuePropType<T>;
declare type VueNode = VNodeChild | JSX.Element; declare type VueNode = VNodeChild | JSX.Element;
export type Writable<T> = { export type Writable<T> = {
-readonly [P in keyof T]: T[P]; -readonly [P in keyof T]: T[P];
}; };
declare type Nullable<T> = T | null; declare type Nullable<T> = T | null;
declare type NonNullable<T> = T extends null | undefined ? never : T; declare type NonNullable<T> = T extends null | undefined ? never : T;
declare type Recordable<T = any> = Record<string, T>; declare type Recordable<T = any> = Record<string, T>;
declare type ReadonlyRecordable<T = any> = { declare type ReadonlyRecordable<T = any> = {
readonly [key: string]: T; readonly [key: string]: T;
}; };
declare type Indexable<T = any> = { declare type Indexable<T = any> = {
[key: string]: T; [key: string]: T;
}; };
declare type DeepPartial<T> = { declare type DeepPartial<T> = {
[P in keyof T]?: DeepPartial<T[P]>; [P in keyof T]?: DeepPartial<T[P]>;
}; };
declare type TimeoutHandle = ReturnType<typeof setTimeout>; declare type TimeoutHandle = ReturnType<typeof setTimeout>;
declare type IntervalHandle = ReturnType<typeof setInterval>; declare type IntervalHandle = ReturnType<typeof setInterval>;
declare interface ChangeEvent extends Event { declare interface ChangeEvent extends Event {
target: HTMLInputElement; target: HTMLInputElement;
} }
declare interface WheelEvent { declare interface WheelEvent {
path?: EventTarget[]; path?: EventTarget[];
} }
interface ImportMetaEnv extends ViteEnv { interface ImportMetaEnv extends ViteEnv {
__: unknown; __: unknown;
} }
declare interface ViteEnv { declare interface ViteEnv {
VITE_PORT: number; VITE_PORT: number;
VITE_USE_MOCK: boolean; VITE_USE_MOCK: boolean;
VITE_USE_PWA: boolean; VITE_USE_PWA: boolean;
VITE_PUBLIC_PATH: string; VITE_PUBLIC_PATH: string;
VITE_PROXY: [string, string][]; VITE_PROXY: [string, string][];
VITE_GLOB_APP_TITLE: string; VITE_GLOB_APP_TITLE: string;
VITE_GLOB_APP_SHORT_NAME: string; VITE_GLOB_APP_SHORT_NAME: string;
VITE_USE_CDN: boolean; VITE_USE_CDN: boolean;
VITE_DROP_CONSOLE: boolean; VITE_DROP_CONSOLE: boolean;
VITE_BUILD_COMPRESS: 'gzip' | 'brotli' | 'none'; VITE_BUILD_COMPRESS: 'gzip' | 'brotli' | 'none';
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE: boolean; VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE: boolean;
VITE_LEGACY: boolean; VITE_LEGACY: boolean;
VITE_USE_IMAGEMIN: boolean; VITE_USE_IMAGEMIN: boolean;
VITE_GENERATE_UI: string; VITE_GENERATE_UI: string;
} }
declare function parseInt(s: string | number, radix?: number): number; declare function parseInt(s: string | number, radix?: number): number;
declare function parseFloat(string: string | number): number; declare function parseFloat(string: string | number): number;
namespace JSX { namespace JSX {
// tslint:disable no-empty-interface // tslint:disable no-empty-interface
type Element = VNode; type Element = VNode;
// tslint:disable no-empty-interface // tslint:disable no-empty-interface
type ElementClass = ComponentRenderProxy; type ElementClass = ComponentRenderProxy;
interface ElementAttributesProperty { interface ElementAttributesProperty {
$props: any; $props: any;
} }
interface IntrinsicElements { interface IntrinsicElements {
[elem: string]: any; [elem: string]: any;
} }
interface IntrinsicAttributes { interface IntrinsicAttributes {
[elem: string]: any; [elem: string]: any;
} }
} }
} }
export interface AnyObject { declare module 'vue' {
[key: string]: any; export type JSXComponent<Props = any> = { new (): ComponentPublicInstance<Props> } | FunctionalComponent<Props>;
} }
declare module 'vue' {
export type JSXComponent<Props = any> = { new (): ComponentPublicInstance<Props> } | FunctionalComponent<Props>;
}

54
types/index.d.ts vendored
View File

@ -1,27 +1,27 @@
declare interface Fn<T = any, R = T> { declare interface Fn<T = any, R = T> {
(...arg: T[]): R; (...arg: T[]): R;
} }
declare interface PromiseFn<T = any, R = T> { declare interface PromiseFn<T = any, R = T> {
(...arg: T[]): Promise<R>; (...arg: T[]): Promise<R>;
} }
declare type RefType<T> = T | null; declare type RefType<T> = T | null;
declare type LabelValueOptions = { declare type LabelValueOptions = {
label: string; label: string;
value: any; value: any;
[key: string]: string | number | boolean; [key: string]: string | number | boolean;
}[]; }[];
declare type EmitType = (event: string, ...args: any[]) => void; declare type EmitType = (event: string, ...args: any[]) => void;
declare type TargetContext = '_self' | '_blank'; declare type TargetContext = '_self' | '_blank';
declare interface ComponentElRef<T extends HTMLElement = HTMLDivElement> { declare interface ComponentElRef<T extends HTMLElement = HTMLDivElement> {
$el: T; $el: T;
} }
declare type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null; declare type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null;
declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>; declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>;

32
types/module.d.ts vendored
View File

@ -1,16 +1,16 @@
declare module '*.vue' { declare module '*.vue' {
import { DefineComponent } from 'vue'; import { DefineComponent } from 'vue';
const Component: DefineComponent<{}, {}, any>; const Component: DefineComponent<{}, {}, any>;
export default Component; export default Component;
} }
declare module 'ant-design-vue/es/locale/*' { declare module 'ant-design-vue/es/locale/*' {
import { Locale } from 'ant-design-vue/types/locale-provider'; import { Locale } from 'ant-design-vue/types/locale-provider';
const locale: Locale & ReadonlyRecordable; const locale: Locale & ReadonlyRecordable;
export default locale as Locale & ReadonlyRecordable; export default locale as Locale & ReadonlyRecordable;
} }
declare module 'virtual:*' { declare module 'virtual:*' {
const result: any; const result: any;
export default result; export default result;
} }

96
types/store.d.ts vendored
View File

@ -1,48 +1,48 @@
import { ErrorTypeEnum } from '/@/enums/exceptionEnum'; import { ErrorTypeEnum } from '/@/enums/exceptionEnum';
import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum'; import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
import { RoleInfo } from '/@/api/sys/model/userModel'; import { RoleInfo } from '/@/api/sys/model/userModel';
// Lock screen information // Lock screen information
export interface LockInfo { export interface LockInfo {
// Password required // Password required
pwd?: string | undefined; pwd?: string | undefined;
// Is it locked? // Is it locked?
isLock?: boolean; isLock?: boolean;
} }
// Error-log information // Error-log information
export interface ErrorLogInfo { export interface ErrorLogInfo {
// Type of error // Type of error
type: ErrorTypeEnum; type: ErrorTypeEnum;
// Error file // Error file
file: string; file: string;
// Error name // Error name
name?: string; name?: string;
// Error message // Error message
message: string; message: string;
// Error stack // Error stack
stack?: string; stack?: string;
// Error detail // Error detail
detail: string; detail: string;
// Error url // Error url
url: string; url: string;
// Error time // Error time
time?: string; time?: string;
} }
export interface UserInfo { export interface UserInfo {
userId: string | number; userId: string | number;
username: string; username: string;
realName: string; realName: string;
avatar: string; avatar: string;
desc?: string; desc?: string;
homePath?: string; homePath?: string;
roles: RoleInfo[]; roles: RoleInfo[];
} }
export interface BeforeMiniState { export interface BeforeMiniState {
menuCollapsed?: boolean; menuCollapsed?: boolean;
menuSplit?: boolean; menuSplit?: boolean;
menuMode?: MenuModeEnum; menuMode?: MenuModeEnum;
menuType?: MenuTypeEnum; menuType?: MenuTypeEnum;
} }

10
types/utils.d.ts vendored
View File

@ -1,5 +1,5 @@
import type { ComputedRef, Ref } from 'vue'; import type { ComputedRef, Ref } from 'vue';
export type DynamicProps<T> = { export type DynamicProps<T> = {
[P in keyof T]: Ref<T[P]> | T[P] | ComputedRef<T[P]>; [P in keyof T]: Ref<T[P]> | T[P] | ComputedRef<T[P]>;
}; };

90
types/vue-router.d.ts vendored
View File

@ -1,45 +1,45 @@
export {}; export {};
declare module 'vue-router' { declare module 'vue-router' {
interface RouteMeta extends Record<string | number | symbol, unknown> { interface RouteMeta extends Record<string | number | symbol, unknown> {
orderNo?: number; orderNo?: number;
// title // title
title: string; title: string;
// dynamic router level. // dynamic router level.
dynamicLevel?: number; dynamicLevel?: number;
// dynamic router real route path (For performance). // dynamic router real route path (For performance).
realPath?: string; realPath?: string;
// Whether to ignore permissions // Whether to ignore permissions
ignoreAuth?: boolean; ignoreAuth?: boolean;
// role info // role info
roles?: RoleEnum[]; roles?: RoleEnum[];
// Whether not to cache // Whether not to cache
ignoreKeepAlive?: boolean; ignoreKeepAlive?: boolean;
// Is it fixed on tab // Is it fixed on tab
affix?: boolean; affix?: boolean;
// icon on tab // icon on tab
icon?: string; icon?: string;
frameSrc?: string; frameSrc?: string;
// current page transition // current page transition
transitionName?: string; transitionName?: string;
// Whether the route has been dynamically added // Whether the route has been dynamically added
hideBreadcrumb?: boolean; hideBreadcrumb?: boolean;
// Hide submenu // Hide submenu
hideChildrenInMenu?: boolean; hideChildrenInMenu?: boolean;
// Carrying parameters // Carrying parameters
carryParam?: boolean; carryParam?: boolean;
// Used internally to mark single-level menus // Used internally to mark single-level menus
single?: boolean; single?: boolean;
// Currently active menu // Currently active menu
currentActiveMenu?: string; currentActiveMenu?: string;
// Never show in tab // Never show in tab
hideTab?: boolean; hideTab?: boolean;
// Never show in menu // Never show in menu
hideMenu?: boolean; hideMenu?: boolean;
isLink?: boolean; isLink?: boolean;
// only build for Menu // only build for Menu
ignoreRoute?: boolean; ignoreRoute?: boolean;
// Hide path for children // Hide path for children
hidePathForChildren?: boolean; hidePathForChildren?: boolean;
} }
} }

View File

@ -919,37 +919,37 @@
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz#b6af8f782485374bbb5fe09edf067a845bf4caae" resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz#b6af8f782485374bbb5fe09edf067a845bf4caae"
integrity sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A== integrity sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==
"@volar/code-gen@0.38.8": "@volar/code-gen@0.38.9":
version "0.38.8" version "0.38.9"
resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.38.8.tgz#ea50a742983f9fd8c3fc23d61497387c520776c9" resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.38.9.tgz#8fed2c6a472c8f11ce695b08789bcc22b08e7fa6"
integrity sha512-e37jd+JwNjBpWiBblsdmYMbJ9bELiuj2yZrsXv1IVKpYNSfvS92ZiYjJqVXHUwpzNeZjFG0RCd5nTpbiebwANw== integrity sha512-n6LClucfA+37rQeskvh9vDoZV1VvCVNy++MAPKj2dT4FT+Fbmty/SDQqnsEBtdEe6E3OQctFvA/IcKsx3Mns0A==
dependencies: dependencies:
"@volar/source-map" "0.38.8" "@volar/source-map" "0.38.9"
"@volar/source-map@0.38.8": "@volar/source-map@0.38.9":
version "0.38.8" version "0.38.9"
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.38.8.tgz#13b2fc9234f78fada3c78fd235f446cfaaa7d0b8" resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.38.9.tgz#935d6def4b4342e8e2d63cd8e6bf9bf1155c58d8"
integrity sha512-JZvpjW/z2U3wq5wvwcTounPrRAZuSl4hlVKr3y7y72bKr++6W05OnX7fl/ddw39G/wLHdI2ag5+4JWsSd/EYhg== integrity sha512-ba0UFoHDYry+vwKdgkWJ6xlQT+8TFtZg1zj9tSjj4PykW1JZDuM0xplMotLun4h3YOoYfY9K1huY5gvxmrNLIw==
"@volar/vue-code-gen@0.38.8": "@volar/vue-code-gen@0.38.9":
version "0.38.8" version "0.38.9"
resolved "https://registry.yarnpkg.com/@volar/vue-code-gen/-/vue-code-gen-0.38.8.tgz#e7b719194ef40d76093191cf4bb83c96134fed32" resolved "https://registry.yarnpkg.com/@volar/vue-code-gen/-/vue-code-gen-0.38.9.tgz#878f00fec82a2fc300396d70e26b0ea29952f740"
integrity sha512-iQVNmIu1TqnqTko+l9yeylmZipZ8zNH20XZAK9+48hkv2fEQnnJn5AI2W9Zb2M5DkGMpbYiJk9Fq1vm51YY1+g== integrity sha512-tzj7AoarFBKl7e41MR006ncrEmNPHALuk8aG4WdDIaG387X5//5KhWC5Ff3ZfB2InGSeNT+CVUd74M0gS20rjA==
dependencies: dependencies:
"@volar/code-gen" "0.38.8" "@volar/code-gen" "0.38.9"
"@volar/source-map" "0.38.8" "@volar/source-map" "0.38.9"
"@vue/compiler-core" "^3.2.37" "@vue/compiler-core" "^3.2.37"
"@vue/compiler-dom" "^3.2.37" "@vue/compiler-dom" "^3.2.37"
"@vue/shared" "^3.2.37" "@vue/shared" "^3.2.37"
"@volar/vue-typescript@0.38.8": "@volar/vue-typescript@0.38.9":
version "0.38.8" version "0.38.9"
resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-0.38.8.tgz#5412a8b38d404a72aa37902ad87ccd3dc0c7f1f1" resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-0.38.9.tgz#e5dfdc6f0d6dbea683647cd477fafbd483983b35"
integrity sha512-7WeFt5piz9I6FKw2cQQCWm+75MxS6xCOGm300iu+hJORlroN2dwWbwj97pQnDGbjQbftCRplUYf0GqmhcOsanQ== integrity sha512-iJMQGU91ADi98u8V1vXd2UBmELDAaeSP0ZJaFjwosClQdKlJQYc6MlxxKfXBZisHqfbhdtrGRyaryulnYtliZw==
dependencies: dependencies:
"@volar/code-gen" "0.38.8" "@volar/code-gen" "0.38.9"
"@volar/source-map" "0.38.8" "@volar/source-map" "0.38.9"
"@volar/vue-code-gen" "0.38.8" "@volar/vue-code-gen" "0.38.9"
"@vue/compiler-sfc" "^3.2.37" "@vue/compiler-sfc" "^3.2.37"
"@vue/reactivity" "^3.2.37" "@vue/reactivity" "^3.2.37"
@ -7822,12 +7822,12 @@ vue-router@^4.1.2:
dependencies: dependencies:
"@vue/devtools-api" "^6.1.4" "@vue/devtools-api" "^6.1.4"
vue-tsc@^0.38.8: vue-tsc@^0.38.9:
version "0.38.8" version "0.38.9"
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.38.8.tgz#becf3dddd3c57784c79206aa1d5be750e8bca319" resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.38.9.tgz#9e945937667f704325328db8af1cc6bc7314b85e"
integrity sha512-hhyc5SODiekcYNXG08aNg17LogR19o3i14avVejo+Fm45Dqk9Ke6rb0M19HoTKdQGfZBgqg2VUboYxmtAukWeg== integrity sha512-Yoy5phgvGqyF98Fb4mYqboR4Q149jrdcGv5kSmufXJUq++RZJ2iMVG0g6zl+v3t4ORVWkQmRpsV4x2szufZ0LQ==
dependencies: dependencies:
"@volar/vue-typescript" "0.38.8" "@volar/vue-typescript" "0.38.9"
vue@^3.2.36: vue@^3.2.36:
version "3.2.37" version "3.2.37"