From b1dd7463eebcd7e67f94244988ebbc3b9d29c1b7 Mon Sep 17 00:00:00 2001
From: value <z1292839451@163.com>
Date: 星期一, 28 八月 2023 16:35:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/store/modules/user.js                          |    2 
 src/views/chart/work/index.vue                     |   25 +
 src/views/laboratory/measure/index.vue             |   22 +-
 src/components/experiment/checkTheReport/index.vue |   34 ++
 src/views/login/index.vue                          |  396 +++++++++++++++++++-------------------
 src/layout/components/Navbar.vue                   |   84 ++++---
 src/views/laboratory/role/index.vue                |   12 
 src/assets/404_images/login-form-bg.png            |    0 
 src/router/index.js                                |    2 
 .env.development                                   |    2 
 src/views/laboratory/measure/Add.vue               |    1 
 src/assets/404_images/login-bg.png                 |    0 
 src/views/experiment/checkTheReport/index.vue      |    2 
 13 files changed, 314 insertions(+), 268 deletions(-)

diff --git a/.env.development b/.env.development
index ab9be2d..d00c942 100644
--- a/.env.development
+++ b/.env.development
@@ -2,4 +2,4 @@
 ENV = 'development'
 
 # base api
-VUE_APP_BASE_API =  'http://localhost:1234/'
+VUE_APP_BASE_API =  'http://192.168.110.107:1234/'
diff --git a/src/assets/404_images/login-bg.png b/src/assets/404_images/login-bg.png
new file mode 100644
index 0000000..5436ea0
--- /dev/null
+++ b/src/assets/404_images/login-bg.png
Binary files differ
diff --git a/src/assets/404_images/login-form-bg.png b/src/assets/404_images/login-form-bg.png
new file mode 100644
index 0000000..aacbd1b
--- /dev/null
+++ b/src/assets/404_images/login-form-bg.png
Binary files differ
diff --git a/src/components/experiment/checkTheReport/index.vue b/src/components/experiment/checkTheReport/index.vue
index 3c005d9..7d22893 100644
--- a/src/components/experiment/checkTheReport/index.vue
+++ b/src/components/experiment/checkTheReport/index.vue
@@ -40,13 +40,15 @@
                     <td>妫�娴嬬粨鏋�</td>
                     <td>鍗曢」鍒ゆ柇</td>
                 </tr>
-                <tr v-for="(item,index) in reportData.products" :key="item">
+                <tr v-for="(item,index) in arr" :key="index">
                     <td>{{index+1}}</td>
                     <td>{{item.ipName}}</td>
                     <td>{{item.unit}}</td>
                     <td>{{item.required}}</td>
                     <td>{{item.testValue}}</td>
-                    <td>{{item.testState === 1 ? "鈭�" : "X"}}</td>
+                    <td >
+                        {{isIfState(item.testState) }}
+                    </td>
                 </tr>
                 <tr>
                     <td colspan="6">妫�楠岀粨璁猴細{{reportData.type == 1 ? "鍚堟牸" : "涓嶅悎鏍�"}}</td>
@@ -74,7 +76,24 @@
     data() {
         return {
             logoSrc : require("@/assets/404_images/logo.png"),    
-            now: new Date().toLocaleDateString()
+            now: new Date().toLocaleDateString(),
+            arr: []
+        }
+    },
+    mounted(){
+        this.arr = this.reportData.products;
+        if(this.reportData.products.length < 10){
+            let size = this.reportData.products.length; 
+            let num=10-size
+            for(let i=0;i< num;i++){
+                this.arr.push({
+                    code: null,
+                    ipName: "",
+                    required: "",
+                    testState: null,
+                    testValue: "",
+                    unit: ""})
+            }
         }
     },
     methods:{
@@ -84,6 +103,11 @@
             let month = (dt.getMonth() + 1).toString().padStart(2,'0');
             let date = dt.getDate().toString().padStart(2,'0');
             return `${year}-${month}-${date}`;
+        },
+        isIfState(val){
+            if(val===1)return "鈭�"
+            else if(val===null || val=== undefined) return null
+            else return "X"
         }
     },
     props:["reportData"]
