From e2c7ea8a74240adb92b8ca5adfe244f1f280406e Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 11:50:47 +0800
Subject: [PATCH 01/10] feat: add auto imports

---
 .../.eslintrc-auto-import.json                | 259 +++++++++++++++++
 yudao-ui-admin-vue3/.eslintrc.js              |   3 +-
 yudao-ui-admin-vue3/build/vite/index.ts       |  27 ++
 yudao-ui-admin-vue3/package.json              |   4 +-
 yudao-ui-admin-vue3/pnpm-lock.yaml            | 135 ++++++++-
 .../src/types/auto-components.d.ts            |  55 ++++
 .../src/types/auto-imports.d.ts               | 267 ++++++++++++++++++
 yudao-ui-admin-vue3/tsconfig.json             |   7 +-
 8 files changed, 748 insertions(+), 9 deletions(-)
 create mode 100644 yudao-ui-admin-vue3/.eslintrc-auto-import.json
 create mode 100644 yudao-ui-admin-vue3/src/types/auto-components.d.ts
 create mode 100644 yudao-ui-admin-vue3/src/types/auto-imports.d.ts

diff --git a/yudao-ui-admin-vue3/.eslintrc-auto-import.json b/yudao-ui-admin-vue3/.eslintrc-auto-import.json
new file mode 100644
index 000000000..024c96a33
--- /dev/null
+++ b/yudao-ui-admin-vue3/.eslintrc-auto-import.json
@@ -0,0 +1,259 @@
+{
+  "globals": {
+    "EffectScope": true,
+    "ElMessage": true,
+    "ElMessageBox": true,
+    "ElTag": true,
+    "asyncComputed": true,
+    "autoResetRef": true,
+    "computed": true,
+    "computedAsync": true,
+    "computedEager": true,
+    "computedInject": true,
+    "computedWithControl": true,
+    "controlledComputed": true,
+    "controlledRef": true,
+    "createApp": true,
+    "createEventHook": true,
+    "createGlobalState": true,
+    "createInjectionState": true,
+    "createReactiveFn": true,
+    "createSharedComposable": true,
+    "createUnrefFn": true,
+    "customRef": true,
+    "debouncedRef": true,
+    "debouncedWatch": true,
+    "defineAsyncComponent": true,
+    "defineComponent": true,
+    "eagerComputed": true,
+    "effectScope": true,
+    "extendRef": true,
+    "getCurrentInstance": true,
+    "getCurrentScope": true,
+    "h": true,
+    "ignorableWatch": true,
+    "inject": true,
+    "isDefined": true,
+    "isProxy": true,
+    "isReactive": true,
+    "isReadonly": true,
+    "isRef": true,
+    "makeDestructurable": true,
+    "markRaw": true,
+    "nextTick": true,
+    "onActivated": true,
+    "onBeforeMount": true,
+    "onBeforeUnmount": true,
+    "onBeforeUpdate": true,
+    "onClickOutside": true,
+    "onDeactivated": true,
+    "onErrorCaptured": true,
+    "onKeyStroke": true,
+    "onLongPress": true,
+    "onMounted": true,
+    "onRenderTracked": true,
+    "onRenderTriggered": true,
+    "onScopeDispose": true,
+    "onServerPrefetch": true,
+    "onStartTyping": true,
+    "onUnmounted": true,
+    "onUpdated": true,
+    "pausableWatch": true,
+    "provide": true,
+    "reactify": true,
+    "reactifyObject": true,
+    "reactive": true,
+    "reactiveComputed": true,
+    "reactiveOmit": true,
+    "reactivePick": true,
+    "readonly": true,
+    "ref": true,
+    "refAutoReset": true,
+    "refDebounced": true,
+    "refDefault": true,
+    "refThrottled": true,
+    "refWithControl": true,
+    "resolveComponent": true,
+    "resolveRef": true,
+    "resolveUnref": true,
+    "shallowReactive": true,
+    "shallowReadonly": true,
+    "shallowRef": true,
+    "syncRef": true,
+    "syncRefs": true,
+    "templateRef": true,
+    "throttledRef": true,
+    "throttledWatch": true,
+    "toRaw": true,
+    "toReactive": true,
+    "toRef": true,
+    "toRefs": true,
+    "triggerRef": true,
+    "tryOnBeforeMount": true,
+    "tryOnBeforeUnmount": true,
+    "tryOnMounted": true,
+    "tryOnScopeDispose": true,
+    "tryOnUnmounted": true,
+    "unref": true,
+    "unrefElement": true,
+    "until": true,
+    "useActiveElement": true,
+    "useArrayEvery": true,
+    "useArrayFilter": true,
+    "useArrayFind": true,
+    "useArrayFindIndex": true,
+    "useArrayJoin": true,
+    "useArrayMap": true,
+    "useArrayReduce": true,
+    "useArraySome": true,
+    "useAsyncQueue": true,
+    "useAsyncState": true,
+    "useAttrs": true,
+    "useBase64": true,
+    "useBattery": true,
+    "useBluetooth": true,
+    "useBreakpoints": true,
+    "useBroadcastChannel": true,
+    "useBrowserLocation": true,
+    "useCached": true,
+    "useClipboard": true,
+    "useColorMode": true,
+    "useConfirmDialog": true,
+    "useCounter": true,
+    "useCssModule": true,
+    "useCssVar": true,
+    "useCssVars": true,
+    "useCurrentElement": true,
+    "useCycleList": true,
+    "useDark": true,
+    "useDateFormat": true,
+    "useDebounce": true,
+    "useDebounceFn": true,
+    "useDebouncedRefHistory": true,
+    "useDeviceMotion": true,
+    "useDeviceOrientation": true,
+    "useDevicePixelRatio": true,
+    "useDevicesList": true,
+    "useDisplayMedia": true,
+    "useDocumentVisibility": true,
+    "useDraggable": true,
+    "useDropZone": true,
+    "useElementBounding": true,
+    "useElementByPoint": true,
+    "useElementHover": true,
+    "useElementSize": true,
+    "useElementVisibility": true,
+    "useEventBus": true,
+    "useEventListener": true,
+    "useEventSource": true,
+    "useEyeDropper": true,
+    "useFavicon": true,
+    "useFetch": true,
+    "useFileDialog": true,
+    "useFileSystemAccess": true,
+    "useFocus": true,
+    "useFocusWithin": true,
+    "useFps": true,
+    "useFullscreen": true,
+    "useGamepad": true,
+    "useGeolocation": true,
+    "useIdle": true,
+    "useImage": true,
+    "useInfiniteScroll": true,
+    "useIntersectionObserver": true,
+    "useInterval": true,
+    "useIntervalFn": true,
+    "useKeyModifier": true,
+    "useLastChanged": true,
+    "useLocalStorage": true,
+    "useMagicKeys": true,
+    "useManualRefHistory": true,
+    "useMediaControls": true,
+    "useMediaQuery": true,
+    "useMemoize": true,
+    "useMemory": true,
+    "useMounted": true,
+    "useMouse": true,
+    "useMouseInElement": true,
+    "useMousePressed": true,
+    "useMutationObserver": true,
+    "useNavigatorLanguage": true,
+    "useNetwork": true,
+    "useNow": true,
+    "useObjectUrl": true,
+    "useOffsetPagination": true,
+    "useOnline": true,
+    "usePageLeave": true,
+    "useParallax": true,
+    "usePermission": true,
+    "usePointer": true,
+    "usePointerSwipe": true,
+    "usePreferredColorScheme": true,
+    "usePreferredDark": true,
+    "usePreferredLanguages": true,
+    "useRafFn": true,
+    "useRefHistory": true,
+    "useResizeObserver": true,
+    "useRoute": true,
+    "useRouter": true,
+    "useScreenOrientation": true,
+    "useScreenSafeArea": true,
+    "useScriptTag": true,
+    "useScroll": true,
+    "useScrollLock": true,
+    "useSessionStorage": true,
+    "useShare": true,
+    "useSlots": true,
+    "useSpeechRecognition": true,
+    "useSpeechSynthesis": true,
+    "useStepper": true,
+    "useStorage": true,
+    "useStorageAsync": true,
+    "useStyleTag": true,
+    "useSupported": true,
+    "useSwipe": true,
+    "useTemplateRefsList": true,
+    "useTextDirection": true,
+    "useTextSelection": true,
+    "useTextareaAutosize": true,
+    "useThrottle": true,
+    "useThrottleFn": true,
+    "useThrottledRefHistory": true,
+    "useTimeAgo": true,
+    "useTimeout": true,
+    "useTimeoutFn": true,
+    "useTimeoutPoll": true,
+    "useTimestamp": true,
+    "useTitle": true,
+    "useToggle": true,
+    "useTransition": true,
+    "useUrlSearchParams": true,
+    "useUserMedia": true,
+    "useVModel": true,
+    "useVModels": true,
+    "useVibrate": true,
+    "useVirtualList": true,
+    "useWakeLock": true,
+    "useWebNotification": true,
+    "useWebSocket": true,
+    "useWebWorker": true,
+    "useWebWorkerFn": true,
+    "useWindowFocus": true,
+    "useWindowScroll": true,
+    "useWindowSize": true,
+    "watch": true,
+    "watchArray": true,
+    "watchAtMost": true,
+    "watchDebounced": true,
+    "watchEffect": true,
+    "watchIgnorable": true,
+    "watchOnce": true,
+    "watchPausable": true,
+    "watchPostEffect": true,
+    "watchSyncEffect": true,
+    "watchThrottled": true,
+    "watchTriggerable": true,
+    "watchWithFilter": true,
+    "whenever": true
+  }
+}
diff --git a/yudao-ui-admin-vue3/.eslintrc.js b/yudao-ui-admin-vue3/.eslintrc.js
index d68a39ea6..244dbbbff 100644
--- a/yudao-ui-admin-vue3/.eslintrc.js
+++ b/yudao-ui-admin-vue3/.eslintrc.js
@@ -21,7 +21,8 @@ module.exports = defineConfig({
     'plugin:vue/vue3-recommended',
     'plugin:@typescript-eslint/recommended',
     'prettier',
-    'plugin:prettier/recommended'
+    'plugin:prettier/recommended',
+    './.eslintrc-auto-import.json'
   ],
   rules: {
     'vue/script-setup-uses-vars': 'error',
diff --git a/yudao-ui-admin-vue3/build/vite/index.ts b/yudao-ui-admin-vue3/build/vite/index.ts
index 53da870f1..10687978e 100644
--- a/yudao-ui-admin-vue3/build/vite/index.ts
+++ b/yudao-ui-admin-vue3/build/vite/index.ts
@@ -6,6 +6,9 @@ import progress from 'vite-plugin-progress'
 import EslintPlugin from 'vite-plugin-eslint'
 import PurgeIcons from 'vite-plugin-purge-icons'
 import { ViteEjsPlugin } from 'vite-plugin-ejs'
+import AutoImport from 'unplugin-auto-import/vite'
+import Components from 'unplugin-vue-components/vite'
+import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
 import viteCompression from 'vite-plugin-compression'
 import vueSetupExtend from 'vite-plugin-vue-setup-extend'
 import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
@@ -28,6 +31,30 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
     progress(),
     PurgeIcons(),
     vueSetupExtend(),
+    AutoImport({
+      imports: ['vue', 'vue-router', '@vueuse/core'],
+      dts: 'src/types/auto-imports.d.ts',
+      resolvers: [ElementPlusResolver()],
+      eslintrc: {
+        enabled: false, // Default `false`
+        filepath: './.eslintrc-auto-import.json', // Default `./.eslintrc-auto-import.json`
+        globalsPropValue: true // Default `true`, (true | false | 'readonly' | 'readable' | 'writable' | 'writeable')
+      }
+    }),
+    Components({
+      // 要搜索组件的目录的相对路径
+      dirs: ['src/components'],
+      // 组件的有效文件扩展名
+      extensions: ['vue', 'md'],
+      // 搜索子目录
+      deep: true,
+      include: [/\.vue$/, /\.vue\?vue/],
+      // 生成自定义 `auto-components.d.ts` 全局声明
+      dts: 'src/types/auto-components.d.ts',
+      // 自定义组件的解析器
+      resolvers: [ElementPlusResolver()],
+      exclude: [/[\\/]node_modules[\\/]/]
+    }),
     createStyleImportPlugin({
       resolves: [ElementPlusResolve(), VxeTableResolve()],
       libs: [
diff --git a/yudao-ui-admin-vue3/package.json b/yudao-ui-admin-vue3/package.json
index 795cda586..b5528eea1 100644
--- a/yudao-ui-admin-vue3/package.json
+++ b/yudao-ui-admin-vue3/package.json
@@ -1,6 +1,6 @@
 {
   "name": "yudao-ui-admin-vue3",
-  "version": "1.6.6-snapshot.1922",
+  "version": "1.6.6-snapshot.1923",
   "description": "基于vue3、vite4、element-plus、typesScript",
   "author": "xingyu",
   "private": false,
@@ -94,6 +94,8 @@
     "stylelint-order": "^6.0.1",
     "terser": "^5.16.1",
     "typescript": "4.9.4",
+    "unplugin-auto-import": "^0.12.1",
+    "unplugin-vue-components": "^0.22.12",
     "vite": "4.0.4",
     "vite-plugin-compression": "^0.5.1",
     "vite-plugin-ejs": "^1.6.4",
diff --git a/yudao-ui-admin-vue3/pnpm-lock.yaml b/yudao-ui-admin-vue3/pnpm-lock.yaml
index caf8e4497..cfec2b595 100644
--- a/yudao-ui-admin-vue3/pnpm-lock.yaml
+++ b/yudao-ui-admin-vue3/pnpm-lock.yaml
@@ -61,6 +61,8 @@ specifiers:
   stylelint-order: ^6.0.1
   terser: ^5.16.1
   typescript: 4.9.4
+  unplugin-auto-import: ^0.12.1
+  unplugin-vue-components: ^0.22.12
   url: ^0.11.0
   vite: 4.0.4
   vite-plugin-compression: ^0.5.1
@@ -153,6 +155,8 @@ devDependencies:
   stylelint-order: 6.0.1_stylelint@14.16.1
   terser: 5.16.1
   typescript: 4.9.4
+  unplugin-auto-import: 0.12.1_gyxbveewukbcvt3zzy7ycqctbe
+  unplugin-vue-components: 0.22.12_rollup@3.10.0+vue@3.2.45
   vite: 4.0.4_zxbrnrc4iyldik6mikh3pswz4i
   vite-plugin-compression: 0.5.1_vite@4.0.4
   vite-plugin-ejs: 1.6.4
@@ -177,7 +181,7 @@ packages:
     dev: true
 
   /@antfu/utils/0.7.2:
-    resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/@antfu/utils/-/utils-0.7.2.tgz}
+    resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==}
     dev: true
 
   /@babel/code-frame/7.18.6:
@@ -1171,6 +1175,21 @@ packages:
       picomatch: 2.3.1
     dev: true
 
+  /@rollup/pluginutils/5.0.2_rollup@3.10.0:
+    resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
+    engines: {node: '>=14.0.0'}
+    peerDependencies:
+      rollup: ^1.20.0||^2.0.0||^3.0.0
+    peerDependenciesMeta:
+      rollup:
+        optional: true
+    dependencies:
+      '@types/estree': 1.0.0
+      estree-walker: 2.0.2
+      picomatch: 2.3.1
+      rollup: 3.10.0
+    dev: true
+
   /@sxzz/popperjs-es/2.11.7:
     resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
     dev: false
@@ -1277,7 +1296,6 @@ packages:
 
   /@types/web-bluetooth/0.0.16:
     resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
-    dev: false
 
   /@typescript-eslint/eslint-plugin/5.48.2_caon6io6stgpr7lz2rtbhekxqy:
     resolution: {integrity: sha512-sR0Gja9Ky1teIq4qJOl0nC+Tk64/uYdX+mi+5iB//MH8gwyx8e3SOyhEzeLZEFEEfCaLf8KJq+Bd/6je1t+CAg==}
@@ -1638,11 +1656,9 @@ packages:
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
-    dev: false
 
   /@vueuse/metadata/9.10.0:
     resolution: {integrity: sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==}
-    dev: false
 
   /@vueuse/shared/9.10.0_vue@3.2.45:
     resolution: {integrity: sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==}
@@ -1651,7 +1667,6 @@ packages:
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
-    dev: false
 
   /@wangeditor/basic-modules/1.1.7_j7icpicfeimtkldwmemjnpdjs4:
     resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==}
@@ -2998,6 +3013,11 @@ packages:
     engines: {node: '>=10'}
     dev: true
 
+  /escape-string-regexp/5.0.0:
+    resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+    engines: {node: '>=12'}
+    dev: true
+
   /eslint-config-prettier/8.6.0_eslint@8.32.0:
     resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==}
     hasBin: true
@@ -4047,6 +4067,10 @@ packages:
       semver: 6.3.0
     dev: true
 
+  /jsonc-parser/3.2.0:
+    resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
+    dev: true
+
   /jsonfile/6.1.0:
     resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
     dependencies:
@@ -4160,6 +4184,11 @@ packages:
       json5: 1.0.1
     dev: true
 
+  /local-pkg/0.4.2:
+    resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==}
+    engines: {node: '>=14'}
+    dev: true
+
   /locate-path/5.0.0:
     resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
     engines: {node: '>=8'}
@@ -4483,6 +4512,15 @@ packages:
       is-extendable: 1.0.1
     dev: true
 
+  /mlly/1.1.0:
+    resolution: {integrity: sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==}
+    dependencies:
+      acorn: 8.8.1
+      pathe: 1.0.0
+      pkg-types: 1.0.1
+      ufo: 1.0.1
+    dev: true
+
   /ms/2.0.0:
     resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
     dev: true
@@ -4826,6 +4864,14 @@ packages:
       vue-demi: 0.13.11_vue@3.2.45
     dev: false
 
+  /pkg-types/1.0.1:
+    resolution: {integrity: sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==}
+    dependencies:
+      jsonc-parser: 3.2.0
+      mlly: 1.1.0
+      pathe: 1.0.0
+    dev: true
+
   /pngjs/5.0.0:
     resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
     engines: {node: '>=10.13.0'}
@@ -5263,6 +5309,10 @@ packages:
       compute-scroll-into-view: 1.0.17
     dev: false
 
+  /scule/1.0.0:
+    resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==}
+    dev: true
+
   /semver/5.7.1:
     resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
     hasBin: true
@@ -5586,6 +5636,12 @@ packages:
     engines: {node: '>=8'}
     dev: true
 
+  /strip-literal/1.0.0:
+    resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==}
+    dependencies:
+      acorn: 8.8.1
+    dev: true
+
   /style-search/0.1.0:
     resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
     dev: true
@@ -5958,6 +6014,28 @@ packages:
     engines: {node: '>=4.2.0'}
     hasBin: true
 
+  /ufo/1.0.1:
+    resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==}
+    dev: true
+
+  /unimport/1.2.0_rollup@3.10.0:
+    resolution: {integrity: sha512-yMok/ubppurBE7Png1QH70Om96AxIoWCcfdxW3J/pziozShMc1UGpPgWpSckfo9ndAO5M74yNnRDdLAZy/gWQg==}
+    dependencies:
+      '@rollup/pluginutils': 5.0.2_rollup@3.10.0
+      escape-string-regexp: 5.0.0
+      fast-glob: 3.2.12
+      local-pkg: 0.4.2
+      magic-string: 0.27.0
+      mlly: 1.1.0
+      pathe: 1.0.0
+      pkg-types: 1.0.1
+      scule: 1.0.0
+      strip-literal: 1.0.0
+      unplugin: 1.0.1
+    transitivePeerDependencies:
+      - rollup
+    dev: true
+
   /union-value/1.0.1:
     resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
     engines: {node: '>=0.10.0'}
@@ -5973,6 +6051,52 @@ packages:
     engines: {node: '>= 10.0.0'}
     dev: true
 
+  /unplugin-auto-import/0.12.1_gyxbveewukbcvt3zzy7ycqctbe:
+    resolution: {integrity: sha512-J/3ZORq5YGKG+8D5vLLOgqaHNK77izlVN07mQ752yRLqBNDbJiwPRSnUwwYqH5N6rDay1SqnJCHaUdbJ9QMI2w==}
+    engines: {node: '>=14'}
+    peerDependencies:
+      '@vueuse/core': '*'
+    peerDependenciesMeta:
+      '@vueuse/core':
+        optional: true
+    dependencies:
+      '@antfu/utils': 0.7.2
+      '@rollup/pluginutils': 5.0.2_rollup@3.10.0
+      '@vueuse/core': 9.10.0_vue@3.2.45
+      local-pkg: 0.4.2
+      magic-string: 0.27.0
+      unimport: 1.2.0_rollup@3.10.0
+      unplugin: 1.0.1
+    transitivePeerDependencies:
+      - rollup
+    dev: true
+
+  /unplugin-vue-components/0.22.12_rollup@3.10.0+vue@3.2.45:
+    resolution: {integrity: sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==}
+    engines: {node: '>=14'}
+    peerDependencies:
+      '@babel/parser': ^7.15.8
+      vue: 2 || 3
+    peerDependenciesMeta:
+      '@babel/parser':
+        optional: true
+    dependencies:
+      '@antfu/utils': 0.7.2
+      '@rollup/pluginutils': 5.0.2_rollup@3.10.0
+      chokidar: 3.5.3
+      debug: 4.3.4
+      fast-glob: 3.2.12
+      local-pkg: 0.4.2
+      magic-string: 0.27.0
+      minimatch: 5.1.2
+      resolve: 1.22.1
+      unplugin: 1.0.1
+      vue: 3.2.45
+    transitivePeerDependencies:
+      - rollup
+      - supports-color
+    dev: true
+
   /unplugin/1.0.1:
     resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==}
     dependencies:
@@ -6225,7 +6349,6 @@ packages:
         optional: true
     dependencies:
       vue: 3.2.45
-    dev: false
 
   /vue-eslint-parser/9.1.0_eslint@8.32.0:
     resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==}
diff --git a/yudao-ui-admin-vue3/src/types/auto-components.d.ts b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
new file mode 100644
index 000000000..c298c5d47
--- /dev/null
+++ b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
@@ -0,0 +1,55 @@
+// generated by unplugin-vue-components
+// We suggest you to commit this file into source control
+// Read more: https://github.com/vuejs/core/pull/3399
+import '@vue/runtime-core'
+
+export {}
+
+declare module '@vue/runtime-core' {
+  export interface GlobalComponents {
+    Backtop: typeof import('./../components/Backtop/src/Backtop.vue')['default']
+    ConfigGlobal: typeof import('./../components/ConfigGlobal/src/ConfigGlobal.vue')['default']
+    ContentDetailWrap: typeof import('./../components/ContentDetailWrap/src/ContentDetailWrap.vue')['default']
+    ContentWrap: typeof import('./../components/ContentWrap/src/ContentWrap.vue')['default']
+    CopperModal: typeof import('./../components/Cropper/src/CopperModal.vue')['default']
+    CountTo: typeof import('./../components/CountTo/src/CountTo.vue')['default']
+    Crontab: typeof import('./../components/Crontab/src/Crontab.vue')['default']
+    Cropper: typeof import('./../components/Cropper/src/Cropper.vue')['default']
+    CropperAvatar: typeof import('./../components/Cropper/src/CropperAvatar.vue')['default']
+    Descriptions: typeof import('./../components/Descriptions/src/Descriptions.vue')['default']
+    Dialog: typeof import('./../components/Dialog/src/Dialog.vue')['default']
+    DictTag: typeof import('./../components/DictTag/src/DictTag.vue')['default']
+    Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
+    Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
+    ElButton: typeof import('element-plus/es')['ElButton']
+    Error: typeof import('./../components/Error/src/Error.vue')['default']
+    Form: typeof import('./../components/Form/src/Form.vue')['default']
+    Highlight: typeof import('./../components/Highlight/src/Highlight.vue')['default']
+    Icon: typeof import('./../components/Icon/src/Icon.vue')['default']
+    IconSelect: typeof import('./../components/Icon/src/IconSelect.vue')['default']
+    IFrame: typeof import('./../components/IFrame/src/IFrame.vue')['default']
+    ImageViewer: typeof import('./../components/ImageViewer/src/ImageViewer.vue')['default']
+    Infotip: typeof import('./../components/Infotip/src/Infotip.vue')['default']
+    InputPassword: typeof import('./../components/InputPassword/src/InputPassword.vue')['default']
+    Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default']
+    RouterLink: typeof import('vue-router')['RouterLink']
+    RouterView: typeof import('vue-router')['RouterView']
+    Search: typeof import('./../components/Search/src/Search.vue')['default']
+    Sticky: typeof import('./../components/Sticky/src/Sticky.vue')['default']
+    Table: typeof import('./../components/Table/src/Table.vue')['default']
+    Tooltip: typeof import('./../components/Tooltip/src/Tooltip.vue')['default']
+    UploadFile: typeof import('./../components/UploadFile/src/UploadFile.vue')['default']
+    UploadImg: typeof import('./../components/UploadFile/src/UploadImg.vue')['default']
+    UploadImgs: typeof import('./../components/UploadFile/src/UploadImgs.vue')['default']
+    Verify: typeof import('./../components/Verifition/src/Verify.vue')['default']
+    VerifyPoints: typeof import('./../components/Verifition/src/Verify/VerifyPoints.vue')['default']
+    VerifySlide: typeof import('./../components/Verifition/src/Verify/VerifySlide.vue')['default']
+    XButton: typeof import('./../components/XButton/src/XButton.vue')['default']
+    XModal: typeof import('./../components/XModal/src/XModal.vue')['default']
+    XTable: typeof import('./../components/XTable/src/XTable.vue')['default']
+    XTextButton: typeof import('./../components/XButton/src/XTextButton.vue')['default']
+  }
+  export interface ComponentCustomProperties {
+    vLoading: typeof import('element-plus/es')['ElLoadingDirective']
+  }
+}
diff --git a/yudao-ui-admin-vue3/src/types/auto-imports.d.ts b/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
new file mode 100644
index 000000000..66af6974a
--- /dev/null
+++ b/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
@@ -0,0 +1,267 @@
+// Generated by 'unplugin-auto-import'
+export {}
+declare global {
+  const EffectScope: typeof import('vue')['EffectScope']
+  const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
+  const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
+  const computed: typeof import('vue')['computed']
+  const computedAsync: typeof import('@vueuse/core')['computedAsync']
+  const computedEager: typeof import('@vueuse/core')['computedEager']
+  const computedInject: typeof import('@vueuse/core')['computedInject']
+  const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
+  const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
+  const controlledRef: typeof import('@vueuse/core')['controlledRef']
+  const createApp: typeof import('vue')['createApp']
+  const createEventHook: typeof import('@vueuse/core')['createEventHook']
+  const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
+  const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
+  const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
+  const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
+  const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
+  const customRef: typeof import('vue')['customRef']
+  const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
+  const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
+  const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
+  const defineComponent: typeof import('vue')['defineComponent']
+  const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
+  const effectScope: typeof import('vue')['effectScope']
+  const extendRef: typeof import('@vueuse/core')['extendRef']
+  const getCurrentInstance: typeof import('vue')['getCurrentInstance']
+  const getCurrentScope: typeof import('vue')['getCurrentScope']
+  const h: typeof import('vue')['h']
+  const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
+  const inject: typeof import('vue')['inject']
+  const isDefined: typeof import('@vueuse/core')['isDefined']
+  const isProxy: typeof import('vue')['isProxy']
+  const isReactive: typeof import('vue')['isReactive']
+  const isReadonly: typeof import('vue')['isReadonly']
+  const isRef: typeof import('vue')['isRef']
+  const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
+  const markRaw: typeof import('vue')['markRaw']
+  const nextTick: typeof import('vue')['nextTick']
+  const onActivated: typeof import('vue')['onActivated']
+  const onBeforeMount: typeof import('vue')['onBeforeMount']
+  const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
+  const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
+  const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
+  const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
+  const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
+  const onDeactivated: typeof import('vue')['onDeactivated']
+  const onErrorCaptured: typeof import('vue')['onErrorCaptured']
+  const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
+  const onLongPress: typeof import('@vueuse/core')['onLongPress']
+  const onMounted: typeof import('vue')['onMounted']
+  const onRenderTracked: typeof import('vue')['onRenderTracked']
+  const onRenderTriggered: typeof import('vue')['onRenderTriggered']
+  const onScopeDispose: typeof import('vue')['onScopeDispose']
+  const onServerPrefetch: typeof import('vue')['onServerPrefetch']
+  const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
+  const onUnmounted: typeof import('vue')['onUnmounted']
+  const onUpdated: typeof import('vue')['onUpdated']
+  const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
+  const provide: typeof import('vue')['provide']
+  const reactify: typeof import('@vueuse/core')['reactify']
+  const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
+  const reactive: typeof import('vue')['reactive']
+  const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
+  const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
+  const reactivePick: typeof import('@vueuse/core')['reactivePick']
+  const readonly: typeof import('vue')['readonly']
+  const ref: typeof import('vue')['ref']
+  const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
+  const refDebounced: typeof import('@vueuse/core')['refDebounced']
+  const refDefault: typeof import('@vueuse/core')['refDefault']
+  const refThrottled: typeof import('@vueuse/core')['refThrottled']
+  const refWithControl: typeof import('@vueuse/core')['refWithControl']
+  const resolveComponent: typeof import('vue')['resolveComponent']
+  const resolveDirective: typeof import('vue')['resolveDirective']
+  const resolveRef: typeof import('@vueuse/core')['resolveRef']
+  const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
+  const shallowReactive: typeof import('vue')['shallowReactive']
+  const shallowReadonly: typeof import('vue')['shallowReadonly']
+  const shallowRef: typeof import('vue')['shallowRef']
+  const syncRef: typeof import('@vueuse/core')['syncRef']
+  const syncRefs: typeof import('@vueuse/core')['syncRefs']
+  const templateRef: typeof import('@vueuse/core')['templateRef']
+  const throttledRef: typeof import('@vueuse/core')['throttledRef']
+  const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
+  const toRaw: typeof import('vue')['toRaw']
+  const toReactive: typeof import('@vueuse/core')['toReactive']
+  const toRef: typeof import('vue')['toRef']
+  const toRefs: typeof import('vue')['toRefs']
+  const triggerRef: typeof import('vue')['triggerRef']
+  const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
+  const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
+  const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
+  const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
+  const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
+  const unref: typeof import('vue')['unref']
+  const unrefElement: typeof import('@vueuse/core')['unrefElement']
+  const until: typeof import('@vueuse/core')['until']
+  const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
+  const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
+  const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
+  const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
+  const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
+  const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
+  const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
+  const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
+  const useArraySome: typeof import('@vueuse/core')['useArraySome']
+  const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
+  const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
+  const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
+  const useAttrs: typeof import('vue')['useAttrs']
+  const useBase64: typeof import('@vueuse/core')['useBase64']
+  const useBattery: typeof import('@vueuse/core')['useBattery']
+  const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
+  const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
+  const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
+  const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
+  const useCached: typeof import('@vueuse/core')['useCached']
+  const useClipboard: typeof import('@vueuse/core')['useClipboard']
+  const useCloned: typeof import('@vueuse/core')['useCloned']
+  const useColorMode: typeof import('@vueuse/core')['useColorMode']
+  const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
+  const useCounter: typeof import('@vueuse/core')['useCounter']
+  const useCssModule: typeof import('vue')['useCssModule']
+  const useCssVar: typeof import('@vueuse/core')['useCssVar']
+  const useCssVars: typeof import('vue')['useCssVars']
+  const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
+  const useCycleList: typeof import('@vueuse/core')['useCycleList']
+  const useDark: typeof import('@vueuse/core')['useDark']
+  const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
+  const useDebounce: typeof import('@vueuse/core')['useDebounce']
+  const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
+  const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
+  const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
+  const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
+  const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
+  const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
+  const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
+  const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
+  const useDraggable: typeof import('@vueuse/core')['useDraggable']
+  const useDropZone: typeof import('@vueuse/core')['useDropZone']
+  const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
+  const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
+  const useElementHover: typeof import('@vueuse/core')['useElementHover']
+  const useElementSize: typeof import('@vueuse/core')['useElementSize']
+  const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
+  const useEventBus: typeof import('@vueuse/core')['useEventBus']
+  const useEventListener: typeof import('@vueuse/core')['useEventListener']
+  const useEventSource: typeof import('@vueuse/core')['useEventSource']
+  const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
+  const useFavicon: typeof import('@vueuse/core')['useFavicon']
+  const useFetch: typeof import('@vueuse/core')['useFetch']
+  const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
+  const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
+  const useFocus: typeof import('@vueuse/core')['useFocus']
+  const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
+  const useFps: typeof import('@vueuse/core')['useFps']
+  const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
+  const useGamepad: typeof import('@vueuse/core')['useGamepad']
+  const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
+  const useIdle: typeof import('@vueuse/core')['useIdle']
+  const useImage: typeof import('@vueuse/core')['useImage']
+  const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
+  const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
+  const useInterval: typeof import('@vueuse/core')['useInterval']
+  const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
+  const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
+  const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
+  const useLink: typeof import('vue-router')['useLink']
+  const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
+  const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
+  const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
+  const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
+  const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
+  const useMemoize: typeof import('@vueuse/core')['useMemoize']
+  const useMemory: typeof import('@vueuse/core')['useMemory']
+  const useMounted: typeof import('@vueuse/core')['useMounted']
+  const useMouse: typeof import('@vueuse/core')['useMouse']
+  const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
+  const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
+  const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
+  const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
+  const useNetwork: typeof import('@vueuse/core')['useNetwork']
+  const useNow: typeof import('@vueuse/core')['useNow']
+  const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
+  const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
+  const useOnline: typeof import('@vueuse/core')['useOnline']
+  const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
+  const useParallax: typeof import('@vueuse/core')['useParallax']
+  const usePermission: typeof import('@vueuse/core')['usePermission']
+  const usePointer: typeof import('@vueuse/core')['usePointer']
+  const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
+  const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
+  const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
+  const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
+  const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
+  const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
+  const useRafFn: typeof import('@vueuse/core')['useRafFn']
+  const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
+  const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
+  const useRoute: typeof import('vue-router')['useRoute']
+  const useRouter: typeof import('vue-router')['useRouter']
+  const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
+  const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
+  const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
+  const useScroll: typeof import('@vueuse/core')['useScroll']
+  const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
+  const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
+  const useShare: typeof import('@vueuse/core')['useShare']
+  const useSlots: typeof import('vue')['useSlots']
+  const useSorted: typeof import('@vueuse/core')['useSorted']
+  const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
+  const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
+  const useStepper: typeof import('@vueuse/core')['useStepper']
+  const useStorage: typeof import('@vueuse/core')['useStorage']
+  const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
+  const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
+  const useSupported: typeof import('@vueuse/core')['useSupported']
+  const useSwipe: typeof import('@vueuse/core')['useSwipe']
+  const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
+  const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
+  const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
+  const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
+  const useThrottle: typeof import('@vueuse/core')['useThrottle']
+  const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
+  const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
+  const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
+  const useTimeout: typeof import('@vueuse/core')['useTimeout']
+  const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
+  const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
+  const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
+  const useTitle: typeof import('@vueuse/core')['useTitle']
+  const useToNumber: typeof import('@vueuse/core')['useToNumber']
+  const useToString: typeof import('@vueuse/core')['useToString']
+  const useToggle: typeof import('@vueuse/core')['useToggle']
+  const useTransition: typeof import('@vueuse/core')['useTransition']
+  const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
+  const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
+  const useVModel: typeof import('@vueuse/core')['useVModel']
+  const useVModels: typeof import('@vueuse/core')['useVModels']
+  const useVibrate: typeof import('@vueuse/core')['useVibrate']
+  const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
+  const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
+  const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
+  const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
+  const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
+  const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
+  const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
+  const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
+  const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
+  const watch: typeof import('vue')['watch']
+  const watchArray: typeof import('@vueuse/core')['watchArray']
+  const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
+  const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
+  const watchEffect: typeof import('vue')['watchEffect']
+  const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
+  const watchOnce: typeof import('@vueuse/core')['watchOnce']
+  const watchPausable: typeof import('@vueuse/core')['watchPausable']
+  const watchPostEffect: typeof import('vue')['watchPostEffect']
+  const watchSyncEffect: typeof import('vue')['watchSyncEffect']
+  const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
+  const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
+  const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
+  const whenever: typeof import('@vueuse/core')['whenever']
+}
diff --git a/yudao-ui-admin-vue3/tsconfig.json b/yudao-ui-admin-vue3/tsconfig.json
index 97f0654da..ba17219a2 100644
--- a/yudao-ui-admin-vue3/tsconfig.json
+++ b/yudao-ui-admin-vue3/tsconfig.json
@@ -33,6 +33,11 @@
     ],
     "typeRoots": ["./node_modules/@types/", "./types"]
   },
