jinx 2 ヶ月 前
コミット
60299cfa85
100 ファイル変更8089 行追加0 行削除
  1. 33 0
      .gitignore
  2. 19 0
      package.json
  3. 9 0
      packages/yueyang-admin/.editorconfig
  4. 1 0
      packages/yueyang-admin/.env
  5. 12 0
      packages/yueyang-admin/.env.development
  6. 10 0
      packages/yueyang-admin/.env.production
  7. 4 0
      packages/yueyang-admin/.gitignore
  8. 3 0
      packages/yueyang-admin/.npmrc
  9. 12 0
      packages/yueyang-admin/.vscode/extensions.json
  10. 23 0
      packages/yueyang-admin/.vscode/settings.json
  11. 21 0
      packages/yueyang-admin/LICENSE
  12. 92 0
      packages/yueyang-admin/README.md
  13. 39 0
      packages/yueyang-admin/build/index.js
  14. 25 0
      packages/yueyang-admin/build/plugin-isme/icons.js
  15. 10 0
      packages/yueyang-admin/build/plugin-isme/index.js
  16. 25 0
      packages/yueyang-admin/build/plugin-isme/page-pathes.js
  17. 34 0
      packages/yueyang-admin/eslint.config.js
  18. 94 0
      packages/yueyang-admin/index.html
  19. 14 0
      packages/yueyang-admin/jsconfig.json
  20. 60 0
      packages/yueyang-admin/package.json
  21. 7376 0
      packages/yueyang-admin/pnpm-lock.yaml
  22. BIN
      packages/yueyang-admin/public/favicon.png
  23. 65 0
      packages/yueyang-admin/src/App.vue
  24. 24 0
      packages/yueyang-admin/src/api/index.js
  25. 10 0
      packages/yueyang-admin/src/assets/icons/dynamic-icons.js
  26. 1 0
      packages/yueyang-admin/src/assets/icons/feather/activity.svg
  27. 1 0
      packages/yueyang-admin/src/assets/icons/feather/airplay.svg
  28. 1 0
      packages/yueyang-admin/src/assets/icons/feather/alert-circle.svg
  29. 1 0
      packages/yueyang-admin/src/assets/icons/feather/alert-octagon.svg
  30. 1 0
      packages/yueyang-admin/src/assets/icons/feather/alert-triangle.svg
  31. 1 0
      packages/yueyang-admin/src/assets/icons/feather/align-center.svg
  32. 1 0
      packages/yueyang-admin/src/assets/icons/feather/align-justify.svg
  33. 1 0
      packages/yueyang-admin/src/assets/icons/feather/align-left.svg
  34. 1 0
      packages/yueyang-admin/src/assets/icons/feather/align-right.svg
  35. 1 0
      packages/yueyang-admin/src/assets/icons/feather/anchor.svg
  36. 1 0
      packages/yueyang-admin/src/assets/icons/feather/aperture.svg
  37. 1 0
      packages/yueyang-admin/src/assets/icons/feather/archive.svg
  38. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-down-circle.svg
  39. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-down-left.svg
  40. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-down-right.svg
  41. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-down.svg
  42. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-left-circle.svg
  43. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-left.svg
  44. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-right-circle.svg
  45. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-right.svg
  46. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-up-circle.svg
  47. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-up-left.svg
  48. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-up-right.svg
  49. 1 0
      packages/yueyang-admin/src/assets/icons/feather/arrow-up.svg
  50. 1 0
      packages/yueyang-admin/src/assets/icons/feather/at-sign.svg
  51. 1 0
      packages/yueyang-admin/src/assets/icons/feather/award.svg
  52. 1 0
      packages/yueyang-admin/src/assets/icons/feather/bar-chart-2.svg
  53. 1 0
      packages/yueyang-admin/src/assets/icons/feather/bar-chart.svg
  54. 1 0
      packages/yueyang-admin/src/assets/icons/feather/battery-charging.svg
  55. 1 0
      packages/yueyang-admin/src/assets/icons/feather/battery.svg
  56. 1 0
      packages/yueyang-admin/src/assets/icons/feather/bell-off.svg
  57. 1 0
      packages/yueyang-admin/src/assets/icons/feather/bell.svg
  58. 1 0
      packages/yueyang-admin/src/assets/icons/feather/bluetooth.svg
  59. 1 0
      packages/yueyang-admin/src/assets/icons/feather/bold.svg
  60. 1 0
      packages/yueyang-admin/src/assets/icons/feather/book-open.svg
  61. 1 0
      packages/yueyang-admin/src/assets/icons/feather/book.svg
  62. 1 0
      packages/yueyang-admin/src/assets/icons/feather/bookmark.svg
  63. 1 0
      packages/yueyang-admin/src/assets/icons/feather/box.svg
  64. 1 0
      packages/yueyang-admin/src/assets/icons/feather/briefcase.svg
  65. 1 0
      packages/yueyang-admin/src/assets/icons/feather/calendar.svg
  66. 1 0
      packages/yueyang-admin/src/assets/icons/feather/camera-off.svg
  67. 1 0
      packages/yueyang-admin/src/assets/icons/feather/camera.svg
  68. 1 0
      packages/yueyang-admin/src/assets/icons/feather/cast.svg
  69. 1 0
      packages/yueyang-admin/src/assets/icons/feather/check-circle.svg
  70. 1 0
      packages/yueyang-admin/src/assets/icons/feather/check-square.svg
  71. 1 0
      packages/yueyang-admin/src/assets/icons/feather/check.svg
  72. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevron-down.svg
  73. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevron-left.svg
  74. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevron-right.svg
  75. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevron-up.svg
  76. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevrons-down.svg
  77. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevrons-left.svg
  78. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevrons-right.svg
  79. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chevrons-up.svg
  80. 1 0
      packages/yueyang-admin/src/assets/icons/feather/chrome.svg
  81. 1 0
      packages/yueyang-admin/src/assets/icons/feather/circle.svg
  82. 1 0
      packages/yueyang-admin/src/assets/icons/feather/clipboard.svg
  83. 1 0
      packages/yueyang-admin/src/assets/icons/feather/clock.svg
  84. 1 0
      packages/yueyang-admin/src/assets/icons/feather/cloud-drizzle.svg
  85. 1 0
      packages/yueyang-admin/src/assets/icons/feather/cloud-lightning.svg
  86. 1 0
      packages/yueyang-admin/src/assets/icons/feather/cloud-off.svg
  87. 1 0
      packages/yueyang-admin/src/assets/icons/feather/cloud-rain.svg
  88. 1 0
      packages/yueyang-admin/src/assets/icons/feather/cloud-snow.svg
  89. 1 0
      packages/yueyang-admin/src/assets/icons/feather/cloud.svg
  90. 1 0
      packages/yueyang-admin/src/assets/icons/feather/code.svg
  91. 1 0
      packages/yueyang-admin/src/assets/icons/feather/codepen.svg
  92. 1 0
      packages/yueyang-admin/src/assets/icons/feather/codesandbox.svg
  93. 1 0
      packages/yueyang-admin/src/assets/icons/feather/coffee.svg
  94. 1 0
      packages/yueyang-admin/src/assets/icons/feather/columns.svg
  95. 1 0
      packages/yueyang-admin/src/assets/icons/feather/command.svg
  96. 1 0
      packages/yueyang-admin/src/assets/icons/feather/compass.svg
  97. 1 0
      packages/yueyang-admin/src/assets/icons/feather/copy.svg
  98. 1 0
      packages/yueyang-admin/src/assets/icons/feather/corner-down-left.svg
  99. 1 0
      packages/yueyang-admin/src/assets/icons/feather/corner-down-right.svg
  100. 0 0
      packages/yueyang-admin/src/assets/icons/feather/corner-left-down.svg

+ 33 - 0
.gitignore

@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+/packages/yueyang-map-h5/public/static/tiles/*
+/packages/yueyang-map-h5/public/static/unity/*
+/packages/yueyang-map-h5/public/static/image/*
+/packages/yueyang-map-h5/public/static/doc/*
+*.tsbuildinfo

+ 19 - 0
package.json

@@ -0,0 +1,19 @@
+{
+  "name": "yueyang-map",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "workspaces": [
+    "packages/*"
+  ],
+  "scripts": {
+    "map:dev": "pnpm --filter yueyang-map-h5 run dev",
+    "admin:dev": "pnpm --filter yueyang-admin run dev",
+    "admin:build": "pnpm --filter yueyang-admin run build",
+    "map:build": "pnpm --filter yueyang-map-h5 run build"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "packageManager": "pnpm@10.11.1"
+}

+ 9 - 0
packages/yueyang-admin/.editorconfig

@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = unset
+insert_final_newline = true
+trim_trailing_whitespace = true

+ 1 - 0
packages/yueyang-admin/.env

@@ -0,0 +1 @@
+VITE_TITLE = '云上岳阳管理后台'

+ 12 - 0
packages/yueyang-admin/.env.development

@@ -0,0 +1,12 @@
+# 是否使用Hash路由
+VITE_USE_HASH = 'true'
+
+# 资源公共路径,需要以 /开头和结尾
+VITE_PUBLIC_PATH = '/'
+
+# Axios 基础路径
+# VITE_AXIOS_BASE_URL = '/api'  # 用于代理
+VITE_AXIOS_BASE_URL = 'https://mock.apipark.cn/m1/3776410-0-default'  # apifox云端mock
+
+# 代理配置-target
+VITE_PROXY_TARGET = 'http://localhost:8085'

+ 10 - 0
packages/yueyang-admin/.env.production

@@ -0,0 +1,10 @@
+# 是否使用Hash路由
+VITE_USE_HASH = 'false'
+
+# 资源公共路径,需要以 /开头和结尾
+VITE_PUBLIC_PATH = '/'
+
+VITE_AXIOS_BASE_URL = '/api'  # 用于代理
+
+# 代理配置-target
+VITE_PROXY_TARGET = 'http://localhost:8085'

+ 4 - 0
packages/yueyang-admin/.gitignore

@@ -0,0 +1,4 @@
+*.local
+node_modules
+dist
+stats.html

+ 3 - 0
packages/yueyang-admin/.npmrc

@@ -0,0 +1,3 @@
+registry=https://registry.npmmirror.com
+shamefully-hoist=true
+strict-peer-dependencies=false

+ 12 - 0
packages/yueyang-admin/.vscode/extensions.json

@@ -0,0 +1,12 @@
+{
+  "recommendations": [
+    "Vue.volar",
+    "antfu.unocss",
+    "antfu.iconify",
+    "dbaeumer.vscode-eslint",
+    "esbenp.prettier-vscode",
+    "sdras.vue-vscode-snippets",
+    "mikestead.dotenv",
+    "tu6ge.naive-ui-intelligence"
+  ]
+}

+ 23 - 0
packages/yueyang-admin/.vscode/settings.json

@@ -0,0 +1,23 @@
+{
+  "prettier.enable": false,
+  "editor.formatOnSave": false,
+
+  // Auto fix
+  "editor.codeActionsOnSave": {
+    "source.fixAll.eslint": "explicit",
+    "source.organizeImports": "never"
+  },
+
+  // Enable eslint for all supported languages
+  "eslint.validate": [
+    "javascript",
+    "javascriptreact",
+    "typescript",
+    "typescriptreact",
+    "vue",
+    "html",
+    "markdown",
+    "json",
+    "jsonc"
+  ]
+}

+ 21 - 0
packages/yueyang-admin/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Ronnie Zhang(大脸怪)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

ファイルの差分が大きいため隠しています
+ 92 - 0
packages/yueyang-admin/README.md


+ 39 - 0
packages/yueyang-admin/build/index.js

@@ -0,0 +1,39 @@
+/**********************************
+ * @Author: Ronnie Zhang
+ * @LastEditor: Ronnie Zhang
+ * @LastEditTime: 2023/12/04 22:48:02
+ * @Email: zclzone@outlook.com
+ * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
+ **********************************/
+
+import path from 'node:path'
+import { globSync } from 'glob'
+import dynamicIcons from '../src/assets/icons/dynamic-icons.js'
+
+/**
+ * @usage 生成icons, 用于 unocss safelist,以支持页面动态渲染自定义图标
+ */
+export function getIcons() {
+  const feFiles = globSync('src/assets/icons/feather/*.svg', { nodir: true, strict: true })
+  const meFiles = globSync('src/assets/icons/isme/*.svg', { nodir: true, strict: true })
+  const feIcons = feFiles.map((filePath) => {
+    const fileName = path.basename(filePath) // 获取文件名,包括后缀
+    const fileNameWithoutExt = path.parse(fileName).name // 获取去除后缀的文件名
+    return `i-fe:${fileNameWithoutExt}`
+  })
+  const meIcons = meFiles.map((filePath) => {
+    const fileName = path.basename(filePath) // 获取文件名,包括后缀
+    const fileNameWithoutExt = path.parse(fileName).name // 获取去除后缀的文件名
+    return `i-me:${fileNameWithoutExt}`
+  })
+
+  return [...dynamicIcons, ...feIcons, ...meIcons]
+}
+
+/**
+ * @usage 生成.vue文件路径列表,用于添加菜单时可下拉选择对应的.vue文件路径,防止手动输入报错
+ */
+export function getPagePathes() {
+  const files = globSync('src/views/**/*.vue')
+  return files.map(item => `/${path.normalize(item).replace(/\\/g, '/')}`)
+}

