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, 112 insertions(+), 28 deletions(-)
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index edaec00..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()" :loading="loginLoading" 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>
@@ -103,6 +125,8 @@
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() {
@@ -116,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('璇烽槄璇诲苟鍕鹃�夊悓鎰忓崗璁�') ]
@@ -131,7 +156,8 @@
countdown: 180,
countdownInterval: null,
sendCodeLoading: false,
- loginLoading: false
+ loginLoading: false,
+ registerLoading: false
}
},
computed: {
@@ -151,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('璇疯緭鍏ユ墜鏈哄彿鐮�')
}
},
@@ -183,29 +239,57 @@
try {
await this.$refs.accountForm.validate()
this.loginLoading = true
- setTimeout(() => {
- localStorage.setItem('accessToken', '123456')
- this.getUserInfo()
- this.$message.success('鐧诲綍鎴愬姛')
- this.loginDialogVisible = false
+ 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
-
- }, 1000)
+ })
} catch (error) {
console.log()
}
},
getUserInfo() {
- this.setUserInfo({
- id: '123456',
- username: '榛勫┓濠�',
+ 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