Преглед на файлове

修改登录界面;更换logo

lichunyang преди 1 месец
родител
ревизия
4c31925e94

BIN
src/assets/img/PROTTO.png


BIN
src/assets/img/login-bg.png


BIN
src/assets/img/login-bg1.png


BIN
src/assets/img/login-logo.png


BIN
src/assets/img/login-logo1.png


+ 3 - 3
src/components/layout/header.vue

@@ -7,15 +7,15 @@
                     fit="contain"
                 ></el-image>
             </div>
-            <h3 class="ve_logo_title">
+            <!-- <h3 class="ve_logo_title">
                 {{ $t("index.subtitle") }}
-            </h3>
+            </h3> -->
         </div>
 
 </template>
 <script setup>
 import { ref, onMounted, reactive, } from "vue";
-import logo from "@/assets/img/eslogo.png";
+import logo from "@/assets/img/login-logo.png";
 import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
 
 </script>

+ 123 - 145
src/views/login/index.vue

@@ -2,32 +2,33 @@
   <div class="login-container">
     <!-- 背景图 -->
     <div class="background-left">
-      <img class="background-image" :src="loginbg" alt="背景图">
+      <img class="background-image" :src="loginbg" alt="背景图" />
     </div>
-    
+
     <!-- 登录框 -->
     <div class="login-form-container">
-      <div class="login-box">
-        <el-card class="login-card" shadow="never">
-          <template #header>
-            <div class="login-header">
-              <img :src="loginLogo" alt="logo" class="login-logo"/>
-              <h2>{{ $t('login.subtitle') }}</h2>
-            </div>
-          </template>
-
-          <el-form
-            :model="loginForm"
-            :rules="loginRules"
-            ref="loginFormRef"
-            @keyup.enter="handleLogin"
-            hide-required-asterisk
-            label-position="left"
-          >
-            <el-form-item prop="username" 
-            :label="`${$t('login.username')}:`" 
-            style="margin-bottom: 20px;" 
-            label-width="100px">
+      <el-form
+        :model="loginForm"
+        :rules="loginRules"
+        ref="loginFormRef"
+        @keyup.enter="handleLogin"
+        hide-required-asterisk
+        label-position="left"
+        size="large"
+      >
+        <el-row style="margin-top: 200px; margin-left: 60px">
+          <el-col :span="24" style="padding-right: 10px; padding-left: 20px; margin-bottom: 20px">
+            <el-form-item>
+              <img :src="protto" alt="logo" class="login-logo" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="20" style="padding-right: 10px; margin-bottom: 5px">
+            <el-form-item
+              prop="username"
+              :label="`${$t('login.username')}:`"
+              style="margin-bottom: 20px"
+              label-width="80px"
+            >
               <el-input
                 v-model="loginForm.username"
                 :placeholder="$t('login.inputusername')"
@@ -35,11 +36,14 @@
                 clearable
               />
             </el-form-item>
-
-            <el-form-item prop="password" 
-            :label="`${$t('login.password')}:`" 
-            style="margin-bottom: 20px;" 
-            label-width="100px">
+          </el-col>
+          <el-col :span="20" style="padding-right: 10px; margin-bottom: 5px">
+            <el-form-item
+              prop="password"
+              :label="`${$t('login.password')}:`"
+              style="margin-bottom: 20px"
+              label-width="80px"
+            >
               <el-input
                 v-model="loginForm.password"
                 :placeholder="$t('login.inputpassword')"
@@ -48,54 +52,69 @@
                 clearable
               />
             </el-form-item>
-          
-            <el-form-item prop="remember" style="margin-bottom: 20px;">
-              <div style="width: 100%; display: flex; justify-content: space-between;">
-                <el-checkbox v-model="loginForm.remember" class="remember-me">{{ $t('login.rememberMe') }}</el-checkbox>
-                <el-link type="info" class="forgot-password">{{ $t('login.forgotPassword') }}</el-link>
-              </div>
+          </el-col>
+          <el-col
+            :span="20"
+            style="
+              padding-right: 10px;
+              padding-left: 10px;
+              margin-top: -20px;
+              margin-bottom: -20px;
+            "
+          >
+            <el-form-item>
+              <el-row justify="space-between" style="width: 100%">
+                <el-col :span="6">
+                  <el-checkbox v-model="loginForm.remember" class="remember-me"
+                    >{{ $t("login.rememberMe") }}
+                  </el-checkbox>
+                </el-col>
+                <el-col :offset="14" :span="4">
+                  <el-link type="info" class="forgot-password">{{
+                    $t("login.forgotPassword")
+                  }}</el-link>
+                </el-col>
+              </el-row>
             </el-form-item>
