Преглед изворни кода

1.集客,订单管理 修改
2.商城订单 详情修改

guo пре 2 година
родитељ
комит
6254d495d4

Разлика између датотеке није приказан због своје велике величине
+ 1201 - 0
components/tki-qrcode/qrcode.js


+ 210 - 0
components/tki-qrcode/tki-qrcode.vue

@@ -0,0 +1,210 @@
+<template xlang="wxml" minapp="mpvue">
+	<view class="tki-qrcode">
+		<!-- #ifndef MP-ALIPAY -->
+		<canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+		<!-- #endif -->
+		<!-- #ifdef MP-ALIPAY -->
+		<canvas :id="cid" :width="cpSize" :height="cpSize" class="tki-qrcode-canvas" />
+		<!-- #endif -->
+		<image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" />
+	</view>
+</template>
+
+<script>
+import QRCode from "./qrcode.js"
+let qrcode
+export default {
+	name: "tki-qrcode",
+	props: {
+		cid: {
+			type: String,
+			default: 'tki-qrcode-canvas'
+		},
+		size: {
+			type: Number,
+			default: 200
+		},
+		unit: {
+			type: String,
+			default: 'upx'
+		},
+		show: {
+			type: Boolean,
+			default: true
+		},
+		val: {
+			type: String,
+			default: ''
+		},
+		background: {
+			type: String,
+			default: '#ffffff'
+		},
+		foreground: {
+			type: String,
+			default: '#000000'
+		},
+		pdground: {
+			type: String,
+			default: '#000000'
+		},
+		icon: {
+			type: String,
+			default: ''
+		},
+		iconSize: {
+			type: Number,
+			default: 40
+		},
+		lv: {
+			type: Number,
+			default: 3
+		},
+		onval: {
+			type: Boolean,
+			default: false
+		},
+		loadMake: {
+			type: Boolean,
+			default: false
+		},
+		usingComponents: {
+			type: Boolean,
+			default: true
+		},
+		showLoading: {
+			type: Boolean,
+			default: true
+		},
+		loadingText: {
+			type: String,
+			default: '二维码生成中'
+		},
+	},
+	data() {
+		return {
+			result: '',
+		}
+	},
+	methods: {
+		_makeCode() {
+			let that = this
+			if (!this._empty(this.val)) {
+				qrcode = new QRCode({
+					context: that, // 上下文环境
+					canvasId:that.cid, // canvas-id
+					usingComponents: that.usingComponents, // 是否是自定义组件
+					showLoading: that.showLoading, // 是否显示loading
+					loadingText: that.loadingText, // loading文字
+					text: that.val, // 生成内容
+					size: that.cpSize, // 二维码大小
+					background: that.background, // 背景色
+					foreground: that.foreground, // 前景色
+					pdground: that.pdground, // 定位角点颜色
+					correctLevel: that.lv, // 容错级别
+					image: that.icon, // 二维码图标
+					imageSize: that.iconSize,// 二维码图标大小
+					cbResult: function (res) { // 生成二维码的回调
+						that._result(res)
+					},
+				});
+			} else {
+				uni.showToast({
+					title: '二维码内容不能为空',
+					icon: 'none',
+					duration: 2000
+				});
+			}
+		},
+		_clearCode() {
+			this._result('')
+			qrcode.clear()
+		},
+		_saveCode() {
+			let that = this;
+			if (this.result != "") {
+				uni.saveImageToPhotosAlbum({
+					filePath: that.result,
+					success: function () {
+						uni.showToast({
+							title: '二维码保存成功',
+							icon: 'success',
+							duration: 2000
+						});
+					}
+				});
+			}
+		},
+		_result(res) {
+			this.result = res;
+			this.$emit('result', res)
+		},
+		_empty(v) {
+			let tp = typeof v,
+				rt = false;
+			if (tp == "number" && String(v) == "") {
+				rt = true
+			} else if (tp == "undefined") {
+				rt = true
+			} else if (tp == "object") {
+				if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true
+			} else if (tp == "string") {
+				if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true
+			} else if (tp == "function") {
+				rt = false
+			}
+			return rt
+		}
+	},
+	watch: {
+		size: function (n, o) {
+			if (n != o && !this._empty(n)) {
+				this.cSize = n
+				if (!this._empty(this.val)) {
+					setTimeout(() => {
+						this._makeCode()
+					}, 100);
+				}
+			}
+		},
+		val: function (n, o) {
+			if (this.onval) {
+				if (n != o && !this._empty(n)) {
+					setTimeout(() => {
+						this._makeCode()
+					}, 0);
+				}
+			}
+		}
+	},
+	computed: {
+		cpSize() {
+			if(this.unit == "upx"){
+				return uni.upx2px(this.size)
+			}else{
+				return this.size
+			}
+		}
+	},
+	mounted: function () {
+		if (this.loadMake) {
+			if (!this._empty(this.val)) {
+				setTimeout(() => {
+					this._makeCode()
+				}, 0);
+			}
+		}
+	},
+}
+</script>
+<style scoped>
+.tki-qrcode {
+  position: relative;
+}
+.tki-qrcode-canvas {
+  position: fixed;
+  top: -99999upx;
+  left: -99999upx;
+  z-index: -99999;
+}
+</style>

+ 37 - 0
pages.json

