Commit be3a3ed699f73d352d49623ef07288093a3332c4

Authored by vben
1 parent 562189df

perf: remove useless code

.env.production
... ... @@ -7,7 +7,7 @@ VITE_PUBLIC_PATH = /
7 7 # Delete console
8 8 VITE_DROP_CONSOLE = true
9 9  
10   -# Whether to enable gizp or brotli compression
  10 +# Whether to enable gzip or brotli compression
11 11 # Optional: gzip | brotli | none
12 12 # If you need multiple forms, you can use `,` to separate
13 13 VITE_BUILD_COMPRESS = 'none'
... ...
src/App.vue
... ... @@ -22,10 +22,12 @@
22 22 setup() {
23 23 // support Multi-language
24 24 const { antConfigLocale, setLocale } = useLocale();
  25 +
25 26 setLocale();
26 27  
27 28 // Initialize vuex internal system configuration
28 29 initAppConfigStore();
  30 +
29 31 // Create a lock screen monitor
30 32 const lockEvent = useLockPage();
31 33  
... ...
src/components/Form/src/hooks/useFormEvents.ts
... ... @@ -5,10 +5,10 @@ import type { NamePath } from 'ant-design-vue/lib/form/interface';
5 5 import { unref, toRaw } from 'vue';
6 6  
7 7 import { isArray, isFunction, isObject, isString } from '/@/utils/is';
8   -import { deepMerge, unique } from '/@/utils';
  8 +import { deepMerge } from '/@/utils';
9 9 import { dateItemType, handleInputNumberValue } from '../helper';
10 10 import { dateUtil } from '/@/utils/dateUtil';
11   -import { cloneDeep } from 'lodash-es';
  11 +import { cloneDeep, uniqBy } from 'lodash-es';
12 12 import { error } from '/@/utils/log';
13 13  
14 14 interface UseFormActionContext {
... ... @@ -160,7 +160,7 @@ export function useFormEvents({
160 160 }
161 161 });
162 162 });
163   - schemaRef.value = unique(schema, 'field');
  163 + schemaRef.value = uniqBy(schema, 'field');
