From 2602bdd82484dabf3db312add0930a93b00e6969 Mon Sep 17 00:00:00 2001
From: ZKBH <1113799@qq.com>
Date: 星期一, 28 七月 2025 11:43:01 +0800
Subject: [PATCH] 台账样式

---
 src/views/user/Login.vue |  299 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 216 insertions(+), 83 deletions(-)

diff --git a/src/views/user/Login.vue b/src/views/user/Login.vue
index 4caaae3..e7d4f86 100644
--- a/src/views/user/Login.vue
+++ b/src/views/user/Login.vue
@@ -1,86 +1,140 @@
 <template>
-  <div class="main">
-    <a-form-model class="user-layout-login" @keyup.enter.native="handleSubmit">
-      <a-tabs :activeKey="customActiveKey" :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }"  @change="handleTabClick">
-        <a-tab-pane key="tab1" tab="璐﹀彿瀵嗙爜鐧诲綍">
-          <login-account ref="alogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-account>
-        </a-tab-pane>
+  <div class="main" style="width: 100%;height: 100%;display: flex;padding: 50px;">
 
-        <!--<a-tab-pane key="tab2" tab="鎵嬫満鍙风櫥褰�">-->
+    <div style="flex: 1.2;display: flex;align-items: center;justify-content: center;position: relative">
+      <div class="top">
+        <div class="header">
+          <a href="/">
+            <img src="~@/assets/lxzn.png" class="logo" alt="logo">
+            <span class="title">MDC鏅烘収杞﹂棿</span>
+          </a>
+        </div>
+      </div>
+      <img src="@/assets/login.jpeg" width="65%" height="44%">
+    </div>
+
+    <div style="flex: 1;padding: 30px 50px;">
+      <a-form-model
+        class="user-layout-login"
+        @keyup.enter.native="handleSubmit"
+      >
+        <a-tabs
+          :activeKey="customActiveKey"
+          :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }"
+          @change="handleTabClick"
+        >
+          <a-tab-pane
+            key="tab1"
+            tab="璐﹀彿瀵嗙爜鐧诲綍"
+          >
+            <login-account
+              ref="alogin"
+              @validateFail="validateFail"
+              @success="requestSuccess"
+              @fail="requestFailed"
+            ></login-account>
+          </a-tab-pane>
+
+          <!--<a-tab-pane key="tab2" tab="鎵嬫満鍙风櫥褰�">-->
           <!--<login-phone ref="plogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-phone>-->
-        <!--</a-tab-pane>-->
-      </a-tabs>
+          <!--</a-tab-pane>-->
+        </a-tabs>
 
-      <a-form-model-item>
-        <!--<a-checkbox @change="handleRememberMeChange" default-checked>鑷姩鐧诲綍</a-checkbox>-->
-        <!--<router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">-->
+        <a-form-model-item>
+          <!--<a-checkbox @change="handleRememberMeChange" default-checked>鑷姩鐧诲綍</a-checkbox>-->
+          <!--<router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">-->
           <!--蹇樿瀵嗙爜-->
-        <!--</router-link>-->
-        <!--<router-link :to="{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >-->
+          <!--</router-link>-->
+          <!--<router-link :to="{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >-->
           <!--娉ㄥ唽璐︽埛-->
-        <!--</router-link>-->
-      </a-form-model-item>
+          <!--</router-link>-->
+        </a-form-model-item>
 
-      <a-form-item style="margin-top:24px">
-        <a-button size="large"  type="primary"  htmlType="submit"  class="login-button"  :loading="loginBtn"  @click.stop.prevent="handleSubmit" :disabled="loginBtn">纭畾
-        </a-button>
-      </a-form-item>
+        <a-form-item style="margin-top:24px">
+          <a-button
+            size="large"
+            type="primary"
+            htmlType="submit"
+            class="login-button"
+            :loading="loginBtn"
+            @click.stop.prevent="handleSubmit"
+            :disabled="loginBtn"
+          >纭畾
+          </a-button>
+        </a-form-item>
 
-    </a-form-model>
+        <a-form-model-item style="color: red;font-size: 0.8vw">
+          瀵嗙骇锛氬唴閮�&nbsp;&nbsp;&nbsp;&nbsp;璀﹀憡锛氭湰绯荤粺绂佹瀛樺偍銆佸鐞嗐�佷紶杈撴秹瀵嗕俊鎭�
+        </a-form-model-item>
+
+      </a-form-model>
+    </div>
 
     <!--<two-step-captcha v-if="requiredTwoStepCaptcha" :visible="stepCaptchaVisible" @success="stepCaptchaSuccess" @cancel="stepCaptchaCancel"></two-step-captcha>-->
-    <login-select-tenant ref="loginSelect" @success="loginSelectOk"></login-select-tenant>
+    <login-select-tenant
+      ref="loginSelect"
+      @success="loginSelectOk"
+    ></login-select-tenant>
     <!--<third-login ref="thirdLogin"></third-login>-->
+    <user-password ref="userPassword"/>
   </div>
 </template>
 
 <script>
