From a32100e31b93bc378b11ab93617a9c40b081ad70 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期三, 15 四月 2026 16:44:03 +0800
Subject: [PATCH] 移除核验部分+登录注册接口对接
---
src/views/login/index.vue | 140 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 121 insertions(+), 19 deletions(-)
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index aad58df..120f1d5 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -32,11 +32,17 @@
</template>
</el-input>
</el-form-item>
- <el-form-item prop="agreement" style="height: 30px;">
+ <!-- <el-form-item prop="agreement" style="height: 30px;">
<el-checkbox v-model="form.agreement" label="鍚屾剰xxx鏈嶅姟鍗忚" size="large" />
- </el-form-item>
+ </el-form-item> -->
- <el-button class="mt-1" @click="submitLogin()" type="primary" size="large" style="width: 100%;">
+ <el-button
+ class="mt-3"
+ @click="submitLogin()"
+ :loading="loginLoading"
+ type="primary" size="large"
+ style="width: 100%;"
+ >
<el-text class="text-lg text-white">鐧诲綍</el-text>
</el-button>
</el-form>
@@ -55,8 +61,18 @@
<el-radio :value="0">濂�</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item prop="idCard">
- <el-input v-model="form.idCard" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" />
+ <el-form-item prop="idCardType">
+ <el-select v-model="form.idCardType" placeholder="璇佷欢绫诲瀷">
+ <el-option
+ v-for="item in idCardTypeItems"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item prop="idCard" :rules="[$rules.required('璇疯緭鍏ヨ瘉浠跺彿鐮�'), form.idCardType == 1 ? $rules.idCard('璇疯緭鍏ユ纭殑韬唤璇佸彿'): '' ]">
+ <el-input v-model="form.idCard" placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�" />
</el-form-item>
<el-form-item prop="mobile">
<el-input v-model="form.mobile" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
@@ -79,11 +95,17 @@
</template>
</el-input>
</el-form-item>
- <el-form-item prop="agreement" style="height: 30px;">
+ <!-- <el-form-item prop="agreement" style="height: 30px;">
<el-checkbox v-model="form.agreement" label="鍚屾剰xxx鏈嶅姟鍗忚" size="large" />
- </el-form-item>
+ </el-form-item> -->
- <el-button class="mt-1" @click="submitRegister()" type="primary" size="large" style="width: 100%;">
+ <el-button
+ class="mt-5"
+ :loading="registerLoading"
+ @click="submitRegister()"
+ type="primary" size="large"
+ style="width: 100%;"
+ >
<el-text class="text-lg text-white">娉ㄥ唽</el-text>
</el-button>
</el-form>
@@ -91,7 +113,7 @@
<el-row class="mt-7" justify="center">
<el-button v-if="loginType!='register'" text type="primary" @click="changeLoginType('register')">娉ㄥ唽璐﹀彿</el-button>
<el-divider v-if="loginType!='register'" direction="vertical" class="m-0 mt-1 mx-4" style="height: 24px !important" />
- <el-button v-if="loginType!='qrCode'" text type="primary" @click="changeLoginType('qrCode')">浜岀淮鐮佺櫥褰�</el-button>
+ <el-button v-if="loginType!='qrCode'" text type="primary" @click="changeLoginType('qrCode')">寰俊鎵爜鐧诲綍</el-button>
<el-divider v-if="loginType=='register'" direction="vertical" class="m-0 mt-1 mx-4" style="height: 24px !important" />
<el-button v-if="loginType!='mobile'" text type="primary" @click="changeLoginType('mobile')">鎵嬫満鍙风櫥褰�</el-button>
</el-row>
@@ -101,12 +123,16 @@
<script>
import { useLoginStore } from '@/stores/login.js'
+import { useSessionStore } from '@/stores/session.js'
import { storeToRefs } from 'pinia';
+import idCardTypeItems from '@/assets/json/idCardTypeItems.json'
+import { tokenUtils } from '@/utils/axios.js';
export default {
components: {},
setup() {
const { loginDialogVisible } = storeToRefs(useLoginStore())
- return { loginDialogVisible }
+ const { setUserInfo } = useSessionStore()
+ return { loginDialogVisible, setUserInfo }
},
data() {
return {
@@ -114,14 +140,15 @@
form: {
name: '',
sex: 1,
+ idCardType: 1,
idCard: '',
- mobile: '13537719675',
+ mobile: '',
code: '',
agreement: false
},
+ idCardTypeItems: idCardTypeItems,
rules: {
name: [ this.$rules.required('璇疯緭鍏ュ鍚�') ],
- idCard: [ this.$rules.required('璇疯緭鍏ヨ韩浠借瘉鍙�') ],
mobile: [ this.$rules.required('璇疯緭鍏ユ墜鏈哄彿'), this.$rules.phone() ],
code: [ this.$rules.required('璇峰~鍐欓獙璇佺爜'), this.$rules.code() ],
agreement: [ this.$rules.checkbox('璇烽槄璇诲苟鍕鹃�夊悓鎰忓崗璁�') ]
@@ -129,13 +156,15 @@
countdown: 180,
countdownInterval: null,
sendCodeLoading: false,
+ loginLoading: false,
+ registerLoading: false
}
},
computed: {
title() {
let obj = {
register: '娉� 鍐�',
- mobile: '鎵� 鏈� 鍙风櫥 褰�',
+ mobile: '鎵� 鏈� 鍙� 鐧� 褰�',
qrCode: '寰� 淇� 鎵� 鐮� 鐧� 褰�'
}
return obj[this.loginType]
@@ -148,15 +177,45 @@
this.clearCountdownInterval()
},
watch: {
-
+ loginDialogVisible: function(val) {
+ if (!val) {
+ this.clearCountdownInterval()
+ }
+ }
},
methods: {
async sendCode() {
try {
- await this.$refs.accountForm.validateField('mobile')
- this.startCountdownInterval()
- this.$message.success('宸插彂閫侀獙璇佺爜锛岃娉ㄦ剰鏌ユ敹')
+ let ref = null
+ let scene = 0
+ if (this.loginType == 'mobile') {
+ ref = this.$refs.accountForm
+ scene = 33
+ } else if (this.loginType == 'register') {
+ ref = this.$refs.registerForm
+ scene = 32
+ }
+ const validate = await ref.validateField('mobile')
+ if (validate) {
+ const data = {
+ captchaVerification: '',
+ mobile: this.form.mobile,
+ scene: scene,
+ }
+ this.sendCodeLoading = true
+ this.$axios.post('/system/auth/send-sms-code', data).then(res => {
+ if (res.data.code == 0) {
+ this.startCountdownInterval()
+ this.$message.success('宸插彂閫侀獙璇佺爜锛岃娉ㄦ剰鏌ユ敹')
+ } else {
+ this.$message.error(res.data.msg || '鑾峰彇楠岃瘉鐮佸け璐�')
+ }
+ }).finally(() => {
+ this.sendCodeLoading = false
+ })
+ }
} catch (error) {
+ console.log(error)
this.$message.error('璇疯緭鍏ユ墜鏈哄彿鐮�')
}
},
@@ -179,15 +238,58 @@
async submitLogin() {
try {
await this.$refs.accountForm.validate()
+ this.loginLoading = true
+ const data = {
+ mobile: this.form.mobile,
+ code: this.form.code
+ }
+ this.$axios.post('/system/kw/examinee/login', data).then(res => {
+ if (res.data.code == 0) {
+ const resData = res.data.data || {}
+ tokenUtils.setTokens(resData.accessToken, resData.refreshToken)
+ this.getUserInfo()
+ this.$message.success('鐧诲綍鎴愬姛')
+ this.loginDialogVisible = false
+ } else {
+ this.$message.error(res.data.msg)
+ }
+ }).finally(() => {
+ this.loginLoading = false
+ })
} catch (error) {
console.log()
}
},
+ getUserInfo() {
+ this.$axios.get('/system/kw/examinee/profile').then(res => {
+ if (res.data.code == 0) {
+ const resData = res.data.data || {}
+ this.setUserInfo(resData)
+ } else {
+ this.$message.error(res.data.msg)
+ }
+ })
+ },
async submitRegister() {
try {
- await this.$refs.registerForm.validate()
+ const validate = await this.$refs.registerForm.validate()
+ if (validate) {
+ const data = { ...this.form }
+ this.$axios.post('/system/kw/examinee/register', data).then(res => {
+ if (res.data.code == 0) {
+ const resData = res.data.data || {}
+ tokenUtils.setTokens(resData.accessToken, resData.refreshToken)
+ this.getUserInfo()
+ this.$message.success('娉ㄥ唽鎴愬姛')
+ this.loginDialogVisible = false
+ } else {
+ this.$message.error(res.data.msg)
+ }
+ })
+ }
} catch (error) {
- console.log()
+ console.log(error)
+ this.$message.error('璇锋鏌ュ繀濉瓧娈�')
}
},
changeLoginType(type) {
--
Gitblit v1.8.0