164 164 }
165 165  
166 166 function getFieldsValue(): Recordable {
... ...
src/components/Menu/src/useOpenKeys.ts
... ... @@ -5,7 +5,7 @@ import type { MenuState } from './types';
5 5 import { computed, Ref, toRaw } from 'vue';
6 6  
7 7 import { unref } from 'vue';
8   -import { es6Unique } from '/@/utils';
  8 +import { uniq } from 'lodash-es';
9 9 import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
10 10 import { getAllParentPath } from '/@/router/helper/menuHelper';
11 11 import { useTimeoutFn } from '/@/hooks/core/useTimeout';
... ... @@ -31,10 +31,7 @@ export function useOpenKeys(
31 31 return;
32 32 }
33 33 if (!unref(accordion)) {
34   - menuState.openKeys = es6Unique([
35   - ...menuState.openKeys,
36   - ...getAllParentPath(menuList, path),
37   - ]);
  34 + menuState.openKeys = uniq([...menuState.openKeys, ...getAllParentPath(menuList, path)]);
38 35 } else {
39 36 menuState.openKeys = getAllParentPath(menuList, path);
40 37 }
... ...
src/components/SimpleMenu/src/useOpenKeys.ts
... ... @@ -4,8 +4,9 @@ import type { MenuState } from './types';
4 4 import { computed, Ref, toRaw } from 'vue';
5 5  
6 6 import { unref } from 'vue';
7   -import { es6Unique } from '/@/utils';
  7 +import { uniq } from 'lodash-es';
8 8 import { getAllParentPath } from '/@/router/helper/menuHelper';
  9 +
9 10 import { useTimeoutFn } from '/@/hooks/core/useTimeout';
10 11  
11 12 export function useOpenKeys(
... ... @@ -31,7 +32,7 @@ export function useOpenKeys(
31 32 }
32 33 const keys = getAllParentPath(menuList, path);
33 34 if (!unref(accordion)) {
34   - menuState.openNames = es6Unique([...menuState.openNames, ...keys]);
  35 + menuState.openNames = uniq([...menuState.openNames, ...keys]);
35 36 } else {
36 37 menuState.openNames = keys;
37 38 }
... ...
src/components/VirtualScroll/src/index.tsx
... ... @@ -11,12 +11,22 @@ import {
11 11 } from 'vue';
12 12 import { useEventListener } from '/@/hooks/event/useEventListener';
13 13  
14   -import { convertToUnit } from '/@/components/util';
15 14 import { props as basicProps } from './props';
16 15 import { getSlot } from '/@/utils/helper/tsxHelper';
17 16 import './index.less';
18 17  
19 18 const prefixCls = 'virtual-scroll';
  19 +
  20 +function convertToUnit(str: string | number | null | undefined, unit = 'px'): string | undefined {
  21 + if (str == null || str === '') {
  22 + return undefined;
  23 + } else if (isNaN(+str!)) {
  24 + return String(str);
  25 + } else {
  26 + return `${Number(str)}${unit}`;
  27 + }
  28 +}
  29 +
20 30 export default defineComponent({
21 31 name: 'VirtualScroll',
22 32 props: basicProps,
... ...
src/components/registerGlobComp.ts
... ... @@ -3,42 +3,6 @@ import { Button } from './Button';
3 3 import {
4 4 // Need
5 5 Button as AntButton,
6   -
7   - // Optional
8   - // Select,
9   - // Alert,
10   - // Checkbox,
11   - // DatePicker,
12   - // Radio,
13   - // Switch,
14   - // Card,
15   - // List,
16   - // Tabs,
17   - // Descriptions,
18   - // Tree,
19   - // Table,
20   - // Divider,
21   - // Modal,
22   - // Drawer,
23   - // Dropdown,
24   - // Tag,
25   - // Tooltip,
26   - // Badge,
27   - // Popover,
28   - // Upload,
29   - // Transfer,
30   - // Steps,
31   - // PageHeader,
32   - // Result,
33   - // Empty,
34   - // Avatar,
35   - // Menu,
36   - // Breadcrumb,
37   - // Form,
38   - // Input,
39   - // Row,
40   - // Col,
41   - // Spin,
42 6 } from 'ant-design-vue';
43 7  
44 8 import { App } from 'vue';
... ... @@ -47,45 +11,6 @@ const compList = [Icon, Button, AntButton.Group];
47 11  
48 12 export function registerGlobComp(app: App) {
49 13 compList.forEach((comp: any) => {
50   - app.component(comp.name, comp);
  14 + app.component(comp.name || comp.displayName, comp);
51 15 });
52   -
53   - // Optional
54   - // If you need to customize global components, you can write here
55   - // If you don’t need it, you can delete it
56   - // app
57   - // .use(Select)
58   - // .use(Alert)
59   - // .use(Breadcrumb)
60   - // .use(Checkbox)
61   - // .use(DatePicker)
62   - // .use(Radio)
63   - // .use(Switch)
64   - // .use(Card)
65   - // .use(List)
66   - // .use(Descriptions)
67   - // .use(Tree)
68   - // .use(Table)
69   - // .use(Divider)
70   - // .use(Modal)
71   - // .use(Drawer)
72   - // .use(Dropdown)
73   - // .use(Tag)
74   - // .use(Tooltip)
75   - // .use(Badge)
76   - // .use(Popover)
77   - // .use(Upload)
78   - // .use(Transfer)
79   - // .use(Steps)
80   - // .use(PageHeader)
81   - // .use(Result)
82   - // .use(Empty)
83   - // .use(Avatar)
84   - // .use(Menu)
85   - // .use(Tabs)
86   - // .use(Form)
87   - // .use(Input)
88   - // .use(Row)
89   - // .use(Col)
90   - // .use(Spin);
91 16 }
... ...
src/components/types.ts deleted 100644 → 0
1   -import { defineComponent } from 'vue';
2   -
3   -export type Component<T extends any = any> =
4   - | ReturnType<typeof defineComponent>
5   - | (() => Promise<typeof import('*.vue')>)
6   - | (() => Promise<T>);
src/components/util.tsx deleted 100644 → 0
1   -import type { VNodeChild } from 'vue';
2   -
3   -export function convertToUnit(
4   - str: string | number | null | undefined,
5   - unit = 'px'
6   -): string | undefined {
7   - if (str == null || str === '') {
8   - return undefined;
9   - } else if (isNaN(+str!)) {
10   - return String(str);
11   - } else {
12   - return `${Number(str)}${unit}`;
13   - }
14   -}
15   -
16   -/**
17   - * Camelize a hyphen-delimited string.
18   - */
19   -const camelizeRE = /-(\w)/g;
20   -export const camelize = (str: string): string => {
21   - return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));
22   -};
23   -
24   -export function wrapInArray<T>(v: T | T[] | null | undefined): T[] {
25   - return v != null ? (Array.isArray(v) ? v : [v]) : [];
26   -}
27   -
28   -const pattern = {
29   - styleList: /;(?![^(]*\))/g,
30   - styleProp: /:(.*)/,
31   -} as const;
32   -
33   -function parseStyle(style: string) {
34   - const styleMap: Recordable = {};
35   -
36   - for (const s of style.split(pattern.styleList)) {
37   - let [key, val] = s.split(pattern.styleProp);
38   - key = key.trim();
39   - if (!key) {
40   - continue;
41   - }
42   - // May be undefined if the `key: value` pair is incomplete.
43   - if (typeof val === 'string') {
44   - val = val.trim();
45   - }
46   - styleMap[camelize(key)] = val;
47   - }
48   -
49   - return styleMap;
50   -}
51   -
52   -/**
53   - * Intelligently merges data for createElement.
54   - * Merges arguments left to right, preferring the right argument.
55   - * Returns new VNodeData object.
56   - */
57   -export function mergeData(...vNodeData: VNodeChild[]): VNodeChild;
58   -export function mergeData(...args: any[]): VNodeChild {
59   - const mergeTarget: any = {};
60   - let i: number = args.length;
61   - let prop: string;
62   -
63   - // Allow for variadic argument length.
64   - while (i--) {
65   - // Iterate through the data properties and execute merge strategies
66   - // Object.keys eliminates need for hasOwnProperty call
67   - for (prop of Object.keys(args[i])) {
68   - switch (prop) {
69   - // Array merge strategy (array concatenation)
70   - case 'class':
71   - case 'directives':
72   - if (args[i][prop]) {
73   - mergeTarget[prop] = mergeClasses(mergeTarget[prop], args[i][prop]);
74   - }
75   - break;
76   - case 'style':
77   - if (args[i][prop]) {
78   - mergeTarget[prop] = mergeStyles(mergeTarget[prop], args[i][prop]);
79   - }
80   - break;
81   - // Space delimited string concatenation strategy
82   - case 'staticClass':
83   - if (!args[i][prop]) {
84   - break;
85   - }
86   - if (mergeTarget[prop] === undefined) {
87   - mergeTarget[prop] = '';
88   - }
89   - if (mergeTarget[prop]) {
90   - // Not an empty string, so concatenate
91   - mergeTarget[prop] += ' ';
92   - }
93   - mergeTarget[prop] += args[i][prop].trim();
94   - break;
95   - // Object, the properties of which to merge via array merge strategy (array concatenation).
96   - // Callback merge strategy merges callbacks to the beginning of the array,
97   - // so that the last defined callback will be invoked first.
98   - // This is done since to mimic how Object.assign merging
99   - // uses the last given value to assign.
100   - case 'on':
101   - case 'nativeOn':
102   - if (args[i][prop]) {
103   - mergeTarget[prop] = mergeListeners(mergeTarget[prop], args[i][prop]);
104   - }
105   - break;
106   - // Object merge strategy
107   - case 'attrs':
108   - case 'props':
109   - case 'domProps':
110   - case 'scopedSlots':
111   - case 'staticStyle':
112   - case 'hook':
113   - case 'transition':
114   - if (!args[i][prop]) {
115   - break;
116   - }
117   - if (!mergeTarget[prop]) {
118   - mergeTarget[prop] = {};
119   - }
120   - mergeTarget[prop] = { ...args[i][prop], ...mergeTarget[prop] };
121   - break;
122   - // Reassignment strategy (no merge)
123   - default:
124   - // slot, key, ref, tag, show, keepAlive
125   - if (!mergeTarget[prop]) {
126   - mergeTarget[prop] = args[i][prop];
127   - }
128   - }
129   - }
130   - }
131   -
132   - return mergeTarget;
133   -}
134   -
135   -export function mergeStyles(
136   - target: undefined | string | object[] | object,
137   - source: undefined | string | object[] | object
138   -) {
139   - if (!target) return source;
140   - if (!source) return target;
141   -
142   - target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target);
143   -
144   - return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source);
145   -}
146   -
147   -export function mergeClasses(target: any, source: any) {
148   - if (!source) return target;
149   - if (!target) return source;
150   -
151   - return target ? wrapInArray(target).concat(source) : source;
152   -}
153   -
154   -export function mergeListeners(
155   - target: Indexable<Function | Function[]> | undefined,
156   - source: Indexable<Function | Function[]> | undefined
157   -) {
158   - if (!target) return source;
159   - if (!source) return target;
160   -
161   - let event: string;
162   -
163   - for (event of Object.keys(source)) {
164   - // Concat function to array of functions if callback present.
165   - if (target[event]) {
166   - // Insert current iteration data in beginning of merged array.
167   - target[event] = wrapInArray(target[event]);
168   - (target[event] as Function[]).push(...wrapInArray(source[event]));
169   - } else {
170   - // Straight assign.
171   - target[event] = source[event];
172   - }
173   - }
174   -
175   - return target;
176   -}
src/hooks/core/useDebouncedRef.ts deleted 100644 → 0
1   -import { customRef } from 'vue';
2   -
3   -export function useDebouncedRef<T = any>(value: T, delay = 100) {
4   - let timeout: TimeoutHandle;
5   - return customRef((track, trigger) => {
6   - return {
7   - get() {
8   - track();
9   - return value;
10   - },
11   - set(newValue: T) {
12   - clearTimeout(timeout);
13   - timeout = setTimeout(() => {
14   - value = newValue;
15   - trigger();
16   - }, delay);
17   - },
18   - };
19   - });
20   -}
src/hooks/core/useEffect.ts deleted 100644 → 0
1   -import { watch } from 'vue';
2   -import { isFunction } from '/@/utils/is';
3   -
4   -export function useEffect<T extends any = any>(
5   - effectHandler: (deps: T[], prevDeps?: T[]) => () => void,
6   - dependencies: T[]
7   -) {
8   - return watch(
9   - dependencies,
10   - (changedDependencies, prevDependencies, onCleanUp) => {
11   - const effectCleaner = effectHandler(changedDependencies, prevDependencies);
12   - if (isFunction(effectCleaner)) {
13   - onCleanUp(effectCleaner);
14   - }
15   - },
16   - { immediate: true, deep: true }
17   - );
18   -}
src/hooks/core/useState.ts deleted 100644 → 0
1   -import { isObject } from '@vue/shared';
2   -import { reactive, Ref, ref, readonly } from 'vue';
3   -import { isFunction } from '/@/utils/is';
4   -
5   -type State<T> = ((s: T) => T) | T;
6   -type Dispatch<T> = (t: T) => void;
7   -
8   -type DispatchState<T> = Dispatch<State<T>>;
9   -
10   -type ResultState<T> = Readonly<Ref<T>>;
11   -
12   -export function useState<T extends undefined>(
13   - initialState: (() => T) | T
14   -): [ResultState<T>, DispatchState<T>];
15   -
16   -export function useState<T extends null>(
17   - initialState: (() => T) | T
18   -): [ResultState<T>, DispatchState<T>];
19   -
20   -export function useState<T extends boolean>(
21   - initialState: (() => T) | T
22   -): [ResultState<boolean>, DispatchState<boolean>];
23   -
24   -export function useState<T extends string>(
25   - initialState: (() => T) | T
26   -): [ResultState<string>, DispatchState<string>];
27   -
28   -export function useState<T extends number>(
29   - initialState: (() => T) | T
30   -): [ResultState<number>, DispatchState<number>];
31   -
32   -export function useState<T extends object>(
33   - initialState: (() => T) | T
34   -): [Readonly<T>, DispatchState<T>];
35   -
36   -export function useState<T extends any>(
37   - initialState: (() => T) | T
38   -): [Readonly<T>, DispatchState<T>];
39   -
40   -export function useState<T>(initialState: (() => T) | T): [ResultState<T> | T, DispatchState<T>] {
41   - if (isFunction(initialState)) {
42   - initialState = (initialState as Fn)();
43   - }
44   -
45   - if (isObject(initialState)) {
46   - const state = reactive({ data: initialState }) as any;
47   - const setState = (newState: T) => {
48   - state.data = newState;
49   - };
50   - return [readonly(state), setState];
51   - } else {
52   - const state = ref(initialState) as any;
53   - const setState = (newState: T) => {
54   - state.value = newState;
55   - };
56   - return [readonly(state), setState];
57   - }
58   -}
src/layouts/iframe/index.vue
... ... @@ -21,9 +21,7 @@
21 21 setup() {
22 22 const { getFramePages, hasRenderFrame, showIframe } = useFrameKeepAlive();
23 23  
24   - const showFrame = computed(() => {
25   - return unref(getFramePages).length > 0;
26   - });
  24 + const showFrame = computed(() => unref(getFramePages).length > 0);
27 25  
28 26 return { getFramePages, hasRenderFrame, showIframe, showFrame };
29 27 },
... ...
src/layouts/iframe/useFrameKeepAlive.ts
... ... @@ -4,7 +4,7 @@ import { computed, toRaw, unref } from &#39;vue&#39;;
4 4  
5 5 import { tabStore } from '/@/store/modules/tab';
6 6  
7   -import { unique } from '/@/utils';
  7 +import { uniqBy } from 'lodash-es';
