ln 2 lat temu
rodzic
commit
c15c692881
100 zmienionych plików z 4171 dodań i 1104 usunięć
  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


Plik diff jest za duży
+ 12 - 0
manage/index.html


BIN
manage/logo.png


+ 2 - 0
manage/robots.txt

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

Plik diff jest za duży
+ 7 - 0
manage/static/css/app.c66a46be.css


Plik diff jest za duży
+ 6 - 0
manage/static/css/chunk-0e7276a4.97f549c4.css


Plik diff jest za duży
+ 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}

Plik diff jest za duży
+ 6 - 0
manage/static/css/chunk-5a3493ef.601fad95.css


Plik diff jest za duży
+ 31 - 0
manage/static/css/chunk-5b685476.6edec273.css


Plik diff jest za duży
+ 6 - 0
manage/static/css/chunk-6b208424.3f1439af.css


Plik diff jest za duży
+ 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}

Plik diff jest za duży
+ 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;
+  }
+}

Plik diff jest za duży
+ 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


Plik diff jest za duży
+ 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


Plik diff jest za duży
+ 95 - 0
manage/static/js/app.2cade576.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-0e7276a4.870b8345.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-0eb10c9a.db0d4c12.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-37ae9b01.f64c1e79.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-459c9879.6e36886d.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-5709ad62.ab3afe8c.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-59a53b32.120536d7.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-5a3493ef.c788e996.js


Plik diff jest za duży
+ 51 - 0
manage/static/js/chunk-5b685476.b75a5e67.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-6b208424.c7ef6191.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-7cbc41e5.8bdb006c.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-7d6bdf06.1c3c9074.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-a1283f56.0c7845fe.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-b054154c.6c414bd5.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/chunk-f9555fc2.fd76d168.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/element-ui.cfb27695.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/vab-chunk-024ddcda.9ff5c737.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/vab-chunk-47eec42d.2ad3f2d5.js


Plik diff jest za duży
+ 7 - 0
manage/static/js/vab-chunk-d939e436.afa00d83.js


Plik diff jest za duży
+ 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


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików