Commit 08659106 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/zk123/jz_travel

# Conflicts:
#	components/coupon/index.vue
#	pages/jiuzhai/jz_Reserve.vue
parents 81450a70 96a4d94f
...@@ -24,14 +24,22 @@ ...@@ -24,14 +24,22 @@
<view class="err" v-if="x.err"> <view class="err" v-if="x.err">
{{x.err}} {{x.err}}
</view> </view>
<view style="color: #dfbe6e;font-size: 22rpx;"
:style="{'padding-top':x.err?'':'30rpx'}">
{{x.overlapUse==1?'可叠加使用':'不可叠加使用'}}
</view>
<!-- <view class="rule" v-if="x.lineTeamName!='' || x.lineName!=''">{{x.lineName}} {{x.lineTeamName}} 可用</view> --> <!-- <view class="rule" v-if="x.lineTeamName!='' || x.lineName!=''">{{x.lineName}} {{x.lineTeamName}} 可用</view> -->
</view> </view>
<view class="chosen" v-if="!x.err"> <view class="chosen" v-if="!x.err">
<u-radio-group v-model="value" @change="radioChange" > <u-radio-group v-if="!x.overlapUse" v-model="value" @change="radioChange" >
<u-radio shape="circle" :name="x.id" :icon-size="36" :active-color="mc"></u-radio>
</u-radio-group>
<u-radio-group v-else v-model="x.checkId" @change="(e)=>{multipleChoice(e,i)}" >
<u-radio shape="circle" :name="x.id" :icon-size="36" :active-color="mc"></u-radio> <u-radio shape="circle" :name="x.id" :icon-size="36" :active-color="mc"></u-radio>
</u-radio-group> </u-radio-group>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
...@@ -52,24 +60,38 @@ ...@@ -52,24 +60,38 @@
<script> <script>
export default { export default {
props: ["list", "current","price","currentPrice","order"], props: ["list", "current","price","currentPrice","order","multiple"],
data() { data() {
return { return {
mc: "", mc: "",
show: true, show: true,
currentChosen: "", currentChosen: "",
value:'', value:'',
ts: [] ts: [],
stacking: 0,
multipleChosen: [],
}; };
}, },
mounted() { mounted() {
this.mc = this.$uiConfig.mainColor; this.mc = this.$uiConfig.mainColor;
this.currentChosen = this.current; if(this.current) {
this.value = this.current; this.currentChosen = this.current;
this.value = this.current;
}
if(this.multiple) this.multipleChosen = this.multiple
this.ts = this.list this.ts = this.list
this.ts.forEach(x => { this.ts.forEach(x => {
x.start_time = x.effectDate.split(' ')[0].replace(/-/g, '.') x.start_time = x.effectDate.split(' ')[0].replace(/-/g, '.')
x.end_time = x.expirationDate.split(' ')[0].replace(/-/g, '.') x.end_time = x.expirationDate.split(' ')[0].replace(/-/g, '.')
if(this.multipleChosen&&this.multipleChosen.length>0){
this.multipleChosen.forEach(y => {
if (x.id == y) {
x.checkId = y
x.check = true
}
})
}
}) })
this.checkOrderCoupon() this.checkOrderCoupon()
}, },
...@@ -84,9 +106,6 @@ ...@@ -84,9 +106,6 @@
let errorMsg = null let errorMsg = null
if(shengyu!=remainNum) errorMsg = '当前定制团存在其他订单,无法使用专享优惠券' if(shengyu!=remainNum) errorMsg = '当前定制团存在其他订单,无法使用专享优惠券'
else if(orderNum<shengyu) errorMsg = '报名人数小于团队机位人数,无法使用专享优惠券' else if(orderNum<shengyu) errorMsg = '报名人数小于团队机位人数,无法使用专享优惠券'
console.log(errorMsg,shengyu,remainNum,orderNum)
this.ts.forEach(x => { this.ts.forEach(x => {
if(x.couponsUseScope==10) x.err = errorMsg if(x.couponsUseScope==10) x.err = errorMsg
}) })
...@@ -101,22 +120,52 @@ ...@@ -101,22 +120,52 @@
x.err = '订单金额不满足' x.err = '订单金额不满足'
} }
}) })
console.log('useCondition')
}, },
popupClose() { popupClose() {
if (this.currentChosen != this.current) { if(this.stacking==0){
this.$emit('close', this.currentChosen) if (this.currentChosen != this.current) {
} else { this.$emit('close', this.currentChosen)
this.$emit('close', -1) } else {
this.$emit('close', -1)
}
}else{
if(this.multipleChosen.length>0){
this.$emit('close', this.multipleChosen)
}else{
this.$emit('close', -1)
}
} }
}, },
radioChange(e){ radioChange(e){
this.stacking = 0
this.multipleChosen = []
this.ts.forEach(x => {
x.checkId = 0
x.check = false
})
if(this.currentChosen != e){ if(this.currentChosen != e){
this.currentChosen = e this.currentChosen = e
}else{ }else{
this.currentChosen = 0; this.currentChosen = 0;
this.value = 0 this.value = 0
} }
},
// 叠加使用优惠券
multipleChoice(e,i){
this.stacking = 1
this.value = 0
if(!this.ts[i].check) this.ts[i].check = true
else this.ts[i].check = false
if(!this.ts[i].check) {
this.ts[i].checkId = 0
this.multipleChosen = this.multipleChosen.filter(x=>{return x!=e})
}else {
this.ts[i].checkId = e
let list = this.multipleChosen.findIndex(x=>x==this.ts[i].id)
if(list==-1) this.multipleChosen.push(e)
}
} }
}, },
}; };
......
...@@ -510,30 +510,35 @@ ...@@ -510,30 +510,35 @@
index: e.detail.value[index] index: e.detail.value[index]
}) })
} }
} }
}, },
// 用户点击确定按钮 // 用户点击确定按钮
getResult(event = null) { getResult(event = null) {
let result = {}; uni.showLoading()
// 只返回用户在this.params中配置了为true的字段 setTimeout(() => {
if (this.mode == 'time') { let result = {};
if (this.params.year) result.year = this.formatNumber(this.year || 0);; // 只返回用户在this.params中配置了为true的字段
if (this.params.month) result.month = this.formatNumber(this.month || 0); if (this.mode == 'time') {
if (this.params.day) result.day = this.formatNumber(this.day || 0); if (this.params.year) result.year = this.formatNumber(this.year || 0);;
if (this.params.hour) result.hour = this.formatNumber(this.hour || 0); if (this.params.month) result.month = this.formatNumber(this.month || 0);
if (this.params.minute) result.minute = this.formatNumber(this.minute || 0); if (this.params.day) result.day = this.formatNumber(this.day || 0);
if (this.params.second) result.second = this.formatNumber(this.second || 0); if (this.params.hour) result.hour = this.formatNumber(this.hour || 0);
} else if (this.mode == 'region') { if (this.params.minute) result.minute = this.formatNumber(this.minute || 0);
if (this.params.province) result.province = provinces[this.province]; if (this.params.second) result.second = this.formatNumber(this.second || 0);
if (this.params.city) result.city = citys[this.province][this.city]; } else if (this.mode == 'region') {
if (this.params.area) result.area = areas[this.province][this.city][this.area]; if (this.params.province) result.province = provinces[this.province];
} else if (this.mode == 'selector') { if (this.params.city) result.city = citys[this.province][this.city];
result = this.valueArr; if (this.params.area) result.area = areas[this.province][this.city][this.area];
} else if (this.mode == 'multiSelector') { } else if (this.mode == 'selector') {
result = this.valueArr; result = this.valueArr;
} } else if (this.mode == 'multiSelector') {
if (event) this.$emit(event, result); result = this.valueArr;
this.close(); }
if (event) this.$emit(event, result);
this.close();
uni.hideLoading()
}, 1000);
} }
} }
} }
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
</view> </view>
</view> </view>
<view v-if="stepNumber==0" class="jz_LineDetaSC"> <view v-if="stepNumber==0&&couponList.length>0" class="jz_LineDetaSC">
<view class="jz_LineDetaSCL"> <view class="jz_LineDetaSCL">
<view class="jz_LineDetaSCLDl"> <view class="jz_LineDetaSCLDl">
<view>¥</view> <view>¥</view>
...@@ -160,7 +160,7 @@ ...@@ -160,7 +160,7 @@
</view> </view>
</view> </view>
<view class="jz_LineDetaQTS" v-if="stepNumber==0"> <view class="jz_LineDetaQTS" v-if="stepNumber==0&&couponList.length>0">
<img class="jz_LineDetaQTSImg" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638732463534129379.png" /> <img class="jz_LineDetaQTSImg" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638732463534129379.png" />
<view class="jz_LineDetaQTSText"> <view class="jz_LineDetaQTSText">
<view>完成首单,即可获得</view> <view>完成首单,即可获得</view>
......
...@@ -422,7 +422,16 @@ ...@@ -422,7 +422,16 @@
</view> </view>
</view> </view>
<view class="empty-block"></view> <view class="empty-block"></view>
<coupon v-if="couponList.length > 0 && showCoupon" :price="price" :list="couponList" :current="useCouponId" @close="closeCouponHandler" :current-price="realCurrentPriceInfo" :order="orderMsg"></coupon> <coupon v-if="couponList.length > 0 && showCoupon" :price="price" :list="couponList" :current="useCouponId" @close="closeCouponHandler" :current-price="realCurrentPriceInfo" :order="orderMsg"></coupon>
<!-- <coupon v-if="couponList.length > 0 && showCoupon"
:list="couponList"
:current="useCouponId"
:multiple="multipleChosenIds"
@close="closeCouponHandler"
:current-price="realCurrentPriceInfo" :order="orderMsg"></coupon> -->
<view style="padding: 50rpx 40rpx" v-if="tips != ''"> <view style="padding: 50rpx 40rpx" v-if="tips != ''">
<view class="big-title"> <view class="big-title">
<text>重要提示</text> <text>重要提示</text>
...@@ -529,7 +538,8 @@ ...@@ -529,7 +538,8 @@
customer: {}, customer: {},
CreateBy: 0, CreateBy: 0,
showPz:false, showPz:false,
pzCoupon:null pzCoupon:null,
multipleChosenIds: [],
}; };
}, },
created() { created() {
...@@ -572,18 +582,43 @@ ...@@ -572,18 +582,43 @@
}, },
closeCouponHandler(e) { closeCouponHandler(e) {
if (e != -1) { if (e != -1) {
this.useCouponId = e; if(e instanceof Array){//叠加使用优惠券
if(this.useCouponId){ this.multipleChosenIds = e
this.currentCoupon = this.couponList.find(x => x.id == this.useCouponId) let TotalDiscountAmount = 0
if (this.currentCoupon.couponsType == 1) { this.useCouponId = 1
this.currentCoupon.discountMoney = this.currentCoupon.denomination this.couponList.forEach(x=>{
} else { let findIndex = this.multipleChosenIds.findIndex(y=>x.id==y)
this.currentCoupon.discountMoney = (parseFloat(this.price) * (1 - parseFloat(this.currentCoupon.denomination / 10))) if(findIndex!=-1){
.toFixed(2) let discountMoney = 0
} if(x.couponsType==1){
discountMoney = x.denomination
}else{
discountMoney = (parseFloat(this.price) * (1 - parseFloat(x.denomination / 10)))
.toFixed(2)
}
TotalDiscountAmount += discountMoney
}
})
if(TotalDiscountAmount)this.currentCoupon.discountMoney = TotalDiscountAmount
else this.currentCoupon.discountMoney = 0
}else{ }else{
this.currentCoupon.discountMoney = 0 this.useCouponId = e;
if(this.useCouponId){
this.currentCoupon = this.couponList.find(x => x.id == this.useCouponId)
if (this.currentCoupon.couponsType == 1) {
this.currentCoupon.discountMoney = this.currentCoupon.denomination
} else {
this.currentCoupon.discountMoney = (parseFloat(this.price) * (1 - parseFloat(this.currentCoupon.denomination / 10)))
.toFixed(2)
}
}else{
this.currentCoupon.discountMoney = 0
}
} }
}else{
this.multipleChosenIds = []
this.currentCoupon.discountMoney = 0
this.useCouponId = 0
} }
this.showCoupon = false; this.showCoupon = false;
}, },
...@@ -619,6 +654,13 @@ ...@@ -619,6 +654,13 @@
(res) => { (res) => {
console.log("coupon_post_GetUserCanUseCouponList", res); console.log("coupon_post_GetUserCanUseCouponList", res);
if (res.resultCode == 1) { if (res.resultCode == 1) {
let arrList = function(list){
list.forEach(x=>{
x.checkId=0
x.check=false
})
}
arrList(res.data)
this.couponList = res.data this.couponList = res.data
this.calcPzCouponHandler() this.calcPzCouponHandler()
} }
...@@ -846,7 +888,12 @@ ...@@ -846,7 +888,12 @@
} else { } else {
price = this.currentPriceInfo.b2CPrice; price = this.currentPriceInfo.b2CPrice;
} }
let CouponAllotIds = ''
if(this.multipleChosenIds.length>0){
CouponAllotIds = this.multipleChosenIds.join(',')
}else{
CouponAllotIds = this.useCouponId > 0 ? this.currentCoupon.id.toString() : ''
}
let msg = { let msg = {
OrderId: 0, OrderId: 0,
TCID: this.currentPriceInfo.tcid, TCID: this.currentPriceInfo.tcid,
...@@ -859,7 +906,7 @@ ...@@ -859,7 +906,7 @@
IsIntermodal: 2, IsIntermodal: 2,
Unit_Price: price, Unit_Price: price,
TC_Price: price, TC_Price: price,
CouponAllotIds: this.useCouponId > 0 ? this.currentCoupon.id.toString() : '', CouponAllotIds: CouponAllotIds,
ManNum: this.orderMsg.ManNum, ManNum: this.orderMsg.ManNum,
ChirdNum: this.orderMsg.ChirdNum, ChirdNum: this.orderMsg.ChirdNum,
ChirdNeedBedNum: this.orderMsg.ChirdNeedBedNum, ChirdNeedBedNum: this.orderMsg.ChirdNeedBedNum,
......
...@@ -159,6 +159,8 @@ ...@@ -159,6 +159,8 @@
changeHandler(val) { changeHandler(val) {
if (val == "") { if (val == "") {
this.loadSearch = false; this.loadSearch = false;
this.msg.pageIndex = 1;
this.g = []
} }
}, },
tagClickHandler(val) { tagClickHandler(val) {
...@@ -180,17 +182,23 @@ ...@@ -180,17 +182,23 @@
this.searchHistory.unshift(val); this.searchHistory.unshift(val);
uni.setStorageSync("search_his", this.searchHistory); uni.setStorageSync("search_his", this.searchHistory);
this.page = 1; this.page = 1;
this.msg.pageIndex = 1;
this.g = []; this.g = [];
this.msg.searchKey=val; this.msg.searchKey=val;
this.loadSearch = true; this.loadSearch = true;
this.init(); this.init(1);
} else { } else {
this.msg.searchKey = ""; this.msg.searchKey = "";
this.loadSearch = false; this.loadSearch = false;
this.msg.pageIndex = 1;
this.g=[]
} }
}, },
init() { init(type) {
this.g=[]; if (type == 1) {
this.g = [];
this.msg.pageIndex = 1;
}
uni.showLoading({ uni.showLoading({
title:'加载中', title:'加载中',
icon:'none' icon:'none'
...@@ -201,8 +209,10 @@ ...@@ -201,8 +209,10 @@
res => { res => {
uni.hideLoading(); uni.hideLoading();
if (res.resultCode == 1) { if (res.resultCode == 1) {
this.g = res.data.pageData; this.g = this.g.concat(res.data.pageData);
this.page_count = res.data.pageCount; this.page_count = res.data.pageCount;
this.status = "loadmore";
if(this.page_count==1) this.status = "nomore";
} }
}, },
null null
...@@ -268,7 +278,8 @@ ...@@ -268,7 +278,8 @@
if (this.page < this.page_count) { if (this.page < this.page_count) {
if (!this.loading) { if (!this.loading) {
this.status = "loading"; this.status = "loading";
this.page++; this.page = 1;
this.msg.pageIndex++;
this.init(); this.init();
} }
} else { } else {
......
<template> <template>
<view class="jz_LineDetail" v-if="dataList.Name"> <view class="jz_LineDetail" v-if="dataList.Name">
<scroll-view scroll-y="true" style="height: 1px; flex: 1; box-sizing: border-box" @scroll="scroll"> <scroll-view scroll-y="true" style="height: 1px; flex: 1; box-sizing: border-box;" @scroll="scroll">
<view class="jz_TopImg"> <view class="jz_TopImg">
<view class="media" :style="{ opacity: 100 - boxOption + '%' }"> <view class="media" :style="{ opacity: 100 - boxOption + '%' }">
<u-swiper :list="[dataList.CoverImageList[0]]" :effect3d="false" :height="535" :interval="5000" :border-radius="0" <u-swiper :list="[dataList.CoverImageList[0]]" :effect3d="false" :height="535" :interval="5000" :border-radius="0"
...@@ -68,6 +68,26 @@ ...@@ -68,6 +68,26 @@
</view> </view>
<view class="line-flex col" style="padding: 30rpx; background: #fff;margin-top: 20rpx"
v-if="createBy==0&&SaleList&&SaleList.length>1"
@click="showSalePreviwe=true">
<text style="font-size: 28rpx; color: #111; font-weight: 500">销售</text>
<text style="
font-size: 22rpx;
color: #999;
margin-left: 30rpx;
flex: 1;
"></text>
<view class="SaleNameTetx">
<view>
<text v-if="SaleName">{{ SaleName }}</text>
<text v-else style="color: #999">
请选择
</text>
</view>
<u-icon name="arrow-down" size="24"></u-icon>
</view>
</view>
<view class="visaDetailDesBox"> <view class="visaDetailDesBox">
<view class="visaDetailDes"> <view class="visaDetailDes">
<view class="visaDetailDesTitle">签证说明</view> <view class="visaDetailDesTitle">签证说明</view>
...@@ -75,7 +95,7 @@ ...@@ -75,7 +95,7 @@
<view class="row-sbas-n visaDetailNumBox"> <view class="row-sbas-n visaDetailNumBox">
<view class="visaDetailNum active1 col"> <view class="visaDetailNum active1 col">
<view>办理时长</view> <view>办理时长</view>
<view>收齐材料后{{dataList.ManageDuration}}个工作日</view> <view>收齐材料后{{dataList.ManageDuration?dataList.ManageDuration:'-'}}个工作日</view>
</view> </view>
<view class="visaDetailNum active2 col"> <view class="visaDetailNum active2 col">
<view>入境次数</view> <view>入境次数</view>
...@@ -89,35 +109,36 @@ ...@@ -89,35 +109,36 @@
<view class="row-sbas-n visaDetailNumBox"> <view class="row-sbas-n visaDetailNumBox">
<view class="visaDetailNum active3 col"> <view class="visaDetailNum active3 col">
<view>停留天数</view> <view>停留天数</view>
<view>{{ dataList.StayDays }}天</view> <view>{{ dataList.StayDays?dataList.StayDays+'天':'-' }}</view>
</view> </view>
<view class="visaDetailNum active4 col"> <view class="visaDetailNum active4 col">
<view>签证效期</view> <view>签证效期</view>
<view>{{ dataList.VisaValidity }}</view> <view>{{ dataList.VisaValidity?dataList.VisaValidity:'-' }}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="visaDetailDesTitle">费用包含</view> <view class="visaDetailDesTitle">费用包含</view>
<view class="jz_TripMain"> <view v-if="dataList.VisaProductInfo.FeeInclude" class="jz_TripMain">
<rich-text :nodes="dataList.VisaProductInfo.FeeInclude"></rich-text> <rich-text :nodes="dataList.VisaProductInfo.FeeInclude"></rich-text>
</view> </view>
<view class="visaDetailLin" style="margin-top: 33rpx;margin-bottom: 18rpx;"></view> <view class="visaDetailLin" style="margin-top: 33rpx;margin-bottom: 18rpx;"></view>
<view class="visaDetailDesTitle">费用不含</view> <view class="visaDetailDesTitle">费用不含</view>
<view class="jz_TripMain"> <view v-if="dataList.VisaProductInfo.FeeNonInclude" class="jz_TripMain">
<rich-text :nodes="dataList.VisaProductInfo.FeeNonInclude"></rich-text> <rich-text :nodes="dataList.VisaProductInfo.FeeNonInclude"></rich-text>
</view> </view>
<view class="visaDetailLin" style="margin-top: 33rpx;margin-bottom: 18rpx;"></view> <view class="visaDetailLin" style="margin-top: 33rpx;margin-bottom: 18rpx;"></view>
<view class="visaDetailDesTitle" style="padding: 40rpx 0 34rpx 0;">签证材料</view> <view class="visaDetailDesTitle" style="padding: 40rpx 0 34rpx 0;">签证材料</view>
<view class="jz_TripMain" style="background: #F9F8F6; <view v-if="dataList.VisaProductInfo.VisaMaterials" class="jz_TripMain" style="background: #F9F8F6;
border-radius: 12rpx;padding: 39rpx 30rpx;"> border-radius: 12rpx;padding: 39rpx 30rpx;">
<rich-text :nodes="dataList.VisaProductInfo.VisaMaterials"></rich-text> <rich-text :nodes="dataList.VisaProductInfo.VisaMaterials"></rich-text>
</view> </view>
<view class="visaDetailDesTitle" style="padding: 50rpx 0 34rpx 0;">温馨提示</view> <view class="visaDetailDesTitle" style="padding: 50rpx 0 34rpx 0;">温馨提示</view>
<view class="jz_TripMain" style="background: #F9F8F6; <view v-if="dataList.VisaProductInfo.WarmTip" class="jz_TripMain" style="background: #F9F8F6;
border-radius: 12rpx;padding: 39rpx 30rpx;"> border-radius: 12rpx;padding: 39rpx 30rpx;">
<rich-text :nodes="dataList.VisaProductInfo.WarmTip"></rich-text> <rich-text :nodes="dataList.VisaProductInfo.WarmTip"></rich-text>
</view> </view>
</view> </view>
</view> </view>
...@@ -137,10 +158,10 @@ ...@@ -137,10 +158,10 @@
</view> </view>
<view style="display: flex; align-items: center"> <view style="display: flex; align-items: center">
<!-- #ifdef MP-WEIXIN --> <!-- #ifdef MP-WEIXIN -->
<button @click="downloadTripPlanHandler" class="jz_ConButton" v-if="d.length>3"> <button @click="dataList.VisaProductInfo.DownloadMaterialsFileList.length>1?showDownload=true:downloadTripPlanHandler(dataList.VisaProductInfo.DownloadMaterialsFileList[0])" class="jz_ConButton" v-if="dataList.VisaProductInfo&&dataList.VisaProductInfo.DownloadMaterialsFileList.length>0">
<img style="width: 36rpx; height: 38rpx" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1695376860000_131.png" <img style="width: 36rpx; height: 38rpx" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1695376860000_131.png"
alt="" /> alt="" />
<view style="color: #111111; font-size: 22rpx">下载行程</view> <view style="color: #111111; font-size: 22rpx">下载文件</view>
</button> </button>
<!-- #endif --> <!-- #endif -->
<!-- #ifdef MP-ALIPAY --> <!-- #ifdef MP-ALIPAY -->
...@@ -151,6 +172,7 @@ ...@@ -151,6 +172,7 @@
<view style="color: #111111; font-size: 22rpx">客服</view> <view style="color: #111111; font-size: 22rpx">客服</view>
</button> </button>
<!-- #endif --> <!-- #endif -->
<view class="jz_OrderNow" @click="goReserce">立即预定</view> <view class="jz_OrderNow" @click="goReserce">立即预定</view>
</view> </view>
</view> </view>
...@@ -188,6 +210,37 @@ ...@@ -188,6 +210,37 @@
}" @click="showSalePreviwe=false">确定</u-button> }" @click="showSalePreviwe=false">确定</u-button>
</view> </view>
</u-popup> </u-popup>
<u-popup v-model="showDownload" mode="bottom" border-radius="50" length="60%" :safe-area-inset-bottom="true">
<view>
<view style="font-size: 17px;text-align: center;padding: 20px 0;">
下载签证文件
</view>
<scroll-view scroll-x="true" style="width: 100%;height: 43vh;">
<view class="SaleBox">
<view v-for="(item,index) in dataList.VisaProductInfo.DownloadMaterialsFileList"
:key="index"
class="SaleText" @click="downloadTripPlanHandler(item)">
<view>{{ item.Name }}</view>
<view>
<button class="jz_ConButton row items-center" style="height: 100%;" v-if="dataList.VisaProductInfo&&dataList.VisaProductInfo.DownloadMaterialsFileList.length>0">
<img style="width: 36rpx; height: 38rpx" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1695376860000_131.png"
alt="" />
</button>
</view>
</view>
</view>
</scroll-view>
<u-button size="80" :ripple="true" shape="circle" :custom-style="{
backgroundColor: '#333',
height: '80rpx',
color: '#fff',
fontSize: '14px',
margin: '0 auto',
width: '90vw',
}" @click="showDownload=false">确定</u-button>
</view>
</u-popup>
</view> </view>
</template> </template>
<script> <script>
...@@ -201,7 +254,8 @@ ...@@ -201,7 +254,8 @@
}, },
data() { data() {
return { return {
pageTitle: "线路详情", showDownload: false,
pageTitle: "签证详情",
showStartCities: false, showStartCities: false,
crCount: 1, crCount: 1,
etCount: 0, etCount: 0,
...@@ -374,6 +428,49 @@ ...@@ -374,6 +428,49 @@
this.mainColor = this.$uiConfig.mainColor; this.mainColor = this.$uiConfig.mainColor;
}, },
methods: { methods: {
downloadTripPlanHandler(item) {
if (this.isDownloading) return;
let that = this
uni.showLoading({
title: '这可能需要30秒,请耐心等待'
})
this.isDownloading = true
let url = item.Url
let fileName = `${item.Name.replace(/\s+/g,"").replaceAll("/","")}`
let suffix = item.Url.split('.')
console.log(fileName, "fileName");
const filePath = wx.env.USER_DATA_PATH + `/${fileName}.${suffix[suffix.length-1]}`
uni.downloadFile({
url: url,
filePath,
success: (res) => {
wx.openDocument({
filePath: filePath,
showMenu: true,
success: fres => {
uni.hideLoading()
that.isDownloading = false
},
fail: fres => {
console.log('downloadTripPlanHandler_打开失败', fres)
that.downloadFailed('打开失败,请重试。如果仍然失败,请联系销售索要签证文件')
},
})
},
fail(err) {
console.log("downloadTripPlanHandler_fail", err)
that.downloadFailed('下载失败,请重试。如果仍然失败,请联系销售索要签证文件' + err)
},
});
},
downloadFailed(msg) {
uni.showToast({
icon: 'none',
title: msg
})
this.isDownloading = false;
},
calcPzCouponHandler(){ calcPzCouponHandler(){
this.couponList.forEach((x)=>{ this.couponList.forEach((x)=>{
if(x.expansionModel.denomination>0){ if(x.expansionModel.denomination>0){
...@@ -566,9 +663,16 @@ ...@@ -566,9 +663,16 @@
this.is_show_auth = 1; this.is_show_auth = 1;
return; return;
} }
if (this.SaleList&&this.SaleList.length>1&&this.SaleId==0&&this.createBy==0) {
uni.showToast({
title: "请选择销售",
icon: "none",
});
this.showSalePreviwe = true;
return;
}
uni.navigateTo({ uni.navigateTo({
url: "/pages/visa/visa_Reserve?id=" +this.delMsg.Pid, url: "/pages/visa/visa_Reserve?id=" +this.delMsg.Pid+'&CreateBy=' +(this.createBy?this.createBy:this.SaleId),
}); });
}, },
}, },
...@@ -1282,6 +1386,7 @@ ...@@ -1282,6 +1386,7 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
border-bottom: 1rpx solid #eee; border-bottom: 1rpx solid #eee;
overflow: hidden;
} }
.jz_LineDetaCZ{ .jz_LineDetaCZ{
height: 36rpx; height: 36rpx;
...@@ -1562,6 +1667,7 @@ ...@@ -1562,6 +1667,7 @@
.visaDetailDesBox{ .visaDetailDesBox{
background: #fff; background: #fff;
margin-top: 20rpx; margin-top: 20rpx;
padding-bottom: 40rpx;
} }
.visaDetailDes{ .visaDetailDes{
padding: 0 41rpx; padding: 0 41rpx;
......
<template> <template>
<scroll-view :scroll-y="true" @scroll="scrollHandler" @scrolltoupper="scrollTopHandler" <view>
@scrolltolower="lower" style="height: 100vh">
<!-- <view class="headStatus" v-if="scrollTop > 50" :style="[
headStyle,
{
zIndex: scrollTop < 10 ? 'unset' : 2,
opacity: scrollTop < 10 ? '100' : scrollTop,
},
]">
<view class="title" v-if="scrollTop > 50">{{ pageTitle }}</view>
</view> -->
<view class="headStatus column" v-if="scrollTop > 20" style="background: #F3F1EF;">
<view class="visa_search relative"
:style="[
headStyle,
{
zIndex: scrollTop < 10 ? 'unset' : 2,
opacity: scrollTop < 10 ? '100' : scrollTop,
},
]">
<view class="search-box" style="padding: 0 30rpx;top: 0;">
<view style="width: 1px; flex: 1;">
<u-search placeholder="输入目的地" v-model="msg.Name" @search="getList(1)" input-align="left" :value="msg.Name"
text-color="#111" bg-color="rgba(0,0,0,0)" :show-action="false"></u-search>
</view>
</view>
</view>
<view style="padding: 0 30rpx 0 30rpx;">
<view class="uDropdownBox row-sbas-n items-center" style="margin-top: 0;border-bottom: 1rpx solid #F3F1EF;">
<view class="uDropdownText col row justify-center" style="text-align: center;"
v-for="(item,index) in optionsTitle" @click="clickType(index)"
:class="[showType==index?'active':'']">
<text>{{ item }}</text>
<u-icon style="margin-left: 5rpx;" :name="showType==index?'arrow-up':'arrow-down'"
:color="showType==index?'black':'#c0c4cc'" size="30" />
</view>
</view>
</view>
</view>
<view class="visa_Box column"> <view class="visa_Box column">
<view class="visa_search relative"> <view class="visa_search">
<view class="search-box" style="margin-top: 24rpx;"> <view class="search-box" style="margin-top: 24rpx;">
<!-- @click="showAddress=true" -->
<!-- <view class="date" >
<u-icon name="location" color="#B99846" size="28"></u-icon>
<text style="margin-left: 20rpx;color: #B99846;">{{AddressName}}</text>
</view>
<view style="width: 1px;height: 26rpx;margin-right: 10rpx; background: #E5E3E1;flex-shrink: 0;">
<view style="opacity: 0;">
1
</view>
</view> -->
<view style="width: 1px; flex: 1;"> <view style="width: 1px; flex: 1;">
<u-search placeholder="输入目的地" v-model="msg.Name" @search="getList(1)" input-align="left" :value="msg.Name" <u-search placeholder="输入目的地" v-model="msg.Name" @search="getList(1)" input-align="left" :value="msg.Name"
text-color="#111" bg-color="rgba(0,0,0,0)" :show-action="false"></u-search> text-color="#111" bg-color="rgba(0,0,0,0)" :show-action="false"></u-search>
...@@ -59,16 +10,18 @@ ...@@ -59,16 +10,18 @@
</view> </view>
</view> </view>
<view class="visa_country hidden row"> <view class="visa_country hidden row">
<view class="visa_countryL column" style="padding: 10rpx 0 0 0;"> <view class="visa_countryL column"
:class="[msg.VisaCountryId==0?'':'active']" style="padding: 20rpx 0 0 0;"
@click="getVisaCountry({Id:msg.VisaCountryId})">
<view>所有</view> <view>所有</view>
<view>目的地</view> <view>目的地</view>
</view> </view>
<view class="col visa_countryR"> <view class="col visa_countryR">
<scroll-view scroll-x :scroll-left="scrollLeft" <scroll-view scroll-x :scroll-left="scrollLeft" show-scrollbar="false"
scroll-with-animation style="white-space: nowrap;width: 570rpx;"> scroll-with-animation style="white-space: nowrap;width: 570rpx;">
<view class="row col"> <view class="row col">
<template v-for="(item,index) in Countrys"> <template v-for="(item,index) in Countrys">
<view class="visa_couRTitle" style="padding: 10rpx 0 10rpx 0;" <view class="visa_couRTitle" style="padding: 30rpx 0 10rpx 0;"
:class="[item.Id==msg.VisaCountryId?'active':'']" :class="[item.Id==msg.VisaCountryId?'active':'']"
:key="index" v-if="item.Id!=0" :key="index" v-if="item.Id!=0"
@click="getVisaCountry(item)"> @click="getVisaCountry(item)">
...@@ -80,10 +33,10 @@ ...@@ -80,10 +33,10 @@
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
<view class="col column"> <view class="col column" style="height:1px">
<view style="padding: 0 30rpx 0 30rpx;"> <view style="padding: 0 30rpx 0 30rpx;">
<view class="uDropdownBox"> <view class="uDropdownBox">
<u-dropdown ref="uDropdown" @open="open" @close="close" active-color="#000" inactive-color="#444"> <u-dropdown ref="uDropdown" @open="open" @close="close" active-color="#B99846" inactive-color="#444">
<u-dropdown-item class="col" v-model="msg.ManagementName" <u-dropdown-item class="col" v-model="msg.ManagementName"
:title="optionsTitle[0]" :options="VisaTypeList" :title="optionsTitle[0]" :options="VisaTypeList"
@change="(index)=>{changeVisaCountry(index,1)}"> @change="(index)=>{changeVisaCountry(index,1)}">
...@@ -94,63 +47,58 @@ ...@@ -94,63 +47,58 @@
</u-dropdown> </u-dropdown>
</view> </view>
</view> </view>
<view class="col column" style="padding: 0 30rpx 31rpx 30rpx;height: 1px; flex: 1;width: 100%;"> <view class="col column" style="padding: 0 30rpx 31rpx 30rpx;overflow: hidden;">
<view class="visaListBox col"> <view class="visaListBox col">
<u-empty v-if="dataList.length==0 && !loading" text="暂无数据" mode="data"></u-empty> <u-empty v-if="dataList.length==0 && !loading" text="暂无数据" mode="data"></u-empty>
<template v-else> <scroll-view v-else :scroll-y="true" :enable-back-to-top="true"
<view class="column"> @scrolltolower="lower"
<!--<scroll-view :scroll-y="true" :enable-back-to-top="true" :enable-flex="true" :style="{ height: '100%' }">
:enable-flex="true" :style="{ height: '100%' }"> </scroll-view>--> <template v-for="(item,index) in dataList">
<template v-for="(item,index) in dataList"> <view class="visaList row" :key="index"
<view class="visaList row" :key="index" @click.stop="goDetail(item)">
@click.stop="goDetail(item)"> <view class="visaListL">
<view class="visaListL"> <image mode="aspectFill" :src="item.newCoverImg"/>
<image mode="aspectFill" :src="item.newCoverImg"/> <text style="position: absolute;left: 0;top: 0;
</view> border-radius: 14rpx 0rpx 14rpx 0rpx;
<view class="visaListR col"> background: #B99846;padding: 4rpx 9rpx;font-size: 20rpx;color: #fff;">
<view class="visaListTitle">{{ item.name }}</view> {{ item.visaType==1?'个签':item.visaType==2?'团签':'' }}
<view class="visaListText row"> </text>
<template v-for="x in item.typeTagList"> </view>
<text :key="index" v-if="x.tagTame"> <view class="visaListR col column">
{{ x.tagTame }} <view class="visaListTitle">{{ item.name }}</view>
</text> <view class="visaListText row">
</template> <template v-for="x in item.typeTagList">
<text :key="index" v-if="item.sendCityName"> <text :key="index" v-if="x.tagTame">
{{ item.sendCityName }}送签 {{ x.tagTame }}
</text>
<text v-if="item.manageDuration" style="background: rgba(23,23,23,0);">
办理时长:{{item.manageDuration}}个工作日
</text> </text>
</view> </template>
<view class="visaListNum row items-center"> <text :key="index" v-if="item.sendCityName">
<view class="visaListNumL row items-center"> {{ item.sendCityName }}送签
</text>
<text v-if="item.manageDuration" style="background: rgba(23,23,23,0);">
办理时长:{{item.manageDuration}}个工作日
</text>
</view>
<view class="col"></view>
<view class="visaListNum row">
<view class="visaListNumL row items-center">
<template v-if="item.bookAdvance">
<image class="inlineblock" mode="widthFix" <image class="inlineblock" mode="widthFix"
style="width: 19rpx;height: 21rpx" style="width: 19rpx;height: 21rpx"
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638750535244017143.png" /> src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638750535244017143.png" />
<text>提前{{item.bookAdvance}}个工作日预订</text> <text>提前{{item.bookAdvance}}预订</text>
</view> </template>
<view class="visaListNumR"> </view>
<text style="font-size: 20rpx;">CNY</text> <view class="visaListNumR">
<text class="price-Num">{{ $utils.getretailer()?item.visaPrice:item.visaB2CPrice }}</text> <text style="font-size: 20rpx;">CNY</text>
<text class="price-stuff" style="font-size: 20rpx;color: rgba(164, 164, 164, 1)"></text> <text class="price-Num">{{ $utils.getretailer()?item.visaPrice:item.visaB2CPrice }}</text>
</view> <text class="price-stuff" style="font-size: 20rpx;color: rgba(164, 164, 164, 1)"></text>
</view> </view>
</view> </view>
</view> </view>
</template> </view>
<!--<view style="padding: 0 25rpx;"> </template>
<u-loadmore </scroll-view>
:status="status"
:load-text="loadText"
:font-size="24"
:margin-top="20"
:margin-bottom="20"
bg-color="#fff"
/>
</view>-->
</view>
</template>
</view> </view>
</view> </view>
</view> </view>
...@@ -160,7 +108,7 @@ ...@@ -160,7 +108,7 @@
<u-picker mode="selector" v-model="showEntryType" :default-selector="[0]" :range="EntryTypeList" @confirm='(e)=>{changeDown(e,2)}' <u-picker mode="selector" v-model="showEntryType" :default-selector="[0]" :range="EntryTypeList" @confirm='(e)=>{changeDown(e,2)}'
range-key="label" @input="showType=null"></u-picker> range-key="label" @input="showType=null"></u-picker>
<auth v-if="showAuth&&is_show_auth==1" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth> <auth v-if="showAuth&&is_show_auth==1" @changeuserinfo="reloadUserinfo" @gbAuth="gbAuth"></auth>
</scroll-view> </view>
</template> </template>
<script> <script>
import auth from "@/components/auth/index.vue"; import auth from "@/components/auth/index.vue";
...@@ -300,6 +248,7 @@ export default { ...@@ -300,6 +248,7 @@ export default {
{GroupId:this.b2bUser.groupId}, {GroupId:this.b2bUser.groupId},
(res) => { (res) => {
if (res.resultCode == 1) { if (res.resultCode == 1) {
res.data.Country = res.data.Country.sort((a,b)=> {return a.Id-b.Id})
let Countrys = res.data.Country let Countrys = res.data.Country
let Country = { let Country = {
Id: 0, Id: 0,
...@@ -483,7 +432,7 @@ export default { ...@@ -483,7 +432,7 @@ export default {
} }
.visa_Box{ .visa_Box{
background: #F3F1EF; background: #F3F1EF;
min-height: 100vh; height: 100vh;
overflow: hidden; overflow: hidden;
} }
.visa_search{ .visa_search{
...@@ -493,15 +442,15 @@ export default { ...@@ -493,15 +442,15 @@ export default {
.search-box { .search-box {
height: 60rpx; height: 60rpx;
background: #FFF; background: #FFF;
border-radius:18rpx; border-radius:12rpx;
display: flex; display: flex;
align-items: center; align-items: center;
padding: 19rpx 30rpx; padding: 19rpx 30rpx;
margin: 0 30rpx; margin: 0 30rpx;
position: absolute; // position: absolute;
bottom: 29rpx; // bottom: 29rpx;
left: 0; // left: 0;
right: 0; // right: 0;
} }
.search-box .date { .search-box .date {
...@@ -516,7 +465,6 @@ export default { ...@@ -516,7 +465,6 @@ export default {
} }
.visa_country{ .visa_country{
padding-left: 34rpx; padding-left: 34rpx;
margin-top: 35rpx;
} }
.visa_countryL{ .visa_countryL{
font-family: PingFang SC; font-family: PingFang SC;
...@@ -528,10 +476,13 @@ export default { ...@@ -528,10 +476,13 @@ export default {
margin-right: 9rpx; margin-right: 9rpx;
letter-spacing: 2rpx; letter-spacing: 2rpx;
} }
.visa_countryL.active{
color: black;
}
.visa_couRTitle{ .visa_couRTitle{
width: 102rpx; width: 102rpx;
text-align: center; text-align: center;
margin-right: 30rpx; margin-right: 0;
margin-left: 30rpx; margin-left: 30rpx;
} }
.visa_couRTitle view{ .visa_couRTitle view{
...@@ -553,7 +504,8 @@ export default { ...@@ -553,7 +504,8 @@ export default {
} }
.visa_couRTitle text{ .visa_couRTitle text{
display: block; display: block;
padding-top: 23rpx; padding-top: 11rpx;
font-size: 22rpx;
} }
.uDropdownBox{ .uDropdownBox{
...@@ -571,6 +523,8 @@ export default { ...@@ -571,6 +523,8 @@ export default {
border-top: 1rpx solid #F3F1EF; border-top: 1rpx solid #F3F1EF;
border-radius: 0 0 22rpx 22rpx; border-radius: 0 0 22rpx 22rpx;
padding-top: 37rpx; padding-top: 37rpx;
padding-bottom: 40rpx;
overflow: hidden;
} }
.visaList{ .visaList{
padding: 0 31rpx; padding: 0 31rpx;
...@@ -581,6 +535,8 @@ export default { ...@@ -581,6 +535,8 @@ export default {
height: 190rpx; height: 190rpx;
overflow: hidden; overflow: hidden;
margin-right: 19rpx; margin-right: 19rpx;
position: relative;
border-radius: 14rpx;
} }
.visaListL image{ .visaListL image{
width: 100%; width: 100%;
...@@ -609,7 +565,8 @@ export default { ...@@ -609,7 +565,8 @@ export default {
font-size: 20rpx; font-size: 20rpx;
} }
.visaListNum{ .visaListNum{
padding-top: 43rpx; justify-content: space-between;
align-items: center;
} }
.visaListNumL text{ .visaListNumL text{
font-family: PingFang SC; font-family: PingFang SC;
...@@ -618,10 +575,6 @@ export default { ...@@ -618,10 +575,6 @@ export default {
color: #080A09; color: #080A09;
margin-left: 10rpx; margin-left: 10rpx;
} }
.visaListNum{
justify-content: space-between;
align-items: end;
}
.visaListNumR{ .visaListNumR{
color: rgba(255, 49, 102, 1); color: rgba(255, 49, 102, 1);
} }
...@@ -634,7 +587,7 @@ export default { ...@@ -634,7 +587,7 @@ export default {
color: #444; color: #444;
} }
.uDropdownText.active text{ .uDropdownText.active text{
color: black; color: #B99846;
font-weight: bold; font-weight: bold;
} }
</style> </style>
\ No newline at end of file
...@@ -317,12 +317,14 @@ ...@@ -317,12 +317,14 @@
font-weight: 800; font-weight: 800;
font-size: 28rpx; font-size: 28rpx;
color: #080A09; color: #080A09;
padding-bottom: 22rpx;
} }
.visaProduct_l{ .visaProduct_l{
width: 160rpx; width: 160rpx;
height: 121rpx; min-height: 121rpx;
border-radius: 13rpx; border-radius: 13rpx;
overflow: hidden; overflow: hidden;
margin-right: 18rpx;
} }
.visaProduct_r{ .visaProduct_r{
letter-spacing: 2rpx; letter-spacing: 2rpx;
...@@ -397,6 +399,9 @@ ...@@ -397,6 +399,9 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.addPnum{
padding: 9rpx 10rpx;
}
</style> </style>
<template> <template>
...@@ -430,19 +435,20 @@ ...@@ -430,19 +435,20 @@
<view class="visaCustomerInfor_Title">客户资料</view> <view class="visaCustomerInfor_Title">客户资料</view>
<view class="row visaProduct"> <view class="row visaProduct">
<view class="visaProduct_l"> <view class="visaProduct_l">
<image style="width: 100%;" mode="aspectFill" :src="dataList.CoverImageList[0]"></image> <image style="width: 160rpx;height: 100%;" mode="aspectFill" :src="dataList.CoverImageList[0].Url"></image>
</view> </view>
<view class="col column visaProduct_r"> <view class="col column visaProduct_r">
<view class="visaProduct_rTitle">{{ dataList.Name }}</view> <view class="visaProduct_rTitle">{{ dataList.Name }}</view>
<view class="row visaProduct_rTBox" style="padding: 17rpx 0 11rpx 0;"> <view class="row visaProduct_rTBox" style="padding: 17rpx 0 11rpx 0;"
<view class=""> v-if="dataList.SendCityName||dataList.ManageDuration">
<view class="" v-if="dataList.SendCityName" style="padding-right: 29rpx;">
送签地:<text class="visaProduct_rColor">{{ dataList.SendCityName }}</text> 送签地:<text class="visaProduct_rColor">{{ dataList.SendCityName }}</text>
</view> </view>
<view class="visaProduct_rColor" style="padding-left: 29rpx;"> <view class="visaProduct_rColor" v-if="dataList.ManageDuration">
收齐资料后需{{ dataList.ManageDuration }}个工作日 收齐资料后需{{ dataList.ManageDuration }}个工作日
</view> </view>
</view> </view>
<view class="visaProduct_rTBox"> <view class="visaProduct_rTBox" v-if="dataList.VisaValidity">
有效期:<text class="visaProduct_rColor">{{ dataList.VisaValidity }}</text> 有效期:<text class="visaProduct_rColor">{{ dataList.VisaValidity }}</text>
</view> </view>
</view> </view>
...@@ -452,18 +458,19 @@ ...@@ -452,18 +458,19 @@
<view class="visaProductNum_Title">人数</view> <view class="visaProductNum_Title">人数</view>
<view class="row-sbas-n items-center"> <view class="row-sbas-n items-center">
<view class="row-sbas-n items-center"> <view class="row-sbas-n items-center">
<view style="width: 27rpx;height: 27rpx;" @click="editNum(1)"> <view class="addPnum" @click="orderMsg.AdultPeopleNum>1?editNum(1):''">
<image style="width: 27rpx;height: 27rpx;display: block;" <image v-if="orderMsg.AdultPeopleNum>1" style="width: 27rpx;height: 27rpx;display: block;"
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638751245939665786.png" /> src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638751245939665786.png" />
<image v-else style="width: 27rpx;height: 27rpx;display: block;"
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638755711218891689.png" />
</view> </view>
<view class="col row items-center textCenter"> <view class="col row items-center textCenter">
<!-- {{orderMsg.AdultPeopleNum}} -->
<input type="number" class="visaProductTetx visaProduct_rColor" <input type="number" class="visaProductTetx visaProduct_rColor"
v-model="orderMsg.AdultPeopleNum" v-model="orderMsg.AdultPeopleNum"
disabled disabled
placeholder="输入" /> placeholder="输入" />
</view> </view>
<view style="width: 27rpx;height: 27rpx;" @click="editNum(2)"> <view class="addPnum" @click="editNum()">
<image style="width: 27rpx;height: 27rpx;display: block;" <image style="width: 27rpx;height: 27rpx;display: block;"
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638751245974558349.png" /> src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638751245974558349.png" />
</view> </view>
...@@ -474,7 +481,7 @@ ...@@ -474,7 +481,7 @@
<view class="visaProductNum visaProductNumR column"> <view class="visaProductNum visaProductNumR column">
<view class="visaProductNum_Title">入境日期</view> <view class="visaProductNum_Title">入境日期</view>
<picker class="visaProductTetx" mode="date" <picker class="visaProductTetx" mode="date"
:value="orderMsg.EnterCountryTime" @change="bindDateChange" v-model="orderMsg.EnterCountryTime" @change="bindDateChange"
> >
<view class="row-sbas-n items-center"> <view class="row-sbas-n items-center">
<view class="visaProductTetx"> <view class="visaProductTetx">
...@@ -551,7 +558,7 @@ ...@@ -551,7 +558,7 @@
<input class="visaProductTetx" v-model="orderMsg.Receiver" placeholder="输入收件人"/> <input class="visaProductTetx" v-model="orderMsg.Receiver" placeholder="输入收件人"/>
</view> </view>
</view> </view>
<view class="row visaProductNumR col" style="width: auto;background: #F7F8FA;"> <view class="row visaProductNumR col" style="width: auto;background: #F7F8FA;border-radius: 14rpx">
<view class="visaProductNum column" style="width: 180rpx;"> <view class="visaProductNum column" style="width: 180rpx;">
<view class="visaProductNum_Title">国家/地区</view> <view class="visaProductNum_Title">国家/地区</view>
<view class="row-sbas-n items-center" @click="CountryType=2,showCountry=true"> <view class="row-sbas-n items-center" @click="CountryType=2,showCountry=true">
...@@ -728,6 +735,7 @@ ...@@ -728,6 +735,7 @@
</template> </template>
<script> <script>
import json from "../airTicket/components/sign/day.js";
import coupon from '@/components/coupon/index'; import coupon from '@/components/coupon/index';
import { gegerateDates,getBeforeDate,getDateWeek } from "../airTicket/dates.js"; import { gegerateDates,getBeforeDate,getDateWeek } from "../airTicket/dates.js";
export default { export default {
...@@ -796,7 +804,6 @@ ...@@ -796,7 +804,6 @@
cityList: [], cityList: [],
tipsText: '', tipsText: '',
userInfo:{}, userInfo:{},
startDate: '2025-03-25'
}; };
}, },
created() { created() {
...@@ -837,8 +844,7 @@ ...@@ -837,8 +844,7 @@
editNum(type) { editNum(type) {
if (type == 1) { if (type == 1) {
if(this.orderMsg.AdultPeopleNum>1)this.orderMsg.AdultPeopleNum--; if(this.orderMsg.AdultPeopleNum>1)this.orderMsg.AdultPeopleNum--;
} }else {
if (type == 2) {
this.orderMsg.AdultPeopleNum++; this.orderMsg.AdultPeopleNum++;
} }
this.calcMoney() this.calcMoney()
...@@ -850,6 +856,7 @@ ...@@ -850,6 +856,7 @@
"level": 2 "level": 2
}, r => { }, r => {
if (r.resultCode == 1) { if (r.resultCode == 1) {
this.cityList = []
for (let i = 0; i < r.data.length; i++) { for (let i = 0; i < r.data.length; i++) {
let Count = r.data[i] let Count = r.data[i]
let obj = { let obj = {
...@@ -877,6 +884,8 @@ ...@@ -877,6 +884,8 @@
this.orderMsg.ReceiverProvince = this.provinceList[i].Name this.orderMsg.ReceiverProvince = this.provinceList[i].Name
this.orderMsg.ReceiverProvinceId = this.provinceList[i].ID this.orderMsg.ReceiverProvinceId = this.provinceList[i].ID
this.optionsTitle[2] = this.provinceList[i].Name this.optionsTitle[2] = this.provinceList[i].Name
this.orderMsg.ReceiverCity = ''
this.optionsTitle[3] = ''
this.getCity() this.getCity()
} }
if(type == 4){ if(type == 4){
...@@ -939,10 +948,10 @@ ...@@ -939,10 +948,10 @@
this.customer.PhoneCountryStr = "+" + this.customer.PhoneCountry; this.customer.PhoneCountryStr = "+" + this.customer.PhoneCountry;
}, },
bindDateChange(e) { bindDateChange(e) {
let dates = getBeforeDate(0, new Date()) let dates = getBeforeDate(-this.dataList.BookAdvance, new Date())
if(e.detail.value<=dates){ if(e.detail.value<dates){
uni.showToast({ uni.showToast({
title: `请选择大于今天的日期`, title: `请选择大于等于${dates}的日期`,
icon: "none", icon: "none",
}); });
return; return;
...@@ -1046,6 +1055,9 @@ ...@@ -1046,6 +1055,9 @@
uni.hideLoading(); uni.hideLoading();
if (res.resultCode == 1) { if (res.resultCode == 1) {
this.dataList = res.data this.dataList = res.data
let dates = getBeforeDate(-res.data.BookAdvance, new Date())
this.orderMsg.EnterCountryTime = dates
this.calcMoney() this.calcMoney()
// this.getCouponActivityHandler(res.data) // this.getCouponActivityHandler(res.data)
} }
...@@ -1117,6 +1129,10 @@ ...@@ -1117,6 +1129,10 @@
this.tipsText = '请输入电话' this.tipsText = '请输入电话'
return; return;
} }
if (this.customer.contactNumber&&this.customer.contactNumber.length<11) {
this.tipsText = '请输入正确的电话'
return;
}
if (this.customer.Mailbox == "") { if (this.customer.Mailbox == "") {
this.tipsText = '请输入邮箱地址' this.tipsText = '请输入邮箱地址'
uni.showToast({ uni.showToast({
...@@ -1125,6 +1141,15 @@ ...@@ -1125,6 +1141,15 @@
}); });
return; return;
} }
let email = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/
if (!email.test(this.customer.Mailbox)) {
this.tipsText = '请输入正确的邮箱地址'
uni.showToast({
title: `请输入正确的邮箱地址`,
icon: "none",
});
return;
}
if (this.orderMsg.Receiver == "") { if (this.orderMsg.Receiver == "") {
uni.showToast({ uni.showToast({
title: `请输入收件人`, title: `请输入收件人`,
...@@ -1146,6 +1171,13 @@ ...@@ -1146,6 +1171,13 @@
}); });
return; return;
} }
if (this.orderMsg.ReceiverPhone&&this.orderMsg.ReceiverPhone.length<11) {
uni.showToast({
title: `请输入正确的收件人电话`,
icon: "none",
});
return;
}
if (this.orderMsg.RelationPhoneType == "") { if (this.orderMsg.RelationPhoneType == "") {
uni.showToast({ uni.showToast({
title: `请选择收件人国家/地区`, title: `请选择收件人国家/地区`,
...@@ -1188,7 +1220,7 @@ ...@@ -1188,7 +1220,7 @@
ChildPeopleNum: '',//小孩 ChildPeopleNum: '',//小孩
TotalPrice: price,//总价 TotalPrice: price,//总价
CustomerId: this.customer.customerId,//客户id CustomerId: this.customer.customerId,//客户id
CreateBy: 0,//销售 CreateBy: this.CreateBy,//销售
OrderSource: 5,//1-ERP,2-B2B订单,3-B2C订单,4wap 5同业 6支付宝 OrderSource: 5,//1-ERP,2-B2B订单,3-B2C订单,4wap 5同业 6支付宝
EnterCountryTime: this.orderMsg.EnterCountryTime,//入境时间 EnterCountryTime: this.orderMsg.EnterCountryTime,//入境时间
GuestList: [],//this.guests GuestList: [],//this.guests
......
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