zpj hace 2 años
padre
commit
fc53e6a4c8

+ 5 - 2
api/category.js

@@ -1,6 +1,9 @@
 import {request} from '../service/ajax.js'
 
 const newsUrl = '/api/category/'
-// 用户注册登陆
+// 外卖分类
 export const getTakeaway = (data) => request(newsUrl + 'takeaway', 'post', { ...data },false)
-
+// 票务分类
+export const getTicket = (data) => request(newsUrl + 'ticket', 'post', { ...data },false)
+// 校友圈话题
+export const getTopic = (data) => request(newsUrl + 'topic', 'post', { ...data },false)

+ 1 - 1
api/goods.js

@@ -1,7 +1,7 @@
 import {request} from '../service/ajax.js'
 
 const newsUrl = '/api/goods/'
-// 用户注册登陆
+// 获取商品列表
 export const getGoodsList = (data) => request(newsUrl + 'list', 'post', { ...data },false)
 // 搜索商品列表
 export const getSearch = (data) => request(newsUrl + 'search', 'post', { ...data },false)

+ 1 - 1
api/groupOrder.js

@@ -8,4 +8,4 @@ export const groupInfo = (data) => request(newsUrl + 'info', 'post', { ...data }
 // 下单
 export const groupCreate = (data) => request(newsUrl + 'create', 'post', { ...data },false)
 // 支付订单
-export const groupPay = (data) => request(newsUrl + 'pay', 'post', { ...data },false)
+export const groupPay = (data) => request('/api/groupOrder/' + 'pay', 'post', { ...data },false)

+ 3 - 0
api/member.js

@@ -4,6 +4,9 @@ const newsUrl = '/api/member/'
 // 用户注册登陆
 export const appletLogin = (data) => request(newsUrl + 'appletLogin', 'post', { ...data },false)
 
+// 用户详情
+export const userInfo = (data) => request(newsUrl + 'info', 'post', { ...data },false)
+
 // 获取用户地址列表
 export const getAddressList = (data) => request(newsUrl + 'address', 'post', { ...data },false)
 // 获取默认地址

+ 11 - 0
api/ticket.js

@@ -0,0 +1,11 @@
+import {request} from '../service/ajax.js'
+
+const newsUrl = '/api/ticket/'
+// 获取票务商品列表
+export const ticketList = (data) => request(newsUrl + 'list', 'post', { ...data },false)
+// 票务商品详情
+export const ticketInfo = (data) => request(newsUrl + 'info', 'post', { ...data },false)
+// 下单
+export const ticketCreate = (data) => request(newsUrl + 'create', 'post', { ...data },false)
+// 支付订单
+export const ticketPay = (data) => request('/api/ticketOrder/' + 'pay', 'post', { ...data },false)

+ 8 - 1
pages-buy/group-det.vue

@@ -170,8 +170,15 @@
 			},
 			toSave(){
 				if(!this.isTimeEnd){
+					let goodsData = {
+						title:this.obj.title,
+						cover_img:this.obj.cover_img,
+						deposit:this.obj.deposit,
+						id:this.obj.id,
+					}
+					
 					uni.navigateTo({
-						url:'/pages-buy/save-order?id=' + this.obj.id
+						url:'/pages-buy/save-order?goodsData=' + encodeURIComponent(JSON.stringify(goodsData))
 					})
 				}
 			},

+ 1 - 0
pages-buy/group.vue