@@ -117,7 +141,7 @@
                 border: 2px solid black;
             }
             tr,td,th{
-                padding: 10px 10px;
+                padding: 15px 10px;
             }
             .date-group{
                 width: 90%;
@@ -135,7 +159,7 @@
                 margin-left: 5%;
                 color: lightgray; 
                 text-align: center;
-                margin-top: 250px;
+                margin-top: 300px;
             }
         }
      }
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index ba4d987..0fe19aa 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -7,18 +7,18 @@
     <div class="right-menu">
       <div class="right-serves">
         <!-- <i class="el-icon-setting" /> -->
-        
+
         <p @click="toMessage"><el-badge is-dot class="el-icon-bell message-icon"></el-badge></p>
         <!-- <i class="el-icon-time" /> -->
       </div>
       <el-dropdown class="avatar-container" trigger="click">
         <div class="avatar-wrapper">
-          <a class="user-avatar">{{ user.name.slice(0,1) }}</a>
+          <a class="user-avatar">{{ user.name.slice(0, 1) }}</a>
         </div>
         <el-dropdown-menu slot="dropdown" class="user-dropdown">
-            <el-dropdown-item >
-              <p @click="dialogFormVisible = true">淇敼瀵嗙爜</p>
-            </el-dropdown-item>
+          <el-dropdown-item>
+            <p @click="dialogFormVisible = true">淇敼瀵嗙爜</p>
+          </el-dropdown-item>
           <el-dropdown-item divided @click.native="logout">
             <span style="display:block;">閫�鍑虹櫥褰�</span>
           </el-dropdown-item>
@@ -49,15 +49,15 @@
 import { mapGetters } from 'vuex'
 // import Breadcrumb from '@/components/Breadcrumb'
 // import Hamburger from '@/components/Hamburger'
-	import {
-		get,
-		post,
-		wpost,
-		postFile
-	} from "@/api/util/requestUtil.js"
+import {
+  get,
+  post,
+  wpost,
+  postFile
+} from "@/api/util/requestUtil.js"
 
 export default {
-  data(){
+  data() {
     return {
       form: {
         oldPwd: '',
@@ -65,15 +65,15 @@
         confirmPwd: ''
       },
       user: {
-				id: null,
-				name: 'value'
-			},
+        id: null,
+        name: 'value'
+      },
       dialogFormVisible: false,
       formLabelWidth: '120px',
-			user: {
-				id: null,
-				name: 'value'
-			}
+      user: {
+        id: null,
+        name: 'value'
+      }
     }
   },
   components: {
@@ -86,20 +86,20 @@
       'avatar'
     ])
   },
