From 89946abb222981e075e52feb8a01e937f322db5b Mon Sep 17 00:00:00 2001
From: 码农齐齐齐 <10948399+menon-qiqi@user.noreply.gitee.com>
Date: 星期五, 09 九月 2022 17:00:39 +0800
Subject: [PATCH] master

---
 vue.config.js                                  |    9 
 package-lock.json                              |   88 +++++++
 src/store/users/index.js                       |   17 +
 src/store/index.js                             |    3 
 src/views/login/index.vue                      |   76 ++----
 src/api/users.js                               |    4 
 src/views/layout/components/Header/index.vue   |   50 ++-
 src/utils/auth.js                              |   22 +-
 src/router/index.js                            |   11 -
 src/utils/validate.js                          |   19 -
 src/views/layout/components/NavBar/index.vue   |   78 ++++++-
 src/utils/request.js                           |   85 +-----
 .env.development                               |    4 
 /dev/null                                      |   17 -
 src/views/layout/components/SiderBar/index.vue |  156 +++++++------
 src/main.js                                    |    3 
 package.json                                   |    1 
 src/components/hamburger/index.vue             |    2 
 src/views/layout/components/Main/index.vue     |    1 
 19 files changed, 356 insertions(+), 290 deletions(-)

diff --git a/.env.development b/.env.development
index cd7a7cc..b428861 100644
--- a/.env.development
+++ b/.env.development
@@ -4,8 +4,8 @@
 # 寮�鍙戠幆澧冮厤缃�
 ENV = 'development'
 
-# 鑻ヤ緷绠$悊绯荤粺/寮�鍙戠幆澧�
-VUE_APP_BASE_API = '/dev-api'
+# 寮�鍙戠幆澧�
+VUE_APP_BASE_API = '/api'
 
 # 璺敱鎳掑姞杞�
 VUE_CLI_BABEL_TRANSPILE_MODULES = true
diff --git a/package-lock.json b/package-lock.json
index bb130be..39dcab1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,7 @@
       "name": "my-app",
       "version": "0.1.0",
       "dependencies": {
+        "axios": "^0.27.2",
         "core-js": "^3.8.3",
         "normalize.css": "^8.0.1",
         "sass": "^1.54.8",
@@ -3370,6 +3371,11 @@
         "babel-runtime": "6.x"
       }
     },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
     "node_modules/at-least-node": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -3412,6 +3418,15 @@
       },
       "peerDependencies": {
         "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/axios": {
+      "version": "0.27.2",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz",
+      "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
+      "dependencies": {
+        "follow-redirects": "^1.14.9",
+        "form-data": "^4.0.0"
       }
     },
     "node_modules/babel-helper-vue-jsx-merge-props": {
@@ -4309,6 +4324,17 @@
       "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz",
       "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
       "dev": true
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
     },
     "node_modules/commander": {
       "version": "8.3.0",
@@ -5235,6 +5261,14 @@
       },
       "engines": {
         "node": ">=0.10.0"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "engines": {
+        "node": ">=0.4.0"
       }
     },
     "node_modules/depd": {
@@ -6205,7 +6239,6 @@
       "version": "1.15.1",
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz",
       "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
-      "dev": true,
       "engines": {
         "node": ">=4.0"
       },
@@ -6222,6 +6255,19 @@
       "dev": true,
       "engines": {
         "node": ">=0.10.0"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
       }
     },
     "node_modules/forwarded": {
@@ -17341,6 +17387,11 @@
         "babel-runtime": "6.x"
       }
     },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
     "at-least-node": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -17365,6 +17416,15 @@
         "normalize-range": "^0.1.2",
         "picocolors": "^1.0.0",
         "postcss-value-parser": "^4.2.0"