@@ -121,6 +121,7 @@
 	
 	.group-box{
 		background-color: #EF2864;
+		min-height: 100vh;
 		.head-img{
 			width: 100%;
 			height: 422rpx;

+ 65 - 12
pages-buy/save-order.vue

@@ -7,7 +7,7 @@
 			<view class="box-card box-border-box mb-20 bgc-f">
 				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
 					<view class="fs-28 fw-600 w158">姓名</view>
-					<input type="text" placeholder="请输入姓名">
+					<input v-model="fromData.name" type="text" placeholder="请输入姓名">
 				</view>
 				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
 					<view class="fs-28 fw-600 w158">手机号</view>
@@ -16,26 +16,24 @@
 				</view>
 				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
 					<view class="fs-28 fw-600 w158">验证码</view>
-					<input type="number" placeholder="请输入验证码">
+					<input v-model="fromData.code" type="number" placeholder="请输入验证码">
 					
 				</view>
 				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
 					<view class="fs-28 fw-600 w158">联系地址</view>
-					<input type="text" placeholder="请输入联系地址(选填)">
+					<input v-model="fromData.address" type="text" placeholder="请输入联系地址(选填)">
 				</view>
 			</view>
 			
 			<view class="box-card box-border-box mb-20 bgc-f">
 				<view class="box-top box-border-box flex-justify-space">
 					<view class="box-left display-flex">
-						<image src="@/static/img/buy/group-bg.png" mode="scaleToFill"></image>
-						<view class="w336 fs-28 fw-400">
-							巧大耳朵游乐场大耳朵游乐 1大耳朵游乐场
-						</view>
+						<image :src="goodsData.cover_img" mode="aspectFill"></image>
+						<view class="w336 fs-28 fw-400">{{goodsData.title||''}}</view>
 					</view>
 					<view class="box-right">
 						<view class="fs-32 fw-600 text-align-right mb-12">¥19.5</view>
-						<view class="fs-26  text-align-right fc-9">x1</view>
+						<!-- <view class="fs-26  text-align-right fc-9">x1</view> -->
 						<!-- <view class="display-flex align-items-center">
 							<view class="right-only-right-red fw-500 text-align-center fs-36 fc-f">-</view>
 							<view class="right-only-right-2 text-align-center fs-28 fw-400">1</view>
@@ -44,15 +42,15 @@
 					</view>
 				</view>
 				<view class="box-buttom text-align-right">
-					<span class="fs-28 fc-9 fw-400">共5件,</span>
+					<!-- <span class="fs-28 fc-9 fw-400">共5件,</span> -->
 					<span class="fs-28 fc-0 fw-400">合计¥</span>
-					<span class="fs-44 fc-0 fw-b">19.5</span>
+					<span class="fs-44 fc-0 fw-b">{{goodsData.deposit||''}}</span>
 				</view>
 			</view>
 			
 			<view class="box-card box-border-box mb-20 bgc-f flex-justify-space">
 				<view class="fs-28 fw-600 w158">备注</view>
-				<input class="text-align-right" type="text" placeholder="请填写你的需求">
+				<input v-model="fromData.note" class="text-align-right" type="text" placeholder="请填写你的备注">
 			</view>
 			
 			<view class="box-card box-border-box mb-20 bgc-f flex-justify-space">
@@ -68,7 +66,7 @@
 			<view class="flex-justify-space">
 				<view class="align-items-flex-end box-1">
 					<span class="fs-28 fc-f fw-600">¥</span>
-					<span class="fs-44 fc-f fw-600">19.5</span>
+					<span class="fs-44 fc-f fw-600">{{goodsData.deposit||''}}</span>
 				</view>
 				<view class="text-align-center box-2 fs-32 fc-f fw-600" @click="toSave()">立即支付</view>
 			</view>
@@ -78,6 +76,7 @@
 
 <script>
 	import {getCode} from '@/api/common.js';
+	import {groupPay,groupCreate} from '@/api/groupOrder.js';
 	import tools from "@/service/tools";
 	
 	export default {
@@ -87,12 +86,24 @@
 				codeText:'获取验证码',
 				
 				fromData:{
+					name:'',
 					id:'',
 					phone:'',
 					school_id:'',
 					code:'',
 					note:'',
+					address:'',
 				},
+				isAJAX:false,
+				
+				goodsData:{},
+			}
+		},
+		onLoad(e) {
+			if(e.goodsData){
+				let obj = JSON.parse(decodeURIComponent(e.goodsData));
+				this.goodsData = obj;
+				this.fromData.id = obj.id;
 			}
 		},
 		methods:{
@@ -119,6 +130,48 @@
 				})
 				
 			},
