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