|
@@ -1,7 +1,7 @@
|
|
<template>
|
|
<template>
|
|
<el-card class="dr-task" body-class="task-card" shadow="never">
|
|
<el-card class="dr-task" body-class="task-card" shadow="never">
|
|
<template #header>绘画任务</template>
|
|
<template #header>绘画任务</template>
|
|
- <div class="task-image-list" ref="imageTaskRef" @scroll="handleTabsScroll">
|
|
|
|
|
|
+ <div class="task-image-list" ref="imageTaskRef">
|
|
<ImageTaskCard
|
|
<ImageTaskCard
|
|
v-for="image in imageList"
|
|
v-for="image in imageList"
|
|
:key="image"
|
|
:key="image"
|
|
@@ -10,6 +10,13 @@
|
|
@on-btn-click="handlerImageBtnClick"
|
|
@on-btn-click="handlerImageBtnClick"
|
|
@on-mj-btn-click="handlerImageMjBtnClick"/>
|
|
@on-mj-btn-click="handlerImageMjBtnClick"/>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div class="task-image-pagination">
|
|
|
|
+ <el-pagination background layout="prev, pager, next"
|
|
|
|
+ :default-page-size="pageSize"
|
|
|
|
+ :total="pageTotal"
|
|
|
|
+ @change="handlerPageChange"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
</el-card>
|
|
</el-card>
|
|
<!-- 图片 detail 抽屉 -->
|
|
<!-- 图片 detail 抽屉 -->
|
|
<ImageDetailDrawer
|
|
<ImageDetailDrawer
|
|
@@ -34,7 +41,8 @@ const imageTaskRef = ref<any>() // ref
|
|
const imageTaskLoadingInstance = ref<any>() // loading
|
|
const imageTaskLoadingInstance = ref<any>() // loading
|
|
const imageTaskLoading = ref<boolean>(false) // loading
|
|
const imageTaskLoading = ref<boolean>(false) // loading
|
|
const pageNo = ref<number>(1) // page no
|
|
const pageNo = ref<number>(1) // page no
|
|
-const pageSize = ref<number>(20) // page size
|
|
|
|
|
|
+const pageSize = ref<number>(10) // page size
|
|
|
|
+const pageTotal = ref<number>(0) // page size
|
|
|
|
|
|
/** 抽屉 - close */
|
|
/** 抽屉 - close */
|
|
const handlerDrawerClose = async () => {
|
|
const handlerDrawerClose = async () => {
|
|
@@ -49,16 +57,20 @@ const handlerDrawerOpen = async () => {
|
|
/**
|
|
/**
|
|
* 获取 - image 列表
|
|
* 获取 - image 列表
|
|
*/
|
|
*/
|
|
-const getImageList = async () => {
|
|
|
|
|
|
+const getImageList = async (apply:boolean = false) => {
|
|
imageTaskLoading.value = true
|
|
imageTaskLoading.value = true
|
|
try {
|
|
try {
|
|
imageTaskLoadingInstance.value = ElLoading.service({
|
|
imageTaskLoadingInstance.value = ElLoading.service({
|
|
target: imageTaskRef.value,
|
|
target: imageTaskRef.value,
|
|
text: '加载中...'
|
|
text: '加载中...'
|
|
})
|
|
})
|
|
- const { list } = await ImageApi.getImageList({pageNo: pageNo.value, pageSize: pageSize.value})
|
|
|
|
- // imageList.value.push.apply(imageList.value, list)
|
|
|
|
- imageList.value = list
|
|
|
|
|
|
+ const { list, total } = await ImageApi.getImageList({pageNo: pageNo.value, pageSize: pageSize.value})
|
|
|
|
+ if (apply) {
|
|
|
|
+ imageList.value = [...imageList.value, ...list]
|
|
|
|
+ } else {
|
|
|
|
+ imageList.value = list
|
|
|
|
+ }
|
|
|
|
+ pageTotal.value = total
|
|
} finally {
|
|
} finally {
|
|
if (imageTaskLoadingInstance.value) {
|
|
if (imageTaskLoadingInstance.value) {
|
|
imageTaskLoadingInstance.value.close();
|
|
imageTaskLoadingInstance.value.close();
|
|
@@ -118,16 +130,10 @@ const downloadImage = async (imageUrl) => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-const handleTabsScroll = async () => {
|
|
|
|
- // todo 先不分页,只显示 top 前多少
|
|
|
|
- // if (imageTaskRef.value) {
|
|
|
|
- // const { scrollTop, scrollHeight, clientHeight } = imageTaskRef.value;
|
|
|
|
- // if (scrollTop + clientHeight >= scrollHeight - 20 && !imageTaskLoading.value) {
|
|
|
|
- // console.log('分页')
|
|
|
|
- // pageNo.value = pageNo.value + 1
|
|
|
|
- // await getImageList();
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
|
|
+// page change
|
|
|
|
+const handlerPageChange = async (page) => {
|
|
|
|
+ pageNo.value = page
|
|
|
|
+ await getImageList(false)
|
|
}
|
|
}
|
|
|
|
|
|
/** 暴露组件方法 */
|
|
/** 暴露组件方法 */
|
|
@@ -139,7 +145,7 @@ onMounted(async () => {
|
|
await getImageList()
|
|
await getImageList()
|
|
// 自动刷新 image 列表
|
|
// 自动刷新 image 列表
|
|
imageListInterval.value = setInterval(async () => {
|
|
imageListInterval.value = setInterval(async () => {
|
|
- await getImageList()
|
|
|
|
|
|
+ await getImageList(false)
|
|
}, 1000 * 20)
|
|
}, 1000 * 20)
|
|
})
|
|
})
|
|
|
|
|
|
@@ -168,7 +174,7 @@ onUnmounted(async () => {
|
|
height: 100%;
|
|
height: 100%;
|
|
overflow: auto;
|
|
overflow: auto;
|
|
padding: 20px;
|
|
padding: 20px;
|
|
- padding-bottom: 100px;
|
|
|
|
|
|
+ padding-bottom: 140px;
|
|
box-sizing: border-box; /* 确保内边距不会增加高度 */
|
|
box-sizing: border-box; /* 确保内边距不会增加高度 */
|
|
|
|
|
|
>div {
|
|
>div {
|
|
@@ -179,6 +185,21 @@ onUnmounted(async () => {
|
|
//margin-bottom: 100px;
|
|
//margin-bottom: 100px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+.task-image-pagination {
|
|
|
|
+ position: absolute;
|
|
|
|
+ bottom: 60px;
|
|
|
|
+ height: 50px;
|
|
|
|
+ line-height: 90px;
|
|
|
|
+ width: 100%;
|
|
|
|
+ z-index: 999;
|
|
|
|
+ background-color: #ffffff;
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+}
|
|
|
|
+
|
|
</style>
|
|
</style>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|