17755135699 hai 7 meses
pai
achega
b8f55f3399

+ 104 - 0
components/uNavBar1/index.vue

@@ -0,0 +1,104 @@
+<template>
+	<u-navbar class="nav" :title="title" :leftIconSize="36" bgColor="#ffffff" leftIconColor="#fff"
+		:titleStyle="titleStyle">
+		<view class="u-nav-slot" slot="left">
+			<u-icon name="arrow-left" size="44" color='#fff' @tap="toBack(backUrl)"></u-icon>
+			<u-line v-if="showHome" direction="column" color='#fff' :hairline="false" length="0"
+				margin="0 15rpx"></u-line>
+			<u-icon v-if="showHome" name="home" color='#fff' size="48" @tap="toHome"></u-icon>
+		</view>
+	</u-navbar>
+</template>
+
+<script>
+	export default {
+		options: {
+			styleIsolation: 'shared'
+		},
+		props: {
+			title: {
+				typeof: String,
+				default: ''
+			},
+			showHome: {
+				typeof: Boolean,
+				default: true
+			},
+			backUrl: {
+				typeof: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				titleStyle: {
+					fontSize: '36rpx',
+					fontWeight: "bold",
+					color: "#111111"
+				},
+				tabUrls: [
+					'/pages/index/index',
+					'/pages/touristMap/index',
+					'/pages/oneCodePass/index',
+					'/pages/service/index',
+					'/pages/my/index'
+				]
+			}
+		},
+		methods: {
+			toBack(url) {
+				console.log(url, 'url');
+				if (!url) {
+					let canNavBack = getCurrentPages();
+					if (canNavBack && canNavBack.length > 1) uni.navigateBack();
+					else uni.redirectTo({
+						url
+					});
+				} else {
+					if (this.tabUrls.find(u => u == url)) uni.reLaunch({
+						url
+					});
+					else uni.redirectTo({
+						url
+					});
+				}
+			},
+			toHome() {
+				uni.reLaunch({
+					url: '/pages/index/index'
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	::v-deep .u-nav-slot {
+		display: flex;
+		padding: 8rpx 16rpx;
+		width: 150rpx;
+		background-color: rgba(0, 0, 0, 0.2);
+		border-radius: 30rpx;
+		color: #fff;
+	}
+
+
+	.nav {
+		color: #fff;
+		background-color: transparent;
+	}
+
+	.u-navbar__content {
+		color: #fff !important;
+		background-color: transparent !important;
+	}
+
+	.u-status-bar {
+		color: #fff !important;
+		background-color: transparent !important;
+	}
+
+	.u-navbar__content__title {
+		color: #fff !important;
+	}
+</style>

+ 104 - 0
components/uNavBar1/index2.vue

@@ -0,0 +1,104 @@
+<template>
+	<u-navbar class="nav" :title="title" :leftIconSize="36" bgColor="#111" leftIconColor="#111"
+		:titleStyle="titleStyle">
+		<view class="u-nav-slot" slot="left">
+			<u-icon name="arrow-left" size="44" color='#111' @tap="toBack(backUrl)"></u-icon>
+			<u-line v-if="showHome" direction="column" color='#111' :hairline="false" length="0"
+				margin="0 15rpx"></u-line>
+			<u-icon v-if="showHome" name="home" color='#111' size="48" @tap="toHome"></u-icon>
+		</view>
+	</u-navbar>
+</template>
+
+<script>
+	export default {
+		options: {
+			styleIsolation: 'shared'
+		},
+		props: {
+			title: {
+				typeof: String,
+				default: ''
+			},
+			showHome: {
+				typeof: Boolean,
+				default: true
+			},
+			backUrl: {
+				typeof: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				titleStyle: {
+					fontSize: '36rpx',
+					fontWeight: "bold",
+					color: "#111111"
+				},
+				tabUrls: [
+					'/pages/index/index',
+					'/pages/touristMap/index',
+					'/pages/oneCodePass/index',
+					'/pages/service/index',
+					'/pages/my/index'
+				]
+			}
+		},
+		methods: {
+			toBack(url) {
+				console.log(url, 'url');
+				if (!url) {
+					let canNavBack = getCurrentPages();
+					if (canNavBack && canNavBack.length > 1) uni.navigateBack();
+
+					else uni.navigateBack({
+						url
+					});
+				} else {
+					if (this.tabUrls.find(u => u == url)) uni.navigateBack({
+						url
+					});
+					else uni.navigateBack({
+						url
+					});
+				}
+			},
+			toHome() {
+				uni.reLaunch({
+					url: '/pages/index/index'
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	::v-deep .u-nav-slot {
+		display: flex;
+		padding: 8rpx 16rpx;
+		width: 150rpx;
+		background-color: rgba(0, 0, 0, 0.2);
+		border-radius: 30rpx;
+		color: #111 !important;
+	}
+
+	.nav {
+		color: #111;
+		background-color: transparent;
+	}
+
+	.u-navbar__content {
+		color: #111 !important;
+		background-color: transparent !important;
+	}
+
+	.u-status-bar {
+		color: #111 !important;
+		background-color: transparent !important;
+	}
+
+	.u-navbar__content__title {
+		color: #111 !important;
+	}
+</style>

+ 2 - 1
main.js

@@ -49,7 +49,8 @@ Vue.component('Tabbar', Tabbar);
 // 全局注册tabbar组件
 import Tabbares from './components/Tabbares'
 Vue.component('Tabbares', Tabbares);
-
+import customNavBar1 from './components/uNavBar1/index.vue'
+Vue.component('c-nav-bar1', customNavBar1);
 //全局分享当前页(带参数)
 import wxShare from '@/utils/wxShare.js'
 Vue.mixin(wxShare);

+ 2 - 0
pagesHouse/Mine/Businesses/Businesses.vue

@@ -502,6 +502,8 @@
 		font-weight: bold;
 		font-size: 28rpx;
 		color: #FFFFFF;
+		height:88rpx;
+		line-height: 88rpx;
 	}
 
 	.from-content {

+ 287 - 191
pagesHouse/Mine/ordersList/details/details.vue

@@ -1,112 +1,148 @@
 <template>
-	<!-- <view class="page" :style="{'min-height':h+'px'}"> -->
-	<view class="page">
-		<view class="" style="height: 100%; padding-bottom: 260rpx;">
+	<view class="page" :style="{'min-height':h+'px','padding-top':(mt)+'px'}">
+		<c-nav-bar1 title="订单详情"></c-nav-bar1>
+		<view class="bg"></view>
+		<view class="content">
 			<view class="head">
-				<text v-if='list.state==0' class="orange">待支付</text>
-				<text v-else-if='list.state==1' class="red">已支付</text>
-				<text v-else-if='list.state==-1' class="red">已取消</text>
-				<text v-else-if='list.state==-2' class="green">退款中</text>
-				<text v-else-if='list.state==3' class="green">已完成</text>
-				<text v-else-if='list.state==-3' class="green">已退款</text>
-				<text v-else-if='list.state==4' class="red">待使用</text>
-				<text v-else-if='list.state==5' class="green">已预约</text>
-				<text v-else :class="statusClass[list.state]">{{status[list.state]}}</text>
-				<!-- <text>¥</text> -->
-				<!-- <text>{{list.totalPrice}}</text> -->
+				<text v-if="merchantType==10">{{FishJialeOcfg[infoMation.status]}}</text>
+				<text v-esle>{{FishJialeOcfg2[infoMation.orderStatus]}}</text>
+				<view class="time">
+					有效期:{{infoMation.activityStartTime&&infoMation.activityStartTime.substring(0,10)}}至{{infoMation.activityEndTime&&infoMation.activityEndTime.substring(0,10)}}
+				</view>
 			</view>
-
 			<view class="ticketInfo">
-				<view class="hander-titles">
-					<view class="image">
-						<image src="https://i.ringzle.com/file/20240225/0db2e93d80054b459c6e40466fa852c0.png" mode="">
-						</image>
-					</view>
+				<!-- <view class="hander-titles">
 					<view class="names">
 						{{list.fishermanName}}
 					</view>
 					<view class="rights">
 						<u-icon name="arrow-right"></u-icon>
 					</view>
+				</view> -->
+				<view v-if="merchantType==10" class="dateAndType">
+					<u-icon name="calendar" size="32" color="#272636"></u-icon>
+					<text>{{infoMation.payTime}}出发/{{infoMation.orderType==3?'拼船':'包船'}}</text>
 				</view>
 				<view class="ticketInfo-hander">
 					<view class="image">
-						<image :src="list.picList[0]" mode="aspectFill"></image>
+						<image :src="infoMation.productImg|delArr" mode="aspectFill"></image>
 					</view>
-					<view class="" style="width: 100%; display: flex; flex-wrap: wrap; justify-content: space-between;">
-						<view class="name" style="display: flex; justify-content: space-between;">
-							<view class="">
-								{{list.thingName}}
-							</view>
-							<view class="" style="display: flex;align-items: center;;" @click="cardBtn(list)">
-								<!-- <text style="color: #01B9F9; font-size: 26rpx ; font-weight: 500;">
-							</text><u-icon name="arrow-right" color="#808080" size="26rpx"></u-icon> -->
-								¥{{list.totalPrice}}
-							</view>
+					<view class="right">
+						<view class="name">
+							{{infoMation.productName}}
 						</view>
-						<view class="date">
-							<view class="">
-								价格:<text>¥{{list.totalPrice}}/人</text>
-							</view>
-							<view class="">
-								数量:<text>X{{list.num}}</text>
-							</view>
+						<view class="tip">
+							周一至周日 · 无需预约
+						</view>
+						<view class="price">
+							<text>¥</text><text>{{infoMation.realityPay}}</text>
 						</view>
-
 					</view>
 				</view>
-
-				<view class="ticketInfo-demo">
-
+			</view>
+			<view class="foods">
+				<view class="tit">
+					套餐明细
+				</view>
+				<view class="li" v-for="(item,inex) in infoMation.productsDetail" :key="index">
+					<text>{{item.name}}</text>
+					<text>{{item.number}}</text>
+					<text>¥{{item.price}}</text>
 				</view>
 			</view>
+			<!-- 游客信息 -->
+			<view class="orderInfo " style="padding-bottom: 30rpx;">
+				<view class="tit">游客信息</view>
+				<u-cell :border="false" v-for="(i,index) in infoMation.aa">
+					<text slot="icon" class="txt">订单编号</text>
+					>
+					<text slot="title" class="val">{{infoMation.orderCode}}</text>
+					<text slot="right-icon">复制</text>
+				</u-cell>
+			</view>
 			<!-- 订单信息 -->
 			<view class="orderInfo " style="padding-bottom: 30rpx;">
 				<view class="tit">订单信息</view>
-
-				<u-cell :border="true">
+				<u-cell :border="false">
 					<text slot="icon" class="txt">订单编号</text>
 					>
-					<text slot="title" class="val">{{list.orderCode}}</text>
+					<text slot="title" class="val">{{infoMation.orderCode}}</text>
 					<text slot="right-icon" class="icon"
 						style="border: 1rpx solid #007A69; border-radius: 50rpx; box-sizing: border-box; color: #007A69;padding: 2rpx 10rpx; font-size: 22rpx; font-weight: Regular;"
-						@tap="copyOrderNo(list)">复制</text>
-				</u-cell>
-
-				<u-cell :border="true">
-					<text slot="icon" class="txt">下单时间</text>
-					>
-					<text slot="title" class="val">{{list.orderTime}}</text>
-				</u-cell>
-				<u-cell :border="true">
-					<text slot="icon" class="txt">联系人</text>
-					>
-					<text slot="title" class="val">{{list.userName}}</text>
-				</u-cell>
-				<u-cell :border="true">
-					<text slot="icon" class="txt">联系方式</text>
-					>
-					<text slot="title" class="val">{{list.phone}}</text>
-
-				</u-cell>
-				<u-cell :border="true">
-					<text slot="icon" class="txt">支付方式</text>
-					>
-					<text slot="title" class="val">微信支付</text>
+						@tap="copyOrderNo()">复制</text>
 				</u-cell>
+				<template v-if="merchantType==4">
+					<u-cell :border="false">
+						<text slot="icon" class="txt">付款时间</text>
+						>
+						<text slot="title" class="val">{{infoMation.orderTime}}</text>
+					</u-cell>
+					<u-cell :border="false">
+						<text slot="icon" class="txt">订单总价</text>
+						>
+						<text slot="title" class="val">{{infoMation.realityPay}}</text>
+					</u-cell>
+					<u-cell :border="false">
+						<text slot="icon" class="txt">实际付款</text>
+						>
+						<text slot="title" class="val">{{infoMation.realityPay}}</text>
+					</u-cell>
+					<u-cell :border="false">
+						<text slot="icon" class="txt">联系方式</text>
+						>
+						<text slot="title" class="val">{{infoMation.phone}}</text>
+					</u-cell>
+				</template>
+				<template v-if="merchantType==10">
+					<u-cell :border="false">
+						<text slot="icon" class="txt">下单时间</text>
+						>
+						<text slot="title" class="val">{{infoMation.orderTime}}</text>
+					</u-cell>
+					<u-cell :border="false">
+						<text slot="icon" class="txt">下单时间</text>
+						>
+						<text slot="title" class="val">{{infoMation.realityPay}}</text>
+					</u-cell>
+					<u-cell :border="false">
+						<text slot="icon" class="txt">联系方式</text>
+						>
+						<text slot="title" class="val">{{infoMation.realityPay}}</text>
+					</u-cell>
+					<u-cell :border="false">
+						<text slot="icon" class="txt">支付方式</text>
+						>
+						<text slot="title" class="val">{{infoMation.phone}}</text>
+					</u-cell>
+					<u-cell :border="false">
+						<text slot="icon" class="txt">总计</text>
+						>
+						<text slot="title" class="val" style="color: #111">{{infoMation.totalPrice}}</text>
+					</u-cell>
+				</template>
 			</view>
 		</view>
-		<view class="btns">
-			<template v-if="list.state==4||list.state==5">
-				<view class="detail del" @tap="handleDetail(list)">
-					核销订单
+		<!-- 餐饮 -->
+		<view class="btns" v-if="merchantType==4&&infoMation.orderStatus==4">
+			<view class="detail del" @tap="hexiao()" v-if="infoMation.orderStatus==4">
+				核销订单
+			</view>
+			<!-- <template v-else>
+				<view class="detail" @tap="Detail(list)">
+					删除订单
 				</view>
-			</template>
-			<template v-else>
+			</template> -->
+
+		</view>
+		<view class="btns" v-if="merchantType==10&&infoMation.status==1">
+			<view class="detail del" @tap="hexiao()" v-if="infoMation.status==1">
+				核销订单
+			</view>
+			<!-- <template v-else>
 				<view class="detail" @tap="Detail(list)">
 					删除订单
 				</view>
-			</template>
+			</template> -->
 
 		</view>
 	</view>
@@ -117,38 +153,81 @@
 	export default {
 		data() {
 			return {
-				h: uni.getSystemInfoSync().windowHeight,
-				mt: uni.getSystemInfoSync().statusBarHeight + 44,
+				merchantType: uni.getStorageSync('merchantType'),
+				merchantId: uni.getStorageSync('merchantId'),
+				//渔家乐
+				FishJialeOcfg: {
+					0: '待支付',
+					1: '待使用',
+					2: '拼船中',
+					3: '已使用',
+					4: '退款中',
+					5: '已退款',
+					6: '已取消',
+					7: '已完成',
+					8: '拼团失败'
+				},
+				//餐饮
+				FishJialeOcfg2: {
+					0: '待支付',
+					4: '待使用',
+					3: '已完成',
+					'-1': '已取消',
+					'-2': '退款中',
+					'-3': '已退款',
+				},
 				list: {},
-				statusClass: [
-					'',
-					'green',
-					'blue',
-					'grey',
-					'grey',
-				],
-
+				infoMation: {},
+				orderCode: '',
+			}
+		},
+		onLoad(opt) {
+			this.orderCode = opt.orderCode;
+			if (this.merchantType == 10) {
+				this.info()
+			} else {
+				this.info2()
 			}
 		},
-		onLoad() {
-			this.list = uni.getStorageSync('list')
-			console.log(this.list);
-			// console.log(JSON.parse(option.list));
-			// this.list = JSON.parse(option.list)
-			// console.log('-----', this.list);
+		filters: {
+			delArr(val) {
+				if (val) {
+					return val.split(',')[0]
+				}
 
+			}
 		},
 		methods: {
-			copyOrderNo(item) {
+			//渔家乐
+			info() {
+				this.$api.get('/api/fishering/personCenterOrderDetail/' + this.orderCode).then(res => {
+					console.log(res)
+					if (res.data.code == 0) {
+						this.infoMation = res.data.data;
+					}
+				})
+			},
+			//餐饮
+			info2() {
+				this.$api.get('/api/merchant/food/queryOrderDetail', {
+					orderCode: this.orderCode
+				}).then(res => {
+					if (res.data.code == 0) {
+						this.infoMation = res.data.data;
+						this.infoMation.productsDetail = JSON.parse(res.data.data.productsDetail);
+					}
+				})
+			},
+			copyOrderNo() {
 				let that = this;
 				// #ifdef H5
-				this.$copyText(item.orderCode).then(res => {
+				this.$copyText(this.infoMation.orderCode).then(res => {
 					this.$showToast('复制成功');
 				})
 				// #endif
 				// #ifdef MP-WEIXIN
 				uni.setClipboardData({
-					data: item.orderCode,
+					data: this.infoMation.orderCode,
 					success(res) {
 						that.$showToast('复制成功');
 					},
@@ -159,30 +238,28 @@
 				// #endif
 			},
 			// 核销
-			handleDetail(item) {
-
-				uni.navigateTo({
-					url: '/pagesHouse/Verification/index'
-				})
-				// console.log(item);
-				// this.$api.post('/merchant/merchantFisherman/home/writeOffOrder', {
-				// 	writeOffCode: item.orderCode
-				// }).then(
-				// 	res => {
-				// 		console.log(res.data);
-				// 	})
-			},
-			// 删除订单
-			toStatus() {
-				this.$refs.uToast.show({
-					type: 'success',
-					title: '',
-					message: "正在开发",
-					iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/default.png'
-				})
+			hexiao(item) {
+				let that = this;
+				if (this.merchantType == 10) {} else {}
+				uni.showModal({
+					title: '提示',
+					content: '确定核销订单?',
+					success: function(res) {
+						if (res.confirm) {
+							that.$api.post('/api/merchant/food/scenic/merchant/order/verifyOrderQrCode', {
+								merchantId: that.merchantId,
+								orderCode: that.infoMation.orderCode,
+								type: 4
+							}).then(res => {
+								if (res.data.code === 0) {
+									that.$showToast('订单已核销');
+									that.init();
+								} else that.$showToast(res.data.msg)
+							})
+						}
+					}
+				});
 			},
-
-
 		}
 	}
 </script>
@@ -194,13 +271,68 @@
 		box-sizing: border-box;
 	}
 
+	.bg {
+		height: 100%;
+		position: fixed;
+		z-index: 1;
+		width: 100%;
+		background-image: linear-gradient(to bottom, #007A69, #F5F8FA, #F5F8FA);
+	}
+
+	.content {
+		position: relative;
+		z-index: 99;
+	}
+
 	.page {
 		box-sizing: border-box;
 		// height: 100%;
-		background-color: #F5F8FA;
+		background-color: #007A69;
+		padding-bottom: 170rpx;
 	}
 
+	.foods {
+		padding: 0 20rpx 10rpx;
+		background: #fff;
+		border-radius: 16rpx;
+		margin: 0 20rpx 20rpx;
+
+		.tit {
+			padding-top: 54rpx;
+			font-family: PingFang-SC, PingFang-SC;
+			font-weight: bold;
+			font-size: 36rpx;
+			color: #111111;
+			line-height: 40rpx;
+			text-align: left;
+			font-style: normal;
+			margin-bottom: 36rpx;
+		}
+
+		.li {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-bottom: 24rpx;
 
+			text {
+				font-size: 26rpx;
+				color: #111;
+
+				&:first-child {
+					width: 80rpx;
+				}
+
+				&:nth-child(2) {
+					color: #999;
+					text-align: right;
+					display: inline-block;
+					flex: 1;
+					margin-right: 30rpx;
+				}
+			}
+		}
+	}
 
 	.ticketInfo-demo {
 		// border-bottom: 2rpx solid #EFEFEF;
@@ -262,12 +394,22 @@
 		box-sizing: border-box;
 		width: 96%;
 		margin: 0 auto 20rpx;
-		padding: 40rpx 24rpx 4rpx;
+		padding: 33rpx 24rpx;
 		border-radius: 20rpx;
 		position: relative;
 		background-color: #fff;
 		z-index: 2;
 
+		.dateAndType {
+			height: 36rpx;
+			font-family: PingFang-SC, PingFang-SC;
+			font-weight: bold;
+			font-size: 32rpx;
+			color: #333333;
+			line-height: 36rpx;
+			margin-bottom: 48rpx;
+		}
+
 		.hander-titles {
 			display: flex;
 			height: 32rpx;
@@ -299,6 +441,7 @@
 
 			.image {
 				width: 136rpx;
+				min-width: 136rpx;
 				height: 136rpx;
 				border-radius: 12rpx;
 				margin-right: 20rpx;
@@ -313,12 +456,28 @@
 		}
 
 		.name {
-			font-size: 32rpx;
+			font-size: 30rpx;
+			line-height: 30rpx;
 			color: #333;
 			font-weight: bold;
 			width: 100%;
 		}
 
+		.tip {
+			margin: 16rpx 0 20rpx;
+			color: #777;
+		}
+
+		.price {
+			text {
+				font-size: 30rpx;
+
+				&:first-child {
+					font-size: 24rpx;
+				}
+			}
+		}
+
 		.date {
 			// padding: 20rpx 0 32rpx;
 			padding-top: 20rpx;
@@ -339,43 +498,6 @@
 
 
 
-		.topHead {
-			width: 96%;
-			margin: 0 auto;
-			background-color: #F5F8FA;
-			padding: 28rpx 0 28rpx 84rpx;
-			border-radius: 16rpx;
-			position: relative;
-
-			text {
-				position: absolute;
-				left: 0;
-				top: 0;
-				z-index: 1;
-				border-radius: 16rpx 0 0 16rpx;
-				width: 48rpx;
-				color: #fff;
-				font-size: 20rpx;
-				background-color: #484F61;
-				text-align: center;
-				height: 100%;
-				padding: 15rpx 10rpx 0;
-
-			}
-
-			.p {
-				font-size: 28rpx;
-				color: #333;
-
-				&:nth-of-type(1) {
-					font-weight: 600;
-					margin-bottom: 16rpx;
-				}
-			}
-
-
-		}
-
 		.code {
 			margin-top: 40rpx;
 			text-align: center;
@@ -413,46 +535,20 @@
 
 	.head {
 		box-sizing: border-box;
-		padding: 34rpx 24rpx 40rpx;
-		// display: flex;
-		// position: relative;
-		// z-index: 2;
+		padding: 37rpx 40rpx 30rpx;
+		color: #fff;
 
 		text {
-			color: #fff;
-
-			&:nth-child(1),
-			&:nth-child(3) {
-				font-size: 44rpx;
-				font-weight: Bold;
-			}
-
-			&:nth-child(2) {
-				flex: 1;
-				text-align: right;
-				width: 100px;
-				font-size: 36rpx;
-			}
-		}
 
-		.red {
-			color: indianred;
-		}
-
-		.green {
-			color: #111111;
-		}
+			font-size: 44rpx;
+			font-weight: Bold;
 
-		.blue {
-			color: #1372FF;
-		}
 
-		.grey {
-			color: #4C5F76;
 		}
 
-		.orange {
-			color: #FF9100;
+		.time {
+			margin-top: 18rpx;
+			font-size: 28rpx;
 		}
 	}
 
@@ -464,7 +560,7 @@
 		width: 100%;
 		position: fixed;
 		bottom: 0;
-		z-index: 4;
+		z-index: 999;
 		left: 0;
 		display: flex;
 		padding: 32rpx 32rpx 50rpx;

+ 223 - 214
pagesHouse/Mine/ordersList/index.vue

@@ -3,53 +3,75 @@
 		<c-nav-bar title="我的订单"></c-nav-bar>
 		<view class="tb">
 			<view class="tabs">
-				<view v-for="(item,index) in tabList" :key="index" @tap="changeTab1(index)">
+				<view v-for="(item,index) in tabList" :key="index" @tap="changeStatus(index)">
 					<text :class="index==current?'active':''">{{item.name}}</text>
 				</view>
 			</view>
 		</view>
 		<view class="mainContain">
 			<view v-if="dataList.length>0" class="card" v-for="item,index  in dataList" :key="index">
-				<view class="header">
-					<span style="font-weight: 700;">下单时间:{{item.orderTime}}</span>
-					<text v-if='item.state==0' class="orange">待支付</text>
-					<text v-else-if='item.state==1' class="red">已支付</text>
-					<text v-else-if='item.state==-1' class="red">已取消</text>
-					<text v-else-if='item.state==-2' class="green">退款中</text>
-					<text v-else-if='item.state==3' class="green">已完成</text>
-					<text v-else-if='item.state==-3' class="green">已退款</text>
-					<text v-else-if='item.state==4' class="red">待使用</text>
-					<text v-else-if='item.state==5' class="green">已预约</text>
-					<text v-else :class="statusClass[item.state]">{{status[item.state]}}</text>
-				</view>
-				<view class="mainContent" @click="navTo(item)">
-					<image class="image" :src="item.picList[0]" mode="aspectFill"></image>
-					<view class="middle">
-						<view class="title" style="display: flex; justify-content: space-between;">
-							<span> {{item.thingName}}</span>
-							<span> ¥{{item.totalPrice}}</span>
-						</view>
-						<span class='info' style="display: flex; justify-content: space-between;">
-							<span>
-								<span style="margin-right: 15rpx;">{{item.userName}}</span>
-								<span>{{item.phone}}</span>
+				<template v-if="merchantType==10">
+					<view class="header">
+						<text style="font-weight: bold;">{{item.payTime}}出发/{{item.orderType==3?'拼船':'包船'}}</text>
+						<text :class="oscConfig[item.status]||'textDcx'">{{FishJialeOcfg[item.status]}}</text>
+					</view>
+					<view class="mainContent" @tap="navTo(item)">
+						<image class="image" :src="item.coverImg||'../../../static/orderEg.png'" mode="aspectFill">
+						</image>
+						<view class="middle">
+							<view class="title" style="display: flex; justify-content: space-between;">
+								<span> {{item.goodsNameAndType}}</span>
+								<span> ¥{{item.totalPrice}}</span>
+							</view>
+							<span class='info' style="display: flex; justify-content: space-between;">
+								<span>
+									<span style="margin-right: 15rpx;">{{item.linkName}}</span>
+									<span>{{item.linkPhone}}</span>
+								</span>
+								<span>x{{item.num}}</span>
 							</span>
-							<span>x{{item.num}}</span>
-						</span>
+						</view>
 					</view>
-				</view>
-				<view class="bottom" @click="handleDetail(item)" v-if="item.state==4||item.state==5">
-					<view class="detail del">
-						核销订单
+					<!-- 待使用 -->
+					<view class="bottom" @click="handleDetail(item)" v-if="item.status==1">
+						<view class="detail s1">
+							核销订单
+						</view>
 					</view>
-				</view>
-				<view class="bottom" @click="Detail(item)" v-else>
+					<!-- <view class="bottom" @click="Detail(item)" v-else>
 					<view class="detail">
 						删除订单
 					</view>
-				</view>
-
-
+				</view> -->
+				</template>
+				<template v-if="merchantType==4">
+					<view class="header">
+						<text style="font-weight: bold;">{{item.merchantName}}</text>
+						<text :class="oscConfig2[item.orderStatus]||'textDcx'">{{FishJialeOcfg2[item.orderStatus]}}</text>
+					</view>
+					<view class="mainContent" @tap="navTo(item)">
+						<image class="image" :src="item.productImg||'../../../static/orderEg.png'" mode="aspectFill">
+						</image>
+						<view class="middle">
+							<view class="title" style="display: flex; justify-content: space-between;">
+								<span> {{item.productName}}</span>
+								<span> ¥{{item.realityPay}}</span>
+							</view>
+							<span class='info' style="display: flex; justify-content: space-between;">
+								<span>
+									<span style="margin-right: 15rpx;">{{item.activityStartTime||''}}{{item.activityEndTime}}</span>
+								</span>
+								<span>x{{item.num}}</span>
+							</span>
+						</view>
+					</view>
+					<!-- 待使用 -->
+					<view class="bottom" @click="handleDetail(item)" v-if="item.state==1">
+						<view class="detail s1">
+							核销订单
+						</view>
+					</view>
+				</template>
 			</view>
 			<view class="nodata" v-if='dataList.length==0'>
 				<NoData></NoData>
@@ -68,30 +90,55 @@
 		},
 		data() {
 			return {
-				h: uni.getSystemInfoSync().windowHeight,
-				mt: uni.getSystemInfoSync().statusBarHeight + 44,
+				//渔家乐
+				FishJialeOcfg: {
+					0: '待支付',
+					1: '待使用',
+					2: '拼船中',
+					3: '已使用',
+					4: '退款中',
+					5: '已退款',
+					6: '已取消',
+					7: '已完成',
+					8: '拼团失败'
+				},
+				//餐饮
+				FishJialeOcfg2: {
+					0: '待支付',
+					4: '待使用',
+					3: '已完成',
+					'-1': '已取消',
+					'-2': '退款中',
+					'-3': '已退款',
+				},
+				oscConfig2: {
+					0: 'textDzf',
+					4: 'textDcx',
+					3: 'textQx',
+					'-1': 'textQx',
+					'-2': 'textQx',
+					'-3': 'textQx',
+				},
+				oscConfig: {
+					0: 'textDzf',
+					1: 'textDcx',
+					2: 'textDcx',
+					3: 'textQx',
+					4: 'textQx',
+					5: 'textQx',
+					6: 'textQx',
+					7: 'textQx',
+					8: 'textQx',
+				},
+				disScroll: false,
+				pageIndex: 1,
+				pageCount: 50,
 				current: 0,
-				mysearch: '',
 				dataList: [],
-				limit: 10,
-				page: 1,
-				state: '',
-				fishermanId: uni.getStorageSync('merchantId'),
-				statusClass: [
-					'',
-					'green',
-					'blue',
-					'grey',
-					'grey',
-				],
-				status: [
-					'',
-					'已预订',
-					'已入住',
-					'已退房',
-					'已取消',
-				],
-				// mt: uni.getSystemInfoSync().statusBarHeight + 44,
+				status: '',
+				state:'',
+				merchantId: uni.getStorageSync('merchantId'),
+				merchantType: uni.getStorageSync('merchantType'),
 				tabList: [{
 						name: '全部订单'
 					},
@@ -111,144 +158,144 @@
 			}
 		},
 		onLoad(option) {
-			console.log(option.type);
 			if (option.type) {
-				console.log('1111');
-				const type = parseInt(option.type)
-
-				if (type == 0) {
-					this.changeTab1(1)
-				} else if (type == 4) {
-					this.changeTab1(2)
-				} else if (type == 3) {
-					this.changeTab1(3)
-				} else if (type == -3) {
-					this.changeTab1(4)
-				}
+				const type = parseInt(option.type);
+				//其他页面入参
+				// if (type == 0) {
+				// 	this.changeStatus(1)
+				// } else if (type == 4) {
+				// 	this.changeStatus(2)
+				// } else if (type == 3) {
+				// 	this.changeStatus(3)
+				// } else if (type == -3) {
+				// 	this.changeStatus(4)
+				// }
 			} else {
-				console.log('2222');
-				this.getOrderList()
+				if(this.merchantType==10){
+					this.getOrderList()
+				}else{
+					this.getOrderList2()
+				}
+				
 			}
 		},
 		methods: {
 			// 去详情
 			navTo(item) {
-				uni.setStorageSync('list', item);
 				uni.navigateTo({
-					url: '/pagesHouse/Mine/ordersList/details/details'
+					url: '/pagesHouse/Mine/ordersList/details/details?orderCode=' + item.orderCode
 				})
 			},
 			// 核销
 			handleDetail() {
-				// let dto = {
-				// 	writeOffCode: item.orderCode
-				// }
-				// this.$api.post('/merchant/merchantFisherman/home/writeOffOrder?dto=', dto).then(res => {
-
-				// })
 				uni.navigateTo({
 					url: '/pagesHouse/Verification/index'
 				})
 			},
-			// 删除
-			Detail(item) {
-				console.log(this.current);
-				this.$api.del('/merchant/merchantFisherman/home', [
-					item.id
-				]).then(res => {
-					if (res.data.code == 0) {
-						this.$showToast('删除成功');
-						// this.getOrderList()
-						setTimeout(() => {
-							this.changeTab1(this.current)
-						}, 1000)
-					} else {
-						this.$showToast('删除失败');
-						setTimeout(() => {
-							this.changeTab1(this.current)
-						}, 1000)
-						// this.getOrderList()
-					}
-				})
+			init() {
+				this.pageIndex = 1;
+				this.dataList = [];
+				if(this.merchantType==10){
+					this.getOrderList()
+				}else{
+					this.getOrderList2()
+				}
 			},
-			changeTab1(index) {
-				this.current = index;
+			changeStatus(index) {
+				this.current=index;
+				if(this.merchantType==10){
+				if (index === 0) this.status = '';
+				else if (index === 1) this.status = '0'
+				else if (index === 2) this.status = '1';
+				else if (index === 3) this.status = '3,7';
+				else if (index === 4) this.status = '4,5';
+			}else{
 				if (index === 0) this.state = '';
 				else if (index === 1) this.state = '0'
 				else if (index === 2) this.state = '4';
 				else if (index === 3) this.state = '3';
 				else if (index === 4) this.state = '-3';
-				// else this.FormData.status = '0,1,-1,2,-2,-3,3,4,5,6,7,8,9,10,11';
-				this.changeTab(index)
-			},
-			getOrderList(state) {
-				this.$api.get('/merchant/merchantFisherman/home/queryMyOrderPage', {
-					fishermanId: this.fishermanId,
-					limit: this.limit,
-					page: this.page,
-					state: state ? state : ''
-				}).then((res => {
-					if (res.data.code == 0) {
-						this.dataList = res.data.data.list
-					} else {
-						uni.showToast({
-							title: res.data.msg,
-							icon: 'none'
-						})
-					}
-
-
-				}))
+			}
+				this.init();
 			},
-			getOrderByStatusList(state) {
-				this.$api.get('/merchant/merchantFisherman/home/queryMyOrderPage', {
-					fishermanId: this.fishermanId,
-					limit: this.limit,
-					page: this.page,
-					state: state
-				}).then((res => {
-					if (res.data.code == 0) {
-						this.dataList = res.data.data.list
-					} else {
-						uni.showToast({
-							title: res.data.msg,
-							icon: 'none'
-						})
-					}
-
-
-				}))
+			//渔家乐订单
+			getOrderList() {
+				let that = this;
+				this.$api.get('/api/fishering/personCenterPage', {
+					merchantId: this.merchantId,
+					status: this.status,
+					page: this.pageIndex,
+					limit: this.pageCount,
+				}).then(res => {
+					if (res.data.code === 0) {
+						let {
+							list,
+							total
+						} = res.data.data;
+						that.dataList = [...that.dataList, ...list];
+						if (res.data.data.list.length < 10) {
+							this.disScroll = true;
+						} else {
+							that.pageIndex++;
+						}
+					} else that.$showToast(res.data.msg);
+				})
 			},
-			changeTab(index) {
-				this.tabIdx = index;
-				switch (index) {
-					case 0:
-						this.getOrderList()
-						break
-					case 1:
-						// this.getOrderList(0)
-						this.getOrderByStatusList(0)
-						break
-					case 2:
-
-						this.getOrderList(4)
-						break
-					case 3:
-						this.getOrderList(3)
-						break
-					case 4:
-						this.getOrderList(-3)
-						break
-				}
+			getOrderList2() {
+				let that = this;
+				this.$api.get('/api/merchant/food/queryPageMerchantOrder', {
+					merchantId: this.merchantId,
+					state: this.state,
+					page: this.pageIndex,
+					limit: this.pageCount,
+				}).then(res => {
+					if (res.data.code === 0) {
+						let {
+							list,
+							total
+						} = res.data.data;
+						that.dataList = [...that.dataList, ...list];
+						if (res.data.data.list.length < 10) {
+							this.disScroll = true;
+						} else {
+							that.pageIndex++;
+						}
+					} else that.$showToast(res.data.msg);
+				})
 			},
+			hexiao(item) {
+				// this.$api.post('/scenic/order/sailWriteOff',{
+				// 	orderType:item.orderType,
+				// 	touristList:this.data
+				// }).then(res=>{
+				// 	if(res.data.code==0){
+				// 		uni.redirectTo({
+				// 			url:"/pagesHouse/Verification/success?boatNo="+this.boatNo+'&price='+this.orderInfo.realPrice
+				// 		})
+				// 	}
+				// })
+			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
+	.textQx {
+		color: #999;
+	}
+
+	.textDcx {
+		color: #333333;
+	}
+
+	.textDzf {
+		color: #FF7D01;
+	}
+
 	.pages {
 		background: #F9FAFC;
 		box-sizing: border-box;
+		padding-bottom: 50rpx;
 
 		.tb {
 			width: 100%;
@@ -324,77 +371,41 @@
 				background: #fff;
 				border-radius: 16rpx;
 				margin: 20rpx 0;
-				padding: 20rpx;
+				padding: 0 24rpx 30rpx;
 
 				.header {
 					display: flex;
 					justify-content: space-between;
-					border-bottom: 1px #f3f3f3 solid;
-					padding: 20rpx;
-
-					.red {
-						color: indianred;
-					}
-
-					.green {
-						color: #999999;
-					}
-
-					.blue {
-						color: #1372FF;
-					}
-
-					.grey {
-						color: #4C5F76;
-					}
-
-					.orange {
-						color: #FF9100;
-					}
+					padding: 34rpx 0;
+					font-size: 28rpx;
 				}
 
 				.mainContent {
-					// border-bottom: 1px #f3f3f3 solid;
 					display: flex;
-					padding: 20rpx 0;
-
-
-					// justify-content: space-evenly;
 
 					.image {
 						background-repeat: no-repeat;
 						background-size: cover;
-						width: 198rpx;
-						height: 180rpx;
-						border-radius: 16rpx;
+						width: 136rpx;
+						min-width: 136rpx;
+						height: 136rpx;
+						border-radius: 12rpx;
 					}
 
 					.middle {
-						padding-top: 16rpx;
 						color: #777777;
-						// display: flex;
-						// flex-direction: column;
-						// justify-content: space-between;
-						margin-left: 25rpx;
+						margin-left: 20rpx;
 						width: 100%;
 
-
 						.title {
-							font-weight: 700;
-							font-size: 32rpx;
-							color: black;
+							font-weight: bold;
+							font-size: 30rpx;
+							margin: 16rpx 0 30rpx;
 						}
 
 						.info {
-							padding-top: 30rpx;
+							font-size: 26rpx;
 							color: #777777;
-							// display: flex;
-							// flex-direction: column;
-
-							&>span {
-								margin-top: 10rpx;
-
-							}
 						}
 					}
 
@@ -411,13 +422,11 @@
 				}
 
 				.bottom {
-					// padding: 30rpx 20rpx;
 					display: flex;
 					justify-content: flex-end;
+					margin-top: 16rpx;
 
 					.detail {
-
-						// border: 1rpx solid darkgrey;
 						border-radius: 16rpx;
 						color: darkgrey;
 						padding: 13rpx 34rpx;
@@ -428,7 +437,7 @@
 
 					}
 
-					.del {
+					.s1 {
 						border-radius: 16rpx;
 						color: darkgrey;
 						padding: 13rpx 34rpx;

+ 330 - 1
pagesHouse/Verification/check.vue

@@ -1,8 +1,337 @@
 <template>
+	<view class="page" :style="{'min-height':(h)+'px','padding-top':mt+'px'}">
+		<c-nav-bar title="核销" @goBack="back()"></c-nav-bar>
+		<view class="types">
+			<view class="item bg1" @tap="scanCode(0)">
+				<view class="n">扫码核销</view>
+				<u-icon name="arrow-right" color="#fff" size="26" label="点击扫描" label-color="#fff" label-size="28" cu
+					label-pos="left"></u-icon>
+			</view>
+			<view class="item bg2" @tap="scanCode(1)">
+				<view class="n">扫身份证</view>
+				<u-icon name="arrow-right" color="#fff" size="26" label="点击扫描" label-color="#fff" label-size="28"
+					label-pos="left"></u-icon>
+			</view>
+		</view>
+		<view class="orderInfo">
+			<view class="tit">
+				订单详情
+			</view>
+			<view class="time">{{orderInfo.playDate}} {{orderInfo.playTime}}出发</view>
+			<view class="bottom">
+				<text>{{orderInfo.num}}人</text>
+				<text>出游·{{orderInfo.playLength||0}}小时</text>
+				<text>¥{{orderInfo.realPrice}}</text>
+			</view>
+		</view>
+		<view class="list">
+			<view class="tit">{{boatNo}} 共({{data.length}})人</view>
+			<view class="item" v-for="(i,index) in data" :key="index">
+				<text class="type" :class="i.remark=='book'?'t1':'t2'">{{i.remark=='book'?'预订单':'现场单'}}</text>
+				<view class="personInfo">
+					<view class="name">{{i.touristName}}</view>
+					<view class="code">
+						身份证 {{i.touristCode}}
+					</view>
+				</view>
+				<u-icon name="minus-circle" size="36" color="#FEA400" @tap="jian(item)" v-if="i.remark!='book'"></u-icon>
+			</view>
+		</view>
+		<view class="btn">
+			<text @click="hexiao">开始发船</text>
+		</view>
+	</view>
 </template>
 
 <script>
+	var that;
+	export default {
+		data() {
+			return {
+				date: new Date().Format('yyyy-MM-dd'),
+				show: false,
+				data: [],
+				merchantId:uni.getStorageSync('merchantId'),
+				playTime:'',
+				boatNo:'',
+				type:'',
+				orderInfo:{},
+				keyName:''
+			}
+		},
+		onLoad(opt) {
+			that=this;
+			this.playTime=opt.playTime||'';
+			this.boatNo=opt.boatNo||'';
+			this.getOrderInfo();
+			//获取上次核销缓存
+			
+		},
+		methods: {
+			back(){
+				this.keyName=this.orderInfo.playDate+this.orderInfo.playTime+this.boatNo;
+				uni.setStorageSync(this.keyName,JSON.stringify(this.data));
+				//decodeURIComponent
+			},
+			getOrderInfo(){
+				this.$api.post('/scenic/order/queryStartOrderInfo',{
+					merchantId:this.merchantId,
+					boatNo:this.boatNo
+				}).then(res=>{
+					console.log(res.data)
+					if(res.data.code==0){
+						console.log(res)
+						this.orderInfo=res.data.data;
+						this.keyName=this.orderInfo.playDate+this.orderInfo.playTime+this.boatNo;
+						console.log(uni.getStorageSync(this.keyName))
+						this.data=JSON.parse(uni.getStorageSync(this.keyName))||[];
+						console.log(this.data)
+					}
+				})
+			},
+			scanCode(type) {
+				uni.scanCode({
+					success: (res) => {
+						console.log('扫码结果:' + res.result);
+						// 扫码成功后的操作,例如:
+						that.handleScanResult(res.result,type);
+					},
+					fail: (err) => {
+						console.error('扫码失败:' + err);
+					}
+				});
+			},
+			// 处理扫码结果的函数,可以根据实际需求进行扩展
+			handleScanResult(result,type) {
+				// 例如:导航到某个页面,或者处理其他业务逻辑
+				let sendData={};
+				sendData.playDate=this.orderInfo.playDate;
+				sendData.playTime=this.orderInfo.playTime;
+				sendData.playLength=this.orderInfo.playLength||1;
+				sendData.merchantId=this.orderInfo.merchantId;
+				sendData.orderType=this.orderInfo.orderType;
+				sendData.type=type;
+				sendData.writeOffCode="70";
+				console.log(sendData)
+				
+				this.$api.post('/scenic/order/scanCode',sendData).then(res=>{
+					console.log(res.data)
+					if(res.data.code==0){
+						console.log(this.data.findIndex(item=>{
+							item.touristCode==res.data.data.touristCode
+						}))
+						if(this.data.findIndex((item)=>{
+							return item.touristCode==res.data.data.touristCode
+						})>-1){
+							this.$showToast('该核验码已扫')
+						}else{
+							this.data.push(res.data.data)
+						}
+						
+					}
+				})
+			},
+			check() {
+				uni.navigateTo({
+					url: '/pagesHouse/Verification/check'
+				})
+			},
+			hexiao(){
+				if(this.data.length==0){
+					this.$showToast('请选择核销人')
+				}
+				this.$api.post('/scenic/order/sailWriteOff',{
+					orderType:this.orderInfo.orderType,
+					touristList:this.data
+				}).then(res=>{
+					if(res.data.code==0){
+						uni.redirectTo({
+							url:"/pagesHouse/Verification/success?boatNo="+this.boatNo+'&price='+this.orderInfo.realPrice
+						})
+					}
+				})
+				uni.removeStorageSync(this.keyName);
+			}
+		}
+	}
 </script>
 
-<style>
+<style lang="less" scoped>
+	/deep/.u-icon {
+		justify-content: flex-end;
+	}
+
+	.btn {
+		    position: fixed;
+		    bottom: 0;
+		    left: 0;
+		    z-index: 1;
+		    padding: 16rpx 30rpx 36rpx 30rpx;
+		    width: 100%;
+		    box-sizing: border-box;
+		    background: #fff;
+
+		text {
+			display: block;
+			    background-color: #007A69;
+			    color: #007A69;
+			    color: #fff;
+			    height: 88rpx;
+			    line-height: 88rpx;
+			    border-radius: 44rpx;
+			    text-align: center;
+			    font-size: 32rp;
+			    font-weight: bold;
+			    box-sizing: border-box;
+
+
+		}
+
+	}
+
+	.page {
+		background: #F5F8FA;
+		padding: 20rpx 24rpx 160rpx;
+		box-sizing: border-box;
+
+		.types {
+			display: flex;
+			gap: 36rpx;
+			justify-content: space-between;
+
+			.n {
+				margin-bottom: 20rpx;
+				color: #fff;
+			}
+
+			.item {
+				width: 330rpx;
+				height: 156rpx;
+				padding: 34rpx 24rpx;
+				font-size: 36rpx;
+				font-weight: bold;
+				box-sizing: border-box;
+			}
+
+			.bg2 {
+				background: url('https://i.ringzle.com/file/20240316/3fc9f6a78557492e98caa50392411e3a.png') no-repeat center;
+				background-size: 100%;
+			}
+
+			.bg1 {
+				background: url('https://i.ringzle.com/file/20240316/8a927d5d4da84728b6bb0896541baccf.png') no-repeat center;
+				background-size: 100%;
+			}
+		}
+
+		.orderInfo {
+			background-color: #fff;
+			color: #333;
+			padding: 0 24rpx 36rpx;
+			margin: 20rpx 0;
+			background: #fff;
+			border-radius: 16rpx;
+
+			.tit {
+				padding: 32rpx 0 24rpx;
+				font-size: 32rpx;
+			}
+
+			.time {
+				font-size: 36rpx;
+				font-weight: bold;
+				margin-bottom: 32rpx;
+			}
+
+			.bottom {
+				display: flex;
+				align-items: center;
+
+				text {
+					&:first-child {
+						width: 88rpx;
+						height: 54rpx;
+						background-color: #007A69;
+						color: #fff;
+						font-size: 34rpx;
+						font-weight: bold;
+						margin-right: 10rpx;
+						text-align: center;
+						border-radius: 12rpx;
+					}
+
+					&:nth-child(2) {
+						width: 200rpx;
+						flex: 1;
+					}
+
+					&:last-child {
+						font-size: 30rpx;
+						font-weight: bold;
+					}
+				}
+			}
+		}
+
+	}
+
+	.list {
+		box-sizing: border-box;
+		padding: 0 24rpx 0;
+		border-radius: 16rpx;
+		background-color: #fff;
+
+		.tit {
+			font-size: 36rpx;
+			font-weight: bold;
+			color: #111;
+			padding: 36rpx 0 17rpx;
+		}
+
+		.item {
+			display: flex;
+			justify-content: space-between;
+			padding: 24rpx 0;
+			align-items: center;
+
+			.type {
+				width: 110rpx;
+				height: 48rpx;
+				text-align: center;
+				display: inline-block;
+				line-height: 48rpx;
+				border-radius: 11rpx;
+				font-size: 26rpx;
+				font-weight: bold;
+				color: #111;
+				margin-right: 16rpx;
+			}
+
+			.t1 {
+				background-color: #F0F8F6;
+				color: #007A69;
+			}
+
+			.t2 {
+				background-color: #E8EFFD;
+				color: #326EE0;
+			}
+
+			.personInfo {
+				flex: 1;
+
+				.name {
+					font-size: 30rpx;
+					color: #111;
+					margin-bottom: 16rpx;
+				}
+
+				.code {
+					color: #666;
+					font-size: 28rpx;
+				}
+			}
+
+		}
+	}
 </style>

+ 29 - 8
pagesHouse/Verification/index.vue

@@ -1,12 +1,14 @@
 <template>
-	<view class="page" :style="{'min-height':(h-th)+'px','padding-top':mt+'px'}">
+	<view class="page" :style="{'min-height':(h)+'px','padding-top':mt+'px'}">
 		<c-nav-bar title="扫码核销"></c-nav-bar>
 		<view class="list">
-			<view class="item" v-for="(i,index) in data" :key="index" @click="check()">
-				<text>08A</text>
+			<view class="item" v-for="(i,index) in data" :key="index" @click="check(i)">
+				<text>{{i.BOAT_NO}}</text>
 				<text>核销</text>
 			</view>
 		</view>
+		<view @tap="jj()">111</view>
+		<view @tap="dd()">222</view>
 	</view>
 </template>
 
@@ -16,16 +18,34 @@
 			return {
 				date: new Date().Format('yyyy-MM-dd'),
 				show: false,
-				h: uni.getSystemInfoSync().windowHeight - 87,
-				mt: uni.getSystemInfoSync().statusBarHeight + 44,
 				data: [1, 2, 3, 4, 5, 6, 7],
 			}
 		},
-		onLoad() {},
+		onLoad() {
+			this.getList();
+		},
 		methods: {
-			check() {
+			jj(){
+				uni.navigateTo({
+					url:'/pagesHouse/Verification/success'
+				})
+			},
+			dd(){
+				uni.navigateTo({
+					url:'/pagesHouse/Verification/record'
+				})
+			},
+			getList(){
+				this.$api.get('/scenic/order/queryCurBoatNo/'+ uni.getStorageSync('merchantId')).then(res=>{
+					if(res.data.code==0){
+						console.log(res)
+						this.data=res.data.data;
+					}
+				})
+			},
+			check(item) {
 				uni.navigateTo({
-					url: '/pagesHouse/Verification/check'
+					url: '/pagesHouse/Verification/check?=&boatNo='+item.BOAT_NO
 				})
 			}
 		}
@@ -52,6 +72,7 @@
 			align-items: center;
 			box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
 			margin-bottom: 20rpx;
+			border-radius: 16rpx;
 
 			text {
 				&:first-child {

+ 146 - 0
pagesHouse/Verification/record.vue

@@ -0,0 +1,146 @@
+<template>
+	<view class="page" :style="{'min-height':(h)+'px','padding-top':mt+'px'}">
+		<c-nav-bar title="核销记录"></c-nav-bar>
+		<view class="top">
+			<view class="time" @click="show=true">
+				<u-icon name="calendar" :label="dateStr" labelPos="right" labelColor="#666" color="#666" space="7px"
+					size="25px"></u-icon>
+				<u-icon name="arrow-down" color="#999" size="20px" style="margin-left: 20rpx;"></u-icon>
+			</view>
+			<view class="right">共{{totalNum}}单 收入¥{{totalAmount}}</view>
+		</view>
+		<view class="list">
+			<view class="item" v-for="(item,index) in data" :key="index">
+				<image :src="item.goodsType==2?'../../static/bao.png':'../../static/pin.png'"></image>
+				<view class="mid">
+					<text>{{item.playDate}}{{item.playTime}}出发/{{i.goodsType==2?'包船':'拼船'}}/{{item.boatNo}}</text>
+					<text>{{item.num}}人 · 出游{{item.playLength}}小时</text>
+					<text>核销时间:{{item.updateDate}}</text>
+				</view>
+				<view class="price">¥1500</view>
+			</view>
+		</view>
+		<u-datetime-picker @confirm="confirmDate" @cancel="show=false" :show="show" v-model="value1"
+			visibleItemCount="6" mode="year-month"></u-datetime-picker>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				dateStr: new Date().Format('yyyy年-MM月'),
+				date: new Date().Format('yyyy-MM'),
+				show: false,
+				k: '',
+				data: [],
+				value1: Number(new Date()),
+				merchantId: uni.getStorageSync('merchantId'),
+				totalAmount: 0,
+				totalNum: 0
+			}
+		},
+		onLoad() {
+			this.getdata();
+		},
+		methods: {
+			getdata() {
+				this.$api.get('/scenic/order/writeOffRecordPage', {
+					limit:50,
+					page:1,
+					merchantId: this.merchantId,
+					queryDate: this.date
+				}).then(res => {
+					if (res.data.code == 0) {
+						this.totalAmount = res.data.data.totalAmount;
+						this.totalNum = res.data.data.totalNum;
+						this.data=res.data.data.pageData.list;
+					}
+					console.log(res)
+				})
+			},
+			confirmDate(e) {
+				// 创建一个Date对象并传入时间戳
+				const date = new Date(e.value);
+				// 使用Date对象的方法获取年、月、日、小时、分钟和秒
+				const year = date.getFullYear();
+				const month = ('0' + (date.getMonth() + 1)).slice(-2);
+				const day = ('0' + date.getDate()).slice(-2);
+				// 格式化时间
+				let formattedTime = "";
+				formattedTime = `${year}-${month}`;
+				this.dateStr = `${year}年-${month}月`
+				this.date = formattedTime;
+				this.show = false;
+				this.getdata()
+			},
+
+		}
+	}
+</script>
+
+<style lang="less" scoped>
+	.page{
+		box-sizing: border-box;
+	}
+	.top {
+		padding: 24rpx 30rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.time {
+			display: flex;
+			align-items: center;
+			gap: 0 10rpx;
+		}
+
+		.right {
+			color: #999;
+			font-size: 24rpx;
+
+		}
+
+	}
+
+	.list {
+		padding: 0 30rpx;
+
+		.item {
+			padding: 30rpx 0;
+			border-bottom: 1rpx solid #EFEFEF;
+			display: flex;
+			justify-content: space-between;
+
+			image {
+				width: 80rpx;
+				height: 80rpx;
+
+			}
+
+			.mid {
+				margin: 0 30rpx 0 20rpx;
+
+				text {
+					display: inline-block;
+					font-size: 28rpx;
+					color: #777;
+
+					&:first-child {
+						font-size: 30rpx;
+						color: #111;
+						font-weight: bold;
+					}
+
+					&:nth-child(2) {
+						margin: 18rpx 0;
+					}
+				}
+			}
+
+			.price {
+				font-size: 32rpx;
+			}
+		}
+	}
+</style>

+ 77 - 0
pagesHouse/Verification/success.vue

@@ -0,0 +1,77 @@
+<template>
+	<view class="page" :style="{'min-height':(h)+'px','padding-top':mt+'px'}">
+		<c-nav-bar title="核销结果"></c-nav-bar>
+		<image src="../../static/heSuccess.png"></image>
+		<view class="tip"><text>{{boatNo}}</text> 发船成功</view>
+		<view class="price">
+			<text>¥</text>
+			<text>{{price}}</text>
+		</view>
+		<view class="btn" @tap="goHome()">返回首页</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				boatNo:'',
+				price:''
+				//merchantType:uni.getStorageSync('merchantType');
+			}
+		},
+		onLoad(opt) {
+			this.boatNo=opt.boatNo;
+			this.price=opt.price;
+		},
+		methods: {
+			goHome() {
+				uni.navigateTo({
+					url: '/pages/home/index'
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="less">
+	.page{
+		text-align: center;
+		box-sizing: border-box;
+	}
+	image{
+		width: 320rpx;
+		height: 200rpx;
+		margin: 80rpx 0 24rpx;
+	}
+	.tip{
+		font-size: 32rpx;
+		color: #111;
+		text{
+			margin-right:12rpx;
+		}
+		
+	}
+	.price{
+		margin: 28rpx 0 110rpx;
+		text{
+			&:first-child{
+				font-size: 36rpx;
+			}
+			&:last-child{
+				font-size: 48rpx;
+				font-weight: bold;
+			}
+		}
+	}
+	.btn{
+		width: 610rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		background-color: #007A69;
+		color: #fff;
+		font-size: 32rpx;
+		border-radius: 46rpx;
+		margin: 0 auto;
+	}
+</style>

+ 69 - 29
pagesHouse/home/index.vue

@@ -13,50 +13,50 @@
 			<view class="dataBox">
 				<view class="item">
 					<view>成交金额</view>
-					<view>¥<text>{{info.todayOrderAmount||0}}</text></view>
-					<view>昨日¥{{info.yesterdayOrderAmount||0}}</view>
+					<view>¥<text>{{merchantType==10?info.numMoneyToday:info.todayOrderAmount}}</text></view>
+					<view>昨日¥{{merchantType==10?info.numMoneyYesterday:info.yesterdayOrderAmount}}</view>
 				</view>
 				<view class="item">
 					<view>退款金额</view>
-					<view>¥<text>{{info.todayRefundAmount||0}}</text></view>
-					<view>昨日¥{{info.yesterdayRefundAmount||0}}</view>
+					<view>¥<text>{{merchantType==10?info.numRefundMoneyToday:info.todayRefundAmount}}</text></view>
+					<view>昨日¥{{merchantType==10?info.numRefundMoneyYesterday:info.yesterdayRefundAmount}}</view>
 				</view>
 				<view class="item">
 					<view>成交订单数</view>
-					<view>¥<text>{{info.todayOrders||0}}</text></view>
-					<view>昨日{{info.yesterdayOrders||0}}</view>
+					<view>¥<text>{{merchantType==10?info.numOrderToday:info.todayOrders}}</text></view>
+					<view>昨日{{merchantType==10?info.numOrderYesterday:info.yesterdayOrders}}</view>
 				</view>
 				<view class="item">
 					<view>退款订单数</view>
-					<view>¥<text>{{info.todayRefundOrders||0}}</text></view>
-					<view>昨日{{info.yesterdayRefundOrders||0}}</view>
+					<view>¥<text>{{merchantType==10?info.numRefundOrderToday:info.todayRefundOrders}}</text></view>
+					<view>昨日{{merchantType==10?info.numRefundOrderYesterday:info.yesterdayRefundOrders}}</view>
 				</view>
 
 			</view>
 			<view class="numberData">
 				<view @click="toHref('/pagesHouse/Mine/ordersList/index?type=0')">
-					<text>{{info.todayObligationOrders||0}}</text>
+					<text>{{merchantType==10?info.unPayNum:info.todayObligationOrders}}</text>
 					<text>待付款</text>
 				</view>
 				<view @click="toHref('/pagesHouse/Mine/ordersList/index?type=4')">
-					<text>{{info.todayPendingOrders||0}}</text>
+					<text>{{merchantType==10?info.unUseNum:info.todayPendingOrders||0}}</text>
 					<text>待使用</text>
 				</view>
 				<view @click="toHref('/pagesHouse/Mine/ordersList/index?type=3')">
-					<text>{{info.todayOrders||0}}</text>
+					<text>{{merchantType==10?info.completeNum:info.todayOrders||0}}</text>
 					<text>已完成</text>
 				</view>
 				<view @click="toHref('/pagesHouse/Mine/ordersList/index?type=-1')">
-					<text>{{info.todayCancelledOrders||0}}</text>
-					<text>已取消</text>
+					<text>{{merchantType==10?info.joinNum:info.todayCancelledOrders||0}}</text>
+					<text>{{merchantType==10?'拼团中':'已取消'}}</text>
 				</view>
 				<view @click="toHref('/pagesHouse/Mine/ordersList/index?type=-3')">
-					<text>{{info.todayRefundOrders||0}}</text>
+					<text>{{merchantType==10?info. refundNum:info.todayRefundOrders||0}}</text>
 					<text>退款售后</text>
 				</view>
 			</view>
 			<view class="menus">
-				<view @click="toHref('/pagesHouse/HotelMerchandise/index?merchantType='+merchantType)">
+				<view @click="toHref('/pagesHouse/HotelMerchandise/index')">
 					<image :src="icons[0]"></image>
 					<text>商品管理</text>
 				</view>
@@ -78,8 +78,8 @@
 			<view class="tit">
 				<text>订单列表</text>
 				<text>{{new Date().Format('yyyy-MM-dd')}}</text>
-				<u-icon @click="more()" name="arrow-right" label="查看全部" labelPos="left" labelSize="13px"
-					labelColor="#808080" color="#AAA"></u-icon>
+				<!-- <u-icon @click="more()" name="arrow-right" label="查看全部" labelPos="left" labelSize="13px"
+					labelColor="#808080" color="#AAA"></u-icon> -->
 			</view>
 			<view class="li first">
 				<text>订单信息</text>
@@ -88,11 +88,11 @@
 			</view>
 			<view class="li" v-for="(item,index) in list" :key="index">
 				<view class="avatar">
-					<image :src="item.pic"></image>
-					<text>{{item.thingName}}</text>
+					<image :src="merchantType==10?item.coverImg:item.productImg"></image>
+					<text>{{merchantType==10?item.goodsName:item.productName}}</text>
 				</view>
-				<text>{{item.num}}</text>
-				<text>¥{{item.price}}</text>
+				<text>{{merchantType==10?item.countNum:item.num}}</text>
+				<text>¥{{merchantType==10?item.sumNum:item.realityPay}}</text>
 			</view>
 		</view>
 		<u-picker :show="shShow" :columns="nameList" @close="shShow=false" @cancel="shShow=false" @confirm="confirm"
@@ -118,14 +118,18 @@
 				shShow: false,
 				shList: [],
 				name: '',
-				merchantType: 4,
+				merchantType:'',
 			}
 		},
 		onLoad(opt) {
 			this.merchantType=uni.getStorageSync('merchantType');
-			console.log(merchantType);
-			this.getData();
-			this.getList();
+			if(this.merchantType==10){
+				this.getData();
+				this.getList();
+			}else{
+				this.getData2();
+				this.getList2();
+			}
 			this.getType()
 		},
 		methods: {
@@ -148,11 +152,19 @@
 				this.shShow = false;
 				let t = this.shList.find(d => d.merchantName == this.name);
 				if (t) {
+					this.merchantType=4;
 					uni.setStorageSync('merchantType',t.merchantType);
 					if (t.merchantType != 2) { //酒店民宿
 						uni.setStorageSync('homestayId', '');
 						uni.setStorageSync('merchantId', t.merchantId);
 						this.list = [];
+						if(t.merchantType==10){
+							this.getData();
+							this.getList();
+						}else{
+							this.getData2();
+							this.getList2();
+						}
 					} else {
 						this.item = null;
 						this.list = [];
@@ -165,19 +177,42 @@
 				}
 
 			},
+			//渔家乐统计
 			getData() {
-				this.$api.get('/merchant/merchantFisherman/home/getMerchantFishermanAppHome/' + uni.getStorageSync(
+				this.$api.get('/merchant/fishering/merchantHomePageMoneyOrderCount/' + uni.getStorageSync(
 					'merchantId')).then(res => {
+						console.log(res.data);
 					if (res.data.code === 0) {
 						this.info = res.data.data;
 					}
 				})
 			},
 			getList() {
-				this.$api.post('/merchant/merchantFisherman/home/getMerchantFishermanOrderList', {
+				this.$api.get('/merchant/fishering/merchantHomePageGoodsList', {
+					page: -1,
+					limit:10,
+					merchandId: uni.getStorageSync('merchantId')
+			
+				}).then(res => {
+					if (res.data.code === 0) {
+						this.list = res.data.data.list;
+					}
+				})
+			},
+			//餐饮美食统计
+			getData2() {
+				this.$api.get('/api/merchant/food/getMerchantFoodAppHome/' + uni.getStorageSync(
+					'merchantId')).then(res => {
+						console.log(res.data);
+					if (res.data.code === 0) {
+						this.info = res.data.data;
+					}
+				})
+			},
+			getList2() {
+				this.$api.post('/api/merchant/food/getMerchantFoodOrderList', {
 					dateTime: new Date().Format('yyyy-MM-dd'),
-					dateType: '1',
-					fishermanId: uni.getStorageSync('merchantId')
+					merchantId: uni.getStorageSync('merchantId')
 
 				}).then(res => {
 					if (res.data.code === 0) {
@@ -200,6 +235,10 @@
 </script>
 
 <style lang="less" scoped>
+	/deep/ .u-nav-slot {
+		width: auto!important;
+		background-color: none!important;
+	}
 	.page {
 		background: #F3F4F4;
 		padding-bottom: 40rpx;
@@ -258,6 +297,7 @@
 						min-width: 90rpx;
 						height: 90rpx;
 						margin-right: 20rpx;
+						border-radius: 9rpx;
 					}
 
 					text {

BIN=BIN
static/bao.png


BIN=BIN
static/heSuccess.png


BIN=BIN
static/orderEg.png


BIN=BIN
static/pin.png