From cf7e71c6d0fb64eeb6b5deac540da843b4bb465c Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期二, 26 八月 2025 10:41:52 +0800
Subject: [PATCH] 关于我们-理念与品牌文化

---
 src/layout/components/login.vue |  488 ++++++++++++++++++++++--------------------------------
 1 files changed, 199 insertions(+), 289 deletions(-)

diff --git a/src/layout/components/login.vue b/src/layout/components/login.vue
index a0cfba5..ab585b7 100644
--- a/src/layout/components/login.vue
+++ b/src/layout/components/login.vue
@@ -1,222 +1,146 @@
 <template>
-  <el-dialog
-    align-center
-    append-to-body
-    v-model="dialogFormVisible"
-    @close="closeDialog"
-    @open="openDialog"
-    class="fansdialog"
-  >
-    <div style="display: flex; justify-content: space-around">
-      <el-image :src="dialogLeftImg" class="leftImg" />
-
+  <el-dialog append-to-body v-model="dialogFormVisible" @close="closeDialog" @open="openDialog" width="804px"
+    class="fansdialog" style="padding: 0; padding-bottom: 0px">
+    <div class="changeDialog">
+      <div class="leftImg"></div>
       <div class="logIn">
         <div class="signUpTitle" v-if="flag == 'logIn'">
           <ul>
-            <li
-              @click="signUpWay = 'authSignUp'"
-              :style="{
-                color: signUpWay == 'authSignUp' ? '#144941' : '#545C63',
-              }"
-            >
+            <li @click="signUpWay = 'authSignUp'" :style="{
+              color: signUpWay == 'authSignUp' ? '#019E58' : '#545C63',
+            }" style="font-weight: 700">
               鎵嬫満鍙风櫥褰�
             </li>
             <li>|</li>
-            <li
-              @click="wechatLoginOpen"
-              :style="{ color: signUpWay == 'wechat' ? '#144941' : '#545C63' }"
-            >
+            <li @click="wechatLoginOpen" :style="{ color: signUpWay == 'wechat' ? '#019E58' : '#545C63' }"
+              style="font-weight: 700">
               寰俊鐧诲綍
             </li>
           </ul>
         </div>
         <div v-else style="text-align: center; color: #144941">娉ㄥ唽</div>
-        <div
-          class="singUpPhone"
-          v-if="signUpWay === 'phone' || 'authSignUp'"
-          :style="{ height: signUpWay == 'findPassword' ? '450px' : '400px' }"
-        >
-          <el-form
-            :model="passFormData"
-            v-if="signUpWay === 'phone' || 'authSignUp'"
-            ref="passFormRef"
-            @keyup.enter="signInSystem(passFormRef)"
-          >
-            <el-form-item
-              v-if="signUpWay !== 'findPassword'"
-              :rules="[
-                { min: 11, max: 11, message: '璇疯緭鍏�11浣嶇數璇濆彿鐮�' },
-                {
-                  validator: (_, value, callback) => {
-                    if (
-                      !/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(
-                        value
-                      )
-                    ) {
-                      callback('璇疯緭鍏�11浣嶇數璇濆彿鐮�');
-                    } else {
-                      callback();
-                    }
-                  },
+        <div class="singUpPhone" v-if="signUpWay === 'phone' || 'authSignUp'"
+          :style="{ height: signUpWay == 'findPassword' ? '450px' : '400px' }">
+          <el-form :model="passFormData" v-if="signUpWay === 'phone' || 'authSignUp'" ref="passFormRef"
+            @keyup.enter="signInSystem(passFormRef)">
+            <el-form-item v-if="signUpWay !== 'findPassword'" :rules="[
+              { min: 11, max: 11, message: '璇疯緭鍏�11浣嶇數璇濆彿鐮�' },
+              {
+                validator: (_, value, callback) => {
+                  if (
+                    !/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(
+                      value,
+                    )
+                  ) {
+                    callback('璇疯緭鍏�11浣嶇數璇濆彿鐮�')
+                  } else {
+                    callback()
+                  }
                 },
-              ]"
-              prop="telNumber"
-            >
-              <el-input
-                v-model="passFormData.telNumber"
-                placeholder="璇疯緭鍏ユ墜鏈哄彿"
-                size="large"
-              >
+              },
+            ]" prop="telNumber">
+              <el-input v-model="passFormData.telNumber" placeholder="璇疯緭鍏ユ墜鏈哄彿" size="large">
                 <template #prepend>
