Ver código fonte

Merge branch 'master' of http://47.98.226.240:3000/twt/wxThird

* 'master' of http://47.98.226.240:3000/twt/wxThird:
  1.活动列表
  钣喷提交订单
  1.活动订单详情
  1.钣喷
  Vue.prototype.$request =request
  1.紧急救援
  1.钣喷 订单确认

# Conflicts:
#	pages.json
zs y 2 anos atrás
pai
commit
98356a9fd1

+ 1 - 0
main.js

@@ -5,6 +5,7 @@ Vue.prototype.$common =common
 
 import request from '@/utils/request.js'
 Vue.prototype.$http = request.http
+Vue.prototype.$request =request
 import store from './store'
 Vue.prototype.$store = store // 定义成全局组件
 // #ifndef VUE3

+ 46 - 4
pages.json

@@ -239,20 +239,62 @@
 			}
 		
 		}
-        ,{
+        ,{
             "path" : "pages/index/personalCard",
             "style" :                                                                                    
             {
                 "navigationBarTitleText": "个人名片",
-                "enablePullDownRefresh": false
+				 "enablePullDownRefresh": false
+            }
+        },
+		{
+			"path" : "pages/index/paintSure",
+			"style" :                                                                                    
+			{
+			    "navigationBarTitleText": "订单确认",
+			    "enablePullDownRefresh": false
+			}
+		}
+        ,{
+
+            "path" : "pages/user/expertServices",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "服务专家",
+				"enablePullDownRefresh": true
+           } 
+        },
+		{
+			"path" : "pages/index/paintShopList",
+			"style" :                                                                                    
+			{
+			    "navigationBarTitleText": "选择门店",
+			    "enablePullDownRefresh": true
+			}
+		},
+		{
+			"path": "pages/user/feedBack",
+			"style": {
+				"navigationBarTitleText": "意见反馈",
+				"navigationBarBackgroundColor": "#FFFFFF",
+				"enablePullDownRefresh": false
+			}
+		
+		}
+        ,{
+            "path" : "pages/user/myOrder/paintOrderDetail",
+            "style" :                                                                                    
+            {
+                "navigationStyle": "custom",
+                "enablePullDownRefresh": true
             }
             
         }
         ,{
-            "path" : "pages/user/expertServices",
+            "path" : "pages/user/myOrder/activityOrderDetail",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "服务专家",
+                "navigationStyle": "custom",
                 "enablePullDownRefresh": true
             }
             

+ 240 - 109
pages/activity/activity.vue

