Browse Source

首次提交

ZaiZai 1 year ago
commit
1cf0b90ab9
100 changed files with 826 additions and 0 deletions
  1. 8 0
      .editorconfig
  2. 10 0
      .eslintignore
  3. 195 0
      .eslintrc.cjs
  4. 22 0
      .gitignore
  5. 132 0
      README.md
  6. 18 0
      build/main.sh
  7. 102 0
      build/online.sh
  8. 102 0
      build/test.sh
  9. 28 0
      index.html
  10. 53 0
      package.json
  11. BIN
      public/favicon.ico
  12. 116 0
      public/plugins/css/loading.css
  13. 0 0
      public/plugins/element-plus/index.css
  14. 0 0
      public/plugins/element-plus/theme-chalk/base.css
  15. 0 0
      public/plugins/element-plus/theme-chalk/dark/css-vars.css
  16. 1 0
      public/plugins/element-plus/theme-chalk/display.css
  17. 1 0
      public/plugins/element-plus/theme-chalk/el-affix.css
  18. 0 0
      public/plugins/element-plus/theme-chalk/el-alert.css
  19. 1 0
      public/plugins/element-plus/theme-chalk/el-aside.css
  20. 0 0
      public/plugins/element-plus/theme-chalk/el-autocomplete.css
  21. 1 0
      public/plugins/element-plus/theme-chalk/el-avatar.css
  22. 1 0
      public/plugins/element-plus/theme-chalk/el-backtop.css
  23. 1 0
      public/plugins/element-plus/theme-chalk/el-badge.css
  24. 0 0
      public/plugins/element-plus/theme-chalk/el-breadcrumb-item.css
  25. 1 0
      public/plugins/element-plus/theme-chalk/el-breadcrumb.css
  26. 0 0
      public/plugins/element-plus/theme-chalk/el-button-group.css
  27. 0 0
      public/plugins/element-plus/theme-chalk/el-button.css
  28. 1 0
      public/plugins/element-plus/theme-chalk/el-calendar.css
  29. 1 0
      public/plugins/element-plus/theme-chalk/el-card.css
  30. 1 0
      public/plugins/element-plus/theme-chalk/el-carousel-item.css
  31. 0 0
      public/plugins/element-plus/theme-chalk/el-carousel.css
  32. 0 0
      public/plugins/element-plus/theme-chalk/el-cascader-panel.css
  33. 0 0
      public/plugins/element-plus/theme-chalk/el-cascader.css
  34. 1 0
      public/plugins/element-plus/theme-chalk/el-check-tag.css
  35. 0 0
      public/plugins/element-plus/theme-chalk/el-checkbox-button.css
  36. 1 0
      public/plugins/element-plus/theme-chalk/el-checkbox-group.css
  37. 0 0
      public/plugins/element-plus/theme-chalk/el-checkbox.css
  38. 0 0
      public/plugins/element-plus/theme-chalk/el-col.css
  39. 0 0
      public/plugins/element-plus/theme-chalk/el-collapse-item.css
  40. 0 0
      public/plugins/element-plus/theme-chalk/el-collapse-transition.css
  41. 0 0
      public/plugins/element-plus/theme-chalk/el-collapse.css
  42. 0 0
      public/plugins/element-plus/theme-chalk/el-color-picker.css
  43. 0 0
      public/plugins/element-plus/theme-chalk/el-config-provider.css
  44. 1 0
      public/plugins/element-plus/theme-chalk/el-container.css
  45. 0 0
      public/plugins/element-plus/theme-chalk/el-date-picker.css
  46. 1 0
      public/plugins/element-plus/theme-chalk/el-descriptions-item.css
  47. 0 0
      public/plugins/element-plus/theme-chalk/el-descriptions.css
  48. 0 0
      public/plugins/element-plus/theme-chalk/el-dialog.css
  49. 1 0
      public/plugins/element-plus/theme-chalk/el-divider.css
  50. 0 0
      public/plugins/element-plus/theme-chalk/el-drawer.css
  51. 0 0
      public/plugins/element-plus/theme-chalk/el-dropdown-item.css
  52. 0 0
      public/plugins/element-plus/theme-chalk/el-dropdown-menu.css
  53. 0 0
      public/plugins/element-plus/theme-chalk/el-dropdown.css
  54. 1 0
      public/plugins/element-plus/theme-chalk/el-empty.css
  55. 1 0
      public/plugins/element-plus/theme-chalk/el-footer.css
  56. 0 0
      public/plugins/element-plus/theme-chalk/el-form-item.css
  57. 0 0
      public/plugins/element-plus/theme-chalk/el-form.css
  58. 1 0
      public/plugins/element-plus/theme-chalk/el-header.css
  59. 1 0
      public/plugins/element-plus/theme-chalk/el-icon.css
  60. 0 0
      public/plugins/element-plus/theme-chalk/el-image-viewer.css
  61. 1 0
      public/plugins/element-plus/theme-chalk/el-image.css
  62. 0 0
      public/plugins/element-plus/theme-chalk/el-infinite-scroll.css
  63. 0 0
      public/plugins/element-plus/theme-chalk/el-input-number.css
  64. 0 0
      public/plugins/element-plus/theme-chalk/el-input.css
  65. 0 0
      public/plugins/element-plus/theme-chalk/el-link.css
  66. 1 0
      public/plugins/element-plus/theme-chalk/el-loading.css
  67. 1 0
      public/plugins/element-plus/theme-chalk/el-main.css
  68. 0 0
      public/plugins/element-plus/theme-chalk/el-menu-item-group.css
  69. 0 0
      public/plugins/element-plus/theme-chalk/el-menu-item.css
  70. 0 0
      public/plugins/element-plus/theme-chalk/el-menu.css
  71. 0 0
      public/plugins/element-plus/theme-chalk/el-message-box.css
  72. 0 0
      public/plugins/element-plus/theme-chalk/el-message.css
  73. 0 0
      public/plugins/element-plus/theme-chalk/el-notification.css
  74. 1 0
      public/plugins/element-plus/theme-chalk/el-option-group.css
  75. 1 0
      public/plugins/element-plus/theme-chalk/el-option-item.css
  76. 1 0
      public/plugins/element-plus/theme-chalk/el-option.css
  77. 1 0
      public/plugins/element-plus/theme-chalk/el-overlay.css
  78. 1 0
      public/plugins/element-plus/theme-chalk/el-page-header.css
  79. 0 0
      public/plugins/element-plus/theme-chalk/el-pagination.css
  80. 1 0
      public/plugins/element-plus/theme-chalk/el-popconfirm.css
  81. 1 0
      public/plugins/element-plus/theme-chalk/el-popover.css
  82. 0 0
      public/plugins/element-plus/theme-chalk/el-popper.css
  83. 0 0
      public/plugins/element-plus/theme-chalk/el-progress.css
  84. 0 0
      public/plugins/element-plus/theme-chalk/el-radio-button.css
  85. 1 0
      public/plugins/element-plus/theme-chalk/el-radio-group.css
  86. 0 0
      public/plugins/element-plus/theme-chalk/el-radio.css
  87. 1 0
      public/plugins/element-plus/theme-chalk/el-rate.css
  88. 1 0
      public/plugins/element-plus/theme-chalk/el-reset.css
  89. 1 0
      public/plugins/element-plus/theme-chalk/el-result.css
  90. 1 0
      public/plugins/element-plus/theme-chalk/el-row.css
  91. 1 0
      public/plugins/element-plus/theme-chalk/el-scrollbar.css
  92. 1 0
      public/plugins/element-plus/theme-chalk/el-select-dropdown-v2.css
  93. 0 0
      public/plugins/element-plus/theme-chalk/el-select-dropdown.css
  94. 0 0
      public/plugins/element-plus/theme-chalk/el-select-v2.css
  95. 0 0
      public/plugins/element-plus/theme-chalk/el-select.css
  96. 1 0
      public/plugins/element-plus/theme-chalk/el-skeleton-item.css
  97. 1 0
      public/plugins/element-plus/theme-chalk/el-skeleton.css
  98. 0 0
      public/plugins/element-plus/theme-chalk/el-slider.css
  99. 1 0
      public/plugins/element-plus/theme-chalk/el-space.css
  100. 1 0
      public/plugins/element-plus/theme-chalk/el-spinner.css

