|
|
- <template>
- <view class="invoiceIssuance">
- <view class="head-box"></view>
- <Navbar title="我的收藏" :autoBack="true" :bgColor="bgColor" leftIconSize="18px" height="100rpx"
- :leftIconColor="leftIconColor" :titleStyle="{color:fontColor}" />
- <view class="content contentPosition_">
- <uv-sticky offsetTop="220rpx" :bgColor="bgColor">
- <uv-tabs :scrollable="false" @click="tabs" :list="tabList" lineWidth="40" :current="tabCurrent"
- :lineColor="`url(${lineBg}) 100% 100%`"
- :activeStyle="{color: '#FD5C5C', fontWeight: 'bold',transform: 'scale(1.05)'}"
- :inactiveStyle="{color: '#999', transform: 'scale(1)'}"
- itemStyle="padding-left: 15px; padding-right: 15px; height: 44px;"></uv-tabs>
- </uv-sticky>
- <view class="info cardStyle_"
- @click="toDetail(item)"
- v-for="(item, index) in cardListData" :key="index">
- <view class="left">
- <image :src="
- item[typeKey[item.type]].image &&
- item[typeKey[item.type]].image.split(',')[0]" alt="">
- </view>
- <view class="right">
- <view class="detailed">
- <view class="title">{{item[typeKey[item.type]].title}}</view>
- <view class="date">{{item[typeKey[item.type]].startTime}}</view>
- <view class="address">{{item[typeKey[item.type]].address}}</view>
- </view>
- <view class="data">
- <view>{{item[typeKey[item.type]].num}}/{{item[typeKey[item.type]].sum}}</view>
- <view class="btn-box" v-if="item[typeKey[item.type]].state == 0">立即报名</view>
- <view class="btn-box btn-box2" v-if="item[typeKey[item.type]].state == 1">已结束</view>
- </view>
- </view>
- <i class="icon" @click.stop="collect(item)"></i>
- </view>
- <uv-load-more :status="status" fontSize="24rpx" dashed line />
- <!-- <view class="info cardStyle_">
- <view class="left">
- <image src="https://img0.baidu.com/it/u=4274003247,920124130&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1031" alt="">
- </view>
- <view class="right">
- <view class="detailed">
- <view class="title">夏日去撒野旅游计划~</view>
- <view class="date">2024.10.28 10:00</view>
- <view class="address">成都市东丽湖露营地32号</view>
- </view>
- <view class="data">
- <view>12/30</view>
- <button class="mini-btn" size="mini" @click="toDetail(item)">立即报名</button>
- </view>
- </view>
- <i class="icon"></i>
- </view> -->
- </view>
- </view>
- </template>
-
- <script>
- import Navbar from '@/pages/components/Navbar.vue'
- import {
- globalMixin
- } from '../pages/mixins/globalMixin';
- export default {
- mixins: [globalMixin],
- components: {
- Navbar
- },
- computed: {
- customStyle1() {
- return {
- height: '30rpx',
- color: '#FF4546',
- }
- }
- },
- data() {
- return {
- lineBg: require('@/static/image/cart/tabIcon.png'),
- status:"loading",
- tabCurrent:0,
- params: {
- pageNo: 1,
- pageSize: 10,
- type:0,
- },
- totalPage: '',
- cardListData: [],
- tabList: [
- {
- id: 0,
- name: '活动'
- },
- {
- id: 1,
- name: '旅行'
- },
- ],
- typeKey : ['activityObject', 'travelObject'],
- }
- },
- onReachBottom() {
- if (this.params.pageNo >= this.totalPage) return
- this.params.pageNo++
- this.collectPageList()
- },
- onLoad() {
- this.collectPageList()
- },
- onPullDownRefresh() {
- this.params.pageNo = 1
- this.cardListData = []
- this.collectPageList()
- },
- methods: {
- tabs(e) {
- this.tabCurrent = e.index
- this.cardListData = []
- this.params.pageNo = 1
- this.collectPageList()
- },
- collectPageList() {
- this.params.type = this.tabCurrent
- this.$api('collectPageList', this.params, res => {
- uni.stopPullDownRefresh()
- if (res.code == 200) {
- this.totalPage = res.result.pages
- this.cardListData = [...this.cardListData, ...res.result.records]
- if(this.params.pageNo >= this.totalPage) {
- this.status = "nomore"
- }else {
- this.status = "loadmore"
- }
- }
- })
- },
- toDetail(item) {
- if(item.type == 0) {//活动
- uni.navigateTo({
- url: `/pages_order/huodong-detail?activityId=${item.activityObject.id}`
- })
- }else{//旅行
- uni.navigateTo({
- url: `/pages_order/lvyou-detail?travelId=${item.travelObject.id}`
- })
- }
- },
- collect(item){
- uni.showModal({
- title: '确认取消收藏吗?',
- success : res => {
- if(!res.confirm) return
- this.$api('collect', {
- id : item[this.typeKey[item.type]].id,
- type : item.type,
- }, res => {
- if(res.code == 200){
- this.cardListData = []
- this.params.pageNo = 1
- this.collectPageList()
- uni.showToast({
- title: res.message,
- icon: 'none'
- })
- }
- })
- }
- })
- },
- }
- }
- </script>
- <style scoped lang="scss">
- .invoiceIssuance {
- .content {
- .info {
- position: relative;
- margin: 10rpx 32rpx 36rpx;
- border-radius: 26rpx;
-
- .icon {
- position: absolute;
- right: 0;
- top: 0;
- display: block;
- width: 66rpx;
- height: 56rpx;
- background: red;
- background: url('@/static/image/icon.png') no-repeat;
- background-size: 100% 100%;
- }
-
- .right {
- .data {
- display: flex;
- justify-content: space-between;
- align-items: center;
-
- .mini-btn {
- display: flex;
- align-items: center;
- margin: 0;
- background: linear-gradient(to right, #FE5E5E, #E41522);
- height: 45rpx;
- width: 181rpx;
- color: #fff;
- border-radius: 60rpx;
- padding-bottom: 10rpx;
- }
-
- .btn-box {
- width: 180rpx;
- height: 54rpx;
- background: url('@/static/image/member/btn-2.png') no-repeat;
- background-size: 100% 100%;
- font-weight: 500;
- font-size: 23rpx;
- color: #FFFFFF;
- text-align: center;
- line-height: 54rpx;
- }
- .btn-box2 {
- background: #34312E;
- color: #AFAFAF;
- border-radius: 60rpx;
- }
- }
- }
- }
- }
- }
- </style>
|