+			toSave(){
+				if (this.isAJAX) {
+					return
+				}
+				this.isAJAX = true;
+				this.fromData.school_id = uni.getStorageSync('school_id');
+				groupCreate(this.fromData).then((res)=>{
+					if(res.code === 1){
+						groupPay({order_id:res.data.order_id}).then((ret)=>{
+							if(ret.code === 1){
+								uni.requestPayment({
+								  provider: "wxpay", //支付类型-固定值
+								  timeStamp: ret.data.wx_pay.timeStamp + "", // 时间戳(单位:秒)
+								  nonceStr: ret.data.wx_pay.nonceStr, // 随机字符串
+								  package: ret.data.wx_pay.package, // 固定值
+								  signType: ret.data.wx_pay.signType, //固定值
+								  paySign: ret.data.wx_pay.paySign, //签名
+								  success: (ren) => {
+								    tools.success("支付成功");
+									this.isAJAX = false;
+									setTimeout(()=>{
+										uni.switchTab({
+											url:"/pages/order/index"
+										})
+									},1500)
+								  },
+								  fail: (err) =>{
+									this.isAJAX = false;
+								    tools.error("支付失败");
+								  },
+								});
+							}else{
+								this.isAJAX = false;
+								tools.error("支付失败");
+							}
+						})
+					}else{
+						this.isAJAX = false;
+						tools.error(res.msg);
+					}
+				})
+			},
 		},
 	}
 </script>

+ 290 - 0
pages-buy/save-ticket.vue

