|
@@ -2,24 +2,6 @@
|
|
|
<view class="login-page" :isHeaderFixed="true" :isLoginPage="true">
|
|
<view class="login-page" :isHeaderFixed="true" :isLoginPage="true">
|
|
|
<view class="fixed" />
|
|
<view class="fixed" />
|
|
|
<view class="main-content">
|
|
<view class="main-content">
|
|
|
-<!-- <cwg-match-media :min-width="991">-->
|
|
|
|
|
-<!-- <view class="global-header-bar pc-header">-->
|
|
|
|
|
-<!-- <view class="header-inner">-->
|
|
|
|
|
-<!-- <view class="logo-placeholder"></view> <!– 左侧可预留放logo或留空 –>-->
|
|
|
|
|
-<!-- <LoginHeaderGroup text-color="#fff" icon-color="#fff" />-->
|
|
|
|
|
-<!-- </view>-->
|
|
|
|
|
-<!-- </view>-->
|
|
|
|
|
-<!-- </cwg-match-media>-->
|
|
|
|
|
-
|
|
|
|
|
- <!-- 移动端顶部栏:悬浮在上方,深色文字 -->
|
|
|
|
|
-<!-- <cwg-match-media :max-width="991">-->
|
|
|
|
|
-<!-- <view class="mobile-header-bar">-->
|
|
|
|
|
-<!-- <!– <view class="fixed"/>–>-->
|
|
|
|
|
-
|
|
|
|
|
-<!-- <LoginHeaderGroup text-color="#141d22" icon-color="#141d22" />-->
|
|
|
|
|
-<!-- </view>-->
|
|
|
|
|
-<!-- </cwg-match-media>-->
|
|
|
|
|
-
|
|
|
|
|
<uni-row class="demo-uni-row">
|
|
<uni-row class="demo-uni-row">
|
|
|
<cwg-match-media :min-width="991" style="height: 100%;">
|
|
<cwg-match-media :min-width="991" style="height: 100%;">
|
|
|
<uni-col :xs="24" :sm="24" :md="12" :lg="14" :xl="16" style="height: 100%">
|
|
<uni-col :xs="24" :sm="24" :md="12" :lg="14" :xl="16" style="height: 100%">
|
|
@@ -32,7 +14,7 @@
|
|
|
</view>
|
|
</view>
|
|
|
<view class="text-white" v-t="'newLoop.item14'"></view>
|
|
<view class="text-white" v-t="'newLoop.item14'"></view>
|
|
|
</view>
|
|
</view>
|
|
|
- <image src="/static/images/trust-pilot.png" class="img-fluid mt--10" mode="widthFix"></image>
|
|
|
|
|
|
|
+
|
|
|
<view class="left-content">
|
|
<view class="left-content">
|
|
|
<view class="des text-white">
|
|
<view class="des text-white">
|
|
|
<text v-html="t('newSignin.item12')"></text>
|
|
<text v-html="t('newSignin.item12')"></text>
|
|
@@ -44,70 +26,207 @@
|
|
|
<text v-html="t('newSignin.item11')"></text>
|
|
<text v-html="t('newSignin.item11')"></text>
|
|
|
<br />
|
|
<br />
|
|
|
<text v-t="'newSignin.item13'"></text>
|
|
<text v-t="'newSignin.item13'"></text>
|
|
|
- <cwg-link type="pdf" :title="'newSignin.item13_1'"
|
|
|
|
|
- :url="`pdf/Risk-Disclosures-and-Acknowledgements-2020-08.pdf`" target="_blank"
|
|
|
|
|
- v-t="'newSignin.item13_1'" class="doc-link" />
|
|
|
|
|
|
|
+ <!-- <cwg-link type="pdf" :title="'newSignin.item13_1'"-->
|
|
|
|
|
+ <!-- :url="`pdf/Risk-Disclosures-and-Acknowledgements-2020-08.pdf`" target="_blank"-->
|
|
|
|
|
+ <!-- v-t="'newSignin.item13_1'" class="doc-link" />-->
|
|
|
<text v-t="'newSignin.item13_2'"></text>
|
|
<text v-t="'newSignin.item13_2'"></text>
|
|
|
<!-- <view v-t="'newSignin.item13_3'"></view>
|
|
<!-- <view v-t="'newSignin.item13_3'"></view>
|
|
|
<text v-t="'newSignin.item13_4'"></text> -->
|
|
<text v-t="'newSignin.item13_4'"></text> -->
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
+ <image src="/static/images/trust-pilot.png" class="img-fluid mt--10" mode="widthFix"></image>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</uni-col>
|
|
</uni-col>
|
|
|
</cwg-match-media>
|
|
</cwg-match-media>
|
|
|
<uni-col :xs="24" :sm="24" :md="12" :lg="10" :xl="8" class="right-f">
|
|
<uni-col :xs="24" :sm="24" :md="12" :lg="10" :xl="8" class="right-f">
|
|
|
- <view class="account">
|
|
|
|
|
- <cwg-match-media :max-width="991">
|
|
|
|
|
- <view class="company u-flex-y u-flex-y-center">
|
|
|
|
|
- <image src="/static/images/logo-full.svg" class="company-icon" mode="widthFix"></image>
|
|
|
|
|
|
|
+ <cwg-match-media :min-width="991">
|
|
|
|
|
+ <view class="global-header-bar pc-header">
|
|
|
|
|
+ <view class="header-inner">
|
|
|
|
|
+ <view class="logo-placeholder"></view> <!-- 左侧可预留放logo或留空 -->
|
|
|
|
|
+ <LoginHeaderGroup text-color="#141d22" icon-color="#141d22" />
|
|
|
</view>
|
|
</view>
|
|
|
- </cwg-match-media>
|
|
|
|
|
- <view class="title">
|
|
|
|
|
- <view class="tit1">{{ t('newSignin.item1') }}</view>
|
|
|
|
|
- <view class="tit2">{{ t('newSignin.item2') }}</view>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
- <view>
|
|
|
|
|
- <up-form :model="form" ref="uFormRef">
|
|
|
|
|
- <up-form-item label="" prop="loginName">
|
|
|
|
|
- <up-input :customStyle="customStyle" v-model="form.loginName" border="none"
|
|
|
|
|
- :placeholder="t('signin.form.email')">
|
|
|
|
|
- <template #prefix>
|
|
|
|
|
- <cwg-icon name="email-outline" :size="20" color="#000" />
|
|
|
|
|
- </template>
|
|
|
|
|
- </up-input>
|
|
|
|
|
- </up-form-item>
|
|
|
|
|
-
|
|
|
|
|
- <up-form-item label="" prop="password">
|
|
|
|
|
- <up-input :customStyle="customStyle" v-model="form.password" :type="inputType" border="none"
|
|
|
|
|
- :placeholder="t('signin.form.password')">
|
|
|
|
|
- <template #prefix>
|
|
|
|
|
- <cwg-icon name="lock-outline" :size="20" color="#000" />
|
|
|
|
|
- </template>
|
|
|
|
|
- </up-input>
|
|
|
|
|
- </up-form-item>
|
|
|
|
|
- </up-form>
|
|
|
|
|
|
|
+ </cwg-match-media>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 移动端顶部栏:悬浮在上方,深色文字 -->
|
|
|
|
|
+ <cwg-match-media :max-width="991">
|
|
|
|
|
+ <view class="mobile-header-bar">
|
|
|
|
|
+ <!-- <view class="fixed"/>-->
|
|
|
|
|
+
|
|
|
|
|
+ <LoginHeaderGroup text-color="#141d22" icon-color="#141d22" />
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="u-flex u-flex-between u-flex-y-center mb1">
|
|
|
|
|
- <view class="check-box">
|
|
|
|
|
- <up-checkbox-group v-model="remenber" @change="checkboxChange">
|
|
|
|
|
- <up-checkbox size="14" labelSize="14" labelColor="#666666" activeColor="#ea002a"
|
|
|
|
|
- :label="t('newSignin.item5')" name="记住我" class="wcg-checkbox"></up-checkbox>
|
|
|
|
|
- </up-checkbox-group>
|
|
|
|
|
|
|
+ </cwg-match-media>
|
|
|
|
|
+ <view class="account">
|
|
|
|
|
+ <view class="company u-flex-y u-flex-y-center">
|
|
|
|
|
+ <image src="/static/images/logo-full.svg" class="company-icon" mode="widthFix"></image>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="tab-list">
|
|
|
|
|
+ <view
|
|
|
|
|
+ v-for="tab in tabs"
|
|
|
|
|
+ :key="tab.value"
|
|
|
|
|
+ class="tab-item"
|
|
|
|
|
+ :class="{ active: activeTab === tab.value }"
|
|
|
|
|
+ @click="handleClick(tab.value)"
|
|
|
|
|
+ >
|
|
|
|
|
+ <text class="tab-label">{{ tab.text }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
- <navigator url="/pages/login/reset" class="account-tip">
|
|
|
|
|
- <text>{{ t('signin.forget') }}</text>
|
|
|
|
|
- </navigator>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="cwg-button">
|
|
|
|
|
- <u-button type="primary" class="" @click="submit">
|
|
|
|
|
- {{ t('signin.login') }}
|
|
|
|
|
- </u-button>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <view v-show="activeTab == 1">
|
|
|
|
|
+ <view class="title">
|
|
|
|
|
+ <view class="tit1">{{ t('newSignin.item1') }}</view>
|
|
|
|
|
+ <view class="tit2">{{ t('newSignin.item2') }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view>
|
|
|
|
|
+ <uni-forms ref="uFormRef" :model="form" labelWidth="200" label-position="top">
|
|
|
|
|
+ <uni-forms-item :label="t('newSignup.item7')" prop="loginName">
|
|
|
|
|
+ <up-input :customStyle="customStyle" v-model="form.loginName" border="none"
|
|
|
|
|
+ :placeholder="t('signin.form.email')">
|
|
|
|
|
+ </up-input>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+
|
|
|
|
|
+ <uni-forms-item :label="t('signin.form.password')" prop="password">
|
|
|
|
|
+ <up-input :customStyle="customStyle" v-model="form.password" :type="inputType" border="none"
|
|
|
|
|
+ :placeholder="t('signin.form.password')">
|
|
|
|
|
+ </up-input>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-forms>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="u-flex u-flex-between u-flex-y-center mb1">
|
|
|
|
|
+ <view class="check-box">
|
|
|
|
|
+ <up-checkbox-group v-model="remenber" @change="checkboxChange">
|
|
|
|
|
+ <up-checkbox size="14" labelSize="14" labelColor="#666666" activeColor="#ea002a"
|
|
|
|
|
+ :label="t('newSignin.item5')" name="记住我" class="wcg-checkbox"></up-checkbox>
|
|
|
|
|
+ </up-checkbox-group>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <navigator url="/pages/login/reset" class="account-tip">
|
|
|
|
|
+ <text>{{ t('signin.forget') }}</text>
|
|
|
|
|
+ </navigator>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="cwg-button">
|
|
|
|
|
+ <u-button type="primary" class="" @click="submit">
|
|
|
|
|
+ {{ t('signin.login') }}
|
|
|
|
|
+ </u-button>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view @click="activeTab = 2" class="account-tip">
|
|
|
|
|
+ {{ t('signin.words') }}
|
|
|
|
|
+ <text>{{ t('signin.signup') }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-show="activeTab == 2" style="overflow-y: scroll;">
|
|
|
|
|
+ <view class="title">
|
|
|
|
|
+ <view class="tit1">{{ t('newSignup.item1') }}</view>
|
|
|
|
|
+ <view class="tit2">{{ t('newSignup.item2') }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view>
|
|
|
|
|
+ <uni-forms ref="regForm" :modelValue="formData" :rules="rules" validate-trigger="blur" label-position="top"
|
|
|
|
|
+ label-width="120">
|
|
|
|
|
+ <uni-row :gutter="20" class="formContent">
|
|
|
|
|
+ <uni-col :xs="24" :md="12">
|
|
|
|
|
+ <uni-forms-item name="country" :label="t('newSignup.item3')">
|
|
|
|
|
+ <cwg-combox v-model:value="formData.country" :options="countryOptions" filterable>
|
|
|
|
|
+ </cwg-combox>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ <uni-col :xs="24" :md="12">
|
|
|
|
|
+ <uni-forms-item name="phone" :label="t('newSignup.item5')">
|
|
|
|
|
+ <uni-easyinput v-model="formData.phone"></uni-easyinput>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ <uni-col :xs="24" :md="12">
|
|
|
|
|
+ <uni-forms-item name="birthDate" :label="t('newSignup.item18')">
|
|
|
|
|
+ <uni-datetime-picker type="date" v-model="formData.birthDate"
|
|
|
|
|
+ :placeholder="t('newSignup.item19')" @change="checkAge" />
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ <uni-col :xs="24" :md="12">
|
|
|
|
|
+ <uni-forms-item name="email" :label="t('newSignup.item7')">
|
|
|
|
|
+ <uni-easyinput v-model="formData.email" :placeholder="t('newSignup.item8')"
|
|
|
|
|
+ :disabled="!isAgeValid || !formData.birthDate"></uni-easyinput>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ <uni-col :xs="24" :md="24">
|
|
|
|
|
+ <uni-forms-item name="emailCode" :label="t('newSignup.item9')">
|
|
|
|
|
+ <view style="display: flex; gap: 8px;">
|
|
|
|
|
+ <view style="flex: 1;">
|
|
|
|
|
+ <uni-easyinput :disabled="!isAgeValid || !formData.birthDate" v-model="formData.emailCode"
|
|
|
|
|
+ :placeholder="t('newSignup.item10')">
|
|
|
|
|
+ </uni-easyinput>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="btn-code" @click="(!isAgeValid || !formData.birthDate) ? '' : handleGetCode()">
|
|
|
|
|
+ {{ getCodeString }}
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ <uni-col :xs="24" :md="24">
|
|
|
|
|
+ <view class="agreemnet9">*{{ t('signup.agreemnet9') }}</view>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ <uni-col :xs="24" :md="12">
|
|
|
|
|
+ <uni-forms-item name="password" :label="t('newSignup.item12')">
|
|
|
|
|
+ <uni-easyinput v-model.trim="formData.password" :disabled="!isAgeValid || !formData.birthDate"
|
|
|
|
|
+ :placeholder="t('newSignup.item13')" type="password"></uni-easyinput>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ <uni-col :xs="24" :md="24">
|
|
|
|
|
+ <uni-forms-item>
|
|
|
|
|
+ <ul class="pwd">
|
|
|
|
|
+ <li :class="{ fit: rule1 }" v-t="'signup.form.rules.1st'"></li>
|
|
|
|
|
+ <li :class="{ fit: rule2 }" v-t="'signup.form.rules.2nd'"></li>
|
|
|
|
|
+ <li :class="{ fit: rule3 }" v-t="'signup.form.rules.3rd'"></li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ <uni-col :xs="24" :md="12">
|
|
|
|
|
+ <uni-forms-item v-if="!isRouteHasId" name="linkValue" :label="t('newSignup.item14')">
|
|
|
|
|
+ <uni-easyinput v-model.trim="formData.linkValue" :disabled="!isAgeValid || !formData.birthDate"
|
|
|
|
|
+ :placeholder="t('newSignup.item15')" @input="limitAgentIdLength"></uni-easyinput>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-col>
|
|
|
|
|
+ </uni-row>
|
|
|
|
|
+ <uni-forms-item name="agree">
|
|
|
|
|
+ <view class="check-box" @click="toggleAgree">
|
|
|
|
|
+ <up-checkbox-group v-model="agreeGroup" @change="onAgreeChange">
|
|
|
|
|
+ <up-checkbox size="14" labelSize="14" labelColor="#666666" activeColor="#ea002a" name="agree"
|
|
|
|
|
+ class="wcg-checkbox"></up-checkbox>
|
|
|
|
|
+ </up-checkbox-group>
|
|
|
|
|
+ <text class="checkbox-label">{{ t('signup.agree') }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ <uni-forms-item name="isSubscribeEmail">
|
|
|
|
|
+ <view class="check-box" @click="toggleSubscribeEmail">
|
|
|
|
|
+ <up-checkbox-group v-model="subscribeEmailGroup" @change="onSubscribeEmailChange">
|
|
|
|
|
+ <up-checkbox size="14" labelSize="14" labelColor="#666666" activeColor="#ea002a"
|
|
|
|
|
+ name="subscribeEmail" class="wcg-checkbox"></up-checkbox>
|
|
|
|
|
+ </up-checkbox-group>
|
|
|
|
|
+ <text class="checkbox-label">{{ t('signup.agree1') }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </uni-forms-item>
|
|
|
|
|
+ </uni-forms>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view>
|
|
|
|
|
+ <u-button class="regiset-btn" @click="register">
|
|
|
|
|
+ {{ t('signup.button') }}
|
|
|
|
|
+ </u-button>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="login-link">
|
|
|
|
|
+ <text>{{ t('newSignup.item16') }}</text>
|
|
|
|
|
+ <view class="link" @click="activeTab = 1">{{ t('newSignup.item17') }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="des-bottom">
|
|
|
|
|
+ <text v-t="'signup.agreemnet1'"></text>
|
|
|
|
|
+ <cwg-link type="pdf" url='pdf/Client_Agreement.pdf' target="_blank" :title="'signup.agreemnet2'"
|
|
|
|
|
+ class="desc-link" />
|
|
|
|
|
+ <text v-t="'signup.agreemnet3'"></text>
|
|
|
|
|
+ <cwg-link type="pdf" url='pdf/Terms&Conditions.pdf' target="_blank" :title="'signup.agreemnet4'"
|
|
|
|
|
+ class="desc-link" />
|
|
|
|
|
+ <text v-t="'signup.agreemnet5'"></text>
|
|
|
|
|
+ <cwg-link type="pdf" url='pdf/Privacy_Policy.pdf' target="_blank" :title="'signup.agreemnet6'"
|
|
|
|
|
+ class="desc-link" />
|
|
|
|
|
+ <text v-t="'signup.agreemnet7'"></text>
|
|
|
|
|
+ </view>
|
|
|
</view>
|
|
</view>
|
|
|
- <navigator url="/pages/login/regist" class="account-tip">
|
|
|
|
|
- {{ t('signin.words') }}
|
|
|
|
|
- <text>{{ t('signin.signup') }}</text>
|
|
|
|
|
- </navigator>
|
|
|
|
|
<cwg-match-media :min-width="791">
|
|
<cwg-match-media :min-width="791">
|
|
|
|
|
|
|
|
|
|
|
|
@@ -131,609 +250,1136 @@
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
|
<script setup>
|
|
<script setup>
|
|
|
-import { ref, onMounted, computed } from 'vue'
|
|
|
|
|
-import QrCode from '@/components/QrCode.vue'
|
|
|
|
|
-import { post } from '@/utils/request'
|
|
|
|
|
-import { userToken } from '@/composables/config'
|
|
|
|
|
-import { userApi } from '@/api/user'
|
|
|
|
|
-import { ucardApi } from '@/api/ucard'
|
|
|
|
|
-import { customApi } from '@/service/custom'
|
|
|
|
|
-import useGlobalStore from '@/stores/use-global-store'
|
|
|
|
|
-import useUserStore from '@/stores/use-user-store'
|
|
|
|
|
-import useRouter from '@/hooks/useRouter'
|
|
|
|
|
-import { useI18n } from 'vue-i18n'
|
|
|
|
|
-import companyLogo from '@/static/images/logo4.png'
|
|
|
|
|
-import LoginHeaderGroup from './components/LoginHeaderGroup.vue'
|
|
|
|
|
-import LiveChatService from '@/utils/liveChat.js'
|
|
|
|
|
-import { useWindowWidth } from '@/composables/useWindowWidth'
|
|
|
|
|
-const windowWidth = useWindowWidth(300)
|
|
|
|
|
-const isMobile = computed(() => windowWidth.value <= 991)
|
|
|
|
|
-const router = useRouter()
|
|
|
|
|
-const { t } = useI18n()
|
|
|
|
|
-const userStore = useUserStore()
|
|
|
|
|
-const globalStore = useGlobalStore()
|
|
|
|
|
-const modeStore = computed(() => globalStore.mode)
|
|
|
|
|
-// 响应式表单数据
|
|
|
|
|
-const form = ref({
|
|
|
|
|
- loginName: '',
|
|
|
|
|
- password: '',
|
|
|
|
|
-})
|
|
|
|
|
-
|
|
|
|
|
-function submit() {
|
|
|
|
|
- if (!form.value.loginName) {
|
|
|
|
|
- uni.$u.toast(t('signin.form.email'))
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- if (!form.value.password) {
|
|
|
|
|
- uni.$u.toast(t('signin.form.password'))
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- handleLogin()
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-const customStyle = {
|
|
|
|
|
- height: '44px',
|
|
|
|
|
- 'border-radius': '8px',
|
|
|
|
|
- background: '#f7f8fa',
|
|
|
|
|
- padding: '0 20px !important',
|
|
|
|
|
- position: 'relative',
|
|
|
|
|
-}
|
|
|
|
|
-const remenber = ref([])
|
|
|
|
|
-const checkboxChange = (e) => {
|
|
|
|
|
- remenber.value = e
|
|
|
|
|
-}
|
|
|
|
|
-const fetchUserList = (params) => post('/Login/AcctLogin', params)
|
|
|
|
|
-
|
|
|
|
|
-async function handleLogin() {
|
|
|
|
|
- try {
|
|
|
|
|
- const res = await userApi.login({
|
|
|
|
|
- loginName: form.value.loginName,
|
|
|
|
|
- password: form.value.password,
|
|
|
|
|
- })
|
|
|
|
|
- if (res.code === 200) {
|
|
|
|
|
- userToken.value = res.data
|
|
|
|
|
- uni.$u.toast(t('login.msg0_1'))
|
|
|
|
|
- getCustomLoginInfo()
|
|
|
|
|
- // getCardUserInfo();
|
|
|
|
|
- reasonsRefusalList()
|
|
|
|
|
- if (remenber.value.length) {
|
|
|
|
|
- userStore.saveAccountInfo({
|
|
|
|
|
- loginName: form.value.loginName,
|
|
|
|
|
- password: form.value.password,
|
|
|
|
|
- rememberPassword: true,
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ import { ref, watch, onMounted, computed } from 'vue'
|
|
|
|
|
+ import { onLoad } from '@dcloudio/uni-app'
|
|
|
|
|
+ import QrCode from '@/components/QrCode.vue'
|
|
|
|
|
+ import { post } from '@/utils/request'
|
|
|
|
|
+ import { userToken } from '@/composables/config'
|
|
|
|
|
+ import { userApi } from '@/api/user'
|
|
|
|
|
+ import { ucardApi } from '@/api/ucard'
|
|
|
|
|
+ import { customApi } from '@/service/custom'
|
|
|
|
|
+ import { loginApi } from '@/api/login'
|
|
|
|
|
+ import { countryApi } from '@/api/country'
|
|
|
|
|
+ import Config from '@/config/index'
|
|
|
|
|
+ import { showToast } from '@/utils/toast'
|
|
|
|
|
+ import { useEmailCountdown } from '@/hooks/useEmailCountdown'
|
|
|
|
|
+ import useGlobalStore from '@/stores/use-global-store'
|
|
|
|
|
+ import useUserStore from '@/stores/use-user-store'
|
|
|
|
|
+ import useRouter from '@/hooks/useRouter'
|
|
|
|
|
+ import { useI18n } from 'vue-i18n'
|
|
|
|
|
+ import companyLogo from '@/static/images/logo4.png'
|
|
|
|
|
+ import LoginHeaderGroup from './components/LoginHeaderGroup.vue'
|
|
|
|
|
+ import LiveChatService from '@/utils/liveChat.js'
|
|
|
|
|
+ import { useWindowWidth } from '@/composables/useWindowWidth'
|
|
|
|
|
+ import { openLocalPdf } from '@/utils/pdf.js'
|
|
|
|
|
+
|
|
|
|
|
+ const windowWidth = useWindowWidth(300)
|
|
|
|
|
+ const isMobile = computed(() => windowWidth.value <= 991)
|
|
|
|
|
+ const router = useRouter()
|
|
|
|
|
+ const { t } = useI18n()
|
|
|
|
|
+ const { Code } = Config
|
|
|
|
|
+ const userStore = useUserStore()
|
|
|
|
|
+ const globalStore = useGlobalStore()
|
|
|
|
|
+ const modeStore = computed(() => globalStore.mode)
|
|
|
|
|
+ const tabs = computed(() => [
|
|
|
|
|
+ { text:t('signin.tabs1'),value:1, },
|
|
|
|
|
+ { text:t('signin.tabs2'),value:2, },
|
|
|
|
|
+ ])
|
|
|
|
|
+ const activeTab = ref(1)
|
|
|
|
|
+
|
|
|
|
|
+ // ========== 注册表单相关 ==========
|
|
|
|
|
+ const {
|
|
|
|
|
+ time,
|
|
|
|
|
+ text: getCodeString,
|
|
|
|
|
+ canSend,
|
|
|
|
|
+ start,
|
|
|
|
|
+ restore,
|
|
|
|
|
+ } = useEmailCountdown()
|
|
|
|
|
+
|
|
|
|
|
+ const isRouteHasId = ref(false)
|
|
|
|
|
+ const formData = ref({
|
|
|
|
|
+ country: 'CN',
|
|
|
|
|
+ phone: '',
|
|
|
|
|
+ birthDate: '',
|
|
|
|
|
+ email: '',
|
|
|
|
|
+ emailCode: '',
|
|
|
|
|
+ password: '',
|
|
|
|
|
+ linkValue: '',
|
|
|
|
|
+ agree: 0,
|
|
|
|
|
+ isSubscribeEmail: 0,
|
|
|
|
|
+ sourceCode: null,
|
|
|
|
|
+ w: '',
|
|
|
|
|
+ subId: '',
|
|
|
|
|
+ oc: '',
|
|
|
|
|
+ agentId: null,
|
|
|
|
|
+ ibInvalid: null,
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const rules = {
|
|
|
|
|
+ country: { rules: [{ required: true, errorMessage: t('vaildate.country.empty'), trigger: 'blur' }] },
|
|
|
|
|
+ email: {
|
|
|
|
|
+ rules: [
|
|
|
|
|
+ { required: true, errorMessage: t('vaildate.email.empty'), trigger: 'blur' },
|
|
|
|
|
+ { pattern: Config.Pattern.Email, errorMessage: t('vaildate.email.format'), trigger: 'blur' },
|
|
|
|
|
+ ],
|
|
|
|
|
+ },
|
|
|
|
|
+ emailCode: { rules: [{ required: true, errorMessage: t('vaildate.code.empty'), trigger: 'blur' }] },
|
|
|
|
|
+ password: {
|
|
|
|
|
+ rules: [
|
|
|
|
|
+ { required: true, errorMessage: t('vaildate.password.format'), trigger: 'blur' },
|
|
|
|
|
+ { pattern: Config.Pattern.Password, errorMessage: t('vaildate.password.format'), trigger: 'blur' },
|
|
|
|
|
+ ],
|
|
|
|
|
+ },
|
|
|
|
|
+ agree: {
|
|
|
|
|
+ rules: [
|
|
|
|
|
+ {
|
|
|
|
|
+ validateFunction: (rule, value) => {
|
|
|
|
|
+ if (value) return true
|
|
|
|
|
+ return t('vaildate.agree.empty')
|
|
|
|
|
+ },
|
|
|
|
|
+ trigger: 'change',
|
|
|
|
|
+ },
|
|
|
|
|
+ ],
|
|
|
|
|
+ },
|
|
|
|
|
+ phone: {
|
|
|
|
|
+ rules: [
|
|
|
|
|
+ { required: true, errorMessage: t('vaildate.phone.format'), trigger: 'blur' },
|
|
|
|
|
+ { pattern: Config.Pattern.NonNegInt, errorMessage: t('vaildate.phone.format'), trigger: 'blur' },
|
|
|
|
|
+ ],
|
|
|
|
|
+ },
|
|
|
|
|
+ birthDate: { rules: [{ required: true, errorMessage: t('vaildate.birthDate.empty'), trigger: 'change' }] },
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const agreeGroup = ref([])
|
|
|
|
|
+ const subscribeEmailGroup = ref([])
|
|
|
|
|
+ const regForm = ref(null)
|
|
|
|
|
+ const mock_options = ref([])
|
|
|
|
|
+ const countryCode = ref('my')
|
|
|
|
|
+
|
|
|
|
|
+ const countryOptions = computed(() => {
|
|
|
|
|
+ return mock_options.value.map(item => ({
|
|
|
|
|
+ text: item.enName,
|
|
|
|
|
+ value: item.code,
|
|
|
|
|
+ disabled: item.isOpenAccount == 0 || item.isOpenAccount === null ? true : false,
|
|
|
|
|
+ }))
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ watch(() => formData.value.agree, (val) => {
|
|
|
|
|
+ agreeGroup.value = val === 1 ? ['agree'] : []
|
|
|
|
|
+ }, { immediate: true })
|
|
|
|
|
+
|
|
|
|
|
+ watch(() => formData.value.isSubscribeEmail, (val) => {
|
|
|
|
|
+ subscribeEmailGroup.value = val === 1 ? ['subscribeEmail'] : []
|
|
|
|
|
+ }, { immediate: true })
|
|
|
|
|
+
|
|
|
|
|
+ const onAgreeChange = (e) => {
|
|
|
|
|
+ formData.value.agree = e && e.length ? 1 : 0
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const onSubscribeEmailChange = (e) => {
|
|
|
|
|
+ formData.value.isSubscribeEmail = e && e.length ? 1 : 0
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const toggleAgree = () => {
|
|
|
|
|
+ const next = agreeGroup.value.length ? [] : ['agree']
|
|
|
|
|
+ agreeGroup.value = next
|
|
|
|
|
+ onAgreeChange(next)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const toggleSubscribeEmail = () => {
|
|
|
|
|
+ const next = subscribeEmailGroup.value.length ? [] : ['subscribeEmail']
|
|
|
|
|
+ subscribeEmailGroup.value = next
|
|
|
|
|
+ onSubscribeEmailChange(next)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const rule1 = computed(() => {
|
|
|
|
|
+ if (!formData.value.password) return false
|
|
|
|
|
+ return /^.{8,16}$/.test(formData.value.password)
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const rule2 = computed(() => {
|
|
|
|
|
+ return /^(?=.*?[a-z])(?=.*?[A-Z]).*$/.test(formData.value.password)
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const rule3 = computed(() => {
|
|
|
|
|
+ return /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?!.*([~!@&%$^\(\)#_]).*\1.*\1)[A-Za-z0-9~!@&%$^\(\)#_]{8,16}$/.test(
|
|
|
|
|
+ formData.value.password,
|
|
|
|
|
+ )
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const isAgeValid = computed(() => {
|
|
|
|
|
+ if (!formData.value.birthDate) {
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+ const today = new Date()
|
|
|
|
|
+ const birthDate = new Date(formData.value.birthDate)
|
|
|
|
|
+ let age = today.getFullYear() - birthDate.getFullYear()
|
|
|
|
|
+ const monthDiff = today.getMonth() - birthDate.getMonth()
|
|
|
|
|
+ if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {
|
|
|
|
|
+ age--
|
|
|
|
|
+ }
|
|
|
|
|
+ return age >= 18
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const checkAge = () => {
|
|
|
|
|
+ if (formData.value.birthDate && !isAgeValid.value) {
|
|
|
|
|
+ uni.showModal({
|
|
|
|
|
+ title: t('Msg.SystemPrompt'),
|
|
|
|
|
+ content: t('signup.ageRestriction'),
|
|
|
|
|
+ showCancel: false,
|
|
|
|
|
+ confirmText: t('Btn.Confirm'),
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ if (res.confirm) {
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const limitAgentIdLength = (val) => {
|
|
|
|
|
+ if (val == null || val === '') return
|
|
|
|
|
+ const filtered = val.toString().replace(/[^0-9a-zA-Z]/g, '').slice(0, 10)
|
|
|
|
|
+ if (formData.value.linkValue !== filtered) {
|
|
|
|
|
+ formData.value.linkValue = filtered
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ onLoad((options) => {
|
|
|
|
|
+ if (options) {
|
|
|
|
|
+ formData.value.sourceCode = options.ex || null
|
|
|
|
|
+ formData.value.w = options.w || ''
|
|
|
|
|
+ formData.value.subId = options.SUBID || ''
|
|
|
|
|
+ formData.value.oc = options.oc || ''
|
|
|
|
|
+ formData.value.email = options.emailAdvertisement || ''
|
|
|
|
|
+
|
|
|
|
|
+ if (options.id) {
|
|
|
|
|
+ isRouteHasId.value = true
|
|
|
|
|
+ formData.value.agentId = Number(options.id)
|
|
|
|
|
+ formData.value.linkValue = options.commission || ''
|
|
|
|
|
+
|
|
|
|
|
+ switch (options.ibInvalid) {
|
|
|
|
|
+ case 'B0':
|
|
|
|
|
+ formData.value.ibInvalid = 0
|
|
|
|
|
+ break
|
|
|
|
|
+ case 'B1':
|
|
|
|
|
+ formData.value.ibInvalid = 1
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ const ho = ref('')
|
|
|
|
|
+
|
|
|
|
|
+ // 国家列表
|
|
|
|
|
+ async function getCountry() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ let res = await countryApi.Country({})
|
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
|
+ mock_options.value = res.data
|
|
|
} else {
|
|
} else {
|
|
|
- userStore.saveAccountInfo({
|
|
|
|
|
- loginName: '',
|
|
|
|
|
- password: '',
|
|
|
|
|
- rememberPassword: false,
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ showToast(res.msg)
|
|
|
}
|
|
}
|
|
|
- // console.log(1111);
|
|
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error(error)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const getCountryMsg = async () => {
|
|
|
|
|
+ let res = await countryApi.CountryGet({})
|
|
|
|
|
+ if (res.code == Code.StatusOK) {
|
|
|
|
|
+ countryCode.value = res.msg
|
|
|
} else {
|
|
} else {
|
|
|
- uni.showToast({ title: res.msg })
|
|
|
|
|
- // console.log(12112);
|
|
|
|
|
|
|
+ console.log(res)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ async function handleGetCode() {
|
|
|
|
|
+ if (!formData.value.birthDate) {
|
|
|
|
|
+ showToast(t('vaildate.birthDate.empty'))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!isAgeValid.value) {
|
|
|
|
|
+ showToast(t('signup.ageRestriction'))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!formData.value.country) {
|
|
|
|
|
+ showToast(t('vaildate.country.empty'))
|
|
|
|
|
+ return
|
|
|
}
|
|
}
|
|
|
- } catch (error) {
|
|
|
|
|
- // console.log(error)
|
|
|
|
|
- uni.showToast({ title: error.msg, icon: 'none' })
|
|
|
|
|
- // console.log(error, 19089);
|
|
|
|
|
|
|
+ if (!formData.value.email) {
|
|
|
|
|
+ showToast(t('vaildate.email.empty'))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!Config.Pattern.Email.test(formData.value.email)) {
|
|
|
|
|
+ showToast(t('vaildate.email.format'))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!canSend.value) return
|
|
|
|
|
+ await sendEmailCode()
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-async function getCustomLoginInfo() {
|
|
|
|
|
- try {
|
|
|
|
|
- const res = await userApi.getUserInfo()
|
|
|
|
|
- userStore.saveUserInfo(res.data)
|
|
|
|
|
|
|
+ async function sendEmailCode() {
|
|
|
|
|
+ const res = await loginApi.Code({
|
|
|
|
|
+ ...formData.value,
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
|
- switch (modeStore.value) {
|
|
|
|
|
- case 'customer':
|
|
|
|
|
- router.reLaunch('/pages/customer/index')
|
|
|
|
|
- break;
|
|
|
|
|
- case 'ib':
|
|
|
|
|
- router.reLaunch('/pages/ib/index')
|
|
|
|
|
- break;
|
|
|
|
|
- case 'follow':
|
|
|
|
|
- router.reLaunch('/pages/follow/index')
|
|
|
|
|
- break;
|
|
|
|
|
-
|
|
|
|
|
- default:
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ showToast(t('Msg.CodeSuccess'))
|
|
|
|
|
+ start()
|
|
|
|
|
+ return true
|
|
|
} else {
|
|
} else {
|
|
|
- uni.$u.toast(res.msg || t('login.msg0'))
|
|
|
|
|
|
|
+ showToast(t('Msg.CodeFail'))
|
|
|
|
|
+ return false
|
|
|
}
|
|
}
|
|
|
- } catch (error) {
|
|
|
|
|
- // console.log(error, 111);
|
|
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-async function getCardUserInfo() {
|
|
|
|
|
- try {
|
|
|
|
|
- const res = await ucardApi.getSingle()
|
|
|
|
|
- userStore.saveUserInfo(res.data)
|
|
|
|
|
- if (res.code === 200) {
|
|
|
|
|
- if (!res.data || res.data.approveStatus != 2) {
|
|
|
|
|
- router.push('/pages/mine/improve')
|
|
|
|
|
|
|
+ const register = async () => {
|
|
|
|
|
+ if (countryCode.value == 'MY' || countryCode.value == 'ID') {
|
|
|
|
|
+ showToast('Registration not available for this region')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ regForm.value.validate().then(async (res) => {
|
|
|
|
|
+ const chinaCountryCodes = ['CN']
|
|
|
|
|
+ const isChina = chinaCountryCodes.includes(formData.value.country)
|
|
|
|
|
+ const xSystemValue = isChina ? 'B' : 'A'
|
|
|
|
|
+
|
|
|
|
|
+ let resData = await loginApi.Register(
|
|
|
|
|
+ { ...formData.value },
|
|
|
|
|
+ { headers: { 'X-System': xSystemValue } },
|
|
|
|
|
+ )
|
|
|
|
|
+ if (resData.code == 200) {
|
|
|
|
|
+ showToast(t('Msg.registerSuc'))
|
|
|
|
|
+ registLogin()
|
|
|
} else {
|
|
} else {
|
|
|
- router.push('/pages/card/index')
|
|
|
|
|
|
|
+ showToast(resData.msg)
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- uni.$u.toast(res.msg || t('login.msg0'))
|
|
|
|
|
|
|
+
|
|
|
|
|
+ }).catch(err => {
|
|
|
|
|
+ console.log('表单错误信息:', err)
|
|
|
|
|
+ showToast(err.msg)
|
|
|
|
|
+ return false
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const registLogin = async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ let res = await userApi.login({
|
|
|
|
|
+ loginName: formData.value.email,
|
|
|
|
|
+ password: formData.value.password,
|
|
|
|
|
+ })
|
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
|
+ userToken.value = res.data
|
|
|
|
|
+ getRegistLoginInfo()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ showToast(res.msg)
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error(error)
|
|
|
}
|
|
}
|
|
|
- } catch (error) {
|
|
|
|
|
- // console.log(error, 111);
|
|
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-async function reasonsRefusalList() {
|
|
|
|
|
- try {
|
|
|
|
|
- const res = await customApi.reasonsRefusalList()
|
|
|
|
|
- if (res.code === 200) {
|
|
|
|
|
- pickFields(res.data)
|
|
|
|
|
- } else {
|
|
|
|
|
- uni.$u.toast(res.msg || t('login.msg0'))
|
|
|
|
|
|
|
+ const getRegistLoginInfo = async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ let res = await userApi.getUserInfo()
|
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
|
+ userStore.saveUserInfo(res.data)
|
|
|
|
|
+ showToast(t('Msg.LoginSuccess'))
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ uni.reLaunch({
|
|
|
|
|
+ url: '/pages/customer/index',
|
|
|
|
|
+ })
|
|
|
|
|
+ }, 1000)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ showToast(t('Msg.SystemError'))
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error(error)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const openUrl = (url) => {
|
|
|
|
|
+ openLocalPdf(url)
|
|
|
|
|
+ }
|
|
|
|
|
+ // ========== 注册表单相关结束 ==========
|
|
|
|
|
+ // 响应式表单数据
|
|
|
|
|
+ const form = ref({
|
|
|
|
|
+ loginName: '',
|
|
|
|
|
+ password: '',
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ function submit() {
|
|
|
|
|
+ if (!form.value.loginName) {
|
|
|
|
|
+ uni.$u.toast(t('signin.form.email'))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!form.value.password) {
|
|
|
|
|
+ uni.$u.toast(t('signin.form.password'))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ handleLogin()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const customStyle = {
|
|
|
|
|
+ height: '44px',
|
|
|
|
|
+ 'border-radius': '8px',
|
|
|
|
|
+ background: '#f7f8fa',
|
|
|
|
|
+ padding: '0 20px !important',
|
|
|
|
|
+ position: 'relative',
|
|
|
|
|
+ }
|
|
|
|
|
+ const remenber = ref([])
|
|
|
|
|
+ const checkboxChange = (e) => {
|
|
|
|
|
+ remenber.value = e
|
|
|
|
|
+ }
|
|
|
|
|
+ const fetchUserList = (params) => post('/Login/AcctLogin', params)
|
|
|
|
|
+
|
|
|
|
|
+ const handleClick = (value)=>{
|
|
|
|
|
+ activeTab.value = value
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ async function handleLogin() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await userApi.login({
|
|
|
|
|
+ loginName: form.value.loginName,
|
|
|
|
|
+ password: form.value.password,
|
|
|
|
|
+ })
|
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
|
+ userToken.value = res.data
|
|
|
|
|
+ uni.$u.toast(t('login.msg0_1'))
|
|
|
|
|
+ getCustomLoginInfo()
|
|
|
|
|
+ // getCardUserInfo();
|
|
|
|
|
+ reasonsRefusalList()
|
|
|
|
|
+ if (remenber.value.length) {
|
|
|
|
|
+ userStore.saveAccountInfo({
|
|
|
|
|
+ loginName: form.value.loginName,
|
|
|
|
|
+ password: form.value.password,
|
|
|
|
|
+ rememberPassword: true,
|
|
|
|
|
+ })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ userStore.saveAccountInfo({
|
|
|
|
|
+ loginName: '',
|
|
|
|
|
+ password: '',
|
|
|
|
|
+ rememberPassword: false,
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ // console.log(1111);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ uni.showToast({ title: res.msg })
|
|
|
|
|
+ // console.log(12112);
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ // console.log(error)
|
|
|
|
|
+ uni.showToast({ title: error.msg, icon: 'none' })
|
|
|
|
|
+ // console.log(error, 19089);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ async function getCustomLoginInfo() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await userApi.getUserInfo()
|
|
|
|
|
+ userStore.saveUserInfo(res.data)
|
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
|
+ switch (modeStore.value) {
|
|
|
|
|
+ case 'customer':
|
|
|
|
|
+ router.reLaunch('/pages/customer/index')
|
|
|
|
|
+ break
|
|
|
|
|
+ case 'ib':
|
|
|
|
|
+ router.reLaunch('/pages/ib/index')
|
|
|
|
|
+ break
|
|
|
|
|
+ case 'follow':
|
|
|
|
|
+ router.reLaunch('/pages/follow/index')
|
|
|
|
|
+ break
|
|
|
|
|
+
|
|
|
|
|
+ default:
|
|
|
|
|
+ break
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ uni.$u.toast(res.msg || t('login.msg0'))
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ // console.log(error, 111);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ async function getCardUserInfo() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await ucardApi.getSingle()
|
|
|
|
|
+ userStore.saveUserInfo(res.data)
|
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
|
+ if (!res.data || res.data.approveStatus != 2) {
|
|
|
|
|
+ router.push('/pages/mine/improve')
|
|
|
|
|
+ } else {
|
|
|
|
|
+ router.push('/pages/card/index')
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ uni.$u.toast(res.msg || t('login.msg0'))
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ // console.log(error, 111);
|
|
|
}
|
|
}
|
|
|
- } catch (error) {
|
|
|
|
|
- // console.log(error, 111);
|
|
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-function pickFields(source, fields = ['content', 'enContent']) {
|
|
|
|
|
- const result = {}
|
|
|
|
|
|
|
+ async function reasonsRefusalList() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await customApi.reasonsRefusalList()
|
|
|
|
|
+ if (res.code === 200) {
|
|
|
|
|
+ pickFields(res.data)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ uni.$u.toast(res.msg || t('login.msg0'))
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ // console.log(error, 111);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ function pickFields(source, fields = ['content', 'enContent']) {
|
|
|
|
|
+ const result = {}
|
|
|
|
|
+
|
|
|
|
|
+ Object.entries(source).forEach(([key, value]) => {
|
|
|
|
|
+ result[key] = fields.reduce((acc, f) => {
|
|
|
|
|
+ acc[f] = value[f] ?? null
|
|
|
|
|
+ return acc
|
|
|
|
|
+ }, {})
|
|
|
|
|
+ })
|
|
|
|
|
+ userStore.saveReasonsOptions(result)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ onMounted(() => {
|
|
|
|
|
+ const accountInfo = userStore.accountInfo
|
|
|
|
|
+ if (accountInfo?.rememberPassword) {
|
|
|
|
|
+ form.value.loginName = accountInfo?.loginName || ''
|
|
|
|
|
+ form.value.password = accountInfo?.password || ''
|
|
|
|
|
+ remenber.value = ['记住我']
|
|
|
|
|
+ } else {
|
|
|
|
|
+ form.value.loginName = ''
|
|
|
|
|
+ form.value.password = ''
|
|
|
|
|
+ remenber.value = []
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 注册表单初始化
|
|
|
|
|
+ getCountry()
|
|
|
|
|
+ getCountryMsg()
|
|
|
|
|
|
|
|
- Object.entries(source).forEach(([key, value]) => {
|
|
|
|
|
- result[key] = fields.reduce((acc, f) => {
|
|
|
|
|
- acc[f] = value[f] ?? null
|
|
|
|
|
- return acc
|
|
|
|
|
- }, {})
|
|
|
|
|
|
|
+ const hostParts = window.location.host.split('.')
|
|
|
|
|
+ ho.value = hostParts.length > 1 ? hostParts[1] : ''
|
|
|
})
|
|
})
|
|
|
- userStore.saveReasonsOptions(result)
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-onMounted(() => {
|
|
|
|
|
-
|
|
|
|
|
- const accountInfo = userStore.accountInfo
|
|
|
|
|
- if (accountInfo?.rememberPassword) {
|
|
|
|
|
- form.value.loginName = accountInfo?.loginName || ''
|
|
|
|
|
- form.value.password = accountInfo?.password || ''
|
|
|
|
|
- remenber.value = ['记住我']
|
|
|
|
|
- } else {
|
|
|
|
|
- form.value.loginName = ''
|
|
|
|
|
- form.value.password = ''
|
|
|
|
|
- remenber.value = []
|
|
|
|
|
- }
|
|
|
|
|
-})
|
|
|
|
|
-const inputType = ref('password')
|
|
|
|
|
-const isChatIconExpanded = ref(false)
|
|
|
|
|
-// 处理聊天图标点击
|
|
|
|
|
-const handleChatIconClick = () => {
|
|
|
|
|
- // 如果还没显示 → 先滑出来
|
|
|
|
|
- if (!isChatIconExpanded.value) {
|
|
|
|
|
- isChatIconExpanded.value = true
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- if (isMobile.value) {
|
|
|
|
|
- router.push('/pages/common/chat')
|
|
|
|
|
- } else {
|
|
|
|
|
- if (LiveChatService) {
|
|
|
|
|
- LiveChatService.showChat();
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- setTimeout(() => {
|
|
|
|
|
- isChatIconExpanded.value = false
|
|
|
|
|
- }, 300)
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ const inputType = ref('password')
|
|
|
|
|
+ const isChatIconExpanded = ref(false)
|
|
|
|
|
+ // 处理聊天图标点击
|
|
|
|
|
+ const handleChatIconClick = () => {
|
|
|
|
|
+ // 如果还没显示 → 先滑出来
|
|
|
|
|
+ if (!isChatIconExpanded.value) {
|
|
|
|
|
+ isChatIconExpanded.value = true
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isMobile.value) {
|
|
|
|
|
+ router.push('/pages/common/chat')
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (LiveChatService) {
|
|
|
|
|
+ LiveChatService.showChat()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ isChatIconExpanded.value = false
|
|
|
|
|
+ }, 300)
|
|
|
|
|
+ }
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
-@import "@/uni.scss";
|
|
|
|
|
-
|
|
|
|
|
-:deep(uni-content) {
|
|
|
|
|
- padding-left: 0 !important;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.login-page {
|
|
|
|
|
- height: 100vh;
|
|
|
|
|
- border: none;
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- position: relative;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- flex-direction: column;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.chat-icon {
|
|
|
|
|
- width: px2rpx(50);
|
|
|
|
|
- height: px2rpx(50);
|
|
|
|
|
- border-radius: 50%;
|
|
|
|
|
- background-color: #cf1322;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- position: fixed;
|
|
|
|
|
- bottom: px2rpx(25);
|
|
|
|
|
- right: px2rpx(-25);
|
|
|
|
|
- z-index: 999;
|
|
|
|
|
- cursor: pointer;
|
|
|
|
|
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
|
- box-shadow: 0 px2rpx(8) px2rpx(20) rgba(0, 0, 0, 0.15);
|
|
|
|
|
- will-change: transform;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.chat-icon:hover {
|
|
|
|
|
- transform: scale(1.1);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.chat-icon-expanded {
|
|
|
|
|
- bottom: px2rpx(20);
|
|
|
|
|
- right: px2rpx(20);
|
|
|
|
|
- transform: scale(1.1);
|
|
|
|
|
- box-shadow: 0 px2rpx(12) px2rpx(30) rgba(0, 0, 0, 0.2);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.chat-icon-hidden {
|
|
|
|
|
- display: none;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.fixed {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- height: var(--status-bar-height);
|
|
|
|
|
- background-color: var(--color-white);
|
|
|
|
|
- z-index: 9;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.global-header-bar {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- height: px2rpx(60);
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- flex-shrink: 0;
|
|
|
|
|
- z-index: 100;
|
|
|
|
|
-
|
|
|
|
|
- &.pc-header {
|
|
|
|
|
- background-color: transparent;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .header-inner {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- padding: 0 5%;
|
|
|
|
|
|
|
+ @import "@/uni.scss";
|
|
|
|
|
+
|
|
|
|
|
+ :deep(uni-content) {
|
|
|
|
|
+ padding-left: 0 !important;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .login-page {
|
|
|
|
|
+ height: 100vh;
|
|
|
|
|
+ border: none;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .chat-icon {
|
|
|
|
|
+ width: px2rpx(50);
|
|
|
|
|
+ height: px2rpx(50);
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ background-color: #cf1322;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- justify-content: space-between;
|
|
|
|
|
- /* 两端对齐,可放logo和组件 */
|
|
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ bottom: px2rpx(25);
|
|
|
|
|
+ right: px2rpx(-25);
|
|
|
|
|
+ z-index: 999;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
|
|
|
+ box-shadow: 0 px2rpx(8) px2rpx(20) rgba(0, 0, 0, 0.15);
|
|
|
|
|
+ will-change: transform;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.mobile-header-bar {
|
|
|
|
|
- //position: absolute;
|
|
|
|
|
- //top: px2rpx(20);
|
|
|
|
|
- //right: px2rpx(20);
|
|
|
|
|
- z-index: 10;
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- background-color: var(--color-white);
|
|
|
|
|
- justify-content: flex-end;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.main-content {
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- overflow: hidden;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.demo-uni-row {
|
|
|
|
|
- height: 100%;
|
|
|
|
|
- margin: 0 !important;
|
|
|
|
|
-
|
|
|
|
|
- .left-bg {
|
|
|
|
|
- height: 100%;
|
|
|
|
|
- min-height: calc(100vh - 120px);
|
|
|
|
|
- background-image: url(/static/images/login-bg.gif);
|
|
|
|
|
- background-size: cover;
|
|
|
|
|
- background-position: center;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ .chat-icon:hover {
|
|
|
|
|
+ transform: scale(1.1);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .chat-icon-expanded {
|
|
|
|
|
+ bottom: px2rpx(20);
|
|
|
|
|
+ right: px2rpx(20);
|
|
|
|
|
+ transform: scale(1.1);
|
|
|
|
|
+ box-shadow: 0 px2rpx(12) px2rpx(30) rgba(0, 0, 0, 0.2);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .chat-icon-hidden {
|
|
|
|
|
+ display: none;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .fixed {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: var(--status-bar-height);
|
|
|
|
|
+ background-color: var(--color-white);
|
|
|
|
|
+ z-index: 9;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .global-header-bar {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: px2rpx(60);
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- flex-direction: column;
|
|
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ z-index: 100;
|
|
|
|
|
|
|
|
- .left-box {
|
|
|
|
|
|
|
+ &.pc-header {
|
|
|
|
|
+ background-color: transparent;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .header-inner {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ padding: 0 5%;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- flex-direction: column;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- align-items: flex-start;
|
|
|
|
|
- width: 60%;
|
|
|
|
|
- //margin-top: px2rpx(20);
|
|
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ /* 两端对齐,可放logo和组件 */
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- .inner {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- text-align: start;
|
|
|
|
|
- margin-bottom: px2rpx(20);
|
|
|
|
|
|
|
+ .mobile-header-bar {
|
|
|
|
|
+ //position: absolute;
|
|
|
|
|
+ //top: px2rpx(20);
|
|
|
|
|
+ //right: px2rpx(20);
|
|
|
|
|
+ z-index: 10;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ background-color: var(--color-white);
|
|
|
|
|
+ justify-content: flex-end;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- .section-title {
|
|
|
|
|
- margin-top: px2rpx(10);
|
|
|
|
|
- margin-bottom: px2rpx(10);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ .main-content {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ .demo-uni-row {
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ margin: 0 !important;
|
|
|
|
|
+
|
|
|
|
|
+ .left-bg {
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ min-height: calc(100vh - 120px);
|
|
|
|
|
+ background-image: url(/static/images/login-bg.gif);
|
|
|
|
|
+ background-size: cover;
|
|
|
|
|
+ background-position: center;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ padding: px2rpx(50);
|
|
|
|
|
+ //flex-direction: column;
|
|
|
|
|
+ //align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
|
|
|
- .title {
|
|
|
|
|
- font-size: px2rpx(50);
|
|
|
|
|
- line-height: 1;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-weight: 700;
|
|
|
|
|
- text-align: left;
|
|
|
|
|
|
|
+ .left-box {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: flex-start;
|
|
|
|
|
+ width: 60%;
|
|
|
|
|
+ //margin-top: px2rpx(20);
|
|
|
|
|
+
|
|
|
|
|
+ .inner {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ text-align: start;
|
|
|
|
|
+ //margin-bottom: px2rpx(20);
|
|
|
|
|
+
|
|
|
|
|
+ .section-title {
|
|
|
|
|
+ //margin-top: px2rpx(10);
|
|
|
|
|
+ //margin-bottom: px2rpx(10);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ .title {
|
|
|
|
|
+ margin: 0 0 0 px2rpx(10);
|
|
|
|
|
+ font-size: px2rpx(56);
|
|
|
|
|
+ line-height: 1.2;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ text-align: left;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .w-700 {
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .subtitle {
|
|
|
|
|
+ width: 45%;
|
|
|
|
|
+ font-size: px2rpx(18);
|
|
|
|
|
+ letter-spacing: px2rpx(1);
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ margin-bottom: px2rpx(24);
|
|
|
|
|
+ color: #ffffff;
|
|
|
|
|
+ line-height: px2rpx(15);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ padding: px2rpx(10) px2rpx(20);
|
|
|
|
|
+ border-radius: px2rpx(100);
|
|
|
|
|
+ text-transform: uppercase;
|
|
|
|
|
+ background-color: #e61f1e;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .w-40 {
|
|
|
|
|
+ max-width: 40%;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .text-white {
|
|
|
|
|
+ margin-top: px2rpx(10);
|
|
|
|
|
+ font-size: px2rpx(18);
|
|
|
|
|
+ margin-bottom: px2rpx(16);
|
|
|
|
|
+ line-height: 1.6;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .w-700 {
|
|
|
|
|
- font-weight: 700;
|
|
|
|
|
|
|
+ .img-fluid {
|
|
|
|
|
+ width: 400px;
|
|
|
|
|
+ height: 33px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .subtitle {
|
|
|
|
|
- width: 45%;
|
|
|
|
|
- font-size: px2rpx(18);
|
|
|
|
|
- letter-spacing: px2rpx(1);
|
|
|
|
|
- display: block;
|
|
|
|
|
- margin-bottom: px2rpx(24);
|
|
|
|
|
- color: #ffffff;
|
|
|
|
|
- line-height: px2rpx(15);
|
|
|
|
|
- font-weight: 500;
|
|
|
|
|
- padding: px2rpx(10) px2rpx(20);
|
|
|
|
|
- border-radius: px2rpx(100);
|
|
|
|
|
- text-transform: uppercase;
|
|
|
|
|
- background-color: #e61f1e;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
|
|
+ .mt--10 {
|
|
|
|
|
+ margin-top: px2rpx(10);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .w-40 {
|
|
|
|
|
- max-width: 40%;
|
|
|
|
|
|
|
+ .h1 {
|
|
|
|
|
+ // text-align: center;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 30px;
|
|
|
|
|
+ margin-top: 30px;
|
|
|
|
|
+ line-height: 1.5;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .text-white {
|
|
|
|
|
- margin-top: px2rpx(10);
|
|
|
|
|
- font-size: px2rpx(14);
|
|
|
|
|
- line-height: 1.6;
|
|
|
|
|
|
|
+ .h6 {
|
|
|
|
|
+ text-align: start;
|
|
|
|
|
+ line-height: 20px;
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ margin-top: 10px;
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .img-fluid {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- max-width: px2rpx(240);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .mt--10 {
|
|
|
|
|
- margin-top: px2rpx(10);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .h1 {
|
|
|
|
|
- // text-align: center;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-size: 30px;
|
|
|
|
|
- margin-top: 30px;
|
|
|
|
|
- line-height: 1.5;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- .h6 {
|
|
|
|
|
- text-align: start;
|
|
|
|
|
- line-height: 20px;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- margin-top: 10px;
|
|
|
|
|
|
|
+ .company {
|
|
|
|
|
+ padding: px2rpx(10) 0 px2rpx(10) 0;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ align-items: flex-start !important;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .company {
|
|
|
|
|
- padding: px2rpx(10) 0 px2rpx(10) 0;
|
|
|
|
|
- position: relative;
|
|
|
|
|
- align-items: flex-start !important;
|
|
|
|
|
|
|
+ .left-content {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
|
|
+
|
|
|
|
|
+ .des {
|
|
|
|
|
+ text-align: start;
|
|
|
|
|
+ line-height: 24px;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ //margin-top: px2rpx(20);
|
|
|
|
|
+
|
|
|
|
|
+ :nth-child(n) {
|
|
|
|
|
+ display: inline;
|
|
|
|
|
+ word-break: break-all;
|
|
|
|
|
+ word-wrap: break-word;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .doc-link {
|
|
|
|
|
+ color: var(--color-error);
|
|
|
|
|
+ text-decoration: underline;
|
|
|
|
|
+ margin: 0 px2rpx(4);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .left-content {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
|
|
+ .right-f {
|
|
|
|
|
+ background-color: var(--color-white);
|
|
|
|
|
+ padding: 0 px2rpx(24);
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
|
|
|
- .des {
|
|
|
|
|
- text-align: start;
|
|
|
|
|
- line-height: 24px;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- margin-top: px2rpx(20);
|
|
|
|
|
-
|
|
|
|
|
- :nth-child(n) {
|
|
|
|
|
- display: inline;
|
|
|
|
|
- word-break: break-all;
|
|
|
|
|
- word-wrap: break-word;
|
|
|
|
|
|
|
+ .account {
|
|
|
|
|
+ background-color: var(--color-white);
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ height: calc(100vh - 120px);
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ padding: 0 10%;
|
|
|
|
|
+
|
|
|
|
|
+ .company {
|
|
|
|
|
+ padding: px2rpx(50) 0 px2rpx(20) 0;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ align-items: center !important;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .doc-link {
|
|
|
|
|
- color: var(--color-error);
|
|
|
|
|
- text-decoration: underline;
|
|
|
|
|
- margin: 0 px2rpx(4);
|
|
|
|
|
|
|
+ .company-icon {
|
|
|
|
|
+ width: px2rpx(234);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .right-f {
|
|
|
|
|
|
|
+ .bottom-box {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 60px;
|
|
|
background-color: var(--color-white);
|
|
background-color: var(--color-white);
|
|
|
- padding: 0 px2rpx(24);
|
|
|
|
|
- height: 100%;
|
|
|
|
|
- box-sizing: border-box;
|
|
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ color: #000;
|
|
|
|
|
|
|
|
- .account {
|
|
|
|
|
- background-color: var(--color-white);
|
|
|
|
|
- position: relative;
|
|
|
|
|
- height: calc(100vh - 120px);
|
|
|
|
|
- display: flex;
|
|
|
|
|
- flex-direction: column;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- padding: 0 10%;
|
|
|
|
|
|
|
+ .bottom-title {
|
|
|
|
|
|
|
|
- .company {
|
|
|
|
|
- padding: px2rpx(50) 0 px2rpx(20) 0;
|
|
|
|
|
- position: relative;
|
|
|
|
|
- align-items: center !important;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ font-size: px2rpx(14);
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
|
|
|
- .company-icon {
|
|
|
|
|
- width: px2rpx(234);
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ .ellipsis {
|
|
|
|
|
+ width: px2rpx(200);
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .cwg-button {
|
|
|
|
|
+ width: 120px !important;
|
|
|
|
|
+ padding: px2rpx(4) 0 !important;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ button {
|
|
|
|
|
+ background-color: #ea002a;
|
|
|
|
|
+ font-size: px2rpx(14);
|
|
|
|
|
+ font-weight: normal;
|
|
|
|
|
+ height: px2rpx(44);
|
|
|
|
|
+ line-height: px2rpx(44);
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-.bottom-box {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- height: 60px;
|
|
|
|
|
- background-color: var(--color-white);
|
|
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- color: #000;
|
|
|
|
|
|
|
+ .right-f .account .company {
|
|
|
|
|
+ padding: px2rpx(50) 0 px2rpx(200) 0;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ align-items: flex-start !important;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .logo {
|
|
|
|
|
+ margin-left: px2rpx(48);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .left-bg .company-icon {
|
|
|
|
|
+ width: px2rpx(234);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- .bottom-title {
|
|
|
|
|
|
|
+ .left-bg .left-content {
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ z-index: 1;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ .title {
|
|
|
|
|
+ margin: px2rpx(32) 0;
|
|
|
|
|
+ font-size: px2rpx(24);
|
|
|
|
|
+ font-weight: bolder;
|
|
|
|
|
+ color: #e4e4e4;
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
- font-size: px2rpx(14);
|
|
|
|
|
- font-weight: 500;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ i {
|
|
|
|
|
+ margin-right: px2rpx(10);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tit1 {
|
|
|
|
|
+ font-size: px2rpx(34);
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #000000;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tit2 {
|
|
|
|
|
+ font-size: px2rpx(16);
|
|
|
|
|
+ line-height: 1.5;
|
|
|
|
|
+ color: #cecece;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .qr-title {
|
|
|
|
|
+ font-size: px2rpx(16);
|
|
|
line-height: 1.5;
|
|
line-height: 1.5;
|
|
|
|
|
+ color: #cecece;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ margin: px2rpx(40) 0;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+
|
|
|
|
|
+ .line {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ height: 1px;
|
|
|
|
|
+ background-color: #e4e4e4;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .qr-tit2 {
|
|
|
|
|
+ margin: 0 px2rpx(12);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .input {
|
|
|
|
|
+ height: px2rpx(44);
|
|
|
|
|
+ border-radius: px2rpx(8);
|
|
|
|
|
+ background: #f7f8fa;
|
|
|
|
|
+ padding: 0 px2rpx(20) !important;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .account-icon {
|
|
|
|
|
+ width: px2rpx(12);
|
|
|
|
|
+ height: px2rpx(14) !important;
|
|
|
|
|
+ margin-right: px2rpx(5);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ :deep(.u-input__content__prefix-icon) {
|
|
|
|
|
+ height: px2rpx(20);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .regiset-btn {
|
|
|
|
|
+ margin: px2rpx(20) 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .account-tip {
|
|
|
color: #666666;
|
|
color: #666666;
|
|
|
|
|
+ font-size: px2rpx(14);
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
|
|
|
|
|
+ text {
|
|
|
|
|
+ color: #ea002a;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .ellipsis {
|
|
|
|
|
- width: px2rpx(200);
|
|
|
|
|
- white-space: nowrap;
|
|
|
|
|
- overflow: hidden;
|
|
|
|
|
- text-overflow: ellipsis;
|
|
|
|
|
|
|
+ :deep(.u-form-item__body) {
|
|
|
|
|
+ padding: 0 !important;
|
|
|
|
|
+ padding-bottom: px2rpx(24) !important;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ :deep(.wcg-checkbox) {
|
|
|
|
|
+ padding: 0 !important;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.cwg-button {
|
|
.cwg-button {
|
|
|
- width: 120px !important;
|
|
|
|
|
- padding: px2rpx(4) 0 !important;
|
|
|
|
|
|
|
+ padding: px2rpx(34) 0 !important;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .tab-list {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ //gap: 5px;
|
|
|
|
|
+ //padding-bottom: 10px;
|
|
|
|
|
+ border-bottom: 1px solid #e4e4e4;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
|
|
+ .tab-item {
|
|
|
|
|
+ width: 50%;
|
|
|
|
|
+ margin: 0 px2rpx(15);
|
|
|
|
|
+ padding-right: 0;
|
|
|
|
|
+ padding-left: 0;
|
|
|
|
|
+ padding-bottom: 8px;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ border-bottom: 0.1rem solid transparent;
|
|
|
|
|
+ font-weight: 500;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
|
|
|
-button {
|
|
|
|
|
- background-color: #ea002a;
|
|
|
|
|
- font-size: px2rpx(14);
|
|
|
|
|
- font-weight: normal;
|
|
|
|
|
- height: px2rpx(44);
|
|
|
|
|
- line-height: px2rpx(44);
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .tab-label {
|
|
|
|
|
+ font-size: px2rpx(24);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.right-f .account .company {
|
|
|
|
|
- padding: px2rpx(50) 0 px2rpx(200) 0;
|
|
|
|
|
- position: relative;
|
|
|
|
|
- align-items: flex-start !important;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ &:hover,
|
|
|
|
|
+ &:focus {
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: #e32326;
|
|
|
|
|
+ border-bottom-color: #e32326;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.logo {
|
|
|
|
|
- margin-left: px2rpx(48);
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ &.active {
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ color: #e32326;
|
|
|
|
|
+ border-bottom-color: #e32326;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.left-bg .company-icon {
|
|
|
|
|
- width: px2rpx(234);
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ /* 注册表单样式 */
|
|
|
|
|
+ .pwd {
|
|
|
|
|
+ list-style: none;
|
|
|
|
|
+ padding-left: 0;
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
|
|
|
-.left-bg .left-content {
|
|
|
|
|
- position: relative;
|
|
|
|
|
- z-index: 1;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ li {
|
|
|
|
|
+ font-size: px2rpx(12);
|
|
|
|
|
+ color: #999;
|
|
|
|
|
+ line-height: px2rpx(20);
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ padding-left: px2rpx(16);
|
|
|
|
|
+
|
|
|
|
|
+ &::before {
|
|
|
|
|
+ content: '';
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ top: 50%;
|
|
|
|
|
+ transform: translateY(-50%);
|
|
|
|
|
+ width: px2rpx(6);
|
|
|
|
|
+ height: px2rpx(6);
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ background-color: #999;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.title {
|
|
|
|
|
- margin: px2rpx(32) 0;
|
|
|
|
|
- font-size: px2rpx(24);
|
|
|
|
|
- font-weight: bolder;
|
|
|
|
|
- color: #e4e4e4;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
|
|
+ &.fit {
|
|
|
|
|
+ color: #67c23a;
|
|
|
|
|
|
|
|
- i {
|
|
|
|
|
- margin-right: px2rpx(10);
|
|
|
|
|
|
|
+ &::before {
|
|
|
|
|
+ background-color: #67c23a;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .tit1 {
|
|
|
|
|
- font-size: px2rpx(34);
|
|
|
|
|
- line-height: 1.5;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- color: #000000;
|
|
|
|
|
|
|
+ .formContent {
|
|
|
|
|
+ padding: 0 10px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .tit2 {
|
|
|
|
|
- font-size: px2rpx(16);
|
|
|
|
|
- line-height: 1.5;
|
|
|
|
|
- color: #cecece;
|
|
|
|
|
- font-weight: 500;
|
|
|
|
|
|
|
+ :deep(.uni-stat-box) {
|
|
|
|
|
+ height: 100%;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-.qr-title {
|
|
|
|
|
- font-size: px2rpx(16);
|
|
|
|
|
- line-height: 1.5;
|
|
|
|
|
- color: #cecece;
|
|
|
|
|
- font-weight: 500;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
- margin: px2rpx(40) 0;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
|
|
+ :deep(.uni-select) {
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- .line {
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- height: 1px;
|
|
|
|
|
- background-color: #e4e4e4;
|
|
|
|
|
|
|
+ :deep(.uni-easyinput__content) {
|
|
|
|
|
+ height: 100%;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .qr-tit2 {
|
|
|
|
|
- margin: 0 px2rpx(12);
|
|
|
|
|
|
|
+ :deep(.uni-date-editor) {
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ :deep(.uni-date-editor--x) {
|
|
|
|
|
+ height: 100%;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .btn-code {
|
|
|
|
|
+ margin-left: -10px;
|
|
|
|
|
+ width: 120px;
|
|
|
|
|
+ height: px2rpx(37);
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ background-color: #102047;
|
|
|
|
|
+ //border: 1px solid rgb(229, 229, 229);
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ line-height: px2rpx(38);
|
|
|
|
|
+ border-radius: 0 18px 18px 0;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.input {
|
|
|
|
|
- height: px2rpx(44);
|
|
|
|
|
- border-radius: px2rpx(8);
|
|
|
|
|
- background: #f7f8fa;
|
|
|
|
|
- padding: 0 px2rpx(20) !important;
|
|
|
|
|
- position: relative;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .check-box {
|
|
|
|
|
+ padding: 0 px2rpx(10);
|
|
|
|
|
+ margin-bottom: px2rpx(10);
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
|
|
|
-.account-icon {
|
|
|
|
|
- width: px2rpx(12);
|
|
|
|
|
- height: px2rpx(14) !important;
|
|
|
|
|
- margin-right: px2rpx(5);
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .checkbox-label {
|
|
|
|
|
+ font-size: px2rpx(14);
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
+ margin-left: px2rpx(8);
|
|
|
|
|
+ user-select: none;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-:deep(.u-input__content__prefix-icon) {
|
|
|
|
|
- height: px2rpx(20);
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ :deep(.u-checkbox) {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: flex-start;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.regiset-btn {
|
|
|
|
|
- margin: px2rpx(20) 0;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .regiset-btn {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: px2rpx(40);
|
|
|
|
|
+ border-radius: px2rpx(4);
|
|
|
|
|
+ background-color: var(--color-error);
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-.account-tip {
|
|
|
|
|
- color: #666666;
|
|
|
|
|
- font-size: px2rpx(14);
|
|
|
|
|
- text-align: center;
|
|
|
|
|
|
|
+ .login-link {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ margin-top: px2rpx(20);
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ font-size: px2rpx(16);
|
|
|
|
|
+ line-height: 1.6;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- text {
|
|
|
|
|
- color: #ea002a;
|
|
|
|
|
|
|
+ .link {
|
|
|
|
|
+ margin-left: px2rpx(5);
|
|
|
|
|
+ color: #e61f1e;
|
|
|
|
|
+ padding-bottom: 2px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ font-size: px2rpx(14);
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-:deep(.u-form-item__body) {
|
|
|
|
|
- padding: 0 !important;
|
|
|
|
|
- padding-bottom: px2rpx(24) !important;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .agreemnet9 {
|
|
|
|
|
+ text-align: initial;
|
|
|
|
|
+ color: #e61f1e;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
-:deep(.wcg-checkbox) {
|
|
|
|
|
- padding: 0 !important;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .des-bottom {
|
|
|
|
|
+ margin-top: px2rpx(20);
|
|
|
|
|
+ line-height: 20px;
|
|
|
|
|
+ color: #000;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
|
|
|
-.cwg-button {
|
|
|
|
|
- padding: px2rpx(34) 0 !important;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ .desc-link {
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ color: #e61f1e;
|
|
|
|
|
+ text-decoration: underline;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
</style>
|
|
</style>
|