Browse Source

提交 重新,特殊的提交

“yueshang” 2 years ago
parent
commit
8035d6f852

+ 27 - 0
package-lock.json

@@ -11,6 +11,7 @@
         "axios": "^1.4.0",
         "core-js": "^3.8.3",
         "element-ui": "^2.15.13",
+        "sm-crypto": "^0.3.12",
         "vue": "^2.6.14",
         "vue-router": "^3.5.1",
         "vuex": "^3.6.2"
@@ -5992,6 +5993,11 @@
       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
       "dev": true
     },
+    "node_modules/jsbn": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz",
+      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
+    },
     "node_modules/jsesc": {
       "version": "2.5.2",
       "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
@@ -8564,6 +8570,14 @@
         "node": ">=8"
       }
     },
+    "node_modules/sm-crypto": {
+      "version": "0.3.12",
+      "resolved": "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.12.tgz",
+      "integrity": "sha512-272PBzB4PYaBdeGa41TH9ZlMGLPVRmS36Gs4FjmHwXIdihQypAbhhFWZTaa/3de69q2KfMme1M5O2W5+spAdrg==",
+      "dependencies": {
+        "jsbn": "^1.1.0"
+      }
+    },
     "node_modules/sockjs": {
       "version": "0.3.24",
       "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz",
@@ -14588,6 +14602,11 @@
       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
       "dev": true
     },
+    "jsbn": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz",
+      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="
+    },
     "jsesc": {
       "version": "2.5.2",
       "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
@@ -16567,6 +16586,14 @@
       "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
       "dev": true
     },
