qingnianyexiao2.0/packageA/activity/activityDetaill.vue
2025-04-01 09:03:51 +08:00

1376 lines
31 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>