lilei 4 éve
szülő
commit
aa04a3f4b1

+ 36 - 52
pages.json

@@ -6,8 +6,7 @@
 		{
 			"path": "pages/index/index", // 首页
 			"style": {
-				"navigationBarTitleText": "",
-				"navigationStyle": "custom",
+				"navigationBarTitleText": "智享亿家",
 				"enablePullDownRefresh": false
 			}
 		},
@@ -18,26 +17,12 @@
 			}
 		},
 		{
-			"path": "pages/store/storeList",
-			"style": {
-				"navigationBarTitleText": "网点列表"
-			}
-		}, {
-			"path": "pages/store/storeDetail",
-			"style": {
-				"navigationBarTitleText": "网点详情"
-			}
-		}, {
 			"path": "pages/userCenter/index",
 			"style": {
 				"navigationBarTitleText": "个人中心"
 			}
-		}, {
-			"path": "pages/coupon/index/index",
-			"style": {
-				"navigationBarTitleText": "我的优惠卷"
-			}
-		}, {
+		}, 
+		{
 			"path": "pages/order/order",
 			"style": {
 				"navigationBarTitleText": "我的订单"
@@ -47,47 +32,46 @@
 			"style": {
 				"navigationBarTitleText": "订单详情"
 			}
-		}, {
-			"path": "pages/work/index/index",
-			"style": {
-				"navigationBarTitleText": "洗车服务中"
-			}
-		}, {
-			"path": "pages/getOrder/getOrder",
-			"style": {
-				"navigationBarTitleText": "准备洗车"
-			}
-		}, {
-			"path": "pages/work/success/success",
-			"style": {
-				"navigationBarTitleText": "归位成功"
-			}
-		}, {
+		}, 
+		{
 			"path": "pages/agreement/agreement",
 			"style": {
 				"navigationBarTitleText": "注意事项及服务协议"
 			}
-		}, {
-			"path": "pages/coupon/chooseCoupon/chooseCoupon",
-			"style": {
-				"navigationBarTitleText": "选择优惠卷"
-			}
-		}, {
-			"path": "pages/careMore/careMore",
-			"style": {
-				"navigationBarTitleText": "注意事项"
-			}
-		}, {
-			"path": "pages/coupon/getCoupon/getCoupon",
-			"style": {
-				"navigationBarTitleText": "领取优惠券"
-			}
 		}
 	],
 	"globalStyle": {
-		"navigationBarTextStyle": "black",
+		"navigationBarTextStyle": "white",
 		"navigationBarTitleText": "uni-app",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8"
+		"navigationBarBackgroundColor": "#22bf11",
+		"backgroundColor": "#F8F8F8",
+		"app-plus": {
+			// 将回弹属性关掉
+			"bounce": "none",
+			"scrollIndicator": "none"
+		}
+	},
+	"tabBar": {
+		"color": "#7A7E83",
+		"selectedColor": "#00aa00",
+		"borderStyle": "#eee",
+		"backgroundColor": "#ffffff",
+		"fontSize": "14px",
+		"list": [{
+			"pagePath": "pages/index/index",
+			"iconPath": "static/tabbar/home.png",
+			"selectedIconPath": "static/tabbar/home-active.png",
+			"text": "首页"
+		}, {
+			"pagePath": "pages/work/work",
+			"iconPath": "static/tabbar/work.png",
+			"selectedIconPath": "static/tabbar/work-active.png",
+			"text": "工作台"
+		}, {
+			"pagePath": "pages/userCenter/userCenter",
+			"iconPath": "static/tabbar/user.png",
+			"selectedIconPath": "static/tabbar/user-active.png",
+			"text": "我的"
+		}]
 	}
 }

+ 0 - 35
pages/careMore/careMore.vue

@@ -1,35 +0,0 @@
-<template>
-	<view class="care-content">
-		<view class="title">
-			以下情况不能清洗车辆
-		</view>
-		<view class="img">
-			<u-image width="80%" height="1600rpx" mode="widthFix" src="/static/img/carmore.jpg"></u-image>
-		</view>
-	</view>
-</template>
-
-<script>
-</script>
-
-<style lang="scss">
-	page {
-		height: 100%;
-	}
-	.care-content{
-		padding: 20rpx;
-		width: 100%;
-		height: 100%;
-		display: flex;
-		flex-direction: column;
-		.title{
-			font-size: 30rpx;
-			font-weight: 600;
-			margin-bottom: 20rpx;
-		}
-		.img{
-			flex: 1;
-			margin-left: 40rpx;
-		}
-	}
-</style>

+ 0 - 82
pages/coupon/chooseCoupon/chooseCoupon.vue

