|
|
@@ -49,11 +49,11 @@
|
|
|
</div>
|
|
|
|
|
|
<!-- 登录按钮 -->
|
|
|
- <div class="login-btn btn" @click="login">登录</div>
|
|
|
+ <div class="login-btn btn" @click="loginBtn">登录</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="bold-text">未注册电子税务局</div>
|
|
|
- <div class="register-btn btn">立即注册</div>
|
|
|
+ <div class="register-btn btn" @click="registerUrl">立即注册</div>
|
|
|
|
|
|
<div class="footer">技术支持:要易云(北京)科技有限公司</div>
|
|
|
</div>
|
|
|
@@ -63,10 +63,21 @@
|
|
|
<script setup lang="ts">
|
|
|
import { ref, reactive, onBeforeMount } from 'vue'
|
|
|
import { useRouter, useRoute } from 'vue-router'
|
|
|
-import { showFailToast, showSuccessToast, showToast } from 'vant'
|
|
|
-import { getPubNameApi, sendEtsSmsApi, loginEtssmsApi } from '@/services/modules/login'
|
|
|
-import type { SendTtsSmsRequest, LoginEtssmsRequest } from '@/services/modules/login/type.d'
|
|
|
+import { showFailToast, showSuccessToast, showToast, showLoadingToast } from 'vant'
|
|
|
+import {
|
|
|
+ getPubNameApi,
|
|
|
+ sendEtsSmsApi,
|
|
|
+ loginEtssmsApi,
|
|
|
+ registerUrlApi,
|
|
|
+} from '@/services/modules/login'
|
|
|
+import type {
|
|
|
+ SendTtsSmsRequest,
|
|
|
+ LoginEtssmsRequest,
|
|
|
+ RegisterUrlRequest,
|
|
|
+} from '@/services/modules/login/type.d'
|
|
|
import { useUserStore } from '@/stores/modules/user'
|
|
|
+import { useDebounceFn } from '@/utils/util'
|
|
|
+import { REGISTER_URL_KEY } from '@/constants/storage'
|
|
|
|
|
|
const userStore = useUserStore()
|
|
|
const router = useRouter()
|
|
|
@@ -101,19 +112,30 @@ const isCounting = ref(false)
|
|
|
const countDown = ref(60)
|
|
|
let timer: number | undefined
|
|
|
|
|
|
+const sending = ref(false)
|
|
|
/* 发送验证码 */
|
|
|
const sendCode = async () => {
|
|
|
+ if (sending.value) return
|
|
|
if (!/^1\d{10}$/.test(formData.mobile)) {
|
|
|
showToast('请输入正确的手机号')
|
|
|
return
|
|
|
}
|
|
|
+ sending.value = true
|
|
|
+ const toast = showLoadingToast({ message: '发送中…', forbidClick: true, duration: 0 })
|
|
|
sendEtsSms.mobile = formData.mobile
|
|
|
- const res = await sendEtsSmsApi(sendEtsSms)
|
|
|
- if (res.code === 0 && res.data) {
|
|
|
- showSuccessToast('发送成功')
|
|
|
- startCountDown()
|
|
|
- } else {
|
|
|
- showFailToast(res.data.msg)
|
|
|
+ try {
|
|
|
+ const res = await sendEtsSmsApi(sendEtsSms)
|
|
|
+ if (res.code === 0 && res.data) {
|
|
|
+ showSuccessToast('发送成功')
|
|
|
+ startCountDown()
|
|
|
+ } else {
|
|
|
+ showFailToast(res.data.msg)
|
|
|
+ }
|
|
|
+ } catch (err: any) {
|
|
|
+ showFailToast(err?.message || '获取验证码失败')
|
|
|
+ } finally {
|
|
|
+ toast.close()
|
|
|
+ sending.value = false
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -131,20 +153,25 @@ const startCountDown = () => {
|
|
|
}
|
|
|
|
|
|
/* 登录逻辑 */
|
|
|
-const login = async () => {
|
|
|
+
|
|
|
+const loginBtn = useDebounceFn(async () => {
|
|
|
if (!formData.mobile) {
|
|
|
- showFailToast('请输入手机号和验证码')
|
|
|
+ showFailToast('请输入手机号')
|
|
|
return
|
|
|
}
|
|
|
if (!formData.code) {
|
|
|
showFailToast('验证码不能为空')
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
if (!agree.value) {
|
|
|
showFailToast('请勾选阅读并同意')
|
|
|
return
|
|
|
}
|
|
|
+ const toast = showLoadingToast({
|
|
|
+ message: '登录中…',
|
|
|
+ forbidClick: true,
|
|
|
+ duration: 0,
|
|
|
+ })
|
|
|
|
|
|
try {
|
|
|
const res: any = await loginEtssmsApi(formData)
|
|
|
@@ -153,15 +180,46 @@ const login = async () => {
|
|
|
router.replace({ path: '/invoice-information' })
|
|
|
}
|
|
|
} catch (err: any) {
|
|
|
- const { code, message } = err
|
|
|
- if (code && message) {
|
|
|
- showFailToast(message)
|
|
|
- }
|
|
|
+ const { code, message } = err || {}
|
|
|
+ console.log('message', message)
|
|
|
+
|
|
|
+ if (code && message)
|
|
|
+ showFailToast({
|
|
|
+ message: message,
|
|
|
+ duration: 1500, // 3.5 秒
|
|
|
+ forbidClick: true, // 可选:禁止点击
|
|
|
+ })
|
|
|
+ } finally {
|
|
|
+ toast.close()
|
|
|
}
|
|
|
-}
|
|
|
+}, 800)
|
|
|
|
|
|
+// 获取注册链接
|
|
|
+const registerUrlParams = ref<RegisterUrlRequest>({
|
|
|
+ areaId: '',
|
|
|
+ returnUrl: 'https://www.baidu.com',
|
|
|
+})
|
|
|
+const registerUrl = useDebounceFn(async () => {
|
|
|
+ if (!formData.mobile) {
|
|
|
+ showFailToast('请输入手机号')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sendEtsSms.mobile = formData.mobile
|
|
|
+ try {
|
|
|
+ const res = await registerUrlApi(registerUrlParams.value, sendEtsSms)
|
|
|
+ if (res.code === 0 && res.data.url) {
|
|
|
+ // 保存一次性链接
|
|
|
+ sessionStorage.setItem(REGISTER_URL_KEY, res.data.url as string)
|
|
|
+ return router.push({ path: 'register' })
|
|
|
+ }
|
|
|
+ showFailToast('获取注册链接失败')
|
|
|
+ } catch (err: any) {
|
|
|
+ showFailToast(err?.message || '获取注册链接失败')
|
|
|
+ }
|
|
|
+}, 800)
|
|
|
// 项目名称
|
|
|
const pubName = ref('')
|
|
|
+
|
|
|
const getPubName = async () => {
|
|
|
try {
|
|
|
const res = await getPubNameApi({
|
|
|
@@ -169,6 +227,7 @@ const getPubName = async () => {
|
|
|
})
|
|
|
if (res.code === 0) {
|
|
|
pubName.value = res.data.projectName
|
|
|
+ registerUrlParams.value.areaId = res.data.cityCode
|
|
|
}
|
|
|
} catch (err) {
|
|
|
console.log('err', err)
|