[作业设计] - 下拉刷新试题

This commit is contained in:
zouyf 2024-11-09 16:50:28 +08:00
parent 15633f065f
commit 96c074d396
1 changed files with 116 additions and 60 deletions

View File

@ -89,7 +89,7 @@
</el-col>
</el-row>
<!-- 习题表格 -->
<div class="middle" >
<div class="infinite-list-wrapper" >
<!-- <el-table :data="workResource.entpCourseWorkList" style="width: 100%; height: 100%;">
<el-table-column type="index" width="60" />
<el-table-column align="left" >
@ -115,10 +115,15 @@
</template>
</el-table-column>
</el-table> -->
<ul v-infinite-scroll="load" class="infinite-list" style="overflow: auto" infinite-scroll-immediate="false" infinite-scroll-distance='10'>
<ul
v-infinite-scroll="pageLoad"
class="infinite-list"
infinite-scroll-immediate="false"
infinite-scroll-distance='1'
infinite-scroll-delay="1000"
:infinite-scroll-disabled="pageDisabled"
>
<li v-for="(item,index) in workResource.entpCourseWorkList" :key="item" class="infinite-list-item">
<div style="width: 20px;">{{ index +1 }}</div>
<div align="left" style="width: 100%;" >
<!-- <template #header>
<div style="display: flex">
@ -126,7 +131,10 @@
</div>
</template> -->
<div @click="showExamAnalyseDrawer(item)">
<div style="overflow: hidden; text-overflow: ellipsis" v-html="item.titleFormat"></div>
<div>
<span style="width: 20px;">{{ index +1 }}. </span>
<span style="overflow: hidden; text-overflow: ellipsis" v-html="item.titleFormat"></span>
</div>
<div style="overflow: hidden; text-overflow: ellipsis; font-size: 0.9em; margin-top: 6px;" v-html="item.workdescFormat"></div>
<el-col :span="24" style="display: flex">
<div style="font-size: 1em; color: silver; padding-top: 5px">{{ item.entpname }} {{ item.editusername }}</div>
@ -134,12 +142,14 @@
</el-col>
</div>
</div>
<div align="left" width="60">
<div align="right" style="width: 72px;">
<el-button type="primary" @click="handleClassWorkQuizAdd('entpcourseworklist', item.id)">添加</el-button>
</div>
</li>
</ul>
<p class="infinite-list-loading" v-if="pageParams.loading">加载中...</p>
<p class="infinite-list-noMove" v-if="pageNoMore">无更多试题...</p>
</div>
<!-- 分页 这里不用-->
<!-- <div style="height: 55px;">
@ -256,7 +266,7 @@
</template>
<script setup>
import { onMounted, ref, nextTick, watch, reactive, getCurrentInstance } from 'vue'
import { onMounted, ref, nextTick, watch, reactive, getCurrentInstance, computed } from 'vue'
import { ElMessage } from 'element-plus'
import { cloneDeep } from 'lodash'
import { useRouter } from 'vue-router'
@ -390,6 +400,17 @@ const boardLoading = ref(false);
//----------
const fileLoading = ref(false); // loading
//
const BASE_LIMIT_COUT = 10; //
const pageNoMore = computed( () => workResource.entpCourseWorkList.length >= pageParams.value.originCount+BASE_LIMIT_COUT );
const pageDisabled = computed(() => pageParams.value.loading || pageNoMore.value);
const pageParams = ref({
loading: false, //
originCount: 0, //
isFirst: true, //
})
/***
* 作业类型切换
*/
@ -407,6 +428,8 @@ const changeFormType = (val) => {
const handleQueryParamFromEntpCourseWork = (queryType) => {
//
// this.paginationParams = {pageNum: 1,pageSize: 10};
//
initPageParams();
handleQueryFromEntpCourseWork(queryType);
};
@ -418,9 +441,9 @@ const handleQueryParamFromEntpCourseWork = (queryType) => {
* 1 - 按条件查询
* 2 - 按关键词查询
*/
const handleQueryFromEntpCourseWork= (queryType) => {
const handleQueryFromEntpCourseWork= async (queryType) => {
pageParams.value.loading = true;
const queryForm = {
//
currentPage: paginationParams.pageNum,
@ -451,18 +474,9 @@ const handleQueryFromEntpCourseWork= (queryType) => {
// queryForm.edusubject = '';
// }
listEntpcourseworkNew(queryForm).then(entpcourseworkres => {
// if (queryType == 1 && this.entpCourseWorkQueryParams.worktype == '') {
// // ,
// const allowedWorkTypes = ['', '', '', '', ''];
// workResource.entpCourseWorkList = entpcourseworkres.rows.filter(item => {
// return !allowedWorkTypes.includes(item.worktype);
// });
// } else {
// workResource.entpCourseWorkList = entpcourseworkres.rows;
// }
const entpcourseworkres = await listEntpcourseworkNew(queryForm);
const data = entpcourseworkres.data;
if(data&&data.length>0){
if(data && data.length>0){
// workResource.entpCourseWorkList = entpcourseworkres.data;
// workResource.entpCourseWorkTotal = entpcourseworkres.data.length;
@ -472,16 +486,17 @@ const handleQueryFromEntpCourseWork= (queryType) => {
}
})
//
//
processList(data);
workResource.entpCourseWorkList.push(...data);
}else{
workResource.entpCourseWorkList = [];
workResource.entpCourseWorkTotal = 0
}
})
//
if (pageParams.value.isFirst) {
pageParams.value.isFirst = false;
pageParams.value.originCount = workResource.entpCourseWorkList.length;
}
}
pageParams.value.loading = false;
}
//
@ -900,13 +915,28 @@ const showExamAnalyseDrawer = (row) => {
proxy.$refs.examDetailsDrawerRef.acceptParams(activeParams);
})
}
const load = () => {
// count.value += 2
console.log("加载中")
// workResource.entpCourseWorkList
const pageLoad = async() => {
console.log("加载中...")
paginationParams.pageNum ++ ,
paginationParams.pageSize = 5,
handleQueryFromEntpCourseWork(0);
paginationParams.pageSize = 2,
await handleQueryFromEntpCourseWork(0);
}
const initPageParams = () => {
//
workResource.entpCourseWorkList = [];
workResource.entpCourseWorkTotal = 0
//
pageParams.value.loading = false;
pageParams.value.isFirst = true;
pageParams.value.originCount = 0;
//
paginationParams.pageNum = 1;
paginationParams.pageSize = 10;
}
@ -933,6 +963,8 @@ watch(() => props.propsformobj.uniquekey, (newVal) => {
})
watch(() => props.bookobj.levelSecondId, (newVal) => {
console.log(props.bookobj,'课程选择')
//
initPageParams();
//
handleQueryFromEntpCourseWork(0);
//
@ -940,6 +972,7 @@ watch(() => props.bookobj.levelSecondId, (newVal) => {
//
getEntpCourseWorkPointList();
})
</script>
<style lang="scss" scoped>
@ -1027,24 +1060,47 @@ watch(() => props.bookobj.levelSecondId, (newVal) => {
box-sizing: border-box;
background-color: rgb(231, 231, 231)
}
.infinite-list {
.infinite-list-wrapper{
height: 100%;
text-align: center;
overflow: auto;
.infinite-list {
padding: 0;
margin: 0;
list-style: none;
}
.infinite-list .infinite-list-item {
.infinite-list-item {
display: flex;
align-items: center;
//justify-content: center;
//height: 50px;
background: var(--el-color-primary-light-9);
margin: 10px;
color: var(--el-color-primary);
}
.infinite-list .infinite-list-item + .list-item {
//background: var(--el-color-primary-light-9);
padding: 10px;
border-top: 1px solid #eee;
//color: var(--el-color-primary);
}
.infinite-list-item:hover {
background-color: #F3F5F8;
}
.infinite-list-item + .list-item {
margin-top: 10px;
}
}
}
.infinite-list-loading{
padding: 10px 0;
border-top: 1px solid #eee;
color: red;
}
.infinite-list-noMove{
padding: 10px 0;
border-top: 1px solid #eee;
color: #999;
}
}
}
</style>
<style src="@/assets/styles/JYStyle.css"></style>