diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..dd765724e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# http://editorconfig.org +root = true + +# 表示所有文件适用 +[*] +charset = utf-8 # 设置文件字符集为 utf-8 +end_of_line = lf # 控制换行类型(lf | cr | crlf) +indent_style = tab # 缩进风格(tab | space) +insert_final_newline = true # 始终在文件末尾插入一个新行 + +# 表示仅 md 文件适用以下规则 +[*.md] +max_line_length = off # 关闭最大行长度限制 +trim_trailing_whitespace = false # 关闭末尾空格修剪 diff --git a/.env.development b/.env.development new file mode 100644 index 000000000..64e3ed13b --- /dev/null +++ b/.env.development @@ -0,0 +1,10 @@ +## 开发环境 + +# 变量必须以 VITE_ 为前缀才能暴露给外部读取 +NODE_ENV='development' + +VITE_APP_TITLE = 'vue3-element-admin' +VITE_APP_PORT = 9999 +VITE_APP_BASE_API = '/dev-api' +VITE_APP_BASE_URL = 'http://myvuetest.net' +VITE_APP_TOKEN_KEY = 'offlineAccessSystemAppToken' diff --git a/.env.production b/.env.production new file mode 100644 index 000000000..46ddbf3c2 --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +## 生产环境 + +VITE_APP_TITLE = '数通智联化工云平台' +VITE_APP_PORT = 17777 +VITE_APP_BASE_API = '' +VITE_APP_TOKEN_KEY = 'onlineAccessSystemAppToken' diff --git a/.env.staging b/.env.staging new file mode 100644 index 000000000..f1e5275df --- /dev/null +++ b/.env.staging @@ -0,0 +1,6 @@ +## 模拟环境 +NODE_ENV='staging' + +VITE_APP_TITLE = '数通智联化工云平台' +VITE_APP_PORT = 3000 +VITE_APP_BASE_API = '/prod--api' diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..43af40f40 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,14 @@ +dist +node_modules +public +.husky +.vscode +.idea +*.sh +*.md + +src/assets + +.eslintrc.cjs +.prettierrc.cjs +.stylelintrc.cjs diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json new file mode 100644 index 000000000..9f3694230 --- /dev/null +++ b/.eslintrc-auto-import.json @@ -0,0 +1,269 @@ +{ + "globals": { + "EffectScope": true, + "ElForm": true, + "ElMessage": true, + "ElMessageBox": true, + "ElTree": 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, + "resolveDirective": 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, + "useArrayFindLast": true, + "useArrayJoin": true, + "useArrayMap": true, + "useArrayReduce": true, + "useArraySome": true, + "useArrayUnique": true, + "useAsyncQueue": true, + "useAsyncState": true, + "useAttrs": true, + "useBase64": true, + "useBattery": true, + "useBluetooth": true, + "useBreakpoints": true, + "useBroadcastChannel": true, + "useBrowserLocation": true, + "useCached": true, + "useClipboard": true, + "useCloned": 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, + "usePointerLock": true, + "usePointerSwipe": true, + "usePreferredColorScheme": true, + "usePreferredContrast": true, + "usePreferredDark": true, + "usePreferredLanguages": true, + "usePreferredReducedMotion": true, + "usePrevious": true, + "useRafFn": true, + "useRefHistory": true, + "useResizeObserver": true, + "useScreenOrientation": true, + "useScreenSafeArea": true, + "useScriptTag": true, + "useScroll": true, + "useScrollLock": true, + "useSessionStorage": true, + "useShare": true, + "useSlots": true, + "useSorted": 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, + "useToNumber": true, + "useToString": 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 + } +} \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 000000000..e4abf995f --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,32 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true, + }, + parser: "vue-eslint-parser", + extends: [ + // 参考vuejs官方的eslint配置: https://eslint.vuejs.org/user-guide/#usage + "plugin:vue/vue3-recommended", + "./.eslintrc-auto-import.json", + "prettier", + ], + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + parser: "@typescript-eslint/parser", + }, + plugins: ["vue", "@typescript-eslint"], + rules: { + "vue/multi-word-component-names": "off", // 关闭组件名必须多字: https://eslint.vuejs.org/rules/multi-word-component-names.html + "@typescript-eslint/no-empty-function": "off", // 关闭空方法检查 + "@typescript-eslint/no-explicit-any": "off", // 关闭any类型的警告 + "vue/no-v-model-argument": "off", + "@typescript-eslint/no-non-null-assertion": "off", + }, + // https://eslint.org/docs/latest/use/configure/language-options#specifying-globals + globals: { + DialogOption: "readonly", + OptionType: "readonly", + }, +}; diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 000000000..e8511eaea --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install commitlint --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 000000000..37568d10a --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npm run lint:lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..d751f74a6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,10 @@ +dist +node_modules +public +.husky +.vscode +.idea +*.sh +*.md + +src/assets diff --git a/.prettierrc.cjs b/.prettierrc.cjs new file mode 100644 index 000000000..d39f28c00 --- /dev/null +++ b/.prettierrc.cjs @@ -0,0 +1,36 @@ +module.exports = { + // (x)=>{},单个参数箭头函数是否显示小括号。(always:始终显示;avoid:省略括号。默认:always) + arrowParens: "always", + // 开始标签的右尖括号是否跟随在最后一行属性末尾,默认false + bracketSameLine: false, + // 对象字面量的括号之间打印空格 (true - Example: { foo: bar } ; false - Example: {foo:bar}) + bracketSpacing: true, + // 是否格式化一些文件中被嵌入的代码片段的风格(auto|off;默认auto) + embeddedLanguageFormatting: "auto", + // 指定 HTML 文件的空格敏感度 (css|strict|ignore;默认css) + htmlWhitespaceSensitivity: "css", + // 当文件已经被 Prettier 格式化之后,是否会在文件顶部插入一个特殊的 @format 标记,默认false + insertPragma: false, + // 在 JSX 中使用单引号替代双引号,默认false + jsxSingleQuote: false, + // 每行最多字符数量,超出换行(默认80) + printWidth: 80, + // 超出打印宽度 (always | never | preserve ) + proseWrap: "preserve", + // 对象属性是否使用引号(as-needed | consistent | preserve;默认as-needed:对象的属性需要加引号才添加;) + quoteProps: "as-needed", + // 是否只格式化在文件顶部包含特定注释(@prettier| @format)的文件,默认false + requirePragma: false, + // 结尾添加分号 + semi: true, + // 使用单引号 (true:单引号;false:双引号) + singleQuote: false, + // 缩进空格数,默认2个空格 + tabWidth: 2, + // 元素末尾是否加逗号,默认es5: ES5中的 objects, arrays 等会添加逗号,TypeScript 中的 type 后不加逗号 + trailingComma: "es5", + // 指定缩进方式,空格或tab,默认false,即使用空格 + useTabs: false, + // vue 文件中是否缩进 \ No newline at end of file diff --git a/src/assets/icons/cc.svg b/src/assets/icons/cc.svg new file mode 100644 index 000000000..19816e13e --- /dev/null +++ b/src/assets/icons/cc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cc_k.svg b/src/assets/icons/cc_k.svg new file mode 100644 index 000000000..806fe688c --- /dev/null +++ b/src/assets/icons/cc_k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ccwl.svg b/src/assets/icons/ccwl.svg new file mode 100644 index 000000000..ceae15c64 --- /dev/null +++ b/src/assets/icons/ccwl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cgzy.svg b/src/assets/icons/cgzy.svg new file mode 100644 index 000000000..6a3765a67 --- /dev/null +++ b/src/assets/icons/cgzy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/chart.svg b/src/assets/icons/chart.svg new file mode 100644 index 000000000..27728fb0b --- /dev/null +++ b/src/assets/icons/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/chsk.svg b/src/assets/icons/chsk.svg new file mode 100644 index 000000000..71e042719 --- /dev/null +++ b/src/assets/icons/chsk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cjgl.svg b/src/assets/icons/cjgl.svg new file mode 100644 index 000000000..e20b224df --- /dev/null +++ b/src/assets/icons/cjgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/client.svg b/src/assets/icons/client.svg new file mode 100644 index 000000000..ad4bc15a9 --- /dev/null +++ b/src/assets/icons/client.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg new file mode 100644 index 000000000..5b5057f27 --- /dev/null +++ b/src/assets/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/close_all.svg b/src/assets/icons/close_all.svg new file mode 100644 index 000000000..aa13cd755 --- /dev/null +++ b/src/assets/icons/close_all.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/close_left.svg b/src/assets/icons/close_left.svg new file mode 100644 index 000000000..e5708ea5c --- /dev/null +++ b/src/assets/icons/close_left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/close_other.svg b/src/assets/icons/close_other.svg new file mode 100644 index 000000000..212e6c283 --- /dev/null +++ b/src/assets/icons/close_other.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/close_right.svg b/src/assets/icons/close_right.svg new file mode 100644 index 000000000..14d3cf39a --- /dev/null +++ b/src/assets/icons/close_right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/comments.svg b/src/assets/icons/comments.svg new file mode 100644 index 000000000..e9b7605b0 --- /dev/null +++ b/src/assets/icons/comments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/compass.svg b/src/assets/icons/compass.svg new file mode 100644 index 000000000..b00930fd7 --- /dev/null +++ b/src/assets/icons/compass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/computer_box.svg b/src/assets/icons/computer_box.svg new file mode 100644 index 000000000..edf5511d8 --- /dev/null +++ b/src/assets/icons/computer_box.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/coupon.svg b/src/assets/icons/coupon.svg new file mode 100644 index 000000000..2f952b240 --- /dev/null +++ b/src/assets/icons/coupon.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/crlj.svg b/src/assets/icons/crlj.svg new file mode 100644 index 000000000..3627e818e --- /dev/null +++ b/src/assets/icons/crlj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/crtp.svg b/src/assets/icons/crtp.svg new file mode 100644 index 000000000..df3bba551 --- /dev/null +++ b/src/assets/icons/crtp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cry.svg b/src/assets/icons/cry.svg new file mode 100644 index 000000000..e89a4080d --- /dev/null +++ b/src/assets/icons/cry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cs.svg b/src/assets/icons/cs.svg new file mode 100644 index 000000000..8b8ac03be --- /dev/null +++ b/src/assets/icons/cs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cssq.svg b/src/assets/icons/cssq.svg new file mode 100644 index 000000000..59fbaa6de --- /dev/null +++ b/src/assets/icons/cssq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ct.svg b/src/assets/icons/ct.svg new file mode 100644 index 000000000..60824bf06 --- /dev/null +++ b/src/assets/icons/ct.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cumper_box_ban.svg b/src/assets/icons/cumper_box_ban.svg new file mode 100644 index 000000000..8d8467d6f --- /dev/null +++ b/src/assets/icons/cumper_box_ban.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/cwkx.svg b/src/assets/icons/cwkx.svg new file mode 100644 index 000000000..ad5ef1e25 --- /dev/null +++ b/src/assets/icons/cwkx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cx.svg b/src/assets/icons/cx.svg new file mode 100644 index 000000000..63e12927b --- /dev/null +++ b/src/assets/icons/cx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/cz.svg b/src/assets/icons/cz.svg new file mode 100644 index 000000000..6e9b521dd --- /dev/null +++ b/src/assets/icons/cz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/czx.svg b/src/assets/icons/czx.svg new file mode 100644 index 000000000..abd7193dd --- /dev/null +++ b/src/assets/icons/czx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/d.svg b/src/assets/icons/d.svg new file mode 100644 index 000000000..c719ecb28 --- /dev/null +++ b/src/assets/icons/d.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dashboard.svg b/src/assets/icons/dashboard.svg new file mode 100644 index 000000000..5317d3702 --- /dev/null +++ b/src/assets/icons/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/db.svg b/src/assets/icons/db.svg new file mode 100644 index 000000000..59502e159 --- /dev/null +++ b/src/assets/icons/db.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/db_st.svg b/src/assets/icons/db_st.svg new file mode 100644 index 000000000..277368761 --- /dev/null +++ b/src/assets/icons/db_st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dbsx.svg b/src/assets/icons/dbsx.svg new file mode 100644 index 000000000..a49c64506 --- /dev/null +++ b/src/assets/icons/dbsx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dc.svg b/src/assets/icons/dc.svg new file mode 100644 index 000000000..533451046 --- /dev/null +++ b/src/assets/icons/dc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dg.svg b/src/assets/icons/dg.svg new file mode 100644 index 000000000..a234779be --- /dev/null +++ b/src/assets/icons/dg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dg_k.svg b/src/assets/icons/dg_k.svg new file mode 100644 index 000000000..a6e826dc0 --- /dev/null +++ b/src/assets/icons/dg_k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dict.svg b/src/assets/icons/dict.svg new file mode 100644 index 000000000..22a827811 --- /dev/null +++ b/src/assets/icons/dict.svg @@ -0,0 +1,18 @@ + + + + + + + diff --git a/src/assets/icons/dict_item.svg b/src/assets/icons/dict_item.svg new file mode 100644 index 000000000..903109a7f --- /dev/null +++ b/src/assets/icons/dict_item.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/src/assets/icons/dk.svg b/src/assets/icons/dk.svg new file mode 100644 index 000000000..b8cbd6de8 --- /dev/null +++ b/src/assets/icons/dk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/document.svg b/src/assets/icons/document.svg new file mode 100644 index 000000000..918ae33dc --- /dev/null +++ b/src/assets/icons/document.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/down.svg b/src/assets/icons/down.svg new file mode 100644 index 000000000..3e71949e9 --- /dev/null +++ b/src/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/download.svg b/src/assets/icons/download.svg new file mode 100644 index 000000000..61ec1f9ff --- /dev/null +++ b/src/assets/icons/download.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/drag.svg b/src/assets/icons/drag.svg new file mode 100644 index 000000000..4185d3cee --- /dev/null +++ b/src/assets/icons/drag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ds.svg b/src/assets/icons/ds.svg new file mode 100644 index 000000000..efdc326ca --- /dev/null +++ b/src/assets/icons/ds.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-c.svg b/src/assets/icons/dt-c.svg new file mode 100644 index 000000000..7c749580a --- /dev/null +++ b/src/assets/icons/dt-c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-db.svg b/src/assets/icons/dt-db.svg new file mode 100644 index 000000000..dcbcfcd31 --- /dev/null +++ b/src/assets/icons/dt-db.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-h.svg b/src/assets/icons/dt-h.svg new file mode 100644 index 000000000..6300a180c --- /dev/null +++ b/src/assets/icons/dt-h.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-q.svg b/src/assets/icons/dt-q.svg new file mode 100644 index 000000000..629b046ca --- /dev/null +++ b/src/assets/icons/dt-q.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-qp.svg b/src/assets/icons/dt-qp.svg new file mode 100644 index 000000000..c12157a60 --- /dev/null +++ b/src/assets/icons/dt-qp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-td.svg b/src/assets/icons/dt-td.svg new file mode 100644 index 000000000..fbba54c45 --- /dev/null +++ b/src/assets/icons/dt-td.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-x.svg b/src/assets/icons/dt-x.svg new file mode 100644 index 000000000..40f9b0f12 --- /dev/null +++ b/src/assets/icons/dt-x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dt-y.svg b/src/assets/icons/dt-y.svg new file mode 100644 index 000000000..0c2e7321a --- /dev/null +++ b/src/assets/icons/dt-y.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dutiesclass.svg b/src/assets/icons/dutiesclass.svg new file mode 100644 index 000000000..660ff5b85 --- /dev/null +++ b/src/assets/icons/dutiesclass.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/dutiescont.svg b/src/assets/icons/dutiescont.svg new file mode 100644 index 000000000..b98a91b5c --- /dev/null +++ b/src/assets/icons/dutiescont.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/dw.svg b/src/assets/icons/dw.svg new file mode 100644 index 000000000..fb95c1987 --- /dev/null +++ b/src/assets/icons/dw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dz.svg b/src/assets/icons/dz.svg new file mode 100644 index 000000000..3e7fb1834 --- /dev/null +++ b/src/assets/icons/dz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dz_k.svg b/src/assets/icons/dz_k.svg new file mode 100644 index 000000000..d3e7b27cc --- /dev/null +++ b/src/assets/icons/dz_k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/edit.svg b/src/assets/icons/edit.svg new file mode 100644 index 000000000..d26101f29 --- /dev/null +++ b/src/assets/icons/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/email.svg b/src/assets/icons/email.svg new file mode 100644 index 000000000..8487b4025 --- /dev/null +++ b/src/assets/icons/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/energy_saving.svg b/src/assets/icons/energy_saving.svg new file mode 100644 index 000000000..3fb5990b4 --- /dev/null +++ b/src/assets/icons/energy_saving.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/error.svg b/src/assets/icons/error.svg new file mode 100644 index 000000000..4a9136a4b --- /dev/null +++ b/src/assets/icons/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/essxsfh.svg b/src/assets/icons/essxsfh.svg new file mode 100644 index 000000000..c383823f0 --- /dev/null +++ b/src/assets/icons/essxsfh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/esybh.svg b/src/assets/icons/esybh.svg new file mode 100644 index 000000000..fefd91fb5 --- /dev/null +++ b/src/assets/icons/esybh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ewm.svg b/src/assets/icons/ewm.svg new file mode 100644 index 000000000..4a91d3370 --- /dev/null +++ b/src/assets/icons/ewm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/exit-fullscreen.svg b/src/assets/icons/exit-fullscreen.svg new file mode 100644 index 000000000..485c128b6 --- /dev/null +++ b/src/assets/icons/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/eye-open.svg b/src/assets/icons/eye-open.svg new file mode 100644 index 000000000..88dcc98e6 --- /dev/null +++ b/src/assets/icons/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/eye.svg b/src/assets/icons/eye.svg new file mode 100644 index 000000000..16ed2d872 --- /dev/null +++ b/src/assets/icons/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/favorite.svg b/src/assets/icons/favorite.svg new file mode 100644 index 000000000..8c385b15c --- /dev/null +++ b/src/assets/icons/favorite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fb.svg b/src/assets/icons/fb.svg new file mode 100644 index 000000000..e8375d4ef --- /dev/null +++ b/src/assets/icons/fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fbsk.svg b/src/assets/icons/fbsk.svg new file mode 100644 index 000000000..853a11445 --- /dev/null +++ b/src/assets/icons/fbsk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fc.svg b/src/assets/icons/fc.svg new file mode 100644 index 000000000..9ceb59840 --- /dev/null +++ b/src/assets/icons/fc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fd.svg b/src/assets/icons/fd.svg new file mode 100644 index 000000000..40c7ae46f --- /dev/null +++ b/src/assets/icons/fd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fgx.svg b/src/assets/icons/fgx.svg new file mode 100644 index 000000000..bdb5f0edd --- /dev/null +++ b/src/assets/icons/fgx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fhbz.svg b/src/assets/icons/fhbz.svg new file mode 100644 index 000000000..1b828d2d2 --- /dev/null +++ b/src/assets/icons/fhbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fk+.svg b/src/assets/icons/fk+.svg new file mode 100644 index 000000000..430d7ea6d --- /dev/null +++ b/src/assets/icons/fk+.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fk-.svg b/src/assets/icons/fk-.svg new file mode 100644 index 000000000..50f0c25ff --- /dev/null +++ b/src/assets/icons/fk-.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fk.svg b/src/assets/icons/fk.svg new file mode 100644 index 000000000..a416c6371 --- /dev/null +++ b/src/assets/icons/fk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fl.svg b/src/assets/icons/fl.svg new file mode 100644 index 000000000..dfaf53e06 --- /dev/null +++ b/src/assets/icons/fl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fs.svg b/src/assets/icons/fs.svg new file mode 100644 index 000000000..09bff5f12 --- /dev/null +++ b/src/assets/icons/fs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fullscreen.svg b/src/assets/icons/fullscreen.svg new file mode 100644 index 000000000..0e86b6fa8 --- /dev/null +++ b/src/assets/icons/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fwdq.svg b/src/assets/icons/fwdq.svg new file mode 100644 index 000000000..bed9b2830 --- /dev/null +++ b/src/assets/icons/fwdq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fxfs.svg b/src/assets/icons/fxfs.svg new file mode 100644 index 000000000..57e5002e6 --- /dev/null +++ b/src/assets/icons/fxfs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fz.svg b/src/assets/icons/fz.svg new file mode 100644 index 000000000..e5d0833f8 --- /dev/null +++ b/src/assets/icons/fz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fzgl.svg b/src/assets/icons/fzgl.svg new file mode 100644 index 000000000..8f7172fa5 --- /dev/null +++ b/src/assets/icons/fzgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gb.svg b/src/assets/icons/gb.svg new file mode 100644 index 000000000..d3ab7d74d --- /dev/null +++ b/src/assets/icons/gb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gb2.svg b/src/assets/icons/gb2.svg new file mode 100644 index 000000000..0728682a2 --- /dev/null +++ b/src/assets/icons/gb2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gd.svg b/src/assets/icons/gd.svg new file mode 100644 index 000000000..eef449999 --- /dev/null +++ b/src/assets/icons/gd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gd2.svg b/src/assets/icons/gd2.svg new file mode 100644 index 000000000..b0601ed92 --- /dev/null +++ b/src/assets/icons/gd2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gd3.svg b/src/assets/icons/gd3.svg new file mode 100644 index 000000000..94c3ee826 --- /dev/null +++ b/src/assets/icons/gd3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gdqr.svg b/src/assets/icons/gdqr.svg new file mode 100644 index 000000000..7a263938d --- /dev/null +++ b/src/assets/icons/gdqr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gender.svg b/src/assets/icons/gender.svg new file mode 100644 index 000000000..23d0c10cb --- /dev/null +++ b/src/assets/icons/gender.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/get.svg b/src/assets/icons/get.svg new file mode 100644 index 000000000..426beeaec --- /dev/null +++ b/src/assets/icons/get.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gfbb.svg b/src/assets/icons/gfbb.svg new file mode 100644 index 000000000..2ae271e79 --- /dev/null +++ b/src/assets/icons/gfbb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/github.svg b/src/assets/icons/github.svg new file mode 100644 index 000000000..db0a0d430 --- /dev/null +++ b/src/assets/icons/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gj.svg b/src/assets/icons/gj.svg new file mode 100644 index 000000000..cf5ef640b --- /dev/null +++ b/src/assets/icons/gj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gjkx.svg b/src/assets/icons/gjkx.svg new file mode 100644 index 000000000..b258d0d52 --- /dev/null +++ b/src/assets/icons/gjkx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gjsx.svg b/src/assets/icons/gjsx.svg new file mode 100644 index 000000000..9cc60fc36 --- /dev/null +++ b/src/assets/icons/gjsx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/glsb.svg b/src/assets/icons/glsb.svg new file mode 100644 index 000000000..3598f26bd --- /dev/null +++ b/src/assets/icons/glsb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gndy.svg b/src/assets/icons/gndy.svg new file mode 100644 index 000000000..1df440fc2 --- /dev/null +++ b/src/assets/icons/gndy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/good.svg b/src/assets/icons/good.svg new file mode 100644 index 000000000..70ad72fb6 --- /dev/null +++ b/src/assets/icons/good.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/goods-list.svg b/src/assets/icons/goods-list.svg new file mode 100644 index 000000000..fcb971edc --- /dev/null +++ b/src/assets/icons/goods-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/goods.svg b/src/assets/icons/goods.svg new file mode 100644 index 000000000..60c1c734f --- /dev/null +++ b/src/assets/icons/goods.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/grsmrz.svg b/src/assets/icons/grsmrz.svg new file mode 100644 index 000000000..3cb1c8269 --- /dev/null +++ b/src/assets/icons/grsmrz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/guide.svg b/src/assets/icons/guide.svg new file mode 100644 index 000000000..b27100179 --- /dev/null +++ b/src/assets/icons/guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/guyong.svg b/src/assets/icons/guyong.svg new file mode 100644 index 000000000..a752ff634 --- /dev/null +++ b/src/assets/icons/guyong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gyl.svg b/src/assets/icons/gyl.svg new file mode 100644 index 000000000..72eeb5f16 --- /dev/null +++ b/src/assets/icons/gyl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gyl_bule.svg b/src/assets/icons/gyl_bule.svg new file mode 100644 index 000000000..f0e65b2dd --- /dev/null +++ b/src/assets/icons/gyl_bule.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gyzj-kg.svg b/src/assets/icons/gyzj-kg.svg new file mode 100644 index 000000000..395ec938c --- /dev/null +++ b/src/assets/icons/gyzj-kg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gyzj-ybp.svg b/src/assets/icons/gyzj-ybp.svg new file mode 100644 index 000000000..11995b0ab --- /dev/null +++ b/src/assets/icons/gyzj-ybp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gyzj-zsd.svg b/src/assets/icons/gyzj-zsd.svg new file mode 100644 index 000000000..e83bac533 --- /dev/null +++ b/src/assets/icons/gyzj-zsd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gz.svg b/src/assets/icons/gz.svg new file mode 100644 index 000000000..680ba07d9 --- /dev/null +++ b/src/assets/icons/gz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gzyq.svg b/src/assets/icons/gzyq.svg new file mode 100644 index 000000000..9cf092a9c --- /dev/null +++ b/src/assets/icons/gzyq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/healthcondition.svg b/src/assets/icons/healthcondition.svg new file mode 100644 index 000000000..ea3e6af12 --- /dev/null +++ b/src/assets/icons/healthcondition.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/help.svg b/src/assets/icons/help.svg new file mode 100644 index 000000000..015cf95fa --- /dev/null +++ b/src/assets/icons/help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hhbz.svg b/src/assets/icons/hhbz.svg new file mode 100644 index 000000000..d79a95df9 --- /dev/null +++ b/src/assets/icons/hhbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hhbz2.svg b/src/assets/icons/hhbz2.svg new file mode 100644 index 000000000..b171aa798 --- /dev/null +++ b/src/assets/icons/hhbz2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/homepage.svg b/src/assets/icons/homepage.svg new file mode 100644 index 000000000..48f4e2490 --- /dev/null +++ b/src/assets/icons/homepage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hs.svg b/src/assets/icons/hs.svg new file mode 100644 index 000000000..813e910ec --- /dev/null +++ b/src/assets/icons/hs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huojian.svg b/src/assets/icons/huojian.svg new file mode 100644 index 000000000..fc837c959 --- /dev/null +++ b/src/assets/icons/huojian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hwd.svg b/src/assets/icons/hwd.svg new file mode 100644 index 000000000..9e506ec47 --- /dev/null +++ b/src/assets/icons/hwd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hxz.svg b/src/assets/icons/hxz.svg new file mode 100644 index 000000000..17cddb179 --- /dev/null +++ b/src/assets/icons/hxz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hyhb.svg b/src/assets/icons/hyhb.svg new file mode 100644 index 000000000..f32783cd1 --- /dev/null +++ b/src/assets/icons/hyhb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hzhbmygl.svg b/src/assets/icons/hzhbmygl.svg new file mode 100644 index 000000000..81c06bba6 --- /dev/null +++ b/src/assets/icons/hzhbmygl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_bc.svg b/src/assets/icons/icon_bc.svg new file mode 100644 index 000000000..d6e88c5f7 --- /dev/null +++ b/src/assets/icons/icon_bc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_bzwd.svg b/src/assets/icons/icon_bzwd.svg new file mode 100644 index 000000000..47758e019 --- /dev/null +++ b/src/assets/icons/icon_bzwd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_fb.svg b/src/assets/icons/icon_fb.svg new file mode 100644 index 000000000..345c2a6f7 --- /dev/null +++ b/src/assets/icons/icon_fb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_loading.svg b/src/assets/icons/icon_loading.svg new file mode 100644 index 000000000..78a6c57c3 --- /dev/null +++ b/src/assets/icons/icon_loading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_rk.svg b/src/assets/icons/icon_rk.svg new file mode 100644 index 000000000..b25821b45 --- /dev/null +++ b/src/assets/icons/icon_rk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_rwjc.svg b/src/assets/icons/icon_rwjc.svg new file mode 100644 index 000000000..4823eecca --- /dev/null +++ b/src/assets/icons/icon_rwjc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_sywd.svg b/src/assets/icons/icon_sywd.svg new file mode 100644 index 000000000..c2526a9cd --- /dev/null +++ b/src/assets/icons/icon_sywd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_sz.svg b/src/assets/icons/icon_sz.svg new file mode 100644 index 000000000..0020d3c89 --- /dev/null +++ b/src/assets/icons/icon_sz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_tj.svg b/src/assets/icons/icon_tj.svg new file mode 100644 index 000000000..1bf95c0f2 --- /dev/null +++ b/src/assets/icons/icon_tj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_wx.svg b/src/assets/icons/icon_wx.svg new file mode 100644 index 000000000..72a278364 --- /dev/null +++ b/src/assets/icons/icon_wx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_yl.svg b/src/assets/icons/icon_yl.svg new file mode 100644 index 000000000..a3b579025 --- /dev/null +++ b/src/assets/icons/icon_yl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_ywkx.svg b/src/assets/icons/icon_ywkx.svg new file mode 100644 index 000000000..f208a26ab --- /dev/null +++ b/src/assets/icons/icon_ywkx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_yygl.svg b/src/assets/icons/icon_yygl.svg new file mode 100644 index 000000000..2b108e084 --- /dev/null +++ b/src/assets/icons/icon_yygl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/icon_zh.svg b/src/assets/icons/icon_zh.svg new file mode 100644 index 000000000..0cac854b3 --- /dev/null +++ b/src/assets/icons/icon_zh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-anquanfanghu.svg b/src/assets/icons/iconfont-anquanfanghu.svg new file mode 100644 index 000000000..4ba1f0cdc --- /dev/null +++ b/src/assets/icons/iconfont-anquanfanghu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-baozhuang.svg b/src/assets/icons/iconfont-baozhuang.svg new file mode 100644 index 000000000..560f3ecc3 --- /dev/null +++ b/src/assets/icons/iconfont-baozhuang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-diangongdianqi.svg b/src/assets/icons/iconfont-diangongdianqi.svg new file mode 100644 index 000000000..7679a4116 --- /dev/null +++ b/src/assets/icons/iconfont-diangongdianqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-fangzhipige.svg b/src/assets/icons/iconfont-fangzhipige.svg new file mode 100644 index 000000000..5633969b9 --- /dev/null +++ b/src/assets/icons/iconfont-fangzhipige.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-fuwushichang.svg b/src/assets/icons/iconfont-fuwushichang.svg new file mode 100644 index 000000000..dc35879d3 --- /dev/null +++ b/src/assets/icons/iconfont-fuwushichang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-fuzhuangneiyi.svg b/src/assets/icons/iconfont-fuzhuangneiyi.svg new file mode 100644 index 000000000..c2576f013 --- /dev/null +++ b/src/assets/icons/iconfont-fuzhuangneiyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-gangcai.svg b/src/assets/icons/iconfont-gangcai.svg new file mode 100644 index 000000000..8d6f8d201 --- /dev/null +++ b/src/assets/icons/iconfont-gangcai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-gongyichongwu.svg b/src/assets/icons/iconfont-gongyichongwu.svg new file mode 100644 index 000000000..398d709f5 --- /dev/null +++ b/src/assets/icons/iconfont-gongyichongwu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-huagongyuanliao.svg b/src/assets/icons/iconfont-huagongyuanliao.svg new file mode 100644 index 000000000..c54f85a99 --- /dev/null +++ b/src/assets/icons/iconfont-huagongyuanliao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-huangguan.svg b/src/assets/icons/iconfont-huangguan.svg new file mode 100644 index 000000000..d536be646 --- /dev/null +++ b/src/assets/icons/iconfont-huangguan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-jiafangjiashi.svg b/src/assets/icons/iconfont-jiafangjiashi.svg new file mode 100644 index 000000000..66022f23e --- /dev/null +++ b/src/assets/icons/iconfont-jiafangjiashi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-jingxihuaxue.svg b/src/assets/icons/iconfont-jingxihuaxue.svg new file mode 100644 index 000000000..bf9a3dfef --- /dev/null +++ b/src/assets/icons/iconfont-jingxihuaxue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-jixieqimo.svg b/src/assets/icons/iconfont-jixieqimo.svg new file mode 100644 index 000000000..87ea6b428 --- /dev/null +++ b/src/assets/icons/iconfont-jixieqimo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-meizhuangrihua.svg b/src/assets/icons/iconfont-meizhuangrihua.svg new file mode 100644 index 000000000..1362bcb68 --- /dev/null +++ b/src/assets/icons/iconfont-meizhuangrihua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-mingpian.svg b/src/assets/icons/iconfont-mingpian.svg new file mode 100644 index 000000000..7a615abd9 --- /dev/null +++ b/src/assets/icons/iconfont-mingpian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-phone.svg b/src/assets/icons/iconfont-phone.svg new file mode 100644 index 000000000..f6e9f7f45 --- /dev/null +++ b/src/assets/icons/iconfont-phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-qicheyongpin.svg b/src/assets/icons/iconfont-qicheyongpin.svg new file mode 100644 index 000000000..8b6998030 --- /dev/null +++ b/src/assets/icons/iconfont-qicheyongpin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-riyongbaihuo.svg b/src/assets/icons/iconfont-riyongbaihuo.svg new file mode 100644 index 000000000..ba0462eb2 --- /dev/null +++ b/src/assets/icons/iconfont-riyongbaihuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-shanzi.svg b/src/assets/icons/iconfont-shanzi.svg new file mode 100644 index 000000000..8408edb12 --- /dev/null +++ b/src/assets/icons/iconfont-shanzi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-shipin.svg b/src/assets/icons/iconfont-shipin.svg new file mode 100644 index 000000000..3a9fc855c --- /dev/null +++ b/src/assets/icons/iconfont-shipin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-shouji.svg b/src/assets/icons/iconfont-shouji.svg new file mode 100644 index 000000000..027d3417b --- /dev/null +++ b/src/assets/icons/iconfont-shouji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-shumajiadian.svg b/src/assets/icons/iconfont-shumajiadian.svg new file mode 100644 index 000000000..311ef5751 --- /dev/null +++ b/src/assets/icons/iconfont-shumajiadian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-tongzhuangmuying.svg b/src/assets/icons/iconfont-tongzhuangmuying.svg new file mode 100644 index 000000000..cd2ea5524 --- /dev/null +++ b/src/assets/icons/iconfont-tongzhuangmuying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-wujingongju.svg b/src/assets/icons/iconfont-wujingongju.svg new file mode 100644 index 000000000..fd9fd52b9 --- /dev/null +++ b/src/assets/icons/iconfont-wujingongju.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-xiangjiaosuliao.svg b/src/assets/icons/iconfont-xiangjiaosuliao.svg new file mode 100644 index 000000000..9bdc19783 --- /dev/null +++ b/src/assets/icons/iconfont-xiangjiaosuliao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-xiebaopeishi.svg b/src/assets/icons/iconfont-xiebaopeishi.svg new file mode 100644 index 000000000..f4d8b0311 --- /dev/null +++ b/src/assets/icons/iconfont-xiebaopeishi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-xingxing.svg b/src/assets/icons/iconfont-xingxing.svg new file mode 100644 index 000000000..36c4399dc --- /dev/null +++ b/src/assets/icons/iconfont-xingxing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-yejinkuangchan.svg b/src/assets/icons/iconfont-yejinkuangchan.svg new file mode 100644 index 000000000..b0a5b7b8c --- /dev/null +++ b/src/assets/icons/iconfont-yejinkuangchan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-yiqiyibiao.svg b/src/assets/icons/iconfont-yiqiyibiao.svg new file mode 100644 index 000000000..2731c6841 --- /dev/null +++ b/src/assets/icons/iconfont-yiqiyibiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-youhuiquan.svg b/src/assets/icons/iconfont-youhuiquan.svg new file mode 100644 index 000000000..e706ef650 --- /dev/null +++ b/src/assets/icons/iconfont-youhuiquan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-yundonghuwai.svg b/src/assets/icons/iconfont-yundonghuwai.svg new file mode 100644 index 000000000..6c967a546 --- /dev/null +++ b/src/assets/icons/iconfont-yundonghuwai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iconfont-zhaomingdianzi.svg b/src/assets/icons/iconfont-zhaomingdianzi.svg new file mode 100644 index 000000000..f1c17ab6e --- /dev/null +++ b/src/assets/icons/iconfont-zhaomingdianzi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iframetj.svg b/src/assets/icons/iframetj.svg new file mode 100644 index 000000000..2d0cfffc8 --- /dev/null +++ b/src/assets/icons/iframetj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ispsx.svg b/src/assets/icons/ispsx.svg new file mode 100644 index 000000000..5f8dbf553 --- /dev/null +++ b/src/assets/icons/ispsx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/j_sk.svg b/src/assets/icons/j_sk.svg new file mode 100644 index 000000000..aee492b0c --- /dev/null +++ b/src/assets/icons/j_sk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jcdb.svg b/src/assets/icons/jcdb.svg new file mode 100644 index 000000000..cc4f0fcd9 --- /dev/null +++ b/src/assets/icons/jcdb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jcgl.svg b/src/assets/icons/jcgl.svg new file mode 100644 index 000000000..610b02784 --- /dev/null +++ b/src/assets/icons/jcgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jcq.svg b/src/assets/icons/jcq.svg new file mode 100644 index 000000000..5aa4e03ff --- /dev/null +++ b/src/assets/icons/jcq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jdgl.svg b/src/assets/icons/jdgl.svg new file mode 100644 index 000000000..e7d88f04d --- /dev/null +++ b/src/assets/icons/jdgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jg.svg b/src/assets/icons/jg.svg new file mode 100644 index 000000000..aeb5ab6a7 --- /dev/null +++ b/src/assets/icons/jg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jianzhi.svg b/src/assets/icons/jianzhi.svg new file mode 100644 index 000000000..fd1ec9c5e --- /dev/null +++ b/src/assets/icons/jianzhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jinggao.svg b/src/assets/icons/jinggao.svg new file mode 100644 index 000000000..52b3891d3 --- /dev/null +++ b/src/assets/icons/jinggao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jpcgs.svg b/src/assets/icons/jpcgs.svg new file mode 100644 index 000000000..429b3f2d1 --- /dev/null +++ b/src/assets/icons/jpcgs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jpgys.svg b/src/assets/icons/jpgys.svg new file mode 100644 index 000000000..3de9c4821 --- /dev/null +++ b/src/assets/icons/jpgys.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jqbz.svg b/src/assets/icons/jqbz.svg new file mode 100644 index 000000000..719dc55f4 --- /dev/null +++ b/src/assets/icons/jqbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/js.svg b/src/assets/icons/js.svg new file mode 100644 index 000000000..defc98d5f --- /dev/null +++ b/src/assets/icons/js.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jsfw.svg b/src/assets/icons/jsfw.svg new file mode 100644 index 000000000..e20ece8b2 --- /dev/null +++ b/src/assets/icons/jsfw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jsk.svg b/src/assets/icons/jsk.svg new file mode 100644 index 000000000..baa6b53bb --- /dev/null +++ b/src/assets/icons/jsk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jstk.svg b/src/assets/icons/jstk.svg new file mode 100644 index 000000000..c6643daeb --- /dev/null +++ b/src/assets/icons/jstk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jxkh.svg b/src/assets/icons/jxkh.svg new file mode 100644 index 000000000..c2a057e89 --- /dev/null +++ b/src/assets/icons/jxkh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jzc.svg b/src/assets/icons/jzc.svg new file mode 100644 index 000000000..a368997eb --- /dev/null +++ b/src/assets/icons/jzc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jzdq.svg b/src/assets/icons/jzdq.svg new file mode 100644 index 000000000..896dee65b --- /dev/null +++ b/src/assets/icons/jzdq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jzgl.svg b/src/assets/icons/jzgl.svg new file mode 100644 index 000000000..8ced60c43 --- /dev/null +++ b/src/assets/icons/jzgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kf.svg b/src/assets/icons/kf.svg new file mode 100644 index 000000000..332751257 --- /dev/null +++ b/src/assets/icons/kf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kg.svg b/src/assets/icons/kg.svg new file mode 100644 index 000000000..290a71aa9 --- /dev/null +++ b/src/assets/icons/kg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kj.svg b/src/assets/icons/kj.svg new file mode 100644 index 000000000..e7858118d --- /dev/null +++ b/src/assets/icons/kj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kjwx.svg b/src/assets/icons/kjwx.svg new file mode 100644 index 000000000..d35595bdc --- /dev/null +++ b/src/assets/icons/kjwx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kjxz.svg b/src/assets/icons/kjxz.svg new file mode 100644 index 000000000..8884b3612 --- /dev/null +++ b/src/assets/icons/kjxz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kjyx.svg b/src/assets/icons/kjyx.svg new file mode 100644 index 000000000..d07175bbe --- /dev/null +++ b/src/assets/icons/kjyx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kpms_k.svg b/src/assets/icons/kpms_k.svg new file mode 100644 index 000000000..8be944a7b --- /dev/null +++ b/src/assets/icons/kpms_k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ksbp.svg b/src/assets/icons/ksbp.svg new file mode 100644 index 000000000..36e0058e2 --- /dev/null +++ b/src/assets/icons/ksbp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kxdg.svg b/src/assets/icons/kxdg.svg new file mode 100644 index 000000000..2c7ebbffa --- /dev/null +++ b/src/assets/icons/kxdg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kxwh.svg b/src/assets/icons/kxwh.svg new file mode 100644 index 000000000..33c0de21b --- /dev/null +++ b/src/assets/icons/kxwh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/lab.svg b/src/assets/icons/lab.svg new file mode 100644 index 000000000..d4d60aacf --- /dev/null +++ b/src/assets/icons/lab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/language.svg b/src/assets/icons/language.svg new file mode 100644 index 000000000..d2dd693dd --- /dev/null +++ b/src/assets/icons/language.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/laptop_alt.svg b/src/assets/icons/laptop_alt.svg new file mode 100644 index 000000000..f75def4da --- /dev/null +++ b/src/assets/icons/laptop_alt.svg @@ -0,0 +1,7 @@ + + +IcoFont Icons +laptop-alt + + + \ No newline at end of file diff --git a/src/assets/icons/lb.svg b/src/assets/icons/lb.svg new file mode 100644 index 000000000..5cbf75832 --- /dev/null +++ b/src/assets/icons/lb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/lbms_k.svg b/src/assets/icons/lbms_k.svg new file mode 100644 index 000000000..23c05ad41 --- /dev/null +++ b/src/assets/icons/lbms_k.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ld.svg b/src/assets/icons/ld.svg new file mode 100644 index 000000000..d8fc21817 --- /dev/null +++ b/src/assets/icons/ld.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/link.svg b/src/assets/icons/link.svg new file mode 100644 index 000000000..9748d5303 --- /dev/null +++ b/src/assets/icons/link.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/ljl.svg b/src/assets/icons/ljl.svg new file mode 100644 index 000000000..90ca582bf --- /dev/null +++ b/src/assets/icons/ljl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ljs.svg b/src/assets/icons/ljs.svg new file mode 100644 index 000000000..520809766 --- /dev/null +++ b/src/assets/icons/ljs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/lstbh.svg b/src/assets/icons/lstbh.svg new file mode 100644 index 000000000..e6c199a0f --- /dev/null +++ b/src/assets/icons/lstbh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ly.svg b/src/assets/icons/ly.svg new file mode 100644 index 000000000..7ef5a7de7 --- /dev/null +++ b/src/assets/icons/ly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/lyq.svg b/src/assets/icons/lyq.svg new file mode 100644 index 000000000..e0f2be488 --- /dev/null +++ b/src/assets/icons/lyq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/m.svg b/src/assets/icons/m.svg new file mode 100644 index 000000000..c1fed690d --- /dev/null +++ b/src/assets/icons/m.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/map.svg b/src/assets/icons/map.svg new file mode 100644 index 000000000..c00d87c87 --- /dev/null +++ b/src/assets/icons/map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/marriageregistration.svg b/src/assets/icons/marriageregistration.svg new file mode 100644 index 000000000..f3b065734 --- /dev/null +++ b/src/assets/icons/marriageregistration.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mc.svg b/src/assets/icons/mc.svg new file mode 100644 index 000000000..9290d3f5b --- /dev/null +++ b/src/assets/icons/mc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/menu.svg b/src/assets/icons/menu.svg new file mode 100644 index 000000000..92c364c23 --- /dev/null +++ b/src/assets/icons/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/message.svg b/src/assets/icons/message.svg new file mode 100644 index 000000000..ea1ddef10 --- /dev/null +++ b/src/assets/icons/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/minus.svg b/src/assets/icons/minus.svg new file mode 100644 index 000000000..16adc8b46 --- /dev/null +++ b/src/assets/icons/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mjbz.svg b/src/assets/icons/mjbz.svg new file mode 100644 index 000000000..4f901b2f8 --- /dev/null +++ b/src/assets/icons/mjbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/money.svg b/src/assets/icons/money.svg new file mode 100644 index 000000000..60f7acf4c --- /dev/null +++ b/src/assets/icons/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/monitor.svg b/src/assets/icons/monitor.svg new file mode 100644 index 000000000..bc308cb0f --- /dev/null +++ b/src/assets/icons/monitor.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/msb.svg b/src/assets/icons/msb.svg new file mode 100644 index 000000000..c7fc322d0 --- /dev/null +++ b/src/assets/icons/msb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/multi_level.svg b/src/assets/icons/multi_level.svg new file mode 100644 index 000000000..a1a279214 --- /dev/null +++ b/src/assets/icons/multi_level.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/mw.svg b/src/assets/icons/mw.svg new file mode 100644 index 000000000..a1c7fe33d --- /dev/null +++ b/src/assets/icons/mw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mysql.svg b/src/assets/icons/mysql.svg new file mode 100644 index 000000000..7b1f0cb3c --- /dev/null +++ b/src/assets/icons/mysql.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/nested.svg b/src/assets/icons/nested.svg new file mode 100644 index 000000000..06713a86c --- /dev/null +++ b/src/assets/icons/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/number.svg b/src/assets/icons/number.svg new file mode 100644 index 000000000..ad5ce9af2 --- /dev/null +++ b/src/assets/icons/number.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/order.svg b/src/assets/icons/order.svg new file mode 100644 index 000000000..8f2107ec4 --- /dev/null +++ b/src/assets/icons/order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/password.svg b/src/assets/icons/password.svg new file mode 100644 index 000000000..6c64defe3 --- /dev/null +++ b/src/assets/icons/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/peoples.svg b/src/assets/icons/peoples.svg new file mode 100644 index 000000000..383b82d27 --- /dev/null +++ b/src/assets/icons/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/perm.svg b/src/assets/icons/perm.svg new file mode 100644 index 000000000..b38d0657e --- /dev/null +++ b/src/assets/icons/perm.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/phone.svg b/src/assets/icons/phone.svg new file mode 100644 index 000000000..87bd4fe9a --- /dev/null +++ b/src/assets/icons/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/play.svg b/src/assets/icons/play.svg new file mode 100644 index 000000000..37ac9b2f7 --- /dev/null +++ b/src/assets/icons/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/prompt.svg b/src/assets/icons/prompt.svg new file mode 100644 index 000000000..608e70ca4 --- /dev/null +++ b/src/assets/icons/prompt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/psbj.svg b/src/assets/icons/psbj.svg new file mode 100644 index 000000000..3f3ce1e9d --- /dev/null +++ b/src/assets/icons/psbj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/publish.svg b/src/assets/icons/publish.svg new file mode 100644 index 000000000..e9b489c32 --- /dev/null +++ b/src/assets/icons/publish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/pwyd.svg b/src/assets/icons/pwyd.svg new file mode 100644 index 000000000..e9489f2c6 --- /dev/null +++ b/src/assets/icons/pwyd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/pzbz.svg b/src/assets/icons/pzbz.svg new file mode 100644 index 000000000..2c28550f7 --- /dev/null +++ b/src/assets/icons/pzbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/pzbz2.svg b/src/assets/icons/pzbz2.svg new file mode 100644 index 000000000..083921627 --- /dev/null +++ b/src/assets/icons/pzbz2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qc.svg b/src/assets/icons/qc.svg new file mode 100644 index 000000000..1704259ba --- /dev/null +++ b/src/assets/icons/qc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qcdw.svg b/src/assets/icons/qcdw.svg new file mode 100644 index 000000000..608ff95cf --- /dev/null +++ b/src/assets/icons/qcdw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qhbp.svg b/src/assets/icons/qhbp.svg new file mode 100644 index 000000000..997f61b62 --- /dev/null +++ b/src/assets/icons/qhbp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qitianbaohuan.svg b/src/assets/icons/qitianbaohuan.svg new file mode 100644 index 000000000..9532d1402 --- /dev/null +++ b/src/assets/icons/qitianbaohuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qitianbaotui.svg b/src/assets/icons/qitianbaotui.svg new file mode 100644 index 000000000..088d83e6f --- /dev/null +++ b/src/assets/icons/qitianbaotui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qp.svg b/src/assets/icons/qp.svg new file mode 100644 index 000000000..ea034eaf1 --- /dev/null +++ b/src/assets/icons/qp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qr_code.svg b/src/assets/icons/qr_code.svg new file mode 100644 index 000000000..8418a7d65 --- /dev/null +++ b/src/assets/icons/qr_code.svg @@ -0,0 +1,7 @@ + + +IcoFont Icons +qr-code + + + \ No newline at end of file diff --git a/src/assets/icons/qrcode_all.svg b/src/assets/icons/qrcode_all.svg new file mode 100644 index 000000000..d30b86af5 --- /dev/null +++ b/src/assets/icons/qrcode_all.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/qrcode_ban.svg b/src/assets/icons/qrcode_ban.svg new file mode 100644 index 000000000..872d8f58c --- /dev/null +++ b/src/assets/icons/qrcode_ban.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/qsexsfh.svg b/src/assets/icons/qsexsfh.svg new file mode 100644 index 000000000..c60fc8729 --- /dev/null +++ b/src/assets/icons/qsexsfh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qtfhfw.svg b/src/assets/icons/qtfhfw.svg new file mode 100644 index 000000000..6e13efbfd --- /dev/null +++ b/src/assets/icons/qtfhfw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qtth.svg b/src/assets/icons/qtth.svg new file mode 100644 index 000000000..d493fae21 --- /dev/null +++ b/src/assets/icons/qtth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/quality_control.svg b/src/assets/icons/quality_control.svg new file mode 100644 index 000000000..ccc9251ec --- /dev/null +++ b/src/assets/icons/quality_control.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qxlj.svg b/src/assets/icons/qxlj.svg new file mode 100644 index 000000000..942fdc80a --- /dev/null +++ b/src/assets/icons/qxlj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qxsp.svg b/src/assets/icons/qxsp.svg new file mode 100644 index 000000000..be54cf40d --- /dev/null +++ b/src/assets/icons/qxsp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qysmrz.svg b/src/assets/icons/qysmrz.svg new file mode 100644 index 000000000..5cd16d658 --- /dev/null +++ b/src/assets/icons/qysmrz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rabbitmq.svg b/src/assets/icons/rabbitmq.svg new file mode 100644 index 000000000..65aa19854 --- /dev/null +++ b/src/assets/icons/rabbitmq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rate.svg b/src/assets/icons/rate.svg new file mode 100644 index 000000000..aa3b14d7d --- /dev/null +++ b/src/assets/icons/rate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/redis.svg b/src/assets/icons/redis.svg new file mode 100644 index 000000000..2f1d62dfc --- /dev/null +++ b/src/assets/icons/redis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/refresh.svg b/src/assets/icons/refresh.svg new file mode 100644 index 000000000..1f549f1ad --- /dev/null +++ b/src/assets/icons/refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rjjh.svg b/src/assets/icons/rjjh.svg new file mode 100644 index 000000000..2bb110c66 --- /dev/null +++ b/src/assets/icons/rjjh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rjkfb.svg b/src/assets/icons/rjkfb.svg new file mode 100644 index 000000000..433fc47a9 --- /dev/null +++ b/src/assets/icons/rjkfb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rmb.svg b/src/assets/icons/rmb.svg new file mode 100644 index 000000000..484fef132 --- /dev/null +++ b/src/assets/icons/rmb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rn.svg b/src/assets/icons/rn.svg new file mode 100644 index 000000000..0211761e2 --- /dev/null +++ b/src/assets/icons/rn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/role.svg b/src/assets/icons/role.svg new file mode 100644 index 000000000..c484b1370 --- /dev/null +++ b/src/assets/icons/role.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rqb_st.svg b/src/assets/icons/rqb_st.svg new file mode 100644 index 000000000..02aa9d1f1 --- /dev/null +++ b/src/assets/icons/rqb_st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rqfh.svg b/src/assets/icons/rqfh.svg new file mode 100644 index 000000000..212c11946 --- /dev/null +++ b/src/assets/icons/rqfh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rqjcq.svg b/src/assets/icons/rqjcq.svg new file mode 100644 index 000000000..8dcead01d --- /dev/null +++ b/src/assets/icons/rqjcq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rqxlbjq.svg b/src/assets/icons/rqxlbjq.svg new file mode 100644 index 000000000..694eb0733 --- /dev/null +++ b/src/assets/icons/rqxlbjq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rtjc.svg b/src/assets/icons/rtjc.svg new file mode 100644 index 000000000..97676ff61 --- /dev/null +++ b/src/assets/icons/rtjc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rwjc.svg b/src/assets/icons/rwjc.svg new file mode 100644 index 000000000..9e5085656 --- /dev/null +++ b/src/assets/icons/rwjc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/safeproduction.svg b/src/assets/icons/safeproduction.svg new file mode 100644 index 000000000..12d7ae10c --- /dev/null +++ b/src/assets/icons/safeproduction.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sb.svg b/src/assets/icons/sb.svg new file mode 100644 index 000000000..519744c8c --- /dev/null +++ b/src/assets/icons/sb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sb_st.svg b/src/assets/icons/sb_st.svg new file mode 100644 index 000000000..41b3f65c1 --- /dev/null +++ b/src/assets/icons/sb_st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sbgl.svg b/src/assets/icons/sbgl.svg new file mode 100644 index 000000000..94b874b3d --- /dev/null +++ b/src/assets/icons/sbgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sbkf.svg b/src/assets/icons/sbkf.svg new file mode 100644 index 000000000..bfd78ad46 --- /dev/null +++ b/src/assets/icons/sbkf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sbzt.svg b/src/assets/icons/sbzt.svg new file mode 100644 index 000000000..0e1356631 --- /dev/null +++ b/src/assets/icons/sbzt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sc.svg b/src/assets/icons/sc.svg new file mode 100644 index 000000000..0db077af7 --- /dev/null +++ b/src/assets/icons/sc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sc_sx.svg b/src/assets/icons/sc_sx.svg new file mode 100644 index 000000000..888cdefa1 --- /dev/null +++ b/src/assets/icons/sc_sx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/school.svg b/src/assets/icons/school.svg new file mode 100644 index 000000000..95d4f02cd --- /dev/null +++ b/src/assets/icons/school.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/scsk.svg b/src/assets/icons/scsk.svg new file mode 100644 index 000000000..880955ac1 --- /dev/null +++ b/src/assets/icons/scsk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sczz.svg b/src/assets/icons/sczz.svg new file mode 100644 index 000000000..79e2a2235 --- /dev/null +++ b/src/assets/icons/sczz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sdrz.svg b/src/assets/icons/sdrz.svg new file mode 100644 index 000000000..b58299873 --- /dev/null +++ b/src/assets/icons/sdrz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sdyc.svg b/src/assets/icons/sdyc.svg new file mode 100644 index 000000000..48b20f322 --- /dev/null +++ b/src/assets/icons/sdyc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sdys.svg b/src/assets/icons/sdys.svg new file mode 100644 index 000000000..1d7a5001d --- /dev/null +++ b/src/assets/icons/sdys.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/search.svg b/src/assets/icons/search.svg new file mode 100644 index 000000000..d5f148bbe --- /dev/null +++ b/src/assets/icons/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/security.svg b/src/assets/icons/security.svg new file mode 100644 index 000000000..bcd9d2e6f --- /dev/null +++ b/src/assets/icons/security.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/set.svg b/src/assets/icons/set.svg new file mode 100644 index 000000000..6357aef3d --- /dev/null +++ b/src/assets/icons/set.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shengri.svg b/src/assets/icons/shengri.svg new file mode 100644 index 000000000..4caff90bb --- /dev/null +++ b/src/assets/icons/shengri.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shopping.svg b/src/assets/icons/shopping.svg new file mode 100644 index 000000000..8d2b4bf95 --- /dev/null +++ b/src/assets/icons/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shoucang.svg b/src/assets/icons/shoucang.svg new file mode 100644 index 000000000..f8f4a1f8e --- /dev/null +++ b/src/assets/icons/shoucang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/size.svg b/src/assets/icons/size.svg new file mode 100644 index 000000000..ddb25b8d5 --- /dev/null +++ b/src/assets/icons/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sj.svg b/src/assets/icons/sj.svg new file mode 100644 index 000000000..d92a8217c --- /dev/null +++ b/src/assets/icons/sj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sjkb.svg b/src/assets/icons/sjkb.svg new file mode 100644 index 000000000..c7ecd6225 --- /dev/null +++ b/src/assets/icons/sjkb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sjt.svg b/src/assets/icons/sjt.svg new file mode 100644 index 000000000..828365931 --- /dev/null +++ b/src/assets/icons/sjt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sjwj.svg b/src/assets/icons/sjwj.svg new file mode 100644 index 000000000..55db714e6 --- /dev/null +++ b/src/assets/icons/sjwj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/skill.svg b/src/assets/icons/skill.svg new file mode 100644 index 000000000..a3b731218 --- /dev/null +++ b/src/assets/icons/skill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/skip.svg b/src/assets/icons/skip.svg new file mode 100644 index 000000000..6ec597d86 --- /dev/null +++ b/src/assets/icons/skip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/spzxghbzj.svg b/src/assets/icons/spzxghbzj.svg new file mode 100644 index 000000000..1fe8f6c8d --- /dev/null +++ b/src/assets/icons/spzxghbzj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ssbx.svg b/src/assets/icons/ssbx.svg new file mode 100644 index 000000000..6e4ff20df --- /dev/null +++ b/src/assets/icons/ssbx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ssbxsfh.svg b/src/assets/icons/ssbxsfh.svg new file mode 100644 index 000000000..402dacd72 --- /dev/null +++ b/src/assets/icons/ssbxsfh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ssfd.svg b/src/assets/icons/ssfd.svg new file mode 100644 index 000000000..719705832 --- /dev/null +++ b/src/assets/icons/ssfd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/station.svg b/src/assets/icons/station.svg new file mode 100644 index 000000000..3870425c3 --- /dev/null +++ b/src/assets/icons/station.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/stop.svg b/src/assets/icons/stop.svg new file mode 100644 index 000000000..02c3cfd9f --- /dev/null +++ b/src/assets/icons/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/success.svg b/src/assets/icons/success.svg new file mode 100644 index 000000000..2cf399eb8 --- /dev/null +++ b/src/assets/icons/success.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/suoxiao.svg b/src/assets/icons/suoxiao.svg new file mode 100644 index 000000000..0220bca04 --- /dev/null +++ b/src/assets/icons/suoxiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/swt.svg b/src/assets/icons/swt.svg new file mode 100644 index 000000000..edde442ea --- /dev/null +++ b/src/assets/icons/swt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/swtbh.svg b/src/assets/icons/swtbh.svg new file mode 100644 index 000000000..e39406e93 --- /dev/null +++ b/src/assets/icons/swtbh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sx.svg b/src/assets/icons/sx.svg new file mode 100644 index 000000000..c7d61c479 --- /dev/null +++ b/src/assets/icons/sx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sxj.svg b/src/assets/icons/sxj.svg new file mode 100644 index 000000000..f703bdf15 --- /dev/null +++ b/src/assets/icons/sxj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sxt.svg b/src/assets/icons/sxt.svg new file mode 100644 index 000000000..c0caf7119 --- /dev/null +++ b/src/assets/icons/sxt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sxt_gb.svg b/src/assets/icons/sxt_gb.svg new file mode 100644 index 000000000..764889613 --- /dev/null +++ b/src/assets/icons/sxt_gb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sxt_st.svg b/src/assets/icons/sxt_st.svg new file mode 100644 index 000000000..0782cad9e --- /dev/null +++ b/src/assets/icons/sxt_st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sy.svg b/src/assets/icons/sy.svg new file mode 100644 index 000000000..d12182c08 --- /dev/null +++ b/src/assets/icons/sy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sy_st.svg b/src/assets/icons/sy_st.svg new file mode 100644 index 000000000..2a4a36116 --- /dev/null +++ b/src/assets/icons/sy_st.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/syb.svg b/src/assets/icons/syb.svg new file mode 100644 index 000000000..14ccf398e --- /dev/null +++ b/src/assets/icons/syb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/syjy.svg b/src/assets/icons/syjy.svg new file mode 100644 index 000000000..de2b3cda4 --- /dev/null +++ b/src/assets/icons/syjy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/syk.svg b/src/assets/icons/syk.svg new file mode 100644 index 000000000..2aec232e3 --- /dev/null +++ b/src/assets/icons/syk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/system.svg b/src/assets/icons/system.svg new file mode 100644 index 000000000..e3b7e2d49 --- /dev/null +++ b/src/assets/icons/system.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/syw.svg b/src/assets/icons/syw.svg new file mode 100644 index 000000000..c7a9a0941 --- /dev/null +++ b/src/assets/icons/syw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sywd.svg b/src/assets/icons/sywd.svg new file mode 100644 index 000000000..40971aab5 --- /dev/null +++ b/src/assets/icons/sywd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/syzjbz.svg b/src/assets/icons/syzjbz.svg new file mode 100644 index 000000000..aade23419 --- /dev/null +++ b/src/assets/icons/syzjbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tasp.svg b/src/assets/icons/tasp.svg new file mode 100644 index 000000000..7ff43a983 --- /dev/null +++ b/src/assets/icons/tasp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tb-bt.svg b/src/assets/icons/tb-bt.svg new file mode 100644 index 000000000..6f191eaff --- /dev/null +++ b/src/assets/icons/tb-bt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tb-kp.svg b/src/assets/icons/tb-kp.svg new file mode 100644 index 000000000..240f9cec2 --- /dev/null +++ b/src/assets/icons/tb-kp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tb-zxt.svg b/src/assets/icons/tb-zxt.svg new file mode 100644 index 000000000..c4989a8d3 --- /dev/null +++ b/src/assets/icons/tb-zxt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tb-zzt.svg b/src/assets/icons/tb-zzt.svg new file mode 100644 index 000000000..caa469c7d --- /dev/null +++ b/src/assets/icons/tb-zzt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/text.svg b/src/assets/icons/text.svg new file mode 100644 index 000000000..95bd521b0 --- /dev/null +++ b/src/assets/icons/text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tg.svg b/src/assets/icons/tg.svg new file mode 100644 index 000000000..c07fc28f0 --- /dev/null +++ b/src/assets/icons/tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tgfp.svg b/src/assets/icons/tgfp.svg new file mode 100644 index 000000000..753b6d3e3 --- /dev/null +++ b/src/assets/icons/tgfp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/thbz.svg b/src/assets/icons/thbz.svg new file mode 100644 index 000000000..636117153 --- /dev/null +++ b/src/assets/icons/thbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/theme.svg b/src/assets/icons/theme.svg new file mode 100644 index 000000000..5982a2f78 --- /dev/null +++ b/src/assets/icons/theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/time.svg b/src/assets/icons/time.svg new file mode 100644 index 000000000..3e6325c3d --- /dev/null +++ b/src/assets/icons/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tpbh.svg b/src/assets/icons/tpbh.svg new file mode 100644 index 000000000..f64c4fabc --- /dev/null +++ b/src/assets/icons/tpbh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tpjzsb.svg b/src/assets/icons/tpjzsb.svg new file mode 100644 index 000000000..334a9a523 --- /dev/null +++ b/src/assets/icons/tpjzsb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tptj.svg b/src/assets/icons/tptj.svg new file mode 100644 index 000000000..16af6f216 --- /dev/null +++ b/src/assets/icons/tptj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tree.svg b/src/assets/icons/tree.svg new file mode 100644 index 000000000..d40a414d9 --- /dev/null +++ b/src/assets/icons/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tyjr.svg b/src/assets/icons/tyjr.svg new file mode 100644 index 000000000..0191999ca --- /dev/null +++ b/src/assets/icons/tyjr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/up.svg b/src/assets/icons/up.svg new file mode 100644 index 000000000..5359b1084 --- /dev/null +++ b/src/assets/icons/up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/user.svg b/src/assets/icons/user.svg new file mode 100644 index 000000000..e4c7b389f --- /dev/null +++ b/src/assets/icons/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/uv.svg b/src/assets/icons/uv.svg new file mode 100644 index 000000000..ca4c30126 --- /dev/null +++ b/src/assets/icons/uv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/valid_code.svg b/src/assets/icons/valid_code.svg new file mode 100644 index 000000000..39bf47838 --- /dev/null +++ b/src/assets/icons/valid_code.svg @@ -0,0 +1,9 @@ + + + + diff --git a/src/assets/icons/verify_code.svg b/src/assets/icons/verify_code.svg new file mode 100644 index 000000000..39bf47838 --- /dev/null +++ b/src/assets/icons/verify_code.svg @@ -0,0 +1,9 @@ + + + + diff --git a/src/assets/icons/wechat.svg b/src/assets/icons/wechat.svg new file mode 100644 index 000000000..928dcf25f --- /dev/null +++ b/src/assets/icons/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wg.svg b/src/assets/icons/wg.svg new file mode 100644 index 000000000..134d77a60 --- /dev/null +++ b/src/assets/icons/wg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wjj.svg b/src/assets/icons/wjj.svg new file mode 100644 index 000000000..3eb4bc4c7 --- /dev/null +++ b/src/assets/icons/wjj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wmx.svg b/src/assets/icons/wmx.svg new file mode 100644 index 000000000..4b88d6322 --- /dev/null +++ b/src/assets/icons/wmx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/workwechat.svg b/src/assets/icons/workwechat.svg new file mode 100644 index 000000000..c8a8d6b96 --- /dev/null +++ b/src/assets/icons/workwechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wtjd.svg b/src/assets/icons/wtjd.svg new file mode 100644 index 000000000..e8d6afa7e --- /dev/null +++ b/src/assets/icons/wtjd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbbb.svg b/src/assets/icons/wxbbb.svg new file mode 100644 index 000000000..baab4df3b --- /dev/null +++ b/src/assets/icons/wxbbb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbbw.svg b/src/assets/icons/wxbbw.svg new file mode 100644 index 000000000..eee4cc947 --- /dev/null +++ b/src/assets/icons/wxbbw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbdw.svg b/src/assets/icons/wxbdw.svg new file mode 100644 index 000000000..8e63e0cff --- /dev/null +++ b/src/assets/icons/wxbdw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbgj.svg b/src/assets/icons/wxbgj.svg new file mode 100644 index 000000000..cbdd4d4b2 --- /dev/null +++ b/src/assets/icons/wxbgj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbmxdp.svg b/src/assets/icons/wxbmxdp.svg new file mode 100644 index 000000000..4f87d5640 --- /dev/null +++ b/src/assets/icons/wxbmxdp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbppb.svg b/src/assets/icons/wxbppb.svg new file mode 100644 index 000000000..92e7bc6a2 --- /dev/null +++ b/src/assets/icons/wxbppb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbsstg.svg b/src/assets/icons/wxbsstg.svg new file mode 100644 index 000000000..8c4cbba39 --- /dev/null +++ b/src/assets/icons/wxbsstg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbzh.svg b/src/assets/icons/wxbzh.svg new file mode 100644 index 000000000..577ada246 --- /dev/null +++ b/src/assets/icons/wxbzh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxbzy.svg b/src/assets/icons/wxbzy.svg new file mode 100644 index 000000000..de51dac25 --- /dev/null +++ b/src/assets/icons/wxbzy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxdb.svg b/src/assets/icons/wxdb.svg new file mode 100644 index 000000000..aa33fccd6 --- /dev/null +++ b/src/assets/icons/wxdb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wxpl.svg b/src/assets/icons/wxpl.svg new file mode 100644 index 000000000..b00d98a61 --- /dev/null +++ b/src/assets/icons/wxpl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wzgs.svg b/src/assets/icons/wzgs.svg new file mode 100644 index 000000000..a7be46bf9 --- /dev/null +++ b/src/assets/icons/wzgs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/x.svg b/src/assets/icons/x.svg new file mode 100644 index 000000000..2581ef4fb --- /dev/null +++ b/src/assets/icons/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xh.svg b/src/assets/icons/xh.svg new file mode 100644 index 000000000..235dd09c4 --- /dev/null +++ b/src/assets/icons/xh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xianghao.svg b/src/assets/icons/xianghao.svg new file mode 100644 index 000000000..6b8a16b17 --- /dev/null +++ b/src/assets/icons/xianghao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xingzuo.svg b/src/assets/icons/xingzuo.svg new file mode 100644 index 000000000..9916a3813 --- /dev/null +++ b/src/assets/icons/xingzuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xjt.svg b/src/assets/icons/xjt.svg new file mode 100644 index 000000000..7a1f9abe2 --- /dev/null +++ b/src/assets/icons/xjt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xl.svg b/src/assets/icons/xl.svg new file mode 100644 index 000000000..0b7976f6a --- /dev/null +++ b/src/assets/icons/xl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xszh.svg b/src/assets/icons/xszh.svg new file mode 100644 index 000000000..82038687d --- /dev/null +++ b/src/assets/icons/xszh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xueli.svg b/src/assets/icons/xueli.svg new file mode 100644 index 000000000..f84d5fc1c --- /dev/null +++ b/src/assets/icons/xueli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xuewei.svg b/src/assets/icons/xuewei.svg new file mode 100644 index 000000000..47d50d174 --- /dev/null +++ b/src/assets/icons/xuewei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xx.svg b/src/assets/icons/xx.svg new file mode 100644 index 000000000..77980e772 --- /dev/null +++ b/src/assets/icons/xx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xxkx.svg b/src/assets/icons/xxkx.svg new file mode 100644 index 000000000..c189f6b30 --- /dev/null +++ b/src/assets/icons/xxkx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xxtz.svg b/src/assets/icons/xxtz.svg new file mode 100644 index 000000000..0abe21f71 --- /dev/null +++ b/src/assets/icons/xxtz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xxzh.svg b/src/assets/icons/xxzh.svg new file mode 100644 index 000000000..717dcf85c --- /dev/null +++ b/src/assets/icons/xxzh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xyb.svg b/src/assets/icons/xyb.svg new file mode 100644 index 000000000..2a8c76a45 --- /dev/null +++ b/src/assets/icons/xyb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xyj.svg b/src/assets/icons/xyj.svg new file mode 100644 index 000000000..92cc9f86d --- /dev/null +++ b/src/assets/icons/xyj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xz-jx.svg b/src/assets/icons/xz-jx.svg new file mode 100644 index 000000000..28ea59645 --- /dev/null +++ b/src/assets/icons/xz-jx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xz-sjx.svg b/src/assets/icons/xz-sjx.svg new file mode 100644 index 000000000..78984e2bf --- /dev/null +++ b/src/assets/icons/xz-sjx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xz-tp.svg b/src/assets/icons/xz-tp.svg new file mode 100644 index 000000000..f2d14e77b --- /dev/null +++ b/src/assets/icons/xz-tp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xz-tyx.svg b/src/assets/icons/xz-tyx.svg new file mode 100644 index 000000000..40b65a957 --- /dev/null +++ b/src/assets/icons/xz-tyx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xz-wz.svg b/src/assets/icons/xz-wz.svg new file mode 100644 index 000000000..ce26b8897 --- /dev/null +++ b/src/assets/icons/xz-wz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xz-xx.svg b/src/assets/icons/xz-xx.svg new file mode 100644 index 000000000..cceb1591e --- /dev/null +++ b/src/assets/icons/xz-xx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ybp.svg b/src/assets/icons/ybp.svg new file mode 100644 index 000000000..a0c458654 --- /dev/null +++ b/src/assets/icons/ybp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ycdpzbz.svg b/src/assets/icons/ycdpzbz.svg new file mode 100644 index 000000000..650617895 --- /dev/null +++ b/src/assets/icons/ycdpzbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yckj.svg b/src/assets/icons/yckj.svg new file mode 100644 index 000000000..7abee9c9c --- /dev/null +++ b/src/assets/icons/yckj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ydq.svg b/src/assets/icons/ydq.svg new file mode 100644 index 000000000..809a68e31 --- /dev/null +++ b/src/assets/icons/ydq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ydsc.svg b/src/assets/icons/ydsc.svg new file mode 100644 index 000000000..c534830b1 --- /dev/null +++ b/src/assets/icons/ydsc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ydsx.svg b/src/assets/icons/ydsx.svg new file mode 100644 index 000000000..fbc824f7b --- /dev/null +++ b/src/assets/icons/ydsx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ydxz.svg b/src/assets/icons/ydxz.svg new file mode 100644 index 000000000..ba6596a24 --- /dev/null +++ b/src/assets/icons/ydxz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yfsj.svg b/src/assets/icons/yfsj.svg new file mode 100644 index 000000000..b142248ed --- /dev/null +++ b/src/assets/icons/yfsj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yfx.svg b/src/assets/icons/yfx.svg new file mode 100644 index 000000000..4ab8487b4 --- /dev/null +++ b/src/assets/icons/yfx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yh.svg b/src/assets/icons/yh.svg new file mode 100644 index 000000000..def12e573 --- /dev/null +++ b/src/assets/icons/yh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yj.svg b/src/assets/icons/yj.svg new file mode 100644 index 000000000..df44ac810 --- /dev/null +++ b/src/assets/icons/yj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yjkg.svg b/src/assets/icons/yjkg.svg new file mode 100644 index 000000000..48989f00a --- /dev/null +++ b/src/assets/icons/yjkg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yqyw.svg b/src/assets/icons/yqyw.svg new file mode 100644 index 000000000..67c118ef0 --- /dev/null +++ b/src/assets/icons/yqyw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ysq.svg b/src/assets/icons/ysq.svg new file mode 100644 index 000000000..cd1d602b6 --- /dev/null +++ b/src/assets/icons/ysq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yunxing.svg b/src/assets/icons/yunxing.svg new file mode 100644 index 000000000..305f74e4c --- /dev/null +++ b/src/assets/icons/yunxing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yw.svg b/src/assets/icons/yw.svg new file mode 100644 index 000000000..4aaaf0cff --- /dev/null +++ b/src/assets/icons/yw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ywbjq.svg b/src/assets/icons/ywbjq.svg new file mode 100644 index 000000000..d4ea72ef2 --- /dev/null +++ b/src/assets/icons/ywbjq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ywfw.svg b/src/assets/icons/ywfw.svg new file mode 100644 index 000000000..a6152502f --- /dev/null +++ b/src/assets/icons/ywfw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yxpl.svg b/src/assets/icons/yxpl.svg new file mode 100644 index 000000000..7ca942a7a --- /dev/null +++ b/src/assets/icons/yxpl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yy.svg b/src/assets/icons/yy.svg new file mode 100644 index 000000000..8b2457ccf --- /dev/null +++ b/src/assets/icons/yy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yygl.svg b/src/assets/icons/yygl.svg new file mode 100644 index 000000000..8609946bb --- /dev/null +++ b/src/assets/icons/yygl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yygl2.svg b/src/assets/icons/yygl2.svg new file mode 100644 index 000000000..93800e910 --- /dev/null +++ b/src/assets/icons/yygl2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yyzx.svg b/src/assets/icons/yyzx.svg new file mode 100644 index 000000000..7306158b5 --- /dev/null +++ b/src/assets/icons/yyzx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zblc.svg b/src/assets/icons/zblc.svg new file mode 100644 index 000000000..07bae4cb1 --- /dev/null +++ b/src/assets/icons/zblc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zdq.svg b/src/assets/icons/zdq.svg new file mode 100644 index 000000000..fe391121b --- /dev/null +++ b/src/assets/icons/zdq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zdy.svg b/src/assets/icons/zdy.svg new file mode 100644 index 000000000..8ac9a9b5f --- /dev/null +++ b/src/assets/icons/zdy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zfbfk.svg b/src/assets/icons/zfbfk.svg new file mode 100644 index 000000000..e394c14bb --- /dev/null +++ b/src/assets/icons/zfbfk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zh.svg b/src/assets/icons/zh.svg new file mode 100644 index 000000000..99f48eddf --- /dev/null +++ b/src/assets/icons/zh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhc.svg b/src/assets/icons/zhc.svg new file mode 100644 index 000000000..d06a97aa5 --- /dev/null +++ b/src/assets/icons/zhc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhct.svg b/src/assets/icons/zhct.svg new file mode 100644 index 000000000..f07e09fb9 --- /dev/null +++ b/src/assets/icons/zhct.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhengzhi.svg b/src/assets/icons/zhengzhi.svg new file mode 100644 index 000000000..3377fb964 --- /dev/null +++ b/src/assets/icons/zhengzhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhfk.svg b/src/assets/icons/zhfk.svg new file mode 100644 index 000000000..1d01f0c39 --- /dev/null +++ b/src/assets/icons/zhfk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhiye.svg b/src/assets/icons/zhiye.svg new file mode 100644 index 000000000..f544bc224 --- /dev/null +++ b/src/assets/icons/zhiye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhqxgl.svg b/src/assets/icons/zhqxgl.svg new file mode 100644 index 000000000..a4b2a7194 --- /dev/null +++ b/src/assets/icons/zhqxgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zmxy.svg b/src/assets/icons/zmxy.svg new file mode 100644 index 000000000..50bb5043b --- /dev/null +++ b/src/assets/icons/zmxy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/znxfs.svg b/src/assets/icons/znxfs.svg new file mode 100644 index 000000000..699058768 --- /dev/null +++ b/src/assets/icons/znxfs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zpbz.svg b/src/assets/icons/zpbz.svg new file mode 100644 index 000000000..f19dd9ae8 --- /dev/null +++ b/src/assets/icons/zpbz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztbt.svg b/src/assets/icons/ztbt.svg new file mode 100644 index 000000000..542972f2d --- /dev/null +++ b/src/assets/icons/ztbt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztdm.svg b/src/assets/icons/ztdm.svg new file mode 100644 index 000000000..654a552bb --- /dev/null +++ b/src/assets/icons/ztdm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztjc.svg b/src/assets/icons/ztjc.svg new file mode 100644 index 000000000..3f070bb32 --- /dev/null +++ b/src/assets/icons/ztjc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztsb.svg b/src/assets/icons/ztsb.svg new file mode 100644 index 000000000..4e6f5e0ed --- /dev/null +++ b/src/assets/icons/ztsb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztscx.svg b/src/assets/icons/ztscx.svg new file mode 100644 index 000000000..51ac033cd --- /dev/null +++ b/src/assets/icons/ztscx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztxb.svg b/src/assets/icons/ztxb.svg new file mode 100644 index 000000000..c33398fdd --- /dev/null +++ b/src/assets/icons/ztxb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztxhx.svg b/src/assets/icons/ztxhx.svg new file mode 100644 index 000000000..f6e96e45a --- /dev/null +++ b/src/assets/icons/ztxhx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztxt.svg b/src/assets/icons/ztxt.svg new file mode 100644 index 000000000..1d01825a4 --- /dev/null +++ b/src/assets/icons/ztxt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztyl.svg b/src/assets/icons/ztyl.svg new file mode 100644 index 000000000..9a352887a --- /dev/null +++ b/src/assets/icons/ztyl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ztys.svg b/src/assets/icons/ztys.svg new file mode 100644 index 000000000..deee45e9b --- /dev/null +++ b/src/assets/icons/ztys.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zw.svg b/src/assets/icons/zw.svg new file mode 100644 index 000000000..1668f67b1 --- /dev/null +++ b/src/assets/icons/zw.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zxt.svg b/src/assets/icons/zxt.svg new file mode 100644 index 000000000..1a2a75077 --- /dev/null +++ b/src/assets/icons/zxt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zxxy.svg b/src/assets/icons/zxxy.svg new file mode 100644 index 000000000..2309826eb --- /dev/null +++ b/src/assets/icons/zxxy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zydq.svg b/src/assets/icons/zydq.svg new file mode 100644 index 000000000..266c436b0 --- /dev/null +++ b/src/assets/icons/zydq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zzqz.svg b/src/assets/icons/zzqz.svg new file mode 100644 index 000000000..d7d6562fc --- /dev/null +++ b/src/assets/icons/zzqz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zzxx.svg b/src/assets/icons/zzxx.svg new file mode 100644 index 000000000..47769bd24 --- /dev/null +++ b/src/assets/icons/zzxx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zzzk.svg b/src/assets/icons/zzzk.svg new file mode 100644 index 000000000..d4403c849 --- /dev/null +++ b/src/assets/icons/zzzk.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/image/earth_bg.png b/src/assets/image/earth_bg.png new file mode 100644 index 000000000..558d06f58 Binary files /dev/null and b/src/assets/image/earth_bg.png differ diff --git a/src/assets/image/sky.png b/src/assets/image/sky.png new file mode 100644 index 000000000..5df64bc5b Binary files /dev/null and b/src/assets/image/sky.png differ diff --git a/src/assets/index/1.gif b/src/assets/index/1.gif new file mode 100644 index 000000000..9d4218d43 Binary files /dev/null and b/src/assets/index/1.gif differ diff --git a/src/assets/index/1.jpeg b/src/assets/index/1.jpeg new file mode 100644 index 000000000..6bc9e4c0b Binary files /dev/null and b/src/assets/index/1.jpeg differ diff --git a/src/assets/index/1.jpg b/src/assets/index/1.jpg new file mode 100644 index 000000000..ae87d1a62 Binary files /dev/null and b/src/assets/index/1.jpg differ diff --git a/src/assets/index/1.png b/src/assets/index/1.png new file mode 100644 index 000000000..1bca1195d Binary files /dev/null and b/src/assets/index/1.png differ diff --git a/src/assets/index/1.webp b/src/assets/index/1.webp new file mode 100644 index 000000000..223662135 Binary files /dev/null and b/src/assets/index/1.webp differ diff --git a/src/assets/index/10.jpg b/src/assets/index/10.jpg new file mode 100644 index 000000000..45233b3c2 Binary files /dev/null and b/src/assets/index/10.jpg differ diff --git a/src/assets/index/10.png b/src/assets/index/10.png new file mode 100644 index 000000000..2675c8b42 Binary files /dev/null and b/src/assets/index/10.png differ diff --git a/src/assets/index/11.jpg b/src/assets/index/11.jpg new file mode 100644 index 000000000..37f3b9582 Binary files /dev/null and b/src/assets/index/11.jpg differ diff --git a/src/assets/index/11.png b/src/assets/index/11.png new file mode 100644 index 000000000..967803de1 Binary files /dev/null and b/src/assets/index/11.png differ diff --git a/src/assets/index/12.jpg b/src/assets/index/12.jpg new file mode 100644 index 000000000..ec6bd98ee Binary files /dev/null and b/src/assets/index/12.jpg differ diff --git a/src/assets/index/12.png b/src/assets/index/12.png new file mode 100644 index 000000000..c7c701ed0 Binary files /dev/null and b/src/assets/index/12.png differ diff --git a/src/assets/index/13.jpg b/src/assets/index/13.jpg new file mode 100644 index 000000000..7e5213636 Binary files /dev/null and b/src/assets/index/13.jpg differ diff --git a/src/assets/index/14.jpg b/src/assets/index/14.jpg new file mode 100644 index 000000000..7655a3a4b Binary files /dev/null and b/src/assets/index/14.jpg differ diff --git a/src/assets/index/15.jpg b/src/assets/index/15.jpg new file mode 100644 index 000000000..0740393be Binary files /dev/null and b/src/assets/index/15.jpg differ diff --git a/src/assets/index/2.jpg b/src/assets/index/2.jpg new file mode 100644 index 000000000..bc6fed2f5 Binary files /dev/null and b/src/assets/index/2.jpg differ diff --git a/src/assets/index/2.png b/src/assets/index/2.png new file mode 100644 index 000000000..7fddef613 Binary files /dev/null and b/src/assets/index/2.png differ diff --git a/src/assets/index/2.webp b/src/assets/index/2.webp new file mode 100644 index 000000000..5141f8df1 Binary files /dev/null and b/src/assets/index/2.webp differ diff --git a/src/assets/index/3.jpg b/src/assets/index/3.jpg new file mode 100644 index 000000000..11b9f61ca Binary files /dev/null and b/src/assets/index/3.jpg differ diff --git a/src/assets/index/3.png b/src/assets/index/3.png new file mode 100644 index 000000000..fd8de0c17 Binary files /dev/null and b/src/assets/index/3.png differ diff --git a/src/assets/index/3.webp b/src/assets/index/3.webp new file mode 100644 index 000000000..9e5246a25 Binary files /dev/null and b/src/assets/index/3.webp differ diff --git a/src/assets/index/4.jpg b/src/assets/index/4.jpg new file mode 100644 index 000000000..86a1dddea Binary files /dev/null and b/src/assets/index/4.jpg differ diff --git a/src/assets/index/4.png b/src/assets/index/4.png new file mode 100644 index 000000000..f65b34fb3 Binary files /dev/null and b/src/assets/index/4.png differ diff --git a/src/assets/index/4.webp b/src/assets/index/4.webp new file mode 100644 index 000000000..458f84969 Binary files /dev/null and b/src/assets/index/4.webp differ diff --git a/src/assets/index/5.jpg b/src/assets/index/5.jpg new file mode 100644 index 000000000..33f57c642 Binary files /dev/null and b/src/assets/index/5.jpg differ diff --git a/src/assets/index/5.png b/src/assets/index/5.png new file mode 100644 index 000000000..1228b44dd Binary files /dev/null and b/src/assets/index/5.png differ diff --git a/src/assets/index/5.webp b/src/assets/index/5.webp new file mode 100644 index 000000000..37cda0ff9 Binary files /dev/null and b/src/assets/index/5.webp differ diff --git a/src/assets/index/6.jpg b/src/assets/index/6.jpg new file mode 100644 index 000000000..b8a9ee1df Binary files /dev/null and b/src/assets/index/6.jpg differ diff --git a/src/assets/index/6.png b/src/assets/index/6.png new file mode 100644 index 000000000..aff46b6f6 Binary files /dev/null and b/src/assets/index/6.png differ diff --git a/src/assets/index/7.jpg b/src/assets/index/7.jpg new file mode 100644 index 000000000..39b723886 Binary files /dev/null and b/src/assets/index/7.jpg differ diff --git a/src/assets/index/7.png b/src/assets/index/7.png new file mode 100644 index 000000000..2358e13df Binary files /dev/null and b/src/assets/index/7.png differ diff --git a/src/assets/index/8.jpg b/src/assets/index/8.jpg new file mode 100644 index 000000000..d377b8728 Binary files /dev/null and b/src/assets/index/8.jpg differ diff --git a/src/assets/index/8.png b/src/assets/index/8.png new file mode 100644 index 000000000..dc99cf5a6 Binary files /dev/null and b/src/assets/index/8.png differ diff --git a/src/assets/index/9.jpg b/src/assets/index/9.jpg new file mode 100644 index 000000000..52a0602d4 Binary files /dev/null and b/src/assets/index/9.jpg differ diff --git a/src/assets/index/9.png b/src/assets/index/9.png new file mode 100644 index 000000000..30288d5e4 Binary files /dev/null and b/src/assets/index/9.png differ diff --git a/src/assets/index/indicator.png b/src/assets/index/indicator.png new file mode 100644 index 000000000..2f53da626 Binary files /dev/null and b/src/assets/index/indicator.png differ diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 000000000..6e271f5bc Binary files /dev/null and b/src/assets/logo.png differ diff --git a/src/assets/logo1.png b/src/assets/logo1.png new file mode 100644 index 000000000..f3d2503fc Binary files /dev/null and b/src/assets/logo1.png differ diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue new file mode 100644 index 000000000..a17fc3f04 --- /dev/null +++ b/src/components/Breadcrumb/index.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/src/components/GithubCorner/index.vue b/src/components/GithubCorner/index.vue new file mode 100644 index 000000000..6fadd6c45 --- /dev/null +++ b/src/components/GithubCorner/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue new file mode 100644 index 000000000..d98a4aa7f --- /dev/null +++ b/src/components/Hamburger/index.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue new file mode 100644 index 000000000..3ea66841b --- /dev/null +++ b/src/components/IconSelect/index.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/components/LangSelect/index.vue b/src/components/LangSelect/index.vue new file mode 100644 index 000000000..4880cd0d2 --- /dev/null +++ b/src/components/LangSelect/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue new file mode 100644 index 000000000..a0422b80a --- /dev/null +++ b/src/components/Pagination/index.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/components/RightPanel/index.vue b/src/components/RightPanel/index.vue new file mode 100644 index 000000000..01eb464e9 --- /dev/null +++ b/src/components/RightPanel/index.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/components/SizeSelect/index.vue b/src/components/SizeSelect/index.vue new file mode 100644 index 000000000..a48f91485 --- /dev/null +++ b/src/components/SizeSelect/index.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue new file mode 100644 index 000000000..07b65e8dd --- /dev/null +++ b/src/components/SvgIcon/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/components/Upload/MultiUpload.vue b/src/components/Upload/MultiUpload.vue new file mode 100644 index 000000000..1194509ed --- /dev/null +++ b/src/components/Upload/MultiUpload.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/src/components/Upload/SingleUpload.vue b/src/components/Upload/SingleUpload.vue new file mode 100644 index 000000000..4038c72bb --- /dev/null +++ b/src/components/Upload/SingleUpload.vue @@ -0,0 +1,81 @@ + + + + + + + diff --git a/src/components/WangEditor/index.vue b/src/components/WangEditor/index.vue new file mode 100644 index 000000000..5c7b4ef36 --- /dev/null +++ b/src/components/WangEditor/index.vue @@ -0,0 +1,90 @@ + + + + + + + diff --git a/src/directive/index.ts b/src/directive/index.ts new file mode 100644 index 000000000..960fa44fc --- /dev/null +++ b/src/directive/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue'; + +import { hasPerm } from './permission'; + +// 全局注册 directive +export function setupDirective(app: App) { + // 使 v-hasPerm 在所有组件中都可用 + app.directive('hasPerm', hasPerm); +} diff --git a/src/directive/permission/index.ts b/src/directive/permission/index.ts new file mode 100644 index 000000000..8b265c8c1 --- /dev/null +++ b/src/directive/permission/index.ts @@ -0,0 +1,58 @@ +import { useUserStoreHook } from '@/store/modules/user'; +import { Directive, DirectiveBinding } from 'vue'; + +/** + * 按钮权限 + */ +export const hasPerm: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + + // 「超级管理员」拥有所有的按钮权限 + const { roles, perms } = useUserStoreHook(); + + if (roles.includes('ROOT')) { + return true; + } + // 「其他角色」按钮权限校验 + const { value } = binding; + // console.log("按钮权限",el,"-->",binding,"-->",value,"-->",roles,"-->", perms); + if (value) { + const requiredPerms = value; // DOM绑定需要的按钮权限标识 + + const hasPerm = perms?.some(perm => { + return requiredPerms.includes(perm); + }); + + if (!hasPerm) { + el.parentNode && el.parentNode.removeChild(el); + } + } else { + throw new Error( + "need perms! Like v-has-perm=\"['sys:user:add','sys:user:edit']\"" + ); + } + } +}; + +/** + * 角色权限 + */ +export const hasRole: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + const { value } = binding; + + if (value) { + const requiredRoles = value; // DOM绑定需要的角色编码 + const { roles } = useUserStoreHook(); + const hasRole = roles.some(perm => { + return requiredRoles.includes(perm); + }); + + if (!hasRole) { + el.parentNode && el.parentNode.removeChild(el); + } + } else { + throw new Error("need roles! Like v-has-role=\"['admin','test']\""); + } + } +}; diff --git a/src/enums/MenuTypeEnum.ts b/src/enums/MenuTypeEnum.ts new file mode 100644 index 000000000..96c612e40 --- /dev/null +++ b/src/enums/MenuTypeEnum.ts @@ -0,0 +1,19 @@ +export enum MenuTypeEnum { + /** + * 目录 + */ + CATALOG = 'CATALOG', + /** + * 菜单 + */ + MENU = 'MENU', + + /** + * 按钮 + */ + BUTTON = 'BUTTON', + /** + * 外链 + */ + EXTLINK = 'EXTLINK' +} diff --git a/src/lang/index.ts b/src/lang/index.ts new file mode 100644 index 000000000..7f3ad89c8 --- /dev/null +++ b/src/lang/index.ts @@ -0,0 +1,25 @@ +import { createI18n } from 'vue-i18n'; +import { useAppStore } from '@/store/modules/app'; + +const appStore = useAppStore(); +// 本地语言包 +import enLocale from './package/en'; +import zhCnLocale from './package/zh-cn'; + +const messages = { + 'zh-cn': { + ...zhCnLocale + }, + en: { + ...enLocale + } +}; + +const i18n = createI18n({ + legacy: false, + locale: appStore.language, + messages: messages, + globalInjection: true +}); + +export default i18n; diff --git a/src/lang/package/en.ts b/src/lang/package/en.ts new file mode 100644 index 000000000..f9dca8a8f --- /dev/null +++ b/src/lang/package/en.ts @@ -0,0 +1,24 @@ +export default { + // 路由国际化 + route: { + dashboard: 'Dashboard', + document: 'Document' + }, + // 登录页面国际化 + login: { + title: 'Datacom Zhilian Chemical Cloud Platform', + username: 'Username', + password: 'Password', + login: 'Login', + verifyCode: 'Verify Code', + }, + // 导航栏国际化 + navbar: { + dashboard: 'Dashboard', + logout: 'Logout', + document: 'Document', + gitee: 'Gitee', + archives:'Archives', + password:'Password' + } +}; diff --git a/src/lang/package/zh-cn.ts b/src/lang/package/zh-cn.ts new file mode 100644 index 000000000..9fd69739b --- /dev/null +++ b/src/lang/package/zh-cn.ts @@ -0,0 +1,24 @@ +export default { + // 路由国际化 + route: { + dashboard: '首页', + document: '项目文档' + }, + // 登录页面国际化 + login: { + title: '数通智联化工云平台', + username: '用户名', + password: '密码', + login: '登 录', + verifyCode: '验证码' + }, + // 导航栏国际化 + navbar: { + dashboard: '首页', + logout: '注销', + document: '项目文档', + gitee: '码云', + archives:'个人资料', + password:'修改密码' + } +}; diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue new file mode 100644 index 000000000..0de8378a5 --- /dev/null +++ b/src/layout/components/AppMain.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue new file mode 100644 index 000000000..cc1f938af --- /dev/null +++ b/src/layout/components/Navbar.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue new file mode 100644 index 000000000..a67857e47 --- /dev/null +++ b/src/layout/components/Settings/index.vue @@ -0,0 +1,199 @@ + + + + + diff --git a/src/layout/components/Sidebar/Link.vue b/src/layout/components/Sidebar/Link.vue new file mode 100644 index 000000000..8e9337c10 --- /dev/null +++ b/src/layout/components/Sidebar/Link.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue new file mode 100644 index 000000000..9e29a779d --- /dev/null +++ b/src/layout/components/Sidebar/Logo.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue new file mode 100644 index 000000000..ebb6e2d28 --- /dev/null +++ b/src/layout/components/Sidebar/SidebarItem.vue @@ -0,0 +1,121 @@ + + diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue new file mode 100644 index 000000000..c76bed9b7 --- /dev/null +++ b/src/layout/components/Sidebar/index.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue new file mode 100644 index 000000000..f2b7e7aac --- /dev/null +++ b/src/layout/components/TagsView/ScrollPane.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue new file mode 100644 index 000000000..e9629ec45 --- /dev/null +++ b/src/layout/components/TagsView/index.vue @@ -0,0 +1,374 @@ + + + + + diff --git a/src/layout/components/index.ts b/src/layout/components/index.ts new file mode 100644 index 000000000..4dca96ed9 --- /dev/null +++ b/src/layout/components/index.ts @@ -0,0 +1,4 @@ +export { default as Navbar } from './Navbar.vue'; +export { default as AppMain } from './AppMain.vue'; +export { default as Settings } from './Settings/index.vue'; +export { default as TagsView } from './TagsView/index.vue'; diff --git a/src/layout/components/myconst/editmypassword.vue b/src/layout/components/myconst/editmypassword.vue new file mode 100644 index 000000000..feb7171d6 --- /dev/null +++ b/src/layout/components/myconst/editmypassword.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 000000000..dda75b381 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 000000000..e75d30e7d --- /dev/null +++ b/src/main.ts @@ -0,0 +1,28 @@ +import { createApp } from 'vue'; +import App from './App.vue'; +import router from '@/router'; +import { setupStore } from '@/store'; +import { setupDirective } from '@/directive'; + +import '@/permission'; + +// 本地SVG图标 +import 'virtual:svg-icons-register'; + +// 国际化 +import i18n from '@/lang/index'; + +// 样式 +import 'element-plus/theme-chalk/dark/css-vars.css'; +import '@/styles/index.scss'; +import 'uno.css'; + + + +const app = createApp(App); +// 全局注册 自定义指令(directive) +setupDirective(app); +// 全局注册 状态管理(store) +setupStore(app); + +app.use(router).use(i18n).mount('#app'); diff --git a/src/permission.ts b/src/permission.ts new file mode 100644 index 000000000..271e0e06b --- /dev/null +++ b/src/permission.ts @@ -0,0 +1,70 @@ +import router from "@/router"; +import { useUserStoreHook } from "@/store/modules/user"; +import { usePermissionStoreHook } from "@/store/modules/permission"; + +import NProgress from "nprogress"; +import "nprogress/nprogress.css"; + +const appTokenKey = import.meta.env.VITE_APP_TOKEN_KEY + +NProgress.configure({ showSpinner: false }); // 进度条 + +const permissionStore = usePermissionStoreHook(); + +// 白名单路由 +const whiteList = ["/login"]; + +router.beforeEach(async (to, from, next) => { + NProgress.start(); + + const hasToken = localStorage.getItem(appTokenKey); + // console.log("白名单路由----》",hasToken,to.path); + if (hasToken) { + // console.log("白名单路由--22--》",hasToken,to.path); + if (to.path === "/login") { + // 如果已登录,跳转首页 + next({ path: "/" }); + NProgress.done(); + } else { + const userStore = useUserStoreHook(); + const hasRoles = userStore.roles && userStore.roles.length > 0; + // console.log("如果已登录,跳转首页",hasRoles) + if (hasRoles) { + // 未匹配到任何路由,跳转404 + if (to.matched.length === 0) { + from.name ? next({ name: from.name }) : next("/404"); + } else { + next(); + } + } else { + try { + // const { roles } = await userStore.getInfo(); + const { perms } = await userStore.getInfo(); + const accessRoutes = await permissionStore.generateRoutes(perms); + // console.log("路由权限--perms--》",perms); + accessRoutes.forEach((route) => { + router.addRoute(route); + }); + next({ ...to, replace: true }); + } catch (error) { + // 移除 token 并跳转登录页 + await userStore.resetToken(); + next(`/login?redirect=${to.path}`); + NProgress.done(); + } + } + } + } else { + // 未登录可以访问白名单页面 + if (whiteList.indexOf(to.path) !== -1) { + next(); + } else { + next(`/login?redirect=${to.path}`); + NProgress.done(); + } + } +}); + +router.afterEach(() => { + NProgress.done(); +}); diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 000000000..c88019414 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,119 @@ +import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router"; + +export const Layout = () => import("@/layout/index.vue"); + +// 静态路由 +export const constantRoutes: RouteRecordRaw[] = [ + { + path: "/redirect", + component: Layout, + meta: { hidden: true }, + children: [ + { + path: "/redirect/:path(.*)", + component: () => import("@/views/redirect/index.vue"), + }, + ], + }, + + { + path: "/login", + component: () => import("@/views/login/index.vue"), + meta: { hidden: true }, + }, + + { + path: "/", + component: Layout, + redirect: "/dashboard", + children: [ + { + path: "dashboard", + component: () => import("@/views/dashboard/index.vue"), + name: "Dashboard", + meta: { title: "dashboard", icon: "homepage", affix: true }, + }, + { + path: "401", + component: () => import("@/views/error-page/401.vue"), + meta: { hidden: true }, + }, + { + path: "404", + component: () => import("@/views/error-page/404.vue"), + meta: { hidden: true }, + }, + ], + }, + + // 外部链接 + /*{ + path: '/external-link', + component: Layout, + children: [ + { + path: 'https://www.cnblogs.com/haoxianrui/', + meta: { title: '外部链接', icon: 'link' } + } + ] + }*/ + // 多级嵌套路由 + /* { + path: '/nested', + component: Layout, + redirect: '/nested/level1/level2', + name: 'Nested', + meta: {title: '多级菜单', icon: 'nested'}, + children: [ + { + path: 'level1', + component: () => import('@/views/nested/level1/index.vue'), + name: 'Level1', + meta: {title: '菜单一级'}, + redirect: '/nested/level1/level2', + children: [ + { + path: 'level2', + component: () => import('@/views/nested/level1/level2/index.vue'), + name: 'Level2', + meta: {title: '菜单二级'}, + redirect: '/nested/level1/level2/level3', + children: [ + { + path: 'level3-1', + component: () => import('@/views/nested/level1/level2/level3/index1.vue'), + name: 'Level3-1', + meta: {title: '菜单三级-1'} + }, + { + path: 'level3-2', + component: () => import('@/views/nested/level1/level2/level3/index2.vue'), + name: 'Level3-2', + meta: {title: '菜单三级-2'} + } + ] + } + ] + }, + ] + }*/ +]; + +/** + * 创建路由 + */ +const router = createRouter({ + history: createWebHashHistory(), + routes: constantRoutes as RouteRecordRaw[], + // 刷新时,滚动条位置还原 + scrollBehavior: () => ({ left: 0, top: 0 }), +}); + +/** + * 重置路由 + */ +export function resetRouter() { + router.replace({ path: "/login" }); +} + +export default router; diff --git a/src/settings.ts b/src/settings.ts new file mode 100644 index 000000000..d8f6c48ae --- /dev/null +++ b/src/settings.ts @@ -0,0 +1,62 @@ +// 系统设置 +interface DefaultSettings { + /** + * 系统title + */ + title: string; + + /** + * 是否显示设置 + */ + showSettings: boolean; + /** + * 是否显示多标签导航 + */ + tagsView: boolean; + /** + *是否固定头部 + */ + fixedHeader: boolean; + /** + * 是否显示侧边栏Logo + */ + sidebarLogo: boolean; + /** + * 导航栏布局 + */ + layout: string; + /** + * 主题模式 + */ + theme: string; + + /** + * 布局大小 + */ + size: string; + + /** + * 语言 + */ + language: string; +} + +const defaultSettings: DefaultSettings = { + title: "数通智联化工云平台", + showSettings: true, + tagsView: true, + fixedHeader: false, + sidebarLogo: true, + layout: "left", + /** + * 主题模式 + * + * dark:暗黑模式 + * light: 明亮模式 + */ + theme: "dark", + size: "default", // default |large |small + language: "zh-cn", // zh-cn| en +}; + +export default defaultSettings; diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 000000000..ceb4219d8 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,11 @@ +import type { App } from 'vue'; +import { createPinia } from 'pinia'; + +const store = createPinia(); + +// 全局注册 store +export function setupStore(app: App) { + app.use(store); +} + +export { store }; diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts new file mode 100644 index 000000000..cd1c1860f --- /dev/null +++ b/src/store/modules/app.ts @@ -0,0 +1,85 @@ +import { defineStore } from "pinia"; +import { useStorage } from "@vueuse/core"; +import defaultSettings from "@/settings"; + +// 导入 Element Plus 中英文语言包 +import zhCn from "element-plus/es/locale/lang/zh-cn"; +import en from "element-plus/es/locale/lang/en"; + +// setup +export const useAppStore = defineStore("app", () => { + // state + const device = useStorage("device", "desktop"); + const size = useStorage("size", defaultSettings.size); + const language = useStorage("language", defaultSettings.language); + + const sidebarStatus = useStorage("sidebarStatus", "closed"); + const sidebar = reactive({ + opened: sidebarStatus.value !== "closed", + withoutAnimation: false, + }); + + /** + * 根据语言标识读取对应的语言包 + */ + const locale = computed(() => { + if (language?.value == "en") { + return en; + } else { + return zhCn; + } + }); + + // actions + function toggleSidebar(withoutAnimation: boolean) { + sidebar.opened = !sidebar.opened; + sidebar.withoutAnimation = withoutAnimation; + if (sidebar.opened) { + sidebarStatus.value = "opened"; + } else { + sidebarStatus.value = "closed"; + } + } + + function closeSideBar(withoutAnimation: boolean) { + sidebar.opened = false; + sidebar.withoutAnimation = withoutAnimation; + sidebarStatus.value = "closed"; + } + + function openSideBar(withoutAnimation: boolean) { + sidebar.opened = true; + sidebar.withoutAnimation = withoutAnimation; + sidebarStatus.value = "opened"; + } + + function toggleDevice(val: string) { + device.value = val; + } + + function changeSize(val: string) { + size.value = val; + } + /** + * 切换语言 + * + * @param val + */ + function changeLanguage(val: string) { + language.value = val; + } + + return { + device, + sidebar, + language, + locale, + size, + toggleDevice, + changeSize, + changeLanguage, + toggleSidebar, + closeSideBar, + openSideBar, + }; +}); diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts new file mode 100644 index 000000000..0e0d75f6f --- /dev/null +++ b/src/store/modules/permission.ts @@ -0,0 +1,121 @@ +import { RouteRecordRaw } from "vue-router"; +import { defineStore } from "pinia"; +import { constantRoutes } from "@/router"; +import { store } from "@/store"; +import { listRoutes } from "@/api/menu"; + +const modules = import.meta.glob("../../views/**/*.vue"); +const Layout = () => import("@/layout/index.vue"); + +/** + * Use meta.role to determine if the current user has permission + * + * @param roles 用户角色集合 + * @param route 路由 + * @returns + */ +const hasPermission = (roles: string[], route: RouteRecordRaw) => { + // console.log("用户角色集合--->",roles,route) + if (route.meta && route.meta.perm) { + if (roles.includes("ROOT")) { + return true; + } + return roles.some((role) => { + if (route.meta?.perm !== undefined) { + return (route.meta.perm as string[]).includes(role); + } + }); + } + // if (route.meta && route.meta.roles) { + // // 角色【超级管理员】拥有所有权限,忽略校验 + // if (roles.includes("ROOT")) { + // return true; + // } + // return roles.some((role) => { + // if (route.meta?.roles !== undefined) { + // return (route.meta.roles as string[]).includes(role); + // } + // }); + // } + return false; +}; + +/** + * 递归过滤有权限的异步(动态)路由 + * + * @param routes 接口返回的异步(动态)路由 + * @param roles 用户角色集合 + * @returns 返回用户有权限的异步(动态)路由 + */ +const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => { + const asyncRoutes: RouteRecordRaw[] = []; + // console.log("判断--->",routes,roles); + routes.forEach((route) => { + const tmpRoute = { ...route }; // ES6扩展运算符复制新对象 + // console.log("判断-123-->",tmpRoute.name,tmpRoute.component,tmpRoute); + // 判断用户(角色)是否有该路由的访问权限 + if (hasPermission(roles, tmpRoute)) { + + if (tmpRoute.component?.toString() == "Layout") { + tmpRoute.component = Layout; + // console.log(); + } else { + const component = modules[`../../views/${tmpRoute.component}.vue`]; + // const component = modules[`${tmpRoute.component}.vue`]; + // console.log("判断用户-->",component); + if (component) { + tmpRoute.component = component; + } else { + tmpRoute.component = modules[`../../views/error-page/404.vue`]; + } + } + + if (tmpRoute.children) { + tmpRoute.children = filterAsyncRoutes(tmpRoute.children, roles); + } + // console.log("判断用户--路由--->",roles,tmpRoute); + asyncRoutes.push(tmpRoute); + } + }); + + return asyncRoutes; +}; + +// setup +export const usePermissionStore = defineStore("permission", () => { + // state + const routes = ref([]); + + // actions + function setRoutes(newRoutes: RouteRecordRaw[]) { + routes.value = constantRoutes.concat(newRoutes); + } + /** + * 生成动态路由 + * + * @param roles 用户角色集合 + * @returns + */ + function generateRoutes(roles: string[]) { + return new Promise((resolve, reject) => { + // 接口获取所有路由 + listRoutes() + .then(({ data: asyncRoutes }) => { + // 根据角色获取有访问权限的路由 + // console.log("获取到的路由---->",asyncRoutes, roles); + const accessedRoutes = filterAsyncRoutes(asyncRoutes, roles); + setRoutes(accessedRoutes); + resolve(accessedRoutes); + }) + .catch((error) => { + reject(error); + }); + }); + } + return { routes, setRoutes, generateRoutes }; +}); + +// 非setup +export function usePermissionStoreHook() { + return usePermissionStore(store); +} diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts new file mode 100644 index 000000000..908359c3e --- /dev/null +++ b/src/store/modules/settings.ts @@ -0,0 +1,47 @@ +import { defineStore } from "pinia"; +import defaultSettings from "@/settings"; +import { useStorage } from "@vueuse/core"; + +export const useSettingsStore = defineStore("setting", () => { + // state + const tagsView = useStorage("tagsView", defaultSettings.tagsView); + + const showSettings = ref(defaultSettings.showSettings); + const fixedHeader = ref(defaultSettings.fixedHeader); + const sidebarLogo = ref(defaultSettings.sidebarLogo); + + const layout = useStorage("layout", defaultSettings.layout); + + // actions + function changeSetting(param: { key: string; value: any }) { + const { key, value } = param; + switch (key) { + case "showSettings": + showSettings.value = value; + break; + case "fixedHeader": + fixedHeader.value = value; + break; + case "tagsView": + tagsView.value = value; + break; + case "sidevarLogo": + sidebarLogo.value = value; + break; + case "layout": + layout.value = value; + break; + default: + break; + } + } + + return { + showSettings, + tagsView, + fixedHeader, + sidebarLogo, + layout, + changeSetting, + }; +}); diff --git a/src/store/modules/tagsView.ts b/src/store/modules/tagsView.ts new file mode 100644 index 000000000..93c09a56c --- /dev/null +++ b/src/store/modules/tagsView.ts @@ -0,0 +1,218 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import { RouteLocationNormalized } from "vue-router"; + +export interface TagView extends Partial { + title?: string; +} + +// setup +export const useTagsViewStore = defineStore("tagsView", () => { + // state + const visitedViews = ref([]); + const cachedViews = ref([]); + + // actions + function addVisitedView(view: TagView) { + if (visitedViews.value.some((v) => v.path === view.path)) return; + if (view.meta && view.meta.affix) { + visitedViews.value.unshift( + Object.assign({}, view, { + title: view.meta?.title || "no-name", + }) + ); + } else { + visitedViews.value.push( + Object.assign({}, view, { + title: view.meta?.title || "no-name", + }) + ); + } + } + + function addCachedView(view: TagView) { + const viewName = view.name as string; + if (cachedViews.value.includes(viewName)) return; + if (view.meta?.keepAlive) { + cachedViews.value.push(viewName); + } + } + + function delVisitedView(view: TagView) { + return new Promise((resolve) => { + for (const [i, v] of visitedViews.value.entries()) { + if (v.path === view.path) { + visitedViews.value.splice(i, 1); + break; + } + } + resolve([...visitedViews.value]); + }); + } + + function delCachedView(view: TagView) { + const viewName = view.name as string; + return new Promise((resolve) => { + const index = cachedViews.value.indexOf(viewName); + index > -1 && cachedViews.value.splice(index, 1); + resolve([...cachedViews.value]); + }); + } + + function delOtherVisitedViews(view: TagView) { + return new Promise((resolve) => { + visitedViews.value = visitedViews.value.filter((v) => { + return v.meta?.affix || v.path === view.path; + }); + resolve([...visitedViews.value]); + }); + } + + function delOtherCachedViews(view: TagView) { + const viewName = view.name as string; + return new Promise((resolve) => { + const index = cachedViews.value.indexOf(viewName); + if (index > -1) { + cachedViews.value = cachedViews.value.slice(index, index + 1); + } else { + // if index = -1, there is no cached tags + cachedViews.value = []; + } + resolve([...cachedViews.value]); + }); + } + + function updateVisitedView(view: TagView) { + for (let v of visitedViews.value) { + if (v.path === view.path) { + v = Object.assign(v, view); + break; + } + } + } + + function addView(view: TagView) { + addVisitedView(view); + addCachedView(view); + } + + function delView(view: TagView) { + return new Promise((resolve) => { + delVisitedView(view); + delCachedView(view); + resolve({ + visitedViews: [...visitedViews.value], + cachedViews: [...cachedViews.value], + }); + }); + } + + function delOtherViews(view: TagView) { + return new Promise((resolve) => { + delOtherVisitedViews(view); + delOtherCachedViews(view); + resolve({ + visitedViews: [...visitedViews.value], + cachedViews: [...cachedViews.value], + }); + }); + } + + function delLeftViews(view: TagView) { + return new Promise((resolve) => { + const currIndex = visitedViews.value.findIndex( + (v) => v.path === view.path + ); + if (currIndex === -1) { + return; + } + visitedViews.value = visitedViews.value.filter((item, index) => { + // affix:true 固定tag,例如“首页” + if (index >= currIndex || (item.meta && item.meta.affix)) { + return true; + } + + const cacheIndex = cachedViews.value.indexOf(item.name as string); + if (cacheIndex > -1) { + cachedViews.value.splice(cacheIndex, 1); + } + return false; + }); + resolve({ + visitedViews: [...visitedViews.value], + }); + }); + } + function delRightViews(view: TagView) { + return new Promise((resolve) => { + const currIndex = visitedViews.value.findIndex( + (v) => v.path === view.path + ); + if (currIndex === -1) { + return; + } + visitedViews.value = visitedViews.value.filter((item, index) => { + // affix:true 固定tag,例如“首页” + if (index <= currIndex || (item.meta && item.meta.affix)) { + return true; + } + + const cacheIndex = cachedViews.value.indexOf(item.name as string); + if (cacheIndex > -1) { + cachedViews.value.splice(cacheIndex, 1); + } + return false; + }); + resolve({ + visitedViews: [...visitedViews.value], + }); + }); + } + + function delAllViews() { + return new Promise((resolve) => { + const affixTags = visitedViews.value.filter((tag) => tag.meta?.affix); + visitedViews.value = affixTags; + cachedViews.value = []; + resolve({ + visitedViews: [...visitedViews.value], + cachedViews: [...cachedViews.value], + }); + }); + } + + function delAllVisitedViews() { + return new Promise((resolve) => { + const affixTags = visitedViews.value.filter((tag) => tag.meta?.affix); + visitedViews.value = affixTags; + resolve([...visitedViews.value]); + }); + } + + function delAllCachedViews() { + return new Promise((resolve) => { + cachedViews.value = []; + resolve([...cachedViews.value]); + }); + } + + return { + visitedViews, + cachedViews, + addVisitedView, + addCachedView, + delVisitedView, + delCachedView, + delOtherVisitedViews, + delOtherCachedViews, + updateVisitedView, + addView, + delView, + delOtherViews, + delLeftViews, + delRightViews, + delAllViews, + delAllVisitedViews, + delAllCachedViews, + }; +}); diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 000000000..eb79a4fbf --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,129 @@ +import { defineStore } from "pinia"; + +import { loginApi, logoutApi,loginApiIng } from "@/api/auth"; +import { getUserInfo,getUserInfoIng } from "@/api/user"; +import { resetRouter } from "@/router"; +import { store } from "@/store"; + +import { LoginData } from "@/api/auth/types"; +import { UserInfo } from "@/api/user/types"; + +import { useStorage } from "@vueuse/core"; +const appTokenKey = import.meta.env.VITE_APP_TOKEN_KEY + +export const useUserStore = defineStore("user", () => { + // state + const tokenIng = useStorage(appTokenKey, ""); + const nickname = ref(""); + const avatar = ref(""); + const roles = ref>([]); // 用户角色编码集合 → 判断路由权限 + const perms = ref>([]); // 用户权限编码集合 → 判断按钮权限 + const userKey = useStorage("userKey", ""); + const userToken = useStorage("userToken", ""); + /** + * 登录调用 + * + * @param {LoginData} + * @returns + */ + function login(loginData: LoginData) { + return new Promise((resolve, reject) => { + loginApiIng(loginData) + .then((response) => { + const { tokenType, accessToken, key, token } = response.data; + tokenIng.value = key + "_" + token; // Bearer eyJhbGciOiJIUzI1NiJ9.xxx.xxx + userKey.value = key; + userToken.value = token; + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); + } + + // 获取信息(用户昵称、头像、角色集合、权限集合) + function getInfo() { + return new Promise((resolve, reject) => { + // getUserInfo() + // .then(({ data }) => { + // if (!data) { + // return reject("验证失败,请重新登录。"); + // } + // if (!data.roles || data.roles.length <= 0) { + // reject("获取用户信息:角色必须是非null数组!"); + // } + // nickname.value = data.nickname; + // avatar.value = data.avatar; + // roles.value = data.roles; + // perms.value = data.perms; + // resolve(data); + // }) + // .catch((error) => { + // reject(error); + // }); + getUserInfoIng() + .then(({data})=>{ + if (!data) { + return reject("验证失败,请重新登录。"); + } + if (!data.roles || data.roles.length <= 0) { + reject("获取用户信息:角色必须是非null数组!"); + } + nickname.value = data.nickname; + avatar.value = data.avatar; + roles.value = data.roles; + perms.value = data.perms; + resolve(data); + }) + .catch((error) => { + reject(error); + }); + }); + } + + // 注销 + function logout() { + return new Promise((resolve, reject) => { + logoutApi() + .then(() => { + resetRouter(); + resetToken(); + location.reload(); // 清空路由 + resolve(); + }) + .catch((error) => { + reject(error); + }); + }); + } + + // 重置 + function resetToken() { + tokenIng.value = ""; + nickname.value = ""; + userKey.value = ""; + userToken.value = ""; + avatar.value = ""; + roles.value = []; + perms.value = []; + } + return { + tokenIng, + userKey, + userToken, + nickname, + avatar, + roles, + perms, + login, + getInfo, + logout, + resetToken, + }; +}); + +// 非setup +export function useUserStoreHook() { + return useUserStore(store); +} diff --git a/src/styles/dark.scss b/src/styles/dark.scss new file mode 100644 index 000000000..5b719ff40 --- /dev/null +++ b/src/styles/dark.scss @@ -0,0 +1,33 @@ +html.dark { + --menuBg: var(--el-bg-color-overlay); + --menuText: #fff; + --menuActiveText: var(--el-menu-active-color); + --menuHover: rgb(0 0 0 / 20%); + --subMenuBg: var(--el-menu-bg-color); + --subMenuActiveText: var(--el-menu-active-color); + --subMenuHover: rgb(0 0 0 / 20%); + + .navbar { + color: var(--el-text-color-regular); + background-color: var(--el-bg-color); + + .setting-container .setting-item:hover { + background: var(--el-fill-color-light); + } + } + + .right-panel-btn { + background-color: var(--el-color-primary-dark); + } + + .svg-icon, + svg { + fill: var(--el-text-color-regular); + } + + .sidebar-container { + .el-menu-item.is-active .svg-icon { + fill: var(--el-color-primary); + } + } +} diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 000000000..45b6ca7c3 --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,35 @@ +@import "./sidebar"; +@import "./reset"; +@import "./dark"; + +.app-container { + margin: 20px; + + .search { + padding: 18px 0 0 10px; + margin-bottom: 10px; + background-color: var(--el-bg-color-overlay); + border: 1px solid var(--el-border-color-light); + border-radius: 4px; + box-shadow: var(--el-box-shadow-light); + } +} +/* ----- 滚动条 ----- */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background-color: rgb(0 0 0 / 5%); +} + +::-webkit-scrollbar-thumb { + background-color: rgb(144 147 153 / 30%); + border-radius: 3px; + box-shadow: inset 0 0 6px rgb(0 0 0 / 20%); +} + +::-webkit-scrollbar-thumb:hover { + background-color: #b6b7b9; +} diff --git a/src/styles/reset.scss b/src/styles/reset.scss new file mode 100644 index 000000000..9b19e4c45 --- /dev/null +++ b/src/styles/reset.scss @@ -0,0 +1,75 @@ +*, +::before, +::after { + box-sizing: border-box; + border-color: currentcolor; + border-style: solid; + border-width: 0; +} + +#app { + width: 100%; + height: 100%; +} + +html { + box-sizing: border-box; + width: 100%; + height: 100%; + line-height: 1.5; + tab-size: 4; + text-size-adjust: 100%; +} + +body { + width: 100%; + height: 100%; + margin: 0; + font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", + "Microsoft YaHei", "微软雅黑", Arial, sans-serif; + line-height: inherit; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizelegibility; +} + +a { + color: inherit; + text-decoration: inherit; +} + +img, +svg { + display: inline-block; +} + +svg { + vertical-align: -0.15em; //因icon大小被设置为和字体大小一致,而span等标签的下边缘会和字体的基线对齐,故需设置一个往下的偏移比例,来纠正视觉上的未对齐效果 +} + +ul, +li { + padding: 0; + margin: 0; + list-style: none; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +a, +a:focus, +a:hover { + color: inherit; + text-decoration: none; + cursor: pointer; +} + +a:focus, +a:active, +div:focus { + outline: none; +} diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss new file mode 100644 index 000000000..efaa4e97b --- /dev/null +++ b/src/styles/sidebar.scss @@ -0,0 +1,205 @@ +#app { + .main-container { + position: relative; + min-height: 100%; + margin-left: $sideBarWidth; + transition: margin-left 0.28s; + } + + .sidebar-container { + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + width: $sideBarWidth !important; + height: 100%; + overflow: hidden; + background-color: $menuBg; + transition: width 0.28s; + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, + 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + .svg-icon { + margin-right: 16px; + } + + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; + } + + .el-menu { + width: 100% !important; + height: 100%; + border: none; + } + + // menu hover + .el-sub-menu__title { + &:hover { + background-color: $menuHover !important; + } + } + + .is-active > .el-sub-menu__title { + color: $subMenuActiveText !important; + } + + & .nest-menu .el-sub-menu > .el-sub-menu__title, + & .el-sub-menu .el-menu-item { + min-width: $sideBarWidth !important; + background-color: $subMenuBg !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: 54px !important; + + .svg-icon { + margin-right: 0; + } + } + + .main-container { + margin-left: 54px; + } + + .el-sub-menu { + overflow: hidden; + + & > .el-sub-menu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .sub-el-icon { + margin-left: 19px; + } + + .el-sub-menu__icon-arrow { + display: none; + } + } + } + + .el-menu--collapse { + .el-sub-menu { + & > .el-sub-menu__title { + & > span { + display: inline-block; + width: 0; + height: 0; + overflow: hidden; + visibility: hidden; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-sub-menu { + min-width: $sideBarWidth !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0; + } + + .sidebar-container { + width: $sideBarWidth !important; + transition: transform 0.28s; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-$sideBarWidth, 0, 0); + } + } + } + + .withoutAnimation { + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + & > .el-menu { + .svg-icon { + margin-right: 16px; + } + + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; + } + } + + .nest-menu .el-sub-menu > .el-sub-menu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + background-color: $menuHover !important; + } + } + + // the scroll bar appears when the subMenu is too long + > .el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/src/styles/variables.module.scss b/src/styles/variables.module.scss new file mode 100644 index 000000000..cbc114aed --- /dev/null +++ b/src/styles/variables.module.scss @@ -0,0 +1,6 @@ +// 导出 variables.module.scss 变量提供给TypeScript使用 +:export { + menuBg: $menuBg; + menuText: $menuText; + menuActiveText: $menuActiveText +} \ No newline at end of file diff --git a/src/styles/variables.scss b/src/styles/variables.scss new file mode 100644 index 000000000..e11df3040 --- /dev/null +++ b/src/styles/variables.scss @@ -0,0 +1,22 @@ +// 全局SCSS变量 + +:root { + --menuBg: #304156; + --menuText: #bfcbd9; + --menuActiveText: #409eff; + --menuHover: #263445; + --subMenuBg: #1f2d3d; + --subMenuActiveText: #f4f4f5; + --subMenuHover: #001528; +} + +$menuBg: var(--menuBg); +$menuText: var(--menuText); +$menuActiveText: var(--menuActiveText); +$menuHover: var(--menuHover); + +$subMenuBg: var(--subMenuBg); +$subMenuActiveText: var(--subMenuActiveText); +$subMenuHover: var(--subMenuHover); + +$sideBarWidth: 210px; diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts new file mode 100644 index 000000000..21cc517eb --- /dev/null +++ b/src/types/auto-imports.d.ts @@ -0,0 +1,844 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const ElForm: typeof import('element-plus/es')['ElForm'] + const ElMessage: typeof import('element-plus/es')['ElMessage'] + const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] + const ElTree: typeof import('element-plus/es')['ElTree'] + 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 createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate'] + const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable'] + const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise'] + 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 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 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 toValue: typeof import('vue')['toValue'] + 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 useAnimate: typeof import('@vueuse/core')['useAnimate'] + const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference'] + 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 useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast'] + const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes'] + 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 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 useParentElement: typeof import('@vueuse/core')['useParentElement'] + const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver'] + const usePermission: typeof import('@vueuse/core')['usePermission'] + const usePointer: typeof import('@vueuse/core')['usePointer'] + const usePointerLock: typeof import('@vueuse/core')['usePointerLock'] + 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 usePrevious: typeof import('@vueuse/core')['usePrevious'] + const useRafFn: typeof import('@vueuse/core')['useRafFn'] + const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] + const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] + 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 watchDeep: typeof import('@vueuse/core')['watchDeep'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable'] + const watchImmediate: typeof import('@vueuse/core')['watchImmediate'] + 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'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue' +} +// for vue template auto import +import { UnwrapRef } from 'vue' +declare module 'vue' { + interface ComponentCustomProperties { + readonly EffectScope: UnwrapRef + readonly ElForm: UnwrapRef + readonly ElMessage: UnwrapRef + readonly ElMessageBox: UnwrapRef + readonly ElTree: UnwrapRef + readonly asyncComputed: UnwrapRef + readonly autoResetRef: UnwrapRef + readonly computed: UnwrapRef + readonly computedAsync: UnwrapRef + readonly computedEager: UnwrapRef + readonly computedInject: UnwrapRef + readonly computedWithControl: UnwrapRef + readonly controlledComputed: UnwrapRef + readonly controlledRef: UnwrapRef + readonly createApp: UnwrapRef + readonly createEventHook: UnwrapRef + readonly createGlobalState: UnwrapRef + readonly createInjectionState: UnwrapRef + readonly createReactiveFn: UnwrapRef + readonly createReusableTemplate: UnwrapRef + readonly createSharedComposable: UnwrapRef + readonly createTemplatePromise: UnwrapRef + readonly createUnrefFn: UnwrapRef + readonly customRef: UnwrapRef + readonly debouncedRef: UnwrapRef + readonly debouncedWatch: UnwrapRef + readonly defineAsyncComponent: UnwrapRef + readonly defineComponent: UnwrapRef + readonly eagerComputed: UnwrapRef + readonly effectScope: UnwrapRef + readonly extendRef: UnwrapRef + readonly getCurrentInstance: UnwrapRef + readonly getCurrentScope: UnwrapRef + readonly h: UnwrapRef + readonly ignorableWatch: UnwrapRef + readonly inject: UnwrapRef + readonly isDefined: UnwrapRef + readonly isProxy: UnwrapRef + readonly isReactive: UnwrapRef + readonly isReadonly: UnwrapRef + readonly isRef: UnwrapRef + readonly makeDestructurable: UnwrapRef + readonly markRaw: UnwrapRef + readonly nextTick: UnwrapRef + readonly onActivated: UnwrapRef + readonly onBeforeMount: UnwrapRef + readonly onBeforeUnmount: UnwrapRef + readonly onBeforeUpdate: UnwrapRef + readonly onClickOutside: UnwrapRef + readonly onDeactivated: UnwrapRef + readonly onErrorCaptured: UnwrapRef + readonly onKeyStroke: UnwrapRef + readonly onLongPress: UnwrapRef + readonly onMounted: UnwrapRef + readonly onRenderTracked: UnwrapRef + readonly onRenderTriggered: UnwrapRef + readonly onScopeDispose: UnwrapRef + readonly onServerPrefetch: UnwrapRef + readonly onStartTyping: UnwrapRef + readonly onUnmounted: UnwrapRef + readonly onUpdated: UnwrapRef + readonly pausableWatch: UnwrapRef + readonly provide: UnwrapRef + readonly reactify: UnwrapRef + readonly reactifyObject: UnwrapRef + readonly reactive: UnwrapRef + readonly reactiveComputed: UnwrapRef + readonly reactiveOmit: UnwrapRef + readonly reactivePick: UnwrapRef + readonly readonly: UnwrapRef + readonly ref: UnwrapRef + readonly refAutoReset: UnwrapRef + readonly refDebounced: UnwrapRef + readonly refDefault: UnwrapRef + readonly refThrottled: UnwrapRef + readonly refWithControl: UnwrapRef + readonly resolveComponent: UnwrapRef + readonly resolveRef: UnwrapRef + readonly resolveUnref: UnwrapRef + readonly shallowReactive: UnwrapRef + readonly shallowReadonly: UnwrapRef + readonly shallowRef: UnwrapRef + readonly syncRef: UnwrapRef + readonly syncRefs: UnwrapRef + readonly templateRef: UnwrapRef + readonly throttledRef: UnwrapRef + readonly throttledWatch: UnwrapRef + readonly toRaw: UnwrapRef + readonly toReactive: UnwrapRef + readonly toRef: UnwrapRef + readonly toRefs: UnwrapRef + readonly toValue: UnwrapRef + readonly triggerRef: UnwrapRef + readonly tryOnBeforeMount: UnwrapRef + readonly tryOnBeforeUnmount: UnwrapRef + readonly tryOnMounted: UnwrapRef + readonly tryOnScopeDispose: UnwrapRef + readonly tryOnUnmounted: UnwrapRef + readonly unref: UnwrapRef + readonly unrefElement: UnwrapRef + readonly until: UnwrapRef + readonly useActiveElement: UnwrapRef + readonly useAnimate: UnwrapRef + readonly useArrayDifference: UnwrapRef + readonly useArrayEvery: UnwrapRef + readonly useArrayFilter: UnwrapRef + readonly useArrayFind: UnwrapRef + readonly useArrayFindIndex: UnwrapRef + readonly useArrayFindLast: UnwrapRef + readonly useArrayIncludes: UnwrapRef + readonly useArrayJoin: UnwrapRef + readonly useArrayMap: UnwrapRef + readonly useArrayReduce: UnwrapRef + readonly useArraySome: UnwrapRef + readonly useArrayUnique: UnwrapRef + readonly useAsyncQueue: UnwrapRef + readonly useAsyncState: UnwrapRef + readonly useAttrs: UnwrapRef + readonly useBase64: UnwrapRef + readonly useBattery: UnwrapRef + readonly useBluetooth: UnwrapRef + readonly useBreakpoints: UnwrapRef + readonly useBroadcastChannel: UnwrapRef + readonly useBrowserLocation: UnwrapRef + readonly useCached: UnwrapRef + readonly useClipboard: UnwrapRef + readonly useCloned: UnwrapRef + readonly useColorMode: UnwrapRef + readonly useConfirmDialog: UnwrapRef + readonly useCounter: UnwrapRef + readonly useCssModule: UnwrapRef + readonly useCssVar: UnwrapRef + readonly useCssVars: UnwrapRef + readonly useCurrentElement: UnwrapRef + readonly useCycleList: UnwrapRef + readonly useDark: UnwrapRef + readonly useDateFormat: UnwrapRef + readonly useDebounce: UnwrapRef + readonly useDebounceFn: UnwrapRef + readonly useDebouncedRefHistory: UnwrapRef + readonly useDeviceMotion: UnwrapRef + readonly useDeviceOrientation: UnwrapRef + readonly useDevicePixelRatio: UnwrapRef + readonly useDevicesList: UnwrapRef + readonly useDisplayMedia: UnwrapRef + readonly useDocumentVisibility: UnwrapRef + readonly useDraggable: UnwrapRef + readonly useDropZone: UnwrapRef + readonly useElementBounding: UnwrapRef + readonly useElementByPoint: UnwrapRef + readonly useElementHover: UnwrapRef + readonly useElementSize: UnwrapRef + readonly useElementVisibility: UnwrapRef + readonly useEventBus: UnwrapRef + readonly useEventListener: UnwrapRef + readonly useEventSource: UnwrapRef + readonly useEyeDropper: UnwrapRef + readonly useFavicon: UnwrapRef + readonly useFetch: UnwrapRef + readonly useFileDialog: UnwrapRef + readonly useFileSystemAccess: UnwrapRef + readonly useFocus: UnwrapRef + readonly useFocusWithin: UnwrapRef + readonly useFps: UnwrapRef + readonly useFullscreen: UnwrapRef + readonly useGamepad: UnwrapRef + readonly useGeolocation: UnwrapRef + readonly useIdle: UnwrapRef + readonly useImage: UnwrapRef + readonly useInfiniteScroll: UnwrapRef + readonly useIntersectionObserver: UnwrapRef + readonly useInterval: UnwrapRef + readonly useIntervalFn: UnwrapRef + readonly useKeyModifier: UnwrapRef + readonly useLastChanged: UnwrapRef + readonly useLocalStorage: UnwrapRef + readonly useMagicKeys: UnwrapRef + readonly useManualRefHistory: UnwrapRef + readonly useMediaControls: UnwrapRef + readonly useMediaQuery: UnwrapRef + readonly useMemoize: UnwrapRef + readonly useMemory: UnwrapRef + readonly useMounted: UnwrapRef + readonly useMouse: UnwrapRef + readonly useMouseInElement: UnwrapRef + readonly useMousePressed: UnwrapRef + readonly useMutationObserver: UnwrapRef + readonly useNavigatorLanguage: UnwrapRef + readonly useNetwork: UnwrapRef + readonly useNow: UnwrapRef + readonly useObjectUrl: UnwrapRef + readonly useOffsetPagination: UnwrapRef + readonly useOnline: UnwrapRef + readonly usePageLeave: UnwrapRef + readonly useParallax: UnwrapRef + readonly useParentElement: UnwrapRef + readonly usePerformanceObserver: UnwrapRef + readonly usePermission: UnwrapRef + readonly usePointer: UnwrapRef + readonly usePointerLock: UnwrapRef + readonly usePointerSwipe: UnwrapRef + readonly usePreferredColorScheme: UnwrapRef + readonly usePreferredContrast: UnwrapRef + readonly usePreferredDark: UnwrapRef + readonly usePreferredLanguages: UnwrapRef + readonly usePreferredReducedMotion: UnwrapRef + readonly usePrevious: UnwrapRef + readonly useRafFn: UnwrapRef + readonly useRefHistory: UnwrapRef + readonly useResizeObserver: UnwrapRef + readonly useScreenOrientation: UnwrapRef + readonly useScreenSafeArea: UnwrapRef + readonly useScriptTag: UnwrapRef + readonly useScroll: UnwrapRef + readonly useScrollLock: UnwrapRef + readonly useSessionStorage: UnwrapRef + readonly useShare: UnwrapRef + readonly useSlots: UnwrapRef + readonly useSorted: UnwrapRef + readonly useSpeechRecognition: UnwrapRef + readonly useSpeechSynthesis: UnwrapRef + readonly useStepper: UnwrapRef + readonly useStorage: UnwrapRef + readonly useStorageAsync: UnwrapRef + readonly useStyleTag: UnwrapRef + readonly useSupported: UnwrapRef + readonly useSwipe: UnwrapRef + readonly useTemplateRefsList: UnwrapRef + readonly useTextDirection: UnwrapRef + readonly useTextSelection: UnwrapRef + readonly useTextareaAutosize: UnwrapRef + readonly useThrottle: UnwrapRef + readonly useThrottleFn: UnwrapRef + readonly useThrottledRefHistory: UnwrapRef + readonly useTimeAgo: UnwrapRef + readonly useTimeout: UnwrapRef + readonly useTimeoutFn: UnwrapRef + readonly useTimeoutPoll: UnwrapRef + readonly useTimestamp: UnwrapRef + readonly useTitle: UnwrapRef + readonly useToNumber: UnwrapRef + readonly useToString: UnwrapRef + readonly useToggle: UnwrapRef + readonly useTransition: UnwrapRef + readonly useUrlSearchParams: UnwrapRef + readonly useUserMedia: UnwrapRef + readonly useVModel: UnwrapRef + readonly useVModels: UnwrapRef + readonly useVibrate: UnwrapRef + readonly useVirtualList: UnwrapRef + readonly useWakeLock: UnwrapRef + readonly useWebNotification: UnwrapRef + readonly useWebSocket: UnwrapRef + readonly useWebWorker: UnwrapRef + readonly useWebWorkerFn: UnwrapRef + readonly useWindowFocus: UnwrapRef + readonly useWindowScroll: UnwrapRef + readonly useWindowSize: UnwrapRef + readonly watch: UnwrapRef + readonly watchArray: UnwrapRef + readonly watchAtMost: UnwrapRef + readonly watchDebounced: UnwrapRef + readonly watchDeep: UnwrapRef + readonly watchEffect: UnwrapRef + readonly watchIgnorable: UnwrapRef + readonly watchImmediate: UnwrapRef + readonly watchOnce: UnwrapRef + readonly watchPausable: UnwrapRef + readonly watchPostEffect: UnwrapRef + readonly watchSyncEffect: UnwrapRef + readonly watchThrottled: UnwrapRef + readonly watchTriggerable: UnwrapRef + readonly watchWithFilter: UnwrapRef + readonly whenever: UnwrapRef + } +} +declare module '@vue/runtime-core' { + interface ComponentCustomProperties { + readonly EffectScope: UnwrapRef + readonly ElForm: UnwrapRef + readonly ElMessage: UnwrapRef + readonly ElMessageBox: UnwrapRef + readonly ElTree: UnwrapRef + readonly asyncComputed: UnwrapRef + readonly autoResetRef: UnwrapRef + readonly computed: UnwrapRef + readonly computedAsync: UnwrapRef + readonly computedEager: UnwrapRef + readonly computedInject: UnwrapRef + readonly computedWithControl: UnwrapRef + readonly controlledComputed: UnwrapRef + readonly controlledRef: UnwrapRef + readonly createApp: UnwrapRef + readonly createEventHook: UnwrapRef + readonly createGlobalState: UnwrapRef + readonly createInjectionState: UnwrapRef + readonly createReactiveFn: UnwrapRef + readonly createReusableTemplate: UnwrapRef + readonly createSharedComposable: UnwrapRef + readonly createTemplatePromise: UnwrapRef + readonly createUnrefFn: UnwrapRef + readonly customRef: UnwrapRef + readonly debouncedRef: UnwrapRef + readonly debouncedWatch: UnwrapRef + readonly defineAsyncComponent: UnwrapRef + readonly defineComponent: UnwrapRef + readonly eagerComputed: UnwrapRef + readonly effectScope: UnwrapRef + readonly extendRef: UnwrapRef + readonly getCurrentInstance: UnwrapRef + readonly getCurrentScope: UnwrapRef + readonly h: UnwrapRef + readonly ignorableWatch: UnwrapRef + readonly inject: UnwrapRef + readonly isDefined: UnwrapRef + readonly isProxy: UnwrapRef + readonly isReactive: UnwrapRef + readonly isReadonly: UnwrapRef + readonly isRef: UnwrapRef + readonly makeDestructurable: UnwrapRef + readonly markRaw: UnwrapRef + readonly nextTick: UnwrapRef + readonly onActivated: UnwrapRef + readonly onBeforeMount: UnwrapRef + readonly onBeforeUnmount: UnwrapRef + readonly onBeforeUpdate: UnwrapRef + readonly onClickOutside: UnwrapRef + readonly onDeactivated: UnwrapRef + readonly onErrorCaptured: UnwrapRef + readonly onKeyStroke: UnwrapRef + readonly onLongPress: UnwrapRef + readonly onMounted: UnwrapRef + readonly onRenderTracked: UnwrapRef + readonly onRenderTriggered: UnwrapRef + readonly onScopeDispose: UnwrapRef + readonly onServerPrefetch: UnwrapRef + readonly onStartTyping: UnwrapRef + readonly onUnmounted: UnwrapRef + readonly onUpdated: UnwrapRef + readonly pausableWatch: UnwrapRef + readonly provide: UnwrapRef + readonly reactify: UnwrapRef + readonly reactifyObject: UnwrapRef + readonly reactive: UnwrapRef + readonly reactiveComputed: UnwrapRef + readonly reactiveOmit: UnwrapRef + readonly reactivePick: UnwrapRef + readonly readonly: UnwrapRef + readonly ref: UnwrapRef + readonly refAutoReset: UnwrapRef + readonly refDebounced: UnwrapRef + readonly refDefault: UnwrapRef + readonly refThrottled: UnwrapRef + readonly refWithControl: UnwrapRef + readonly resolveComponent: UnwrapRef + readonly resolveRef: UnwrapRef + readonly resolveUnref: UnwrapRef + readonly shallowReactive: UnwrapRef + readonly shallowReadonly: UnwrapRef + readonly shallowRef: UnwrapRef + readonly syncRef: UnwrapRef + readonly syncRefs: UnwrapRef + readonly templateRef: UnwrapRef + readonly throttledRef: UnwrapRef + readonly throttledWatch: UnwrapRef + readonly toRaw: UnwrapRef + readonly toReactive: UnwrapRef + readonly toRef: UnwrapRef + readonly toRefs: UnwrapRef + readonly toValue: UnwrapRef + readonly triggerRef: UnwrapRef + readonly tryOnBeforeMount: UnwrapRef + readonly tryOnBeforeUnmount: UnwrapRef + readonly tryOnMounted: UnwrapRef + readonly tryOnScopeDispose: UnwrapRef + readonly tryOnUnmounted: UnwrapRef + readonly unref: UnwrapRef + readonly unrefElement: UnwrapRef + readonly until: UnwrapRef + readonly useActiveElement: UnwrapRef + readonly useAnimate: UnwrapRef + readonly useArrayDifference: UnwrapRef + readonly useArrayEvery: UnwrapRef + readonly useArrayFilter: UnwrapRef + readonly useArrayFind: UnwrapRef + readonly useArrayFindIndex: UnwrapRef + readonly useArrayFindLast: UnwrapRef + readonly useArrayIncludes: UnwrapRef + readonly useArrayJoin: UnwrapRef + readonly useArrayMap: UnwrapRef + readonly useArrayReduce: UnwrapRef + readonly useArraySome: UnwrapRef + readonly useArrayUnique: UnwrapRef + readonly useAsyncQueue: UnwrapRef + readonly useAsyncState: UnwrapRef + readonly useAttrs: UnwrapRef + readonly useBase64: UnwrapRef + readonly useBattery: UnwrapRef + readonly useBluetooth: UnwrapRef + readonly useBreakpoints: UnwrapRef + readonly useBroadcastChannel: UnwrapRef + readonly useBrowserLocation: UnwrapRef + readonly useCached: UnwrapRef + readonly useClipboard: UnwrapRef + readonly useCloned: UnwrapRef + readonly useColorMode: UnwrapRef + readonly useConfirmDialog: UnwrapRef + readonly useCounter: UnwrapRef + readonly useCssModule: UnwrapRef + readonly useCssVar: UnwrapRef + readonly useCssVars: UnwrapRef + readonly useCurrentElement: UnwrapRef + readonly useCycleList: UnwrapRef + readonly useDark: UnwrapRef + readonly useDateFormat: UnwrapRef + readonly useDebounce: UnwrapRef + readonly useDebounceFn: UnwrapRef + readonly useDebouncedRefHistory: UnwrapRef + readonly useDeviceMotion: UnwrapRef + readonly useDeviceOrientation: UnwrapRef + readonly useDevicePixelRatio: UnwrapRef + readonly useDevicesList: UnwrapRef + readonly useDisplayMedia: UnwrapRef + readonly useDocumentVisibility: UnwrapRef + readonly useDraggable: UnwrapRef + readonly useDropZone: UnwrapRef + readonly useElementBounding: UnwrapRef + readonly useElementByPoint: UnwrapRef + readonly useElementHover: UnwrapRef + readonly useElementSize: UnwrapRef + readonly useElementVisibility: UnwrapRef + readonly useEventBus: UnwrapRef + readonly useEventListener: UnwrapRef + readonly useEventSource: UnwrapRef + readonly useEyeDropper: UnwrapRef + readonly useFavicon: UnwrapRef + readonly useFetch: UnwrapRef + readonly useFileDialog: UnwrapRef + readonly useFileSystemAccess: UnwrapRef + readonly useFocus: UnwrapRef + readonly useFocusWithin: UnwrapRef + readonly useFps: UnwrapRef + readonly useFullscreen: UnwrapRef + readonly useGamepad: UnwrapRef + readonly useGeolocation: UnwrapRef + readonly useIdle: UnwrapRef + readonly useImage: UnwrapRef + readonly useInfiniteScroll: UnwrapRef + readonly useIntersectionObserver: UnwrapRef + readonly useInterval: UnwrapRef + readonly useIntervalFn: UnwrapRef + readonly useKeyModifier: UnwrapRef + readonly useLastChanged: UnwrapRef + readonly useLocalStorage: UnwrapRef + readonly useMagicKeys: UnwrapRef + readonly useManualRefHistory: UnwrapRef + readonly useMediaControls: UnwrapRef + readonly useMediaQuery: UnwrapRef + readonly useMemoize: UnwrapRef + readonly useMemory: UnwrapRef + readonly useMounted: UnwrapRef + readonly useMouse: UnwrapRef + readonly useMouseInElement: UnwrapRef + readonly useMousePressed: UnwrapRef + readonly useMutationObserver: UnwrapRef + readonly useNavigatorLanguage: UnwrapRef + readonly useNetwork: UnwrapRef + readonly useNow: UnwrapRef + readonly useObjectUrl: UnwrapRef + readonly useOffsetPagination: UnwrapRef + readonly useOnline: UnwrapRef + readonly usePageLeave: UnwrapRef + readonly useParallax: UnwrapRef + readonly useParentElement: UnwrapRef + readonly usePerformanceObserver: UnwrapRef + readonly usePermission: UnwrapRef + readonly usePointer: UnwrapRef + readonly usePointerLock: UnwrapRef + readonly usePointerSwipe: UnwrapRef + readonly usePreferredColorScheme: UnwrapRef + readonly usePreferredContrast: UnwrapRef + readonly usePreferredDark: UnwrapRef + readonly usePreferredLanguages: UnwrapRef + readonly usePreferredReducedMotion: UnwrapRef + readonly usePrevious: UnwrapRef + readonly useRafFn: UnwrapRef + readonly useRefHistory: UnwrapRef + readonly useResizeObserver: UnwrapRef + readonly useScreenOrientation: UnwrapRef + readonly useScreenSafeArea: UnwrapRef + readonly useScriptTag: UnwrapRef + readonly useScroll: UnwrapRef + readonly useScrollLock: UnwrapRef + readonly useSessionStorage: UnwrapRef + readonly useShare: UnwrapRef + readonly useSlots: UnwrapRef + readonly useSorted: UnwrapRef + readonly useSpeechRecognition: UnwrapRef + readonly useSpeechSynthesis: UnwrapRef + readonly useStepper: UnwrapRef + readonly useStorage: UnwrapRef + readonly useStorageAsync: UnwrapRef + readonly useStyleTag: UnwrapRef + readonly useSupported: UnwrapRef + readonly useSwipe: UnwrapRef + readonly useTemplateRefsList: UnwrapRef + readonly useTextDirection: UnwrapRef + readonly useTextSelection: UnwrapRef + readonly useTextareaAutosize: UnwrapRef + readonly useThrottle: UnwrapRef + readonly useThrottleFn: UnwrapRef + readonly useThrottledRefHistory: UnwrapRef + readonly useTimeAgo: UnwrapRef + readonly useTimeout: UnwrapRef + readonly useTimeoutFn: UnwrapRef + readonly useTimeoutPoll: UnwrapRef + readonly useTimestamp: UnwrapRef + readonly useTitle: UnwrapRef + readonly useToNumber: UnwrapRef + readonly useToString: UnwrapRef + readonly useToggle: UnwrapRef + readonly useTransition: UnwrapRef + readonly useUrlSearchParams: UnwrapRef + readonly useUserMedia: UnwrapRef + readonly useVModel: UnwrapRef + readonly useVModels: UnwrapRef + readonly useVibrate: UnwrapRef + readonly useVirtualList: UnwrapRef + readonly useWakeLock: UnwrapRef + readonly useWebNotification: UnwrapRef + readonly useWebSocket: UnwrapRef + readonly useWebWorker: UnwrapRef + readonly useWebWorkerFn: UnwrapRef + readonly useWindowFocus: UnwrapRef + readonly useWindowScroll: UnwrapRef + readonly useWindowSize: UnwrapRef + readonly watch: UnwrapRef + readonly watchArray: UnwrapRef + readonly watchAtMost: UnwrapRef + readonly watchDebounced: UnwrapRef + readonly watchDeep: UnwrapRef + readonly watchEffect: UnwrapRef + readonly watchIgnorable: UnwrapRef + readonly watchImmediate: UnwrapRef + readonly watchOnce: UnwrapRef + readonly watchPausable: UnwrapRef + readonly watchPostEffect: UnwrapRef + readonly watchSyncEffect: UnwrapRef + readonly watchThrottled: UnwrapRef + readonly watchTriggerable: UnwrapRef + readonly watchWithFilter: UnwrapRef + readonly whenever: UnwrapRef + } +} diff --git a/src/types/components.d.ts b/src/types/components.d.ts new file mode 100644 index 000000000..9d835d3ab --- /dev/null +++ b/src/types/components.d.ts @@ -0,0 +1,98 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +import '@vue/runtime-core' + +export {} + +declare module '@vue/runtime-core' { + export interface GlobalComponents { + Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default'] + ElAlert: typeof import('element-plus/es')['ElAlert'] + ElAside: typeof import('element-plus/es')['ElAside'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] + ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCascader: typeof import('element-plus/es')['ElCascader'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElContainer: typeof import('element-plus/es')['ElContainer'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + 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'] + ElImage: typeof import('element-plus/es')['ElImage'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElMain: typeof import('element-plus/es')['ElMain'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + 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'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElText: typeof import('element-plus/es')['ElText'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + GithubCorner: typeof import('./../components/GithubCorner/index.vue')['default'] + Hamburger: typeof import('./../components/Hamburger/index.vue')['default'] + IconSelect: typeof import('./../components/IconSelect/index.vue')['default'] + IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default'] + IEpCaretTop: typeof import('~icons/ep/caret-top')['default'] + IEpClose: typeof import('~icons/ep/close')['default'] + IEpCollection: typeof import('~icons/ep/collection')['default'] + IEpDelete: typeof import('~icons/ep/delete')['default'] + IEpDownload: typeof import('~icons/ep/download')['default'] + IEpEdit: typeof import('~icons/ep/edit')['default'] + IEpPicture: typeof import('~icons/ep/picture')['default'] + IEpPlus: typeof import('~icons/ep/plus')['default'] + IEpPosition: typeof import('~icons/ep/position')['default'] + IEpRefresh: typeof import('~icons/ep/refresh')['default'] + IEpRefreshLeft: typeof import('~icons/ep/refresh-left')['default'] + IEpSearch: typeof import('~icons/ep/search')['default'] + IEpSetting: typeof import('~icons/ep/setting')['default'] + IEpTop: typeof import('~icons/ep/top')['default'] + IEpUploadFilled: typeof import('~icons/ep/upload-filled')['default'] + IEpUser: typeof import('~icons/ep/user')['default'] + IEpView: typeof import('~icons/ep/view')['default'] + LangSelect: typeof import('./../components/LangSelect/index.vue')['default'] + MultiUpload: typeof import('./../components/Upload/MultiUpload.vue')['default'] + Pagination: typeof import('./../components/Pagination/index.vue')['default'] + RightPanel: typeof import('./../components/RightPanel/index.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + SingleUpload: typeof import('./../components/Upload/SingleUpload.vue')['default'] + SizeSelect: typeof import('./../components/SizeSelect/index.vue')['default'] + SvgIcon: typeof import('./../components/SvgIcon/index.vue')['default'] + WangEditor: typeof import('./../components/WangEditor/index.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/src/types/env.d.ts b/src/types/env.d.ts new file mode 100644 index 000000000..bcddf3e88 --- /dev/null +++ b/src/types/env.d.ts @@ -0,0 +1,19 @@ +/// + +declare module '*.vue' { + import { DefineComponent } from 'vue'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; +} + +// 环境变量 TypeScript的智能提示 +interface ImportMetaEnv { + VITE_APP_TITLE: string; + VITE_APP_PORT: string; + VITE_APP_BASE_API: string; +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} diff --git a/src/types/global.d.ts b/src/types/global.d.ts new file mode 100644 index 000000000..8ed06e588 --- /dev/null +++ b/src/types/global.d.ts @@ -0,0 +1,55 @@ +declare global { + /** + * 分页查询参数 + */ + interface PageQuery { + page: number; + pagesize: number; + } + + /** + * 分页响应对象 + */ + interface PageResult { + /** + * 数据列表 + */ + list: T; + /** + * 数据总数 + */ + total: number; + } + + /** + * 弹窗属性 + */ + interface DialogOption { + /** + * 弹窗标题 + */ + title?: string; + /** + * 是否显示 + */ + visible: boolean; + } + /** + * 组件数据源 + */ + interface OptionType { + /** + * 值 + */ + value: number; + /** + * 文本 + */ + label: string; + /** + * 子列表 + */ + children?: OptionType[]; + } +} +export {}; diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts new file mode 100644 index 000000000..c081ede63 --- /dev/null +++ b/src/utils/i18n.ts @@ -0,0 +1,12 @@ +// translate router.meta.title, be used in breadcrumb sidebar tagsview +import i18n from '@/lang/index'; + +export function translateRouteTitleI18n(title: any) { + // 判断是否存在国际化配置,如果没有原生返回 + const hasKey = i18n.global.te('route.' + title); + if (hasKey) { + const translatedTitle = i18n.global.t('route.' + title); + return translatedTitle; + } + return title; +} diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 000000000..0d6266087 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,39 @@ +/** + * Check if an element has a class + * @param {HTMLElement} ele + * @param {string} cls + * @returns {boolean} + */ +export function hasClass(ele: HTMLElement, cls: string) { + return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); +} + +/** + * Add class to element + * @param {HTMLElement} ele + * @param {string} cls + */ +export function addClass(ele: HTMLElement, cls: string) { + if (!hasClass(ele, cls)) ele.className += " " + cls; +} + +/** + * Remove class from element + * @param {HTMLElement} ele + * @param {string} cls + */ +export function removeClass(ele: HTMLElement, cls: string) { + if (hasClass(ele, cls)) { + const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); + ele.className = ele.className.replace(reg, " "); + } +} + +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path: string) { + const isExternal = /^(https?:|http?:|mailto:|tel:)/.test(path); + return isExternal; +} diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 000000000..365b07a87 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,86 @@ +import axios, { InternalAxiosRequestConfig, AxiosResponse } from 'axios'; +import { useUserStoreHook } from '@/store/modules/user'; + +// 创建 axios 实例 +const service = axios.create({ + baseURL: import.meta.env.VITE_APP_BASE_API, + timeout: 50000, + headers: { 'Content-Type': 'application/json;charset=utf-8' } +}); + +// 请求拦截器 +service.interceptors.request.use( + (config: InternalAxiosRequestConfig) => { + const userStore = useUserStoreHook(); + config.headers["Content-Type"] = "application/json;charset=utf-8"; + if (userStore.tokenIng) { + config.headers.Authorization = userStore.tokenIng; + } + if (userStore.userKey) { + config.headers["user-key"] = userStore.userKey; + } + if (userStore.userToken) { + config.headers["user-token"] = userStore.userToken; + } + return config; + }, + (error: any) => { + return Promise.reject(error); + } +); + +// 响应拦截器 +service.interceptors.response.use( + (response: AxiosResponse) => { + const { code, msg } = response.data; + if (code === 0) { + return response.data; + } + if (code === 7 || code === 300 || code === 301 || code === 302){ + ElMessageBox.confirm("身份令牌已失效!请重新登录!", "提示", { + confirmButtonText: "确定", + type: "warning", + }).then(() => { + localStorage.clear(); + window.location.href = "/"; + }); + return response.data; + } + // 响应数据为二进制流处理(Excel导出) + if (response.data instanceof ArrayBuffer) { + return response; + } + + ElMessage.error(msg || '系统出错'); + return Promise.reject(new Error(msg || 'Error')); + }, + (error: any) => { + if (error.response.data) { + const { code, msg } = error.response.data; + // token 过期,重新登录 + if (code === 'A0230') { + ElMessageBox.confirm('当前页面已失效,请重新登录', '提示', { + confirmButtonText: '确定', + type: 'warning' + }).then(() => { + localStorage.clear(); + window.location.href = '/'; + }); + }else if(code === 7 || code === 300 || code === 301 || code === 302){ + ElMessageBox.confirm("身份令牌已失效!请重新登录!", "提示", { + confirmButtonText: "确定", + type: "warning", + }).then(() => { + localStorage.clear(); + window.location.href = "/"; + }); + } else { + ElMessage.error(msg || '系统出错'); + } + } + return Promise.reject(error.message); + } +); + +// 导出 axios 实例 +export default service; diff --git a/src/utils/scroll-to.ts b/src/utils/scroll-to.ts new file mode 100644 index 000000000..591e3ec0f --- /dev/null +++ b/src/utils/scroll-to.ts @@ -0,0 +1,69 @@ +const easeInOutQuad = (t: number, b: number, c: number, d: number) => { + t /= d / 2; + if (t < 1) { + return (c / 2) * t * t + b; + } + t--; + return (-c / 2) * (t * (t - 2) - 1) + b; +}; + +// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts +const requestAnimFrame = (function () { + return ( + window.requestAnimationFrame || + (window as any).webkitRequestAnimationFrame || + (window as any).mozRequestAnimationFrame || + function (callback) { + window.setTimeout(callback, 1000 / 60); + } + ); +})(); + +/** + * Because it's so fucking difficult to detect the scrolling element, just move them all + * @param {number} amount + */ +const move = (amount: number) => { + document.documentElement.scrollTop = amount; + (document.body.parentNode as HTMLElement).scrollTop = amount; + document.body.scrollTop = amount; +}; + +const position = () => { + return ( + document.documentElement.scrollTop || + (document.body.parentNode as HTMLElement).scrollTop || + document.body.scrollTop + ); +}; + +/** + * @param {number} to + * @param {number} duration + * @param {Function} callback + */ +export const scrollTo = (to: number, duration: number, callback?: any) => { + const start = position(); + const change = to - start; + const increment = 20; + let currentTime = 0; + duration = typeof duration === 'undefined' ? 500 : duration; + const animateScroll = function () { + // increment the time + currentTime += increment; + // find the value with the quadratic in-out easing function + const val = easeInOutQuad(currentTime, start, change, duration); + // move the document.body + move(val); + // do the animation unless its over + if (currentTime < duration) { + requestAnimFrame(animateScroll); + } else { + if (callback && typeof callback === 'function') { + // the animation is done so lets callback + callback(); + } + } + }; + animateScroll(); +}; diff --git a/src/views/appstore/appmarket/aqsc.vue b/src/views/appstore/appmarket/aqsc.vue new file mode 100644 index 000000000..c9b583ce1 --- /dev/null +++ b/src/views/appstore/appmarket/aqsc.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/views/appstore/appmarket/ccwl.vue b/src/views/appstore/appmarket/ccwl.vue new file mode 100644 index 000000000..9b7291f7e --- /dev/null +++ b/src/views/appstore/appmarket/ccwl.vue @@ -0,0 +1,91 @@ + + + + diff --git a/src/views/appstore/appmarket/content.vue b/src/views/appstore/appmarket/content.vue new file mode 100644 index 000000000..3f0f45d8c --- /dev/null +++ b/src/views/appstore/appmarket/content.vue @@ -0,0 +1,59 @@ + + + + diff --git a/src/views/appstore/appmarket/dataobject.ts b/src/views/appstore/appmarket/dataobject.ts new file mode 100644 index 000000000..49109f8d0 --- /dev/null +++ b/src/views/appstore/appmarket/dataobject.ts @@ -0,0 +1,217 @@ +const appContList =[ + { + id:1, + content:"安全生产信息化系统以实现企业安全生产全要素全过程数字化管理为目标,围绕企业风险分级管控和隐患排查治理、化工过程安全管理、安全生产标准化等内容,建设集重大危险源监控信息、可燃有毒气体监测预警信息、企业安全风险分区信息、人员在岗在位信息和企业生产全流程管理信息于一体的安全生产信息化管理平台,切实落实企业安全生产主体责任,全面提升企业安全生产管理水平。", + imgs:[ + "/src/assets/appimages/1.png", + "/src/assets/appimages/2.png", + "/src/assets/appimages/3.png", + "/src/assets/appimages/4.png" + ] + }, + { + id:2, + content:"10KV变配电室综合监控系统共有两个部分,主机单元和人机界面。主机单元主要由辅助电源、主板、模拟量输入模块等组成,主机单元和人机界面之间利用串行电缆进行连接,利用RS485T进行通讯,实现多功能保护,采用开关进行远程控制,利用遥测、遥信以及遥控功能,主机单元可以显示出变配电系统的系统图,在图上显示各种故障状态和配电回路的电流、电压、功率、电度、频率以及其他因素等。在配电系统中改变开关回路,主机单元可以立即显示,并发出报警信号,此时主机单元星保护状态,并且通过监控系统,对回路动作进行记录。", + imgs:[ + "/src/assets/appimages/5.png", + ] + }, + { + id:3, + content:"SIS系统(SafetyInstrumentedSystem安全仪表系统)属于企业生产过程自动化范畴,用于保障安全生产的一套系统,安全等级高于DCS的自动化控制系统,当自动化生产系统出现异常时,SIS会进行干预,降低事故发生的可能性。SIS系统以分散控制系统为基础,采用先进、适用、有效的专业计算方法,提高了机组运行的可靠性。", + imgs:[ + "/src/assets/appimages/6.png", + ] + }, + { + id:4, + content:"GDS系统是英文GasDetectionSystem的缩写,全称是可燃气体和有毒气体检测报警系统。气体报警系统GDS系统由多项设备所构成,包括:气体探测器、GDS系统控制柜、交换机、操作站等。", + imgs:[ + "/src/assets/appimages/7.png", + ] + }, + { + id:5, + content:"汽轮机安全监视系统(TSI)是一种集保护和检测功能于一身的永久监视系统,是大型旋转机械必不可少的保护系统。TSI可以对机组在起动、运行过程中的一些重要参数能可靠地进行监视和储存,它不仅能指示机组运行状态、记录输出信号、实现数值越限报警、出现危险信号时使机组自动停机,同时还能为故障诊断提供数据,因而广泛地应用于3MW~600MW的各种汽轮发电机组上。", + imgs:[ + "/src/assets/appimages/8.png", + ] + }, + { + id:6, + content:"系统由现场控制部分和远程管理部分组成,现场控制部分使用SNKP型定量装车控制仪对现场仪表进行采集和控制,远程管理部分使用工业计算机进行集中管理,两部分通过RS485总线连接,构成集散式定量装车系统。操作人员即可在现场进行参数设定、操作和监视,又可集中在调度室进行远程监控和管理,实现管控一体化。", + imgs:[ + "/src/assets/appimages/9.png", + ] + }, + { + id:7, + content:"二道门门禁系统是在化工企业厂区范围内用于隔离生产区域和办公、生活等非生产区域的软硬件综合性系统。通过人工或自动控制方式,采用升降杆、伸缩门、门禁系统等形式,对生产区各岗位在线工作人数动态显示,并对本企业职工、外来作业人员及其他人员分类统计。精确显示生产区域内在线人员动态,第一时间掌握企业应急状态时涉险人员情况,提高应急救援效率,杜绝未经培训、未经批准人员进入生产区域,全面提升企业风险管控能力和精细化安全管理水平。", + imgs:[ + "/src/assets/appimages/10.png", + ] + }, + { + id:8, + content:"视频监控系统是一套“集成化”、“智能化”的平台,通过接入视频监控、一卡通、停车场、报警检测等系统的设备,获取边缘节点数据,实现安防信息化集成与联动。以电子地图为载体,融合各系统能力实现丰富的智能应用。该平台适用于全行业通用综合安防业务,对各系统资源进行了整合和集中管理,实现统一部署、统一配置、统一管理和统一调度。", + imgs:[ + "/src/assets/appimages/11.png", + ] + }, + { + id:9, + content:"DLT精益数字孪生平台是一种基于分布式账本技术(DLT)的数字孪生平台,旨在通过区块链技术实现生产过程的透明化和可追溯性,从而提高生产效率和质量。该平台可以将生产过程中的数据和交易记录存储在区块链上,确保数据的安全性和不可篡改性。同时,该平台还可以通过智能合约实现自动化的生产流程控制和质量管理,提高生产效率和减少人为错误。此外,DLT精益数字孪生平台还可以实现供应链的透明化和可追溯性,帮助企业更好地管理供应链风险和优化供应链效率。", + imgs:[ + "/src/assets/appimages/12.png", + "/src/assets/appimages/13.png", + ] + }, + { + id:10, + content:"建立集中扁平化的能源动态监控、调度和管控一体化系统,对企业能源供需系统的生产、输配、转换、消耗、平衡等流程实施一级调度管理,对能源管理系统的供需计划、实绩追踪、能耗评价和流程优化等实施一级业务管理,改进和优化能源平衡,实施系统性能源管理。", + imgs:[ + "/src/assets/appimages/14.png", + ] + }, + { + id:11, + content:"智能用电监控系统是将传统的电气火灾监控装置与物联网技术相结合,替代旧有的电气火灾监控产品。该系统由智慧安全用电监控装置和监控服务平台两部分组成,采用了最新的物联网无线通讯技术,做到设备与平台的无缝衔接。不再受到通讯线路布线的牵绊,简化安装流程,可快速实现既有线路的用电监控改造,做到用电线路的电气火灾预警、防患于“未燃”。", + imgs:[ + "/src/assets/appimages/15.png", + ] + }, + { + id:12, + content:"CEMS是英文ContinuousEmissionMonitoringSystem的缩写,是指对大气污染源排放的气态污染物和颗粒物进行浓度和排放总量连续监测并将信息实时传输到主管部门的装置,被称为“烟气自动监控系统”,亦称“烟气排放连续监测系统”或“烟气在线监测系统”。", + imgs:[ + "/src/assets/appimages/16.png", + ] + }, + { + id:13, + content:"包括平台基础功能建设、有组织及无组织排放源清单展示、有组织及无组织排放生产设备及环保设备数据监测数据(包括CEMS、TSP监测、空气质量监测微站、非甲烷总烃等)、物流门禁数据、洗车机数据、视频监控数据的接入与分析展示、车辆管理、日常管理等。", + imgs:[ + "/src/assets/appimages/17.png", + "/src/assets/appimages/18.png", + ] + }, + { + id:14, + content:"QMS质量管理系统包括制定质量方针、目标以及质量策划、质量控制、质量保证和质量改进等活动。它根据企业特点选用若干体系要素加以组合,加强从设计研制、生产、检验、销售、使用全过程的质量管理活动,并予制度化、标准化,成为企业内部质量工作的要求和活动程序。", + imgs:[ + "/src/assets/appimages/19.png" + ] + }, + { + id:15, + content:"金蝶EAS系统是全球第一款融合TOGAF标准SOA架构的企业管理软件,支持云计算、SOA和动态流程管理的整合技术平台,全面覆盖企业战略管理、风险管理、集团财务管理、战略人力资源管理、跨组织供应链、多工厂制造和外部产业链等管理领域,突破流程制造、项目制造、供应商协作、客户协作等复杂制造和产业链协同应用,实现业务的全面管理,支持管理创新与发展,帮助企业敏捷应对日益复杂的商业环境变化,提升整体运作效率,实现效益最大化。", + imgs:[ + "/src/assets/appimages/20.png" + ] + }, + { + id:16, + content:"智慧配煤系统基于恒信高科在一定时间段内积累的生产数据包括企业的运营数据、生产的焦炭数据以及所使用的原料煤数据,通过华为云ModelArts人工智能开发平台选择融合了化工行业知识图谱的算法进行建模,并使用已经预处理好的数据进行模型训练和精准度验证,最终实现高精度焦炭质量预测和优化配煤配比的功能目标。", + imgs:[ + "/src/assets/appimages/21.png" + ] + }, + { + id:17, + content:"DCS英文全称DISTRIBUTEDCONTROLSYSTEM,中文全称为集散型控制系统。DCS可以解释为在模拟量回路控制较多的行业中广泛使用的,尽量将控制所造成的危险性分散,而将管理和显示功能集中的一种自动化高技术产品。目前公司主要采用和利时、中控、科远DCS系统,广泛应用于机焦、化产、甲醇各生产装置远程控制操作。DCS系统是随着现代大型工业生产自动化的不断兴起和过程控制要求的日益复杂应运而生的综合控制系统,它是计算机技术、系统控制技术、网络通讯技术和多媒体技术相结合的产物,可提供窗口友好的人机界面和强大的通讯功能是完成过程控制、过程管理的现代化设备。", + imgs:[ + "/src/assets/appimages/22.png" + ] + }, + { + id:18, + content:"(ProgrammableLogicController,PLC),一种具有微处理器的用于自动化控制的数字运算控制器,可以将控制指令随时载入内存进行储存与执行它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。公司目前PLC系统包括甲醇PLC装车系统,动力中水、除盐水、深度水PLC系统,机焦四车连锁、干熄焦、地面站PLC系统以及备煤筛焦、自动配煤PLC系统等。可编程逻辑控制器是种专门为在工业环境下应用而设计的数字运算操作电子系统。", + imgs:[ + "/src/assets/appimages/23.png" + ] + }, + { + id:19, + content:"DEH汽轮机数字电液控制系统是电站汽轮发电机组重要的组成部分,是汽轮机起动、停止、正常运行和事故工况下的调节控制器。DEH控制系统与EH系统组成的电液控制系统,通过控制汽轮机主汽门和调门的开度,实现对汽轮发电机组的转速、负荷、压力等的控制。", + imgs:[ + "/src/assets/appimages/24.png" + ] + }, + { + id:20, + content:"CCS,是英文CoordinationControlSystem的缩写,是通过控制回路协调汽轮机和锅炉的工作状态。同时给锅炉自动控制系统和汽轮机自动控制系统发出指令,以达到快速响应负荷变化的目的,尽最大可能发挥机组的调频、调峰能力,稳定运行参数。", + imgs:[ + "/src/assets/appimages/25.png" + ] + }, + { + id:21, + content:"ITCC(IntegratedTurbineCompressorControlTechnique)能实现压缩机性能控制或入口压力控制和喘振时的解耦控制。罐体液位控制回路和其它过程控制回路也是ITCC的组成部分。它们同时具备过程和反喘振控制间的解耦功能。ITCC为压缩机/汽轮机附属系统提供持久监测和保护功能,并且输出报警或停机和关机。ITCC包含几个程序,都用来辅助起动压缩机、汽轮机。其中一个程序使汽轮机自动升速到暖机速度,到达暖机速度后,将根据压缩机工况使汽轮机速度增长到额定转速。另一个程序可使汽轮机组冲过临界转速区。这种起动过程可以为操作者做其它重要工作嬴得更多的时间。", + imgs:[ + "/src/assets/appimages/26.png" + ] + }, + { + id:22, + content:"FTV炉膛火焰监控系统是一种将镜管从炉壁插入炉膛内部,监视全炉膛燃烧状态的彩色工业电视监视系统,也称内窥式炉膛火焰电视监视系统。该系统集光学、机戒、电子于一体,炉内图像通过镜头镜管内的光学系统呈像到摄像机靶面上,摄像机将光信号转换成视频信号,经视频电缆传送到集控室的监视器上。操作者可在控制室内监视器上看到炉膛内燃料燃烧的真实图象。在锅炉点火,小负荷运行,输燃料系统等发生故障时,能及时显示,并采取措施。它是炉膛安全、经济运行不可缺少的装置。", + imgs:[ + "/src/assets/appimages/27.png" + ] + }, + { + id:23, + content:"智慧餐厅是一个基于人脸识别技术的食堂消费软件系统,“智慧餐厅”的强大的后台管理系统便于经营者查询、分析各种数据资料。", + imgs:[ + "/src/assets/appimages/28.png" + ] + }, + { + id:24, + content:"自主开发的人力资源管理系统,由一个集成的软件应用程序组成,包括数据库、用户界面、报告和分析工具等。HR系统主要用于记录、跟踪和管理企业或组织的人力资源信息。这些信息包括员工的基本信息、薪资、绩效评估、培训记录、假期和出勤情况等。HR系统可以帮助企业或组织更好地管理和分析这些信息,以提高人力资源的利用效率和管理效果。功能包括招聘管理、人事管理、薪酬管理、绩效管理、培训管理、福利管理等。通过这些功能,企业或组织可以更好地掌握员工的情况,并根据实际情况做出相应的决策,提高人力资源的质量和效益。", + imgs:[ + "/src/assets/appimages/29.png" + ] + }, + { + id:25, + content:"主要由电子汽车衡、计算机、打印机、视频监控、无线射频读卡系统、红绿灯、道闸及称重管理软件等组成。该系统也可在用户现使用的电子汽车衡的基础上,加装硬件和软件实现其功能。系统采用标准的WINDOWS窗口界面,中文提示,使得用户操作简单直观,查询和统计报表方便,并真正做到了对计量工作随到随结,使称重数据准确、可靠,提高了工作效率和经济效益。在无人值守状态下,不需要人工干预就可以完成称重和磅单的自动打印,有效地防止了作弊现象的发生,是计量现代化的有利助手。", + imgs:[ + "/src/assets/appimages/30.png" + ] + }, + { + id:26, + content:"采用深信服全网行为管理支持全网终端、应用、数据和流量的可视可控,可智能感知终端违规接入、敏感数据泄密、上网违规行为等内部风险,帮助用户实现实现上网管控、终端准入管控、数据泄密管控。", + imgs:[ + "/src/assets/appimages/31.png" + ] + }, + { + id:27, + content:"深信服终端安全管理系统,基于AI智能分析引擎+行为检测机制为核心构建信创终端主动防御能力。通过灵活多样的处置方式、微隔离等自研技术达到快速响应的效果,和主流CPU及操作系统、中间件、数据库、应用软件兼容,促进自身信创生态构建,最终为国产系统终端提供高效实用的主动防御方案。通过产品赋予的威胁高效防护、精确检测、快速查杀能力,为国产系统终端的稳定运行提供持续安全保障。", + imgs:[ + "/src/assets/appimages/32.png" + ] + }, + { + id:28, + content:"深信服独家支持办公网/服务器场景安全策略配置模板,多种策略调优机制,快速定位问题,内置轻量级安全运营大屏,可基于热点事件,勒索,账号安全等问题一键生成策略并处置。", + imgs:[ + "/src/assets/appimages/33.png" + ] + }, + { + id:29, + content:"Zabbix是一个企业级的开源分布式监控解决方案。Zabbix是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix基于存储的数据提供出色的报告和数据可视化功能。", + imgs:[ + "/src/assets/appimages/34.png" + ] + } + +] + +export default appContList +export interface contType{ + content?:string; + imgs?:string[]; +} diff --git a/src/views/appstore/appmarket/gyl.vue b/src/views/appstore/appmarket/gyl.vue new file mode 100644 index 000000000..91d769d30 --- /dev/null +++ b/src/views/appstore/appmarket/gyl.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/appstore/appmarket/index.vue b/src/views/appstore/appmarket/index.vue new file mode 100644 index 000000000..b1865db48 --- /dev/null +++ b/src/views/appstore/appmarket/index.vue @@ -0,0 +1,191 @@ + + + + diff --git a/src/views/appstore/appmarket/jnjh.vue b/src/views/appstore/appmarket/jnjh.vue new file mode 100644 index 000000000..03ac396a3 --- /dev/null +++ b/src/views/appstore/appmarket/jnjh.vue @@ -0,0 +1,120 @@ + + + + diff --git a/src/views/appstore/appmarket/sczz.vue b/src/views/appstore/appmarket/sczz.vue new file mode 100644 index 000000000..91d87e504 --- /dev/null +++ b/src/views/appstore/appmarket/sczz.vue @@ -0,0 +1,135 @@ + + + + diff --git a/src/views/appstore/appmarket/yfsj.vue b/src/views/appstore/appmarket/yfsj.vue new file mode 100644 index 000000000..ab1cd2361 --- /dev/null +++ b/src/views/appstore/appmarket/yfsj.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/appstore/appmarket/ywfw.vue b/src/views/appstore/appmarket/ywfw.vue new file mode 100644 index 000000000..84e5d1ff1 --- /dev/null +++ b/src/views/appstore/appmarket/ywfw.vue @@ -0,0 +1,105 @@ + + + + diff --git a/src/views/appstore/appmarket/yygl.vue b/src/views/appstore/appmarket/yygl.vue new file mode 100644 index 000000000..dc270ba04 --- /dev/null +++ b/src/views/appstore/appmarket/yygl.vue @@ -0,0 +1,121 @@ + + + + diff --git a/src/views/appstore/appmarket/zlgk.vue b/src/views/appstore/appmarket/zlgk.vue new file mode 100644 index 000000000..ba18861c2 --- /dev/null +++ b/src/views/appstore/appmarket/zlgk.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/appstore/index.vue b/src/views/appstore/index.vue new file mode 100644 index 000000000..a0127b6eb --- /dev/null +++ b/src/views/appstore/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/dashboard/components/BarChart.vue b/src/views/dashboard/components/BarChart.vue new file mode 100644 index 000000000..225b71300 --- /dev/null +++ b/src/views/dashboard/components/BarChart.vue @@ -0,0 +1,146 @@ + + + + diff --git a/src/views/dashboard/components/FunnelChart.vue b/src/views/dashboard/components/FunnelChart.vue new file mode 100644 index 000000000..3903d3a7c --- /dev/null +++ b/src/views/dashboard/components/FunnelChart.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/dashboard/components/PieChart.vue b/src/views/dashboard/components/PieChart.vue new file mode 100644 index 000000000..0f71ba502 --- /dev/null +++ b/src/views/dashboard/components/PieChart.vue @@ -0,0 +1,79 @@ + + + + diff --git a/src/views/dashboard/components/RadarChart.vue b/src/views/dashboard/components/RadarChart.vue new file mode 100644 index 000000000..f9350369f --- /dev/null +++ b/src/views/dashboard/components/RadarChart.vue @@ -0,0 +1,100 @@ + + + + diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue new file mode 100644 index 000000000..e8e25e700 --- /dev/null +++ b/src/views/dashboard/index.vue @@ -0,0 +1,250 @@ + + + + + + + diff --git a/src/views/demo/IconSelector.vue b/src/views/demo/IconSelector.vue new file mode 100644 index 000000000..864985003 --- /dev/null +++ b/src/views/demo/IconSelector.vue @@ -0,0 +1,10 @@ + + + + diff --git a/src/views/demo/apidoc.vue b/src/views/demo/apidoc.vue new file mode 100644 index 000000000..acd7fd76e --- /dev/null +++ b/src/views/demo/apidoc.vue @@ -0,0 +1,19 @@ + + + + diff --git a/src/views/demo/uploader.vue b/src/views/demo/uploader.vue new file mode 100644 index 000000000..6a22dffda --- /dev/null +++ b/src/views/demo/uploader.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/views/demo/wangEditor.vue b/src/views/demo/wangEditor.vue new file mode 100644 index 000000000..8f4b5e89f --- /dev/null +++ b/src/views/demo/wangEditor.vue @@ -0,0 +1,11 @@ + + + + diff --git a/src/views/error-page/401.vue b/src/views/error-page/401.vue new file mode 100644 index 000000000..ae91a3e20 --- /dev/null +++ b/src/views/error-page/401.vue @@ -0,0 +1,114 @@ + + + + + + + + diff --git a/src/views/error-page/404.vue b/src/views/error-page/404.vue new file mode 100644 index 000000000..9e26091f3 --- /dev/null +++ b/src/views/error-page/404.vue @@ -0,0 +1,280 @@ + + + + + + + + diff --git a/src/views/hr/archives/archivescont.vue b/src/views/hr/archives/archivescont.vue new file mode 100644 index 000000000..fb8934d65 --- /dev/null +++ b/src/views/hr/archives/archivescont.vue @@ -0,0 +1,476 @@ + + + + diff --git a/src/views/hr/archives/archiveslist.vue b/src/views/hr/archives/archiveslist.vue new file mode 100644 index 000000000..8e7b5e623 --- /dev/null +++ b/src/views/hr/archives/archiveslist.vue @@ -0,0 +1,173 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/content.vue b/src/views/hr/archives/basicinformation/content.vue new file mode 100644 index 000000000..6d5354f17 --- /dev/null +++ b/src/views/hr/archives/basicinformation/content.vue @@ -0,0 +1,297 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/editcontent.vue b/src/views/hr/archives/basicinformation/editcontent.vue new file mode 100644 index 000000000..4b5dd1e03 --- /dev/null +++ b/src/views/hr/archives/basicinformation/editcontent.vue @@ -0,0 +1,605 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/editorg.vue b/src/views/hr/archives/basicinformation/editorg.vue new file mode 100644 index 000000000..54da16249 --- /dev/null +++ b/src/views/hr/archives/basicinformation/editorg.vue @@ -0,0 +1,317 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/editpwd.vue b/src/views/hr/archives/basicinformation/editpwd.vue new file mode 100644 index 000000000..50fa1150b --- /dev/null +++ b/src/views/hr/archives/basicinformation/editpwd.vue @@ -0,0 +1,104 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/educationalexperience.vue b/src/views/hr/archives/basicinformation/educationalexperience.vue new file mode 100644 index 000000000..e7a0a5de5 --- /dev/null +++ b/src/views/hr/archives/basicinformation/educationalexperience.vue @@ -0,0 +1,159 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/educationalexperienceadd.vue b/src/views/hr/archives/basicinformation/educationalexperienceadd.vue new file mode 100644 index 000000000..65d220caf --- /dev/null +++ b/src/views/hr/archives/basicinformation/educationalexperienceadd.vue @@ -0,0 +1,161 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/educationalexperienceedit.vue b/src/views/hr/archives/basicinformation/educationalexperienceedit.vue new file mode 100644 index 000000000..b339ef5dd --- /dev/null +++ b/src/views/hr/archives/basicinformation/educationalexperienceedit.vue @@ -0,0 +1,182 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/emergencycontact.vue b/src/views/hr/archives/basicinformation/emergencycontact.vue new file mode 100644 index 000000000..6e568efaa --- /dev/null +++ b/src/views/hr/archives/basicinformation/emergencycontact.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/emergencycontactadd.vue b/src/views/hr/archives/basicinformation/emergencycontactadd.vue new file mode 100644 index 000000000..24e4ba431 --- /dev/null +++ b/src/views/hr/archives/basicinformation/emergencycontactadd.vue @@ -0,0 +1,110 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/emergencycontactedit.vue b/src/views/hr/archives/basicinformation/emergencycontactedit.vue new file mode 100644 index 000000000..fb6e8f9fd --- /dev/null +++ b/src/views/hr/archives/basicinformation/emergencycontactedit.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/familymembers.vue b/src/views/hr/archives/basicinformation/familymembers.vue new file mode 100644 index 000000000..97a280466 --- /dev/null +++ b/src/views/hr/archives/basicinformation/familymembers.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/familymembersadd.vue b/src/views/hr/archives/basicinformation/familymembersadd.vue new file mode 100644 index 000000000..454dd1ac4 --- /dev/null +++ b/src/views/hr/archives/basicinformation/familymembersadd.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/familymembersedit.vue b/src/views/hr/archives/basicinformation/familymembersedit.vue new file mode 100644 index 000000000..42b9dd859 --- /dev/null +++ b/src/views/hr/archives/basicinformation/familymembersedit.vue @@ -0,0 +1,146 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/innerwork.vue b/src/views/hr/archives/basicinformation/innerwork.vue new file mode 100644 index 000000000..e1eedc178 --- /dev/null +++ b/src/views/hr/archives/basicinformation/innerwork.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/views/hr/archives/basicinformation/innerworkadd.vue b/src/views/hr/archives/basicinformation/innerworkadd.vue new file mode 100644 index 000000000..4766f006e --- /dev/null +++ b/src/views/hr/archives/basicinformation/innerworkadd.vue @@ -0,0 +1,272 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/innerworkedit.vue b/src/views/hr/archives/basicinformation/innerworkedit.vue new file mode 100644 index 000000000..dc52e6c49 --- /dev/null +++ b/src/views/hr/archives/basicinformation/innerworkedit.vue @@ -0,0 +1,298 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/orgnexus.vue b/src/views/hr/archives/basicinformation/orgnexus.vue new file mode 100644 index 000000000..f3cb77532 --- /dev/null +++ b/src/views/hr/archives/basicinformation/orgnexus.vue @@ -0,0 +1,62 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/outsideWork.vue b/src/views/hr/archives/basicinformation/outsideWork.vue new file mode 100644 index 000000000..f32bc8415 --- /dev/null +++ b/src/views/hr/archives/basicinformation/outsideWork.vue @@ -0,0 +1,163 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/outsideworkadd.vue b/src/views/hr/archives/basicinformation/outsideworkadd.vue new file mode 100644 index 000000000..54374876d --- /dev/null +++ b/src/views/hr/archives/basicinformation/outsideworkadd.vue @@ -0,0 +1,141 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/outsideworkedit.vue b/src/views/hr/archives/basicinformation/outsideworkedit.vue new file mode 100644 index 000000000..828703273 --- /dev/null +++ b/src/views/hr/archives/basicinformation/outsideworkedit.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/workingcouple.vue b/src/views/hr/archives/basicinformation/workingcouple.vue new file mode 100644 index 000000000..e54efcd62 --- /dev/null +++ b/src/views/hr/archives/basicinformation/workingcouple.vue @@ -0,0 +1,133 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/workingcoupleadd.vue b/src/views/hr/archives/basicinformation/workingcoupleadd.vue new file mode 100644 index 000000000..40acb0f5d --- /dev/null +++ b/src/views/hr/archives/basicinformation/workingcoupleadd.vue @@ -0,0 +1,116 @@ + + + + diff --git a/src/views/hr/archives/basicinformation/workingcoupleedit.vue b/src/views/hr/archives/basicinformation/workingcoupleedit.vue new file mode 100644 index 000000000..e35a7326e --- /dev/null +++ b/src/views/hr/archives/basicinformation/workingcoupleedit.vue @@ -0,0 +1,136 @@ + + + + diff --git a/src/views/hr/archives/index.vue b/src/views/hr/archives/index.vue new file mode 100644 index 000000000..96d6005c7 --- /dev/null +++ b/src/views/hr/archives/index.vue @@ -0,0 +1,253 @@ + + + + diff --git a/src/views/hr/archives/index_cf.vue b/src/views/hr/archives/index_cf.vue new file mode 100644 index 000000000..3a7cd478b --- /dev/null +++ b/src/views/hr/archives/index_cf.vue @@ -0,0 +1,108 @@ + + + + diff --git a/src/views/hr/displayboard.vue b/src/views/hr/displayboard.vue new file mode 100644 index 000000000..b5bb99bf9 --- /dev/null +++ b/src/views/hr/displayboard.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/hr/duties/dutiesclass.vue b/src/views/hr/duties/dutiesclass.vue new file mode 100644 index 000000000..fd73551a3 --- /dev/null +++ b/src/views/hr/duties/dutiesclass.vue @@ -0,0 +1,213 @@ + + + + diff --git a/src/views/hr/duties/dutiescont.vue b/src/views/hr/duties/dutiescont.vue new file mode 100644 index 000000000..0075aaa5a --- /dev/null +++ b/src/views/hr/duties/dutiescont.vue @@ -0,0 +1,233 @@ + + + + diff --git a/src/views/hr/duties/dutiesinfo/addduites.vue b/src/views/hr/duties/dutiesinfo/addduites.vue new file mode 100644 index 000000000..ca0a54692 --- /dev/null +++ b/src/views/hr/duties/dutiesinfo/addduites.vue @@ -0,0 +1,128 @@ + + + + diff --git a/src/views/hr/duties/dutiesinfo/editdites.vue b/src/views/hr/duties/dutiesinfo/editdites.vue new file mode 100644 index 000000000..64a397ae3 --- /dev/null +++ b/src/views/hr/duties/dutiesinfo/editdites.vue @@ -0,0 +1,138 @@ + + + + diff --git a/src/views/hr/duties/index.vue b/src/views/hr/duties/index.vue new file mode 100644 index 000000000..ac3bc499d --- /dev/null +++ b/src/views/hr/duties/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/hr/duties/jobclass/addclass.vue b/src/views/hr/duties/jobclass/addclass.vue new file mode 100644 index 000000000..b9cb7d3fc --- /dev/null +++ b/src/views/hr/duties/jobclass/addclass.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/views/hr/duties/jobclass/editclass.vue b/src/views/hr/duties/jobclass/editclass.vue new file mode 100644 index 000000000..2cf6152f1 --- /dev/null +++ b/src/views/hr/duties/jobclass/editclass.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/hr/organization/index.vue b/src/views/hr/organization/index.vue new file mode 100644 index 000000000..f63269eec --- /dev/null +++ b/src/views/hr/organization/index.vue @@ -0,0 +1,259 @@ + + + + diff --git a/src/views/hr/organization/orgclass.vue b/src/views/hr/organization/orgclass.vue new file mode 100644 index 000000000..8eab236fb --- /dev/null +++ b/src/views/hr/organization/orgclass.vue @@ -0,0 +1,219 @@ + + + + diff --git a/src/views/hr/organization/orgcont/addorgcont.vue b/src/views/hr/organization/orgcont/addorgcont.vue new file mode 100644 index 000000000..90523bd63 --- /dev/null +++ b/src/views/hr/organization/orgcont/addorgcont.vue @@ -0,0 +1,191 @@ + + + + diff --git a/src/views/hr/organization/orgcont/editorgcont.vue b/src/views/hr/organization/orgcont/editorgcont.vue new file mode 100644 index 000000000..f053424f2 --- /dev/null +++ b/src/views/hr/organization/orgcont/editorgcont.vue @@ -0,0 +1,187 @@ + + + + diff --git a/src/views/hr/organization/orgtypes/addorgclasscont.vue b/src/views/hr/organization/orgtypes/addorgclasscont.vue new file mode 100644 index 000000000..2a616021a --- /dev/null +++ b/src/views/hr/organization/orgtypes/addorgclasscont.vue @@ -0,0 +1,107 @@ + + + + diff --git a/src/views/hr/organization/orgtypes/editorgclasscont.vue b/src/views/hr/organization/orgtypes/editorgclasscont.vue new file mode 100644 index 000000000..a339f2ff3 --- /dev/null +++ b/src/views/hr/organization/orgtypes/editorgclasscont.vue @@ -0,0 +1,124 @@ + + + + diff --git a/src/views/hr/postjob/addpost.vue b/src/views/hr/postjob/addpost.vue new file mode 100644 index 000000000..a68708ffe --- /dev/null +++ b/src/views/hr/postjob/addpost.vue @@ -0,0 +1,176 @@ + + + + diff --git a/src/views/hr/postjob/editpost.vue b/src/views/hr/postjob/editpost.vue new file mode 100644 index 000000000..ef031839d --- /dev/null +++ b/src/views/hr/postjob/editpost.vue @@ -0,0 +1,207 @@ + + + + diff --git a/src/views/hr/postjob/index.vue b/src/views/hr/postjob/index.vue new file mode 100644 index 000000000..dfc621ed2 --- /dev/null +++ b/src/views/hr/postjob/index.vue @@ -0,0 +1,347 @@ + + + + diff --git a/src/views/kpi/basicinfor/target/index.vue b/src/views/kpi/basicinfor/target/index.vue new file mode 100644 index 000000000..55ce0b372 --- /dev/null +++ b/src/views/kpi/basicinfor/target/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/kpi/statistics/index.vue b/src/views/kpi/statistics/index.vue new file mode 100644 index 000000000..a9b42ea7a --- /dev/null +++ b/src/views/kpi/statistics/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 000000000..78c42a03c --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/src/views/login/index_qr.vue b/src/views/login/index_qr.vue new file mode 100644 index 000000000..dc8cb54fc --- /dev/null +++ b/src/views/login/index_qr.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/login/models/formlogin.vue b/src/views/login/models/formlogin.vue new file mode 100644 index 000000000..34a61bb88 --- /dev/null +++ b/src/views/login/models/formlogin.vue @@ -0,0 +1,278 @@ + + + + diff --git a/src/views/login/models/qrlogin.vue b/src/views/login/models/qrlogin.vue new file mode 100644 index 000000000..af5208c73 --- /dev/null +++ b/src/views/login/models/qrlogin.vue @@ -0,0 +1,47 @@ + + + + + + +DOMException: Failed to execute 'postMessage' on 'Window': Invalid target origin '' in a call to 'postMessage'. diff --git a/src/views/nested/level1/index.vue b/src/views/nested/level1/index.vue new file mode 100644 index 000000000..7daf19c2b --- /dev/null +++ b/src/views/nested/level1/index.vue @@ -0,0 +1,7 @@ + diff --git a/src/views/nested/level1/level2/index.vue b/src/views/nested/level1/level2/index.vue new file mode 100644 index 000000000..abcc3a7e4 --- /dev/null +++ b/src/views/nested/level1/level2/index.vue @@ -0,0 +1,7 @@ + diff --git a/src/views/nested/level1/level2/level3/index1.vue b/src/views/nested/level1/level2/level3/index1.vue new file mode 100644 index 000000000..888f58e96 --- /dev/null +++ b/src/views/nested/level1/level2/level3/index1.vue @@ -0,0 +1,5 @@ + diff --git a/src/views/nested/level1/level2/level3/index2.vue b/src/views/nested/level1/level2/level3/index2.vue new file mode 100644 index 000000000..a99c98e98 --- /dev/null +++ b/src/views/nested/level1/level2/level3/index2.vue @@ -0,0 +1,5 @@ + diff --git a/src/views/powermanage/postpower/index - 副本 (2).vue b/src/views/powermanage/postpower/index - 副本 (2).vue new file mode 100644 index 000000000..94f80f225 --- /dev/null +++ b/src/views/powermanage/postpower/index - 副本 (2).vue @@ -0,0 +1,101 @@ + + + + diff --git a/src/views/powermanage/postpower/index - 副本.vue b/src/views/powermanage/postpower/index - 副本.vue new file mode 100644 index 000000000..09d5618fa --- /dev/null +++ b/src/views/powermanage/postpower/index - 副本.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/powermanage/postpower/index.vue b/src/views/powermanage/postpower/index.vue new file mode 100644 index 000000000..65f566061 --- /dev/null +++ b/src/views/powermanage/postpower/index.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/powermanage/postpower/index1.vue b/src/views/powermanage/postpower/index1.vue new file mode 100644 index 000000000..8e96b51ba --- /dev/null +++ b/src/views/powermanage/postpower/index1.vue @@ -0,0 +1,194 @@ + + + + diff --git a/src/views/powermanage/publicrole/setuprole - 副本.vue b/src/views/powermanage/publicrole/setuprole - 副本.vue new file mode 100644 index 000000000..c7730e6cf --- /dev/null +++ b/src/views/powermanage/publicrole/setuprole - 副本.vue @@ -0,0 +1,229 @@ + + + + diff --git a/src/views/powermanage/publicrole/setuprole.vue b/src/views/powermanage/publicrole/setuprole.vue new file mode 100644 index 000000000..a691fe6d6 --- /dev/null +++ b/src/views/powermanage/publicrole/setuprole.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/addrole.vue b/src/views/powermanage/rolepower/setuprole/addrole.vue new file mode 100644 index 000000000..9f54d00e2 --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/addrole.vue @@ -0,0 +1,113 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/addusertorole - 副本.vue b/src/views/powermanage/rolepower/setuprole/addusertorole - 副本.vue new file mode 100644 index 000000000..f5978a94f --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/addusertorole - 副本.vue @@ -0,0 +1,222 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/addusertorole.vue b/src/views/powermanage/rolepower/setuprole/addusertorole.vue new file mode 100644 index 000000000..3b949528b --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/addusertorole.vue @@ -0,0 +1,293 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/editrole.vue b/src/views/powermanage/rolepower/setuprole/editrole.vue new file mode 100644 index 000000000..6e96e3a13 --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/editrole.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/index.vue b/src/views/powermanage/rolepower/setuprole/index.vue new file mode 100644 index 000000000..894c48de9 --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/index.vue @@ -0,0 +1,218 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/roleuser/currentchecked.vue b/src/views/powermanage/rolepower/setuprole/roleuser/currentchecked.vue new file mode 100644 index 000000000..c2979a68f --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/roleuser/currentchecked.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/roleuser/orgusertree.vue b/src/views/powermanage/rolepower/setuprole/roleuser/orgusertree.vue new file mode 100644 index 000000000..9a4aa1160 --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/roleuser/orgusertree.vue @@ -0,0 +1,130 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/roleuser/searchorguser.vue b/src/views/powermanage/rolepower/setuprole/roleuser/searchorguser.vue new file mode 100644 index 000000000..1d85ab07f --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/roleuser/searchorguser.vue @@ -0,0 +1,66 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/setuprolepower.vue b/src/views/powermanage/rolepower/setuprole/setuprolepower.vue new file mode 100644 index 000000000..7fe0f9675 --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/setuprolepower.vue @@ -0,0 +1,248 @@ + + + + diff --git a/src/views/powermanage/rolepower/setuprole/staffingrole.vue b/src/views/powermanage/rolepower/setuprole/staffingrole.vue new file mode 100644 index 000000000..6b82bbab7 --- /dev/null +++ b/src/views/powermanage/rolepower/setuprole/staffingrole.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/views/public/index.vue b/src/views/public/index.vue new file mode 100644 index 000000000..fa5c2dab9 --- /dev/null +++ b/src/views/public/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/public/indexone.vue b/src/views/public/indexone.vue new file mode 100644 index 000000000..fa5c2dab9 --- /dev/null +++ b/src/views/public/indexone.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/redirect/index.vue b/src/views/redirect/index.vue new file mode 100644 index 000000000..47cad96e6 --- /dev/null +++ b/src/views/redirect/index.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue new file mode 100644 index 000000000..87d6743af --- /dev/null +++ b/src/views/system/dept/index.vue @@ -0,0 +1,324 @@ + + diff --git a/src/views/system/dict/DictData.vue b/src/views/system/dict/DictData.vue new file mode 100644 index 000000000..74ff03b48 --- /dev/null +++ b/src/views/system/dict/DictData.vue @@ -0,0 +1,317 @@ + + + + diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue new file mode 100644 index 000000000..9e78a137a --- /dev/null +++ b/src/views/system/dict/index.vue @@ -0,0 +1,341 @@ + + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 000000000..0c92d926e --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,463 @@ + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue new file mode 100644 index 000000000..a9756413f --- /dev/null +++ b/src/views/system/role/index.vue @@ -0,0 +1,424 @@ + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue new file mode 100644 index 000000000..a5d281138 --- /dev/null +++ b/src/views/system/user/index.vue @@ -0,0 +1,730 @@ + + + diff --git a/src/views/sysworkflow/codepage/index.vue b/src/views/sysworkflow/codepage/index.vue new file mode 100644 index 000000000..ddc46391e --- /dev/null +++ b/src/views/sysworkflow/codepage/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/views/sysworkflow/flow/index.vue b/src/views/sysworkflow/flow/index.vue new file mode 100644 index 000000000..646627ec6 --- /dev/null +++ b/src/views/sysworkflow/flow/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..b2fbbcf90 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "baseUrl": ".", + "allowJs": true, + "paths": { + "@/*": ["src/*"] + }, + "types": ["vite/client", "element-plus/global", "unplugin-icons/types/vue"], + "skipLibCheck": true /* Skip type checking all .d.ts files. */, + "allowSyntheticDefaultImports": true /* 允许默认导入 */, + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */ + }, + "include": ["src/**/*.ts", "src/**/*.vue", "src/types/**/*.d.ts"], + "exclude": ["node_modules", "dist", "**/*.js"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 000000000..9d31e2aed --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000..04259503f --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,156 @@ +import vue from "@vitejs/plugin-vue"; + +import { UserConfig, ConfigEnv, loadEnv, defineConfig } from "vite"; + +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; + +import Icons from "unplugin-icons/vite"; +import IconsResolver from "unplugin-icons/resolver"; + +import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; + +import UnoCSS from "unocss/vite"; + +import path from "path"; +const pathSrc = path.resolve(__dirname, "src"); + +export default defineConfig(({ mode }: ConfigEnv): UserConfig => { + const env = loadEnv(mode, process.cwd()); + return { + resolve: { + alias: { + "@": pathSrc, + }, + }, + css: { + // CSS 预处理器 + preprocessorOptions: { + //define global scss variable + scss: { + javascriptEnabled: true, + additionalData: ` + @use "@/styles/variables.scss" as *; + `, + }, + }, + }, + server: { + host: "0.0.0.0", + port: Number(env.VITE_APP_PORT), + open: true, // 运行是否自动打开浏览器 + proxy: { + // 反向代理解决跨域 + [env.VITE_APP_BASE_API]: { + target: env.VITE_APP_BASE_URL, // 线上接口地址 + // target: "http://vapi.youlai.tech", // 线上接口地址 + // target: 'http://localhost:8989', // 本地接口地址 , 后端工程仓库地址:https://gitee.com/youlaiorg/youlai-boot + changeOrigin: true, + rewrite: (path) => + path.replace(new RegExp("^" + env.VITE_APP_BASE_API), ""), // 替换 /dev-api 为 target 接口地址 + }, + }, + }, + plugins: [ + vue(), + UnoCSS({ + /* options */ + }), + AutoImport({ + // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 + imports: ["vue", "@vueuse/core"], + 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') + }, + resolvers: [ + // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) + ElementPlusResolver(), + // 自动导入图标组件 + IconsResolver({}), + ], + vueTemplate: true, // 是否在 vue 模板中自动导入 + dts: path.resolve(pathSrc, "types", "auto-imports.d.ts"), // 自动导入组件类型声明文件位置,默认根目录; false 关闭自动生成 + }), + + Components({ + resolvers: [ + // 自动注册图标组件 + IconsResolver({ + enabledCollections: ["ep"], //@iconify-json/ep 是 Element Plus 的图标库 + }), + // 自动导入 Element Plus 组件 + ElementPlusResolver(), + ], + dts: path.resolve(pathSrc, "types", "components.d.ts"), // 自动导入组件类型声明文件位置,默认根目录; false 关闭自动生成 + }), + + Icons({ + // 自动安装图标库 + autoInstall: true, + }), + + createSvgIconsPlugin({ + // 指定需要缓存的图标文件夹 + iconDirs: [path.resolve(pathSrc, "assets/icons")], + // 指定symbolId格式 + symbolId: "icon-[dir]-[name]", + }), + ], + + optimizeDeps: { + include: [ + "vue", + "vue-router", + "pinia", + "axios", + "element-plus/es/components/form/style/css", + "element-plus/es/components/form-item/style/css", + "element-plus/es/components/button/style/css", + "element-plus/es/components/input/style/css", + "element-plus/es/components/input-number/style/css", + "element-plus/es/components/switch/style/css", + "element-plus/es/components/upload/style/css", + "element-plus/es/components/menu/style/css", + "element-plus/es/components/col/style/css", + "element-plus/es/components/icon/style/css", + "element-plus/es/components/row/style/css", + "element-plus/es/components/tag/style/css", + "element-plus/es/components/dialog/style/css", + "element-plus/es/components/loading/style/css", + "element-plus/es/components/radio/style/css", + "element-plus/es/components/radio-group/style/css", + "element-plus/es/components/popover/style/css", + "element-plus/es/components/scrollbar/style/css", + "element-plus/es/components/tooltip/style/css", + "element-plus/es/components/dropdown/style/css", + "element-plus/es/components/dropdown-menu/style/css", + "element-plus/es/components/dropdown-item/style/css", + "element-plus/es/components/sub-menu/style/css", + "element-plus/es/components/menu-item/style/css", + "element-plus/es/components/divider/style/css", + "element-plus/es/components/card/style/css", + "element-plus/es/components/link/style/css", + "element-plus/es/components/breadcrumb/style/css", + "element-plus/es/components/breadcrumb-item/style/css", + "element-plus/es/components/table/style/css", + "element-plus/es/components/tree-select/style/css", + "element-plus/es/components/table-column/style/css", + "element-plus/es/components/select/style/css", + "element-plus/es/components/option/style/css", + "element-plus/es/components/pagination/style/css", + "element-plus/es/components/tree/style/css", + "element-plus/es/components/alert/style/css", + "@vueuse/core", + + "path-to-regexp", + "echarts", + "@wangeditor/editor", + "@wangeditor/editor-for-vue", + "vue-i18n", + ], + }, + }; +}); diff --git a/vite.config.ts.timestamp-1686703717757-2c1ff98151025.mjs b/vite.config.ts.timestamp-1686703717757-2c1ff98151025.mjs new file mode 100644 index 000000000..0f1cfc320 --- /dev/null +++ b/vite.config.ts.timestamp-1686703717757-2c1ff98151025.mjs @@ -0,0 +1,159 @@ +// vite.config.ts +import vue from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/@vitejs/plugin-vue/dist/index.mjs"; +import { loadEnv, defineConfig } from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/vite/dist/node/index.js"; +import AutoImport from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/unplugin-auto-import/dist/vite.js"; +import Components from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/unplugin-vue-components/dist/vite.mjs"; +import { ElementPlusResolver } from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/unplugin-vue-components/dist/resolvers.mjs"; +import Icons from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/unplugin-icons/dist/vite.mjs"; +import IconsResolver from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/unplugin-icons/dist/resolver.mjs"; +import { createSvgIconsPlugin } from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/vite-plugin-svg-icons/dist/index.mjs"; +import UnoCSS from "file:///E:/f_pang/object/my_object_html/HengxinHighTechApplicationPlatform/node_modules/unocss/dist/vite.mjs"; +import path from "path"; +var __vite_injected_original_dirname = "E:\\f_pang\\object\\my_object_html\\HengxinHighTechApplicationPlatform"; +var pathSrc = path.resolve(__vite_injected_original_dirname, "src"); +var vite_config_default = defineConfig(({ mode }) => { + const env = loadEnv(mode, process.cwd()); + return { + resolve: { + alias: { + "@": pathSrc + } + }, + css: { + // CSS 预处理器 + preprocessorOptions: { + //define global scss variable + scss: { + javascriptEnabled: true, + additionalData: ` + @use "@/styles/variables.scss" as *; + ` + } + } + }, + server: { + host: "0.0.0.0", + port: Number(env.VITE_APP_PORT), + open: true, + // 运行是否自动打开浏览器 + proxy: { + // 反向代理解决跨域 + [env.VITE_APP_BASE_API]: { + target: env.VITE_APP_BASE_URL, + // 线上接口地址 + // target: "http://vapi.youlai.tech", // 线上接口地址 + // target: 'http://localhost:8989', // 本地接口地址 , 后端工程仓库地址:https://gitee.com/youlaiorg/youlai-boot + changeOrigin: true, + rewrite: (path2) => path2.replace(new RegExp("^" + env.VITE_APP_BASE_API), "") + // 替换 /dev-api 为 target 接口地址 + } + } + }, + plugins: [ + vue(), + UnoCSS({ + /* options */ + }), + AutoImport({ + // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 + imports: ["vue", "@vueuse/core"], + 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') + }, + resolvers: [ + // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) + ElementPlusResolver(), + // 自动导入图标组件 + IconsResolver({}) + ], + vueTemplate: true, + // 是否在 vue 模板中自动导入 + dts: path.resolve(pathSrc, "types", "auto-imports.d.ts") + // 自动导入组件类型声明文件位置,默认根目录; false 关闭自动生成 + }), + Components({ + resolvers: [ + // 自动注册图标组件 + IconsResolver({ + enabledCollections: ["ep"] + //@iconify-json/ep 是 Element Plus 的图标库 + }), + // 自动导入 Element Plus 组件 + ElementPlusResolver() + ], + dts: path.resolve(pathSrc, "types", "components.d.ts") + // 自动导入组件类型声明文件位置,默认根目录; false 关闭自动生成 + }), + Icons({ + // 自动安装图标库 + autoInstall: true + }), + createSvgIconsPlugin({ + // 指定需要缓存的图标文件夹 + iconDirs: [path.resolve(pathSrc, "assets/icons")], + // 指定symbolId格式 + symbolId: "icon-[dir]-[name]" + }) + ], + optimizeDeps: { + include: [ + "vue", + "vue-router", + "pinia", + "axios", + "element-plus/es/components/form/style/css", + "element-plus/es/components/form-item/style/css", + "element-plus/es/components/button/style/css", + "element-plus/es/components/input/style/css", + "element-plus/es/components/input-number/style/css", + "element-plus/es/components/switch/style/css", + "element-plus/es/components/upload/style/css", + "element-plus/es/components/menu/style/css", + "element-plus/es/components/col/style/css", + "element-plus/es/components/icon/style/css", + "element-plus/es/components/row/style/css", + "element-plus/es/components/tag/style/css", + "element-plus/es/components/dialog/style/css", + "element-plus/es/components/loading/style/css", + "element-plus/es/components/radio/style/css", + "element-plus/es/components/radio-group/style/css", + "element-plus/es/components/popover/style/css", + "element-plus/es/components/scrollbar/style/css", + "element-plus/es/components/tooltip/style/css", + "element-plus/es/components/dropdown/style/css", + "element-plus/es/components/dropdown-menu/style/css", + "element-plus/es/components/dropdown-item/style/css", + "element-plus/es/components/sub-menu/style/css", + "element-plus/es/components/menu-item/style/css", + "element-plus/es/components/divider/style/css", + "element-plus/es/components/card/style/css", + "element-plus/es/components/link/style/css", + "element-plus/es/components/breadcrumb/style/css", + "element-plus/es/components/breadcrumb-item/style/css", + "element-plus/es/components/table/style/css", + "element-plus/es/components/tree-select/style/css", + "element-plus/es/components/table-column/style/css", + "element-plus/es/components/select/style/css", + "element-plus/es/components/option/style/css", + "element-plus/es/components/pagination/style/css", + "element-plus/es/components/tree/style/css", + "element-plus/es/components/alert/style/css", + "@vueuse/core", + "path-to-regexp", + "echarts", + "@wangeditor/editor", + "@wangeditor/editor-for-vue", + "vue-i18n" + ] + } + }; +}); +export { + vite_config_default as default +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxmX3BhbmdcXFxcb2JqZWN0XFxcXG15X29iamVjdF9odG1sXFxcXEhlbmd4aW5IaWdoVGVjaEFwcGxpY2F0aW9uUGxhdGZvcm1cIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXGZfcGFuZ1xcXFxvYmplY3RcXFxcbXlfb2JqZWN0X2h0bWxcXFxcSGVuZ3hpbkhpZ2hUZWNoQXBwbGljYXRpb25QbGF0Zm9ybVxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovZl9wYW5nL29iamVjdC9teV9vYmplY3RfaHRtbC9IZW5neGluSGlnaFRlY2hBcHBsaWNhdGlvblBsYXRmb3JtL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHZ1ZSBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tdnVlXCI7XG5cbmltcG9ydCB7IFVzZXJDb25maWcsIENvbmZpZ0VudiwgbG9hZEVudiwgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVcIjtcblxuaW1wb3J0IEF1dG9JbXBvcnQgZnJvbSBcInVucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGVcIjtcbmltcG9ydCBDb21wb25lbnRzIGZyb20gXCJ1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlXCI7XG5pbXBvcnQgeyBFbGVtZW50UGx1c1Jlc29sdmVyIH0gZnJvbSBcInVucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVyc1wiO1xuXG5pbXBvcnQgSWNvbnMgZnJvbSBcInVucGx1Z2luLWljb25zL3ZpdGVcIjtcbmltcG9ydCBJY29uc1Jlc29sdmVyIGZyb20gXCJ1bnBsdWdpbi1pY29ucy9yZXNvbHZlclwiO1xuXG5pbXBvcnQgeyBjcmVhdGVTdmdJY29uc1BsdWdpbiB9IGZyb20gXCJ2aXRlLXBsdWdpbi1zdmctaWNvbnNcIjtcblxuaW1wb3J0IFVub0NTUyBmcm9tIFwidW5vY3NzL3ZpdGVcIjtcblxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmNvbnN0IHBhdGhTcmMgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcInNyY1wiKTtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUgfTogQ29uZmlnRW52KTogVXNlckNvbmZpZyA9PiB7XG4gIGNvbnN0IGVudiA9IGxvYWRFbnYobW9kZSwgcHJvY2Vzcy5jd2QoKSk7XG4gIHJldHVybiB7XG4gICAgcmVzb2x2ZToge1xuICAgICAgYWxpYXM6IHtcbiAgICAgICAgXCJAXCI6IHBhdGhTcmMsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY3NzOiB7XG4gICAgICAvLyBDU1MgXHU5ODg0XHU1OTA0XHU3NDA2XHU1NjY4XG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XG4gICAgICAgIC8vZGVmaW5lIGdsb2JhbCBzY3NzIHZhcmlhYmxlXG4gICAgICAgIHNjc3M6IHtcbiAgICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogYFxuICAgICAgICAgICAgQHVzZSBcIkAvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzXCIgYXMgKjtcbiAgICAgICAgICBgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHNlcnZlcjoge1xuICAgICAgaG9zdDogXCIwLjAuMC4wXCIsXG4gICAgICBwb3J0OiBOdW1iZXIoZW52LlZJVEVfQVBQX1BPUlQpLFxuICAgICAgb3BlbjogdHJ1ZSwgLy8gXHU4RkQwXHU4ODRDXHU2NjJGXHU1NDI2XHU4MUVBXHU1MkE4XHU2MjUzXHU1RjAwXHU2RDRGXHU4OUM4XHU1NjY4XG4gICAgICBwcm94eToge1xuICAgICAgICAvLyBcdTUzQ0RcdTU0MTFcdTRFRTNcdTc0MDZcdTg5RTNcdTUxQjNcdThERThcdTU3REZcbiAgICAgICAgW2Vudi5WSVRFX0FQUF9CQVNFX0FQSV06IHtcblx0XHRcdFx0XHR0YXJnZXQ6IGVudi5WSVRFX0FQUF9CQVNFX1VSTCwgLy8gXHU3RUJGXHU0RTBBXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXG4gICAgICAgICAgLy8gdGFyZ2V0OiBcImh0dHA6Ly92YXBpLnlvdWxhaS50ZWNoXCIsIC8vIFx1N0VCRlx1NEUwQVx1NjNBNVx1NTNFM1x1NTczMFx1NTc0MFxuICAgICAgICAgIC8vIHRhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6ODk4OScsICAvLyBcdTY3MkNcdTU3MzBcdTYzQTVcdTUzRTNcdTU3MzBcdTU3NDAgLCBcdTU0MEVcdTdBRUZcdTVERTVcdTdBMEJcdTRFRDNcdTVFOTNcdTU3MzBcdTU3NDBcdUZGMUFodHRwczovL2dpdGVlLmNvbS95b3VsYWlvcmcveW91bGFpLWJvb3RcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+XG4gICAgICAgICAgICBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChcIl5cIiArIGVudi5WSVRFX0FQUF9CQVNFX0FQSSksIFwiXCIpLCAvLyBcdTY2RkZcdTYzNjIgL2Rldi1hcGkgXHU0RTNBIHRhcmdldCBcdTYzQTVcdTUzRTNcdTU3MzBcdTU3NDBcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwbHVnaW5zOiBbXG4gICAgICB2dWUoKSxcbiAgICAgIFVub0NTUyh7XG4gICAgICAgIC8qIG9wdGlvbnMgKi9cbiAgICAgIH0pLFxuICAgICAgQXV0b0ltcG9ydCh7XG4gICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBWdWUgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwXHVGRjBDXHU1OTgyXHVGRjFBcmVmLCByZWFjdGl2ZSwgdG9SZWYgXHU3QjQ5XG4gICAgICAgIGltcG9ydHM6IFtcInZ1ZVwiLCBcIkB2dWV1c2UvY29yZVwiXSxcbiAgICAgICAgZXNsaW50cmM6IHtcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSwgLy8gIERlZmF1bHQgYGZhbHNlYFxuICAgICAgICAgIGZpbGVwYXRoOiBcIi4vLmVzbGludHJjLWF1dG8taW1wb3J0Lmpzb25cIiwgLy8gRGVmYXVsdCBgLi8uZXNsaW50cmMtYXV0by1pbXBvcnQuanNvbmBcbiAgICAgICAgICBnbG9iYWxzUHJvcFZhbHVlOiB0cnVlLCAvLyBEZWZhdWx0IGB0cnVlYCwgKHRydWUgfCBmYWxzZSB8ICdyZWFkb25seScgfCAncmVhZGFibGUnIHwgJ3dyaXRhYmxlJyB8ICd3cml0ZWFibGUnKVxuICAgICAgICB9LFxuICAgICAgICByZXNvbHZlcnM6IFtcbiAgICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgRWxlbWVudCBQbHVzIFx1NzZGOFx1NTE3M1x1NTFGRFx1NjU3MFx1RkYwQ1x1NTk4Mlx1RkYxQUVsTWVzc2FnZSwgRWxNZXNzYWdlQm94Li4uIChcdTVFMjZcdTY4MzdcdTVGMEYpXG4gICAgICAgICAgRWxlbWVudFBsdXNSZXNvbHZlcigpLFxuICAgICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NTZGRVx1NjgwN1x1N0VDNFx1NEVGNlxuICAgICAgICAgIEljb25zUmVzb2x2ZXIoe30pLFxuICAgICAgICBdLFxuICAgICAgICB2dWVUZW1wbGF0ZTogdHJ1ZSwgLy8gXHU2NjJGXHU1NDI2XHU1NzI4IHZ1ZSBcdTZBMjFcdTY3N0ZcdTRFMkRcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcbiAgICAgICAgZHRzOiBwYXRoLnJlc29sdmUocGF0aFNyYywgXCJ0eXBlc1wiLCBcImF1dG8taW1wb3J0cy5kLnRzXCIpLCAvLyAgXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1XHU3RUM0XHU0RUY2XHU3QzdCXHU1NzhCXHU1OEYwXHU2NjBFXHU2NTg3XHU0RUY2XHU0RjREXHU3RjZFXHVGRjBDXHU5RUQ4XHU4QkE0XHU2ODM5XHU3NkVFXHU1RjU1OyBmYWxzZSBcdTUxNzNcdTk1RURcdTgxRUFcdTUyQThcdTc1MUZcdTYyMTBcbiAgICAgIH0pLFxuXG4gICAgICBDb21wb25lbnRzKHtcbiAgICAgICAgcmVzb2x2ZXJzOiBbXG4gICAgICAgICAgLy8gXHU4MUVBXHU1MkE4XHU2Q0U4XHU1MThDXHU1NkZFXHU2ODA3XHU3RUM0XHU0RUY2XG4gICAgICAgICAgSWNvbnNSZXNvbHZlcih7XG4gICAgICAgICAgICBlbmFibGVkQ29sbGVjdGlvbnM6IFtcImVwXCJdLCAvL0BpY29uaWZ5LWpzb24vZXAgXHU2NjJGIEVsZW1lbnQgUGx1cyBcdTc2ODRcdTU2RkVcdTY4MDdcdTVFOTNcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgRWxlbWVudCBQbHVzIFx1N0VDNFx1NEVGNlxuICAgICAgICAgIEVsZW1lbnRQbHVzUmVzb2x2ZXIoKSxcbiAgICAgICAgXSxcbiAgICAgICAgZHRzOiBwYXRoLnJlc29sdmUocGF0aFNyYywgXCJ0eXBlc1wiLCBcImNvbXBvbmVudHMuZC50c1wiKSwgLy8gIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1N0VDNFx1NEVGNlx1N0M3Qlx1NTc4Qlx1NThGMFx1NjYwRVx1NjU4N1x1NEVGNlx1NEY0RFx1N0Y2RVx1RkYwQ1x1OUVEOFx1OEJBNFx1NjgzOVx1NzZFRVx1NUY1NTsgZmFsc2UgXHU1MTczXHU5NUVEXHU4MUVBXHU1MkE4XHU3NTFGXHU2MjEwXG4gICAgICB9KSxcblxuICAgICAgSWNvbnMoe1xuICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCODlcdTg4QzVcdTU2RkVcdTY4MDdcdTVFOTNcbiAgICAgICAgYXV0b0luc3RhbGw6IHRydWUsXG4gICAgICB9KSxcblxuICAgICAgY3JlYXRlU3ZnSWNvbnNQbHVnaW4oe1xuICAgICAgICAvLyBcdTYzMDdcdTVCOUFcdTk3MDBcdTg5ODFcdTdGMTNcdTVCNThcdTc2ODRcdTU2RkVcdTY4MDdcdTY1ODdcdTRFRjZcdTU5MzlcbiAgICAgICAgaWNvbkRpcnM6IFtwYXRoLnJlc29sdmUocGF0aFNyYywgXCJhc3NldHMvaWNvbnNcIildLFxuICAgICAgICAvLyBcdTYzMDdcdTVCOUFzeW1ib2xJZFx1NjgzQ1x1NUYwRlxuICAgICAgICBzeW1ib2xJZDogXCJpY29uLVtkaXJdLVtuYW1lXVwiLFxuICAgICAgfSksXG4gICAgXSxcblxuICAgIG9wdGltaXplRGVwczoge1xuICAgICAgaW5jbHVkZTogW1xuICAgICAgICBcInZ1ZVwiLFxuICAgICAgICBcInZ1ZS1yb3V0ZXJcIixcbiAgICAgICAgXCJwaW5pYVwiLFxuICAgICAgICBcImF4aW9zXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZm9ybS9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9mb3JtLWl0ZW0vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYnV0dG9uL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2lucHV0L3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2lucHV0LW51bWJlci9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zd2l0Y2gvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdXBsb2FkL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL21lbnUvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvY29sL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2ljb24vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcm93L3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RhZy9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kaWFsb2cvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvbG9hZGluZy9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yYWRpby9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yYWRpby1ncm91cC9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9wb3BvdmVyL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3Njcm9sbGJhci9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90b29sdGlwL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Ryb3Bkb3duL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZHJvcGRvd24taXRlbS9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zdWItbWVudS9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9tZW51LWl0ZW0vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZGl2aWRlci9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jYXJkL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2xpbmsvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9icmVhZGNydW1iLWl0ZW0vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFibGUvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdHJlZS1zZWxlY3Qvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFibGUtY29sdW1uL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3NlbGVjdC9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9vcHRpb24vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90cmVlL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2FsZXJ0L3N0eWxlL2Nzc1wiLFxuICAgICAgICBcIkB2dWV1c2UvY29yZVwiLFxuXG4gICAgICAgIFwicGF0aC10by1yZWdleHBcIixcbiAgICAgICAgXCJlY2hhcnRzXCIsXG4gICAgICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yXCIsXG4gICAgICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yLWZvci12dWVcIixcbiAgICAgICAgXCJ2dWUtaTE4blwiLFxuICAgICAgXSxcbiAgICB9LFxuICB9O1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQWtZLE9BQU8sU0FBUztBQUVsWixTQUFnQyxTQUFTLG9CQUFvQjtBQUU3RCxPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLDJCQUEyQjtBQUVwQyxPQUFPLFdBQVc7QUFDbEIsT0FBTyxtQkFBbUI7QUFFMUIsU0FBUyw0QkFBNEI7QUFFckMsT0FBTyxZQUFZO0FBRW5CLE9BQU8sVUFBVTtBQWZqQixJQUFNLG1DQUFtQztBQWdCekMsSUFBTSxVQUFVLEtBQUssUUFBUSxrQ0FBVyxLQUFLO0FBRTdDLElBQU8sc0JBQVEsYUFBYSxDQUFDLEVBQUUsS0FBSyxNQUE2QjtBQUMvRCxRQUFNLE1BQU0sUUFBUSxNQUFNLFFBQVEsSUFBSSxDQUFDO0FBQ3ZDLFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxNQUNQLE9BQU87QUFBQSxRQUNMLEtBQUs7QUFBQSxNQUNQO0FBQUEsSUFDRjtBQUFBLElBQ0EsS0FBSztBQUFBO0FBQUEsTUFFSCxxQkFBcUI7QUFBQTtBQUFBLFFBRW5CLE1BQU07QUFBQSxVQUNKLG1CQUFtQjtBQUFBLFVBQ25CLGdCQUFnQjtBQUFBO0FBQUE7QUFBQSxRQUdsQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNLE9BQU8sSUFBSSxhQUFhO0FBQUEsTUFDOUIsTUFBTTtBQUFBO0FBQUEsTUFDTixPQUFPO0FBQUE7QUFBQSxRQUVMLENBQUMsSUFBSSxpQkFBaUIsR0FBRztBQUFBLFVBQzVCLFFBQVEsSUFBSTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBR1AsY0FBYztBQUFBLFVBQ2QsU0FBUyxDQUFDQSxVQUNSQSxNQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sSUFBSSxpQkFBaUIsR0FBRyxFQUFFO0FBQUE7QUFBQSxRQUM1RDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxJQUFJO0FBQUEsTUFDSixPQUFPO0FBQUE7QUFBQSxNQUVQLENBQUM7QUFBQSxNQUNELFdBQVc7QUFBQTtBQUFBLFFBRVQsU0FBUyxDQUFDLE9BQU8sY0FBYztBQUFBLFFBQy9CLFVBQVU7QUFBQSxVQUNSLFNBQVM7QUFBQTtBQUFBLFVBQ1QsVUFBVTtBQUFBO0FBQUEsVUFDVixrQkFBa0I7QUFBQTtBQUFBLFFBQ3BCO0FBQUEsUUFDQSxXQUFXO0FBQUE7QUFBQSxVQUVULG9CQUFvQjtBQUFBO0FBQUEsVUFFcEIsY0FBYyxDQUFDLENBQUM7QUFBQSxRQUNsQjtBQUFBLFFBQ0EsYUFBYTtBQUFBO0FBQUEsUUFDYixLQUFLLEtBQUssUUFBUSxTQUFTLFNBQVMsbUJBQW1CO0FBQUE7QUFBQSxNQUN6RCxDQUFDO0FBQUEsTUFFRCxXQUFXO0FBQUEsUUFDVCxXQUFXO0FBQUE7QUFBQSxVQUVULGNBQWM7QUFBQSxZQUNaLG9CQUFvQixDQUFDLElBQUk7QUFBQTtBQUFBLFVBQzNCLENBQUM7QUFBQTtBQUFBLFVBRUQsb0JBQW9CO0FBQUEsUUFDdEI7QUFBQSxRQUNBLEtBQUssS0FBSyxRQUFRLFNBQVMsU0FBUyxpQkFBaUI7QUFBQTtBQUFBLE1BQ3ZELENBQUM7QUFBQSxNQUVELE1BQU07QUFBQTtBQUFBLFFBRUosYUFBYTtBQUFBLE1BQ2YsQ0FBQztBQUFBLE1BRUQscUJBQXFCO0FBQUE7QUFBQSxRQUVuQixVQUFVLENBQUMsS0FBSyxRQUFRLFNBQVMsY0FBYyxDQUFDO0FBQUE7QUFBQSxRQUVoRCxVQUFVO0FBQUEsTUFDWixDQUFDO0FBQUEsSUFDSDtBQUFBLElBRUEsY0FBYztBQUFBLE1BQ1osU0FBUztBQUFBLFFBQ1A7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBRUE7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFsicGF0aCJdCn0K