-                  <el-select
-                    v-model="select"
-                    placeholder="Select"
-                    style="width: 110px"
-                    class="selectPhone"
-                  >
+                  <el-select v-model="select" placeholder="Select" style="width: 110px" class="selectPhone">
                     <el-option label="涓浗+86" value="86" />
                   </el-select>
                 </template>
               </el-input>
             </el-form-item>
             <el-form-item>
-              <el-button class="yanzhengBtn" @click="sliderImgDialogVisable = true"
-                >楠岃瘉</el-button
-              >
+              <el-button class="yanzhengBtn" @click="sliderImgDialogVisable = true">楠岃瘉</el-button>
             </el-form-item>
-            <el-form-item
-              v-if="signUpWay === 'authSignUp'"
-              class="codeWay"
-              :rules="[
-                { required: true, message: '璇疯緭鍏ラ獙璇佺爜' },
-                { min: 4, max: 6, message: '璇疯緭鍏ユ湁鏁堥獙璇佺爜' },
-              ]"
-              prop="telCode"
-            >
-              <el-input
-                v-model="passFormData.telCode"
-                placeholder="璇疯緭鍏ラ獙璇佺爜"
-                size="large"
-              />
-              <el-button
-                type="primary"
-                class="codeBtn"
-                :disabled="countDown != 0"
-                @click="getCode(passFormRef)"
-                >{{
-                  countDown == 0 ? "鑾峰彇楠岃瘉鐮�" : "楠岃瘉鐮�(" + countDown + "s)"
-                }}</el-button
-              >
+            <el-form-item v-if="signUpWay === 'authSignUp'" class="codeWay" :rules="[
+              { required: true, message: '璇疯緭鍏ラ獙璇佺爜' },
+              { min: 4, max: 6, message: '璇疯緭鍏ユ湁鏁堥獙璇佺爜' },
+            ]" prop="telCode">
+              <el-input v-model="passFormData.telCode" placeholder="璇疯緭鍏ラ獙璇佺爜" size="large" />
+              <el-button type="primary" class="codeBtn" :disabled="countDown != 0" @click="getCode(passFormRef)">{{
+                countDown == 0 ?
+                  '鑾峰彇楠岃瘉鐮�' : '楠岃瘉鐮�(' + countDown + 's)' }}</el-button>
             </el-form-item>
-            <el-form-item
-              v-if="flag === 'signUp'"
-              :rules="[
-                { required: true, message: '璇疯緭鍏ュ瘑鐮�' },
-                { min: 8, max: 16, message: '瀵嗙爜鍦�8鍒�16浣嶄箣闂�' },
-                {
-                  validator: (rule, value, callback) => {
-                    if (!/\d/.test(value) || /^\d+$/.test(value)) {
-                      callback('瀵嗙爜涓嶈兘涓虹函鏁板瓧鎴栧瓧姣�');
-                    } else {
-                      callback();
-                    }
-                  },
+            <el-form-item v-if="flag === 'signUp'" :rules="[
+              { required: true, message: '璇疯緭鍏ュ瘑鐮�' },
+              { min: 8, max: 16, message: '瀵嗙爜鍦�8鍒�16浣嶄箣闂�' },
+              {
+                validator: (rule, value, callback) => {
+                  if (!/\d/.test(value) || /^\d+$/.test(value)) {
+                    callback('瀵嗙爜涓嶈兘涓虹函鏁板瓧鎴栧瓧姣�')
+                  } else {
+                    callback()
+                  }
                 },
-              ]"
-              prop="password"
-              class="passwordInput"
-            >
-              <el-input
-                type="password"
-                show-password
-                v-model="passFormData.password"
-                placeholder="璇疯緭鍏ュ瘑鐮�"
-                size="large"
-                style="width: 304px"
-              >
+              },
+            ]" prop="password" class="passwordInput">
+              <el-input type="password" show-password v-model="passFormData.password" placeholder="璇疯緭鍏ュ瘑鐮�" size="large"
+                style="width: 304px">
               </el-input>
             </el-form-item>