+ 8 - 0
.editorconfig

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

+ 10 - 0
.eslintignore

@@ -0,0 +1,10 @@
+node_modules
+dist
+public
+scripts
+zip
+assets
+styles
+README.md
+yarn.lock
+!.*

+ 195 - 0
.eslintrc.cjs

@@ -0,0 +1,195 @@
+/* eslint-env node */
+module.exports = {
+    root: true,
+    env: {
+        browser: true,
+        es2021: true,
+        node: true,
+    },
+    parser: "vue-eslint-parser",
+    extends: [
+        "plugin:vue/vue3-recommended",
+        'eslint:recommended',
+        '@unocss'
+    ],
+    parserOptions: {
+        ecmaVersion: "latest",
+        sourceType: "module",
+    },
+    globals: {},
+    plugins: ['vue'],
+    rules: {
+        // Common
+        'semi': ['error', 'never'],
+        'curly': 'off',
+        'quotes': ['error', 'single'],
+        'quote-props': ['error', 'consistent-as-needed'],
+        'no-console': 'off',
+
+        // best-practice
+        'array-callback-return': 'error',
+        'block-scoped-var': 'error',
+        'consistent-return': 'off',
+        'complexity': 'off',
+        'eqeqeq': ['error', 'smart'],
+        'no-alert': 'warn',
+        'no-case-declarations': 'error',
+        'no-multi-spaces': 'error',
+        'no-multi-str': 'error',
+        'no-with': 'error',
+        'no-void': 'error',
+        'no-useless-escape': 'off',
+        'vars-on-top': 'error',
+        'require-await': 'off',
+        'no-return-assign': 'off',
+        'operator-linebreak': ['error', 'before'],
+        'max-statements-per-line': ['error', {
+            max: 1
+        }],
+        'vue/singleline-html-element-content-newline': 'off',
+
+        'sort-imports': [
+            'error',
+            {
+                ignoreCase: false,
+                ignoreDeclarationSort: true,
+                ignoreMemberSort: false,
+                memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
+                allowSeparatedGroups: false,
+            },
+        ],
+
+        // typescript
+        'import/named': 'off',
+
+        // Override JS
+        'no-useless-constructor': 'off',
+        'indent': 'off',
+        'no-invalid-this': 'off',
+        'no-redeclare': 'off',
+        "no-use-before-define": 'off',
+        'brace-style': 'error',
+        'comma-dangle': ['error', 'always-multiline'],
+        'object-curly-spacing': ['error', 'always'],
+        'space-before-blocks': ['error', 'always'],
+        'space-before-function-paren': [
+            'error',
+            {
+                anonymous: 'always',
+                named: 'never',
+                asyncArrow: 'always',
+            },
+        ],
+        'space-infix-ops': 'error',
+        'keyword-spacing': ['error', {
+            before: true,
+            after: true
+        }],
+        'comma-spacing': ['error', {
+            before: false,
+            after: true
+        }],
+        'no-extra-parens': ['error', 'functions'],
+        'no-dupe-class-members': 'error',
+        'no-loss-of-precision': 'error',
+        'lines-between-class-members': ['error', 'always', {
+            exceptAfterSingleLine: true
+        }],
+
+        // vue
+        "vue/html-indent": ["error", 4],
+        'vue/max-attributes-per-line': 'off',
+        'vue/no-v-html': 'off',
+        'vue/require-prop-types': 'off',
+        'vue/require-default-prop': 'off',
+        'vue/multi-word-component-names': 'off',
+        'vue/prefer-import-from-vue': 'off',
+        'vue/no-v-text-v-html-on-component': 'off',
+        'vue/no-dupe-keys': 'off',
+
+        // reactivity transform
+        'vue/no-setup-props-destructure': 'off',
+
+        'vue/component-tags-order': ['error', {
+            order: ['template', 'script', 'style'],
+        }],
+        'vue/block-tag-newline': ['error', {
+            singleline: 'always',
+            multiline: 'always',
+        }],
+        'vue/component-name-in-template-casing': ['error', 'PascalCase' || 'kebab-case'],
+        'vue/component-options-name-casing': ['error', 'PascalCase'],
+        'vue/custom-event-name-casing': ['error', 'camelCase'],
+        'vue/define-macros-order': ['error', {
+            order: ['defineProps', 'defineEmits'],
+        }],
+        'vue/html-comment-content-spacing': ['error', 'always', {
+            exceptions: ['-'],
+        }],
+        'vue/no-restricted-v-bind': ['error', '/^v-/'],
+        'vue/no-useless-v-bind': 'error',
+        'vue/no-unused-refs': 'error',
+        'vue/padding-line-between-blocks': ['error', 'always'],
+        'vue/prefer-separate-static-class': 'error',
+
+        // extensions
+        'vue/array-bracket-spacing': ['error', 'never'],
+        'vue/arrow-spacing': ['error', {
+            before: true,
+            after: true
+        }],
+        'vue/block-spacing': ['error', 'always'],
+        'vue/brace-style': ['error', 'stroustrup', {
+            allowSingleLine: true
+        }],
+        'vue/comma-dangle': ['error', 'always-multiline'],
+        'vue/comma-spacing': ['error', {
+            before: false,
+            after: true
+        }],
+        'vue/comma-style': ['error', 'last'],
+        'vue/dot-location': ['error', 'property'],
+        'vue/dot-notation': ['error', {
+            allowKeywords: true
+        }],
+        'vue/eqeqeq': ['error', 'smart'],
+        // 'vue/func-call-spacing': ['off', 'never'],
+        'vue/key-spacing': ['error', {
+            beforeColon: false,
+            afterColon: true
+        }],
+        'vue/keyword-spacing': ['error', {
+            before: true,
+            after: true
+        }],
+        'vue/no-constant-condition': 'warn',
+        'vue/no-empty-pattern': 'error',
+        'vue/no-extra-parens': ['error', 'functions'],
+        'vue/no-irregular-whitespace': 'error',
+        'vue/no-loss-of-precision': 'error',
+        'vue/no-restricted-syntax': ['error', 'DebuggerStatement', 'LabeledStatement', 'WithStatement'],
+        'vue/no-sparse-arrays': 'error',
+        'vue/object-curly-newline': ['error', {
+            multiline: true,
+            consistent: true
+        }],
+        'vue/object-curly-spacing': ['error', 'always'],
+        'vue/object-property-newline': ['error', {
+            allowMultiplePropertiesPerLine: true
+        }],
+        'vue/object-shorthand': ['error', 'always', {
+            ignoreConstructors: false,
+            avoidQuotes: true,
+        }],
+        'vue/operator-linebreak': ['error', 'before'],
+        'vue/prefer-template': 'error',
+        'vue/quote-props': ['error', 'consistent-as-needed'],
+        'vue/space-in-parens': ['error', 'never'],
+        'vue/space-infix-ops': 'error',
+        'vue/space-unary-ops': ['error', {
+            words: true,
+            nonwords: false
+        }],
+        'vue/template-curly-spacing': 'error',
+    },
+};

