ln 2 år sedan
förälder
incheckning
c15c692881
100 ändrade filer med 4171 tillägg och 1104 borttagningar
  1. 0 0
      .env
  2. 1 0
      .env.development
  3. 2 0
      .env.eapi
  4. 1 0
      .env.production
  5. 1 1
      .eslintrc.js
  6. 0 13
      .github/FUNDING.yml
  7. 1 1
      .vscode/settings.json
  8. 1 1
      README.en.md
  9. 1 1
      deploy.sh
  10. BIN
      manage/favicon.ico
  11. BIN
      manage/favicon_backup.ico
  12. 12 0
      manage/index.html
  13. BIN
      manage/logo.png
  14. 2 0
      manage/robots.txt
  15. 7 0
      manage/static/css/app.c66a46be.css
  16. 6 0
      manage/static/css/chunk-0e7276a4.97f549c4.css
  17. 7 0
      manage/static/css/chunk-0eb10c9a.af20d3b1.css
  18. 6 0
      manage/static/css/chunk-37ae9b01.a05c48da.css
  19. 6 0
      manage/static/css/chunk-459c9879.352784ba.css
  20. 6 0
      manage/static/css/chunk-5709ad62.22468911.css
  21. 6 0
      manage/static/css/chunk-59a53b32.167b519e.css
  22. 6 0
      manage/static/css/chunk-5a3493ef.601fad95.css
  23. 31 0
      manage/static/css/chunk-5b685476.6edec273.css
  24. 6 0
      manage/static/css/chunk-6b208424.3f1439af.css
  25. 6 0
      manage/static/css/chunk-7cbc41e5.8ba8f05b.css
  26. 6 0
      manage/static/css/chunk-7d6bdf06.a3bc1c55.css
  27. 6 0
      manage/static/css/chunk-a1283f56.39169ebe.css
  28. 6 0
      manage/static/css/chunk-b054154c.21417966.css
  29. 6 0
      manage/static/css/chunk-f9555fc2.b9abe3fa.css
  30. 6 0
      manage/static/css/element-ui.0e3a750b.css
  31. 99 0
      manage/static/css/loading.css
  32. 6 0
      manage/static/css/vab-layouts.12c46285.css
  33. BIN
      manage/static/fonts/element-icons.535877f5.woff
  34. BIN
      manage/static/fonts/element-icons.732389de.ttf
  35. BIN
      manage/static/fonts/fontawesome-webfont.674f50d2.674f50d2.eot
  36. BIN
      manage/static/fonts/fontawesome-webfont.af7ae505.af7ae505.woff2
  37. BIN
      manage/static/fonts/fontawesome-webfont.b06871f2.b06871f2.ttf
  38. BIN
      manage/static/fonts/fontawesome-webfont.fee66e71.fee66e71.woff
  39. BIN
      manage/static/img/401.475d4b80.png
  40. BIN
      manage/static/img/404.36bda403.png
  41. BIN
      manage/static/img/background.c7e07de7.jpg
  42. 2671 0
      manage/static/img/fontawesome-webfont.912ec66d.912ec66d.svg
  43. BIN
      manage/static/img/left.98ce7024.jpg
  44. BIN
      manage/static/img/lqr_logo.bce44563.png
  45. BIN
      manage/static/img/pro.a013cf99.png
  46. BIN
      manage/static/img/right.3d769702.jpg
  47. BIN
      manage/static/img/zfb_100.77bf9cb5.jpg
  48. BIN
      manage/static/img/zfb_699.4eb31240.jpg
  49. BIN
      manage/static/img/zfb_799.bb927378.jpg
  50. BIN
      manage/static/img/zfb_kf.e340e885.jpg
  51. 95 0
      manage/static/js/app.2cade576.js
  52. 7 0
      manage/static/js/chunk-0e7276a4.870b8345.js
  53. 7 0
      manage/static/js/chunk-0eb10c9a.db0d4c12.js
  54. 7 0
      manage/static/js/chunk-37ae9b01.f64c1e79.js
  55. 7 0
      manage/static/js/chunk-459c9879.6e36886d.js
  56. 7 0
      manage/static/js/chunk-5709ad62.ab3afe8c.js
  57. 7 0
      manage/static/js/chunk-59a53b32.120536d7.js
  58. 7 0
      manage/static/js/chunk-5a3493ef.c788e996.js
  59. 51 0
      manage/static/js/chunk-5b685476.b75a5e67.js
  60. 7 0
      manage/static/js/chunk-6b208424.c7ef6191.js
  61. 7 0
      manage/static/js/chunk-7cbc41e5.8bdb006c.js
  62. 7 0
      manage/static/js/chunk-7d6bdf06.1c3c9074.js
  63. 7 0
      manage/static/js/chunk-a1283f56.0c7845fe.js
  64. 7 0
      manage/static/js/chunk-b054154c.6c414bd5.js
  65. 7 0
      manage/static/js/chunk-f9555fc2.fd76d168.js
  66. 7 0
      manage/static/js/element-ui.cfb27695.js
  67. 7 0
      manage/static/js/vab-chunk-024ddcda.9ff5c737.js
  68. 7 0
      manage/static/js/vab-chunk-47eec42d.2ad3f2d5.js
  69. 7 0
      manage/static/js/vab-chunk-d939e436.afa00d83.js
  70. 7 0
      manage/static/js/vab-layouts.7b155346.js
  71. 1 1
      mock/controller/goodsList.js
  72. 1 237
      mock/controller/router.js
  73. 0 6
      mock/index.js
  74. 1 1
      mock/utils/index.js
  75. 4 15
      package.json
  76. 1 1
      public/index.html
  77. BIN
      public/logo.png
  78. 1 1
      push.sh
  79. 7 4
      src/App.vue
  80. 16 16
      src/api/github.js
  81. 139 0
      src/api/station.js
  82. 44 13
      src/api/table.js
  83. 66 0
      src/components/ExportExcel/index.vue
  84. 1 1
      src/components/SelectTree/index.vue
  85. 67 0
      src/components/UploadExcel/index.vue
  86. 9 3
      src/components/VabCharge/index.vue
  87. 15 7
      src/components/VabProfile/index.vue
  88. 9 2
      src/components/VabSnow/index.vue
  89. 17 5
      src/components/VabUpload/index.vue
  90. 4 4
      src/config/setting.config.js
  91. 11 3
      src/layouts/components/VabAd/index.vue
  92. 69 75
      src/layouts/components/VabAppMain/index.vue
  93. 56 78
      src/layouts/components/VabAvatar/index.vue
  94. 8 2
      src/layouts/components/VabBreadcrumb/index.vue
  95. 65 61
      src/layouts/components/VabLogo/index.vue
  96. 93 81
      src/layouts/components/VabNavBar/index.vue
  97. 173 183
      src/layouts/components/VabThemeBar/index.vue
  98. 11 5
      src/layouts/index.vue
  99. 89 282
      src/router/index.js
  100. 0 0
      src/styles/vab.scss

+ 0 - 0
.env


+ 1 - 0
.env.development

@@ -0,0 +1 @@
+VUE_APP_API=http://192.168.1.104:7020

+ 2 - 0
.env.eapi

@@ -0,0 +1,2 @@
+NODE_ENV=eapi
+VUE_APP_API=http://192.168.1.117:7020

+ 1 - 0
.env.production

@@ -0,0 +1 @@
+VUE_APP_API=http://10.81.3.155:7020

+ 1 - 1
.eslintrc.js

@@ -8,7 +8,7 @@ module.exports = {
   env: {
     node: true,
   },
-  extends: ['plugin:vue/recommended', '@vue/prettier'],
+  extends: ['plugin:vue/recommended'],
   rules: {
     'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
     'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',

+ 0 - 13
.github/FUNDING.yml

@@ -1,13 +0,0 @@
-# These are supported funding model platforms
-
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
-patreon: # Replace with a single Patreon username
-open_collective: chuzhixin
-#open_collective: vue-admin-plus
-ko_fi: # Replace with a single Ko-fi username
-tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-custom: https://opencollective.com/vue-admin-plus # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

+ 1 - 1
.vscode/settings.json

@@ -1,6 +1,6 @@
 {
   "[vue]": {
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
+    "editor.defaultFormatter": "Vue.volar"
   },
   "editor.quickSuggestions": {
     "strings": true

+ 1 - 1
README.en.md

@@ -1,7 +1,7 @@
 [简体中文](./README.md) | English
 
 <div align="center"><img width="200" src="https://fastly.jsdelivr.net/gh/chuzhixin/image/logo/vab.png"/>
-<h1> vue-admin-better(element-ui) </h1>
+<h1>1111</h1>
 <p>The flying snow all over the sky is a flying note, playing out expectations with blessings. May the epidemic dissipate as soon as possible, may you no longer have regrets next year, may you be warm in winter, may you not be cold in spring, and may you have lights in the dark and an umbrella in the rain.
 </p>
 </div>

+ 1 - 1
deploy.sh

@@ -11,7 +11,7 @@ git push -f "https://${access_token}@gitee.com/chu1204505056/vue-admin-beautiful
 git push -f "https://${access_token}@gitee.com/chu1204505056/vue-admin-beautiful-element.git" master:gh-pages
 start "https://gitee.com/chu1204505056/vue-admin-beautiful/pages"
 start "https://gitee.com/chu1204505056/vue-admin-beautiful-element/pages"
-git push -f "https://${access_token}@github.com/chuzhixin/vue-admin-beautiful.git" master:gh-pages
+# git push -f "https://${access_token}@github.com/chuzhixin/vue-admin-beautiful.git" master:gh-pages
 cd -
 exec /bin/bash
 

BIN
manage/favicon.ico


BIN
manage/favicon_backup.ico


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 12 - 0
manage/index.html


BIN
manage/logo.png


+ 2 - 0
manage/robots.txt

@@ -0,0 +1,2 @@
+User-agent: *
+Allow: /

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/css/app.c66a46be.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 6 - 0
manage/static/css/chunk-0e7276a4.97f549c4.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/css/chunk-0eb10c9a.af20d3b1.css


+ 6 - 0
manage/static/css/chunk-37ae9b01.a05c48da.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.inputs[data-v-237db4f4]{width:200px}.cascaders[data-v-077f1030]{width:300px}

+ 6 - 0
manage/static/css/chunk-459c9879.352784ba.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.input-file{display:none}.inputs[data-v-609f70e9]{width:200px}

+ 6 - 0
manage/static/css/chunk-5709ad62.22468911.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.inputs[data-v-5ed22276]{width:200px}.lists[data-v-5ed22276],.title[data-v-fc8ed440]{justify-content:space-between}.left .left-item[data-v-fc8ed440],.left[data-v-fc8ed440],.lists[data-v-5ed22276],.title[data-v-fc8ed440]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-fc8ed440]{margin-right:10px}

+ 6 - 0
manage/static/css/chunk-59a53b32.167b519e.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.inputs[data-v-5b7bc336]{width:200px}.lists[data-v-5b7bc336],.title[data-v-65718fd6]{justify-content:space-between}.left .left-item[data-v-65718fd6],.left[data-v-65718fd6],.lists[data-v-5b7bc336],.title[data-v-65718fd6]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-65718fd6]{margin-right:10px}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 6 - 0
manage/static/css/chunk-5a3493ef.601fad95.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 31 - 0
manage/static/css/chunk-5b685476.6edec273.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 6 - 0
manage/static/css/chunk-6b208424.3f1439af.css


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 6 - 0
manage/static/css/chunk-7cbc41e5.8ba8f05b.css


+ 6 - 0
manage/static/css/chunk-7d6bdf06.a3bc1c55.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.inputs[data-v-71fa1f50]{width:200px}.lists[data-v-71fa1f50],.title[data-v-a51fd034]{justify-content:space-between}.left .left-item[data-v-a51fd034],.left[data-v-a51fd034],.lists[data-v-71fa1f50],.title[data-v-a51fd034]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-a51fd034]{margin-right:10px}

+ 6 - 0
manage/static/css/chunk-a1283f56.39169ebe.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.inputs[data-v-765d502a]{width:200px}.title[data-v-bcdee93c]{justify-content:space-between}.left .left-item[data-v-bcdee93c],.left[data-v-bcdee93c],.title[data-v-bcdee93c]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-bcdee93c]{margin-right:10px}

