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.

547 lines
12 KiB

<template>
<view class="wrap">
<view>
<img class="exhibit_bg" :src="bgimg" alt="">
</view>
<view class='content' :style="{'padding-top':padTop+'px'}">
<view class="exhibit" @click='toExhibitList'>
<view>
<view>
<span></span>
<span>当前展览</span>
</view>
<u-icon name="arrow-right" color="#fff"></u-icon>
</view>
</view>
<view class="exhibit_list">
<view v-for="item in exhibitList" class="exhibit_item" @click='todetail(item.id)'>
<img :src="item.head_upload.url" alt="">
<view>
<view>{{item.name}}</view>
<view>时间:{{item.dateRange}}</view>
</view>
</view>
</view>
<view class="relic">
<view :class="!showBook?'relic_active':''" @click="changeBook">革命文物</view>
<view :class="showBook?'relic_active':''" @click="changeBook('book')">党史书籍</view>
</view>
<view class="books" v-if="showBook">
<image class="books_img" src="../../static/book/book_bottom.png" mode=""></image>
<u-swiper @click="toBook" :list="bookList" :displayMultipleItems="displayMultipleItems" :circular="true"
:indicator="true" indicatorStyle="bottom" indicatorMode="dot" bgColor="transparent"
indicatorActiveColor="#9f4946" indicatorInactiveColor="#9f4946" :autoplay="false"
radius="0"></u-swiper>
<!-- <swiper class="swiper" circular
next-margin="180rpx">
<swiper-item v-for="(item,index) in bookList" @click="toBook(item.id)">
<view class="myswiper-item-img">
<image
:src="item.url?item.url:''" alt="" mode="heightFix">
</view>
</swiper-item>
</swiper> -->
</view>
<view class="relics" v-else>
<view class="myswiper">
<swiper class="swiper" @change="changeRelic" :current="relicIndex" circular previous-margin="180rpx"
next-margin="180rpx">
<swiper-item v-for="(item,index) in relicList" @click="toRelicDetail(item.id)">
<view class="myswiper-item-img">
<image :style="{'transform':relicIndex===index?'scale(1.05)':''}"
:src="item.head_upload?item.head_upload.url:item.threed.url" alt="" mode="widthFix">
</view>
</swiper-item>
</swiper>
<view class="myswiper-item-title">
<view class="">
{{relicList[relicIndex].name?relicList[relicIndex].name:''}}
</view>
<!-- <view class="">
革命博物馆典藏
</view> -->
</view>
<!-- <view class="myswiper-item" v-for="(item,index) in relicList">
<view class="myswiper-item-img">
<image :src="item.head_upload.url" alt="">
</view>
<view class="myswiper-item-title">
<view class="">
{{item.name}}
</view>
<view class="">
革命博物馆典藏
</view>
</view>
</view> -->
</view>
</view>
<!-- <view class="relic_list">
<view v-for="item in relicList" class="relic_item" @click='toRelicDetail(item.id)'>
<img :src="item.head_upload.url" alt="">
<view>
<view>{{item.name}}</view>
<view>{{item.contain}}</view>
</view>
</view>
</view> -->
</view>
<tabbar :current-page="3"></tabbar>
</view>
</template>
<script>
import tabbar from "../../components/tabbar/tabbar.vue"
export default {
components: {
tabbar
},
data() {
return {
exhibitList: [],
bookList: [],
relicList: [],
bgimg: '../../static/book/relic_bg.png',
padTop: 0,
showBook: false,
relicIndex: 0,
displayMultipleItems: 0,
authToken: ''
}
},
onLoad() {
const MenuButton = uni.getMenuButtonBoundingClientRect()
this.padTop = MenuButton.top + MenuButton.height + 10
this.authToken = uni.getStorageSync('userInfo_token').token
this.getExhibit()
this.getRelic()
this.getBooks()
},
onShareAppMessage() {
return this.util.shareInfo
},
onShareTimeline(){
return this.util.shareInfo
},
methods: {
cancelTime(str) {
return str ? str.substring(0, 10) : ''
},
toExhibitList() {
uni.navigateTo({
url: "/pages/exhibit/list"
});
},
todetail(id) {
uni.navigateTo({
url: "/pages/exhibit/detail?id=" + id
});
},
changeBook(e) {
if (e === 'book') {
this.showBook = true
this.bgimg = '../../static/book/book_bg.png'
} else {
this.showBook = false
this.bgimg = '../../static/book/relic_bg.png'
}
},
toRelicDetail(id) {
let that = this
let url = `${that.util.HOST}/fbx/wxdetail.html?id=${id}`
let newurl = encodeURIComponent(url)
uni.navigateTo({
url: '/pages/vr/vrpage?link=' + newurl
})
},
toBook(index) {
let id = this.bookList[index].id
uni.navigateTo({
url: '/pages/exhibit/bookdetail?id=' + id
})
},
torelic() {
uni.navigateTo({
url: "/pages/relic/list"
});
},
getExhibit() {
var that = this;
this.util.request({
api: '/api/mobile/exhibit-hall/index',
data: {
page: 1,
page_size: 6,
state: 1,
sort_name: 'state',
sort_name_tow: 'release_time',
sort_type: "DESC",
sort_type_tow: 'DESC'
},
utilSuccess: function(res) {
that.exhibitList = res.data
for (var m of res.data) {
m.dateRange = that.util.splitTime(m.start_time, m.over_time)
}
},
utilFail: function(res) {
}
})
},
changeRelic(e) {
console.log(e)
this.relicIndex = e.detail.current
},
getRelic() {
var that = this;
this.util.request({
api: '/api/mobile/cultural-relic/index',
data: {
page: 1,
page_size: 99,
sort_name: 'release_time',
sort_type: "DESC",
},
utilSuccess: function(res) {
that.relicList = res.data.filter(item => {
return item.show_list === 1
})
},
utilFail: function(res) {
}
})
},
getBooks() {
var that = this;
this.util.request({
api: '/api/mobile/book/index',
data: {
page: 1,
page_size: 99,
sort_name:"datetime",
sort_type:'ASC'
},
utilSuccess: function(res) {
let arr = []
res.data.map(item => {
arr.push({
url: item.image.url,
id: item.id,
title: item.name
})
})
that.bookList = arr
that.displayMultipleItems = 2
},
utilFail: function(res) {
}
})
},
}
}
</script>
<style>
.wrap {
width: 100vw;
height: 100vh;
}
.box-top {
width: 100%;
}
.exhibit_bg {
width: 100vw;
height: 100vh;
position: absolute;
top: 0;
left: 0
}
.content {
/* margin-top: -450rpx; */
padding-bottom: 140rpx;
position: absolute;
top: 0;
left: 0;
z-index: 9;
width: 100%;
height: 100vh;
overflow: scroll;
}
.exhibit {
color: #333;
padding: 0 30rpx;
font-size: 36rpx;
}
.exhibit>view:first-child {
display: flex;
justify-content: space-between;
}
.exhibit>view:first-child span:first-child {
background-color: #ebb966;
width: 5rpx;
height: 50rpx;
margin-right: 22rpx;
display: inline-block;
vertical-align: text-top;
}
.exhibit_list {
display: flex;
justify-content: space-between;
overflow-x: scroll;
margin: 15rpx 10rpx;
margin-right: 0;
padding: 20rpx;
}
.exhibit_item {
width: 520rpx;
border-radius: 20rpx;
background-color: #fff;
box-shadow: 0rpx 0rpx 25rpx 0rpx rgba(33, 22, 19, 0.1);
margin-right: 30rpx;
font-size: 0;
}
.exhibit_item img {
width: 520rpx;
height: 310rpx;
display: block;
border-radius: 20rpx 20rpx 0 0;
}
.exhibit_item>view {
background-color: #fff;
border-radius: 0 0 20rpx 20rpx;
padding: 35rpx;
font-size: 32rpx;
line-height: 48rpx;
}
.exhibit_item>view view:first-child {
width: 100%;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
/* 这里是超出几行省略 */
overflow: hidden;
}
.exhibit_item>view view:last-child {
color: #6E6E6E;
font-size: 28rpx;
margin-top: 20rpx
}
.relic {
display: flex;
padding: 30rpx;
}
.relic>view {
color: black;
text-align: center;
width: 227rpx;
height: 54rpx;
line-height: 53rpx;
font-size: 32rpx;
border: 1px solid #fff;
border-radius: 27rpx;
margin-right: 10rpx;
color: #333;
}
.relic .relic_active {
background: url(../../static/book/current.png) no-repeat left top;
background-size: 100% 100%;
border: 1px solid transparent;
color: #fff;
}
.books {
/* padding-left: 40rpx; */
position: relative;
margin-top: -20rpx;
}
.books_img {
height: 473rpx;
width: 100%;
position: absolute;
top: 28rpx;
left: 0;
}
.books .u-swiper {
/* margin-left: -33rpx; */
height: 530rpx !important;
}
.books .u-swiper__wrapper {
height: 550rpx !important;
}
/deep/ .u-swiper__wrapper__item__wrapper {
margin: 0 -50rpx;
}
.books .u-swiper__wrapper__item__wrapper::before {
content: "";
content: "";
position: absolute;
left: 22%;
bottom: 115rpx;
width: 30rpx;
height: 40rpx;
z-index: -1;
background-color: transparent;
/* margin: 50px; */
box-shadow: 30rpx 10rpx 20rpx rgba(0, 0, 0, 0.3);
transform: translateY(4px) translateX(24rpx) scale(1, 0.9) translateZ(19px) rotate(132deg);
transform-style: preserve-3d;
perspective: 2000rpx;
/* background: hsl(48, 100%, 20%);
transform: translate(0, -15%) rotate(-4deg);
transform-origin: center center;
box-shadow: 0 0 20px 15px hsl(48, 100%, 20%); */
}
.books swiper-item {
/* width: 40% !important; */
height: 473rpx !important;
width: 85% !important;
}
.books .u-swiper__wrapper__item__wrapper__image {
margin-right: 20rpx;
height: 424rpx !important;
}
.books .u-swiper__indicator {
bottom: 40rpx !important
}
.books .u-swiper-indicator__wrapper__dot--active.data-v-647f6c67 {
width: 5px !important;
transform: scale(1.5);
}
.relic_list {}
.relic_item {
margin: 35rpx 30rpx;
border-radius: 20rpx;
display: flex;
justify-content: space-between;
background: linear-gradient(to bottom, #cf995a, #d8b487);
}
.relic_item img {
width: 380rpx;
height: 270rpx;
border-radius: 20rpx 0 0 20rpx;
}
.relic_item>view {
display: inline-block;
width: 300rpx;
padding: 24rpx;
color: #fff;
padding-bottom: 10rpx;
}
.relic_item>view view:first-child {
width: 100%;
/* height:100rpx; */
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
/* 这里是超出几行省略 */
overflow: hidden;
}
.relic_item>view view:last-child {
width: 100%;
word-break: break-all;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
/* 这里是超出几行省略 */
overflow: hidden;
font-size: 28rpx;
margin-top: 20rpx;
}
.myswiper {
width: 100vw;
margin: 40rpx 0 70rpx 0;
}
.myswiper .myswiper-item {
display: inline-block;
}
.myswiper swiper {
height: 400rpx;
min-height: 400rpx;
/* margin-bottom: 40rpx; */
}
.myswiper swiper-item {
text-align: center;
}
.myswiper-item-img {
/* width:501rpx;
height:207rpx; */
}
.myswiper-item-img image {
/* height: 400rpx; */
width: calc(100vw - 370rpx);
transform: scale(.7);
margin-bottom: 40rpx;
max-height: 400rpx;
transform: translate(0px, -42px) scale(.7);
}
.myswiper-item-title {
color: #e4e9f0;
text-align: center;
font-size: 28rpx;
}
.myswiper-item-title>view:first-child {
font-size: 36rpx;
margin-bottom: 10rpx;
}
</style>