chenkainan 1 year ago
parent
commit
eac44066f0
  1. 2
      compoents/addressAdd.vue
  2. 6
      pages.json
  3. 10
      store/modules/user.js
  4. 32
      subPackages/food/foodDetail.vue
  5. 239
      subPackages/food/foodOrder.vue
  6. 2
      subPackages/hotelHomestay/hotelHomestay.vue
  7. 424
      subPackages/order/orderCoupon.vue
  8. 2
      subPackages/techan/detail.vue
  9. 225
      subPackages/techan/order.vue
  10. 51
      subPackages/techan/selfPickUpPoint.vue
  11. 204
      subPackages/ticketBooking/detail.vue
  12. 252
      subPackages/ticketBooking/order.vue
  13. 4
      subPackages/ticketBooking/ticketBooking.vue

2
compoents/addressAdd.vue

@ -304,7 +304,7 @@
})
}
return res
return {...res,data: {id: this.id}}
}
}
}

6
pages.json

@ -74,6 +74,12 @@
"navigationBarTitleText": "选择自提点"
}
},
{
"path": "order/orderCoupon",
"style": {
"navigationBarTitleText": "选择优惠券"
}
},
{
"path": "line/lineList",
"style": {

10
store/modules/user.js

@ -5,7 +5,9 @@ export default {
token: ""
}, //保存用户登录信息,
toPath: "", //要跳转过去的页面,
foodInfo:"", //美食套餐信息
},
coupon: "",//下单选择优惠券
// 类似 vue 里的 mothods(同步方法)
mutations: {
//改变用户信息,自动保存到本地的COOKIE
@ -23,5 +25,13 @@ export default {
url: '/pages/login/login'
})
},
// 线路下单
changeFoodInfo(state, data){
state.foodInfo = data
},
// 选择优惠券
choseCoupon(state, data) {
state.coupon = data
},
}
}

32
subPackages/food/foodDetail.vue

@ -30,7 +30,7 @@
{{info.title}}
</view>
<view class="collect">
<image :src="showImg('/uploads/20240827/8a55a8936b9324fa1c7b85c2da9c015b.png')" mode="" v-if="info.is_collect == 0" @click="collect"></image>
<image :src="showImg('/uploads/20240827/8a55a8936b9324fa1c7b85c2da9c015b.png')" mode="" v-if="isCollect == 0" @click="collect"></image>
<image v-else :src="showImg('/uploads/20240827/6bf73216f19c756961496031f8aed053.png')" mode="" @click="collect"></image>
<view style="padding-top: 3rpx;">收藏</view>
</view>
@ -55,26 +55,26 @@
</view>
</view>
<view class="box-title">美食下单</view>
<view class="item" v-for="item in sku" :key="item.goods_id">
<image class="img" :src="showImg(item.image)" mode=""></image>
<view class="item" v-for="skuItem in sku" :key="skuItem.id" @click="taocanDetail(skuItem)">
<image class="img" :src="showImg(skuItem.image)" mode=""></image>
<view class="content">
<view class="content-top flex-between">
<view class="center">
<view class="item-title text-overflowRows">
{{item.title}}
{{skuItem.title}}
</view>
<image class="right" :src="showImg('/uploads/20240827/0e777c1006a15612a0d449178472fd13.png')" mode=""></image>
</view>
<view class="price">{{item.price/100}}</view>
<view class="price">{{skuItem.price/100}}</view>
</view>
<view class="content-bottom flex-between">
<view class="tags">
<view class="tag" v-for="tag in item.specifications_new_tag.split(',').slice(0,3)">
<view class="tag" v-for="tag in skuItem.specifications_new_tag.split(',').slice(0,3)">
{{tag}}
<text class="shu">|</text>
</view>
</view>
<view class="order" @click="order(item)">购买</view>
<view class="order" @click.stop="order(skuItem)">购买</view>
</view>
</view>
@ -96,6 +96,9 @@
isCollect: 0,
};
},
onShow() {
this.$store.commit('changeFoodInfo', null);
},
onLoad(option) {
this.id = option.id;
this.getDetail();
@ -107,6 +110,7 @@
goods_id: this.id
},'/api/goods/getGoodDetail').then(res => {
res.data.goods_new_tag = (res.data.goods_new_tag ? res.data.goods_new_tag.split(',') : []).splice(0, 2);
this.isCollect = res.data.is_collect
this.info = res.data
})
},
@ -124,7 +128,7 @@
//
collect() {
this.Post({
type: 16,
type: 3,
id: this.id
},
'/api/scenic/collect'
@ -141,10 +145,16 @@
});
},
order(item) {
uni.setStorageSync('order', JSON.stringify(item)); //
uni.setStorageSync('info', JSON.stringify(this.info)); //
// uni.setStorageSync('order', JSON.stringify(item)); //
// uni.setStorageSync('info', JSON.stringify(this.info)); //
this.$store.commit('changeFoodInfo', item);
uni.navigateTo({
url: '/subPackages/food/foodOrder'
});
},
taocanDetail() {
uni.navigateTo({
url: '/subPackages/oneplus/oneplusOrder'
url: '/subPackages/food/taocanDetail'
});
},
},

239
subPackages/food/foodOrder.vue

