You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

222 lines
5.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view>
<view class="">
<view class="activityBox">
<view class="activityBox-top">
<!-- <image src="../../static/img/img_activity.jpg" style="width: 100%;height: 333rpx;"></image> -->
<swiper autoplay="true" :interval="4000" :duration="1000" :indicator-dots="true"
indicator-active-color="rgba(255, 255, 255, 0.7)" indicator-color="rgba(239, 149, 37, 1)"
:current="topSwiperIndex" @change="topSwiperTab">
<swiper-item v-for="(item,index) in list.banners" :key="index">
<view class="swiper-item">
<image :src="item.upload.url" mode="aspectFill"></image>
</view>
</swiper-item>
</swiper>
</view>
<view class="activityBox-content flex-col">
<view class="activityBox-row flex-row justify-between">
<text class="activityBox-title">{{isUnde(list.name)}}</text>
<view class="tag tag_green activityBox_btn">
<text>{{isUnde(list.type_name)}}</text>
</view>
</view>
<view class="activityBox-row">
<text class="icon-shijian iconfont"></text>
<text>活动时间{{timeFormat(list.start_time,"yyyy年MM月DD日")}} {{getHm(list.start_time)}}-{{getHm(list.end_time)}}</text>
</view>
<!-- <view class="activityBox-row">
<text class="icon-huodongfangshi iconfont"></text>
<text>活动方式{{isUnde(list.area_name)}}</text>
</view> -->
<view class="activityBox-row">
<text class="icon-huodong iconfont"></text>
<text>活动地址{{isUnde(list.address)}}</text>
</view>
<view class="activityBox-row">
<text class="icon-renshu iconfont"></text>
<text>人数限制{{isUnde(list.total)==0?'不限':isUnde(list.total)}}</text>
</view>
<view class="activityBox-row flex-row align-center" @click="tothere">
<text class="icon-ditu-dibiao iconfont"></text>
<text>距离{{isUnde(list.distance)}}km</text>
<view class="tomap">
<text class="icon-daohang1 iconfont" style="margin-right: 0;"></text>
</view>
</view>
<view class="colortext activityBox-row" v-if="list.status==1">
{{list.rate_name}} ({{list.orders_total}})
</view>
</view>
</view>
<view class="infoBox">
<view class="infoBox-title">
<text class="infoBox-titletxt">活动详情</text>
</view>
<view class="infoBox-content">
<rich-text style="text-indent: 2em;font-size: 28rpx;" :nodes="list.content"></rich-text>
</view>
</view>
<view class="infofooter flex-row" v-if="list.isCanBook&&list.total!=list.orders_total">
<view style="margin-right: 14rpx;flex: 1;">
<u-button type="primary" @click="tobook('team')"></u-button>
</view>
<view style="margin-left: 14rpx;flex: 1;">
<u-button type="primary" @click="tobook('user')"></u-button>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
id: "",
latitude: "",
longitude: "",
list: {},
topSwiperIndex: 0,
}
},
onLoad(options) {
var that = this;
that.id = options.id;
wx.getLocation({
success(res) {
console.log(res)
that.latitude = res.latitude;
that.longitude = res.longitude;
that.loadActiveInfo()
}
})
},
methods: {
timeFormat(val, format) {
return this.$moment(val).format(format)
},
tothere() {
uni.openLocation({
latitude: parseFloat(this.list.latitude),
longitude: parseFloat(this.list.longitude),
name: this.list.name,
address: this.list.address
})
},
tobook(type) {
uni.navigateTo({
url: "book?type=" + type + "&activity_id=" + this.id
})
},
loadActiveInfo() {
var that = this;
var nt = new Date();
this.util.request({
api: '/api/mobile/activity/show',
data: {
id: that.id,
latitude: that.latitude,
longitude: that.longitude
},
utilSuccess: function(res) {
res.isCanBook = that.$moment(nt).isBefore(res.end_plan);
that.list = res;
wx.setStorage({
key: 'activityinfo',
data: res,
success: () => {
console.log('存储成功');
}
})
},
utilFail: function(res) {
}
})
},
topSwiperTab(e) {
var that = this;
this.topSwiperIndex = Number(e.target.current);
},
isUnde(val) {
if (val) {
return val
} else {
return ""
}
},
getHm(val) {
if (val) {
return this.$moment(val).format("HH:mm")
} else return "";
}
}
}
</script>
<style>
@import url("@/static/css/activitybox.css");
page {
background-color: #f7f6f4;
}
.infoBox {
box-sizing: border-box;
padding: 40rpx 0rpx;
background: #FFFFFF;
margin-bottom: 40rpx;
}
.infoBox-title {
border-left: 3px solid #EF9525;
}
.infoBox-titletxt {
font-size: 30rpx;
color: #4E4E4E;
margin-left: 21rpx;
}
.infoBox-content {
padding: 37rpx 26rpx;
box-sizing: border-box;
font-size: 24rpx;
color: #828282;
margin-bottom: 100rpx;
}
.infofooter {
position: fixed;
width: 100%;
left: 0;
bottom: 0;
background: #FFFFFF;
box-shadow: 2px 3px 10px 0px rgba(107, 94, 77, 0.3);
padding: 22rpx 25rpx;
box-sizing: border-box;
}
swiper {
height: 333rpx
}
swiper image {
width: 100%;
height: 333rpx;
}
.colortext {
color: #D98012
}
</style>