+ 22 - 0
.gitignore

@@ -0,0 +1,22 @@
+.DS_Store
+node_modules
+dist
+zip
+
+# local env files
+.env.local
+.env.*.local
+
+# log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw*

+ 132 - 0
README.md

@@ -0,0 +1,132 @@
+# admin
+
+基于vue3 + vite 重写的新版后台管理系统
+
+---
+
+## node.js 的版本需要  v18.0.0+[README.md](..%2Ffor_client%2FREADME.md)
+
+```shell[README.md](..%2Ffor_client%2FREADME.md)
+
+// 检查你的node版本, 如果低于v18.0.0, 请先更新node.js
+
+node -v
+
+```
+
+---
+
+### 推荐使用  `yarn` 管理依赖
+
+如果电脑上还没有安装 `yarn` ,执行以下命令安装 `yarn`
+
+``` shell
+npm install -g yarn
+
+//或者
+
+cnpm install -g yarn
+```
+
+切换为私有源
+
+```shell
+
+hnrm use hcxxy
+hyrm use hcxxy
+
+```
+
+然后在 此项目下 执行
+
+```shell
+yarn
+
+// 或者
+
+yarn install
+```
+
+---
+
+### `yarn` 的相关命令
+
+安装依赖
+
+```shell
+yarn add 依赖名
+
+// 或者
+yarn add -D 依赖名
+```
+
+检测依赖更新
+
+```shell
+yarn upgrade-interactive --latest
+```
+
+
+js-fast-way 文档
+
+- **[文档地址](https://js-fast-way.vercel.app/)**
+- **[国内文档地址](http://izaizaiaa.gitee.io/js-fast-way)**
+
+
+---
+
+
+### 打包说明
+
+`build:zip` 为一键打包为zip的方式
+`build:zip:wgt` 为一键打包为zip的方式(不包含 `/public/plugins` 文件夹)
+
+`build:test` 为一键打包,然后自动上传到测试服务器上并自动部署的方式
+`build:test:wgt` 为一键打包,然后自动上传到测试服务器上并自动部署的方式(不包含 `/public/plugins` 文件夹)
+
+- 慎用以下命令,会自动上传到生产服务器上并自动部署
+
+`build:online` 为一键打包,然后自动上传到生产服务器上并自动部署的方式
+`build:online:wgt` 为一键打包,然后自动上传到生产服务器上并自动部署的方式(不包含 `/public/plugins` 文件夹)
+
+
+### 其它说明
+
+一般来说,`/public/plugins` 很少出现变动的情况。
+
+在服务器上更新时,请注意,不要删除服务器上存在的 `plugins`,否则会出现异常。
+
+如果本地 `/public/plugins` 文件夹 有变动,请使用 非 `wgt` 的打包方式
+
+
+
+### 代码规范说明
+
+项目启用了 `eslint` 作为代码规范检测
+
+在 `vscode` 中,需要安装 `eslint` 插件,并且在 `settings.json` 中添加以下配置
+
+```json
+{
+    "eslint.autoFixOnSave": true,
+    "eslint.validate": [
+        "javascript",
+        "javascriptreact",
+        {
+            "language": "html",
+            "autoFix": true
+        },
+        {
+            "language": "vue",
+            "autoFix": true
+        }
+    ],
+    "editor.codeActionsOnSave": {
+        "source.fixAll.eslint": true
+    }
+}
+```
+
+这时,在保存代码时,会自动格式化和处理掉一些不规范的代码,但这并不是准确的,保存后,请再检查下,是否有存在不合理的地方,进行手动优化。
+
+在 `webstorm` 中,不需要安装插件,打开 webstorm 设置,语言和框架,`eslint`,勾选自动,再勾选保存时运行,即可。

+ 18 - 0
build/main.sh

@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# 打包前的准备
+node ./scripts/build.js
+
+# 执行打包命令
+vite build
+
+# 恢复配置文件
+node ./scripts/restore.js
+
+# 排除打包文件
+if [ $1 == "wgt" ]; then
+    node ./scripts/public.js
+fi
+
+# 执行打包为zip
+node ./scripts/zip.js

+ 102 - 0
build/online.sh

@@ -0,0 +1,102 @@
+#!/bin/bash
+
+#本地压缩文件名
+file_name="admin.zip"
+
+#服器上的目录地址
+file_path="measure.hczcxx.cn"
+
+#服务器演示地址
+demo_url="http://measure.hczcxx.cn/"
+
+#服务器登录密码
+passwd="%CX0&qPRk2BitWPH^tCa5jxZKPYuST"
+
+# 打包前的准备
+node ./scripts/build.js
+
+# 执行打包命令
+vite build
+
+# 恢复配置文件
+node ./scripts/restore.js
+
+# 排除打包文件
+if [ $1 == "wgt" ]; then
+    node ./scripts/public.js
+fi
+
+# 执行打包为zip
+node ./scripts/zip.js
+
+ # 上传到测试服务器
+function uploadServer() {
+    expect -c "
+        spawn scp ./zip/${file_name} root@47.110.251.215:/www/wwwroot/${file_path}
+        expect {
+            \"yes/no\" {send \"yes\r\";exp_continue;}
+            \"*password\" {set timeout 500;send \"${passwd}\r\";}
+        }
+    expect eof"
+
+#服务器上的相关操作
+/usr/bin/expect << EOF
+    set time 30
+    spawn ssh root@47.110.251.215
+    expect {
+        "*yes/no" { send "yes\r"; exp_continue }
+        "*password:" { send "${passwd}\r" }
+    }
+
+    # 进入当前项目的目录
+    expect "*]#"
+    send "cd /www/wwwroot/${file_path}\r"
+
+    # 删除 static 目录
+    expect "*]#"
+    send "rm -rf static\r"
+
+    # 解压上传的文件压缩包
+    expect "*]#"
+    send "unzip -o ${file_name}\r"
+
+    # 退出
+    send "exit\r"
+    expect eof
+EOF
+    echo "编译打包后自动部署到服务器上完成"
+    echo "服务器地址:${demo_url}"
+}
+
+# 删除 plugins 等目录
+function delPublic() {
+    echo "准备移除 plugins 等目录"
+#服务器上的相关操作
+/usr/bin/expect << EOF
+    set time 30
+    spawn ssh root@47.110.251.215
+    expect {
+        "*yes/no" { send "yes\r"; exp_continue }
+        "*password:" { send "${passwd}\r" }
+    }
+
+    # 进入当前项目的目录
+    expect "*]#"
+    send "cd /www/wwwroot/${file_path}\r"
+
+    # 删除 plugins 目录
+    expect "*]#"
+    send "rm -rf plugins\r"
+
+    # 退出
+    send "exit\r"
+    expect eof
+EOF
+    echo "plugins 等目录移除完成"
+}
+
+# 上传到测试服务器
+if [ $1 == "all" ]; then
+    delPublic
+fi
+uploadServer

+ 102 - 0
build/test.sh

@@ -0,0 +1,102 @@
+#!/bin/bash
+
+#本地压缩文件名
+file_name="admin.zip"
+
+#测试服器上的目录地址
+file_path="measure.hcxxy.com"
+
+#测试服务器上的演示地址
+demo_url="http://192.168.0.109:5180/"
+
+#测试服务器上的登录密码
+passwd="admin123@"
+
+# 打包前的准备
+node ./scripts/build.js
+
+# 执行打包命令
+vite build
+
+# 恢复配置文件
+node ./scripts/restore.js
+
+# 排除打包文件
+if [ $1 == "wgt" ]; then
+    node ./scripts/public.js
+fi
+
+# 执行打包为zip
+node ./scripts/zip.js
+
+ # 上传到测试服务器
+function uploadServer() {
+    expect -c "
+        spawn scp ./zip/${file_name} root@192.168.0.109:/www/wwwroot/${file_path}
+        expect {
+            \"yes/no\" {send \"yes\r\";exp_continue;}
+            \"*password\" {set timeout 500;send \"${passwd}\r\";}
+        }
+    expect eof"
+
+#服务器上的相关操作
+/usr/bin/expect << EOF
+    set time 30
+    spawn ssh root@192.168.0.109
+    expect {
+        "*yes/no" { send "yes\r"; exp_continue }
+        "*password:" { send "${passwd}\r" }
+    }
+
+    # 进入当前项目的目录
+    expect "*]#"
+    send "cd /www/wwwroot/${file_path}\r"
+
+    # 删除 static 目录
+    expect "*]#"
+    send "rm -rf static\r"
+
+    # 解压上传的文件压缩包
+    expect "*]#"
+    send "unzip -o ${file_name}\r"
+
+    # 退出
+    send "exit\r"
+    expect eof
+EOF
+    echo "编译打包后自动部署到测试服务器上完成"
+    echo "测试服务器地址:${demo_url}"
+}
+
+# 删除 plugins 等目录
+function delPublic() {
+    echo "准备移除 plugins 等目录"
+#服务器上的相关操作
+/usr/bin/expect << EOF
+    set time 30
+    spawn ssh root@192.168.0.109
+    expect {
+        "*yes/no" { send "yes\r"; exp_continue }
+        "*password:" { send "${passwd}\r" }
+    }
+
+    # 进入当前项目的目录
+    expect "*]#"
+    send "cd /www/wwwroot/${file_path}\r"
+
+    # 删除 plugins 目录
+    expect "*]#"
+    send "rm -rf plugins\r"
+
+    # 退出
+    send "exit\r"
+    expect eof
+EOF
+    echo "plugins 等目录移除完成"
+}
+
+# 上传到测试服务器
+if [ $1 == "all" ]; then
+    delPublic
+fi
+uploadServer

+ 28 - 0
index.html

@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html lang="zh">
+<head>
+    <meta charset="UTF-8"/>
+    <link rel="icon" href="/favicon.ico"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/plugins/element-plus/index.css"/>
+    <link rel="stylesheet" href="/plugins/element-plus/theme-chalk/dark/css-vars.css"/>
+    <link rel="stylesheet" href="/plugins/remixicon/remixicon.css"/>
+    <link rel="stylesheet" href="/plugins/fonts/index.css"/>
+    <link rel="stylesheet" href="/plugins/css/loading.css">
+</head>
+<body>
+<div id="app">
+    <div class="loading">
+        <div class="loading-wrap">
+            <div class="loading-dots">
+                <span class="dot dot-spin">
+                    <i></i><i></i><i></i><i></i>
+                </span>
+            </div>
+            <div class="loading-title">系统加载中</div>
+        </div>
+    </div>
+</div>
+<script type="module" src="/src/main.js"></script>
+</body>
+</html>

+ 53 - 0
package.json

@@ -0,0 +1,53 @@
+{
+    "name": "admin",
+    "private": true,
+    "version": "1.0.0",
+    "scripts": {
+        "dev": "vite",
+        "build": "vite build",
+        "yarn:install": "yarn --ignore-engines",
+        "build:zip": "sh ./build/main.sh all",
+        "build:zip:wgt": "sh ./build/main.sh wgt",
+        "build:test": "sh ./build/test.sh all",
+        "build:test:wgt": "sh ./build/test.sh wgt",
+        "build:online": "sh ./build/online.sh all",
+        "build:online:wgt": "sh ./build/online.sh wgt",
+        "lint": "eslint --ext .js,.vue src",
+        "lint:fix": "eslint . --fix"
+    },
+    "dependencies": {
+        "axios": "^1.6.4",
+        "crypto-js": "^4.2.0",
+        "dayjs": "^1.11.10",
+        "echarts": "^5.4.3",
+        "element-plus": "2.4.4",
+        "hc-vue3-ui": "^2.7.7",
+        "js-base64": "^3.7.5",
+        "js-fast-way": "^0.3.8",
+        "js-md5": "^0.8.3",
+        "nprogress": "^0.2.0",
+        "pinia": "^2.1.7",
+        "split.js": "^1.6.5",
+        "vue": "3.4.4",
+        "vue-router": "^4.2.5",
+        "vuedraggable": "^4.1.0"
+    },
+    "devDependencies": {
+        "@iconify-json/iconoir": "^1.1.38",
+        "@iconify-json/ri": "^1.1.18",
+        "@unocss/eslint-config": "^0.58.2",
+        "@vitejs/plugin-vue": "^4.5.2",
+        "@vue/compiler-sfc": "^3.4.4",
+        "@smallwei/avue": "^3.2.19",
+        "avue-plugin-ueditor": "^1.0.3",
+        "archiver": "^6.0.1",
+        "bignumber.js": "^9.1.2",
+        "eslint": "^8.56.0",
+        "eslint-plugin-vue": "^9.19.2",
+        "sass": "^1.69.7",
+        "unocss": "^0.58.2",
+        "unocss-preset-extra": "^0.5.3",
+        "unocss-preset-scrollbar": "^0.3.0",
+        "vite": "^4.5.0"
+    }
+}

BIN
public/favicon.ico


+ 116 - 0
public/plugins/css/loading.css

@@ -0,0 +1,116 @@
+.loading {
+  display: flex;
+  width: 100%;
+  height: 100%;
+  justify-content: center;
+  align-items: center;
+  flex-direction: column;
+  background-color: #f4f7f9
+}
+
+.loading .loading-wrap {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  display: flex;
+  -webkit-transform: translate3d(-50%, -50%, 0);
+  transform: translate3d(-50%, -50%, 0);
+  justify-content: center;
+  align-items: center;
+  flex-direction: column
+}
+
+.loading .dots {
+  display: flex;
+  padding: 98px;
+  justify-content: center;
+  align-items: center
+}
+
+.loading .loading-title {
+  display: flex;
+  font-weight: bold;
+  margin-top: 30px;
+  font-size: 34px;
+  color: rgba(0, 0, 0, .85);
+  justify-content: center;
+  align-items: center
+}
+
+
+.dot {
+  position: relative;
+  display: inline-block;
+  width: 48px;
+  height: 48px;
+  margin-top: 30px;
+  font-size: 32px;
+  transform: rotate(45deg);
+  box-sizing: border-box;
+  animation: antRotate 1.2s infinite linear
+}
+
+.dot i {
+  position: absolute;
+  display: block;
+  width: 20px;
+  height: 20px;
+  background-color: #0065cc;
+  border-radius: 100%;
+  opacity: .3;
+  transform: scale(.75);
+  animation: antSpinMove 1s infinite linear alternate;
+  transform-origin: 50% 50%
+}
+
+.dot i:nth-child(1) {
+  top: 0;
+  left: 0
+}
+
+.dot i:nth-child(2) {
+  top: 0;
+  right: 0;
+  -webkit-animation-delay: .4s;
+  animation-delay: .4s
+}
+
+.dot i:nth-child(3) {
+  right: 0;
+  bottom: 0;
+  -webkit-animation-delay: .8s;
+  animation-delay: .8s
+}
+
+.dot i:nth-child(4) {
+  bottom: 0;
+  left: 0;
+  -webkit-animation-delay: 1.2s;
+  animation-delay: 1.2s
+}
+
+@keyframes antRotate {
+  to {
+    -webkit-transform: rotate(405deg);
+    transform: rotate(405deg)
+  }
+}
+
+@-webkit-keyframes antRotate {
+  to {
+    -webkit-transform: rotate(405deg);
+    transform: rotate(405deg)
+  }
+}
+
+@keyframes antSpinMove {
+  to {
+    opacity: 1
+  }
+}
+
+@-webkit-keyframes antSpinMove {
+  to {
+    opacity: 1
+  }
+}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/index.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/base.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/dark/css-vars.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/display.css

@@ -0,0 +1 @@
+@media only screen and (max-width:767px){.hidden-xs-only{display:none!important}}@media only screen and (min-width:768px){.hidden-sm-and-up{display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.hidden-sm-only{display:none!important}}@media only screen and (max-width:991px){.hidden-sm-and-down{display:none!important}}@media only screen and (min-width:992px){.hidden-md-and-up{display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.hidden-md-only{display:none!important}}@media only screen and (max-width:1199px){.hidden-md-and-down{display:none!important}}@media only screen and (min-width:1200px){.hidden-lg-and-up{display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.hidden-lg-only{display:none!important}}@media only screen and (max-width:1919px){.hidden-lg-and-down{display:none!important}}@media only screen and (min-width:1920px){.hidden-xl-only{display:none!important}}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-affix.css

@@ -0,0 +1 @@
+.el-affix--fixed{position:fixed}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-alert.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-aside.css

@@ -0,0 +1 @@
+.el-aside{overflow:auto;box-sizing:border-box;flex-shrink:0;width:var(--el-aside-width,300px)}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-autocomplete.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-avatar.css

@@ -0,0 +1 @@
+.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size:40px;--el-avatar-size-small:24px;--el-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size)}.el-avatar>img{display:block;width:100%;height:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-backtop.css

@@ -0,0 +1 @@
+.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);position:fixed;background-color:var(--el-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--el-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-badge.css

@@ -0,0 +1 @@
+.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;position:relative;vertical-align:middle;display:inline-block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;justify-content:center;align-items:center;font-size:var(--el-badge-font-size);height:var(--el-badge-size);padding:0 var(--el-badge-padding);white-space:nowrap;border:1px solid var(--el-bg-color)}.el-badge__content.is-fixed{position:absolute;top:0;right:calc(1px + var(--el-badge-size)/ 2);transform:translateY(-50%) translateX(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}

+ 0 - 0
public/plugins/element-plus/theme-chalk/el-breadcrumb-item.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-breadcrumb.css

@@ -0,0 +1 @@
+.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:var(--el-text-color-placeholder)}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;display:inline-flex;align-items:center}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;transition:var(--el-transition-color);color:var(--el-text-color-primary)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:var(--el-text-color-regular);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-button-group.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-button.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-calendar.css

@@ -0,0 +1 @@
+.el-calendar{--el-calendar-border:var(--el-table-border, 1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:var(--el-calendar-header-border-bottom)}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:var(--el-text-color-regular);font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:var(--el-calendar-cell-width)}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-card.css

@@ -0,0 +1 @@
+.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank)}.el-card{border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);overflow:hidden;color:var(--el-text-color-primary);transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding)}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-carousel-item.css