-  "include": ["src/**/*", "types/**/*.d.ts"],
+  "include": [
+    "src/**/*",
+    "types/**/*.d.ts",
+    "src/types/auto-imports.d.ts",
+    "src/types/auto-components.d.ts"
+  ],
   "exclude": ["dist", "node_modules"]
 }

From 85c4d1fb039df7a0f9284ce68de3e873f8345771 Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 12:14:58 +0800
Subject: [PATCH 02/10] perf: aotu imports

---
 yudao-ui-admin-vue3/build/vite/optimize.ts    |  1 +
 .../src/types/auto-components.d.ts            | 10 ++++++++
 yudao-ui-admin-vue3/src/views/Error/403.vue   |  3 ---
 yudao-ui-admin-vue3/src/views/Error/404.vue   |  3 ---
 yudao-ui-admin-vue3/src/views/Error/500.vue   |  3 ---
 yudao-ui-admin-vue3/src/views/Home/Index.vue  |  5 ----
 yudao-ui-admin-vue3/src/views/Home/Index2.vue |  4 ---
 .../src/views/Login/components/LoginForm.vue  | 15 +----------
 .../views/Login/components/LoginFormTitle.vue |  1 -
 .../src/views/Login/components/MobileForm.vue |  3 ---
 .../src/views/Login/components/QrCodeForm.vue |  3 ---
 .../views/Login/components/RegisterForm.vue   |  4 +--
 .../src/views/Login/components/useLogin.ts    |  2 +-
 .../src/views/Profile/Index.vue               |  2 --
 .../views/Profile/components/BasicInfo.vue    |  2 +-
 .../views/Profile/components/ProfileUser.vue  |  1 -
 .../src/views/Profile/components/ResetPwd.vue |  6 ++---
 .../views/Profile/components/UserAvatar.vue   |  2 --
 .../views/Profile/components/UserSocial.vue   |  2 --
 .../src/views/Redirect/Redirect.vue           |  3 ---
 .../src/views/bpm/form/form.data.ts           |  1 -
 .../src/views/bpm/form/index.vue              |  3 +--
 .../src/views/bpm/group/group.data.ts         |  1 -
 .../src/views/bpm/group/index.vue             |  5 ++--
 .../src/views/bpm/model/index.vue             |  4 +--
 .../src/views/bpm/model/model.data.ts         |  1 -
 .../src/views/bpm/processInstance/index.vue   |  1 -
 .../src/views/bpm/task/done/done.data.ts      |  1 -
 .../src/views/bpm/task/done/index.vue         |  1 -
 .../src/views/bpm/task/todo/done.data.ts      |  1 -
 .../src/views/bpm/task/todo/index.vue         |  1 -
 .../infra/apiAccessLog/apiAccessLog.data.ts   |  1 -
 .../src/views/infra/apiAccessLog/index.vue    |  1 -
 .../infra/apiErrorLog/apiErrorLog.data.ts     |  1 -
 .../src/views/infra/apiErrorLog/index.vue     |  1 -
 .../src/views/infra/codegen/EditTable.vue     |  3 ---
 .../src/views/infra/codegen/codegen.data.ts   |  1 -
 .../codegen/components/BasicInfoForm.vue      |  3 +--
 .../codegen/components/CloumInfoForm.vue      |  2 +-
 .../infra/codegen/components/ImportTable.vue  |  2 --
 .../infra/codegen/components/Preview.vue      |  3 ---
 .../src/views/infra/codegen/index.vue         |  2 --
 .../src/views/infra/config/config.data.ts     |  1 -
 .../src/views/infra/config/index.vue          |  3 +--
 .../dataSourceConfig/dataSourceConfig.data.ts |  1 -
 .../views/infra/dataSourceConfig/index.vue    |  3 +--
 .../src/views/infra/dbDoc/index.vue           |  2 --
 .../src/views/infra/druid/index.vue           |  3 ---
 .../views/infra/fileConfig/fileConfig.data.ts |  1 -
 .../src/views/infra/fileConfig/index.vue      | 13 +---------
 .../src/views/infra/fileList/fileList.data.ts |  1 -
 .../src/views/infra/fileList/index.vue        |  4 +--
 .../src/views/infra/job/JobLog.vue            |  1 -
 .../src/views/infra/job/index.vue             |  6 +----
 .../src/views/infra/job/job.data.ts           |  1 -
 .../src/views/infra/job/jobLog.data.ts        |  1 -
 .../src/views/infra/redis/index.vue           | 11 --------
 .../src/views/infra/server/index.vue          |  3 ---
 .../src/views/infra/skywalking/index.vue      |  3 ---
 .../src/views/infra/swagger/index.vue         |  3 ---
 .../src/views/infra/webSocket/index.vue       |  3 ---
 .../src/views/pay/app/app.data.ts             |  1 -
 .../src/views/pay/app/index.vue               |  3 +--
 .../src/views/pay/merchant/index.vue          |  3 +--
 .../src/views/pay/merchant/merchant.data.ts   |  1 -
 .../src/views/pay/order/index.vue             |  1 -
 .../src/views/pay/order/order.data.ts         |  1 -
 .../src/views/pay/refund/index.vue            |  1 -
 .../src/views/pay/refund/refund.data.ts       |  1 -
 .../src/views/system/dept/dept.data.ts        |  1 -
 .../src/views/system/dept/index.vue           |  4 +--
 .../src/views/system/dict/dict.data.ts        |  1 -
 .../src/views/system/dict/dict.type.ts        |  1 -
 .../src/views/system/dict/index.vue           |  4 +--
 .../views/system/errorCode/errorCode.data.ts  |  1 -
 .../src/views/system/errorCode/index.vue      |  3 +--
 .../src/views/system/loginlog/index.vue       |  1 -
 .../views/system/loginlog/loginLog.data.ts    |  1 -
 .../src/views/system/menu/index.vue           | 16 +-----------
 .../src/views/system/menu/menu.data.ts        |  1 -
 .../src/views/system/notice/index.vue         |  4 +--
 .../src/views/system/notice/notice.data.ts    |  1 -
 .../views/system/oauth2/client/client.data.ts |  1 -
 .../src/views/system/oauth2/client/index.vue  |  4 +--
 .../src/views/system/oauth2/token/index.vue   |  1 -
 .../views/system/oauth2/token/token.data.ts   |  1 -
 .../src/views/system/operatelog/index.vue     |  1 -
 .../system/operatelog/operatelog.data.ts      |  1 -
 .../src/views/system/post/index.vue           |  3 +--
 .../src/views/system/post/post.data.ts        |  1 -
 .../src/views/system/role/index.vue           | 14 ++---------
 .../src/views/system/role/role.data.ts        |  1 -
 .../src/views/system/sensitiveWord/index.vue  |  4 +--
 .../sensitiveWord/sensitiveWord.data.ts       |  1 -
 .../src/views/system/sms/smsChannel/index.vue |  3 +--
 .../system/sms/smsChannel/sms.channel.data.ts |  1 -
 .../src/views/system/sms/smsLog/index.vue     |  1 -
 .../views/system/sms/smsLog/sms.log.data.ts   |  1 -
 .../views/system/sms/smsTemplate/index.vue    |  4 +--
 .../sms/smsTemplate/sms.template.data.ts      |  1 -
 .../src/views/system/tenant/index.vue         |  4 +--
 .../src/views/system/tenant/tenant.data.ts    |  3 ++-
 .../src/views/system/tenantPackage/index.vue  |  5 ++--
 .../tenantPackage/tenantPackage.data.ts       |  1 -
 .../src/views/system/user/index.vue           | 25 ++-----------------
 .../src/views/system/user/user.data.ts        |  1 -
 .../views/visualization/jmreport/index.vue    |  2 --
 107 files changed, 50 insertions(+), 265 deletions(-)

