开发笔记:vue3+ts+vant 卡片数据分页,下拉加载,卡片左滑可删除

效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实现

使用vantui组件 van-swipe-cell + van-card (商品卡片)

核心代码

const currentPage = ref(1)
const pageSize = ref(4)
const totalSize = ref(10)
const loading = ref(false)
const finished = ref(false)
const refreshing = ref(false)
const checkList = ref([])
    <van-list
          v-model="loading"
          :finished="finished"
          finished-text="没有更多了"
          @load="nextPage"
      >
        <van-swipe-cell style="margin-top: 10px"  v-for="item in checkList"
               :key="item.artNo" :before-close="beforeClose">
          <van-card
              :thumb="item.masterUrl"
          >
            <template #title>
              <H4 style="text-align: left;float: left">自定义展示: 这是内容内容内容 </H4>
            </template>
          </van-card>
          <template #right>
            <van-button square text="删除" type="danger" class="delete-button" />
          </template>
        </van-swipe-cell>
      </van-list>
onMounted(() => {
  //获取图片库数据
  initGallery()

})
const beforeClose = ({ position }) => {
  switch (position) {
    case 'left':
    case 'cell':
    case 'outside':
      return true;
    case 'right':
      return new Promise((resolve) => {
        showConfirmDialog({
          title: '确定删除吗?',
        })
            .then(() => resolve(true))
            .catch(() => resolve(false));
      });
  }
}
const initGallery = async () => {
  loading.value = true
  // useUserInfoStore.profile
  let data = {
    pageNo: currentPage.value,
    pageSize: pageSize.value,
    artNo: artNo.value,
    styleAndSerial: serialAndStyle.value,
    // createUser
  }
  const res = await queryPagePicture(data);
  loading.value = false
  console.log("获取图片库数据 ==", res)
  if (res.code == 200) {
    //如果下拉刷新,数据清空重新获取第一页
    if (refreshing.value) {
      checkList.value = []
      refreshing.value = false
    }
    totalSize.value = res.totalData
    checkList.value.push(...res.list)
    console.log("checkList",checkList.value)
    // 如果数据加载完毕,finished 标志位置为 true,滑到页面底部则不会再触发 nextPage() 方法了。
    // currentPage 重置为 1
    if (checkList.value.length >= totalSize.value) {
      finished.value = true
      currentPage.value = 1
    }
  }
}

const nextPage = async () => {
  loading.value = false
  currentPage.value += 1
  await initGallery()
}
.delete-button {
  height: 100%;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值