-            <el-form-item
-              v-if="flag === 'signUp'"
-              :rules="[
-                { required: true, message: '璇疯緭鍏ョ‘璁ゅ瘑鐮�' },
-                { validator: validateLogInPassword },
-              ]"
-              prop="confirmPassword"
-              class="passwordInput"
-            >
-              <el-input
-                type="password"
-                show-password
-                v-model="passFormData.confirmPassword"
-                placeholder="纭瀵嗙爜"
-                size="large"
-                style="width: 304px"
-              />
+            <el-form-item v-if="flag === 'signUp'" :rules="[
+              { required: true, message: '璇疯緭鍏ョ‘璁ゅ瘑鐮�' },
+              { validator: validateLogInPassword },
+            ]" prop="confirmPassword" class="passwordInput">
+              <el-input type="password" show-password v-model="passFormData.confirmPassword" placeholder="纭瀵嗙爜"
+                size="large" style="width: 304px" />
             </el-form-item>
           </el-form>
 
-          <el-button class="loginBtn" @click="loginBtn">鐧诲綍</el-button>
+          <el-button class="loginBtn" @click="loginBtn">鐧诲綍 / 娉ㄥ唽</el-button>
         </div>
       </div>
     </div>
 
-    <el-dialog
-      v-model="sliderImgDialogVisable"
-      align-center
-      destroy-on-close="true"
-      width="420"
-      class="sliderImgDialog"
-    >
+    <el-dialog v-model="sliderImgDialogVisable" align-center destroy-on-close="true" width="420"
+      class="sliderImgDialog">
       <verify :MG="MG" @loginImgVerify="loginImgVerify"></verify>
     </el-dialog>
   </el-dialog>
 </template>
 
 <script setup>
-import { ref, inject, watchEffect, reactive, nextTick } from "vue";
-import dialogLeftImg from "@/assets/images/header/dialogLeftImg.png";
-import verify from "@/components/sliderImg/component/verify.vue";
-import "@/components/sliderImg/sliderImg.js";
-import "@/components/sliderImg/sliderImg.css";
-import { ElMessage } from "element-plus";
-import { useUserStore } from "@/store";
-import { useRouter } from "vue-router";
-const router = useRouter();
+import { ref, inject, watchEffect, reactive, nextTick } from 'vue'
+import dialogLeftImg from '@/assets/images/header/dialogLeftImg.png'
+import verify from '@/components/sliderImg/component/verify.vue'
+import '@/components/sliderImg/sliderImg.js'
+import '@/components/sliderImg/sliderImg.css'
+import { ElMessage } from 'element-plus'
+import { useUserStore } from '@/store'
+import { useRouter } from 'vue-router'
+const router = useRouter()
 
-const userStore = useUserStore();
+const userStore = useUserStore()
 
-const MG = inject("MG");
-const config = inject("config");
-const dialogFormVisible = ref(false);
-const sliderImgDialogVisable = ref(false);
-const flag = ref("logIn"); // 鐧诲綍鎴栨敞鍐�
+const MG = inject('MG')
+const config = inject('config')
+const dialogFormVisible = ref(false)
+const sliderImgDialogVisable = ref(false)
+const flag = ref('logIn') // 鐧诲綍鎴栨敞鍐�
 
-const signUpWay = ref("authSignUp"); // 鐧诲綍鏂瑰紡
-const select = ref("涓浗+86");
-const countDown = ref(0); // 鍊掕鏃舵椂闂�
-let timer = null; // 鍊掕鏃跺疄渚�
-const passFormRef = ref();
+const signUpWay = ref('authSignUp') // 鐧诲綍鏂瑰紡
+const select = ref('涓浗+86')
+const countDown = ref(0) // 鍊掕鏃舵椂闂�
+let timer = null // 鍊掕鏃跺疄渚�
+const passFormRef = ref()
 const passFormData = ref({
-  telNumber: "",
-  password: "",
-  telCode: "",
-  password: "",
-  confirmPassword: "",
-});
+  telNumber: '',
+  password: '',
+  telCode: '',
+  password: '',
+  confirmPassword: '',
+})
 const closeDialog = () => {
-  countDown.value = 0;
-  clearInterval(timer);
+  countDown.value = 0
+  clearInterval(timer)
   if (passFormRef.value) {
-    passFormRef.value.resetFields();
+    passFormRef.value.resetFields()
   }
-  dialogFormVisible.value = false;
-};
+  dialogFormVisible.value = false
+}
 // 寮圭獥鎵撳紑浜嬩欢