+    "sm-crypto": {
+      "version": "0.3.12",
+      "resolved": "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.12.tgz",
+      "integrity": "sha512-272PBzB4PYaBdeGa41TH9ZlMGLPVRmS36Gs4FjmHwXIdihQypAbhhFWZTaa/3de69q2KfMme1M5O2W5+spAdrg==",
+      "requires": {
+        "jsbn": "^1.1.0"
+      }
+    },
     "sockjs": {
       "version": "0.3.24",
       "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz",

+ 1 - 0
package.json

@@ -10,6 +10,7 @@
     "axios": "^1.4.0",
     "core-js": "^3.8.3",
     "element-ui": "^2.15.13",
+    "sm-crypto": "^0.3.12",
     "vue": "^2.6.14",
     "vue-router": "^3.5.1",
     "vuex": "^3.6.2"

+ 2 - 0
public/config.js

@@ -0,0 +1,2 @@
+// 后台服务接口地址
+STATIC_CONFIG.proxyUrl = 'http://8.142.173.95:10086'

+ 15 - 0
src/api/dashboard.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+//左侧的树
+export const basicAreaList = (params) => {
+    return request({
+      url: 'basic_area/list',
+      params
+    })
+  }
+//   export const absdelList = (data) => {
+//     return request({
+//       url: 'alarmtactics/absdel',
+//       method: 'post',
+//       data
+//     })
+//   }

+ 16 - 0
src/api/login/login.js

@@ -0,0 +1,16 @@
+import request from "../../utils/request"
+export function loginOut(data) {
+    return request({
+        url: '/api/logout',
+        method: "post",
+        data
+    })
+}
+export function login(data) {
+    return request({
+        url: "/api/login",
+        method: "post",
+        headers: { 'content-type ': 'application/x-www-form-urlencoded' },
+        data
+    });
+}

BIN
src/assets/font/fluent:eye-20-regular.png


BIN
src/assets/loginBackground.png


BIN
src/assets/loginNewBack.png


+ 42 - 0
src/components/bulletBox/index.vue

@@ -0,0 +1,42 @@
+<template>
+  <div class="bullet_box" :style="{width:windowWidth,height:windowHeight}">
+
+  </div>
+</template>
+
+<script>
+export default {
+    // 接收传过来的宽高
+  props: {
+    windowWidth: {
+      type: String,
+      default: "",
+    },
+    windowHeight: {
+      type: String,
+      default: "",
+    },
+  },
+
+  data() {
+    return {};
+  },
+
+  mounted() {},
+
+  methods: {},
+};
+</script>
+
+<style lang="scss" scoped>
+.bullet_box {
+    position: absolute;
+    top: 10px;
+    left: 10px;
+  box-shadow: 1px 1px 3px 2px #299bff !important;
+  background-color: #fff;
+  border-radius: 5px;
+  padding: 2rem;
+  padding-top: 0;
+}
+</style>

+ 1 - 2
src/main.js

@@ -2,7 +2,6 @@ import Vue from 'vue'
 import App from './App.vue'
 import router from './router'
 import store from './store'
-
 import '@/assets/font-awesome-4.7.0/css/font-awesome.min.css'
 import '@/styles/index.scss' // global css
 
@@ -15,7 +14,7 @@ import ElementUI from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';
 //向Vue注册安装elementui
 Vue.use(ElementUI)
-
+// Vue.use(SmCrypto)
 Vue.config.productionTip = false
 
 new Vue({

+ 7 - 1
src/router/index.js

@@ -4,9 +4,15 @@ import VueRouter from 'vue-router'
 Vue.use(VueRouter)
 
 import Layout from '@/layout'
-
+import Login from "@/views/login/Login.vue"
 const routes = [
   {
+    path: "/login",
+    component: Login,
+    name: "login",
+    meta: { title: '登录', icon: "el-icon-user-solid", affix: true },
+  },
+  {
     path: '/',
     component: Layout,
     redirect: '/dashboard',

+ 1 - 2
src/styles/index.scss

@@ -16,7 +16,6 @@ body {
     // font-size: 10px;
     box-sizing: border-box;
   }
-  
   #app {
     height: 100%;
     // overflow-y: hidden;
@@ -26,4 +25,4 @@ body {
   *:before,
   *:after {
     box-sizing: inherit;
-  }
+  }

File diff suppressed because it is too large
+ 0 - 0
src/utils/SmCrypto.min.js


+ 13 - 0
src/utils/auth.js

@@ -0,0 +1,13 @@
+const TokenKey = 'temp-token'
+
+export function getToken () {
+  return localStorage.getItem(TokenKey)
+}
+
+export function setToken (token) {
+  return localStorage.setItem(TokenKey, token)
+}
+
+export function removeToken () {
+  return localStorage.removeItem(TokenKey)
+}

+ 3 - 2
src/utils/request.js

@@ -3,8 +3,8 @@ import { Message } from 'element-ui'
 
 // 请求url
 const service = axios.create({
-  // baseURL: window.STATIC_CONFIG.proxyUrl, // url = base url + request url
-  baseURL:'http://8.142.173.95:10086//api/',
+  baseURL: window.STATIC_CONFIG.proxyUrl, // url = base url + request url
+ baseURL:"http://8.142.173.95:10086/",
   timeout: 15000 // request timeout
 })
 
@@ -12,6 +12,7 @@ const service = axios.create({
 service.interceptors.request.use(
   config => {
     // }
+    config.headers['Authorization'] = 'Bearer ' + getToken()
     return config
   },
   error => {

+ 29 - 0
src/views/dashboard/components/QuickFind.vue

@@ -0,0 +1,29 @@
+<template>
+    <div>
+        
+    </div>
+</template>
+
+<script>
+export default {
+    name: 'ScdProjectQuickFind',
+
+    data() {
+        return {
+            
+        };
+    },
+
+    mounted() {
+        
+    },
+
+    methods: {
+        
+    },
+};
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 220 - 0
src/views/login/Login.vue

@@ -0,0 +1,220 @@
+<template>
+    <div>
+        <div class="pageBox">
+            <div class="loginBox">
+                <div class="loginTitle">
+                    <p class="loginTitleP">请登录您的账号</p>
+                </div>
+                <el-form ref="form" :model="form">
+                    <el-form-item class="loginItem">
+                        <p class="loginItemP">账号</p>
+                        <input class="loginInput" v-model="form.username" @blur="userRule" placeholder="请输入账号">
+                        <p class="blurP" v-if="userBlur">账号不能为空</p>
+                    </el-form-item>
+                    <el-form-item class="loginItem">
+                        <p class="loginItemP">密码</p>
+                        <input class="loginInput" v-model="form.password" @blur="passRule" placeholder="请输入密码"
+                            :type="inputType">
+                        <img class="imgEyes" src="../../assets/font/fluent:eye-20-regular.png" alt="" @click="changeType">
+                        <p class="blurP" v-if="passBlur">密码不能为空</p>
+                    </el-form-item>
+                    <el-form-item class="loginItem">
+                        <el-checkbox v-model="rememberUser" @change="rememberNow">记住账号</el-checkbox><br>
+                        <el-button class="loginButton" @click="loginNow">登录</el-button>
+                    </el-form-item>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import { login } from '../../api/login/login.js'
+// import sm from 'sm-crypto';
+import sms from '../../utils/SmCrypto.min.js'
+export default {
+    data() {
+        return {
+            form: {
+                username: "",
+                password: ""
+            },//账号密码表单
+            rememberUser: false,//是否记住账号
+            userBlur: false,//用户名验证
+            passBlur: false,//密码验证
+            inputType: "password",//密码输入框性质
+        }
+    },
+    methods: {
+        // 用户验证
+        userRule(e) {
+            if (e.target._value) {
+                this.userBlur = false
+            } else {
+                this.userBlur = true
+            }
+        },
+        // 密码验证
+        passRule(e) {
+            if (e.target._value) {
+                this.passBlur = false
+            } else {
+                this.passBlur = true
+            }
+        },
+        // 登录按钮
+        async loginNow() {
+            // console.log(this.form.username, this.form.password, 'login');
+            if (this.form.username != '' && this.form.password != "") {
+                if (!this.userBlur && !this.passBlur) {
+                    let res = await login({ login_account: this.form.username, pwd: this.form.password })
+                    // this.$router.push("/")
+                    console.log(res, '1');
+                } else {
+                    this.$message({
+                        message: '账号或密码错误',
+                        type: 'error'
+                    });
+                }
+            } else {
+                this.$message({
+                    message: '账号或密码不能为空',
+                    type: 'error'
+                });
+            }
+        },
+        // 记住账号
+        rememberNow(e) {
+            this.rememberUser = e
+            if (this.rememberUser) {
+                localStorage.setItem('username', JSON.stringify(this.form.username))
+            } else {
+                localStorage.removeItem('username')
+            }
+        },
+        // 拿到已经保存的用户名
+        getSaveUser() {
+            let user = localStorage.getItem("username")
+            if (user) {
+                user = JSON.parse(user)
+                this.form.username = user
+            }
+        },
+        // ,密码框小眼睛
+        changeType() {
+            if (this.inputType === 'password') {
+                this.inputType = 'text'
+            } else {
+                this.inputType = 'password'
+            }
+        },
+        encryptPassword(password) {
+            return sm.sm3(password);
+        },
+        getPassWord(str){
+        }
+    },
+    created() {
+        // 通过本地使用户名显示
+        this.getSaveUser()
+    },
+}
+</script>
+
+<style scoped>
+p {
+    margin: 0;
+    padding: 0;
+}
+
+/* 整个大盒子css */
+.pageBox {
+    width: 100vw;
+    height: 100vh;
+    background-image: url("../../assets/loginNewBack.png");
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    /* background-color: #14093E; */
+    position: relative;
+    overflow: hidden;
+}
+
+/* 登录盒子css */
+.loginBox {
+    width: 640px;
+    height: 650px;
+    position: absolute;
+    top: 140px;
+    right: 0px;
+}
+
+.loginItem {
+    width: 432px;
+}
+
+/* 表单内输入框css */
+.loginInput {
+    width: 432px;
+    height: 44px;
+    border-radius: 5px 5px 5px 5px;
+    opacity: 1;
+    border: 1px solid #dbdbdb;
+    background-color: transparent;
+    /* color: white; */
+    position: relative;
+}
+
+/* 密码框小眼睛css */
+.imgEyes {
+    position: absolute;
+    top: 50px;
+    right: 0px;
+}
+
+/* 表单内标题p标签css */
+.loginTitleP {
+    width: 210px;
+    height: 42px;
+    font-size: 30px;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    /* color: #FFFFFF; */
+    line-height: 35px;
+    margin-left: 100px;
+    margin-bottom: 52px;
+}
+
+/* 表单内p标签css */
+.loginItemP {
+    width: 40px;
+    height: 28px;
+    font-size: 20px;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    /* color: #FFFFFF; */
+    line-height: 23px;
+    margin-bottom: 12px;
+}
+
+/* 登录按钮css */
+.loginButton {
+    width: 434px;
+    height: 44px;
+    background: blue;
+    border-radius: 5px 5px 5px 5px;
+    opacity: 1;
+    border: none;
+    color: white;
+}
+
+/* 表单验证p标签css */
+.blurP {
+    width: 84px;
+    height: 20px;
+    font-size: 12px;
+    font-family: PingFang SC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #FF0000;
+    line-height: 16px;
+}
+</style>

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