@@ -0,0 +1,290 @@
+<template>
+	<view class="save-order-box iPhone-bottom flex-common-css box-border-box">
+		<view class="bg-box"></view>
+		<Nav title='提交订单' bgckgroundBox='transparent'></Nav>
+		
+		<view class="scroll-view-css box-border-box p-24">
+			<view class="box-card box-border-box mb-20 bgc-f">
+				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
+					<view class="fs-28 fw-600 w158">姓名</view>
+					<input v-model="fromData.name" type="text" placeholder="请输入姓名">
+				</view>
+				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
+					<view class="fs-28 fw-600 w158">手机号</view>
+					<input v-model="fromData.phone" type="number" placeholder="请输入手机号">
+					<view class="fs-28 fc-41ABF5 code-box" @click="getCode()">{{codeText}}{{isCode?'s':''}}</view>
+				</view>
+				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
+					<view class="fs-28 fw-600 w158">验证码</view>
+					<input v-model="fromData.code" type="number" placeholder="请输入验证码">
+					
+				</view>
+				<view class="box-input align-items-center box-border-box p-b-20 mb-20">
+					<view class="fs-28 fw-600 w158">联系地址</view>
+					<input v-model="fromData.address" type="text" placeholder="请输入联系地址(选填)">
+				</view>
+			</view>
+			
+			<view class="box-card box-border-box mb-20 bgc-f">
+				<view class="box-top box-border-box flex-justify-space">
+					<view class="box-left display-flex">
+						<image :src="goodsData.cover_img" mode="aspectFill"></image>
+						<view class="w336 fs-28 fw-400">{{goodsData.title||''}}</view>
+					</view>
+					<view class="box-right">
+						<view class="fs-32 fw-600 text-align-right mb-12">¥{{goodsData.price||''}}</view>
+						<view class="display-flex align-items-center">
+							<view class="right-only-right-red fw-500 text-align-center fs-36 fc-f" @click="setNum(1)">-</view>
+							<view class="right-only-right-2 text-align-center fs-28 fw-400">{{fromData.number}}</view>
+							<view class="right-only-right-add fw-500 text-align-center fs-36 fc-f" @click="setNum(2)">+</view>
+						</view>
+					</view>
+				</view>
+				<view class="box-buttom text-align-right">
+					<span class="fs-28 fc-9 fw-400">共{{fromData.number}}件,</span>
+					<span class="fs-28 fc-0 fw-400">合计¥</span>
+					<span class="fs-44 fc-0 fw-b">{{goodsData.price?Number(goodsData.price)*fromData.number:''}}</span>
+				</view>
+			</view>
+			
+			<view class="box-card box-border-box mb-20 bgc-f flex-justify-space">
+				<view class="fs-28 fw-600 w158">备注</view>
+				<input v-model="fromData.note" class="text-align-right" type="text" placeholder="请填写你的备注">
+			</view>
+			
+			<view class="box-card box-border-box mb-20 bgc-f flex-justify-space">
+				<view class="fs-28 fw-600 w158">支付方式</view>
+				<view class="wx-box display-flex">
+					<image src="@/static/img/common/wx-zf.png" mode="scaleToFill"></image>
+					<view class="fs-28 fw-400 ml-10">微信支付</view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="bottom-box box-border-box p-24">
+			<view class="flex-justify-space">
+				<view class="align-items-flex-end box-1">
+					<span class="fs-28 fc-f fw-600">¥</span>
+					<span class="fs-44 fc-f fw-600">{{goodsData.price?Number(goodsData.price)*fromData.number:''}}</span>
+				</view>
+				<view class="text-align-center box-2 fs-32 fc-f fw-600" @click="toSave()">立即支付</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getCode} from '@/api/common.js'
+	import {ticketCreate,ticketPay} from '@/api/ticket.js';
+	import tools from "@/service/tools";
+	
+	export default {
+		data(){
+			return{
+				isCode:false,
+				codeText:'获取验证码',
+				
+				fromData:{
+					name:'',
+					id:'',
+					phone:'',
+					school_id:'',
+					code:'',
+					note:'',
+					address:'',
+					number:1,
+				},
+				isAJAX:false,
+				
+				goodsData:{},
+			}
+		},
+		onLoad(e) {
+			if(e.goodsData){
+				let obj = JSON.parse(decodeURIComponent(e.goodsData));
+				this.goodsData = obj;
+				this.fromData.id = obj.id;
+			}
+		},
+		methods:{
+			getCode(){
+				if (this.isCode) {
+					return
+				}
+				this.isCode = true;
+				getCode({phone:this.fromData.phone,send_type:'group_order'}).then((res)=>{
+					if(res.code === 1){
+						this.codeText = 60;
+						let timer = setInterval(() => {
+						  this.codeText -= 1;
+						  if (this.codeText <= 0) {
+						    clearInterval(timer);
+							this.isCode = false;
+							this.codeText = '获取验证码'
+						  }
+						}, 1000);
+					}else{
+						this.isCode = false;
+						tools.error('获取验证码失败,请稍后重试')
+					}
+				})
+				
+			},
+			setNum(type){
+				if(type == 1){
+					if(this.fromData.number <= 1){
+						return
+					}else{
+						this.fromData.number -= 1;
+					}
+				}else{
+					this.fromData.number += 1;
+				}
+			},
+			toSave(){
+				if (this.isAJAX) {
+					return
+				}
+				this.isAJAX = true;
+				this.fromData.school_id = uni.getStorageSync('school_id');
+				ticketCreate(this.fromData).then((res)=>{
+					if(res.code === 1){
+						ticketPay({order_id:res.data.order_id}).then((ret)=>{
+							if(ret.code === 1){
+								uni.requestPayment({
+								  provider: "wxpay", //支付类型-固定值
+								  timeStamp: ret.data.wx_pay.timeStamp + "", // 时间戳(单位:秒)
+								  nonceStr: ret.data.wx_pay.nonceStr, // 随机字符串
+								  package: ret.data.wx_pay.package, // 固定值
+								  signType: ret.data.wx_pay.signType, //固定值
+								  paySign: ret.data.wx_pay.paySign, //签名
+								  success: (ren) => {
+								    tools.success("支付成功");
+									this.isAJAX = false;
+									setTimeout(()=>{
+										uni.switchTab({
+											url:"/pages/order/index"
+										})
+									},1500)
+								  },
+								  fail: (err) =>{
+									this.isAJAX = false;
+								    tools.error("支付失败");
+								  },
+								});
+							}else{
+								this.isAJAX = false;
+								tools.error("支付失败");
+							}
+						})
+					}else{
+						this.isAJAX = false;
+						tools.error(res.msg);
+					}
+				})
+			},
+		},
+	}
+</script>
+
+<style scoped lang="scss">
+	.save-order-box{
+		position: relative;
+		
+		.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;
+		}
+		
+		.bg-box{
+			width: 100%;
+			height: 448rpx;
+			filter: blur(80rpx);
+			background: linear-gradient(to right,rgba(176, 252, 250, 0.6),rgba(249,246,224,0.87),rgba(249,246,224,0.87));
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: -1;
+		}
+		.bottom-box{
+			background-color: #fff;
+			.box-1{
+				flex: 1;
+				height: 100rpx;
+				background: #333;
+				border-radius: 200rpx 0rpx 0rpx 200rpx;
+				box-sizing: border-box;
+				padding-left: 32rpx;
+				padding-bottom: 20rpx;
+			}
+			.box-2{
+				width: 200rpx;
+				height: 100rpx;
+				line-height: 100rpx;
+				background: #41ABF5;
+				border-radius: 0rpx 200rpx 200rpx 0rpx;
+				text-align: center;
+			}
+		}
+		.box-card{
+			width: 100%;
+			min-height: 88rpx;
+			border-radius: 20rpx;
+			padding: 24rpx 24rpx 0 24rpx;
+			.box-top{
+				padding-bottom: 24rpx;
+				border-bottom: 2rpx solid #F9F9F9;
+				margin-bottom: 24rpx;
+				.box-left{
+					image{
+						width: 108rpx;
+						height: 108rpx;
+						border-radius: 8rpx;
+						margin-right: 16rpx;
+					}
+					.w336{
+						width: 336rpx;
+					}
+				}
+			}
+			.box-buttom{
+				padding-bottom: 24rpx;
+			}
+		}
+		.box-input{
+			border-bottom: 2rpx solid #F9F9F9;
+			position: relative;
+			.w158{
+				width: 158rpx;
+			}
+			input{
+				font-size: 28rpx;
+			}
+			.code-box{
+				position: absolute;
+				right: 0;
+				top: 0;
+			}
+		}
+		.wx-box{
+			image{
+				width: 40rpx;
+				height: 40rpx;
+			}
+		}
+	}
+</style>