-const openDialog = () => {};
+const openDialog = () => { }
 
 const loginImgVerify = (code) => {
-  sliderImgDialogVisable.value = false;
+  sliderImgDialogVisable.value = false
   MG.identity
     .getPhoneCode({
       phoneNumber: passFormData.value.telNumber,
@@ -224,19 +148,14 @@
       appRefCode: config.appRefCode,
     })
     .then((res) => {
-      if (res == "楠岃瘉鐮佸彂閫佹垚鍔�") {
-        getSecond(60);
-        ElMessage.success(res);
+      if (res == '楠岃瘉鐮佸彂閫佹垚鍔�') {
+        getSecond(60)
+        ElMessage.success(res)
       } else {
-        ElMessage.error(res);
+        ElMessage.error(res)
       }
-    });
-};
-
-watchEffect(() => {
-  if (dialogFormVisible.value) {
-  }
-});
+    })
+}
 
 //鐧诲綍
 
@@ -245,39 +164,38 @@
     phoneNumber: passFormData.value.telNumber,
     phoneCaptcha: passFormData.value.telCode,
     appRefCode: config.appRefCode,
-    platform: "string",
-  };
+    platform: 'string',
+  }
   MG.identity.loginByMobilePhone(query).then((res) => {
-    console.log("res", res);
-    userStore.setToken(res.data.accessToken);
+    console.log('res', res)
+    userStore.setToken(res.data.accessToken)
 
-    getUserInfo();
-  });
-};
+    getUserInfo()
+  })
+}
 
 const getUserInfo = () => {
   MG.identity.getCurrentAppUser().then((res) => {
-    console.log("res", res);
+    console.log('res', res)
     if (res) {
-      let userInfo = res.infoList.find((item) => item.type == "userInfo");
-      let userTypeObj = res.infoList.find((item) => item.type == "userType");
+      let userInfo = res.infoList.find((item) => item.type == 'userInfo')
+      let userTypeObj = res.infoList.find((item) => item.type == 'userType')
       const userData = {
-        userName: userInfo && userInfo.data ? JSON.parse(userInfo.data).name : "",
-        school: userInfo && userInfo.data ? JSON.parse(userInfo.data).school : "",
-        city: userInfo && userInfo.data ? JSON.parse(userInfo.data).city : "",
-        cityCode: userInfo && userInfo.data ? JSON.parse(userInfo.data).cityCode : "",
-        address: userInfo && userInfo.data ? JSON.parse(userInfo.data).address : "",
-        userType:
-          userTypeObj && userTypeObj.data ? JSON.parse(userTypeObj.data).userType : "",
-      };
-      localStorage.setItem("xiehe-isUserInfo", userData?.userType == "" ? "-1" : "1");
-      let teacherRole = res.roleLinks.find((item) => item.role.refCode == "teacher");
-      let teacherInfos = res.infoList.find((item) => item.type == "teacherInfo");
-      let wechatInfo = res.infoList.find((item) => item.type == "WeChat");
-      let studentInfo = res.infoList.find((item) => item.type == "Default");
-      let phoneInfo = res.secretList.find((item) => item.type == "MobilePhone");
+        userName: userInfo && userInfo.data ? JSON.parse(userInfo.data).name : '',
+        school: userInfo && userInfo.data ? JSON.parse(userInfo.data).school : '',
+        city: userInfo && userInfo.data ? JSON.parse(userInfo.data).city : '',
+        cityCode: userInfo && userInfo.data ? JSON.parse(userInfo.data).cityCode : '',
+        address: userInfo && userInfo.data ? JSON.parse(userInfo.data).address : '',
+        userType: userTypeObj && userTypeObj.data ? JSON.parse(userTypeObj.data).userType : '',
+      }
+      localStorage.setItem('xiehe-isUserInfo', userData?.userType == '' ? '-1' : '1')
+      let teacherRole = res.roleLinks.find((item) => item.role.refCode == 'teacher')
+      let teacherInfos = res.infoList.find((item) => item.type == 'teacherInfo')
+      let wechatInfo = res.infoList.find((item) => item.type == 'WeChat')
+      let studentInfo = res.infoList.find((item) => item.type == 'Default')
+      let phoneInfo = res.secretList.find((item) => item.type == 'MobilePhone')
       // let nameAndPassword = res.secretList.find((item) => item.type == 'LoginNameAndPassword')
-      let emailInfo = res.secretList.find((item) => item.type == "EMail");
+      let emailInfo = res.secretList.find((item) => item.type == 'EMail')
       if (teacherRole && teacherInfos) {
         userStore.setUserInfo({
           ...userData,
@@ -285,19 +203,19 @@
           phoneNumber: phoneInfo?.credential,
           Email: emailInfo ? emailInfo.credential : JSON.parse(teacherInfos.data).email,
           icon: wechatInfo?.icon,
-          role: "Teacher",
+          role: 'Teacher',
           roleId: teacherRole.role.id,
           userId: res.userId,
-        });
+        })
       } else if (wechatInfo) {
         userStore.setUserInfo({
           ...userData,
           ...wechatInfo,
           phoneNumber: phoneInfo?.credential,
           Email: emailInfo?.credential,
-          role: "Student",
+          role: 'Student',
           userId: res.userId,
-        });
+        })
       } else if (studentInfo) {
         userStore.setUserInfo({
           ...userData,
@@ -305,9 +223,9 @@
           icon: wechatInfo?.icon,
           phoneNumber: phoneInfo?.credential,
           Email: emailInfo?.credential,
-          role: "Student",
+          role: 'Student',
           userId: res.userId,
-        });
+        })
       } else if (phoneInfo) {
         userStore.setUserInfo({
           ...userData,
@@ -315,32 +233,39 @@
           name: phoneInfo?.credential,
           icon: phoneInfo?.icon,
           phoneNumber: phoneInfo?.credential,
-          role: "Student",
+          role: 'Student',
           userId: res.userId,
-        });
+        })
       }
     }