+ 25 - 0
packages/yueyang-admin/build/plugin-isme/icons.js

@@ -0,0 +1,25 @@
+/**********************************
+ * @Author: Ronnie Zhang
+ * @LastEditor: Ronnie Zhang
+ * @LastEditTime: 2023/12/04 22:48:11
+ * @Email: zclzone@outlook.com
+ * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
+ **********************************/
+
+import { getIcons } from '..'
+
+const PLUGIN_ICONS_ID = 'isme:icons'
+export function pluginIcons() {
+  return {
+    name: 'isme:icons',
+    resolveId(id) {
+      if (id === PLUGIN_ICONS_ID)
+        return `\0${PLUGIN_ICONS_ID}`
+    },
+    load(id) {
+      if (id === `\0${PLUGIN_ICONS_ID}`) {
+        return `export default ${JSON.stringify(getIcons())}`
+      }
+    },
+  }
+}

+ 10 - 0
packages/yueyang-admin/build/plugin-isme/index.js

@@ -0,0 +1,10 @@
+/**********************************
+ * @Author: Ronnie Zhang
+ * @LastEditor: Ronnie Zhang
+ * @LastEditTime: 2023/12/04 22:48:17
+ * @Email: zclzone@outlook.com
+ * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
+ **********************************/
+
+export { pluginIcons } from './icons'
+export { pluginPagePathes } from './page-pathes'

+ 25 - 0
packages/yueyang-admin/build/plugin-isme/page-pathes.js

@@ -0,0 +1,25 @@
+/**********************************
+ * @Author: Ronnie Zhang
+ * @LastEditor: Ronnie Zhang
+ * @LastEditTime: 2023/12/05 21:37:43
+ * @Email: zclzone@outlook.com
+ * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
+ **********************************/
+
+import { getPagePathes } from '..'
+
+const PLUGIN_PAGE_PATHES_ID = 'isme:page-pathes'
+export function pluginPagePathes() {
+  return {
+    name: 'isme:page-pathes',
+    resolveId(id) {
+      if (id === PLUGIN_PAGE_PATHES_ID)
+        return `\0${PLUGIN_PAGE_PATHES_ID}`
+    },
+    load(id) {
+      if (id === `\0${PLUGIN_PAGE_PATHES_ID}`) {
+        return `export default ${JSON.stringify(getPagePathes())}`
+      }
+    },
+  }
+}

+ 34 - 0
packages/yueyang-admin/eslint.config.js

@@ -0,0 +1,34 @@
+import antfu from '@antfu/eslint-config'
+
+export default antfu({
+  unocss: true,
+  formatters: true,
+  stylistic: true,
+  rules: {
+    'n/prefer-global/process': 'off',
+    'no-undef': 'error',
+    'no-fallthrough': 'off',
+    'vue/block-order': 'off',
+    '@typescript-eslint/no-this-alias': 'off',
+    'prefer-promise-reject-errors': 'off',
+  },
+  languageOptions: {
+    globals: {
+      h: 'readonly',
+      unref: 'readonly',
+      provide: 'readonly',
+      inject: 'readonly',
+      markRaw: 'readonly',
+      defineAsyncComponent: 'readonly',
+      nextTick: 'readonly',
+      useRoute: 'readonly',
+      useRouter: 'readonly',
+      Message: 'readonly',
+      $loadingBar: 'readonly',
+      $message: 'readonly',
+      $dialog: 'readonly',
+      $notification: 'readonly',
+      $modal: 'readonly',
+    },
+  },
+})