+      }
+    },
+    "axios": {
+      "version": "0.27.2",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz",
+      "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
+      "requires": {
+        "follow-redirects": "^1.14.9",
+        "form-data": "^4.0.0"
       }
     },
     "babel-helper-vue-jsx-merge-props": {
@@ -18135,6 +18195,14 @@
       "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
       "dev": true
     },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
     "commander": {
       "version": "8.3.0",
       "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
@@ -18890,6 +18958,11 @@
       "requires": {
         "is-descriptor": "^1.0.0"
       }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
     },
     "depd": {
       "version": "2.0.0",
@@ -19743,8 +19816,7 @@
     "follow-redirects": {
       "version": "1.15.1",
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz",
-      "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
-      "dev": true
+      "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
     },
     "for-in": {
       "version": "1.0.2",
@@ -19752,6 +19824,16 @@
       "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
       "dev": true
     },
+    "form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      }
+    },
     "forwarded": {
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
diff --git a/package.json b/package.json
index 6e59ae0..a11f8b1 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
     "build:stage": "vue-cli-service build --mode staging"
   },
   "dependencies": {
+    "axios": "^0.27.2",
     "core-js": "^3.8.3",
     "normalize.css": "^8.0.1",
     "sass": "^1.54.8",
diff --git a/src/api/users.js b/src/api/users.js
new file mode 100644
index 0000000..681a6bf
--- /dev/null
+++ b/src/api/users.js
@@ -0,0 +1,4 @@
+import axios from "axios";
+export default {
+  login: (data) => axios.post('/sccg/admin/login', data),
+};      
\ No newline at end of file
diff --git a/src/components/Login.vue b/src/components/Login.vue
deleted file mode 100644
index 13bfb94..0000000
--- a/src/components/Login.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-<template>
-  <div id="background">
-    <el-form
-      :model="form"
-      status-icon
-      :rules="rules"
-      ref="form"
-      class="login-container"
-    >
-      <h3 class="login_title">鐢ㄦ埛鐧诲綍 / USER LOGIN</h3>
-      <el-form-item prop="username" class="username">
-        <el-input
-          type="input"
-          v-model="form.username"
-          auto-complete="off"
-          placeholder="璇疯緭鍏ョ敤鎴峰悕绉�"
-        ></el-input>
-      </el-form-item>
-      <el-form-item prop="password" class="password">
-        <el-input
-          type="password"
-          v-model="form.password"
-          auto-complete="off"
-          placeholder="璇疯緭鍏ョ櫥褰曞瘑鐮�"
-          prefix-icon="el-icon-s-custom"
-        ></el-input>
-      </el-form-item>
-      <el-form-item class="submit_container">
-        <el-button type="primary" class="login_submit">鐧诲綍</el-button>
-      </el-form-item>
-    </el-form>
-  </div>
-</template>
-
-<script>
-export default {
-  name: "login",
-  data() {
-    return {
-      form: {},
-      rules: {
-        username: [
-          { required: true, message: "璇峰~鍐欑敤鎴峰悕绉�", trigger: "blur" },
-          {
-            min: 3,
-            message: "鐢ㄦ埛鍚嶉暱搴︿笉鑳藉皬浜庝笁浣�",
-            trigger: "blur",
-          },
-        ],
-        password: [{ required: true, message: "璇峰~鍐欑櫥褰曞瘑鐮�", trigger: "blur" }],
-      },
-    };
-  },
-  methods: {},
-};
-</script>
-<style lang="less" scoped>
-#background {
-  width: 100vw;
-  height: 100vh;
-  background-color: #015cf2;
-  position: relative;
-  display: flex;
-  align-items: center;
-}
-.login-container {
-  border-radius: 15px;
-  position: absolute;
-  right: 5%;
-  width: 500px;
-  background-color: white;
-  box-shadow: 0 0 25px #cac6c6;
-  .login_title {
-    text-align: center;
-    color: #ccc;
-    font-size: 25px;
-    font-weight: 400;
-    height: 150px;
-    line-height: 150px;
-  }
-  .submit_container {
-    display: flex;
-    justify-content: center;
-    .login_submit {
-      width: 400px;
-      font-size: 25px;
-      line-height: 40px;
-      margin-bottom: 120px;
-    }
-  }
-  .el-form-item {
-    display: flex;
-    justify-content: center;
-    .el-input /deep/ .el-input__inner {
-      height: 60px;
-      width: 400px;
-      &::-webkit-input-placeholder {
-        font-size: 20px;
-      }
-    }
-  }
-}
-</style>
-
diff --git a/src/components/hamburger/index.vue b/src/components/hamburger/index.vue
index 2b4e3d1..d3aa7b0 100644
--- a/src/components/hamburger/index.vue
+++ b/src/components/hamburger/index.vue
@@ -10,7 +10,7 @@
         height="64"
       >
         <path