@ -2,51 +2,64 @@
<view class="bg">
<view class="box">
<view class="info">
<image class="img" src="" mode=""></image>
<image class="img" :src="showImg(info.image)" mode=""></image>
<view class="main">
<view class="title text-overflowRows">
名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称名称
{{info.title}}
</view>
<view class="main-bottom">
<view class="price">
9.9
{{info.money/100}}
</view>
<view class="num-box">
<view class="del">-</view>
<view class="num">1</view>
<view class="add">+</view>
<view class="del" @click="reduce">-</view>
<view class="num">{{num}}</view>
<view class="add" @click="plus">+</view>
</view>
</view>
</view>
</view>
<view class="msg-box">
<view class="left-text">
优惠券
</view>
<view class="coupon" v-if="!coupon">
暂无可用优惠券
<image class="rightIcon" :src="showImg('/uploads/20240827/96dee582e7ce3b8293e659bb1dc87433.png')" mode=""></image>
</view>
</view>
<!-- 优惠券 -->
<navigator :url="'/subPackages/order/OrderCoupon?allprice='+ allprice*100 + '&sku_ids='+ info.id" class="tickets-box flex-between msg-box">
<div class="order-title">优惠券</div>
<div class="coupon-btn" v-if="coupon==''">
请选择
</div>
<div class="coupon-price" v-else>
<span v-if="coupon.percent == 0">-{{coupon.discounts/100}}</span>
<span v-else>-{{coupon.percent}}%</span>
<span style="margin:0 31rpx 0 8rpx;color: #6C7A94;">></span>
</div>
</navigator>
<view class="name-box">
<view class="left-text">
联系人
</view>
<input type="text" placeholder="输入您的名字" />
<input type="text" placeholder="输入您的名字" v-model="reserve_name" />
</view>
<view class="phone-box">
<view class="" style="display: flex;">
<view class="left-text">
手机号
</view>
<input type="number" />
<input type="number" v-model="reserve_phone" maxlength="11" />
</view>
<image class="cha" :src="showImg('/uploads/20240827/5e5970926e92a2109da55bfe32a47e4b.png')" mode=""></image>
<image class="cha" @click="cha" v-if="reserve_phone!= ''" :src="showImg('/uploads/20240827/5e5970926e92a2109da55bfe32a47e4b.png')" mode=""></image>
</view>
</view>
<view class="bottom">
<view class="center">
<view class="totalText">
合计
</view>
<view class="totalPrice">
{{ allprice }}
</view>
</view>
<view class="order" @click="order">
去支付
</view>
</view>
</view>
</template>
@ -55,11 +68,131 @@
export default {
data() {
return {
coupon:null,
coupon:"",
reserve_name: '',
reserve_phone: '',
info:null,
detail:null,//
allprice: 0,
num:0,
}
},
onShow() {
this.coupon = this.$store.state.user.coupon
console.log('传过来的优惠券',this.coupon);
this.total()
},
onLoad(option) {
this.$store.commit("choseCoupon", "");
this.info = this.$store.state.user.foodInfo
// this.info = JSON.parse(uni.getStorageSync('order'))
// this.detail = JSON.parse(uni.getStorageSync('detail'));
this.num = this.info.buyNum?this.info.buyNum:1
if (!this.info) {
uni.navigateBack();
}
console.log(this.info);
this.total()
},
methods: {
cha() {
this.reserve_phone = ''
},
order() {
if (!this.reserve_name) {
uni.showToast({
title: '请输入姓名',
icon: 'none'
});
return;
}
if (!this.reserve_phone) {
uni.showToast({
title: '请输入电话',
icon: 'none'
});
return;
}
let goods = [];
let goodsItem = {
specifications_id: this.info.id,
num: this.num,
};
goods.push(goodsItem);
let data = {
goods: goods,
coupon: this.coupon ? this.coupon.id : null,
is_post: this.info.is_post,
reserve_name: this.reserve_name,
reserve_phone: this.reserve_phone
};
this.Post(
{
method: 'POST',
data: JSON.stringify(data)
},
'/api/order/place'
).then(res => {
if (res.code == 200) {
this.Post(
{
order_id: res.data.order_id,
type: 'miniprogram',
platform: 'miniprogram'
},
'/api/pay/unify'
).then(res => {
if (res.data) {
uni.requestPayment({
nonceStr: res.data.nonceStr,
package: res.data.package,
paySign: res.data.paySign,
signType: res.data.signType,
timeStamp: res.data.timeStamp,
complete() {
uni.navigateTo({
url: '/subPackages/order/trades'
});
}
});
}
});
}
});
},
plus() {
this.num = Number(this.num);
this.coupon = ''
this.$nextTick(() => {
this.num += 1;
this.total()
});
},
reduce() {
this.num = Number(this.num);
this.coupon = ''
if (this.num > 1) {
this.$nextTick(() => {
this.num -= 1;
this.total()
});
}
},
//
total() {
let price = 0
if (this.coupon) {
if (this.coupon.percent == 0) {
price = this.info.money * this.num - this.coupon.discounts
} else{
price = this.info.money * this.num - ((this.info.money * this.num + this.post) * this.coupon.percent)
}
} else{
price = this.info.money * this.num
}
price < 0 ? 0 : price
this.allprice = price / 100
},
}
}
</script>
@ -88,6 +221,8 @@
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: space-between;
}
.img {
@ -176,6 +311,7 @@
border-bottom: 1rpx solid #CCC;
display: flex;
justify-content: space-between;
align-items: center;
}
.name-box {
@ -220,5 +356,66 @@
margin-left: 20rpx;
}
.totalText {
margin-right: 20rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 29rpx;
color: #333333;
}
.totalPrice {
font-family: PingFang SC;
font-weight: 500;
font-size: 36rpx;
color: #F84A56;
}
.order {
width: 267rpx;
height: 87rpx;
background: #F84A56;
border-radius: 43rpx;
font-family: PingFang;
font-weight: bold;
font-size: 36rpx;
color: #FFFFFF;
text-align: center;
line-height: 87rpx;
}
.center {
display: flex;
align-items: center;
}
.coupon-btn {
width: 140rpx;
height: 57rpx;
border: 1px solid #333333;
border-radius: 29rpx;
font-size: 28rpx;
font-family: PingFangSC;
font-weight: 400;
color: #000000;
text-align: center;
line-height: 57rpx;
.select {
padding: 10rpx 18rpx;
background: #ED9230;
border-radius: 10rpx;
font-size: 28rpx;
font-weight: 400;
color: #fff;
}
}
.coupon-price {
color:#DD0000;
font-size: 30rpx;
font-weight: 500;
}
</style>

2
subPackages/hotelHomestay/hotelHomestay.vue

