435 lines
10 KiB
Vue
435 lines
10 KiB
Vue
<template>
|
||
<view class="content">
|
||
<view class="head">
|
||
<image src="../../static/images/liangbiao-bg.png"></image>
|
||
</view>
|
||
<view class="con">
|
||
<view class="tab-con">
|
||
<view :class="['tab', tabCur == 0 ? 'tab-first' : '']" @click="selectAuto">自动选择</view>
|
||
<view :class="['tab', tabCur == 1 ? 'tab-second' : '']" @click="selectTab">手动输入</view>
|
||
</view>
|
||
<view class="info" v-if="tabCur == 0">
|
||
<view class="line">
|
||
<view class="title">我的儿童:</view>
|
||
<input type="text" v-model="child" name="child" placeholder-style="color:#c7c7c7"
|
||
placeholder="选择绑定的儿童>" auto-focus @click="popChild" />
|
||
</view>
|
||
<view class="line">
|
||
<view class="title">儿童姓名:</view>
|
||
<input type="text" v-model="childName" name="childName" placeholder-style="color:#c7c7c7"
|
||
placeholder="选择完儿童自动填写">
|
||
</view>
|
||
<view class="line">
|
||
<view class="title">性别:</view>
|
||
<input type="text" v-model="childSexAuto" name="childSex" placeholder-style="color:#c7c7c7"
|
||
placeholder="选择完儿童自动填写">
|
||
</view>
|
||
<view class="line">
|
||
<view class="title">出生日期:</view>
|
||
<input type="text" v-model="birthday" name="birthday" placeholder-style="color:#c7c7c7"
|
||
placeholder="选择完儿童自动填写">
|
||
</view>
|
||
<view class="line">
|
||
<view class="title">联系电话:</view>
|
||
<input type="text" v-model="phone" name="phone" placeholder-style="color:#c7c7c7"
|
||
placeholder="选择完儿童自动填写">
|
||
</view>
|
||
<view class="address">
|
||
<view class="title">地址(选填):</view>
|
||
<textarea class="text" type="text" v-model="address" name="address"
|
||
placeholder-style="color:#c7c7c7" placeholder="请输入地址"></textarea>
|
||
</view>
|
||
</view>
|
||
<view class="hand" v-if="tabCur == 1">
|
||
<view class="line">
|
||
<view class="title">儿童姓名:</view>
|
||
<input type="text" v-model="childName" name="childName" placeholder-style="color:#c7c7c7"
|
||
placeholder="请输入儿童真实姓名">
|
||
</view>
|
||
<view class="line">
|
||
<view class="title">性别:</view>
|
||
<input type="text" v-model="childSex" name="childSex" placeholder-style="color:#c7c7c7"
|
||
placeholder="请选择儿童性别>" @click="popSex">
|
||
</view>
|
||
<view class="line">
|
||
<view class="title">出生日期:</view>
|
||
<input type="text" v-model="birthday" name="birthday" placeholder-style="color:#c7c7c7"
|
||
placeholder="请选择儿童出生日期>" @click="popBirthday">
|
||
</view>
|
||
<view class="line">
|
||
<view class="title">联系电话:</view>
|
||
<input type="text" v-model="phone" name="phone" placeholder-style="color:#c7c7c7"
|
||
placeholder="请输入家长手机号">
|
||
</view>
|
||
<view class="address">
|
||
<view class="title">地址(选填):</view>
|
||
<textarea class="text" type="text" v-model="address" name="address"
|
||
placeholder-style="color:#c7c7c7" placeholder="请输入地址"></textarea>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="treaty">
|
||
<checkbox-group @change="checkboxChange" class="checkbox">
|
||
<label>
|
||
<checkbox value="1" :checked="treatyChecked" style="transform:scale(0.7)" />
|
||
</label>
|
||
</checkbox-group>
|
||
<view class="privacy-policy-text">
|
||
<text>同意运营商收集以上信息1,</text>
|
||
<text class="privacy-policy-text-btn" @click="goPolicy">《隐私政策》</text>
|
||
</view>
|
||
</view>
|
||
<view class="btn" @click="goTest">开始测试</view>
|
||
|
||
<uni-popup type="bottom" ref="childPop" :animation="true" :maskClick="true">
|
||
<view class="agency-popup">
|
||
<view class="head">
|
||
<button type="default" @tap.stop="close">取消</button>
|
||
<button type="default" @tap.stop="sure">确定</button>
|
||
</view>
|
||
<picker-view :value="value" indicator-style="height: 50px;" @change="bindChange" class="picker-view">
|
||
<picker-view-column>
|
||
<view class="item" v-for="(item,index) in childList" :key="index">{{item.name}}</view>
|
||
</picker-view-column>
|
||
</picker-view>
|
||
</view>
|
||
</uni-popup>
|
||
<uni-popup type="bottom" ref="sexPop" :animation="true" :maskClick="true">
|
||
<view class="agency-popup">
|
||
<view class="head">
|
||
<button type="default" @tap.stop="closeSex">取消</button>
|
||
<button type="default" @tap.stop="sureSex">确定</button>
|
||
</view>
|
||
<picker-view :value="sex" indicator-style="height: 50px;" @change="bindChangeSex" class="picker-view">
|
||
<picker-view-column>
|
||
<view class="item" v-for="(item,index) in sexList" :key="index">{{item.name}}</view>
|
||
</picker-view-column>
|
||
</picker-view>
|
||
</view>
|
||
</uni-popup>
|
||
<uni-popup type="bottom" ref="birthdayPop" :animation="true" :maskClick="true">
|
||
<view class="agency-popup">
|
||
<view class="head">
|
||
<button type="default" @tap.stop="closeBirthday">取消</button>
|
||
<button type="default" @tap.stop="sureBirthday">确定</button>
|
||
</view>
|
||
<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
|
||
<view class="uni-input">{{date}}</view>
|
||
</picker>
|
||
</view>
|
||
</uni-popup>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
const currentDate = this.getDate({
|
||
format: true
|
||
})
|
||
|
||
return {
|
||
tabList: [{
|
||
name: '自动选择',
|
||
},
|
||
{
|
||
name: '手动输入',
|
||
},
|
||
],
|
||
tabCur: 0,
|
||
childList: [{
|
||
name: '绝对是'
|
||
}, {
|
||
name: '第三方'
|
||
}, {
|
||
name: '大范围'
|
||
}],
|
||
child: '',
|
||
childName: '',
|
||
childSexAuto: '',
|
||
birthday: '',
|
||
phone: '',
|
||
address: '',
|
||
treatyChecked: false, // 用户服务协议与隐私协议
|
||
value: [0],
|
||
sex: [0],
|
||
|
||
childSex: '',
|
||
sexList: [{
|
||
name: '男'
|
||
}, {
|
||
name: '女'
|
||
}],
|
||
date: currentDate,
|
||
}
|
||
},
|
||
methods: {
|
||
goPolicy() {
|
||
uni.navigateTo({
|
||
url: "/loginPackage/pages/PrivacyPolicy"
|
||
})
|
||
},
|
||
goTest() {
|
||
uni.redirectTo({
|
||
url: "/homePackage/pages/answerDetail"
|
||
})
|
||
},
|
||
selectAuto() {
|
||
this.tabCur = 0;
|
||
},
|
||
selectTab() {
|
||
this.tabCur = 1;
|
||
},
|
||
checkboxChange(e) {
|
||
if (e.detail.value.indexOf('1') == 0) {
|
||
this.treatyChecked = true;
|
||
} else {
|
||
this.treatyChecked = false
|
||
}
|
||
},
|
||
popChild() {
|
||
this.$refs.childPop.open();
|
||
},
|
||
|
||
bindChange(e) { //选择器中的滑动
|
||
console.log(e.detail.value)
|
||
this.value = e.detail.value;
|
||
},
|
||
sure() {
|
||
this.child = this.childList[this.value].name;
|
||
this.close();
|
||
},
|
||
close() {
|
||
this.$refs.childPop.close();
|
||
},
|
||
bindChangeSex(e) { //选择器中的滑动
|
||
console.log(e.detail.value)
|
||
this.sex = e.detail.value;
|
||
},
|
||
popSex() {
|
||
this.$refs.sexPop.open();
|
||
},
|
||
sureSex() {
|
||
this.childSex = this.sexList[this.sex].name;
|
||
this.closeSex();
|
||
},
|
||
closeSex() {
|
||
this.$refs.sexPop.close();
|
||
},
|
||
bindChangeBirthday(e) { //选择器中的滑动
|
||
console.log(e.detail.value)
|
||
// this.sex = e.detail.value;
|
||
},
|
||
popBirthday() {
|
||
this.$refs.birthdayPop.open();
|
||
},
|
||
sureBirthday() {
|
||
// this.childSex = this.sexList[this.sex].name;
|
||
// this.closeBirthday();
|
||
},
|
||
closeBirthday() {
|
||
this.$refs.birthdayPop.close();
|
||
},
|
||
bindDateChange(e) {
|
||
this.date = e.detail.value
|
||
},
|
||
getDate(type) {
|
||
console.log('225')
|
||
const date = new Date();
|
||
let year = date.getFullYear();
|
||
let month = date.getMonth() + 1;
|
||
let day = date.getDate();
|
||
|
||
if (type === 'start') {
|
||
year = year - 60;
|
||
} else if (type === 'end') {
|
||
year = year + 2;
|
||
}
|
||
month = month > 9 ? month : '0' + month;
|
||
day = day > 9 ? day : '0' + day;
|
||
return `${year}-${month}-${day}`;
|
||
}
|
||
},
|
||
computed: {
|
||
startDate() {
|
||
return this.getDate('start');
|
||
},
|
||
endDate() {
|
||
return this.getDate('end');
|
||
}
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="less">
|
||
.privacy-policy-text {
|
||
margin-left: 10rpx;
|
||
font-size: 26rpx;
|
||
color: #fff;
|
||
|
||
.privacy-policy-text-btn {
|
||
color: #fff;
|
||
}
|
||
}
|
||
|
||
.content {
|
||
.head {
|
||
width: 100%;
|
||
|
||
image {
|
||
width: 100%;
|
||
}
|
||
}
|
||
|
||
.con {
|
||
line-height: 20px;
|
||
border-radius: 10px;
|
||
background-color: rgba(255, 255, 255, 1);
|
||
text-align: center;
|
||
box-shadow: 0px 2px 6px 0px rgba(228, 228, 228, 100);
|
||
margin: 0rpx 30rpx;
|
||
|
||
.tab-con {
|
||
display: flex;
|
||
|
||
.tab {
|
||
width: 50%;
|
||
height: 94rpx;
|
||
line-height: 94rpx;
|
||
|
||
&.tab-first {
|
||
background-color: rgba(40, 123, 206, 1);
|
||
color: #fff;
|
||
border-top-left-radius: 20rpx;
|
||
}
|
||
|
||
&.tab-second {
|
||
background-color: rgba(40, 123, 206, 1);
|
||
color: #fff;
|
||
border-top-right-radius: 20rpx;
|
||
}
|
||
}
|
||
}
|
||
|
||
.info,
|
||
.hand {
|
||
.line {
|
||
display: flex;
|
||
border-bottom: 2rpx solid #ddd;
|
||
padding: 20rpx 0rpx;
|
||
margin: 0rpx 40rpx;
|
||
justify-content: space-between;
|
||
|
||
.title {
|
||
margin-right: 30rpx;
|
||
color: rgba(16, 16, 16, 1);
|
||
font-size: 14px;
|
||
}
|
||
|
||
input {
|
||
width: 70%;
|
||
}
|
||
}
|
||
|
||
.address {
|
||
display: flex;
|
||
flex-direction: column;
|
||
text-align: left;
|
||
padding: 20rpx 0rpx;
|
||
margin: 0rpx 40rpx;
|
||
|
||
.text {
|
||
margin-top: 10rpx;
|
||
border: 1px solid rgba(187, 187, 187, 1);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.treaty {
|
||
display: flex;
|
||
margin-left: 60rpx;
|
||
margin-top: 20rpx;
|
||
|
||
.checkbox {
|
||
width: 40rpx;
|
||
height: 40rpx;
|
||
}
|
||
}
|
||
|
||
.btn {
|
||
width: 332px;
|
||
height: 50px;
|
||
border-radius: 30px;
|
||
background-color: rgba(40, 123, 206, 1);
|
||
color: rgba(255, 255, 255, 1);
|
||
font-size: 14px;
|
||
text-align: center;
|
||
line-height: 100rpx;
|
||
margin: 20rpx auto;
|
||
}
|
||
|
||
.agency-popup {
|
||
width: 100%;
|
||
min-height: 500rpx;
|
||
max-height: 700rpx;
|
||
// overflow: auto;
|
||
background: #fff;
|
||
border-radius: 20rpx 20rpx 0rpx 0rpx;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
|
||
.head {
|
||
width: 100%;
|
||
height: 100rpx;
|
||
margin-top: 20rpx;
|
||
border-bottom: 2rpx #e2e2e2 solid;
|
||
display: flex;
|
||
justify-content: space-around;
|
||
align-items: center;
|
||
|
||
.title {
|
||
font-size: 32rpx;
|
||
font-weight: 600;
|
||
}
|
||
|
||
button {
|
||
border: none;
|
||
background-color: transparent;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
button::after {
|
||
border: none;
|
||
}
|
||
|
||
button:first-of-type {
|
||
margin-left: 20rpx;
|
||
color: #737171;
|
||
}
|
||
|
||
button:last-of-type {
|
||
color: #1769ff;
|
||
margin-right: 20rpx;
|
||
}
|
||
}
|
||
|
||
.picker-view {
|
||
width: 100%;
|
||
height: 300rpx;
|
||
margin-top: 50rpx;
|
||
|
||
.item {
|
||
height: 100rpx;
|
||
line-height: 100rpx;
|
||
font-size: 32rpx;
|
||
align-items: center;
|
||
justify-content: center;
|
||
text-align: center;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
</style> |