zhengyiming
2025-02-10 0f686ea1fe4700a909a6159efcf1fcb0e1f88a17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<template>
  <LoginPageLayout class="loginByForm-page-wrapper">
    <div class="loginB-form-wrapper">
      <div class="loginB-form-tab">
        <div
          :class="[
            'loginB-form-tab-item',
            { active: tabType === LoginFormTabs.VerificationCodeLogin },
          ]"
          @click="handleTabChange(LoginFormTabs.VerificationCodeLogin)"
        >
          <img :src="IconTabBg1" alt="" class="loginB-form-tab-item-bg1" />
          <div class="loginB-form-tab-item-content">
            <div class="loginB-form-tab-item-text">验证码登录</div>
            <div class="loginB-form-tab-item-line"></div>
          </div>
        </div>
        <div
          :class="['loginB-form-tab-item', { active: tabType === LoginFormTabs.AccountLogin }]"
          @click="handleTabChange(LoginFormTabs.AccountLogin)"
        >
          <img :src="IconTabBg2" alt="" class="loginB-form-tab-item-bg2" />
          <div class="loginB-form-tab-item-content">
            <div class="loginB-form-tab-item-text">账户登录</div>
            <div class="loginB-form-tab-item-line"></div>
          </div>
        </div>
      </div>
      <VerificationCodeLoginForm
        v-show="tabType === LoginFormTabs.VerificationCodeLogin"
        :policyChecked="state.policyChecked"
      />
      <AccountLoginForm
        v-show="tabType === LoginFormTabs.AccountLogin"
        :policyChecked="state.policyChecked"
      />
    </div>
    <Policy
      v-model="state.policyChecked"
      policyBtnText="我已阅读并同意"
      class="loginB-form-policy"
    />
  </LoginPageLayout>
</template>
 
<script setup lang="ts">
import { useUserStore } from '@/stores/modules/user';
import LoginPageLayout from '../components/LoginPageLayout/LoginPageLayout.vue';
import { LoginFormTabs } from '../constants';
import IconTabBg1 from '@/assets/login/icon-tab-bg-1.png';
import IconTabBg2 from '@/assets/login/icon-tab-bg-2.png';
import VerificationCodeLoginForm from './verificationCodeLoginForm.vue';
import AccountLoginForm from './accountLoginForm.vue';
import { Policy } from '@/components';
import Taro from '@tarojs/taro';
 
defineOptions({
  name: 'loginByForm',
});
 
const userStore = useUserStore();
 
const state = reactive({
  policyChecked: false,
});
 
const router = Taro.useRouter();
 
const tabType = ref(Number(router.params?.tab ?? LoginFormTabs.VerificationCodeLogin));
 
function handleTabChange(tab: LoginFormTabs) {
  tabType.value = tab;
}
</script>
 
<style lang="scss">
@import '@/styles/common.scss';
@import '../styles/login.scss';
</style>