3
0
Fork 0
web-store-retail-h5/pages/shareRegist/index.vue

535 lines
14 KiB
Vue

<!--
* @Descripttion:
* @version:
* @Author: kBank
* @Date: 2022-11-21 15:11:22
-->
<template>
<view >
<view v-if="!pkCountry" class="content1">
<!-- <view class="index_header">
<view>注册</view>
</view> -->
<!-- <view class="tit" v-if="!pkCountry">{{ $t('w_0314') }}</view> -->
<!-- 海粉 -->
<view class="formed1"
>
<u-form :model="form"
labelWidth="80px"
ref="uForm"
:rules="rules">
<u-form-item label=""
prop="memberCode">
<u-input v-model="form.memberCode"
type="number"
disabled>
<u--text :text="howHeader"
slot="prefix"
margin="0 3px 0 0"
type="tips"></u--text>
</u-input>
</u-form-item>
<u-form-item label=""
prop="memberName">
<u-input v-model="form.memberName"
:placeholder="$t('w_0060')" />
</u-form-item>
<u-form-item label=""
prop="phone">
<u-input v-model="form.phone" @blur="setMemberCode"
:placeholder="$t('w_0053')" type="number" maxlength="20" />
</u-form-item>
<u-form-item label=""
prop="loginPassword">
<u-input :password="isPwd"
:placeholder="$t('w_0056')"
v-model="form.loginPassword">
<template slot="suffix">
<u-icon name="eye"
@tap="isPwd=!isPwd"
v-if="!isPwd"></u-icon>
<u-icon name="eye-off"
@tap="isPwd=!isPwd"
v-else></u-icon>
</template>
</u-input>
</u-form-item>
<u-form-item label=""
prop="payPassword">
<u-input :password="isPwd2"
:placeholder="$t('w_0316')"
v-model="form.payPassword">
<template slot="suffix">
<u-icon name="eye"
@tap="isPwd2=!isPwd2"
v-if="!isPwd2"></u-icon>
<u-icon name="eye-off"
@tap="isPwd2=!isPwd2"
v-else></u-icon>
</template>
</u-input>
</u-form-item>
<u-form-item label=""
prop="code">
<u-input v-model="form.code"
:placeholder="$t('w_0057')">
<template slot="suffix">
<view class="getCode"
@tap="getVilCode">{{ getCode }}</view>
</template>
</u-input>
</u-form-item>
</u-form>
<u-button type="success"
class="uBtn"
shape="circle"
color="linear-gradient(to right, #fb3024, #fb3024 )"
:loading="isLoading"
:loadingText="$t('w_0317')"
@click="toLogin">{{ $t('w_0318') }}</u-button>
</view>
</view>
<view v-else class="content">
<!-- <view class="tit" >{{ $t('w_0315') }}</view>
<view class="formed"
>
<u-form :model="form"
ref="uForm1"
:rules="rules1"
labelWidth="80px">
<u-form-item label=""
prop="memberName">
<u-input v-model="form.memberName"
:placeholder="$t('w_0189')" />
</u-form-item>
<u-form-item label=""
prop="phone">
<u-input v-model="form.phone"
:placeholder="$t('w_0053')" />
</u-form-item>
<u-form-item label=""
prop="code">
<u-input v-model="form.code"
:placeholder="$t('w_0057')">
<template slot="suffix">
<view class="getCode"
@tap="getVilCode">{{ getCode }}</view>
</template>
</u-input>
</u-form-item>
<u-form-item label=""
@click="selCountry">
<view class="picker">
<u-input v-model="form.pkCountryName"
disabled
disabledColor="#ffffff"
:placeholder="$t('w_0275')"
border="none"></u-input>
<u-icon name="arrow-right"></u-icon>
</view>
</u-form-item>
<u-form-item label="">
<view class="picker">
<u-input v-model="form.jsName"
disabled
disabledColor="#ffffff"
:placeholder="$t('w_0276')"
border="none"></u-input>
</view>
</u-form-item>
<u-form-item label=""
prop="loginPassword">
<u-input :password="isPwd1"
:placeholder="$t('w_0056')"
v-model="form.loginPassword">
<template slot="suffix">
<u-icon name="eye"
@tap="isPwd1=!isPwd1"
v-if="!isPwd1"></u-icon>
<u-icon name="eye-off"
@tap="isPwd1=!isPwd1"
v-else></u-icon>
</template>
</u-input>
</u-form-item>
<u-form-item label=""
prop="payPassword">
<u-input :password="isPwd2"
:placeholder="$t('w_0316')"
v-model="form.payPassword">
<template slot="suffix">
<u-icon name="eye"
@tap="isPwd2=!isPwd2"
v-if="!isPwd2"></u-icon>
<u-icon name="eye-off"
@tap="isPwd2=!isPwd2"
v-else></u-icon>
</template>
</u-input>
</u-form-item>
</u-form>
<u-button type="success"
class="uBtn"
shape="circle"
color="linear-gradient(to right, #fb3024, #fb3024 )"
:loading="isLoading"
:loadingText="$t('w_0317')"
@click="hiLogin">{{ $t('w_0318') }}</u-button>
<u-picker :show="isCountry"
keyName="label"
immediateChange
@confirm="confirmPopup"
@cancel="isCountry = false"
:columns="countryList"></u-picker>
</view> -->
</view>
<view class="mask" v-if="isTrue">
</view>
</view>
</template>
<script>
import * as api from '@/config/goods'
export default {
components: {},
data() {
return {
isTrue:false,
howHeader: 'HF',
pkParent: '',
form: {
memberName: '',
},
isLoading: false,
getCode: this.$t('w_0055'),
isSend: false,
beginTime: 60,
timer: '',
pkCountry: '',
isCountry: false,
countryList: [],
isPwd: true,
isPwd1: true,
isPwd2: true,
rules: {
memberCode: [
{
required: true,
asyncValidator: this.memberCodeRule,
trigger: ['blur'],
},
],
memberName: [
{
required: true,
message:this.$t('w_0060'),
trigger: [ 'blur'],
},
],
phone: [
{
required: true,
message: this.$t('w_0053'),
trigger: [ 'blur'],
},
],
code: [
{
required: true,
message: this.$t('w_0057'),
trigger: ['blur'],
},
],
loginPassword: [
{
required: true,
message: this.$t('w_0056'),
trigger: ['blur'],
},
],
payPassword: [
{
required: true,
message: this.$t('w_0316'),
trigger: [ 'blur'],
},
],
},
rules1: {
memberName: [
{
required: true,
message: this.$t('w_0189'),
trigger: ['change', 'blur'],
},
],
phone: [
{
required: true,
message: this.$t('w_0053'),
trigger: ['change', 'blur'],
},
],
code: [
{
required: true,
message: this.$t('w_0057'),
trigger: ['change', 'blur'],
},
],
loginPassword: [
{
required: true,
message: this.$t('w_0056'),
trigger: ['change', 'blur'],
},
],
payPassword: [
{
required: true,
message: this.$t('w_0316'),
trigger: ['change', 'blur'],
},
],
},
}
},
onReady() {},
onLoad(options) {
this.pkParent = options.code
this.pkCountry = options.country || ''
this.getGenerate()
if (this.pkCountry) {
this.getCountry()
this.form.pkCountry = this.pkCountry
uni.setStorageSync('pkCountry',this.pkCountry)
uni.redirectTo({ url: '/pages/shareArea/hiList?pkParent=' + this.pkParent})
// this.$refs.uForm1.setRules(this.rules1)
} else {
// 获取前缀
// 校验0元购
this.getHeader()
// this.$refs.uForm.setRules(this.rules)
}
},
onShow() {},
methods: {
setMemberCode(){
// this.form.memberCode = this.form.phone
this.$set(this.form,'memberCode',this.form.phone)
},
selCountry(){
uni.showModal({
title: this.$t('w_0034'),
content: this.$t('w_0319'),
success: (res) => {
if (res.confirm) {
this.isCountry = true
}
},
})
},
memberCodeRule(rule, value, callback) {
if (!value) {
callback(new Error(this.$t('w_0046')))
} else {
if (value.length < 10 || value.length > 20) {
callback(new Error(this.$t('w_0320')))
} else {
api.validateMember(value).then((res) => {
if (res.code == 200) {
callback()
} else {
callback(new Error(res.msg))
}
})
}
}
},
getHeader() {
api.checkShare().then((res) => {
if(res.code != 200){
this.isTrue = true
}else{
this.isTrue = false
}
})
// api.prefix(this.pkParent).then((res) => {
// this.howHeader = res.msg
// })
},
getGenerate() {
api.generate().then((res) => {
uni.setStorageSync('mToken', res.msg)
})
},
toLogin() {
this.$refs.uForm.validate().then((res) => {
this.isLoading = true
api
.regShareMember(
Object.assign({}, this.form, { parent: this.pkParent })
)
.then((res) => {
this.isLoading = false
if (res.code == 200) {
uni.redirectTo({
url:
'/pages/shareRegist/success?allData=' +
JSON.stringify(res.data),
})
}
})
})
},
hiLogin() {
this.$refs.uForm1.validate().then((res) => {
this.isLoading = true
api
.hiRegister(Object.assign({}, this.form, { pkParent: this.pkParent }))
.then((res) => {
this.isLoading = false
if (res.code == 200) {
uni.redirectTo({
url:
'/pages/shareRegist/success?allData=' +
JSON.stringify(res.data),
})
}
})
})
},
confirmPopup(e) {
this.form.pkCountry = e.value[0].id
this.form.pkCountryName = e.value[0].label
this.isCountry = false
},
getCountry() {
api.getCountry().then((res) => {
this.countryList = [
res.data.map((item) => {
return {
label: item.shortName,
id: item.pkId,
}
}),
]
this.countryList[0].forEach((item) => {
if (this.pkCountry == item.id) {
this.form.jsName = item.label
this.form.pkCountryName = item.label
}
})
})
},
// 获取验证码
getVilCode() {
this.startTime()
api
.verification({
phone: this.form.phone,
})
.then((res) => {})
.catch((err) => {
this.beginTime = 0
})
},
// 倒计时
startTime() {
if (this.isSend) return
this.isSend = true
this.getCode = this.beginTime + ' s'
let that = this
this.timer = setInterval(() => {
this.beginTime--
this.getCode = this.beginTime + ' s'
if (this.beginTime < 0) {
clearInterval(this.timer)
this.getCode = this.$t('w_0055')
this.beginTime = 60
this.isSend = false
}
}, 1000)
},
},
}
</script>
<style lang="scss" scoped>
.content1{
background-image: url('@/static/images/haiRgeiest1.jpg');
background-size: 100%;
background-repeat: no-repeat;
height: 100vh;
}
.content{
background-image: url('@/static/images/huan.jpg');
// background-image: url('@/static/images/regiestBg.jpg');
background-size: cover;
background-repeat: no-repeat;
background-position: center;
height: 100vh;
}
.tit{
font-size: 48px;
font-family: PangMenZhengDao-Regular, PangMenZhengDao;
font-weight: 400;
color: #FFFFFF;
text-align: center;
padding-top: 80px;
margin-bottom: 20px;
}
.index_header {
background: #f9f9f9;;
height: 330rpx;
font-size: 18px;
font-family: PingFang SC-Semibold, PingFang SC;
font-weight: 600;
color: #333333;
text-align: center;
padding: 10px 0;
}
.formed {
padding: 0 120rpx;
}
.formed1 {
padding: 0 120rpx;
padding-top: 550rpx;
}
.getCode {
font-size: 10px;
font-family: PingFang SC-Regular, PingFang SC;
font-weight: 400;
color: #C8161D;
}
.uBtn {
margin-top: 120rpx;
}
.picker {
display: flex;
justify-content: space-between;
width: 100%;
border-width: 0.5px !important;
border-color: #dadbde !important;
border-style: solid;
border-radius: 4px;
padding: 6px 9px;
background: #fff;
}
::v-deep .u-input{
background: #fff;
}
.mask{
position: fixed;
background: rgba(0,0,0,0.5);
width: 100%;
height: 100vh;
top: 0;
}
</style>