|
|
@ -16,6 +16,7 @@ |
|
|
|
</view> |
|
|
|
|
|
|
|
<view class="detail-container"> |
|
|
|
<!-- 景点信息 --> |
|
|
|
<view class="common-container info-container"> |
|
|
|
<view class="flex-between"> |
|
|
|
<view class="info-title text-overflowRows">{{info.title}}</view> |
|
|
@ -43,9 +44,8 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
<view class="w-full flex" v-if="sku.length>0"> |
|
|
|
<!-- sku --> |
|
|
|
<view class="w-full flex" style="margin-bottom: 20rpx;" v-if="sku.length>0"> |
|
|
|
<scroll-view class="left-container no-scrollbar" scroll-y scroll-with-animation> |
|
|
|
<view :class="['type-item',current ==i?'active':'']" |
|
|
|
v-for="(item,i) in sku" :key="i" @click="changeType(item,i)"> |
|
|
@ -53,9 +53,10 @@ |
|
|
|
</view> |
|
|
|
</scroll-view> |
|
|
|
|
|
|
|
<scroll-view class="right-container no-scrollbar" scroll-y scroll-with-animation> |
|
|
|
<view style="height: 20rpx;"></view> |
|
|
|
<view class="scenic-list" v-for="(item, index) in sku" :key="index"> |
|
|
|
<scroll-view :scroll-top="scrollHeight" @scroll="skuScroll" @scrolltoupper="scrollSpecial('up')" @scrolltolower="scrollSpecial('low')" |
|
|
|
class="right-container no-scrollbar" scroll-y scroll-with-animation> |
|
|
|
<view style="height: 20rpx;" ></view> |
|
|
|
<view class="scenic-list scenic-query-item" v-for="(item, index) in sku" :key="index"> |
|
|
|
<view class="scenic-title">{{item.title}}</view> |
|
|
|
<view class="scenic-item " v-for="(itemSku, indexSku) in item.sku" :key="indexSku"> |
|
|
|
<view class="title text-overflow">{{ itemSku.sku_name }}</view> |
|
|
@ -83,52 +84,72 @@ |
|
|
|
</scroll-view> |
|
|
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 优待政策 | 景点介绍 --> |
|
|
|
<view class="common-container" style="padding: 30rpx 20rpx;background: white;"> |
|
|
|
<view class="box-title">景点简介</view> |
|
|
|
<view class="" id="cpts" v-html="formateRichText(info.feature_content)"></view> |
|
|
|
<view class="box-title">优待政策<text class="box-title-line"></text>景点介绍</view> |
|
|
|
<view class="box-content"> |
|
|
|
<view class="sm-box-title" style="padding-top: 0;">优待政策</view> |
|
|
|
<view class="" v-html="formateRichText(info.extra_info)"></view> |
|
|
|
<view class="sm-box-title">景点介绍</view> |
|
|
|
<view class="" v-html="formateRichText(info.content)"></view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 底部按钮 --> |
|
|
|
<view class="btn-box flex-center"> |
|
|
|
<view class="icon-container"> |
|
|
|
<view class="icon-item"> |
|
|
|
<image src="https://static.ticket.sz-trip.com/uploads/20250611/627d67e48ac41903c40c31f1613f2444.png"></image> |
|
|
|
<text>客服</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="btn" @click="order">加入购物车</view> |
|
|
|
</view> |
|
|
|
<!-- 购物车图标 --> |
|
|
|
<view class="add-cart-icon"> |
|
|
|
<uni-badge class="uni-badge-left-margin" :text="1" absolute="rightTop" :offset="[-3, -3]" size="small" |
|
|
|
:custom-style="{background:'#DC2525',color:'#ffffff'}"> |
|
|
|
<image src="https://static.ticket.sz-trip.com/uploads/20250611/f8c2078ad76754a0b0251f9b65784dc2.png"></image> |
|
|
|
</uni-badge> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 预订须知的弹窗 --> |
|
|
|
<uni-popup ref="popupRule" type="bottom" :safe-area="false"> |
|
|
|
<view class="popup-content-date flex-column flex" > |
|
|
|
<view class="popup-content-date flex-column flex" v-if="skuInfo"> |
|
|
|
<view class="popup-content-title flex"> |
|
|
|
<view class="flex-1 w-1rpx text-overflow"> |
|
|
|
{{skuInfo.title}} |
|
|
|
{{skuInfo.sku_name}} |
|
|
|
</view> |
|
|
|
<img src="https://static.ticket.sz-trip.com/taizhou/images/cha.png" @click="closePopupRule" |
|
|
|
<img src="https://static.ticket.sz-trip.com/taizhou/images/cha.png" |
|
|
|
@click="closePopupRule" |
|
|
|
style="width: 20rpx;height: 20rpx;" class="flex-shrink-0"> |
|
|
|
</view> |
|
|
|
<view class="content flex-1 h-1rpx no-scrollbar"> |
|
|
|
<view class="detail-content" v-html="formateRichText(skuInfo.reserve_content)"></view> |
|
|
|
<view class="content flex-1 h-1rpx no-scrollbar" > |
|
|
|
<view v-if="skuInfo.sku_model" class="detail-content" v-html="formateRichText(skuInfo.sku_model.bookinfo)"></view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
</uni-popup> |
|
|
|
|
|
|
|
<!-- 预定弹窗 --> |
|
|
|
<uni-popup ref="popup" type="bottom" :safe-area="false"> |
|
|
|
<view class="popup-content-date" > |
|
|
|
<view class="popup-content-date" v-if="skuInfo"> |
|
|
|
<view class="popup-content-title flex"> |
|
|
|
<view class="flex-1 w-1rpx text-overflow"> |
|
|
|
{{skuInfo.title}} |
|
|
|
{{skuInfo.sku_name}} |
|
|
|
</view> |
|
|
|
<img src="https://static.ticket.sz-trip.com/taizhou/images/cha.png" @click="closePopup" |
|
|
|
style="width: 31rpx;height: 31rpx;" class="flex-shrink-0"> |
|
|
|
</view> |
|
|
|
<view class="order-popup-detail"> |
|
|
|
<view class="relative"> |
|
|
|
<view style="position: relative;"> |
|
|
|
<view class="sku-title">使用日期</view> |
|
|
|
<view class="date-content"> |
|
|
|
<view :class="['item', item.store>0?'':'disabled',seldDateIndex===index?'active':'']" |
|
|
|
<view :class="['item', item.stock>0?'':'disabled',seldDateIndex===index?'active':'']" |
|
|
|
v-for="(item,index) in allSeldDate" :key="index" |
|
|
|
@click="clickTab(item,index)"> |
|
|
|
<view>{{ShowDateDay(new Date(item.date).getDay())}}</view> |
|
|
|
<view>{{item.date.slice(-5)}}</view> |
|
|
|
<view class="price" v-if="item.store > 0">¥{{showNoPriceNew(item.money)}}</view> |
|
|
|
<view class="price" v-if="item.stock > 0">¥{{showNoPriceNew(item.price)}}</view> |
|
|
|
<view v-else>不可定</view> |
|
|
|
</view> |
|
|
|
</view> |
|
|
@ -138,7 +159,7 @@ |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
|
|
|
|
<view v-if="timesArr.length > 0 && skuInfo.is_time_stock"> |
|
|
|
<view v-if="timesArr.length > 0 && skuInfo.sku_model&& skuInfo.sku_model.is_time_stock"> |
|
|
|
<view class="sku-title">选择场次</view> |
|
|
|
<view class="time-box"> |
|
|
|
<view v-for="(item,index) in timesArr" :key="index" |
|
|
@ -152,7 +173,7 @@ |
|
|
|
</view> |
|
|
|
<view class="sku-bottom"> |
|
|
|
<view class="flex" style="align-items: baseline;"> |
|
|
|
合计:<view class="bottom-price">{{allSeldDate[seldDateIndex].money / 100 || 0}}</view> |
|
|
|
合计:<view class="bottom-price">{{allSeldDate[seldDateIndex].price / 100 || 0}}</view> |
|
|
|
</view> |
|
|
|
<view class="bottom-btn" @click="addBuyCard"> |
|
|
|
下一步 |
|
|
@ -177,14 +198,15 @@ |
|
|
|
|
|
|
|
id: null, |
|
|
|
info: null, |
|
|
|
|
|
|
|
current: 0, |
|
|
|
|
|
|
|
sku: [], |
|
|
|
current: 0, // sku 选中的index |
|
|
|
scrollHeight: 0, // sku滚动高度 |
|
|
|
skuDoms: [], // 节点Dom 做缓存 |
|
|
|
|
|
|
|
skuInfo: {}, // 预定门票 |
|
|
|
selectGoods: {}, // 预定的商品 |
|
|
|
minSeldDate: new Date().Format('yyyy-MM-dd'), |
|
|
|
maxSeldDate: new Date((new Date()).getFullYear(), (new Date()).getMonth() + 3, 0).Format('yyyy-MM-dd'), |
|
|
|
maxSeldDate: new Date((new Date()).getFullYear(), (new Date()).getMonth() + 1, 0).Format('yyyy-MM-dd'), |
|
|
|
allSeldDate: [], |
|
|
|
seldDateIndex: 0, |
|
|
|
timesArr: [], |
|
|
@ -199,6 +221,7 @@ |
|
|
|
|
|
|
|
}, |
|
|
|
onLoad(options) { |
|
|
|
this.skuDoms = [] |
|
|
|
this.id = options.id; |
|
|
|
this.getInfo(); |
|
|
|
// this.getGoodsList() |
|
|
@ -212,6 +235,11 @@ |
|
|
|
this.Post({id: this.id},'/api/scene/detail').then(res => { |
|
|
|
this.info = res.data |
|
|
|
this.sku = this.info.product || [] |
|
|
|
if (this.info.title) { |
|
|
|
uni.setNavigationBarTitle({ |
|
|
|
title: this.info.title |
|
|
|
}) |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
@ -235,10 +263,113 @@ |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
changeType (item,i) { |
|
|
|
// ----------滚动联动------------------- |
|
|
|
changeType (item,index) { |
|
|
|
let that = this |
|
|
|
if (Array.isArray(this.skuDoms) && this.skuDoms.length>0) { |
|
|
|
console.log('进入暂存数据') |
|
|
|
try { |
|
|
|
let res = this.skuDoms |
|
|
|
let target0 = res[0][0] |
|
|
|
let targetDom = res[0][index] |
|
|
|
let scrollTop = that.scrollHeight |
|
|
|
console.log(targetDom) |
|
|
|
if (target0&&targetDom) { |
|
|
|
scrollTop = targetDom.top - target0.top // title高度87 |
|
|
|
} |
|
|
|
console.log(scrollTop) |
|
|
|
that.current = index |
|
|
|
that.scrollHeight = scrollTop |
|
|
|
} catch(e) { |
|
|
|
console.log(e) |
|
|
|
} |
|
|
|
} else { |
|
|
|
const query = uni.createSelectorQuery(); //创建节点查询器 |
|
|
|
query.selectAll(".scenic-query-item").boundingClientRect(); //选择toViewid获取位置信息 |
|
|
|
query.exec(function (res) { |
|
|
|
try { |
|
|
|
let target0 = res[0][0] |
|
|
|
let targetDom = res[0][index] |
|
|
|
let scrollTop = that.scrollHeight |
|
|
|
console.log(targetDom) |
|
|
|
|
|
|
|
if (target0&&targetDom) { |
|
|
|
scrollTop = targetDom.top - target0.top // title高度87 |
|
|
|
} |
|
|
|
that.current = index |
|
|
|
that.scrollHeight = scrollTop |
|
|
|
that.skuDoms = res |
|
|
|
} catch(e) { |
|
|
|
console.log(e) |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
skuScroll (e) { |
|
|
|
let that = this |
|
|
|
let domSctollTop = e.detail.scrollTop |
|
|
|
if (Array.isArray(this.skuDoms) && this.skuDoms.length>0) { |
|
|
|
console.log('进入暂存数据') |
|
|
|
try { |
|
|
|
let res = this.skuDoms |
|
|
|
let target0 = res[0][0] |
|
|
|
let topHeightArr = [] |
|
|
|
res[0].forEach(v=>{ |
|
|
|
topHeightArr.push(v.top - target0.top) |
|
|
|
}) |
|
|
|
|
|
|
|
// 找到第一个大于domSctollTop的下标再-1 如果返回-1 就是最后一个 |
|
|
|
// 预留50px |
|
|
|
let findIndex = topHeightArr.findIndex(v=>v-50>=domSctollTop) |
|
|
|
if (findIndex<0) { |
|
|
|
findIndex = topHeightArr.length-1 |
|
|
|
} else if(findIndex>=1) { |
|
|
|
findIndex-- |
|
|
|
} |
|
|
|
that.current = findIndex |
|
|
|
} catch(e) { |
|
|
|
console.log(e) |
|
|
|
} |
|
|
|
} else { |
|
|
|
const query = wx.createSelectorQuery(); //创建节点查询器 |
|
|
|
query.selectAll(".scenic-query-item").boundingClientRect() //选择toViewid获取位置信息 |
|
|
|
query.exec(function (res) { |
|
|
|
try { |
|
|
|
let target0 = res[0][0] |
|
|
|
let topHeightArr = [] |
|
|
|
res[0].forEach(v=>{ |
|
|
|
topHeightArr.push(v.top - target0.top) |
|
|
|
}) |
|
|
|
// 找到第一个大于domSctollTop的下标再-1 如果返回-1 就是最后一个 |
|
|
|
// 预留50px |
|
|
|
let findIndex = topHeightArr.findIndex(v=>v-50>=domSctollTop) |
|
|
|
if (findIndex<0) { |
|
|
|
findIndex = topHeightArr.length-1 |
|
|
|
} else if(findIndex>=1) { |
|
|
|
findIndex-- |
|
|
|
} |
|
|
|
that.current = findIndex |
|
|
|
that.skuDoms = res |
|
|
|
} catch(e) { |
|
|
|
console.log(e) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
}, |
|
|
|
scrollSpecial (type) { |
|
|
|
if (type == 'up') { |
|
|
|
this.current = 0 |
|
|
|
} else { |
|
|
|
let length = this.sku.length-1 |
|
|
|
length = length>0?length:0 |
|
|
|
this.current = length |
|
|
|
} |
|
|
|
}, |
|
|
|
//----------------------------------------- |
|
|
|
|
|
|
|
// 预定须知 |
|
|
|
showSkuInfo (itemSku,goods) { |
|
|
|
this.skuInfo = itemSku |
|
|
|
this.selectGoods = goods |
|
|
@ -246,26 +377,33 @@ |
|
|
|
this.openPopRule() |
|
|
|
}, |
|
|
|
|
|
|
|
// 选择列表规格 |
|
|
|
// 预定选择日期分时 |
|
|
|
changeSku(itemSku,goods) { |
|
|
|
this.skuInfo = itemSku |
|
|
|
this.selectGoods = goods |
|
|
|
// 期票类型 |
|
|
|
// if(this.skuInfo.ticket_type == 2) { |
|
|
|
// this.addBuyCard() |
|
|
|
// }else { |
|
|
|
// this.getDays(itemSku,goods) |
|
|
|
// } |
|
|
|
this.getPriceCal(itemSku,goods) |
|
|
|
}, |
|
|
|
// 获取价格日历列表 |
|
|
|
getPriceCal(itemSku,goods) { |
|
|
|
this.Post({ |
|
|
|
start_date: this.minSeldDate, |
|
|
|
end_date: this.maxSeldDate, |
|
|
|
sku_id: itemSku.id |
|
|
|
}, '/api/product/product_date_price').then(res => { |
|
|
|
this.allSeldDate = res.data || [] |
|
|
|
this.seldDateIndex = this.allSeldDate.findIndex(item => item.stock > 0) |
|
|
|
this.getTimeStock(this.allSeldDate[this.seldDateIndex].date) |
|
|
|
this.openPop() |
|
|
|
}) |
|
|
|
}, |
|
|
|
openCalendar () { |
|
|
|
this.calendarParam = { |
|
|
|
startDate: (this.allSeldDate.find(v=>v.store>0) || {}).date, |
|
|
|
endDate: (this.allSeldDate[this.allSeldDate.findLastIndex(v=>v.store>0)]||{}).date, |
|
|
|
selected: this.allSeldDate.filter(v=>v.store>0).map(v=>{ |
|
|
|
startDate: (this.allSeldDate.find(v=>v.stock>0) || {}).date, |
|
|
|
endDate: (this.allSeldDate[this.allSeldDate.findLastIndex(v=>v.stock>0)]||{}).date, |
|
|
|
selected: this.allSeldDate.filter(v=>v.stock>0).map(v=>{ |
|
|
|
return { |
|
|
|
date: v.date, |
|
|
|
info: '¥'+this.showNoPriceNew(v.money), |
|
|
|
info: '¥'+this.showNoPriceNew(v.price), |
|
|
|
notNeedDot:true, |
|
|
|
} |
|
|
|
}) |
|
|
@ -273,25 +411,16 @@ |
|
|
|
this.$refs.calendar.open(); |
|
|
|
}, |
|
|
|
|
|
|
|
// 获取价格日历列表 |
|
|
|
getPriceCal(itemSku,goods) { |
|
|
|
this.Post({ |
|
|
|
specifications_id: itemSku.id, |
|
|
|
goods_id: goods.id, |
|
|
|
limit: 60 |
|
|
|
}, '/api/goods/getPriceCalendarListBySpecifications').then(res => { |
|
|
|
this.allSeldDate = res.data || [] |
|
|
|
this.seldDateIndex = this.allSeldDate.findIndex(item => item.store != 0) |
|
|
|
this.getTimeStock(this.allSeldDate[this.seldDateIndex].date) |
|
|
|
this.openPop() |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
// 获取规格分时库存 |
|
|
|
getTimeStock(date) { |
|
|
|
if (!this.skuInfo.sku_model.is_time_stock || this.seldDateIndex<0) { |
|
|
|
return |
|
|
|
} |
|
|
|
this.Post({ |
|
|
|
specifications_id: this.skuInfo.id, |
|
|
|
sku_id: this.skuInfo.id, |
|
|
|
date: date, |
|
|
|
}, '/api/goods/getTimeStock').then(res => { |
|
|
|
}, '/api/product/product_timestock_price').then(res => { |
|
|
|
if (Array.isArray(res.data)) { |
|
|
|
this.timesArr = res.data || [] |
|
|
|
this.seldTimeIndex = -1 |
|
|
@ -305,7 +434,7 @@ |
|
|
|
|
|
|
|
// 选择日期 |
|
|
|
clickTab(item, index) { |
|
|
|
if (item.store>0) { |
|
|
|
if (item.stock>0) { |
|
|
|
this.seldDateIndex = index |
|
|
|
this.getTimeStock(item.date) |
|
|
|
} |
|
|
@ -334,66 +463,23 @@ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
let param = { |
|
|
|
sInfo: this.skuInfo, |
|
|
|
pInfo: this.selectGoods, |
|
|
|
minSeldDate: this.minSeldDate, |
|
|
|
maxSeldDate: this.maxSeldDate, |
|
|
|
calendarParam: this.calendarParam, |
|
|
|
let param = [{ |
|
|
|
sInfo: {...this.skuInfo, buyNum: 1}, |
|
|
|
pInfo: {id:this.selectGoods.id, type:this.selectGoods.type,title:this.selectGoods.title}, |
|
|
|
allSeldDate: this.allSeldDate, |
|
|
|
seldDateIndex: this.seldDateIndex, |
|
|
|
timesArr: this.timesArr, |
|
|
|
seldTimeIndex: this.seldTimeIndex, |
|
|
|
}; |
|
|
|
}]; |
|
|
|
|
|
|
|
console.log(param) |
|
|
|
|
|
|
|
uni.setStorageSync('ticketOrder', JSON.stringify(param)); |
|
|
|
// that.gotoBuy(pInfo, sInfo); |
|
|
|
uni.navigateTo({ |
|
|
|
url:'/subPackages/ticketBooking/order', |
|
|
|
url:'/subPackages/ticket/order', |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
gotoBuy(pInfo, sInfo) { |
|
|
|
console.log(pInfo, sInfo); |
|
|
|
let that = this; |
|
|
|
if ( |
|
|
|
(pInfo.flag != 1 || sInfo.flag !== "on" || sInfo.stock <= 0) && |
|
|
|
sInfo.is_third_stock == 0 |
|
|
|
) |
|
|
|
return; |
|
|
|
|
|
|
|
let params = { |
|
|
|
pInfo: pInfo, |
|
|
|
sInfo: sInfo, |
|
|
|
minSeldDate: this.minSeldDate, |
|
|
|
maxSeldDate: this.maxSeldDate, |
|
|
|
calendarParam: this.calendarParam, |
|
|
|
allSeldDate: this.allSeldDate, |
|
|
|
seldDateIndex: this.seldDateIndex, |
|
|
|
timesArr: this.timesArr, |
|
|
|
seldTimeIndex: this.seldTimeIndex, |
|
|
|
}; |
|
|
|
if (that.detail.allowance) { |
|
|
|
sInfo.allowance_data = that.detail.allowance; |
|
|
|
let spread_price = Number( |
|
|
|
sInfo.allowance_data.discount_limit_price - |
|
|
|
sInfo.allowance_data.user_used_price |
|
|
|
); |
|
|
|
if (spread_price > 0) { |
|
|
|
if ( |
|
|
|
spread_price < |
|
|
|
(sInfo.allowance_data.discount_rate / 100) * |
|
|
|
sInfo.price |
|
|
|
) |
|
|
|
sInfo.allowance_price = spread_price; |
|
|
|
else |
|
|
|
sInfo.allowance_price = |
|
|
|
(sInfo.allowance_data.discount_rate / 100) * |
|
|
|
sInfo.price; |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
closePopup() { |
|
|
|
this.$refs.popup.close() |
|
|
|
}, |
|
|
@ -497,7 +583,7 @@ |
|
|
|
.common-container{ |
|
|
|
background: white; |
|
|
|
border-radius: 20rpx; |
|
|
|
margin-bottom: 30rpx; |
|
|
|
margin-bottom: 20rpx; |
|
|
|
padding: 22rpx 26rpx; |
|
|
|
} |
|
|
|
|
|
|
@ -568,18 +654,29 @@ |
|
|
|
|
|
|
|
|
|
|
|
.box-title { |
|
|
|
font-weight: normal; |
|
|
|
font-weight: bold; |
|
|
|
font-size: 35rpx; |
|
|
|
color: #6A8A27; |
|
|
|
padding-bottom: 20rpx; |
|
|
|
border-bottom: 1px solid #D9D9D9; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
.box-title-line{ |
|
|
|
width: 2rpx; |
|
|
|
height: 23rpx; |
|
|
|
background: #000; |
|
|
|
margin: 0 20rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.address-icon{ |
|
|
|
margin-right: 9rpx; |
|
|
|
width: 26rpx; |
|
|
|
height: 26rpx; |
|
|
|
.box-content{ |
|
|
|
padding-top: 22rpx; |
|
|
|
.sm-box-title{ |
|
|
|
font-weight: bold; |
|
|
|
font-size: 29rpx; |
|
|
|
color: #000000; |
|
|
|
padding: 58rpx 0 25rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.scenic-list{ |
|
|
|
padding: 10rpx 10rpx 0; |
|
|
|
.scenic-title{ |
|
|
@ -652,11 +749,68 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.bottom { |
|
|
|
.notice { |
|
|
|
|
|
|
|
.btn-box { |
|
|
|
width: 750rpx; |
|
|
|
height: 133rpx; |
|
|
|
background: #FFFFFF; |
|
|
|
box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(6,0,1,0.1); |
|
|
|
position: fixed; |
|
|
|
left: 0; |
|
|
|
bottom: 0; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: space-between; |
|
|
|
z-index: 10; |
|
|
|
padding: 0 46rpx; |
|
|
|
.icon-container{ |
|
|
|
font-weight: 400; |
|
|
|
color: #0B898E; |
|
|
|
font-size: 23rpx; |
|
|
|
color: #666666; |
|
|
|
text-align: center; |
|
|
|
.icon-item{ |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
flex-direction: column; |
|
|
|
width: 44rpx; |
|
|
|
image{ |
|
|
|
width: 44rpx; |
|
|
|
height: 42rpx; |
|
|
|
margin-bottom: 8rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.btn{ |
|
|
|
width: 200rpx; |
|
|
|
height: 60rpx; |
|
|
|
background: #6A8A27; |
|
|
|
border-radius: 11rpx; |
|
|
|
font-weight: 500; |
|
|
|
font-size: 31rpx; |
|
|
|
color: #FFFFFF; |
|
|
|
line-height: 60rpx; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.add-cart-icon{ |
|
|
|
width: 80rpx; |
|
|
|
height: 80rpx; |
|
|
|
background: #FFFFFF; |
|
|
|
box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(0,0,0,0.2); |
|
|
|
border-radius: 50%; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|
position: fixed; |
|
|
|
bottom: 140rpx; |
|
|
|
right: 20rpx; |
|
|
|
z-index: 10; |
|
|
|
image{ |
|
|
|
width: 43.33rpx; |
|
|
|
height: 42rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -696,11 +850,11 @@ |
|
|
|
height: 133rpx; |
|
|
|
background: white; |
|
|
|
border-radius: 10rpx; |
|
|
|
border: 1px solid #000000; |
|
|
|
background: #FFFFFF; |
|
|
|
font-family: PingFang SC; |
|
|
|
font-weight: 500; |
|
|
|
font-size: 27rpx; |
|
|
|
color: #111; |
|
|
|
color: #6A8A27; |
|
|
|
display: flex; |
|
|
|
flex-direction: row; |
|
|
|
align-items: center; |
|
|
@ -723,7 +877,6 @@ |
|
|
|
width: 120rpx; |
|
|
|
height: 133rpx; |
|
|
|
border-radius: 10rpx; |
|
|
|
border: 1px solid #000000; |
|
|
|
margin-right: 24rpx; |
|
|
|
font-family: PingFang SC; |
|
|
|
font-weight: 500; |
|
|
@ -735,20 +888,20 @@ |
|
|
|
justify-content: space-around; |
|
|
|
flex-shrink: 0; |
|
|
|
padding: 6rpx 0; |
|
|
|
background: #F5F5F5; |
|
|
|
} |
|
|
|
.item.active{ |
|
|
|
background: #515150; |
|
|
|
background: #6A8A27; |
|
|
|
color: white; |
|
|
|
border: 1px solid #12293C; |
|
|
|
.price{color: white;} |
|
|
|
} |
|
|
|
.item.disabled{ |
|
|
|
color: #666; |
|
|
|
border-color: #CCC; |
|
|
|
background: #F5F5F5; |
|
|
|
color: #999999; |
|
|
|
} |
|
|
|
|
|
|
|
.price{ |
|
|
|
color: #C3282E; |
|
|
|
color: #EE3E3B; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
@ -774,20 +927,20 @@ |
|
|
|
font-family: PingFangSC; |
|
|
|
font-weight: 400; |
|
|
|
font-size: 25rpx; |
|
|
|
border: 1px solid #333333; |
|
|
|
line-height: 58rpx; |
|
|
|
color: #000; |
|
|
|
background: #F5F5F5; |
|
|
|
} |
|
|
|
.time-active { |
|
|
|
background: #515150; |
|
|
|
background: #6A8A27; |
|
|
|
color: white; |
|
|
|
border: 1px solid #12293C; |
|
|
|
} |
|
|
|
.time-disable { |
|
|
|
color: #666666; |
|
|
|
border-color: #CCC; |
|
|
|
background: #F5F5F5; |
|
|
|
color: #999999; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.sku-bottom { |
|
|
|
width: 100%; |
|
|
|
height: 166rpx; |
|
|
@ -810,7 +963,7 @@ |
|
|
|
.bottom-price { |
|
|
|
font-size: 48rpx; |
|
|
|
font-weight: bold; |
|
|
|
color: #C3282E; |
|
|
|
color: #D62828; |
|
|
|
} |
|
|
|
.bottom-price::before { |
|
|
|
font-size: 24rpx; |
|
|
@ -820,31 +973,21 @@ |
|
|
|
.bottom-btn { |
|
|
|
width: 250rpx; |
|
|
|
height: 80rpx; |
|
|
|
background: #C3282E; |
|
|
|
border-radius: 40rpx; |
|
|
|
background: #6A8A27; |
|
|
|
border-radius: 11rpx; |
|
|
|
font-weight: bold; |
|
|
|
font-size: 32rpx; |
|
|
|
text-align: center; |
|
|
|
font-weight: bold; |
|
|
|
color: #FFFFFF; |
|
|
|
line-height: 78rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.address-title{ |
|
|
|
display: flex; |
|
|
|
align-items: flex-start; |
|
|
|
.address-detail{ |
|
|
|
font-size: 27rpx; |
|
|
|
color: #666666; |
|
|
|
padding-right: 40rpx; |
|
|
|
line-height: 80rpx; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/deep/ .uni-calendar-item--extra{ |
|
|
|
color: #333 !important; |
|
|
|
color: #EE3E3B !important; |
|
|
|
} |
|
|
|
/deep/ .uni-calendar-item--isDay{ |
|
|
|
background: #525251 !important; |
|
|
|
background: #6A8A27 !important; |
|
|
|
border-radius: 50%; |
|
|
|
|
|
|
|
.uni-calendar-item--extra{ |
|
|
@ -853,7 +996,7 @@ |
|
|
|
} |
|
|
|
|
|
|
|
/deep/ .uni-calendar-item--checked{ |
|
|
|
background: #525251 !important; |
|
|
|
background: #6A8A27 !important; |
|
|
|
border-radius: 50%; |
|
|
|
|
|
|
|
.uni-calendar-item--extra{ |
|
|
|