-          d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"
+          d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z" fill="#fff"
         />
       </svg>
     </el-radio-button>
diff --git a/src/main.js b/src/main.js
index 79b408f..44c454e 100644
--- a/src/main.js
+++ b/src/main.js
@@ -12,6 +12,9 @@
 import './assets/icons' 
 // 寮曞叆鍏ㄥ眬鏍峰紡
 import '@/styles/index.scss' 
+import axios from "axios"
+Vue.prototype.$axios=axios
+console.log(process.env.VUE_APP_BASE_API);
 Vue.use(ElementUI)
 new Vue({
   router,
diff --git a/src/router/index.js b/src/router/index.js
index c7ed783..15486c5 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,18 +1,7 @@
 import Vue from 'vue'
 import VueRouter from 'vue-router'
 Vue.use(VueRouter)
-
 const routes = [
-  // {
-  //   path: '/',
-  //   component: Layout,
-  //   redirect: '/home',
-  //   children: [{
-  //     path: 'home',
-  //     name: 'home',
-  //     component: () => import('@/views/layout'),
-  //   }]
-  // },
   {
     path:'/home',
     name:'home',
diff --git a/src/store/index.js b/src/store/index.js
index ceffa8e..bb05c23 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -1,6 +1,6 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
-
+import users from "./users"
 Vue.use(Vuex)
 
 export default new Vuex.Store({
@@ -13,5 +13,6 @@
   actions: {
   },
   modules: {
+    users
   }
 })
diff --git a/src/store/users/index.js b/src/store/users/index.js
new file mode 100644
index 0000000..118bc9b
--- /dev/null
+++ b/src/store/users/index.js
@@ -0,0 +1,17 @@
+import usersApi from "@/api/users";
+// import { Message } from "element-ui";
+export default {
+  namespaced: true,
+  state: {
+    userInfo: {},
+  },
+  actions: {
+    async login({ state }, params) {
+      console.log("store login");
+      const res = await usersApi.login(params);
+      console.log(res);
+      const { data } = res;
+      return res;
+    },
+  },
+};
diff --git a/src/utils/auth.js b/src/utils/auth.js
index f6388e4..12a4292 100644
--- a/src/utils/auth.js
+++ b/src/utils/auth.js
@@ -1,15 +1,15 @@
-// import Cookies from 'js-cookie'
+import Cookies from 'js-cookie'
 
-// const TokenKey = 'loginToken'
+const TokenKey = 'loginToken'
 
-// export function getToken() {
-//   return Cookies.get(TokenKey)
-// }
+export function getToken() {
+  return Cookies.get(TokenKey)
+}
 
-// export function setToken(token) {
-//   return Cookies.set(TokenKey, token)
-// }
+export function setToken(token) {
+  return Cookies.set(TokenKey, token)
+}
 
-// export function removeToken() {
-//   return Cookies.remove(TokenKey)
-// }
+export function removeToken() {
+  return Cookies.remove(TokenKey)
+}
diff --git a/src/utils/request.js b/src/utils/request.js
index e635d42..3f3d342 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -1,66 +1,23 @@
-import axios from 'axios'
-import { Message, MessageBox } from 'element-ui'
-import store from '../store'
-import { getToken } from '@/utils/auth'
-
-// 鍒涘缓axios瀹炰緥
-const service = axios.create({
-  baseURL: process.env.BASE_API, // api鐨刡ase_url
-  timeout: 15000 // 璇锋眰瓒呮椂鏃堕棿
-})
-
-// request鎷︽埅鍣�
-service.interceptors.request.use(config => {
-  if (store.getters.token) {
-    config.headers['Authorization'] = getToken() // 璁╂瘡涓姹傛惡甯﹁嚜瀹氫箟token 璇锋牴鎹疄闄呮儏鍐佃嚜琛屼慨鏀�
-  }
-  return config
-}, error => {
-  // Do something with request error
-  console.log(error) // for debug
-  Promise.reject(error)
-})
-
-// respone鎷︽埅鍣�
-service.interceptors.response.use(
-  response => {
-  /**
-  * code涓洪潪200鏄姏閿� 鍙粨鍚堣嚜宸变笟鍔¤繘琛屼慨鏀�
-  */
-    const res = response.data
-    if (res.code !== 200) {
-      Message({
-        message: res.message,
-        type: 'error',
-        duration: 3 * 1000
-      })
-
-      // 401:鏈櫥褰�;
-      if (res.code === 401) {
-        MessageBox.confirm('浣犲凡琚櫥鍑猴紝鍙互鍙栨秷缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�', '纭畾鐧诲嚭', {
-          confirmButtonText: '閲嶆柊鐧诲綍',
-          cancelButtonText: '鍙栨秷',
-          type: 'warning'
-        }).then(() => {
-          store.dispatch('FedLogOut').then(() => {
-            location.reload()// 涓轰簡閲嶆柊瀹炰緥鍖杤ue-router瀵硅薄 閬垮厤bug
-          })
-        })
-      }
-      return Promise.reject('error')
-    } else {
-      return response.data
-    }
+import axios from 'axios';
+// 鎷︽埅鍣�
+// 璇锋眰
+axios.interceptors.request.use(
+  // 璇锋眰涔嬪墠鐨勫洖璋冨嚱鏁�
+  function (config) {
+    config['baseURL'] = '/api';
+    return config;
   },
-  error => {
-    console.log('err' + error)// for debug
-    Message({
-      message: error.message,
-      type: 'error',
-      duration: 3 * 1000
-    })
-    return Promise.reject(error)
+  function (error) {
+    // Do something with request error
+    return Promise.reject(error);
   }
-)
-
-export default service
+);
+// 鍝嶅簲
+axios.interceptors.response.use(
+  function (response) {
+    return response.data;
+  },
+  function (error) {
+    return Promise.reject(error);
+  }
+);  
\ No newline at end of file
diff --git a/src/utils/support.js b/src/utils/support.js
deleted file mode 100644
index 4e45cb8..0000000
--- a/src/utils/support.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import Cookies from "js-cookie";
-const SupportKey='supportKey';
-export function getSupport() {
-  return Cookies.get(SupportKey)
-}
-
-export function setSupport(isSupport) {
-  return Cookies.set(SupportKey, isSupport,{ expires: 3 })
-}
-
-export function setCookie(key,value,expires) {
-  return Cookies.set(key, value,{ expires: expires})
-}
-
-export function getCookie(key) {
-  return Cookies.get(key)
-}
diff --git a/src/utils/validate.js b/src/utils/validate.js
index f7e7f3a..04c0afe 100644
--- a/src/utils/validate.js
+++ b/src/utils/validate.js
@@ -1,7 +1,7 @@
 export function isvalidUsername(str) {
   // const valid_map = ['admin', 'test']
   // return valid_map.indexOf(str.trim()) >= 0
-  return str.trim().length>=3
+  return str.trim().length
 }
 
 /* 鍚堟硶uri*/
@@ -10,21 +10,4 @@
   return urlregex.test(textval)
 }
 
-/* 灏忓啓瀛楁瘝*/
-export function validateLowerCase(str) {
-  const reg = /^[a-z]+$/
-  return reg.test(str)
-}
-
-/* 澶у啓瀛楁瘝*/
-export function validateUpperCase(str) {
-  const reg = /^[A-Z]+$/
-  return reg.test(str)
-}
-
-/* 澶у皬鍐欏瓧姣�*/
-export function validatAlphabets(str) {
-  const reg = /^[A-Za-z]+$/
-  return reg.test(str)
-}
 
diff --git a/src/views/layout/components/Header/index.vue b/src/views/layout/components/Header/index.vue
index 02def97..93ed327 100644
--- a/src/views/layout/components/Header/index.vue
+++ b/src/views/layout/components/Header/index.vue
@@ -1,32 +1,40 @@
 <template>
-  <!-- 澶撮儴 -->
-  <el-header>
-    <!-- 灞曞紑鎺у埗鎸夐挳 -->
-     <!-- <hamburger :is-active="opened" class="hamburger-container" @toggleClick="toggleSideBar" /> -->
-     <!-- 鍙充晶鑿滃崟 -->
-    <div class="header-title">
-      <div class="bell">
-        <el-icon class="el-icon-bell" style="color: white"></el-icon>
+  <div>
+    <!-- 澶撮儴 -->
+    <el-header>
+      <!-- 鍙充晶鑿滃崟 -->
+      <div class="header-title">
+        <div class="bell">
+          <el-icon class="el-icon-bell" style="color: white"></el-icon>
+        </div>
+        <div class="userinfo">
+          <div class="avatar"></div>
+          <span class="username">admin</span>
+        </div>
+        <div class="loginout" @click="loginout">閫�鍑虹櫥褰�</div>
       </div>
-      <div class="userinfo">
-        <div class="avatar"></div>
-        <span class="username">admin</span>
-      </div>
-      <div class="loginout">閫�鍑虹櫥褰�</div>
-    </div>
-  </el-header>
+    </el-header>
+    <NavBar />
+  </div>
 </template>
 
 <script>
-import hamburger from "@/components/hamburger"
+import hamburger from "@/components/hamburger";
+import NavBar from "../NavBar";
 export default {
-  data(){
+  data() {
     return {
-      opened:false
-    }
+      opened: false,
+    };
   },
-  components:{
-    hamburger
+  components: {
+    hamburger,
+    NavBar,
+  },
+  methods:{
+    loginout(){
+      this.$router.push({path:"/login"})
+    }
   }
 };
 </script>
diff --git a/src/views/layout/components/Main/index.vue b/src/views/layout/components/Main/index.vue
index ac1c48f..a3453d7 100644
--- a/src/views/layout/components/Main/index.vue
+++ b/src/views/layout/components/Main/index.vue
@@ -1,6 +1,5 @@
 <template>
   <el-main>
-    <NavBar/>
     <router-view></router-view>
   </el-main>
 </template>
diff --git a/src/views/layout/components/NavBar/index.vue b/src/views/layout/components/NavBar/index.vue
index 1be904b..5b0592c 100644
--- a/src/views/layout/components/NavBar/index.vue
+++ b/src/views/layout/components/NavBar/index.vue
@@ -1,20 +1,76 @@
 <template>
-  <el-breadcrumb separator-class="el-icon-arrow-right">
-    <el-breadcrumb-item :to="{ path: '/' }">棣栭〉</el-breadcrumb-item>
-    <el-breadcrumb-item>娲诲姩绠$悊</el-breadcrumb-item>
-    <el-breadcrumb-item>娲诲姩鍒楄〃</el-breadcrumb-item>
-    <el-breadcrumb-item>娲诲姩璇︽儏</el-breadcrumb-item>
+  <el-breadcrumb class="app-breadcrumb" separator="/">
+    <transition-group name="breadcrumb">
+      <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
+        <span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span>
+        <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
+      </el-breadcrumb-item>
+    </transition-group>
   </el-breadcrumb>
 </template>
 
 <script>
-export default {};
+import pathToRegexp from 'path-to-regexp'
+
+export default {
+  data() {
+    return {
+      levelList: null
+    }
+  },
+  watch: {
+    $route() {
+      this.getBreadcrumb()
+    }
+  },
+  created() {
+    this.getBreadcrumb()
+  },
+  methods: {
+    getBreadcrumb() {
+      // only show routes with meta.title
+      let matched = this.$route.matched.filter(item => item.meta && item.meta.title)
+      const first = matched[0]
+
+      if (!this.isDashboard(first)) {
+        matched = [{ path: '/dashboard', meta: { title: 'Dashboard' }}].concat(matched)
+      }
+
+      this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
+    },
+    isDashboard(route) {
+      const name = route && route.name
+      if (!name) {
+        return false
+      }
+      return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase()
+    },
+    pathCompile(path) {
+      const { params } = this.$route
+      var toPath = pathToRegexp.compile(path)
+      return toPath(params)
+    },
+    handleLink(item) {
+      const { redirect, path } = item
+      if (redirect) {
+        this.$router.push(redirect)
+        return
+      }
+      this.$router.push(this.pathCompile(path))
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
-.el-breadcrumb{
-  background-color: #09152F;
-  border: 1px  dotted #081F31;
-  height: 50px;
+.app-breadcrumb.el-breadcrumb {
+  display: inline-block;
+  font-size: 14px;
+  line-height: 30px;
+  margin-left: 8px;
+  .no-redirect {
+    color: #97a8be;
+    cursor: text;
+  }
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/layout/components/SiderBar/index.vue b/src/views/layout/components/SiderBar/index.vue
index 35eaaea..e11e4da 100644
--- a/src/views/layout/components/SiderBar/index.vue
+++ b/src/views/layout/components/SiderBar/index.vue
@@ -1,89 +1,93 @@
 <template>
-  <!-- 渚ц竟瀵艰埅鏍� -->
-  <el-aside width="200px">
-    <h2 class="siderbar-title">閬傛槍鎵ф硶骞冲彴</h2>
-    <el-scrollbar>
-      <!-- 璺敱 -->
-      <el-menu router class="el-menu-vertical" :default-active="$route.path">
-        <!-- 瑙嗛宸℃煡 -->
-        <el-submenu index="/home/video">
-          <template slot="title">
-            <span slot="prefix" class="icon-padding">
-              <svg-icon icon-class="video"></svg-icon>
-            </span>
-            <span slot="title">瑙嗛宸℃煡</span>
-          </template>
-          <el-menu-item index="/home/video">瑙嗛宸℃煡</el-menu-item>
-        </el-submenu>
-        <!-- 鏅鸿兘宸℃煡 -->
-        <el-submenu index="/admin/article1">
-          <template slot="title">
-            <span slot="prefix" class="icon-padding">
-              <svg-icon icon-class="intelligence"></svg-icon>
-            </span>
-            <span>鏅鸿兘宸℃煡</span>
-          </template>
-          <el-menu-item index="/admin/article/add">棰勮鐮斿垽</el-menu-item>
-          <el-menu-item index="/admin/article">杩濊妫�绱�</el-menu-item>
-          <el-menu-item index="/admin/article">瓒嬪娍鍒嗘瀽</el-menu-item>
-          <el-menu-item index="/admin/article">鏁版嵁缁熻</el-menu-item>
-          <el-menu-item index="/admin/article">杩愯鎶ュ憡</el-menu-item>
-        </el-submenu>
-        <!-- 杩愯惀绠$悊 -->
-        <el-submenu index="/admin/article2">
-          <template slot="title">
-            <span slot="prefix" class="icon-padding">
-              <svg-icon icon-class="operate"></svg-icon>
-            </span>
-            <span>杩愯惀绠$悊</span>
-          </template>
-          <el-menu-item index="/admin/article/add">鎵ф硶绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">璋冨害绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">搴楅摵绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">杞﹁締绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">鍥剧墖绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">瑙嗛绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">娑堟伅绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">瀹℃牳绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article/add">鐭俊绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article">绠楁硶妯″瀷绠$悊</el-menu-item>
-          <el-menu-item index="/admin/article">鏃ュ織绠$悊</el-menu-item>
-        </el-submenu>
-        <!-- 绯荤粺璁剧疆 -->
-        <el-submenu index="/admin/article3">
-          <template slot="title">
-            <!-- <i class="el-icon-reading"></i> -->
-            <span slot="prefix" class="icon-padding">
-              <svg-icon icon-class="system"></svg-icon>
-            </span>
-            <span>绯荤粺璁剧疆</span>
-          </template>
-          <!-- 鍩烘湰璁剧疆 -->
-          <el-submenu index="/admin/article/add">
+  <div>
+    <!-- 渚ц竟瀵艰埅鏍� -->
+    <el-aside width="200px">
+      <h2 class="siderbar-title">閬傛槍鎵ф硶骞冲彴</h2>
+      <el-scrollbar>
+        <!-- 璺敱 -->
+        <el-menu router class="el-menu-vertical" :default-active="$route.path" >
+          <!-- 瑙嗛宸℃煡 -->
+          <el-submenu index="/home/video">
             <template slot="title">
-              <span>鍩烘湰璁剧疆</span>
+              <span slot="prefix" class="icon-padding">
+                <svg-icon icon-class="video"></svg-icon>
+              </span>
+              <span slot="title">瑙嗛宸℃煡</span>
             </template>
-            <el-menu-item index="/admin/article">鐢ㄦ埛绠$悊</el-menu-item>
-            <el-menu-item index="/admin/article">瑙掕壊绠$悊</el-menu-item>
-            <el-menu-item index="/admin/article">鏉冮檺绠$悊</el-menu-item>
-            <el-menu-item index="/admin/article">閮ㄩ棬绠$悊</el-menu-item>
+            <el-menu-item index="/home/video">瑙嗛宸℃煡</el-menu-item>
           </el-submenu>
-          <!-- 骞冲彴璁剧疆 -->
-          <el-submenu index="/admin/article/add">
+          <!-- 鏅鸿兘宸℃煡 -->
+          <el-submenu index="/admin/article1">
             <template slot="title">
-              <span>骞冲彴璁剧疆</span>
+              <span slot="prefix" class="icon-padding">
+                <svg-icon icon-class="intelligence"></svg-icon>
+              </span>
+              <span>鏅鸿兘宸℃煡</span>
             </template>
-            <el-menu-item index="/admin/article">闂ㄦ埛璁剧疆</el-menu-item>
-            <el-menu-item index="/admin/article">绗笁鏂规帴鍙g鐞�</el-menu-item>
+            <el-menu-item index="/admin/article/add">棰勮鐮斿垽</el-menu-item>
+            <el-menu-item index="/admin/article">杩濊妫�绱�</el-menu-item>
+            <el-menu-item index="/admin/article">瓒嬪娍鍒嗘瀽</el-menu-item>
+            <el-menu-item index="/admin/article">鏁版嵁缁熻</el-menu-item>
+            <el-menu-item index="/admin/article">杩愯鎶ュ憡</el-menu-item>
           </el-submenu>
-        </el-submenu>
-      </el-menu>
-    </el-scrollbar>
-  </el-aside>
+          <!-- 杩愯惀绠$悊 -->
+          <el-submenu index="/admin/article2">
+            <template slot="title">
+              <span slot="prefix" class="icon-padding">
+                <svg-icon icon-class="operate"></svg-icon>
+              </span>
+              <span>杩愯惀绠$悊</span>
+            </template>
+            <el-menu-item index="/admin/article/add">鎵ф硶绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">璋冨害绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">搴楅摵绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">杞﹁締绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">鍥剧墖绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">瑙嗛绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">娑堟伅绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">瀹℃牳绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article/add">鐭俊绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article">绠楁硶妯″瀷绠$悊</el-menu-item>
+            <el-menu-item index="/admin/article">鏃ュ織绠$悊</el-menu-item>
+          </el-submenu>
+          <!-- 绯荤粺璁剧疆 -->
+          <el-submenu index="/admin/article3">
+            <template slot="title">
+              <!-- <i class="el-icon-reading"></i> -->
+              <span slot="prefix" class="icon-padding">
+                <svg-icon icon-class="system"></svg-icon>
+              </span>
+              <span>绯荤粺璁剧疆</span>
+            </template>
+            <!-- 鍩烘湰璁剧疆 -->
+            <el-submenu index="/admin/article/add">
+              <template slot="title">
+                <span>鍩烘湰璁剧疆</span>
+              </template>
+              <el-menu-item index="/admin/article">鐢ㄦ埛绠$悊</el-menu-item>
+              <el-menu-item index="/admin/article">瑙掕壊绠$悊</el-menu-item>
+              <el-menu-item index="/admin/article">鏉冮檺绠$悊</el-menu-item>
+              <el-menu-item index="/admin/article">閮ㄩ棬绠$悊</el-menu-item>
+            </el-submenu>
+            <!-- 骞冲彴璁剧疆 -->
+            <el-submenu index="/admin/article/add">
+              <template slot="title">
+                <span>骞冲彴璁剧疆</span>
+              </template>
+              <el-menu-item index="/admin/article">闂ㄦ埛璁剧疆</el-menu-item>
+              <el-menu-item index="/admin/article">绗笁鏂规帴鍙g鐞�</el-menu-item>
+            </el-submenu>
+          </el-submenu>
+        </el-menu>
+      </el-scrollbar>
+    </el-aside>
+  </div>
 </template>
 
 <script>
-export default {};
+export default {
+
+};
 </script>
 
 <style lang="scss" scpoed>
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 6e5f771..97555ea 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -19,7 +19,7 @@
         ref="loginForm"
         label-position="left"
       >
-      <!-- title -->
+        <!-- title -->
         <h2 class="login-title">鐢ㄦ埛鐧诲綍 / USER LOGIN</h2>
         <el-form-item prop="username">
           <!-- 鐢ㄦ埛鍚嶈緭鍏ユ -->
@@ -45,9 +45,9 @@
             autoComplete="on"
             placeholder="璇疯緭鍏ョ櫥褰曞瘑鐮�"
           >
-          <!-- 杈撳叆妗嗗墠icon -->
+            <!-- 杈撳叆妗嗗墠icon -->
             <span slot="prefix">
-              <svg-icon  icon-class="password" class="color"></svg-icon>
+              <svg-icon icon-class="password" class="color"></svg-icon>
             </span>
             <!-- 杈撳叆妗嗗悗icon -->
             <span slot="suffix" @click="showPwd">
@@ -76,7 +76,8 @@
 
 <script>
 import { isvalidUsername } from "@/utils/validate";
-
+import { createNamespacedHelpers } from "vuex";
+const { mapActions } = createNamespacedHelpers("users");
 export default {
   name: "login",
   data() {
@@ -96,8 +97,8 @@
     };
     return {
       loginForm: {
-        username: "",
-        password: "",
+        username: "admin",
+        password: "macro123",
       },
       loginRules: {
         username: [
@@ -111,23 +112,7 @@
       pwdType: false,
     };
   },
-  created() {
-    // this.loginForm.username = getCookie("username");
-    // this.loginForm.password = getCookie("password");
-    // if (
-    //   this.loginForm.username === undefined ||
-    //   this.loginForm.username == null ||
-    //   this.loginForm.username === ""
-    // ) {
-    //   this.loginForm.username = "admin";
-    // }
-    // if (
-    //   this.loginForm.password === undefined ||
-    //   this.loginForm.password == null
-    // ) {
-    //   this.loginForm.password = "";
-    // }
-  },
+  created() {},
   methods: {
     showPwd() {
       if (!this.pwdType) {
@@ -136,59 +121,50 @@
         this.pwdType = false;
       }
     },
+    ...mapActions(["login"]),
     handleLogin() {
-      this.$router.push({ path: "/home" });
-      // this.$refs.loginForm.validate((valid) => {
-      //   if (valid) {
-      //     console.log(valid);
-      //     this.loading = true;
-      //     this.$store
-      //       .dispatch("Login", this.loginForm)
-      //       .then(() => {
-      //         this.loading = false;
-      //         setCookie("username", this.loginForm.username, 15);
-      //         setCookie("password", this.loginForm.password, 15);
-      //         this.$router.push({ path: "/" });
-      //       })
-      //       .catch(() => {
-      //         this.loading = false;
-      //       });
-      //   } else {
-      //     console.log("鍙傛暟楠岃瘉涓嶅悎娉曪紒");
-      //     return false;
-      //   }
-      // });
+      console.log("in login");
+      const { username, password } = this.loginForm;
+      this.$axios
+        .post("http://42.193.1.25:8082/sccg/admin/login", {
+        password,
+        username,
+        })
+        .then(function (response) {
+          console.log(response);
+        })
+        .catch(function (error) {
+          console.log(error);
+        });
     },
   },
 };
 </script>
 
 <style  lang="scss" scoped>
-.color{
+.color {
   color: red;
 }
 #background {
   width: 100vw;
   height: 100vh;
   background: url("@/assets/imgs/login/login_bg.jpg");
-  background-size: cover  ;
+  background-size: cover;
   position: relative;
   display: flex;
   min-width: 800px;
 }
 .login-form-layout {
   position: absolute;
+  top: 20%;
   right: 5%;
   width: 360px;
-  align-self: center;
 }
 .text {
   align-self: flex-start;
   position: absolute;
-  top:20%;
+  top: 20%;
   left: 5%;
-  // margin-top: 180px;
-  // margin-left: 50px;
   display: flex;
   width: 400px;
   justify-content: space-between;
diff --git a/vue.config.js b/vue.config.js
index afd301f..0eb08d4 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -33,13 +33,16 @@
     host: 'localhost',
     port: port,
     open: true,
+    headers: {
+      "Access-Control-Allow-Origin": "*",
+    },
     proxy: {
       // 璺ㄥ煙閰嶇疆
-      [process.env.VUE_APP_BASE_API]: {
-        target: `http://localhost:8080`,
+      "/api": {
+        target: `http://42.193.1.25:8082`,
         changeOrigin: true,
         pathRewrite: {
-          ['^' + process.env.VUE_APP_BASE_API]: ''
+          "^/api": ''
         }
       }
     },

--
Gitblit v1.8.0