+ 43 - 14
pages-buy/ticket-det.vue

@@ -14,9 +14,9 @@
 		
 		<view class="scroll-view-css">
 			<swiper class="swiper " circular :autoplay="true" :interval="3000" :duration="500" :current='BanenerCurrent' @change="onSwiperChange">
-				<swiper-item v-for="(item,i) in 3" :key="i">
-					<image class="swiper-item" src="@/static/img/my/lqzx-bg.png" mode="scaleToFill"></image>
-					<view class="swiper-num fc-f">{{BanenerCurrent + 1}}/3</view>
+				<swiper-item v-for="(item,i) in obj.image" :key="i">
+					<image class="swiper-item" :src="item" mode="aspectFill" @click="lookImg(obj.image,i)"></image>
+					<view class="swiper-num fc-f">{{BanenerCurrent}}/{{obj.image.length}}</view>
 				</swiper-item>
 			</swiper>
 			
@@ -24,51 +24,80 @@
 				<view class="box-card box-border-box p-24">
 					<view class="mb-12">
 						<span class="fs-28 fc-FB3D03 fw-600">¥</span>
-						<span class="fs-44 fc-FB3D03 fw-600">19.5</span>
-					</view>
-					<view class="fs-36 fw-600">
-						巧大耳朵游乐场大耳朵游乐场1大耳朵游乐场巧大耳朵游乐场大耳朵游乐场1大耳朵游乐场
+						<span class="fs-44 fc-FB3D03 fw-600">{{obj.price||''}}</span>
 					</view>
+					<view class="fs-36 fw-600">{{obj.title||''}}</view>
 				</view>
 			</view>
 			
 			<image class="pwxq" src="@/static/img/buy/pwxq.png" mode="scaleToFill"></image>
 			
 			<view class="box-border-box plr-24">
-				<view class="box-card box-border-box p-24 fs-30 fc-0">
-					套餐内日描述套餐内日描述套餐内日描述套餐 内日描述套餐内日描述套餐内日描述套餐内日描述套餐内日描述
-					<image src="../static/img/my/bg.png" mode=""></image>
-				</view>
+				<view class="box-card box-border-box p-24 fs-30 fc-0" v-html="obj.content"></view>
 			</view>
 		</view>
 		
-		<view class="bottom-box box-border-box p-24">
+		<view class="bottom-box box-border-box p-24" >
 			<view class="flex-justify-space">
 				<view class="align-items-flex-end box-1">
 					<span class="fs-28 fc-f fw-600">¥</span>
-					<span class="fs-44 fc-f fw-600">19.5</span>
+					<span class="fs-44 fc-f fw-600">{{obj.price||''}}</span>
 				</view>