@@ -1,112 +1,243 @@
-<template>
-<view class="box">
-	<view>集客活动</view>
-	
-	<!-- 手机号授权 -->
-	<view class="authorizBox" v-if="authorizShow" @click="authorizShow=false">
-		<view class="authorizCont" @click.stop="">
-			<view class="authorizName">{{wxOpenData.miniAppName}}</view>
-			<view class="authorizMs">您好,欢迎访问本店,授权手机号登录能获取我们最新的促销活动哦~</view>
-			<button class="authorizContbutton" type="default" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">授权</button>
-		</view>
-		<view style="text-align: center;padding-top: 56rpx;">
-			<image src="../../static/timg/icon_guanbi@2x.png" mode="" class="authorizCloseImg"></image>
-		</view>
-	</view>
-</view>
-</template>
-
-<script>
-	
-	export default {
-		components: {
-			
-		},
-		
-		data() {
-			return {
-				userInfo:'',
-				authorizShow:false,
-				code:'',
-				wxOpenData:'',
-			}
-		},
-		onLoad() {
-			this.userInfo=this.$store.state.userInfo;
-			this.wxOpenData=this.$store.state.wxOpenData
-			//this.getOrderTimes()
-		},
-		
-		methods: {
-			
-			
-		}
+<template>
+	<view class="box">
+
+		<view class="itemHistory" v-for="(item,index) in itemData" :key="index" @click="goDetail(item.id)">
+			<image :src="item.img" mode="" class="itemImg"></image>
+			<view class="timeBox">
+				<image src="../../static/img/bg_huangse.png" mode="" class="state"></image>
+				<view class="time">{{item.CreateTime}}</view>
+			</view>
+			<view class="name">{{item.PlateNumber}}</view>
+
+		</view>
+
+		<!-- 上拉 加载更多 -->
+		<view class="noMore" v-if="noMoreShow && (itemData.length!=0)">没有更多数据</view>
+		<!-- 无数据空白页 -->
+		<nodata v-if="itemData.length==0"></nodata>
+
+
+		<!-- 手机号授权 -->
+		<view class="authorizBox" v-if="authorizShow" @click="authorizShow=false">
+			<view class="authorizCont" @click.stop="">
+				<view class="authorizName">{{wxOpenData.miniAppName}}</view>
+				<view class="authorizMs">您好,欢迎访问本店,授权手机号登录能获取我们最新的促销活动哦~</view>
+				<button class="authorizContbutton" type="default" open-type="getPhoneNumber"
+					@getphonenumber="decryptPhoneNumber">授权</button>
+			</view>
+			<view style="text-align: center;padding-top: 56rpx;">
+				<image src="../../static/timg/icon_guanbi@2x.png" mode="" class="authorizCloseImg"></image>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script scoped>
+	import nodata from '../../components/nodata/nodata.vue'
+	export default {
+		components: {
+			nodata,
+		},
+
+		data() {
+			return {
+				userInfo: '',
+				authorizShow: false,
+				code: '',
+				wxOpenData: '',
+				page: 1,
+				itemData: [1,2,3,4],
+				noMoreShow: false,
+			}
+		},
+		onLoad() {
+			this.userInfo = this.$store.state.userInfo;
+			this.wxOpenData = this.$store.state.wxOpenData
+
+			this.page = 1
+			// this.myOrderCoupon()
+		},
+
+		methods: {
+			goDetail(id) {
+				uni.navigateTo({
+					url: 'reportDetail?id=' + id
+				})
+			},
+			myOrderCoupon() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				this.$http('opencheckSheet/getTestList', {
+
+					// page: this.page,
+					// limit: 10,
+				}, 'GET').then(res => {
+					uni.hideLoading();
+					// var list = res.data.Items
+					var list = res.data
+
+					// 处理 undefined和null转为空白字符串
+					// list.forEach((item, index) => {
+					// 	for (const key in item) {
+					// 		item[key] = this.$praseStrEmpty(item[key])
+					// 	}
+					// })
+
+					if (this.page == 1) {
+						this.itemData = list
+					} else {
+						this.itemData = this.itemData.concat(list)
+					}
+
+					if (list.length < 10) {
+						this.noMoreShow = true
+					} else {
+						this.noMoreShow = false
+					}
+
+
+
+
+
+				})
+			},
+
+
+		},
+
+		// 下拉刷新 上拉加载更多
+		onPullDownRefresh() {
+			this.page = 1
+			this.myOrderCoupon()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		onReachBottom() {
+			// this.page++;
+			this.myOrderCoupon()
+		},
+	}
+</script>
+
+<style scoped lang="less">
+	.box {
+		background: #F4F5F7;
+		min-height: 100vh;
+		padding-top: 20rpx;
+	}
+
+	.authorizBox {
+		width: 100vw;
+		height: 100vh;
+		background: rgba(0, 0, 0, 0.5);
+		position: fixed;
+		top: 0;
+		left: 0;
+	}
+
+	.authorizCont {
+		margin-top: 30vh;
+		width: 564rpx;
+		height: 408rpx;
+		background: #FFFFFF;
+		border-radius: 24rpx;
+		margin-left: 93rpx;
+		position: relative;
+	}
+
+	.authorizCloseImg {
+		width: 62rpx;
+		height: 62rpx;
+	}
+
+	.sqLogoBox {
+		width: 180rpx;
+		height: 180rpx;
+		background: #FFFFFF;
+		border-radius: 90rpx;
+		text-align: center;
+		position: absolute;
+		top: -50rpx;
+		left: 192rpx;
+	}
+
+	.authorizName {
+		color: #333333;
+		line-height: 42rpx;
+		font-size: 30rpx;
+		text-align: center;
+		padding-top: 58rpx;
+	}
+
+	.authorizMs {
+		color: #999999;
+		line-height: 36rpx;
+		font-size: 26rpx;
+		width: 452rpx;
+		padding-top: 24rpx;
+		text-align: center;
+		margin-left: 56rpx;
+	}
+
+	.authorizContbutton {
+		width: 422rpx;
+		height: 88rpx;
+		background: #D53533;
+		border-radius: 44rpx;
+		line-height: 88rpx;
+		text-align: center;
+		font-size: 30rpx;
+		color: #FFFFFF;
+		margin-top: 62rpx;
+		margin-left: 71rpx;
+	}
+
+	.itemHistory {
+		margin: 0rpx 24rpx 20rpx;
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+
+	}
+
+	.itemImg {
+		height: 280rpx;
+
+	}
+
+	.timeBox {
+		display: flex;
+		margin-top: -53rpx;
+		align-items: flex-end;
 	}
-</script>
-
-<style scoped lang="less">
-.box{
-	background: #F4F5F7;
-	min-height: 100vh;
-}
-.authorizBox{
-		width: 100vw;
-		height: 100vh;
-		background: rgba(0, 0, 0, 0.5);
-		position: fixed;
-		top: 0;
-		left: 0;
-	}
-	.authorizCont{
-		margin-top: 30vh;
-		width: 564rpx;
-		height: 408rpx;
-		background: #FFFFFF;
-		border-radius: 24rpx;
-		margin-left: 93rpx;
-		position: relative;
-	}
-	.authorizCloseImg{
-		width: 62rpx;
-		height: 62rpx;
-	}
-	.sqLogoBox{
-		width: 180rpx;
-		height: 180rpx;
+	.state{
+		width: 102rpx;
+		height: 53rpx;
+	}
+
+	.time {
+		padding: 5rpx 10rpx;
+		color: #FFFFFF;
+		font-size: 24rpx;
+		background: #000000;
+
+		border-radius: 0 10rpx 0 0;
+	}
+
+	.name {
+		padding: 24rpx 20rpx;
+		color: #333333;
+		font-size: 28rpx;
 		background: #FFFFFF;
-		border-radius: 90rpx;
-		text-align: center;
-		position: absolute;
-		top: -50rpx;
-		left: 192rpx;
-	}
-	.authorizName{
-		color: #333333;
-		line-height: 42rpx;
-		font-size: 30rpx;
-		text-align: center;
-		padding-top: 58rpx;
-	}
-	.authorizMs{
-		color: #999999;
-		line-height: 36rpx;
-		font-size: 26rpx;
-		width: 452rpx;
-		padding-top: 24rpx;
-		text-align: center;
-		margin-left: 56rpx;
-	}
-	.authorizContbutton{
-		width: 422rpx;
-		height: 88rpx;
-		background: #D53533;
-		border-radius: 44rpx;
-		line-height: 88rpx;
-		text-align: center;
-		font-size:30rpx;
-		color: #FFFFFF;
-		margin-top: 62rpx;
-		margin-left:71rpx;
-	}
-
+		border-radius: 0 0 10rpx 10rpx;
+	}
+
+
+	.noMore {
+		text-align: center;
+		line-height: 50rpx;
+		color: #999999;
+		font-size: 28rpx;
+	}
 </style>

+ 15 - 2
pages/index/paint.vue

@@ -72,7 +72,7 @@
 					<view class="hejiMs">合计数量:{{selectItemList.length}}</view>
 				</view>
 			</view>
-			<view class="settlement" @click="settlement">确定</view>
+			<view class="settlement" @click="sure">确定</view>
 		</view>
 
 		<view class="caidanTk" v-show="qingdanShow" @click="qingdanShow=false">
@@ -125,7 +125,20 @@
 		onLoad() {
 			this.getData();
 		},
-		methods: {
+		methods: {
+			sure(){
+				if (this.selectItemList.length == 0) {
+					uni.showToast({
+						title: '请选择项目',
+						icon: 'none',
+						duration: 3000
+					});
+					return false;
+				}
+				uni.navigateTo({
+					url:'paintSure?itemList='+JSON.stringify(this.selectItemList)
+				})
+			},
 			goCarlist() {
 				uni.navigateTo({
 					url: '../user/addCar/cailist'

+ 343 - 0
pages/index/paintShopList.vue

@@ -0,0 +1,343 @@
+<template>
+	<view class="box">
+
+		<view class="shopline" v-for="(item,index) in queryShopList" @click="goDetail(item)">
+			<view class="shoplineLeft">
+				<image :src="item.photoPath" mode="" class="shopImg" v-if="item.photoPath"></image>
+				<image src="../../static/img/noimg.png" mode="" class="shopImg" v-else></image>
+			</view>
+			<view class="shopright">
+				<view class="shopTop">
+					<view class="shopName">{{item.shopName}}</view>
+				</view>
+				<view class="brandsBg" v-if="item.brands">
+					<view class="brands" v-for="(v,index2) in item.brands.split(',')">{{v}}</view>
+				</view>
+				<view class="shopTime"><span v-if="item.startTime">{{item.startTime}}</span> - <span
+						v-if="item.endTime">{{item.endTime}}</span> </view>
+				<view class="shopBottomLeft">
+					<span class="shopaddress"
+						v-if="item.address">{{item.provinceName}}{{item.cityName}}{{item.areaName}}{{item.address}}</span>
+					<span v-if="item.distance&&item.distance!= '0.00'">{{item.distance}}km</span>
+				</view>
+			</view>
+
+		</view>
+
+		<!-- 上拉 加载更多 -->
+		<view class="noMore" v-if="noMoreShow && (queryShopList.length!=0)">没有更多数据</view>
+		<!-- 无数据空白页 -->
+		<nodata v-if="queryShopList.length==0"></nodata>
+
+	</view>
+</template>
+
+<script>
+	import nodata from '../../components/nodata/nodata.vue'
+	export default {
+		components: {
+			nodata,
+		},
+
+		data() {
+			return {
+				location: {
+					lng: '',
+					lat: '',
+				},
+				queryShopList: '',
+				noMoreShow: false,
+                goodsId:'',
+
+
+			}
+		},
+
+		onLoad(opt) {
+			
+			
+			this.getqueryShopList() //获取全部门店列表
+		},
+		methods: {
+
+
+			getqueryShopList() {
+				uni.showLoading({
+					title: '加载中'
+				})
+				this.$http('openSheetMetalSprayPaint/queryBpshopList', {
+     //                goodsId:this.goodsId,
+					// lat: this.location.lat ? this.location.lat : '',
+					// lng: this.location.lng ? this.location.lng : '',
+				}, 'GET').then(res => {
+					uni.hideLoading();
+					this.queryShopList = res.data
+					//console.log('list+=', this.queryShopList);
+
+				})
+			},
+
+			goDetail(item) {
+				 this.$store.commit('mutationsckshopInfo', item)	
+				uni.navigateBack({
+					delta:-1
+				})
+				// uni.navigateTo({
+				// 	url: '../shop/shopDetail?id=' + item.shopId
+				// })
+			}
+		},
+		
+		// 下拉刷新
+		onPullDownRefresh() {
+			
+			this.getqueryShopList()
+			setTimeout(function() {
+				uni.stopPullDownRefresh();
+			}, 1000);
+		},
+		
+	}
+</script>
+
+<style scoped>
+	.box {
+		min-height: 100vh;
+		background-color: #F4F5F7;
+		padding-top: 20rpx;
+		padding-bottom: 60rpx;
+	}
+
+	.shopline {
+		margin: 0rpx 24rpx 20rpx;
+		padding: 20rpx;
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+
+		display: flex;
+	}
+
+
+	.nodataImg {
+		width: 400rpx;
+		padding-top: 100rpx;
+	}
+
+	.noTxt {
+		font-size: 36rpx;
+		color: #999999;
+		padding-top: 50rpx;
+	}
+
+	.nodataBox {
+		text-align: center;
+	}
+
+	.shopImg {
+		width: 146rpx;
+		height: 146rpx;
+		border-radius: 6rpx;
+	}
+
+	.shopBox {
+		padding-top: 30rpx;
+		display: flex;
+	}
+
+	.flex {
+		display: flex;
+		justify-content: space-between;
+	}
+
+	.shopCont {
+		padding-left: 22rpx;
+		width: 520rpx;
+	}
+
+	.shopName {
+		color: #333333;
+		font-size: 26rpx;
+		font-weight: 600;
+	}
+
+	.span1 {
+		color: #FF4F00;
+		font-size: 36rpx;
+	}
+
+	.span2 {
+		color: #FF4F00;
+		font-size: 22rpx;
+	}
+
+	.span3 {
+		color: #333333;
+		font-size: 22rpx;
+		padding-left: 22rpx;
+	}
+
+	.shopBq {
+		color: #FF4F00;
+		font-size: 22rpx;
+		border-radius: 4rpx;
+		border: 1px solid #FF4F00;
+		line-height: 30rpx;
+		height: 30rpx;
+		padding: 0rpx 5rpx;
+		margin-top: 10rpx;
+	}
+
+	.brandsBg {
+		display: flex;
+        height: 38rpx;
+		flex-wrap: wrap;
+		align-items: center;
+		overflow: hidden;
+		padding: 5rpx 0rpx;
+
+	}
+
+	.brands {
+		border-radius: 4rpx;
+		padding: 0 5rpx;
+		color: #F19D01;
+		height: 28rpx;
+		border: 1px solid #F19D01;
+
+		font-size: 20rpx;
+		line-height: 28rpx;
+		margin: 5rpx 10rpx 5rpx 0rpx;
+	}
+
+	.timeBg {
+		display: flex;
+
+	}
+
+	.shopTime {
+		color: #666666;
+		font-size: 22rpx;
+	}
+
+	.addressBox {
+		color: #666666;
+		font-size: 22rpx;
+	}
+
+	.shopNameSearchInput {
+		width: 500rpx;
+	}
+
+	.colorCS {
+		color: #FF4F00;
+	}
+
+	.shopbox {
+		padding: 0 16rpx;
+	}
+
+
+
+	.shopImg {
+		width: 146rpx;
+		height: 146rpx;
+		border-radius: 10rpx;
+	}
+
+	.shopCallImg {
+		width: 38rpx;
+		height: 46rpx;
+	}
+
+	.shopTop {
+		display: flex;
+		justify-content: space-between;
+		width: 510rpx;
+	}
+
+	.shopright {
+		padding-left: 20rpx;
+	}
+
+	.shopName {
+		font-size: 26rpx;
+		color: #333333;
+		line-height: 37rpx;
+		width: 450rpx;
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+	}
+
+	.shopScore1 {
+		font-size: 36rpx;
+		font-weight: bold;
+		color: #FF4F00;
+		height: 50rpx;
+		line-height: 50rpx;
+	}
+
+	.shopScore11 {
+		font-size: 22rpx;
+		color: #FF4F00;
+		margin-right: 14rpx;
+
+	}
+
+	.shopScore2 {
+		font-size: 22rpx;
+		color: #666666;
+		margin-right: 14rpx;
+		padding: 8rpx 0;
+	}
+
+	.shopScore3 {
+		font-size: 22rpx;
+		color: #333333;
+		padding-left: 20rpx;
+	}
+
+
+
+	.Btn {
+		width: 104rpx;
+		height: 56rpx;
+		background: #FF2400 linear-gradient(135deg, #FD5300 0%, #FF270A 100%);
+		border-radius: 6rpx;
+		font-size: 26rpx;
+		text-align: center;
+		color: #FFFFFF;
+		line-height: 56rpx;
+	}
+
+	.shopBottom {
+		display: flex;
+
+	}
+
+	.shopBottomLeft {
+
+		font-size: 25rpx;
+		color: #666666;
+		line-height: 30rpx;
+		padding-top: 10rpx;
+		display: flex;
+		justify-content: space-between;
+		padding-right: 10rpx;
+	}
+
+	.shopaddress {
+		width: 400rpx;
+		/* 隐藏文字显示 ...不换行 */
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+
+	.noMore {
+		text-align: center;
+		line-height: 50rpx;
+		color: #999999;
+		font-size: 28rpx;
+	}
+</style>

+ 679 - 0
pages/index/paintSure.vue

@@ -0,0 +1,679 @@
+<template>
+	<view class="box">
+		<view class="topBox"></view>
+		<view class="yuanhu"></view>
+		<view class="carBox">
+			<view class="left">
+				<image :src="carInfo.brandLogo" mode="widthFix" class="brandLogo" v-if="carInfo.brandLogo">
+					<img src="../../static/timg/nocar.png" alt="" class="brandLogo" v-else>
+
+				</image>
+			</view>
+			<view class="right">
+				<view class="carPlate">{{carInfo.plateNumber}}</view>
+				<view class="car" v-if="carInfo.carModel">{{carInfo.carModel}}</view>
+				<view class="car" v-else>暂无</view>
+			</view>
+
+		</view>
+		<view class="cont">
+			<view class="contKk">
+
+				<view class="contLine">
+					<view class="contlineLeft">联系人</view>
+					<view class="contlineRight">
+						<view class="contlineRight">{{customerName}}</view>
+					</view>
+				</view>
+				<view class="contLine">
+					<view class="contlineLeft">手机号</view>
+					<view class="contlineRight">
+						<view class="contlineRight">{{mobilePhone}}</view>
+					</view>
+				</view>
+
+				<view class="contLine">
+					<view class="contlineLeft">
+						<image src="../../static/img/icon_star.png" mode="" class="star"></image>
+						服务门店
+					</view>
+					<view class="contlineRight carModelRight" @click="paintShopList">
+						<span class="carModel" :class="{noColor:!shopInfo.shopName}">{{shopInfo.shopName?shopInfo.shopName:'选择服务门店'}}</span>
+						<image src="../../static/img/little_rightArrow.png" mode="" class="contlineRightJt"></image>
+					</view>
+				</view>
+
+				<view class="contLine">
+					<view class="contlineLeft">
+						<image src="../../static/img/icon_star.png" mode="" class="star"></image>
+						预约时间
+					</view>
+					<view class="contlineRight carModelRight" @click="cktime">
+						<span class="carModel" :class="{noColor:!billDate}">{{billDate?billDate:'选择到店服务时间'}}</span>
+						<image src="../../static/img/little_rightArrow.png" mode="" class="contlineRightJt"></image>
+					</view>
+				</view>
+
+			</view>
+
+			<view class="contKk" style="margin-top:20rpx;">
+				<view class="detailedTitle">支付方式</view>
+				<view class="contLine " style="border-bottom: none;">
+					<view class="payLeft" v-if="PayType==1">
+						<image src="../../static/img/icon_weixinzhifu.png" mode="" class="zhifuImg"></image>
+						微信支付
+					</view>
+					<view class="payLeft" v-if="PayType==2">
+						<image src="../../static/img/icon_xianxia.png" mode="" class="zhifuImg"></image>
+						线下支付
+					</view>
+					<!-- <view class="contlineRight">
+						<image src="../../static/img/icon_selectN.png" mode="" class="selectBtn"></image>
+					</view> -->
+				</view>
+			</view>
+		</view>
+
+		<view style="height:120rpx"></view>
+		<view class="bottomBox">
+			<view class="bottomLeft">
+				<view class="bottomLeftLine">合计 <span>¥</span> <span class="bottomPrice">{{totalMoney}}</span> </view>
+				
+			</view>
+			<view class="bottomBtn" @click="submit">提交订单</view>
+		</view>
+		
+		<timeSelect ref="timeSelect" :timedata="timedata" @changeTime="changeTime"></timeSelect>
+	</view>
+</template>
+
+<script>
+	import timeSelect from '@/components/timeSelect/timeSelect.vue'
+	export default {
+		components: {
+			timeSelect
+		},
+		
+		data() {
+			return {
+				userInfo: '',
+				goodsnum: 1,
+				id: '',
+				info: '',
+				carInfo: '',
+				shopInfo:{},
+				goodsInfo: '',
+				totalMoney: '',
+				yhMoney: 0,
+				customerName: '',
+				mobilePhone: '',
+				comment: '',
+				mydata: '',
+				orderData: '',
+				PayType:0,
+				timedata:'',
+				billDate:'',
+				itemList:[],
+				sheetDetail:[],
+			}
+		},
+		onLoad(opt) {
+			this.itemList = JSON.parse(opt.itemList);
+            console.log(this.itemList)
+			this.itemList.forEach(item=>{
+				var obj={
+					itemId:item.id,
+					itemName:item.name,
+					itemQty:1,
+					salePrice:item.money,
+					totalPrice:item.money,
+				}
+				this.sheetDetail.push(obj)
+			})
+			this.goodsnum = opt.itemQty;
+			//console.log(this.carInfo)
+			this.userInfo = uni.getStorageSync("userInfo");
+			this.goodsInfo = uni.getStorageSync("goodsDetail");
+			this.jsMoney()
+			//this.openGoodsDetailById()
+			/* var a=[
+				{name:1},{name:2}
+			]
+			var b=a.map(i=>i.name);
+			console.log(b) */
+			this.$http('openreservation/getInfo', {
+				lat: '',
+				lng: '',
+			}, 'GET').then(res => {
+				this.mydata = res.data
+				this.customerName = this.mydata.customerInfo.customerName
+				this.mobilePhone = this.mydata.customerInfo.mobilePhone
+				this.shopInfo = this.mydata.shopInfo
+				this.shopID=this.shopInfo.id
+				uni.setStorage({
+					key: 'yyshopInfo',
+					data:this.shopInfo,
+					 success: function () {
+					    
+					 }
+				}); 
+				
+				console.log('默认服务门店-=',this.shopInfo)
+			})
+			
+			this.$http('openSheetMetalSprayPaint/queryPayType', {
+				
+			}, 'GET').then(res => {
+				this.PayType = res.data.PayType
+				
+				
+			})
+		},
+		onShow() {
+			this.carInfo = this.$store.state.carInfo;
+			this.shopInfo=this.$store.state.ckshopInfo;
+			this.shopInfo.id = this.shopInfo.shopId
+			this.shopID=this.shopInfo.id
+			
+			uni.setStorage({
+				key: 'yyshopInfo',
+				data:this.shopInfo,
+				 success: function () {
+				    
+				 }
+			}); 
+			console.log('服务门店选择过-=',this.shopInfo)
+		},
+		methods: {
+			changeTime(data){
+				console.log(data)
+				this.billDate=data
+			},
+			cktime(){
+				 this.$refs.timeSelect.open();
+			},
+			submit() {
+				if (this.shopID == '') {
+					uni.showToast({
+						title: '请选择服务门店',
+						icon: 'none',
+						duration: 3000
+					});
+					return false;
+				}
+				if (this.billDate == '') {
+					uni.showToast({
+						title: '请选择到店服务时间',
+						icon: 'none',
+						duration: 3000
+					});
+					return false;
+				}
+				//"bizType:1商品2项目3套餐
+				var params = {
+					sheetType:'5',
+					sheetContent: '钣喷',
+					customerName: this.customerName,
+					mobilePhone: this.mobilePhone,
+					plateNumber: this.carInfo.plateNumber,
+					carModel: this.carInfo.carModel,
+					totalMoney: this.totalMoney,
+					shopId: this.shopID,
+					comment: this.comment,
+					hTime: this.billDate,
+					sheetDetail: JSON.stringify(this.sheetDetail),
+					payType:this.PayType,
+				}
+				uni.showLoading({
+					title: '加载中'
+				})
+				this.$http('openMallOrder/submitOrder', params, 'POST').then(res => {
+					uni.hideLoading();
+					if (res.code == 0) {
+						this.orderData = res.data;
+						if(this.PayType==1){
+							this.unifiedPay(res.data)
+						}else{
+							uni.showToast({
+								title: '提交成功',
+								icon: 'none',
+								duration: 2000
+							});
+						}
+						
+					} else {
+						uni.showToast({
+							title: res.msg,
+							icon: 'none',
+							duration: 3000
+						});
+						if (this.orderData.sheetType==5){
+							uni.navigateTo({
+								url: "../user/myOrder/paintOrderDetail?id=" +that.orderData.id
+							})
+						}
+					}
+				})
+			},
+			unifiedPay(res) {
+				this.$http('openMallOrder/unifiedPay', {
+					sheetId: res.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,
+					/* provider: 'wxpay',
+					orderInfo:{
+						"appid":payInfo.appid,  // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
+						"noncestr": payInfo.nonceStr, // 随机字符串
+						 "package": "Sign=WXPay",         // 固定值
+						"partnerid":payInfo.mchId,      // 微信支付商户号
+						"prepayid": payInfo.prepayId, // 统一下单订单号 
+						"timeStamp": String(Date.now()),      // 时间戳(单位:秒)
+						"sign": payInfo.sign // 签名,这里用的 MD5/RSA 签名
+					}, */
+					success: function(res) {
+						console.log('success:' + JSON.stringify(res));
+						uni.showToast({
+							title: '支付成功',
+							icon: 'none',
+							duration: 2000
+						});
+						if ((that.orderData.sheetType == 1) || (that.orderData.sheetType == 2) || (that
+								.orderData.sheetType == 3)) {
+							uni.redirectTo({
+								url: "../user/myOrder/mallOrderDetail?id=" + that.orderData.id +
+									"&SheetType=" + that.orderData.sheetType
+							})
+						}else if (that.orderData.sheetType==5){
+							uni.navigateTo({
+								url: "../user/myOrder/paintOrderDetail?id=" +that.orderData.id
+							})
+						}
+
+					},
+					fail: function(err) {
+						console.log(err)
+						uni.showToast({
+							title: '支付失败',
+							icon: 'none',
+							duration: 2000
+						});
+						console.log(that.orderData)
+						if (that.orderData.sheetType == 1 || that.orderData.sheetType == 2 || that.orderData
+							.sheetType == 3) {
+							console.log("商城订单s")
+							uni.redirectTo({
+								url: "../user/myOrder/mallOrderDetail?id=" + that.orderData.id +
+									"&SheetType=" + that.orderData.sheetType
+							})
+						}else if (that.orderData.sheetType==5){
+							uni.navigateTo({
+								url: "../user/myOrder/paintOrderDetail?id=" +that.orderData.id
+							})
+						}
+					}
+				});
+			},
+			openGoodsDetailById() {
+				this.$http('openMall/openGoodsDetailById', {
+					id: this.id
+				}, 'GET').then(res => {
+					this.info = res.data
+				})
+			},
+			goINdex() {
+				uni.switchTab({
+					url: '../index/index'
+				})
+			},
+			paintShopList() {
+				uni.navigateTo({
+					url: 'paintShopList'
+				})
+			},
+			calculation(type) {
+				if (type == 1) {
+					if (this.goodsnum > 1) {
+						this.goodsnum--
+						this.jsMoney()
+					}
+				} else {
+					if (this.goodsInfo.oneQty > this.goodsnum) {
+						this.goodsnum++
+						this.jsMoney()
+					}
+				}
+			},
+			jsMoney() {
+				
+				var money = 0.00
+				this.itemList.forEach((item)=>{
+					money += item.money
+				})
+				this.totalMoney = money;
+				
+				// if (this.goodsInfo.salePrice) {
+				// 	this.totalMoney = this.goodsInfo.salePrice * this.goodsnum;
+				// 	if (this.goodsInfo.scribingPrice) {
+				// 		var wyh = this.goodsInfo.scribingPrice * this.goodsnum;
+				// 		this.yhMoney = wyh - this.totalMoney;
+				// 		console.log(this.yhMoney)
+				// 		this.yhMoney = this.yhMoney.toFixed(2)
+				// 	} else {
+				// 		this.yhMoney = 0
+				// 	}
+				// 	this.totalMoney = this.totalMoney.toFixed(2)
+				// } else {
+				// 	this.totalMoney = this.goodsInfo.scribingPrice * this.goodsnum
+				// 	this.totalMoney = this.totalMoney.toFixed(2)
+				// 	this.yhMoney = 0
+				// }
+			}
+
+		}
+	}
+</script>
+
+<style scoped lang="less">
+	.bottomBox {
+		width: 750rpx;
+		height: 120rpx;
+		background: #FFFFFF;
+		box-shadow: 0px -2px 10rpx 0px rgba(153, 153, 153, 0.2000);
+		display: flex;
+		justify-content: space-between;
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.bottomLeft {
+		padding-top: 23rpx;
+		padding-left: 30rpx;
+	}
+
+	.bottomLeftLine {
+		color: #666666;
+		font-size: 24rpx;
+	}
+
+	.bottomLeftLine span {
+		color: #FF0000;
+	}
+
+	.bottomPrice {
+		font-size: 32rpx;
+		font-weight: 500;
+	}
+
+	.bottomLeftLine2 {
+		color: #999999;
+		line-height: 33rpx;
+		font-size: 24rpx;
+	}
+
+	.bottomBtn {
+		width: 204rpx;
+		height: 74rpx;
+		background: #D53533;
+		border-radius: 37rpx;
+		text-align: center;
+		line-height: 74rpx;
+		color: #FFFFFF;
+		font-size: 30rpx;
+		margin-top: 23rpx;
+		margin-right: 30rpx;
+	}
+
+	.cont {
+		padding: 20rpx 24rpx;
+	}
+
+	.contKk {
+		background: #FFFFFF;
+		border-radius: 10rpx;
+		padding: 0 20rpx;
+	}
+	.detailedTitle {
+		padding: 22rpx 0;
+		display: flex;
+		text-align: center;
+		align-content: flex-start;
+		
+		
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #3C3C3C;
+	}
+
+	.contLine {
+		display: flex;
+		justify-content: space-between;
+		font-size: 28rpx;
+		padding: 30rpx 0;
+		border-bottom: 1px solid #EEEEEE;
+	}
+
+	.contlineLeft {
+		color: #666666;
+		line-height: 40rpx;
+		align-items: center;
+	}
+
+	.star {
+		width: 14rpx;
+		height: 14rpx;
+		padding-bottom: 5rpx;
+	}
+
+	.carModel {
+		width: 400rpx;
+		display: inline-block;
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+	}
+	.noColor{
+		color: #CCCCCC;
+	}
+
+	.carModelRight {
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+	}
+
+	.contlineRight {
+		color: #333333;
+		line-height: 40rpx;
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		width: 450rpx;
+		text-align: right;
+	}
+	.selectBtn{
+		width: 36rpx;
+		height: 36rpx;
+	}
+
+	.contlineRightInput {
+		color: #333333;
+	}
+
+	.contlineRightJt {
+		width: 30rpx;
+		height: 30rpx;
+		
+	}
+
+	.box {
+		background: #F4F5F7;
+		min-height: 100vh;
+	}
+
+	.topBox {
+		height: 140rpx;
+		background: #FF0000;
+		width: 750rpx;
+	}
+
+	.yuanhu {
+		width: 750rpx;
+		height: 30rpx;
+		background: #FF0000;
+		border-radius: 0 0 100% 100%;
+	}
+
+	.carBox {
+		width: 662rpx;
+
+		background: #FFFFFF;
+		border-radius: 10rpx;
+		margin-left: 24rpx;
+		margin-top: -100rpx;
+		padding: 20rpx;
+		display: flex;
+	}
+
+	.left {
+		margin-right: 24rpx;
+
+	}
+
+	.brandLogo {
+		width: 72rpx;
+		height: 72rpx;
+	}
+
+	.carPlate {
+
+		height: 42rpx;
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #333333;
+		line-height: 42rpx;
+	}
+
+	.car {
+		width: 562rpx;
+		height: 33rpx;
+		font-size: 24rpx;
+		font-weight: 400;
+		color: #666666;
+		line-height: 33rpx;
+		margin-top: 10rpx;
+		/* 隐藏文字显示 ...不换行 */
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+	}
+
+	.numJsbox {
+		display: flex;
+	}
+
+	.numJj {
+		width: 44rpx;
+		height: 44rpx;
+		background: #F4F5F7;
+		border-radius: 0px 6rpx 6rpx 0px;
+		text-align: center;
+		line-height: 44rpx;
+		font-size: 32rpx;
+		color: #999999;
+	}
+
+	.goodsnum {
+		width: 88rpx;
+		height: 44rpx;
+		background: #F4F5F7;
+		line-height: 44rpx;
+		text-align: center;
+		font-weight: 500;
+		color: #333333;
+		font-size: 24rpx;
+		margin: 0 4rpx;
+	}
+
+	.goodsBottom {
+		display: flex;
+		justify-content: space-between;
+		padding-top: 60rpx;
+	}
+
+	.goodsPrice {
+		color: #333333;
+		font-size: 32rpx;
+		font-weight: 500;
+	}
+
+	.goodsPrice1 {
+		color: #333333;
+		font-size: 22rpx;
+	}
+
+	.goodsName {
+		font-weight: 400;
+		color: #333333;
+		line-height: 40rpx;
+		font-size: 28rpx;
+		height: 80rpx;
+		text-overflow: -o-ellipsis-lastline;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		line-clamp: 2;
+		-webkit-box-orient: vertical;
+		width: 420rpx;
+	}
+
+	.goodsBoxRgiht {
+		padding-left: 24rpx;
+
+	}
+	.zhifuImg{
+		width: 40rpx;
+		height: 40rpx;
+		margin-right: 20rpx;
+		
+	}
+	.payLeft{
+		display: flex;
+		align-items: center;
+		
+		height: 40rpx;
+		font-size: 28rpx;
+		font-weight: 400;
+		color: #333333;
+		line-height: 40rpx;
+	}
+</style>

+ 288 - 44
pages/index/rescue.vue

@@ -1,52 +1,296 @@
-<template>
-	<view class="box">
-		紧急救援
-	</view>
-</template>
+<template>
+	<view class="box">
+		<map :style="{height:mapHeight + 'rpx'}" :latitude="latitude" :longitude="longitude" :markers="covers"></map>
+
+		<view class="contBox">
+			<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>
+
+			<view class="timeBox">
+				<view class="time">预约救援时间</view>
+				<image src="../../static/img/little_rightArrow.png" mode="" style="width: 30rpx;height: 30rpx;"></image>
+			</view>
+
+
+			<view class="typeBox">
+				<view class="box2">
+					<image src="../../static/img/icon_dadian_N.png" mode="" class="typeImg"></image>
+					<view class="title">搭电</view>
+				</view>
+				<view class="box2">
+					<image src="../../static/img/icon_tuoche_N.png" mode="" class="typeImg"></image>
+					<view class="title">拖车</view>
+				</view>
+				<view class="box2">
+					<image src="../../static/img/icon_luntai_N.png" mode="" class="typeImg"></image>
+					<view class="title">换胎</view>
+				</view>
+			</view>
+
+			<view class="price">服务费用 199元/次</view>
+
+			<view class="shopBox">
+				<view class="left">
+					<view class="graypoint"></view>
+					<view class="leftTitle">门店</view>
+					<view class="content">服务门店可修改</view>
+				</view>
+				<image src="../../static/img/little_rightArrow.png" mode="" style="width: 30rpx;height: 30rpx;"></image>
+
+			</view>
 
-<script>
-	export default {
-		data() {
-			return {
+			<view class="shopBox">
+				<view class="left">
+					<view class="graypoint"></view>
+					<view class="leftTitle">位置</view>
+					<view class="content">当前位置</view>
+				</view>
+				<image src="../../static/img/little_rightArrow.png" mode="" style="width: 30rpx;height: 30rpx;"></image>
+			
+			</view>
+			
+			<view class="shopBox">
+				<view class="left">
+					<view class="graypoint"></view>
+					<view class="leftTitle">终点</view>
+					<view class="content">目的地</view>
+				</view>
+				<image src="../../static/img/little_rightArrow.png" mode="" style="width: 30rpx;height: 30rpx;"></image>
+			
+			</view>
+			
+		</view>
+
+		<view class="bottomView">
+			<view class="sure" @click="sure">确定</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				latitude: 39.909,
+				longitude: 116.39742,
+				covers: [{
+					latitude: 39.909,
+					longitude: 116.39742,
+					iconPath: '../../static/img/icon_qidian.png'
+				}, {
+					latitude: 39.90,
+					longitude: 116.39,
+					iconPath: '../../static/img/icon_zhongdian.png'
+				}],
+				tabIndex: 0,
 				
-			}
+				mapHeight:200,
+			}
 		},
-		methods: {
+		onLoad() {
+			uni.getSystemInfo({
+				success: (res) => {
+					this.mapHeight = res.windowHeight*2 - 664 - 120
+				}
+			})
 			
-		}
-	}
-</script>
-
-<style>
-	.box{
-		min-height: 100vh;
-		background-color: #f4f5f7;
-	}
-	.top{
-		
-		background-color: #FFFFFF;
-		padding: 30rpx 20rpx;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-	}
-	.left{
-		display: flex;
-		align-items: center;
+			
+		},
+		
+		methods: {
+			tabClick(num) {
+				this.tabIndex = num;
+				
+
+
+			},
+		}
+	}
+</script>
+
+<style>
+	.box {
+		width: 100vw;
+		min-height: 100vh;
+		background-color: #FFFFFF;
+	}
+
+	map {
+		width: 750rpx;
+		
+	}
+
+	.contBox {
+		width: 100%;
+		height: 664rpx;
+	}
+
+	.tab {
+		background: #FFFFFF;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding-left: 230rpx;
+		padding-right: 230rpx;
+		height: 92rpx;
+		line-height: 60rpx;
+	}
+
+	.tabLine {
+
+		font-size: 30rpx;
+		color: #333333;
+		text-align: center;
+
+	}
+
+	.tabActive {
+
+		color: #FF0000;
+		font-weight: bold;
+		border-bottom: 4rpx solid #FF0000;
+
+	}
+
+	.timeBox {
+		padding-top: 20rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.time {
+
+		color: #959595;
+		font-size: 24rpx;
+
+	}
+
+	.typeBox {
+		padding: 30rpx 115rpx;
+		display: flex;
+		justify-content: space-between;
+	}
+
+	.box2 {
+		display: flex;
+		align-items: center;
+		padding: 20rpx;
+		background: #FFFFFF;
+		height: 32rpx;
+		border-radius: 10rpx;
+		border: 2rpx solid #CCCCCC;
+	}
+
+	.typeImg {
+		width: 34rpx;
+		height: 34rpx;
+		margin-right: 10rpx;
+	}
+
+	.title {
+		height: 40rpx;
+		font-size: 28rpx;
+		font-weight: 400;
+		color: #666666;
+		line-height: 40rpx;
+	}
+
+
+	.price {
+		padding-bottom: 30rpx;
+		font-size: 24rpx;
+		font-weight: 400;
+		color: #D53533;
+		text-align: center;
+	}
+
+	.shopBox {
+		padding: 30rpx 24rpx;
+		border-top: 1rpx solid #EEEEEE;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.left {
+		display: flex;
+		align-items: center;
 	}
-	.car{
-		
+	.leftTitle{
+		width: 56rpx;
 		font-size: 28rpx;
-		
-		color: #333333;
+		font-weight: 400;
+		color: #666666;
 		line-height: 40rpx;
-		/* 隐藏文字显示 ...不换行 */
-		overflow: hidden;
-		text-overflow: ellipsis;
-		white-space: nowrap;
-	}
-	.brandLogo {
-		width: 42rpx;
-		height: 42rpx;
-	}
+		margin-left: 16rpx;
+		margin-right: 30rpx;
+	}
+
+	.graypoint {
+		width: 14rpx;
+		height: 14rpx;
+		background: #DDDDDD;
+		border-radius: 7rpx;
+	}
+
+	.bluepoint {
+		width: 14rpx;
+		height: 14rpx;
+
+		background: #3F90F7;
+		border-radius: 7rpx;
+	}
+
+	.redpoint {
+		width: 14rpx;
+		height: 14rpx;
+
+		background: #FF0000;
+		border-radius: 7rpx;
+	}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	.bottomView {
+		border-top: 1rpx solid #EEEEEE;
+		background-color: #FFFFFF;
+		width: 100%;
+		height: 120rpx;
+		position: fixed;
+		bottom: 0rpx;
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.sure {
+
+		background-color: #D53533;
+		margin: 23rpx 30rpx;
+		height: 74rpx;
+
+		border-radius: 37rpx;
+		color: #FFFFFF;
+		font-size: 30rpx;
+		font-weight: bold;
+
+		text-align: center;
+		line-height: 74rpx;
+	}
 </style>

+ 1 - 1
pages/user/checkReport.vue

@@ -29,7 +29,7 @@
 		data() {
 			return {
 				page: 1,
-				itemData: [1, 2, 3],
+				itemData: [],
 				noMoreShow: false,
 			}
 		},

+ 267 - 0
pages/user/feedBack.vue

@@ -0,0 +1,267 @@
+<template>
+	<view class="content">
+		<view class="main">
+			<!-- 建议 -->
+			<view class="firstView">
+				<view class="title">您的问题或建议</view>
+				<view>
+					<textarea placeholder-style="color:#999999" placeholder="输入个人意见反馈" v-model="exeContent"
+						class="textareaCont" maxlength="-1" auto-height="true" @confirm="feedDone" />
+				</view>
+			</view>
+
+			<!-- 图片 -->
+			<view class="secondView">
+				<view class="title">上传图片</view>
+				<view class="imgBox">
+					<view class="imgLine" v-for="(img,imgindex) in imgArr">
+						<image :class="{img4:(imgindex+1)%4==0}" :src="img" mode="" class="itemImg"></image>
+						<image src="../../static/img/icon_del_red.png" mode="" class="delImg" @click="delimg(imgindex)">
+						</image>
+					</view>
+					<view class="imgLine" @click="uploadImg">
+						<image src="../../static/img/btn_pic.png" mode="" class="itemImg"></image>
+					</view>
+				</view>
+			</view>
+
+
+		</view>
+
+		<view class="bottom">
+			<view class="shoreDz" @click="submit">提交</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		
+		data() {
+			return {
+				imgArr: [],
+				exeContent: '',
+
+			}
+		},
+
+		methods: {
+			feedDone(e) {
+				this.exeContent = e.target.value
+
+			},
+			uploadImg() {
+
+				var that = this;
+				var length = this.imgArr.length;
+				var num = 9;
+				if (length > 8) {
+					uni.showToast({
+						title: '最多上传9张',
+						icon: 'none',
+						duration: 2000,
+					});
+					return false;
+				}
+				uni.chooseImage({
+					sourceType: ['album', 'camera'],
+					count: num - length,
+					success: (chooseImageRes) => {
+						const tempFilePaths = chooseImageRes.tempFilePaths;
+						/* uni.uploadFile({
+				            url: that.$request.baseUrl+'accompany/SuperCheckSheet/uploadFile', //仅为示例,非真实的接口地址
+				            filePath: tempFilePaths[0],
+				            name: 'file',
+				            formData: {
+				                'user': 'test'
+				            },
+				            success: (uploadFileRes) => {
+				                console.log(JSON.parse(uploadFileRes.data).data );
+								that.imgArr=that.imgArr.concat(JSON.parse(uploadFileRes.data).data) ;
+								
+				            }
+				        }); */
+						tempFilePaths.forEach(v => {
+							console.log(that.$request.baseUrl + 'tuhuUploadFile');
+							uni.uploadFile({
+								url: that.$request.baseUrl + 'tuhuUploadFile',
+								filePath: v,
+								name: 'file',
+								formData: {
+									'user': 'test'
+								},
+
+								success: (uploadFileRes) => {
+
+									console.log(JSON.parse(uploadFileRes.data).data);
+									that.imgArr = that.imgArr.concat(JSON.parse(
+										uploadFileRes.data).data);
+								}
+							});
+						})
+						/* that.$http('accompany/SuperCheckSheet/uploadFile', tempFilePaths[0], 'POST').then(res => {
+							
+						}) */
+					}
+				});
+			},
+			delimg(index) {
+				this.imgArr.splice(index, 1)
+			},
+			submit() {
+				if (!this.exeContent) {
+					uni.showToast({
+						title: '请输入个人意见反馈',
+						icon: 'none',
+						duration: 2000,
+					});
+					return;
+				}
+				// if (this.imgArr.length == 0) {
+				// 	uni.showToast({
+				// 		title: '请上传图片',
+				// 		icon: 'none',
+				// 		duration: 2000,
+				// 	});
+				// 	return ;
+				// }
+				uni.showLoading({
+					title: '保存中'
+				})
+				var exeImg = this.imgArr.join(',')
+				this.$http('openmy/addTMemberSuggest', {
+
+					contents: this.exeContent,
+					img: exeImg
+				}, 'GET').then(res => {
+					//this.submitSuperCheckSheet()
+					if (res.code == 0) {
+						uni.showToast({
+							title: '提交成功',
+							icon: 'none',
+							duration: 2000,
+						});
+						setTimeout(function() {
+							uni.navigateBack({
+
+							})
+						}, 2000);
+					} else {
+						uni.showToast({
+							title: '提交失败',
+							icon: 'none',
+							duration: 2000,
+						});
+					}
+
+
+
+				})
+			}
+
+		}
+	}
+</script>
+
+<style scoped>
+	.content {
+		background: #F4F5F7;
+		min-height: 100vh;
+
+	}
+
+	/* #ifdef H5 */
+	.content {
+		background: #F4F5F7;
+		min-height: calc(100vh - 44px);
+
+	}
+
+	/* #endif */
+	.main {
+		background: #F4F5F7;
+		padding: 20rpx 24rpx;
+	}
+
+	.firstView,
+	.secondView {
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+	}
+
+	.firstView {
+		margin-bottom: 20rpx;
+	}
+
+	.title {
+		font-size: 30rpx;
+		color: #3C3C3C;
+		padding: 20rpx;
+	}
+
+	.textareaCont {
+		padding: 20rpx;
+		min-height: 150rpx;
+		width: 95%;
+	}
+
+
+	.imgBox {
+		display: flex;
+		flex-wrap: wrap;
+		padding: 20rpx;
+
+	}
+
+	.imgLine {
+		position: relative;
+		margin-right: 10rpx;
+	}
+
+	.itemImg {
+		width: 150rpx;
+		height: 150rpx;
+		margin-right: 5rpx;
+	}
+
+	/* .img4 {
+		margin-right: 20rpx;
+		
+	} */
+
+	.delImg {
+		width: 32rpx;
+		height: 32rpx;
+		position: absolute;
+		right: 0rpx;
+		top: 0rpx;
+	}
+
+
+	.bottom {
+		width: 750rpx;
+		height: 120rpx;
+		background: #FFFFFF;
+		box-shadow: 0px -4px 8px 0px rgba(153, 153, 153, 0.08);
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		display: flex;
+		justify-content: space-around;
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+
+	}
+
+	.shoreDz {
+		width: 702rpx;
+		height: 74rpx;
+		background: #D53533;
+		border-radius: 37rpx;
+		text-align: center;
+		line-height: 74rpx;
+		color: #FFFFFF;
+		font-size: 30rpx;
+		margin-top: 24rpx;
+	}
+</style>

+ 956 - 0
pages/user/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>
+					<image src="../../../static/img/nav_icon_home.png" mode="" class="homeImg" @click="gohome"></image>
+				</view>
+				<view class="zdyNavTitle">订单详情</view>
+				<view style="width: 100px;"></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)">
+						<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">
+				<view class="informationTxt">车牌号:</view>
+				<view class="informationNum">{{orderData.data.plateNumber}}</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.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(item) {
+				
+					// uni.navigateTo({
+					// 	url: "activityOrderDetail?id=" + item.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('openreservation/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('openOrderManagement/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('openOrderManagement/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{
+		width: 100vw;
+		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>

+ 15 - 11
pages/user/myOrder/mallOrderDetail.vue

@@ -58,21 +58,25 @@
 		</view>
 
 		<!-- 订单内容 -->
-		<view class="information" v-if="orderData.OpenSheetQRCodeList">
+		<view class="information">
 			<view class="detailedTitle">订单内容</view>
-			<view class="goodsName">{{orderData.OpenSheetQRCodeList.itemName}}</view>
-			<view class="informationLine2">
-				<view class="salePrice"><span
-						class="informationNum">¥</span>{{orderData.OpenSheetQRCodeList.salePrice}}</view>
-				<view class="informationNum" style="color: #999999;">
-					x{{orderData.OpenSheetQRCodeList.itemQty}}</view>
-			</view>
+			<view v-if="orderData.openSheetDetail.length>0" v-for="(item,index) in orderData.openSheetDetail" :key="index">
+				
+					<view class="goodsName">{{item.itemName}}</view>
+					<view class="informationLine2">
+						<view class="salePrice"><span
+								class="informationNum">¥</span>{{item.salePrice}}</view>
+						<view class="informationNum" style="color: #999999;">
+							x{{item.itemQty}}</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="goodsName">
-					券码信息({{orderData.OpenSheetQRCodeList.noWriteoffQty?orderData.OpenSheetQRCodeList.noWriteoffQty:0}}张可用)
+					券码信息({{quanMaList.length?quanMaList.length:0}}张可用)
 				</view>
-				<view class="detailedLine" v-for="(v,index) in orderData.OpenSheetQRCodeList.OpenSheetQRCode">
+				<view class="detailedLine" v-for="(v,index) in orderData.OpenSheetQRCode">
 
 					<view v-if="v.writeoffState==1" class="detailedName">
 						<view class="redPoint"></view>
@@ -455,7 +459,7 @@
 					if (this.quanMaList) {
 						this.quanMaList = [];
 					}
-					let maList = this.orderData.OpenSheetQRCodeList.OpenSheetQRCode;
+					let maList = this.orderData.OpenSheetQRCode;
 					if (maList) {
 						maList.forEach(item =>{
 							if (item.writeoffState==1) {

+ 10 - 1
pages/user/myOrder/myOrder.vue

@@ -81,8 +81,17 @@
 					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({

+ 947 - 0
pages/user/myOrder/paintOrderDetail.vue

@@ -0,0 +1,947 @@
+<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>
+					<image src="../../../static/img/nav_icon_home.png" mode="" class="homeImg" @click="gohome"></image>
+				</view>
+				<view class="zdyNavTitle">订单详情</view>
+				<view style="width: 100px;"></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('openreservation/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('openOrderManagement/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('openOrderManagement/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{
+		width: 100vw;
+		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>

+ 1 - 1
pages/user/user.vue

@@ -157,7 +157,7 @@
 				<image src="../../static/img/big_rightArrow.png" mode="" class="big_rightArrow"></image>
 			</button>
 
-			<view class="rowBox" @click="gonavigateTo('invite')">
+			<view class="rowBox" @click="gonavigateTo('feedBack')">
 				<view class="leftView">
 					<image src="../../static/img/icon_me7.png" mode="" class="liftIcon"></image>
 					<view class="rowTitle">意见反馈</view>

BIN
static/img/bg_hongse.png


BIN
static/img/bg_huangse.png


BIN
static/img/btn_pic.png


BIN
static/img/icon_dadia_Y.png


BIN
static/img/icon_dadian_N.png


BIN
static/img/icon_del_red.png


BIN
static/img/icon_luntai_N.png


BIN
static/img/icon_luntai_Y.png


BIN
static/img/icon_qidian.png


BIN
static/img/icon_star.png


BIN
static/img/icon_tuoche_N.png


BIN
static/img/icon_tuoche_Y.png


BIN
static/img/icon_weixinzhifu.png


BIN
static/img/icon_xianxia.png


BIN
static/img/icon_zhongdian.png