py 2 ani în urmă
părinte
comite
26998a15e4

+ 11 - 0
api/expressOrder.js

@@ -0,0 +1,11 @@
+import {request} from '../service/ajax.js'
+
+const newsUrl = '/api/expressOrder/'
+// 获取订单列表
+export const expressOrderList = (data) => request(newsUrl + 'list', 'post', { ...data },false)
+// 获取订单详情
+export const expressOrderInfo = (data) => request(newsUrl + 'info', 'post', { ...data },false)
+// 取消订单
+export const expressOrderCancel = (data) => request(newsUrl + 'cancel', 'post', { ...data },false)
+// 获取订单状态_copy
+export const expressOrderStatus = (data) => request(newsUrl + 'status', 'post', { ...data },false)

+ 8 - 1
api/groupOrder.js

@@ -1,6 +1,7 @@
 import {request} from '../service/ajax.js'
 
 const newsUrl = '/api/group/'
+const newsUrlTwo = '/api/groupOrder/'
 // 获取团购商品
 export const groupList = (data) => request(newsUrl + 'list', 'post', { ...data },false)
 // 团购详情
@@ -8,4 +9,10 @@ export const groupInfo = (data) => request(newsUrl + 'info', 'post', { ...data }
 // 下单
 export const groupCreate = (data) => request(newsUrl + 'create', 'post', { ...data },false)
 // 支付订单
-export const groupPay = (data) => request('/api/groupOrder/' + 'pay', 'post', { ...data },false)
+export const groupPay = (data) => request(newsUrlTwo + 'pay', 'post', { ...data },false)
+// 获取订单列表
+export const groupOrderList = (data) => request(newsUrlTwo + 'list', 'post', { ...data },false)
+// 获取订单详情
+export const groupOrderInfo = (data) => request(newsUrlTwo + 'info', 'post', { ...data },false)
+// 获取订单状态
+export const groupOrderStatus = (data) => request(newsUrlTwo + 'status', 'post', { ...data },false)

+ 8 - 1
api/laundryOrder.js

@@ -3,4 +3,11 @@ import {request} from '../service/ajax.js'
 const newsUrl = '/api/laundryOrder/'
 // 干洗支付订单
 export const laundryPay = (data) => request(newsUrl + 'pay', 'post', { ...data },false)
-
+// 获取订单列表
+export const laundryOrderList = (data) => request(newsUrl + 'list', 'post', { ...data },false)
+// 获取订单详情
+export const laundryOrderInfo = (data) => request(newsUrl + 'info', 'post', { ...data },false)
+// 取消订单
+export const laundryOrderCancel = (data) => request(newsUrl + 'cancel', 'post', { ...data },false)
+// 获取订单状态
+export const laundryOrderStatus = (data) => request(newsUrl + 'status', 'post', { ...data },false)

+ 11 - 0
api/order.js

@@ -0,0 +1,11 @@
+import {request} from '../service/ajax.js'
+
+const newsUrl = '/api/order/'
+// 获取订单列表
+export const orderList = (data) => request(newsUrl + 'list', 'post', { ...data },false)
+// 获取订单详情
+export const orderInfo = (data) => request(newsUrl + 'info', 'post', { ...data },false)
+// 取消订单
+export const orderCancel = (data) => request(newsUrl + 'cancel', 'post', { ...data },false)
+// 获取订单状态
+export const orderStatus = (data) => request(newsUrl + 'status', 'post', { ...data },false)

+ 9 - 0
api/ticketOrder.js

@@ -0,0 +1,9 @@
+import {request} from '../service/ajax.js'
+
+const newsUrl = '/api/ticketOrder/'
+// 获取订单列表
+export const ticketOrderList = (data) => request(newsUrl + 'list', 'post', { ...data },false)
+// 获取订单详情
+export const ticketOrderInfo = (data) => request(newsUrl + 'info', 'post', { ...data },false)
+// 获取订单状态
+export const ticketOrderStatus = (data) => request(newsUrl + 'status', 'post', { ...data },false)

+ 8 - 0
common/css/common.css

@@ -277,6 +277,8 @@ image {
 }
 .bgc-41ABF5{
 	background-color: #41ABF5;
+}.bgc-E4F3FD{
+	background-color: #E4F3FD;
 }
 .bgc-BCEAFF{
 	background-color: #BCEAFF;
@@ -290,6 +292,9 @@ image {
 .bgc-FCE7E2{
 	background-color: #FCE7E2;
 }
+.bgc-F4F5F7{
+	background-color: #F4F5F7;
+}
 .bgc-F2F2F2{
 	background-color: #F2F2F2;
 }
@@ -371,6 +376,9 @@ image {
 .ptp-24{
 	padding: 24rpx 0;
 }
+.p-12-24 {
+	padding: 12rpx 24rpx;
+}
 
 /* 外边距 */
 .m-24{

+ 8 - 5
pages-my/info-centre.vue

@@ -70,16 +70,19 @@
 			};
 		},
 		onLoad(data) {},
-		mounted() {
+		onShow() {
 			this.messageTotal()
+		},
+		mounted() {
+
 		},
 		methods: {
 			messageTotal() {
 				messageTotal().then((res) => {
-					if(res.code == 1) {
-						this.infoNumOne = res.data.system_count
-						this.infoNumTwo = res.data.remark_count
-						this.infoNumThree = res.data.like_count
+					if (res.code == 1) {
+						this.infoNumOne = res.data.remark_count
+						this.infoNumTwo = res.data.like_count
+						this.infoNumThree = res.data.system_count
 					}
 				})
 			},

+ 27 - 0
pages-order/express-info.vue

@@ -0,0 +1,27 @@
+<template>
+	<view class="flex-common-css">
+		<Nav title="代取详情" leftIconColor="#333" titleColor="#333"></Nav>
+		<scroll-view :scroll-y="true" class="scroll-view-css" @scrolltolower="scrolltolower">
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	export default {
+		components: {},
+		data() {
+			return {};
+		},
+		onLoad(data) {},
+		mounted() {},
+		methods: {
+			scrolltolower() {
+				console.log('触底');
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 151 - 78
pages-takeout/shop-mod/evaluate.vue

@@ -1,70 +1,69 @@
 <template>
 	<view class="flex-index-css evaluate-box box-border-box">
-		
+
 		<scroll-view scroll-y="true" class="scroll-view-css" @scrolltolower="scrolltolower">
 			<view>
 				<view class="card-box flex-justify-space align-items-center">
 					<view class="align-items-center">
-						<view class="fs-64 fc-FF7F00 fw-600 mr-12">4.6</view>
-						<EnEva :num="3"></EnEva>
+						<view class="fs-64 fc-FF7F00 fw-600 mr-12">{{shopScore}}</view>
+						<EnEva :num="shopScore"></EnEva>
 					</view>
 					<view class="align-items-center">
-						<view class="mr-30">
+<!-- 						<view class="mr-30">
 							<view class="fs-24 mb-4 fw-400">味道</view>
 							<view class="fs-32 fw-b">4.2</view>
 						</view>
 						<view class="mr-30">
 							<view class="fs-24 mb-4 fw-400">包装</view>
 							<view class="fs-32 fw-b">4.2</view>
-						</view>
+						</view> -->
 						<view class="">
-							<view class="fs-24 mb-4 fw-400">配送满意度</view>
-							<view class="fs-32 fw-b">91%</view>
+							<view class="fs-24 mb-4 fw-400">数量</view>
+							<view class="fs-32 fw-b">{{commentTotal}}</view>
 						</view>
 					</view>
 				</view>
 				<view class="card-box align-items-center">
-					<view class="list-item fs-28" @click="selectType(item.id)"
-					:class="type==item.id?'s-item':'n-item'"
-					v-for="(item,i) in list" :key="i">{{item.name}}{{item.num||''}}</view>
+					<view class="list-item fs-28" @click="selectType(item.id)" :class="type==item.id?'s-item':'n-item'"
+						v-for="(item,i) in list" :key="i">{{item.name}}{{item.num||''}}</view>
 				</view>
-				
-				<view class="card-box" v-for="(item,i) in 5" :key="i">
+
+				<view class="card-box" v-for="(item,i) in commentData" :key="i">
 					<view class="item-head flex-justify-space mb-22">
 						<view class="display-flex">
-							<image class="left-img mr-16" src="@/static/img/my/bg.png" mode="scaleToFill"></image>
+							<image class="left-img mr-16" :src="item.head_img" mode="scaleToFill"></image>
 							<view class="mt-5">
-								<view class="fs-28 fw-600">匿名用户</view>
-								<view class="fs-24 fc-9">2024-05-16</view>
+								<view class="fs-28 fw-600">{{item.nickname}}</view>
+								<view class="fs-24 fc-9">{{item.created_date}}</view>
 							</view>
 						</view>
-						<image @click="openPop" class="right-img" src="@/static/img/takeout/ddd.png" mode=""></image>
+						<!-- <image @click="openPop" class="right-img" src="@/static/img/takeout/ddd.png" mode=""></image> -->
 					</view>
 					<view class="align-items-center mb-16">
-						<EnEva :num="3"></EnEva>
-						<view class="fs-24 fc-9 ml-16">非常棒</view>
+						<EnEva :num="item.grade"></EnEva>
+						<view class="fs-24 fc-9 ml-16">{{item.grade == 1?'很差':item.grade == 2?'差':item.grade == 3?'一般':item.grade == 4?'棒':'非常棒'}}</view>
 					</view>
 					<view class="fs-32 fw-400 mb-16">
-						味道好吃就是这个盒子包装不好味道好吃就1是这个盒子包装不好味道好吃就是这个盒子包装1不好味道好吃就是这个盒子包装不好
+						{{item.content}}
 					</view>
 					<view class="flex-wrap-wrap">
-						<image v-for="(item,i) in 8" :key="i" @click="lookImg(i,item)"
-						class="list-img" src="@/static/img/my/bg.png" mode="scaleToFill"></image>
+						<image v-for="(itemImages,iImages) in item.images" :key="i" @click="lookImg(i,item)" class="list-img"
+							:src="itemImages" mode="scaleToFill"></image>
 					</view>
-					
-					<view class="bgc-F3F4F6 b-rad-12 box-border-box p-24 ">
+
+					<view class="bgc-F3F4F6 b-rad-12 box-border-box p-24" v-if="item.shop_reply">
 						<view class="flex-justify-space align-items-center mb-12">
 							<view class="fs-28 fw-600 fc-6">商家回复</view>
-							<view class="fs-24 fc-9 fw-400">2024-5-16</view>
+							<view class="fs-24 fc-9 fw-400">{{item.reply_time}}</view>
 						</view>
 						<view class="fs-24 fc-6 fw-400">
-							感谢亲亲的认可,接到亲的需求,我们就以火箭的速度准备并送出啦,亲亲能否品尝出我们的用心呢?欢迎再来哦!
+							{{item.shop_reply}}
 						</view>
 					</view>
 				</view>
 			</view>
 		</scroll-view>
-		
+
 		<uni-popup ref="popup" type="bottom">
 			<view class="pop-box" @click.stop="closePop">
 				<view class="pop-box-1" v-if="tup">
@@ -77,11 +76,11 @@
 						<view class="pop-box-2-1 fs-36 fw-600 text-align-center mb-28">
 							选择举报理由
 							<view class="pop-box-2-2" @click.stop="tup=true">
-								<uni-icons  type="closeempty" size="24"></uni-icons>
+								<uni-icons type="closeempty" size="24"></uni-icons>
 							</view>
 						</view>
-						<view class="pop-item text-align-center fs-32" 
-						v-for="(item,i) in reasonList" :key="i" @click.stop="report(item)">
+						<view class="pop-item text-align-center fs-32" v-for="(item,i) in reasonList" :key="i"
+							@click.stop="report(item)">
 							{{item.name}}
 						</view>
 					</view>
@@ -92,69 +91,129 @@
 </template>
 
 <script>
+	import {
+		shopComment
+	} from "@/api/shop.js"
 	import EnEva from '@/components/en-utils/en-eva/en-eva.vue';
 	import tools from "@/service/tools";
 	export default {
-		name:"evaluate-box",
-		components:{EnEva},
-		data(){
-			return{
-				type:0,
-				list:[
-					{name:'全部',id:0},
-					{name:'很棒',id:1,num:11},
-					{name:'一般',id:2},
-					{name:'有图',id:3},
+		name: "evaluate-box",
+		components: {
+			EnEva
+		},
+		props: {
+			shopScore: {},
+			shopId: {}
+		},
+		data() {
+			return {
+				type: 0,
+				list: [{
+						name: '全部',
+						id: 0
+					},
+					{
+						name: '很棒',
+						id: 1,
+					},
+					{
+						name: '一般',
+						id: 2
+					},
+					{
+						name: '失望',
+						id: 3
+					},
+					{
+						name: '有图',
+						id: 4
+					},
 				],
-				tup:true,
-				reasonList:[
-					{name:'政治敏感',id:1},
-					{name:'色情低俗',id:2},
-					{name:'恶意辱骂',id:3},
-					{name:'违法违规',id:4},
-					{name:'垃圾广告',id:5},
-					{name:'涉未成年',id:6},
+				commentData: [],
+				commentTotal: '',
+				tup: true,
+				reasonList: [{
+						name: '政治敏感',
+						id: 1
+					},
+					{
+						name: '色情低俗',
+						id: 2
+					},
+					{
+						name: '恶意辱骂',
+						id: 3
+					},
+					{
+						name: '违法违规',
+						id: 4
+					},
+					{
+						name: '垃圾广告',
+						id: 5
+					},
+					{
+						name: '涉未成年',
+						id: 6
+					},
 				]
 			}
 		},
-		methods:{
-			lookImg(i,item){
-				tools.lookBigImg(i,item)
+		mounted() {
+			this.shopComment()
+		},
+		methods: {
+			lookImg(i, item) {
+				tools.lookBigImg(i, item)
 			},
-			selectType(type){
-				if(this.type != type){
+			selectType(type) {
+				if (this.type != type) {
 					this.type = type
+					this.commentData = []
+					this.shopComment()
 				}
 			},
-			scrolltolower(){
+			scrolltolower() {
 				console.log('触底');
 			},
-			openPop(){
+			openPop() {
 				this.$refs.popup.open();
 			},
-			closePop(){
+			closePop() {
 				this.$refs.popup.close();
 				this.tup = true;
 			},
-			report(item){
+			report(item) {
 				this.closePop()
 			},
+			shopComment() {
+				shopComment({shop_id: this.shopId,status: this.type}).then((res) => {
+					if(res.code == 1) {
+						this.commentTotal = res.data.total
+						if(res.data.items.length> 0) {
+							this.commentData.push(...res.data.items)
+						}
+					}
+				})
+			}
 		},
 	}
 </script>
 
 <style scoped lang="scss">
-	.evaluate-box{
+	.evaluate-box {
 		background-color: #F5F4F9;
 		padding: 16rpx 24rpx;
-		.card-box{
+
+		.card-box {
 			box-sizing: border-box;
 			padding: 24rpx;
 			background-color: #fff;
 			border-radius: 20rpx;
 			margin-bottom: 20rpx;
 		}
-		.list-item{
+
+		.list-item {
 			min-width: 56rpx;
 			height: 52rpx;
 			border-radius: 8rpx;
@@ -163,51 +222,61 @@
 			margin-right: 20rpx;
 			padding: 0 16rpx;
 		}
-		.s-item{
-			background: linear-gradient( 117deg, #57CAFF 0%, #41ABF5 100%);
+
+		.s-item {
+			background: linear-gradient(117deg, #57CAFF 0%, #41ABF5 100%);
 			color: #fff;
 		}
-		.n-item{
+
+		.n-item {
 			background: #F3F4F6;
 			color: #333;
 		}
-		.item-head{
-			.left-img{
+
+		.item-head {
+			.left-img {
 				width: 80rpx;
 				height: 80rpx;
 				border-radius: 50%;
 			}
-			.right-img{
+
+			.right-img {
 				width: 30rpx;
 				height: 6rpx;
 			}
 		}
-		.list-img{
+
+		.list-img {
 			width: 210rpx;
 			height: 210rpx;
 			border-radius: 12rpx;
 			margin: 0 10rpx 10rpx 0;
 		}
-		.list-img:nth-child(3){
+
+		.list-img:nth-child(3) {
 			margin-right: 0 !important;
 		}
-		.list-img:nth-child(6){
+
+		.list-img:nth-child(6) {
 			margin-right: 0 !important;
 		}
-		.list-img:nth-child(9){
+
+		.list-img:nth-child(9) {
 			margin-right: 0 !important;
 		}
-		
-		.pop-box{
+
+		.pop-box {
 			width: 100%;
 			height: 100vh;
-			background-color: #333;
+			// background-color: #999;
 			position: relative;
-			.pop-box-1{
+
+			.pop-box-1 {
 				position: absolute;
 				bottom: 20rpx;
 				left: 24rpx;
-				view{
+
+				view {
 					width: 702rpx;
 					height: 88rpx;
 					line-height: 88rpx;
@@ -215,20 +284,24 @@
 					border-radius: 16rpx;
 				}
 			}
-			.pop-box-2{
+
+			.pop-box-2 {
 				width: 100%;
 				height: 820rpx;
 				background: #FFFFFF;
 				border-radius: 24rpx 24rpx 0rpx 0rpx;
-				.pop-box-2-1{
+
+				.pop-box-2-1 {
 					position: relative;
-					.pop-box-2-2{
+
+					.pop-box-2-2 {
 						position: absolute;
 						top: 0;
 						right: 0;
 					}
 				}
-				.pop-item{
+
+				.pop-item {
 					width: 100%;
 					height: 92rpx;
 					line-height: 92rpx;

+ 40 - 19
pages-takeout/shop-mod/info.vue

@@ -4,19 +4,19 @@
 			<view class="fs-32 fw-500 mb-32">商家信息</view>
 			<view class="mb-40 align-items-center">
 				<image src="@/static/img/takeout/info-address.png" mode=""></image>
-				<view class="fs-28 fw-400">重庆市沙坪坝区陈新村陈新路40号食神.牛油拌饭</view>
+				<view class="fs-28 fw-400">{{shopInfoData.city_name}}{{shopInfoData.shop_name}}</view>
 			</view>
 			<view class="mb-40 align-items-center">
 				<image src="@/static/img/takeout/info-class.png" mode=""></image>
-				<view class="fs-28 fw-400">门店类目:快餐便当</view>
+				<view class="fs-28 fw-400">门店类目:{{shopInfoData.cate_name}}</view>
 			</view>
 			<view class="mb-40 align-items-center">
 				<image src="@/static/img/takeout/info-time.png" mode=""></image>
-				<view class="fs-28 fw-400">营业时间:周一、二、三、四、五、六、日:09:00- 21:40</view>
+				<view class="fs-28 fw-400">营业时间:{{shopInfoData.business_hours}}</view>
 			</view>
 			<view class="mb-40 align-items-center">
 				<image src="@/static/img/takeout/info-phone.png" mode=""></image>
-				<view class="fs-28 fw-400">联系电话: 17323751579 </view>
+				<view class="fs-28 fw-400">联系电话: {{shopInfoData.shop_phone}} </view>
 			</view>
 			<view class="right-img-f align-items-center">
 				<image src="@/static/img/takeout/info-zz.png" mode=""></image>
@@ -24,55 +24,76 @@
 				<image @click="to()" class="right-img" src="@/static/img/toRight.png" mode=""></image>
 			</view>
 		</view>
-		
+
 		<view class="box-card box-border-box p-24 bgc-f mb-20">
 			<view class="fs-32 fw-500 mb-32">商家公告</view>
 			<view class="mb-40 display-flex">
-				<image src="@/static/img/takeout/info-gg.png" mode=""></image>
-				<view class="fs-28 fw-400">第一次点餐的顾客收餐后-定要搅拌均匀在吃哟!我们的肉和牛油拌饭汁均在碗底</view>
+				<image class="flex-shrink0" src="@/static/img/takeout/info-gg.png" mode=""></image>
+				<view class="fs-28 fw-400">{{shopInfoData.notice}}</view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import {
+		shopInfo
+	} from "@/api/shop.js"
 	export default {
-		data(){
-			return{
-				
+		props: {
+			shopId: {}
+		},
+		data() {
+			return {
+				shopInfoData: {}
 			}
 		},
 		onShow() {
-			
+
 		},
-		methods:{
-			to(){
+		mounted() {
+			this.shopInfo()
+		},
+		methods: {
+			to() {
 				uni.navigateTo({
-					url:'/pages-takeout/aptitude'
+					url: '/pages-takeout/aptitude'
 				})
 			},
+			shopInfo() {
+				const operate_id = uni.getStorageSync('operate_id')
+				shopInfo({shop_id: this.shopId,operate_id: operate_id}).then((res) => {
+					if(res.code == 1) {
+						this.shopInfoData = res.data
+					}
+				})
+			}
 		},
 	}
 </script>
 
 <style scoped lang="scss">
-	.shop-info-box{
+	.shop-info-box {
 		height: 100%;
 		overflow: scroll;
 		background-color: #F5F4F9;
 		padding: 16rpx 24rpx;
-		.box-card{
+
+		.box-card {
 			width: 100%;
 			min-height: 10rpx;
 			border-radius: 20rpx;
-			image{
+
+			image {
 				width: 40rpx;
 				height: 40rpx;
 				margin-right: 16rpx;
 			}
-			.right-img-f{
+
+			.right-img-f {
 				position: relative;
-				.right-img{
+
+				.right-img {
 					position: absolute;
 					top: 10rpx;
 					right: -10rpx;

+ 312 - 219
pages-takeout/shop-mod/menu.vue

@@ -1,23 +1,25 @@
 <template>
-	<view class="menu-box flex-justify-space">
+	<view class="menu-box display-flex">
 		<scroll-view scroll-y="true" class="menu-box-left" :scroll-into-view="idMark" :scroll-with-animation='true'>
 			<view class="menu-type-list-f">
-				<view class="menu-type-list fs-28 fc-6 text-align-center" v-for="(item,i) in typeList" :key="i" @click="selectType(item)"
-				:class="type ===  item.type?'bgc-BCEAFF':''"  :id="'scroll'+ item.type">
+				<view class="menu-type-list fs-26 box-border-box align-items-center flex-justify-center"
+					v-for="(item,i) in typeList" :key="i" @click="selectType(item)"
+					:class="type ===  item.type?'bgc-f fc-3 fw-600':'fc-6 fw-400'" :id="'scroll'+ item.type">
 					{{item.name}}
 					<view class="menu-type-num fc-f" v-show="item.num > 0">{{item.num > 99?'99+':item.num}}</view>
 				</view>
 			</view>
 		</scroll-view>
-		
-		<scroll-view scroll-y="true" :scroll-with-animation='true' :scroll-into-view="idMark" @scroll="menuScroll">
+
+		<scroll-view :scroll-y="true" :scroll-with-animation='true' :scroll-into-view="idMark" @scroll="menuScroll">
 			<view class="menu-box-right">
 				<view class="menu-box-only" v-for="(item,i) in menuList" :key="i" :id="'scroll'+ item.type">
-					<view class="mb-18 fs-34 fw-600">{{item.name}}</view>
+					<view class="mb-32 fs-32">{{item.name}}</view>
 					<view class="menu-list flex-justify-space" v-for="(info,k) in item.list" :key="k">
-						<image src="@/static/img/my/bg.png" mode="scaleToFill"></image>
+						<image class="flex-shrink0" src="@/static/img/my/bg.png" mode="scaleToFill"></image>
 						<view class="menu-list-right">
-							<view class="mb-4 text-overflow-ellipsis fs-34 fw-600">[畅销款]奥尔1良烤肉 牛油拌饭[畅销款]奥尔1良烤肉 牛油拌饭[畅销款]奥尔1良烤肉 牛油拌饭[畅销款]奥尔1良烤肉 牛油拌饭</view>
+							<view class="mb-4 goods-name text-overflow-ellipsis fs-34 fw-600">[畅销款]奥尔1良烤肉 牛油拌饭[畅销款]奥尔1良烤肉
+								牛油拌饭[畅销款]奥尔1良烤肉 牛油拌饭[畅销款]奥尔1良烤肉 牛油拌饭</view>
 							<view class="mb-20 fw-400 fc-9 fs-24">月销196</view>
 							<view class="flex-justify-space align-items-flex-end">
 								<view class="">
@@ -26,50 +28,55 @@
 									<span class="fs-24 fc-9 fw-400 text-line-through">¥12</span>
 								</view>
 								<view class="display-flex align-items-center" v-if="info.spec != 1">
-									<view v-show="info.num > 0" class="right-only-right-red fw-500 text-align-center fs-36 fc-f" @click="addred(1,i,k,item)">-</view>
-									<view v-show="info.num > 0" class="right-only-right-2 text-align-center fs-28 fw-400">{{info.num}}</view>
-									<view class="right-only-right-add fw-500 text-align-center fs-36 fc-f" @click="addred(2,i,k,item)">+</view>
+									<view v-show="info.num > 0"
+										class="right-only-right-red fw-500 text-align-center fs-36 fc-f"
+										@click="addred(1,i,k,item)">-</view>
+									<view v-show="info.num > 0"
+										class="right-only-right-2 text-align-center fs-28 fw-400">{{info.num}}</view>
+									<view class="right-only-right-add fw-500 text-align-center fs-36 fc-f"
+										@click="addred(2,i,k,item)">+</view>
 								</view>
-								<view v-else class="right-only-right text-align-center fw-600 fs-28 fc-f" @click="addred(3,i,k,item)">选规格</view>
+								<view v-else class="right-only-right text-align-center fw-600 fs-28 fc-f"
+									@click="addred(3,i,k,item)">选规格</view>
 							</view>
 						</view>
 					</view>
 				</view>
 			</view>
 		</scroll-view>
-		
-		
-		
+
+
+
 		<uni-popup ref="popupGG" type="bottom">
 			<view class="gg-box  flex-index-css">
 				<view class="flex-justify-space  box-border-box p-32">
 					<view class="fs-32 fw-500 fc-0">商品详情规格</view>
 					<view class="" @click="addred(4)">
-						<uni-icons type="closeempty" size="20" ></uni-icons>
+						<uni-icons type="closeempty" size="20"></uni-icons>
 					</view>
 				</view>
 				<view class="goods-info flex-justify-space mb-32 box-border-box plr-32">
 					<image src="@/static/img/my/bg.png" mode="scaleToFill"></image>
 					<view class="flex-1">
-						<view style="width: 446rpx;" class="fw-600 fs-34 text-overflow-ellipsis-one">[畅销款]奥尔1良烤肉牛油拌饭</view>
+						<view style="width: 446rpx;" class="fw-600 fs-34 text-overflow-ellipsis-one">[畅销款]奥尔1良烤肉牛油拌饭
+						</view>
 						<view class="fw-400 fc-9 fs-24">月销196</view>
 					</view>
 				</view>
-				
+
 				<view class="scroll-view-css box-border-box plr-32">
 					<view class="" v-for="(item,i) in popData.specList" :key="i">
 						<view class="fs-32 fw-500 fc-0 mb-32">{{item.specName}}</view>
 						<view class="flex-wrap-wrap">
-							<view class="spec-item text-align-center fs-28" 
-							:class="info.isSelect?'s-item':'n-item'"
-							v-for="(info,k) in item.list" :key="k" @click="select(i,k,item,info)">
+							<view class="spec-item text-align-center fs-28" :class="info.isSelect?'s-item':'n-item'"
+								v-for="(info,k) in item.list" :key="k" @click="select(i,k,item,info)">
 								{{info.name}}
 							</view>
 						</view>
-						
+
 					</view>
 				</view>
-				
+
 				<view class="pop-buttom box-border-box plr-32">
 					<view class="flex-justify-space mb-28">
 						<view class="pop-buttom-left">
@@ -98,41 +105,82 @@
 <script>
 	import tools from "@/service/tools";
 	export default {
-		name:'menu-box',
-		data(){
-			return{
-				idMark:'',//滚动自适应参数
-				
-				type:1,//分类标识
-				typeList:[],
-				
-				menuList:[],
-				
-				popData:{
-					spec_name:'',
-					spec_ids:'',
-					spec_list:[],
-					specList:[
-						{	
-							specName:'口味',
-							specType:1,
-							list:[
-								{name:'辣1',id:1,isSelect:false},{name:'辣2',id:2,isSelect:false},{name:'辣3',id:3,isSelect:false},{name:'辣4',id:4,isSelect:false},
-							]
+		name: 'menu-box',
+		data() {
+			return {
+				idMark: '', //滚动自适应参数
+
+				type: 1, //分类标识
+				typeList: [],
+
+				menuList: [],
+
+				popData: {
+					spec_name: '',
+					spec_ids: '',
+					spec_list: [],
+					specList: [{
+							specName: '口味',
+							specType: 1,
+							list: [{
+								name: '辣1',
+								id: 1,
+								isSelect: false
+							}, {
+								name: '辣2',
+								id: 2,
+								isSelect: false
+							}, {
+								name: '辣3',
+								id: 3,
+								isSelect: false
+							}, {
+								name: '辣4',
+								id: 4,
+								isSelect: false
+							}, ]
 						},
 						{
-							specName:'大小',
-							specType:2,
-							list:[
-								{name:'大1',id:5,isSelect:false},{name:'大2',id:6,isSelect:false},{name:'大3',id:7,isSelect:false},{name:'大4',id:8,isSelect:false},
-							]
+							specName: '大小',
+							specType: 2,
+							list: [{
+								name: '大1',
+								id: 5,
+								isSelect: false
+							}, {
+								name: '大2',
+								id: 6,
+								isSelect: false
+							}, {
+								name: '大3',
+								id: 7,
+								isSelect: false
+							}, {
+								name: '大4',
+								id: 8,
+								isSelect: false
+							}, ]
 						},
 						{
-							specName:'加料',
-							specType:3,
-							list:[
-								{name:'加1',id:9,isSelect:false},{name:'加2',id:10,isSelect:false},{name:'加3',id:11,isSelect:false},{name:'加4',id:12,isSelect:false},
-							]
+							specName: '加料',
+							specType: 3,
+							list: [{
+								name: '加1',
+								id: 9,
+								isSelect: false
+							}, {
+								name: '加2',
+								id: 10,
+								isSelect: false
+							}, {
+								name: '加3',
+								id: 11,
+								isSelect: false
+							}, {
+								name: '加4',
+								id: 12,
+								isSelect: false
+							}, ]
 						},
 					]
 				},
@@ -141,10 +189,9 @@
 		mounted() {
 			this.getTypeList();
 		},
-		methods:{
-			getTypeList(){
-				this.typeList = [
-					{
+		methods: {
+			getTypeList() {
+				this.typeList = [{
 						"category_id": 1,
 						"name": "爆品推荐",
 						"type": 1,
@@ -156,41 +203,62 @@
 					},
 				]
 				this.type = this.typeList[0].type;
-				this.idMark = 'scroll'+ this.type;
-				this.typeList.forEach((v)=>{
+				this.idMark = 'scroll' + this.type;
+				this.typeList.forEach((v) => {
 					v.num = 0
 				})
-				
-				this.menuList = [
-					{
-						name:'分类1',
-						type:1,
-						list:[
-							{name:1,num:0,spec:1},{name:2,num:0},{name:3,num:0},{name:4,num:0},
-						]
+
+				this.menuList = [{
+						name: '分类1',
+						type: 1,
+						list: [{
+							name: 1,
+							num: 0,
+							spec: 1
+						}, {
+							name: 2,
+							num: 0
+						}, {
+							name: 3,
+							num: 0
+						}, {
+							name: 4,
+							num: 0
+						}, ]
 					},
 					{
-						name:'分类2',
-						type:2,
-						list:[
-							{name:1,num:0},{name:2,num:0,spec:1},{name:3,num:0},{name:4,num:0},
-						]
+						name: '分类2',
+						type: 2,
+						list: [{
+							name: 1,
+							num: 0
+						}, {
+							name: 2,
+							num: 0,
+							spec: 1
+						}, {
+							name: 3,
+							num: 0
+						}, {
+							name: 4,
+							num: 0
+						}, ]
 					},
 				]
 			},
-			
-			selectType(item){
-				if(this.type != item.type){
+
+			selectType(item) {
+				if (this.type != item.type) {
 					this.type = item.type;
-					this.idMark = 'scroll'+ item.type
+					this.idMark = 'scroll' + item.type
 				}
 			},
-			menuScroll(){
+			menuScroll() {
 				let _this = this;
 				let query = uni.createSelectorQuery().in(this);
-				query.selectAll(".menu-box-only").boundingClientRect(data=>{
-					data.forEach((v)=>{
-						if(v.top < 329&&v.top>0){
+				query.selectAll(".menu-box-only").boundingClientRect(data => {
+					data.forEach((v) => {
+						if (v.top < 329 && v.top > 0) {
 							_this.idMark = v.id;
 							let arr = v.id.split('scroll');
 							_this.type = Number(arr[1]);
@@ -198,172 +266,129 @@
 					})
 				}).exec();
 			},
-			addred(type,i,k,item){
-				if(type === 1){
+			addred(type, i, k, item) {
+				if (type === 1) {
 					// 减
 					this.menuList[i].list[k].num -= 1;
 					this.setSub(item);
-				}else if(type === 2){
+				} else if (type === 2) {
 					// 加
 					this.menuList[i].list[k].num += 1;
 					this.setSub(item);
-				}else if(type === 3){
+				} else if (type === 3) {
 					// 选规格
 					this.$refs.popupGG.open();
-				}else{
+				} else {
 					this.$refs.popupGG.close();
 				}
 			},
-			setSub(item){
+			setSub(item) {
 				let num = 0;
-				item.list.forEach((n)=>{
+				item.list.forEach((n) => {
 					num += n.num
 				})
-				this.typeList.forEach((v)=>{
-					if(v.type == item.type){
+				this.typeList.forEach((v) => {
+					if (v.type == item.type) {
 						v.num = num
 					}
 				})
 			},
-			
+
 			// -------弹窗选择规格-----------
-			select(i,k,item,info){
-				if(!info.isSelect){
-					item.list.forEach((v)=>{
+			select(i, k, item, info) {
+				if (!info.isSelect) {
+					item.list.forEach((v) => {
 						v.isSelect = false;
 					})
 					info.isSelect = true;
-					
-					item.list.forEach(v=>{
-						this.popData.spec_list.forEach((n,i)=>{
-							if(v.id == n){
+
+					item.list.forEach(v => {
+						this.popData.spec_list.forEach((n, i) => {
+							if (v.id == n) {
 								this.popData.spec_list.splice(i, 1)
 							}
 						})
 					})
 					this.popData.spec_list.push(info.id);
-				}else{
+				} else {
 					info.isSelect = false;
 					let index = this.popData.spec_list.indexOf(info.id)
 					this.popData.spec_list.splice(index, 1)
 				}
 				this.spec_ids = this.popData.spec_list.join('_')
-				
+
 			},
 		},
 	}
 </script>
 
 <style scoped lang="scss">
-		.menu-box{
+	.menu-box {
+		height: 100%;
+
+		.menu-box-left {
+			width: 160rpx;
 			height: 100%;
-			
-			.menu-box-left{
-				width: 176rpx;
+			background-color: #F7F8FA;
+			// border-radius: 0rpx 20rpx 0 0rpx;
+
+			.menu-type-list-f {
+				width: 160rpx;
 				height: 100%;
-				background-color: #F7F8FA;
-				border-radius: 0rpx 20rpx 0 0rpx;
-				.menu-type-list-f{
-					width: 176rpx;
-					height: 100%;
-					.menu-type-list{
-						width: 176rpx;
-						min-height: 10rpx;
-						box-sizing: border-box;
-						padding: 14rpx 32rpx;
-						position: relative;
-						.menu-type-num{
-							position: absolute;
-							top: 2rpx;
-							right: 8rpx;
-							padding: 0 6rpx;
-							min-width: 20rpx;
-							height: 32rpx;
-							text-align: center;
-							line-height: 32rpx;
-							background: #FB3D03;
-							border-radius: 50%;
-						}
+
+				.menu-type-list {
+					width: 160rpx;
+					min-height: 108rpx;
+					padding: 18rpx 28rpx;
+					position: relative;
+
+					.menu-type-num {
+						position: absolute;
+						top: 2rpx;
+						right: 8rpx;
+						padding: 0 6rpx;
+						min-width: 20rpx;
+						height: 32rpx;
+						text-align: center;
+						line-height: 32rpx;
+						background: #FB3D03;
+						border-radius: 50%;
 					}
 				}
 			}
-			
-			.menu-box-right{
-				flex: 1;
-				height: 100%;
-				box-sizing: border-box;
-				padding: 0 16rpx;
-				.menu-list{
-					width: 100%;
+		}
+
+		.menu-box-right {
+			// flex: 1;
+			width: 100%;
+			height: 100%;
+			padding: 16rpx;
+			box-sizing: border-box;
+
+			.menu-list {
+				width: 100%;
+				// height: 200rpx;
+				margin-bottom: 40rpx;
+
+				image {
+					width: 200rpx;
 					height: 200rpx;
-					margin-bottom: 40rpx;
-					image{
-						width: 200rpx;
-						height: 200rpx;
-						border-radius: 12rpx;
-						margin-right: 16rpx;
-					}
-					.menu-list-right{
-						flex: 1;
-						.right-only-right{
-							width: 100rpx;
-							height: 44rpx;
-							background: linear-gradient( 117deg, #57CAFF 0%, #41ABF5 100%);
-							border-radius: 12rpx;
-							line-height: 44rpx;
-						}
-						.right-only-right-red{
-							width: 44rpx;
-							height: 44rpx;
-							line-height: 40rpx;
-							border-radius: 12rpx;
-							border: 1rpx solid #41ABF5;
-							color: #41ABF5;
-						}
-						.right-only-right-add{
-							width: 44rpx;
-							height: 44rpx;
-							line-height: 40rpx;
-							background: linear-gradient( 117deg, #57CAFF 0%, #41ABF5 100%);
-							border-radius: 12rpx;
-						}
-						.right-only-right-2{
-							min-width: 50rpx;
-						}
-					}
-				}
-			}
-			
-			.gg-box{
-				width: 750rpx;
-				height: 1208rpx;
-				background: #FFFFFF;
-				border-radius: 24rpx 24rpx 0rpx 0rpx;
-				.goods-info{
-					border-bottom: 1rpx solid #EEEEEE;
-					image{
-						width: 170rpx;
-						height: 160rpx;
-						border-radius: 8rpx;
-						margin-right: 22rpx;
-						margin-bottom: 32rpx;
-					}
+					border-radius: 12rpx;
+					margin-right: 16rpx;
 				}
-				.pop-buttom{
-					width: 100%;
-					height: 250rpx;
-					box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(51,51,51,0.1);
-					.pop-buttom-left{
-						padding-top: 12rpx;
-					}
-					.pop-buttom-2{
-						width: 100%;
-						height: 96rpx;
-						line-height: 96rpx;
-						background: #41ABF5;
-						border-radius: 200rpx
+
+				.menu-list-right {
+					flex: 1;
+
+					.right-only-right {
+						width: 100rpx;
+						height: 44rpx;
+						background: linear-gradient(117deg, #57CAFF 0%, #41ABF5 100%);
+						border-radius: 12rpx;
+						line-height: 44rpx;
 					}
-					.right-only-right-red{
+
+					.right-only-right-red {
 						width: 44rpx;
 						height: 44rpx;
 						line-height: 40rpx;
@@ -371,37 +396,105 @@
 						border: 1rpx solid #41ABF5;
 						color: #41ABF5;
 					}
-					.right-only-right-add{
+
+					.right-only-right-add {
 						width: 44rpx;
 						height: 44rpx;
 						line-height: 40rpx;
-						background: linear-gradient( 117deg, #57CAFF 0%, #41ABF5 100%);
+						background: linear-gradient(117deg, #57CAFF 0%, #41ABF5 100%);
 						border-radius: 12rpx;
 					}
-					.right-only-right-2{
+
+					.right-only-right-2 {
 						min-width: 50rpx;
 					}
 				}
-				.spec-item{
-					width: 210rpx;
-					height: 66rpx;
-					line-height: 66rpx;
-					box-sizing: border-box;
-					border-radius: 12rpx;
-					margin: 0 26rpx 26rpx 0;
+			}
+		}
+
+		.gg-box {
+			width: 750rpx;
+			height: 1208rpx;
+			background: #FFFFFF;
+			border-radius: 24rpx 24rpx 0rpx 0rpx;
+
+			.goods-info {
+				border-bottom: 1rpx solid #EEEEEE;
+
+				image {
+					width: 170rpx;
+					height: 160rpx;
+					border-radius: 8rpx;
+					margin-right: 22rpx;
+					margin-bottom: 32rpx;
+				}
+			}
+
+			.pop-buttom {
+				width: 100%;
+				height: 250rpx;
+				box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(51, 51, 51, 0.1);
+
+				.pop-buttom-left {
+					padding-top: 12rpx;
 				}
-				.spec-item:nth-child(3){
-					margin-right: 0rpx !important;
+
+				.pop-buttom-2 {
+					width: 100%;
+					height: 96rpx;
+					line-height: 96rpx;
+					background: #41ABF5;
+					border-radius: 200rpx
 				}
-				.s-item{
-					background-color: #ECF7FE;
-					border: 2rpx solid #41ABF5;
+
+				.right-only-right-red {
+					width: 44rpx;
+					height: 44rpx;
+					line-height: 40rpx;
+					border-radius: 12rpx;
+					border: 1rpx solid #41ABF5;
 					color: #41ABF5;
 				}
-				.n-item{
-					border: 2rpx solid #EEEEEE;
-					color: #000;
+
+				.right-only-right-add {
+					width: 44rpx;
+					height: 44rpx;
+					line-height: 40rpx;
+					background: linear-gradient(117deg, #57CAFF 0%, #41ABF5 100%);
+					border-radius: 12rpx;
 				}
+
+				.right-only-right-2 {
+					min-width: 50rpx;
+				}
+			}
+
+			.spec-item {
+				width: 210rpx;
+				height: 66rpx;
+				line-height: 66rpx;
+				box-sizing: border-box;
+				border-radius: 12rpx;
+				margin: 0 26rpx 26rpx 0;
+			}
+
+			.spec-item:nth-child(3) {
+				margin-right: 0rpx !important;
+			}
+
+			.s-item {
+				background-color: #ECF7FE;
+				border: 2rpx solid #41ABF5;
+				color: #41ABF5;
+			}
+
+			.n-item {
+				border: 2rpx solid #EEEEEE;
+				color: #000;
 			}
 		}
+	}
+	.goods-name{
+		max-width: 310rpx;
+	}
 </style>

+ 3 - 3
pages-takeout/shop.vue

@@ -48,7 +48,7 @@
 				<view class="shop-item fs-32" @click="seletShopType(item)"
 					:class="shopType === item.id?'s-item':'n-item'" v-for="(item,i) in shopTypeList" :key="i">
 					{{item.name}}
-					<view v-if="item.id == 2" class="pj-num" :class="shopType === item.id?'s-item':'n-item'">999+</view>
+					<!-- <view v-if="item.id == 2" class="pj-num" :class="shopType === item.id?'s-item':'n-item'">999+</view> -->
 				</view>
 				<view class="shop-item-bs" :style="{left:shopTypeBsLeft+'rpx'}"></view>
 			</view>
@@ -57,8 +57,8 @@
 
 		<view class="common-view-css bgc-f" style="overflow: hidden;">
 			<Menu style="height: 100%;" v-if="shopType === 1"></Menu>
-			<Evaluate style="height: 100%;" v-else-if="shopType === 2"></Evaluate>
-			<ShopInfo style="height: 100%;" v-else-if="shopType === 3"></ShopInfo>
+			<Evaluate style="height: 100%;" :shopId='shop_id' :shopScore='shopsInfo.shop_score' v-else-if="shopType === 2"></Evaluate>
+			<ShopInfo style="height: 100%;" :shopId='shop_id' v-else-if="shopType === 3"></ShopInfo>
 		</view>
 
 		<view class="shop-buttom-money box-border-box" @click="openBuyCrad()">

+ 23 - 6
pages-takeout/takeout.vue

@@ -28,7 +28,7 @@
 						<uni-icons type="search" size="22" color="#999"></uni-icons>
 					</view>
 					<input v-model="search" type="text" placeholder="请输入商家或者商品名称">
-					<view class="fs-28 fc-f index-search-box-buttom">搜索</view>
+					<view class="fs-28 fc-f index-search-box-buttom" @click="searchClick">搜索</view>
 				</view>
 				<!-- 			<view class="p-24 box-border-box">
 					<view class="index-search-box box-border-box align-items-center">
@@ -51,7 +51,8 @@
 									<view class="right-box flex-1">
 										<view class="align-items-center mb-8">
 											<view class="right-box-title fs-32 fw-600 text-overflow-ellipsis-one">
-												{{item.shop_name}}</view>
+												{{item.shop_name}}
+											</view>
 											<image class="right-box-title-img" src="@/static/img/toRight.png" mode="">
 											</image>
 										</view>
@@ -62,8 +63,8 @@
 											<view class="fc-6 fs-24 mr-12">{{item.shop_sales}}人购买</view>
 										</view>
 										<view class="align-items-center flex-wrap-wrap">
-											<view class="quan-list display-flex mr-12 mb-12" v-for="(itemCoupon,iCoupon) in item.coupon"
-												:key="i">
+											<view class="quan-list display-flex mr-12 mb-12"
+												v-for="(itemCoupon,iCoupon) in item.coupon" :key="i">
 												<view class="quan-list-1 fs-24 fc-f">券</view>
 												<view class="quan-list-2 fs-24 fc-FB3D03">{{itemCoupon.money}}元</view>
 											</view>
@@ -73,7 +74,8 @@
 							</swiper-item>
 						</swiper>
 						<view class="align-items-center dot-f">
-							<view :class="BanenerCurrent === i?'dot-box-s':'dot-box'" v-for="(item,i) in topShopData" :key="i">
+							<view :class="BanenerCurrent === i?'dot-box-s':'dot-box'" v-for="(item,i) in topShopData"
+								:key="i">
 							</view>
 						</view>
 					</view>
@@ -97,7 +99,12 @@
 
 
 				<view class="box-border-box plr-24 mt-24">
-					<view class="goos-list-box box-border-box p-24 display-flex" v-for="(item,i) in listData">
+					<EnBlank :customSrc='true' v-if="listData<= 0">
+						<template v-slot:blankImg>
+							<image class="black-custom-img" src="@/static/img/common/no-order.png" mode=""></image>
+						</template>
+					</EnBlank>
+					<view v-else class="goos-list-box box-border-box p-24 display-flex" v-for="(item,i) in listData">
 						<image class="left-img" :src="item.shop_logo" mode="scaleToFill"></image>
 						<view class="flex-1">
 							<view class="align-items-center mb-8">
@@ -140,6 +147,7 @@
 </template>
 
 <script>
+	import EnBlank from "@/components/en-utils/en-blank/en-blank";
 	import {
 		shopTop
 	} from "@/api/shop.js"
@@ -151,6 +159,9 @@
 	} from "@/api/category.js"
 	import tools from "@/service/tools";
 	export default {
+		components: {
+			EnBlank
+		},
 		data() {
 			return {
 				bgckgroundBox: 'transparent',
@@ -173,6 +184,11 @@
 			this.getTakeaway()
 		},
 		methods: {
+			searchClick() {
+				console.log("898989898998");
+				this.listData = []
+				this.getGoodsList()
+			},
 			clickClass(id) {
 				if (this.category_id == id) {
 					return
@@ -243,6 +259,7 @@
 		width: 120rpx;
 		height: 60rpx;
 		position: absolute;
+		z-index: 100;
 		right: 30rpx;
 		top: 6rpx;
 		background: linear-gradient(90deg, #57CAFF 0%, #41ABF5 100%);

+ 12 - 1
pages.json

@@ -215,6 +215,17 @@
 				}
 			]
 		},
+		{
+			"root": "pages-order",
+			"pages": [
+				{
+					"path": "express-info",
+					"style": {
+						"navigationBarTitleText": "代取详情"
+					}
+				}
+			]
+		},
 		{
 			"root": "pages-my",
 			"pages": [
@@ -368,7 +379,7 @@
 		"current": 0,
 		"list": [{
 			"name": "列表调试",
-			"path": "pages-takeout/takeout",
+			"path": "pages/order/index",
 			"query": ""
 		}]
 	}

+ 35 - 28
pages/me/index.vue

@@ -1,12 +1,13 @@
 <template>
 	<view class="my-box flex-common-css">
-		<Nav title="我的" :leftShow='false' titleColor="#333" bgckgroundBox='transparent'></Nav>
+		<!-- <Nav title=" " :leftShow='false' titleColor="#333" bgckgroundBox='transparent'></Nav> -->
 		<image class="bg-box" src="@/static/img/my/bg.png" mode=""></image>
 		<view class="user-box align-items-center" @click="goToUrl(0)">
 			<view class="user-img-box mr-24">
-				<image v-if="userInfoData.head_img" class="user-img b-rad-50" :src="userInfoData.head_img" mode=""></image>
+				<image v-if="userInfoData.head_img" class="user-img b-rad-50" :src="userInfoData.head_img" mode="">
+				</image>
 				<image v-else class="user-img b-rad-50" src="@/static/img/my/user-img.png" mode=""></image>
-				<image  class="set-iimg" src="@/static/img/my/pen.png" mode=""></image>
+				<image class="set-iimg" src="@/static/img/my/pen.png" mode=""></image>
 			</view>
 			<view class="user-name text-overflow-ellipsis-one fs-34">
 				{{ userInfoData.nickname }}
@@ -69,7 +70,7 @@
 							<image class="to-right" src="@/static/img/toRight.png" mode=""></image>
 						</view>
 					</view>
-					
+
 					<view class="item-box align-items-center flex-justify-space mb-64" @click="goToUrl(12)">
 						<view class="item-left align-items-center">
 							<image class="item-img" src="@/static/img/my/gong-gao-icon.png" mode=""></image>
@@ -81,10 +82,10 @@
 							<image class="to-right" src="@/static/img/toRight.png" mode=""></image>
 						</view>
 					</view>
-					
+
 					<view class="item-box align-items-center flex-justify-space mb-64">
 						<button class="item-box-button" open-type="contact" :bindcontact="handleContact"></button>
-						
+
 						<view class="item-left align-items-center">
 							<image class="item-img" src="@/static/img/my/lxkf.png" mode=""></image>
 							<view class="fs-32 fc-3">
@@ -147,42 +148,44 @@
 </template>
 
 <script>
-	import {userInfo} from '@/api/member.js'
+	import {
+		userInfo
+	} from '@/api/member.js'
 	export default {
 		components: {},
 		data() {
 			return {
-				userInfoData:{
-					nickname:'',
-					head_img:'',
-					phone:'',
-					sex:'',
-					msg_count:'',
+				userInfoData: {
+					nickname: '',
+					head_img: '',
+					phone: '',
+					sex: '',
+					msg_count: '',
 				},
 			};
 		},
 		onShow() {
 			let token = uni.getStorageSync('token');
-			if(!token){
+			if (!token) {
 				this.userInfoData.nickname = '请先登录'
-			}else{
+			} else {
 				this.getUserInfo();
 			}
 		},
-		
+
 		methods: {
-			handleContact(e){
+			handleContact(e) {
 				console.log(e);
 			},
-			
-			getUserInfo(){
-				userInfo().then((res)=>{
-					if(res.code === 1){
+
+			getUserInfo() {
+				userInfo().then((res) => {
+					if (res.code === 1) {
 						this.userInfoData = res.data;
 					}
 				})
 			},
-			
+
 			scrolltolower() {
 				console.log('触底');
 			},
@@ -222,7 +225,7 @@
 					uni.navigateTo({
 						url: '/pages-my/info-centre'
 					})
-				}else if (type == 8) {
+				} else if (type == 8) {
 					// 商务合作
 					uni.navigateTo({
 						url: '/pages-my/cooperate'
@@ -254,9 +257,10 @@
 </script>
 
 <style lang="scss" scoped>
-	.item-box{
+	.item-box {
 		position: relative;
-		.item-box-button{
+
+		.item-box-button {
 			position: absolute;
 			width: 100%;
 			height: 54rpx;
@@ -266,12 +270,15 @@
 			background-color: transparent;
 			border: none !important;
 		}
-		button::after{
+
+		button::after {
 			border: none !important;
 		}
 	}
-	
-	.my-box {}
+
+	.my-box {
+		padding: 110rpx 0 0 0;
+	}
 
 	.bg-box {
 		width: 100%;

+ 427 - 44
pages/order/index.vue

@@ -1,16 +1,27 @@
 <template>
-	<view class="flex-common-css iPhone-bottom flex-common-css box-border-box">
-		<Nav :leftShow='false' title="订单" leftIconColor="#333" titleColor="#333"></Nav>
-		
+	<view class="flex-common-css iPhone-bottom box-border-box">
+		<Nav :leftShow='false' :customNav='true' bgckgroundBox='#fff'>
+			<template>
+				<view slot="custom" class="text-align-center fw-600">
+					我的订单
+				</view>
+			</template>
+		</Nav>
 		<view class="nav-box box-border-box bgc-f display-flex">
-			<view class="nav-item" :class="type == item.id?'fs-36 fw-600':'fs-34 fw-400'" 
-			v-for="(item,i) in navList" :key="i" @click="selectType(item.id)">
+			<view class="nav-item" :class="type == item.id?'fs-36 fw-600':'fs-34 fw-400'" v-for="(item,i) in navList"
+				:key="i" @click="selectType(item.id)">
 				{{item.name}}
 				<view v-if="type == item.id" class="nav-item-x"></view>
 			</view>
 		</view>
-		
-		
+		<scroll-view class="nav-type-box bgc-f p-12-24 box-border-box" :scroll-x="true">
+			<view class="nav-type-item text-align-center fs-28" v-for="(item,index) in navTypeData"
+				@click="navTypeClick(item.key)"
+				:class="navTypeKey== item.key?'bgc-E4F3FD fw-600 fc-41ABF5':'bgc-F4F5F7 fw-400 fc-3'">
+				{{item.name}}
+			</view>
+		</scroll-view>
+
 		<view v-if="list.length == 0" class="scroll-view-css">
 			<EnBlank :customSrc='true'>
 				<template v-slot:blankImg>
@@ -18,9 +29,106 @@
 				</template>
 			</EnBlank>
 		</view>
-		
+
 		<scroll-view v-else :scroll-y="true" class="scroll-view-css" @scrolltolower="scrolltolower">
-			
+			<view class="list-box">
+				<view class="list-item bgc-f b-rad-20 mb-32 p-24 box-border-box" v-for="(item,index) in list">
+					<view class="align-items-center flex-justify-space mb-24">
+						<view class="align-items-center">
+							<image v-if="item.site_logo" class="shops-img" :src="item.site_logo" mode="aspectFit">
+							</image>
+							<image v-else class="shops-img" src="@/static/img/logo/logo.png" mode=""></image>
+							<view v-if="item.site_name" class="fs-32 fc-3 fw-600 shops-name text-overflow-ellipsis-one">
+								{{item.site_name}}
+							</view>
+							<view v-else class="fs-32 fc-3 fw-600 shops-name text-overflow-ellipsis-one">
+								君子校园
+							</view>
+							<!-- <image class="icons" src="@/static/img/toRight.png" mode=""></image> -->
+						</view>
+						<view class="fc-41ABF5 fs-28">
+							{{item.order_status_str}}
+						</view>
+					</view>
+					<view class="align-items-center flex-justify-space mb-24">
+						<view class="goods-box" v-if="type == 1 || type == 2 || type == 5">
+							<view class="" v-if="item.item.length == 1">
+								<view class="align-items-center" v-for="(itemGoods,indexGoods) in item.item">
+									<image class="goods-img flex-shrink0" :src="itemGoods.goods_img" mode="">
+									</image>
+									<view class="fs-28 fc-6 text-overflow-ellipsis">
+										{{itemGoods.goods_name}}
+									</view>
+								</view>
+							</view>
+							<view class="align-items-center goods-two" v-else>
+								<view class="flex-direction" v-for="(itemGoods,indexGoods) in item.item">
+									<image class="goods-img flex-shrink0" :src="itemGoods.goods_img" mode="">
+									</image>
+									<view
+										class="fs-28 fc-6 text-overflow-ellipsis-one goods-two-name text-align-center">
+										{{itemGoods.goods_name}}
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="goods-box" v-else>
+							<view class="align-items-center">
+								<image class="goods-img flex-shrink0" :src="item.goods_img" mode="">
+								</image>
+								<view class="fs-28 fc-6 text-overflow-ellipsis">
+									{{item.goods_name}}
+								</view>
+							</view>
+						</view>
+						<view class="goods-num text-align-center">
+							共 {{item.goods_number}} 件
+						</view>
+					</view>
+					<view class="align-items-center flex-justify-space mb-24">
+						<view class="fs-24 fc-9">
+							下单时间:{{item.created_at}}
+						</view>
+						<view class="fs-28 fc-9">
+							{{item.order_status == 1?'需付':'实付'}} <text
+								class="fs-32 fc-3 fw-600">¥{{item.pay_money}}</text>
+						</view>
+					</view>
+					<view class="align-items-center flex-justify-end">
+						<view class="item-but but-class-two fs-28 mr-18"
+							v-if="type == 1 && item.order_status == 7 && item.is_comment == 0">
+							评价
+						</view>
+						<view class="item-but but-class-two fs-28 mr-18" @click="cancel(item)" v-if="type == 5 && item.order_status == 2">
+							<!-- 干洗 -->
+							取消订单
+						</view>
+						<view class="item-but but-class-two fs-28 mr-18" @click="expressCancel(item)" v-if="type == 2 && item.order_status == 2">
+							<!-- 代取 -->
+							取消订单
+						</view>
+						<view class="item-but but-class-one fs-28" v-if="item.order_status == 1">
+							立即支付
+						</view>
+						<view class="item-but but-class-one fs-28" v-if="type == 2 && item.order_status == 4">
+							<!-- 代取 -->
+							再来一单
+						</view>
+						<view class="item-but but-class-one fs-28" v-if="type == 3 && item.order_status == 2">
+							<!-- 团购 -->
+							再来一单
+						</view>
+						<view class="item-but but-class-one fs-28" v-if="type == 4 && item.order_status == 2">
+							<!-- 票务 -->
+							再来一单
+						</view>
+						<view class="item-but but-class-one fs-28" v-if="type == 5 && item.order_status == 5">
+							<!-- 干洗 -->
+							再来一单
+						</view>
+					</view>
+				</view>
+			</view>
 		</scroll-view>
 	</view>
 </template>
@@ -28,72 +136,262 @@
 <script>
 	import tools from '@/service/tools';
 	import EnBlank from "@/components/en-utils/en-blank/en-blank";
-	
+	import {
+		expressOrderStatus,
+		expressOrderList,
+		expressOrderCancel
+	} from "@/api/expressOrder.js"
+	import {
+		orderStatus
+	} from "@/api/order.js"
+	import {
+		groupOrderStatus,
+		groupOrderList
+	} from "@/api/groupOrder.js"
+	import {
+		ticketOrderStatus,
+		ticketOrderList
+	} from "@/api/ticketOrder.js"
+	import {
+		laundryOrderStatus,
+		laundryOrderList,
+		laundryOrderCancel
+	} from "@/api/laundryOrder.js"
 	export default {
-		components: {EnBlank},
+		components: {
+			EnBlank
+		},
 		data() {
 			return {
-				type:1,
-				navList:[
-					{name:'外卖',id:1},
-					{name:'代取',id:2},
-					{name:'团购',id:3},
-					{name:'票务',id:4},
-					{name:'干洗',id:5},
+				type: 1,
+				navList: [{
+						name: '外卖',
+						id: 1
+					},
+					{
+						name: '代取',
+						id: 2
+					},
+					{
+						name: '团购',
+						id: 3
+					},
+					{
+						name: '票务',
+						id: 4
+					},
+					{
+						name: '干洗',
+						id: 5
+					},
 				],
-				page:1,
-				list:[],
-				total:0,
+				page: 1,
+				list: [],
+				total: 0,
+				navTypeData: [],
+				navTypeKey: 0,
+				isAjax: false
 			};
 		},
 		onShow() {
 			this.resetList();
 		},
-
 		methods: {
-			getList(){
-				if(this.type === 1){
-					
-				}else if(this.type === 2){
-					
-				}else if(this.type === 3){
-					
-				}else if(this.type === 4){
-					
-				}else if(this.type === 5){
-					
+			navTypeClick(key) {
+				if (this.navTypeKey != key) {
+					this.navTypeKey = key
+					this.page = 1
+					this.list = []
+					if (this.type === 1) {
+
+					} else if (this.type === 2) {
+						this.expressOrderList()
+					} else if (this.type === 3) {
+						this.groupOrderList()
+					} else if (this.type === 4) {
+						this.ticketOrderList()
+					} else if (this.type === 5) {
+						this.laundryOrderList()
+					}
 				}
 			},
-			
-			resetList(){
+			resetList() {
 				this.page = 1;
 				this.list = [];
 				this.getList();
 			},
-			selectType(type){
-				if(type != this.type){
+			selectType(type) {
+				if (type != this.type) {
 					this.type = type;
+					this.navTypeKey = 0
 					this.resetList();
 				}
 			},
-			
+			expressOrderCancel(item) {
+				// 代取取消订单
+				expressOrderCancel({order_id: item.id}).then((res) => {
+					if(res.code == 1) {
+						tools.success(res.msg)
+						this.page = 1;
+						this.list = [];
+						this.expressOrderList()
+					}else {
+						tools.error(res.msg)
+					}
+				})
+			},
+			cancel(item) {
+				// 干洗取消订单
+				laundryOrderCancel({order_id: item.id}).then((res) => {
+					if(res.code == 1) {
+						tools.success(res.msg)
+						this.page = 1;
+						this.list = [];
+						this.laundryOrderList()
+					}else {
+						tools.error(res.msg)
+					}
+				})
+			},
 			scrolltolower() {
-				console.log('触底');
+				++this.page
+				if (this.type === 1) {
+
+				} else if (this.type === 2) {
+					this.expressOrderList()
+				} else if (this.type === 3) {
+					this.groupOrderList()
+				} else if (this.type === 4) {
+					this.ticketOrderList()
+				} else if (this.type === 5) {
+					this.laundryOrderList()
+				}
+				// console.log('触底');
+			},
+			getList() {
+				if (this.type === 1) {
+					this.orderStatus()
+				} else if (this.type === 2) {
+					this.expressOrderStatus()
+					this.expressOrderList()
+				} else if (this.type === 3) {
+					this.groupOrderStatus()
+					this.groupOrderList()
+				} else if (this.type === 4) {
+					this.ticketOrderStatus()
+					this.ticketOrderList()
+				} else if (this.type === 5) {
+					this.laundryOrderStatus()
+					this.laundryOrderList()
+				}
 			},
-			
+			expressOrderStatus() {
+				// 代取订单状态
+				expressOrderStatus().then((res) => {
+					if (res.code == 1) {
+						this.navTypeData = res.data
+					}
+				})
+			},
+			orderStatus() {
+				// 外卖订单状态
+				orderStatus().then((res) => {
+					if (res.code == 1) {
+						this.navTypeData = res.data
+					}
+				})
+			},
+			groupOrderStatus() {
+				// 团购订单状态
+				groupOrderStatus().then((res) => {
+					if (res.code == 1) {
+						this.navTypeData = res.data
+					}
+				})
+			},
+			ticketOrderStatus() {
+				// 票务订单状态
+				ticketOrderStatus().then((res) => {
+					if (res.code == 1) {
+						this.navTypeData = res.data
+					}
+				})
+			},
+			laundryOrderStatus() {
+				// 干洗订单状态
+				laundryOrderStatus().then((res) => {
+					if (res.code == 1) {
+						this.navTypeData = res.data
+					}
+				})
+			},
+			expressOrderList() {
+				// 代取订单列表
+				expressOrderList({
+					status: this.navTypeKey,
+					page: this.page
+				}).then((res) => {
+					if (res.code == 1) {
+						if (res.data.items.length > 0) {
+							this.list.push(...res.data.items)
+						}
+					}
+				})
+			},
+			groupOrderList() {
+				// 团购订单列表
+				groupOrderList({
+					status: this.navTypeKey,
+					page: this.page
+				}).then((res) => {
+					if (res.code == 1) {
+						if (res.data.items.length > 0) {
+							this.list.push(...res.data.items)
+						}
+					}
+				})
+			},
+			ticketOrderList() {
+				// 票务订单列表
+				ticketOrderList({
+					status: this.navTypeKey,
+					page: this.page
+				}).then((res) => {
+					if (res.code == 1) {
+						if (res.data.items.length > 0) {
+							this.list.push(...res.data.items)
+						}
+					}
+				})
+			},
+			laundryOrderList() {
+				// 干洗订单列表
+				laundryOrderList({
+					status: this.navTypeKey,
+					page: this.page
+				}).then((res) => {
+					if (res.code == 1) {
+						if (res.data.items.length > 0) {
+							this.list.push(...res.data.items)
+						}
+					}
+				})
+			}
 		},
 	}
 </script>
 
 <style lang="scss" scoped>
-	.nav-box{
+	.nav-box {
 		padding: 26rpx 44rpx;
 		overflow-x: scroll;
-		.nav-item{
+
+		.nav-item {
 			margin-right: 76rpx;
 			white-space: nowrap;
 			position: relative;
-			.nav-item-x{
+
+			.nav-item-x {
 				position: absolute;
 				width: 48rpx;
 				height: 6rpx;
@@ -104,4 +402,89 @@
 			}
 		}
 	}
-</style>
+
+	.nav-type-box {
+		width: 100%;
+		white-space: nowrap;
+	}
+
+	.nav-type-item {
+		width: 144rpx;
+		height: 64rpx;
+		line-height: 64rpx;
+		margin: 0 24rpx 0 0;
+		border-radius: 200rpx;
+		display: inline-block;
+	}
+
+	.nav-type-item:last-child {
+		margin: 0;
+	}
+
+	.list-box {
+		padding: 20rpx;
+		box-sizing: border-box;
+	}
+
+	.shops-img {
+		width: 48rpx;
+		height: 48rpx;
+		margin: 0 8rpx 0 0;
+		border-radius: 50%;
+	}
+
+	.shops-name {
+		max-width: 452rpx;
+		margin: 0 8rpx 0 0;
+	}
+
+	.icons {
+		width: 32rpx;
+		height: 32rpx;
+	}
+
+	.goods-box {
+		max-width: 506rpx;
+		height: auto;
+	}
+
+	.goods-num {
+		width: 24rpx;
+		height: auto;
+	}
+
+	.goods-img {
+		width: 144rpx;
+		height: 144rpx;
+		border-radius: 12rpx;
+		margin: 0 16rpx 0 0;
+	}
+
+	.goods-two {
+		overflow-x: scroll;
+		overflow: auto;
+	}
+
+	.goods-two-name {
+		width: 144rpx;
+	}
+
+	.item-but {
+		width: 160rpx;
+		height: 64rpx;
+		line-height: 64rpx;
+		text-align: center;
+		border-radius: 200rpx;
+	}
+
+	.but-class-one {
+		background: linear-gradient(225deg, #41ABF5 0%, #5BD8FB 100%);
+		color: #fff;
+	}
+
+	.but-class-two {
+		background: #fff;
+		border: 2rpx solid #CCCCCC;
+		color: #333;
+	}
+</style>