-				<view class="text-align-center box-2 fs-32 fc-f fw-600">立即抢购</view>
+				<view class="text-align-center box-2 fs-32 fc-f fw-600" @click="toSave()">立即抢购</view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import {ticketInfo} from '@/api/ticket.js';
 	import tools from "@/service/tools";
 	export default {
 		data(){
 			return{
 				BanenerCurrent:1,
+				id:"",
+				obj:{
+					image:[],
+				},
+			}
+		},
+		onLoad(e) {
+			if(e.id){
+				this.id = e.id;
+				this.getInfo();
 			}
 		},
 		methods:{
+			getInfo(){
+				ticketInfo({id:this.id}).then((res)=>{
+					if(res.code === 1){
+						this.obj = res.data;
+					}
+				})
+			},
+			lookImg(list,i){
+				tools.lookBigImg(i,list);
+			},
 			toBack(){
 				tools.leftClick()
 			},
 			onSwiperChange(e){
 				this.BanenerCurrent = e.detail.current;
 			},
+			toSave(){
+				if(!this.isTimeEnd){
+					let goodsData = {
+						title:this.obj.title,
+						cover_img:this.obj.cover_img,
+						price:this.obj.price,
+						id:this.obj.id,
+					}
+					uni.navigateTo({
+						url:'/pages-buy/save-ticket?goodsData=' + encodeURIComponent(JSON.stringify(goodsData))
+					})
+				}
+			},
 		},
 	}
 </script>

+ 68 - 20
pages-buy/ticket.vue

@@ -14,29 +14,38 @@
 			<view class="box-border-box plr-24 mb-32">
 				<view class="head-search">
 					<uni-icons class="s-icon" type="search" size="19"></uni-icons>
-					<input type="text" placeholder="搜一搜带你玩周边">
-					<view class="head-search-buttom text-align-center fs-28 fw-500 fc-f">搜索</view>
+					<input v-model="search" type="text" placeholder="搜一搜带你玩周边">
+					<view class="head-search-buttom text-align-center fs-28 fw-500 fc-f" @click="searchFun()">搜索</view>
 				</view>
 			</view>
 			
 			<view class="display-flex box-border-box plr-24 nav-list">
-				<view class="text-align-center nav-item" v-for="(item,i) in navList" :key="i">
+				<view class="text-align-center nav-item" v-for="(item,i) in navList" :key="i" @click="selectType(item.id)">
 					<image class="nav-img" :src="item.img" mode="scaleToFill"></image>
 					<view class="fs-24 w-96" :class="type == item.id?'fw-600 fc-41ABF5':'fw-400'">{{item.name}}</view>
 				</view>
 			</view>
 		</view>
 		
-		<scroll-view class="scroll-view-css box-border-box plr-24" scroll-y="true" @scrolltolower="scrolltolower">
-			<view class="list-item display-flex" v-for="(item,i) in 10" :key="i" @click="toDet(item)">
-				<image src="@/static/img/my/lqzx-bg.png" mode="scaleToFill"></image>
-				<view class="flex-1">
-					<view class="w-470 text-overflow-ellipsis fw-600 fs-32 mb-48">大耳朵游乐场大耳朵游乐场11大耳朵游v乐场v</view>
+		
+		<view v-if="list.length === 0" class="scroll-view-css">
+			<EnBlank :customSrc='true'>
+				<template v-slot:blankImg>
+					<image class="black-custom-img" src="@/static/img/common/no-order.png" mode=""></image>
+				</template>
+			</EnBlank>
+		</view>
+		
+		<scroll-view v-else class="scroll-view-css box-border-box plr-24" scroll-y="true" @scrolltolower="scrolltolower">
+			<view class="list-item display-flex" v-for="(item,i) in list" :key="i" @click="toDet(item)">
+				<image :src="item.cover_img" mode="aspectFill"></image>
+				<view class="flex-1 flex-direction flex-justify-space">
+					<view class="w-470 text-overflow-ellipsis fw-600 fs-32 mb-48">{{item.title}}</view>
 					<view class=" flex-justify-space align-items-flex-end">
 						<view class="">
 							<span class="fs-24 fw-400 fc-FB3D03">¥</span>
-							<span class="fw-b fs-40 fc-FB3D03">3.9</span>
-							<span class="text-line-through fs-24 fc-9 fw-400">¥3.9</span>
+							<span class="fw-b fs-40 fc-FB3D03">{{item.price}}</span>
+							<span class="text-line-through fs-24 fc-9 fw-400">¥{{item.line_price}}</span>
 						</view>
 						<view class="to-box fs-28 fw-400 fc-f text-align-center">马上抢</view>
 					</view>
@@ -47,35 +56,74 @@
 </template>
 
 <script>