@@ -1,82 +0,0 @@
-<template>
-	<view class="coopon-pages">
-		<couponTpl @checkOk="checkOk" :list="couponList" :showCheck="true"></couponTpl>
-		<view class="fix-button" v-if="curCoupon">
-			<view>
-				<view>优惠:¥{{curCoupon.couponAmount}}</view>
-				<view @click="comfirn">确认</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import couponTpl from '@/pages/coupon/couponTpl.vue'
-	export default {
-		components: {
-			couponTpl
-		},
-		data() {
-			return {
-				curCoupon: null,
-				couponList:  []
-			};
-		},
-		onLoad(options) {
-			console.log(options,'options')
-			this.couponList = JSON.parse(decodeURIComponent(options.list)) 
-			this.curCoupon = JSON.parse(decodeURIComponent(options.curCoupon)) 
-		},
-		methods:{
-			checkOk(item){
-				this.couponList.map(list=>{
-					list.checked = (list.id === item.id && !list.checked) ? true : false
-				})
-				let has = this.couponList.find(item=> item.checked)
-				if (has) {
-					this.curCoupon = has
-				} else {
-					this.curCoupon = null
-				}
-				// 将用户选择优惠券传给下单页面
-				uni.$emit('couponChoose',{curCoupon:this.curCoupon})
-			},
-			// 确认按钮
-			comfirn(){
-				uni.navigateBack()
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.coopon-pages{
-		width: 100%;
-		padding-bottom: 100rpx;
-		.fix-button{
-			width: 100%;
-			position: fixed;
-			bottom: 0;
-			> view{
-				display: flex;
-				align-items: center;
-				background: #333;
-				>view{
-					padding: 20rpx 30rpx;
-					color: #fff;
-					&:first-child{
-						width: 70%;
-						flex-grow: 1;
-					}
-					&:last-child{
-						background:#4CD964;
-						width: 30%;
-						color: #fff;
-						text-align: center;
-						font-size: 36rpx;
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 115
pages/coupon/couponTpl.vue

@@ -1,115 +0,0 @@
-<template>
-	<view class="coupon-list">
-		<view class="coupon-box" v-for="item in list" :key="item.id" @click="checked(item)">
-			<view class="coupon-head">
-				<view class="coupon-sel coupon-checked" v-if="item.checked"></view>
-				<view class="coupon-sel" v-else></view>
-				<view class="coupon-title">
-					<view class="coupon-title-1">{{item.couponTitle}}</view>
-				</view>
-				<view class="coupon-price">
-					¥<text>{{item.couponAmount}}</text>
-				</view>
-			</view>
-			<view class="coupon-desc">
-				<view><u-icon class="icon" size="30" name="clock"></u-icon>{{item.validEndTimeStr}}</view>
-				<view>
-					<u-icon class="icon" size="30" name="info-circle"></u-icon>
-					<text class="couponRuleDesc">{{item.couponRuleDesc}}</text>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		name: 'couponTpl',
-		props: {
-			showCheck: {
-				type: Boolean,
-				default: false
-			},
-			list:{
-				type: Array,
-				default: function(){
-					return []
-				}
-			}
-		},
-		methods: {
-			// 选中优惠卷
-			checked(item) {
-				if(this.showCheck){
-					this.$emit('checkOk',item)
-				}
-			},
-		},
-	}
-</script>
-
-<style lang="scss">
-	.coupon-list{
-		padding: 25rpx;
-	}
-	.coupon-box.diabled{
-		background: #999;
-	}
-	.coupon-box{
-		margin-bottom: 30rpx;
-		border-radius: 15rpx;
-		box-shadow: 2rpx 2rpx 10rpx #ddd;
-		background: #ff0000;
-		color: #FFFFFF;
-		.coupon-head{
-			display: flex;
-			align-items: center;
-			padding: 20rpx 30rpx;
-			position: relative;
-			border-bottom: 15rpx dotted #FFFFFF;
-			margin-bottom: -8rpx;
-			.coupon-sel{
-				position: absolute;
-				width: 56rpx;
-				height: 46rpx;
-				right: 0;
-				top: 0;
-			}
-			.coupon-checked{
-				background: url(/static/img/select.png) no-repeat center;
-				background-size: 100% 100%;
-			}
-			.coupon-title{
-				flex-grow: 1;
-				font-size: 32rpx;
-			}
-			.coupon-price{
-				padding: 0 15rpx;
-				color: #FFFFFF;
-				text{
-					font-size: 60rpx;
-				}
-			}
-		}
-		.coupon-desc{
-			padding: 10rpx 30rpx;
-			color: #666;
-			background: #FFFFFF;
-			border-bottom-left-radius:10rpx;
-			border-bottom-right-radius: 10rpx;
-			>view{
-				padding: 5rpx 0;
-				display: flex;
-				align-items: flex-start;
-			}
-			.couponRuleDesc{
-				width: 100%;
-				padding-right: 30rpx;
-				word-wrap: break-word;
-			}
-			.icon{
-				margin-right: 10rpx;
-			}
-		}
-	}
-</style>

+ 0 - 178
pages/coupon/getCoupon/getCoupon.vue

@@ -1,178 +0,0 @@
-<template>
-	<view class="coupon-list">
-		<view v-if="couponInfo" class="coupon-box">
-			<view class="coupon-head">
-				<view class="coupon-sel"></view>
-				<view class="coupon-title">
-					<view class="coupon-title-1">{{couponInfo.title}}</view>
-				</view>
-				<view class="coupon-price">
-					¥<text>{{couponInfo.subAmount}}</text>
-				</view>
-			</view>
-			<view class="coupon-desc">
-				<view><u-icon class="icon" size="30" name="clock"></u-icon> 有效期:{{couponInfo.validDateStr}}</view>
-				<view>
-					<u-icon class="icon" size="30" name="info-circle"></u-icon>
-					<text class="couponRuleDesc">{{couponInfo.ruleDesc}}</text>
-				</view>
-			</view>
-		</view>
-		<u-empty :text="noDataText" v-if="!couponInfo && status!='loading'" mode="coupon"></u-empty>
-		<u-button v-if="!isDisabled" class="handleSubmit" :disabled="isDisabled" shape="circle" @click="handleSubmit" type="error">确认领取</u-button>
-	</view>
-</template>
-
-<script>
-	import {couponData, receivesCoupon} from '@/api/coupon.js'
-	export default{
-		name: 'getCoupon',
-		data () {
-			return {
-				couponInfo: null, // 领取优惠券信息
-				isDisabled: true, // 是否可领取
-				status: 'loading',
-				noDataText: '暂无优惠券'
-			}
-		},
-		onLoad(options) {
-			console.log(options,'options')
-			// 存储当前扫码的券码
-			if (options.scene) {
-				let scene = decodeURIComponent(options.scene);
-				console.log(scene,'1111')
-				//&是我们定义的参数链接方式
-				let customerType = scene.split(',')[0];
-				let storeId = scene.split(',')[1];
-				let couponCode = scene.split(',')[2];
-				console.log(scene.split(','),'222')
-				//其他逻辑处理。。。。。
-				this.$store.state.vuex_couponInfo.customerType = customerType
-				this.$store.state.vuex_couponInfo.storeId = storeId
-				this.$store.state.vuex_couponInfo.couponCode = couponCode
-				// 获取要领取的优惠券
-				this.getCoupon(couponCode)
-			} else {
-				// 判断是否扫码过
-				if (this.$store.state.vuex_couponCode != '') {
-					let couponCode = this.$store.state.vuex_couponCode
-					this.getCoupon(couponCode)
-				} else {
-					// 返回首页
-					uni.reLaunch({
-						url: "/pages/index/index"
-					})
-				}
-			}
-		},
-		methods: {
-			// 获取要领取的优惠券
-			getCoupon (code) {
-				this.status = 'loading'
-				couponData({couponCode:code}).then(res=>{
-					this.status = 'onmore'
-					if (res.status == 200 ) {
-						this.couponInfo = res.data
-						this.isDisabled = res.data ? false : true
-					} else {
-						this.couponInfo = null
-						this.isDisabled = true
-						this.noDataText = res.message
-					}
-				})
-			},
-			// 确认领取优惠券
-			handleSubmit () {
-				let params= {
-					wechatCustomerType: this.$store.state.vuex_couponInfo.customerType,
-					storeId: this.$store.state.vuex_couponInfo.storeId,
-					code: this.$store.state.vuex_couponInfo.couponCode
-				}
-				receivesCoupon(params).then(res =>{
-					if (res.status == 200) {
-						this.toashMsg('领取成功')
-						setTimeout(()=>{
-							uni.reLaunch({
-								url: '/pages/index/index'
-							})
-						},500)
-					}
-				})
-			}
-			
-		},
-	}
-</script>
-
-<style lang="scss">
-	.coupon-list{
-		width: 100%;
-		height: 100%;
-		padding: 25rpx;
-		.u-size-default.data-v-3bf2dba7 {
-			margin-top: 100px;
-			width: 60%;
-		}
-	}
-	.coupon-box.diabled{
-		background: #999;
-	}
-	.coupon-box{
-		margin-bottom: 30rpx;
-		border-radius: 15rpx;
-		box-shadow: 2rpx 2rpx 10rpx #ddd;
-		background: #ff0000;
-		color: #FFFFFF;
-		.coupon-head{
-			display: flex;
-			align-items: center;
-			padding: 20rpx 30rpx;
-			position: relative;
-			border-bottom: 15rpx dotted #FFFFFF;
-			margin-bottom: -8rpx;
-			.coupon-sel{
-				position: absolute;
-				width: 56rpx;
-				height: 46rpx;
-				right: 0;
-				top: 0;
-			}
-			.coupon-checked{
-				background: url(/static/img/select.png) no-repeat center;
-				background-size: 100% 100%;
-			}
-			.coupon-title{
-				flex-grow: 1;
-				font-size: 32rpx;
-			}
-			.coupon-price{
-				padding: 0 15rpx;
-				color: #FFFFFF;
-				text{
-					font-size: 60rpx;
-				}
-			}
-		}
-		.coupon-desc{
-			padding: 10rpx 30rpx;
-			color: #666;
-			background: #FFFFFF;
-			border-bottom-left-radius:10rpx;
-			border-bottom-right-radius: 10rpx;
-			>view{
-				padding: 5rpx 0;
-				display: flex;
-				align-items: flex-start;
-			}
-			.couponRuleDesc{
-				width: 100%;
-				padding-right: 30rpx;
-				word-wrap: break-word;
-			}
-			.icon{
-				margin-right: 10rpx;
-			}
-		}
-		
-	}
-</style>

+ 0 - 140
pages/coupon/index/index.vue

@@ -1,140 +0,0 @@
-<template>
-	<view class="pages-content">
-		<view class="tabs">
-			<u-tabs-swiper ref="uTabs" active-color="red" :list="tabsList" bar-width="100" :current="current" @change="tabsChange" :is-scroll="false"
-			 swiperWidth="750"></u-tabs-swiper>
-		</view>
-		<swiper style="height: calc(100% - 50px);" :current="swiperCurrent" @transition="transition"  @change="swiperChange" @animationfinish="animationfinish">
-			<swiper-item class="swiper-item" v-for="(item, index) in tabsList" :key="index">
-				<scroll-view scroll-y style="height: 100%;width: 100%;" @scrolltolower="onreachBottom">
-					<couponTpl :list="index==current?couponList:[]"></couponTpl>
-					<u-empty :text="noDataText" img-width="120" v-if="couponList.length==0 && status!='loading'" mode="list"></u-empty>
-					<view style="padding: 20upx;">
-						<u-loadmore v-if="count>pageSize || status=='loading'" :status="status" />
-					</view>
-				</scroll-view>
-			</swiper-item>
-		</swiper>
-	</view>
-</template>
-
-<script>
-	import couponTpl from '@/pages/coupon/couponTpl.vue'
-	import {couponListFind} from '@/api/coupon.js'
-	export default {
-		components: {
-			couponTpl
-		},
-		data() {
-			return {
-				noDataText: '暂无数据',
-				status: 'loading',
-				tabsList: [{
-					name: '未使用',
-					status: 0
-				}, {
-					name: '已使用',
-					status: 1
-				}, {
-					name: '已过期',
-					status: -1
-				}],
-				couponList: [], // 优惠卷列表
-				// 因为内部的滑动机制限制,请将tabs组件和swiper组件的current用不同变量赋值
-				current: 0, // tabs组件的current值,表示当前活动的tab选项
-				swiperCurrent: 0, // swiper组件的current值,表示当前那个swiper-item是活动的
-				pageNo:1,
-				pageSize:10,
-				count:0
-			};
-		},
-		onLoad() {
-			this.pageInit()			
-		},
-		methods: {
-			pageInit () {
-				this.current = 0 // tabs组件的current值,表示当前活动的tab选项
-				this.swiperCurrent = 0
-				this.couponList = []
-				this.pageNo = 1
-				this.status = 'loading'
-				this.getList()
-			},
-			// tabs通知swiper切换
-			tabsChange(index) {
-				this.swiperCurrent = index;
-			},
-			// swiper-item左右移动,通知tabs的滑块跟随移动
-			transition(e) {
-				let dx = e.detail.dx;
-				this.$refs.uTabs.setDx(dx);
-			},
-			swiperChange(event){
-				console.log(event.detail)
-				this.couponList = []
-				this.status = 'loading'
-			},
-			// 由于swiper的内部机制问题,快速切换swiper不会触发dx的连续变化,需要在结束时重置状态
-			// swiper滑动结束,分别设置tabs和swiper的状态
-			animationfinish(e) {
-				let current = e.detail.current;
-				if (current != this.current) {
-					this.$refs.uTabs.setFinishCurrent(current);
-					this.swiperCurrent = current;
-					this.current = current;
-					this.getList()
-				}
-			},
-			// 获取优惠卷列表
-			getList(num){
-				if(num) {
-					this.pageNo = num
-				}
-				let item = this.tabsList[this.swiperCurrent]
-				let params = {
-					pageNo: this.pageNo,
-					pageSize: this.pageSize,
-					status: item.status
-				}
-				couponListFind(params).then(res=>{
-					this.status = 'loadmore'
-					if (res.status == 200) {
-						let list = res.data.list
-						this.couponList = this.couponList.concat(list)
-						this.count = res.data.count
-					} else {
-						this.couponList = []
-						this.count = 0
-					}
-				})
-			},
-			// scroll-view到底部加载更多
-			onreachBottom() {
-				if (this.couponList.length<this.count) {
-					this.pageNo++
-					this.getList()
-				} else {
-					this.status = "nomore"
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	page{
-		height: 100%;
-	}
-	.pages-content{
-		width: 100%;
-		height: 100%;
-		display: flex;
-		flex-direction: column;
-		uni-swiper{
-			flex-grow: 1;
-		}
-		.u-empty{
-			height: auto!important;
-		}
-	}
-</style>

+ 12 - 2
pages/index/index.vue

@@ -1,6 +1,9 @@
 <template>
 	<view class="content">
-		 sdfdf 
+		<u-swiper height="200" :list="imageTopList"></u-swiper>
+		<view class="goods">
+			<u-section title="人气零食" :show-line="false" sub-title="更多"></u-section>
+		</view>
 	</view>
 </template>
 
@@ -22,6 +25,10 @@
 		},
 		data() {
 			return {
+				imageTopList:[
+					{photo:''},
+					{photo:''}
+				]
 			}
 		},
 		onReady() {
@@ -36,6 +43,9 @@
 </script>
 
 <style lang="scss" scoped>
-	.content { 
+	.content {
+		.goods{
+			padding: 30upx 0;
+		}
 	}
 </style>

+ 0 - 290
pages/store/storeDetail.vue

@@ -1,290 +0,0 @@
-<template>
-	<view class="content">
-		<view class="page-content">
-			<view class="header">
-				<u-image width="160rpx" height="160rpx" :border-radius="10" :src="storeInfo?storeInfo.icon:''"></u-image>
-				<view class="store-info">
-					<view class="name">
-						{{storeInfo ?storeInfo.name : ''}}
-					</view>
-					<view class="address">
-						{{storeInfo?storeInfo.addrDetail:''}}
-					</view>
-					<view class="location">
-						<view class="left">
-							<uni-icons class="icon" size="16" type="paperplane"></uni-icons>
-							<text>{{storeInfo?storeInfo.distance:''}}km</text>
-						</view>
-						<view class="right">
-							<u-icon class="icon" size="32" name="clock"></u-icon>
-							<text>{{storeInfo?storeInfo.beginTime:''}}-{{storeInfo?storeInfo.endTime:''}} 营业</text>
-						</view>
-					</view>
-				</view>
-			</view>
-			<!-- 网点标签 -->
-			<view class="store-mark">
-				<text v-for="(item,index) in labelList" :key="index" class="mark-item">
-					{{item}}
-				</text>
-			</view>
-			<view class="store-server">
-				服务项目:
-				<text v-for="item in storeInfo.itemVOList" :key="item.id">{{item.itemName}}</text>
-			</view>
-			<!-- 路线指引 -->
-			<view class="store-rich store-line" v-if="storeInfo&&storeInfo.guidance">
-				<view class="line-title">
-					* 路线指引 *
-				</view>
-				<view class="line-content">
-					<u-parse :html="storeInfo&&storeInfo.guidance?storeInfo.guidance:''"></u-parse>
-				</view>
-			</view>
-			<!-- 温馨提示 -->
-			<view class="store-rich" v-if="storeInfo&&storeInfo.reminder">
-				<view class="line-title">
-					* 温馨提示 *
-				</view>
-				<view class="line-content">
-					<u-parse :html="storeInfo&&storeInfo.reminder?storeInfo.reminder:''"></u-parse>
-				</view>
-			</view>
-		</view>
-		<view class="footer">
-			<button type="warn" :loading="loading" plain @click="getWaitPhoto">排队情况</button>
-			<button type="warn" @click="openLocation">立刻导航</button>
-		</view>
-		<u-popup v-model="showPop" mode="center" @close="showPop=false" width="90%" height="60%" closeable>
-			<image mode="aspectFit" class="pop-img" :src="waitPhoto"></image>
-		</u-popup>
-	</view>
-</template>
-
-<script>
-	import {getStoreDetail, getWaitPhoto} from '@/api/store.js'
-	export default {
-		components: {
-		},
-		data() {
-			return {
-				// 用户拒绝授权位置信息时默认展示青海西宁位置地图
-				currentPosition: {
-					lat: '36.636193',
-					lng: '101.760521'
-				},
-				showPop: false, // 是否显示排队弹窗
-				storeInfo: null, // 网点详细信息
-				labelList: [], // 网点标签
-				waitPhoto: '',  // 排队照片
-				loading: false  // 是否显示排队按钮loading
-			}
-		},
-		onLoad(option) {
-			// 获取当前经纬度
-			let _this = this
-			this.pageInit()
-			uni.getLocation({
-				type: 'wgs84', // 默认wgs84
-				success: function(res) {
-					_this.currentPosition.lat = res.latitude;
-					_this.currentPosition.lng = res.longitude;
-					// 查询门店信息
-					if (option.id) {
-						_this.getStoreDetail(option.id)
-					}
-				},
-				fail: function(res) {
-					console.log(res)
-					// 查询门店信息
-					if (option.id) {
-						_this.getStoreDetail(option.id)
-					}
-				},
-			});
-			
-		},
-		methods: {
-			pageInit () {
-				this.storeInfo = null
-				this.labelList = []
-				this.loading = false
-			},
-			// 获取网点详情信息
-			getStoreDetail (id) {
-				uni.showLoading({
-					title: '加载中...'
-				})
-				let params = {
-					id: id,
-					lat: this.currentPosition.lat,
-					lng: this.currentPosition.lng
-				}
-				getStoreDetail(params).then(res=>{
-					uni.hideLoading()
-					if (res.status == 200) {
-						this.storeInfo = Object.assign({},res.data)
-						if (this.storeInfo.addrDetail.indexOf("省") > 0 && this.storeInfo.addrDetail.indexOf("市") > 0 && this.storeInfo.addrDetail.indexOf("区") >
-							0) {
-							this.storeInfo.addrDetail = this.storeInfo.addrDetail
-						} else {
-							if (this.storeInfo.addrDetail.indexOf("市") > 0 && this.storeInfo.addrDetail.indexOf("区") > 0) {
-								this.storeInfo.addrDetail = this.storeInfo.addrProvinceName + this.storeInfo.addrDetail
-							} else if (this.storeInfo.addrDetail.indexOf("区") > 0) {
-								this.storeInfo.addrDetail = this.storeInfo.addrProvinceName + this.storeInfo.addrCityName + this.storeInfo.addrDetail
-							} else {
-								this.storeInfo.addrDetail = this.storeInfo.addrProvinceName + this.storeInfo.addrCityName + this.storeInfo.addrDistrictName + this.storeInfo.addrDetail
-							}
-						}
-						this.getOptionName()
-						this.storeInfo.distance = this.storeInfo.distanct && this.storeInfo.distanct.distance ? Math.round(this.storeInfo.distanct.distance / 1000) : ''
-					} else {
-					}
-				})
-			},
-			// 匹配数据字典 获取相应的name
-			getOptionName () {
-				console.log(222)
-				let storeLabelList = this.$store.state.vuex_storeLabel  // 网点标签数据字典列表
-				let arr = []
-				this.storeInfo.labelList.map(item =>{
-					let p = storeLabelList.find((i) => {
-						return i.code == item
-					})
-					if (p) {
-						arr.push(p.dispName)
-					} 
-				})
-				this.labelList = arr
-			},
-			// 获取排队情况
-			getWaitPhoto () {
-				this.loading = true
-				let deviceNo = this.storeInfo.deviceVOList && this.storeInfo.deviceVOList.length? this.storeInfo.deviceVOList[0].deviceNo :''
-				getWaitPhoto({deviceNo:deviceNo}).then(res=>{
-					this.loading = false
-					if(res.status==200) {
-						this.waitPhoto = res.data ? res.data : '/static/img/noPic.jpg'
-						this.showPop=true
-					} 
-				})
-			},
-			// 打开导航位置信息界面
-			openLocation () {
-				let data = this.storeInfo
-				let _this = this
-				uni.getLocation({
-				    type: 'gcj02', //返回可以用于uni.openLocation的经纬度
-				    success: function (res) {
-				        const latitude = data.lat;
-				        const longitude = data.lng;
-						uni.openLocation({
-							latitude: latitude,
-							longitude: longitude,
-							name: data.name,
-							address: data.addrDetail,
-							success: function () {
-								console.log('success');
-							  }
-						})
-				    },
-					fail:function(){
-						_this.toashMsg('获取位置信息失败,请先授权开启定位功能!')
-					}
-				});
-			}
-			
-		}
-	}
-</script>
-
-<style lang="scss">
-	page{
-		height: 100%;
-	}
-	.content{
-		padding: 0 20rpx;
-		width: 100%;
-		height: 100%;
-		display: flex;
-		flex-direction: column;
-		.page-content{
-			flex: 1;
-			overflow-y: scroll;
-		}
-		.header {
-			padding: 20rpx 0;
-			display: flex;
-			.store-info {
-				display: flex;
-				flex: 1;
-				flex-direction: column;
-				justify-content: space-between;
-				padding: 0 20rpx;
-				.name {
-					font-size: 32rpx;
-					color: #000;
-				}
-				.address{
-					font-size: 26rpx;
-				}
-				.location {
-					display: flex;
-					align-items: center;
-					font-size: 24rpx;
-					.left {
-						margin-right: 20rpx;
-					}
-					.icon {
-						color: #999;
-						margin-right: 5rpx;
-					}
-				}
-			}
-		}
-		.store-mark{
-			padding: 20rpx 0;
-			width: 100%;
-			.mark-item{
-				padding: 10rpx 20rpx;
-				border: 1px solid #eee;
-				border-radius: 30rpx;
-				margin-right: 20rpx;
-				font-size: 24rpx;
-			}
-		}
-		.store-server{
-			padding: 20rpx 0;
-			width: 100%;
-			font-size: 24rpx;
-			border-bottom: 1px solid #eee;
-			text{
-				margin-right: 30rpx;
-			}
-		}
-		.store-rich{
-			padding: 20rpx 0;
-			width: 100%;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: center;
-		}
-		.store-line{
-			border-bottom: 1px solid #eee;
-		}
-		.footer{
-			width: 100%;
-			display: flex;
-			margin-bottom: 20rpx;
-			justify-content: space-between;
-			button{
-				width: 45%;
-			}
-		}
-		.pop-img{
-			width: 100%;
-			height: 100%;
-		}
-	}
-</style>

+ 0 - 216
pages/store/storeList.vue

@@ -1,216 +0,0 @@
-<template>
-	<view class="content">
-		<scroll-view scroll-y="true" class="scroll-Y">
-			<view class="list" @click="intoDetail(item)" v-for="item in storeList" :key="item.id">
-				<view class="list-imgs">
-					<u-image width="160rpx" height="160rpx" :border-radius="10" :src="item.icon?item.icon:'/static/img/mddef.jpg'"></u-image>
-				</view>
-				<view class="store-info">
-					<view class="name">
-						{{item.name}}
-					</view>
-					<view class="address">
-						{{item.addrDetail}}
-					</view>
-					<view class="location">
-						<view class="left">
-							<uni-icons class="icon" size="16" type="paperplane"></uni-icons>
-							<text>{{item.distance}} km</text>
-						</view>
-						<view class="right">
-							<u-icon class="icon" size="32" name="clock"></u-icon>
-							<text>{{item.beginTime}}-{{item.endTime}} 营业</text>
-						</view>
-					</view>
-				</view>
-				<view class="list-right">
-					<u-image width="110rpx" height="110rpx" mode="aspectFit" :src="getStoreStatus(item)"></u-image>
-					<u-icon size="30" color="#999" name="arrow-right"></u-icon>
-				</view>
-			</view>
-			<u-empty class="noData" :text="noDataText" img-width="120" v-if="storeList.length==0 && status!='loading'" mode="list"></u-empty>
-			<view style="padding: 20upx;">
-				<u-loadmore v-if="total>pageSize || status=='loading'" :status="status" />
-			</view>
-		</scroll-view>
-	</view>
-</template>
-
-<script>
-	import uniIcons from "@/components/uni-icons/uni-icons.vue"
-	import {getStoreList} from '@/api/store.js'
-	export default {
-		components: {
-			uniIcons
-		},
-		data() {
-			return {
-				noDataText: '暂无数据',
-				status: 'loading',
-				storeList: [],
-				// 用户拒绝授权位置信息时默认展示青海西宁位置地图
-				currentPosition: {
-					lat: '36.636193',
-					lng: '101.760521'
-				},
-				pageNo: 1,
-				pageSize: 10,
-				total: 0
-			}
-		},
-		onShow() {
-
-		},
-		onLoad() {
-			// 获取当前经纬度
-			let _this = this
-			uni.getLocation({
-				type: 'wgs84', // 默认wgs84
-				success: function(res) {
-					_this.currentPosition.lat = res.latitude;
-					_this.currentPosition.lng = res.longitude;
-					// 查询门店信息
-					_this.getStoresList()
-				},
-				fail: function(res) {
-					console.log(res)
-					// 查询门店信息
-					_this.getStoresList()
-				},
-			});
-		},
-
-		computed: {},
-		methods: {
-			getStoresList() {
-				this.status = "loading"
-				let lat = this.currentPosition.lat
-				let lng = this.currentPosition.lng
-				getStoreList({
-					lat: lat,
-					lng: lng
-				}).then(res => {
-					console.log(res)
-					uni.hideLoading()
-					this.status = "loadmore"
-					if (res.status == 200) {
-						let list = res.data
-						list.map(item => {
-							if (item.addrDetail.indexOf("省") > 0 && item.addrDetail.indexOf("市") > 0 && item.addrDetail.indexOf("区") >
-								0) {
-								item.addrDetail = item.addrDetail
-							} else {
-								if (item.addrDetail.indexOf("市") > 0 && item.addrDetail.indexOf("区") > 0) {
-									item.addrDetail = item.addrProvinceName + item.addrDetail
-								} else if (item.addrDetail.indexOf("区") > 0) {
-									item.addrDetail = item.addrProvinceName + item.addrCityName + item.addrDetail
-								} else {
-									item.addrDetail = item.addrProvinceName + item.addrCityName + item.addrDistrictName + item.addrDetail
-								}
-							}
-							item.distance = item.distanct && item.distanct.distance ? Math.round(item.distanct.distance / 1000) : ''
-						})
-						this.storeList = this.storeList.concat(list)
-					} else {
-						this.storeList = []
-						this.noDataText = res.message
-					}
-				})
-			},
-			// 获取网点营业状态 营业状态 OPEN :营业  CLOSED:暂停营业  TO_BE_OPENED:即将开业
-			getStoreStatus(item) {
-				let today = new Date().toLocaleDateString() // 获取今天日期
-				let beginTime = today + ' ' + item.beginTime
-				let endTime = today + ' ' + item.endTime
-				let beginTimeStamp = new Date(beginTime).getTime()  // 获取开始时间戳
-				let endTimeStamp = new Date(endTime).getTime()  // 获取结束时间戳
-				let nowTimeStamp = new Date().getTime() // 获取当前时间戳
-				// 结束时间小于开始时间时 为跨天 结束时间应加1天
-				endTimeStamp = endTimeStamp <=beginTimeStamp ? (endTimeStamp+24*60*60*1000) : endTimeStamp
-				switch (item.businessStatus) {
-					case 'CLOSED':
-						return '/static/img/ztyy.jpg'
-						break;
-					case 'OPEN':
-						// 根据当前时间判断目前是否在营业时间范围内
-						if (nowTimeStamp>=beginTimeStamp && nowTimeStamp<=endTimeStamp) {
-							return '/static/img/yyz.jpg'
-						} else {
-							return '/static/img/ztyy.jpg'
-						}
-						break;
-					case 'TO_BE_OPENED':
-						return '/static/img/dky.jpg'
-						break;
-					default:
-						break;
-				}
-			},
-			// 进入网点详情
-			intoDetail (item) {
-				uni.navigateTo({
-					url: `/pages/store/storeDetail?id=${item.id}`
-				})
-			},
-
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	page{
-		height: 100%;
-	}
-	.content {
-		padding: 0 20rpx;
-		width: 100%;
-		height: 100%;
-		.scroll-Y {
-			width: 100%;
-			height: 100%;
-			padding: 20rpx 0;
-			.list {
-				display: flex;
-				border-bottom: 1px solid #eee;
-				.store-info {
-					display: flex;
-					flex: 1;
-					flex-direction: column;
-					justify-content: space-between;
-					padding: 20rpx;
-					.name {
-						font-size: 32rpx;
-						color: #000;
-					}
-					.address{
-						font-size: 26rpx;
-						padding: 10rpx 0;
-					}
-					.location {
-						display: flex;
-						align-items: center;
-						font-size: 24rpx;
-						.left {
-							margin-right: 20rpx;
-						}
-						.icon {
-							color: #999;
-							margin-right: 5rpx;
-						}
-					}
-				}
-				.list-imgs{
-					padding: 20rpx 0;
-				}
-				.list-right {
-					display: flex;
-					justify-content: center;
-					align-items: center;
-				}
-			}
-			.u-empty.data-v-6938e513{
-				height: 90%;
-			}
-		}
-	}
-</style>

+ 0 - 649
pages/work/index/index.vue

@@ -1,649 +0,0 @@
-<template>
-	<view class="work-pages">
-		<u-no-network></u-no-network>
-		<!-- 工作控制按钮及进度 -->
-		<view class="work-cons flex-center" style="flex-direction: column;">
-			<!-- 操作按钮组件 -->
-			<view class="work-button-wrap">
-				<!-- 按钮 -->
-				<view class="work-button flex-center">
-					<!-- 扇形进度条 -->
-					<view class="circle_process">
-						<view class="wrapper right"><view class="circle rightcircle" :style="{ transform: `rotate(${rdeg}deg)` }"></view></view>
-						<view class="wrapper left"><view class="circle leftcircle" :style="{ transform: `rotate(${ldeg}deg)` }"></view></view>
-					</view>
-					<view class="cirle-one"></view>
-					<!-- 指针 -->
-					<view class="cirle-two flex-center" v-for="item in 60" :key="item">
-						<view class="sector" :style="{ transform: `rotate(${item * 6}deg)` }"></view>
-					</view>
-					<view class="cirle-three flex-center"></view>
-					<view class="cirle-free" :class="status == 'working' ? 'w-stop' : 'w-start'"></view>
-					<view class="cirle-free-1" :class="status == 'working' ? 'w-stop' : 'w-start'"></view>
-					<view class="cirle-free-2" :class="status == 'working' ? 'w-stop' : 'w-start'"></view>
-					<view class="cirle-sex flex-center" @tap="startWork">
-					 {{ status == 'working' ? '紧急停止' : '点击启动' }}
-					</view>
-				</view>
-			</view>
-			<!-- 状态提示 -->
-			<view class="work-button-tips">
-				<u-notice-bar type="error" border-radius="50" color="#fff" bg-color="#666" mode="vertical" :list="[curWorkStutesText,curWorkStutesText]"></u-notice-bar>
-			</view>
-		</view>
-		<!-- 说明提示 -->
-		<view class="work-tips">
-			<view>
-				<view class="work-dtime" v-show="status=='start'||status=='starting'">
-					距离订单强制完成还剩
-					<u-count-down
-						v-if="timestamp>0"
-						@end="endDtime"
-						separator="zh"
-						font-size="36"
-						separator-size="28"
-						color="#ff0000"
-						:timestamp="timestamp"
-						:show-days="false"
-						:show-hours="false"
-					></u-count-down>
-				</view>
-				<view class="work-remarks">
-					<view class="title">说明:</view>
-					<view v-if="status=='start'||status=='starting'">
-						支付完成后
-						<text class="red">请尽快启动洗车服务</text>
-						,否则订单将在5分钟后自动完成。
-					</view>
-					<view v-else>
-						<view>设备启动中请注意安全,如果设备工作中出现故障,请按紧急停止按钮或联系客服。</view>
-						<view @click="callPhone">如有疑问,请联系客服:<text>{{kfMobile}}</text> </view>
-					</view>
-				</view>
-			</view>
-		</view>
-
-		<!-- 正在启动,归位弹框提示 -->
-		<u-popup v-model="showStart" :mask-close-able="false" border-radius="10" mode="center" width="500rpx" height="400rpx">
-			<view style="padding: 30rpx;display: flex;justify-content: center;text-align: center;">
-				<!-- 启动中 -->
-				<view v-if="status == 'starting'">
-					<u-image width="216px" height="120px" src="/static/img/start.png"></u-image>
-					<view style="padding: 15rpx;">洗车机正在启动...</view>
-				</view>
-				<!-- 停止中 -->
-				<view v-if="status == 'stoping'">
-					<u-image width="216px" height="120px" src="/static/img/start.png"></u-image>
-					<view style="padding: 15rpx;">洗车机正在停止中...</view>
-				</view>
-				<!-- 归位中 -->
-				<view v-if="status == 'reseting'">
-					<u-image width="216px" height="120px" src="/static/img/reset.png"></u-image>
-					<view style="padding: 15rpx;">洗车机正在归位中...</view>
-				</view>
-			</view>
-		</u-popup>
-		<!-- 洗车完成 -->
-		<u-modal v-model="showTips" @confirm="confirmFun" :content="content"></u-modal>
-		<!-- 急停提示弹框 -->
-		<u-popup v-model="showStop" :mask-close-able="false" border-radius="10" mode="center" width="80%">
-			<view style="padding: 30rpx;text-align: center;">
-				<view>
-					<view style="font-weight: bold;">设备提示</view>
-					<view style="display: flex;justify-content: center;padding: 10rpx 0;">
-						<u-image width="165px" height="138px" src="/static/img/sbts.png"></u-image>
-					</view>
-					<u-divider>可能原因</u-divider>
-					<view style="padding: 15rpx;text-align: left;">
-						<view>1、洗车机紧急停止,本次服务结束</view>
-						<view>2、因设备故障无法继续为您服务,所支付金额将退至您的支付账户</view>
-						<view>3、如需再次服务,请退出车辆重新进入,再扫码支付洗车</view>
-						<view>4、如需帮助请联系客服</view>
-					</view>
-					<view style="display: flex;padding: 20rpx 0;justify-content: center;">
-						<u-button @click="callPhone" style="width: 45%;border-radius: 0;margin-right: 5%;">联系客服</u-button>
-						<u-button :disabled="disabledResetBtn" @click="sendCmdRabt('reset')" style="width: 45%;" type="error">洗车机归位</u-button>
-					</view>
-				</view>
-			</view>
-		</u-popup>
-	</view>
-</template>
-
-<script>
-export default {
-	data() {
-		return {
-			timestamp: 0, // 初始情况下5分钟后自动结束
-			rdeg: -135, // 进度条初始角度
-			ldeg: -135, /// 进度条初始角度
-			step: 0, // 进度条增值,共60步
-			status: 'linking', // 状态,linking 连接中,start 开始启动, starting 启动中,working 正在工作,stoping 停止中, reset 归位,reseting 归位中, end 洗车完成,error-end 异常结束
-			curWorkStutesText: '设备准备就绪', // 当前机器运行的进度提示
-			showTips: false, // 错误提示
-			content: '', // 消息内容
-			confirmFun: function(){}, // 消息确认弹框
-			disabledResetBtn: false, 
-			showStart: false ,// 启动弹框提示
-			showStop: false, // 急停提示
-			washCarType: '', // 洗车服务类型,不同的类型对应的时间不一样
-			washDuration: 7.5, // 机器运行步骤,共8步,等分60
-			orderNo: '',// 订单编号
-			kfMobile: ''
-		};
-	},
-	onShow() {
-		console.log(this.$store.state.vuex_workStatus,"onShow")
-		this.kfMobile = this.$store.state.vuex_kfMobile
-	},
-	onLoad(options) {
-		console.log("onLoad")
-		// 创建websocket
-		this.$store.commit('$webSocket')
-		uni.showLoading({
-			title: '正在连接...',
-			mask: true
-		})
-		
-		// 监听网络状态
-		uni.onNetworkStatusChange(function (res) {
-		    console.log(res.isConnected);
-		    console.log(res.networkType);
-			if(res.isConnected){
-				uni.showLoading({
-					title: '正在连接...',
-					mask: true
-				})
-			}
-		});
-		
-		// 第一次进入洗车页面
-		if(this.$store.state.vuex_orderDjs == 0){
-			// 记录当前的时间
-			this.$u.vuex('vuex_orderDjs',new Date().getTime())
-		}
-		 
-		// 获取用户及订单信息
-		this.washCarType = this.$store.state.vuex_itemCode
-		this.orderNo = this.$store.state.vuex_orderNo
-		 
-		// 监听消息
-		uni.$on('wsMessage', this.watchMessage)
-		
-		// 更新进度条
-		if(this.$store.state.vuex_workStatus == 'working'){
-			this.step = this.$store.state.vuex_workStep
-			this.loading()
-		}
-		// 如果是复位状态
-		if(this.$store.state.vuex_workStatus == 'rest'){
-			this.showReset()
-		}
-		if(this.$store.state.vuex_workStatus == 'starting'){
-			this.status = 'start'
-			this.$store.state.vuex_workStatus = 'start'
-			// 更新当前倒计时
-			this.updateDjs()
-		}
-	},
-	onUnload() {
-		// 关闭socket
-		this.$store.commit("$closeWebsocket")
-		uni.$off('wsMessage', this.watchMessage)
-	},
-	methods: {
-		// 提示弹框
-		showModal(content, fun){
-			this.showTips = true
-			this.content = content
-			this.confirmFun = fun || function(){
-				this.showTips=false
-			}
-		},
-		// 电话客服
-		callPhone () {
-			uni.makePhoneCall({
-			    phoneNumber: this.$store.state.vuex_kfMobile
-			})
-		},
-		// 更新当前倒计时
-		updateDjs(){
-			let od = this.$store.state.vuex_orderDjs
-			console.log(od,'od')
-			if(od!=0){
-				let d = new Date().getTime() - od
-				this.timestamp = 300 - d/1000
-				if(this.timestamp<=0){
-					this.endDtime()
-				}
-			}
-		},
-		// 倒计时结束时,自动完成洗车订单
-		endDtime() {
-			console.log('endDtime',this.status)
-			if(this.status == 'start'||this.status=='starting'){
-				this.washCarSuccess()
-			}
-		},
-		// 监听socket消息
-		watchMessage(e){
-			if(typeof e == 'string'){
-				// 连接成功后
-				if(e=='connected'){
-					console.log('connected---',this.$store.state.vuex_workStatus)
-					uni.hideLoading()
-					if(this.$store.state.vuex_workStatus == 'linking'){
-						this.status = 'start'
-						this.$u.vuex('vuex_workStatus','start')
-					}
-				}
-				// 重连连接打开时发送获取当前状态的命令
-				if(e=='connectOpen'){
-					console.log('connectOpen---')
-					this.sendCmdRabt("order_run_status")
-				}
-			}
-			if(typeof e == 'object' && e.type == 'xcz'){
-				console.log(e.data.level,e.data.msgCodeInfo,e.data.msgCodeSrc)
-				// 自定义消息,不是机器返回的
-				if(e.data.level == 'O'){
-					// 启动超时
-					if(e.data.msgCode == "PAUSE"){
-						this.startWashCarFail(e.data.msgCodeInfo)
-					}
-					// 停车位置不正确,
-					if(e.data.msgCode=="TCWZ_CW"){
-						this.startWashCarFail(e.data.msgCodeInfo)
-					}
-					// 重新进入页面且还未启动洗车时
-					if(e.data.msgCode == "PAID"){
-						// 更新当前倒计时
-						this.updateDjs()
-					}
-					// 订单异常
-					if(e.data.msgCode == "0"){
-						// 更新当前倒计时
-						this.devError(e.data.msgCodeInfo)
-					}
-					// 洗车完成
-					if(e.data.msgCode=="FINISHED"){
-						this.washCarSuccess()
-					}
-				}
-				// 进度消息
-				if(e.data.level == 'C'&&this.status!="rest"){
-					this.curWorkStutesText= e.data.msgCodeInfo
-					if(e.data.msgCodeInfo != '开始洗车'){
-						// 启动成功
-						this.startWashCarSuccess()
-					}
-					// 更新进度条
-					this.step = e.data.msgCodeSrc?Number(e.data.msgCodeSrc.split('-')[1]):0
-					this.$store.state.vuex_workStep = this.step
-					this.loading()
-					 // 洗车完成
-					 if(e.data.msgCode=="XCWC" && this.status != 'end'){
-						 this.washCarSuccess()
-					 }
-				}
-				// 错误消息
-				if(e.data.level == 'F'&&this.status!="rest"){
-					this.curWorkStutesText= e.data.msgCodeInfo
-					// 启动成功
-					this.startWashCarSuccess()
-					// 显示复位提示弹框
-					this.showReset()
-				}
-				// 急停
-				if(e.data.level == 'A'){
-					// 设备急停
-					if(e.data.msgCode=="JJTZ"){
-						this.devError(e.data.msgCodeInfo)
-					}
-					// 小程序紧急急停
-					else if(e.data.msgCode=="XCX_JJTZ"){
-						this.curWorkStutesText= e.data.msgCodeInfo
-						// 显示复位提示弹框
-						this.showReset()
-					}
-					else{
-						if(this.status == 'working'){
-							this.devError()
-						}else{
-							this.showModal(e.data.msgCodeInfo)
-						}
-					}
-				}
-				// 复位状态
-				if(e.data.level == 'D'){
-					// 开始复位中
-					if(e.data.msgCode=="FW_START"){
-						this.reseting()
-					}
-					// 复位成功
-					else if(e.data.msgCode=="FW_SUCC"){
-						this.resetRabtSuccess()
-					}
-					// 设备离线,设备异常,暂停营业或复位失败,设备使用中
-					else if(e.data.msgCode=="PAUSE" || e.data.msgCode == "FW_FAIL" || e.data.msgCode == 'ERROR' || e.data.msgCode == 'SB_SYZ'){
-						this.devError(e.data.msgCodeInfo)
-						this.disabledResetBtn = false
-					}
-				}
-			}
-		},
-		// 重置到进度条初始状态
-		resetLoadingStatus(){
-			this.rdeg= -135;
-			this.ldeg= -135;
-		},
-		// 洗车机进度条动画
-		loading() {
-			if(this.step==16){this.step = 8}
-			let second = this.step*this.washDuration
-			if (second <= 30) {
-				this.rdeg = -135 + 6 * second;
-				this.ldeg = -135;
-			} else {
-				this.rdeg = 45;
-				this.ldeg = -135 + 6 * (second - 30);
-			}
-		},
-		// 操作按钮
-		startWork() {
-			let _this = this
-			console.log(this.status)
-			// 启动
-			if (this.status == 'start') {
-				this.sendCmdRabt("start")
-				this.starting()
-			}
-			// 急停
-			if (this.status == 'working') {
-				uni.showModal({
-				    title: '提示',
-				    content: '确定紧急停止洗车机?',
-				    success: function (res) {
-				        if (res.confirm) {
-							_this.sendCmdRabt("stop")
-							_this.stoping()
-				        }
-				    }
-				});
-			}
-		},
-		// 启动中
-		starting(){
-			this.showStart = true;
-			this.status = 'starting';
-			this.$u.vuex('vuex_workStatus','starting')
-			this.curWorkStutesText='设备启动中';
-		},
-		// 启动成功
-		startWashCarSuccess(){
-			this.showStart = false;
-			this.status = 'working';
-			this.$u.vuex('vuex_workStatus','working')
-		},
-		// 启动超时或失败
-		startWashCarFail(msg){
-			this.showStart = false;
-			this.status = 'start';
-			this.$u.vuex('vuex_workStatus','start')
-			this.curWorkStutesText=msg
-			this.showModal(msg)
-		},
-		// 发送命令,start 启动,stop 急停,reset 归位
-		sendCmdRabt(cmdCode){
-			// 归位命令
-			let cmd = {
-				orderNo: this.orderNo, // 订单编号
-				operateType: cmdCode, //操作命令
-				washType: this.washCarType,// 洗车模式
-			}
-			this.$store.commit("$sendWebsocket",JSON.stringify(cmd))
-			
-			// 点击复位后
-			if(cmdCode == 'reset'){
-				this.disabledResetBtn = true
-			}
-		},
-		// 停止中
-		stoping(){
-			this.showStart = true;
-			this.status = 'stoping';
-			this.$u.vuex('vuex_workStatus','stoping')
-			this.curWorkStutesText='设备停止中';
-		},
-		// 停止成功后或有F类错误时,显示复位弹框
-		showReset(){
-			this.showStart = false;
-			this.showStop = true;
-			this.status = 'reset';
-			this.$u.vuex('vuex_workStatus','reset')
-			this.resetLoadingStatus();
-		},
-		// 归位中
-		reseting(){
-			this.status = 'reseting';
-			this.$u.vuex('vuex_workStatus','reseting')
-			this.showStart = true;
-			this.showStop = false;
-			this.disabledResetBtn = false
-		},
-		// 归位结束后
-		resetRabtSuccess(){
-			this.curWorkStutesText='设备已归位';
-			this.status = 'end';
-			this.$u.vuex('vuex_workStatus','end')
-			// 关闭socket
-			this.$store.commit("$closeWebsocket");
-			// 跳转到复位成功页面
-			uni.redirectTo({
-				url:"/pages/work/success/success?type=1"
-			})
-		},
-		// 洗车完成
-		washCarSuccess(){
-			this.status = 'end';
-			this.$u.vuex('vuex_workStatus','end')
-			this.curWorkStutesText='洗车已结束';
-			this.resetLoadingStatus();
-			// 显示弹框
-			this.showModal('洗车已结束',function(){
-				// 跳转到成功页面
-				uni.redirectTo({
-					url:"/pages/work/success/success?type=0"
-				})
-			})
-			// 关闭socket
-			this.$store.commit("$closeWebsocket")
-		},
-		// 设备异常
-		devError(msg){
-			this.showStart = false;
-			this.showStop = false;
-			this.status = "error-end";
-			this.$u.vuex('vuex_workStatus','error-end')
-			this.resetLoadingStatus();
-			// 显示弹框
-			this.showModal(msg || '设备异常,请联系客服',function () {
-					uni.navigateBack()
-		    })
-			// 关闭socket
-			this.$store.commit("$closeWebsocket");
-		},
-	}
-};
-</script>
-
-<style lang="scss">
-// 扇形圆环
-.circle_process {
-	position: absolute;
-	width: 390rpx;
-	height: 390rpx;
-}
-.circle_process .wrapper {
-	width: 195rpx;
-	height: 390rpx;
-	position: absolute;
-	top: 0;
-	overflow: hidden;
-}
-.circle_process .right {
-	right: 0;
-}
-.circle_process .left {
-	left: 0;
-}
-.circle_process .circle {
-	width: 390rpx;
-	height: 390rpx;
-	border: 20rpx solid transparent;
-	border-radius: 50%;
-	position: absolute;
-	top: 0;
-	transform: rotate(-135deg);
-}
-.circle_process .rightcircle {
-	border-top: 20rpx solid #4CD964;
-	border-right: 20rpx solid #4CD964;
-	right: 1px;
-}
-.circle_process .leftcircle {
-	border-bottom: 20rpx solid #4CD964;
-	border-left: 20rpx solid #4CD964;
-	left: 1px;
-}
-// 动画
-@keyframes mymove {
-	0% {
-		transform: scale(1); /*开始为原始大小*/
-		opacity: 1;
-	}
-	50% {
-		transform: scale(1.2); /*放大1.1倍*/
-		opacity: 0;
-	}
-}
-
-.work-pages {
-	width: 100%;
-	.flex-center {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-	}
-	.work-cons {
-		height: 50vh;
-		background-image: linear-gradient(0deg, #666, #333);
-		border-bottom-left-radius: 500rpx 50rpx;
-		border-bottom-right-radius: 500rpx 50rpx;
-		position: relative;
-		// 按钮
-		.work-button-wrap {
-			width: 400rpx;
-			margin-top: -50rpx;
-			.work-button {
-				background: #666;
-				border-radius: 100%;
-				width: 390rpx;
-				height: 390rpx;
-				box-shadow:inset 0rpx 2rpx 10rpx #000;
-				.cirle-one {
-					background-image: linear-gradient(180deg, #666, #333 30%);
-					width: 370rpx;
-					height: 370rpx;
-					border-radius: 100%;
-					position: absolute;
-					box-shadow: 0rpx 2rpx 10rpx #333;
-				}
-				.cirle-two {
-					width: 370rpx;
-					height: 370rpx;
-					border-radius: 100%;
-					position: absolute;
-					.sector {
-						transform-origin: center center;
-						width: 350rpx;
-						height: 5rpx;
-						background: #777;
-					}
-				}
-				.cirle-three {
-					background: #444;
-					width: 280rpx;
-					height: 280rpx;
-					border-radius: 100%;
-					position: absolute;
-					box-shadow: inset 0rpx 3rpx 10rpx #000;
-				}
-				.cirle-free, .cirle-free-1, .cirle-free-2 {
-					width: 230rpx;
-					height: 230rpx;
-					border-radius: 100%;
-					position: absolute;
-					animation: mymove 5s infinite;
-				}
-				.cirle-free-1{
-					width: 210rpx;
-					height: 210rpx;
-					animation: mymove 4.5s infinite;
-				}
-				.cirle-free-2{
-					width: 190rpx;
-					height: 190rpx;
-					animation: mymove 4s infinite;
-				}
-				.cirle-sex {
-					background-image: linear-gradient(180deg, #888, #333 50%);
-					box-shadow: 0rpx 5rpx 10rpx #333;
-					width: 210rpx;
-					height: 210rpx;
-					border-radius: 100%;
-					position: absolute;
-					color: #ffffff;
-					font-size: 28rpx;
-					color: #eee;
-					&:active {
-						background-image: linear-gradient(-180deg, #666, #333 80%);
-					}
-				}
-				.w-start {
-					background: #ffc800;
-				}
-				.w-stop {
-					background: #ff0000;
-				}
-			}
-		}
-		.work-button-tips {
-			width: 80%;
-			color: #eee;
-			text-align: center;
-			padding-top: 30rpx;
-			.u-swiper-item{
-				justify-content: center;
-			}
-		}
-	}
-	.work-tips {
-		padding: 45rpx;
-		.work-dtime {
-			text-align: center;
-			font-weight: bold;
-			font-size: 34rpx;
-		}
-		.work-remarks {
-			padding-top: 50rpx;
-			.red {
-				color: red;
-			}
-			.title {
-				font-weight: bold;
-			}
-		}
-	}
-}
-</style>

+ 0 - 85
pages/work/success/success.vue

@@ -1,85 +0,0 @@
-<template>
-	<view class="s-pages">
-		<vew class="heads">
-			<view><u-icon name="checkmark-circle-fill" size="200" color="red"></u-icon></view>
-			<view v-if="type==1">洗车机归位成功</view>
-			<view v-if="type==0">洗车已完成</view>
-			<view class="s-butoon">
-				<u-button @click="toHome" type="error">重新扫码洗车</u-button>
-			</view>
-		</vew>
-		<view class="infos">
-			<view>操作说明:</view>
-			<view>【重新扫码洗车】需要再次支付洗车费用,如果遇到非个人原因导致洗车机中途归位,客服会在7个工作日内核实情况后,将已付费用按原支付渠道退款给付款账户。带来不便,敬请谅解。</view>
-			<view @click="callPhone">如有疑问,请联系客服:<text>{{kfMobile}}</text> </view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				type: 1,
-				kfMobile: ''
-			};
-		},
-		onLoad(opts) {
-			this.type = opts.type
-			this.kfMobile = this.$store.state.vuex_kfMobile
-		},
-		methods:{
-			// 电话客服
-			callPhone () {
-				uni.makePhoneCall({
-				    phoneNumber: this.$store.state.vuex_kfMobile
-				})
-			},
-			// 返回首页
-			toHome () {
-				uni.reLaunch({
-					url: "/pages/index/index"
-				})
-			},
-			// 再次洗车
-			toWork(){
-				uni.redirectTo({
-					url: "/pages/getOrder/getOrder"
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.s-pages{
-		width: 100%;
-		.heads{
-			text-align: center;
-			display: flex;
-			justify-content: center;
-			flex-direction: column;
-			padding: 50rpx 50rpx 20rpx;
-			.s-butoon{
-				padding: 50rpx 0 0 0;
-				.u-btn{
-					margin-bottom: 35rpx;
-				}
-			}
-		}
-		.infos{
-			padding:0 50rpx;
-			> view{
-				padding: 10rpx 0;
-				text-indent: 24px;
-				line-height: 22px;
-				&:first-child{
-					text-indent: 0;
-				}
-				text{
-					color: red;
-				}
-			}
-		}
-	}
-</style>

BIN
static/img/carmore.jpg


BIN
static/img/cztis.png


BIN
static/img/dky.jpg


BIN
static/img/end.png


BIN
static/img/index-call.png


BIN
static/img/index-discount.png


BIN
static/img/index-list.png


BIN
static/img/location.png


BIN
static/img/logo.png


BIN
static/img/mddef.jpg


BIN
static/img/noPic.jpg


BIN
static/img/person.png


BIN
static/img/reset.png


BIN
static/img/sbts.png


BIN
static/img/select.png


BIN
static/img/start.png


BIN
static/img/step-one.png


BIN
static/img/store-dky.png


BIN
static/img/store-zt.png


BIN
static/img/store.png


BIN
static/img/unselect.png


BIN
static/img/yyz.jpg


BIN
static/img/ztyy.jpg


BIN
static/img/zysx.png


BIN
static/img/zyts.png