|
@@ -1,79 +1,115 @@
|
|
|
<template>
|
|
|
<view class="ezy-login-page">
|
|
|
- <view class="tel-box">
|
|
|
- <view class="tel-img"></view>
|
|
|
- <!-- 手机号输入框(使用+86前缀,并隐藏真实号码部分数字) -->
|
|
|
- <view class="phone-input-box">
|
|
|
- <text class="phone-prefix">+86</text>
|
|
|
- <input class="phone-input" type="text" v-model="phoneNumber" placeholder="请输入手机号" />
|
|
|
- <view class="close-btn"></view>
|
|
|
- </view>
|
|
|
- <!-- 协议勾选框和按钮 -->
|
|
|
- <view class="agreement-checkbox-box">
|
|
|
- <checkbox class="agreement-checkbox" color="#FFFFFF" :checked="isAgreed" @change="handleAgreementChange">
|
|
|
- 我已阅读并同意
|
|
|
- <text class="agreement-text">《用户协议》</text>
|
|
|
- 和
|
|
|
- <text class="agreement-text">《隐私政策》</text>
|
|
|
- </checkbox>
|
|
|
- </view>
|
|
|
- <view class="yzm-btn-img" @click="handleLogin"></view>
|
|
|
- </view>
|
|
|
- <view class="wx-btn-img"></view>
|
|
|
+ <view class="ezy-login-wrap" >
|
|
|
+ <!-- 手机号 -->
|
|
|
+ <template v-if="data.loginTel">
|
|
|
+ <view class="login-body-box">
|
|
|
+ <view class="login-title-img"></view>
|
|
|
+ <view class="phone-input-box">
|
|
|
+ <view class="phone-prefix">+86</view>
|
|
|
+ <input class="phone-input" type="text" v-model="data.phoneNumber" placeholder="请输入手机号"
|
|
|
+ maxlength="11" :value="data.phoneNumber" @input="clearTelInput" />
|
|
|
+ <view class="close-btn" v-if="data.clearTelIcon" @click="clearTel"></view>
|
|
|
+ </view>
|
|
|
+ <!-- 协议勾选框和按钮 -->
|
|
|
+ <view class="agreement-checkbox-box">
|
|
|
+ <checkbox class="agreement-checkbox" color="#FFFFFF" :checked="isAgreed" @change="handleAgreementChange">
|
|
|
+ 我已阅读并同意<view class="agreement-text">《用户协议》</view>和<view class="agreement-text">《隐私政策》</view>
|
|
|
+ </checkbox>
|
|
|
+ </view>
|
|
|
+ <view class="yzm-btn-disabled" @click="getYzmBtn" :class="data.telStatus"></view>
|
|
|
+ </view>
|
|
|
+ <view class="wx-btn-img"></view>
|
|
|
+ </template>
|
|
|
+ <!-- 验证码 -->
|
|
|
+ <template v-if="!data.loginTel">
|
|
|
+ <view class="login-body-box">
|
|
|
+ <view class="login-title-img"></view>
|
|
|
+ <view class="phone-prefix">验证码已发送至:{{data.phoneNumber}}</view>
|
|
|
+ <view class="phone-input-box">
|
|
|
+ <input class="phone-input" type="text" v-model="data.yzmNumber" placeholder="请输入验证码"
|
|
|
+ maxlength="6" :value="data.yzmNumber" @input="clearYzmInput" />
|
|
|
+ <view class="close-btn" v-if="data.clearYzmIcon" @click="clearYzm"></view>
|
|
|
+ </view>
|
|
|
+ <view class="yzm-btn-disabled" @click="loginBtn" :class="data.yzmStatus"></view>
|
|
|
+ </view>
|
|
|
+ </template>
|
|
|
+ </view>
|
|
|
+
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
import {
|
|
|
- getAppConfig,
|
|
|
- login,
|
|
|
- kaoshiList
|
|
|
- } from '@/api/login.js'
|
|
|
- import JSEncrypt from 'jsencrypt';
|
|
|
- import {
|
|
|
- ref
|
|
|
- } from 'vue';
|
|
|
- let systemName = ref('麦塔考试系统')
|
|
|
- let username = ref('')
|
|
|
- let password = ref('')
|
|
|
- // 密码公钥
|
|
|
- const publicKey ='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1xwHUB9shgHJlVbs3/LK8CbUa0KMrSfw/M2SAdXpy/iYvwyMacigKNkCi+fiLGcnBigzwO9WtiT/oceF431UsJs2MqLS2ZPzaL+BktR9zWWtNAsZpxUfGyI3YT+T7TT94Rs9O80896FHx9MvE1cHR2bvybskgfB2zuzd9c96+yZ9KXebhbIwDZpMW0fwx7vZ+OywTL3/6SSg2pRf+AvHQsBfTPVbMSgIQegAL4WocD2PerpSGlFElnzZT8jKM4TqDVyhfsYT+4/Gi7/RDDCngdtmruCUIoz8OCLfjVrBsvHfuNNBFIwjTbxtWhrRhVii+wz7RfNxT9+pU/3sjIRKtwIDAQAB'
|
|
|
- const encrypt = new JSEncrypt();
|
|
|
- encrypt.setPublicKey(publicKey);
|
|
|
- const changePassword = () => {
|
|
|
-
|
|
|
+ ref,
|
|
|
+ reactive
|
|
|
+ } from "vue"
|
|
|
+
|
|
|
+ const data = reactive({
|
|
|
+ loginTel: true,
|
|
|
+ phoneNumber: null,
|
|
|
+ clearTelIcon: false,
|
|
|
+ telStatus:'',
|
|
|
+ isAgreed: false,
|
|
|
+ yzmNumber: null,
|
|
|
+ clearYzmIcon: false,
|
|
|
+ yzmStatus:'',
|
|
|
+ })
|
|
|
+
|
|
|
+ /********* 手机号部分 *********/
|
|
|
+ const getYzmBtn = () => {
|
|
|
+ console.log('123');
|
|
|
+ data.loginTel =false;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 手机号校验规则
|
|
|
+ const validatePhoneNumber = (value) => {
|
|
|
+ const phoneRegex = /^1[3-9]\d{9}$/;
|
|
|
+ if (phoneRegex.test(value)) {
|
|
|
+ console.log('手机号格式正确');
|
|
|
+ data.telStatus = 'yzm-btn-normal';
|
|
|
+ } else {
|
|
|
+ console.log('手机号格式不正确');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const clearTelInput = (event) => {
|
|
|
+ if (event.detail.value.length > 0) {
|
|
|
+ data.clearTelIcon = true;
|
|
|
+ validatePhoneNumber(event.detail.value);
|
|
|
+ } else {
|
|
|
+ data.clearTelIcon = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const clearTel = () => {
|
|
|
+ data.phoneNumber = '';
|
|
|
+ data.clearTelIcon = false;
|
|
|
}
|
|
|
- const handleLogin = () => {
|
|
|
+
|
|
|
+ /********* 验证码 *********/
|
|
|
+ const loginBtn = () => {
|
|
|
uni.switchTab({
|
|
|
url: '/pages/index/index'
|
|
|
});
|
|
|
- /* console.log('Username:', username.value);
|
|
|
- console.log('Password:', password.value);
|
|
|
- let req = {
|
|
|
- password: 'sslQR4MPhS/du9qQ7/sRc6OFaVIZ0GwHDWmgAhUj08+BBlTzo+kEMgfgi0rrLFx59mrK5ypJc71Ojn3bHciHSlRGcIJex80RHVQyknC1i1HnkQ1T6vgKWBFHISQpd9qEo2fXCEYSRh8Rl3/qfO8XD5NuCrQxqF/REaVUX3fLVB8=',
|
|
|
- //password: encrypt.encrypt(password.value),
|
|
|
- userName: 'root'
|
|
|
- }
|
|
|
- login(req).then(res => {
|
|
|
- let obj = JSON.stringify(res.data)
|
|
|
- console.log(obj)
|
|
|
- uni.setStorage({
|
|
|
- key: 'Mta-Auth',
|
|
|
- data: obj // 假设 this.userInputValue 是用户输入的数据
|
|
|
- });
|
|
|
- uni.switchTab({
|
|
|
- url: '/pages/index/index'
|
|
|
- });
|
|
|
- // setTimeout(() => {
|
|
|
- // let req = {
|
|
|
- // 'page': 1,
|
|
|
- // 'size': 4,
|
|
|
- // 'status': 1,
|
|
|
- // }
|
|
|
- // kaoshiList(req).then(res => {
|
|
|
- // console.log(res)
|
|
|
- // })
|
|
|
- // }, 5000)
|
|
|
+ /* uni.navigateTo({
|
|
|
+ url: `/pages/study/index?gradeId=${options.grade}&termId=${options.term}&text=${text1}${text2}`
|
|
|
}) */
|
|
|
}
|
|
|
+
|
|
|
+ const clearYzmInput = (event) => {
|
|
|
+ if (event.detail.value.length > 0) {
|
|
|
+ data.clearYzmIcon = true;
|
|
|
+ } else {
|
|
|
+ data.clearYzmIcon = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const clearYzm = () => {
|
|
|
+ data.yzmNumber = '';
|
|
|
+ data.clearYzmIcon = false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
</script>
|