+	import {ticketList} from '@/api/ticket.js';
+	import {getTicket} from '@/api/category.js';
+	import EnBlank from "@/components/en-utils/en-blank/en-blank";
 	import tools from "@/service/tools";
 	export default {
+		components:{EnBlank},
 		data(){
 			return{
 				type:0,
 				navList:[
 					{name:"全部",id:0,img:require('@/static/img/buy/t-all.png')},
-					{name:"动植物园",id:1,img:require('@/static/img/buy/t-all.png')},
-					{name:"动植物园",id:1,img:require('@/static/img/buy/t-all.png')},
-					{name:"动植物园",id:1,img:require('@/static/img/buy/t-all.png')},
-					{name:"动植物园",id:1,img:require('@/static/img/buy/t-all.png')},
-					{name:"动植物园",id:1,img:require('@/static/img/buy/t-all.png')},
-					{name:"动植物园",id:1,img:require('@/static/img/buy/t-all.png')},
-				]
+				],
+				
+				page:1,
+				total:0,
+				list:[],
+				search:'',
 			}
 		},
 		onShow() {
-			
+			this.page = 1;
+			this.list = [];
+			this.getList();
+		},
+		mounted() {
+			this.getTicket();
 		},
 		methods:{
+			getTicket(){
+				getTicket().then((res)=>{
+					if(res.code === 1){
+						this.navList = [...this.navList,...res.data]
+					}
+				})
+			},
+			getList(){
+				ticketList({category_id:this.type,page:this.page,search:this.search}).then((res)=>{
+					if(res.code === 1){
+						this.list = [...this.list,...res.data.items];
+						this.total = res.data.total;
+					}
+				})
+			},
+			searchFun(){
+				this.page = 1;
+				this.list = [];
+				this.getList();
+			},
+			selectType(id){
+				if(this.type != id){
+					this.type = id;
+					this.page = 1;
+					this.list = [];
+					this.getList();
+				}
+			},
 			toBack(){
 				tools.leftClick()
 			},
 			scrolltolower(){
-				console.log('触底');
+				if(this.list.length < this.total){
+					this.page += 1;
+					this.getList();
+				}
 			},
 			toDet(item){
 				uni.navigateTo({
-					url:"/pages-buy/ticket-det"
+					url:"/pages-buy/ticket-det?id=" + item.id
 				})
 			},
 		},

+ 7 - 1
pages-takeout/confirm-order.vue

@@ -267,12 +267,18 @@
 									},1500)
 								  },
 								  fail: (err) =>{
-									  this.isAJAX = false;
+									this.isAJAX = false;
 								    tools.error("支付失败");
 								  },
 								});
+							}else{
+								this.isAJAX = false;
+								tools.error("支付失败");
 							}
 						})
+					}else{
+						this.isAJAX = false;
+						tools.error(res.msg);
 					}
 				})
 			},

+ 7 - 1
pages.json

@@ -120,7 +120,13 @@
 				{
 					"path": "save-order",
 					"style": {
-						"navigationBarTitleText": "提交订单"
+						"navigationBarTitleText": "团购提交订单"
+					}
+				},
+				{
+					"path": "save-ticket",
+					"style": {
+						"navigationBarTitleText": "票务提交订单"
 					}
 				},
 				{

+ 17 - 5
pages/me/index.vue

@@ -2,10 +2,10 @@
 	<view class="my-box flex-common-css">
 		<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">
+		<view class="user-box align-items-center" @click="goToUrl(0)">
 			<view class="user-img-box mr-24">
 				<image class="user-img" src="@/static/img/my/user-img.png" mode=""></image>
-				<image @click="goToUrl(0)" 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">
 				{{ name }}
@@ -144,17 +144,29 @@
 </template>
 
 <script>
+	import {userInfo} from '@/api/member.js'
+	
 	export default {
 		components: {},
 		data() {
 			return {
-				name: '仰看辉煌煌煌煌煌1111煌...仰看辉煌煌煌煌煌1111煌...仰看辉煌煌煌煌煌1111煌...',
+				name: '请先登录',
 				newsNum: 24
 			};
 		},
-		onLoad(data) {},
-		mounted() {},
+		onShow() {
+			let token = uni.getStorageSync('token');
+		},
+		
 		methods: {
+			getUserInfo(){
+				userInfo().then((res)=>{
+					if(res.code === 1){
+						
+					}
+				})
+			},
+			
 			scrolltolower() {
 				console.log('触底');
 			},