@@ -0,0 +1 @@
+.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{width:100%;height:50%}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--el-color-white);opacity:.24;transition:var(--el-transition-duration-fast)}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-carousel.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-cascader-panel.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-cascader.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-check-tag.css

@@ -0,0 +1 @@
+.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all);font-weight:700}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.is-checked:hover{background-color:var(--el-color-primary-light-7)}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-checkbox-button.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-checkbox-group.css

@@ -0,0 +1 @@
+.el-checkbox-group{font-size:0;line-height:0}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-checkbox.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-col.css


+ 0 - 0
public/plugins/element-plus/theme-chalk/el-collapse-item.css


+ 0 - 0
public/plugins/element-plus/theme-chalk/el-collapse-transition.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-collapse.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-color-picker.css


+ 0 - 0
public/plugins/element-plus/theme-chalk/el-config-provider.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-container.css

@@ -0,0 +1 @@
+.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{flex-direction:column}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-date-picker.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-descriptions-item.css

@@ -0,0 +1 @@
+.el-descriptions__label.el-descriptions__cell.is-bordered-label{font-weight:700;color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background)}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-descriptions.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-dialog.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-divider.css

@@ -0,0 +1 @@
+.el-divider{position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0;border-top:1px var(--el-border-color) var(--el-border-style)}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative;border-left:1px var(--el-border-color) var(--el-border-style)}.el-divider__text{position:absolute;background-color:var(--el-bg-color);padding:0 20px;font-weight:500;color:var(--el-text-color-primary);font-size:14px}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-drawer.css