+ 94 - 0
packages/yueyang-admin/index.html

@@ -0,0 +1,94 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <!-- <link rel="icon" href="/favicon.png" /> -->
+    <title>%VITE_TITLE%</title>
+    <style>
+      .loading-container {
+        position: fixed;
+        top: 0;
+        left: 0;
+        width: 100%;
+        height: 100%;
+        display: flex;
+      }
+      .dark .loading-container {
+        background-color: #232324;
+        color: rgba(255, 255, 255, 0.9);
+      }
+
+      .loading-container .loading {
+        --speed-of-animation: 0.9s;
+        --gap: 12px;
+        --first-color: #4c86f9;
+        --second-color: #49a84c;
+        --third-color: #f6bb02;
+        --fourth-color: #26a69a;
+        --fifth-color: #2196f3;
+
+        margin: auto;
+        width: 160px;
+        height: 100px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        gap: var(--gap);
+      }
+
+      .loading-container .loading span {
+        width: 6px;
+        height: 80px;
+        background: var(--first-color);
+        animation: scale var(--speed-of-animation) ease-in-out infinite;
+      }
+
+      .loading-container .loading span:nth-child(2) {
+        background: var(--second-color);
+        animation-delay: -0.8s;
+      }
+
+      .loading-container .loading span:nth-child(3) {
+        background: var(--third-color);
+        animation-delay: -0.7s;
+      }
+
+      .loading-container .loading span:nth-child(4) {
+        background: var(--fourth-color);
+        animation-delay: -0.6s;
+      }
+
+      .loading-container .loading span:nth-child(5) {
+        background: var(--fifth-color);
+        animation-delay: -0.5s;
+      }
+
+      @keyframes scale {
+        0%,
+        40%,
+        100% {
+          transform: scaleY(0.25);
+        }
+
+        20% {
+          transform: scaleY(1);
+        }
+      }
+    </style>
+  </head>
+  <body class="dark:text-#e9e9e9 auto-bg">
+    <div id="app">
+      <div class="loading-container">
+        <div class="loading">
+          <span></span>
+          <span></span>
+          <span></span>
+          <span></span>
+          <span></span>
+        </div>
+      </div>
+    </div>
+    <script type="module" src="/src/main.js"></script>
+  </body>
+</html>

+ 14 - 0
packages/yueyang-admin/jsconfig.json

@@ -0,0 +1,14 @@
+{
+  "compilerOptions": {
+    "target": "ESNext",
+    "baseUrl": "./",
+    "moduleResolution": "node",
+    "paths": {
+      "@/*": ["src/*"],
+      "~/*": ["./*"]
+    },
+    "jsx": "preserve",
+    "allowJs": true
+  },
+  "exclude": ["node_modules", "dist"]
+}

+ 60 - 0
packages/yueyang-admin/package.json

