| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227 | <template>	<view class="orderDet" style="padding-bottom: 200upx;" v-if="XCXIsSelect !='否'">		<view class="padding-sm">			<view class="bg  u--fillet-skeleton" style="border-radius:24rpx;position: relative;">				<image style="width: 100%;height: 30rpx;position: absolute;left: 0;bottom: -10rpx;" src="@/static/img/line.png" mode=""></image>				<view class="flex align-center padding" @click="getAddressList()">					<view class="u-flex-1  margin-left-xs">						<view v-if="!detailaddress">请选择地址</view>						<view v-else>							<view style="color: #333333;font-size: 32rpx;font-weight: bold;">{{name}}<text									class="margin-left-sm">{{mobile}}</text>							</view>							<view class="" style="color: #999999;margin-top: 8rpx;">								{{province}}/{{city}}/{{district}}/{{detailaddress}}							</view>						</view>					</view>					<u-icon name="arrow-right" color="#999999"></u-icon>				</view>			</view>			<view class="bg radius margin-top u-skeleton-fillet" style="padding: 16rpx;">				<view class="flex justify-around align-center">					<view class="" style="width: 200rpx;height: 200rpx;">						<image :src="artificerlist.massageImg" style="width: 100%;height: 100%;border-radius: 24upx;">						</image>					</view>					<view class="u-flex-1  margin-left-sm">						<view class="text-lg text-bold">							{{artificerlist.title}}						</view>						<view class="flex justify-between margin-tb" style="color: #999999;">							<view>								<!-- <image src="../../../static/time.png"									style="width: 26rpx;height: 26rpx;margin-right: 8rpx;"></image> -->								时长:{{artificerlist.duration}}分钟							</view>							<view>已售{{artificerlist.sales}}</view>						</view>						<!-- <view class="flex justify-between">							<view class=" text-df" style="color: #FF1200;">								¥<text class=" text-xl text-bold">{{artificerlist.price}}</text>								<text v-if="hyCheck != '否'">/</text><text v-if="hyCheck != '否'"									class="text-sm">会员价:¥{{artificerlist.memberPrice}}</text>							</view>							<view>								<u-number-box v-model="number" @change="valChange" :min="1" :max="100"></u-number-box>							</view>						</view> -->					</view>				</view>								<view class="flex justify-between" style="padding: 20rpx 0;border-top: 1rpx solid #F0F0F0;margin-top: 24rpx;">					<view  style="font-weight: bold;font-size: 40rpx;color: #FF6E98;x">						<text v-if="hyCheck != '否'"><text style="font-size: 28rpx;"> 会员价:¥</text>{{artificerlist.memberPrice}}</text>						<text class=" text-xl text-bold" style="font-size: 24rpx;color: #AAAAAA;text-decoration: line-through;font-weight: 400;">原价¥{{artificerlist.price}}</text>					</view>					<!-- <view>¥{{price}}</view> -->					<view>						<u-number-box v-model="number" @change="valChange" :min="1" :max="100"></u-number-box>					</view>				</view>			</view>			<view class="padding-sm bg radius u-skeleton-fillet margin-top-sm">				<view class="flex justify-between align-center" style="padding: 0rpx 10rpx;line-height: 106upx;">					<view class="text-30" style="width: 30%;">						服务技师					</view>					<view class="flex align-center">						<text class="margin-right-xs">{{order.artificerName}}</text>						<image :src="order.artificerImg" style="width: 48upx;height: 48upx;border-radius: 50%;"></image>					</view>				</view>				<view class="xian"></view>				<view class="flex align-center justify-between"					style="height: 100rpx;line-height: 100rpx;padding: 0rpx 10rpx;">					<view class="text-30" style="color: #1E1F31;width: 240upx;">预约时间</view>					<view class="flex justify-between margin-tb-sm" @click="openData()">						<view v-if="startTime">{{startTime}}</view>						<view class="tetx-sm" style="color:#999999;" v-else>请选择预约时间</view>						<u-icon name="arrow-right" color="#999999"></u-icon>					</view>				</view>				<view class="xian" v-if="cxSel"></view>				<view class="flex justify-between align-center" v-if="cxSel"					style="height: 100rpx;line-height: 100rpx;padding: 0rpx 10rpx;">					<view class="text-30" style="width: 30%;">						出行方式					</view>					<view class="flex align-center" style="color: #333333;font-size: 26rpx;align-items: center;">						<view style="font-size: 28rpx;">							<text v-if="tripWay == 1">公交</text>							<text v-if="tripWay == 2">出租</text>							<text v-if="tripWay == 3">免费</text>						</view>					</view>				</view>				<!-- <view class="xian"></view> -->				<view style="font-size: 24rpx;color: #AAAAAA;margin-left: 5rpx;" v-if="distances && cxSel">					全程{{distances}}公里,起步{{tripNum}}公里,起步价{{tripPrice}}元,超出每公里{{xuMoney}}元				</view>				<view class="flex justify-between align-center"					style="height: 100rpx;line-height: 100rpx;padding: 0rpx 10rpx;"					v-if="cheFei && cheFei > 0 && cxSel">					<view class="text-30" style="width: 30%;">						车费					</view>					<view class="flex align-center" style="color: #999999;font-size: 22rpx;">						<view class="text-bold" style="color: #FF6E98;font-size: 28rpx;">{{cheFei}}元</view>					</view>				</view>				<view class="xian" v-if="CouponIssueList.length > 0"></view>				<view class="flex align-center justify-between" v-if="CouponIssueList.length > 0"					style="height: 100rpx;line-height: 100rpx;padding: 0rpx 10rpx;">					<view class="text-30" style="color: #1E1F31;width: 240upx;">优惠券</view>					<view class="flex justify-between margin-tb-sm" @click="showCoup">						<view v-if="couponName">{{couponName}}</view>						<view class="tetx-sm" style="color:#999999;" v-else>请选择优惠券</view>						<u-icon name="arrow-right" color="#999999"></u-icon>					</view>				</view>				<view class="xian"></view>				<view class="margin-top-sm" style="padding: 0rpx 10rpx;">					<view class="text-30">						备注					</view>					<view style="color: #999999;font-size: 22rpx;">						<!-- <input v-model="beizhu" type="textarea" placeholder="请输入备注" maxlength="300" v-if="isTrues" />						<input v-model="beizhu" type="textarea" placeholder="请输入备注" maxlength="300" :disabled="true"							v-else /> -->						<u-input v-model="beizhu" type="textarea" placeholder="请输入备注" :clearable="false" maxlength="300"							:custom-style="boxStyle" />					</view>				</view>			</view>		</view>		<!-- <view class="footer" style="font-size: 26upx;" @tap="isShowAgree">			<view style="font-size: 26upx;display: flex;align-items: center;" class="cuIcon"				:class="showAgree?'cuIcon-radiobox':'cuIcon-round'">				<text>我已阅读并同意</text>				<navigator url="/my/setting/about?id=391&name=下单协议" open-type="navigate">《下单协议》</navigator>			</view>		</view> -->		<view class="text-white flex justify-between cu-bar foot bg" style="padding: 16rpx 32rpx;box-shadow: 0rpx -6rpx 12rpx 2rpx rgba(0,0,0,0.09);border-radius: 32rpx 32rpx 0rpx 0rpx;" v-if="cxSel">			<view style="color: #999999;">				合计:<text style="color: #FF6E98;font-size: 40rpx;font-weight: bold;">¥{{price + cheFei}}</text>			</view>			<view class="">				<u-button :custom-style="customStyle" @click="openpay()" shape="circle" :hair-line="false">确认预约				</u-button>			</view>		</view>		<u-skeleton :loading="loading" :animation="true" elColor='#FFFFFF' bgColor='#FFFFFF'></u-skeleton>		<u-popup v-model="isTrue" mode="bottom">			<view>				<scroll-view scroll-y="true">					<its-calendar :sta_num="0" :end_num="24" :int_num="msTimeDate" :msTimeList="msTimeList" @getTime="TimeData">					</its-calendar>				</scroll-view>			</view>		</u-popup>		<!-- 支付方式 -->		<u-popup v-model="showpay" mode="center" :closeable="closeable" width="560rpx" border-radius="14">			<view class="popup_pay">				<view style="background-color: #fff;">					<view style="padding: 0 20upx;margin-bottom: 20rpx;margin-top: 60rpx;">						<view							style="display: flex;height: 100upx;align-items: center;padding: 20upx 0;justify-content: center;"							v-for="(item,index) in openLists" :key='index'>							<image :src="item.image" style="width: 55upx;height: 55upx;border-radius: 50upx;">							</image>							<view style="font-size: 30upx;margin-left: 20upx;width: 70%;">								{{item.text}}							</view>							<radio-group name="openWay" style="margin-left: 45upx;" @tap.stop='selectWay(item)'>								<label class="tui-radio">									<radio color="#FF6E98" :checked="openWay === item.id ? true : false" />								</label>							</radio-group>						</view>					</view>				</view>				<view class="pay_btn" @click="pay()">确认支付</view>			</view>			<!-- </view> -->		</u-popup>		<u-popup v-model="showCoupon" mode="bottom" border-radius="14" :closeable="true">			<view				style="width: 100%;height: 1000rpx;background: #f8f8f8;border-top-left-radius: 20upx;border-top-right-radius: 20upx;padding: 40upx;">				<view style="width: 100%;text-align: center;font-size: 32rpx;color: #1a1a1a;">我的优惠券</view>				<scroll-view scroll-y="true" style="height: 900rpx;">					<view class="flex align-center justify-end">						<view class="btnyouhui" @click="quxiao()">取消使用</view>					</view>					<view v-for="(item,index) in CouponIssueList" :key="index" class="bg padding radius"						style="margin: 24upx 0upx;">						<view class="flex justify-between">							<view class="text-lg text-bold">{{item.couponName}}</view>							<view class="text-lg" style="color: #FF130A;">¥<text									class="text-df text-xxl">{{item.money}}</text>							</view>						</view>						<view>{{item.endDate}}</view>						<view style="width: 638upx;height: 2upx;border: 2upx dashed #E6E6E6;margin: 29upx auto;"></view>						<view class="flex justify-between">							<view style="color: #999999;">满{{item.minMoney}}元可用</view>							<view class="btn" @tap="goFaBu(item)">立即使用</view>						</view>					</view>					<!-- <view style="width: 100%;text-align: center;" v-for='(item,index) in CouponIssueList' :key='index'>						<view							style="background: #fcf3e8;width: 100%;height: 130rpx;border-radius: 10rpx;margin-top: 20rpx;">							<view style="display: flex;color: #1a1a1a;width: 100%;">								<view									style="line-height: 130rpx;margin-left: 0rpx;font-size: 40rpx;color: #1a1a1a;font-weight: 600;width: 150rpx;">									<text style="font-size: 20upx;">¥</text>{{item.money}}								</view>								<view style="margin-left: 20rpx;width: 50%;text-align: left;">									<view style="margin-top: 25rpx;">										{{item.couponName}}</view>									<view style="margin-top: 10rpx;font-size: 26rpx;">满{{item.minMoney}}减{{item.money}}</view>								</view>								<view									style="height: 105rpx;width: 2rpx;background: #1a1a1a;margin-left: 20rpx;margin-top: 15rpx;">								</view>								<view									style="color: #1a1a1a;line-height: 130rpx;height: 130rpx;width: 145rpx;font-weight: 600;"									@tap='goFaBu(item)'>立即使用</view>							</view>						</view>					</view> -->				</scroll-view>			</view>		</u-popup>		<!-- <u-popup v-model="showpay" mode="bottom" :closeable="closeable" style="position: fixed;bottom: 0;"> -->		<!-- <view style="width: 100%;height: 100vh;background: rgba(0,0,0,0.8);z-index: 991;position: absolute;top: 0;left: 0;" v-if="showpay" @touchmove.stop.prevent="moveHandle">			<view class="popup_pay" >				<view style="background-color: #fff;">					<view style="width: 90%;margin: 0 auto;text-align: end;margin-top: 15px;" @tap.stop='close()'>						<u-icon name="close-circle" size="40" color="#CCCCCC"></u-icon>					</view>					<view style="padding: 0 20upx;margin-bottom: 20rpx;">						<view							style="display: flex;height: 100upx;align-items: center;padding: 20upx 0;justify-content: center;"							v-for="(item,index) in openLists" :key='index'>							<image :src="item.image" style="width: 55upx;height: 55upx;border-radius: 50upx;">							</image>							<view style="font-size: 30upx;margin-left: 20upx;width: 70%;">								{{item.text}}							</view>							<radio-group name="openWay" style="margin-left: 45upx;" @tap.stop='selectWay(item)'>								<label class="tui-radio">									<radio color="#2FB57A" :checked="openWay === item.id ? true : false" />								</label>							</radio-group>						</view>					</view>				</view>				<view class="pay_btn" @click="pay()">确认支付</view>			</view>		</view> -->		<!-- </u-popup> -->		<!-- <u-picker v-model="addshow" mode="region" @confirm="addData"></u-picker> -->	</view></template><script>	import itsCalendar from '@/components/its-calendar/its-calendar.vue';	export default {		components: {			itsCalendar		},		data() {			return {				msTimeDate: 0,				showAgree: true,				hyCheck: '否',				cxSel: true,				CouponIssueList: [],				couponName: '',				couponId: '',				couponMoney: 0,				showCoupon: false,				cheFei: 0,				loading: true, // 是否显示骨架屏组件				customStyle: {					width: '214rpx',					height:'100rpx',					color: '#FFFFFF',					background: "#FF6E98",					border: '60rpx'				},				boxStyle: {					height: '180rpx',					color: '#000000',					background: '#F6F6F6',					padding: '20rpx 0 0 0',					borderRadius: '16rpx',					marginTop:'28rpx',					padding:'24rpx'				},				value: '',				remark: '',				artificerId: '',				order: [],				isVip: false,				// addshow: false,				startTime: '',				address: '',				// detailAddress: '',				name: '',				phone: '',				beizhu: '',				price: 0,				money: 0,				number: 1,				isTrue: false,				artificerlist: [],				latitude: '',				longitude: '',				massageTypeId: '',				isVIP: false,				showpay: false,				openLists: [],				openWay: 1,				closeable: true,				isTrues: true,				XCXIsSelect: '否',				tripWay: 0,				msTimeList: [],				detailaddress: '',				province: '',				city: '',				district: '',				name: '',				mobile: '',				addressId: '',				chuxing: '',				distances: '',				tripNum: '',				xuMoney: '',				tripPrice: '',				artificerMoney: 0			}		},		onLoad(option) {			if (this.$queue.getData('msTimeDate')) {				this.msTimeDate = parseInt(this.$queue.getData('msTimeDate'));			} else {				this.msTimeDate = 60;			}			this.hyCheck = this.$queue.getData('hyCheck');			console.log(option)			this.artificerId = option.artificerId			this.massageTypeId = option.massageTypeId			if (option.tripWay) {				this.tripWay = option.tripWay;			}			this.isVIP = uni.getStorageSync('isVIP')			this.getDet()			this.getordertherapist()			this.XCXIsSelect = this.$queue.getData("XCXIsSelect");			var date = new Date();			var year = date.getFullYear();			let month = (parseInt(date.getMonth()) + 1) > 9 ? (parseInt(date.getMonth()) + 1) : "0" + (parseInt(				date.getMonth()) + 1) // 当前月份			let days = (date.getDate()) > 9 ? date.getDate() : "0" + date.getDate() //当前日期			let fullDate = `${month}-${days}`			let Time = year + '-' + fullDate			this.yearsDate = Time;			this.getMsTime(Time);			this.getMoneyJiShi();			// #ifdef APP			this.openLists = [{					image: '../../../static/images/icon_weixin.png',					text: '微信支付',					id: 2				}, {					image: '../../../static/images/zhifubao.png',					text: '支付宝支付',					id: 3				}, {					image: '../../../static/images/lingqian.png',					text: '零钱支付',					id: 1				}],				this.openWay = 2;			// #endif 			// #ifdef MP-WEIXIN			this.openLists = [{					image: '../../../static/images/icon_weixin.png',					text: '微信支付',					id: 2				}, {					image: '../../../static/images/lingqian.png',					text: '零钱支付',					id: 1				}],				this.openWay = 2;			// #endif			// #ifdef H5			this.openLists = [{					image: '../../../static/images/icon_weixin.png',					text: '微信支付',					id: 2				}, 				// {				// 	image: '../../../static/images/zhifubao.png',				// 	text: '支付宝支付',				// 	id: 3				// }, {				// 	image: '../../../static/images/lingqian.png',				// 	text: '零钱支付',				// 	id: 1				// },				],				this.openWay = 2;			// #endif		},		onShow() {			this.addressId = this.$queue.getData('EditAddress');			if (this.addressId) {				this.getAddressList(this.addressId);			} else {				this.addressMy()			}		},		methods: {			isShowAgree() {				//是否选择协议				this.showAgree = !this.showAgree;			},			getMoneyJiShi() {				this.$Request.getT('/app/userMoney/selectUserMoneyArtificer?page=1&limit=1&artificerId=' + this					.artificerId).then(res => {					if (res.code == 0 && res.data) {						if (res.data.list && res.data.list.length > 0) {							this.artificerMoney = res.data.list[0].money ? res.data.list[0].money : 0						}					}				});			},			getMsTime(artificerDate) {				this.$Request.getT('/app/artificerTime/selectArtificerTimeListByArtificerId?artificerId=' + this					.artificerId + '&artificerDate=' + artificerDate).then(res => {					if (res.code == 0) {						this.msTimeList = res.data;					}				})			},			quxiao() { //取消使用				this.showCoupon = false;				this.couponId = ''				this.couponName = ''				this.price = parseFloat(this.money) * parseFloat(this.number);			},			goFaBu(item) {				this.showCoupon = false;				this.couponName = '¥-' + item.money;				this.couponMoney = item.money				this.couponId = item.id;				let money = parseFloat(this.money) * parseFloat(this.number);				this.price = parseFloat(money) - parseFloat(item.money);			},			showCoup() {				this.showCoupon = true;			},			getYHQList() {				this.$Request.getT('/app/coupon/selectUserCouponList?page=1&limit=50&minMoney=' + this.price).then(res => {					if (res.code == 0) {						this.CouponIssueList = res.data.list;					}				});			},			getChuXing() {				this.$Request.getT('/app/artificer/selectTaxiMoney?artificerId=' + this.artificerId + '&latitude=' + this					.latitude + '&longitude=' + this.longitude).then(res => {					if (res.code == 0) {						this.cheFei = res.data.taxiMoney ? res.data.taxiMoney : 0;						// this.price = parseInt(this.price)+parseInt(this.cheFei).toFixed(2)						this.distances = res.data.distances						this.tripNum = res.data.tripNum						this.xuMoney = res.data.xuMoney						this.tripPrice = res.data.tripPrice						this.cxSel = true;					} else {						this.cxSel = false;						uni.showToast({							title: '当前城市暂未开通,请切换城市',							duration: 2000,							icon: 'none'						});					}				});			},			// 根据地址id查询地址			getAddressList(addressId) {				if (addressId) {					this.$Request.getT('/app/address/selectAddressByAddressId?addressId=' + this.addressId).then(res => {						console.log(res)						if (res.code == 0) {							this.name = res.data.name;							this.mobile = res.data.phone;							this.cityaddress = res.data.province + res.data.city + res.data.district;							this.detailaddress = res.data.detailsAddress;							this.isDefault = res.data.isDefault;							this.userId = res.data.userId;							this.latitude = res.data.latitude;							this.longitude = res.data.longitude;							this.province = res.data.province							this.city = res.data.city							this.district = res.data.district							this.getChuXing();						}						// uni.hideLoading();					});				} else {					uni.navigateTo({						url: '../../../my/address/address?id=' + 1					})				}			},			// 获取默认地址			addressMy() {				this.$Request.getT('/app/address/selectAddressById').then(res => {					console.log(res)					if (res.code == 0) {						this.name = res.data.name;						this.mobile = res.data.phone;						this.cityaddress = res.data.province + res.data.city + res.data.district;						this.detailaddress = res.data.detailsAddress;						this.isDefault = res.data.isDefault;						this.userId = res.data.userId;						this.latitude = res.data.latitude;						this.longitude = res.data.longitude;						this.province = res.data.province						this.city = res.data.city						this.district = res.data.district						this.addressId = res.data.addressId						this.getChuXing();						// this.$queue.setData('EditAddress', res.data.addressId);					}				});			},			moveHandle() {},			//关闭弹框			close() {				this.showpay = false				this.isTrues = true			},			//支付选择			selectWay: function(item) {				this.openWay = item.id;			},			openData() {				this.isTrue = true			},			// 时间段数据			TimeData(e) {				console.log(e, e.days)				var date = new Date();				var year = date.getFullYear();				// if(this.msTimeList.length > 0){				// 	let startTime = year + '-' + e.days + ' ' + e.hours				// 	for (var i = 0; i < this.msTimeList.length; i++) {				// 		let msTime = this.msTimeList[i].artificerDate + ' ' + this.msTimeList[i].artificerTime				// 		if(startTime === msTime){				// 			this.isTrue = false				// 			uni.showModal({				// 				title: '温馨提示',				// 				content: '当前时段已被预约,请更换预约时段!',				// 				showCancel: true,				// 				cancelText: '取消',				// 				confirmText: '确定',				// 				success: res => {				// 					if(res.confirm){				// 						this.isTrue = true				// 					}				// 				}				// 			});				// 			return;				// 		}				// 	}				// }else{				this.startTime = year + '-' + e.days + ' ' + e.hours				this.isTrue = false				// }			},			valChange(e) {				console.log('当前值为: ' + e.value)				this.couponId = ''				this.couponName = ''				this.number = e.value				this.price = parseFloat(parseFloat(parseFloat(e.value) * parseFloat(this.money)).toFixed(2));				// this.money = e.value * this.price			},			//获取省市区			city(latitude, longitude) {				this.$Request.get("/app/Login/selectCity", {					lat: latitude,					lng: longitude				}).then(res => {					console.log(res)					this.address = res.data.province + res.data.city + res.data.district					console.log(this.address)				});			},			bindData(index) {				let that = this				uni.chooseLocation({					success: function(res) {						console.log('位置名称:' + res.name);						console.log('详细地址:' + res.address);						console.log('纬度:' + res.latitude);						console.log('经度:' + res.longitude);						that.latitude = res.latitude						that.longitude = res.longitude						that.city(res.latitude, res.longitude)						that.detailAddress = res.name					}				});			},			//服务项目详情			getordertherapist() {				let hyCheck = this.$queue.getData('hyCheck');				if (hyCheck != '否') {					this.isVip = uni.getStorageSync('isVIP')				} else {					this.isVip = false				}				this.$Request.get("/app/artificer/selectMassageTypeById", {					massageTypeId: this.massageTypeId				}).then(res => {					if (res.code == 0) {						console.log(this.isVip)						if (this.isVip == false) {							this.price = res.data.price							this.money = res.data.price							console.log(this.price, 1111111111)						} else {							this.price = res.data.memberPrice							this.money = res.data.memberPrice							console.log(this.price, 2222)						}						console.log(this.price)						this.artificerlist = res.data						this.getYHQList();					}				});			},			// 技师详情			getDet() {				this.$Request.get("/app/artificer/selectArtificerById", {					artificerId: this.artificerId,				}).then(res => {					this.loading = false;					if (res.code == 0) {						this.order = res.data						this.tripWay = res.data.tripWay					} else {						uni.showToast({							title: res.msg,							duration: 1000,							icon: 'none'						});					}				});			},			openpay() {				console.log(5555555);												if (!this.startTime) {					uni.showToast({						title: '请选择预约时间',						icon: 'none',						duration: 1000					})					return				}				if (!this.detailaddress) {					uni.showToast({						title: '请选择服务地址',						icon: 'none',						duration: 1000					})					return				}				// if (!this.detailAddress) {				// 	uni.showToast({				// 		title: '请输入门牌号',				// 		icon: 'none',				// 		duration: 1000				// 	})				// 	return				// }				if (!this.name) {					uni.showToast({						title: '请输入预定人真实姓名',						icon: 'none',						duration: 1000					})					return				}				if (!this.mobile) {					uni.showToast({						title: '请输入联系电话',						icon: 'none',						duration: 1000					})					return				}				let glsNum = this.$queue.getData('glsNum');				if (parseFloat(this.distances) > parseFloat(glsNum)) {					this.$queue.showToast('当前最大接单范围为' + glsNum + '公里,请重新选择地址信息!');					return;				}				if (!this.showAgree) {					this.$queue.showToast('请阅读并同意《下单协议》');					return;				}				let that = this;				if (this.artificerMoney && parseFloat(this.artificerMoney) >= parseFloat((this.price + this.cheFei))) {					uni.showModal({						title: '温馨提示',						content: '是否从预存金额中直接扣除?',						showCancel: true,						cancelText: '取消',						confirmText: '确认',						success: res => {							if (res.confirm) {								let data = {									address: that.province + '' + that.city + '' + that.district + '' +										that.detailaddress,									artificerId: that.artificerId,									tripWay: that.tripWay,									km: that.distances,									ordersMassageList: [{										massageId: that.massageTypeId,										num: that.number,									}],									city: uni.getStorageSync('city'),									price: that.money,									couponId: that.couponId,									payMoney: (that.price + that.cheFei),									userId: uni.getStorageSync('userId'),									serveTime: that.startTime,									userName: that.name,									phone: that.mobile,									remark: that.beizhu,									latitude: that.latitude,									longitude: that.longitude								}								that.$Request.postJson("/app/artificer/insertOrders", data).then(res => {									if (res.code == 0) {										that.$queue.showLoading('支付中...')										that.$Request.post("/app/artificer/payOrders", {											ordersId: res.data.ordersId,										}).then(ret => {											uni.hideLoading();											if (ret.code == 0) {												uni.showToast({													title: '支付成功',													icon: 'none'												})												setTimeout(function() {													uni.switchTab({														url: '/pages/order/index'													})												}, 1000)											} else {												uni.showToast({													title: ret.msg,													icon: 'none'												})											}										});									} else {										that.showpay = true										that.isTrues = false									}								});							} else {								that.showpay = true								that.isTrues = false							}						}					});				} else {					that.showpay = true					that.isTrues = false				}			},			pay() {				let that = this				let data = {					address: that.province + '' + that.city + '' + that.district + '' + that.detailaddress,					artificerId: that.artificerId,					ordersMassageList: [{						massageId: that.massageTypeId,						num: that.number,					}],					city: uni.getStorageSync('city'),					price: that.money,					tripWay: that.tripWay,					km: that.distances,					couponId: that.couponId,					payMoney: (that.price + that.cheFei),					userId: uni.getStorageSync('userId'),					serveTime: that.startTime,					userName: that.name,					phone: that.mobile,					remark: that.beizhu,					latitude: that.latitude,					longitude: that.longitude				}				that.$Request.postJson("/app/artificer/insertOrders", data).then(res => {					that.showpay = false					if (res.code == 0) {						if (that.openWay == 1) { //零钱支付							uni.showModal({								title: '付款提示',								content: '确认支付' + (that.price + that.cheFei) + '元吗?',								success: function(re) {									if (re.confirm) {										that.$queue.showLoading('支付中...')										// console.log('用户点击确定');										that.$Request.post("/app/artificer/payOrders", {											ordersId: res.data.ordersId,										}).then(ret => {											uni.hideLoading();											if (ret.code == 0) {												uni.showToast({													title: '支付成功',													icon: 'none'												})												setTimeout(function() {													uni.switchTab({														url: '/pages/order/index'													})												}, 1000)											} else {												uni.showToast({													title: ret.msg,													icon: 'none'												})											}										});									} else if (re.cancel) {										uni.redirectTo({											url: '/my/order/pay?ordersId=' + res.data.ordersId										})									}								}							})						} else if (that.openWay == 2) { //微信支付							// #ifdef MP-WEIXIN							let data = {								ordersId: res.data.ordersId,								type: 3							}							that.$Request.post('/app/wxPay/payOrder', data).then(ret => {								console.log(ret)								if (ret.code == 0) {									this.showpay = false									uni.requestPayment({										provider: 'wxpay',										timeStamp: ret.data.timestamp,										nonceStr: ret.data.noncestr,										package: ret.data.package,										signType: ret.data.signType,										paySign: ret.data.sign,										success: function(ret) {											console.log(ret)											uni.showToast({												title: '支付成功',												icon: 'none'											})											setTimeout(function() {												uni.switchTab({													url: '/pages/order/index'												})											}, 1000)											// this.$queue.showToast('支付成功');											// uni.switchTab({											// 	url: '/pages/my/index'											// })										},										fail: function(err) {											// this.$queue.showToast('支付失败');											uni.showToast({												title: '支付失败',												icon: 'nones'											});											uni.redirectTo({												url: '/my/order/pay?ordersId=' + res													.data.ordersId											})										}									});								}							});							// #endif							// #ifdef H5							let ua = navigator.userAgent.toLowerCase();							if (ua.indexOf('micromessenger') != -1) {								console.log(11111111)								let data = {									ordersId: res.data.ordersId,									type: 2								}								that.$Request.post('/app/wxPay/payOrder', data).then(rea => {									that.showpay = false									if (rea.code == 0) {										that.callPay(rea.data);									} else {										uni.showToast({											title: rea.msg,											icon: 'none'										})									}								});							} else {								// uni.switchTab({								//   url: "/pages/order/index"								// });																let data = {									ordersId: res.data.ordersId,									// type: 4									type: 2								}								that.$Request.post('/app/wxPay/payOrder', data).then(rea => {									that.showpay = false									if (rea.code == 0) {										const urlArr = window.location.href;										const hostUrl = urlArr.split("/");										const callBack = hostUrl[0] + "//" + hostUrl[2] + "/";										const url = '&redirect_url=' + callBack + 'pages/order/index';										// window.location = rea.data.mweb_url + url										// window.location = callBack+'pages/order/index'										uni.switchTab({										  url: "/pages/order/index"										});																			} else {										uni.showToast({											title: rea.msg,											icon: 'none'										})									}									// const urlArr = window.location.href;									// const hostUrl = urlArr.split("/");									// const callBack = hostUrl[0] + "//" + hostUrl[2] + "/";									// const url = '&redirect_url=' + callBack + 'pages/order/index';									// window.location = rea.mweb_url + url								});							}							// #endif							// #ifdef APP							console.log(res.data.ordersId, '9999999')							let data = {								ordersId: res.data.ordersId,								type: 1							}							that.$Request.post('/app/wxPay/payOrder', data).then(rea => {								console.log(rea)								that.showpay = false								if (rea.code == 0) {									that.isCheckPay(rea.code, 'wxpay', JSON.stringify(rea.data));								}							});							// #endif						} else if (that.openWay == 3) { //支付宝支付							// #ifdef H5							let data = {								ordersId: res.data.ordersId,								type: 2							}							that.$Request.post('/app/aliPay/payOrder', data).then(								rea => {									that.showpay = false									const div = document.createElement('div')									div.innerHTML = rea.data //此处form就是后台返回接收到的数据									document.body.appendChild(div)									document.forms[0].submit()								});							// #endif							// #ifdef APP-PLUS							let data = {								ordersId: res.data.ordersId,								type: 1							}							that.$Request.post('/app/aliPay/payOrder', data).then(								rea => {									that.showpay = false									that.setPayment('alipay', rea.data);								});							// #endif						}					} else {						that.$queue.showToast(res.msg)					}				});			},			callPay: function(response) {				if (typeof WeixinJSBridge === "undefined") {					if (document.addEventListener) {						document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);					} else if (document.attachEvent) {						document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));						document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));					}				} else {					this.onBridgeReady(response);				}			},			onBridgeReady: function(response) {				let that = this;				if (!response.package) {					return;				}				WeixinJSBridge.invoke(					'getBrandWCPayRequest', {						"appId": response.appid, //公众号名称,由商户传入						"timeStamp": response.timestamp, //时间戳,自1970年以来的秒数						"nonceStr": response.noncestr, //随机串						"package": response.package,						"signType": response.signType, //微信签名方式:						"paySign": response.sign //微信签名					},					function(res) {						if (res.err_msg === "get_brand_wcpay_request:ok") {							// 使用以上方式判断前端返回,微信团队郑重提示:							//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。							uni.hideLoading();							uni.showToast({								title: '支付成功',								icon: 'none'							})							setTimeout(function() {								uni.switchTab({									url: '/pages/order/index'								})							}, 1000)						} else {							uni.hideLoading();						}						WeixinJSBridge.log(response.err_msg);					}				);			},			isCheckPay(code, name, order) {				if (code == 0) {					console.log('999999999999')					this.setPayment(name, order);				} else {					uni.hideLoading();					uni.showToast({						title: '支付信息有误'					});				}			},			setPayment(name, order) {				console.log(777777777, name, order)				uni.requestPayment({					provider: name,					orderInfo: order, //微信、支付宝订单数据					success: function(res) {						uni.hideLoading();						uni.showToast({							title: '支付成功',							icon: 'none'						})						setTimeout(function() {							uni.switchTab({								url: '/pages/order/index'							})						}, 1000)					},					fail: function(err) {						uni.hideLoading();					},					complete() {						uni.hideLoading();					}				});			}		},		computed: {		}	}</script><style lang="scss">	textarea::-webkit-input-placeholder {		color: red;	}	page {		background-color: #F5F5F5;	}	.bg {		background-color: #FFFFFF;	}	.orderDet{	}		.orderDet ::v-deep .u-icon-plus{			background: #FF6E98!important;			width: 40rpx;			height: 40rpx;			font-size: 30rpx!important;		}	.box {		border: 1px solid #2FB57A;		border-radius: 4rpx;		color: #2FB57A;		padding: 0rpx 8rpx;		font-size: 22rpx;		margin-top: 10rpx;	}	.btn {		width: 140upx;		height: 55upx;		border: 2upx solid #FF130A;		border-radius: 30upx;		text-align: center;		line-height: 55upx;		color: #FF130A;		font-size: 24upx;	}	/* 底部 */	.footer {		display: flex;		flex-direction: row;		font-size: 28upx;		margin-top: 10upx;		color: rgba(0, 0, 0, 0.7);		text-align: center;		height: 40upx;		line-height: 40upx;		margin-left: 30rpx;	}	.footer text {		color: #333333;		font-size: 24upx;		margin-left: 10rpx;		margin-right: 15upx;	}	.xian {		width: 100%;		height: 1rpx;		background: #f8f8f8;		/* border: 1rpx solid #f8f8f8; */	}	.popup_pay {		/* height: 160px; */		/* #ifndef MP-WEIXIN */		/* height: 130px; */		/* #endif */		width: 100%;		padding-bottom: 45rpx;		/* background: #ffffff;		position: fixed;		bottom: 0px;		left: 0;		right: 0;		z-index: 999; */	}	.pay_btn {		width: 90%;		margin: 0 auto;		text-align: center;		background: #FF6E98;		height: 80rpx;		border-radius: 16rpx;		color: #ffffff;		line-height: 80rpx;	}	.btnyouhui {		border: 1rpx solid #FF130A;		color: #FF130A;		border-radius: 24rpx;		width: 130rpx;		height: 55rpx;		text-align: center;		line-height: 55rpx;		font-size: 24rpx;	}</style>
 |