+ 0 - 0
public/plugins/element-plus/theme-chalk/el-dropdown-item.css


+ 0 - 0
public/plugins/element-plus/theme-chalk/el-dropdown-menu.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-dropdown.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-empty.css

@@ -0,0 +1 @@
+.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-empty-padding)}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:100%;height:100%;vertical-align:top}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-secondary)}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-footer.css

@@ -0,0 +1 @@
+.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height)}

+ 0 - 0
public/plugins/element-plus/theme-chalk/el-form-item.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-form.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-header.css

@@ -0,0 +1 @@
+.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-header-height)}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-icon.css

@@ -0,0 +1 @@
+.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}.el-icon{--color:inherit;height:1em;width:1em;line-height:1em;display:inline-flex;justify-content:center;align-items:center;position:relative;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-image-viewer.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-image.css

@@ -0,0 +1 @@
+.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top;opacity:1}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{position:absolute;top:0;left:0}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{display:flex;justify-content:center;align-items:center;font-size:14px;background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle}.el-image__preview{cursor:pointer}

+ 0 - 0
public/plugins/element-plus/theme-chalk/el-infinite-scroll.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-input-number.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-input.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-link.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-loading.css

@@ -0,0 +1 @@
+:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:var(--el-mask-color);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity var(--el-transition-duration)}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/ 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{top:50%;margin-top:calc((0px - var(--el-loading-spinner-size))/ 2);width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@-webkit-keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-main.css

@@ -0,0 +1 @@
+.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:var(--el-main-padding)}