@@ -0,0 +1,60 @@
+{
+  "name": "yueyang-admin",
+  "type": "module",
+  "version": "2.0.0",
+  "private": true,
+  "scripts": {
+    "dev": "vite",
+    "build": "vite build",
+    "preview": "vite preview",
+    "lint:fix": "eslint --fix",
+    "postinstall": "npx simple-git-hooks",
+    "up": "taze major -I"
+  },
+  "dependencies": {
+    "@arco-design/color": "^0.4.0",
+    "@vueuse/core": "^13.2.0",
+    "axios": "^1.9.0",
+    "dayjs": "^1.11.13",
+    "echarts": "^5.6.0",
+    "lodash-es": "^4.17.21",
+    "naive-ui": "^2.41.0",
+    "pinia": "^3.0.2",
+    "pinia-plugin-persistedstate": "^4.3.0",
+    "vue": "^3.5.14",
+    "vue-echarts": "^7.0.3",
+    "vue-router": "^4.5.1",
+    "xlsx": "^0.18.5"
+  },
+  "devDependencies": {
+    "@antfu/eslint-config": "^4.13.1",
+    "@iconify/json": "^2.2.339",
+    "@unocss/eslint-config": "^66.1.2",
+    "@unocss/eslint-plugin": "^66.1.2",
+    "@unocss/preset-rem-to-px": "^66.1.2",
+    "@vitejs/plugin-vue": "^5.2.4",
+    "@vitejs/plugin-vue-jsx": "^4.1.2",
+    "eslint": "^9.27.0",
+    "eslint-plugin-format": "^1.0.1",
+    "esno": "^4.8.0",
+    "fs-extra": "^11.3.0",
+    "glob": "^11.0.2",
+    "lint-staged": "^16.0.0",
+    "rollup-plugin-visualizer": "^5.14.0",
+    "simple-git-hooks": "^2.13.0",
+    "taze": "^19.1.0",
+    "unocss": "^66.1.2",
+    "unplugin-auto-import": "^19.2.0",
+    "unplugin-vue-components": "^28.5.0",
+    "vite": "^6.3.5",
+    "vite-plugin-router-warn": "^1.0.0",
+    "vite-plugin-vue-devtools": "^7.7.6",
+    "vue3-intro-step": "^1.0.5"
+  },
+  "simple-git-hooks": {
+    "pre-commit": "pnpm lint-staged"
+  },
+  "lint-staged": {
+    "*": "eslint --fix"
+  }
+}

ファイルの差分が大きいため隠しています
+ 7376 - 0
packages/yueyang-admin/pnpm-lock.yaml


BIN
packages/yueyang-admin/public/favicon.png


+ 65 - 0
packages/yueyang-admin/src/App.vue

@@ -0,0 +1,65 @@
+<!--------------------------------
+ - @Author: Ronnie Zhang
+ - @LastEditor: Ronnie Zhang
+ - @LastEditTime: 2023/12/16 18:49:42
+ - @Email: zclzone@outlook.com
+ - Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
+ --------------------------------->
+
+<template>
+  <n-config-provider
+    class="wh-full"
+    :locale="zhCN"
+    :date-locale="dateZhCN"
+    :theme="appStore.isDark ? darkTheme : undefined"
+    :theme-overrides="appStore.naiveThemeOverrides"
+  >
+    <router-view v-if="Layout" v-slot="{ Component, route: curRoute }">
+      <component :is="Layout">
+        <transition name="fade-slide" mode="out-in" appear>
+          <KeepAlive :include="keepAliveNames">
+            <component :is="Component" v-if="!tabStore.reloading" :key="curRoute.fullPath" />
+          </KeepAlive>
+        </transition>
+      </component>
+
+      <!-- <LayoutSetting v-if="layoutSettingVisible" class="fixed right-12 top-1/2 z-999" /> -->
+    </router-view>
+  </n-config-provider>
+</template>
+
+<script setup>
+import { darkTheme, dateZhCN, zhCN } from 'naive-ui'
+import { LayoutSetting } from '@/components'
+import { useAppStore, useTabStore } from '@/store'
+import { layoutSettingVisible } from './settings'
+
+const layouts = new Map()
+function getLayout(name) {
+  // 利用map将加载过的layout缓存起来,防止重新加载layout导致页面闪烁
+  if (layouts.get(name))
+    return layouts.get(name)
+  const layout = markRaw(defineAsyncComponent(() => import(`@/layouts/${name}/index.vue`)))
+  layouts.set(name, layout)
+  return layout
+}
+
+const route = useRoute()
+const appStore = useAppStore()
+if (appStore.layout === 'default')
+  appStore.setLayout('')
+const Layout = computed(() => {
+  if (!route.matched?.length)
+    return null
+  return getLayout(route.meta?.layout || appStore.layout)
+})
+
+const tabStore = useTabStore()
+const keepAliveNames = computed(() => {
+  return tabStore.tabs.filter(item => item.keepAlive).map(item => item.name)
+})
+
+watchEffect(() => {
+  appStore.setThemeColor(appStore.primaryColor, appStore.isDark)
+})
+</script>

