Commit 8a9ca498d70a0a4f66c073fe869fc6d8a3e79a55

Authored by Vben
1 parent 5ffac409

chore: remove useless code

build/getShortName.ts renamed to build/getConfigFileName.ts
... ... @@ -2,7 +2,7 @@
2 2 * Get the configuration file variable name
3 3 * @param env
4 4 */
5   -export const getShortName = (env: any) => {
  5 +export const getConfigFileName = (env: Record<string, any>) => {
6 6 return `__PRODUCTION__${env.VITE_GLOB_APP_SHORT_NAME || '__APP'}__CONF__`
7 7 .toUpperCase()
8 8 .replace(/\s/g, '');
... ...
build/script/buildConf.ts
... ... @@ -5,8 +5,8 @@ import { GLOB_CONFIG_FILE_NAME, OUTPUT_DIR } from &#39;../constant&#39;;
5 5 import fs, { writeFileSync } from 'fs-extra';
6 6 import chalk from 'chalk';
7 7  
8   -import { getCwdPath, getEnvConfig } from '../utils';
9   -import { getShortName } from '../getShortName';
  8 +import { getRootPath, getEnvConfig } from '../utils';
  9 +import { getConfigFileName } from '../getConfigFileName';
10 10  
11 11 import pkg from '../../package.json';
12 12  
... ... @@ -27,8 +27,8 @@ function createConfig(
27 27 writable: false,
28 28 });
29 29 `.replace(/\s/g, '');
30   - fs.mkdirp(getCwdPath(OUTPUT_DIR));
31   - writeFileSync(getCwdPath(`${OUTPUT_DIR}/${configFileName}`), configStr);
  30 + fs.mkdirp(getRootPath(OUTPUT_DIR));
  31 + writeFileSync(getRootPath(`${OUTPUT_DIR}/${configFileName}`), configStr);
32 32  
33 33 console.log(chalk.cyan(`✨ [${pkg.name}]`) + ` - configuration file is build successfully:`);
34 34 console.log(chalk.gray(OUTPUT_DIR + '/' + chalk.green(configFileName)) + '\n');
... ... @@ -39,6 +39,6 @@ function createConfig(
39 39  
40 40 export function runBuildConfig() {
41 41 const config = getEnvConfig();
42   - const configFileName = getShortName(config);
  42 + const configFileName = getConfigFileName(config);
43 43 createConfig({ config, configName: configFileName });
44 44 }
... ...
build/script/postBuild.ts
... ... @@ -14,6 +14,7 @@ export const runBuild = async () =&gt; {
14 14 if (!argvList.includes('no-conf')) {
15 15 await runBuildConfig();
16 16 }
  17 +
17 18 console.log(`✨ ${chalk.cyan(`[${pkg.name}]`)}` + ' - build successfully!');
18 19 } catch (error) {
19 20 console.log(chalk.red('vite build error:\n' + error));
... ...
build/tsconfig.json
... ... @@ -5,7 +5,6 @@
5 5 "moduleResolution": "node",
6 6 "strict": true,
7 7 "forceConsistentCasingInFileNames": true,
8   - "jsx": "react",
9 8 "baseUrl": ".",
10 9 "esModuleInterop": true,
11 10 "noUnusedLocals": true,
... ...
build/typeing.d.ts
... ... @@ -2,3 +2,5 @@ declare module &#39;*.json&#39; {
2 2 const src: any;
3 3 export default src;
4 4 }
  5 +
  6 +declare type Recordable = Record<string, any>;
... ...
build/utils.ts
... ... @@ -2,12 +2,6 @@ import fs from &#39;fs&#39;;
2 2 import path from 'path';
3 3 import dotenv from 'dotenv';
4 4  
5   -export const isFunction = (arg: unknown): arg is (...args: any[]) => any =>
6   - typeof arg === 'function';
7   -
8   -export const isRegExp = (arg: unknown): arg is RegExp =>
9   - Object.prototype.toString.call(arg) === '[object RegExp]';
10   -
11 5 export function isDevFn(mode: string): boolean {
12 6 return mode === 'development';
13 7 }
... ... @@ -34,18 +28,18 @@ export interface ViteEnv {
34 28 VITE_USE_CDN: boolean;
35 29 VITE_DROP_CONSOLE: boolean;
36 30 VITE_BUILD_COMPRESS: 'gzip' | 'brotli' | 'none';
37   - VITE_DYNAMIC_IMPORT: boolean;
38 31 VITE_LEGACY: boolean;
39 32 VITE_USE_IMAGEMIN: boolean;
40 33 }
41 34  
42 35 // Read all environment variable configuration files to process.env
43   -export function wrapperEnv(envConf: any): ViteEnv {
  36 +export function wrapperEnv(envConf: Recordable): ViteEnv {
44 37 const ret: any = {};
45 38  
46 39 for (const envName of Object.keys(envConf)) {
47 40 let realName = envConf[envName].replace(/\\n/g, '\n');
48 41 realName = realName === 'true' ? true : realName === 'false' ? false : realName;
  42 +
49 43 if (envName === 'VITE_PORT') {
50 44 realName = Number(realName);
51 45 }
... ... @@ -70,10 +64,10 @@ export function getEnvConfig(match = &#39;VITE_GLOB_&#39;, confFiles = [&#39;.env&#39;, &#39;.env.pr
70 64 confFiles.forEach((item) => {
71 65 try {
72 66 const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)));
73   -
74 67 envConfig = { ...envConfig, ...env };
75 68 } catch (error) {}
76 69 });
  70 +
77 71 Object.keys(envConfig).forEach((key) => {
78 72 const reg = new RegExp(`^(${match})`);
79 73 if (!reg.test(key)) {
... ... @@ -87,6 +81,6 @@ export function getEnvConfig(match = &#39;VITE_GLOB_&#39;, confFiles = [&#39;.env&#39;, &#39;.env.pr
87 81 * Get user root directory
88 82 * @param dir file path
89 83 */
90   -export function getCwdPath(...dir: string[]) {
  84 +export function getRootPath(...dir: string[]) {
91 85 return path.resolve(process.cwd(), ...dir);
92 86 }
... ...
build/vite/plugin/index.ts
1 1 import type { Plugin } from 'vite';
  2 +import type { ViteEnv } from '../../utils';
2 3  
3 4 import vue from '@vitejs/plugin-vue';
4 5 import vueJsx from '@vitejs/plugin-vue-jsx';
... ... @@ -6,7 +7,6 @@ import legacy from &#39;@vitejs/plugin-legacy&#39;;
6 7  
7 8 import PurgeIcons from 'vite-plugin-purge-icons';
8 9  
9   -import { ViteEnv } from '../../utils';
10 10 import { configHtmlPlugin } from './html';
11 11 import { configPwaConfig } from './pwa';
12 12 import { configMockPlugin } from './mock';
... ...
build/vite/plugin/pwa.ts
... ... @@ -2,11 +2,10 @@
2 2 * Zero-config PWA for Vite
3 3 * https://github.com/antfu/vite-plugin-pwa
4 4 */
  5 +import type { ViteEnv } from '../../utils';
5 6  
6 7 import { VitePWA } from 'vite-plugin-pwa';
7 8  
8   -import { ViteEnv } from '../../utils';
9   -
10 9 export function configPwaConfig(env: ViteEnv) {
11 10 const { VITE_USE_PWA, VITE_GLOB_APP_TITLE, VITE_GLOB_APP_SHORT_NAME } = env;
12 11  
... ...
build/vite/plugin/windicss.ts
1   -import windiCSS from 'vite-plugin-windicss';
2   -
3 1 import type { Plugin } from 'vite';
4 2  
  3 +import windiCSS from 'vite-plugin-windicss';
  4 +
5 5 export function configWindiCssPlugin(): Plugin[] {
6 6 return windiCSS({
7 7 safelist: 'no-select',
... ...
mock/_createProductionServer.ts
1 1 import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer';
2 2  
  3 +// @ts-ignore
3 4 const modules = import.meta.globEager('./**/*.ts');
4 5  
5 6 const mockModules: any[] = [];
... ...
mock/_util.ts
... ... @@ -18,13 +18,11 @@ export function resultPageSuccess&lt;T = any&gt;(
18 18 const pageData = pagination(page, pageSize, list);
19 19  
20 20 return {
21   - code: 0,
22   - result: {
  21 + ...resultSuccess({
23 22 items: pageData,
24 23 total: list.length,
25   - },
  24 + }),
26 25 message,
27   - type: 'success',
28 26 };
29 27 }
30 28  
... ...
package.json
... ... @@ -2,6 +2,7 @@
2 2 "name": "vben-admin",
3 3 "version": "2.0.1",
4 4 "scripts": {
  5 + "bootstrap": "yarn install",
5 6 "serve": "vite",
6 7 "dev": "vite",
7 8 "build": "vite build && esno ./build/script/postBuild.ts",
... ... @@ -9,9 +10,9 @@
9 10 "report": "cross-env REPORT=true npm run build ",
10 11 "preview": "npm run build && vite preview",
11 12 "preview:dist": "vite preview",
12   - "log": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
  13 + "log": "conventional-changelog -p angular -i CHANGELOG.md -s",
13 14 "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
14   - "clean:lib": "npx rimraf node_modules",
  15 + "clean:lib": "rimraf node_modules",
15 16 "lint:eslint": "eslint \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
16 17 "lint:prettier": "prettier --write --loglevel warn \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
17 18 "lint:stylelint": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
... ... @@ -39,8 +40,8 @@
39 40 "qrcode": "^1.4.4",
40 41 "sortablejs": "^1.13.0",
41 42 "vditor": "^3.8.1",
42   - "vue": "^3.0.6",
43   - "vue-i18n": "9.0.0-rc.7",
  43 + "vue": "3.0.5",
  44 + "vue-i18n": "9.0.0-rc.8",
44 45 "vue-router": "^4.0.4",
45 46 "vue-types": "^3.0.2",
46 47 "vuex": "^4.0.0",
... ... @@ -50,7 +51,7 @@
50 51 "devDependencies": {
51 52 "@commitlint/cli": "^12.0.0",
52 53 "@commitlint/config-conventional": "^12.0.0",
53   - "@iconify/json": "^1.1.307",
  54 + "@iconify/json": "^1.1.308",
54 55 "@ls-lint/ls-lint": "^1.9.2",
55 56 "@purge-icons/generated": "^0.7.0",
56 57 "@types/fs-extra": "^9.0.7",
... ... @@ -68,7 +69,7 @@
68 69 "@vitejs/plugin-legacy": "^1.3.1",
69 70 "@vitejs/plugin-vue": "^1.1.4",
70 71 "@vitejs/plugin-vue-jsx": "^1.1.2",
71   - "@vue/compiler-sfc": "^3.0.6",
  72 + "@vue/compiler-sfc": "3.0.5",
72 73 "autoprefixer": "^10.2.4",
73 74 "commitizen": "^4.2.3",
74 75 "conventional-changelog-cli": "^2.1.1",
... ...
src/components/Tinymce/src/Editor.vue
... ... @@ -26,7 +26,7 @@
26 26 import plugins from './plugins';
27 27 import { getTinymce } from './getTinymce';
28 28 import { useScript } from '/@/hooks/web/useScript';
29   - import { snowUuid } from '/@/utils/uuid';
  29 + import { shortUuid } from '/@/utils/uuid';
30 30 import { bindHandlers } from './helper';
31 31 import lineHeight from './lineHeight';
32 32 import { onMountedOrActivated } from '/@/hooks/core/onMountedOrActivated';
... ... @@ -45,7 +45,7 @@
45 45 emits: ['change', 'update:modelValue'],
46 46 setup(props, { emit, attrs }) {
47 47 const editorRef = ref<any>(null);
48   - const tinymceId = ref<string>(snowUuid('tiny-vue'));
  48 + const tinymceId = ref<string>(shortUuid('tiny-vue'));
49 49 const elRef = ref<Nullable<HTMLElement>>(null);
50 50  
51 51 const { prefixCls } = useDesign('tinymce-container');
... ... @@ -104,7 +104,7 @@
104 104 }
105 105 );
106 106 onMountedOrActivated(() => {
107   - tinymceId.value = snowUuid('tiny-vue');
  107 + tinymceId.value = shortUuid('tiny-vue');
108 108 nextTick(() => {
109 109 init();
110 110 });
... ...
src/hooks/setting/index.ts
1 1 import type { ProjectConfig, GlobConfig, GlobEnvConfig } from '/@/types/config';
2 2  
  3 +import { getConfigFileName } from '../../../build/getConfigFileName';
  4 +
3 5 import getProjectSetting from '/@/settings/projectSetting';
4 6  
5   -import { getShortName } from '../../../build/getShortName';
6 7 import { warn } from '/@/utils/log';
7 8 import { getGlobEnvConfig, isDevMode } from '/@/utils/env';
8 9  
9   -const reg = /[a-zA-Z\_]*/;
10   -
11   -const ENV_NAME = getShortName(import.meta.env);
12   -const ENV = ((isDevMode()
13   - ? getGlobEnvConfig()
14   - : window[ENV_NAME as any]) as unknown) as GlobEnvConfig;
15   -
16   -const {
17   - VITE_GLOB_APP_TITLE,
18   - VITE_GLOB_API_URL,
19   - VITE_GLOB_APP_SHORT_NAME,
20   - VITE_GLOB_API_URL_PREFIX,
21   - VITE_GLOB_UPLOAD_URL,
22   -} = ENV;
23   -
24   -if (!reg.test(VITE_GLOB_APP_SHORT_NAME)) {
25   - warn(
26   - `VITE_GLOB_APP_SHORT_NAME Variables can only be characters/underscores, please modify in the environment variables and re-running.`
27   - );
28   -}
29   -
30 10 export const useGlobSetting = (): Readonly<GlobConfig> => {
  11 + const ENV_NAME = getConfigFileName(import.meta.env);
  12 +
  13 + const ENV = ((isDevMode()
  14 + ? getGlobEnvConfig()
  15 + : window[ENV_NAME as any]) as unknown) as GlobEnvConfig;
  16 +
  17 + const {
  18 + VITE_GLOB_APP_TITLE,
  19 + VITE_GLOB_API_URL,
  20 + VITE_GLOB_APP_SHORT_NAME,
  21 + VITE_GLOB_API_URL_PREFIX,
  22 + VITE_GLOB_UPLOAD_URL,
  23 + } = ENV;
  24 +
  25 + if (!/[a-zA-Z\_]*/.test(VITE_GLOB_APP_SHORT_NAME)) {
  26 + warn(
  27 + `VITE_GLOB_APP_SHORT_NAME Variables can only be characters/underscores, please modify in the environment variables and re-running.`
  28 + );
  29 + }
  30 +
31 31 // Take global configuration
32 32 const glob: Readonly<GlobConfig> = {
33 33 title: VITE_GLOB_APP_TITLE,
... ...
src/hooks/web/useApexCharts.ts
... ... @@ -2,8 +2,6 @@ import { useTimeoutFn } from &#39;/@/hooks/core/useTimeout&#39;;
2 2 import { tryOnUnmounted } from '/@/utils/helper/vueHelper';
3 3 import { unref, Ref, nextTick } from 'vue';
4 4  
5   -import ApexCharts from 'apexcharts';
6   -
7 5 interface CallBackFn {
8 6 (instance: Nullable<ApexCharts>): void;
9 7 }
... ... @@ -13,21 +11,22 @@ export function useApexCharts(elRef: Ref&lt;HTMLDivElement&gt;) {
13 11  
14 12 function setOptions(options: any, callback?: CallBackFn) {
15 13 nextTick(() => {
16   - useTimeoutFn(() => {
  14 + useTimeoutFn(async () => {
17 15 const el = unref(elRef);
18 16  
19 17 if (!el || !unref(el)) return;
  18 + const ApexCharts = await (await import('apexcharts')).default;
20 19 chartInstance = new ApexCharts(el, options);
21 20  
22 21 chartInstance && chartInstance.render();
23 22  
24   - // setOptions增加callback方法,返回chartInstance,以便于对图表进行再操作,例如调用updateOptions方法更新图表
  23 + // The callback method is added to setOptions to return the chartInstance to facilitate the re-operation of the chart, such as calling the updateOptions method to update the chart
25 24 callback && callback(chartInstance);
26 25 }, 30);
27 26 });
28 27 }
29 28  
30   - // 新增调用ApexCharts的updateOptions方法更新图表
  29 + // Call the updateOptions method of ApexCharts to update the chart
31 30 function updateOptions(
32 31 chartInstance: Nullable<ApexCharts>,
33 32 options: any,
... ...
src/hooks/web/useLockPage.ts
... ... @@ -65,9 +65,3 @@ export function useLockPage() {
65 65 }
66 66 });
67 67 }
68   -
69   -export const getIsLock = computed(() => {
70   - const { getLockInfo } = lockStore;
71   - const { isLock } = getLockInfo;
72   - return isLock;
73   -});
... ...
src/hooks/web/usePermission.ts
... ... @@ -40,7 +40,7 @@ export function usePermission() {
40 40 resetRouter();
41 41 const routes = await permissionStore.buildRoutesAction(id);
42 42 routes.forEach((route) => {
43   - router.addRoute(route as RouteRecordRaw);
  43 + router.addRoute((route as unknown) as RouteRecordRaw);
44 44 });
45 45 permissionStore.commitLastBuildMenuTimeState();
46 46 const { closeAll } = useTabs();
... ...
src/hooks/web/useSortable.ts
1   -import Sortable from 'sortablejs';
2 1 import { nextTick, unref } from 'vue';
3 2 import type { Ref } from 'vue';
  3 +import type { Options } from 'sortablejs';
4 4  
5   -export function useSortable(el: HTMLElement | Ref<HTMLElement>, options?: Sortable.Options) {
  5 +export function useSortable(el: HTMLElement | Ref<HTMLElement>, options?: Options) {
6 6 function initSortable() {
7   - nextTick(() => {
  7 + nextTick(async () => {
8 8 if (!el) return;
  9 +
  10 + const Sortable = (await import('sortablejs')).default;
9 11 Sortable.create(unref(el), {
10 12 animation: 500,
11 13 delay: 400,
... ...
src/layouts/default/tabs/useMultipleTabs.ts
... ... @@ -43,7 +43,7 @@ export function initAffixTabs(): string[] {
43 43 addAffixTabs();
44 44 isAddAffix = true;
45 45 }
46   - return affixList.value.map((item) => item.meta?.title).filter(Boolean);
  46 + return affixList.value.map((item) => item.meta?.title).filter(Boolean) as string[];
47 47 }
48 48  
49 49 export function useTabsDrag(affixTextList: string[]) {
... ...
src/logics/initAppConfig.ts
... ... @@ -7,7 +7,7 @@ import type { ProjectConfig } from &#39;/@/types/config&#39;;
7 7 import { PROJ_CFG_KEY } from '/@/enums/cacheEnum';
8 8  
9 9 import projectSetting from '/@/settings/projectSetting';
10   -import { getLocal } from '/@/utils/helper/persistent';
  10 +import { getLocal } from '/@/utils/cache/persistent';
11 11 import { updateHeaderBgColor, updateSidebarBgColor } from '/@/logics/theme/updateBackground';
12 12 import { updateColorWeak } from '/@/logics/theme/updateColorWeak';
13 13 import { updateGrayMode } from '/@/logics/theme/updateGrayMode';
... ...
src/router/helper/menuHelper.ts
... ... @@ -46,12 +46,6 @@ export function transformRouteToMenu(routeModList: AppRouteModule[]) {
46 46 const cloneRouteModList = cloneDeep(routeModList);
47 47 const routeList: AppRouteRecordRaw[] = [];
48 48  
49   - // cloneRouteModList = filter(cloneRouteModList, (node) => {
50   - // if (Reflect.has(node?.meta ?? {}, 'hideMenu')) {
51   - // return !node?.meta.hideMenu;
52   - // }
53   - // return true;
54   - // });
55 49 cloneRouteModList.forEach((item) => {
56 50 if (item.meta?.single) {
57 51 const realItem = item?.children?.[0];
... ...
src/router/index.ts
... ... @@ -3,9 +3,8 @@ import type { App } from &#39;vue&#39;;
3 3  
4 4 import { createRouter, createWebHashHistory } from 'vue-router';
5 5  
6   -import { createGuard } from './guard/';
7   -
8   -import { basicRoutes } from './routes/';
  6 +import { createGuard } from './guard';
  7 +import { basicRoutes } from './routes';
9 8 import { REDIRECT_NAME } from './constant';
10 9  
11 10 // app router
... ... @@ -33,8 +32,4 @@ export function setupRouter(app: App&lt;Element&gt;) {
33 32 createGuard(router);
34 33 }
35 34  
36   -// router.onError((error) => {
37   -// console.error(error);
38   -// });
39   -
40 35 export default router;
... ...
src/store/modules/app.ts
... ... @@ -6,7 +6,7 @@ import store from &#39;/@/store&#39;;
6 6 import { PROJ_CFG_KEY } from '/@/enums/cacheEnum';
7 7  
8 8 import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper';
9   -import { setLocal, getLocal, clearSession, clearLocal } from '/@/utils/helper/persistent';
  9 +import { setLocal, getLocal, clearSession, clearLocal } from '/@/utils/cache/persistent';
10 10 import { deepMerge } from '/@/utils';
11 11  
12 12 import { resetRouter } from '/@/router';
... ...
src/store/modules/lock.ts
... ... @@ -4,7 +4,7 @@ import store from &#39;/@/store&#39;;
4 4 import { LOCK_INFO_KEY } from '/@/enums/cacheEnum';
5 5  
6 6 import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper';
7   -import { setLocal, getLocal, removeLocal } from '/@/utils/helper/persistent';
  7 +import { setLocal, getLocal, removeLocal } from '/@/utils/cache/persistent';
8 8  
9 9 import { userStore } from './user';
10 10  
... ...
src/store/modules/user.ts
... ... @@ -18,7 +18,7 @@ import router from &#39;/@/router&#39;;
18 18  
19 19 import { loginApi, getUserInfoById } from '/@/api/sys/user';
20 20  
21   -import { setLocal, getLocal, getSession, setSession } from '/@/utils/helper/persistent';
  21 +import { setLocal, getLocal, getSession, setSession } from '/@/utils/cache/persistent';
22 22 import { useProjectSetting } from '/@/hooks/setting';
23 23 import { useI18n } from '/@/hooks/web/useI18n';
24 24 import { ErrorMessageMode } from '/@/utils/http/axios/types';
... ... @@ -37,7 +37,6 @@ function getCache&lt;T&gt;(key: string) {
37 37  
38 38 function setCache(USER_INFO_KEY: string, info: any) {
39 39 if (!info) return;
40   - // const fn = permissionCacheType === CacheTypeEnum.LOCAL ? setLocal : setSession;
41 40 setLocal(USER_INFO_KEY, info, true);
42 41 // TODO
43 42 setSession(USER_INFO_KEY, info, true);
... ...
src/types/config.d.ts
... ... @@ -6,9 +6,10 @@ import {
6 6 RouterTransitionEnum,
7 7 SettingButtonPositionEnum,
8 8 } from '/@/enums/appEnum';
  9 +
9 10 import { CacheTypeEnum } from '/@/enums/cacheEnum';
10 11 import type { LocaleType } from '/@/locales/types';
11   -import { ThemeMode } from '../../build/config/lessModifyVars';
  12 +import { ThemeMode } from '../../build/config/themeConfig';
12 13  
13 14 export interface MenuSetting {
14 15 bgColor: string;
... ... @@ -32,16 +33,10 @@ export interface MenuSetting {
32 33 }
33 34  
34 35 export interface MultiTabsSetting {
35   - // 是否显示
36 36 show: boolean;
37   - // 开启快速操作
38 37 showQuick: boolean;
39 38 canDrag: boolean;
40   -
41   - // 显示刷新按钮
42 39 showRedo: boolean;
43   -
44   - // 显示折叠按钮
45 40 showFold: boolean;
46 41 }
47 42  
... ... @@ -50,16 +45,14 @@ export interface HeaderSetting {
50 45 fixed: boolean;
51 46 show: boolean;
52 47 theme: ThemeEnum;
53   -
54   - // 显示全屏按钮
  48 + // Turn on full screen
55 49 showFullScreen: boolean;
56   - // 开启全屏功能
  50 + // Whether to show the lock screen
57 51 useLockPage: boolean;
58   - // 显示文档按钮
  52 + // Show document button
59 53 showDoc: boolean;
60   - // 显示消息中心按钮
  54 + // Show message center button
61 55 showNotice: boolean;
62   -
63 56 showSearch: boolean;
64 57 }
65 58  
... ... @@ -76,96 +69,90 @@ export interface LocaleSetting {
76 69 export interface TransitionSetting {
77 70 // Whether to open the page switching animation
78 71 enable: boolean;
79   -
80 72 // Route basic switching animation
81 73 basicTransition: RouterTransitionEnum;
82   -
83 74 // Whether to open page switching loading
84 75 openPageLoading: boolean;
85   -
86 76 // Whether to open the top progress bar
87 77 openNProgress: boolean;
88 78 }
89 79  
90 80 export interface ProjectConfig {
  81 + // Multilingual configuration
91 82 locale: LocaleSetting;
92   -
  83 + // Storage location of permission related information
93 84 permissionCacheType: CacheTypeEnum;
94   -
95   - // 是否显示配置按钮
  85 + // Whether to show the configuration button
96 86 showSettingButton: boolean;
  87 + // Configure where the button is displayed
97 88 settingButtonPosition: SettingButtonPositionEnum;
98   - // 权限模式
  89 + // Permission mode
99 90 permissionMode: PermissionModeEnum;
100   - // 网站灰色模式,用于可能悼念的日期开启
  91 + // Website gray mode, open for possible mourning dates
101 92 grayMode: boolean;
102   - // 是否开启色弱模式
  93 + // Whether to turn on the color weak mode
103 94 colorWeak: boolean;
104   - // 主题色
  95 + // Theme color
105 96 themeColor: string;
  97 +
106 98 themeMode: ThemeMode;
107   - // 全屏显示主界面,不显示菜单,及顶部
  99 + // The main interface is displayed in full screen, the menu is not displayed, and the top
108 100 fullContent: boolean;
109   - // 区域宽度
  101 + // content width
110 102 contentMode: ContentEnum;
111   - // 是否显示logo
  103 + // Whether to display the logo
112 104 showLogo: boolean;
  105 + // Whether to show the global footer
113 106 showFooter: boolean;
114   - headerSetting: HeaderSetting;
115   - // 菜单类型
116 107 // menuType: MenuTypeEnum;
  108 + headerSetting: HeaderSetting;
  109 + // menuSetting
117 110 menuSetting: MenuSetting;
118   -
119   - // 多标签页设置
  111 + // Multi-tab settings
120 112 multiTabsSetting: MultiTabsSetting;
121   -
  113 + // Animation configuration
122 114 transitionSetting: TransitionSetting;
123   -
124   - // pageLayout是否开启keep-alive
  115 + // pageLayout whether to enable keep-alive
125 116 openKeepAlive: boolean;
126   -
127   - //
128   - // 锁屏时间
  117 + // Lock screen time
129 118 lockTime: number;
130   - // 显示面包屑
  119 + // Show breadcrumbs
131 120 showBreadCrumb: boolean;
132   - // 显示面包屑图标
  121 + // Show breadcrumb icon
133 122 showBreadCrumbIcon: boolean;
134   - // 使用error-handler-plugin
  123 + // Use error-handler-plugin
135 124 useErrorHandle: boolean;
136   - // 是否开启回到顶部
  125 + // Whether to open back to top
137 126 useOpenBackTop: boolean;
138   - // 是否可以嵌入iframe页面
  127 + // Is it possible to embed iframe pages
139 128 canEmbedIFramePage: boolean;
140   - // 切换界面的时候是否删除未关闭的message及notify
  129 + // Whether to delete unclosed messages and notify when switching the interface
141 130 closeMessageOnSwitch: boolean;
142   - // 切换界面的时候是否取消已经发送但是未响应的http请求。
  131 + // Whether to cancel the http request that has been sent but not responded when switching the interface.
143 132 removeAllHttpPending: boolean;
144 133 }
145 134  
146 135 export interface GlobConfig {
147   - // 网站标题
  136 + // Site title
148 137 title: string;
149   - // 项目路径
  138 + // Service interface url
150 139 apiUrl: string;
  140 + // Upload url
151 141 uploadUrl?: string;
  142 + // Service interface url prefix
152 143 urlPrefix?: string;
  144 + // Project abbreviation
153 145 shortName: string;
154 146 }
155 147 export interface GlobEnvConfig {
156   - // 网站标题
  148 + // Site title
157 149 VITE_GLOB_APP_TITLE: string;
158   - // 项目路径
  150 + // Service interface url
159 151 VITE_GLOB_API_URL: string;
  152 + // Service interface url prefix
160 153 VITE_GLOB_API_URL_PREFIX?: string;
  154 + // Project abbreviation
161 155 VITE_GLOB_APP_SHORT_NAME: string;
  156 + // Upload url
162 157 VITE_GLOB_UPLOAD_URL?: string;
163 158 }
164   -
165   -interface GlobWrap {
166   - globSetting: Readonly<GlobConfig>;
167   -}
168   -
169   -interface ProjectSettingWrap {
170   - projectSetting: Readonly<ProjectConfig>;
171   -}
... ...
src/utils/helper/persistent.ts renamed to src/utils/cache/persistent.ts
src/utils/domUtils.ts
... ... @@ -16,9 +16,9 @@ export function getBoundingClientRect(element: Element): DOMRect | number {
16 16 return element.getBoundingClientRect();
17 17 }
18 18  
19   -const trim = function (string: string) {
  19 +function trim(string: string) {
20 20 return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
21   -};
  21 +}
22 22  
23 23 /* istanbul ignore next */
24 24 export function hasClass(el: Element, cls: string) {
... ...
src/utils/env.ts
1 1 import type { GlobEnvConfig } from '/@/types/config';
2 2  
  3 +import { useGlobSetting } from '/@/hooks/setting';
  4 +import pkg from '../../package.json';
  5 +
3 6 /**
4 7 * Get the global configuration (the configuration will be extracted independently when packaging)
5 8 */
... ... @@ -8,6 +11,12 @@ export function getGlobEnvConfig(): GlobEnvConfig {
8 11 return (env as unknown) as GlobEnvConfig;
9 12 }
10 13  
  14 +// Generate cache key according to version
  15 +export function getStorageShortName() {
  16 + const globSetting = useGlobSetting();
  17 + return `${globSetting.shortName}__${getEnv()}${`__${pkg.version}`}__`.toUpperCase();
  18 +}
  19 +
11 20 /**
12 21 * @description: Development model
13 22 */
... ...
src/utils/index.ts
... ... @@ -4,6 +4,7 @@ import { isObject } from &#39;/@/utils/is&#39;;
4 4 export const clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n));
5 5 export const noop = () => {};
6 6 export const now = () => Date.now();
  7 +
7 8 /**
8 9 * @description: Set ui mount node
9 10 */
... ...
src/utils/uuid.ts
... ... @@ -20,7 +20,7 @@ export function buildUUID(): string {
20 20 }
21 21  
22 22 let unique = 0;
23   -export function snowUuid(prefix = ''): string {
  23 +export function shortUuid(prefix = ''): string {
24 24 const time = Date.now();
25 25 const random = Math.floor(Math.random() * 1000000000);
26 26 unique++;
... ...
src/views/sys/lock/index.vue
... ... @@ -4,13 +4,20 @@
4 4 </transition>
5 5 </template>
6 6 <script lang="ts">
7   - import { defineComponent } from 'vue';
  7 + import { defineComponent, computed } from 'vue';
8 8 import LockPage from './LockPage.vue';
9   - import { getIsLock } from '/@/hooks/web/useLockPage';
  9 +
  10 + import { lockStore } from '/@/store/modules/lock';
10 11 export default defineComponent({
11 12 name: 'Lock',
12 13 components: { LockPage },
13 14 setup() {
  15 + const getIsLock = computed(() => {
  16 + const { getLockInfo } = lockStore;
  17 + const { isLock } = getLockInfo;
  18 + return isLock;
  19 + });
  20 +
14 21 return { getIsLock };
15 22 },
16 23 });
... ...
stylelint.config.js
... ... @@ -28,6 +28,7 @@ module.exports = {
28 28 ignore: ['after-comment', 'first-nested'],
29 29 },
30 30 ],
  31 + 'unit-no-unknown': [true, { ignoreUnits: ['rpx'] }],
31 32 // Specify the alphabetical order of the attributes in the declaration block
32 33 'order/properties-order': [
33 34 'position',
... ... @@ -178,4 +179,5 @@ module.exports = {
178 179 'speak',
179 180 ],
180 181 },
  182 + ignoreFiles: ['**/*.js', '**/*.jsx', '**/*.tsx', '**/*.ts'],
181 183 };
... ...
yarn.lock
... ... @@ -1118,48 +1118,48 @@
1118 1118 dependencies:
1119 1119 cross-fetch "^3.0.6"
1120 1120  
1121   -"@iconify/json@^1.1.307":
1122   - version "1.1.307"
1123   - resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.307.tgz#db97e8faba1183e0411471dafe210deba0cc1fe2"
1124   - integrity sha512-2hyKd4DKGWNtQ9CNC4s7tRzMHyDai3GnARC26nGZo7f4/r86FTspvjCEbqpbuM5spJ1fn5jx00Iv4Qee89ooRA==
1125   -
1126   -"@intlify/core-base@9.0.0-rc.7":
1127   - version "9.0.0-rc.7"
1128   - resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.0.0-rc.7.tgz#664e58d0c24465d19fb84d65be2bc4c4735c2b4e"
1129   - integrity sha512-jYF6kQpSCeBXprZRcggGV/YQAwqXRWo2MtcdkPfZf0cP26Yx12UeFF0Uk5W5M/cgts3ktkhF/CzvxtXP1mevlQ==
1130   - dependencies:
1131   - "@intlify/message-compiler" "9.0.0-rc.7"
1132   - "@intlify/message-resolver" "9.0.0-rc.7"
1133   - "@intlify/runtime" "9.0.0-rc.7"
1134   - "@intlify/shared" "9.0.0-rc.7"
1135   -
1136   -"@intlify/message-compiler@9.0.0-rc.7":
1137   - version "9.0.0-rc.7"
1138   - resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.0.0-rc.7.tgz#383459a96220536ad675b77fef2d3f3f652d5647"
1139   - integrity sha512-T8cPzSkNV0KHtLokQW8hBHMlqYcpknJy8JygwA4R6guiO2G9eyUdZ+rswDq5vrGfSIUglgHYusoIvOhFyQpkpQ==
1140   - dependencies:
1141   - "@intlify/message-resolver" "9.0.0-rc.7"
1142   - "@intlify/shared" "9.0.0-rc.7"
  1121 +"@iconify/json@^1.1.308":
  1122 + version "1.1.308"
  1123 + resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.308.tgz#162210182c14af4eb217f19e1a1707b787aca2aa"
  1124 + integrity sha512-zoVnvr5A1tpuTCzuw5EvRcWYV5rcmWLGLhEzg9+SuRAXWyT2st0ShF8hYbeHzm+MJHhJWodHVfsTu2DkshMX2g==
  1125 +
  1126 +"@intlify/core-base@9.0.0-rc.8":
  1127 + version "9.0.0-rc.8"
  1128 + resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.0.0-rc.8.tgz#674b88c313cbe471bb66f52dd0907106b01e1c38"
  1129 + integrity sha512-Nwj2GTZN7gOiN7uGgAeaaJAho/UamkXTheMrdjLrj7FPjE3d1oiSeB3fBgobJxzpyBRjhmjUmpPCEs1afokSxQ==
  1130 + dependencies:
  1131 + "@intlify/message-compiler" "9.0.0-rc.8"
  1132 + "@intlify/message-resolver" "9.0.0-rc.8"
  1133 + "@intlify/runtime" "9.0.0-rc.8"
  1134 + "@intlify/shared" "9.0.0-rc.8"
  1135 +
  1136 +"@intlify/message-compiler@9.0.0-rc.8":
  1137 + version "9.0.0-rc.8"
  1138 + resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.0.0-rc.8.tgz#b2c291b728858aa6fa57b6329a806c1accc8450b"
  1139 + integrity sha512-vtKk5z7ovenLUXMGHVUyS+snEYrTpHT4o6bQyjPeEL3BoXcVyHlLKIHXNJ6QzlHVQN8aN1bWyj3rMf9ZKEZF3A==
  1140 + dependencies:
  1141 + "@intlify/message-resolver" "9.0.0-rc.8"
  1142 + "@intlify/shared" "9.0.0-rc.8"
1143 1143 source-map "0.6.1"
1144 1144  
1145   -"@intlify/message-resolver@9.0.0-rc.7":
1146   - version "9.0.0-rc.7"
1147   - resolved "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.0.0-rc.7.tgz#f41a552c7dd1c85f7042478bf264b0459c376376"
1148   - integrity sha512-d0Jz0OWiH7jYTDk4VzTnVroJ2eylQUgVIk+2ztNJAHsrKoy3wxq6Tw/GlIGOrVJCFqZLWuxg7dmuhZDd4fliTw==
  1145 +"@intlify/message-resolver@9.0.0-rc.8":
  1146 + version "9.0.0-rc.8"
  1147 + resolved "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.0.0-rc.8.tgz#09382e6390298d6786cc53c483d4240e4654ec17"
  1148 + integrity sha512-8Qqh23yN3sM/hIZKIgJ1S6a9mNm1LVeUxkjhHdfyGV84P6G3Q9bgwCSenX1BKuUrVUJfK45FUkg87BZnUd2Qpg==
1149 1149  
1150   -"@intlify/runtime@9.0.0-rc.7":
1151   - version "9.0.0-rc.7"
1152   - resolved "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.0.0-rc.7.tgz#81ed1602447c387476aeaf6eea7ff0608768f67e"
1153   - integrity sha512-SdM9Gqca4W+u/O6XHqDf38UwoiopbyRtUnnqWy5DGihbE1CTKlFZSGPMx95cLOVt0AIeVK/eRwclxLiRtQRM7A==
  1150 +"@intlify/runtime@9.0.0-rc.8":
  1151 + version "9.0.0-rc.8"
  1152 + resolved "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.0.0-rc.8.tgz#be5d1c776bba2678b51c3c0492d4676a910921ca"
  1153 + integrity sha512-ZK0eZwZQ6wb3nxUPc+WYSebnswSSt/lRJotmaVdcmS+tT9/FFz6PJ9pO0nNFV/cGn0uEGW92buldCiNVKA5aHg==
1154 1154 dependencies:
1155   - "@intlify/message-compiler" "9.0.0-rc.7"
1156   - "@intlify/message-resolver" "9.0.0-rc.7"
1157   - "@intlify/shared" "9.0.0-rc.7"
  1155 + "@intlify/message-compiler" "9.0.0-rc.8"
  1156 + "@intlify/message-resolver" "9.0.0-rc.8"
  1157 + "@intlify/shared" "9.0.0-rc.8"
1158 1158  
1159   -"@intlify/shared@9.0.0-rc.7":
1160   - version "9.0.0-rc.7"
1161   - resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.0.0-rc.7.tgz#4bab9e58bbb09bc690fd953d1e83d9026e3a3893"
1162   - integrity sha512-ynMHCCcBPtQAdJlOUMzrlvUp+DdKlnB0yrkPPMzAs8bBETwJbAK1Jq6zBHlMZzscPcF+1ia5pj4Gmmn7QL9b8w==
  1159 +"@intlify/shared@9.0.0-rc.8":
  1160 + version "9.0.0-rc.8"
  1161 + resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.0.0-rc.8.tgz#0b1b387a3237d4ae95496e8ae60cec267625f55d"
  1162 + integrity sha512-HH05+lD4A9q6F0VLbGY5eZmmCbfaBMuCSSQXmrGgegtsRVu7WFiUMQLNsouN1UtHabOJC9PQarxKwfTzdHyN6Q==
1163 1163  
1164 1164 "@ls-lint/ls-lint@^1.9.2":
1165 1165 version "1.9.2"
... ... @@ -1626,17 +1626,6 @@
1626 1626 estree-walker "^2.0.1"
1627 1627 source-map "^0.6.1"
1628 1628  
1629   -"@vue/compiler-core@3.0.6":
1630   - version "3.0.6"
1631   - resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.0.6.tgz#265bbe0711a81ab4c1344f8294e22e2d08ca167d"
1632   - integrity sha512-O7QzQ39DskOoPpEDWRvKwDX7Py9UNT7SvLHvBdIfckGA3OsAEBdiAtuYQNcVmUDeBajm+08v5wyvHWBbWgkilQ==
1633   - dependencies:
1634   - "@babel/parser" "^7.12.0"
1635   - "@babel/types" "^7.12.0"
1636   - "@vue/shared" "3.0.6"
1637   - estree-walker "^2.0.1"
1638   - source-map "^0.6.1"
1639   -
1640 1629 "@vue/compiler-dom@3.0.5":
1641 1630 version "3.0.5"
1642 1631 resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.0.5.tgz#7885a13e6d18f64dde8ebceec052ed2c102696c2"
... ... @@ -1645,43 +1634,35 @@
1645 1634 "@vue/compiler-core" "3.0.5"
1646 1635 "@vue/shared" "3.0.5"
1647 1636  
1648   -"@vue/compiler-dom@3.0.6":
1649   - version "3.0.6"
1650   - resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.0.6.tgz#f94c3959320a1252915bd02b943f96a7ee3fc951"
1651   - integrity sha512-q1wfHzYwvDRAhBlx+Qa+n3Bu5nHr1qL/j0UbpNlbQDwIlt9zpvmXUrUCL+i55Bh5lLKvSe+mNo0qlwNEApm+jA==
1652   - dependencies:
1653   - "@vue/compiler-core" "3.0.6"
1654   - "@vue/shared" "3.0.6"
1655   -
1656   -"@vue/compiler-sfc@^3.0.6":
1657   - version "3.0.6"
1658   - resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.0.6.tgz#3945f73a93d52868799f1e332a75bb8849976ac9"
1659   - integrity sha512-g1tkswnhtiJpj4ELQ3SzeGxtOd0t8E5GkT+n2VlElEnTI1BzueSvr41D5QthnUS+TNWZd52ZnPtdaNz+Lfum1w==
  1637 +"@vue/compiler-sfc@3.0.5":
  1638 + version "3.0.5"
  1639 + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.0.5.tgz#3ae08e60244a72faf9598361874fb7bdb5b1d37c"
  1640 + integrity sha512-uOAC4X0Gx3SQ9YvDC7YMpbDvoCmPvP0afVhJoxRotDdJ+r8VO3q4hFf/2f7U62k4Vkdftp6DVni8QixrfYzs+w==
1660 1641 dependencies:
1661 1642 "@babel/parser" "^7.12.0"
1662 1643 "@babel/types" "^7.12.0"
1663   - "@vue/compiler-core" "3.0.6"
1664   - "@vue/compiler-dom" "3.0.6"
1665   - "@vue/compiler-ssr" "3.0.6"
1666   - "@vue/shared" "3.0.6"
  1644 + "@vue/compiler-core" "3.0.5"
  1645 + "@vue/compiler-dom" "3.0.5"
  1646 + "@vue/compiler-ssr" "3.0.5"
  1647 + "@vue/shared" "3.0.5"
1667 1648 consolidate "^0.16.0"
1668 1649 estree-walker "^2.0.1"
1669 1650 hash-sum "^2.0.0"
1670 1651 lru-cache "^5.1.1"
1671 1652 magic-string "^0.25.7"
1672 1653 merge-source-map "^1.1.0"
1673   - postcss "^8.1.10"
1674   - postcss-modules "^4.0.0"
  1654 + postcss "^7.0.32"
  1655 + postcss-modules "^3.2.2"
1675 1656 postcss-selector-parser "^6.0.4"
1676 1657 source-map "^0.6.1"
1677 1658  
1678   -"@vue/compiler-ssr@3.0.6":
1679   - version "3.0.6"
1680   - resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.0.6.tgz#7156361e4c465cbee2723275edc61e940678e47c"
1681   - integrity sha512-Y4amPwRevUiiNQDho0cq1Ith9q6UU5N6CD6YiXkHIboFPeXEiGvH3ULJWjFzlGqn1eUV1AReNJpFJrhjtQNc7g==
  1659 +"@vue/compiler-ssr@3.0.5":
  1660 + version "3.0.5"
  1661 + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.0.5.tgz#7661ad891a0be948726c7f7ad1e425253c587b83"
  1662 + integrity sha512-Wm//Kuxa1DpgjE4P9W0coZr8wklOfJ35Jtq61CbU+t601CpPTK4+FL2QDBItaG7aoUUDCWL5nnxMkuaOgzTBKg==
1682 1663 dependencies:
1683   - "@vue/compiler-dom" "3.0.6"
1684   - "@vue/shared" "3.0.6"
  1664 + "@vue/compiler-dom" "3.0.5"
  1665 + "@vue/shared" "3.0.5"
1685 1666  
1686 1667 "@vue/devtools-api@^6.0.0-beta.5":
1687 1668 version "6.0.0-beta.7"
... ... @@ -1695,13 +1676,6 @@
1695 1676 dependencies:
1696 1677 "@vue/shared" "3.0.5"
1697 1678  
1698   -"@vue/reactivity@3.0.6":
1699   - version "3.0.6"
1700   - resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.0.6.tgz#7b16f3d5d04cc55028085fff0bb8475cc0e32991"
1701   - integrity sha512-hX8PnZayNMoljWSYrZW0OclQnRaMoHxvi5eeFVFPDr7+tzBeiftmmozKttxxCLoDxBWX1B4gNc237DIcYU63Lw==
1702   - dependencies:
1703   - "@vue/shared" "3.0.6"
1704   -
1705 1679 "@vue/runtime-core@3.0.5":
1706 1680 version "3.0.5"
1707 1681 resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.0.5.tgz#da6331d5f300d5794e9e0ebdc8a8bd72a9e19962"
... ... @@ -1710,14 +1684,6 @@
1710 1684 "@vue/reactivity" "3.0.5"
1711 1685 "@vue/shared" "3.0.5"
1712 1686  
1713   -"@vue/runtime-core@3.0.6":
1714   - version "3.0.6"
1715   - resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.0.6.tgz#d16779b5664593f1d25be677fb1b1968024aa532"
1716   - integrity sha512-x6N38P0DeMyrHiAxCE/rACHTyydOzlg8IyUIPkSJ4rrSkuJnAtFKQicK6fm8NuD21dwdPr8KcZ4Cn4xaqL1JJg==
1717   - dependencies:
1718   - "@vue/reactivity" "3.0.6"
1719   - "@vue/shared" "3.0.6"
1720   -
1721 1687 "@vue/runtime-dom@3.0.5":
1722 1688 version "3.0.5"
1723 1689 resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.0.5.tgz#1ce2c9c449e26ab06963da0064096e882a7a8935"
... ... @@ -1727,25 +1693,11 @@
1727 1693 "@vue/shared" "3.0.5"
1728 1694 csstype "^2.6.8"
1729 1695  
1730   -"@vue/runtime-dom@3.0.6":
1731   - version "3.0.6"
1732   - resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.0.6.tgz#e7d6c61913d871f1f020a9a81b558c8fcbeba8c6"
1733   - integrity sha512-Y6y4Tak9//VXB2mp2NVQxbwC4a5xsnJpotpo8yBAB3qB3L4v4HQLpqxSkwThRwI6Y6Z7dydX/sgfraqLBE8BWg==
1734   - dependencies:
1735   - "@vue/runtime-core" "3.0.6"
1736   - "@vue/shared" "3.0.6"
1737   - csstype "^2.6.8"
1738   -
1739 1696 "@vue/shared@3.0.5":
1740 1697 version "3.0.5"
1741 1698 resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.0.5.tgz#c131d88bd6713cc4d93b3bb1372edb1983225ff0"
1742 1699 integrity sha512-gYsNoGkWejBxNO6SNRjOh/xKeZ0H0V+TFzaPzODfBjkAIb0aQgBuixC1brandC/CDJy1wYPwSoYrXpvul7m6yw==
1743 1700  
1744   -"@vue/shared@3.0.6":
1745   - version "3.0.6"
1746   - resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.0.6.tgz#d65576430fc4ad383dc7c829118798e5169178d4"
1747   - integrity sha512-c37C60HpelUZIx+SNZVEINSxkFzQYhIXFg5AynnIA4QDBmY4iSPoACfGSwSUTCTKImukPeCgY2oqRJVP3R1Mnw==
1748   -
1749 1701 "@vueuse/core@^4.2.2":
1750 1702 version "4.2.2"
1751 1703 resolved "https://registry.npmjs.org/@vueuse/core/-/core-4.2.2.tgz#ecbba4ba05e0360e9c9079b32e149fac803a1020"
... ... @@ -4865,10 +4817,12 @@ icss-replace-symbols@^1.1.0:
4865 4817 resolved "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
4866 4818 integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
4867 4819  
4868   -icss-utils@^5.0.0:
4869   - version "5.1.0"
4870   - resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
4871   - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
  4820 +icss-utils@^4.0.0, icss-utils@^4.1.1:
  4821 + version "4.1.1"
  4822 + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
  4823 + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
  4824 + dependencies:
  4825 + postcss "^7.0.14"
4872 4826  
4873 4827 ieee754@^1.1.13:
4874 4828 version "1.2.1"
... ... @@ -6907,46 +6861,52 @@ postcss-media-query-parser@^0.2.3:
6907 6861 resolved "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
6908 6862 integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=
6909 6863  
6910   -postcss-modules-extract-imports@^3.0.0:
6911   - version "3.0.0"
6912   - resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
6913   - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
  6864 +postcss-modules-extract-imports@^2.0.0:
  6865 + version "2.0.0"
  6866 + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
  6867 + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
  6868 + dependencies:
  6869 + postcss "^7.0.5"
6914 6870  
6915   -postcss-modules-local-by-default@^4.0.0:
6916   - version "4.0.0"
6917   - resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
6918   - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
  6871 +postcss-modules-local-by-default@^3.0.2:
  6872 + version "3.0.3"
  6873 + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0"
  6874 + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
6919 6875 dependencies:
6920   - icss-utils "^5.0.0"
  6876 + icss-utils "^4.1.1"
  6877 + postcss "^7.0.32"
6921 6878 postcss-selector-parser "^6.0.2"
6922 6879 postcss-value-parser "^4.1.0"
6923 6880  
6924   -postcss-modules-scope@^3.0.0:
6925   - version "3.0.0"
6926   - resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
6927   - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
  6881 +postcss-modules-scope@^2.2.0:
  6882 + version "2.2.0"
  6883 + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee"
  6884 + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
6928 6885 dependencies:
6929   - postcss-selector-parser "^6.0.4"
  6886 + postcss "^7.0.6"
  6887 + postcss-selector-parser "^6.0.0"
6930 6888  
6931   -postcss-modules-values@^4.0.0:
6932   - version "4.0.0"
6933   - resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
6934   - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
  6889 +postcss-modules-values@^3.0.0:
  6890 + version "3.0.0"
  6891 + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10"
  6892 + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
6935 6893 dependencies:
6936   - icss-utils "^5.0.0"
  6894 + icss-utils "^4.0.0"
  6895 + postcss "^7.0.6"
6937 6896  
6938   -postcss-modules@^4.0.0:
6939   - version "4.0.0"
6940   - resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.0.0.tgz#2bc7f276ab88f3f1b0fadf6cbd7772d43b5f3b9b"
6941   - integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw==
  6897 +postcss-modules@^3.2.2:
  6898 + version "3.2.2"
  6899 + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-3.2.2.tgz#ee390de0f9f18e761e1778dfb9be26685c02c51f"
  6900 + integrity sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw==
6942 6901 dependencies:
6943 6902 generic-names "^2.0.1"
6944 6903 icss-replace-symbols "^1.1.0"
6945 6904 lodash.camelcase "^4.3.0"
6946   - postcss-modules-extract-imports "^3.0.0"
6947   - postcss-modules-local-by-default "^4.0.0"
6948   - postcss-modules-scope "^3.0.0"
6949   - postcss-modules-values "^4.0.0"
  6905 + postcss "^7.0.32"
  6906 + postcss-modules-extract-imports "^2.0.0"
  6907 + postcss-modules-local-by-default "^3.0.2"
  6908 + postcss-modules-scope "^2.2.0"
  6909 + postcss-modules-values "^3.0.0"
6950 6910 string-hash "^1.1.1"
6951 6911  
6952 6912 postcss-resolve-nested-selector@^0.1.1:
... ... @@ -6976,7 +6936,7 @@ postcss-scss@^2.1.1:
6976 6936 dependencies:
6977 6937 postcss "^7.0.6"
6978 6938  
6979   -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
  6939 +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
6980 6940 version "6.0.4"
6981 6941 resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3"
6982 6942 integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==
... ... @@ -7004,7 +6964,7 @@ postcss-value-parser@^4.1.0:
7004 6964 resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
7005 6965 integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
7006 6966  
7007   -postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6:
  6967 +postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6:
7008 6968 version "7.0.35"
7009 6969 resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
7010 6970 integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
... ... @@ -7013,15 +6973,6 @@ postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.
7013 6973 source-map "^0.6.1"
7014 6974 supports-color "^6.1.0"
7015 6975  
7016   -postcss@^8.1.10:
7017   - version "8.2.6"
7018   - resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe"
7019   - integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg==
7020   - dependencies:
7021   - colorette "^1.2.1"
7022   - nanoid "^3.1.20"
7023   - source-map "^0.6.1"
7024   -
7025 6976 postcss@^8.2.1:
7026 6977 version "8.2.4"
7027 6978 resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04"
... ... @@ -9049,13 +9000,13 @@ vue-eslint-parser@^7.5.0:
9049 9000 esquery "^1.4.0"
9050 9001 lodash "^4.17.15"
9051 9002  
9052   -vue-i18n@9.0.0-rc.7:
9053   - version "9.0.0-rc.7"
9054   - resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.0.0-rc.7.tgz#4097dfaa0d66319bbcd9fe5fb22c4b72e97720b5"
9055   - integrity sha512-weNLPLqGiitziBUpGQHyxYlhuw447yR4EcsvmqUX3MocIKciv6OMHKxUguCFC1m1ZRCzHQwik7fz+Q8u4UmEdQ==
  9003 +vue-i18n@9.0.0-rc.8:
  9004 + version "9.0.0-rc.8"
  9005 + resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.0.0-rc.8.tgz#36d022516cf2527ce02eecf9de116b978e163da3"
  9006 + integrity sha512-WQC9q0UG1lbk+naBBoVTrJjHPZfHP6Pid35Ek9AkCxUcXolW1pXUCQg1gIMF8I0obxLd/fSx9GuOWrB/aaU3aQ==
9056 9007 dependencies:
9057   - "@intlify/core-base" "9.0.0-rc.7"
9058   - "@intlify/shared" "9.0.0-rc.7"
  9008 + "@intlify/core-base" "9.0.0-rc.8"
  9009 + "@intlify/shared" "9.0.0-rc.8"
9059 9010 "@vue/devtools-api" "^6.0.0-beta.5"
9060 9011  
9061 9012 vue-router@^4.0.4:
... ... @@ -9077,7 +9028,7 @@ vue-types@^3.0.2:
9077 9028 dependencies:
9078 9029 is-plain-object "3.0.1"
9079 9030  
9080   -vue@^3.0.0:
  9031 +vue@3.0.5, vue@^3.0.0:
9081 9032 version "3.0.5"
9082 9033 resolved "https://registry.npmjs.org/vue/-/vue-3.0.5.tgz#de1b82eba24abfe71e0970fc9b8d4b2babdc3fe1"
9083 9034 integrity sha512-TfaprOmtsAfhQau7WsomXZ8d9op/dkQLNIq8qPV3A0Vxs6GR5E+c1rfJS1SDkXRQj+dFyfnec7+U0Be1huiScg==
... ... @@ -9086,15 +9037,6 @@ vue@^3.0.0:
9086 9037 "@vue/runtime-dom" "3.0.5"
9087 9038 "@vue/shared" "3.0.5"
9088 9039  
9089   -vue@^3.0.6:
9090   - version "3.0.6"
9091   - resolved "https://registry.npmjs.org/vue/-/vue-3.0.6.tgz#2c16ed4bb66f16d6c6f6eaa3b7d5835a76598049"
9092   - integrity sha512-fgjbe/+f1EsqG7ZbaFSnxdzQXF2DKoFCdJlPxZZJy9XMtyXS6SY8pGzLi8WYb4zmsPLHvTZz4bHW30kFDk7vfA==
9093   - dependencies:
9094   - "@vue/compiler-dom" "3.0.6"
9095   - "@vue/runtime-dom" "3.0.6"
9096   - "@vue/shared" "3.0.6"
9097   -
9098 9040 vuex-module-decorators@^1.0.1:
9099 9041 version "1.0.1"
9100 9042 resolved "https://registry.npmjs.org/vuex-module-decorators/-/vuex-module-decorators-1.0.1.tgz#d34dafb5428a3636f1c26d3d014c15fc9659ccd0"
... ...