diff --git a/yudao-ui-admin-vue3/build/vite/optimize.ts b/yudao-ui-admin-vue3/build/vite/optimize.ts
index 583daa93b..b3df9058d 100644
--- a/yudao-ui-admin-vue3/build/vite/optimize.ts
+++ b/yudao-ui-admin-vue3/build/vite/optimize.ts
@@ -21,6 +21,7 @@ const include = [
   'vxe-table/es/style',
   'web-storage-cache',
   'element-plus',
+  'element-plus/es',
   'element-plus/es/locale/lang/zh-cn',
   'element-plus/es/locale/lang/en',
   '@iconify/iconify',
diff --git a/yudao-ui-admin-vue3/src/types/auto-components.d.ts b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
index c298c5d47..0106ea8f7 100644
--- a/yudao-ui-admin-vue3/src/types/auto-components.d.ts
+++ b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
@@ -22,6 +22,16 @@ declare module '@vue/runtime-core' {
     Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
     Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
     ElButton: typeof import('element-plus/es')['ElButton']
+    ElCard: typeof import('element-plus/es')['ElCard']
+    ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
+    ElCol: typeof import('element-plus/es')['ElCol']
+    ElDivider: typeof import('element-plus/es')['ElDivider']
+    ElForm: typeof import('element-plus/es')['ElForm']
+    ElFormItem: typeof import('element-plus/es')['ElFormItem']
+    ElInput: typeof import('element-plus/es')['ElInput']
+    ElLink: typeof import('element-plus/es')['ElLink']
+    ElRow: typeof import('element-plus/es')['ElRow']
+    ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
     Error: typeof import('./../components/Error/src/Error.vue')['default']
     Form: typeof import('./../components/Form/src/Form.vue')['default']
     Highlight: typeof import('./../components/Highlight/src/Highlight.vue')['default']
diff --git a/yudao-ui-admin-vue3/src/views/Error/403.vue b/yudao-ui-admin-vue3/src/views/Error/403.vue
index 67bab9d0a..a22162209 100644
--- a/yudao-ui-admin-vue3/src/views/Error/403.vue
+++ b/yudao-ui-admin-vue3/src/views/Error/403.vue
@@ -2,9 +2,6 @@
   <Error type="403" @error-click="errorClick()" />
 </template>
 <script setup lang="ts">
-import { Error } from '@/components/Error'
-import { useRouter } from 'vue-router'
-
 const { push } = useRouter()
 
 const errorClick = () => {
diff --git a/yudao-ui-admin-vue3/src/views/Error/404.vue b/yudao-ui-admin-vue3/src/views/Error/404.vue
index b8f121f26..337d78d01 100644
--- a/yudao-ui-admin-vue3/src/views/Error/404.vue
+++ b/yudao-ui-admin-vue3/src/views/Error/404.vue
@@ -2,9 +2,6 @@
   <Error @error-click="errorClick()" />
 </template>
 <script setup lang="ts">
-import { Error } from '@/components/Error'
-import { useRouter } from 'vue-router'
-
 const { push } = useRouter()
 
 const errorClick = () => {
diff --git a/yudao-ui-admin-vue3/src/views/Error/500.vue b/yudao-ui-admin-vue3/src/views/Error/500.vue
index d9f3ede46..c66e713f4 100644
--- a/yudao-ui-admin-vue3/src/views/Error/500.vue
+++ b/yudao-ui-admin-vue3/src/views/Error/500.vue
@@ -2,9 +2,6 @@
   <Error type="500" @error-click="errorClick()" />
 </template>
 <script setup lang="ts">
-import { Error } from '@/components/Error'
-import { useRouter } from 'vue-router'
-
 const { push } = useRouter()
 
 const errorClick = () => {
diff --git a/yudao-ui-admin-vue3/src/views/Home/Index.vue b/yudao-ui-admin-vue3/src/views/Home/Index.vue
index 07ab61be3..5dbabfe9b 100644
--- a/yudao-ui-admin-vue3/src/views/Home/Index.vue
+++ b/yudao-ui-admin-vue3/src/views/Home/Index.vue
@@ -161,17 +161,12 @@
   </el-row>
 </template>
 <script setup lang="ts" name="Home">
-import { ref, reactive } from 'vue'
 import { set } from 'lodash-es'
 import { EChartsOption } from 'echarts'
-import { ElRow, ElCol, ElSkeleton, ElCard, ElDivider, ElLink } from 'element-plus'
 import { formatTime } from '@/utils'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useUserStore } from '@/store/modules/user'
 import { useWatermark } from '@/hooks/web/useWatermark'
-import { Echart } from '@/components/Echart'
-import { CountTo } from '@/components/CountTo'
-import { Highlight } from '@/components/Highlight'
 import avatarImg from '@/assets/imgs/avatar.gif'
 import type { WorkplaceTotal, Project, Notice, Shortcut } from './types'
 import { pieOptions, barOptions } from './echarts-data'
diff --git a/yudao-ui-admin-vue3/src/views/Home/Index2.vue b/yudao-ui-admin-vue3/src/views/Home/Index2.vue
index de91eb54c..0939ef26d 100644
--- a/yudao-ui-admin-vue3/src/views/Home/Index2.vue
+++ b/yudao-ui-admin-vue3/src/views/Home/Index2.vue
@@ -141,14 +141,10 @@
   </el-row>
 </template>
 <script setup lang="ts">
-import { ref, reactive } from 'vue'
 import { set } from 'lodash-es'
 import { EChartsOption } from 'echarts'
-import { ElRow, ElCol, ElCard, ElSkeleton } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useDesign } from '@/hooks/web/useDesign'
-import { Echart } from '@/components/Echart'
-import { CountTo } from '@/components/CountTo'
 import type { AnalysisTotalTypes } from './types'
 import { pieOptions, barOptions, lineOptions } from './echarts-data'
 
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
index 0953c0759..9a2e68297 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
@@ -128,27 +128,14 @@
   </el-form>
 </template>
 <script setup lang="ts">
-import { reactive, ref, unref, onMounted, computed, watch } from 'vue'
+import { ElLoading } from 'element-plus'
 import LoginFormTitle from './LoginFormTitle.vue'
-import {
-  ElForm,
-  ElFormItem,
-  ElInput,
-  ElCheckbox,
-  ElCol,
-  ElLink,
-  ElRow,
-  ElDivider,
-  ElLoading
-} from 'element-plus'
-import { useRouter } from 'vue-router'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useIcon } from '@/hooks/web/useIcon'
 import { useMessage } from '@/hooks/web/useMessage'
 import { required } from '@/utils/formRules'
 import * as authUtil from '@/utils/auth'
-import { Verify } from '@/components/Verifition'
 import { usePermissionStore } from '@/store/modules/permission'
 import * as LoginApi from '@/api/login'
 import { LoginStateEnum, useLoginState, useFormValid } from './useLogin'
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue b/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue
index 3ad4d37be..2e19d29cb 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue
@@ -4,7 +4,6 @@
   </h2>
 </template>
 <script setup lang="ts">
-import { computed, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { LoginStateEnum, useLoginState } from './useLogin'
 
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue
index 8f0cbdb3c..f0745c4bd 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue
@@ -92,9 +92,6 @@
   </el-form>
 </template>
 <script setup lang="ts">
-import { reactive, ref, unref, watch, computed } from 'vue'
-import { ElForm, ElFormItem, ElInput, ElRow, ElCol } from 'element-plus'
-import { useRouter } from 'vue-router'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useIcon } from '@/hooks/web/useIcon'
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue
index e312480bd..05f65202c 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue
@@ -17,9 +17,6 @@
   </el-row>
 </template>
 <script setup lang="ts">
-import { computed, unref } from 'vue'
-import { ElRow, ElCol, ElCard, ElDivider } from 'element-plus'
-import { Qrcode } from '@/components/Qrcode'
 import logoImg from '@/assets/imgs/logo.png'
 import { useI18n } from '@/hooks/web/useI18n'
 import LoginFormTitle from './LoginFormTitle.vue'
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue
index 6227c9e26..60fbbca32 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue
@@ -36,9 +36,7 @@
   </Form>
 </template>
 <script setup lang="ts">
-import { computed, reactive, ref, unref } from 'vue'
-import { ElInput, FormRules } from 'element-plus'
-import { Form } from '@/components/Form'
+import type { FormRules } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useForm } from '@/hooks/web/useForm'
 import { useValidator } from '@/hooks/web/useValidator'
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/useLogin.ts b/yudao-ui-admin-vue3/src/views/Login/components/useLogin.ts
index 251bfcbf9..dc46e0973 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/useLogin.ts
+++ b/yudao-ui-admin-vue3/src/views/Login/components/useLogin.ts
@@ -1,4 +1,4 @@
-import { ref, computed, unref, Ref } from 'vue'
+import { Ref } from 'vue'
 
 export enum LoginStateEnum {
   LOGIN,
diff --git a/yudao-ui-admin-vue3/src/views/Profile/Index.vue b/yudao-ui-admin-vue3/src/views/Profile/Index.vue
index 7c8b49dc3..631e2836a 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/Index.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/Index.vue
@@ -31,9 +31,7 @@
   </div>
 </template>
 <script setup lang="ts" name="Profile">
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
-import { ElCard, ElTabs, ElTabPane } from 'element-plus'
 import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components/'
 const { t } = useI18n()
 
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue b/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
index 4129eb316..77edd12b9 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
@@ -16,7 +16,7 @@ import type { FormRules } from 'element-plus'
 import { ElMessage, ElRadioGroup, ElRadio } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { FormSchema } from '@/types/form'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import {
   getUserProfileApi,
   updateUserProfileApi,
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue b/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue
index cff385e1c..aced0ac1e 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue
@@ -40,7 +40,6 @@
   </div>
 </template>
 <script setup lang="ts">
-import { onMounted, ref } from 'vue'
 import dayjs from 'dayjs'
 import UserAvatar from './UserAvatar.vue'
 import { useI18n } from '@/hooks/web/useI18n'
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue b/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue
index 74ea9970b..40a10ddd4 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue
@@ -16,14 +16,14 @@
   </el-form>
 </template>
 <script setup lang="ts">
-import { ref, reactive } from 'vue'
-import { ElForm, ElFormItem, ElMessage } from 'element-plus'
 import type { FormRules, FormInstance } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
+import { useMessage } from '@/hooks/web/useMessage'
 import { InputPassword } from '@/components/InputPassword'
 import { updateUserPwdApi } from '@/api/system/user/profile'
 
 const { t } = useI18n()
+const message = useMessage()
 const formRef = ref<FormInstance>()
 const password = reactive({
   oldPassword: '',
@@ -58,7 +58,7 @@ const submit = (formEl: FormInstance | undefined) => {
   formEl.validate(async (valid) => {
     if (valid) {
       await updateUserPwdApi(password.oldPassword, password.newPassword)
-      ElMessage.success(t('common.updateSuccess'))
+      message.success(t('common.updateSuccess'))
     }
   })
 }
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue b/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue
index d879d5b87..81259410b 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/UserAvatar.vue
@@ -11,9 +11,7 @@
   </div>
 </template>
 <script setup lang="ts">
-import { computed, ref } from 'vue'
 import { propTypes } from '@/utils/propTypes'
-import { CropperAvatar } from '@/components/Cropper'
 import { uploadAvatarApi } from '@/api/system/user/profile'
 const props = defineProps({
   img: propTypes.string.def('')
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue b/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue
index ee94dcfee..e1ffe7888 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue
@@ -22,8 +22,6 @@
   </el-table>
 </template>
 <script setup lang="ts">
-import { onMounted, ref } from 'vue'
-import { ElTable, ElTableColumn } from 'element-plus'
 import { useMessage } from '@/hooks/web/useMessage'
 import { SystemUserSocialTypeEnum } from '@/utils/constants'
 import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile'
diff --git a/yudao-ui-admin-vue3/src/views/Redirect/Redirect.vue b/yudao-ui-admin-vue3/src/views/Redirect/Redirect.vue
index 3a6a6a62f..8be6c739d 100644
--- a/yudao-ui-admin-vue3/src/views/Redirect/Redirect.vue
+++ b/yudao-ui-admin-vue3/src/views/Redirect/Redirect.vue
@@ -2,9 +2,6 @@
   <div></div>
 </template>
 <script setup lang="ts" name="Redirect">
-import { unref } from 'vue'
-import { useRouter } from 'vue-router'
-
 const { currentRoute, replace } = useRouter()
 const { params, query } = unref(currentRoute)
 const { path, _redirect_type = 'path' } = params
diff --git a/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts b/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts
index 463a87ba2..bc81d6f06 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/form/index.vue b/yudao-ui-admin-vue3/src/views/bpm/form/index.vue
index e6d27854e..cd61cf67f 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/form/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/form/index.vue
@@ -1,11 +1,10 @@
 <script setup lang="ts" name="Form">
-import { ref, unref } from 'vue'
 import dayjs from 'dayjs'
 import { ElMessage } from 'element-plus'
 import { DICT_TYPE } from '@/utils/dict'
 import { useTable } from '@/hooks/web/useTable'
 import { useI18n } from '@/hooks/web/useI18n'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import type { FormVO } from '@/api/bpm/form/types'
 import { rules, allSchemas } from './form.data'
 import * as FormApi from '@/api/bpm/form'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts b/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts
index 684f55018..36f7f1efe 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/group/index.vue b/yudao-ui-admin-vue3/src/views/bpm/group/index.vue
index 1db887a74..a90bd6480 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/group/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/group/index.vue
@@ -1,11 +1,10 @@
 <script setup lang="ts" name="Group">
-import { ref, unref, onMounted } from 'vue'
 import dayjs from 'dayjs'
-import { ElMessage, ElSelect, ElOption } from 'element-plus'
+import { ElMessage } from 'element-plus'
 import { DICT_TYPE } from '@/utils/dict'
 import { useTable } from '@/hooks/web/useTable'
 import { useI18n } from '@/hooks/web/useI18n'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import type { UserGroupVO } from '@/api/bpm/userGroup/types'
 import { rules, allSchemas } from './group.data'
 import * as UserGroupApi from '@/api/bpm/userGroup'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/model/index.vue b/yudao-ui-admin-vue3/src/views/bpm/model/index.vue
index 025f36e27..8f5a190fb 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/model/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/model/index.vue
@@ -1,11 +1,9 @@
 <script setup lang="ts" name="Model">
-import { ref, unref } from 'vue'
 import dayjs from 'dayjs'
-import { ElTableColumn, ElTag, ElSwitch } from 'element-plus'
 import { DICT_TYPE } from '@/utils/dict'
 import { useTable } from '@/hooks/web/useTable'
 import { useI18n } from '@/hooks/web/useI18n'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import type { ModelVO } from '@/api/bpm/model/types'
 import { rules, allSchemas } from './model.data'
 import * as ModelApi from '@/api/bpm/model'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts b/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts
index 9ae9c8b58..0938dcfb9 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue b/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue
index efa4f56b6..7f83fd594 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue
@@ -1,5 +1,4 @@
 <script setup lang="ts" name="ProcessInstance">
-import { ref } from 'vue'
 import dayjs from 'dayjs'
 import { DICT_TYPE } from '@/utils/dict'
 import { useTable } from '@/hooks/web/useTable'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts b/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts
index aa7ce9355..1c46c7a67 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue b/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue
index 69b181473..924415d78 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue
@@ -7,7 +7,6 @@ import { useI18n } from '@/hooks/web/useI18n'
 import type { TaskDoneVO } from '@/api/bpm/task/types'
 import { allSchemas } from './done.data'
 import * as TaskDoneApi from '@/api/bpm/task'
-import { useRouter } from 'vue-router'
 dayjs.extend(duration)
 const { t } = useI18n() // 国际化
 const { push } = useRouter()
diff --git a/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts b/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts
index f1105943f..d0acf8c8e 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
 const { t } = useI18n() // 国际化
diff --git a/yudao-ui-admin-vue3/src/views/bpm/task/todo/index.vue b/yudao-ui-admin-vue3/src/views/bpm/task/todo/index.vue
index 8ac48bd40..f0e59a090 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/task/todo/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/task/todo/index.vue
@@ -5,7 +5,6 @@ import { useTable } from '@/hooks/web/useTable'
 import type { TaskTodoVO } from '@/api/bpm/task/types'
 import { allSchemas } from './done.data'
 import * as TaskTodoApi from '@/api/bpm/task'
-import { useRouter } from 'vue-router'
 const { push } = useRouter()
 // ========== 列表相关 ==========
 const { register, tableObject, methods } = useTable<TaskTodoVO>({
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts
index 817145e32..174eb405b 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
 
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
index 14cf656aa..4864817cb 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
@@ -36,7 +36,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="ApiAccessLog">
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './apiAccessLog.data'
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts
index 713d04824..ac78e2f24 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
 
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
index 2fffc6efc..c59012dcb 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
@@ -52,7 +52,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="ApiErrorLog">
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './apiErrorLog.data'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
index 32371d52f..c174a0f95 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
@@ -21,12 +21,9 @@
   </ContentWrap>
 </template>
 <script setup lang="ts">
-import { ref, unref, onMounted } from 'vue'
 import { useRouter, useRoute } from 'vue-router'
-import { ElTabs, ElTabPane } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
-import { ContentDetailWrap } from '@/components/ContentDetailWrap'
 import { BasicInfoForm, CloumInfoForm } from './components'
 import { getCodegenTableApi, updateCodegenTableApi } from '@/api/infra/codegen'
 import { CodegenTableVO, CodegenColumnVO, CodegenUpdateReqVO } from '@/api/infra/codegen/types'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts b/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts
index 6de4c7475..a5609aef9 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue
index 865f57ec3..2fbbc9343 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue
@@ -2,10 +2,9 @@
   <Form :rules="rules" @register="register" />
 </template>
 <script setup lang="ts">
-import { onMounted, PropType, reactive, ref, watch } from 'vue'
+import { PropType } from 'vue'
 import { required } from '@/utils/formRules'
 import { useForm } from '@/hooks/web/useForm'
-import { Form } from '@/components/Form'
 import { FormSchema } from '@/types/form'
 import { CodegenTableVO } from '@/api/infra/codegen/types'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/CloumInfoForm.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/CloumInfoForm.vue
index fe4d2bed9..0b6ea6972 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/CloumInfoForm.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/CloumInfoForm.vue
@@ -111,7 +111,7 @@
   </vxe-table>
 </template>
 <script setup lang="ts">
-import { onMounted, PropType, ref } from 'vue'
+import { PropType } from 'vue'
 import { DictTypeVO } from '@/api/system/dict/types'
 import { CodegenColumnVO } from '@/api/infra/codegen/types'
 import { listSimpleDictTypeApi } from '@/api/system/dict/dict.type'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue
index e4dd8d743..963b85cf7 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue
@@ -49,11 +49,9 @@
   </XModal>
 </template>
 <script setup lang="ts">
-import { ref, reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { VxeTableInstance } from 'vxe-table'
-import { ElForm, ElFormItem, ElInput, ElSelect, ElOption } from 'element-plus'
 import type { DatabaseTableVO } from '@/api/infra/codegen/types'
 import { getSchemaTableListApi, createCodegenListApi } from '@/api/infra/codegen'
 import { getDataSourceConfigListApi, DataSourceConfigVO } from '@/api/infra/dataSourceConfig'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
index 2d30cafc5..41df0575c 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
@@ -30,9 +30,6 @@
   </XModal>
 </template>
 <script setup lang="ts">
-import { reactive, ref, unref } from 'vue'
-import { useClipboard } from '@vueuse/core'
-import { ElCard, ElTree, ElTabs, ElTabPane } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { handleTree2 } from '@/utils/tree'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
index 4e8ef8fa5..5c25e87e1 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
@@ -57,8 +57,6 @@
   <Preview ref="previewRef" />
 </template>
 <script setup lang="ts" name="Codegen">
-import { ref } from 'vue'
-import { useRouter } from 'vue-router'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
diff --git a/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts b/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts
index 67dc1cc2e..b1b29c231 100644
--- a/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/infra/config/index.vue b/yudao-ui-admin-vue3/src/views/infra/config/index.vue
index e726ab8d9..00ee66a3c 100644
--- a/yudao-ui-admin-vue3/src/views/infra/config/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/config/index.vue
@@ -84,11 +84,10 @@
 </template>
 <script setup lang="ts" name="Config">
 // 全局相关的 import
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as ConfigApi from '@/api/infra/config'
 import { rules, allSchemas } from './config.data'
diff --git a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts
index 60764d411..13133a3b5 100644
--- a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { required } from '@/utils/formRules'
 import { useI18n } from '@/hooks/web/useI18n'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
index 0326a386d..d4db44971 100644
--- a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
@@ -67,11 +67,10 @@
 </template>
 <script setup lang="ts" name="DataSourceConfig">
 // 全局相关的 import
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 import { useMessage } from '@/hooks/web/useMessage'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as DataSourceConfiggApi from '@/api/infra/dataSourceConfig'
 import { rules, allSchemas } from './dataSourceConfig.data'
diff --git a/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue b/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue
index 68385644a..e16a3fa60 100644
--- a/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue
@@ -25,10 +25,8 @@
   </ContentWrap>
 </template>
 <script setup lang="ts" name="DbDoc">
-import { onMounted, ref } from 'vue'
 import download from '@/utils/download'
 import { useI18n } from '@/hooks/web/useI18n'
-import { IFrame } from '@/components/IFrame'
 import * as DbDocApi from '@/api/infra/dbDoc'
 
 const { t } = useI18n() // 国际化
diff --git a/yudao-ui-admin-vue3/src/views/infra/druid/index.vue b/yudao-ui-admin-vue3/src/views/infra/druid/index.vue
index 9f216b07e..0f8af4b5a 100644
--- a/yudao-ui-admin-vue3/src/views/infra/druid/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/druid/index.vue
@@ -4,9 +4,6 @@
   </ContentWrap>
 </template>
 <script setup lang="ts" name="Druid">
-import { ref } from 'vue'
-import { IFrame } from '@/components/IFrame'
-
 const BASE_URL = import.meta.env.VITE_BASE_URL
 const src = ref(BASE_URL + '/druid/index.html')
 </script>
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts b/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts
index 732e7a6ec..40ee7a859 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue b/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
index 227efab29..c1f42c2fc 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
@@ -159,18 +159,7 @@
 </template>
 <script setup lang="ts" name="FileConfig">
 // 全局相关的 import
-import { ref } from 'vue'
-import {
-  ElForm,
-  ElFormItem,
-  FormInstance,
-  ElSelect,
-  ElOption,
-  ElInput,
-  ElInputNumber,
-  ElRadio,
-  ElRadioGroup
-} from 'element-plus'
+import type { FormInstance } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts b/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
index cc0516014..fda96110e 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue b/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
index 946c165b7..b0a5508d7 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
@@ -82,16 +82,14 @@
   </XModal>
 </template>
 <script setup lang="ts" name="FileList">
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { ElUpload, ElImage, UploadInstance, UploadRawFile } from 'element-plus'
+import type { UploadInstance, UploadRawFile } from 'element-plus'
 // 业务相关的 import
 import { allSchemas } from './fileList.data'
 import * as FileApi from '@/api/infra/fileList'
 import { getAccessToken, getTenantId } from '@/utils/auth'
-import { useClipboard } from '@vueuse/core'
 
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue b/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
index 801b067de..88691b245 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
@@ -48,7 +48,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="JobLog">
-import { ref } from 'vue'
 import dayjs from 'dayjs'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/index.vue b/yudao-ui-admin-vue3/src/views/infra/job/index.vue
index 3d788cd2c..818d66441 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/job/index.vue
@@ -129,14 +129,10 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Job">
-import { ref, unref } from 'vue'
-import { useRouter } from 'vue-router'
-import { ElDropdown, ElDropdownMenu, ElDropdownItem } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
-import { Crontab } from '@/components/Crontab'
+import type { FormExpose } from '@/components/Form'
 import * as JobApi from '@/api/infra/job'
 import { rules, allSchemas } from './job.data'
 import { InfraJobStatusEnum } from '@/utils/constants'
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts b/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts
index aa568c2be..92b29ba46 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { DICT_TYPE } from '@/utils/dict'
 import { required } from '@/utils/formRules'
 import { useI18n } from '@/hooks/web/useI18n'
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts
index 5a033ab0e..b6cb3b87d 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { DICT_TYPE } from '@/utils/dict'
 import { useI18n } from '@/hooks/web/useI18n'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/infra/redis/index.vue b/yudao-ui-admin-vue3/src/views/infra/redis/index.vue
index b4689b7aa..e1f6a2fee 100644
--- a/yudao-ui-admin-vue3/src/views/infra/redis/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/redis/index.vue
@@ -125,17 +125,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Redis">
-import { onBeforeMount, ref } from 'vue'
-import {
-  ElRow,
-  ElCard,
-  ElCol,
-  ElTable,
-  ElTableColumn,
-  ElScrollbar,
-  ElDescriptions,
-  ElDescriptionsItem
-} from 'element-plus'
 import * as echarts from 'echarts'
 import { DICT_TYPE } from '@/utils/dict'
 import { useI18n } from '@/hooks/web/useI18n'
diff --git a/yudao-ui-admin-vue3/src/views/infra/server/index.vue b/yudao-ui-admin-vue3/src/views/infra/server/index.vue
index 2401a2e31..8e748b26d 100644
--- a/yudao-ui-admin-vue3/src/views/infra/server/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/server/index.vue
@@ -4,9 +4,6 @@
   </ContentWrap>
 </template>
 <script setup lang="ts" name="Server">
-import { ref } from 'vue'
-import { IFrame } from '@/components/IFrame'
-
 const BASE_URL = import.meta.env.VITE_BASE_URL
 const src = ref(BASE_URL + '/admin/applications')
 </script>
diff --git a/yudao-ui-admin-vue3/src/views/infra/skywalking/index.vue b/yudao-ui-admin-vue3/src/views/infra/skywalking/index.vue
index 561a19d86..4c02f5336 100644
--- a/yudao-ui-admin-vue3/src/views/infra/skywalking/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/skywalking/index.vue
@@ -4,8 +4,5 @@
   </ContentWrap>
 </template>
 <script setup lang="ts" name="Skywalking">
-import { ref } from 'vue'
-import { IFrame } from '@/components/IFrame'
-
 const src = ref('http://skywalking.shop.iocoder.cn')
 </script>
diff --git a/yudao-ui-admin-vue3/src/views/infra/swagger/index.vue b/yudao-ui-admin-vue3/src/views/infra/swagger/index.vue
index 5d4697c1a..72a826e61 100644
--- a/yudao-ui-admin-vue3/src/views/infra/swagger/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/swagger/index.vue
@@ -4,9 +4,6 @@
   </ContentWrap>
 </template>
 <script setup lang="ts" name="Swagger">
-import { ref } from 'vue'
-import { IFrame } from '@/components/IFrame'
-
 const BASE_URL = import.meta.env.VITE_BASE_URL
 const src = ref(BASE_URL + '/doc.html')
 </script>
diff --git a/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue b/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue
index 4820204a0..1e7c5c9f3 100644
--- a/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue
@@ -56,9 +56,6 @@
   </div>
 </template>
 <script setup lang="ts">
-import { computed, reactive, ref, watchEffect } from 'vue'
-import { ElCard, ElInput, ElTag } from 'element-plus'
-import { useWebSocket } from '@vueuse/core'
 import dayjs from 'dayjs'
 import { useUserStore } from '@/store/modules/user'
 
diff --git a/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts b/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts
index c26b46131..253d88075 100644
--- a/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/pay/app/index.vue b/yudao-ui-admin-vue3/src/views/pay/app/index.vue
index 227e3c05d..db37fe936 100644
--- a/yudao-ui-admin-vue3/src/views/pay/app/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/app/index.vue
@@ -76,11 +76,10 @@
   </XModal>
 </template>
 <script setup lang="ts" name="App">
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import { rules, allSchemas } from './app.data'
 import * as AppApi from '@/api/pay/app'
 
diff --git a/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue b/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
index 18ea70771..acc935248 100644
--- a/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
@@ -75,11 +75,10 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Merchant">
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import { rules, allSchemas } from './merchant.data'
 import * as MerchantApi from '@/api/pay/merchant'
 
diff --git a/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts b/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts
index 45d8c71e9..1de8ef053 100644
--- a/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/pay/order/index.vue b/yudao-ui-admin-vue3/src/views/pay/order/index.vue
index a0d82a41d..170e7cff8 100644
--- a/yudao-ui-admin-vue3/src/views/pay/order/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/order/index.vue
@@ -42,7 +42,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Order">
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './order.data'
diff --git a/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts b/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts
index ac08006ad..61bd6a192 100644
--- a/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/pay/refund/index.vue b/yudao-ui-admin-vue3/src/views/pay/refund/index.vue
index 94da462b4..9cb993beb 100644
--- a/yudao-ui-admin-vue3/src/views/pay/refund/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/refund/index.vue
@@ -34,7 +34,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Refund">
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './refund.data'
diff --git a/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts b/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts
index 0f9dce10b..219c4dece 100644
--- a/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts b/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts
index 2515266f5..964facc11 100644
--- a/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/dept/index.vue b/yudao-ui-admin-vue3/src/views/system/dept/index.vue
index c095982fa..a8543c4f1 100644
--- a/yudao-ui-admin-vue3/src/views/system/dept/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/dept/index.vue
@@ -75,13 +75,11 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Dept">
-import { nextTick, onMounted, ref, unref } from 'vue'
-import { ElSelect, ElTreeSelect, ElOption } from 'element-plus'
 import { handleTree, defaultProps } from '@/utils/tree'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import { allSchemas, rules } from './dept.data'
 import * as DeptApi from '@/api/system/dept'
 import { getListSimpleUsersApi, UserVO } from '@/api/system/user'
diff --git a/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts b/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts
index c33cc3531..37ab29161 100644
--- a/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { DICT_TYPE } from '@/utils/dict'
 import { required } from '@/utils/formRules'
 import { useI18n } from '@/hooks/web/useI18n'
diff --git a/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts b/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts
index ca24053de..3d2edbd54 100644
--- a/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts
+++ b/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { DICT_TYPE } from '@/utils/dict'
 import { required } from '@/utils/formRules'
 import { useI18n } from '@/hooks/web/useI18n'
diff --git a/yudao-ui-admin-vue3/src/views/system/dict/index.vue b/yudao-ui-admin-vue3/src/views/system/dict/index.vue
index 21124a072..643c046dc 100644
--- a/yudao-ui-admin-vue3/src/views/system/dict/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/dict/index.vue
@@ -122,13 +122,11 @@
   </div>
 </template>
 <script setup lang="ts" name="Dict">
-import { ref, unref, reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
 import { VxeTableEvents } from 'vxe-table'
-import { FormExpose } from '@/components/Form'
-import { ElInput, ElTag, ElCard } from 'element-plus'
+import type { FormExpose } from '@/components/Form'
 import * as DictTypeSchemas from './dict.type'
 import * as DictDataSchemas from './dict.data'
 import * as DictTypeApi from '@/api/system/dict/dict.type'
diff --git a/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts b/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts
index c6af9fbe0..41ab7cbab 100644
--- a/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { required } from '@/utils/formRules'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue b/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
index 316d26d17..bb9c7c309 100644
--- a/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
@@ -68,11 +68,10 @@
 </template>
 <script setup lang="ts" name="ErrorCode">
 // 全局相关的 import
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import { rules, allSchemas } from './errorCode.data'
 import * as ErrorCodeApi from '@/api/system/errorCode'
diff --git a/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue b/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
index 3872107bb..01af8b4f0 100644
--- a/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
@@ -29,7 +29,6 @@
 </template>
 <script setup lang="ts" name="Loginlog">
 // 全局相关的 import
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 // 业务相关的 import
diff --git a/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts b/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts
index 2320faa43..cf001546b 100644
--- a/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
 
diff --git a/yudao-ui-admin-vue3/src/views/system/menu/index.vue b/yudao-ui-admin-vue3/src/views/system/menu/index.vue
index 6bdda3176..5a158fd7d 100644
--- a/yudao-ui-admin-vue3/src/views/system/menu/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/menu/index.vue
@@ -176,24 +176,10 @@
 </template>
 <script setup lang="ts" name="Menu">
 // 全局相关的 import
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import { useMessage } from '@/hooks/web/useMessage'
-import {
-  ElCol,
-  ElForm,
-  ElFormItem,
-  ElInput,
-  ElInputNumber,
-  ElTreeSelect,
-  ElRadio,
-  ElRadioGroup,
-  ElRadioButton,
-  FormInstance
-} from 'element-plus'
-import { Tooltip } from '@/components/Tooltip'
-import { IconSelect } from '@/components/Icon'
+import { FormInstance } from 'element-plus'
 // 业务相关的 import
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
 import { SystemMenuTypeEnum, CommonStatusEnum } from '@/utils/constants'
diff --git a/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts b/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts
index cf496a19d..00713558b 100644
--- a/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
 import { required } from '@/utils/formRules'
diff --git a/yudao-ui-admin-vue3/src/views/system/notice/index.vue b/yudao-ui-admin-vue3/src/views/system/notice/index.vue
index 4654b741b..ffd0720d3 100644
--- a/yudao-ui-admin-vue3/src/views/system/notice/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/notice/index.vue
@@ -72,15 +72,13 @@
 </template>
 <script setup lang="ts" name="Notice">
 // 全局相关的 import
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as NoticeApi from '@/api/system/notice'
 import { rules, allSchemas } from './notice.data'
-import { Editor } from '@/components/Editor'
 
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
diff --git a/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts b/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts
index ad22b5967..7ed499437 100644
--- a/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts b/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts
index 87ecd9f90..d2039f368 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue b/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
index f9fcabd68..22e904d9e 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
@@ -131,12 +131,10 @@
 </template>
 <script setup lang="ts" name="Client">
 // 全局相关的 import
-import { ref, unref } from 'vue'
-import { ElTag } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as ClientApi from '@/api/system/oauth2/client'
 import { rules, allSchemas } from './client.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue b/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
index 9011ac80a..2d6d4656f 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
@@ -25,7 +25,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Token">
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts b/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts
index 5ab13f7b1..1f5ae3f71 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue b/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
index 29a455559..4a947ccf0 100644
--- a/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
@@ -43,7 +43,6 @@
 </template>
 <script setup lang="ts" name="OperateLog">
 // 全局相关的 import
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 // 业务相关的 import
diff --git a/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts b/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts
index b28e8f288..308835257 100644
--- a/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/system/post/index.vue b/yudao-ui-admin-vue3/src/views/system/post/index.vue
index 08a7ca0be..b7eb5536d 100644
--- a/yudao-ui-admin-vue3/src/views/system/post/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/post/index.vue
@@ -73,11 +73,10 @@
 </template>
 <script setup lang="ts" name="Post">
 // 全局相关的 import
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as PostApi from '@/api/system/post'
 import { rules, allSchemas } from './post.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/post/post.data.ts b/yudao-ui-admin-vue3/src/views/system/post/post.data.ts
index 9b3041ebd..4ea240fb1 100644
--- a/yudao-ui-admin-vue3/src/views/system/post/post.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/post/post.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/role/index.vue b/yudao-ui-admin-vue3/src/views/system/role/index.vue
index c9dc24874..548539bbc 100644
--- a/yudao-ui-admin-vue3/src/views/system/role/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/role/index.vue
@@ -148,18 +148,8 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Role">
-import { onMounted, reactive, ref, unref } from 'vue'
-import {
-  ElForm,
-  ElFormItem,
-  ElSelect,
-  ElOption,
-  ElTree,
-  ElCard,
-  ElSwitch,
-  ElTag
-} from 'element-plus'
-import { FormExpose } from '@/components/Form'
+import type { ElTree } from 'element-plus'
+import type { FormExpose } from '@/components/Form'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
diff --git a/yudao-ui-admin-vue3/src/views/system/role/role.data.ts b/yudao-ui-admin-vue3/src/views/system/role/role.data.ts
index 172b8c892..880bdc659 100644
--- a/yudao-ui-admin-vue3/src/views/system/role/role.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/role/role.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
index 77afad482..98cd104e6 100644
--- a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
@@ -103,12 +103,10 @@
   </XModal>
 </template>
 <script setup lang="ts" name="SensitiveWord">
-import { onMounted, ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
-import { ElTag, ElSelect, ElOption } from 'element-plus'
+import type { FormExpose } from '@/components/Form'
 import * as SensitiveWordApi from '@/api/system/sensitiveWord'
 import { rules, allSchemas } from './sensitiveWord.data'
 
diff --git a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts
index 06b5849e1..d69706ce5 100644
--- a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
index 0a4bb8bb9..d17428c7d 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
@@ -69,11 +69,10 @@
 </template>
 <script setup lang="ts" name="SmsChannel">
 // 全局相关的 import
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as SmsChannelApi from '@/api/system/sms/smsChannel'
 import { rules, allSchemas } from './sms.channel.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts
index 14f438fdc..e54d18919 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
index 293dadfe4..70f0f0751 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
@@ -32,7 +32,6 @@
 </template>
 <script setup lang="ts" name="SmsLog">
 // 全局相关的 import
-import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './sms.log.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts
index 29bedef14..c933df88c 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
index 314f392ef..17e7ff08c 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
@@ -110,12 +110,10 @@
 </template>
 <script setup lang="ts" name="SmsTemplate">
 // 全局相关的 import
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
-import { ElForm, ElFormItem, ElInput } from 'element-plus'
+import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as SmsTemplateApi from '@/api/system/sms/smsTemplate'
 import { rules, allSchemas } from './sms.template.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts
index c088485bc..130228e48 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/tenant/index.vue b/yudao-ui-admin-vue3/src/views/system/tenant/index.vue
index 24f3c3781..0005cc259 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenant/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/tenant/index.vue
@@ -86,12 +86,10 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Tenant">
-import { ref, unref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { ElTag } from 'element-plus'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import * as TenantApi from '@/api/system/tenant'
 import { rules, allSchemas, tenantPackageOption } from './tenant.data'
 
diff --git a/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts b/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts
index 01eafc924..2bf3a4e25 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts
@@ -1,11 +1,12 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { required } from '@/utils/formRules'
 import { DICT_TYPE } from '@/utils/dict'
 import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
 import { getTenantPackageList, TenantPackageVO } from '@/api/system/tenantPackage'
 import { ComponentOptions } from '@/types/components'
+
 const { t } = useI18n() // 国际化
+
 export const tenantPackageOption: ComponentOptions[] = []
 const getTenantPackageOptions = async () => {
   const res = await getTenantPackageList()
diff --git a/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue b/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
index 9d5f57ec2..6ab9e2b73 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
@@ -65,13 +65,12 @@
   </XModal>
 </template>
 <script setup lang="ts" name="TenantPackage">
-import { onMounted, ref, unref } from 'vue'
 import { handleTree, defaultProps } from '@/utils/tree'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
-import { ElCard, ElSwitch, ElTree } from 'element-plus'
+import type { FormExpose } from '@/components/Form'
+import type { ElTree } from 'element-plus'
 // 业务相关的 import
 import { rules, allSchemas } from './tenantPackage.data'
 import * as TenantPackageApi from '@/api/system/tenantPackage'
diff --git a/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts b/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts
index 32cc19704..47fc2ab30 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { required } from '@/utils/formRules'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/user/index.vue b/yudao-ui-admin-vue3/src/views/system/user/index.vue
index 936a09602..94db1a7f0 100644
--- a/yudao-ui-admin-vue3/src/views/system/user/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/user/index.vue
@@ -261,28 +261,7 @@
   </XModal>
 </template>
 <script setup lang="ts" name="User">
-import { nextTick, onMounted, reactive, ref, unref, watch } from 'vue'
-import {
-  ElTag,
-  ElInput,
-  ElCard,
-  ElTree,
-  ElTreeSelect,
-  ElSelect,
-  ElOption,
-  ElTransfer,
-  ElForm,
-  ElFormItem,
-  ElUpload,
-  ElSwitch,
-  ElCheckbox,
-  ElDropdown,
-  ElDropdownMenu,
-  ElDropdownItem,
-  UploadInstance,
-  UploadRawFile
-} from 'element-plus'
-import { useRouter } from 'vue-router'
+import type { ElTree, UploadRawFile, UploadInstance } from 'element-plus'
 import { handleTree, defaultProps } from '@/utils/tree'
 import download from '@/utils/download'
 import { CommonStatusEnum } from '@/utils/constants'
@@ -290,7 +269,7 @@ import { getAccessToken, getTenantId } from '@/utils/auth'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { useXTable } from '@/hooks/web/useXTable'
-import { FormExpose } from '@/components/Form'
+import type { FormExpose } from '@/components/Form'
 import { rules, allSchemas } from './user.data'
 import * as UserApi from '@/api/system/user'
 import { listSimpleDeptApi } from '@/api/system/dept'
diff --git a/yudao-ui-admin-vue3/src/views/system/user/user.data.ts b/yudao-ui-admin-vue3/src/views/system/user/user.data.ts
index d06745c06..90c08b4fe 100644
--- a/yudao-ui-admin-vue3/src/views/system/user/user.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/user/user.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { required } from '@/utils/formRules'
 import { useI18n } from '@/hooks/web/useI18n'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/visualization/jmreport/index.vue b/yudao-ui-admin-vue3/src/views/visualization/jmreport/index.vue
index 0dc956ac1..3e33ad3a9 100644
--- a/yudao-ui-admin-vue3/src/views/visualization/jmreport/index.vue
+++ b/yudao-ui-admin-vue3/src/views/visualization/jmreport/index.vue
@@ -4,8 +4,6 @@
   </ContentWrap>
 </template>
 <script setup lang="ts" name="Jmreport">
-import { ref } from 'vue'
-import { IFrame } from '@/components/IFrame'
 import { getAccessToken } from '@/utils/auth'
 
 const BASE_URL = import.meta.env.VITE_BASE_URL

From 8e03c57bf49366d96489e2b87a77fa582831625b Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 12:34:52 +0800
Subject: [PATCH 03/10] perf: auto import vue element-plus

---
 yudao-ui-admin-vue3/src/App.vue               |  2 --
 .../ConfigGlobal/src/ConfigGlobal.vue         |  3 ---
 .../src/ContentDetailWrap.vue                 |  3 ---
 .../src/components/CountTo/src/CountTo.vue    |  2 +-
 .../src/components/Crontab/src/Crontab.vue    | 17 ++----------
 .../components/Cropper/src/CopperModal.vue    |  4 ---
 .../src/components/Cropper/src/Cropper.vue    | 12 +--------
 .../components/Cropper/src/CropperAvatar.vue  |  1 -
 .../Descriptions/src/Descriptions.vue         |  3 +--
 .../src/components/Dialog/src/Dialog.vue      |  2 --
 .../src/components/Echart/src/Echart.vue      |  2 +-
 .../src/components/Editor/src/Editor.vue      |  3 +--
 .../src/components/IFrame/src/IFrame.vue      |  1 -
 .../src/components/Icon/src/Icon.vue          |  2 --
 .../ImageViewer/src/ImageViewer.vue           |  3 +--
 .../src/components/Infotip/src/Infotip.vue    |  1 -
 .../InputPassword/src/InputPassword.vue       |  2 --
 .../src/components/Search/src/Search.vue      |  4 +--
 .../src/components/Sticky/src/Sticky.vue      |  2 --
 .../components/UploadFile/src/UploadFile.vue  |  3 +--
 .../components/UploadFile/src/UploadImg.vue   | 21 +++------------
 .../Verifition/src/Verify/VerifySlide.vue     | 10 -------
 .../src/components/XButton/src/XButton.vue    |  2 +-
 .../components/XButton/src/XTextButton.vue    |  1 -
 .../src/components/XModal/src/XModal.vue      |  1 -
 .../src/components/XTable/src/XTable.vue      |  2 +-
 .../src/hooks/event/useScrollTo.ts            |  2 --
 .../src/hooks/web/useConfigGlobal.ts          |  1 -
 yudao-ui-admin-vue3/src/hooks/web/useEmitt.ts |  1 -
 yudao-ui-admin-vue3/src/hooks/web/useForm.ts  |  1 -
 .../src/hooks/web/useNProgress.ts             |  2 --
 .../src/hooks/web/useTimeAgo.ts               |  1 -
 .../src/hooks/web/useVxeCrudSchemas.ts        |  1 -
 .../src/hooks/web/useXTable.ts                |  1 -
 .../src/layout/components/AppView.vue         |  1 -
 .../components/Collapse/src/Collapse.vue      |  1 -
 .../ContextMenu/src/ContextMenu.vue           |  4 +--
 .../layout/components/Footer/src/Footer.vue   |  1 -
 .../LocaleDropdown/src/LocaleDropdown.vue     |  2 --
 .../src/layout/components/Menu/src/Menu.vue   |  3 +--
 .../src/layout/components/Menu/src/helper.ts  |  1 -
 .../layout/components/Message/src/Message.vue |  3 ---
 .../layout/components/Setting/src/Setting.vue |  3 +--
 .../src/components/ColorRadioPicker.vue       |  2 +-
 .../src/components/InterfaceDisplay.vue       |  2 --
 .../src/components/LayoutRadioPicker.vue      |  1 -
 .../SizeDropdown/src/SizeDropdown.vue         |  2 --
 .../layout/components/TabMenu/src/TabMenu.vue |  2 --
 .../layout/components/TabMenu/src/helper.ts   |  1 -
 .../components/TagsView/src/TagsView.vue      |  3 ---
 .../ThemeSwitch/src/ThemeSwitch.vue           |  2 --
 .../components/UserInfo/src/UserInfo.vue      |  3 +--
 .../src/plugins/vxeTable/index.ts             |  2 +-
 .../src/types/auto-components.d.ts            | 27 +++++++++++++++++++
 yudao-ui-admin-vue3/src/utils/index.ts        |  2 --
 .../views/Profile/components/BasicInfo.vue    |  3 +--
 .../views/bpm/processInstance/process.data.ts |  1 -
 .../src/views/infra/codegen/EditTable.vue     |  1 -
 58 files changed, 50 insertions(+), 142 deletions(-)

diff --git a/yudao-ui-admin-vue3/src/App.vue b/yudao-ui-admin-vue3/src/App.vue
index 476c0c5de..a7867a1c8 100644
--- a/yudao-ui-admin-vue3/src/App.vue
+++ b/yudao-ui-admin-vue3/src/App.vue
@@ -1,9 +1,7 @@
 <script setup lang="ts">
-import { computed } from 'vue'
 import { isDark } from '@/utils/is'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
-import { ConfigGlobal } from '@/components/ConfigGlobal'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 
 const { getPrefixCls } = useDesign()
diff --git a/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue b/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue
index 0a55f1523..103259ef6 100644
--- a/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue
+++ b/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue
@@ -1,9 +1,6 @@
 <script setup lang="ts">
-import { provide, computed, watch, onMounted } from 'vue'
 import { propTypes } from '@/utils/propTypes'
-import { ElConfigProvider } from 'element-plus'
 import { useLocaleStore } from '@/store/modules/locale'
-import { useWindowSize } from '@vueuse/core'
 import { useAppStore } from '@/store/modules/app'
 import { setCssVar } from '@/utils'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue b/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue
index 887357b1a..d99105627 100644
--- a/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue
+++ b/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue
@@ -1,9 +1,6 @@
 <script setup lang="ts">
-import { ElCard } from 'element-plus'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
-import { ref, onMounted } from 'vue'
-import { Sticky } from '@/components/Sticky'
 import { useI18n } from '@/hooks/web/useI18n'
 const { t } = useI18n()
 
diff --git a/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue b/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue
index cab8ea965..8d2f1ade0 100644
--- a/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue
+++ b/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { reactive, computed, watch, onMounted, unref, toRef, PropType } from 'vue'
+import { PropType } from 'vue'
 import { isNumber } from '@/utils/is'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/components/Crontab/src/Crontab.vue b/yudao-ui-admin-vue3/src/components/Crontab/src/Crontab.vue
index c620d719a..fe33bd5f5 100644
--- a/yudao-ui-admin-vue3/src/components/Crontab/src/Crontab.vue
+++ b/yudao-ui-admin-vue3/src/components/Crontab/src/Crontab.vue
@@ -1,19 +1,6 @@
 <script setup lang="ts">
-import {
-  ElInput,
-  ElInputNumber,
-  ElDialog,
-  ElTabs,
-  ElTabPane,
-  ElSelect,
-  ElOption,
-  ElForm,
-  ElFormItem,
-  ElRadioGroup,
-  ElRadioButton,
-  ElMessage
-} from 'element-plus'
-import { ref, computed, onMounted, reactive, watch, PropType } from 'vue'
+import { ElMessage } from 'element-plus'
+import { PropType } from 'vue'
 interface shortcutsType {
   text: string
   value: string
diff --git a/yudao-ui-admin-vue3/src/components/Cropper/src/CopperModal.vue b/yudao-ui-admin-vue3/src/components/Cropper/src/CopperModal.vue
index 919e1d1bb..647ddb205 100644
--- a/yudao-ui-admin-vue3/src/components/Cropper/src/CopperModal.vue
+++ b/yudao-ui-admin-vue3/src/components/Cropper/src/CopperModal.vue
@@ -116,11 +116,7 @@
 <script setup lang="ts">
 import { useDesign } from '@/hooks/web/useDesign'
 import { dataURLtoBlob } from '@/utils/filt'
-import { ref } from 'vue'
 import { useI18n } from 'vue-i18n'
-import { ElUpload, ElAvatar, ElTooltip, ElSpace } from 'element-plus'
-import { Dialog } from '@/components/Dialog'
-import { CropperImage } from '@/components/Cropper'
 import type { CropendResult, Cropper } from './types'
 import { propTypes } from '@/utils/propTypes'
 
diff --git a/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue b/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue
index 2e38e06d0..822f0712d 100644
--- a/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue
+++ b/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue
@@ -11,20 +11,10 @@
   </div>
 </template>
 <script setup lang="ts">
-import {
-  computed,
-  CSSProperties,
-  onMounted,
-  onUnmounted,
-  PropType,
-  ref,
-  unref,
-  useAttrs
-} from 'vue'
+import { CSSProperties, PropType } from 'vue'
 import Cropper from 'cropperjs'
 import 'cropperjs/dist/cropper.css'
 import { useDesign } from '@/hooks/web/useDesign'
-import { useDebounceFn } from '@vueuse/core'
 import { propTypes } from '@/utils/propTypes'
 
 type Options = Cropper.Options
diff --git a/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue b/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue
index 455f9f005..9c1f3de32 100644
--- a/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue
+++ b/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue
@@ -15,7 +15,6 @@
 import { useDesign } from '@/hooks/web/useDesign'
 import { useMessage } from '@/hooks/web/useMessage'
 import { propTypes } from '@/utils/propTypes'
-import { ref, watch, watchEffect } from 'vue'
 import { useI18n } from 'vue-i18n'
 import CopperModal from './CopperModal.vue'
 
diff --git a/yudao-ui-admin-vue3/src/components/Descriptions/src/Descriptions.vue b/yudao-ui-admin-vue3/src/components/Descriptions/src/Descriptions.vue
index a14fca3d1..d6cea87a8 100644
--- a/yudao-ui-admin-vue3/src/components/Descriptions/src/Descriptions.vue
+++ b/yudao-ui-admin-vue3/src/components/Descriptions/src/Descriptions.vue
@@ -1,9 +1,8 @@
 <script setup lang="ts">
+import { PropType } from 'vue'
 import dayjs from 'dayjs'
-import { ElCollapseTransition, ElDescriptions, ElDescriptionsItem, ElTooltip } from 'element-plus'
 import { useDesign } from '@/hooks/web/useDesign'
 import { propTypes } from '@/utils/propTypes'
-import { ref, unref, PropType, computed, useAttrs, useSlots } from 'vue'
 import { useAppStore } from '@/store/modules/app'
 import { DescriptionsSchema } from '@/types/descriptions'
 
diff --git a/yudao-ui-admin-vue3/src/components/Dialog/src/Dialog.vue b/yudao-ui-admin-vue3/src/components/Dialog/src/Dialog.vue
index d6642a662..98336fdf4 100644
--- a/yudao-ui-admin-vue3/src/components/Dialog/src/Dialog.vue
+++ b/yudao-ui-admin-vue3/src/components/Dialog/src/Dialog.vue
@@ -1,7 +1,5 @@
 <script setup lang="ts">
-import { ElDialog, ElScrollbar } from 'element-plus'
 import { propTypes } from '@/utils/propTypes'
-import { computed, useAttrs, ref, unref, useSlots, watch, nextTick } from 'vue'
 import { isNumber } from '@/utils/is'
 
 const slots = useSlots()
diff --git a/yudao-ui-admin-vue3/src/components/Echart/src/Echart.vue b/yudao-ui-admin-vue3/src/components/Echart/src/Echart.vue
index 84f23da0a..41fde039d 100644
--- a/yudao-ui-admin-vue3/src/components/Echart/src/Echart.vue
+++ b/yudao-ui-admin-vue3/src/components/Echart/src/Echart.vue
@@ -4,7 +4,7 @@ import echarts from '@/plugins/echarts'
 import { debounce } from 'lodash-es'
 import 'echarts-wordcloud'
 import { propTypes } from '@/utils/propTypes'
-import { computed, PropType, ref, unref, watch, onMounted, onBeforeUnmount, onActivated } from 'vue'
+import { PropType } from 'vue'
 import { useAppStore } from '@/store/modules/app'
 import { isString } from '@/utils/is'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue b/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue
index 7a264d31e..90e67a564 100644
--- a/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue
+++ b/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
-import { onBeforeUnmount, computed, PropType, unref, nextTick, ref, watch, shallowRef } from 'vue'
-import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
+import { PropType } from 'vue'
 import { IDomEditor, IEditorConfig, i18nChangeLanguage } from '@wangeditor/editor'
 import { propTypes } from '@/utils/propTypes'
 import { isNumber } from '@/utils/is'
diff --git a/yudao-ui-admin-vue3/src/components/IFrame/src/IFrame.vue b/yudao-ui-admin-vue3/src/components/IFrame/src/IFrame.vue
index b4d3bea67..522da3cc4 100644
--- a/yudao-ui-admin-vue3/src/components/IFrame/src/IFrame.vue
+++ b/yudao-ui-admin-vue3/src/components/IFrame/src/IFrame.vue
@@ -1,5 +1,4 @@
 <script setup lang="ts">
-import { ref, onMounted } from 'vue'
 import { propTypes } from '@/utils/propTypes'
 
 const props = defineProps({
diff --git a/yudao-ui-admin-vue3/src/components/Icon/src/Icon.vue b/yudao-ui-admin-vue3/src/components/Icon/src/Icon.vue
index 4c32f9bcf..bd94fcd4c 100644
--- a/yudao-ui-admin-vue3/src/components/Icon/src/Icon.vue
+++ b/yudao-ui-admin-vue3/src/components/Icon/src/Icon.vue
@@ -1,6 +1,4 @@
 <script setup lang="ts">
-import { computed, unref, ref, watch, nextTick } from 'vue'
-import { ElIcon } from 'element-plus'
 import { propTypes } from '@/utils/propTypes'
 import Iconify from '@purge-icons/generated'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/components/ImageViewer/src/ImageViewer.vue b/yudao-ui-admin-vue3/src/components/ImageViewer/src/ImageViewer.vue
index 02fdb0084..a2ddc072c 100644
--- a/yudao-ui-admin-vue3/src/components/ImageViewer/src/ImageViewer.vue
+++ b/yudao-ui-admin-vue3/src/components/ImageViewer/src/ImageViewer.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
-import { ElImageViewer } from 'element-plus'
-import { computed, ref, PropType } from 'vue'
+import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
 
 const props = defineProps({
diff --git a/yudao-ui-admin-vue3/src/components/Infotip/src/Infotip.vue b/yudao-ui-admin-vue3/src/components/Infotip/src/Infotip.vue
index 41ac96aed..a03f34e28 100644
--- a/yudao-ui-admin-vue3/src/components/Infotip/src/Infotip.vue
+++ b/yudao-ui-admin-vue3/src/components/Infotip/src/Infotip.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import { PropType } from 'vue'
-import { Highlight } from '@/components/Highlight'
 import { useDesign } from '@/hooks/web/useDesign'
 import { propTypes } from '@/utils/propTypes'
 import { TipSchema } from '@/types/infoTip'
diff --git a/yudao-ui-admin-vue3/src/components/InputPassword/src/InputPassword.vue b/yudao-ui-admin-vue3/src/components/InputPassword/src/InputPassword.vue
index ff4a4bbc8..9e82cd41a 100644
--- a/yudao-ui-admin-vue3/src/components/InputPassword/src/InputPassword.vue
+++ b/yudao-ui-admin-vue3/src/components/InputPassword/src/InputPassword.vue
@@ -1,6 +1,4 @@
 <script setup lang="ts">
-import { ref, unref, computed, watch } from 'vue'
-import { ElInput } from 'element-plus'
 import { propTypes } from '@/utils/propTypes'
 import { useConfigGlobal } from '@/hooks/web/useConfigGlobal'
 import { zxcvbn } from '@zxcvbn-ts/core'
diff --git a/yudao-ui-admin-vue3/src/components/Search/src/Search.vue b/yudao-ui-admin-vue3/src/components/Search/src/Search.vue
index 68d06085e..66d0a590f 100644
--- a/yudao-ui-admin-vue3/src/components/Search/src/Search.vue
+++ b/yudao-ui-admin-vue3/src/components/Search/src/Search.vue
@@ -1,8 +1,6 @@
 <script setup lang="ts">
-import { Form } from '@/components/Form'
-import { PropType, computed, unref, ref } from 'vue'
+import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
-import { ElButton } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useForm } from '@/hooks/web/useForm'
 import { findIndex } from '@/utils'
diff --git a/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue b/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue
index 6906fbc34..c07452a40 100644
--- a/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue
+++ b/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue
@@ -1,7 +1,5 @@
 <script setup lang="ts">
 import { propTypes } from '@/utils/propTypes'
-import { ref, onMounted, onActivated, shallowRef } from 'vue'
-import { useEventListener, useWindowSize, isClient } from '@vueuse/core'
 import type { CSSProperties } from 'vue'
 const props = defineProps({
   // 距离顶部或者底部的距离(单位px)
diff --git a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
index 4706cac93..061c60fb0 100644
--- a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
+++ b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
@@ -33,11 +33,10 @@
   </div>
 </template>
 <script setup lang="ts" name="UploadFile">
-import { PropType, ref } from 'vue'
+import { PropType } from 'vue'
 import { useMessage } from '@/hooks/web/useMessage'
 import { propTypes } from '@/utils/propTypes'
 import { getAccessToken, getTenantId } from '@/utils/auth'
-import { ElUpload, UploadInstance, UploadProps, UploadRawFile, UploadUserFile } from 'element-plus'
 
 const message = useMessage() // 消息弹窗
 const emit = defineEmits(['update:modelValue'])
diff --git a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue
index 7f7b3a484..7a83a8d17 100644
--- a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue
+++ b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue
@@ -51,9 +51,7 @@
 </template>
 
 <script setup lang="ts" name="UploadImg">
-import { ref } from 'vue'
 import type { UploadProps } from 'element-plus'
-import { ElUpload, ElNotification, ElImageViewer } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { generateUUID } from '@/utils'
@@ -111,17 +109,8 @@ const beforeUpload: UploadProps['beforeUpload'] = (rawFile) => {
   const imgSize = rawFile.size / 1024 / 1024 < props.fileSize
   const imgType = props.fileType
   if (!imgType.includes(rawFile.type as FileTypes))
-    ElNotification({
-      title: '温馨提示',
-      message: '上传图片不符合所需的格式!',
-      type: 'warning'
-    })
-  if (!imgSize)
-    ElNotification({
-      title: '温馨提示',
-      message: `上传图片大小不能超过 ${props.fileSize}M!`,
-      type: 'warning'
-    })
+    message.notifyWarning('上传图片不符合所需的格式!')
+  if (!imgSize) message.notifyWarning(`上传图片大小不能超过 ${props.fileSize}M!`)
   return imgType.includes(rawFile.type as FileTypes) && imgSize
 }
 
@@ -133,11 +122,7 @@ const uploadSuccess: UploadProps['onSuccess'] = (res: any): void => {
 
 // 图片上传错误提示
 const uploadError = () => {
-  ElNotification({
-    title: '温馨提示',
-    message: '图片上传失败,请您重新上传!',
-    type: 'error'
-  })
+  message.notifyError('图片上传失败,请您重新上传!')
 }
 </script>
 <style scoped lang="scss">
diff --git a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue
index 0fdbb1cbd..40e4a2734 100644
--- a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue
+++ b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue
@@ -80,16 +80,6 @@ import { aesEncrypt } from './../utils/ase'
 import { resetSize } from './../utils/util'
 import { getCodeApi, reqCheckApi } from '@/api/login'
 import { useI18n } from '@/hooks/web/useI18n'
-import {
-  computed,
-  onMounted,
-  reactive,
-  ref,
-  watch,
-  nextTick,
-  toRefs,
-  getCurrentInstance
-} from 'vue'
 
 const props = defineProps({
   captchaType: {
diff --git a/yudao-ui-admin-vue3/src/components/XButton/src/XButton.vue b/yudao-ui-admin-vue3/src/components/XButton/src/XButton.vue
index 13c35bef3..3ef712302 100644
--- a/yudao-ui-admin-vue3/src/components/XButton/src/XButton.vue
+++ b/yudao-ui-admin-vue3/src/components/XButton/src/XButton.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
+import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
-import { computed, useAttrs, PropType } from 'vue'
 
 const props = defineProps({
   modelValue: propTypes.bool.def(false),
diff --git a/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue b/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue
index 9a3a8a56b..e43d66780 100644
--- a/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue
+++ b/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import { propTypes } from '@/utils/propTypes'
-import { computed, useAttrs, PropType } from 'vue'
 
 const props = defineProps({
   modelValue: propTypes.bool.def(false),
diff --git a/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue b/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue
index 84200ad14..e705cf8a0 100644
--- a/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue
+++ b/yudao-ui-admin-vue3/src/components/XModal/src/XModal.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import { propTypes } from '@/utils/propTypes'
-import { computed, useAttrs, useSlots } from 'vue'
 import { ElScrollbar } from 'element-plus'
 const slots = useSlots()
 
diff --git a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
index 3abbe9102..bf2956b08 100644
--- a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
+++ b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
@@ -6,7 +6,7 @@
   </VxeGrid>
 </template>
 <script lang="ts" setup name="XTable">
-import { computed, PropType, ref, unref, useAttrs, watch } from 'vue'
+import { PropType } from 'vue'
 import { SizeType, VxeGridInstance } from 'vxe-table'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/hooks/event/useScrollTo.ts b/yudao-ui-admin-vue3/src/hooks/event/useScrollTo.ts
index 74fd673c8..92aec8722 100644
--- a/yudao-ui-admin-vue3/src/hooks/event/useScrollTo.ts
+++ b/yudao-ui-admin-vue3/src/hooks/event/useScrollTo.ts
@@ -1,5 +1,3 @@
-import { ref, unref } from 'vue'
-
 export interface ScrollToParams {
   el: HTMLElement
   to: number
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useConfigGlobal.ts b/yudao-ui-admin-vue3/src/hooks/web/useConfigGlobal.ts
index bde9d7881..afb3db3a9 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useConfigGlobal.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useConfigGlobal.ts
@@ -1,5 +1,4 @@
 import { ConfigGlobalTypes } from '@/types/configGlobal'
-import { inject } from 'vue'
 
 export const useConfigGlobal = () => {
   const configGlobal = inject('configGlobal', {}) as ConfigGlobalTypes
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useEmitt.ts b/yudao-ui-admin-vue3/src/hooks/web/useEmitt.ts
index 26b5d626c..d4efea728 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useEmitt.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useEmitt.ts
@@ -1,5 +1,4 @@
 import mitt from 'mitt'
-import { onBeforeUnmount } from 'vue'
 
 interface Option {
   name: string // 事件名称
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useForm.ts b/yudao-ui-admin-vue3/src/hooks/web/useForm.ts
index 356ee8f9c..53a8a94d1 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useForm.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useForm.ts
@@ -1,6 +1,5 @@
 import type { Form, FormExpose } from '@/components/Form'
 import type { ElForm } from 'element-plus'
-import { ref, unref, nextTick } from 'vue'
 import type { FormProps } from '@/components/Form/src/types'
 import { FormSchema, FormSetPropsType } from '@/types/form'
 
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts b/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts
index 28990e7de..6ebd51f97 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts
@@ -1,8 +1,6 @@
-import { nextTick, unref } from 'vue'
 import type { NProgressOptions } from 'nprogress'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
-import { useCssVar } from '@vueuse/core'
 
 const primaryColor = useCssVar('--el-color-primary', document.documentElement)
 
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useTimeAgo.ts b/yudao-ui-admin-vue3/src/hooks/web/useTimeAgo.ts
index b6d186227..08f5d1e66 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useTimeAgo.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useTimeAgo.ts
@@ -1,5 +1,4 @@
 import { useTimeAgo as useTimeAgoCore, UseTimeAgoMessages } from '@vueuse/core'
-import { computed, unref } from 'vue'
 import { useLocaleStoreWithOut } from '@/store/modules/locale'
 
 const TIME_AGO_MESSAGE_MAP: {
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts b/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
index 315dae8f0..d906fa30b 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import {
   FormItemRenderOptions,
   VxeColumnPropTypes,
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts b/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts
index b258a2523..fddb7c46d 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useXTable.ts
@@ -1,4 +1,3 @@
-import { ref, unref } from 'vue'
 import { XTableProps } from '@/components/XTable/src/type'
 
 export interface tableMethod {
diff --git a/yudao-ui-admin-vue3/src/layout/components/AppView.vue b/yudao-ui-admin-vue3/src/layout/components/AppView.vue
index 6f33a07a4..dda59ed17 100644
--- a/yudao-ui-admin-vue3/src/layout/components/AppView.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/AppView.vue
@@ -2,7 +2,6 @@
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useAppStore } from '@/store/modules/app'
 import { Footer } from '@/layout/components/Footer'
-import { computed } from 'vue'
 
 const appStore = useAppStore()
 
diff --git a/yudao-ui-admin-vue3/src/layout/components/Collapse/src/Collapse.vue b/yudao-ui-admin-vue3/src/layout/components/Collapse/src/Collapse.vue
index 197b86d41..a8f47dc67 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Collapse/src/Collapse.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Collapse/src/Collapse.vue
@@ -1,5 +1,4 @@
 <script setup lang="ts">
-import { computed, unref } from 'vue'
 import { useAppStore } from '@/store/modules/app'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue b/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue
index ed986162f..503f46ead 100644
--- a/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue
@@ -1,10 +1,10 @@
 <script setup lang="ts">
-import { ElDropdown, ElDropdownMenu, ElDropdownItem } from 'element-plus'
-import { PropType, ref } from 'vue'
+import { PropType } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useDesign } from '@/hooks/web/useDesign'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
 import { contextMenuSchema } from '@/types/contextMenu'
+import type { ElDropdown } from 'element-plus'
 
 const { getPrefixCls } = useDesign()
 
diff --git a/yudao-ui-admin-vue3/src/layout/components/Footer/src/Footer.vue b/yudao-ui-admin-vue3/src/layout/components/Footer/src/Footer.vue
index 00c83ed4c..239812c68 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Footer/src/Footer.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Footer/src/Footer.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import { useAppStore } from '@/store/modules/app'
-import { computed } from 'vue'
 import { useDesign } from '@/hooks/web/useDesign'
 
 const { getPrefixCls } = useDesign()
diff --git a/yudao-ui-admin-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue b/yudao-ui-admin-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue
index 9040908c5..0e56724ba 100644
--- a/yudao-ui-admin-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue
@@ -1,6 +1,4 @@
 <script setup lang="ts">
-import { computed, unref } from 'vue'
-import { ElDropdown, ElDropdownMenu, ElDropdownItem } from 'element-plus'
 import { useLocaleStore } from '@/store/modules/locale'
 import { useLocale } from '@/hooks/web/useLocale'
 import { propTypes } from '@/utils/propTypes'
diff --git a/yudao-ui-admin-vue3/src/layout/components/Menu/src/Menu.vue b/yudao-ui-admin-vue3/src/layout/components/Menu/src/Menu.vue
index 40718d093..4d22f7da3 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Menu/src/Menu.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Menu/src/Menu.vue
@@ -1,10 +1,9 @@
 <script lang="tsx">
-import { computed, defineComponent, unref, PropType } from 'vue'
+import { PropType } from 'vue'
 import { ElMenu, ElScrollbar } from 'element-plus'
 import { useAppStore } from '@/store/modules/app'
 import { usePermissionStore } from '@/store/modules/permission'
 import { useRenderMenuItem } from './components/useRenderMenuItem'
-import { useRouter } from 'vue-router'
 import { isUrl } from '@/utils/is'
 import { useDesign } from '@/hooks/web/useDesign'
 import { LayoutType } from '@/types/layout'
diff --git a/yudao-ui-admin-vue3/src/layout/components/Menu/src/helper.ts b/yudao-ui-admin-vue3/src/layout/components/Menu/src/helper.ts
index b48388139..c26f5f4bf 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Menu/src/helper.ts
+++ b/yudao-ui-admin-vue3/src/layout/components/Menu/src/helper.ts
@@ -1,5 +1,4 @@
 import type { RouteMeta } from 'vue-router'
-import { ref, unref } from 'vue'
 import { findPath } from '@/utils/tree'
 
 type OnlyOneChildType = AppRouteRecordRaw & { noShowingChildren?: boolean }
diff --git a/yudao-ui-admin-vue3/src/layout/components/Message/src/Message.vue b/yudao-ui-admin-vue3/src/layout/components/Message/src/Message.vue
index 205683f97..ba21cfdce 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Message/src/Message.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Message/src/Message.vue
@@ -1,7 +1,4 @@
 <script setup lang="ts">
-import { ref } from 'vue'
-import { ElTabs, ElTabPane, ElPopover, ElBadge } from 'element-plus'
-
 const activeName = ref('notice')
 
 const noticeList = ref([
diff --git a/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue b/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue
index 14bb7393d..4d73835c4 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
-import { ElDrawer, ElDivider, ElMessage } from 'element-plus'
-import { ref, unref, computed, watch } from 'vue'
+import { ElMessage } from 'element-plus'
 import { useCssVar, useClipboard } from '@vueuse/core'
 import { useI18n } from '@/hooks/web/useI18n'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
diff --git a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue
index 9787ea7f8..7c5e24048 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/ColorRadioPicker.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { PropType, watch, unref, ref } from 'vue'
+import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
 
diff --git a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue
index f44397c45..da7b81f52 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue
@@ -1,6 +1,4 @@
 <script setup lang="ts">
-import { computed, ref, watch } from 'vue'
-import { ElSwitch, ElInput } from 'element-plus'
 import { setCssVar } from '@/utils'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue
index 0932471af..07dbab95d 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/LayoutRadioPicker.vue
@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import { useAppStore } from '@/store/modules/app'
-import { computed } from 'vue'
 import { useDesign } from '@/hooks/web/useDesign'
 
 const { getPrefixCls } = useDesign()
diff --git a/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue b/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue
index cb8d9f849..99eecdf88 100644
--- a/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue
@@ -1,6 +1,4 @@
 <script setup lang="ts">
-import { computed } from 'vue'
-import { ElDropdown, ElDropdownMenu, ElDropdownItem } from 'element-plus'
 import { useAppStore } from '@/store/modules/app'
 import { useI18n } from '@/hooks/web/useI18n'
 import { propTypes } from '@/utils/propTypes'
diff --git a/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue b/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue
index 0e5b69081..cb5d4ea6e 100644
--- a/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue
@@ -1,12 +1,10 @@
 <script lang="tsx">
 import { usePermissionStore } from '@/store/modules/permission'
 import { useAppStore } from '@/store/modules/app'
-import { computed, unref, defineComponent, watch, ref, onMounted } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { ElScrollbar } from 'element-plus'
 import { Icon } from '@/components/Icon'
 import { Menu } from '@/layout/components/Menu'
-import { useRouter } from 'vue-router'
 import { pathResolve } from '@/utils/routerHelper'
 import { cloneDeep } from 'lodash-es'
 import { filterMenusPath, initTabMap, tabPathMap } from './helper'
diff --git a/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/helper.ts b/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/helper.ts
index 37a1a6869..cce39323d 100644
--- a/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/helper.ts
+++ b/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/helper.ts
@@ -2,7 +2,6 @@ import { getAllParentPath } from '@/layout/components/Menu/src/helper'
 import type { RouteMeta } from 'vue-router'
 import { isUrl } from '@/utils/is'
 import { cloneDeep } from 'lodash-es'
-import { reactive } from 'vue'
 
 export type TabMapTypes = {
   [key: string]: string[]
diff --git a/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue b/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
index e1ab3cb05..154a4f303 100644
--- a/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
@@ -1,6 +1,4 @@
 <script setup lang="ts">
-import { onMounted, watch, computed, unref, ref, nextTick } from 'vue'
-import { useRouter } from 'vue-router'
 import type { RouteLocationNormalizedLoaded, RouterLinkProps } from 'vue-router'
 import { usePermissionStore } from '@/store/modules/permission'
 import { useTagsViewStore } from '@/store/modules/tagsView'
@@ -9,7 +7,6 @@ import { useI18n } from '@/hooks/web/useI18n'
 import { filterAffixTags } from './helper'
 import { ContextMenu, ContextMenuExpose } from '@/layout/components/ContextMenu'
 import { useDesign } from '@/hooks/web/useDesign'
-import { useTemplateRefsList } from '@vueuse/core'
 import { ElScrollbar } from 'element-plus'
 import { useScrollTo } from '@/hooks/event/useScrollTo'
 
diff --git a/yudao-ui-admin-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue b/yudao-ui-admin-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue
index 25221d16a..1af67cf0b 100644
--- a/yudao-ui-admin-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue
@@ -1,7 +1,5 @@
 <script setup lang="ts">
-import { ref } from 'vue'
 import { useAppStore } from '@/store/modules/app'
-import { ElSwitch } from 'element-plus'
 import { useIcon } from '@/hooks/web/useIcon'
 import { useDesign } from '@/hooks/web/useDesign'
 
diff --git a/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue b/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue
index 2259d693f..de99624e1 100644
--- a/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue
@@ -1,8 +1,7 @@
 <script setup lang="ts">
-import { ElDropdown, ElDropdownMenu, ElDropdownItem, ElMessageBox } from 'element-plus'
+import { ElMessageBox } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
-import { useRouter } from 'vue-router'
 import { useDesign } from '@/hooks/web/useDesign'
 import avatarImg from '@/assets/imgs/avatar.gif'
 import { useUserStore } from '@/store/modules/user'
diff --git a/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts b/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
index bfaea8604..e105ebb95 100644
--- a/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
+++ b/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
@@ -1,4 +1,4 @@
-import { App, unref } from 'vue'
+import { App } from 'vue'
 import XEUtils from 'xe-utils'
 import './renderer'
 import { i18n } from '@/plugins/vueI18n'
diff --git a/yudao-ui-admin-vue3/src/types/auto-components.d.ts b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
index 0106ea8f7..363bf13ee 100644
--- a/yudao-ui-admin-vue3/src/types/auto-components.d.ts
+++ b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
@@ -21,17 +21,44 @@ declare module '@vue/runtime-core' {
     DictTag: typeof import('./../components/DictTag/src/DictTag.vue')['default']
     Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
     Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
+    ElBadge: typeof import('element-plus/es')['ElBadge']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElCard: typeof import('element-plus/es')['ElCard']
     ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
     ElCol: typeof import('element-plus/es')['ElCol']
+    ElCollapseTransition: typeof import('element-plus/es')['ElCollapseTransition']
+    ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
+    ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
+    ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
     ElDivider: typeof import('element-plus/es')['ElDivider']
+    ElDrawer: typeof import('element-plus/es')['ElDrawer']
+    ElDropdown: typeof import('element-plus/es')['ElDropdown']
+    ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
+    ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
     ElForm: typeof import('element-plus/es')['ElForm']
     ElFormItem: typeof import('element-plus/es')['ElFormItem']
+    ElIcon: typeof import('element-plus/es')['ElIcon']
+    ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
     ElInput: typeof import('element-plus/es')['ElInput']
+    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
     ElLink: typeof import('element-plus/es')['ElLink']
+    ElOption: typeof import('element-plus/es')['ElOption']
+    ElPopover: typeof import('element-plus/es')['ElPopover']
+    ElRadio: typeof import('element-plus/es')['ElRadio']
+    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
+    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
+    ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
+    ElSwitch: typeof import('element-plus/es')['ElSwitch']
+    ElTabPane: typeof import('element-plus/es')['ElTabPane']
+    ElTabs: typeof import('element-plus/es')['ElTabs']
+    ElTag: typeof import('element-plus/es')['ElTag']
+    ElTooltip: typeof import('element-plus/es')['ElTooltip']
+    ElTransfer: typeof import('element-plus/es')['ElTransfer']
+    ElTree: typeof import('element-plus/es')['ElTree']
+    ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
+    ElUpload: typeof import('element-plus/es')['ElUpload']
     Error: typeof import('./../components/Error/src/Error.vue')['default']
     Form: typeof import('./../components/Form/src/Form.vue')['default']
     Highlight: typeof import('./../components/Highlight/src/Highlight.vue')['default']
diff --git a/yudao-ui-admin-vue3/src/utils/index.ts b/yudao-ui-admin-vue3/src/utils/index.ts
index b413a2b5a..d30584738 100644
--- a/yudao-ui-admin-vue3/src/utils/index.ts
+++ b/yudao-ui-admin-vue3/src/utils/index.ts
@@ -1,5 +1,3 @@
-// import type { Plugin } from 'vue'
-
 /**
  *
  * @param component 需要注册的组件
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue b/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
index 77edd12b9..2a80a5a95 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
@@ -11,9 +11,8 @@
   <XButton type="danger" :title="t('common.reset')" @click="init()" />
 </template>
 <script setup lang="ts">
-import { reactive, onMounted, unref, ref } from 'vue'
 import type { FormRules } from 'element-plus'
-import { ElMessage, ElRadioGroup, ElRadio } from 'element-plus'
+import { ElMessage } from 'element-plus'
 import { useI18n } from '@/hooks/web/useI18n'
 import { FormSchema } from '@/types/form'
 import type { FormExpose } from '@/components/Form'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts b/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts
index ce363a131..4838cd387 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts
@@ -1,4 +1,3 @@
-import { reactive } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
 import { DICT_TYPE } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
index c174a0f95..1c14f1627 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
@@ -21,7 +21,6 @@
   </ContentWrap>
 </template>
 <script setup lang="ts">
-import { useRouter, useRoute } from 'vue-router'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { BasicInfoForm, CloumInfoForm } from './components'

From fcd19e13711124ddca6de118018386f3a71eacc7 Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 13:48:25 +0800
Subject: [PATCH 04/10] feat: remove vueuse

---
 yudao-ui-admin-vue3/build/vite/index.ts       |   2 +-
 .../ConfigGlobal/src/ConfigGlobal.vue         |   1 +
 .../src/components/Cropper/src/Cropper.vue    |   1 +
 .../src/components/Sticky/src/Sticky.vue      |   1 +
 .../components/UploadFile/src/UploadFile.vue  |   1 +
 .../components/XButton/src/XTextButton.vue    |   1 +
 .../src/hooks/web/useNProgress.ts             |   1 +
 .../components/TagsView/src/TagsView.vue      |   1 +
 .../src/types/auto-imports.d.ts               | 206 ------------------
 .../infra/codegen/components/Preview.vue      |   1 +
 .../src/views/infra/fileList/index.vue        |   1 +
 .../src/views/infra/webSocket/index.vue       |   1 +
 12 files changed, 11 insertions(+), 207 deletions(-)

diff --git a/yudao-ui-admin-vue3/build/vite/index.ts b/yudao-ui-admin-vue3/build/vite/index.ts
index 10687978e..34ffc9b1c 100644
--- a/yudao-ui-admin-vue3/build/vite/index.ts
+++ b/yudao-ui-admin-vue3/build/vite/index.ts
@@ -32,7 +32,7 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
     PurgeIcons(),
     vueSetupExtend(),
     AutoImport({
-      imports: ['vue', 'vue-router', '@vueuse/core'],
+      imports: ['vue', 'vue-router'],
       dts: 'src/types/auto-imports.d.ts',
       resolvers: [ElementPlusResolver()],
       eslintrc: {
diff --git a/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue b/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue
index 103259ef6..10a0a9f2f 100644
--- a/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue
+++ b/yudao-ui-admin-vue3/src/components/ConfigGlobal/src/ConfigGlobal.vue
@@ -5,6 +5,7 @@ import { useAppStore } from '@/store/modules/app'
 import { setCssVar } from '@/utils'
 import { useDesign } from '@/hooks/web/useDesign'
 import { ElementPlusSize } from '@/types/elementPlus'
+import { useWindowSize } from '@vueuse/core'
 
 const { variables } = useDesign()
 
diff --git a/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue b/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue
index 822f0712d..459c97fac 100644
--- a/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue
+++ b/yudao-ui-admin-vue3/src/components/Cropper/src/Cropper.vue
@@ -16,6 +16,7 @@ import Cropper from 'cropperjs'
 import 'cropperjs/dist/cropper.css'
 import { useDesign } from '@/hooks/web/useDesign'
 import { propTypes } from '@/utils/propTypes'
+import { useDebounceFn } from '@vueuse/core'
 
 type Options = Cropper.Options
 
diff --git a/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue b/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue
index c07452a40..5d6680592 100644
--- a/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue
+++ b/yudao-ui-admin-vue3/src/components/Sticky/src/Sticky.vue
@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { propTypes } from '@/utils/propTypes'
+import { isClient, useEventListener, useWindowSize } from '@vueuse/core'
 import type { CSSProperties } from 'vue'
 const props = defineProps({
   // 距离顶部或者底部的距离(单位px)
diff --git a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
index 061c60fb0..aa49b0cef 100644
--- a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
+++ b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
@@ -37,6 +37,7 @@ import { PropType } from 'vue'
 import { useMessage } from '@/hooks/web/useMessage'
 import { propTypes } from '@/utils/propTypes'
 import { getAccessToken, getTenantId } from '@/utils/auth'
+import type { UploadInstance, UploadUserFile, UploadProps, UploadRawFile } from 'element-plus'
 
 const message = useMessage() // 消息弹窗
 const emit = defineEmits(['update:modelValue'])
diff --git a/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue b/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue
index e43d66780..a256a9851 100644
--- a/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue
+++ b/yudao-ui-admin-vue3/src/components/XButton/src/XTextButton.vue
@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { propTypes } from '@/utils/propTypes'
+import { PropType } from 'vue'
 
 const props = defineProps({
   modelValue: propTypes.bool.def(false),
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts b/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts
index 6ebd51f97..6d8c0b910 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useNProgress.ts
@@ -1,3 +1,4 @@
+import { useCssVar } from '@vueuse/core'
 import type { NProgressOptions } from 'nprogress'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
diff --git a/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue b/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
index 154a4f303..eae5482e8 100644
--- a/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
@@ -9,6 +9,7 @@ import { ContextMenu, ContextMenuExpose } from '@/layout/components/ContextMenu'
 import { useDesign } from '@/hooks/web/useDesign'
 import { ElScrollbar } from 'element-plus'
 import { useScrollTo } from '@/hooks/event/useScrollTo'
+import { useTemplateRefsList } from '@vueuse/core'
 
 const { getPrefixCls } = useDesign()
 
diff --git a/yudao-ui-admin-vue3/src/types/auto-imports.d.ts b/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
index 66af6974a..00b0fed02 100644
--- a/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
+++ b/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
@@ -2,41 +2,20 @@
 export {}
 declare global {
   const EffectScope: typeof import('vue')['EffectScope']
-  const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
-  const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
   const computed: typeof import('vue')['computed']
-  const computedAsync: typeof import('@vueuse/core')['computedAsync']
-  const computedEager: typeof import('@vueuse/core')['computedEager']
-  const computedInject: typeof import('@vueuse/core')['computedInject']
-  const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
-  const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
-  const controlledRef: typeof import('@vueuse/core')['controlledRef']
   const createApp: typeof import('vue')['createApp']
-  const createEventHook: typeof import('@vueuse/core')['createEventHook']
-  const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
-  const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
-  const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
-  const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
-  const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
   const customRef: typeof import('vue')['customRef']
-  const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
-  const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
   const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
   const defineComponent: typeof import('vue')['defineComponent']
-  const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
   const effectScope: typeof import('vue')['effectScope']
-  const extendRef: typeof import('@vueuse/core')['extendRef']
   const getCurrentInstance: typeof import('vue')['getCurrentInstance']
   const getCurrentScope: typeof import('vue')['getCurrentScope']
   const h: typeof import('vue')['h']
-  const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
   const inject: typeof import('vue')['inject']
-  const isDefined: typeof import('@vueuse/core')['isDefined']
   const isProxy: typeof import('vue')['isProxy']
   const isReactive: typeof import('vue')['isReactive']
   const isReadonly: typeof import('vue')['isReadonly']
   const isRef: typeof import('vue')['isRef']
-  const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
   const markRaw: typeof import('vue')['markRaw']
   const nextTick: typeof import('vue')['nextTick']
   const onActivated: typeof import('vue')['onActivated']
@@ -45,223 +24,38 @@ declare global {
   const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
   const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
   const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
-  const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
   const onDeactivated: typeof import('vue')['onDeactivated']
   const onErrorCaptured: typeof import('vue')['onErrorCaptured']
-  const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
-  const onLongPress: typeof import('@vueuse/core')['onLongPress']
   const onMounted: typeof import('vue')['onMounted']
   const onRenderTracked: typeof import('vue')['onRenderTracked']
   const onRenderTriggered: typeof import('vue')['onRenderTriggered']
   const onScopeDispose: typeof import('vue')['onScopeDispose']
   const onServerPrefetch: typeof import('vue')['onServerPrefetch']
-  const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
   const onUnmounted: typeof import('vue')['onUnmounted']
   const onUpdated: typeof import('vue')['onUpdated']
-  const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
   const provide: typeof import('vue')['provide']
-  const reactify: typeof import('@vueuse/core')['reactify']
-  const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
   const reactive: typeof import('vue')['reactive']
-  const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
-  const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
-  const reactivePick: typeof import('@vueuse/core')['reactivePick']
   const readonly: typeof import('vue')['readonly']
   const ref: typeof import('vue')['ref']
-  const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
-  const refDebounced: typeof import('@vueuse/core')['refDebounced']
-  const refDefault: typeof import('@vueuse/core')['refDefault']
-  const refThrottled: typeof import('@vueuse/core')['refThrottled']
-  const refWithControl: typeof import('@vueuse/core')['refWithControl']
   const resolveComponent: typeof import('vue')['resolveComponent']
   const resolveDirective: typeof import('vue')['resolveDirective']
-  const resolveRef: typeof import('@vueuse/core')['resolveRef']
-  const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
   const shallowReactive: typeof import('vue')['shallowReactive']
   const shallowReadonly: typeof import('vue')['shallowReadonly']
   const shallowRef: typeof import('vue')['shallowRef']
-  const syncRef: typeof import('@vueuse/core')['syncRef']
-  const syncRefs: typeof import('@vueuse/core')['syncRefs']
-  const templateRef: typeof import('@vueuse/core')['templateRef']
-  const throttledRef: typeof import('@vueuse/core')['throttledRef']
-  const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
   const toRaw: typeof import('vue')['toRaw']
-  const toReactive: typeof import('@vueuse/core')['toReactive']
   const toRef: typeof import('vue')['toRef']
   const toRefs: typeof import('vue')['toRefs']
   const triggerRef: typeof import('vue')['triggerRef']
-  const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
-  const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
-  const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
-  const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
-  const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
   const unref: typeof import('vue')['unref']
-  const unrefElement: typeof import('@vueuse/core')['unrefElement']
-  const until: typeof import('@vueuse/core')['until']
-  const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
-  const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
-  const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
-  const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
-  const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
-  const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
-  const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
-  const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
-  const useArraySome: typeof import('@vueuse/core')['useArraySome']
-  const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
-  const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
-  const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
   const useAttrs: typeof import('vue')['useAttrs']
-  const useBase64: typeof import('@vueuse/core')['useBase64']
-  const useBattery: typeof import('@vueuse/core')['useBattery']
-  const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
-  const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
-  const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
-  const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
-  const useCached: typeof import('@vueuse/core')['useCached']
-  const useClipboard: typeof import('@vueuse/core')['useClipboard']
-  const useCloned: typeof import('@vueuse/core')['useCloned']
-  const useColorMode: typeof import('@vueuse/core')['useColorMode']
-  const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
-  const useCounter: typeof import('@vueuse/core')['useCounter']
   const useCssModule: typeof import('vue')['useCssModule']
-  const useCssVar: typeof import('@vueuse/core')['useCssVar']
   const useCssVars: typeof import('vue')['useCssVars']
-  const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
-  const useCycleList: typeof import('@vueuse/core')['useCycleList']
-  const useDark: typeof import('@vueuse/core')['useDark']
-  const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
-  const useDebounce: typeof import('@vueuse/core')['useDebounce']
-  const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
-  const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
-  const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
-  const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
-  const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
-  const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
-  const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
-  const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
-  const useDraggable: typeof import('@vueuse/core')['useDraggable']
-  const useDropZone: typeof import('@vueuse/core')['useDropZone']
-  const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
-  const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
-  const useElementHover: typeof import('@vueuse/core')['useElementHover']
-  const useElementSize: typeof import('@vueuse/core')['useElementSize']
-  const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
-  const useEventBus: typeof import('@vueuse/core')['useEventBus']
-  const useEventListener: typeof import('@vueuse/core')['useEventListener']
-  const useEventSource: typeof import('@vueuse/core')['useEventSource']
-  const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
-  const useFavicon: typeof import('@vueuse/core')['useFavicon']
-  const useFetch: typeof import('@vueuse/core')['useFetch']
-  const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
-  const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
-  const useFocus: typeof import('@vueuse/core')['useFocus']
-  const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
-  const useFps: typeof import('@vueuse/core')['useFps']
-  const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
-  const useGamepad: typeof import('@vueuse/core')['useGamepad']
-  const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
-  const useIdle: typeof import('@vueuse/core')['useIdle']
-  const useImage: typeof import('@vueuse/core')['useImage']
-  const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
-  const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
-  const useInterval: typeof import('@vueuse/core')['useInterval']
-  const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
-  const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
-  const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
   const useLink: typeof import('vue-router')['useLink']
-  const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
-  const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
-  const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
-  const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
-  const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
-  const useMemoize: typeof import('@vueuse/core')['useMemoize']
-  const useMemory: typeof import('@vueuse/core')['useMemory']
-  const useMounted: typeof import('@vueuse/core')['useMounted']
-  const useMouse: typeof import('@vueuse/core')['useMouse']
-  const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
-  const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
-  const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
-  const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
-  const useNetwork: typeof import('@vueuse/core')['useNetwork']
-  const useNow: typeof import('@vueuse/core')['useNow']
-  const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
-  const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
-  const useOnline: typeof import('@vueuse/core')['useOnline']
-  const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
-  const useParallax: typeof import('@vueuse/core')['useParallax']
-  const usePermission: typeof import('@vueuse/core')['usePermission']
-  const usePointer: typeof import('@vueuse/core')['usePointer']
-  const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
-  const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
-  const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
-  const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
-  const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
-  const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
-  const useRafFn: typeof import('@vueuse/core')['useRafFn']
-  const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
-  const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
   const useRoute: typeof import('vue-router')['useRoute']
   const useRouter: typeof import('vue-router')['useRouter']
-  const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
-  const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
-  const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
-  const useScroll: typeof import('@vueuse/core')['useScroll']
-  const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
-  const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
-  const useShare: typeof import('@vueuse/core')['useShare']
   const useSlots: typeof import('vue')['useSlots']
-  const useSorted: typeof import('@vueuse/core')['useSorted']
-  const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
-  const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
-  const useStepper: typeof import('@vueuse/core')['useStepper']
-  const useStorage: typeof import('@vueuse/core')['useStorage']
-  const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
-  const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
-  const useSupported: typeof import('@vueuse/core')['useSupported']
-  const useSwipe: typeof import('@vueuse/core')['useSwipe']
-  const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
-  const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
-  const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
-  const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
-  const useThrottle: typeof import('@vueuse/core')['useThrottle']
-  const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
-  const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
-  const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
-  const useTimeout: typeof import('@vueuse/core')['useTimeout']
-  const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
-  const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
-  const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
-  const useTitle: typeof import('@vueuse/core')['useTitle']
-  const useToNumber: typeof import('@vueuse/core')['useToNumber']
-  const useToString: typeof import('@vueuse/core')['useToString']
-  const useToggle: typeof import('@vueuse/core')['useToggle']
-  const useTransition: typeof import('@vueuse/core')['useTransition']
-  const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
-  const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
-  const useVModel: typeof import('@vueuse/core')['useVModel']
-  const useVModels: typeof import('@vueuse/core')['useVModels']
-  const useVibrate: typeof import('@vueuse/core')['useVibrate']
-  const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
-  const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
-  const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
-  const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
-  const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
-  const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
-  const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
-  const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
-  const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
   const watch: typeof import('vue')['watch']
-  const watchArray: typeof import('@vueuse/core')['watchArray']
-  const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
-  const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
   const watchEffect: typeof import('vue')['watchEffect']
-  const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
-  const watchOnce: typeof import('@vueuse/core')['watchOnce']
-  const watchPausable: typeof import('@vueuse/core')['watchPausable']
   const watchPostEffect: typeof import('vue')['watchPostEffect']
   const watchSyncEffect: typeof import('vue')['watchSyncEffect']
-  const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
-  const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
-  const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
-  const whenever: typeof import('@vueuse/core')['whenever']
 }
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
index 41df0575c..3b4aafaf5 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
@@ -30,6 +30,7 @@
   </XModal>
 </template>
 <script setup lang="ts">
+import { useClipboard } from '@vueuse/core'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useMessage } from '@/hooks/web/useMessage'
 import { handleTree2 } from '@/utils/tree'
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue b/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
index b0a5508d7..320a55cc0 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
@@ -90,6 +90,7 @@ import type { UploadInstance, UploadRawFile } from 'element-plus'
 import { allSchemas } from './fileList.data'
 import * as FileApi from '@/api/infra/fileList'
 import { getAccessToken, getTenantId } from '@/utils/auth'
+import { useClipboard } from '@vueuse/core'
 
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
diff --git a/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue b/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue
index 1e7c5c9f3..655045c05 100644
--- a/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/webSocket/index.vue
@@ -58,6 +58,7 @@
 <script setup lang="ts">
 import dayjs from 'dayjs'
 import { useUserStore } from '@/store/modules/user'
+import { useWebSocket } from '@vueuse/core'
 
 const userStore = useUserStore()
 

From 8c74e527a9aee2ac0e69e1d64279e0e13ab8f021 Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 14:23:45 +0800
Subject: [PATCH 05/10] perf: aotu import hooks

---
 yudao-ui-admin-vue3/build/vite/index.ts       | 19 ++++++++++++++++++-
 yudao-ui-admin-vue3/package.json              |  2 +-
 .../src/ContentDetailWrap.vue                 |  2 +-
 .../components/Cropper/src/CropperAvatar.vue  |  2 +-
 .../src/components/Error/src/Error.vue        |  1 -
 .../src/components/Form/src/helper.ts         |  1 -
 .../src/components/Search/src/Search.vue      |  2 +-
 .../components/UploadFile/src/UploadFile.vue  |  2 +-
 .../components/UploadFile/src/UploadImg.vue   |  3 +--
 .../components/UploadFile/src/UploadImgs.vue  |  2 +-
 .../src/components/Verifition/src/Verify.vue  |  1 -
 .../Verifition/src/Verify/VerifyPoints.vue    |  1 -
 .../Verifition/src/Verify/VerifySlide.vue     |  1 -
 .../src/components/XTable/src/XTable.vue      |  3 +--
 .../src/config/axios/service.ts               |  2 +-
 .../src/directives/permission/hasPermi.ts     |  2 +-
 .../src/directives/permission/hasRole.ts      |  2 +-
 .../src/hooks/web/useCrudSchemas.ts           |  2 +-
 yudao-ui-admin-vue3/src/hooks/web/useIntro.ts |  2 +-
 yudao-ui-admin-vue3/src/hooks/web/useTable.ts |  2 +-
 yudao-ui-admin-vue3/src/hooks/web/useTitle.ts |  1 -
 .../src/hooks/web/useValidator.ts             |  2 --
 .../src/hooks/web/useVxeCrudSchemas.ts        |  2 +-
 .../src/hooks/web/useVxeGrid.ts               |  3 +--
 .../components/Breadcrumb/src/Breadcrumb.vue  |  2 +-
 .../ContextMenu/src/ContextMenu.vue           |  2 +-
 .../src/components/useRenderMenuTitle.tsx     |  1 -
 .../layout/components/Setting/src/Setting.vue |  2 +-
 .../src/components/InterfaceDisplay.vue       |  2 +-
 .../SizeDropdown/src/SizeDropdown.vue         |  2 +-
 .../layout/components/TabMenu/src/TabMenu.vue |  2 +-
 .../components/TagsView/src/TagsView.vue      |  2 +-
 .../components/UserInfo/src/UserInfo.vue      |  2 +-
 .../vxeTable/renderer/dataTimeRangePicker.tsx |  1 -
 .../src/router/modules/remaining.ts           |  2 +-
 .../src/types/auto-imports.d.ts               |  6 ++++++
 yudao-ui-admin-vue3/src/utils/formRules.ts    |  2 --
 yudao-ui-admin-vue3/src/views/Home/Index.vue  |  2 +-
 yudao-ui-admin-vue3/src/views/Home/Index2.vue |  2 +-
 .../src/views/Home/echarts-data.ts            |  1 -
 yudao-ui-admin-vue3/src/views/Login/Login.vue |  2 +-
 .../src/views/Login/components/LoginForm.vue  |  5 ++---
 .../views/Login/components/LoginFormTitle.vue |  1 -
 .../src/views/Login/components/MobileForm.vue |  5 ++---
 .../src/views/Login/components/QrCodeForm.vue |  2 +-
 .../views/Login/components/RegisterForm.vue   |  2 +-
 .../src/views/Profile/Index.vue               |  1 -
 .../views/Profile/components/BasicInfo.vue    |  2 +-
 .../views/Profile/components/ProfileUser.vue  |  2 +-
 .../src/views/Profile/components/ResetPwd.vue |  3 +--
 .../views/Profile/components/UserSocial.vue   |  1 -
 .../src/views/bpm/form/form.data.ts           |  3 ---
 .../src/views/bpm/form/index.vue              |  9 ++++-----
 .../src/views/bpm/group/group.data.ts         |  3 ---
 .../src/views/bpm/group/index.vue             |  7 +++----
 .../src/views/bpm/model/index.vue             |  5 ++---
 .../src/views/bpm/model/model.data.ts         |  3 ---
 .../src/views/bpm/processInstance/index.vue   |  6 +++---
 .../views/bpm/processInstance/process.data.ts |  2 --
 .../src/views/bpm/task/done/done.data.ts      |  2 --
 .../src/views/bpm/task/done/index.vue         |  3 +--
 .../src/views/bpm/task/todo/done.data.ts      |  1 -
 .../infra/apiAccessLog/apiAccessLog.data.ts   |  3 +--
 .../src/views/infra/apiAccessLog/index.vue    |  2 --
 .../infra/apiErrorLog/apiErrorLog.data.ts     |  3 +--
 .../src/views/infra/apiErrorLog/index.vue     |  3 ---
 .../src/views/infra/codegen/EditTable.vue     |  2 --
 .../src/views/infra/codegen/codegen.data.ts   |  4 +---
 .../codegen/components/BasicInfoForm.vue      |  5 ++---
 .../infra/codegen/components/ImportTable.vue  |  2 --
 .../infra/codegen/components/Preview.vue      |  2 --
 .../src/views/infra/codegen/index.vue         |  3 ---
 .../src/views/infra/config/config.data.ts     |  5 +----
 .../src/views/infra/config/index.vue          |  4 +---
 .../dataSourceConfig/dataSourceConfig.data.ts |  4 +---
 .../views/infra/dataSourceConfig/index.vue    |  4 +---
 .../src/views/infra/dbDoc/index.vue           |  2 +-
 .../views/infra/fileConfig/fileConfig.data.ts |  5 +----
 .../src/views/infra/fileConfig/index.vue      |  4 +---
 .../src/views/infra/fileList/fileList.data.ts |  3 +--
 .../src/views/infra/fileList/index.vue        |  3 ---
 .../src/views/infra/job/JobLog.vue            |  3 +--
 .../src/views/infra/job/index.vue             |  3 ---
 .../src/views/infra/job/job.data.ts           |  5 +----
 .../src/views/infra/job/jobLog.data.ts        |  4 +---
 .../src/views/infra/redis/index.vue           |  3 +--
 .../src/views/pay/app/app.data.ts             |  5 +----
 .../src/views/pay/app/index.vue               |  3 ---
 .../src/views/pay/merchant/index.vue          |  3 ---
 .../src/views/pay/merchant/merchant.data.ts   |  5 +----
 .../src/views/pay/order/index.vue             |  2 --
 .../src/views/pay/order/order.data.ts         |  5 +----
 .../src/views/pay/refund/index.vue            |  2 --
 .../src/views/pay/refund/refund.data.ts       |  4 +---
 .../src/views/system/dept/dept.data.ts        |  6 ++----
 .../src/views/system/dept/index.vue           |  3 ---
 .../src/views/system/dict/dict.data.ts        |  5 +----
 .../src/views/system/dict/dict.type.ts        |  5 +----
 .../src/views/system/dict/index.vue           |  3 ---
 .../views/system/errorCode/errorCode.data.ts  |  5 +----
 .../src/views/system/errorCode/index.vue      |  4 +---
 .../src/views/system/loginlog/index.vue       |  3 ---
 .../views/system/loginlog/loginLog.data.ts    |  3 +--
 .../src/views/system/menu/index.vue           |  3 ---
 .../src/views/system/menu/menu.data.ts        |  5 +----
 .../src/views/system/notice/index.vue         |  3 ---
 .../src/views/system/notice/notice.data.ts    |  5 +----
 .../views/system/oauth2/client/client.data.ts |  4 +---
 .../src/views/system/oauth2/client/index.vue  |  3 ---
 .../src/views/system/oauth2/token/index.vue   |  4 ----
 .../views/system/oauth2/token/token.data.ts   |  4 +---
 .../src/views/system/operatelog/index.vue     |  3 ---
 .../system/operatelog/operatelog.data.ts      |  4 +---
 .../src/views/system/post/index.vue           |  3 ---
 .../src/views/system/post/post.data.ts        |  5 +----
 .../src/views/system/role/index.vue           |  3 ---
 .../src/views/system/role/role.data.ts        |  5 +----
 .../src/views/system/sensitiveWord/index.vue  |  3 ---
 .../sensitiveWord/sensitiveWord.data.ts       |  5 +----
 .../src/views/system/sms/smsChannel/index.vue |  4 ----
 .../system/sms/smsChannel/sms.channel.data.ts |  5 +----
 .../src/views/system/sms/smsLog/index.vue     |  3 ---
 .../views/system/sms/smsLog/sms.log.data.ts   |  4 +---
 .../views/system/sms/smsTemplate/index.vue    |  4 ----
 .../sms/smsTemplate/sms.template.data.ts      |  5 +----
 .../src/views/system/tenant/index.vue         |  3 ---
 .../src/views/system/tenant/tenant.data.ts    |  5 +----
 .../src/views/system/tenantPackage/index.vue  |  3 ---
 .../tenantPackage/tenantPackage.data.ts       |  5 +----
 .../src/views/system/user/index.vue           |  3 ---
 .../src/views/system/user/user.data.ts        |  5 +----
 yudao-ui-admin-vue3/use.md                    |  1 -
 132 files changed, 116 insertions(+), 308 deletions(-)

diff --git a/yudao-ui-admin-vue3/build/vite/index.ts b/yudao-ui-admin-vue3/build/vite/index.ts
index 34ffc9b1c..fe03700a4 100644
--- a/yudao-ui-admin-vue3/build/vite/index.ts
+++ b/yudao-ui-admin-vue3/build/vite/index.ts
@@ -32,7 +32,24 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
     PurgeIcons(),
     vueSetupExtend(),
     AutoImport({
-      imports: ['vue', 'vue-router'],
+      include: [
+        /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
+        /\.vue$/,
+        /\.vue\?vue/, // .vue
+        /\.md$/ // .md
+      ],
+      imports: [
+        'vue',
+        'vue-router',
+        {
+          '@/hooks/web/useI18n': ['useI18n'],
+          '@/hooks/web/useXTable': ['useXTable'],
+          '@/hooks/web/useMessage': ['useMessage'],
+          '@/hooks/web/useVxeCrudSchemas': ['useVxeCrudSchemas'],
+          '@/utils/formRules': ['required'],
+          '@/utils/dict': ['DICT_TYPE']
+        }
+      ],
       dts: 'src/types/auto-imports.d.ts',
       resolvers: [ElementPlusResolver()],
       eslintrc: {
diff --git a/yudao-ui-admin-vue3/package.json b/yudao-ui-admin-vue3/package.json
index b5528eea1..4a12c1be9 100644
--- a/yudao-ui-admin-vue3/package.json
+++ b/yudao-ui-admin-vue3/package.json
@@ -1,6 +1,6 @@
 {
   "name": "yudao-ui-admin-vue3",
-  "version": "1.6.6-snapshot.1923",
+  "version": "1.6.6-snapshot.1925",
   "description": "基于vue3、vite4、element-plus、typesScript",
   "author": "xingyu",
   "private": false,
diff --git a/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue b/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue
index d99105627..697ea18a7 100644
--- a/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue
+++ b/yudao-ui-admin-vue3/src/components/ContentDetailWrap/src/ContentDetailWrap.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
-import { useI18n } from '@/hooks/web/useI18n'
+
 const { t } = useI18n()
 
 const { getPrefixCls } = useDesign()
diff --git a/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue b/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue
index 9c1f3de32..dc4c7475e 100644
--- a/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue
+++ b/yudao-ui-admin-vue3/src/components/Cropper/src/CropperAvatar.vue
@@ -13,7 +13,7 @@
 </template>
 <script setup lang="ts">
 import { useDesign } from '@/hooks/web/useDesign'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import { propTypes } from '@/utils/propTypes'
 import { useI18n } from 'vue-i18n'
 import CopperModal from './CopperModal.vue'
diff --git a/yudao-ui-admin-vue3/src/components/Error/src/Error.vue b/yudao-ui-admin-vue3/src/components/Error/src/Error.vue
index c588af10b..a979bc018 100644
--- a/yudao-ui-admin-vue3/src/components/Error/src/Error.vue
+++ b/yudao-ui-admin-vue3/src/components/Error/src/Error.vue
@@ -3,7 +3,6 @@ import pageError from '@/assets/svgs/404.svg'
 import networkError from '@/assets/svgs/500.svg'
 import noPermission from '@/assets/svgs/403.svg'
 import { propTypes } from '@/utils/propTypes'
-import { useI18n } from '@/hooks/web/useI18n'
 
 interface ErrorMap {
   url: string
diff --git a/yudao-ui-admin-vue3/src/components/Form/src/helper.ts b/yudao-ui-admin-vue3/src/components/Form/src/helper.ts
index 3d9c707f5..e2549cbde 100644
--- a/yudao-ui-admin-vue3/src/components/Form/src/helper.ts
+++ b/yudao-ui-admin-vue3/src/components/Form/src/helper.ts
@@ -1,4 +1,3 @@
-import { useI18n } from '@/hooks/web/useI18n'
 import type { Slots } from 'vue'
 import { getSlot } from '@/utils/tsxHelper'
 import { PlaceholderMoel } from './types'
diff --git a/yudao-ui-admin-vue3/src/components/Search/src/Search.vue b/yudao-ui-admin-vue3/src/components/Search/src/Search.vue
index 66d0a590f..ffff5681b 100644
--- a/yudao-ui-admin-vue3/src/components/Search/src/Search.vue
+++ b/yudao-ui-admin-vue3/src/components/Search/src/Search.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { PropType } from 'vue'
 import { propTypes } from '@/utils/propTypes'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useForm } from '@/hooks/web/useForm'
 import { findIndex } from '@/utils'
 import { cloneDeep } from 'lodash-es'
diff --git a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
index aa49b0cef..d02ad8264 100644
--- a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
+++ b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadFile.vue
@@ -34,7 +34,7 @@
 </template>
 <script setup lang="ts" name="UploadFile">
 import { PropType } from 'vue'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import { propTypes } from '@/utils/propTypes'
 import { getAccessToken, getTenantId } from '@/utils/auth'
 import type { UploadInstance, UploadUserFile, UploadProps, UploadRawFile } from 'element-plus'
diff --git a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue
index 7a83a8d17..a350528c7 100644
--- a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue
+++ b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImg.vue
@@ -52,8 +52,7 @@
 
 <script setup lang="ts" name="UploadImg">
 import type { UploadProps } from 'element-plus'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import { generateUUID } from '@/utils'
 import { propTypes } from '@/utils/propTypes'
 import { getAccessToken, getTenantId } from '@/utils/auth'
diff --git a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue
index 22444c6f7..df3eb45f4 100644
--- a/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue
+++ b/yudao-ui-admin-vue3/src/components/UploadFile/src/UploadImgs.vue
@@ -49,7 +49,7 @@
 import { PropType, ref } from 'vue'
 import { ElUpload, ElNotification, ElImageViewer } from 'element-plus'
 import type { UploadProps, UploadFile, UploadUserFile } from 'element-plus'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import { propTypes } from '@/utils/propTypes'
 import { getAccessToken, getTenantId } from '@/utils/auth'
 
diff --git a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify.vue b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify.vue
index a6c391078..6bfc353ee 100644
--- a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify.vue
+++ b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify.vue
@@ -38,7 +38,6 @@
  * */
 import { VerifySlide, VerifyPoints } from './Verify'
 import { computed, ref, toRefs, watchEffect } from 'vue'
-import { useI18n } from '@/hooks/web/useI18n'
 
 export default {
   name: 'Vue3Verify',
diff --git a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue
index b0a6207d1..8eeb83f60 100644
--- a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue
+++ b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifyPoints.vue
@@ -66,7 +66,6 @@ import { resetSize } from './../utils/util'
 import { aesEncrypt } from './../utils/ase'
 import { getCodeApi, reqCheckApi } from '@/api/login'
 import { onMounted, reactive, ref, nextTick, toRefs, getCurrentInstance } from 'vue'
-import { useI18n } from '@/hooks/web/useI18n'
 
 const props = defineProps({
   //弹出式pop,固定fixed
diff --git a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue
index 40e4a2734..6b6108df7 100644
--- a/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue
+++ b/yudao-ui-admin-vue3/src/components/Verifition/src/Verify/VerifySlide.vue
@@ -79,7 +79,6 @@
 import { aesEncrypt } from './../utils/ase'
 import { resetSize } from './../utils/util'
 import { getCodeApi, reqCheckApi } from '@/api/login'
-import { useI18n } from '@/hooks/web/useI18n'
 
 const props = defineProps({
   captchaType: {
diff --git a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
index bf2956b08..160afa0ba 100644
--- a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
+++ b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
@@ -12,9 +12,8 @@ import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
 import { XTableProps } from './type'
 import { isBoolean, isFunction } from '@/utils/is'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import download from '@/utils/download'
-import { useI18n } from '@/hooks/web/useI18n'
 
 const { t } = useI18n()
 const message = useMessage() // 消息弹窗
diff --git a/yudao-ui-admin-vue3/src/config/axios/service.ts b/yudao-ui-admin-vue3/src/config/axios/service.ts
index 89e899fa5..8a049e229 100644
--- a/yudao-ui-admin-vue3/src/config/axios/service.ts
+++ b/yudao-ui-admin-vue3/src/config/axios/service.ts
@@ -10,7 +10,7 @@ import qs from 'qs'
 import { config } from '@/config/axios/config'
 import { getAccessToken, getRefreshToken, getTenantId, removeToken, setToken } from '@/utils/auth'
 import errorCode from './errorCode'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { resetRouter } from '@/router'
 import { useCache } from '@/hooks/web/useCache'
 
diff --git a/yudao-ui-admin-vue3/src/directives/permission/hasPermi.ts b/yudao-ui-admin-vue3/src/directives/permission/hasPermi.ts
index 643510155..d86d2f54c 100644
--- a/yudao-ui-admin-vue3/src/directives/permission/hasPermi.ts
+++ b/yudao-ui-admin-vue3/src/directives/permission/hasPermi.ts
@@ -1,6 +1,6 @@
 import type { App } from 'vue'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
-import { useI18n } from '@/hooks/web/useI18n'
+
 const { t } = useI18n() // 国际化
 
 export function hasPermi(app: App<Element>) {
diff --git a/yudao-ui-admin-vue3/src/directives/permission/hasRole.ts b/yudao-ui-admin-vue3/src/directives/permission/hasRole.ts
index 29d1611e1..31a352a72 100644
--- a/yudao-ui-admin-vue3/src/directives/permission/hasRole.ts
+++ b/yudao-ui-admin-vue3/src/directives/permission/hasRole.ts
@@ -1,6 +1,6 @@
 import type { App } from 'vue'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
-import { useI18n } from '@/hooks/web/useI18n'
+
 const { t } = useI18n() // 国际化
 
 export function hasRole(app: App<Element>) {
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useCrudSchemas.ts b/yudao-ui-admin-vue3/src/hooks/web/useCrudSchemas.ts
index 514881947..34e655b11 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useCrudSchemas.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useCrudSchemas.ts
@@ -3,7 +3,7 @@ import { AxiosPromise } from 'axios'
 import { findIndex } from '@/utils'
 import { eachTree, treeMap, filter } from '@/utils/tree'
 import { getBoolDictOptions, getDictOptions, getIntDictOptions } from '@/utils/dict'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { FormSchema } from '@/types/form'
 import { TableColumn } from '@/types/table'
 import { DescriptionsSchema } from '@/types/descriptions'
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useIntro.ts b/yudao-ui-admin-vue3/src/hooks/web/useIntro.ts
index 85604df6a..7fe00845d 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useIntro.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useIntro.ts
@@ -1,7 +1,7 @@
 import introJs from 'intro.js'
 import { IntroJs, Step, Options } from 'intro.js'
 import 'intro.js/introjs.css'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useDesign } from '@/hooks/web/useDesign'
 
 export const useIntro = (setps?: Step[], options?: Options) => {
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useTable.ts b/yudao-ui-admin-vue3/src/hooks/web/useTable.ts
index a5628bb5f..7a9b1afea 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useTable.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useTable.ts
@@ -3,7 +3,7 @@ import { Table, TableExpose } from '@/components/Table'
 import { ElMessage, ElMessageBox, ElTable } from 'element-plus'
 import { computed, nextTick, reactive, ref, unref, watch } from 'vue'
 import type { TableProps } from '@/components/Table/src/types'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { TableSetPropsType } from '@/types/table'
 
 const { t } = useI18n()
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useTitle.ts b/yudao-ui-admin-vue3/src/hooks/web/useTitle.ts
index d0eb18860..020a9b771 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useTitle.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useTitle.ts
@@ -1,7 +1,6 @@
 import { watch, ref } from 'vue'
 import { isString } from '@/utils/is'
 import { useAppStoreWithOut } from '@/store/modules/app'
-import { useI18n } from '@/hooks/web/useI18n'
 
 const appStore = useAppStoreWithOut()
 
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useValidator.ts b/yudao-ui-admin-vue3/src/hooks/web/useValidator.ts
index a0d36c35e..0c16fa31c 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useValidator.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useValidator.ts
@@ -1,5 +1,3 @@
-import { useI18n } from '@/hooks/web/useI18n'
-
 const { t } = useI18n()
 
 type Callback = (error?: string | Error | undefined) => void
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts b/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
index d906fa30b..5c765d4fa 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
@@ -6,7 +6,7 @@ import {
   VxeTableDefines
 } from 'vxe-table'
 import { eachTree } from 'xe-utils'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { getBoolDictOptions, getDictOptions, getIntDictOptions } from '@/utils/dict'
 import { FormSchema } from '@/types/form'
 import { VxeTableColumn } from '@/types/table'
diff --git a/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts b/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts
index 34106be2a..5ac07c862 100644
--- a/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts
+++ b/yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts
@@ -2,8 +2,7 @@ import { computed, nextTick, reactive } from 'vue'
 import { SizeType, VxeGridProps, VxeTablePropTypes } from 'vxe-table'
 import { useAppStore } from '@/store/modules/app'
 import { VxeAllSchemas } from './useVxeCrudSchemas'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import download from '@/utils/download'
 
 const { t } = useI18n()
diff --git a/yudao-ui-admin-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue b/yudao-ui-admin-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue
index c6e5aa031..19be74005 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Breadcrumb/src/Breadcrumb.vue
@@ -6,7 +6,7 @@ import { usePermissionStore } from '@/store/modules/permission'
 import { filterBreadcrumb } from './helper'
 import { filter, treeToList } from '@/utils/tree'
 import type { RouteLocationNormalizedLoaded, RouteMeta } from 'vue-router'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { Icon } from '@/components/Icon'
 import { useAppStore } from '@/store/modules/app'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue b/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue
index 503f46ead..8c18f2a18 100644
--- a/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/ContextMenu/src/ContextMenu.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { PropType } from 'vue'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useDesign } from '@/hooks/web/useDesign'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
 import { contextMenuSchema } from '@/types/contextMenu'
diff --git a/yudao-ui-admin-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx b/yudao-ui-admin-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx
index 6f7caff7a..fc30b9006 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx
+++ b/yudao-ui-admin-vue3/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx
@@ -1,6 +1,5 @@
 import type { RouteMeta } from 'vue-router'
 import { Icon } from '@/components/Icon'
-import { useI18n } from '@/hooks/web/useI18n'
 
 export const useRenderMenuTitle = () => {
   const renderMenuTitle = (meta: RouteMeta) => {
diff --git a/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue b/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue
index 4d73835c4..de0532fdc 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Setting/src/Setting.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { ElMessage } from 'element-plus'
 import { useCssVar, useClipboard } from '@vueuse/core'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import { useDesign } from '@/hooks/web/useDesign'
 
diff --git a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue
index da7b81f52..e0dc0885e 100644
--- a/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/Setting/src/components/InterfaceDisplay.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { setCssVar } from '@/utils'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useDesign } from '@/hooks/web/useDesign'
 import { useWatermark } from '@/hooks/web/useWatermark'
 import { useAppStore } from '@/store/modules/app'
diff --git a/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue b/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue
index 99eecdf88..0dc698c07 100644
--- a/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/SizeDropdown/src/SizeDropdown.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { useAppStore } from '@/store/modules/app'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { propTypes } from '@/utils/propTypes'
 import { useDesign } from '@/hooks/web/useDesign'
 import { ElementPlusSize } from '@/types/elementPlus'
diff --git a/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue b/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue
index cb5d4ea6e..015d6c731 100644
--- a/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/TabMenu/src/TabMenu.vue
@@ -1,7 +1,7 @@
 <script lang="tsx">
 import { usePermissionStore } from '@/store/modules/permission'
 import { useAppStore } from '@/store/modules/app'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { ElScrollbar } from 'element-plus'
 import { Icon } from '@/components/Icon'
 import { Menu } from '@/layout/components/Menu'
diff --git a/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue b/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
index eae5482e8..bf5a15e4a 100644
--- a/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/TagsView/src/TagsView.vue
@@ -3,7 +3,7 @@ import type { RouteLocationNormalizedLoaded, RouterLinkProps } from 'vue-router'
 import { usePermissionStore } from '@/store/modules/permission'
 import { useTagsViewStore } from '@/store/modules/tagsView'
 import { useAppStore } from '@/store/modules/app'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { filterAffixTags } from './helper'
 import { ContextMenu, ContextMenuExpose } from '@/layout/components/ContextMenu'
 import { useDesign } from '@/hooks/web/useDesign'
diff --git a/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue b/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue
index de99624e1..62b5eb5aa 100644
--- a/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue
+++ b/yudao-ui-admin-vue3/src/layout/components/UserInfo/src/UserInfo.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { ElMessageBox } from 'element-plus'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import { useDesign } from '@/hooks/web/useDesign'
 import avatarImg from '@/assets/imgs/avatar.gif'
diff --git a/yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/dataTimeRangePicker.tsx b/yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/dataTimeRangePicker.tsx
index 6f6b9aec2..d6508d2cd 100644
--- a/yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/dataTimeRangePicker.tsx
+++ b/yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/dataTimeRangePicker.tsx
@@ -1,4 +1,3 @@
-import { useI18n } from '@/hooks/web/useI18n'
 import { ElDatePicker } from 'element-plus'
 import { VXETable } from 'vxe-table'
 
diff --git a/yudao-ui-admin-vue3/src/router/modules/remaining.ts b/yudao-ui-admin-vue3/src/router/modules/remaining.ts
index d26cd11fd..e511e1948 100644
--- a/yudao-ui-admin-vue3/src/router/modules/remaining.ts
+++ b/yudao-ui-admin-vue3/src/router/modules/remaining.ts
@@ -1,5 +1,5 @@
 import { Layout } from '@/utils/routerHelper'
-import { useI18n } from '@/hooks/web/useI18n'
+
 const { t } = useI18n()
 /**
 * redirect: noredirect        当设置 noredirect 的时候该路由在面包屑导航中不可被点击
diff --git a/yudao-ui-admin-vue3/src/types/auto-imports.d.ts b/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
index 00b0fed02..68e0f7a40 100644
--- a/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
+++ b/yudao-ui-admin-vue3/src/types/auto-imports.d.ts
@@ -1,6 +1,7 @@
 // Generated by 'unplugin-auto-import'
 export {}
 declare global {
+  const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE']
   const EffectScope: typeof import('vue')['EffectScope']
   const computed: typeof import('vue')['computed']
   const createApp: typeof import('vue')['createApp']
@@ -37,6 +38,7 @@ declare global {
   const reactive: typeof import('vue')['reactive']
   const readonly: typeof import('vue')['readonly']
   const ref: typeof import('vue')['ref']
+  const required: typeof import('@/utils/formRules')['required']
   const resolveComponent: typeof import('vue')['resolveComponent']
   const resolveDirective: typeof import('vue')['resolveDirective']
   const shallowReactive: typeof import('vue')['shallowReactive']
@@ -50,10 +52,14 @@ declare global {
   const useAttrs: typeof import('vue')['useAttrs']
   const useCssModule: typeof import('vue')['useCssModule']
   const useCssVars: typeof import('vue')['useCssVars']
+  const useI18n: typeof import('@/hooks/web/useI18n')['useI18n']
   const useLink: typeof import('vue-router')['useLink']
+  const useMessage: typeof import('@/hooks/web/useMessage')['useMessage']
   const useRoute: typeof import('vue-router')['useRoute']
   const useRouter: typeof import('vue-router')['useRouter']
   const useSlots: typeof import('vue')['useSlots']
+  const useVxeCrudSchemas: typeof import('@/hooks/web/useVxeCrudSchemas')['useVxeCrudSchemas']
+  const useXTable: typeof import('@/hooks/web/useXTable')['useXTable']
   const watch: typeof import('vue')['watch']
   const watchEffect: typeof import('vue')['watchEffect']
   const watchPostEffect: typeof import('vue')['watchPostEffect']
diff --git a/yudao-ui-admin-vue3/src/utils/formRules.ts b/yudao-ui-admin-vue3/src/utils/formRules.ts
index d9090a903..2989867fc 100644
--- a/yudao-ui-admin-vue3/src/utils/formRules.ts
+++ b/yudao-ui-admin-vue3/src/utils/formRules.ts
@@ -1,5 +1,3 @@
-import { useI18n } from '@/hooks/web/useI18n'
-
 const { t } = useI18n()
 
 // 必填项
diff --git a/yudao-ui-admin-vue3/src/views/Home/Index.vue b/yudao-ui-admin-vue3/src/views/Home/Index.vue
index 5dbabfe9b..6c586f0b3 100644
--- a/yudao-ui-admin-vue3/src/views/Home/Index.vue
+++ b/yudao-ui-admin-vue3/src/views/Home/Index.vue
@@ -164,7 +164,7 @@
 import { set } from 'lodash-es'
 import { EChartsOption } from 'echarts'
 import { formatTime } from '@/utils'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useUserStore } from '@/store/modules/user'
 import { useWatermark } from '@/hooks/web/useWatermark'
 import avatarImg from '@/assets/imgs/avatar.gif'
diff --git a/yudao-ui-admin-vue3/src/views/Home/Index2.vue b/yudao-ui-admin-vue3/src/views/Home/Index2.vue
index 0939ef26d..0f588510a 100644
--- a/yudao-ui-admin-vue3/src/views/Home/Index2.vue
+++ b/yudao-ui-admin-vue3/src/views/Home/Index2.vue
@@ -143,7 +143,7 @@
 <script setup lang="ts">
 import { set } from 'lodash-es'
 import { EChartsOption } from 'echarts'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useDesign } from '@/hooks/web/useDesign'
 import type { AnalysisTotalTypes } from './types'
 import { pieOptions, barOptions, lineOptions } from './echarts-data'
diff --git a/yudao-ui-admin-vue3/src/views/Home/echarts-data.ts b/yudao-ui-admin-vue3/src/views/Home/echarts-data.ts
index 00a195eb8..56093f4b6 100644
--- a/yudao-ui-admin-vue3/src/views/Home/echarts-data.ts
+++ b/yudao-ui-admin-vue3/src/views/Home/echarts-data.ts
@@ -1,5 +1,4 @@
 import { EChartsOption } from 'echarts'
-import { useI18n } from '@/hooks/web/useI18n'
 
 const { t } = useI18n()
 
diff --git a/yudao-ui-admin-vue3/src/views/Login/Login.vue b/yudao-ui-admin-vue3/src/views/Login/Login.vue
index d6154cada..a513b0caa 100644
--- a/yudao-ui-admin-vue3/src/views/Login/Login.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/Login.vue
@@ -60,7 +60,7 @@
 </template>
 <script setup lang="ts">
 import { underlineToHump } from '@/utils'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useDesign } from '@/hooks/web/useDesign'
 import { useAppStore } from '@/store/modules/app'
 import { ThemeSwitch } from '@/layout/components/ThemeSwitch'
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
index 9a2e68297..1e41b9940 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/LoginForm.vue
@@ -131,10 +131,9 @@
 import { ElLoading } from 'element-plus'
 import LoginFormTitle from './LoginFormTitle.vue'
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useIcon } from '@/hooks/web/useIcon'
-import { useMessage } from '@/hooks/web/useMessage'
-import { required } from '@/utils/formRules'
+
 import * as authUtil from '@/utils/auth'
 import { usePermissionStore } from '@/store/modules/permission'
 import * as LoginApi from '@/api/login'
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue b/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue
index 2e19d29cb..693d622a6 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/LoginFormTitle.vue
@@ -4,7 +4,6 @@
   </h2>
 </template>
 <script setup lang="ts">
-import { useI18n } from '@/hooks/web/useI18n'
 import { LoginStateEnum, useLoginState } from './useLogin'
 
 const { t } = useI18n()
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue
index f0745c4bd..0aa1e035b 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/MobileForm.vue
@@ -93,10 +93,9 @@
 </template>
 <script setup lang="ts">
 import type { RouteLocationNormalizedLoaded } from 'vue-router'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useIcon } from '@/hooks/web/useIcon'
-import { useMessage } from '@/hooks/web/useMessage'
-import { required } from '@/utils/formRules'
+
 import { setTenantId, setToken } from '@/utils/auth'
 import { usePermissionStore } from '@/store/modules/permission'
 import { getTenantIdByNameApi, sendSmsCodeApi, smsLoginApi } from '@/api/login'
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue
index 05f65202c..bdf7e2a51 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/QrCodeForm.vue
@@ -18,7 +18,7 @@
 </template>
 <script setup lang="ts">
 import logoImg from '@/assets/imgs/logo.png'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import LoginFormTitle from './LoginFormTitle.vue'
 import { useLoginState, LoginStateEnum } from './useLogin'
 
diff --git a/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue b/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue
index 60fbbca32..7d048506c 100644
--- a/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue
+++ b/yudao-ui-admin-vue3/src/views/Login/components/RegisterForm.vue
@@ -37,7 +37,7 @@
 </template>
 <script setup lang="ts">
 import type { FormRules } from 'element-plus'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { useForm } from '@/hooks/web/useForm'
 import { useValidator } from '@/hooks/web/useValidator'
 import LoginFormTitle from './LoginFormTitle.vue'
diff --git a/yudao-ui-admin-vue3/src/views/Profile/Index.vue b/yudao-ui-admin-vue3/src/views/Profile/Index.vue
index 631e2836a..6a31f1578 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/Index.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/Index.vue
@@ -31,7 +31,6 @@
   </div>
 </template>
 <script setup lang="ts" name="Profile">
-import { useI18n } from '@/hooks/web/useI18n'
 import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components/'
 const { t } = useI18n()
 
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue b/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
index 2a80a5a95..ccb7d6f3c 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/BasicInfo.vue
@@ -13,7 +13,7 @@
 <script setup lang="ts">
 import type { FormRules } from 'element-plus'
 import { ElMessage } from 'element-plus'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { FormSchema } from '@/types/form'
 import type { FormExpose } from '@/components/Form'
 import {
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue b/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue
index aced0ac1e..2f5a77b25 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/ProfileUser.vue
@@ -42,7 +42,7 @@
 <script setup lang="ts">
 import dayjs from 'dayjs'
 import UserAvatar from './UserAvatar.vue'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile'
 
 const { t } = useI18n()
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue b/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue
index 40a10ddd4..0b37807fb 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/ResetPwd.vue
@@ -17,8 +17,7 @@
 </template>
 <script setup lang="ts">
 import type { FormRules, FormInstance } from 'element-plus'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import { InputPassword } from '@/components/InputPassword'
 import { updateUserPwdApi } from '@/api/system/user/profile'
 
diff --git a/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue b/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue
index e1ffe7888..35cce076a 100644
--- a/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue
+++ b/yudao-ui-admin-vue3/src/views/Profile/components/UserSocial.vue
@@ -22,7 +22,6 @@
   </el-table>
 </template>
 <script setup lang="ts">
-import { useMessage } from '@/hooks/web/useMessage'
 import { SystemUserSocialTypeEnum } from '@/utils/constants'
 import { getUserProfileApi, ProfileVO } from '@/api/system/user/profile'
 import { socialAuthRedirect, socialUnbind } from '@/api/system/user/socialUser'
diff --git a/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts b/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts
index bc81d6f06..8e2ed896c 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/form/form.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
-import { DICT_TYPE } from '@/utils/dict'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/bpm/form/index.vue b/yudao-ui-admin-vue3/src/views/bpm/form/index.vue
index cd61cf67f..eff394704 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/form/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/form/index.vue
@@ -1,14 +1,13 @@
 <script setup lang="ts" name="Form">
 import dayjs from 'dayjs'
-import { ElMessage } from 'element-plus'
 import { DICT_TYPE } from '@/utils/dict'
-import { useTable } from '@/hooks/web/useTable'
-import { useI18n } from '@/hooks/web/useI18n'
 import type { FormExpose } from '@/components/Form'
 import type { FormVO } from '@/api/bpm/form/types'
 import { rules, allSchemas } from './form.data'
 import * as FormApi from '@/api/bpm/form'
+import { useTable } from '@/hooks/web/useTable'
 const { t } = useI18n() // 国际化
+const message = useMessage()
 
 // ========== 列表相关 ==========
 const { register, tableObject, methods } = useTable<FormVO>({
@@ -56,10 +55,10 @@ const submitForm = async () => {
         const data = unref(formRef)?.formModel as FormVO
         if (actionType.value === 'create') {
           await FormApi.createFormApi(data)
-          ElMessage.success(t('common.createSuccess'))
+          message.success(t('common.createSuccess'))
         } else {
           await FormApi.updateFormApi(data)
-          ElMessage.success(t('common.updateSuccess'))
+          message.success(t('common.updateSuccess'))
         }
         // 操作成功,重新加载列表
         dialogVisible.value = false
diff --git a/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts b/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts
index 36f7f1efe..1964b1f8b 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/group/group.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
-import { DICT_TYPE } from '@/utils/dict'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/bpm/group/index.vue b/yudao-ui-admin-vue3/src/views/bpm/group/index.vue
index a90bd6480..ee3355f93 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/group/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/group/index.vue
@@ -1,9 +1,7 @@
 <script setup lang="ts" name="Group">
 import dayjs from 'dayjs'
-import { ElMessage } from 'element-plus'
 import { DICT_TYPE } from '@/utils/dict'
 import { useTable } from '@/hooks/web/useTable'
-import { useI18n } from '@/hooks/web/useI18n'
 import type { FormExpose } from '@/components/Form'
 import type { UserGroupVO } from '@/api/bpm/userGroup/types'
 import { rules, allSchemas } from './group.data'
@@ -12,6 +10,7 @@ import { getListSimpleUsersApi } from '@/api/system/user'
 import { UserVO } from '@/api/system/user'
 
 const { t } = useI18n() // 国际化
+const message = useMessage()
 
 // ========== 列表相关 ==========
 const { register, tableObject, methods } = useTable<UserGroupVO>({
@@ -66,10 +65,10 @@ const submitForm = async () => {
         const data = unref(formRef)?.formModel as UserGroupVO
         if (actionType.value === 'create') {
           await UserGroupApi.createUserGroupApi(data)
-          ElMessage.success(t('common.createSuccess'))
+          message.success(t('common.createSuccess'))
         } else {
           await UserGroupApi.updateUserGroupApi(data)
-          ElMessage.success(t('common.updateSuccess'))
+          message.success(t('common.updateSuccess'))
         }
         // 操作成功,重新加载列表
         dialogVisible.value = false
diff --git a/yudao-ui-admin-vue3/src/views/bpm/model/index.vue b/yudao-ui-admin-vue3/src/views/bpm/model/index.vue
index 8f5a190fb..d232846b1 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/model/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/model/index.vue
@@ -2,14 +2,13 @@
 import dayjs from 'dayjs'
 import { DICT_TYPE } from '@/utils/dict'
 import { useTable } from '@/hooks/web/useTable'
-import { useI18n } from '@/hooks/web/useI18n'
 import type { FormExpose } from '@/components/Form'
 import type { ModelVO } from '@/api/bpm/model/types'
 import { rules, allSchemas } from './model.data'
 import * as ModelApi from '@/api/bpm/model'
-import { useMessage } from '@/hooks/web/useMessage'
-const message = useMessage()
+
 const { t } = useI18n() // 国际化
+const message = useMessage()
 
 // ========== 列表相关 ==========
 const { register, tableObject, methods } = useTable<ModelVO>({
diff --git a/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts b/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts
index 0938dcfb9..ac813738d 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/model/model.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
-import { DICT_TYPE } from '@/utils/dict'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue b/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue
index 7f83fd594..e71498df0 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/processInstance/index.vue
@@ -2,12 +2,12 @@
 import dayjs from 'dayjs'
 import { DICT_TYPE } from '@/utils/dict'
 import { useTable } from '@/hooks/web/useTable'
-import { useI18n } from '@/hooks/web/useI18n'
 import type { ProcessInstanceVO } from '@/api/bpm/processInstance/types'
 import { allSchemas } from './process.data'
 import * as ProcessInstanceApi from '@/api/bpm/processInstance'
-import { ElMessage, ElMessageBox } from 'element-plus'
+import { ElMessageBox } from 'element-plus'
 const { t } = useI18n() // 国际化
+const message = useMessage()
 
 // ========== 列表相关 ==========
 const { register, tableObject, methods } = useTable<ProcessInstanceVO>({
@@ -31,7 +31,7 @@ const handleCancel = (row: ProcessInstanceVO) => {
     inputErrorMessage: '取消原因不能为空'
   }).then(async ({ value }) => {
     await ProcessInstanceApi.cancelProcessInstanceApi(row.id, value)
-    ElMessage.success('取消成功')
+    message.success('取消成功')
     getList()
   })
 }
diff --git a/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts b/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts
index 4838cd387..7be3f1fe7 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/processInstance/process.data.ts
@@ -1,6 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
-import { DICT_TYPE } from '@/utils/dict'
 const { t } = useI18n() // 国际化
 
 // CrudSchema
diff --git a/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts b/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts
index 1c46c7a67..d28391cf1 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/task/done/done.data.ts
@@ -1,6 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
-import { DICT_TYPE } from '@/utils/dict'
 const { t } = useI18n() // 国际化
 
 // CrudSchema
diff --git a/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue b/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue
index 924415d78..db4b36832 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue
+++ b/yudao-ui-admin-vue3/src/views/bpm/task/done/index.vue
@@ -2,11 +2,10 @@
 import dayjs from 'dayjs'
 import duration from 'dayjs/plugin/duration'
 import { DICT_TYPE } from '@/utils/dict'
-import { useTable } from '@/hooks/web/useTable'
-import { useI18n } from '@/hooks/web/useI18n'
 import type { TaskDoneVO } from '@/api/bpm/task/types'
 import { allSchemas } from './done.data'
 import * as TaskDoneApi from '@/api/bpm/task'
+import { useTable } from '@/hooks/web/useTable'
 dayjs.extend(duration)
 const { t } = useI18n() // 国际化
 const { push } = useRouter()
diff --git a/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts b/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts
index d0acf8c8e..5ad3d2c46 100644
--- a/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts
+++ b/yudao-ui-admin-vue3/src/views/bpm/task/todo/done.data.ts
@@ -1,4 +1,3 @@
-import { useI18n } from '@/hooks/web/useI18n'
 import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas'
 const { t } = useI18n() // 国际化
 
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts
index 174eb405b..927e2330b 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts
@@ -1,5 +1,4 @@
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
index 4864817cb..6a09927d7 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/index.vue
@@ -36,8 +36,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="ApiAccessLog">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './apiAccessLog.data'
 import * as ApiAccessLogApi from '@/api/infra/apiAccessLog'
 
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts
index ac78e2f24..6471f64d7 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts
@@ -1,5 +1,4 @@
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
diff --git a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
index c59012dcb..4193351a3 100644
--- a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/index.vue
@@ -52,12 +52,9 @@
   </XModal>
 </template>
 <script setup lang="ts" name="ApiErrorLog">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './apiErrorLog.data'
 import * as ApiErrorLogApi from '@/api/infra/apiErrorLog'
 import { InfraApiErrorLogProcessStatusEnum } from '@/utils/constants'
-import { useMessage } from '@/hooks/web/useMessage'
 
 const { t } = useI18n() // 国际化
 const message = useMessage()
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
index 1c14f1627..820d23ca0 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue
@@ -21,8 +21,6 @@
   </ContentWrap>
 </template>
 <script setup lang="ts">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
 import { BasicInfoForm, CloumInfoForm } from './components'
 import { getCodegenTableApi, updateCodegenTableApi } from '@/api/infra/codegen'
 import { CodegenTableVO, CodegenColumnVO, CodegenUpdateReqVO } from '@/api/infra/codegen/types'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts b/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts
index a5609aef9..f3723a350 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts
@@ -1,6 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue
index 2fbbc9343..2009553fa 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/BasicInfoForm.vue
@@ -2,14 +2,13 @@
   <Form :rules="rules" @register="register" />
 </template>
 <script setup lang="ts">
-import { PropType } from 'vue'
-import { required } from '@/utils/formRules'
 import { useForm } from '@/hooks/web/useForm'
 import { FormSchema } from '@/types/form'
 import { CodegenTableVO } from '@/api/infra/codegen/types'
-import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
+import { getIntDictOptions } from '@/utils/dict'
 import { listSimpleMenusApi } from '@/api/system/menu'
 import { handleTree, defaultProps } from '@/utils/tree'
+import { PropType } from 'vue'
 
 const props = defineProps({
   basicInfo: {
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue
index 963b85cf7..38a81541c 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/ImportTable.vue
@@ -49,8 +49,6 @@
   </XModal>
 </template>
 <script setup lang="ts">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
 import { VxeTableInstance } from 'vxe-table'
 import type { DatabaseTableVO } from '@/api/infra/codegen/types'
 import { getSchemaTableListApi, createCodegenListApi } from '@/api/infra/codegen'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
index 3b4aafaf5..2d9482ff0 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/Preview.vue
@@ -31,8 +31,6 @@
 </template>
 <script setup lang="ts">
 import { useClipboard } from '@vueuse/core'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
 import { handleTree2 } from '@/utils/tree'
 import { previewCodegenApi } from '@/api/infra/codegen'
 import { CodegenTableVO, CodegenPreviewVO } from '@/api/infra/codegen/types'
diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
index 5c25e87e1..8337d2d45 100644
--- a/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/codegen/index.vue
@@ -57,9 +57,6 @@
   <Preview ref="previewRef" />
 </template>
 <script setup lang="ts" name="Codegen">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import download from '@/utils/download'
 import * as CodegenApi from '@/api/infra/codegen'
 import { CodegenTableVO } from '@/api/infra/codegen/types'
diff --git a/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts b/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts
index b1b29c231..41acfa153 100644
--- a/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/infra/config/index.vue b/yudao-ui-admin-vue3/src/views/infra/config/index.vue
index 00ee66a3c..cdeed9bb1 100644
--- a/yudao-ui-admin-vue3/src/views/infra/config/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/config/index.vue
@@ -84,9 +84,7 @@
 </template>
 <script setup lang="ts" name="Config">
 // 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
+
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as ConfigApi from '@/api/infra/config'
diff --git a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts
index 13133a3b5..a790ad17f 100644
--- a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts
@@ -1,6 +1,4 @@
-import { required } from '@/utils/formRules'
-import { useI18n } from '@/hooks/web/useI18n'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 // 国际化
 const { t } = useI18n()
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
index d4db44971..84bfaa4bd 100644
--- a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
@@ -67,9 +67,7 @@
 </template>
 <script setup lang="ts" name="DataSourceConfig">
 // 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as DataSourceConfiggApi from '@/api/infra/dataSourceConfig'
diff --git a/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue b/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue
index e16a3fa60..18db3e73b 100644
--- a/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/dbDoc/index.vue
@@ -26,7 +26,7 @@
 </template>
 <script setup lang="ts" name="DbDoc">
 import download from '@/utils/download'
-import { useI18n } from '@/hooks/web/useI18n'
+
 import * as DbDocApi from '@/api/infra/dbDoc'
 
 const { t } = useI18n() // 国际化
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts b/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts
index 40ee7a859..d0f648699 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue b/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
index c1f42c2fc..403b7d202 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
@@ -160,9 +160,7 @@
 <script setup lang="ts" name="FileConfig">
 // 全局相关的 import
 import type { FormInstance } from 'element-plus'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
+
 // 业务相关的 import
 import * as FileConfigApi from '@/api/infra/fileConfig'
 import { rules, allSchemas } from './fileConfig.data'
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts b/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
index fda96110e..29be6dae4 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts
@@ -1,5 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // CrudSchema
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue b/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
index 320a55cc0..cda8b68dd 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/fileList/index.vue
@@ -82,9 +82,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="FileList">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { UploadInstance, UploadRawFile } from 'element-plus'
 // 业务相关的 import
 import { allSchemas } from './fileList.data'
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue b/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
index 88691b245..7f860cec6 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/job/JobLog.vue
@@ -49,8 +49,7 @@
 </template>
 <script setup lang="ts" name="JobLog">
 import dayjs from 'dayjs'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
+
 import * as JobLogApi from '@/api/infra/jobLog'
 import { allSchemas } from './jobLog.data'
 
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/index.vue b/yudao-ui-admin-vue3/src/views/infra/job/index.vue
index 818d66441..613f84c43 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/job/index.vue
@@ -129,9 +129,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Job">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import * as JobApi from '@/api/infra/job'
 import { rules, allSchemas } from './job.data'
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts b/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts
index 92b29ba46..a0fc3bec8 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/job/job.data.ts
@@ -1,7 +1,4 @@
-import { DICT_TYPE } from '@/utils/dict'
-import { required } from '@/utils/formRules'
-import { useI18n } from '@/hooks/web/useI18n'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 // 表单校验
 export const rules = reactive({
diff --git a/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts
index b6cb3b87d..ac6e39f24 100644
--- a/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/infra/job/jobLog.data.ts
@@ -1,6 +1,4 @@
-import { DICT_TYPE } from '@/utils/dict'
-import { useI18n } from '@/hooks/web/useI18n'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 // 国际化
 const { t } = useI18n()
 // CrudSchema
diff --git a/yudao-ui-admin-vue3/src/views/infra/redis/index.vue b/yudao-ui-admin-vue3/src/views/infra/redis/index.vue
index e1f6a2fee..b54a6c491 100644
--- a/yudao-ui-admin-vue3/src/views/infra/redis/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/redis/index.vue
@@ -127,8 +127,7 @@
 <script setup lang="ts" name="Redis">
 import * as echarts from 'echarts'
 import { DICT_TYPE } from '@/utils/dict'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
+
 import * as RedisApi from '@/api/infra/redis'
 import { RedisKeyInfo, RedisMonitorInfoVO } from '@/api/infra/redis/types'
 
diff --git a/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts b/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts
index 253d88075..30f141802 100644
--- a/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/pay/app/index.vue b/yudao-ui-admin-vue3/src/views/pay/app/index.vue
index db37fe936..8972a8bbc 100644
--- a/yudao-ui-admin-vue3/src/views/pay/app/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/app/index.vue
@@ -76,9 +76,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="App">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import { rules, allSchemas } from './app.data'
 import * as AppApi from '@/api/pay/app'
diff --git a/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue b/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
index acc935248..1ea460ec9 100644
--- a/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/merchant/index.vue
@@ -75,9 +75,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Merchant">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import { rules, allSchemas } from './merchant.data'
 import * as MerchantApi from '@/api/pay/merchant'
diff --git a/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts b/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts
index 1de8ef053..e0e0727d7 100644
--- a/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/pay/order/index.vue b/yudao-ui-admin-vue3/src/views/pay/order/index.vue
index 170e7cff8..2edf5785d 100644
--- a/yudao-ui-admin-vue3/src/views/pay/order/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/order/index.vue
@@ -42,8 +42,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Order">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './order.data'
 import * as OrderApi from '@/api/pay/order'
 
diff --git a/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts b/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts
index 61bd6a192..7b993088b 100644
--- a/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/pay/refund/index.vue b/yudao-ui-admin-vue3/src/views/pay/refund/index.vue
index 9cb993beb..6b7b3d46a 100644
--- a/yudao-ui-admin-vue3/src/views/pay/refund/index.vue
+++ b/yudao-ui-admin-vue3/src/views/pay/refund/index.vue
@@ -34,8 +34,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Refund">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './refund.data'
 import * as RefundApi from '@/api/pay/refund'
 
diff --git a/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts b/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts
index 219c4dece..456f441dd 100644
--- a/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts
+++ b/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts
@@ -1,6 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // CrudSchema
diff --git a/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts b/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts
index 964facc11..5e3d0761f 100644
--- a/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts
@@ -1,7 +1,5 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
+
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/dept/index.vue b/yudao-ui-admin-vue3/src/views/system/dept/index.vue
index a8543c4f1..3b182e2af 100644
--- a/yudao-ui-admin-vue3/src/views/system/dept/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/dept/index.vue
@@ -76,9 +76,6 @@
 </template>
 <script setup lang="ts" name="Dept">
 import { handleTree, defaultProps } from '@/utils/tree'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import { allSchemas, rules } from './dept.data'
 import * as DeptApi from '@/api/system/dept'
diff --git a/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts b/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts
index 37ab29161..cdfe45385 100644
--- a/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/dict/dict.data.ts
@@ -1,7 +1,4 @@
-import { DICT_TYPE } from '@/utils/dict'
-import { required } from '@/utils/formRules'
-import { useI18n } from '@/hooks/web/useI18n'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 // 国际化
 const { t } = useI18n()
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts b/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts
index 3d2edbd54..73b5a021c 100644
--- a/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts
+++ b/yudao-ui-admin-vue3/src/views/system/dict/dict.type.ts
@@ -1,7 +1,4 @@
-import { DICT_TYPE } from '@/utils/dict'
-import { required } from '@/utils/formRules'
-import { useI18n } from '@/hooks/web/useI18n'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/dict/index.vue b/yudao-ui-admin-vue3/src/views/system/dict/index.vue
index 643c046dc..d4cce4846 100644
--- a/yudao-ui-admin-vue3/src/views/system/dict/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/dict/index.vue
@@ -122,9 +122,6 @@
   </div>
 </template>
 <script setup lang="ts" name="Dict">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import { VxeTableEvents } from 'vxe-table'
 import type { FormExpose } from '@/components/Form'
 import * as DictTypeSchemas from './dict.type'
diff --git a/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts b/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts
index 41ab7cbab..36f5e4c5e 100644
--- a/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts
@@ -1,7 +1,4 @@
-import { required } from '@/utils/formRules'
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue b/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
index bb9c7c309..1120f8d40 100644
--- a/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
@@ -68,9 +68,7 @@
 </template>
 <script setup lang="ts" name="ErrorCode">
 // 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
+
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import { rules, allSchemas } from './errorCode.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue b/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
index 01af8b4f0..f2bb8c677 100644
--- a/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/loginlog/index.vue
@@ -28,9 +28,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Loginlog">
-// 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
 // 业务相关的 import
 import { allSchemas } from './loginLog.data'
 import { getLoginLogPageApi, exportLoginLogApi, LoginLogVO } from '@/api/system/loginLog'
diff --git a/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts b/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts
index cf001546b..75988e432 100644
--- a/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/loginlog/loginLog.data.ts
@@ -1,5 +1,4 @@
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
diff --git a/yudao-ui-admin-vue3/src/views/system/menu/index.vue b/yudao-ui-admin-vue3/src/views/system/menu/index.vue
index 5a158fd7d..201cd00f6 100644
--- a/yudao-ui-admin-vue3/src/views/system/menu/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/menu/index.vue
@@ -176,9 +176,7 @@
 </template>
 <script setup lang="ts" name="Menu">
 // 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
-import { useMessage } from '@/hooks/web/useMessage'
 import { FormInstance } from 'element-plus'
 // 业务相关的 import
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
@@ -186,7 +184,6 @@ import { SystemMenuTypeEnum, CommonStatusEnum } from '@/utils/constants'
 import { handleTree, defaultProps } from '@/utils/tree'
 import * as MenuApi from '@/api/system/menu'
 import { allSchemas, rules } from './menu.data'
-import { useXTable } from '@/hooks/web/useXTable'
 
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
diff --git a/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts b/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts
index 00713558b..d04ed277c 100644
--- a/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/menu/menu.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { required } from '@/utils/formRules'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 新增和修改的表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/notice/index.vue b/yudao-ui-admin-vue3/src/views/system/notice/index.vue
index ffd0720d3..9ef4d1d6f 100644
--- a/yudao-ui-admin-vue3/src/views/system/notice/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/notice/index.vue
@@ -72,9 +72,6 @@
 </template>
 <script setup lang="ts" name="Notice">
 // 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as NoticeApi from '@/api/system/notice'
diff --git a/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts b/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts
index 7ed499437..7a72a7239 100644
--- a/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts b/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts
index d2039f368..5f84e8117 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/client/client.data.ts
@@ -1,7 +1,5 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 const authorizedGrantOptions = getStrDictOptions(DICT_TYPE.SYSTEM_OAUTH2_GRANT_TYPE)
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue b/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
index 22e904d9e..5400553a4 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
@@ -131,9 +131,6 @@
 </template>
 <script setup lang="ts" name="Client">
 // 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as ClientApi from '@/api/system/oauth2/client'
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue b/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
index 2d6d4656f..f0dfbd9ca 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/token/index.vue
@@ -25,10 +25,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Token">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
-
 import { allSchemas } from './token.data'
 import * as TokenApi from '@/api/system/oauth2/token'
 
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts b/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts
index 1f5ae3f71..8a0e84860 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/token/token.data.ts
@@ -1,6 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 // CrudSchema
 const crudSchemas = reactive<VxeCrudSchema>({
diff --git a/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue b/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
index 4a947ccf0..7f1e9bb44 100644
--- a/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/operatelog/index.vue
@@ -42,9 +42,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="OperateLog">
-// 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
 // 业务相关的 import
 import * as OperateLogApi from '@/api/system/operatelog'
 import { allSchemas } from './operatelog.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts b/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts
index 308835257..e0f0578b1 100644
--- a/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/operatelog/operatelog.data.ts
@@ -1,6 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 
 const { t } = useI18n() // 国际化
 
diff --git a/yudao-ui-admin-vue3/src/views/system/post/index.vue b/yudao-ui-admin-vue3/src/views/system/post/index.vue
index b7eb5536d..66dec0f8d 100644
--- a/yudao-ui-admin-vue3/src/views/system/post/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/post/index.vue
@@ -73,9 +73,6 @@
 </template>
 <script setup lang="ts" name="Post">
 // 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as PostApi from '@/api/system/post'
diff --git a/yudao-ui-admin-vue3/src/views/system/post/post.data.ts b/yudao-ui-admin-vue3/src/views/system/post/post.data.ts
index 4ea240fb1..7a32b233c 100644
--- a/yudao-ui-admin-vue3/src/views/system/post/post.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/post/post.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/role/index.vue b/yudao-ui-admin-vue3/src/views/system/role/index.vue
index 548539bbc..72c602c1a 100644
--- a/yudao-ui-admin-vue3/src/views/system/role/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/role/index.vue
@@ -150,9 +150,6 @@
 <script setup lang="ts" name="Role">
 import type { ElTree } from 'element-plus'
 import type { FormExpose } from '@/components/Form'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import { handleTree, defaultProps } from '@/utils/tree'
 import { SystemDataScopeEnum } from '@/utils/constants'
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
diff --git a/yudao-ui-admin-vue3/src/views/system/role/role.data.ts b/yudao-ui-admin-vue3/src/views/system/role/role.data.ts
index 880bdc659..fef2ec47b 100644
--- a/yudao-ui-admin-vue3/src/views/system/role/role.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/role/role.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 // 国际化
 const { t } = useI18n()
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
index 98cd104e6..c3de895db 100644
--- a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/index.vue
@@ -103,9 +103,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="SensitiveWord">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import * as SensitiveWordApi from '@/api/system/sensitiveWord'
 import { rules, allSchemas } from './sensitiveWord.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts
index d69706ce5..79c90e6cf 100644
--- a/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sensitiveWord/sensitiveWord.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
index d17428c7d..ee47a51aa 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/index.vue
@@ -68,10 +68,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="SmsChannel">
-// 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as SmsChannelApi from '@/api/system/sms/smsChannel'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts
index e54d18919..cc014469f 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsChannel/sms.channel.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
index 70f0f0751..93d1315fc 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/index.vue
@@ -31,9 +31,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="SmsLog">
-// 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useXTable } from '@/hooks/web/useXTable'
 import { allSchemas } from './sms.log.data'
 import * as SmsLoglApi from '@/api/system/sms/smsLog'
 const { t } = useI18n() // 国际化
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts
index c933df88c..501a5a2bd 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsLog/sms.log.data.ts
@@ -1,6 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // CrudSchema
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
index 17e7ff08c..0bc40c8d8 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/index.vue
@@ -109,10 +109,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="SmsTemplate">
-// 全局相关的 import
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as SmsTemplateApi from '@/api/system/sms/smsTemplate'
diff --git a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts
index 130228e48..2fb46fdaf 100644
--- a/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/sms/smsTemplate/sms.template.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/tenant/index.vue b/yudao-ui-admin-vue3/src/views/system/tenant/index.vue
index 0005cc259..20c697d69 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenant/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/tenant/index.vue
@@ -86,9 +86,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Tenant">
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import * as TenantApi from '@/api/system/tenant'
 import { rules, allSchemas, tenantPackageOption } from './tenant.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts b/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts
index 2bf3a4e25..7e81138c1 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/tenant/tenant.data.ts
@@ -1,7 +1,4 @@
-import { useI18n } from '@/hooks/web/useI18n'
-import { required } from '@/utils/formRules'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 import { getTenantPackageList, TenantPackageVO } from '@/api/system/tenantPackage'
 import { ComponentOptions } from '@/types/components'
 
diff --git a/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue b/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
index 6ab9e2b73..a665b8aff 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
@@ -66,9 +66,6 @@
 </template>
 <script setup lang="ts" name="TenantPackage">
 import { handleTree, defaultProps } from '@/utils/tree'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import type { ElTree } from 'element-plus'
 // 业务相关的 import
diff --git a/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts b/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts
index 47fc2ab30..e28ea842b 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/tenantPackage/tenantPackage.data.ts
@@ -1,7 +1,4 @@
-import { required } from '@/utils/formRules'
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 
 // 表单校验
diff --git a/yudao-ui-admin-vue3/src/views/system/user/index.vue b/yudao-ui-admin-vue3/src/views/system/user/index.vue
index 94db1a7f0..971db66dc 100644
--- a/yudao-ui-admin-vue3/src/views/system/user/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/user/index.vue
@@ -266,9 +266,6 @@ import { handleTree, defaultProps } from '@/utils/tree'
 import download from '@/utils/download'
 import { CommonStatusEnum } from '@/utils/constants'
 import { getAccessToken, getTenantId } from '@/utils/auth'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import type { FormExpose } from '@/components/Form'
 import { rules, allSchemas } from './user.data'
 import * as UserApi from '@/api/system/user'
diff --git a/yudao-ui-admin-vue3/src/views/system/user/user.data.ts b/yudao-ui-admin-vue3/src/views/system/user/user.data.ts
index 90c08b4fe..c5b617c3d 100644
--- a/yudao-ui-admin-vue3/src/views/system/user/user.data.ts
+++ b/yudao-ui-admin-vue3/src/views/system/user/user.data.ts
@@ -1,7 +1,4 @@
-import { required } from '@/utils/formRules'
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 // 国际化
 const { t } = useI18n()
 // 表单校验
diff --git a/yudao-ui-admin-vue3/use.md b/yudao-ui-admin-vue3/use.md
index afbafde2d..405d794e6 100644
--- a/yudao-ui-admin-vue3/use.md
+++ b/yudao-ui-admin-vue3/use.md
@@ -25,7 +25,6 @@
 - 本框架集成了国际化,不需要的话可以自己想办法移除,使用方法如下
 
 ```bash
-import { useI18n } from '@/hooks/web/useI18n'
 const { t } = useI18n()
 t('common.createTime')
 并在src/locales 增加相应的中英文

From 0827235c920356763d39f9c5c59840c13c86f0aa Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 14:25:47 +0800
Subject: [PATCH 06/10] perf: auto import

---
 yudao-ui-admin-vue3/src/views/infra/config/index.vue           | 2 --
 yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue | 2 --
 yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue       | 2 --
 yudao-ui-admin-vue3/src/views/system/errorCode/index.vue       | 2 --
 yudao-ui-admin-vue3/src/views/system/menu/index.vue            | 1 -
 yudao-ui-admin-vue3/src/views/system/notice/index.vue          | 1 -
 yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue   | 1 -
 yudao-ui-admin-vue3/src/views/system/post/index.vue            | 1 -
 8 files changed, 12 deletions(-)

diff --git a/yudao-ui-admin-vue3/src/views/infra/config/index.vue b/yudao-ui-admin-vue3/src/views/infra/config/index.vue
index cdeed9bb1..73f0f8ad3 100644
--- a/yudao-ui-admin-vue3/src/views/infra/config/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/config/index.vue
@@ -83,8 +83,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Config">
-// 全局相关的 import
-
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as ConfigApi from '@/api/infra/config'
diff --git a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
index 84bfaa4bd..1e3db49d4 100644
--- a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/index.vue
@@ -66,8 +66,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="DataSourceConfig">
-// 全局相关的 import
-
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as DataSourceConfiggApi from '@/api/infra/dataSourceConfig'
diff --git a/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue b/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
index 403b7d202..9d796a659 100644
--- a/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
+++ b/yudao-ui-admin-vue3/src/views/infra/fileConfig/index.vue
@@ -158,9 +158,7 @@
   </XModal>
 </template>
 <script setup lang="ts" name="FileConfig">
-// 全局相关的 import
 import type { FormInstance } from 'element-plus'
-
 // 业务相关的 import
 import * as FileConfigApi from '@/api/infra/fileConfig'
 import { rules, allSchemas } from './fileConfig.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue b/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
index 1120f8d40..1ff3d103d 100644
--- a/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
@@ -67,8 +67,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="ErrorCode">
-// 全局相关的 import
-
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import { rules, allSchemas } from './errorCode.data'
diff --git a/yudao-ui-admin-vue3/src/views/system/menu/index.vue b/yudao-ui-admin-vue3/src/views/system/menu/index.vue
index 201cd00f6..b92c35653 100644
--- a/yudao-ui-admin-vue3/src/views/system/menu/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/menu/index.vue
@@ -175,7 +175,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Menu">
-// 全局相关的 import
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
 import { FormInstance } from 'element-plus'
 // 业务相关的 import
diff --git a/yudao-ui-admin-vue3/src/views/system/notice/index.vue b/yudao-ui-admin-vue3/src/views/system/notice/index.vue
index 9ef4d1d6f..aceadbbaa 100644
--- a/yudao-ui-admin-vue3/src/views/system/notice/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/notice/index.vue
@@ -71,7 +71,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Notice">
-// 全局相关的 import
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as NoticeApi from '@/api/system/notice'
diff --git a/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue b/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
index 5400553a4..9ff446926 100644
--- a/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/oauth2/client/index.vue
@@ -130,7 +130,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Client">
-// 全局相关的 import
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as ClientApi from '@/api/system/oauth2/client'
diff --git a/yudao-ui-admin-vue3/src/views/system/post/index.vue b/yudao-ui-admin-vue3/src/views/system/post/index.vue
index 66dec0f8d..f8e5be3b0 100644
--- a/yudao-ui-admin-vue3/src/views/system/post/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/post/index.vue
@@ -72,7 +72,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="Post">
-// 全局相关的 import
 import type { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import * as PostApi from '@/api/system/post'

From db914c9758bb2f2552196cc400e84eb4af0d898a Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 14:26:52 +0800
Subject: [PATCH 07/10] =?UTF-8?q?=E9=80=82=E9=85=8D=E6=9C=80=E6=96=B0=20vu?=
 =?UTF-8?q?e3=20=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/main/resources/codegen/vue3/views/data.ts.vm        | 6 +-----
 .../src/main/resources/codegen/vue3/views/index.vue.vm      | 5 -----
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm
index 33e204a46..8138f129c 100644
--- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm
+++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm
@@ -1,8 +1,4 @@
-import { reactive } from 'vue'
-import { useI18n } from '@/hooks/web/useI18n'
-import { DICT_TYPE } from '@/utils/dict'
-import { required } from '@/utils/formRules'
-import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas'
+import type { VxeCrudSchema } from '@/hooks/web/useVxeCrudSchemas'
 const { t } = useI18n() // 国际化
 // 表单校验
 export const rules = reactive({
diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
index 6b520c2c3..389458c51 100644
--- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
+++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm
@@ -75,11 +75,6 @@
   </XModal>
 </template>
 <script setup lang="ts" name="${simpleClassName}">
-// 全局相关的 import
-import { ref, unref } from 'vue'
-import { useI18n } from '@/hooks/web/useI18n'
-import { useMessage } from '@/hooks/web/useMessage'
-import { useXTable } from '@/hooks/web/useXTable'
 import { FormExpose } from '@/components/Form'
 // 业务相关的 import
 import { rules, allSchemas } from './${classNameVar}.data'

From 91e8da47e5116929167ec0632800917278b6f16c Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 15:05:17 +0800
Subject: [PATCH 08/10] fix: xtable topAction

---
 yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
index 160afa0ba..d093489db 100644
--- a/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
+++ b/yudao-ui-admin-vue3/src/components/XTable/src/XTable.vue
@@ -259,6 +259,10 @@ const getToolBarConfig = (options: XTableProps) => {
       return
     }
   } else if (!topActionSlots) {
+    options.toolbarConfig = {
+      enabled: true
+    }
+  } else {
     options.toolbarConfig = {
       slots: { buttons: 'toolbar_buttons' }
     }

From 9ee56bce25f30b1271e938b4ce7b30b9de7eca2e Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 15:05:31 +0800
Subject: [PATCH 09/10] fix: editor

---
 yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue | 1 +
 1 file changed, 1 insertion(+)

diff --git a/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue b/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue
index 90e67a564..85b849fba 100644
--- a/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue
+++ b/yudao-ui-admin-vue3/src/components/Editor/src/Editor.vue
@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { PropType } from 'vue'
+import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
 import { IDomEditor, IEditorConfig, i18nChangeLanguage } from '@wangeditor/editor'
 import { propTypes } from '@/utils/propTypes'
 import { isNumber } from '@/utils/is'

From d3ab3e07607f696e72f06b6d187f7e5eab61e4bb Mon Sep 17 00:00:00 2001
From: xingyu <xingyu4j@vip.qq.com>
Date: Wed, 18 Jan 2023 15:05:44 +0800
Subject: [PATCH 10/10] perf: aotu imports

---
 yudao-ui-admin-vue3/build/vite/index.ts       |  26 +-
 yudao-ui-admin-vue3/build/vite/styleImport.ts |  18 --
 yudao-ui-admin-vue3/package.json              |  10 +-
 yudao-ui-admin-vue3/pnpm-lock.yaml            | 245 ++++++------------
 .../src/plugins/vxeTable/index.ts             |   1 +
 .../src/types/auto-components.d.ts            |   1 +
 6 files changed, 90 insertions(+), 211 deletions(-)
 delete mode 100644 yudao-ui-admin-vue3/build/vite/styleImport.ts

diff --git a/yudao-ui-admin-vue3/build/vite/index.ts b/yudao-ui-admin-vue3/build/vite/index.ts
index fe03700a4..717db992c 100644
--- a/yudao-ui-admin-vue3/build/vite/index.ts
+++ b/yudao-ui-admin-vue3/build/vite/index.ts
@@ -6,6 +6,7 @@ import progress from 'vite-plugin-progress'
 import EslintPlugin from 'vite-plugin-eslint'
 import PurgeIcons from 'vite-plugin-purge-icons'
 import { ViteEjsPlugin } from 'vite-plugin-ejs'
+import ElementPlus from 'unplugin-element-plus/vite'
 import AutoImport from 'unplugin-auto-import/vite'
 import Components from 'unplugin-vue-components/vite'
 import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
@@ -13,11 +14,6 @@ import viteCompression from 'vite-plugin-compression'
 import vueSetupExtend from 'vite-plugin-vue-setup-extend'
 import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
 import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
-import {
-  createStyleImportPlugin,
-  ElementPlusResolve,
-  VxeTableResolve
-} from 'vite-plugin-style-import'
 export function createVitePlugins(VITE_APP_TITLE: string) {
   const root = process.cwd()
   // 路径查找
@@ -31,6 +27,7 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
     progress(),
     PurgeIcons(),
     vueSetupExtend(),
+    ElementPlus(),
     AutoImport({
       include: [
         /\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
@@ -72,25 +69,6 @@ export function createVitePlugins(VITE_APP_TITLE: string) {
       resolvers: [ElementPlusResolver()],
       exclude: [/[\\/]node_modules[\\/]/]
     }),
-    createStyleImportPlugin({
-      resolves: [ElementPlusResolve(), VxeTableResolve()],
-      libs: [
-        {
-          libraryName: 'element-plus',
-          esModule: true,
-          resolveStyle: (name) => {
-            return `element-plus/es/components/${name.substring(3)}/style/css`
-          }
-        },
-        {
-          libraryName: 'vxe-table',
-          esModule: true,
-          resolveStyle: (name) => {
-            return `vxe-table/es/${name}/style.css`
-          }
-        }
-      ]
-    }),
     EslintPlugin({
       cache: false,
       include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件
diff --git a/yudao-ui-admin-vue3/build/vite/styleImport.ts b/yudao-ui-admin-vue3/build/vite/styleImport.ts
deleted file mode 100644
index 30dac059b..000000000
--- a/yudao-ui-admin-vue3/build/vite/styleImport.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export const styleImportPlugin = {
-  libs: [
-    {
-      libraryName: 'element-plus',
-      esModule: true,
-      resolveStyle: (name) => {
-        return `element-plus/es/components/${name.substring(3)}/style/css`
-      }
-    },
-    {
-      libraryName: 'vxe-table',
-      esModule: true,
-      resolveStyle: (name) => {
-        return `vxe-table/es/${name}/style.css`
-      }
-    }
-  ]
-}
diff --git a/yudao-ui-admin-vue3/package.json b/yudao-ui-admin-vue3/package.json
index 4a12c1be9..e3b7700b3 100644
--- a/yudao-ui-admin-vue3/package.json
+++ b/yudao-ui-admin-vue3/package.json
@@ -25,12 +25,12 @@
   },
   "dependencies": {
     "@iconify/iconify": "^3.0.1",
-    "@vueuse/core": "^9.10.0",
+    "@vueuse/core": "^9.11.0",
     "@wangeditor/editor": "^5.1.23",
     "@wangeditor/editor-for-vue": "^5.1.10",
     "@zxcvbn-ts/core": "^2.1.0",
     "animate.css": "^4.1.1",
-    "axios": "^1.2.2",
+    "axios": "^1.2.3",
     "cropperjs": "^1.5.13",
     "crypto-js": "^4.1.1",
     "dayjs": "^1.11.7",
@@ -57,7 +57,7 @@
   "devDependencies": {
     "@commitlint/cli": "^17.4.2",
     "@commitlint/config-conventional": "^17.4.2",
-    "@iconify/json": "^2.2.7",
+    "@iconify/json": "^2.2.8",
     "@intlify/unplugin-vue-i18n": "^0.8.1",
     "@purge-icons/generated": "^0.9.0",
     "@types/intro.js": "^5.1.0",
@@ -83,7 +83,7 @@
     "postcss-html": "^1.5.0",
     "postcss-scss": "^4.0.6",
     "prettier": "^2.8.3",
-    "rimraf": "^4.1.0",
+    "rimraf": "^4.1.1",
     "rollup": "^3.10.0",
     "sass": "^1.57.1",
     "stylelint": "^14.16.1",
@@ -95,6 +95,7 @@
     "terser": "^5.16.1",
     "typescript": "4.9.4",
     "unplugin-auto-import": "^0.12.1",
+    "unplugin-element-plus": "^0.4.1",
     "unplugin-vue-components": "^0.22.12",
     "vite": "4.0.4",
     "vite-plugin-compression": "^0.5.1",
@@ -102,7 +103,6 @@
     "vite-plugin-eslint": "^1.8.1",
     "vite-plugin-progress": "^0.0.6",
     "vite-plugin-purge-icons": "^0.9.2",
-    "vite-plugin-style-import": "2.0.0",
     "vite-plugin-svg-icons": "^2.0.1",
     "vite-plugin-vue-setup-extend": "^0.4.0",
     "vite-plugin-windicss": "^1.8.10",
diff --git a/yudao-ui-admin-vue3/pnpm-lock.yaml b/yudao-ui-admin-vue3/pnpm-lock.yaml
index cfec2b595..7c0f236be 100644
--- a/yudao-ui-admin-vue3/pnpm-lock.yaml
+++ b/yudao-ui-admin-vue3/pnpm-lock.yaml
@@ -4,7 +4,7 @@ specifiers:
   '@commitlint/cli': ^17.4.2
   '@commitlint/config-conventional': ^17.4.2
   '@iconify/iconify': ^3.0.1
-  '@iconify/json': ^2.2.7
+  '@iconify/json': ^2.2.8
   '@intlify/unplugin-vue-i18n': ^0.8.1
   '@purge-icons/generated': ^0.9.0
   '@types/intro.js': ^5.1.0
@@ -18,13 +18,13 @@ specifiers:
   '@vitejs/plugin-legacy': ^3.0.1
   '@vitejs/plugin-vue': ^4.0.0
   '@vitejs/plugin-vue-jsx': ^3.0.0
-  '@vueuse/core': ^9.10.0
+  '@vueuse/core': ^9.11.0
   '@wangeditor/editor': ^5.1.23
   '@wangeditor/editor-for-vue': ^5.1.10
   '@zxcvbn-ts/core': ^2.1.0
   animate.css: ^4.1.1
   autoprefixer: ^10.4.13
-  axios: ^1.2.2
+  axios: ^1.2.3
   consola: ^2.15.3
   cropperjs: ^1.5.13
   crypto-js: ^4.1.1
@@ -50,7 +50,7 @@ specifiers:
   prettier: ^2.8.3
   qrcode: ^1.5.1
   qs: ^6.11.0
-  rimraf: ^4.1.0
+  rimraf: ^4.1.1
   rollup: ^3.10.0
   sass: ^1.57.1
   stylelint: ^14.16.1
@@ -62,6 +62,7 @@ specifiers:
   terser: ^5.16.1
   typescript: 4.9.4
   unplugin-auto-import: ^0.12.1
+  unplugin-element-plus: ^0.4.1
   unplugin-vue-components: ^0.22.12
   url: ^0.11.0
   vite: 4.0.4
@@ -70,7 +71,6 @@ specifiers:
   vite-plugin-eslint: ^1.8.1
   vite-plugin-progress: ^0.0.6
   vite-plugin-purge-icons: ^0.9.2
-  vite-plugin-style-import: 2.0.0
   vite-plugin-svg-icons: ^2.0.1
   vite-plugin-vue-setup-extend: ^0.4.0
   vite-plugin-windicss: ^1.8.10
@@ -86,12 +86,12 @@ specifiers:
 
 dependencies:
   '@iconify/iconify': 3.0.1
-  '@vueuse/core': 9.10.0_vue@3.2.45
+  '@vueuse/core': 9.11.0_vue@3.2.45
   '@wangeditor/editor': 5.1.23
   '@wangeditor/editor-for-vue': 5.1.12_3apfu3xbp6awzuex7ed3sbrv6y
   '@zxcvbn-ts/core': 2.1.0
   animate.css: 4.1.1
-  axios: 1.2.2
+  axios: 1.2.3
   cropperjs: 1.5.13
   crypto-js: 4.1.1
   dayjs: 1.11.7
@@ -118,7 +118,7 @@ dependencies:
 devDependencies:
   '@commitlint/cli': 17.4.2
   '@commitlint/config-conventional': 17.4.2
-  '@iconify/json': 2.2.7
+  '@iconify/json': 2.2.8
   '@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.2.2
   '@purge-icons/generated': 0.9.0
   '@types/intro.js': 5.1.0
@@ -144,7 +144,7 @@ devDependencies:
   postcss-html: 1.5.0
   postcss-scss: 4.0.6_postcss@8.4.21
   prettier: 2.8.3
-  rimraf: 4.1.0
+  rimraf: 4.1.1
   rollup: 3.10.0
   sass: 1.57.1
   stylelint: 14.16.1
@@ -155,7 +155,8 @@ devDependencies:
   stylelint-order: 6.0.1_stylelint@14.16.1
   terser: 5.16.1
   typescript: 4.9.4
-  unplugin-auto-import: 0.12.1_gyxbveewukbcvt3zzy7ycqctbe
+  unplugin-auto-import: 0.12.1_ta7poabqclszbk6bszysx4wo3y
+  unplugin-element-plus: 0.4.1_rollup@3.10.0+vite@4.0.4
   unplugin-vue-components: 0.22.12_rollup@3.10.0+vue@3.2.45
   vite: 4.0.4_zxbrnrc4iyldik6mikh3pswz4i
   vite-plugin-compression: 0.5.1_vite@4.0.4
@@ -163,7 +164,6 @@ devDependencies:
   vite-plugin-eslint: 1.8.1_eslint@8.32.0+vite@4.0.4
   vite-plugin-progress: 0.0.6_vite@4.0.4
   vite-plugin-purge-icons: 0.9.2_vite@4.0.4
-  vite-plugin-style-import: 2.0.0_vite@4.0.4
   vite-plugin-svg-icons: 2.0.1_vite@4.0.4
   vite-plugin-vue-setup-extend: 0.4.0_vite@4.0.4
   vite-plugin-windicss: 1.8.10_vite@4.0.4
@@ -967,8 +967,8 @@ packages:
     dependencies:
       '@iconify/types': 2.0.0
 
-  /@iconify/json/2.2.7:
-    resolution: {integrity: sha512-cWDwr+KE0KNSFmxrR0rvM5AmP4JmJWCZiyhFZ1bywwBJsrV/x+19bLbEAvmn4pmKKYWCAy4F9clpVWynYslzoQ==}
+  /@iconify/json/2.2.8:
+    resolution: {integrity: sha512-Vusnz/QRrTmGFzzmZ1Mf6mG2OEbBWLrd/gXgaBpCbjP/abDLdKd7+DMRJlaZA/jqMJ0rsIL0juZ9FwApBnh/ww==}
     dependencies:
       '@iconify/types': 2.0.0
       pathe: 1.0.0
@@ -1646,22 +1646,22 @@ packages:
   /@vue/shared/3.2.45:
     resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==}
 
-  /@vueuse/core/9.10.0_vue@3.2.45:
-    resolution: {integrity: sha512-CxMewME07qeuzuT/AOIQGv0EhhDoojniqU6pC3F8m5VC76L47UT18DcX88kWlP3I7d3qMJ4u/PD8iSRsy3bmNA==}
+  /@vueuse/core/9.11.0_vue@3.2.45:
+    resolution: {integrity: sha512-7yZJ8LNOssA8ZmeSjd4F+wbFBA4csiP4TiaXgruqg1H4PAtzSkv93PPwFLvQkSnfo3Bar+e+6QoRvWjhz7l2Xg==}
     dependencies:
       '@types/web-bluetooth': 0.0.16
-      '@vueuse/metadata': 9.10.0
-      '@vueuse/shared': 9.10.0_vue@3.2.45
+      '@vueuse/metadata': 9.11.0
+      '@vueuse/shared': 9.11.0_vue@3.2.45
       vue-demi: 0.13.11_vue@3.2.45
     transitivePeerDependencies:
       - '@vue/composition-api'
       - vue
 
-  /@vueuse/metadata/9.10.0:
-    resolution: {integrity: sha512-G5VZhgTCapzU9rv0Iq2HBrVOSGzOKb+OE668NxhXNcTjUjwYxULkEhAw70FtRLMZc+hxcFAzDZlKYA0xcwNMuw==}
+  /@vueuse/metadata/9.11.0:
+    resolution: {integrity: sha512-HhtG2SWkcfZBLbamHdvLn7jKOCFpw/ifXjVTd5ilFkj98WVUk/3UTQ03wF1XIkuhSO4+b45hD2lfG9/GdKCF7w==}
 
-  /@vueuse/shared/9.10.0_vue@3.2.45:
-    resolution: {integrity: sha512-vakHJ2ZRklAzqmcVBL38RS7BxdBA4+5poG9NsSyqJxrt9kz0zX3P5CXMy0Hm6LFbZXUgvKdqAS3pUH1zX/5qTQ==}
+  /@vueuse/shared/9.11.0_vue@3.2.45:
+    resolution: {integrity: sha512-8lO7wD5abYxupKy2KynH1pSgP715ky6iCrWYb8aX2AuAVi9uHXj7qE1dw6BnmArSaLHci4x9iuzWPCpAzUkC/A==}
     dependencies:
       vue-demi: 0.13.11_vue@3.2.45
     transitivePeerDependencies:
@@ -2099,8 +2099,8 @@ packages:
       - debug
     dev: true
 
-  /axios/1.2.2:
-    resolution: {integrity: sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==}
+  /axios/1.2.3:
+    resolution: {integrity: sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==}
     dependencies:
       follow-redirects: 1.15.2
       form-data: 4.0.0
@@ -2227,13 +2227,6 @@ packages:
     engines: {node: '>=6'}
     dev: true
 
-  /camel-case/4.1.2:
-    resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
-    dependencies:
-      pascal-case: 3.1.2
-      tslib: 2.4.1
-    dev: true
-
   /camelcase-keys/6.2.2:
     resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
     engines: {node: '>=8'}
@@ -2256,14 +2249,6 @@ packages:
     resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==}
     dev: true
 
-  /capital-case/1.0.4:
-    resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
-    dependencies:
-      no-case: 3.0.4
-      tslib: 2.4.1
-      upper-case-first: 2.0.2
-    dev: true
-
   /chalk/1.1.3:
     resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
     engines: {node: '>=0.10.0'}
@@ -2292,23 +2277,6 @@ packages:
       supports-color: 7.2.0
     dev: true
 
-  /change-case/4.1.2:
-    resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==}
-    dependencies:
-      camel-case: 4.1.2
-      capital-case: 1.0.4
-      constant-case: 3.0.4
-      dot-case: 3.0.4
-      header-case: 2.0.4
-      no-case: 3.0.4
-      param-case: 3.0.4
-      pascal-case: 3.1.2
-      path-case: 3.0.4
-      sentence-case: 3.0.4
-      snake-case: 3.0.4
-      tslib: 2.4.1
-    dev: true
-
   /chokidar/3.5.3:
     resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
     engines: {node: '>= 8.10.0'}
@@ -2463,18 +2431,6 @@ packages:
     resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
     dev: true
 
-  /console/0.7.2:
-    resolution: {integrity: sha512-+JSDwGunA4MTEgAV/4VBKwUHonP8CzJ/6GIuwPi6acKFqFfHUdSGCm89ZxZ5FfGWdZfkdgAroy5bJ5FSeN/t4g==}
-    dev: true
-
-  /constant-case/3.0.4:
-    resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
-    dependencies:
-      no-case: 3.0.4
-      tslib: 2.4.1
-      upper-case: 2.0.2
-    dev: true
-
   /conventional-changelog-angular/5.0.13:
     resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
     engines: {node: '>=10'}
@@ -2830,13 +2786,6 @@ packages:
       domhandler: 5.0.3
     dev: true
 
-  /dot-case/3.0.4:
-    resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
-    dependencies:
-      no-case: 3.0.4
-      tslib: 2.4.1
-    dev: true
-
   /dot-prop/5.3.0:
     resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
     engines: {node: '>=8'}
@@ -2886,7 +2835,7 @@ packages:
       '@popperjs/core': /@sxzz/popperjs-es/2.11.7
       '@types/lodash': 4.14.189
       '@types/lodash-es': 4.17.6
-      '@vueuse/core': 9.10.0_vue@3.2.45
+      '@vueuse/core': 9.11.0_vue@3.2.45
       async-validator: 4.2.5
       dayjs: 1.11.7
       escape-html: 1.0.3
@@ -2935,8 +2884,8 @@ packages:
       is-arrayish: 0.2.1
     dev: true
 
-  /es-module-lexer/0.9.3:
-    resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
+  /es-module-lexer/0.10.5:
+    resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==}
     dev: true
 
   /es5-ext/0.10.62:
@@ -3666,13 +3615,6 @@ packages:
     hasBin: true
     dev: true
 
-  /header-case/2.0.4:
-    resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
-    dependencies:
-      capital-case: 1.0.4
-      tslib: 2.4.1
-    dev: true
-
   /hosted-git-info/2.8.9:
     resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
     dev: true
@@ -4298,12 +4240,6 @@ packages:
       wrap-ansi: 6.2.0
     dev: true
 
-  /lower-case/2.0.2:
-    resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
-    dependencies:
-      tslib: 2.4.1
-    dev: true
-
   /lru-cache/6.0.0:
     resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
     engines: {node: '>=10'}
@@ -4316,6 +4252,13 @@ packages:
     dependencies:
       sourcemap-codec: 1.4.8
 
+  /magic-string/0.26.7:
+    resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
+    engines: {node: '>=12'}
+    dependencies:
+      sourcemap-codec: 1.4.8
+    dev: true
+
   /magic-string/0.27.0:
     resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/magic-string/-/magic-string-0.27.0.tgz}
     engines: {node: '>=12'}
@@ -4573,13 +4516,6 @@ packages:
     resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
     dev: false
 
-  /no-case/3.0.4:
-    resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
-    dependencies:
-      lower-case: 2.0.2
-      tslib: 2.4.1
-    dev: true
-
   /node-fetch/2.6.7:
     resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/node-fetch/-/node-fetch-2.6.7.tgz}
     engines: {node: 4.x || >=6.0.0}
@@ -4753,13 +4689,6 @@ packages:
     resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
     engines: {node: '>=6'}
 
-  /param-case/3.0.4:
-    resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
-    dependencies:
-      dot-case: 3.0.4
-      tslib: 2.4.1
-    dev: true
-
   /parent-module/1.0.1:
     resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
     engines: {node: '>=6'}
@@ -4777,25 +4706,11 @@ packages:
       lines-and-columns: 1.2.4
     dev: true
 
-  /pascal-case/3.1.2:
-    resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
-    dependencies:
-      no-case: 3.0.4
-      tslib: 2.4.1
-    dev: true
-
   /pascalcase/0.1.1:
     resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
     engines: {node: '>=0.10.0'}
     dev: true
 
-  /path-case/3.0.4:
-    resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==}
-    dependencies:
-      dot-case: 3.0.4
-      tslib: 2.4.1
-    dev: true
-
   /path-exists/4.0.0:
     resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
     engines: {node: '>=8'}
@@ -5238,8 +5153,8 @@ packages:
       glob: 7.2.3
     dev: true
 
-  /rimraf/4.1.0:
-    resolution: {integrity: sha512-ZJdkUR5/dRrRJHdcSKJLrpRn6tVjl9ALxd4yrTCxFsMpjQNzwHF6GLqMsuEzEYIXxHlFPDSk21Vr8VPuFBEz0g==}
+  /rimraf/4.1.1:
+    resolution: {integrity: sha512-Z4Y81w8atcvaJuJuBB88VpADRH66okZAuEm+Jtaufa+s7rZmIz+Hik2G53kGaNytE7lsfXyWktTmfVz0H9xuDg==}
     engines: {node: '>=14'}
     hasBin: true
     dev: true
@@ -5331,14 +5246,6 @@ packages:
       lru-cache: 6.0.0
     dev: true
 
-  /sentence-case/3.0.4:
-    resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==}
-    dependencies:
-      no-case: 3.0.4
-      tslib: 2.4.1
-      upper-case-first: 2.0.2
-    dev: true
-
   /set-blocking/2.0.0:
     resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
     dev: false
@@ -5430,13 +5337,6 @@ packages:
     engines: {node: '>=8.3.0'}
     dev: false
 
-  /snake-case/3.0.4:
-    resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
-    dependencies:
-      dot-case: 3.0.4
-      tslib: 2.4.1
-    dev: true
-
   /snapdragon-node/2.1.1:
     resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
     engines: {node: '>=0.10.0'}
@@ -6051,7 +5951,7 @@ packages:
     engines: {node: '>= 10.0.0'}
     dev: true
 
-  /unplugin-auto-import/0.12.1_gyxbveewukbcvt3zzy7ycqctbe:
+  /unplugin-auto-import/0.12.1_ta7poabqclszbk6bszysx4wo3y:
     resolution: {integrity: sha512-J/3ZORq5YGKG+8D5vLLOgqaHNK77izlVN07mQ752yRLqBNDbJiwPRSnUwwYqH5N6rDay1SqnJCHaUdbJ9QMI2w==}
     engines: {node: '>=14'}
     peerDependencies:
@@ -6062,7 +5962,7 @@ packages:
     dependencies:
       '@antfu/utils': 0.7.2
       '@rollup/pluginutils': 5.0.2_rollup@3.10.0
-      '@vueuse/core': 9.10.0_vue@3.2.45
+      '@vueuse/core': 9.11.0_vue@3.2.45
       local-pkg: 0.4.2
       magic-string: 0.27.0
       unimport: 1.2.0_rollup@3.10.0
@@ -6071,6 +5971,21 @@ packages:
       - rollup
     dev: true
 
+  /unplugin-element-plus/0.4.1_rollup@3.10.0+vite@4.0.4:
+    resolution: {integrity: sha512-x8L35sppkbtnAf+aSPXNsLPjCUrM0mWKgujqMIgrHiDQaGbpMlNnbN2kjP5CMclykNOw8fUCreEhtxPyzg8tmw==}
+    engines: {node: '>=14.19.0'}
+    dependencies:
+      '@rollup/pluginutils': 4.2.1
+      es-module-lexer: 0.10.5
+      magic-string: 0.26.7
+      unplugin: 0.7.2_rollup@3.10.0+vite@4.0.4
+    transitivePeerDependencies:
+      - esbuild
+      - rollup
+      - vite
+      - webpack
+    dev: true
+
   /unplugin-vue-components/0.22.12_rollup@3.10.0+vue@3.2.45:
     resolution: {integrity: sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==}
     engines: {node: '>=14'}
@@ -6097,6 +6012,31 @@ packages:
       - supports-color
     dev: true
 
+  /unplugin/0.7.2_rollup@3.10.0+vite@4.0.4:
+    resolution: {integrity: sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==}
+    peerDependencies:
+      esbuild: '>=0.13'
+      rollup: ^2.50.0
+      vite: ^2.3.0 || ^3.0.0-0
+      webpack: 4 || 5
+    peerDependenciesMeta:
+      esbuild:
+        optional: true
+      rollup:
+        optional: true
+      vite:
+        optional: true
+      webpack:
+        optional: true
+    dependencies:
+      acorn: 8.8.1
+      chokidar: 3.5.3
+      rollup: 3.10.0
+      vite: 4.0.4_zxbrnrc4iyldik6mikh3pswz4i
+      webpack-sources: 3.2.3
+      webpack-virtual-modules: 0.4.6
+    dev: true
+
   /unplugin/1.0.1:
     resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==}
     dependencies:
@@ -6125,18 +6065,6 @@ packages:
       picocolors: 1.0.0
     dev: true
 
-  /upper-case-first/2.0.2:
-    resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
-    dependencies:
-      tslib: 2.4.1
-    dev: true
-
-  /upper-case/2.0.2:
-    resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==}
-    dependencies:
-      tslib: 2.4.1
-    dev: true
-
   /uri-js/4.4.1:
     resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
     dependencies:
@@ -6243,21 +6171,6 @@ packages:
       - supports-color
     dev: true
 
-  /vite-plugin-style-import/2.0.0_vite@4.0.4:
-    resolution: {integrity: sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==}
-    peerDependencies:
-      vite: '>=2.0.0'
-    dependencies:
-      '@rollup/pluginutils': 4.2.1
-      change-case: 4.1.2
-      console: 0.7.2
-      es-module-lexer: 0.9.3
-      fs-extra: 10.1.0
-      magic-string: 0.25.9
-      pathe: 0.2.0
-      vite: 4.0.4_zxbrnrc4iyldik6mikh3pswz4i
-    dev: true
-
   /vite-plugin-svg-icons/2.0.1_vite@4.0.4:
     resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==}
     peerDependencies:
@@ -6452,6 +6365,10 @@ packages:
     engines: {node: '>=10.13.0'}
     dev: true
 
+  /webpack-virtual-modules/0.4.6:
+    resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==}
+    dev: true
+
   /webpack-virtual-modules/0.5.0:
     resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
     dev: true
diff --git a/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts b/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
index e105ebb95..9576e8175 100644
--- a/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
+++ b/yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
@@ -1,6 +1,7 @@
 import { App } from 'vue'
 import XEUtils from 'xe-utils'
 import './renderer'
+import 'vxe-table/lib/style.css'
 import { i18n } from '@/plugins/vueI18n'
 import zhCN from 'vxe-table/lib/locale/lang/zh-CN'
 import enUS from 'vxe-table/lib/locale/lang/en-US'
diff --git a/yudao-ui-admin-vue3/src/types/auto-components.d.ts b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
index 363bf13ee..0a56908aa 100644
--- a/yudao-ui-admin-vue3/src/types/auto-components.d.ts
+++ b/yudao-ui-admin-vue3/src/types/auto-components.d.ts
@@ -48,6 +48,7 @@ declare module '@vue/runtime-core' {
     ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
     ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
     ElRow: typeof import('element-plus/es')['ElRow']
+    ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
     ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']