-import Vue from 'vue'
-import { ACCESS_TOKEN, ENCRYPTED_STRING } from '@/store/mutation-types'
-// import ThirdLogin from './third/ThirdLogin'
-import LoginSelectTenant from './LoginSelectTenant'
-import TwoStepCaptcha from '@/components/tools/TwoStepCaptcha'
-import { getEncryptedString } from '@/utils/encryption/aesEncrypt'
-import { timeFix } from '@/utils/util'
+  import Vue from 'vue'
+  import { ACCESS_TOKEN, ENCRYPTED_STRING } from '@/store/mutation-types'
+  // import ThirdLogin from './third/ThirdLogin'
+  import LoginSelectTenant from './LoginSelectTenant'
+  import TwoStepCaptcha from '@/components/tools/TwoStepCaptcha'
+  import { getEncryptedString } from '@/utils/encryption/aesEncrypt'
+  import { timeFix } from '@/utils/util'
 
-import LoginAccount from './LoginAccount'
-import LoginPhone from './LoginPhone'
+  import LoginAccount from './LoginAccount'
+  import LoginPhone from './LoginPhone'
+  import store from '@/store'
+  import { getAction } from '../../api/manage'
+  import UserPassword from '../../components/tools/UserPassword'
 
-export default {
+  export default {
     components: {
+      UserPassword,
       LoginSelectTenant,
       TwoStepCaptcha,
       // ThirdLogin,
       LoginAccount,
-      LoginPhone
+      LoginPhone,
+      store
     },
-    data () {
+    data() {
       return {
         customActiveKey: 'tab1',
         rememberMe: true,
         loginBtn: false,
         requiredTwoStepCaptcha: false,
         stepCaptchaVisible: false,
-        encryptedString:{
-          key:"",
-          iv:"",
+        encryptedString: {
+          key: '',
+          iv: ''
         },
+        url: {
+          getPrimaryInfo: '/sys/sysAnnouncementSend/getPrimaryInfo'
+        }
       }
     },
     created() {
       Vue.ls.remove(ACCESS_TOKEN)
-      this.getRouterData();
+      this.getRouterData()
       this.rememberMe = true
     },
-    methods:{
-      handleTabClick(key){
+    methods: {
+      handleTabClick(key) {
         this.customActiveKey = key
       },
-      handleRememberMeChange(e){
+      handleRememberMeChange(e) {
         this.rememberMe = e.target.checked
       },
       /**璺宠浆鍒扮櫥褰曢〉闈㈢殑鍙傛暟-璐﹀彿鑾峰彇*/
-      getRouterData(){
+      getRouterData() {
         this.$nextTick(() => {
           let temp = this.$route.params.username || this.$route.query.username || ''
           if (temp) {
@@ -90,8 +144,8 @@
       },
 
       //鐧诲綍
-      handleSubmit () {
-        this.loginBtn = true;
+      handleSubmit() {
+        this.loginBtn = true
         if (this.customActiveKey === 'tab1') {
           // 浣跨敤璐︽埛瀵嗙爜鐧诲綍
           this.$refs.alogin.handleLogin(this.rememberMe)
@@ -101,66 +155,97 @@
         }
       },
       // 鏍¢獙澶辫触
-      validateFail(){
-        this.loginBtn = false;
+      validateFail() {
+        this.loginBtn = false
       },
       // 鐧诲綍鍚庡彴鎴愬姛
-      requestSuccess(loginResult){
-        this.$router.push({ path: "/dashboard/analysis" }).catch(()=>{
+      requestSuccess(loginResult) {
+        // this.$router.push({ path: "/isps/userAnnouncement" }).catch(() => {
+        //   console.log('鐧诲綍璺宠浆棣栭〉鍑洪敊,杩欎釜閿欒浠庡摢閲屾潵鐨�')
+        // })
+        this.$router.push({ path: '/dashboard/analysis' }).catch(() => {
           console.log('鐧诲綍璺宠浆棣栭〉鍑洪敊,杩欎釜閿欒浠庡摢閲屾潵鐨�')
         })
         this.$notification.success({
           message: '娆㈣繋',
-          description: `${timeFix()}锛屾杩庡洖鏉,
-        });
+          description: `${timeFix()}锛屾杩庡洖鏉
+        })
+        var userId = store.getters.userInfo.id
+        let that = this
+        getAction(this.url.getPrimaryInfo, { userId: userId }).then(res => {
+          if (res.success) {
+            for (var i = 0; i < res.result.length; i++) {
+              that.$notification.success({
+                message: '鏈�鏂版湭璇绘秷鎭��' + res.result[i].msgCategory + '銆�',
+                description: res.result[i].msgContent,
+                duration: 60,
+                icon: <a-icon type = 'exclamation-circle'style = 'color:red' / >,
+            })
+
+            }
+          }
+        })
         // this.$refs.loginSelect.show(loginResult)
       },
       //鐧诲綍鍚庡彴澶辫触
-      requestFailed (err) {
-        let description = ((err.response || {}).data || {}).message || err.message || "璇锋眰鍑虹幇閿欒锛岃绋嶅悗鍐嶈瘯"
-        this.$notification[ 'error' ]({
-          message: '鐧诲綍澶辫触',
-          description: description,
-          duration: 4,
-        });
-        //璐︽埛瀵嗙爜鐧诲綍閿欒鍚庢洿鏂伴獙璇佺爜
-        if(this.customActiveKey === 'tab1' && description.indexOf('瀵嗙爜閿欒')>0){
-          this.$refs.alogin.handleChangeCheckCode()
+      requestFailed(err, username) {
+        let description = ((err.response || {}).data || {}).message || err.message || '璇锋眰鍑虹幇閿欒锛岃绋嶅悗鍐嶈瘯'
+        if (err.code !== 5001 && err.code !== 5002) {
+          this.$notification['error']({
+            message: '鐧诲綍澶辫触',
+            description: description,
+            duration: 4
+          })
+        } else {
+          this.$notification['warning']({
+            message: '鎻愮ず',
+            description: description,
+            duration: 1,
+            onClose: () => {
+              console.log('err', err)
+              this.$refs.userPassword.show(username)
+            }
+          })
         }
-        this.loginBtn = false;
+        //璐︽埛瀵嗙爜鐧诲綍閿欒鍚庢洿鏂伴獙璇佺爜
+        // if (this.customActiveKey === 'tab1' && description.indexOf('瀵嗙爜閿欒') > 0) {
+        //   this.$refs.alogin.handleChangeCheckCode()
+        // }
+        this.loginBtn = false
       },
-      loginSelectOk(){
+      loginSelectOk() {
         this.loginSuccess()
       },
       //鐧诲綍鎴愬姛
-      loginSuccess () {
-        this.$router.push({ path: "/dashboard/analysis" }).catch(()=>{
+      loginSuccess() {
+        this.$router.push({ path: '/isps/userAnnouncement' }).catch(() => {
           console.log('鐧诲綍璺宠浆棣栭〉鍑洪敊,杩欎釜閿欒浠庡摢閲屾潵鐨�')
         })
         this.$notification.success({
           message: '娆㈣繋',
-          description: `${timeFix()}锛屾杩庡洖鏉,
-        });
+          description: `${timeFix()}锛屾杩庡洖鏉
+        })
+
       },
 
-      stepCaptchaSuccess () {
+      stepCaptchaSuccess() {
         this.loginSuccess()
       },
-      stepCaptchaCancel () {
+      stepCaptchaCancel() {
         this.Logout().then(() => {
           this.loginBtn = false
           this.stepCaptchaVisible = false
         })
       },
       //鑾峰彇瀵嗙爜鍔犲瘑瑙勫垯
-      getEncrypte(){
-        var encryptedString = Vue.ls.get(ENCRYPTED_STRING);
-        if(encryptedString == null){
+      getEncrypte() {
+        var encryptedString = Vue.ls.get(ENCRYPTED_STRING)
+        if (encryptedString == null) {
           getEncryptedString().then((data) => {
             this.encryptedString = data
-          });
-        }else{
-          this.encryptedString = encryptedString;
+          })
+        } else {
+          this.encryptedString = encryptedString
         }
       }
 
@@ -173,13 +258,13 @@
     label {
       font-size: 14px;
     }
-  .getCaptcha {
+    .getCaptcha {
       display: block;
       width: 100%;
       height: 40px;
     }
 
-  .forge-password {
+    .forge-password {
       font-size: 14px;
     }
 
@@ -190,32 +275,80 @@
       width: 100%;
     }
 
-  .user-login-other {
+    .user-login-other {
       text-align: left;
       margin-top: 24px;
       line-height: 22px;
 
-    .item-icon {
+      .item-icon {
         font-size: 24px;
-        color: rgba(0,0,0,.2);
+        color: rgba(0, 0, 0, 0.2);
         margin-left: 16px;
         vertical-align: middle;
         cursor: pointer;
-        transition: color .3s;
+        transition: color 0.3s;
 
-      &:hover {
+        &:hover {
           color: #1890ff;
         }
       }
 
-    .register {
+      .register {
         float: right;
       }
     }
   }
+
+  /deep/ .ant-tabs-tab-active.ant-tabs-tab {
+    font-size: 25px;
+  }
+
+  .top {
+    text-align: center;
+    position: absolute;
+    top: 10%;
+
+    .header {
+      height: 44px;
+      line-height: 44px;
+
+      .badge {
+        position: absolute;
+        display: inline-block;
+        line-height: 1;
+        vertical-align: middle;
+        margin-left: -12px;
+        margin-top: -10px;
+        opacity: 0.8;
+      }
+
+      .logo {
+        height: 44px;
+        vertical-align: top;
+        margin-right: 10px;
+        border-style: none;
+      }
+
+      .title {
+        font-size: 2vw;
+        color: #000;
+        font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+        font-weight: 600;
+        position: relative;
+        top: 2px;
+      }
+    }
+    .desc {
+      font-size: 14px;
+      color: rgba(0, 0, 0, 0.45);
+      margin-top: 12px;
+      margin-bottom: 40px;
+    }
+  }
+
 </style>
 <style>
-  .valid-error .ant-select-selection__placeholder{
+  .valid-error .ant-select-selection__placeholder {
     color: #f5222d;
   }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3