-    router.go(0);
-  });
-};
+    if (localStorage.getItem('loginBack')) {
+      console.log(localStorage.getItem('loginBack'))
+      debugger
+      window.location.href = localStorage.getItem('loginBack')
+      localStorage.removeItem('loginBack')
+    } else {
+      router.go(0)
+    }
+  })
+}
 
 // 鍊掕鏃�
 const getSecond = (time) => {
   if (!timer) {
-    countDown.value = time;
+    countDown.value = time
     timer = setInterval(() => {
-      countDown.value--;
+      countDown.value--
       if (countDown.value == 0) {
-        clearInterval(timer);
-        timer = null;
+        clearInterval(timer)
+        timer = null
       }
-    }, 1000);
+    }, 1000)
   }
-};
+}
 
 // 鐧诲綍鍜岄噸缃瘑鐮佹寜閽寜閽�
 const signInSystem = async (formEl) => {
-  if (!formEl) return;
+  if (!formEl) return
   formEl.validate((valid) => {
     if (valid) {
       // if (signUpWay.value === 'phone') {
@@ -354,27 +279,27 @@
       //   changePassword()
       // }
     }
-  });
-};
+  })
+}
 
 const logIn = () => {
-  dialogFormVisible.value = true;
-  flag.value = "logIn";
-};
+  dialogFormVisible.value = true
+  flag.value = 'logIn'
+}
 
 // 鎵撳紑娉ㄥ唽寮圭獥
 const signUp = () => {
-  dialogFormVisible.value = true;
-  flag.value = "signUp";
-};
+  dialogFormVisible.value = true
+  flag.value = 'signUp'
+}
 const wechatLoginOpen = () => {
-  signUpWay.value = "wechat";
-};
+  signUpWay.value = 'wechat'
+}
 
 defineExpose({
   logIn,
   signUp,
-});
+})
 </script>
 
 <style lang="less" scoped>
@@ -384,45 +309,29 @@
     width: 80%;
     line-height: 24px;
     color: #000;
+
     span {
       display: inline-block;
     }
   }
 }