+ 24 - 0
packages/yueyang-admin/src/api/index.js

@@ -0,0 +1,24 @@
+/**********************************
+ * @Author: Ronnie Zhang
+ * @LastEditor: Ronnie Zhang
+ * @LastEditTime: 2023/12/04 22:50:38
+ * @Email: zclzone@outlook.com
+ * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
+ **********************************/
+
+import { request } from '@/utils'
+
+export default {
+  // 获取用户信息
+  getUser: () => request.get('/user/detail'),
+  // 刷新token
+  refreshToken: () => request.get('/auth/refresh/token'),
+  // 登出
+  logout: () => request.post('/auth/logout', {}, { needTip: false }),
+  // 切换当前角色
+  switchCurrentRole: role => request.post(`/auth/current-role/switch/${role}`),
+  // 获取角色权限
+  getRolePermissions: () => request.get('/role/permissions/tree'),
+  // 验证菜单路径
+  validateMenuPath: path => request.get(`/permission/menu/validate?path=${path}`),
+}

+ 10 - 0
packages/yueyang-admin/src/assets/icons/dynamic-icons.js

@@ -0,0 +1,10 @@
+/**********************************
+ * @Author: Ronnie Zhang
+ * @LastEditor: Ronnie Zhang
+ * @LastEditTime: 2023/12/04 22:50:49
+ * @Email: zclzone@outlook.com
+ * Copyright © 2023 Ronnie Zhang(大脸怪) | https://isme.top
+ **********************************/
+
+// 需要动态渲染的iconify图标,以i-开头
+export default ['i-simple-icons:juejin']

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/activity.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-activity"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/airplay.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-airplay"><path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/alert-circle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-circle"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/alert-octagon.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-octagon"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/alert-triangle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-triangle"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/align-center.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-center"><line x1="18" y1="10" x2="6" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="18" y1="18" x2="6" y2="18"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/align-justify.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-justify"><line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/align-left.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-left"><line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/align-right.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-align-right"><line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/anchor.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-anchor"><circle cx="12" cy="5" r="3"></circle><line x1="12" y1="22" x2="12" y2="8"></line><path d="M5 12H2a10 10 0 0 0 20 0h-3"></path></svg>

ファイルの差分が大きいため隠しています
+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/aperture.svg