+ 0 - 0
public/plugins/element-plus/theme-chalk/el-menu-item-group.css


+ 0 - 0
public/plugins/element-plus/theme-chalk/el-menu-item.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-menu.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-message-box.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-message.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-notification.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-option-group.css

@@ -0,0 +1 @@
+.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:var(--el-border-color-light)}.el-select-group__split-dash{position:absolute;left:20px;right:20px;height:1px;background:var(--el-border-color-light)}.el-select-group__title{padding-left:20px;font-size:12px;color:var(--el-color-info);line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-option-item.css

@@ -0,0 +1 @@
+.el-select-dropdown__option-item{font-size:var(--el-select-font-size);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__option-item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__option-item.is-disabled:hover{background-color:var(--el-bg-color)}.el-select-dropdown__option-item.is-selected{background-color:var(--el-fill-color-light);font-weight:700}.el-select-dropdown__option-item.is-selected:not(.is-multiple){color:var(--el-color-primary)}.el-select-dropdown__option-item.hover{background-color:var(--el-fill-color-light)!important}.el-select-dropdown__option-item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon{position:absolute;right:20px;top:0;height:inherit;font-size:12px}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon svg{height:inherit;vertical-align:middle}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-option.css

@@ -0,0 +1 @@
+.el-select-dropdown__item{font-size:var(--el-font-size-base);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.selected{color:var(--el-color-primary);font-weight:700}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-overlay.css

@@ -0,0 +1 @@
+.el-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100%;background-color:var(--el-overlay-color-lighter);overflow:auto}.el-overlay .el-overlay-root{height:0}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-page-header.css

@@ -0,0 +1 @@
+.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{display:flex;align-items:center;justify-content:space-between;line-height:24px}.el-page-header__left{display:flex;align-items:center;margin-right:40px;position:relative}.el-page-header__back{display:flex;align-items:center;cursor:pointer}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{font-size:16px;margin-right:10px;display:flex;align-items:center}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:var(--el-text-color-primary)}.el-page-header__breadcrumb{margin-bottom:16px}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-pagination.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-popconfirm.css

@@ -0,0 +1 @@
+.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-popover.css

@@ -0,0 +1 @@
+.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);min-width:150px;border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);word-break:break-all;box-sizing:border-box}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-popper.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-progress.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-radio-button.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-radio-group.css