+ 6 - 0
manage/static/css/chunk-b054154c.21417966.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.inputs[data-v-791c34ff]{width:200px}.lists[data-v-791c34ff],.title[data-v-5fb7c490]{justify-content:space-between}.left .left-item[data-v-5fb7c490],.left[data-v-5fb7c490],.lists[data-v-791c34ff],.title[data-v-5fb7c490]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-5fb7c490]{margin-right:10px}

+ 6 - 0
manage/static/css/chunk-f9555fc2.b9abe3fa.css

@@ -0,0 +1,6 @@
+/*!
+ *  build: vue-admin-better 
+ *  vue-admin-beautiful.com 
+ *  https://gitee.com/chu1204505056/vue-admin-better 
+ *  time: 2022-9-30 17:05:29
+ */.inputs[data-v-15869e09]{width:200px}.title[data-v-0e4d8818]{justify-content:space-between}.left .left-item[data-v-0e4d8818],.left[data-v-0e4d8818],.title[data-v-0e4d8818]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-0e4d8818]{margin-right:10px}.cascaders[data-v-0e4d8818]{width:300px}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 6 - 0
manage/static/css/element-ui.0e3a750b.css


+ 99 - 0
manage/static/css/loading.css

@@ -0,0 +1,99 @@
+/**
+ * @description 雪花屏代码,基于ant-design修改
+ **/
+.first-loading-wrp {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  height: 90vh;
+  min-height: 90vh;
+}
+
+.first-loading-wrp > h1 {
+  font-size: 30px;
+  font-weight: bolder;
+}
+
+.first-loading-wrp .loading-wrp {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 98px;
+}
+
+.dot {
+  position: relative;
+  box-sizing: border-box;
+  display: inline-block;
+  width: 64px;
+  height: 64px;
+  font-size: 64px;
+  transform: rotate(45deg);
+  animation: antRotate 1.2s infinite linear;
+}
+
+.dot i {
+  position: absolute;
+  display: block;
+  width: 28px;
+  height: 28px;
+  background-color: #1890ff;
+  border-radius: 100%;
+  opacity: 0.3;
+  transform: scale(0.75);
+  transform-origin: 50% 50%;
+  animation: antSpinMove 1s infinite linear alternate;
+}
+
+.dot i:nth-child(1) {
+  top: 0;
+  left: 0;
+}
+
+.dot i:nth-child(2) {
+  top: 0;
+  right: 0;
+  -webkit-animation-delay: 0.4s;
+  animation-delay: 0.4s;
+}
+
+.dot i:nth-child(3) {
+  right: 0;
+  bottom: 0;
+  -webkit-animation-delay: 0.8s;
+  animation-delay: 0.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;
+  }
+}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 6 - 0
manage/static/css/vab-layouts.12c46285.css


BIN
manage/static/fonts/element-icons.535877f5.woff


BIN
manage/static/fonts/element-icons.732389de.ttf


BIN
manage/static/fonts/fontawesome-webfont.674f50d2.674f50d2.eot


BIN
manage/static/fonts/fontawesome-webfont.af7ae505.af7ae505.woff2


BIN
manage/static/fonts/fontawesome-webfont.b06871f2.b06871f2.ttf


BIN
manage/static/fonts/fontawesome-webfont.fee66e71.fee66e71.woff


BIN
manage/static/img/401.475d4b80.png


BIN
manage/static/img/404.36bda403.png


BIN
manage/static/img/background.c7e07de7.jpg


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 2671 - 0
manage/static/img/fontawesome-webfont.912ec66d.912ec66d.svg


BIN
manage/static/img/left.98ce7024.jpg


BIN
manage/static/img/lqr_logo.bce44563.png


BIN
manage/static/img/pro.a013cf99.png


BIN
manage/static/img/right.3d769702.jpg


BIN
manage/static/img/zfb_100.77bf9cb5.jpg


BIN
manage/static/img/zfb_699.4eb31240.jpg


BIN
manage/static/img/zfb_799.bb927378.jpg


BIN
manage/static/img/zfb_kf.e340e885.jpg


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 95 - 0
manage/static/js/app.2cade576.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-0e7276a4.870b8345.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-0eb10c9a.db0d4c12.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-37ae9b01.f64c1e79.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-459c9879.6e36886d.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-5709ad62.ab3afe8c.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-59a53b32.120536d7.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-5a3493ef.c788e996.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 51 - 0
manage/static/js/chunk-5b685476.b75a5e67.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-6b208424.c7ef6191.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-7cbc41e5.8bdb006c.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-7d6bdf06.1c3c9074.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-a1283f56.0c7845fe.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-b054154c.6c414bd5.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/chunk-f9555fc2.fd76d168.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/element-ui.cfb27695.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/vab-chunk-024ddcda.9ff5c737.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/vab-chunk-47eec42d.2ad3f2d5.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/vab-chunk-d939e436.afa00d83.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 0
manage/static/js/vab-layouts.7b155346.js


+ 1 - 1
mock/controller/goodsList.js

