From 10a26b9b670efef0a2adba675c794c539846aa3c Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期五, 06 九月 2024 10:18:10 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override
---
north-glass-erp/northglass-erp/src/views/LoginView.vue | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 231 insertions(+), 0 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/views/LoginView.vue b/north-glass-erp/northglass-erp/src/views/LoginView.vue
new file mode 100644
index 0000000..f79117f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -0,0 +1,231 @@
+<script lang="ts" setup>
+import {onMounted, onUnmounted, reactive, ref} from "vue"
+import {useRouter,useRoute } from 'vue-router'
+import type {FormInstance, FormRules} from 'element-plus'
+import { ElMessage } from "element-plus";
+import { Lock,Avatar } from '@element-plus/icons-vue'
+import request from '@/utils/request'
+import userInfo from '@/stores/userInfo'
+import { sendSock, createWebSocket, closeSock,global_callback1 } from "@/utils/webSocket"
+import userOrderInfo from '@/stores/sd/order/orderInfo'
+import { useI18n } from 'vue-i18n'
+import i18n from "@/lang/index"
+//璇█鑾峰彇
+const { t } = useI18n()
+let language = ref(localStorage.getItem('lang') || 'zh')
+const store=userInfo()
+let ruleFormRef = ref<FormInstance>()
+const router = useRouter()
+const route = useRoute()
+const orderInfo = userOrderInfo()
+
+
+const userForm = reactive({
+ userId: '',
+ pass: ''
+})
+
+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(t('login.userErr')))
+ } else {
+ callback()
+ }
+}
+
+const validatePass = (rule: any, value: any, callback: any) => {
+ if (value === '') {
+ callback(new Error( t('login.pwErr') ))
+ } else {
+ callback()
+ }
+}
+
+const rules = reactive<FormRules<typeof userForm>>({
+ userId: [{ validator: validateUser, trigger: 'blur' }],
+ pass: [{ validator: validatePass, trigger: 'blur' }]
+})
+
+//鐧婚檰鏂规硶
+const submitForm = (formEl: FormInstance | undefined) => {
+ if (!formEl) return
+ formEl.validate((valid) => {
+ if (valid) {
+ loginLoadings.value=true
+ userForm.pass = btoa(userForm.pass)
+ request.post('/userInfo/login',
+ userForm).then((res) => {
+ if(res['code']==200 && res['data']){
+ store.$patch({user:res.data})
+ orderInfo.clearSelectDate()
+ router.push('/main')
+ ElMessage.success(t('login.loginSuccessful'))
+ } else {
+ ElMessage.error(t('login.loginErr'))
+ loginLoadings.value=false
+ return false
+ }
+ }).catch(error => {
+ ElMessage.error(t('login.connectErr'))
+ loginLoadings.value=false
+ return false
+ }).then(() => {
+ userForm.pass = atob(userForm.pass)
+ })
+ }
+ })
+}
+
+function register() {
+
+ router.push({
+ path:'/register',
+ })
+}
+
+let loginLoadings= ref(false)
+let registerLoadings= ref(false)
+
+const keyDown = (e) => {
+ // 鍥炶溅鍒欐墽琛岀櫥褰曟柟娉� enter閿殑ASCII鏄�13
+ if (e.keyCode == 13 ) {
+ submitForm(ruleFormRef.value)
+ }
+}
+onMounted(()=>{
+ window.addEventListener('keydown', keyDown)
+})
+onUnmounted(() => {
+ window.removeEventListener('keydown', keyDown)
+})
+const changeLanguage = () =>{
+ localStorage.setItem('lang',language.value)
+ location.reload()
+}
+</script>
+
+<template>
+ <div class="mainDiv" >
+ <div id="main-login">
+ <div id="img-div">
+ <img id="img-pic" src="@/assets/img.png" alt="">
+ </div>
+ <div id="div-login">
+ <el-select
+ @change="changeLanguage"
+ v-model="language"
+ placeholder=" "
+ style="float: right;width: 6rem">
+ <el-option value="zh" label="涓枃" />
+ <el-option value="en" label="English" />
+ <el-option value="ru" label="袪褍褋褋泻懈泄 褟蟹褘泻" />
+ </el-select>
+ <h2>{{$t('login.SysName')}}</h2>
+ <el-form
+ @submit.native.prevent
+ ref="ruleFormRef"
+ :model="userForm"
+ status-icon
+ :rules="rules"
+ >
+ <el-form-item :label="$t('login.user')+':'" prop="userId">
+ <el-input
+ v-model="userForm.userId"
+ type="text"
+ autocomplete="off"
+ :prefix-icon="Avatar"
+ :placeholder="$t('login.userErr')"
+ />
+ </el-form-item>
+ <el-form-item :label="$t('login.password')+':'" prop="pass">
+ <el-input
+ v-model="userForm.pass"
+ type="password"
+ autocomplete="off"
+ :prefix-icon="Lock"
+ :placeholder="$t('login.pwErr')"
+ />
+ </el-form-item>
+ <el-form-item id="submitForm">
+ <el-button
+ :loading="registerLoadings"
+ type="primary"
+ @click="register"
+ >{{$t('login.register')}}
+ </el-button>
+ <el-button
+ :loading="loginLoadings"
+ type="primary"
+ native-type="submit"
+ @click="submitForm(ruleFormRef)"
+ @keyup.enter.native="keyDown(e)"
+ >{{$t('login.login')}}
+ </el-button>
+
+ </el-form-item>
+ </el-form>
+ </div>
+ </div>
+
+ </div>
+</template>
+
+<style scoped>
+.mainDiv{
+ //background-color: #1890FF;
+ overflow: hidden;
+ min-width: 718px;
+}
+#main-login{
+ margin: 150px auto 0 auto;
+ height: 60vh;
+ width: 70vw;
+
+ //background-color: #f2f2f2;
+}
+#img-div{
+ width: 55%;
+ height: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ float: left;
+}
+#img-pic{
+ max-height: 90%;
+ max-width: 100%;
+}
+#div-login{
+ margin-top: 5%;
+ background-color: #fff;
+ float: right;
+ width: 40%;
+ height: 80%;
+ border-radius: 12px;
+ min-width: 318px;
+ box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19);
+}
+h2{
+ color: #1890FF;
+ width: 100%;
+ text-align: center;
+ margin-top: 20%;
+}
+.el-form{
+ width: 50%;
+ margin: 5% auto auto;
+}
+#submitForm {
+ display: flex;
+ justify-content: space-evenly;
+ margin-top: 2rem;
+}
+:deep(.el-form-item__content){
+ flex: unset
+
+}
+</style>
\ No newline at end of file
--
Gitblit v1.8.0