@@ -0,0 +1 @@
+.el-radio-group{display:inline-flex;align-items:center;flex-wrap:wrap;font-size:0}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-radio.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-rate.css

@@ -0,0 +1 @@
+.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary)}.el-rate{display:inline-flex;align-items:center;height:32px}.el-rate:active,.el-rate:focus{outline:0}.el-rate__item{cursor:pointer;display:inline-block;position:relative;font-size:0;vertical-align:middle;color:var(--el-rate-void-color);line-height:normal}.el-rate .el-rate__icon{position:relative;display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden;color:var(--el-rate-fill-color)}.el-rate__decimal--box{position:absolute;top:0;left:0}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{cursor:auto;color:var(--el-rate-disabled-void-color)}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-reset.css

@@ -0,0 +1 @@
+@charset "UTF-8";body{font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;font-weight:400;font-size:var(--el-font-size-base);color:var(--el-text-color-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}a{color:var(--el-color-primary);text-decoration:none}a:focus,a:hover{color:var(--el-color-primary-light-3)}a:active{color:var(--el-color-primary-dark-2)}h1,h2,h3,h4,h5,h6{color:var(--el-text-color-regular);font-weight:inherit}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child{margin-bottom:0}h1{font-size:calc(var(--el-font-size-base) + 6px)}h2{font-size:calc(var(--el-font-size-base) + 4px)}h3{font-size:calc(var(--el-font-size-base) + 2px)}h4,h5,h6,p{font-size:inherit}p{line-height:1.8}p:first-child{margin-top:0}p:last-child{margin-bottom:0}sub,sup{font-size:calc(var(--el-font-size-base) - 1px)}small{font-size:calc(var(--el-font-size-base) - 2px)}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid var(--el-border-color-lighter)}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-result.css

@@ -0,0 +1 @@
+.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-result-padding)}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{margin:0;font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-row.css

@@ -0,0 +1 @@
+.el-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-scrollbar.css

@@ -0,0 +1 @@
+.el-scrollbar{--el-scrollbar-opacity:0.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:0.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary)}.el-scrollbar{overflow:hidden;position:relative;height:100%}.el-scrollbar__wrap{overflow:auto;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3)}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity 340ms ease-out}.el-scrollbar-fade-leave-active{transition:opacity 120ms ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-select-dropdown-v2.css

@@ -0,0 +1 @@
+.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__option-item.is-selected:not(.is-multiple).is-disabled{color:var(--el-text-color-disabled)}.el-select-dropdown__option-item.is-selected:not(.is-multiple).is-disabled::after{background-color:var(--el-text-color-disabled)}.el-select-dropdown__option-item:hover:not(.hover){background-color:transparent}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-disabled.is-selected{color:var(--el-text-color-disabled)}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;margin:6px 0!important;padding:0!important;box-sizing:border-box}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-select-dropdown.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-select-v2.css


File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-select.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-skeleton-item.css

@@ -0,0 +1 @@
+.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);display:inline-block;height:16px;border-radius:var(--el-border-radius-base);width:100%}.el-skeleton__circle{border-radius:50%;width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size)}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-skeleton.css

@@ -0,0 +1 @@
+.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@-webkit-keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line{height:16px;margin-top:16px;background:var(--el-skeleton-color)}.el-skeleton__paragraph{height:16px;margin-top:16px;background:var(--el-skeleton-color)}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%;-webkit-animation:el-skeleton-loading 1.4s ease infinite;animation:el-skeleton-loading 1.4s ease infinite}

File diff suppressed because it is too large
+ 0 - 0
public/plugins/element-plus/theme-chalk/el-slider.css


+ 1 - 0
public/plugins/element-plus/theme-chalk/el-space.css

@@ -0,0 +1 @@
+.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}

+ 1 - 0
public/plugins/element-plus/theme-chalk/el-spinner.css

@@ -0,0 +1 @@
+.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{transform:rotate(360deg)}}@keyframes rotate{100%{transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}

Some files were not shown because too many files changed in this diff