+
 .fansdialog {
-  width: 806px;
+
+  .changeDialog {
+    display: flex;
+  }
 
   .leftImg {
+    background-image: url('@/assets/images/header/dialogLeftImg.png');
+    background-size: 100% 100%;
+    background-position: center;
+    background-repeat: no-repeat;
     box-sizing: border-box;
-    width: 403px;
+    width: 402px;
+    height: 481px;
   }
 
-  .el-dialog__header {
-    padding: 0;
-  }
-
-  .el-dialog__body {
-    width: 806px;
-    height: 575px;
-    display: flex;
-    padding: 0 !important;
-  }
-
-  .leftImg {
-    .el-image__inner {
-      width: 403px;
-    }
-  }
-
-  .el-dialog__header {
-    padding: 0;
-  }
-
-  .el-dialog__body {
-    width: 806px;
-    display: flex;
-    padding: 0 !important;
-  }
 }
 
 .agreementDialog {
@@ -431,11 +340,6 @@
 
   p span {
     line-height: 24px;
-  }
-
-  .el-dialog__header {
-    font-size: 18px;
-    color: #333;
   }
 
   .el-dialog__body {
@@ -465,6 +369,7 @@
     }
   }
 }
+
 .sliderImgDialog {
   .el-dialog__body {
     min-height: 320px;
@@ -475,34 +380,45 @@
 <style lang="less">
 /** 鐧诲綍娉ㄥ唽寮圭獥 */
 .logIn {
-  width: 403px;
-  height: 100%;
-  padding-top: 48px;
+  width: 402px;
+  height: 481px;
   display: flex;
   flex-direction: column;
-  justify-content: space-around;
+  justify-content: center;
+  padding-top: 30px;
+  box-sizing: border-box;
 
   .signUpTitle {
     width: 100%;
+
     ul {
       display: flex;
       justify-content: center;
       width: 100%;
+
       li {
         height: 20px;
         display: flex;
         align-items: center;
+        font-family: Microsoft YaHei UI, Microsoft YaHei UI;
+        font-weight: bold;
+        font-size: 16px;
+        color: #019E58;
+
         .el-image {
           margin-right: 5px;
           width: 20px;
         }
       }
+
       li:nth-child(2n + 1) {
         cursor: pointer;
         margin: 0 10px;
       }
+
       li:first-child {
         margin-left: 0;
+
         .el-image {
           width: 10px;
         }
@@ -587,12 +503,14 @@
       background-color: #019e58;
       // opacity: 0.55;
     }
+
     .yanzhengBtn {
       width: 100%;
       height: 41px;
       background-color: #019e58;
       color: #fff;
     }
+
     .loginBtn {
       width: 76%;
       height: 41px;
@@ -639,6 +557,7 @@
         margin-left: 10px;
         cursor: pointer;
         position: relative;
+
         span {
           position: absolute;
           top: 35px;
@@ -660,10 +579,12 @@
     line-height: 26px;
   }
 }
+
 .policy {
   cursor: pointer;
   color: #019e58;
 }
+
 /** 娉ㄥ唽琛ㄥ崟 */
 .signUp {
   width: 403px;
@@ -706,6 +627,7 @@
         font-size: 14px;
       }
     }
+
     .agreement {
       height: 40px;
       display: flex;
@@ -753,6 +675,7 @@
         margin-left: 10px;
         cursor: pointer;
         position: relative;
+
         span {
           position: absolute;
           top: 35px;
@@ -783,15 +706,18 @@
     flex-direction: column;
     justify-content: space-between;
     align-items: center;
+
     .el-form-item {
       &:last-child {
         margin-bottom: 0;
       }
+
       .el-button {
         height: 40px;
         margin-left: 10px;
       }
     }
+
     h2 {
       font-size: 20px;
       margin-top: 70px;
@@ -826,20 +752,4 @@
 .selectPhone {
   background: #fff;
 }
-
-// .el-select {
-//   width: 100px;
-//   height: 30px;
-//   color: red;
-//   border: none !important;
-
-//   /deep/ .select-trigger {
-//     height: 100%;
-
-//     .el-input--suffix {
-//       height: 100%;
-//       background-color: #fff;
-//     }
-//   }
-// }
 </style>

--
Gitblit v1.9.1