3 Revīzijas 69180c26f5 ... a533f1e90c

Autors SHA1 Ziņojums Datums
  Luka a533f1e90c Merge branch 'master' of ssh://www.yixzm.cn:22022/Dim5-ideal/bj-maritime-dcds-web 6 dienas atpakaļ
  Luka f4c7807535 es 6 dienas atpakaļ
  Liuzhenyu 78be4d5e21 项目初始化 6 dienas atpakaļ
3 mainītis faili ar 1072 papildinājumiem un 249 dzēšanām
  1. 0 7
      .eslintrc.js
  2. 732 242
      pnpm-lock.yaml
  3. 340 0
      src/views/login.vue

+ 0 - 7
.eslintrc.js

@@ -46,13 +46,6 @@ module.exports = {
         'no-eval': 2,
         semi: 1,
         indent: off,
-        indent: [
-            2,
-            4,
-            {
-                SwitchCase: 1,
-            },
-        ],
         camelcase: 2,
         'vue/no-empty-component-block': 2, // 禁止<template> <script> <style>块为空
         'vue/html-self-closing': 0,

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 732 - 242
pnpm-lock.yaml


+ 340 - 0
src/views/login.vue

@@ -86,8 +86,30 @@ import { ref } from 'vue';
 const userStore = useUserStore();
 const router = useRouter();
 const loginForm = ref<any>({
+<<<<<<< HEAD
+<<<<<<< HEAD
+<<<<<<< HEAD
+	username: 'admin',
+	password: 'admin123',
+	rememberMe: false,
+	code: '',
+	uuid: '',
+	phone: '',
+});
+
+const loginRules = {
+	username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
+	password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
+	code: [{ required: true, trigger: 'change', message: '请输入验证码' }],
+=======
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+    username: 'admin',
+    password: 'admin123',
+=======
     username: '',
     password: '',
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
     rememberMe: false,
     code: '',
     uuid: '',
@@ -98,6 +120,13 @@ const loginRules = {
     username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
     password: [{ required: true, trigger: 'blur', message: '请输入您的密码' }],
     code: [{ required: true, trigger: 'change', message: '请输入验证码' }],
+<<<<<<< HEAD
+<<<<<<< HEAD
+>>>>>>> e94f5f44564039f665611f42b365b51740d0649c
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
 };
 
 const codeUrl = ref('');
@@ -116,6 +145,94 @@ const isFlag = ref(true);
 let countdown = ref(60);
 const isCountingDown = ref(false);
 const countdownText = computed(() => {
+<<<<<<< HEAD
+<<<<<<< HEAD
+<<<<<<< HEAD
+	return isCountingDown.value ? `${countdown.value}s 后重新获取` : '获取验证码';
+});
+const getVerificationCode = async () => {
+	if (!isCountingDown.value) {
+		await getPhoneCode({ uuid: loginForm.value.uuid }).then((res: any) => {
+			console.log(res);
+			if (res.code === 200) {
+				ElMessage.success('验证码发送成功');
+			} else {
+				ElMessage.error('验证码发送失败,请稍后重试');
+			}
+		});
+		isCountingDown.value = true;
+		countdown.value = 60;
+		const intervalId = setInterval(() => {
+			countdown.value--;
+			if (countdown.value <= 0) {
+				isCountingDown.value = false;
+				clearInterval(intervalId);
+			}
+		}, 1000);
+	}
+};
+
+const publicKey =
+	'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
+	'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==';
+const privateKey =
+	'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
+	'7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
+	'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
+	'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
+	'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
+	'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
+	'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
+	'UP8iWi1Qw0Y=';
+// -------------- 获取验证码 倒计时60秒 end ----------------
+// 有下一步的登陆
+const handleNext = () => {
+	loginFirstRef.value?.validate(valid => {
+		if (valid) {
+			loading.value = true;
+			// 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
+			if (loginForm.value.rememberMe) {
+				Cookies.set('username', loginForm.value.username, { expires: 30 });
+				const enPwd = encrypt(loginForm.value.password, publicKey);
+				// const enPwd = loginForm.value.password;
+				if (enPwd) {
+					Cookies.set('password', enPwd, { expires: 30 });
+				}
+				if (loginForm.value.rememberMe) {
+					Cookies.set('rememberMe', String(loginForm.value.rememberMe), { expires: 30 });
+				}
+			} else {
+				// 否则移除
+				Cookies.remove('username');
+				Cookies.remove('password');
+				Cookies.remove('rememberMe');
+			}
+			// 调用action的登录方法
+			userStore
+				.phoneLogin(loginForm.value)
+				.then((res: any) => {
+					console.log(res);
+					// router.push({ path: redirect.value || '/' });
+					isFlag.value = false;
+					loading.value = false;
+					loginForm.value.code = '';
+					loginForm.value.uuid = res.uuid;
+					loginForm.value.phone = res.phone;
+				})
+				.catch(() => {
+					loading.value = false;
+					// 重新获取验证码
+					if (captchaEnabled.value) {
+						getCode();
+					}
+				});
+		}
+	});
+=======
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
     return isCountingDown.value ? `${countdown.value}s 后重新获取` : '获取验证码';
 });
 const getVerificationCode = async () => {
@@ -196,10 +313,39 @@ const handleNext = () => {
                 });
         }
     });
