gree_leran/components/CaseList/CaseList.vue

128 lines
2.8 KiB
Vue
Raw Normal View History

2024-06-20 15:36:19 +00:00
<template>
<scroll-view
scroll-y
@scrolltolower="loadMore"
class="case-list"
>
<!-- <CaseBox v-bind="{}" @clickLike="handleClickLike" @clickCollection="clickCollection"></CaseBox> -->
<view class="list-itme" v-for="(item, index) in caseList" :key="item.id">
<CaseBox v-bind="item" @ClickLike="ClickLike" @ClickCollection="ClickCollection"></CaseBox>
</view>
<view v-if="isLoading" class="loading">
<up-loadmore :status="status" />
</view>
</scroll-view>
</template>
<script setup>
import {
onMounted,
reactive,ref
} from 'vue';
const app=getApp();
const userUtils=ref(app.globalData.utils);
const caseList= ref([])
/**
* 获取列表
*/
import { getCaseList } from '@/apis/cast.js';
/**
* 数据转换
*/
import {dataToList} from './ut/dataTo.js'
//点赞列表
import {getLikesList,addLike} from '@/apis/likes.js'
//收藏列表
import {getCollectionsList,addCollections} from "@/apis/collections.js"
import { onShow } from "@dcloudio/uni-app"
const isLoading=ref(false);
const status=ref("nomore");
const getCaseLists=async()=>{
let res= await getCaseList();
let likre=await getLikesList();
let cols=await getCollectionsList();
if(res.code==200){
res=res.data;
likre=likre.code==200?likre.data.casesLikesList:null;
cols=cols.code==200?cols.data.caseCollectionsList:null
console.log("点赞列表",likre,cols);
let a=dataToList(res,likre,cols);
caseList.value=a.slice().reverse();
}
console.log("列表",caseList.value);
}
const loadMore=async()=>{
status.value="loading";
if (isLoading.value) return;
isLoading.value = true;
const newCases = await fetchCases();
console.log("加载更多2...");
isLoading.value = false;
status.value = "nomore";
console.log("加载更多2...");
}
const ClickLike=(info)=>{
console.log("点赞",info)
let bo="0";
if(info.is){
bo="1"
}
addLike({
contentType:0,
contentId:info.id,
extField1:bo,
})
}
const updateList=()=>{
getCaseLists();
}
const ClickCollection=(info)=>{
console.log("收藏")
let bo="0";
if(info.is){
bo="1";
}
addCollections({
contentType:0,
contentId:info.id,
extField1:bo,
})
}
const fetchCases=()=>{
return new Promise((resolve) => {
setTimeout(() => {
}, 1000);
});
}
onMounted(()=>{
// getCaseLists();
})
defineExpose({
updateList
});
onShow(()=>{
getCaseLists();
})
// onShow(()=>{
// console.log("加入来了来了")
// })
</script>
<style lang="scss">
.case-list{
scrollbar-width: none;
// height: 40vh;
// overflow: auto;
height: 100%;
display: flexbox;
flex-flow: column;
background-color: #e2e2e2;
}
.list-itme{
width: 98%;
height: 350rpx;
margin: 10rpx auto;
// background-color: #000;
}
</style>