-	mounted() {
-		this.getUser()
-	},
+  mounted() {
+    this.getUser()
+  },
   methods: {
-    reset(){
+    reset() {
       this.dialogFormVisible = false;
       this.form.oldPwd = '';
       this.form.newPwd = '';
       this.form.confirmPwd = '';
     },
-    toMessage(){
+    toMessage() {
       this.$router.push('/message/toDo');
     },
-    editPwd(){
+    editPwd() {
       console.log(1);
     },
     toggleSideBar() {
@@ -108,16 +108,18 @@
     async logout() {
       // await this.$store.dispatch('user/logout')
       sessionStorage.removeItem("user")
+      localStorage.removeItem("autoenter");
       this.$router.push(`/login?redirect=${this.$route.fullPath}`)     
       this.$router.replace({path: '/login'});
       location.reload();
+      
     },
-		getUser(){
-			get(this.$url.info).then(res=>{
-				this.user = res.data
-        sessionStorage.setItem("user",JSON.stringify(res.data))
-			})
-		}
+    getUser() {
+      get(this.$url.info).then(res => {
+        this.user = res.data
+        sessionStorage.setItem("user", JSON.stringify(res.data))
+      })
+    }
   }
 }
 </script>
@@ -130,21 +132,24 @@
   background: #fff;
   display: flex;
   border-bottom: 1px solid #f0f2f5;
+
   // box-shadow: 0 0 0.857143rem rgba(0, 0, 0, 0.12);
   // box-shadow: 0 1px 4px rgba(0,21,41,.08);
-  .message-icon{
+  .message-icon {
     margin-right: 10px;
     cursor: pointer;
   }
-  .v-modal{
+
+  .v-modal {
     z-index: 8;
   }
+
   .hamburger-container {
     line-height: 46px;
     height: 100%;
     cursor: pointer;
     transition: background .3s;
-    -webkit-tap-highlight-color:transparent;
+    -webkit-tap-highlight-color: transparent;
 
     &:hover {
       background: rgba(0, 0, 0, .025)
@@ -161,11 +166,13 @@
     line-height: 50px;
     display: flex;
     justify-content: right;
-    .right-serves{
+
+    .right-serves {
       height: 100%;
       display: flex;
       align-items: center;
-      >i{
+
+      >i {
         display: inline-block;
         margin: auto 10px;
         font-size: 20px;
@@ -198,6 +205,7 @@
     .avatar-container {
       margin-right: 24px;
       height: 100%;
+
       .avatar-wrapper {
         // margin-top: 5px;
         width: 40px;
@@ -206,6 +214,7 @@
         display: flex;
         align-items: center;
         justify-content: center;
+
         .user-avatar {
           cursor: pointer;
           width: 30px;
@@ -229,5 +238,4 @@
       }
     }
   }
-}
-</style>
+}</style>
diff --git a/src/router/index.js b/src/router/index.js
index e932803..3f4bca3 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -528,7 +528,7 @@
 function createRouter(Routees) {
   if (JSON.parse(sessionStorage.getItem("user")) != undefined && JSON.parse(sessionStorage.getItem("user")) != null) {
     let sessionLayerId=JSON.parse(sessionStorage.getItem("user")).sessionLayerId
-    if(sessionLayerId!='c3284d0f94606de1fd2af172aba15bf3'){
+    if(sessionLayerId!='f5c8bcb7d5a0fd27e2323280f7e98cad'){
     let role = JSON.parse(sessionStorage.getItem("user")).role
     let menuFather = baseRouter
     const dataMenuFather = fn3(menuFather)
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 3ff12ca..8f614de 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -42,7 +42,7 @@
         commit('SET_REFRESH', data.refresh)
         setToken(data.token)
         setRefresh(data.refresh)
-        resolve()
+        resolve(response)
       }).catch(error => {
         reject(error)
       })
diff --git a/src/views/chart/work/index.vue b/src/views/chart/work/index.vue
index 46e1da2..399ab21 100644
--- a/src/views/chart/work/index.vue
+++ b/src/views/chart/work/index.vue
@@ -90,23 +90,34 @@
         },
       }
     },
-    mounted(){},
+    mounted(){
+      this.queryData();
+    },
     methods: {
       async queryData(){
-        let date = this.formInline.date;
+        let date = [];
+        let type;
+        if(this.formInline.date == null || this.formInline.date == ""){
+          let currentDate = new Date();
+          let year = currentDate.getFullYear();
+          let month = currentDate.getMonth() + 1;
+          let day = currentDate.getDate();
+          date.push(year +"-" + month + "-01");
+          date.push(year +"-" + month + "-" + day);
+          type = 0;
+        }else{
+          date = this.formInline.date;
+          type = this.formInline.type;
+        }
         let obj = {
           startTime : date[0],
           endTime : date[1],
-          type : this.formInline.type
+          type : type
         }
         const dutyMater = await getDutyMater(obj);
         const dutyTimely = await getDutyTimely(obj);
         const executeMater = await getExecuteMater(obj);
         const executeTimely = await getExecuteTimely(obj);
-        console.log("dm",dutyMater.data);
-        console.log("dt",dutyTimely.data);
-        console.log("em",executeMater.data.length);
-        console.log("et",executeTimely.data);
         this.initLeaderStatiChart("leaderStati",dutyMater.data);
         this.initLeaderTimelyChart("leaderTimely",dutyTimely.data);
         this.initTesterStatiChart("testerStati",executeMater.data);
diff --git a/src/views/experiment/checkTheReport/index.vue b/src/views/experiment/checkTheReport/index.vue
index 47cd9c1..dce2174 100644
--- a/src/views/experiment/checkTheReport/index.vue
+++ b/src/views/experiment/checkTheReport/index.vue
@@ -214,11 +214,11 @@
     async queryReportByRCode(code){
       const resp = await getReportData({code:code});
       this.reportData = resp.data;
+      this.dialogVisible = true;
       console.log(this.reportData);
     },
     //鏌ョ湅鎶ュ憡鎸夐挳
     previewFun(row){
-      this.dialogVisible = true;
       this.reportType = row.type;
       this.queryReportByRCode(row.reportCode);
     },
diff --git a/src/views/laboratory/measure/Add.vue b/src/views/laboratory/measure/Add.vue
index bbc0fe9..0533251 100644
--- a/src/views/laboratory/measure/Add.vue
+++ b/src/views/laboratory/measure/Add.vue
@@ -140,7 +140,6 @@
         res.data.instrumentList.forEach(item => {
             this.insList.push({ label: item.equipmentName, value: item.id })
         })
-        console.log(this.insList);
     },
     methods: {
         addcodePointsTable() {
diff --git a/src/views/laboratory/measure/index.vue b/src/views/laboratory/measure/index.vue
index a4b0dbb..d70dd9c 100644
--- a/src/views/laboratory/measure/index.vue
+++ b/src/views/laboratory/measure/index.vue
@@ -129,7 +129,7 @@
         <Add ref="add" />
       </div>
       <div id="myMOdel"
-        :style="`position: absolute;transition: 1s;top:${mymodelTop}vh; left: 9px; width: 99%; height: 85vh; background-color: #fff;z-index: 20;`">
+        :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 99%; height: 100vh; background-color: #fff;z-index: 20;`">
         <el-col :span="10">
           <p style="font-size: 13px;padding-left: 40px;">璁″垝淇℃伅</p>
         </el-col>
@@ -338,7 +338,7 @@
         createPerson: '鏌愭煇璐熻矗浜�',
         createTime: '2021-09-08'
       },
-      mymodelTop: -85,//14
+      mymodelTop: -1000,//14
       addTop: -85,
       planId: 0
     }
@@ -391,9 +391,9 @@
       this.currentPage
       await this.limitGetPlanMeasureInstrument()
     },
-    async handleCurrentChangePllan(num) {
-      this.currentPagePlan = num
-      await this.limitGetPlanMeasureInstrument()
+    handleCurrentChangePllan(num) {
+      this.currentPagePlan = num;
+      this.limitGetPlanMeasureInstrument();
     },
     addPlan() {
       this.addTop = 2
@@ -407,9 +407,11 @@
         currentPage: this.currentPagePlan,
         pageSize: this.pageSizePlan
       }
-      let res = await limitGetPlanMeasureRequest(param)
-      this.totalPlan = res.data.taotal
-      this.measureData = res.data.list
+      const res = await limitGetPlanMeasureRequest(param);
+      console.log(res.data.total);
+      // this.totalPlan = res.data.taotal;
+      this.measureData = res.data.list;
+      console.log(this.totalPlan);
     },
     lookPalan(id) {
       this.planId = id
@@ -437,7 +439,7 @@
     },
     combackLookPlan() {
       this.lookVisible = false
-      this.mymodelTop = -85
+      this.mymodelTop = -1000
       this.selectInfoBtn=false
     },
     blurSearch() {
@@ -520,7 +522,7 @@
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .top-bar {
   margin: -25px -15px;
   background: #fff;
diff --git a/src/views/laboratory/role/index.vue b/src/views/laboratory/role/index.vue
index c4f696c..26da055 100644
--- a/src/views/laboratory/role/index.vue
+++ b/src/views/laboratory/role/index.vue
@@ -2,14 +2,16 @@
   <div>
     <div class="content-main">
       <div class="top-bar">
-        <el-form ref="form" :inline="true" :model="searchData">
+        <el-form style="display: flex;align-items: center;" ref="form" :inline="true" :model="searchData">
           <el-form-item label="瑙掕壊鍚嶇О锛�" class="sermargin">
             <el-input v-model="searchData.roleName" class="input-form" placeholder="璇疯緭鍏ヨ鑹插悕绉�" style="width:250px">
             </el-input>
           </el-form-item>
           <el-form-item class="rightBtn">
-            <el-button type="primary" @click="searchRole">鏌ヨ</el-button>
-            <el-button type="primary" plain>閲嶇疆</el-button>
+            <el-col>
+              <el-button type="primary" @click="searchRole">鏌ヨ</el-button>
+              <el-button type="primary" plain>閲嶇疆</el-button>
+            </el-col>
           </el-form-item>
         </el-form>
         <el-form>
@@ -358,13 +360,11 @@
 
     },
     async upRole(scope) {
-      console.log(scope);
       this.updateRole.roleId = scope.row.roleId
       this.updateRole.roleName = scope.row.roleName
       this.updateRole.lastName = scope.row.roleName
       let menuSelect = scope.row.roleMenuList
       this.updateRole.lastMenuSelect = scope.row.roleMenuList
-      console.log(menuSelect);
       let res = await getMenusTree();
       this.menuUpdateInfo = res.data
       this.menuUpdateInfo.forEach(item => {
@@ -386,7 +386,6 @@
           })
         }
       })
-      console.log(this.menuUpdateInfo);
       menuSelect.forEach(ms => {
         this.menuUpdateInfo.forEach(item => {
           if (ms.menuName === item.name) {
@@ -784,6 +783,7 @@
 #selectRolecheck .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
   border-color: #fff !important;
 }
+
 #selectRoleCheck .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
   background-color: #409EFF;
   border-color: #409EFF;
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 627125e..e50cf91 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -1,73 +1,188 @@
+<style scoped>
+.enter {
+  width: 100vw;
+  height: 100vh;
+  display: flex;
+  background-image: url("../../assets/404_images/login-form-bg.png");
+  background-size: 100% 100%;
+}
+
+.left {
+  width: calc(100% - 500px);
+  height: 100%;
+  overflow: hidden;
+}
+
+.left img {
+  width: 100%;
+  min-height: 100%;
+}
+
+.right {
+  width: 600px;
+  overflow-y: auto;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.title_big {
+  color: #004EA2;
+  font-size: 40px;
+  margin-bottom: 8px;
+}
+
+.title_small {
+  color: #004EA2;
+  font-size: 24px;
+}
+
+.elform {
+  margin-top: 50px;
+}
+
+.sao {
+  font-size: 14px;
+  color: #004EA2;
+  width: 100%;
+  text-align: right;
+}
+</style>
+
+<style>
+.enter .el-form-item__label {
+  font-size: 20px;
+  color: #333;
+  line-height: 48px;
+}
+
+.enter .el-form-item {
+  margin-bottom: 30px;
+}
+
+.enter .el-input__inner {
+  height: 48px;
+}
+
+.enter .el-button {
+  background-color: #1763EB;
+  color: #fff;
+  border: 0;
+  border-radius: 16px;
+  width: 100%;
+  height: 48px;
+}
+
+.enter input::-webkit-input-placeholder,
+.enter textarea::-webkit-input-placeholder {
+  font-size: 14px;
+}
+
+.enter input::-moz-placeholder,
+.enter textarea::-moz-placeholder {
+  font-size: 10px;
+}
+
+.enter input:-ms-input-placeholder,
+.enter textarea:-ms-input-placeholder {
+  font-size: 10px;
+}
+
+.enter input:-moz-placeholder,
+.enter textarea:-moz-placeholder {
+  font-size: 10px;
+}
+.copyright{
+  width: 100%;
+  position: relative;
+  top: 140px;
+}
+.copyright p{
+  padding: 2px 0px;
+  font-size: 5px;
+  text-align: center;
+  color: lightgray;
+}
+.copyright >p:nth-child(3){
+  text-decoration: underline;
+}
+</style>
+
 <template>
-  <div class="login-container">
-    <el-form ref="loginForm" :model="loginForm" class="login-form" auto-complete="on" label-position="left">
-      <!-- <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left"> -->
-      <!-- form 琛ㄥ崟鏍¢獙 -->
-      <div class="title-container">
-        <h3 class="title">鐧� 褰�</h3>
+  <div class="enter">
+    <div class="left">
+      <img src="@/assets/404_images/login-bg.png">
+    </div>
+    <div class="right">
+      <div style="width: calc(100% - 100px);">
+        <div class="title_big">娆㈣繋鎮ㄧ櫥褰曪紒</div>
+        <div class="title_small">瑁呭鐢电紗LIMS瀹為獙瀹ょ鐞嗙郴缁�</div>
+        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" class="elform" :hide-required-asterisk="true">
+          <el-form-item label="鐢ㄦ埛鍚�" prop="username">
+            <el-input v-model="ruleForm.username" placeholder="璇疯緭鍏ヨ处鍙�" clearable></el-input>
+          </el-form-item>
+          <el-form-item label="瀵嗙爜" prop="password">
+            <el-input v-model="ruleForm.password" placeholder="璇疯緭鍏ュ瘑鐮�" clearable show-password></el-input>
+          </el-form-item>
+          <el-form-item style="margin-bottom: 8px;">
+            <el-col :span="12"><el-checkbox v-model="ruleForm.remumberme">璁颁綇瀵嗙爜</el-checkbox></el-col>
+            <el-col :span="12" style="text-align: right;"><el-checkbox
+              v-model="ruleForm.autoenter">鑷姩鐧诲綍</el-checkbox></el-col>
+          </el-form-item>
+          <el-form-item style="margin-bottom: 15px;">
+            <el-button type="primary" @click="submitForm('ruleForm')" :loading="btnload">绔嬪嵆鐧诲綍</el-button>
+          </el-form-item>
+        </el-form>
+        <div class="sao">寰俊鎵爜鐧诲綍</div>
+        <div class="copyright">
+          <p>姹熶笢閲戝叿璁惧鏈夐檺鍏徃</p>
+          <p>鐗堟潈鎵�鏈塁opyright 漏锔� 2012-2021 ZTT.All Rights Reserved.</p>
+          <p>[鑻廔CP澶�10047815鍙�-1]</p>
+        </div>
       </div>
-
-      <el-form-item prop="username">
-        <span class="svg-container">
-          <svg-icon icon-class="user" />
-        </span>
-        <el-input ref="username" v-model="loginForm.username" placeholder="鐢ㄦ埛鍚�" name="username" type="text"
-          tabindex="1" auto-complete="on" />
-      </el-form-item>
-
-      <el-form-item prop="password">
-        <span class="svg-container">
-          <svg-icon icon-class="password" />
-        </span>
-        <el-input :key="passwordType" ref="password" v-model="loginForm.password" :type="passwordType"
-          placeholder="瀵嗙爜" name="password" tabindex="2" auto-complete="on" @keyup.enter.native="handleLogin" />
-        <span class="show-pwd" @click="showPwd">
-          <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
-        </span>
-      </el-form-item>
-
-      <el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;"
-        @click.native.prevent="handleLogin">Login</el-button>
-      <!-- <div class="tips">
-        <span style="margin-right:20px;">username: admin</span>
-        <span> password: any</span>
-      </div> -->
-    </el-form>
+    </div>
   </div>
 </template>
 
 <script>
-import { validUsername } from '@/utils/validate'
 import { get } from "@/api/util/requestUtil.js"
 export default {
-  name: 'Login',
   data() {
-    const validateUsername = (rule, value, callback) => {
-      if (!validUsername(value)) {
-        callback(new Error('Please enter the correct user name'))
-      } else {
-        callback()
-      }
-    }
-    const validatePassword = (rule, value, callback) => {
-      if (value.length < 6) {
-        callback(new Error('The password can not be less than 6 digits'))
-      } else {
-        callback()
-      }
-    }
     return {
-      loginForm: {
-        username: 'admin',
-        password: 'admin'
+      ruleForm: {
+        username: "admin",
+        password: "admin",
+        remumberme: false,
+        autoenter: false
       },
-      loginRules: {
-        username: [{ required: true, trigger: 'blur', validator: validateUsername }],
-        password: [{ required: true, trigger: 'blur', validator: validatePassword }]
+      rules: {
+        username: [{
+          required: true,
+          message: '璇疯緭鍏ヨ处鍙�',
+          trigger: ['blur', 'change']
+        }],
+        password: [{
+          required: true,
+          message: '璇疯緭鍏ュ瘑鐮�',
+          trigger: ['blur', 'change']
+        }]
       },
-      loading: false,
-      passwordType: 'password',
+      btnload: false,
       redirect: undefined
+    }
+  },
+  mounted() {
+    this.ruleForm.remumberme = JSON.parse(localStorage.getItem('rememberme'))==null?false:JSON.parse(localStorage.getItem('rememberme'))
+    this.ruleForm.autoenter = JSON.parse(localStorage.getItem('autoenter'))==null?false:JSON.parse(localStorage.getItem('autoenter'))
+    var user = JSON.parse(localStorage.getItem('user'))
+    if (user != null && user != undefined) {
+      if (this.ruleForm.remumberme==true) {
+        this.ruleForm.username = user.username;
+        this.ruleForm.password = user.password;
+      }
+      if (this.ruleForm.autoenter==true) {
+        this.submitForm('ruleForm');
+      }
     }
   },
   watch: {
@@ -79,154 +194,41 @@
     }
   },
   methods: {
-    showPwd() {
-      if (this.passwordType === 'password') {
-        this.passwordType = ''
-      } else {
-        this.passwordType = 'password'
-      }
-      this.$nextTick(() => {
-        this.$refs.password.focus()
-      })
-    },
-    handleLogin() {
-      this.$refs.loginForm.validate(valid => {
+    submitForm(formName) {
+      this.btnload = true
+      this.$refs[formName].validate((valid) => {
         if (valid) {
-          this.loading = true
-          this.$store.dispatch('user/login', this.loginForm).then(async () => {
+          this.$store.dispatch('user/login', this.ruleForm).then(async (res) => {
+            let name = "";
             await get(this.$url.info).then(res => {
-              this.user = res.data
-              sessionStorage.setItem("user", JSON.stringify(res.data))
-              sessionStorage.setItem("flushPage",0)
+              this.user = res.data;
+              name = res.data.name;
+              sessionStorage.setItem("user", JSON.stringify(res.data));
+              sessionStorage.setItem("flushPage",0);
             })
+            localStorage.setItem('rememberme', this.ruleForm.remumberme);
+            localStorage.setItem('autoenter', this.ruleForm.autoenter);
+            if (this.ruleForm.remumberme==true||this.ruleForm.autoenter==true) {
+              localStorage.setItem("user", JSON.stringify({
+                username: this.ruleForm.username,
+                password: this.ruleForm.password,
+                name: name,
+              }));
+            }
+            this.$message.success("鐧诲綍鎴愬姛")
+            this.btnload = false
             this.$router.push({ path: this.redirect || '/' })
-            this.loading = false
-          }).catch(() => {
-            this.loading = false
+          }).catch((error) => {
+            this.$message.error(error.message)
+            this.btnload = false
           })
         } else {
-          console.log('鐧诲綍澶辫触!')
-          return false
+          this.btnload = false
+          this.$message.error('璐﹀彿鎴栧瘑鐮佹湭杈撳叆锛�')
+          return false;
         }
       })
-    }
+    },
   }
 }
 </script>
-
-<style lang="scss">
-/* 淇input 鑳屾櫙涓嶅崗璋� 鍜屽厜鏍囧彉鑹� */
-/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
-
-$bg: #283443;
-$light_gray: #fff;
-$cursor: #fff;
-
-@supports (-webkit-mask: none) and (not (cater-color: $cursor)) {
-  .login-container .el-input input {
-    color: $cursor;
-  }
-}
-
-/* reset element-ui css */
-.login-container {
-  .el-input {
-    display: inline-block;
-    height: 47px;
-    width: 85%;
-
-    input {
-      background: transparent;
-      border: 0px;
-      -webkit-appearance: none;
-      border-radius: 0px;
-      padding: 12px 5px 12px 15px;
-      color: $light_gray;
-      height: 47px;
-      caret-color: $cursor;
-
-      &:-webkit-autofill {
-        box-shadow: 0 0 0px 1000px $bg inset !important;
-        -webkit-text-fill-color: $cursor !important;
-      }
-    }
-  }
-
-  .el-form-item {
-    border: 1px solid rgba(255, 255, 255, 0.1);
-    background: rgba(0, 0, 0, 0.1);
-    border-radius: 5px;
-    color: #454545;
-  }
-}
-</style>
-
-<style lang="scss" scoped>
-$bg: #2d3a4b;
-$dark_gray: #889aa4;
-$light_gray: #eee;
-
-.login-container {
-  min-height: 100%;
-  width: 100%;
-  background: url('../../assets/404_images/backgroud.png') no-repeat;
-  background-size: 100vw 100vh;
-  overflow: hidden;
-
-  .login-form {
-    position: relative;
-    width: 520px;
-    max-width: 100%;
-    padding: 0 35px;
-    margin: 0 auto;
-    overflow: hidden;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-
-  }
-
-  .tips {
-    font-size: 14px;
-    color: #fff;
-    margin-bottom: 10px;
-
-    span {
-      &:first-of-type {
-        margin-right: 16px;
-      }
-    }
-  }
-
-  .svg-container {
-    padding: 6px 5px 6px 15px;
-    color: $dark_gray;
-    vertical-align: middle;
-    width: 30px;
-    display: inline-block;
-  }
-
-  .title-container {
-    position: relative;
-
-    .title {
-      font-size: 26px;
-      color: $light_gray;
-      margin: 0px auto 40px auto;
-      text-align: center;
-      font-weight: bold;
-    }
-  }
-
-  .show-pwd {
-    position: absolute;
-    right: 10px;
-    top: 7px;
-    font-size: 16px;
-    color: $dark_gray;
-    cursor: pointer;
-    user-select: none;
-  }
-}
-</style>

--
Gitblit v1.9.3