@@ -7,7 +7,7 @@ for (let i = 0; i < count; i++) {
   List.push(
     mock({
       uuid: '@uuid',
-      image: `https://picsum.photos/300/600?random=${num++}`,
+      // image: `https://picsum.photos/300/600?random=${num++}`,
       title: '@ctitle',
       description: '@csentence',
       link: 'https://www.baidu.com',

+ 1 - 237
mock/controller/router.js

@@ -39,247 +39,11 @@ const data = [
         path: 'menuManagement',
         name: 'MenuManagement',
         component: '@/views/personnelManagement/menuManagement/index',
-        meta: { title: '菜单管理', badge: 'New' },
+        meta: { title: '菜单管理' },
       },
     ],
   },
-  {
-    path: '/vab',
-    component: 'Layout',
-    redirect: 'noRedirect',
-    name: 'Vab',
-    alwaysShow: true,
-    meta: { title: '组件', icon: 'cloud' },
-    children: [
-      {
-        path: 'permissions',
-        name: 'Permission',
-        component: '@/views/vab/permissions/index',
-        meta: {
-          title: '权限控制',
-          permissions: ['admin', 'editor'],
-          badge: 'New',
-        },
-      },
-      {
-        path: 'icon',
-        component: 'EmptyLayout',
-        redirect: 'noRedirect',
-        name: 'Icon',
-        meta: {
-          title: '图标',
-          permissions: ['admin'],
-        },
-        children: [
-          {
-            path: 'awesomeIcon',
-            name: 'AwesomeIcon',
-            component: '@/views/vab/icon/index',
-            meta: { title: '常规图标' },
-          },
-          {
-            path: 'colorfulIcon',
-            name: 'ColorfulIcon',
-            component: '@/views/vab/icon/colorfulIcon',
-            meta: { title: '多彩图标' },
-          },
-        ],
-      },
-      {
-        path: 'table',
-        component: '@/views/vab/table/index',
-        name: 'Table',
-        meta: {
-          title: '表格',
-          permissions: ['admin'],
-        },
-      },
-      {
-        path: 'map',
-        name: 'Map',
-        component: '@/views/vab/map/index',
-        meta: { title: '地图', permissions: ['admin'], badge: 'Pro' },
-      },
-      {
-        path: 'webSocket',
-        name: 'WebSocket',
-        component: '@/views/vab/webSocket/index',
-        meta: { title: 'webSocket', permissions: ['admin'] },
-      },
-      {
-        path: 'form',
-        name: 'Form',
-        component: '@/views/vab/form/index',
-        meta: { title: '表单', permissions: ['admin'] },
-      },
-      {
-        path: 'element',
-        name: 'Element',
-        component: '@/views/vab/element/index',
-        meta: { title: '常用组件', permissions: ['admin'] },
-      },
-      {
-        path: 'tree',
-        name: 'Tree',
-        component: '@/views/vab/tree/index',
-        meta: { title: '树', permissions: ['admin'] },
-      },
-      {
-        path: 'verify',
-        name: 'Verify',
-        component: '@/views/vab/verify/index',
-        meta: { title: '验证码', permissions: ['admin'] },
-      },
-      {
-        path: 'menu1',
-        component: '@/views/vab/nested/menu1/index',
-        name: 'Menu1',
-        alwaysShow: true,
-        meta: {
-          title: '嵌套路由 1',
-          permissions: ['admin'],
-        },
-        children: [
-          {
-            path: 'menu1-1',
-            name: 'Menu1-1',
-            alwaysShow: true,
-            meta: { title: '嵌套路由 1-1' },
-            component: '@/views/vab/nested/menu1/menu1-1/index',
-
-            children: [
-              {
-                path: 'menu1-1-1',
-                name: 'Menu1-1-1',
-                meta: { title: '嵌套路由 1-1-1' },
-                component: '@/views/vab/nested/menu1/menu1-1/menu1-1-1/index',
-              },
-            ],
-          },
-        ],
-      },
-      {
-        path: 'magnifier',
-        name: 'Magnifier',
-        component: '@/views/vab/magnifier/index',
-        meta: { title: '放大镜', permissions: ['admin'] },
-      },
-      {
-        path: 'loading',
-        name: 'Loading',
-        component: '@/views/vab/loading/index',
-        meta: { title: 'loading', permissions: ['admin'] },
-      },
-      {
-        path: 'player',
-        name: 'Player',
-        component: '@/views/vab/player/index',
-        meta: { title: '视频播放器', permissions: ['admin'] },
-      },
-      {
-        path: 'markdownEditor',
-        name: 'MarkdownEditor',
-        component: '@/views/vab/markdownEditor/index',
-        meta: { title: 'markdown编辑器', permissions: ['admin'] },
-      },
-      {
-        path: 'editor',
-        name: 'Editor',
-        component: '@/views/vab/editor/index',
-        meta: { title: '富文本编辑器', permissions: ['admin'], badge: 'New' },
-      },
-      {
-        path: 'backToTop',
-        name: 'BackToTop',
-        component: '@/views/vab/backToTop/index',
-        meta: { title: '返回顶部', permissions: ['admin'] },
-      },
-      {
-        path: 'lodash',
-        name: 'Lodash',
-        component: '@/views/vab/lodash/index',
-        meta: { title: 'lodash', permissions: ['admin'] },
-      },
-      {
-        path: 'smallComponents',
-        name: 'SmallComponents',
-        component: '@/views/vab/smallComponents/index',
-        meta: { title: '小组件', permissions: ['admin'] },
-      },
-
-      {
-        path: 'upload',
-        name: 'Upload',
-        component: '@/views/vab/upload/index',
-        meta: { title: '上传', permissions: ['admin'] },
-      },
-      {
-        path: 'log',
-        name: 'Log',
-        component: '@/views/vab/errorLog/index',
-        meta: { title: '错误日志模拟', permissions: ['admin'] },
-      },
-      {
-        path: 'more',
-        name: 'More',
-        component: '@/views/vab/more/index',
-        meta: { title: '关于', permissions: ['admin'] },
-      },
-    ],
-  },
-  {
-    path: '/mall',
-    component: 'Layout',
-    redirect: 'noRedirect',
-    name: 'Mall',
-    meta: {
-      title: '商城',
-      icon: 'shopping-cart',
-      permissions: ['admin'],
-    },
 
-    children: [
-      {
-        path: 'pay',
-        name: 'Pay',
-        component: '@/views/mall/pay/index',
-        meta: {
-          title: '支付',
-          noKeepAlive: true,
-        },
-        children: null,
-      },
-      {
-        path: 'goodsList',
-        name: 'GoodsList',
-        component: '@/views/mall/goodsList/index',
-        meta: {
-          title: '商品列表',
-        },
-      },
-    ],
-  },
-  {
-    path: '/error',
-    component: 'EmptyLayout',
-    redirect: 'noRedirect',
-    name: 'Error',
-    meta: { title: '错误页', icon: 'bug' },
-    children: [
-      {
-        path: '401',
-        name: 'Error401',
-        component: '@/views/401',
-        meta: { title: '401' },
-      },
-      {
-        path: '404',
-        name: 'Error404',
-        component: '@/views/404',
-        meta: { title: '404' },
-      },
-    ],
-  },
 ]
 module.exports = [
   {

+ 0 - 6
mock/index.js

@@ -47,12 +47,6 @@ const responseFake = (url, type, respond) => {
     type: type || 'get',
     response(req, res) {
       res.status(200)
-      if (JSON.stringify(req.body) !== '{}') {
-        console.log(chalk.green(`> 请求地址:${req.path}`))
-        console.log(chalk.green(`> 请求参数:${JSON.stringify(req.body)}\n`))
-      } else {
-        console.log(chalk.green(`> 请求地址:${req.path}\n`))
-      }
       res.json(mock(respond instanceof Function ? respond(req, res) : respond))
     },
   }

+ 1 - 1
mock/utils/index.js

@@ -10,7 +10,7 @@ const fs = require('fs')
  * @returns {string}
  */
 function handleRandomImage(width = 50, height = 50) {
-  return `https://picsum.photos/${width}/${height}?random=${Random.guid()}`
+  // return `https://picsum.photos/${width}/${height}?random=${Random.guid()}`
 }
 
 /**

+ 4 - 15
package.json

@@ -4,9 +4,6 @@
   "author": "vue-admin-beautiful",
   "participants": [],
   "homepage": "https://chu1204505056.gitee.io/vue-admin-better",
-  "publishConfig": {
-    "registry": "https://npm.pkg.github.com/"
-  },
   "scripts": {
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
@@ -20,15 +17,10 @@
     "image-webpack-loader": "cnpm i image-webpack-loader -D",
     "use:npm": "nrm use npm",
     "use:taobao": "nrm use taobao",
-    "update": "ncu -u --reject sass-loader,sass,screenfull,eslint,chalk,vue-echarts,vue,vue-router,vuex,@vue/cli-plugin-babel,@vue/cli-plugin-eslint,@vue/cli-service&&cnpm i",
     "update:globle": "ncu -g --concurrency 10 --timeout 80000",
     "push": "start ./push.sh",
     "deploy": "start ./deploy.sh"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/chuzhixin/vue-admin-beautiful.git"
-  },
   "gitHooks": {
     "pre-commit": "lint-staged"
   },
@@ -44,8 +36,10 @@
     "core-js": "^3.23.1",
     "dayjs": "^1.11.3",
     "echarts": "5.3.3",
-    "element-ui": "^2.15.9",
+    "element-ui": "^2.15.8",
     "jsencrypt": "^3.2.1",
+    "less": "^3.0.4",
+    "less-loader": "^5.0.0",
     "lodash": "^4.17.21",
     "maptalks": "^0.49.5",
     "mapv": "^2.0.62",
@@ -59,6 +53,7 @@
     "vue-echarts": "5.0.0-beta.0",
     "vue-router": "^3.5.3",
     "vuex": "^3.6.2",
+    "xlsx": "^0.17.0",
     "zx-count": "^0.3.7",
     "zx-layouts": "^0.6.29",
     "zx-magnifie": "^0.4.0",
@@ -70,17 +65,11 @@
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "^4.5.15",
-    "@vue/cli-plugin-eslint": "^4.5.15",
     "@vue/cli-service": "^4.5.15",
     "@vue/composition-api": "^1.6.2",
-    "@vue/eslint-config-prettier": "^7.0.0",
-    "babel-eslint": "^10.1.0",
     "body-parser": "^1.20.0",
     "chalk": "^4.1.2",
     "chokidar": "^3.5.3",
-    "eslint": "^7.32.0",
-    "eslint-plugin-prettier": "^4.0.0",
-    "eslint-plugin-vue": "^9.1.1",
     "filemanager-webpack-plugin": "^7.0.0",
     "image-webpack-loader": "^8.1.0",
     "lint-staged": "^13.0.1",

+ 1 - 1
public/index.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width,initial-scale=1.0" />
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
+    <link rel="icon" href="<%= BASE_URL %>logo.png" />
     <title>vue-admin-better官网、首页、文档和下载 - 前端开发框架</title>
     <meta
       name="keywords"

BIN
public/logo.png


+ 1 - 1
push.sh

@@ -4,7 +4,7 @@ set -e
 git init
 git add -A
 git commit -m '🎉 feat: init project'
-git push -f "https://${access_token}@github.com/chuzhixin/vue-admin-better.git" master
+# git push -f "https://${access_token}@github.com/chuzhixin/vue-admin-better.git" master
 exec /bin/bash
 
 

+ 7 - 4
src/App.vue

@@ -5,8 +5,11 @@
 </template>
 
 <script>
-  export default {
-    name: 'App',
-    mounted() {},
-  }
+export default {
+  name: 'App',
+  mounted() { },
+}
 </script>
+<style lang="less" scoped>
+
+</style>

+ 16 - 16
src/api/github.js

@@ -1,19 +1,19 @@
 import request from 'axios'
 
-export function getRepos(params) {
-  return request({
-    url: 'https://api.github.com/repos/chuzhixin/vue-admin-beautiful',
-    method: 'get',
-    params,
-    timeout: 10000,
-  })
-}
+// export function getRepos(params) {
+//   return request({
+//     url: 'https://api.github.com/repos/chuzhixin/vue-admin-beautiful',
+//     method: 'get',
+//     params,
+//     timeout: 10000,
+//   })
+// }
 
-export function getStargazers(params) {
-  return request({
-    url: 'https://api.github.com/repos/chuzhixin/vue-admin-beautiful/stargazers',
-    method: 'get',
-    params,
-    timeout: 10000,
-  })
-}
+// export function getStargazers(params) {
+//   return request({
+//     url: 'https://api.github.com/repos/chuzhixin/vue-admin-beautiful/stargazers',
+//     method: 'get',
+//     params,
+//     timeout: 10000,
+//   })
+// }

+ 139 - 0
src/api/station.js

@@ -0,0 +1,139 @@
+import request from '@/utils/request'
+
+const companys=(data)=>{
+  return request({
+      url:`/listByPage?id=${data.id}&name=${data.name}&pagenum=${data.pageNum}&pagesize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addCompanys=(pairs)=>{
+  return request({
+      url:`/companys`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteCompanys =(data)=>{
+  return request({
+      url:`/remove-companys/${data.id}`,
+      method:"delete",
+  })
+}
+const lines=(data)=>{
+  return request({
+      url:`/line/listByPage?id=${data.id}&name=${data.name}&pagenum=${data.pageNum}&pagesize=${data.pageSize}`,
+      method:"get"
+  })
+}
+
+const regionList =(data)=>{
+  return request({
+      url:`/region/List?id=${data.id}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addRegion =(pairs)=>{
+  return request({
+      url:`/region/save`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteRegion =(data)=>{
+  return request({
+      url:`/region/${data.id}`,
+      method:"delete",
+  })
+}
+
+const windpowerstationList =(data)=>{
+  return request({
+      url:`/windpowerstation/List?id=${data.id}&name=${data.name}&companyid=${data.companyid}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addWindpowerstation =(pairs)=>{
+  return request({
+      url:`/windpowerstation/add`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteWindpowerstation =(data)=>{
+  return request({
+      url:`/windpowerstation/${data.id}`,
+      method:"delete",
+  })
+}
+const projectList =(data)=>{
+  return request({
+      url:`/project/List?windpowerstationid=${data.windpowerstationid}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addProject =(pairs)=>{
+  return request({
+      url:`/project/add`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteProject =(data)=>{
+  return request({
+      url:`/project/${data.id}`,
+      method:"delete",
+  })
+}
+const addLine =(pairs)=>{
+  return request({
+      url:`/line/add-Line`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteLine =(data)=>{
+  return request({
+      url:`/line/remove-lines/${data.id}`,
+      method:"delete",
+  })
+}
+
+const windturbine =(data)=>{
+  return request({
+      url:`/windturbine/companys?windpowerstationid=${data.windpowerstationid}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addWindturbine =(pairs)=>{
+  return request({
+      url:`/windturbine/add`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteWindturbine =(data)=>{
+  return request({
+      url:`/windturbine/${data.id}`,
+      method:"delete",
+  })
+}
+export default {
+  companys,
+  addCompanys,
+  deleteCompanys,
+  lines,
+  regionList,
+  addRegion,
+  deleteRegion,
+  windpowerstationList,
+  addWindpowerstation,
+  deleteWindpowerstation,
+  projectList,
+  addProject,
+  deleteProject,
+  addLine,
+  deleteLine,
+  windturbine,
+  addWindturbine,
+  deleteWindturbine,
+};

+ 44 - 13
src/api/table.js

@@ -1,25 +1,56 @@
 import request from '@/utils/request'
 
-export function getList(data) {
+const projectplan =(data)=>{
   return request({
-    url: '/table/getList',
-    method: 'post',
-    data,
+      url:`projectplan/listByPage?pagenum=${data.pagenum}&pagesize=${data.pagesize}`,
+      method:"get"
   })
 }
-
-export function doEdit(data) {
+const addProjectplan =(pairs)=>{
+  return request({
+      url:`projectplan/add-modify-projectplan`,
+      method:"post",
+      data: pairs
+  })
+}
+const removeProjectplan =(data)=>{
+  return request({
+      url:`/projectplan/remove-projectplans/${data.id}`,
+      method:"delete",
+  })
+}
+const wtls=(data)=>{
   return request({
-    url: '/table/doEdit',
-    method: 'post',
-    data,
+      url:`/back/wtls`,
+      method:"get"
   })
 }
 
-export function doDelete(data) {
+const indicators =(data)=>{
+  return request({
+      url:`indicators/List?stationid=${data.windpowerstationid}&stationname=${data.name}&pageNum=${data.pagenum}&pageSize=${data.pagesize}`,
+      method:"get"
+  })
+}
+const addIndicators =(pairs)=>{
+  return request({
+      url:`indicators/add`,
+      method:"post",
+      data: pairs
+  })
+}
+const removeIndicators =(data)=>{
   return request({
-    url: '/table/doDelete',
-    method: 'post',
-    data,
+      url:`/indicators/${data.id}`,
+      method:"delete",
   })
 }
+export default {
+  projectplan,
+  addProjectplan,
+  removeProjectplan,
+  wtls,
+  indicators,
+  addIndicators,
+  removeIndicators,
+};

+ 66 - 0
src/components/ExportExcel/index.vue

@@ -0,0 +1,66 @@
+<template>
+  <span style="margin-right:10px">
+    <el-button type="primary" @click="exportExcel()">
+      导出
+    </el-button>
+  </span>
+</template>
+ 
+<script>
+// 引入组件
+import XLSX from "xlsx";
+export default {
+  props: {
+    exportList: {
+      type: Array,
+      default: () => {
+        return []
+      },
+    },
+    partsName: String,
+  },
+  data() {
+    return {};
+  },
+  methods: {
+    exportExcel() {
+      // 数据源
+      // let data = [];
+      // this.exportList.forEach((item) => {
+      //   let values = {}
+      //   for (const key in item) {
+      //     values[key] = item[key]
+      //   }
+      //   data.push(values);
+      // });
+      // console.log(data);
+      // 下载的路径
+      let fileName = `${this.partsName}.xlsx`;
+      let filePath = fileName;
+      // 新建workbook
+      const wb = XLSX.utils.book_new();
+      // 新建worksheet,并载入数据
+      const ws = XLSX.utils.json_to_sheet(this.exportList);
+      // 设置每列的列宽,10代表10个字符,注意中文占2个字符
+      ws["!cols"] = [{ wch: 30 }, { wch: 30 }];
+      // 生成xlsx文件(workbook,worksheet数据,sheet命名)
+      XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
+
+      // 写文件(workbook,xlsx文件路径+文件名)
+      XLSX.writeFile(wb, filePath);
+      this.$message({
+        showClose: true,
+        message: "下载成功",
+        center: true,
+        type: "success",
+      });
+    },
+  }
+};
+</script>
+ 
+<style>
+.input-file {
+  display: none;
+}
+</style>

+ 1 - 1
src/components/SelectTree/index.vue

@@ -24,7 +24,7 @@
           node-key="id"
           @check="checkNode"
           @node-click="nodeClick"
-        ></el-tree>
+        />
       </el-option>
     </el-select>
   </div>

+ 67 - 0
src/components/UploadExcel/index.vue

@@ -0,0 +1,67 @@
+<template>
+  <span style="margin-right:10px">
+    <input class="input-file" ref="input" id="file" type="file" @change="exportData"
+      accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />
+    <el-button type="primary" @click="btnClick">
+      导入
+    </el-button>
+  </span>
+</template>
+ 
+<script>
+// 引入组件
+import XLSX from "xlsx";
+export default {
+  data() {
+    return {};
+  },
+  methods: {
+    btnClick() {
+      // 点击事件
+      // document.querySelector(".input-file").click();
+      document.getElementById('file').click();
+    },
+    exportData(event) {
+      if (!event.currentTarget.files.length) {
+        return;
+      }
+      const that = this;
+      // 拿取文件对象
+      var f = event.currentTarget.files[0];
+      // 用FileReader来读取
+      var reader = new FileReader();
+      // 重写FileReader上的readAsBinaryString方法
+      FileReader.prototype.readAsBinaryString = function (f) {
+        var binary = "";
+        var wb; // 读取完成的数据
+        var outdata; // 你需要的数据
+        var reader = new FileReader();
+        reader.onload = function () {
+          // 读取成Uint8Array,再转换为Unicode编码(Unicode占两个字节)
+          var bytes = new Uint8Array(reader.result);
+          var length = bytes.byteLength;
+          for (var i = 0; i < length; i++) {
+            binary += String.fromCharCode(bytes[i]);
+          }
+          // 接下来就是xlsx了,具体可看api
+          wb = XLSX.read(binary, {
+            type: "binary"
+          });
+          outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
+          // 自定义方法向父组件传递数据
+          that.$emit("getResult", outdata);
+          that.$refs.input.value = null
+        };
+        reader.readAsArrayBuffer(f);
+      };
+      reader.readAsBinaryString(f);
+    }
+  }
+};
+</script>
+ 
+<style>
+.input-file {
+  display: none;
+}
+</style>

+ 9 - 3
src/components/VabCharge/index.vue

@@ -1,6 +1,9 @@
 <template>
   <div class="content">
-    <div class="g-container" :style="styleObj">
+    <div
+      class="g-container"
+      :style="styleObj"
+    >
       <div class="g-number">
         <vab-count
           :start-val="startVal"
@@ -13,9 +16,12 @@
         />
       </div>
       <div class="g-contrast">
-        <div class="g-circle"></div>
+        <div class="g-circle" />
         <ul class="g-bubbles">
-          <li v-for="(item, index) in 15" :key="index"></li>
+          <li
+            v-for="(item, index) in 15"
+            :key="index"
+          />
         </ul>
       </div>
     </div>

+ 15 - 7
src/components/VabProfile/index.vue

@@ -1,14 +1,22 @@
 <template>
-  <div class="card" :style="styleObj">
+  <div
+    class="card"
+    :style="styleObj"
+  >
     <div class="card-borders">
-      <div class="border-top"></div>
-      <div class="border-right"></div>
-      <div class="border-bottom"></div>
-      <div class="border-left"></div>
+      <div class="border-top" />
+      <div class="border-right" />
+      <div class="border-bottom" />
+      <div class="border-left" />
     </div>
     <div class="card-content">
-      <el-image :src="avatar" class="avatar"></el-image>
-      <div class="username">{{ username }}</div>
+      <el-image
+        :src="avatar"
+        class="avatar"
+      />
+      <div class="username">
+        {{ username }}
+      </div>
       <div class="social-icons">
         <a
           v-for="(item, index) in iconArray"

+ 9 - 2
src/components/VabSnow/index.vue

@@ -1,6 +1,13 @@
 <template>
-  <div class="content" :style="styleObj">
-    <div v-for="(item, index) in 200" :key="index" class="snow"></div>
+  <div
+    class="content"
+    :style="styleObj"
+  >
+    <div
+      v-for="(item, index) in 200"
+      :key="index"
+      class="snow"
+    />
   </div>
 </template>
 

+ 17 - 5
src/components/VabUpload/index.vue

@@ -11,8 +11,8 @@
         :closable="false"
         :title="`支持jpg、jpeg、png格式,单次可最多选择${limit}张图片,每张不可大于${size}M,如果大于${size}M会自动为您过滤`"
         type="info"
-      ></el-alert>
-      <br />
+      />
+      <br>
       <el-upload
         ref="upload"
         :action="action"
@@ -35,14 +35,21 @@
         class="upload-content"
         list-type="picture-card"
       >
-        <i slot="trigger" class="el-icon-plus"></i>
+        <i
+          slot="trigger"
+          class="el-icon-plus"
+        />
         <el-dialog
           :visible.sync="dialogVisible"
           append-to-body
           title="查看大图"
         >
           <div>
-            <img :src="dialogImageUrl" alt="" width="100%" />
+            <img
+              :src="dialogImageUrl"
+              alt=""
+              width="100%"
+            >
           </div>
         </el-dialog>
       </el-upload>
@@ -60,7 +67,12 @@
           imgErrorNum
         }}张
       </div>
-      <el-button type="primary" @click="handleClose">关闭</el-button>
+      <el-button
+        type="primary"
+        @click="handleClose"
+      >
+        关闭
+      </el-button>
       <el-button
         :loading="loading"
         size="small"

+ 4 - 4
src/config/setting.config.js

@@ -13,17 +13,17 @@ const setting = {
   // 进行编译的依赖
   transpileDependencies: [],
   //标题 (包括初次加载雪花屏的标题 页面的标题 浏览器的标题)
-  title: 'vue-admin-better',
+  title: '后台管理系统',
   //简写
   abbreviation: 'vab',
   //开发环境端口号
-  devPort: '81',
+  devPort: '8080',
   //版本号
   version: process.env.VUE_APP_VERSION,
   //这一项非常重要!请务必保留MIT协议下package.json及copyright作者信息 即可免费商用,不遵守此项约定你将无法使用该框架,如需自定义版权信息请联系QQ1204505056
   copyright: 'vab',
   //是否显示页面底部自定义版权信息
-  footerCopyright: true,
+  footerCopyright: false,
   //是否显示顶部进度条
   progressBar: true,
   //缓存路由的最大数量
@@ -65,6 +65,6 @@ const setting = {
   //代码生成机生成在view下的文件夹名称
   templateFolder: 'project',
   //是否显示终端donation打印
-  donation: true,
+  donation: false,
 }
 module.exports = setting

+ 11 - 3
src/layouts/components/VabAd/index.vue

@@ -8,9 +8,17 @@
       :interval="3000"
       indicator-position="none"
     >
-      <el-carousel-item v-for="(item, index) in adList" :key="index">
-        <el-tag type="warning">Ad</el-tag>
-        <a target="_blank" :href="item.url">{{ item.title }}</a>
+      <el-carousel-item
+        v-for="(item, index) in adList"
+        :key="index"
+      >
+        <el-tag type="warning">
+          Ad
+        </el-tag>
+        <a
+          target="_blank"
+          :href="item.url"
+        >{{ item.title }}</a>
       </el-carousel-item>
     </el-carousel>
   </div>

+ 69 - 75
src/layouts/components/VabAppMain/index.vue

@@ -1,98 +1,92 @@
 <template>
   <div v-if="routerView" class="app-main-container">
-    <vab-github-corner />
     <transition mode="out-in" name="fade-transform">
       <keep-alive :include="cachedRoutes" :max="keepAliveMaxNum">
         <router-view :key="key" class="app-main-height" />
       </keep-alive>
     </transition>
-    <footer v-show="footerCopyright" class="footer-copyright">
-      Copyright
-      <vab-icon :icon="['fas', 'copyright']"></vab-icon>
-      vue-admin-better 开源免费版 {{ fullYear }}
-    </footer>
   </div>
 </template>
 
 <script>
-  import { mapActions, mapGetters } from 'vuex'
-  import { copyright, footerCopyright, keepAliveMaxNum, title } from '@/config'
+import { mapActions, mapGetters } from 'vuex'
+import { copyright, footerCopyright, keepAliveMaxNum, title } from '@/config'
 
-  export default {
-    name: 'VabAppMain',
-    data() {
-      return {
-        show: false,
-        fullYear: new Date().getFullYear(),
-        copyright,
-        title,
-        keepAliveMaxNum,
-        routerView: true,
-        footerCopyright,
-      }
+export default {
+  name: 'VabAppMain',
+  data() {
+    return {
+      show: false,
+      fullYear: new Date().getFullYear(),
+      copyright,
+      title,
+      keepAliveMaxNum,
+      routerView: true,
+      footerCopyright,
+    }
+  },
+  computed: {
+    ...mapGetters({
+      visitedRoutes: 'tabsBar/visitedRoutes',
+      device: 'settings/device',
+    }),
+    cachedRoutes() {
+      const cachedRoutesArr = []
+      this.visitedRoutes.forEach((item) => {
+        if (!item.meta.noKeepAlive) {
+          cachedRoutesArr.push(item.name)
+        }
+      })
+      return cachedRoutesArr
     },
-    computed: {
-      ...mapGetters({
-        visitedRoutes: 'tabsBar/visitedRoutes',
-        device: 'settings/device',
-      }),
-      cachedRoutes() {
-        const cachedRoutesArr = []
-        this.visitedRoutes.forEach((item) => {
-          if (!item.meta.noKeepAlive) {
-            cachedRoutesArr.push(item.name)
-          }
-        })
-        return cachedRoutesArr
-      },
-      key() {
-        return this.$route.path
-      },
+    key() {
+      return this.$route.path
     },
-    watch: {
-      $route: {
-        handler(route) {
-          if ('mobile' === this.device) this.foldSideBar()
-        },
-        immediate: true,
+  },
+  watch: {
+    $route: {
+      handler(route) {
+        if ('mobile' === this.device) this.foldSideBar()
       },
+      immediate: true,
     },
-    created() {
-      //重载所有路由
-      this.$baseEventBus.$on('reload-router-view', () => {
-        this.routerView = false
-        this.$nextTick(() => {
-          this.routerView = true
-        })
+  },
+  created() {
+    //重载所有路由
+    this.$baseEventBus.$on('reload-router-view', () => {
+      this.routerView = false
+      this.$nextTick(() => {
+        this.routerView = true
       })
-    },
-    mounted() {},
-    methods: {
-      ...mapActions({
-        foldSideBar: 'settings/foldSideBar',
-      }),
-    },
-  }
+    })
+  },
+  mounted() {},
+  methods: {
+    ...mapActions({
+      foldSideBar: 'settings/foldSideBar',
+    }),
+  },
+}
 </script>
 
 <style lang="scss" scoped>
-  .app-main-container {
-    position: relative;
-    width: 100%;
-    overflow: hidden;
-    .vab-keel {
-      margin: $base-padding;
-    }
-    .app-main-height {
-      min-height: $base-app-main-height;
-    }
+.app-main-container {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+  .vab-keel {
+    margin: $base-padding;
+  }
+  .app-main-height {
+    min-height: $base-app-main-height;
+  }
 
-    .footer-copyright {
-      min-height: 55px;
-      line-height: 55px;
-      color: rgba(0, 0, 0, 0.45);
-      text-align: center;
-      border-top: 1px dashed $base-border-color;
-    }
+  .footer-copyright {
+    min-height: 55px;
+    line-height: 55px;
+    color: rgba(0, 0, 0, 0.45);
+    text-align: center;
+    border-top: 1px dashed $base-border-color;
   }
+}
 </style>

+ 56 - 78
src/layouts/components/VabAvatar/index.vue

@@ -5,101 +5,79 @@
       <img class="user-avatar" :src="avatar" alt="" />
       <div class="user-name">
         {{ username }}
-        <i class="el-icon-arrow-down el-icon--right"></i>
+        <i class="el-icon-arrow-down el-icon--right" />
       </div>
     </span>
 
     <el-dropdown-menu slot="dropdown">
-      <el-dropdown-item command="github">github地址</el-dropdown-item>
-      <el-dropdown-item command="gitee" divided>码云地址</el-dropdown-item>
-      <el-dropdown-item command="pro" divided>pro付费版地址</el-dropdown-item>
-      <el-dropdown-item command="plus" divided>plus付费版地址</el-dropdown-item>
       <el-dropdown-item command="logout" divided>退出登录</el-dropdown-item>
     </el-dropdown-menu>
   </el-dropdown>
 </template>
 
 <script>
-  import { mapGetters } from 'vuex'
-  import { recordRoute } from '@/config'
+import { mapGetters } from 'vuex'
+import { recordRoute } from '@/config'
 
-  export default {
-    name: 'VabAvatar',
-    computed: {
-      ...mapGetters({
-        avatar: 'user/avatar',
-        username: 'user/username',
-      }),
+export default {
+  name: 'VabAvatar',
+  computed: {
+    ...mapGetters({
+      avatar: 'user/avatar',
+      username: 'user/username',
+    }),
+  },
+  methods: {
+    handleCommand(command) {
+      switch (command) {
+        case 'logout':
+          this.logout()
+          break
+      }
     },
-    methods: {
-      handleCommand(command) {
-        switch (command) {
-          case 'logout':
-            this.logout()
-            break
-          case 'personalCenter':
-            this.personalCenter()
-            break
-          case 'github':
-            window.open('https://github.com/chuzhixin/vue-admin-beautiful')
-            break
-          case 'gitee':
-            window.open('https://gitee.com/chu1204505056/vue-admin-beautiful')
-            break
-          case 'pro':
-            window.open(
-              'https://vue-admin-beautiful.com/admin-pro/?hmsr=homeAd&hmpl=&hmcu=&hmkw=&hmci='
-            )
-            break
-          case 'plus':
-            window.open(
-              'https://vue-admin-beautiful.com/admin-plus/?hmsr=homeAd&hmpl=&hmcu=&hmkw=&hmci='
-            )
-        }
-      },
-      personalCenter() {
-        this.$router.push('/personalCenter/personalCenter')
-      },
-      logout() {
-        this.$baseConfirm(
-          '您确定要退出' + this.$baseTitle + '吗?',
-          null,
-          async () => {
-            await this.$store.dispatch('user/logout')
-            if (recordRoute) {
-              const fullPath = this.$route.fullPath
-              this.$router.push(`/login?redirect=${fullPath}`)
-            } else {
-              this.$router.push('/login')
-            }
+    personalCenter() {
+      this.$router.push('/personalCenter/personalCenter')
+    },
+    logout() {
+      this.$baseConfirm(
+        '您确定要退出' + this.$baseTitle + '吗?',
+        null,
+        async () => {
+          await this.$store.dispatch('user/logout')
+          if (recordRoute) {
+            const fullPath = this.$route.fullPath
+            this.$router.push(`/login?redirect=${fullPath}`)
+          } else {
+            this.$router.push('/login')
           }
-        )
-      },
+        }
+      )
     },
-  }
+  },
+}
 </script>
 <style lang="scss" scoped>
-  .avatar-dropdown {
-    display: flex;
-    align-content: center;
-    align-items: center;
-    justify-content: center;
-    justify-items: center;
-    height: 50px;
-    padding: 0;
+.avatar-dropdown {
+  display: flex;
+  align-content: center;
+  align-items: center;
+  justify-content: center;
+  justify-items: center;
+  height: 50px;
+  padding: 0;
 
-    .user-avatar {
-      width: 40px;
-      height: 40px;
-      cursor: pointer;
-      border-radius: 50%;
-    }
+  .user-avatar {
+    width: 40px;
+    height: 40px;
+    cursor: pointer;
+    border-radius: 50%;
+  }
 
-    .user-name {
-      position: relative;
-      margin-left: 5px;
-      margin-left: 5px;
-      cursor: pointer;
-    }
+  .user-name {
+    position: relative;
+    margin-left: 5px;
+    margin-left: 5px;
+    cursor: pointer;
   }
+}
 </style>

+ 8 - 2
src/layouts/components/VabBreadcrumb/index.vue

@@ -1,6 +1,12 @@
 <template>
-  <el-breadcrumb class="breadcrumb-container" separator=">">
-    <el-breadcrumb-item v-for="item in list" :key="item.path">
+  <el-breadcrumb
+    class="breadcrumb-container"
+    separator=">"
+  >
+    <el-breadcrumb-item
+      v-for="item in list"
+      :key="item.path"
+    >
       {{ item.meta.title }}
     </el-breadcrumb-item>
   </el-breadcrumb>

+ 65 - 61
src/layouts/components/VabLogo/index.vue

@@ -2,7 +2,11 @@
   <div :class="'logo-container-' + layout">
     <router-link to="/">
       <!-- 这里是logo变更的位置 -->
-      <vab-remix-icon v-if="logo" class="logo" :icon-class="logo" />
+      <!-- <vab-remix-icon
+        v-if="logo"
+        class="logo"
+        :icon-class="logo"
+      /> -->
       <span
         class="title"
         :class="{ 'hidden-xs-only': layout === 'horizontal' }"
@@ -14,79 +18,79 @@
   </div>
 </template>
 <script>
-  import { mapGetters } from 'vuex'
+import { mapGetters } from 'vuex'
 
-  export default {
-    name: 'VabLogo',
-    data() {
-      return {
-        title: this.$baseTitle,
-      }
-    },
-    computed: {
-      ...mapGetters({
-        logo: 'settings/logo',
-        layout: 'settings/layout',
-      }),
-    },
-  }
+export default {
+  name: 'VabLogo',
+  data() {
+    return {
+      title: this.$baseTitle,
+    }
+  },
+  computed: {
+    ...mapGetters({
+      logo: 'settings/logo',
+      layout: 'settings/layout',
+    }),
+  },
+}
 </script>
 <style lang="scss" scoped>
-  @mixin container {
-    position: relative;
-    height: $base-top-bar-height;
-    overflow: hidden;
-    line-height: $base-top-bar-height;
-    background: $base-menu-background;
-  }
+@mixin container {
+  position: relative;
+  height: $base-top-bar-height;
+  overflow: hidden;
+  line-height: $base-top-bar-height;
+  background: $base-menu-background;
+}
 
-  @mixin logo {
-    display: inline-block;
-    width: 34px;
-    height: 34px;
-    margin-right: 3px;
-    color: $base-title-color;
-    vertical-align: middle;
-  }
+@mixin logo {
+  display: inline-block;
+  width: 34px;
+  height: 34px;
+  margin-right: 3px;
+  color: $base-title-color;
+  vertical-align: middle;
+}
 
-  @mixin title {
-    display: inline-block;
-    overflow: hidden;
-    font-size: 24px;
-    line-height: 55px;
-    color: $base-title-color;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-    vertical-align: middle;
-  }
+@mixin title {
+  display: inline-block;
+  overflow: hidden;
+  font-size: 24px;
+  line-height: 55px;
+  color: $base-title-color;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  vertical-align: middle;
+}
 
-  .logo-container-horizontal {
-    @include container;
+.logo-container-horizontal {
+  @include container;
 
-    .logo {
-      @include logo;
-    }
+  .logo {
+    @include logo;
+  }
 
-    .title {
-      @include title;
-    }
+  .title {
+    @include title;
   }
+}
 
-  .logo-container-vertical {
-    @include container;
+.logo-container-vertical {
+  @include container;
 
-    height: $base-logo-height;
-    line-height: $base-logo-height;
-    text-align: center;
+  height: $base-logo-height;
+  line-height: $base-logo-height;
+  text-align: center;
 
-    .logo {
-      @include logo;
-    }
+  .logo {
+    @include logo;
+  }
 
-    .title {
-      @include title;
+  .title {
+    @include title;
 
-      max-width: calc(#{$base-left-menu-width} - 60px);
-    }
+    max-width: calc(#{$base-left-menu-width} - 60px);
   }
+}
 </style>

+ 93 - 81
src/layouts/components/VabNavBar/index.vue

@@ -1,22 +1,34 @@
 <template>
   <div class="nav-bar-container">
     <el-row :gutter="15">
-      <el-col :xs="4" :sm="12" :md="12" :lg="12" :xl="12">
+      <el-col
+        :xs="4"
+        :sm="12"
+        :md="12"
+        :lg="12"
+        :xl="12"
+      >
         <div class="left-panel">
           <i
             :class="collapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'"
             :title="collapse ? '展开' : '收起'"
             class="fold-unfold"
             @click="handleCollapse"
-          ></i>
+          />
           <vab-breadcrumb class="hidden-xs-only" />
         </div>
       </el-col>
-      <el-col :xs="20" :sm="12" :md="12" :lg="12" :xl="12">
+      <el-col
+        :xs="20"
+        :sm="12"
+        :md="12"
+        :lg="12"
+        :xl="12"
+      >
         <div class="right-panel">
           <vab-error-log />
           <vab-full-screen-bar @refresh="refreshRoute" />
-          <vab-theme-bar class="hidden-xs-only" />
+          <!-- <vab-theme-bar class="hidden-xs-only" /> -->
           <vab-icon
             title="重载所有路由"
             :pulse="pulse"
@@ -36,101 +48,101 @@
 </template>
 
 <script>
-  import { mapActions, mapGetters } from 'vuex'
+import { mapActions, mapGetters } from 'vuex'
 
-  export default {
-    name: 'VabNavBar',
-    data() {
-      return {
-        pulse: false,
-      }
-    },
-    computed: {
-      ...mapGetters({
-        collapse: 'settings/collapse',
-        visitedRoutes: 'tabsBar/visitedRoutes',
-        device: 'settings/device',
-        routes: 'routes/routes',
-      }),
+export default {
+  name: 'VabNavBar',
+  data() {
+    return {
+      pulse: false,
+    }
+  },
+  computed: {
+    ...mapGetters({
+      collapse: 'settings/collapse',
+      visitedRoutes: 'tabsBar/visitedRoutes',
+      device: 'settings/device',
+      routes: 'routes/routes',
+    }),
+  },
+  methods: {
+    ...mapActions({
+      changeCollapse: 'settings/changeCollapse',
+    }),
+    handleCollapse() {
+      this.changeCollapse()
     },
-    methods: {
-      ...mapActions({
-        changeCollapse: 'settings/changeCollapse',
-      }),
-      handleCollapse() {
-        this.changeCollapse()
-      },
-      async refreshRoute() {
-        this.$baseEventBus.$emit('reload-router-view')
-        this.pulse = true
-        setTimeout(() => {
-          this.pulse = false
-        }, 1000)
-      },
+    async refreshRoute() {
+      this.$baseEventBus.$emit('reload-router-view')
+      this.pulse = true
+      setTimeout(() => {
+        this.pulse = false
+      }, 1000)
     },
-  }
+  },
+}
 </script>
 
 <style lang="scss" scoped>
-  .nav-bar-container {
-    position: relative;
-    height: $base-nav-bar-height;
-    padding-right: $base-padding;
-    padding-left: $base-padding;
-    overflow: hidden;
-    user-select: none;
-    background: $base-color-white;
-    box-shadow: $base-box-shadow;
+.nav-bar-container {
+  position: relative;
+  height: $base-nav-bar-height;
+  padding-right: $base-padding;
+  padding-left: $base-padding;
+  overflow: hidden;
+  user-select: none;
+  background: $base-color-white;
+  box-shadow: $base-box-shadow;
 
-    .left-panel {
-      display: flex;
-      align-items: center;
-      justify-items: center;
-      height: $base-nav-bar-height;
+  .left-panel {
+    display: flex;
+    align-items: center;
+    justify-items: center;
+    height: $base-nav-bar-height;
 
-      .fold-unfold {
-        color: $base-color-gray;
-        cursor: pointer;
-      }
+    .fold-unfold {
+      color: $base-color-gray;
+      cursor: pointer;
+    }
 
-      ::v-deep {
-        .breadcrumb-container {
-          margin-left: 10px;
-        }
+    ::v-deep {
+      .breadcrumb-container {
+        margin-left: 10px;
       }
     }
+  }
 
-    .right-panel {
-      display: flex;
-      align-content: center;
-      align-items: center;
-      justify-content: flex-end;
-      height: $base-nav-bar-height;
+  .right-panel {
+    display: flex;
+    align-content: center;
+    align-items: center;
+    justify-content: flex-end;
+    height: $base-nav-bar-height;
 
-      ::v-deep {
+    ::v-deep {
+      svg {
+        width: 1em;
+        height: 1em;
+        margin-right: 15px;
+        font-size: $base-font-size-small;
+        color: $base-color-gray;
+        cursor: pointer;
+        fill: $base-color-gray;
+      }
+
+      button {
         svg {
-          width: 1em;
-          height: 1em;
-          margin-right: 15px;
-          font-size: $base-font-size-small;
-          color: $base-color-gray;
+          margin-right: 0;
+          color: $base-color-white;
           cursor: pointer;
-          fill: $base-color-gray;
-        }
-
-        button {
-          svg {
-            margin-right: 0;
-            color: $base-color-white;
-            cursor: pointer;
-            fill: $base-color-white;
-          }
+          fill: $base-color-white;
         }
+      }
 
-        .el-badge {
-          margin-right: 15px;
-        }
+      .el-badge {
+        margin-right: 15px;
       }
     }
   }
+}
 </style>

+ 173 - 183
src/layouts/components/VabThemeBar/index.vue

@@ -1,11 +1,7 @@
 <template>
   <span v-if="themeBar">
-    <vab-icon
-      title="主题配置"
-      :icon="['fas', 'palette']"
-      @click="handleOpenThemeBar"
-    />
-    <div class="theme-bar-setting">
+    <vab-icon title="主题配置" :icon="['fas', 'palette']" @click="handleOpenThemeBar" />
+    <!-- <div class="theme-bar-setting">
       <div @click="handleOpenThemeBar">
         <vab-icon :icon="['fas', 'palette']" />
         <p>主题配置</p>
@@ -14,15 +10,9 @@
         <vab-icon :icon="['fas', 'laptop-code']"></vab-icon>
         <p>拷贝源码</p>
       </div>
-    </div>
+    </div> -->
 
-    <el-drawer
-      title="主题配置"
-      :visible.sync="drawerVisible"
-      direction="rtl"
-      append-to-body
-      size="300px"
-    >
+    <el-drawer title="主题配置" :visible.sync="drawerVisible" direction="rtl" append-to-body size="300px">
       <el-scrollbar style="height: 80vh; overflow: hidden">
         <div class="el-drawer__body">
           <el-form ref="form" :model="theme" label-position="top">
@@ -64,204 +54,204 @@
 </template>
 
 <script>
-  import { mapActions, mapGetters } from 'vuex'
-  import { layout as defaultLayout } from '@/config'
-  export default {
-    name: 'VabThemeBar',
-    data() {
-      return {
-        drawerVisible: false,
-        theme: {
-          name: 'default',
-          layout: '',
-          header: 'fixed',
-          tabsBar: '',
-        },
-      }
+import { mapActions, mapGetters } from 'vuex'
+import { layout as defaultLayout } from '@/config'
+export default {
+  name: 'VabThemeBar',
+  data() {
+    return {
+      drawerVisible: false,
+      theme: {
+        name: 'default',
+        layout: '',
+        header: 'fixed',
+        tabsBar: '',
+      },
+    }
+  },
+  computed: {
+    ...mapGetters({
+      layout: 'settings/layout',
+      header: 'settings/header',
+      tabsBar: 'settings/tabsBar',
+      themeBar: 'settings/themeBar',
+    }),
+  },
+  created() {
+    this.$baseEventBus.$on('theme', () => {
+      this.handleOpenThemeBar()
+    })
+    const theme = localStorage.getItem('vue-admin-beautiful-theme')
+    if (null !== theme) {
+      this.theme = JSON.parse(theme)
+      this.handleSetTheme()
+    } else {
+      this.theme.layout = this.layout
+      this.theme.header = this.header
+      this.theme.tabsBar = this.tabsBar
+    }
+  },
+  methods: {
+    ...mapActions({
+      changeLayout: 'settings/changeLayout',
+      changeHeader: 'settings/changeHeader',
+      changeTabsBar: 'settings/changeTabsBar',
+    }),
+    handleIsMobile() {
+      return document.body.getBoundingClientRect().width - 1 < 992
     },
-    computed: {
-      ...mapGetters({
-        layout: 'settings/layout',
-        header: 'settings/header',
-        tabsBar: 'settings/tabsBar',
-        themeBar: 'settings/themeBar',
-      }),
+    handleOpenThemeBar() {
+      this.drawerVisible = true
     },
-    created() {
-      this.$baseEventBus.$on('theme', () => {
-        this.handleOpenThemeBar()
-      })
-      const theme = localStorage.getItem('vue-admin-beautiful-theme')
-      if (null !== theme) {
-        this.theme = JSON.parse(theme)
-        this.handleSetTheme()
-      } else {
-        this.theme.layout = this.layout
-        this.theme.header = this.header
-        this.theme.tabsBar = this.tabsBar
-      }
-    },
-    methods: {
-      ...mapActions({
-        changeLayout: 'settings/changeLayout',
-        changeHeader: 'settings/changeHeader',
-        changeTabsBar: 'settings/changeTabsBar',
-      }),
-      handleIsMobile() {
-        return document.body.getBoundingClientRect().width - 1 < 992
-      },
-      handleOpenThemeBar() {
-        this.drawerVisible = true
-      },
-      handleSetTheme() {
-        let { name, layout, header, tabsBar } = this.theme
-        localStorage.setItem(
-          'vue-admin-beautiful-theme',
-          `{
+    handleSetTheme() {
+      let { name, layout, header, tabsBar } = this.theme
+      localStorage.setItem(
+        'vue-admin-beautiful-theme',
+        `{
             "name":"${name}",
             "layout":"${layout}",
             "header":"${header}",
             "tabsBar":"${tabsBar}"
           }`
-        )
-        if (!this.handleIsMobile()) this.changeLayout(layout)
-        this.changeHeader(header)
-        this.changeTabsBar(tabsBar)
-        document.getElementsByTagName(
-          'body'
-        )[0].className = `vue-admin-beautiful-theme-${name}`
-        this.drawerVisible = false
-      },
-      handleSaveTheme() {
-        this.handleSetTheme()
-      },
-      handleSetDfaultTheme() {
-        let { name } = this.theme
-        document
-          .getElementsByTagName('body')[0]
-          .classList.remove(`vue-admin-beautiful-theme-${name}`)
-        localStorage.removeItem('vue-admin-beautiful-theme')
-        this.$refs['form'].resetFields()
-        Object.assign(this.$data, this.$options.data())
-        this.changeHeader(defaultLayout)
-        this.theme.name = 'default'
-        this.theme.layout = this.layout
-        this.theme.header = this.header
-        this.theme.tabsBar = this.tabsBar
-        this.drawerVisible = false
-        location.reload()
-      },
-      handleGetCode() {
-        const url =
-          'https://github.com/chuzhixin/vue-admin-beautiful/tree/master/src/views'
-        let path = this.$route.path + '/index.vue'
-        if (path === '/vab/menu1/menu1-1/menu1-1-1/index.vue') {
-          path = '/vab/nested/menu1/menu1-1/menu1-1-1/index.vue'
-        }
-        if (path === '/vab/icon/awesomeIcon/index.vue') {
-          path = '/vab/icon/index.vue'
-        }
-        if (path === '/vab/icon/remixIcon/index.vue') {
-          path = '/vab/icon/remixIcon.vue'
-        }
-        if (path === '/vab/icon/colorfulIcon/index.vue') {
-          path = '/vab/icon/colorfulIcon.vue'
-        }
-        if (path === '/vab/table/comprehensiveTable/index.vue') {
-          path = '/vab/table/index.vue'
-        }
-        if (path === '/vab/table/inlineEditTable/index.vue') {
-          path = '/vab/table/inlineEditTable.vue'
-        }
-        window.open(url + path)
-      },
+      )
+      if (!this.handleIsMobile()) this.changeLayout(layout)
+      this.changeHeader(header)
+      this.changeTabsBar(tabsBar)
+      document.getElementsByTagName(
+        'body'
+      )[0].className = `vue-admin-beautiful-theme-${name}`
+      this.drawerVisible = false
     },
-  }
+    handleSaveTheme() {
+      this.handleSetTheme()
+    },
+    handleSetDfaultTheme() {
+      let { name } = this.theme
+      document
+        .getElementsByTagName('body')[0]
+        .classList.remove(`vue-admin-beautiful-theme-${name}`)
+      localStorage.removeItem('vue-admin-beautiful-theme')
+      this.$refs['form'].resetFields()
+      Object.assign(this.$data, this.$options.data())
+      this.changeHeader(defaultLayout)
+      this.theme.name = 'default'
+      this.theme.layout = this.layout
+      this.theme.header = this.header
+      this.theme.tabsBar = this.tabsBar
+      this.drawerVisible = false
+      location.reload()
+    },
+    handleGetCode() {
+      // const url =
+      //   'https://github.com/chuzhixin/vue-admin-beautiful/tree/master/src/views'
+      let path = this.$route.path + '/index.vue'
+      if (path === '/vab/menu1/menu1-1/menu1-1-1/index.vue') {
+        path = '/vab/nested/menu1/menu1-1/menu1-1-1/index.vue'
+      }
+      if (path === '/vab/icon/awesomeIcon/index.vue') {
+        path = '/vab/icon/index.vue'
+      }
+      if (path === '/vab/icon/remixIcon/index.vue') {
+        path = '/vab/icon/remixIcon.vue'
+      }
+      if (path === '/vab/icon/colorfulIcon/index.vue') {
+        path = '/vab/icon/colorfulIcon.vue'
+      }
+      if (path === '/vab/table/comprehensiveTable/index.vue') {
+        path = '/vab/table/index.vue'
+      }
+      if (path === '/vab/table/inlineEditTable/index.vue') {
+        path = '/vab/table/inlineEditTable.vue'
+      }
+      window.open(url + path)
+    },
+  },
+}
 </script>
 
 <style lang="scss" scoped>
-  @mixin right-bar {
-    position: fixed;
-    right: 0;
-    z-index: $base-z-index;
-    width: 60px;
-    min-height: 60px;
-    text-align: center;
-    cursor: pointer;
-    background: $base-color-blue;
-    border-radius: $base-border-radius;
+@mixin right-bar {
+  position: fixed;
+  right: 0;
+  z-index: $base-z-index;
+  width: 60px;
+  min-height: 60px;
+  text-align: center;
+  cursor: pointer;
+  background: $base-color-blue;
+  border-radius: $base-border-radius;
 
-    > div {
-      padding-top: 10px;
-      border-bottom: 0 !important;
+  >div {
+    padding-top: 10px;
+    border-bottom: 0 !important;
 
-      &:hover {
-        opacity: 0.9;
-      }
+    &:hover {
+      opacity: 0.9;
+    }
 
-      & + div {
-        border-top: 1px solid $base-color-white;
-      }
+    &+div {
+      border-top: 1px solid $base-color-white;
+    }
 
-      p {
-        padding: 0;
-        margin: 0;
-        font-size: $base-font-size-small;
-        line-height: 30px;
-        color: $base-color-white;
-      }
+    p {
+      padding: 0;
+      margin: 0;
+      font-size: $base-font-size-small;
+      line-height: 30px;
+      color: $base-color-white;
     }
   }
+}
 
-  .theme-bar-setting {
-    @include right-bar;
+.theme-bar-setting {
+  @include right-bar;
 
-    top: calc((100vh - 110px) / 2);
+  top: calc((100vh - 110px) / 2);
 
-    ::v-deep {
-      svg:not(:root).svg-inline--fa {
-        display: block;
-        margin-right: auto;
-        margin-left: auto;
-        color: $base-color-white;
-      }
+  ::v-deep {
+    svg:not(:root).svg-inline--fa {
+      display: block;
+      margin-right: auto;
+      margin-left: auto;
+      color: $base-color-white;
+    }
 
-      .svg-icon {
-        display: block;
-        margin-right: auto;
-        margin-left: auto;
-        font-size: 20px;
-        color: $base-color-white;
-        fill: $base-color-white;
-      }
+    .svg-icon {
+      display: block;
+      margin-right: auto;
+      margin-left: auto;
+      font-size: 20px;
+      color: $base-color-white;
+      fill: $base-color-white;
     }
   }
+}
 
-  .el-drawer__body {
-    padding: 20px;
-  }
+.el-drawer__body {
+  padding: 20px;
+}
 
-  .el-drawer__footer {
-    border-top: 1px solid #dedede;
-    position: fixed;
-    bottom: 0;
-    width: 100%;
-    padding: 10px 0 0 20px;
-    height: 50px;
-  }
+.el-drawer__footer {
+  border-top: 1px solid #dedede;
+  position: fixed;
+  bottom: 0;
+  width: 100%;
+  padding: 10px 0 0 20px;
+  height: 50px;
+}
 </style>
 <style lang="scss">
-  .el-drawer__wrapper {
-    outline: none !important;
+.el-drawer__wrapper {
+  outline: none !important;
 
-    * {
-      outline: none !important;
-    }
+  * {
+    outline: none !important;
   }
+}
 
-  .vab-color-picker {
-    .el-color-dropdown__link-btn {
-      display: none;
-    }
+.vab-color-picker {
+  .el-color-dropdown__link-btn {
+    display: none;
   }
+}
 </style>

+ 11 - 5
src/layouts/index.vue

@@ -1,5 +1,8 @@
 <template>
-  <div class="vue-admin-beautiful-wrapper" :class="classObj">
+  <div
+    class="vue-admin-beautiful-wrapper"
+    :class="classObj"
+  >
     <div
       v-if="'horizontal' === layout"
       class="layout-container-horizontal"
@@ -19,10 +22,10 @@
           </div>
         </div>
       </div>
-      <div class="vab-main main-padding">
+      <!-- <div class="vab-main main-padding">
         <vab-ad />
         <vab-app-main />
-      </div>
+      </div> -->
     </div>
     <div
       v-else
@@ -38,12 +41,15 @@
         @click="handleFoldSideBar"
       />
       <vab-side-bar />
-      <div class="vab-main" :class="collapse ? 'is-collapse-main' : ''">
+      <div
+        class="vab-main"
+        :class="collapse ? 'is-collapse-main' : ''"
+      >
         <div :class="header === 'fixed' ? 'fixed-header' : ''">
           <vab-nav-bar />
           <vab-tabs-bar v-if="tabsBar === 'true' || tabsBar === true" />
         </div>
-        <vab-ad />
+        <!-- <vab-ad /> -->
         <vab-app-main />
       </div>
     </div>

+ 89 - 282
src/router/index.js

@@ -1,8 +1,3 @@
-/**
- * @author https://gitee.com/chu1204505056/vue-admin-better (不想保留author可删除)
- * @description router全局配置,如有必要可分文件抽离,其中asyncRoutes只有在intelligence模式下才会用到,vip文档中已提供路由的基础图标与小清新图标的配置方案,请仔细阅读
- */
-
 import Vue from 'vue'
 import VueRouter from 'vue-router'
 import Layout from '@/layouts'
@@ -46,321 +41,133 @@ export const asyncRoutes = [
         name: 'Index',
         component: () => import('@/views/index/index'),
         meta: {
-          title: '首页',
+          title: '计划电量',
           icon: 'home',
           affix: true,
         },
       },
     ],
   },
-  /* {
-    path: "/test",
+
+  {
+    path: "/indicators",
     component: Layout,
     redirect: "noRedirect",
     children: [
       {
-        path: "test",
-        name: "Test",
-        component: () => import("@/views/test/index"),
+        path: "indicators",
+        name: "indicators",
+        component: () => import("@/views/indicators/index"),
         meta: {
-          title: "test",
+          title: "指标录入",
           icon: "marker",
           permissions: ["admin"],
         },
       },
     ],
-  }, */
-
-  {
-    path: '/vab',
-    component: Layout,
-    redirect: 'noRedirect',
-    name: 'Vab',
-    alwaysShow: true,
-    meta: { title: '组件', icon: 'box-open' },
-    children: [
-      {
-        path: 'permissions',
-        name: 'Permission',
-        component: () => import('@/views/vab/permissions/index'),
-        meta: {
-          title: '角色权限',
-          permissions: ['admin', 'editor'],
-        },
-      },
-      {
-        path: 'icon',
-        component: EmptyLayout,
-        redirect: 'noRedirect',
-        name: 'Icon',
-        meta: {
-          title: '图标',
-          permissions: ['admin'],
-        },
-        children: [
-          {
-            path: 'awesomeIcon',
-            name: 'AwesomeIcon',
-            component: () => import('@/views/vab/icon/index'),
-            meta: { title: '常规图标' },
-          },
-          {
-            path: 'colorfulIcon',
-            name: 'ColorfulIcon',
-            component: () => import('@/views/vab/icon/colorfulIcon'),
-            meta: { title: '多彩图标' },
-          },
-        ],
-      },
-      {
-        path: 'table',
-        component: () => import('@/views/vab/table/index'),
-        name: 'Table',
-        meta: {
-          title: '表格',
-          permissions: ['admin'],
-        },
-      },
-      {
-        path: 'map',
-        component: () => import('@/views/vab/map/index'),
-        name: 'Map',
-        meta: {
-          title: '地图',
-          permissions: ['admin'],
-        },
-      },
-
-      {
-        path: 'webSocket',
-        name: 'WebSocket',
-        component: () => import('@/views/vab/webSocket/index'),
-        meta: { title: 'webSocket', permissions: ['admin'] },
-      },
-      {
-        path: 'form',
-        name: 'Form',
-        component: () => import('@/views/vab/form/index'),
-        meta: { title: '表单', permissions: ['admin'] },
-      },
-      {
-        path: 'element',
-        name: 'Element',
-        component: () => import('@/views/vab/element/index'),
-        meta: { title: '常用组件', permissions: ['admin'] },
-      },
-      {
-        path: 'tree',
-        name: 'Tree',
-        component: () => import('@/views/vab/tree/index'),
-        meta: { title: '树', permissions: ['admin'] },
-      },
-      {
-        path: 'verify',
-        name: 'Verify',
-        component: () => import('@/views/vab/verify/index'),
-        meta: { title: '验证码', permissions: ['admin'] },
-      },
-      {
-        path: 'menu1',
-        component: () => import('@/views/vab/nested/menu1/index'),
-        name: 'Menu1',
-        alwaysShow: true,
-        meta: {
-          title: '嵌套路由 1',
-          permissions: ['admin'],
-        },
-        children: [
-          {
-            path: 'menu1-1',
-            name: 'Menu1-1',
-            alwaysShow: true,
-            meta: { title: '嵌套路由 1-1' },
-            component: () => import('@/views/vab/nested/menu1/menu1-1/index'),
-
-            children: [
-              {
-                path: 'menu1-1-1',
-                name: 'Menu1-1-1',
-                meta: { title: '嵌套路由 1-1-1' },
-                component: () =>
-                  import('@/views/vab/nested/menu1/menu1-1/menu1-1-1/index'),
-              },
-            ],
-          },
-        ],
-      },
-      {
-        path: 'magnifier',
-        name: 'Magnifier',
-        component: () => import('@/views/vab/magnifier/index'),
-        meta: { title: '放大镜', permissions: ['admin'] },
-      },
-      {
-        path: 'loading',
-        name: 'Loading',
-        component: () => import('@/views/vab/loading/index'),
-        meta: { title: 'loading', permissions: ['admin'] },
-      },
-      {
-        path: 'player',
-        name: 'Player',
-        component: () => import('@/views/vab/player/index'),
-        meta: { title: '视频播放器', permissions: ['admin'] },
-      },
-      {
-        path: 'markdownEditor',
-        name: 'MarkdownEditor',
-        component: () => import('@/views/vab/markdownEditor/index'),
-        meta: { title: 'markdown编辑器', permissions: ['admin'] },
-      },
-      {
-        path: 'editor',
-        name: 'Editor',
-        component: () => import('@/views/vab/editor/index'),
-        meta: {
-          title: '富文本编辑器',
-          permissions: ['admin'],
-          badge: 'New',
-        },
-      },
-      {
-        path: 'backToTop',
-        name: 'BackToTop',
-        component: () => import('@/views/vab/backToTop/index'),
-        meta: { title: '返回顶部', permissions: ['admin'] },
-      },
-      {
-        path: 'lodash',
-        name: 'Lodash',
-        component: () => import('@/views/vab/lodash/index'),
-        meta: { title: 'lodash', permissions: ['admin'] },
-      },
-      {
-        path: 'smallComponents',
-        name: 'SmallComponents',
-        component: () => import('@/views/vab/smallComponents/index'),
-        meta: { title: '小组件', permissions: ['admin'] },
-      },
-
-      {
-        path: 'upload',
-        name: 'Upload',
-        component: () => import('@/views/vab/upload/index'),
-        meta: { title: '上传', permissions: ['admin'] },
-      },
-      {
-        path: 'log',
-        name: 'Log',
-        component: () => import('@/views/vab/errorLog/index'),
-        meta: { title: '错误日志模拟', permissions: ['admin'] },
-      },
-      {
-        path: 'https://github.com/chuzhixin/vue-admin-beautiful?utm_source=gold_browser_extension',
-        name: 'ExternalLink',
-        meta: {
-          title: '外链',
-          target: '_blank',
-          permissions: ['admin', 'editor'],
-          badge: 'New',
-        },
-      },
-      {
-        path: 'more',
-        name: 'More',
-        component: () => import('@/views/vab/more/index'),
-        meta: { title: '关于', permissions: ['admin'] },
-      },
-    ],
   },
   {
-    path: '/personnelManagement',
+    path: '/stationConfiguration',
     component: Layout,
     redirect: 'noRedirect',
-    name: 'PersonnelManagement',
-    meta: { title: '配置', icon: 'users-cog', permissions: ['admin'] },
+    name: 'stationConfiguration',
+    meta: { title: '场站配置', icon: 'tools', permissions: ['admin'] },
     children: [
       {
-        path: 'userManagement',
-        name: 'UserManagement',
+        path: 'company',
+        name: 'company',
         component: () =>
-          import('@/views/personnelManagement/userManagement/index'),
-        meta: { title: '用户管理' },
+          import('@/views/stationConfiguration/company/index'),
+        meta: { title: '公司管理' },
       },
       {
-        path: 'roleManagement',
-        name: 'RoleManagement',
+        path: 'area',
+        name: 'area',
         component: () =>
-          import('@/views/personnelManagement/roleManagement/index'),
-        meta: { title: '角色管理' },
+          import('@/views/stationConfiguration/area/index'),
+        meta: { title: '区域管理' },
       },
       {
-        path: 'menuManagement',
-        name: 'MenuManagement',
+        path: 'station',
+        name: 'station',
         component: () =>
-          import('@/views/personnelManagement/menuManagement/index'),
-        meta: { title: '菜单管理', badge: 'New' },
+          import('@/views/stationConfiguration/station/index'),
+        meta: { title: '场站管理' },
       },
-    ],
-  },
-  {
-    path: '/mall',
-    component: Layout,
-    redirect: 'noRedirect',
-    name: 'Mall',
-    meta: {
-      title: '商城',
-      icon: 'shopping-cart',
-      permissions: ['admin'],
-    },
-
-    children: [
       {
-        path: 'pay',
-        name: 'Pay',
-        component: () => import('@/views/mall/pay/index'),
-        meta: {
-          title: '支付',
-          noKeepAlive: true,
-        },
-        children: null,
-      },
-      {
-        path: 'goodsList',
-        name: 'GoodsList',
-        component: () => import('@/views/mall/goodsList/index'),
-        meta: {
-          title: '商品列表',
-        },
+        path: 'period',
+        name: 'period',
+        component: () =>
+          import('@/views/stationConfiguration/period/index'),
+        meta: { title: '期次管理' },
       },
-    ],
-  },
-  {
-    path: '/error',
-    component: EmptyLayout,
-    redirect: 'noRedirect',
-    name: 'Error',
-    meta: { title: '错误页', icon: 'bug' },
-    children: [
       {
-        path: '401',
-        name: 'Error401',
-        component: () => import('@/views/401'),
-        meta: { title: '401' },
+        path: 'line',
+        name: 'line',
+        component: () =>
+          import('@/views/stationConfiguration/line/index'),
+        meta: { title: '线路管理' },
       },
       {
-        path: '404',
-        name: 'Error404',
-        component: () => import('@/views/404'),
-        meta: { title: '404' },
+        path: 'windterbin',
+        name: 'windterbin',
+        component: () =>
+          import('@/views/stationConfiguration/windterbin/index'),
+        meta: { title: '风机管理' },
       },
     ],
   },
-  {
-    path: '*',
-    redirect: '/404',
-    hidden: true,
-  },
+  // {
+  //   path: '/personnelManagement',
+  //   component: Layout,
+  //   redirect: 'noRedirect',
+  //   name: 'PersonnelManagement',
+  //   meta: { title: '配置', icon: 'users-cog', permissions: ['admin'] },
+  //   children: [
+  //     {
+  //       path: 'userManagement',
+  //       name: 'UserManagement',
+  //       component: () =>
+  //         import('@/views/personnelManagement/userManagement/index'),
+  //       meta: { title: '用户管理' },
+  //     },
+  //     {
+  //       path: 'roleManagement',
+  //       name: 'RoleManagement',
+  //       component: () =>
+  //         import('@/views/personnelManagement/roleManagement/index'),
+  //       meta: { title: '角色管理' },
+  //     },
+  //     {
+  //       path: 'menuManagement',
+  //       name: 'MenuManagement',
+  //       component: () =>
+  //         import('@/views/personnelManagement/menuManagement/index'),
+  //       meta: { title: '菜单管理' },
+  //     },
+  //   ],
+  // },
+  // {
+  //   path: '/error',
+  //   component: EmptyLayout,
+  //   redirect: 'noRedirect',
+  //   name: 'Error',
+  //   meta: { title: '错误页', icon: 'bug' },
+  //   children: [
+  //     {
+  //       path: '401',
+  //       name: 'Error401',
+  //       component: () => import('@/views/401'),
+  //       meta: { title: '401' },
+  //     },
+  //     {
+  //       path: '404',
+  //       name: 'Error404',
+  //       component: () => import('@/views/404'),
+  //       meta: { title: '404' },
+  //     },
+  //   ],
+  // },
 ]
 
 const router = new VueRouter({

+ 0 - 0
src/styles/vab.scss


Vissa filer visades inte eftersom för många filer har ändrats