+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/archive.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-archive"><polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-down-circle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="8 12 12 16 16 12"></polyline><line x1="12" y1="8" x2="12" y2="16"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-down-left.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-left"><line x1="17" y1="7" x2="7" y2="17"></line><polyline points="17 17 7 17 7 7"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-down-right.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down-right"><line x1="7" y1="7" x2="17" y2="17"></line><polyline points="17 7 17 17 7 17"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-down.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-down"><line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-left-circle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="12 8 8 12 12 16"></polyline><line x1="16" y1="12" x2="8" y2="12"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-left.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-right-circle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-right.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-up-circle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-circle"><circle cx="12" cy="12" r="10"></circle><polyline points="16 12 12 8 8 12"></polyline><line x1="12" y1="16" x2="12" y2="8"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-up-left.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-left"><line x1="17" y1="17" x2="7" y2="7"></line><polyline points="7 17 7 7 17 7"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-up-right.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up-right"><line x1="7" y1="17" x2="17" y2="7"></line><polyline points="7 7 17 7 17 17"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/arrow-up.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-up"><line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/at-sign.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-at-sign"><circle cx="12" cy="12" r="4"></circle><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/award.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-award"><circle cx="12" cy="8" r="7"></circle><polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/bar-chart-2.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bar-chart-2"><line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/bar-chart.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bar-chart"><line x1="12" y1="20" x2="12" y2="10"></line><line x1="18" y1="20" x2="18" y2="4"></line><line x1="6" y1="20" x2="6" y2="16"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/battery-charging.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-battery-charging"><path d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19"></path><line x1="23" y1="13" x2="23" y2="11"></line><polyline points="11 6 7 12 13 12 9 18"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/battery.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-battery"><rect x="1" y="6" width="18" height="12" rx="2" ry="2"></rect><line x1="23" y1="13" x2="23" y2="11"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/bell-off.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bell-off"><path d="M13.73 21a2 2 0 0 1-3.46 0"></path><path d="M18.63 13A17.89 17.89 0 0 1 18 8"></path><path d="M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14"></path><path d="M18 8a6 6 0 0 0-9.33-5"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/bell.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bell"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/bluetooth.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bluetooth"><polyline points="6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/bold.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bold"><path d="M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path><path d="M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/book-open.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/book.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-book"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/bookmark.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bookmark"><path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/box.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-box"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/briefcase.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-briefcase"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/calendar.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-calendar"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/camera-off.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-camera-off"><line x1="1" y1="1" x2="23" y2="23"></line><path d="M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/camera.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-camera"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"></path><circle cx="12" cy="13" r="4"></circle></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/cast.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cast"><path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path><line x1="2" y1="20" x2="2.01" y2="20"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/check-circle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-circle"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/check-square.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-square"><polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/check.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check"><polyline points="20 6 9 17 4 12"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevron-down.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-down"><polyline points="6 9 12 15 18 9"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevron-left.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-left"><polyline points="15 18 9 12 15 6"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevron-right.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevron-up.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-up"><polyline points="18 15 12 9 6 15"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevrons-down.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-down"><polyline points="7 13 12 18 17 13"></polyline><polyline points="7 6 12 11 17 6"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevrons-left.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-left"><polyline points="11 17 6 12 11 7"></polyline><polyline points="18 17 13 12 18 7"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevrons-right.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-right"><polyline points="13 17 18 12 13 7"></polyline><polyline points="6 17 11 12 6 7"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chevrons-up.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-up"><polyline points="17 11 12 6 7 11"></polyline><polyline points="17 18 12 13 7 18"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/chrome.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chrome"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/circle.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-circle"><circle cx="12" cy="12" r="10"></circle></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/clipboard.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-clipboard"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/clock.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-clock"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>

ファイルの差分が大きいため隠しています
+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/cloud-drizzle.svg


+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/cloud-lightning.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cloud-lightning"><path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9"></path><polyline points="13 11 9 17 15 17 11 23"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/cloud-off.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cloud-off"><path d="M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/cloud-rain.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cloud-rain"><line x1="16" y1="13" x2="16" y2="21"></line><line x1="8" y1="13" x2="8" y2="21"></line><line x1="12" y1="15" x2="12" y2="23"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path></svg>

ファイルの差分が大きいため隠しています
+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/cloud-snow.svg


+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/cloud.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cloud"><path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/code.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-code"><polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/codepen.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-codepen"><polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"></polygon><line x1="12" y1="22" x2="12" y2="15.5"></line><polyline points="22 8.5 12 15.5 2 8.5"></polyline><polyline points="2 15.5 12 8.5 22 15.5"></polyline><line x1="12" y1="2" x2="12" y2="8.5"></line></svg>

ファイルの差分が大きいため隠しています
+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/codesandbox.svg


+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/coffee.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-coffee"><path d="M18 8h1a4 4 0 0 1 0 8h-1"></path><path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path><line x1="6" y1="1" x2="6" y2="4"></line><line x1="10" y1="1" x2="10" y2="4"></line><line x1="14" y1="1" x2="14" y2="4"></line></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/columns.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-columns"><path d="M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/command.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-command"><path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/compass.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-compass"><circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/copy.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-copy"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/corner-down-left.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-corner-down-left"><polyline points="9 10 4 15 9 20"></polyline><path d="M20 4v7a4 4 0 0 1-4 4H4"></path></svg>

+ 1 - 0
packages/yueyang-admin/src/assets/icons/feather/corner-down-right.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-corner-down-right"><polyline points="15 10 20 15 15 20"></polyline><path d="M4 4v7a4 4 0 0 0 4 4h12"></path></svg>

+ 0 - 0
packages/yueyang-admin/src/assets/icons/feather/corner-left-down.svg


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません