| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | <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>
 |