@ -121,7 +121,7 @@
//
like(item){
this.Post({
type: 2,
type: 4,
id: item.id
}, 'https://yjdtadmin.sz-trip.com/api/scenic/collect').then(res => {
if (res.code == 200) {

424
subPackages/order/orderCoupon.vue

@ -0,0 +1,424 @@
<template>
<view class="bg">
<!-- 列表 -->
<view class="coupon-list" v-if="list.length>0">
<view class="coupon-item" v-for="(item, index) in list" :key="index">
<!-- 分割线上部分 -->
<view class="item-top">
<view class="top-left">
<view class="price" v-if="item.type == 1">
<span>{{item.discounts/100}}</span>
</view>
<view class="price" v-else>
<span>{{getPecenet(item.percent)}}</span>
</view>
<view class="subtitle">
{{item.min_limit/100}}元可用
</view>
</view>
<view class="top-right">
<view class="title">
{{item.title}}
</view>
<view class="time">
{{item.open_time.slice(0,10)}}-{{item.end_time.slice(0,10)}}可用
</view>
</view>
<image class="selected" v-if="item.selected" @click="selectCoupon(item,index)" src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230418/c588002859433c217602260b0228b977.png" mode=""></image>
<view v-else class="yuan" @click="selectCoupon(item,index)"></view>
</view>
<!-- 分割线 -->
<view class="item-circle">
<view class="circle left"></view>
<view class="line"></view>
<view class="circle right"></view>
</view>
<!-- 分割线下部分 -->
<view class="item-bottom">
<view class="rules" @click="changeRules(item,index)">
<span v-if="!item.openRules">使用规则{{item.content}}</span>
<view class="open" v-else>使用规则{{item.content}}</view>
<image v-if="!item.openRules" src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230415/6a7630c176f976bb16674dde482779fb.png" mode=""></image>
<image v-else src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230415/f0073b18b3ab88cac62de60411360fc1.png" mode=""></image>
</view>
</view>
</view>
</view>
<view v-else class="noCoupon">
<img src="https://static.ticket.sz-trip.com/dongtai/images/user/noCoupon.png" class="no-couPon">
<view>暂无优惠券</view>
</view>
<view class="bottom-btn" v-if="list.length>0">
<view class="left" v-if="item.percent == 0">
优惠
<span style="font-size: 24rpx;color:#FC5109;margin-left: 19.33rpx;"></span>
<span style="font-size: 48rpx;color:#FC5109;font-weight: bold;">{{reducePrice}}</span>
</view>
<view class="left" v-else>
优惠
<span style="font-size: 48rpx;color:#FC5109;font-weight: bold;">{{reducePrice}}</span>
</view>
<!-- <view class="sure" @click="setCoupon(reducePrice*100)"> -->
<view class="sure" @click="setCoupon(coupon)">
确定
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
openRules: false,
list:[],
couponSel:false,
allPrice:0,
sku_ids:'',
reducePrice: 0,
coupon:{},
needDefault:false
}
},
onShow() {
this.getList();
},
onLoad(options) {
this.allPrice = (options.allprice) /100
this.sku_ids = options.sku_ids
this.needDefault = options.needDefault
console.log('11111',options);
},
methods: {
getPecenet:function (percent) {
if(percent>=100 || percent<=0) return "";
percent = 100 - percent;
if(percent%10==0){
percent = percent/10;
}
return percent
},
//
selectCoupon(item,index) {
let list = this.list
list.forEach((Item, Index) => {
if (Index === index) {
Item.selected = !Item.selected
} else {
Item.selected = false
}
})
this.list = list
console.log('选中的',this.list[index].selected);
if(this.list[index].selected) {
if (item.type == 1) {
this.reducePrice = this.list[index].discounts/100+'元'
this.coupon = item
} else{
this.coupon = item
this.reducePrice = this.getPecenet(item.percent)+'折'
}
}else {
this.reducePrice = 0
this.coupon = {}
}
this.$forceUpdate()
},
// 使
changeRules(item,index){
let coupons = this.list
coupons.forEach((Item, Index) => {
if (Index === index) {
Item.openRules = !Item.openRules
} else {
Item.openRules = false
}
})
this.list = coupons
this.$forceUpdate()
},
//
showNoPriceNew(price) {
if (price && price > 0) {
return (price / 100)
} else {
return '0'
}
},
getList:function () {
this.Post({
money:this.allPrice,
sku_ids:this.sku_ids
}, "/api/coupon/use_coupon_list").then((res) => {
this.list = res.data
this.list.forEach(item => {
item.selected = false
})
if (this.needDefault) {
this.calMaxCost()
}
})
},
setCoupon(item) {
if (item.id) {
console.log('选择的优惠券',item);
this.$store.commit("choseCoupon",item);
} else{
this.$store.commit("choseCoupon","");
}
uni.navigateBack({
delta: 1
})
},
//
calMaxCost () {
let maxCost = {}
let maxCostPrice = 0
let index = -1
this.list.forEach((item,i)=>{
let reducePrice = 0
if (item.type == 1) {
reducePrice = item.discounts/100
} else{
reducePrice = this.allPrice * (100-item.percent)/100
}
if (reducePrice > maxCostPrice) {
maxCostPrice = reducePrice
maxCost = item
index = i
}
})
if (maxCost.id) {
this.selectCoupon(maxCost, index)
}
}
}
}
</script>
<style scoped>
.bg {
background: #F7F7F7;
min-height: 100vh;
}
.coupon-list .coupon-item .item-circle {
line-height: 1rpx;
height: 1rpx;
width: 652rpx;
}
.coupon-list .coupon-item .item-circle .line {
border-bottom: 1px dashed #ccc;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: .1rpx;
margin: auto;
z-index: 9;
}
.coupon-list .coupon-item .item-circle .circle {
position: absolute;
top: 0;
bottom: 0;
margin: auto;
border-radius: 50%;
background: #ccc;
width: .46rpx;
height: .46rpx;
z-index: 10;
}
.coupon-list .coupon-item .item-circle .circle.left{
left:-.23rpx;
}
.coupon-list .coupon-item .item-circle .circle.right{
right: -.23rpx;
}
.item-bottom {
padding: 16rpx 20rpx;
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.item-bottom .rules {
font-size: 24rpx;
font-weight: 500;
color: #999;
display: flex;
line-height: 47rpx;
}
.item-bottom .rules span {
width: 570rpx;
overflow: hidden; //
white-space: nowrap; //
text-overflow: ellipsis;
}
.item-bottom .rules image {
width: 20rpx;
height: 20rpx;
margin-left: 20rpx;
margin-top: 15rpx;
}
.open {
width: 570rpx;
min-height: 30rpx;
flex-wrap: wrap;
}
.coupon-item {
margin: 20.67rpx 26.67rpx;
background: #fff;
}
.coupon-list .coupon-item .item-top {
display: flex;
justify-content: space-between;
align-items: center;
padding: 30rpx 16rpx 24rpx 36rpx;
}
.coupon-item .item-top .price {
font-size: 25rpx;
font-weight: bold;
color: #FC5209;
display: flex;
align-items: baseline;
justify-content: center;
}
.coupon-item .item-top .price span {
font-size: 67rpx;
margin-right: 6.67rpx;
}
.top-left .subtitle {
width: 100%;
font-size: 24rpx;
color: #FC5209;
padding-left: 6rpx;
overflow: hidden;
white-space: nowrap;
}
.top-right {
width: 336rpx;
margin-left: 46.67rpx;
font-size: 25rpx;
font-weight: 500;
color: #111;
}
.top-right .title {
margin-bottom: 26rpx;
font-size: 31rpx;
font-weight: bold;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.item-bottom {
padding: 16rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.item-bottom .use {
width: 133rpx;
height: 47rpx;
border: 1px solid #FC5209;
border-radius: 23rpx;
text-align: center;
font-size: 25rpx;
font-weight: 500;
color: #fc5209;
line-height: 47rpx;
}
.coupon-list{
background: #F7F7F7;
min-height: 100vh;
padding: 20rpx 20rpx 160rpx;
}
.coupon-list .coupon-item {
background: #ffffff;
border-radius: 13rpx;
}
.yuan {
width: 37rpx;
height: 37rpx;
border: 1px solid #FC5209;
border-radius: 20rpx;
margin-right: 16rpx;
}
.selected {
width: 40rpx;
height: 40rpx;
margin-right: 16rpx;
}
.bottom-btn {
/* width: 100%; */
position: fixed;
left: 0;
right: 0;
bottom: 0;
padding: 22rpx 50rpx 64rpx 50.67rpx;
background: #fff;
display: flex;
justify-content: space-between;
align-items: center;
}
.bottom-btn .left {
font-size: 28rpx;
font-weight: 500;
color: #393B3E;
}
.sure {
width: 250rpx;
height: 80rpx;
background: linear-gradient(270deg, #FC6712, #FD9526);
color: #fff;
font-size: 32rpx;
font-weight: bold;
text-align: center;
line-height: 80rpx;
border-radius: 50rpx;
}
.top-left {
width: 136rpx;
}
.top-left .price {
width: 100%;
overflow: hidden;
white-space: nowrap;
}
.noCoupon{
padding-top: 524rpx;
text-align: center;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
.no-couPon{
width: 173rpx;
height: 173rpx;
margin-bottom: 15rpx;
}
</style>

2
subPackages/techan/detail.vue

@ -189,7 +189,7 @@
//
collect() {
this.Post({
type: 3,
type: 5,
id: this.id
},
'/api/scenic/collect'

225
subPackages/techan/order.vue

@ -2,13 +2,13 @@
<!-- 解决滚动穿透 -->
<page-meta :page-style="'overflow:'+(popShow?'hidden':'visible')"></page-meta>
<view class="bg" v-if="info">
<view class="sendwayArea">
<view class="sendwayArea" :style="{'width': isPost==3?'340rpx':'100rpx'}" v-if="isPost>=1&&isPost<=3">
<view v-if="isPost==1||isPost==3" :class="['sendway-item',sendType==1?'active':'']"
@click="sendType=1" style="left: -2rpx;">邮寄配送</view>
<!-- <view v-if="isPost==2||isPost==3" :class="['sendway-item',sendType==2?'active':'']"
@click="sendType=2" style="right: -2rpx;">到店自提</view> -->
<view :class="['sendway-item',sendType==2?'active':'']"
<view v-if="isPost==2||isPost==3" :class="['sendway-item',sendType==2?'active':'']"
@click="sendType=2" style="right: -2rpx;">到店自提</view>
<!-- <view :class="['sendway-item',sendType==2?'active':'']"
@click="sendType=2" style="right: -2rpx;">到店自提</view> -->
</view>
<!-- 邮寄 -->
@ -16,8 +16,9 @@
<view class="a-title">
<view>收货地址</view>
<view>
<image class="more-person" :src="showImg('/uploads/20240827/3420c39b08aef4b24b5c2ef624cc707d.png')"
v-if="addressList.length>0" @click="changeAddressPopup('open', '', null)"></image>
<view class="more-person flex-center" v-if="addressList.length>0" @click="changeAddressPopup('open', '', null)">
更多<uni-icons style="width: 14rpx;" type="right" size="14"></uni-icons>
</view>
</view>
</view>
@ -30,16 +31,17 @@
</view>
<view class="adds text-overflowRows">{{ contacts.province_text + contacts.city_text + contacts.district_text + contacts.detail_addr }}</view>
</view>
<image @click="changeAddressPopup('open', '', null)" src="https://yjks.oss-cn-shanghai.aliyuncs.com/uploads/20230105/327cfda2cc308fc01e34f40498dbe9b6.png" mode="aspectFill"></image>
<image @click="changeAddressAddPopup('open', '', contacts)" :src="showImg('/uploads/20240827/337cf610ce5924c2a65b7a28b6a4891e.png')" mode="aspectFill"></image>
</view>
<view v-else class="a-img flex-center" @click.stop="changeAddressAddPopup('open','',{})">
<uni-icons style="width: 32rpx;" type="plusempty" size="14"></uni-icons>
</view>
<image v-else class="a-img" :src="showImg('/uploads/20240827/824efc9036387b3d7d4737254d6568d6.png')"
mode="aspectFill" @click.self="changeAddressAddPopup('open','',{})"></image>
</view>
</view>
<!-- 自提 -->
<!-- <view v-if="(info.is_post==2||info.is_post==3)&&sendType==2"> -->
<view v-if="sendType==2">
<view v-if="(info.is_post==2||info.is_post==3)&&sendType==2">
<!-- <view v-if="sendType==2"> -->
<view class="pickself" >
<navigator :url="`/subPackages/techan/selfPickUpPoint?pickupId=${pickupAddress.id}&goodsId=${info.goods_id}`">
<view class="pickpoint">
@ -115,11 +117,12 @@
</view>
</view>
<!-- 优惠券 -->
<navigator :url="'/subPackages/order/OrderCoupon?allprice='+ allprice + '&sku_ids='+ info.id" class="tickets-box flex-between top-line">
<div class="order-title">优惠券</div>
<div class="coupon-btn" v-if="coupon==''">
<span class="select">请选择</span>
</div>
<navigator :url="'/subPackages/order/orderCoupon?needDefault=1&allprice='+ allprice + '&sku_ids='+ info.id" class="tickets-box flex-between top-line">
<view class="order-title">优惠券</view>
<view class="coupon-btn" v-if="coupon==''">
<view class="select">请选择</view>
<uni-icons style="height: 42rpx;" color="#999999" type="right" size="18"></uni-icons>
</view>
<div class="coupon-price" v-else>
<span v-if="coupon.percent == 0">-{{coupon.discounts/100}}</span>
<span v-else>-{{coupon.percent}}%</span>
@ -156,19 +159,19 @@
<!-- <navigator url="/subPackages/user/myAddressAdd" class="button">添加收货地址</navigator> -->
<view class="button" @click="changeAddressAddPopup('open','',{})">添加收货地址</view>
<view class="popup-list" v-if="addressList.length > 0">
<view class="popup-item" v-for="(item, index) in addressList" :key="index" @click="seldThisAddress(item)">
<view :class="['popup-item',contacts.id==item.id?'active':'']" v-for="(item, index) in addressList" :key="index" @click="seldThisAddress(item)">
<view class="item-top flex-between">
<view>
<view style="padding-right: 71rpx;">
<view class="name flex-start">
{{ item.name }}
<text>{{ item.tel }}</text>
<text class="tag" v-if="item.is_default == 1">默认</text>
</view>
<view class="subtitle">{{ item.address }}</view>
<view class="subtitle text-overflowRows">{{ item.province_text + item.city_text + item.district_text + item.detail_addr }}</view>
</view>
<view>
<img @click.stop="changeAddressAddPopup('open', '', item)" :src="showImg('/uploads/20240827/337cf610ce5924c2a65b7a28b6a4891e.png')" alt="" />
</view>
<navigator :url="`/subPackages/user/myAddressAdd?id=${item.id}`">
<img src="https://static.ticket.sz-trip.com/taizhou/images/detail/edit.png" alt="" />
</navigator>
</view>
</view>
</view>
@ -200,7 +203,6 @@
</template>
<script>
import District from 'ydui-district/dist/jd_province_city_area_id';
import addressAddVue from '../../compoents/addressAdd.vue';
export default {
components: {addressAddVue},
@ -339,6 +341,7 @@ export default {
getAllAddressList() {
this.Post({}, '/api/user/consigneeList').then(res => {
let oldId = (this.contacts || {}).id
console.log(this.contacts)
if (res.code === 1) this.addressList = res.data || [];
if (this.addressList.some(v=>v.id==oldId)) {
this.contacts = this.addressList.find(v=>v.id==oldId)
@ -355,7 +358,7 @@ export default {
//
seldThisAddress(item) {
if (!this.contacts) this.contacts = {};
Object.assign(this.contacts, item);
this.contacts = item
console.log(this.flag,1111111);
if (this.flag) {
this.getPost();
@ -542,7 +545,7 @@ view {
.box {
width: 100%;
min-height: 100rpx;
padding: 28rpx 20rpx;
padding: 20rpx;
background: #ffffff;
border-radius: 16rpx;
}
@ -564,8 +567,15 @@ view {
display: flex;
width: 100%;
.more-person{
width: 140rpx;
height: 58rpx;
width: 133rpx;
height: 60rpx;
border-radius: 30rpx;
border: 1px solid #999999;
font-family: PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #000000;
line-height: 16rpx;
}
}
.btn-box{
@ -575,8 +585,14 @@ view {
border-top:1rpx solid rgba(216, 216, 216, 1) ;
height: 176rpx;
.a-img{
width: 220rpx;
height: 74rpx;
width: 219rpx;
height: 73rpx;
border-radius: 37rpx;
border: 1px solid #333333;
font-family: PingFang SC;
font-weight: 400;
font-size: 29rpx;
color: #000000;
}
}
}
@ -643,10 +659,10 @@ view {
// height: 176rpx;
padding: 0 20rpx;
border-top:1rpx solid rgba(216, 216, 216, 1) ;
.a-img{
width: 220rpx;
height: 74rpx;
}
// .a-img{
// width: 220rpx;
// height: 74rpx;
// }
}
.pickup-person-list{
border-top: 1rpx solid #d8d8d8;
@ -711,62 +727,6 @@ view {
}
}
.pickup-popup.people-popup{
.popup-item .item-top{
padding-top: 55rpx;
padding-bottom: 55rpx;
.name{
font-size: 32rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #222222;
text{
padding-left: 20rpx;
font-size: 25rpx;
color: #000000;
}
}
}
.popup-item.active{
border:1px solid #FEB419;
}
.set-pickup-default{
font-size: 24rpx;
font-weight: 500;
display: flex;
align-items: center;
padding: 22rpx;
border-top: 1px dashed #CACACA;
}
.yuan {
width: 40rpx;
height: 40rpx;
background: rgba(255, 200, 37, 0);
border: 1rpx solid #999999;
border-radius: 20rpx;
}
.yuan-img{
width: 40rpx;
height: 40rpx;
}
.select-dot{
width: 22rpx;
height: 22rpx;
border: 1rpx solid #999999;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 10rpx;
.dot{
width: 9rpx;
height: 9rpx;
background: #000;
border-radius: 50%;
}
}
}
.commodity {
display: flex;
@ -898,8 +858,9 @@ view {
display: flex;
align-items: center;
justify-content: space-between;
height: 100%;
image {
width: 31rpx;
width: 36rpx;
height: 36rpx;
}
.contacts-left {
@ -967,7 +928,7 @@ view {
.popup-item {
border-radius: 12rpx;
padding: 0 20rpx;
padding: 2rpx;
margin-top: 24rpx;
font-size: 24rpx;
color: #333333;
@ -975,7 +936,9 @@ view {
background-color: #ffffff;
.item-top {
padding: 32rpx;
border-radius: 12rpx;
padding: 30rpx 40rpx;
background-color: #ffffff;
img {
color: #666666;
@ -984,25 +947,31 @@ view {
}
.name {
font-size: 30rpx;
color: #000000;
overflow: hidden;
font-family: PingFang SC;
font-weight: 400;
font-size: 32rpx;
display: flex;
align-items: baseline;
text {
color: #999999;
color: #666;
font-size: 25rpx;
padding: 0 24rpx;
}
.tag {
width: 70rpx;
padding: 0 8rpx;
height: 32rpx;
background: #FEB419;
border-radius: 7rpx;
line-height: 32rpx;
line-height: 30rpx;
text-align: center;
font-size: 21rpx;
font-size: 23rpx;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
background: #71B580;
}
}
@ -1015,6 +984,8 @@ view {
flex: 1;
text-align: left;
margin-top: 33rpx;
color: #666666;
font-size: 25rpx;
.mobile {
margin-bottom: 36rpx;
@ -1066,18 +1037,25 @@ view {
}
}
}
.popup-item.active{
background-image: linear-gradient(135deg, #9EE4FE, #7FD491);
}
}
.button {
font-size: 30rpx;
font-weight: 400;
color: #000000;
text-align: center;
width: 100%;
height: 80rpx;
line-height: 80rpx;
background-color: #ffffff;
border-radius: 60rpx;
border-radius: 40rpx;
font-family: PingFang SC;
font-weight: 400;
font-size: 33rpx;
color: #000000;
}
}
@ -1179,28 +1157,6 @@ view {
color: #000000;
}
.coupon-btn {
color: #6C7A94;
.select {
display: block;
width: 140rpx;
height: 58rpx;
border: 2rpx solid #333333;
border-radius: 30rpx;
text-align: center;
line-height: 58rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #000000;
margin-right: 20rpx;
}
}
.coupon-price {
color:#DD0000;
font-size: 30rpx;
@ -1246,7 +1202,6 @@ view {
border-radius: 13rpx;
width: fit-content;
background-color: white;
width: 340rpx;
height: 94rpx;
position: relative;
.sendway-item{
@ -1271,4 +1226,22 @@ view {
border-radius: 20rpx;
}
.coupon-btn {
color: #999999;;
display: flex;
align-items: center;
.select {
display: block;
width: 140rpx;
height: 58rpx;
text-align: right;
line-height: 58rpx;
font-size: 31rpx;
font-family: PingFang SC;
font-weight: 400;
margin-right: 20rpx;
}
}
</style>

51
subPackages/techan/selfPickUpPoint.vue

@ -1,20 +1,22 @@
<template>
<view class="bg">
<view :class="['item',selectItem.id==item.id?'active':'']" v-for="(item,index) in list" :key="index" @click="selectPoint(item)">
<view :class="['item-bg',selectItem.id==item.id?'active':'']" v-for="(item,index) in list" :key="index" @click="selectPoint(item)">
<view class="item">
<view class="item-point-title">
<view class="name">{{item.extract_name}}</view>
<view class="name text-overflow flex-shrink-0">{{item.extract_name}}</view>
<view class="addressStr">
<view class="flex-shrink-0">地址</view>
<view class="text-overflow">{{item.detail_addr}}</view>
<!-- <view class="flex-shrink-0"></view> -->
<view class="text-overflowRows">地址{{item.detail_addr}}</view>
</view>
</view>
<view class="item-point-guide" @click.stop="goMap(item)">
<view>
<image :src="showImg('/uploads/20240712/aae304f56ee7fd00b71c4524f56c7033.png')" mode="aspectFill" class="mapPoint"></image>
<image :src="showImg('/uploads/20240828/0c74764788025234dccf52e91ac8e706.png')" mode="aspectFill" class="mapPoint"></image>
</view>
<view>去这里</view>
</view>
</view>
</view>
<view class="no-data" v-if="list.length==0">
<image src="https://static.ticket.sz-trip.com/dongtai/images/user/noAddress.png" mode="aspectFill" class="no-address"></image>
<view class="">
@ -62,8 +64,8 @@
goods_id: this.goodsId,
offset: this.list.length,
limit: 10,
// lon: this.$store.state.user.location.lon || '120.63132',
// lat: this.$store.state.user.location.lat || '31.30227',
lon: uni.getStorageSync('location').lon || '',
lat: uni.getStorageSync('location').lat || '',
}
this.Post(param, "/api/extract/getMerchantExtractListByGoodsIdNew").then(res => {
if (res) {
@ -136,27 +138,37 @@
.flex-shrink-0{
flex-shrink: 0;
}
.item {
.item-bg{
width: 697rpx;
height: 180rpx;
height: 160rpx;
background: #FFFFFF;
border-radius: 13rpx;
margin: 0 auto;
margin-bottom: 28rpx;
padding: 26rpx;
padding: 2rpx;
}
.item {
padding: 24rpx;
padding-right: 0;
display: flex;
background: #FFFFFF;
border-radius: 13rpx;
width: 100%;
height: 100%;
.item-point-title{
flex: 1;
width: 10rpx;
padding-right: 78rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.item-point-guide{
width:140rpx;
flex-shrink: 0;
border-left: 1px solid #D8D8D8;
color: #FEB419;
color: #71B580;
display: flex;
flex-direction: column;
align-items: center;
@ -168,22 +180,15 @@
height: 49rpx;
}
}
.item.active{
border: 1px solid #FEB419;
.item-bg.active{
background-image: linear-gradient(-20deg, #9EE4FE, #7FD491);
}
.name {
display: flex;
font-size: 31rpx;
font-weight: bold;
color: #333333;
height: 85rpx;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
white-space: normal;
height: 42rpx;
}
.addressStr{
display: flex;

204
subPackages/ticketBooking/detail.vue

@ -11,30 +11,41 @@
</view>
<view class="detail-container">
<view class="common-container relative" style="top: -40rpx;">
<view class="common-container info-container">
<view class="flex-between">
<view class="title text-overflowRows">{{info.title}}</view>
<view class="info-title text-overflowRows">{{info.title}}</view>
<view class="collect" @click="collect">
<image :src="showImg('/uploads/20240827/8a55a8936b9324fa1c7b85c2da9c015b.png')" mode="" v-if="info.is_collect == 0"></image>
<image v-else :src="showImg('/uploads/20240827/6bf73216f19c756961496031f8aed053.png')" mode="" ></image>
<view>收藏</view>
</view>
<view>
营业时间 {{info.times_list_info.start}}-{{info.times_list_info.end}}
</view>
<view class="flex-between time-container">
<view class="flex flex-1 flex-shrink-0 flex-items-center">
<image class="address-icon flex-shrink-0" :src="showImg('/uploads/20240827/3d357e6e562de9395f373dc380a790a7.png')" mode=""></image>
<view class="title text-overflowRows">
<text style="margin-right: 28rpx;">营业时间</text>
{{info.times_list_info.start}}-{{info.times_list_info.end}}
</view>
</view>
<view></view>
</view>
<view class="flex-between">
<view class="flex flex-1 flex-shrink-0 flex-items-center">
<img class="address-icon flex-shrink-0" src="https://tongli.sz-trip.com/uploads/20240826/c937c7f6509de9cc2961cb0984d3c526.png">
<image class="address-icon flex-shrink-0" :src="showImg('/uploads/20240827/3d357e6e562de9395f373dc380a790a7.png')" mode=""></image>
<view class="title text-overflowRows">
景区地址 {{info.address}}
<text style="margin-right: 28rpx;">景区地址</text>
{{info.address}}
</view>
</view>
<view>
<img class="address-icon" src="https://tongli.sz-trip.com/uploads/20240826/c937c7f6509de9cc2961cb0984d3c526.png">
<img style="width: 30rpx;height: 30rpx;" :src="showImg('/uploads/20240827/5b19517f2a630f3a766ea03ac621a3be.png')">
</view>
</view>
</view>
<view class="box-title">门票预定</view>
<view class="common-container">
<view>门票预定</view>
<view class="scenic-list" v-for="(item, index) in sku" :key="index">
<view class="list-title text-overflow">{{ item.title }}</view>
<view class="scenic-item com-flex-tao" v-for="(itemSku, indexSku) in item.specifications" :key="indexSku">
@ -55,7 +66,7 @@
</view>
<view class="item-right com-flex-tao flex-shrink-0">
<view class="price">
<view>{{showNoPriceNew(itemSku.price)}}</view>
{{showNoPriceNew(itemSku.price)}}
</view>
<view class="btn" @click="changeSku(itemSku, item)">
预订
@ -65,8 +76,8 @@
</view>
</view>
<view class="box-title">景点简介</view>
<view class="common-container">
<view>景点简介</view>
<view class="" id="cpts" v-html="formateRichText(info.feature_content)"></view>
</view>
</view>
@ -195,8 +206,6 @@
}
this.info = info
console.log(info)
// this.isCollect = this.info.is_collect;
// this.getComment()
});
},
// id
@ -205,18 +214,20 @@
scenic_id: this.id
},'/api/scenic/getGoodsByScenicId').then(res => {
this.sku = res.data || []
// res.data.forEach(item => {
// if(item.specifications){
// item.specifications.forEach(items => {
// this.sku.push(items)
// })
// }
// })
//
// this.sku = this.maopao(this.sku,'sort');
})
},
// 2
collect() {
this.Post({type: 2,id: this.id},'/api/scenic/collect').then(res => {
if (res) {
uni.showToast({title: res.msg,icon: 'none'});
this.info.is_collect = !this.info.is_collect
}
});
},
showSkuInfo (itemSku,goods) {
this.skuInfo = itemSku
this.selectGoods = goods
@ -268,7 +279,6 @@
this.Post({
specifications_id: this.skuInfo.id,
date: date,
token:'2dd9b712-f118-41f6-b3a8-602e4fbb0ce3',
}, '/api/goods/getTimeStock').then(res => {
if (res.data.length > 0) {
this.timesArr = res.data || []
@ -300,10 +310,10 @@
addBuyCard() {
let that = this;
//
// if(that.skuInfo.is_time_stock && that.seldTimeIndex < 0) {
// uni.showToast({title:''})
// return;
// }
if(that.skuInfo.is_time_stock && that.seldTimeIndex < 0) {
uni.showToast({title:'请选择分时',icon:'none'})
return;
}
this.selectGoods.specifications.forEach(v=>{v.buyNum = 0;v.selPeople = []})
@ -461,137 +471,129 @@
width: 100%;
z-index: 2;
padding: 26rpx;
position: relative;
top: -52rpx;
}
.common-container{
background: white;
border-radius: 20rpx;
margin-bottom: 30rpx;
padding: 22rpx 26rpx;
}
.address-icon{
width: 21rpx;
height: 25rpx;
margin-right: 9rpx;
.info-container{
font-family: PingFang;
font-weight: 500;
font-size: 27rpx;
color: #000000;
.time-container{
padding: 22rpx 0;
}
.scenic-list {
/* background: #ffffff; */
margin-bottom: 36rpx;
.info-title{
width: 550rpx;
font-family: PingFang SC;
font-size: 31rpx;
height: 80rpx;
}
.collect{
font-size: 23rpx;
image{
width: 48rpx;
height: 48rpx;
}
}
}
.scenic-list .list-title {
font-size: 46rpx;
color: #000000;
.box-title {
margin: 52rpx 0 26rpx 12rpx;
font-family: PingFang;
font-weight: bold;
padding: 40rpx 28rpx;
font-size: 37rpx;
color: #000000;
}
.address-icon{
margin-right: 9rpx;
width: 26rpx;
height: 26rpx;
}
.scenic-list .scenic-item {
.scenic-list{
.list-title {
padding-bottom: 20rpx;
}
.scenic-item {
/* border-top: 1px solid #d9d9d9; */
padding: 40rpx;
padding: 20rpx;
text-align: left;
background: rgba(11, 137, 142, .06);
border-radius: 20rpx;
margin-bottom: 27rpx;
margin-bottom: 20rpx;
display: flex;
}
.scenic-list .scenic-item .title {
font-size: 44rpx;
.title {
font-weight: bold;
color: #333333;
width: 100%;
}
.scenic-list .scenic-item .tags-box {
margin: 29rpx 0;
.tags-box {
overflow: hidden;
}
.scenic-list .scenic-item .tags-box .tags {
.tags {
display: flex;
flex-wrap: nowrap;
flex: 1;
}
.scenic-list .scenic-item .tags-box .tags view {
/* padding: 0 0.2rem; */
font-weight: 400;
font-size: 34rpx;
color: #666666;
line-height: 24rpx;
/* line-height: 0.57rem; */
/* border: 1px solid #0b898e;
border-radius: 0.23rem;
margin-right: 0.1rem; */
}
.scenic-list .scenic-item .tags-box .tags view::after {
.tags view::after {
content: '丨'
}
.scenic-list .scenic-item .tags-box .tags view:last-of-type:after {
.tags view:last-of-type:after {
display: none;
}
.scenic-list .scenic-item .item-right {
width: 140rpx;
}
.scenic-list .scenic-item .item-right .price {
.item-right {
width: 100rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.price {
font-size: 30rpx;
font-weight: 400;
color: #8d8d8d;
}
.scenic-list .scenic-item .item-right .price view {
font-size: 50rpx;
font-weight: 500;
color: #d62828;
}
.scenic-list .scenic-item .item-right .price view:before {
.price::before {
display: inline-block;
content: "¥";
font-size: 36rpx;
font-size: 24rpx;
font-weight: 400;
color: #d62828;
}
.scenic-list .scenic-item .item-right .btn {
width: 140rpx;
height: 120rpx;
.btn {
width: 100rpx;
height: 60rpx;
background: #0B898E;
border-radius: 20rpx;
text-align: center;
line-height: 120rpx;
line-height: 58rpx;
font-weight: 500;
font-size: 46rpx;
color: #FFFFFF;
margin-left: 25rpx;
}
}
}
.scenic-list .scenic-item .bottom .notice {
.bottom {
.notice {
font-weight: 400;
font-size: 34rpx;
color: #0B898E;
}
.scenic-list .scenic-item .bottom .buy {
font-size:44rpx;
font-weight: 500;
text-align: center;
color: #ffffff;
width: 264rpx;
height: 98rpx;
line-height: 98rpx;
background: #d62828;
border-radius: 44rpx;
}
.scenic-list .scenic-item .bottom .buy.disabled {
background-color: #d7d7d7;
color: #ffffff;
}
.popup-content-date {

252
subPackages/ticketBooking/order.vue

@ -30,14 +30,45 @@
<view class="people-box" >
<view class="people-box-sku" v-for="(skuItem,skuIndex) in pInfo.specifications.filter(v=>v.buyNum>=1)" :key="skuIndex">
<view>{{skuItem.title}}</view>
<view v-for="(person,personIndex) in skuItem.selPeople" :key="personIndex">
<view v-for="(person,personIndex) in skuItem.selPeople" :key="personIndex" @click="person.id=1;showAddressPopUp(person)">
<view v-if="person.id">123</view>
<view v-else>点击添加出行人信息</view>
</view>
</view>
</view>
<!-- 选择出行人 -->
<uni-popup ref="addressPopup" type="bottom" backgroundColor="#F4F4F4" >
<view class="people-popup">
<view class="top flex-between" style="padding-bottom: 14rpx;">
<text></text>
<!-- <text class="text-overflow" @click="changeAddressAddPopup('close')">取消</text> -->
<!-- <text style="font-size: 35rpx;font-weight: 600;">添加收货地址</text> -->
<text style="color: #71B580;" class="confirm" @click="changeAddressPopup('close',true)">保存</text>
</view>
<view class="button">添加出行人</view>
<view class="popup-list" v-if="addressList.length > 0">
<view :class="['popup-item',addressSelect.id==item.id?'active':'']" v-for="(item, index) in addressList" :key="index" @click="seldThisAddress(item)">
<view class="item-top flex-between">
<view style="padding-right: 71rpx;">
<view class="name flex-start">
{{ item.name }}
<text>{{ item.tel }}</text>
<!-- <text class="tag" v-if="item.is_default == 1">默认</text> -->
</view>
<view class="subtitle text-overflowRows">身份证 {{ item.id_number}}</view>
</view>
<view>
<img :src="showImg('/uploads/20240827/337cf610ce5924c2a65b7a28b6a4891e.png')" alt="" />
</view>
</view>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
@ -58,7 +89,12 @@
timesArr: [],
seldTimeIndex: 0,
buyNum: 0
buyNum: 0,
addressList: [],
currentPerson: {},
addressSelect: {},
}
},
onLoad(options) {
@ -68,6 +104,7 @@
},
onShow() {
this.getAddressList()
this.handlePageData()
},
@ -91,6 +128,46 @@
}
},
//
showAddressPopUp (person) {
person.id = 1
this.currentPerson = person
if (person.id) {
this.addressSelect = person
} else {
this.addressSelect = {}
}
this.changeAddressPopup('open')
},
//
getAddressList () {
this.Post({},'/api/user/contactList').then((res)=> {
this.addressList = res.data || []
})
},
//
changeAddressPopup(type, confirm) {
if (confirm) {
//
this.currentPerson.id = this.addressSelect.id
this.currentPerson.id_number = this.addressSelect.id_number
this.currentPerson.tel = this.addressSelect.tel
this.currentPerson.user_id = this.addressSelect.user_id
this.currentPerson.age = this.addressSelect.age
console.log(this.currentPerson, this.pInfo)
}
if (type == 'open') this.$refs.addressPopup.open('bottom');
else this.$refs.addressPopup.close();
this.$forceUpdate();
},
seldThisAddress(item){
this.addressSelect = item
},
handlePageData () {
let data = uni.getStorageSync('tempData');
try{
@ -346,4 +423,173 @@
padding: 20rpx;
}
}
.people-popup {
padding: 26rpx;
min-height: 800rpx;
.top-box {
height: 80rpx;
.top {
position: fixed;
left: 0;
right: 0;
color: #000;
height: 80rpx;
font-size: 0;
overflow: hidden;
padding: 0 26rpx;
text {
text-align: left;
font-size: 31rpx;
font-weight: 400;
color: #000000;
}
.confirm {
font-weight: 400;
color: #000000;
}
}
}
.popup-list {
height: 666rpx;
overflow: scroll;
.popup-item {
border-radius: 12rpx;
padding: 2rpx;
margin-top: 24rpx;
font-size: 24rpx;
color: #333333;
font-weight: 400;
background-color: #ffffff;
.item-top {
border-radius: 12rpx;
padding: 30rpx 40rpx;
background-color: #ffffff;
img {
color: #666666;
width: 40rpx;
height: 40rpx;
}
.name {
overflow: hidden;
font-family: PingFang SC;
font-weight: 400;
font-size: 32rpx;
display: flex;
align-items: baseline;
text {
color: #666;
font-size: 25rpx;
padding: 0 24rpx;
}
.tag {
padding: 0 8rpx;
height: 32rpx;
border-radius: 7rpx;
line-height: 30rpx;
text-align: center;
font-size: 23rpx;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
background: #71B580;
}
}
.com-flex-start {
margin: 0 0 30rpx;
}
.subtitle {
font-weight: 400;
flex: 1;
text-align: left;
margin-top: 33rpx;
color: #666666;
font-size: 25rpx;
.mobile {
margin-bottom: 36rpx;
}
}
.status {
width: 40rpx;
height: 40rpx;
line-height: 40rpx;
border-radius: 50%;
text-align: center;
box-sizing: border-box;
img {
width: 27rpx;
height: 21rpx;
}
}
.statuss {
background: linear-gradient(90deg, #fa2b66, #ff9834);
border: none;
}
.noSelect {
border: 1rpx solid #999999;
}
}
.item-site {
color: #666666;
display: flex;
align-items: center;
padding: 36rpx 0;
view {
width: 23rpx;
height: 23rpx;
margin-right: 10rpx;
border: 1rpx solid #999999;
border-radius: 50%;
view {
width: 8rpx;
height: 8rpx;
background: #000000;
border-radius: 50%;
margin: auto;
}
}
}
}
.popup-item.active{
background-image: linear-gradient(135deg, #9EE4FE, #7FD491);
}
}
.button {
text-align: center;
width: 100%;
height: 80rpx;
line-height: 80rpx;
background-color: #ffffff;
border-radius: 40rpx;
font-family: PingFang SC;
font-weight: 400;
font-size: 33rpx;
color: #000000;
}
}
</style>

4
subPackages/ticketBooking/ticketBooking.vue

@ -23,7 +23,7 @@
</view>
</navigator>
</view>
<view class="finished-text" v-if="finished">没有更多数据了</view>
<!-- <view class="finished-text" v-if="finished">没有更多数据了</view> -->
</view>
</template>
@ -85,7 +85,7 @@
//
getList(){
this.Post({scenic_type_id: this.type_id,offset: this.list.length,limit: 10},
'api/Scenic/getScenicByType').then(res => {
'/api/Scenic/getScenicByType').then(res => {
this.list = [...this.list, ...res.data];
if (res.data.length < 10) {
this.finished = true

Loading…
Cancel
Save