This commit is contained in:
xingyy 2023-12-20 13:19:54 +08:00
parent a30b63dd36
commit de3915db25
2 changed files with 352 additions and 2 deletions

350
src/pages/home1/index.vue Normal file
View File

@ -0,0 +1,350 @@
<template>
<div class="main">
<!-- <div class="content3">
<div class="wrap1">
<image src="https://cdns.fontree.cn/fonchain-main/prod/image/1833/avatar/1d693295-c16b-4845-a02b-c052d9cf847a.png" /></div>
<div class="wrap2" @click="viewBlindBoxDetail">
<div class="wrap2_1">博物馆开馆纪念盲盒</div>
<div class="wrap2_2">剩余 {{allRemainingQty}}/{{allIssueQty}}</div>
<div class="wrap2_3">查看详情</div>
</div>
</div>
<div class="content1">
<div class="wrap1">门票名称</div>
<div class="wrap2">剩余数量</div>
</div>
<div class="content2">
<div class="wrap1" v-for="(item,index) in [...tableData,...tableData]" :key="item.id">
<div @click="viewImg(item)" class="wrap1_1">
<image :src="item.ticketImage"></image>
</div>
<div class="wrap1_2">{{item.ticketName}}</div>
<div class="wrap1_3" :class="item.remainingQuantity===0?['sold_out']:[]">{{item.remainingQuantity===-1?'不限':item.remainingQuantity}}/{{item.issueQuantity===-1?'不限':item.issueQuantity}}</div>
<div class="wrap1_4" @click="goBooking(item)" :class="item.remainingQuantity===0?['sold_out']:[]">{{item.remainingQuantity===0?'无票':'预约'}}</div>
</div>
<div class="wrap2">
<image src="../../static/zu758@3x.png"></image>
</div>
</div>-->
<div class="content4">
<div class="wrap1">
<image src="https://cdns.fontree.cn/fonchain-main/prod/image/1833/avatar/13e8a0db-9dca-4bdf-89d5-5868ec7c96e0.png"></image>
</div>
<div class="wrap2" @click="viewBlindBoxDetail">
<div class="wrap2_1">
<div class="wrap2_1_1">博物馆开馆纪念盲盒</div>
<div class="wrap2_1_2">剩余 {{allRemainingQty}}/{{allIssueQty}}</div>
</div>
<div class="wrap2_2">查看详情</div>
</div>
</div>
<div class="attention" v-if="store.isShow">
<div>
港澳台游客请至现场办理门票业务
</div>
<tm-icon name="tmicon-times-circle" color="#fff" :fontSize="24" @click="handleTips"></tm-icon>
</div>
</div>
</template>
<script setup>
/* 导入区*/
import { ref } from "vue";
import {ticketlist} from "@/http/apis";
import {useMainStore} from "@/store";
/**/
const store=useMainStore()
let height = ref('')
let isShow = ref(true)
const tableData=ref([])
const page=ref(1)
const pageSize=ref(9999)
const viewImg=(item)=>{
uni.previewImage({
urls:[item.ticketImage],
indicator:'none'
})
}
const allIssueQty=ref(0)
const allRemainingQty=ref(0)
const getData=async ()=>{
const data={
"keyword": "",
"isMobile": 1,
"page": page.value,
"pageSize": pageSize.value
}
const res=await ticketlist(data)
if (res.code===200){
allIssueQty.value=res.data.allIssueQty
allRemainingQty.value=res.data.allRemainingQty
tableData.value=res.data.data
}
}
const goBooking=(item)=>{
if (item.remainingQuantity!==0){
uni.navigateTo({
url: '/pages/ticket/index'
})
}else {
uni.showToast({
title: '该门票已售罄',
icon: 'none',
duration: 1000
})
}
uni.setStorageSync('currentBooking',item)
store.currentBooking=item
}
const viewBlindBoxDetail=()=>{
uni.navigateTo({
url: '/pages/blind-box/index'
})
}
getData()
const handleTips = () => {
store.isShow=false
}
</script>
<style scoped lang="scss">
.main {
height: 80vh;
width: 100%;
background-size: 100%;
padding: 0 32rpx 38rpx 32rpx;
display: flex;
flex-direction: column;
box-sizing: border-box;
.content4{
margin-top: 40rpx;
width: 700rpx;
height: 576rpx;
border-radius: 20rpx;
box-sizing: border-box;
overflow: hidden;
.wrap2{
box-sizing: border-box;
padding-right: 48rpx;
padding-left: 48rpx;
justify-content: space-between;
background-color: #fff;
display: flex;
align-items: center;
width: 700rpx;
height: 120rpx;
.wrap2_2{
font-size: 24rpx;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
width: 240rpx;
height: 56rpx;
background-color: #F7963B;
border-radius: 20rpx;
}
.wrap2_1{
.wrap2_1_2{
font-size: 20rpx;
color: #F7963B;
}
.wrap2_1_1{
font-size: 28rpx;
color: #000000;
}
}
}
.wrap1{
width: 700rpx;
height: 456rpx;
image{
width: 100%;
height: 100%;
}
}
}
.content3{
border-radius: 20rpx;
margin-bottom: 30rpx;
margin-top: 40rpx;
overflow: hidden;
display: flex;
.wrap2{
background-color: #fff;
width: 350rpx;
height: 214rpx;
display: flex;
flex-direction: column;
align-items: center;
.wrap2_1{
margin-top: 40rpx;
font-size: 28rpx;
color: #000;
}
.wrap2_2{
margin-top: 8rpx;
font-size: 24rpx;
color: #F7963B;
}
.wrap2_3{
margin-top: 20rpx;
font-size: 24rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 20rpx;
width: 240rpx;
height: 56rpx;
color: #fff;
background-color: #F7963B;
}
}
.wrap1{
width: 350rpx;
height: 214rpx;
image{
width: 100%;
height: 100%;
}
}
}
.content2{
flex: 1;
overflow-y: scroll;
margin-top: 22rpx;
.wrap2{
margin-bottom: 68rpx;
margin-top: 68rpx;
display: flex;
justify-content: center;
image{
width: 587.8rpx;
height: 22rpx;
}
}
.wrap1{
margin-bottom: 18rpx;
border-radius: 20rpx;
background-color: #fff;
height: 108rpx;
width: 100%;
display: flex;
align-items: center;
overflow: hidden;
.wrap1_1{
box-sizing: border-box;
padding: 5rpx;
display: flex;
align-items: center;
justify-content: center;
image{
width: 165rpx;
height: 100rpx;
}
margin-right: 18rpx;
}
.wrap1_4{
width: 108rpx;
height: 56rpx;
background-color: #F7963B;
border-radius: 20rpx;
display: flex;
color: #fff;
justify-content: center;
align-items: center;
&.sold_out{
background-color: #AFAFAF;
}
}
.wrap1_3{
color: #F7963B;
font-size: 24rpx;
display: flex;
justify-content: center;
align-items: center;
width: 224rpx;
&.sold_out{
color: #AFAFAF;
}
}
.wrap1_2{
width: 140rpx;
height: 76rpx;
}
}
}
.content1 {
box-sizing: border-box;
width: 100%;
background: #AB2F23;
height: 70rpx;
border-radius: 20rpx;
display: flex;
align-items: center;
color: #FFFFFF;
font-size: 28rpx;
.wrap1 {
padding-right: 36rpx;
text-align: right;
width: 50%;
flex-shrink: 1;
font-size: 28rpx;
color: #FFFFFF;
}
.wrap2 {
padding-left: 36rpx;
width: 50%;
flex-shrink: 1;
font-size: 28rpx;
color: #FFFFFF;
}
}
.container {
overflow-y: auto;
height: 1120rpx;
box-sizing: border-box;
margin-top: 20rpx;
display: flex;
flex-direction: column;
padding-bottom: 2rpx;
margin-bottom: 20rpx;
.item {
overflow: hidden;
display: flex;
align-items: center;
background: #FFFFFF;
border-radius: 20rpx;
margin-bottom: 20rpx;
.detail {
flex: 1;
margin-left: 18rpx;
display: flex;
align-items: center;
justify-content: space-around;
}
}
}
.attention {
width: 664rpx;
display: flex;
justify-content: space-between;
align-items: center;
position: fixed;
background: #761C1F;
height: 68rpx;
color: #FFFFFF;
bottom: 50rpx;
padding: 16rpx 40rpx;
box-sizing: border-box;
border-radius: 24rpx;
font-size: 28rpx;
}
}
</style>

View File

@ -2,13 +2,13 @@
<div class="tab-index">
<custom-title class="title-block" :title="accTitleList.find(x=>x.value===acc).title" :isBack="false">
</custom-title>
<div class="ld ld-float-ltr-in" v-show="acc===0"><home /></div>
<div class="ld ld-float-ltr-in" v-show="acc===0"><home1 /></div>
<div v-show="acc===1" class="ld ld-float-rtl-in"><mine /></div>
<self-tabbar v-model="acc"></self-tabbar>
</div>
</template>
<script setup>
import home from '../home/index.vue'
import home1 from '../home1/index.vue'
import mine from '../mine/index.vue'
import selfTabbar from '../../components/self-tabbar/index.vue'
import {ref} from "vue";