8 8  
9 9 import { useMultipleTabSetting } from '/@/hooks/setting/useMultipleTabSetting';
10 10  
... ... @@ -40,7 +40,7 @@ export function useFrameKeepAlive() {
40 40 res.push(...getAllFramePages(children));
41 41 }
42 42 }
43   - res = unique(res, 'name');
  43 + res = uniqBy(res, 'name');
44 44 return res;
45 45 }
46 46  
... ...
src/router/guard/permissionGuard.ts
... ... @@ -3,7 +3,7 @@ import type { Router, RouteRecordRaw } from &#39;vue-router&#39;;
3 3 import { permissionStore } from '/@/store/modules/permission';
4 4  
5 5 import { PageEnum } from '/@/enums/pageEnum';
6   -import { getToken } from '/@/utils/auth';
  6 +import { userStore } from '/@/store/modules/user';
7 7  
8 8 import { PAGE_NOT_FOUND_ROUTE } from '/@/router/constant';
9 9  
... ... @@ -25,7 +25,7 @@ export function createPermissionGuard(router: Router) {
25 25 return;
26 26 }
27 27  
28   - const token = getToken();
  28 + const token = userStore.getTokenState;
29 29  
30 30 // token does not exist
31 31 if (!token) {
... ...
src/router/types.ts
1 1 import type { RouteRecordRaw } from 'vue-router';
2 2 import { RoleEnum } from '/@/enums/roleEnum';
3 3  
4   -import type { Component } from '/@/components/types';
  4 +import { defineComponent } from 'vue';
  5 +
  6 +export type Component<T extends any = any> =
  7 + | ReturnType<typeof defineComponent>
  8 + | (() => Promise<typeof import('*.vue')>)
  9 + | (() => Promise<T>);
5 10  
6 11 export interface RouteMeta {
7 12 // title
... ...
src/types/shims-volar.d.ts deleted 100644 → 0
1   -import { RouterLink, RouterView } from 'vue-router';
2   -
3   -import { Button } from '/@/components/Button';
4   -import { Col, Row } from 'ant-design-vue';
5   -
6   -declare global {
7   - interface __VLS_GlobalComponents {
8   - RouterLink: typeof RouterLink;
9   - RouterView: typeof RouterView;
10   - 'a-button': typeof Button;
11   - 'a-col': typeof Col;
12   - 'a-row': typeof Row;
13   - }
14   -}
src/utils/auth/index.ts deleted 100644 → 0
1   -import { userStore } from '/@/store/modules/user';
2   -
3   -/**
4   - * @description: Get token
5   - * @return jwt token
6   - */
7   -export function getToken(): string {
8   - return userStore.getTokenState;
9   -}
src/utils/cache/cookie.ts deleted 100644 → 0
1   -import { DEFAULT_CACHE_TIME } from '../../settings/encryptionSetting';
2   -import { getStorageShortName } from '/@/utils/helper/envHelper';
3   -import { cacheCipher } from '/@/settings/encryptionSetting';
4   -import Encryption from '/@/utils/encryption/aesEncryption';
5   -
6   -export default class WebCookie {
7   - private encryption: Encryption;
8   - private hasEncrypt: boolean;
9   -
10   - constructor(hasEncrypt = true, key = cacheCipher.key, iv = cacheCipher.iv) {
11   - const encryption = new Encryption({ key, iv });
12   - this.encryption = encryption;
13   - this.hasEncrypt = hasEncrypt;
14   - }
15   -
16   - private getKey(key: string) {
17   - return `${getStorageShortName()}${key}`.toUpperCase();
18   - }
19   -
20   - /**
21   - * Add cookie
22   - * @param name cookie key
23   - * @param value cookie value
24   - * @param expire
25   - * If the expiration time is not set, the default management browser will automatically delete
26   - * e.g:
27   - * cookieData.set('name','value',)
28   - */
29   - setCookie(key: string, value: any, expire: number | null = DEFAULT_CACHE_TIME) {
30   - value = this.hasEncrypt ? this.encryption.encryptByAES(JSON.stringify(value)) : value;
31   - document.cookie = this.getKey(key) + '=' + value + '; Max-Age=' + expire;
32   - }
33   -
34   - /**
35   - * Get the cook value according to the key
36   - * @param key cookie key
37   - */
38   - getCookie(key: string) {
39   - const arr = document.cookie.split('; ');
40   - for (let i = 0; i < arr.length; i++) {
41   - const arr2 = arr[i].split('=');
42   - if (arr2[0] === this.getKey(key)) {
43   - let message: any = null;
44   - const str = arr2[1];
45   - if (this.hasEncrypt && str) {
46   - message = this.encryption.decryptByAES(str);
47   - try {
48   - return JSON.parse(message);
49   - } catch (e) {
50   - return str;
51   - }
52   - }
53   - return str;
54   - }
55   - }
56   - return '';
57   - }
58   -
59   - /**
60   - * Delete cookie based on cookie key
61   - * @param key cookie key
62   - */
63   - removeCookie(key: string) {
64   - this.setCookie(key, 1, -1);
65   - }
66   -
67   - /**
68   - * clear cookie
69   - */
70   - clearCookie(): void {
71   - const keys = document.cookie.match(/[^ =;]+(?==)/g);
72   - if (keys) {
73   - for (let i = keys.length; i--; ) {
74   - document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString();
75   - }
76   - }
77   - }
78   -}
src/utils/domUtils.ts
... ... @@ -73,13 +73,13 @@ export function removeClass(el: Element, cls: string) {
73 73 }
74 74 }
75 75 /**
76   - * 获取当前元素的left、top偏移
77   - * left:元素最左侧距离文档左侧的距离
78   - * top:元素最顶端距离文档顶端的距离
79   - * right:元素最右侧距离文档右侧的距离
80   - * bottom:元素最底端距离文档底端的距离
81   - * rightIncludeBody:元素最左侧距离文档右侧的距离
82   - * bottomIncludeBody:元素最底端距离文档最底部的距离
  76 + * Get the left and top offset of the current element
  77 + * left: the distance between the leftmost element and the left side of the document
  78 + * top: the distance from the top of the element to the top of the document
  79 + * right: the distance from the far right of the element to the right of the document
  80 + * bottom: the distance from the bottom of the element to the bottom of the document
  81 + * rightIncludeBody: the distance between the leftmost element and the right side of the document
  82 + * bottomIncludeBody: the distance from the bottom of the element to the bottom of the document
83 83 *
84 84 * @description:
85 85 */
... ...
src/utils/encryption/aesEncryption.ts
... ... @@ -14,7 +14,7 @@ export class Encryption {
14 14 this.iv = CryptoES.enc.Utf8.parse(iv);
15 15 }
16 16  
17   - get getOpt(): CryptoES.lib.CipherCfg {
  17 + get getOptions(): CryptoES.lib.CipherCfg {
18 18 return {
19 19 mode: CryptoES.mode.CBC as any,
20 20 padding: CryptoES.pad.Pkcs7,
... ... @@ -23,13 +23,11 @@ export class Encryption {
23 23 }
24 24  
25 25 encryptByAES(str: string) {
26   - const encrypted = CryptoES.AES.encrypt(str, this.key, this.getOpt);
27   - return encrypted.toString();
  26 + return CryptoES.AES.encrypt(str, this.key, this.getOptions).toString();
28 27 }
29 28  
30 29 decryptByAES(str: string) {
31   - const decrypted = CryptoES.AES.decrypt(str, this.key, this.getOpt);
32   - return decrypted.toString(CryptoES.enc.Utf8);
  30 + return CryptoES.AES.decrypt(str, this.key, this.getOptions).toString(CryptoES.enc.Utf8);
33 31 }
34 32 }
35 33 export default Encryption;
... ...
src/utils/http/axios/index.ts
... ... @@ -4,7 +4,6 @@
4 4 import type { AxiosResponse } from 'axios';
5 5 import type { CreateAxiosOptions, RequestOptions, Result } from './types';
6 6 import { VAxios } from './Axios';
7   -import { getToken } from '/@/utils/auth';
8 7 import { AxiosTransform } from './axiosTransform';
9 8  
10 9 import { checkStatus } from './checkStatus';
... ... @@ -20,6 +19,7 @@ import { errorStore } from &#39;/@/store/modules/error&#39;;
20 19 import { errorResult } from './const';
21 20 import { useI18n } from '/@/hooks/web/useI18n';
22 21 import { createNow, formatRequestDate } from './helper';
  22 +import { userStore } from '/@/store/modules/user';
23 23  
24 24 const globSetting = useGlobSetting();
25 25 const prefix = globSetting.urlPrefix;
... ... @@ -137,7 +137,7 @@ const transform: AxiosTransform = {
137 137 */
138 138 requestInterceptors: (config) => {
139 139 // 请求之前处理config
140   - const token = getToken();
  140 + const token = userStore.getTokenState;
141 141 if (token) {
142 142 // jwt token
143 143 config.headers.Authorization = token;
... ...
src/utils/index.ts
... ... @@ -38,24 +38,6 @@ export function deepMerge&lt;T = any&gt;(src: any = {}, target: any = {}): T {
38 38 return src;
39 39 }
40 40  
41   -/**
42   - * @description: Deduplication according to the value of an object in the array
43   - */
44   -export function unique<T = any>(arr: T[], key: string): T[] {
45   - const map = new Map();
46   - return arr.filter((item) => {
47   - const _item = item as any;
48   - return !map.has(_item[key]) && map.set(_item[key], 1);
49   - });
50   -}
51   -
52   -/**
53   - * @description: es6 array to repeat
54   - */
55   -export function es6Unique<T>(arr: T[]): T[] {
56   - return Array.from(new Set(arr));
57   -}
58   -
59 41 export function openWindow(
60 42 url: string,
61 43 opt?: { target?: TargetContext | string; noopener?: boolean; noreferrer?: boolean }
... ... @@ -80,20 +62,6 @@ export function getDynamicProps&lt;T, U&gt;(props: T): Partial&lt;U&gt; {
80 62 return ret as Partial<U>;
81 63 }
82 64  
83   -export function getLastItem<T extends any>(list: T) {
84   - if (Array.isArray(list)) {
85   - return list.slice(-1)[0];
86   - }
87   -
88   - if (list instanceof Set) {
89   - return Array.from(list).slice(-1)[0];
90   - }
91   -
92   - if (list instanceof Map) {
93   - return Array.from(list.values()).slice(-1)[0];
94   - }
95   -}
96   -
97 65 /**
98 66 * set page Title
99 67 * @param {*} title :page Title
... ...