Commit 396643b7 authored by 潘永坪's avatar 潘永坪

填写订单页面开发

parent 34f47abe
......@@ -96,7 +96,7 @@ export default{
return d*(1 + fl*(h1*sf*(1-sg) - h2*(1-sf)*sg))
},
phoneReg:function(){//手机正则
return /^(13[0-9]|14[0-9]|15[0-9]|18[0-9]|17[0-9]|19[0-9]|16[0-9])\d{8}$/
return /^(13[0-9]|14[0-9]|15[0-9]|18[0-9]|17[0-9]|19[0-9]|16[0-9]|12[0-9])\d{8}$/
},
idReg:function(){//身份证正则
return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/
......
......@@ -3,7 +3,7 @@
<view class="son-wrap">
<view class="top">
<view class="top-num">
需填写{{buyNum}}位联系人
需填写{{contactNum}}位联系人
</view>
<view @click="showEdit()" class="top-add">
<text>
......@@ -14,20 +14,25 @@
<view class="bottom">
<checkbox-group @change="chooseContactChange">
<view class="bottom-list" v-for="(item,index) of contactData" :key="item.id">
<view class="bottom-list" v-for="(item,index) of listTotal" :key="item.id">
<label>
<checkbox :value="JSON.stringify(item)" :checked="item.ifChoose" color="#3688ff" />
<view class="bottom-content">
<view>
{{item.name}}
</view>
</view>
<view>
<text>
身份证
</text>
{{item.credentialNumber?item.credentialNumber.substr(0,3)+"****"+item.credentialNumber.substr(14,4):"无"}}
</view>
<view>
<text>
手机号
</text>
{{item.phone?item.phone.substr(0,3)+"****"+item.phone.substr(7,4):"无"}}
</view>
</view>
</label>
......@@ -38,12 +43,12 @@
<u-icon name="trash-fill" color="#3688ff" size="56"></u-icon>
</view>
</view>
<view style="margin: 40rpx 0;text-align: center;" v-if='contactData&&contactData.length>0'>
<view style="margin: 40rpx 0;text-align: center;" v-if='listTotal&&listTotal.length>0'>
已展示所有联系人
</view>
</checkbox-group>
<view class="bottom-sure">
<view class="bottom-sure" @click="config()">
确定
</view>
</view>
......@@ -54,22 +59,22 @@
<script>
export default {
props: ['contactData', 'orderTouristList', 'buyNum'],
props: ['contactTotal', 'contactNum'],
watch: {
orderTouristList: {
handler(newValue, oldValue) {
if (newValue) {
this.chooseContact = this.orderTouristList
}
},
deep: true,
immediate: true
contactTotal: {
handler(newValue, oldValue) {
if (newValue) {
this.listTotal = this.contactTotal
}
},
deep: true,
immediate: true
}
},
data() {
return {
showPop: false, //控制联系人弹窗显示隐藏
chooseContact: [], //选中的联系人
listTotal:[],//所有联系人
showModal: false, //确认弹窗显示隐藏
contactId:'',//删除联系人的Id
......@@ -91,20 +96,41 @@ export default {
//---确定选中的联系人
config() {
this.showPop = false
this.$emit('contactListConfig', this.chooseContact)
//选中的排在前面
this.listTotal.sort(function (a, b) {
return b.ifChoose-a.ifChoose
})
this.$parent.contactTotal=this.listTotal
let chooseArr=[]
this.listTotal.forEach(item=>{
if(item.ifChoose){
chooseArr.push(item)
}
})
this.$parent.chooseContact=chooseArr
},
//---联系人姓名变化
chooseContactChange(e){
let value=e.detail.value
if (value.length > this.contactNum) {
let number=value.length-this.contactNum
value=value.slice(number)
}
let arr=[]
value.forEach(item=>{
arr.push(JSON.parse(item))
})
this.chooseContact=arr
if (arr.length > this.buyNum) {
arr.shift()
}
//先全部取消选中,后面根据选中的值来判断谁选中
this.listTotal.forEach(item=>{
item.ifChoose=false
})
arr.forEach(item=>{
this.listTotal.forEach(item2=>{
if(item.id==item2.id){
item2.ifChoose=true
}
})
})
},
//---点击删除
clickDele(id) {
......@@ -123,7 +149,6 @@ export default {
icon:'none'
})
this.showModal = false
this.showPop=false
this.$parent.getContactList()
} else {
uni.showToast({
......
<template>
<view class="editBox" v-show="showEdit">
<view @click="close()" class="return">
<u-icon name="close"></u-icon>
<u-icon name="close" bold></u-icon>
</view>
<view class="editTop">
</view>
<view class="editBottom">
<view class="bottomContent">
<view>
<text>
姓名:
</text>
<input v-model.trim="name" placeholder="请输入中文姓名" />
<input v-model.trim="name" placeholder="请输入中文姓名,必填" />
</view>
<view>
<text>
身份证:
</text>
<input v-model.trim="credentialNumber" maxlength="18" placeholder="请输入身份证号码" />
<input v-model.trim="credentialNumber" maxlength="18" placeholder="请输入身份证号码,必填" />
</view>
<view>
<text>
联系电话:
</text>
<input v-model.trim="phone" maxlength="11" placeholder="用于接收行程信息" />
</view>
<view>
<!--编辑-->
<a class="middle-btn" @click="keepEdit()" v-if="editBtn">完成</a>
<!--新增-->
<a class="middle-btn" @click="keepPlus()" v-else="">完成</a>
<a class="complete" @click="keepSave()">完成</a>
</view>
</view>
......@@ -37,130 +38,98 @@
</template>
<script>
export default {
props: ["editContact"],
data() {
return {
showEdit: false, //控制组件显示隐藏
name: "", //姓名
credentialNumber: "", //身份证号
reviseContactId: "", //被修改人id
editBtn: "", //控制编辑完成按钮显示隐藏
}
},
watch: {
editContact: { //
handler(newValue, oldValue) {
if (newValue) {
this.editBtn = true
} else {
this.editBtn = false
}
this.name = newValue.name||''
this.credentialNumber = newValue.credentialNumber||''
this.reviseContactId = newValue.id||''
},
deep: false,
immediate: false
}
},
methods: {
//---关闭弹窗
close() {
this.showEdit = false
},
//---新增保存
keepPlus() {
if (!this.$commonjs.nameReg().test(this.name)) {
uni.showToast({
title:'请输入正确的中文名字',
icon:'none'
})
return
}
if (!this.$commonjs.idReg().test(this.credentialNumber)) {
uni.showToast({
title:'请输入正确身份证号',
icon:'none'
})
return
}
let data = {
name: this.name, //保存姓名
phone: "", //电话号码
credentialNumber: this.credentialNumber, //身份证号
category: "", //成人或者儿童
openid: uni.getStorageSync("openid"), //用户Id
credentialsType: "", //证件类型
merchantType: 1, //商户类型,1.景区,2.酒店,3.餐饮
}
this.$request("wechatUser/contact/saveContact", data).then((res) => {
if (res.code == "00") {
uni.showToast({
title:'保存成功',
icon:'none'
})
this.$parent.addChoose()
this.showEdit = false
this.name = "" //成功之后清空数据,防止下次新增的时候出现之前的数据
this.credentialNumber = ""
} else {
uni.showToast({
title:res.message,
icon:'none'
})
}
})
},
//---编辑保存
keepEdit() {
if (!this.$commonjs.nameReg().test(this.name)) {
uni.showToast({
title:'请输入正确的中文名字',
icon:'none'
})
return
}
if (!this.$commonjs.idReg().test(this.credentialNumber)) {
uni.showToast({
title:'请输入正确身份证号',
icon:'none'
})
return
}
let data = {
name: this.name, //保存姓名
phone: "", //电话号码
credentialNumber: this.credentialNumber, //身份证号
category: "", //成人或者儿童
openid: uni.getStorageSync("openid"), //用户Id
credentialsType: "", //证件类型
merchantType: 1, //商户类型,1.景区,2.酒店,3.餐饮
id: this.reviseContactId, //被修改人id
}
this.$request("wechatUser/contact/updateContact", data).then((res) => {
if (res.code == "00") {
uni.showToast({
title:'修改成功',
icon:'none'
})
this.$parent.getContactList()
this.showEdit = false
} else {
uni.showToast({
title:res.message,
icon:'none'
})
}
})
}
}
}
export default {
props: ['editContact'],
data() {
return {
showEdit: false, //控制组件显示隐藏
name: '', //姓名
credentialNumber: '', //身份证号
phone:'',//手机号码
reviseContactId: '', //被修改人id
}
},
watch: {
editContact: {
handler(newValue, oldValue) {
console.log(111)
this.name = newValue.name||''
this.credentialNumber = newValue.credentialNumber||''
this.reviseContactId = newValue.id||''
this.phone=newValue.phone||''
},
deep: true,
immediate: true
}
},
methods: {
//---关闭弹窗
close() {
this.showEdit = false
},
//---保存
keepSave() {
if (!this.$commonjs.nameReg().test(this.name)) {
uni.showToast({
title:'请输入正确的中文名字',
icon:'none'
})
return
}
if (!this.$commonjs.idReg().test(this.credentialNumber)) {
uni.showToast({
title:'请输入正确身份证号',
icon:'none'
})
return
}
if (this.phone&&!this.$commonjs.phoneReg().test(this.phone)) {
uni.showToast({
title:'请输入正确电话号码',
icon:'none'
})
return
}
let data = {
name: this.name, //保存姓名
phone:this.phone, //电话号码
credentialNumber: this.credentialNumber, //身份证号
openid: uni.getStorageSync('openid'), //用户Id
merchantType: 1, //商户类型,1.景区,2.酒店,3.餐饮
id: this.reviseContactId, //被修改人id
category: '', //成人或者儿童
credentialsType: '', //证件类型
}
let queryUrl=''
if(this.reviseContactId){
queryUrl='wechatUser/contact/updateContact'
}else{
queryUrl='wechatUser/contact/saveContact'
}
this.$request(queryUrl, data).then((res) => {
if (res.code == '00') {
uni.showToast({
title:'保存成功',
icon:'none'
})
if(!this.reviseContactId){
this.$parent.addChoose()
}
this.showEdit = false
} else {
uni.showToast({
title:res.message,
icon:'none'
})
}
})
}
}
}
</script>
<style scoped="scoped">
<style scoped="scoped" lang="scss">
.editBox {
height: 100%;
background: #F5F5F5;
position: fixed;
top: 0;
......@@ -168,8 +137,6 @@
right: 0;
bottom: 0;
z-index: 10000;
overflow-y: auto;
font-size:28rpx;
}
.return {
height:100rpx;
......@@ -201,7 +168,7 @@
}
.bottomContent view text {
display: inline-block;
width: 120rpx;
width: 140rpx;
text-align-last: justify;
margin-right: 20rpx;
}
......@@ -209,10 +176,17 @@
flex: 1;
}
.bottomContent view:last-child {
display: flex;
justify-content: center;
align-items: center;
margin-top: 60rpx;
border: none;
}
.complete{
width:100%;
height:70rpx;
border-radius:16rpx;
color: #FFFFFF;
text-align: center;
line-height:70rpx;
background:$theme;
display: inline-block;
}
</style>
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment