From d5d0d1c7a84b996b9bbcebfaf2c2c95f1a5a3678 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期五, 11 十月 2024 08:39:15 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- UI-Project/src/views/LoginView.vue | 238 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 128 insertions(+), 110 deletions(-) diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue index 7ee9b8d..6431f47 100644 --- a/UI-Project/src/views/LoginView.vue +++ b/UI-Project/src/views/LoginView.vue @@ -1,103 +1,114 @@ <script lang="ts" setup> -import {onMounted, onUnmounted, reactive, ref} from "vue" +import {onMounted, onUnmounted, reactive, ref} from 'vue' import {useRoute, useRouter} from 'vue-router' import type {FormInstance, FormRules} from 'element-plus' -import {ElMessage} from "element-plus"; +import {ElMessage} from 'element-plus' import request from '@/utils/request' import userInfo from '@/stores/userInfo' - - -const store=userInfo() -let ruleFormRef = ref<FormInstance>() +import { useI18n } from 'vue-i18n' +const store = userInfo() +let ruleFormRef = ref<FormInstance>() const router = useRouter() const route = useRoute() - +const { t } = useI18n() +let language = ref(localStorage.getItem('lang') || 'zh') +const changeLanguage = () =>{ + localStorage.setItem('lang',language.value) + location.reload() +} const userForm = reactive({ - userId: '', - pass: '' + userName: '', + password: '', }) - -if (typeof(route.query.id) != "undefined"){ + +if (typeof route.query.id != 'undefined') { userForm.userId = <string>route.query.id } - + const validateUser = (rule: any, value: any, callback: any) => { if (value === '') { - callback(new Error('璇疯緭鍏ヤ綘鐨勮处鍙�')) + callback(new Error(t('login.userErr'))) } else { callback() } } - + const validatePass = (rule: any, value: any, callback: any) => { if (value === '') { - callback(new Error('璇疯緭鍏ヤ綘鐨勫瘑鐮�')) + callback(new Error(t('login.pwErr'))) } else { callback() } } - + const rules = reactive<FormRules<typeof userForm>>({ - userId: [{ validator: validateUser, trigger: 'blur' }], - pass: [{ validator: validatePass, trigger: 'blur' }] + userId: [{validator: validateUser, trigger: 'blur'}], + pass: [{validator: validatePass, trigger: 'blur'}], }) - + //鐧婚檰鏂规硶 const submitForm = (formEl: FormInstance | undefined) => { + store.$patch({ + user: null, + }) if (!formEl) return formEl.validate((valid) => { if (valid) { loginLoadings.value = true request - .post('/userinfo/login', userForm) + // .post('/loadGlass/userinfo/login', userForm) + .post('/loadGlass/sys/user/login', userForm) .then((res) => { if (res['code'] == 200) { store.$patch({user: res.data}) - console.log(res.data) - router.push('/main') - ElMessage.success(`鐧诲綍鎴愬姛`) + ElMessage.success(t('login.loginSuccessful')) } else { - ElMessage.error(res['msg']) + // ElMessage.error(res['msg']) + store.$patch({ + user: null, + }) loginLoadings.value = false return false } - }).catch(error => { - ElMessage.error("鏈嶅姟鍣ㄨ繛鎺ュけ璐�") - loginLoadings.value=false - return false - }) + }) + .catch((error) => { + ElMessage.error(t('main.connectErr')) + store.$patch({ + user: null, + }) + loginLoadings.value = false + return false + }) } }) } - + function register() { - router.push({ - path:'/register', + path: '/register', }) } - -let loginLoadings= ref(false) -let registerLoadings= ref(false) - + +let loginLoadings = ref(false) +let registerLoadings = ref(false) + const keyDown = (e) => { // 鍥炶溅鍒欐墽琛岀櫥褰曟柟娉� enter閿殑ASCII鏄�13 if (e.keyCode == 13 || e.keyCode == 100) { submitForm(ruleFormRef.value) } } -onMounted(()=>{ +onMounted(() => { window.addEventListener('keydown', keyDown) }) onUnmounted(() => { window.removeEventListener('keydown', keyDown) }) - </script> - + <template> - <div class="mainDiv" > + <div class="mainDiv"> <div id="main-login"> <!-- <img style="width: 100%; height: 99vh" @@ -107,82 +118,84 @@ <div style="position: absolute; left: 8vw; top: 6vw; "> <img src="../../src/assets/3.png"> </div> - <div style="position: absolute; left: 15vw; top: 22vw; font-size: 55px;color: rgba(29, 33, 41, 1);"> - 鍖楃幓MES绯荤粺 - </div> - </div> - <div id="div-login"> - <el-form - @submit.native.prevent - ref="ruleFormRef" - :model="userForm" - status-icon - :rules="rules" - > - <div id="center"> - <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">璐﹀彿</div> - <el-form-item prop="userId"> - <el-input - style="width: 340px;" - v-model="userForm.userId" - type="text" - autocomplete="off" - :prefix-icon="Avatar" - placeholder="璇疯緭鍏ヨ处鍙�" - /> - </el-form-item> - <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">瀵嗙爜</div> - <el-form-item prop="pass"> - <el-input - style="width: 340px;" - v-model="userForm.pass" - type="password" - autocomplete="off" - :prefix-icon="Lock" - show-password - placeholder="璇疯緭鍏ュ瘑鐮�" - /> - </el-form-item> - <el-form-item id="submitForm"> - <el-button - :loading="loginLoadings" - type="primary" - native-type="submit" - @click="submitForm(ruleFormRef)" - @keyup.enter.native="keyDown(e)" - plain - >鐧诲綍 - </el-button> - <el-button - :loading="registerLoadings" - type="primary" - @click="register" - plain - >娉ㄥ唽 - </el-button> - - </el-form-item> + <div style="position: absolute; left: 15vw; top: 22vw; font-size: 55px;color: rgba(29, 33, 41, 1);"> + {{ $t('northglassMESsystem') }} </div> + </div> + <div id="div-login"> + <!--璇█鍒囨崲鎸夐挳--> + <el-select + @change="changeLanguage" + v-model="language" + placeholder=" " + style="float: right;width: 9rem"> + <el-option value="zh" label="涓枃" /> + <el-option value="en" label="袪褍褋褋泻懈泄 褟蟹褘泻" /> + </el-select> + <el-form @submit.native.prevent + ref="ruleFormRef" + :model="userForm" + status-icon + :rules="rules"> + <div id="center"> + <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">{{ $t('login.user') }}</div> + <el-form-item prop="userId"> + <el-input style="width: 340px;" + v-model="userForm.userName" + type="text" + autocomplete="off" + :prefix-icon="Avatar" + :placeholder="$t('login.userErr')"/> + </el-form-item> + <div style="color: rgba(78, 89, 105, 1);margin-bottom: 10px;">{{ $t('login.password') }}</div> + <el-form-item prop="pass"> + <el-input style="width: 340px;" + v-model="userForm.password" + type="password" + autocomplete="off" + :prefix-icon="Lock" + show-password + :placeholder="$t('login.pwErr')" + /> + </el-form-item> + <el-form-item id="submitForm"> + <el-button :loading="loginLoadings" + type="primary" + native-type="submit" + style="width: 80px;" + @click="submitForm(ruleFormRef)" + @keyup.enter.native="keyDown(e)" + plain>{{ $t('login.login') }} + </el-button> + <!-- <el-button :loading="registerLoadings" + type="primary" + @click="register" + plain>{{ $t('login.register') }} + </el-button> --> + + </el-form-item> + </div> </el-form> </div> </div> - + </div> </template> - + <style scoped> -.mainDiv{ +.mainDiv { overflow: hidden; min-width: 718px; - background-image: url("../../src/assets/background.jpg"); - + background-image: url('../../src/assets/background.jpg'); } -#main-login{ + +#main-login { margin: 150px auto 0 auto; height: 70vh; width: 80vw; } -#img-div{ + +#img-div { width: 55%; height: 100%; display: flex; @@ -190,11 +203,13 @@ align-items: center; float: left; } -#img-pic{ + +#img-pic { max-height: 90%; max-width: 100%; } -#div-login{ + +#div-login { margin-top: 5%; /* margin-top: 20%; */ /* margin-left: 650px; */ @@ -204,22 +219,25 @@ height: 60%; min-width: 318px; border-radius: 4px; - box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19); + box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0), 0 6px 5px 0 rgba(0, 0, 0, 0.19); } -#center{ + +#center { margin-top: -30px; } -.el-form{ + +.el-form { width: 60%; margin: 20% auto auto; } + #submitForm { display: flex; justify-content: space-evenly; margin-top: 2rem; } -:deep(.el-form-item__content){ - flex: unset - + +:deep(.el-form-item__content) { + flex: unset; } </style> \ No newline at end of file -- Gitblit v1.8.0