-
+          </el-col>
+          <el-col :span="20" style="padding-right: 10px; padding-left: 10px">
             <el-form-item>
               <el-button
                 type="primary"
                 class="login-btn"
                 :loading="loading"
                 @click="handleLogin"
-                
               >
-                {{ $t('login.loginButton') }}
+                {{ $t("login.loginButton") }}
               </el-button>
             </el-form-item>
-          </el-form>
-        
-          <!-- <div class="login-footer">
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <!-- <div class="login-footer">
             <div class="register-prompt">没有账号?点击</div>
             <el-link type="primary" @click="goToRegister">注册</el-link>
           </div> -->
-        </el-card>
-      </div>
-      
     </div>
   </div>
 </template>
 
 <script setup>
-import { ElMessage } from 'element-plus'
+import { ElMessage } from "element-plus"
 import router from "@/router"
-import { request,enPassword } from "@/utils/request"
-import secureStorage from '@/utils/secureStorage'
+import { request, enPassword } from "@/utils/request"
+import secureStorage from "@/utils/secureStorage"
 
-import { getToken, setToken, setUserId} from "@/utils/token"
-import { useUserStore } from '@/store/user'
+import { getToken, setToken, setUserId } from "@/utils/token"
+import { useUserStore } from "@/store/user"
 
-import loginbg from '@/assets/img/login-bg.png'
-import loginLogo from '@/assets/img/login-logo.png'
-import { useI18n } from 'vue-i18n'
+import loginbg from "@/assets/img/login-bg.png"
+import protto from "@/assets/img/PROTTO.png"
+import { useI18n } from "vue-i18n"
 
 const { t, locale } = useI18n()
 
-
 // 表单引用
 const loginFormRef = ref(null)
 
@@ -104,9 +123,9 @@ const userStore = useUserStore()
 
 // 登录表单数据
 const loginForm = reactive({
-  username: secureStorage.get('savedUsername') || '',
-  password: secureStorage.get('savedPassword') || '',
-  remember: secureStorage.get('rememberPassword') === 'true'
+  username: secureStorage.get("savedUsername") || "",
+  password: secureStorage.get("savedPassword") || "",
+  remember: secureStorage.get("rememberPassword") === "true"
 })
 
 // 加载状态
@@ -115,69 +134,67 @@ const loading = ref(false)
 // 表单验证规则
 const loginRules = reactive({
   username: [
-    { min: 3, max: 18, message: t('login.usernameLength'), trigger: 'blur' }
+    { min: 3, max: 18, message: t("login.usernameLength"), trigger: "blur" }
   ],
   password: [
-    { min: 6, max: 18, message: t('login.passwordLength'), trigger: 'blur' }
+    { min: 6, max: 18, message: t("login.passwordLength"), trigger: "blur" }
   ]
 })
 