@@ -1,5 +1,42 @@
 {
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+		    "path" : "pages/myOrder/myOrder",
+		    "style" :                                                                                    
+		    {
+		         "navigationStyle": "custom",
+		        "enablePullDownRefresh": true
+		    }
+		    
+		},
+		{
+		    "path" : "pages/myOrder/mallOrderDetail",
+		    "style" :                                                                                    
+		    {
+		        "navigationStyle": "custom",
+		        "enablePullDownRefresh": true
+		    }
+		    
+		},
+		{
+		    "path" : "pages/myOrder/paintOrderDetail",
+		    "style" :                                                                                    
+		    {
+		        "navigationStyle": "custom",
+		        "enablePullDownRefresh": true
+		    }
+		    
+		}
+		,{
+		    "path" : "pages/myOrder/activityOrderDetail",
+		    "style" :                                                                                    
+		    {
+		        "navigationStyle": "custom",
+		        "enablePullDownRefresh": true
+		    }
+		    
+		},
+		
 		{
 			"path": "pages/index/index",
 			"style": {

+ 3 - 1
pages/addjk/activity.vue

@@ -119,6 +119,7 @@
 				})
 			},
 			goshare(item){
+				//app交互
 				var standalone = window.navigator.standalone
 				var userAgent = window.navigator.userAgent.toLowerCase()
 				var safari = /safari/.test(userAgent)
@@ -135,7 +136,8 @@
 			goback(){
 				if(this.type==2){
 					uni.navigateBack()
-				}else{
+				}else{
+					//app交互
 					var standalone = window.navigator.standalone
 					var userAgent = window.navigator.userAgent.toLowerCase()
 					var safari = /safari/.test(userAgent)

+ 956 - 0
pages/myOrder/activityOrderDetail.vue

@@ -0,0 +1,956 @@
+<template>
+	<view class="box">
+	
+		<!-- 自定义导航 -->
+		<view class="zdyNavBox">
+			<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+			<view class="zdyNav">
+				<view class="zdyNavLeft">
+					<image src="../../static/img/nav_icon_back.png" mode="aspectFit" class="backImg" @click="goback"></image>
+				</view>
+				<view class="zdyNavTitle">订单详情</view>
+				<view style="width: 50px;"></view>
+			</view>
+		</view>
+		<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+		<view style="height: 44px;"></view>
+		
+		
+		<view class="top">
+			<view class="orderState">
+				<image src="../../static/img/icon_order_def.png" mode="" style="width: 44rpx;height: 44rpx;"></image>
+
+
+				<view class="SheetState" v-if="orderData.data.sheetState == 1">待付款</view>
+				<view class="SheetState" v-if="orderData.data.sheetState == 2">待服务</view>
+				<view class="SheetState" v-if="orderData.data.sheetState == 3">已完成</view>
+				<view class="SheetState" v-if="orderData.data.sheetState == 4">已取消</view>
+
+			</view>
+
+
+		</view>
+
+		<!-- 店铺信息 -->
+		<view class="shopBox">
+			<image src="../../static/img/icon_store.png" mode="" class="shopBoximg"></image>
+			<view class="shopCont">
+				<view class="shopName">{{orderData.shopInfo.shopName}}</view>
+				<view class="Address">
+					{{orderData.shopInfo.provinceName}}{{orderData.shopInfo.cityName}}{{orderData.shopInfo.areaName}}{{orderData.shopInfo.address}}
+				</view>
+
+			</view>
+			<view class="shopRightBox" @click="map">
+
+				<image src="../../static/img/icon_ditu.png" mode="" class="shopRightImg"></image>
+
+				<view class="shopRihgtTxt">地图</view>
+			</view>
+			<view class="shopsx"></view>
+			<view class="shopRightBox" @click="call">
+
+				<image src="../../static/img/icon_phone.png" mode="" class="shopRightImg"></image>
+
+				<view class="shopRihgtTxt">电话</view>
+			</view>
+		</view>
+
+		<!-- 订单内容 -->
+		<view class="information">
+			<view class="detailedTitle">订单内容</view>
+			
+			<view v-if="orderData.openSheetDetail.length>0" v-for="(item,index) in orderData.openSheetDetail" :key="index">
+				<view class="informationLine2">
+					<view class="goodsName">{{item.itemName}}</view>
+					<view class="huodong" @click="goDetail(item.itemId)">
+						<view class="goodsName3">活动详情</view>
+						<image src="../../static/img/little_rightArrow.png" mode="" style="width: 30rpx;height: 30rpx;"></image>
+					</view>
+				</view>
+				<view class="salePrice"><span class="informationNum">¥</span>{{item.salePrice}}</view>
+			</view>
+			
+			<view v-if="orderData.data.sheetState != 1 && orderData.data.sheetState != 4" class="line"></view>
+			<view v-if="orderData.data.sheetState != 1 && orderData.data.sheetState != 4">
+				<view class="goodsName2">
+					券码信息({{quanMaList.length?quanMaList.length:0}}张可用)
+				</view>
+				<view class="detailedLine" v-for="(v,index) in orderData.OpenSheetQRCode">
+
+					<view v-if="v.writeoffState==1" class="detailedName">
+						<view class="redPoint"></view>
+						<view class="code">{{v.qrCode}}</view>
+						<view class="quanState">待使用</view>
+
+					</view>
+					<view v-if="v.writeoffState==3" class="detailedName">
+						<view class="redPoint"></view>
+						<view class="code old" >{{v.qrCode}}</view>
+						<view class="quanState2">已使用</view>
+					
+					</view>
+					
+					<image src="../../static/img/icon_erweima.png" mode="" style="width: 36rpx;height: 36rpx;"
+						v-if="v.writeoffState==1" @click="isShowMa=true"></image>
+				</view>
+			</view>
+
+		</view>
+
+		
+		<!-- 实付款 -->
+		<view class="money">
+			<view class="informationNum">实付款:</view>
+			<view class="informationNum" style="color: #FF0000;font-weight: bold;">¥{{orderData.data.realMoney}}</view>
+		</view>
+
+		<!-- 订单信息 -->
+		<view class="information">
+			<view class="detailedTitle">订单信息</view>
+			<view class="informationLine" v-if="orderData.data.plateNumber">
+				<view class="informationTxt">车牌号:</view>
+				<view class="informationNum">{{orderData.data.plateNumber}}</view>
+			</view>
+			
+			<view class="informationLine" v-if="orderData.data.customerName">
+				<view class="informationTxt">联系人:</view>
+				<view class="informationNum">{{orderData.data.customerName}}</view>
+			</view>
+			<view class="informationLine" v-if="orderData.data.mobilePhone">
+				<view class="informationTxt">手机号:</view>
+				<view class="informationNum">{{orderData.data.mobilePhone}}</view>
+			</view>
+			<view class="informationLine" v-if="orderData.data.unit">
+				<view class="informationTxt">单位:</view>
+				<view class="informationNum">{{orderData.data.unit}}</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">报名时间:</view>
+				<view class="informationNum">{{orderData.data.createTime}}</view>
+			</view>
+			
+			<view class="informationLine">
+				<view class="informationTxt">订单单号:</view>
+				<view class="informationNum">{{orderData.data.code}}<span class="codeCopy"
+						@click="copy(orderData.data.code)">复制</span></view>
+			</view>
+			
+
+		</view>
+
+		<!-- 支付信息 -->
+		<view class="information">
+			<view class="detailedTitle">支付信息</view>
+			<view class="informationLine">
+				<view class="informationTxt">支付状态:</view>
+				<view class="informationNum" v-if="orderData.data.payState==1">未支付</view>
+				<view class="informationNum" v-if="orderData.data.payState==2">已支付</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">支付方式:</view>
+				<view class="informationNum" v-if="orderData.data.payType==1">在线支付</view>
+				<view class="informationNum" v-if="orderData.data.payType==2">-</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">支付时间:</view>
+				<view class="informationNum">{{orderData.data.payTime?orderData.data.payTime:'-'}}</view>
+			</view>
+
+		</view>
+
+		<view style="height: 50rpx;background-color: #F4F5F7;"></view>
+
+		<view class="bottom" v-if="orderData.data.sheetState == 1">
+
+			<view class="cancel" @click="cancelBespeak">取消订单</view>
+			<view class="defer" @click="pay">立即支付</view>
+		</view>
+
+
+		<!-- 券码 -->
+		<view class="maBox" v-if="isShowMa==true" @click="isShowMa=false">
+			<view class="querenMa">
+				<view class="maTop">
+					<view class="maTitle">请到店出示券码即可开始服务</view>
+					<image @click="isShowMa=false" src="../../static/img/icon_delete.png" mode=""
+						style="width: 26rpx;height: 26rpx;margin-left: 10rpx;"></image>
+
+				</view>
+				<swiper class="swiper" circular  :autoplay="false" :indicator-dots="true" indicator-color="#CCCCCC" indicator-active-color="#D53533">
+					<swiper-item v-for="(item,index) in quanMaList">
+						<view class="swiper-item">
+							<view class="maCode">{{item}}</view>
+							<view class="maBoximg">
+								<tki-qrcode cid="qrcode1" ref="qrcode" :val="item" :size="400" :unit="unit"
+									:pdground="pdground" :icon="icon" :iconSize="iconsize" :lv="lv" :onval="onval"
+									:loadMake="loadMake" :usingComponents="true" @result="qrR" />
+							</view>
+						</view>
+					</swiper-item>
+					
+					
+				</swiper>
+				
+			
+			</view>
+		</view>
+
+
+	</view>
+</template>
+
+<script>
+	import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"
+	export default {
+		components: {
+			tkiQrcode
+		},
+		data() {
+			return {
+
+				id: '',
+				iStatusBarHeight:'',
+				
+				orderData: '',
+
+				onval: true, // val值变化时自动重新生成二维码
+				loadMake: true, // 组件加载完成后自动生成二维码
+				size: 500,
+				qrcodeShow: false,
+				qrcodeTop: '-100vh',
+				qrcodeTopVal: '',
+				ifShow: false,
+				val: '二维码', // 要生成的二维码值
+				unit: 'upx', // 单位
+				background: '#b4e9e2', // 背景色
+				foreground: '#309286', // 前景色
+				pdground: '#262637', // 角标色
+				icon: '', // 二维码图标
+				iconsize: 40, // 二维码图标大小
+				lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
+				src: '', // 二维码生成后的图片地址或base64
+				isShowMa: false,
+				quanMaList:[],
+				
+			}
+		},
+		onLoad(opt) {
+			 this.iStatusBarHeight = uni.getSystemInfoSync().statusBarHeight;
+			this.id = opt.id
+			
+
+			if (this.id) {
+				this.getData()
+			}
+			
+
+		},
+		
+
+		methods: {
+			
+			goDetail(id) {
+				console.log('id--',id);
+				uni.navigateTo({
+					
+					url: '../../activity/jkDetail?id=' + id
+				})
+			},
+			pay(){
+				this.$http('openMallOrder/unifiedPay', {
+					sheetId:this.id
+				},'POST').then(res => {
+					
+					if(res.code==0){
+						
+						this.requestPayment(res.data)
+					}else{
+						uni.showToast({
+							title: res.msg,
+							icon: 'none',
+							duration: 3000
+						});
+					}
+				 })
+			},
+			requestPayment(res){
+				var payInfo=res;
+				//console.log(payInfo)
+				//console.log(String(Date.now()))
+				var that=this;
+				uni.requestPayment({
+					provider: 'wxpay',
+					//timeStamp: String(Date.now()),
+					timeStamp: payInfo.timeStamp,
+					nonceStr: payInfo.nonceStr,
+					package:payInfo.package,
+					signType: payInfo.signType,
+					paySign: payInfo.paySign,
+					appid:payInfo.appId,	
+				
+				    success: function (res) {
+				        console.log('success:' + JSON.stringify(res));
+						 uni.showToast({
+							 title: '支付成功',
+							 icon:'none',
+							 duration: 2000
+						 });
+						that.getData()
+				    },
+				    fail: function (err) {
+					  console.log(err)
+				      uni.showToast({
+						 title: '支付失败',
+						 icon:'none',
+						 duration: 2000
+				      });
+					
+				    }
+				}); 
+			},
+			copy(txt) {
+				uni.setClipboardData({
+					data: txt,
+					success: function() {
+						uni.showToast({
+							title: '复制成功',
+							icon: 'none',
+							duration: 2000
+						});
+					}
+				});
+			},
+			upTime() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				var that = this
+				this.$http('openH5Indent/carOwner/updateTimeOfAppointment', {
+
+					id: this.id,
+					shopId: this.orderData.shopInfo.id,
+					billDate: this.billDate
+				}, 'POST').then(res => {
+					uni.hideLoading();
+					// var list = res.data.Items
+					var list = res.data
+					console.log("result+=", res.data);
+					uni.showToast({
+						title: '延期成功',
+						icon: 'none',
+						duration: 2000
+					});
+					setTimeout(function() {
+						that.getData();
+					}, 1000);
+
+
+				})
+			},
+			cancelBespeak(){
+				var that = this
+				uni.showModal({
+				    title: '提示',
+				    content: '是否取消该订单',
+					cancelText:'否',
+					confirmText:'是',
+				    success: function (res) {
+				        if (res.confirm) {
+							
+								uni.showLoading({
+									title: '加载中'
+								})
+								
+								that.$http('openH5Indent/updateSheetState', {
+							
+									id: that.id,
+							
+								}, 'POST').then(res => {
+									uni.hideLoading();
+									// var list = res.data.Items
+									
+									uni.showToast({
+										title: '取消成功',
+										icon: 'none',
+										duration: 2000
+									});
+									setTimeout(function() {
+										that.getData();
+									}, 1000);
+								})
+							
+				          
+				        } else if (res.cancel) {
+				           
+				        }
+				    }
+				});
+			},
+			
+			map() {
+				console.log("打开地图")
+				var that = this;
+				if (!that.orderData.shopInfo.lat || !that.orderData.shopInfo.lng) {
+					uni.showToast({
+						title: '该店铺未设置定位',
+						icon: 'none',
+						duration: 3000
+					});
+				} else {
+					uni.openLocation({
+						latitude: Number(that.orderData.shopInfo.lat),
+						longitude: Number(that.orderData.shopInfo.lng),
+						name: that.orderData.shopInfo.shopName,
+						address: that.orderData.shopInfo.provinceName + that.orderData.shopInfo.cityName + that
+							.orderData.shopInfo.areaName + that.orderData.shopInfo.address,
+						success: function() {
+							console.log('success');
+						},
+						fail(err) {
+							console.log(err)
+						}
+					});
+				}
+
+			},
+
+			call() {
+				uni.makePhoneCall({
+					phoneNumber: this.orderData.shopInfo.mobilePhone
+				});
+			},
+
+
+			getData() {
+				uni.showLoading({
+					title: '加载中'
+				});
+
+				this.$http('openH5Indent/queryOpenSheet', {
+
+					id: this.id,
+				}, 'GET').then(res => {
+					uni.hideLoading();
+					this.orderData = res.data;
+					if (this.quanMaList) {
+						this.quanMaList = [];
+					}
+					let maList = this.orderData.OpenSheetQRCode;
+					if (maList) {
+						maList.forEach(item =>{
+							if (item.writeoffState==1) {
+								this.quanMaList.push(item.qrCode);
+							}
+						})
+					}
+					
+					console.log('可用券码--',this.quanMaList);
+					
+				})
+			},
+			
+			goback() {
+				uni.navigateBack({
+				 	delta: 1
+				})
+			},
+			gohome(){
+				uni.switchTab({
+					url:'../../index/index'
+				})
+			},
+
+		},
+		onPullDownRefresh() {
+
+			this.getData()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+
+	}
+</script>
+
+<style scoped>
+	.box {
+		min-height: 100vh;
+		background: #F4F5F7;
+		padding-bottom: 135rpx;
+	}
+	.zdyNavBox{
+		width: 100vw;
+		background: #FFFFFF;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 9999999;
+	}
+	.zdyNav{
+		height: 44px;
+		display: flex;
+		justify-content: space-between;
+		
+		align-items: center;
+	}
+	
+	.backImg{
+		width: 44rpx;
+		height: 44rpx;
+		margin-left: 10rpx;
+		margin-right: 20rpx;
+	}
+	.homeImg{
+		width: 44rpx;
+		height: 44rpx;
+		
+	}
+	.zdyNavLeft{
+		display: flex;
+		align-items: center;
+	}
+	.zdyNavTitle{
+		
+		height: 44px;
+		background: #FFFFFF;
+		text-align: center;
+		font-size: 34rpx;
+		line-height: 44px;
+	}
+	
+
+	.top {
+		height: 190rpx;
+		background-color: #FF0000;
+
+	}
+
+	.orderState {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		padding-top: 40rpx;
+	}
+
+	.SheetState {
+		display: flex;
+		justify-content: center;
+		font-size: 36rpx;
+		font-weight: 500;
+		color: #FFFFFF;
+		margin-left: 15rpx;
+
+	}
+
+
+
+	.timeEditImg {
+		width: 25rpx;
+		height: 25rpx;
+		padding-left: 20rpx;
+	}
+
+
+
+	.shopBoximg {
+		width: 40rpx;
+		height: 40rpx;
+	}
+
+	.shopRightImg {
+		width: 44rpx;
+		height: 45rpx;
+	}
+
+	.shopsx {
+		width: 1px;
+		height: 50rpx;
+		background: #EEEEEE;
+		margin-top: 30rpx;
+		margin-left: 28rpx;
+	}
+
+	.shopBox {
+
+		display: flex;
+		padding: 30rpx 20rpx;
+		margin: 0rpx 24rpx;
+		margin-top: -60rpx;
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+
+	}
+
+	.shopCont {
+		width: 405rpx;
+		padding-left: 20rpx;
+
+	}
+
+	.shopName {
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #3C3C3C;
+		line-height: 42rpx;
+	}
+
+	.Address {
+		color: #999999;
+		font-size: 24rpx;
+		margin-top: 10rpx;
+	}
+
+	.shopRihgtTxt {
+		color: #999999;
+		font-size: 24rpx;
+
+	}
+
+	.shopRightBox {
+
+		padding-left: 28rpx;
+	}
+
+
+
+
+
+	.detailedTitle {
+		padding: 23rpx 20rpx;
+		display: flex;
+		text-align: center;
+		align-content: flex-start;
+		border-bottom: 1rpx solid #EEEEEE;
+
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #3C3C3C;
+	}
+
+
+	.detailedLine {
+		display: flex;
+		padding: 16rpx 20rpx;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.detailedImg {
+		width: 120rpx;
+		height: 120rpx;
+		border-radius: 10rpx;
+	}
+
+
+
+	.detailedName {
+		display: flex;
+		align-items: center;
+
+
+	}
+
+	.code {
+		font-size: 26rpx;
+		color: #333333;
+		font-weight: bold;
+		width: 180rpx
+	}
+
+	.old {
+		color: #999999;
+
+		font-weight: 400;
+		text-decoration: line-through;
+	}
+
+	.redPoint {
+		width: 10rpx;
+		height: 10rpx;
+		background: #FF0000;
+		border-radius: 10rpx;
+		margin-right: 10rpx;
+	}
+
+	.quanState {
+		font-size: 22rpx;
+		color: #F19D01;
+		padding: 0 10rpx;
+
+		border: 1rpx solid #F19D01;
+
+		border-radius: 4rpx;
+		margin-left: 20rpx;
+	}
+	.quanState2{
+		font-size: 22rpx;
+		color: #999999;
+		padding: 0 10rpx;
+		
+		border: 1rpx solid #DDDDDD;
+		
+		border-radius: 4rpx;
+		margin-left: 20rpx;
+	}
+
+
+
+	.information {
+
+		background: #FFFFFF;
+		border-radius: 10rpx;
+
+		margin: 20rpx 24rpx;
+		padding-bottom: 15rpx;
+	}
+
+	.informationLine {
+		display: flex;
+
+		padding: 15rpx 20rpx;
+	}
+
+	.informationLine2 {
+		display: flex;
+		justify-content: space-between;
+		font-size: 26rpx;
+		padding: 20rpx;
+		align-items: center;
+		padding-bottom: 0;
+	}
+
+	.salePrice {
+		    padding-left: 20rpx;
+		    padding-top: 15rpx;
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #333333;
+		line-height: 45rpx;
+	}
+
+	.money {
+		background: #FFFFFF;
+		border-radius: 10rpx;
+
+		margin: 20rpx 24rpx;
+
+		display: flex;
+		justify-content: space-between;
+		font-size: 26rpx;
+		padding: 30rpx 20rpx;
+	}
+
+	.informationTxt {
+		width: 190rpx;
+		font-size: 26rpx;
+		color: #999999;
+	}
+
+	.line {
+		height: 20rpx;
+		background-color: #FFFFFF;
+		border-bottom: 1rpx solid #EEEEEE;
+	}
+
+	.goodsName {
+		width: 70%;
+		color: #333333;
+		font-size: 26rpx;
+		
+	}
+	.huodong{
+		display: flex;
+		align-items: center;
+	}
+	.goodsName3{
+		color: #333333;
+		font-size: 26rpx;
+		
+	}
+	.goodsName2{
+		padding: 20rpx 20rpx 15rpx;
+		
+		color: #333333;
+		font-size: 26rpx;
+	}
+
+	.informationNum {
+		color: #333333;
+		font-size: 26rpx;
+	}
+
+	.codeCopy {
+		width: 77rpx;
+		height: 36rpx;
+		background: #F4F5F7;
+		border-radius: 22rpx;
+		font-size: 24rpx;
+		color: #333333;
+		text-align: center;
+		line-height: 33rpx;
+		padding: 0 15rpx;
+		margin-left: 20rpx;
+	}
+
+	.orderBottom {
+		width: 750rpx;
+		height: 98rpx;
+		background: #FFFFFF;
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		display: flex;
+		justify-content: flex-end;
+	}
+
+
+
+
+
+
+	.bottom {
+		display: flex;
+		justify-content: flex-end;
+		padding: 20rpx;
+		background-color: #FFFFFF;
+		align-items: center;
+		height: 98rpx;
+		width: 100vw;
+		position: fixed;
+		bottom: 0rpx;
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.cancel {
+		color: #3C3C3C;
+		font-size: 28rpx;
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 36rpx;
+		border: 1rpx solid #DDDDDD;
+		text-align: center;
+		line-height: 56rpx;
+		margin-right: 40rpx;
+	}
+
+	.defer {
+		color: #D53533;
+		font-size: 28rpx;
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 36rpx;
+		border: 1rpx solid #D53533;
+		text-align: center;
+		line-height: 56rpx;
+		margin-right: 40rpx;
+	}
+
+	.itemBox {
+		margin: 20rpx;
+		border-radius: 10rpx;
+		border: 2rpx solid #EEEEEE;
+	}
+
+	.itemTop {
+		padding: 18rpx 20rpx;
+		padding-right: 0;
+		background-color: #FFEFD5;
+
+		display: flex;
+		justify-content: space-between;
+		align-content: center;
+	}
+
+	.topTitle {
+		width: 104rpx;
+		font-size: 26rpx;
+		color: #333333;
+		margin-right: 20rpx;
+		text-align: right;
+	}
+	
+
+	.leftItem {
+		font-size: 26rpx;
+		color: #333333;
+		margin-right: 20rpx;
+		flex-grow: 1;
+		/* 隐藏文字显示 ...不换行 */
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+
+	.itemContent {
+		padding: 20rpx;
+		padding-right: 0;
+		background-color: #FFFFFF;
+
+		display: flex;
+		justify-content: space-between;
+		align-content: center;
+	}
+
+	.maBox {
+		width: 100%;
+		height: 100vh;
+		background: rgba(0, 0, 0, 0.4);
+		position: fixed;
+		left: 0;
+		top: 0;
+		z-index: 9999;
+	}
+
+	.querenMa {
+		width: 578;
+		height: 640rpx;
+		background: #ffffff;
+		margin: 0 86rpx;
+		margin-top: 50%;
+		border-radius: 24rpx;
+	}
+
+	.maTop {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 30rpx 20rpx 15rpx;
+	}
+
+
+	.maTitle {
+		color: #666666;
+		font-size: 26rpx;
+		text-align: center;
+		padding-left: 100rpx;
+	}
+	.swiper{
+		width: 100%;
+		height: 85%;
+		background: #FFFFFF;
+		
+	}
+	.swiper-item{
+		width: 100%;
+		height: 100%;
+	}
+	
+	
+	.maCode {
+
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #333333;
+		line-height: 42rpx;
+		margin-bottom: 40rpx;
+		text-align: center;
+	}
+
+	.maBoximg {
+		width: 400rpx;
+		height: 400rpx;
+		margin-left: 86rpx;
+	}
+</style>

Разлика између датотеке није приказан због своје велике величине
+ 1210 - 0
pages/myOrder/mallOrderDetail.vue


+ 373 - 0
pages/myOrder/myOrder.vue

@@ -0,0 +1,373 @@
+<template>
+	<view class="box">
+		
+		<!-- 自定义导航 -->
+		<view class="zdyNavBox">
+			<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+			<view class="zdyNav">
+				<view class="zdyNavLeft">
+					<image src="../../static/img/nav_icon_back.png" mode="aspectFit" class="backImg" @click="goback">
+					</image>
+		
+				</view>
+				<view class="zdyNavTitle">订单管理</view>
+				<view style="width: 50px;"></view>
+			</view>
+		</view>
+		<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+		<view style="height: 44px;"></view>
+		
+		
+		<view class="tab">
+			<view class="tabLine" :class="{tabActive:tabIndex==0}" @click="tabClick(0)">全部</view>
+			<view class="tabLine" :class="{tabActive:tabIndex==1}" @click="tabClick(1)">待付款</view>
+			<view class="tabLine" :class="{tabActive:tabIndex==2}" @click="tabClick(2)">待服务</view>
+			<view class="tabLine" :class="{tabActive:tabIndex==3}" @click="tabClick(3)">已完成</view>
+
+		</view>
+		<view class="main">
+			<view class="itemBg" v-for="(item,index) in items" @click="goDetail(item)">
+				<view class="itemTop">
+					<view class="itemType" v-if="item.SheetType==1">商城-商品订单</view>
+					<view class="itemType" v-if="item.SheetType==2">商城-项目订单</view>
+					<view class="itemType" v-if="item.SheetType==3">商城-套餐订单</view>
+					<view class="itemType" v-if="item.SheetType==4">救援订单</view>
+					<view class="itemType" v-if="item.SheetType==5">钣喷订单</view>
+					<view class="itemType" v-if="item.SheetType==6">集客订单</view>
+
+					<view class="itemSheetState redColor" v-if="item.SheetState==1">待付款</view>
+					<view class="itemSheetState orangeColor" v-if="item.SheetState==2">待服务</view>
+					<view class="itemSheetState greenColor" v-if="item.SheetState==3">已完成</view>
+					<view class="itemSheetState" v-if="item.SheetState==4">已取消</view>
+
+				</view>
+				<view class="itemShopBg">
+					<view class="shopName">{{item.SheetContent}}</view>
+					<view style="color: #333333;font-size: 22rpx;">¥<span class="price">{{item.RealMoney}}</span></view>
+				</view>
+
+				<view class="itemName">{{item.CreateTime}}</view>
+
+			</view>
+
+			<nodata v-show="items==''&&isload"></nodata>
+		</view>
+	</view>
+</template>
+
+<script>
+	import nodata from '@/components/nodata/nodata.vue'
+	export default {
+		components: {
+			nodata
+		},
+		data() {
+			return {
+				page: 1,
+				tabIndex: 0,
+				items: [],
+				isload: false,
+
+			}
+		},
+		onLoad(opt) {
+
+			
+			this.getData()
+		},
+		onShow() {
+			console.log(this.tabIndex)
+
+			this.getData()
+
+		},
+		methods: {
+
+			goback(){
+				
+					//app交互
+					var standalone = window.navigator.standalone
+					var userAgent = window.navigator.userAgent.toLowerCase()
+					var safari = /safari/.test(userAgent)
+					var ios = /iphone|ipod|ipad|mac/.test(userAgent)
+					var android = /android/.test(userAgent)
+					if (ios) {
+									 if ( true) {//!standalone&& !safari
+									   window.webkit.messageHandlers.goMyNav.postMessage(null)
+									 }
+					} else if (android) {
+									 window.android.postMessage()
+					}
+				
+			   
+			},
+
+			tabClick(num) {
+				this.tabIndex = num;
+
+
+				this.page = 1;
+				this.getData()
+			},
+			goDetail(item) {
+				//SheetType 1 商品2项目3套餐4救援5钣喷6集客
+				if((item.SheetType==1)||(item.SheetType==2)||(item.SheetType==3)){
+					uni.navigateTo({
+						url: "mallOrderDetail?id=" + item.ID +"&SheetType=" + item.SheetType
+					})
+				}
+				else if (item.SheetType==5){
+					uni.navigateTo({
+						url: "paintOrderDetail?id=" + item.ID
+					})
+				}
+				else if (item.SheetType==6){
+					uni.navigateTo({
+						url: "activityOrderDetail?id=" + item.ID
+					})
+				}
+			},
+			getData() {
+				uni.showLoading({
+					title: '加载中'
+				});
+				this.isload = false;
+				var padata = {
+					page: this.page,
+					limit: 10,
+					sheetState: this.tabIndex > 0 ? this.tabIndex : ''
+				}
+
+				this.$http('openH5Indent/getOpenSheetList', padata, 'GET').then(res => {
+					uni.hideLoading();
+					this.isload = true;
+
+					var list = res.data.Items;
+
+					if (this.page == 1) {
+						this.items = list
+					} else {
+						this.items = this.items.concat(list)
+					}
+
+				})
+			},
+
+		},
+		onReachBottom() {
+			this.page++;
+
+			this.getData()
+		},
+		onPullDownRefresh() {
+			this.page = 1;
+			this.getData()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		}
+	}
+</script>
+
+<style scoped>
+	.box {
+		min-height: 100vh;
+		background: #F4F5F7;
+	}
+	
+	.zdyNavBox {
+		width: 100vw;
+		background: #FFFFFF;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 9999999;
+	
+	
+	}
+	
+	.zdyNav {
+		height: 44px;
+		display: flex;
+		justify-content: space-between;
+	
+		align-items: center;
+	
+	}
+	
+	.backImg {
+		width: 44rpx;
+		height: 44rpx;
+		margin-left: 10rpx;
+		margin-right: 20rpx;
+	}
+	
+	.homeImg {
+		width: 44rpx;
+		height: 44rpx;
+	
+	}
+	
+	.zdyNavLeft {
+		display: flex;
+		align-items: center;
+	}
+	
+	.zdyNavTitle {
+	
+		height: 44px;
+		background: #FFFFFF;
+		text-align: center;
+		font-size: 34rpx;
+		line-height: 44px;
+	}
+	
+	
+
+	.tab {
+		background: #FFFFFF;
+		display: flex;
+		justify-content: space-between;
+		line-height: 92rpx;
+		position: fixed;
+		width: calc(100vw - 100rpx);
+		padding-left: 50rpx;
+		padding-right: 50rpx;
+		height: 92rpx;
+		z-index: 11;
+	}
+
+	.tabLine {
+
+		font-size: 28rpx;
+		color: #333333;
+		text-align: center;
+	}
+
+	.tabActive {
+		color: #FF0000;
+		font-weight: bold;
+		border-bottom: 4rpx solid #FF0000;
+
+	}
+
+	.main {
+		padding-top: 92rpx;
+		padding-bottom: 20rpx;
+		background-color: #F4F5F7;
+	}
+
+	.itemBg {
+		margin: 20rpx 24rpx;
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+		padding: 20rpx;
+	}
+
+	.itemTop {
+		display: flex;
+		justify-content: space-between;
+	}
+
+	.itemType {
+		color: #999999;
+		font-size: 24rpx;
+	}
+
+	.itemSheetState {
+		font-size: 24rpx;
+		color: #999999
+	}
+	.redColor {
+		color: #FF0000;
+	}
+	.orangeColor {
+		color: #F19D01;
+	}
+	.greenColor {
+		color: #00A040;
+	}
+	
+
+	.itemShopBg {
+		display: flex;
+		justify-content: space-between;
+		margin-top: 20rpx;
+	}
+
+	.shopName {
+		color: #333333;
+		font-size: 30rpx;
+		font-weight: bold;
+		/* 隐藏文字显示 ...不换行 */
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+
+	.price {
+		color: #333333;
+		font-weight: bold;
+		font-size: 32rpx;
+	}
+
+	.itemName {
+		color: #666666;
+		font-size: 24rpx;
+		padding: 16rpx 0;
+		height: 30rpx;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+
+	.plateBg {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.plateNumber {
+		color: #666666;
+		font-size: 24rpx;
+		margin-bottom: 20rpx;
+		display: flex;
+
+	}
+
+	.itemLineBottom {
+		display: flex;
+		justify-content: flex-end;
+
+	}
+
+	.itemBtn1 {
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 36rpx;
+		border: 2rpx solid #DDDDDD;
+		text-align: center;
+		line-height: 56rpx;
+		font-size: 28rpx;
+		color: #3C3C3C;
+		margin-left: 40rpx;
+	}
+
+	.itemBtn2 {
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 36rpx;
+		border: 2rpx solid #FF4F00;
+		text-align: center;
+		line-height: 56rpx;
+		font-size: 28rpx;
+		color: #FF4F00;
+		margin-left: 40rpx;
+	}
+
+	.orderState {
+		color: #F19D01;
+		font-size: 24rpx;
+		padding-left: 20rpx;
+	}
+</style>

+ 946 - 0
pages/myOrder/paintOrderDetail.vue

@@ -0,0 +1,946 @@
+<template>
+	<view class="box">
+	
+		<!-- 自定义导航 -->
+		<view class="zdyNavBox">
+			<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+			<view class="zdyNav">
+				<view class="zdyNavLeft">
+					<image src="../../static/img/nav_icon_back.png" mode="aspectFit" class="backImg" @click="goback"></image>
+				</view>
+				<view class="zdyNavTitle">订单详情</view>
+				<view style="width: 50px;"></view>
+			</view>
+		</view>
+		<view class="status_bar" :style="{height: iStatusBarHeight + 'px'}"></view>
+		<view style="height: 44px;"></view>
+		
+		
+		<view class="top">
+			<view class="orderState">
+				<image src="../../static/img/icon_order_def.png" mode="" style="width: 44rpx;height: 44rpx;"></image>
+
+
+				<view class="SheetState" v-if="orderData.data.sheetState == 1">待付款</view>
+				<view class="SheetState" v-if="orderData.data.sheetState == 2">待服务</view>
+				<view class="SheetState" v-if="orderData.data.sheetState == 3">已完成</view>
+				<view class="SheetState" v-if="orderData.data.sheetState == 4">已取消</view>
+
+			</view>
+
+
+		</view>
+
+		<!-- 店铺信息 -->
+		<view class="shopBox">
+			<image src="../../static/img/icon_store.png" mode="" class="shopBoximg"></image>
+			<view class="shopCont">
+				<view class="shopName">{{orderData.shopInfo.shopName}}</view>
+				<view class="Address">
+					{{orderData.shopInfo.provinceName}}{{orderData.shopInfo.cityName}}{{orderData.shopInfo.areaName}}{{orderData.shopInfo.address}}
+				</view>
+
+			</view>
+			<view class="shopRightBox" @click="map">
+
+				<image src="../../static/img/icon_ditu.png" mode="" class="shopRightImg"></image>
+
+				<view class="shopRihgtTxt">地图</view>
+			</view>
+			<view class="shopsx"></view>
+			<view class="shopRightBox" @click="call">
+
+				<image src="../../static/img/icon_phone.png" mode="" class="shopRightImg"></image>
+
+				<view class="shopRihgtTxt">电话</view>
+			</view>
+		</view>
+
+		<!-- 订单内容 -->
+		<view class="information">
+			<view class="detailedTitle">订单内容</view>
+			
+			<view v-if="orderData.openSheetDetail.length>0" v-for="(item,index) in orderData.openSheetDetail" :key="index">
+				<view class="informationLine2">
+					<view class="goodsName">{{item.itemName}}</view>
+					<view class="salePrice"><span class="informationNum">¥</span>{{item.salePrice}}</view>
+				</view>
+			</view>
+			
+			<view v-if="orderData.data.sheetState != 1 && orderData.data.sheetState != 4" class="line"></view>
+			<view v-if="orderData.data.sheetState != 1 && orderData.data.sheetState != 4">
+				<view class="goodsName2">
+					券码信息({{quanMaList.length?quanMaList.length:0}}张可用)
+				</view>
+				<view class="detailedLine" v-for="(v,index) in orderData.OpenSheetQRCode">
+
+					<view v-if="v.writeoffState==1" class="detailedName">
+						<view class="redPoint"></view>
+						<view class="code">{{v.qrCode}}</view>
+						<view class="quanState">待使用</view>
+
+					</view>
+					<view v-if="v.writeoffState==3" class="detailedName">
+						<view class="redPoint"></view>
+						<view class="code old" >{{v.qrCode}}</view>
+						<view class="quanState2">已使用</view>
+					
+					</view>
+					
+					<image src="../../static/img/icon_erweima.png" mode="" style="width: 36rpx;height: 36rpx;"
+						v-if="v.writeoffState==1" @click="isShowMa=true"></image>
+				</view>
+			</view>
+
+		</view>
+
+		
+		<!-- 实付款 -->
+		<view class="money">
+			<view class="informationNum">实付款:</view>
+			<view class="informationNum" style="color: #FF0000;font-weight: bold;">¥{{orderData.data.realMoney}}</view>
+		</view>
+
+		<!-- 订单信息 -->
+		<view class="information">
+			<view class="detailedTitle">订单信息</view>
+			<view class="informationLine">
+				<view class="informationTxt">车牌号:</view>
+				<view class="informationNum">{{orderData.data.plateNumber}}</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">车型:</view>
+				<view class="informationNum"  style="width: 480rpx;">{{orderData.data.carModel}}</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">联系人:</view>
+				<view class="informationNum">{{orderData.data.customerName}}</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">手机号:</view>
+				<view class="informationNum">{{orderData.data.mobilePhone}}</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">预约时间:</view>
+				<view class="informationNum">{{orderData.data.hTime}}</view>
+			</view>
+			
+			
+			<view class="informationLine">
+				<view class="informationTxt">订单单号:</view>
+				<view class="informationNum">{{orderData.data.code}}<span class="codeCopy"
+						@click="copy(orderData.data.code)">复制</span></view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">下单人:</view>
+				<view class="informationNum">{{orderData.data.userMobilePhone}}</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">下单时间:</view>
+				<view class="informationNum">{{orderData.data.createTime}}</view>
+			</view>
+
+			<view class="informationLine">
+				<view class="informationTxt">订单类型:</view>
+				<view class="informationNum" style="width: 480rpx;">钣喷</view>
+			</view>
+
+		</view>
+
+		<!-- 支付信息 -->
+		<view class="information">
+			<view class="detailedTitle">支付信息</view>
+			<view class="informationLine">
+				<view class="informationTxt">支付状态:</view>
+				<view class="informationNum" v-if="orderData.data.payState==1">未支付</view>
+				<view class="informationNum" v-if="orderData.data.payState==2">已支付</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">支付方式:</view>
+				<view class="informationNum" v-if="orderData.data.payType==1">在线支付</view>
+				<view class="informationNum" v-if="orderData.data.payType==2">线下支付</view>
+			</view>
+			<view class="informationLine">
+				<view class="informationTxt">支付时间:</view>
+				<view class="informationNum">{{orderData.data.payTime?orderData.data.payTime:'-'}}</view>
+			</view>
+
+		</view>
+
+		<view style="height: 50rpx;background-color: #F4F5F7;"></view>
+
+		<view class="bottom" v-if="orderData.data.sheetState == 1">
+
+			<view class="cancel" @click="cancelBespeak">取消订单</view>
+			<view class="defer" @click="pay">立即支付</view>
+		</view>
+
+
+		<!-- 券码 -->
+		<view class="maBox" v-if="isShowMa==true" @click="isShowMa=false">
+			<view class="querenMa">
+				<view class="maTop">
+					<view class="maTitle">请到店出示券码即可开始服务</view>
+					<image @click="isShowMa=false" src="../../static/img/icon_delete.png" mode=""
+						style="width: 26rpx;height: 26rpx;margin-left: 10rpx;"></image>
+
+				</view>
+				<swiper class="swiper" circular  :autoplay="false" :indicator-dots="true" indicator-color="#CCCCCC" indicator-active-color="#D53533">
+					<swiper-item v-for="(item,index) in quanMaList">
+						<view class="swiper-item">
+							<view class="maCode">{{item}}</view>
+							<view class="maBoximg">
+								<tki-qrcode cid="qrcode1" ref="qrcode" :val="item" :size="400" :unit="unit"
+									:pdground="pdground" :icon="icon" :iconSize="iconsize" :lv="lv" :onval="onval"
+									:loadMake="loadMake" :usingComponents="true" @result="qrR" />
+							</view>
+						</view>
+					</swiper-item>
+					
+					
+				</swiper>
+				
+			
+			</view>
+		</view>
+
+
+	</view>
+</template>
+
+<script>
+	import tkiQrcode from "@/components/tki-qrcode/tki-qrcode.vue"
+	export default {
+		components: {
+			tkiQrcode
+		},
+		data() {
+			return {
+
+				id: '',
+				iStatusBarHeight:'',
+				
+				orderData: '',
+
+				onval: true, // val值变化时自动重新生成二维码
+				loadMake: true, // 组件加载完成后自动生成二维码
+				size: 500,
+				qrcodeShow: false,
+				qrcodeTop: '-100vh',
+				qrcodeTopVal: '',
+				ifShow: false,
+				val: '二维码', // 要生成的二维码值
+				unit: 'upx', // 单位
+				background: '#b4e9e2', // 背景色
+				foreground: '#309286', // 前景色
+				pdground: '#262637', // 角标色
+				icon: '', // 二维码图标
+				iconsize: 40, // 二维码图标大小
+				lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
+				src: '', // 二维码生成后的图片地址或base64
+				isShowMa: false,
+				quanMaList:[],
+				
+			}
+		},
+		onLoad(opt) {
+			 this.iStatusBarHeight = uni.getSystemInfoSync().statusBarHeight;
+			this.id = opt.id
+			
+
+			if (this.id) {
+				this.getData()
+			}
+			
+
+		},
+		
+
+		methods: {
+			
+			pay(){
+				this.$http('openMallOrder/unifiedPay', {
+					sheetId:this.id
+				},'POST').then(res => {
+					
+					if(res.code==0){
+						
+						this.requestPayment(res.data)
+					}else{
+						uni.showToast({
+							title: res.msg,
+							icon: 'none',
+							duration: 3000
+						});
+					}
+				 })
+			},
+			requestPayment(res){
+				var payInfo=res;
+				//console.log(payInfo)
+				//console.log(String(Date.now()))
+				var that=this;
+				uni.requestPayment({
+					provider: 'wxpay',
+					//timeStamp: String(Date.now()),
+					timeStamp: payInfo.timeStamp,
+					nonceStr: payInfo.nonceStr,
+					package:payInfo.package,
+					signType: payInfo.signType,
+					paySign: payInfo.paySign,
+					appid:payInfo.appId,	
+				
+				    success: function (res) {
+				        console.log('success:' + JSON.stringify(res));
+						 uni.showToast({
+							 title: '支付成功',
+							 icon:'none',
+							 duration: 2000
+						 });
+						that.getData()
+				    },
+				    fail: function (err) {
+					  console.log(err)
+				      uni.showToast({
+						 title: '支付失败',
+						 icon:'none',
+						 duration: 2000
+				      });
+					
+				    }
+				}); 
+			},
+			copy(txt) {
+				uni.setClipboardData({
+					data: txt,
+					success: function() {
+						uni.showToast({
+							title: '复制成功',
+							icon: 'none',
+							duration: 2000
+						});
+					}
+				});
+			},
+			upTime() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				var that = this
+				this.$http('openH5Indent/carOwner/updateTimeOfAppointment', {
+
+					id: this.id,
+					shopId: this.orderData.shopInfo.id,
+					billDate: this.billDate
+				}, 'POST').then(res => {
+					uni.hideLoading();
+					// var list = res.data.Items
+					var list = res.data
+					console.log("result+=", res.data);
+					uni.showToast({
+						title: '延期成功',
+						icon: 'none',
+						duration: 2000
+					});
+					setTimeout(function() {
+						that.getData();
+					}, 1000);
+
+
+				})
+			},
+			cancelBespeak(){
+				var that = this
+				uni.showModal({
+				    title: '提示',
+				    content: '是否取消该订单',
+					cancelText:'否',
+					confirmText:'是',
+				    success: function (res) {
+				        if (res.confirm) {
+							
+								uni.showLoading({
+									title: '加载中'
+								})
+								
+								that.$http('openH5Indent/updateSheetState', {
+							
+									id: that.id,
+							
+								}, 'POST').then(res => {
+									uni.hideLoading();
+									// var list = res.data.Items
+									
+									uni.showToast({
+										title: '取消成功',
+										icon: 'none',
+										duration: 2000
+									});
+									setTimeout(function() {
+										that.getData();
+									}, 1000);
+								})
+							
+				          
+				        } else if (res.cancel) {
+				           
+				        }
+				    }
+				});
+			},
+			
+			map() {
+				console.log("打开地图")
+				var that = this;
+				if (!that.orderData.shopInfo.lat || !that.orderData.shopInfo.lng) {
+					uni.showToast({
+						title: '该店铺未设置定位',
+						icon: 'none',
+						duration: 3000
+					});
+				} else {
+					uni.openLocation({
+						latitude: Number(that.orderData.shopInfo.lat),
+						longitude: Number(that.orderData.shopInfo.lng),
+						name: that.orderData.shopInfo.shopName,
+						address: that.orderData.shopInfo.provinceName + that.orderData.shopInfo.cityName + that
+							.orderData.shopInfo.areaName + that.orderData.shopInfo.address,
+						success: function() {
+							console.log('success');
+						},
+						fail(err) {
+							console.log(err)
+						}
+					});
+				}
+
+			},
+
+			call() {
+				uni.makePhoneCall({
+					phoneNumber: this.orderData.shopInfo.mobilePhone
+				});
+			},
+
+
+			getData() {
+				uni.showLoading({
+					title: '加载中'
+				});
+
+				this.$http('openH5Indent/queryOpenSheet', {
+
+					id: this.id,
+				}, 'GET').then(res => {
+					uni.hideLoading();
+					this.orderData = res.data;
+					if (this.quanMaList) {
+						this.quanMaList = [];
+					}
+					let maList = this.orderData.OpenSheetQRCode;
+					if (maList) {
+						maList.forEach(item =>{
+							if (item.writeoffState==1) {
+								this.quanMaList.push(item.qrCode);
+							}
+						})
+					}
+					
+					console.log('可用券码--',this.quanMaList);
+					
+				})
+			},
+			
+			goback() {
+				uni.navigateBack({
+				 	delta: 1
+				})
+			},
+			gohome(){
+				uni.switchTab({
+					url:'../../index/index'
+				})
+			},
+
+		},
+		onPullDownRefresh() {
+
+			this.getData()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+
+	}
+</script>
+
+<style scoped>
+	.box {
+		min-height: 100vh;
+		background: #F4F5F7;
+		padding-bottom: 135rpx;
+	}
+	.zdyNavBox{
+		width: 100vw;
+		background: #FFFFFF;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 9999999;
+	}
+	.zdyNav{
+		height: 44px;
+		display: flex;
+		justify-content: space-between;
+		
+		align-items: center;
+	}
+	
+	.backImg{
+		width: 44rpx;
+		height: 44rpx;
+		margin-left: 10rpx;
+		margin-right: 20rpx;
+	}
+	.homeImg{
+		width: 44rpx;
+		height: 44rpx;
+		
+	}
+	.zdyNavLeft{
+		display: flex;
+		align-items: center;
+	}
+	.zdyNavTitle{
+		
+		height: 44px;
+		background: #FFFFFF;
+		text-align: center;
+		font-size: 34rpx;
+		line-height: 44px;
+	}
+	
+
+	.top {
+		height: 190rpx;
+		background-color: #FF0000;
+
+	}
+
+	.orderState {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		padding-top: 40rpx;
+	}
+
+	.SheetState {
+		display: flex;
+		justify-content: center;
+		font-size: 36rpx;
+		font-weight: 500;
+		color: #FFFFFF;
+		margin-left: 15rpx;
+
+	}
+
+
+
+	.timeEditImg {
+		width: 25rpx;
+		height: 25rpx;
+		padding-left: 20rpx;
+	}
+
+
+
+	.shopBoximg {
+		width: 40rpx;
+		height: 40rpx;
+	}
+
+	.shopRightImg {
+		width: 44rpx;
+		height: 45rpx;
+	}
+
+	.shopsx {
+		width: 1px;
+		height: 50rpx;
+		background: #EEEEEE;
+		margin-top: 30rpx;
+		margin-left: 28rpx;
+	}
+
+	.shopBox {
+
+		display: flex;
+		padding: 30rpx 20rpx;
+		margin: 0rpx 24rpx;
+		margin-top: -60rpx;
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+
+	}
+
+	.shopCont {
+		width: 405rpx;
+		padding-left: 20rpx;
+
+	}
+
+	.shopName {
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #3C3C3C;
+		line-height: 42rpx;
+	}
+
+	.Address {
+		color: #999999;
+		font-size: 24rpx;
+		margin-top: 10rpx;
+	}
+
+	.shopRihgtTxt {
+		color: #999999;
+		font-size: 24rpx;
+
+	}
+
+	.shopRightBox {
+
+		padding-left: 28rpx;
+	}
+
+
+
+
+
+	.detailedTitle {
+		padding: 23rpx 20rpx;
+		display: flex;
+		text-align: center;
+		align-content: flex-start;
+		border-bottom: 1rpx solid #EEEEEE;
+
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #3C3C3C;
+	}
+
+
+	.detailedLine {
+		display: flex;
+		padding: 16rpx 20rpx;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.detailedImg {
+		width: 120rpx;
+		height: 120rpx;
+		border-radius: 10rpx;
+	}
+
+
+
+	.detailedName {
+		display: flex;
+		align-items: center;
+
+
+	}
+
+	.code {
+		font-size: 26rpx;
+		color: #333333;
+		font-weight: bold;
+		width: 180rpx
+	}
+
+	.old {
+		color: #999999;
+
+		font-weight: 400;
+		text-decoration: line-through;
+	}
+
+	.redPoint {
+		width: 10rpx;
+		height: 10rpx;
+		background: #FF0000;
+		border-radius: 10rpx;
+		margin-right: 10rpx;
+	}
+
+	.quanState {
+		font-size: 22rpx;
+		color: #F19D01;
+		padding: 0 10rpx;
+
+		border: 1rpx solid #F19D01;
+
+		border-radius: 4rpx;
+		margin-left: 20rpx;
+	}
+	.quanState2{
+		font-size: 22rpx;
+		color: #999999;
+		padding: 0 10rpx;
+		
+		border: 1rpx solid #DDDDDD;
+		
+		border-radius: 4rpx;
+		margin-left: 20rpx;
+	}
+
+
+
+	.information {
+
+		background: #FFFFFF;
+		border-radius: 10rpx;
+
+		margin: 20rpx 24rpx;
+		padding-bottom: 15rpx;
+	}
+
+	.informationLine {
+		display: flex;
+
+		padding: 15rpx 20rpx;
+	}
+
+	.informationLine2 {
+		display: flex;
+		justify-content: space-between;
+		font-size: 26rpx;
+		padding: 20rpx;
+		align-items: center;
+		padding-bottom: 0;
+	}
+
+	.salePrice {
+
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #333333;
+		line-height: 45rpx;
+	}
+
+	.money {
+		background: #FFFFFF;
+		border-radius: 10rpx;
+
+		margin: 20rpx 24rpx;
+
+		display: flex;
+		justify-content: space-between;
+		font-size: 26rpx;
+		padding: 30rpx 20rpx;
+	}
+
+	.informationTxt {
+		width: 190rpx;
+		font-size: 26rpx;
+		color: #999999;
+	}
+
+	.line {
+		height: 20rpx;
+		background-color: #FFFFFF;
+		border-bottom: 1rpx solid #EEEEEE;
+	}
+
+	.goodsName {
+		width: 80%;
+		color: #333333;
+		font-size: 26rpx;
+	}
+	.goodsName2{
+		padding: 20rpx 20rpx 15rpx;
+		
+		color: #333333;
+		font-size: 26rpx;
+	}
+
+	.informationNum {
+		color: #333333;
+		font-size: 26rpx;
+	}
+
+	.codeCopy {
+		width: 77rpx;
+		height: 36rpx;
+		background: #F4F5F7;
+		border-radius: 22rpx;
+		font-size: 24rpx;
+		color: #333333;
+		text-align: center;
+		line-height: 33rpx;
+		padding: 0 15rpx;
+		margin-left: 20rpx;
+	}
+
+	.orderBottom {
+		width: 750rpx;
+		height: 98rpx;
+		background: #FFFFFF;
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		display: flex;
+		justify-content: flex-end;
+	}
+
+
+
+
+
+
+	.bottom {
+		display: flex;
+		justify-content: flex-end;
+		padding: 20rpx;
+		background-color: #FFFFFF;
+		align-items: center;
+		height: 98rpx;
+		width: 100vw;
+		position: fixed;
+		bottom: 0rpx;
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.cancel {
+		color: #3C3C3C;
+		font-size: 28rpx;
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 36rpx;
+		border: 1rpx solid #DDDDDD;
+		text-align: center;
+		line-height: 56rpx;
+		margin-right: 40rpx;
+	}
+
+	.defer {
+		color: #D53533;
+		font-size: 28rpx;
+		width: 150rpx;
+		height: 56rpx;
+		border-radius: 36rpx;
+		border: 1rpx solid #D53533;
+		text-align: center;
+		line-height: 56rpx;
+		margin-right: 40rpx;
+	}
+
+	.itemBox {
+		margin: 20rpx;
+		border-radius: 10rpx;
+		border: 2rpx solid #EEEEEE;
+	}
+
+	.itemTop {
+		padding: 18rpx 20rpx;
+		padding-right: 0;
+		background-color: #FFEFD5;
+
+		display: flex;
+		justify-content: space-between;
+		align-content: center;
+	}
+
+	.topTitle {
+		width: 104rpx;
+		font-size: 26rpx;
+		color: #333333;
+		margin-right: 20rpx;
+		text-align: right;
+	}
+	
+
+	.leftItem {
+		font-size: 26rpx;
+		color: #333333;
+		margin-right: 20rpx;
+		flex-grow: 1;
+		/* 隐藏文字显示 ...不换行 */
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+
+	.itemContent {
+		padding: 20rpx;
+		padding-right: 0;
+		background-color: #FFFFFF;
+
+		display: flex;
+		justify-content: space-between;
+		align-content: center;
+	}
+
+	.maBox {
+		width: 100%;
+		height: 100vh;
+		background: rgba(0, 0, 0, 0.4);
+		position: fixed;
+		left: 0;
+		top: 0;
+		z-index: 9999;
+	}
+
+	.querenMa {
+		width: 578;
+		height: 640rpx;
+		background: #ffffff;
+		margin: 0 86rpx;
+		margin-top: 50%;
+		border-radius: 24rpx;
+	}
+
+	.maTop {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 30rpx 20rpx 15rpx;
+	}
+
+
+	.maTitle {
+		color: #666666;
+		font-size: 26rpx;
+		text-align: center;
+		padding-left: 100rpx;
+	}
+	.swiper{
+		width: 100%;
+		height: 85%;
+		background: #FFFFFF;
+		
+	}
+	.swiper-item{
+		width: 100%;
+		height: 100%;
+	}
+	
+	
+	.maCode {
+
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #333333;
+		line-height: 42rpx;
+		margin-bottom: 40rpx;
+		text-align: center;
+	}
+
+	.maBoximg {
+		width: 400rpx;
+		height: 400rpx;
+		margin-left: 86rpx;
+	}
+</style>

BIN
static/img/icon_delete.png


BIN
static/img/icon_ditu.png


BIN
static/img/icon_erweima.png


BIN
static/img/icon_order_def.png


BIN
static/img/icon_star.png


BIN
static/img/icon_store.png


BIN
static/img/little_rightArrow.png


BIN
static/img/nav_icon_home.png