qingnianyexiao2.0/packageA/activity/activityDetaill.vue

1376 lines
31 KiB
Vue
Raw Normal View History

2025-04-01 09:03:51 +08:00
<template>
<view class="box flex justify-start flex-column align-items" :class="{ 'no-scroll': overlay }">
<view class="swiper">
<u-swiper :list="detail.images" indicator indicatorMode="line" height="480rpx" circular></u-swiper>
</view>
<view class="con-center w-100 flex justify-center flex-column align-items flex-start">
<view class="first-box flex flex-start flex-column justify-start">
<view class="flex align-items" style="width: 690rpx;">
<span class="Sign flex justify-center align-items" style="color: #FFFFFF;background: #A4A4A4;"
v-if="detail.has_sign_expire == 1"> </span>
<span class="Sign flex justify-center align-items"
style="color: #222222;background: #BEEE03;"
v-if="detail.has_sign_expire == 2"> </span>
<span class="first-name white-space-2">
{{'' + detail.title}}</span>
</view>
<!-- <span class="line"></span>
<span class="huodong text-blue">活动介绍</span> -->
<view class="line-title white-space" v-if="detail.feel != 1">
<view class="circle"> </view>
<span class="title">报名费用:</span>
<span class="conter " style="color: #FF5F5F;">{{'' + detail.price + '元'}}</span>
</view>
<view class="line-title white-space" v-if="detail.feel == 1">
<view class="circle"> </view>
<span class="title">报名费用:</span>
<span class="conter " style="color: #FF5F5F;">{{'' + '公益'}}</span>
</view>
<view class="line-title white-space">
<view class="circle"> </view>
<span class="title">活动人数:</span>
<span class="conter ">{{'' + detail.id == 16 ? 50 : detail.stock}}</span>
</view>
<view class="line-title white-space">
<view class="circle"> </view>
<span class="title">报名时间:</span>
<span class="conter ">{{'' + detail.sign_start_time_text}} - {{detail.sign_end_time_text}}</span>
</view>
<view class="line-title white-space">
<view class="circle"> </view>
<span class="title">活动时间:</span>
<span class="conter">{{'' + detail.start_time_text}} - {{detail.end_time_text}}</span>
</view>
<view class="line-title white-space flex align-items"
@click.stop="toMap(detail.latitude,detail.longitude,detail.address_detail)">
<view class="circle"> </view>
<span class="title">活动地址:</span>
<span class="conter flex align-items ">
<span class="white-space" style="width: 500rpx;">{{'' + detail.address_detail}}</span>
<image src="../../static/center/address.png" mode="" class="icon-size"></image>
</span>
</view>
<!-- <view class="line-title">
<span class="title">可参与人数:</span>
<span class="conter">{{'' + detail.id == 16 ? 50 : detail.stock}}</span>
</view> -->
<!-- <view class="line-title white-space">
<view class="circle"> </view>
<span class="title">已参加人数:</span>
<span class="conter ">{{'' + detail.id == 16 ? 50 : detail.sale}}</span>
</view>
<view class="line-title white-space">
<view class="circle"> </view>
<span class="title">活动项目:</span>
<span class="conter ">{{'' + detail.item}}</span>
</view> -->
<!-- <view class="flex justify-center flex-column align-items w-100" v-if="detail.status == 2">
<image :src="detail.codeimage" mode="" style="width: 376rpx; height: 376rpx;"></image>
<span style="margin: 34rpx 0;font-weight: 800;font-size: 38rpx;color: #343434;">核销二维码</span>
</view> -->
<!-- <view class="flex flex-column gj">
<scroll-view :scroll-top="scrollTop" scroll-y="true" class="flex flex-column align-items scroll">
<view v-for="(item,index) in detail.item_json" :key="index">
<span class="title">{{ item.formattedTime}}</span>
<span v-if="item.sign_num === item.limit_num" class="red">(已满)</span>
<span v-else class="lan">({{item.sign_num + '/' + item.limit_num}})</span>
</view>
</scroll-view>
</view> -->
</view>
<!-- <view class="first-box flex flex-column " style="width: 642rpx; padding: 30rpx 24rpx;"
v-if="detail.status == 1">
<view class="flex" style="justify-content: space-between; flex-wrap: wrap;"
v-for="(item, index) in skuList" :key="index" :class="{ selected: selectedIndex === index }"
@click="item.status != 2 && selectItem(index, item)">
<view class="flex">
<view class="left">
<image
:src="selectedIndex === index ? '../../static/my/selected.png' : '../../static/my/select.png'"
mode="" style="width: 42rpx; height: 42rpx;"></image>
</view>
<view class="center flex flex-column">
<span class="title white-space" style="width: 400rpx;">{{ item.name }}</span>
<view class="cen-tit">
<span>{{ item.limit_num }}</span>
<span style="margin: 0 24rpx;">{{ item.age }}</span>
<span v-if="item.sex == 1"></span>
<span v-if="item.sex == 0"></span>
<span v-if="item.sex == 3">男女不限</span>
</view>
</view>
</view>
<view class="right flex flex-column align-items">
<span class="btn1 bg-blue flex align-items justify-center"
v-if="detail.has_sign_expire == 2">报名</span>
<span class="btn flex align-items justify-center" v-if="detail.has_sign_expire == 1">已结束</span>
<span class="price" v-if="item.feel == 2">{{ item.price }}/</span>
<span class="price" v-if="item.feel == 1">公益</span>
</view>
<span class="line-row"></span>
</view>
</view> -->
</view>
<!-- 课程详情 -->
<view class="six flex flex-column" style="justify-content: flex-start;">
<!-- <view class="six-header flex align-items space-between">
活动详情
</view> -->
<view class="six-top">
<view class="left flex align-items">
<span>活动详情</span>
</view>
</view>
<view class="six-center flex first-txt flex-column">
<!-- <rich-text :nodes="detail.content" style="width: 100%;" :tagStyle="style"></rich-text> -->
<u-parse :content="detail.content" :tagStyle="style"></u-parse>
<!-- <view class="s-header flex justify-start flex-column">
<span>单门课程报名费用499/10小时共5节课</span>
<span>上课时间每周对应固定时间晚上1900-2100</span>
<span>上课人数每门课程10人起</span>
<span>上课地点</span>
<span>洛阳市老城区同化街1654号</span>
</view>
<image src="../../static/center/detail.png" mode="" style="width: 644rpx; height: 1054rpx;"></image> -->
</view>
</view>
<view class="footer flex align-items">
<view class="footer-left">
<button open-type="share" class="no-border-button" plain="true">
<view class="">
<image src="../../static/my/share.png" mode=""></image>
<span>分享</span>
</view>
</button>
<view class="flex flex-column" style=" margin-left: 32rpx;align-items: flex-start;">
<view class="feiyong flex" style="flex-flow: row;">
<span>报名费用:</span>
<span class="price" v-if="price != 0">{{'' + price}}</span>
<span class="price" v-if="price == 0">{{'公益'}}</span>
</view>
<span class="tips">报名成功后不能取消</span>
</view>
</view>
<!-- <view class="footer-right flex justify-center align-items" v-if="detail.has_expire == 1">
<span> </span>
</view>
<view class="footer-right1 flex justify-center align-items" v-if="detail.has_expire == 2" @click.stop="sign()">
<span> </span>
</view> -->
<view class="footer-right flex justify-center align-items" v-if="detail.has_sign_expire == 1">
<span> </span>
</view>
<view class="footer-right1 flex justify-center align-items" v-if="detail.has_sign_expire == 2" @click.stop="sign()">
<span> </span>
</view>
</view>
<!-- 购买弹窗 -->
<u-popup :show="buyShow" mode="center" :round="10" :zIndex="99999" :custom-style="popupStyle" @close="buyClose"
@open="buyOpen" safeAreaInsetBottom="false">
<view class="popupBox flex justify-start align-items flex-column">
<view class="pop-header flex align-items" style="justify-content: space-between;">
<!-- <image src="../../static/center/buy.png" mode="" style="width: 168rpx; height: 48rpx;">
</image> -->
确认订单
</view>
<view class="popup">
<image :src="detail.headimage" mode="" style="width: 200rpx; height: 140rpx;"></image>
<view class="popur-right flex flex-column">
<span class="name white-space">{{name}}</span>
<span class="address">地址:{{detail.address_detail}}</span>
<span class="date">开始时间:{{detail.start_time_text}}</span>
<span class="time">结束时间:{{detail.end_time_text}}</span>
<span class="line-row"></span>
<span class="price">
课程价格:
<span v-if="price != 0">{{price}}</span>
<span v-if="price == 0">公益</span>
</span>
</view>
</view>
<view class="popup-footer flex " @click="buy()">
<span v-if="detail.feel == 0"> </span>
<span v-if="detail.feel == 1"> </span>
<u-loading-icon :vertical="true" v-if="uloadingShow"></u-loading-icon>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
id: '',
detail: '',
selectedIndex: 0, // 默认选中第一个
listOrder_no: '',
price: '',
name:'',
order_no:'',
skuId:'',
uloadingShow:false,
buyShow:false,
PayPirce:'',
popupStyle: {
width: '100%',
height: '570rpx',
margin: '0 auto', // 水平居中
display: 'flex',
justifyContent: 'flex-start',
alignItems: 'center'
},
skuList:[] //规格
};
},
onShareTimeline() {
return {
title: this.detail.title,//分享的标题
imageUrl: this.detail.headimage,//展示的图片这里是本地路径的写法也可以写http或https开头的图片路径
query: `id=${this.id}`
}
},
onLoad(options) {
this.userInfo = uni.getStorageSync("userInfo")
this.id = options.id
this.getDetail()
},
methods: {
buyOpen() {
this.buyShow = true
this.type = 1
},
buyClose() {
this.type = 0
this.selectedTime = null
this.buyShow = false
},
// 购买弹窗
sign(){
this.buyShow = true
},
buy() {
this.uloadingShow = true
this.getMoney()
},
// 获取价格
getMoney() {
uni.$u.http.post('/api/school/activity.order/confirm', {
classes_activity_id: this.id,
order_no: this.order_no,
classes_activity_item_id: this.skuId,
is_compute: 1
}).then(res => {
if (res.code == 1) {
this.PayPirce = res.data.order_data.totalprice
this.order_no = res.data.order_no
this.create(this.order_no, this.PayPirce)
} else {
this.uloadingShow = false
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
// _this.$api.toast(res.msg);
}
this.uloadingShow = false
}).catch(error => {
});
},
// 创建订单
create(order_no, PayPirce) {
uni.$u.http.post('/api/school/activity.order/create', {
order_no: order_no,
}).then(res => {
if (res.code == 1) {
if (PayPirce != 0) {
this.pament()
} else {
uni.showToast({
title: '创建成功',
icon: 'success',
duration: 2000,
complete: function() {
setTimeout(function() {
uni.redirectTo({
url: "/packageA/activity/exercise"
})
}, 2000);
}
});
this.uloadingShow = false
}
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
that.uloadingShow = false
// _this.$api.toast(res.msg);
}
}).catch(error => {
});
},
// 支付
pament() {
let that = this
that.uloadingShow = false
uni.$u.http.post('/api/school.activity.pay/payment', {
type: 'wechat',
order_no: that.order_no,
platform: 'miniapp'
}).then(res => {
if (res.code == 1) {
that.uloadingShow = false
wx.requestPayment({
timeStamp: res.data.paydata.timeStamp, //时间戳
nonceStr: res.data.paydata.nonceStr, //随机字符串
package: res.data.paydata.package, //prepay_id
signType: res.data.paydata.signType, //签名算法MD5
paySign: res.data.paydata.paySign, //签名
success(res) {
if (res.errMsg == "requestPayment:ok") {
that.order_no = ''
uni.redirectTo({
url: "/packageA/activity/exercise"
})
console.log('支付成功', res)
} else {
console.log('支付失败')
}
},
fail(res) {
that.uloadingShow = false
console.log('支付失败', res)
}
})
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
// _this.$api.toast(res.msg);
}
}).catch(error => {
});
},
selectItem(index, item) {
this.selectedIndex = index;
this.listOrder_no = item.order_no
this.price = item.price
this.skuId = item.id
this.name = item.name
},
// 获取详情
getDetail() {
uni.$u.http.get('/api/school/activity/detail', {
params: {
id: this.id,
}
}).then(res => {
if (res.code == 1) {
this.getSkuList()
this.detail = res.data.detail;
// 找到第一个 status 为 1 的 item 的下标
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
// 处理错误
console.error('获取详情失败:', error);
});
},
// 规格
getSkuList() {
uni.$u.http.get('/api/school/activity/spec', {
params: {
id: this.id,
}
}).then(res => {
if (res.code == 1) {
this.skuList = res.data.spec
this.selectedIndex = this.skuList.findIndex(item => item.status == 1);
// 如果没有找到,赋值为 -1
if (this.selectedIndex == -1) {
this.selectedIndex = -1;
} else {
// 获取第一个 status 为 1 的 item 的 price
this.price = this.skuList[this.selectedIndex].price;
this.skuId = this.skuList[this.selectedIndex].id;
this.name = this.skuList[this.selectedIndex].name;
}
// 如果没有找到 status 为 1 的 item则使用 this.detail.price
if (this.selectedIndex == -1 && this.skuList) {
this.price = this.detail.price;
this.name = this.detail.title
}
console.log(this.name ,'this.name ')
console.log(this.price ,'this.price ')
console.log(this.skuId ,'this.skuId ')
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
}
}).catch(error => {
// 处理错误
console.error('获取规格失败:', error);
});
},
// 导航
toMap(latitude, longitude, name) {
uni.openLocation({
latitude: parseFloat(latitude),
longitude: parseFloat(longitude),
name: name,
success: function() {
console.log('success');
}
});
},
callPhone(phone) {
uni.makePhoneCall({
phoneNumber: phone
})
},
},
}
</script>
<style lang="scss" scoped>
.w-100 {
width: 100%;
}
.flex {
display: flex;
}
.flex-start {
align-items: flex-start;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.justify-start {
justify-content: start;
}
.con-center {
background: #FFFFFF;
}
.swiper {
width: 100%;
height: 480rpx;
}
.box {
position: relative;
}
.first-box {
width: 690rpx;
background: #FFFFFF;
padding-left: 24rpx;
margin-top: 24rpx;
border-radius: 20rpx;
.Sign {
width: 120rpx;
height: 40rpx;
border-radius: 4rpx 4rpx 4rpx 4rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 500;
font-size: 24rpx;
margin-right: 16rpx;
}
.huodong {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 26rpx;
margin: 23rpx 0;
}
.line-row {
width: 642rpx;
height: 1rpx;
background: #D9D9D9;
margin: 30rpx;
}
.center {
margin-left: 24rpx;
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
}
.cen-tit {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
margin-top: 39rpx;
}
}
.right {
.btn1 {
width: 138rpx;
height: 48rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
}
.btn {
width: 138rpx;
height: 48rpx;
background: #D9D9D9;
border-radius: 12rpx 12rpx 12rpx 12rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
}
.price {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FF5F5F;
margin-top: 39rpx;
}
}
.line-title {
margin-bottom: 18rpx;
display: flex;
align-items: center;
.circle{
width: 8rpx;
height: 8rpx;
background: #BEEE03;
border-radius: 8rpx;
margin-right: 14rpx;
}
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #7A7A7A;
}
.conter {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
.first-name {
width: 100%;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #343434;
margin-top: 32rpx;
}
.first-money {
height: 32rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #FF2323;
}
.first-mine {
height: 32rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
.first-txt {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
line-height: 32rpx;
margin: 0 6rpx;
}
.first-image {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
margin: 16rpx 0 16rpx 0;
}
}
.second-box {
width: 90%;
margin-top: 42rpx;
// background: #FFFFFF;
border-radius: 8rpx 8rpx 8rpx 8rpx;
padding-left: 24rpx;
position: relative;
.second-title {
// margin: 17rpx 35rpx 15rpx 0;
position: absolute;
top: 0;
left: 0;
}
.second {
padding: 24rpx 23rpx 0 0rpx;
margin-top: 32rpx;
view {
width: 20%;
margin: 24rpx 0 0 0;
}
image {
width: 54rpx;
height: 54rpx;
}
span {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
text-align: center;
overflow: hidden;
white-space: nowrap;
width: 100%;
}
}
.number {
width: 108rpx;
color: #FF4949;
font-size: 42rpx;
font-weight: bold;
text-align: center;
}
}
.third {
margin-top: 24rpx;
width: 93%;
.third-header {
padding-bottom: 12rpx;
border-bottom: 2rpx solid #008CFF;
}
.third-box {
margin: 12rpx 0 0 24rpx;
}
.third-center {
margin-top: 28rpx;
width: 100%;
height: 242rpx;
overflow: hidden;
position: relative;
}
.scroll-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
animation: scroll 12s linear infinite;
}
@keyframes scroll {
0% {
transform: translateX(0);
}
100% {
transform: translateX(calc(-100% + 8 * 100px));
/* 8 * 100px 是假设每个项目的宽度为 100px */
}
}
.item {
display: flex;
width: 94%;
align-items: center;
justify-content: space-between;
padding: 22rpx 24rpx 24rpx 24rpx;
height: 32rpx;
/* 假设每条数据的高度为60rpx */
}
.item image {
margin-right: 10rpx;
}
.line-colum {
margin: 0 10rpx;
border-left: 1rpx solid #ccc;
height: 42rpx;
}
.item span {
margin-right: 10rpx;
}
@keyframes scroll {
0% {
transform: translateY(0);
}
100% {
transform: translateY(-240rpx);
/* 总高度为 4 * 60rpx = 240rpx */
}
}
}
.six {
margin-top: 64rpx;
margin-bottom: 106rpx;
width: 100%;
background: #FFFFFF;
align-items: center;
.six-top {
width: 690rpx;
.left {
background-image: url("/static/center/footer.png");
background-repeat: no-repeat;
background-position: left bottom;
span {
width: 160rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 40rpx;
color: #222222;
line-height: 47rpx;
}
}
}
.six-box {
width: 93%;
margin: 12rpx 0 0 24rpx;
}
.six-center {
width: 93%;
margin-top: 41rpx;
.s-header {
padding: 24rpx;
width: 642rpx;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
.s-footer {
padding: 24rpx;
width: 642rpx;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
}
}
.s-footer .h4 {
font-family: PingFang SC, PingFang SC;
font-weight: bold;
font-size: 36rpx;
color: #656565;
}
}
}
.line {
width: 95%;
height: 1rpx;
background: #D9D9D9;
margin: 19rpx 0 19rpx 0;
}
.icon-size {
width: 36rpx;
height: 36rpx;
}
.footer {
width: 100%;
height: 166rpx;
background: #ffffff;
// box-shadow: 0rpx -2rpx 0rpx 0rpx rgba(0, 0, 0, 0.4);
border-radius: 0rpx 0rpx 0rpx 0rpx;
position: sticky;
z-index: 99;
/* 绝对定位 */
bottom: 0;
/* 定位在底部 */
left: 0;
/* 定位在左边 */
.footer-left {
position: absolute;
top: 24rpx;
left: 42rpx;
display: flex;
view {
display: flex;
justify-content: center;
align-items: center;
flex-flow: column;
// margin-right: 42rpx;
span {
text-align: center;
}
}
.feiyong {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 22rpx;
color: #222222;
.price {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 28rpx;
color: #FF4810;
}
}
.tips {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 22rpx;
color: #A4A4A4;
}
image {
width: 50rpx;
height: 50rpx;
}
}
.footer-right {
position: absolute;
top: 27rpx;
right: 30rpx;
width: 296rpx;
height: 100rpx;
background: #A4A4A4;
border-radius: 200rpx 200rpx 200rpx 200rpx;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 32rpx;
color: #FFFFFF;
}
}
.footer-right1 {
position: absolute;
top: 27rpx;
right: 30rpx;
width: 296rpx;
height: 100rpx;
background: #222222;
border-radius: 200rpx 200rpx 200rpx 200rpx;
span {
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: bold;
font-size: 32rpx;
color: #BEEE03;
}
}
}
.share {
position: fixed;
color: #FFFFFF;
right: 0;
bottom: 190rpx;
background: linear-gradient(to bottom right, #FE726B, #FE956B);
padding: 10rpx 10rpx 10rpx 20rpx;
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
box-shadow: 0 0 20upx rgba(0, 0, 0, .09);
}
.cancel {
width: 100vw;
padding: 30rpx;
text-align: center;
background: #FFFFFF;
color: red;
font-weight: bold;
font-size: 30rpx;
}
.md-content {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 50rpx 0;
background-color: white;
}
.md-content-item {
margin: 0 70rpx;
position: relative;
}
.md-content-item image {
width: 100rpx;
height: 100rpx;
}
.md-content-item view {
margin-top: 15rpx;
font-size: 28rpx;
}
.sharebtn {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0;
}
.cu-modal {
position: fixed;
bottom: 166rpx;
left: 0;
z-index: 999999;
}
.gj {
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 32rpx;
color: #4B4B4B;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #4B4B4B;
}
}
.scroll {
width: 642rpx;
max-height: 340rpx;
view {
margin: 24rpx;
width: 600rpx;
height: 56rpx;
background: #E8E8E8;
border-radius: 12rpx 12rpx 12rpx 12rpx;
display: flex;
justify-content: center;
align-items: center;
.title {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #7A7A7A;
}
.red {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #FF5F5F;
}
.lan {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #008CFF;
}
}
}
}
/deep/ ::-webkit-scrollbar {
/*滚动条整体样式*/
width: 4px !important;
height: 1px !important;
overflow: auto !important;
background: #ccc !important;
-webkit-appearance: auto !important;
display: block;
}
/deep/ ::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 10px !important;
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
background: #7b7979 !important;
}
/deep/ ::-webkit-scrollbar-track {
/*滚动条里面轨道*/
// box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2) !important;
// border-radius: 10px !important;
background: #FFFFFF !important;
}
.Poster {
position: relative;
top: 21rpx;
left: 30rpx;
width: 690rpx;
}
.posterClose {
position: absolute;
right: 8rpx;
top: 8rpx;
}
.pos {
position: relative;
}
.btnList {
width: 690rpx;
position: absolute;
bottom: 150rpx;
left: 30rpx;
display: flex;
justify-content: space-evenly;
span {
width: 250rpx;
height: 80rpx;
background: #FFFFFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #008CFF;
display: flex;
justify-content: center;
align-items: center;
}
.save {}
}
.no-scroll {
overflow: hidden;
height: 100vh;
}
.no-border-button {
background-color: transparent;
/* 去掉背景色 */
border: none;
/* 去掉边框 */
padding: 0;
/* 去掉内边距 */
margin: 0;
/* 去掉外边距 */
display: inline-flex;
/* 使按钮内容居中 */
align-items: center;
/* 垂直居中 */
justify-content: center;
/* 水平居中 */
flex-flow: column;
height: 110rpx;
line-height: inherit;
span {
width: 44rpx;
height: 34rpx;
font-family: Source Han Sans CN, Source Han Sans CN;
font-weight: 400;
font-size: 22rpx;
color: #A4A4A4;
}
}
.popupBox {
// height: 365rpx;
margin-top: 22rpx;
width: 750rpx;
.pop-header {
width: 93%;
padding-top: 32rpx;
padding-bottom: 17rpx;
border-bottom: 2rpx solid #D9D9D9;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 42rpx;
color: #008CFF;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 20rpx;
color: #343434;
}
}
.popup {
display: flex;
align-items: self-start;
justify-content: center;
padding-top: 21rpx;
.popur-right {
align-items: self-start;
margin-left: 24rpx;
width: 418rpx;
.name {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 28rpx;
color: #343434;
}
.address {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
line-height: 32rpx;
margin: 16rpx 0 12rpx 0;
overflow: hidden;
/* 确保超出容器的文本被隐藏 */
white-space: nowrap;
/* 确保文本在一行内显示 */
text-overflow: ellipsis;
/* 使用省略号表示被截断的文本 */
width: 100%;
}
.date {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
line-height: 32rpx;
}
.time {
margin: 24rpx 0;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
line-height: 32rpx;
}
.line-row {
width: 418rpx;
height: 1rpx;
background: #008CFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.price {
font-family: PingFang SC, PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #7A7A7A;
line-height: 32rpx;
margin-top: 23rpx;
align-self: flex-end;
span {
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 36rpx;
color: #FF2323;
line-height: 32rpx;
}
}
}
}
.popup-footer {
margin-top: 42rpx;
span{
width: 642rpx;
height: 80rpx;
background: #008CFF;
border-radius: 401rpx 401rpx 401rpx 401rpx;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 34rpx;
color: #FFFFFF;
line-height: 32rpx;
display: flex;
justify-content: center;
align-items: center;
}
}
.line {
width: 642rpx;
height: 1rpx;
background: #D9D9D9;
box-shadow: 1rpx 1rpx 0rpx 0rpx rgba(102, 102, 102, 0.25);
border-radius: 0rpx 0rpx 0rpx 0rpx;
}
.times {
width: 93%;
.selectTime {
width: 288rpx;
height: 50rpx;
background: #FFFFFF;
border-radius: 12rpx 12rpx 12rpx 12rpx;
border: 1rpx solid #D9D9D9;
color: #4B4B4B;
font-family: 'PingFang SC', 'PingFang SC';
font-weight: 500;
font-size: 24rpx;
padding-left: 15rpx;
cursor: pointer;
margin: 24rpx 32rpx 0 0;
white-space: nowrap;
/* 防止文本换行 */
text-overflow: ellipsis;
/* 超出部分显示省略号 */
overflow: hidden;
/* 隐藏超出部分 */
text-align: left;
/* 文字靠左对齐 */
line-height: 50rpx;
/* 垂直居中对齐 */
box-sizing: border-box;
/* 确保 padding 和 border 不影响宽度和高度 */
display: inline-block;
/* 确保容器内文字正确对齐 */
}
}
.selectTime.selected {
width: 288rpx;
height: 50rpx;
border-radius: 12rpx 12rpx 12rpx 12rpx;
background: #008CFF;
font-family: PingFang SC, PingFang SC;
font-weight: 800;
font-size: 24rpx;
color: #FFFFFF;
cursor: pointer;
margin: 24rpx 32rpx 0 0;
}
}
.white-space-2 {
display: -webkit-box; /* 将元素设置为弹性盒子 */
-webkit-box-orient: vertical; /* 设置内容垂直排列 */
-webkit-line-clamp: 2; /* 限制显示两行 */
overflow: hidden; /* 超出部分隐藏 */
text-overflow: ellipsis; /* 超出部分显示省略号 */
white-space: normal; /* 允许换行 */
width: 100%; /* 宽度占满父容器 */
}
</style>