-
 // 登录方法
 const handleLogin = () => {
-  loginFormRef.value.validate(valid => {
+  loginFormRef.value.validate((valid) => {
     if (!valid) return
     // 检查是否有输入用户名和密码
     if (!loginForm.username || !loginForm.password) {
-      ElMessage.error(t('login.checknamepwd'));
-      return;
+      ElMessage.error(t("login.checknamepwd"))
+      return
     }
     if (loginForm.remember) {
-        secureStorage.set('savedUsername', loginForm.username)
-        secureStorage.set('savedPassword', loginForm.password)
-        secureStorage.set('rememberPassword', 'true')
-      } else {
-        secureStorage.remove('savedUsername')
-        secureStorage.remove('savedPassword')
-        secureStorage.remove('rememberPassword')
-      }
+      secureStorage.set("savedUsername", loginForm.username)
+      secureStorage.set("savedPassword", loginForm.password)
+      secureStorage.set("rememberPassword", "true")
+    } else {
+      secureStorage.remove("savedUsername")
+      secureStorage.remove("savedPassword")
+      secureStorage.remove("rememberPassword")
+    }
     loading.value = true
-    
+
     const params = {
       transCode: "A00002",
       loginName: loginForm.username,
       password: enPassword(loginForm.password),
-      type: "",
+      type: ""
     }
     // console.log(params)
     request(params)
-    .then((res) => {
-      setToken(res.clientToken)
-      setUserId(res.userId)
-
-      userStore.setToken(res.clientToken)
-      // 存储用户信息到pinia
-      userStore.setUserInfo({
-        userId: res.userId,
-        userName: res.userName,
-        nickName: res.nickName,
-        userType: res.userType,
-        regTime: res.regTime,
-        email: res.email || '',
-        mobileNo: res.mobileNo,
+      .then((res) => {
+        setToken(res.clientToken)
+        setUserId(res.userId)
+
+        userStore.setToken(res.clientToken)
+        // 存储用户信息到pinia
+        userStore.setUserInfo({
+          userId: res.userId,
+          userName: res.userName,
+          nickName: res.nickName,
+          userType: res.userType,
+          regTime: res.regTime,
+          email: res.email || "",
+          mobileNo: res.mobileNo
+        })
+
+        router.push({ path: "/" })
+      })
+      .catch((err) => {
+        // console.error('错误信息:',err);
+        ElMessage.error(t("login.loginError"))
+        loading.value = false
+      })
+      .finally(() => {
+        loading.value = false
       })
-
-      router.push({ path: "/" })
-    })
-    .catch((err) => {
-      // console.error('错误信息:',err);
-      ElMessage.error(t('login.loginError'));
-      loading.value = false;
-    })
-    .finally(() => {
-      loading.value = false
-    });
-    
   })
 }
 
@@ -210,7 +227,7 @@ const goToRegister = () => {
 }
 
 .background-left {
-  width: 60%;
+  width: 50%;
   height: 100%;
 }
 
@@ -229,45 +246,6 @@ const goToRegister = () => {
   align-items: center;
 }
 
-.login-card {
-  border: none !important;
-  width: 80%;
-  background-color: transparent;
-  :deep(.el-card__header) {
-    border-bottom: none;
-    padding-bottom: 0;
-  }
-}
-
-.login-card {
-  // 设置label文字大小
-  :deep(.el-form-item__label) {
-    font-size: 14px;
-    font-weight: 400;
-    line-height: 39px; /* 保持垂直居中 */
-    color: #333333; /* 可选:设置label颜色 */
-    text-align: left;
-  }
-  
-  // 设置输入框文字大小
-  :deep(.el-input__inner) {
-    font-size: 14px;
-    height: 39px; /* 可选:调整输入框高度 */
-    line-height: 39px; /* 保持垂直居中 */
-  }
-
-  :deep(.el-input__wrapper) {
-    background-color: transparent;
-    border: 1px solid #B3B3B3;
-    height: 39px;
-  }
-  
-  // 设置placeholder文字大小
-  :deep(.el-input__inner::placeholder) {
-    font-size: 14px;
-  }
-}
-
 .login-header {
   text-align: start;
   // width: 75%;
@@ -277,7 +255,7 @@ const goToRegister = () => {
     margin: 0;
     font-size: 17px;
     font-weight: 400;
-    color: #1A1A1A;
+    color: #1a1a1a;
     margin: 10px 0;
     font-style: normal;
     text-transform: none;
@@ -286,17 +264,17 @@ const goToRegister = () => {
 }
 
 .login-logo {
-  width: 110px;
-  // margin-bottom: 18px;
-  transform: translateX(-20px); /* 向左移动10px */
+  width: 250px;
+  height: 41px; 
+  transform: translateX(-20px);
 }
 
-.forgot-password{
-  color: #12739E;
+.forgot-password {
+  color: #12739e;
 }
 
 .remember-me {
-  color: #4D4D4D;
+  color: #4d4d4d;
 }
 
 .login-btn {
@@ -304,7 +282,7 @@ const goToRegister = () => {
   height: 42px;
   margin-top: 10px;
   font-size: 16px;
-  background-color: #12739E;
+  background-color: #12739e;
 }
 
 .login-footer {