86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Vue
		
	
	
<template>
 | 
						|
  <view>
 | 
						|
    <view v-for="(item, index) in popupList" :key="index">
 | 
						|
      <su-popup
 | 
						|
        v-if="index === currentIndex"
 | 
						|
        :show="item.isShow"
 | 
						|
        type="center"
 | 
						|
        backgroundColor="none"
 | 
						|
        round="0"
 | 
						|
        :showClose="true"
 | 
						|
        :isMaskClick="false"
 | 
						|
        @close="onClose(index)"
 | 
						|
      >
 | 
						|
        <view class="img-box">
 | 
						|
          <image
 | 
						|
            class="modal-img"
 | 
						|
            :src="sheep.$url.cdn(item.imgUrl)"
 | 
						|
            mode="widthFix"
 | 
						|
            @tap.stop="onPopup(item.url)"
 | 
						|
          />
 | 
						|
        </view>
 | 
						|
      </su-popup>
 | 
						|
    </view>
 | 
						|
  </view>
 | 
						|
</template>
 | 
						|
 | 
						|
<script setup>
 | 
						|
  import sheep from '@/sheep';
 | 
						|
  import { computed, ref } from 'vue';
 | 
						|
  import { saveAdvHistory } from '@/sheep/hooks/useModal';
 | 
						|
 | 
						|
  // 定义属性
 | 
						|
  const props = defineProps({
 | 
						|
    data: {
 | 
						|
      type: Object,
 | 
						|
      default() {},
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  // const modalStore = sheep.$store('modal');
 | 
						|
  const modalStore = JSON.parse(uni.getStorageSync('modal-store') || '{}');
 | 
						|
  console.log(modalStore)
 | 
						|
  const advHistory = modalStore.advHistory || [];
 | 
						|
  const currentIndex = ref(0);
 | 
						|
  const popupList = computed(() => {
 | 
						|
    const list = props.data.list || [];
 | 
						|
    const newList = [];
 | 
						|
    if (list.length > 0) {
 | 
						|
      list.forEach((adv) => {
 | 
						|
        if (adv.showType === 'once' && advHistory.includes(adv.imgUrl)) {
 | 
						|
          adv.isShow = false;
 | 
						|
        } else {
 | 
						|
          adv.isShow = true;
 | 
						|
          newList.push(adv);
 | 
						|
        }
 | 
						|
 | 
						|
        // 记录弹窗已显示过
 | 
						|
        saveAdvHistory(adv);
 | 
						|
      });
 | 
						|
    }
 | 
						|
    return newList;
 | 
						|
  });
 | 
						|
 | 
						|
  // 跳转链接
 | 
						|
  function onPopup(path) {
 | 
						|
    sheep.$router.go(path);
 | 
						|
  }
 | 
						|
 | 
						|
  // 关闭
 | 
						|
  function onClose(index) {
 | 
						|
    currentIndex.value = index + 1;
 | 
						|
    popupList.value[index].isShow = false;
 | 
						|
  }
 | 
						|
</script>
 | 
						|
 | 
						|
<style lang="scss" scoped>
 | 
						|
  .img-box {
 | 
						|
    width: 610rpx;
 | 
						|
    // height: 800rpx;
 | 
						|
  }
 | 
						|
  .modal-img {
 | 
						|
    width: 100%;
 | 
						|
    height: 100%;
 | 
						|
  }
 | 
						|
</style>
 |