+<<<<<<< HEAD
+<<<<<<< HEAD
+>>>>>>> e94f5f44564039f665611f42b365b51740d0649c
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
 };
 
 // 有下一步的最后一步
 const handleEndLogin = () => {
+<<<<<<< HEAD
+<<<<<<< HEAD
+<<<<<<< HEAD
+	userStore
+		.phoneLogin(loginForm.value)
+		.then((res: any) => {
+			if (res.token) {
+				ElMessage.success('登陆成功');
+				router.push({ path: redirect.value || '/' });
+			} else {
+				ElMessage.error('登陆失败');
+			}
+			loading.value = false;
+		})
+		.catch(() => {
+			loading.value = false;
+		});
+=======
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
     userStore
         .phoneLogin(loginForm.value)
         .then((res: any) => {
@@ -214,10 +360,45 @@ const handleEndLogin = () => {
         .catch(() => {
             loading.value = false;
         });
+<<<<<<< HEAD
+<<<<<<< HEAD
+>>>>>>> e94f5f44564039f665611f42b365b51740d0649c
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
 };
 
 // 无下一步的登陆
 function handleLogin() {
+<<<<<<< HEAD
+<<<<<<< HEAD
+<<<<<<< HEAD
+	loginFirstRef.value?.validate(valid => {
+		if (valid) {
+			loading.value = true;
+			// 调用action的登录方法
+			userStore
+				.login(loginForm.value)
+				.then(() => {
+					router.push({ path: redirect.value || '/' });
+				})
+				.catch(() => {
+					loading.value = false;
+					// 重新获取验证码
+					if (captchaEnabled.value) {
+						getCode();
+					}
+				});
+		}
+	});
+=======
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+    loginFirstRef.value?.validate(valid => {
+        if (valid) {
+            loading.value = true;
+=======
     loginFirstRef.value?.validate(valid => {
         if (valid) {
             loading.value = true;
@@ -237,6 +418,7 @@ function handleLogin() {
                 Cookies.remove('password');
                 Cookies.remove('rememberMe');
             }
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
             // 调用action的登录方法
             userStore
                 .login(loginForm.value)
@@ -252,10 +434,37 @@ function handleLogin() {
                 });
         }
     });
+<<<<<<< HEAD
+<<<<<<< HEAD
+>>>>>>> e94f5f44564039f665611f42b365b51740d0649c
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
 }
 
 // 登陆按钮
 const handleAllLogin = () => {
+<<<<<<< HEAD
+<<<<<<< HEAD
+<<<<<<< HEAD
+	// 本地
+	// if (env === 'development') {
+	//     handleLogin();
+	// } else {
+	//     handleNext();
+	// }
+	// handleNext();
+	if (phoneCaptchaEnabled.value) {
+		handleNext();
+	} else {
+		handleLogin();
+	}
+=======
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
     // 本地
     // if (env === 'development') {
     //     handleLogin();
@@ -268,11 +477,52 @@ const handleAllLogin = () => {
     } else {
         handleLogin();
     }
+<<<<<<< HEAD
+<<<<<<< HEAD
+>>>>>>> e94f5f44564039f665611f42b365b51740d0649c
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
 };
 
 // 是否有手机号
 const phoneCaptchaEnabled = ref(false);
 function getCode() {
+<<<<<<< HEAD
+<<<<<<< HEAD
+<<<<<<< HEAD
+	getCodeImg().then((res: any) => {
+		captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+		phoneCaptchaEnabled.value = res.phoneCaptchaEnabled;
+		if (captchaEnabled.value) {
+			codeUrl.value = 'data:image/gif;base64,' + res.img;
+			loginForm.value.uuid = res.uuid;
+		}
+	});
+}
+
+function getCookie() {
+	const username = Cookies.get('username');
+	const password = Cookies.get('password');
+	const rememberMe = Cookies.get('rememberMe');
+	// let publicKey = '';
+
+	// getPublicKey().then((res: any) => {
+	//     publicKey = res.publicKey;
+	// });
+
+	loginForm.value = {
+		username: username === undefined ? loginForm.value.username : username,
+		password: password === undefined ? loginForm.value.password : decrypt(password, privateKey) || '',
+		// password: password === undefined ? loginForm.value.password : password || '',
+		rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
+	};
+=======
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
     getCodeImg().then((res: any) => {
         captchaEnabled.value = res.captchaEnabled === undefined ? true : res.captchaEnabled;
         phoneCaptchaEnabled.value = res.phoneCaptchaEnabled;
@@ -299,6 +549,13 @@ function getCookie() {
         // password: password === undefined ? loginForm.value.password : password || '',
         rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
     };
+<<<<<<< HEAD
+<<<<<<< HEAD
+>>>>>>> e94f5f44564039f665611f42b365b51740d0649c
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
 }
 
 getCode();
@@ -307,6 +564,82 @@ getCookie();
 
 <style lang="scss" scoped>
 .login {
+<<<<<<< HEAD
+<<<<<<< HEAD
+<<<<<<< HEAD
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	height: 100%;
+	background-image: url('../assets/images/login-background.jpg');
+	background-size: cover;
+}
+
+.title {
+	margin: 0px auto 30px auto;
+	text-align: center;
+	color: #707070;
+}
+
+.login-form {
+	border-radius: 6px;
+	background: #ffffff;
+	width: 400px;
+	padding: 25px 25px 5px 25px;
+
+	.el-input {
+		height: 40px;
+
+		input {
+			height: 40px;
+		}
+	}
+
+	.input-icon {
+		height: 39px;
+		width: 14px;
+		margin-left: 0px;
+	}
+}
+
+.login-tip {
+	font-size: 13px;
+	text-align: center;
+	color: #bfbfbf;
+}
+
+.login-code {
+	width: 33%;
+	height: 40px;
+	float: right;
+
+	img {
+		cursor: pointer;
+		vertical-align: middle;
+	}
+}
+
+.el-login-footer {
+	height: 40px;
+	line-height: 40px;
+	position: fixed;
+	bottom: 0;
+	width: 100%;
+	text-align: center;
+	color: #fff;
+	font-family: Arial;
+	font-size: 12px;
+	letter-spacing: 1px;
+}
+
+.login-code-img {
+	height: 40px;
+	padding-left: 12px;
+=======
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
     display: flex;
     justify-content: center;
     align-items: center;
@@ -375,5 +708,12 @@ getCookie();
 .login-code-img {
     height: 40px;
     padding-left: 12px;
+<<<<<<< HEAD
+<<<<<<< HEAD
+>>>>>>> e94f5f44564039f665611f42b365b51740d0649c
+=======
+>>>>>>> 6c90d73fadd504a5827e77c4e8dc469f3608d6d0
+=======
+>>>>>>> 69180c26f55572578b0158704d707e0a577a6786
 }
 </style>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels