Files
cz-app/src/pages/case-library/components/LoadMoreFooter.vue
2026-09-11 08:02:01 +08:00

84 lines
1.4 KiB
Vue

<script setup lang="ts">
defineProps<{
loading: boolean
hasMore: boolean
finished: boolean
}>()
const emit = defineEmits<{
loadMore: []
}>()
</script>
<template>
<view
v-if="hasMore || finished"
class="load-more-footer"
@tap="emit('loadMore')"
>
<view
v-if="loading"
class="load-more-footer__loading"
>
<view class="load-more-footer__spinner" />
<text class="load-more-footer__text">
加载更多...
</text>
</view>
<text
v-else-if="hasMore"
class="load-more-footer__text"
>
加载更多
</text>
<text
v-else-if="finished"
class="load-more-footer__finished"
>
没有更多了
</text>
</view>
</template>
<style scoped lang="scss">
@import '@/styles/variables.scss';
.load-more-footer {
display: flex;
align-items: center;
justify-content: center;
padding: 32rpx 0 16rpx;
}
.load-more-footer__loading {
display: flex;
align-items: center;
}
.load-more-footer__spinner {
width: 32rpx;
height: 32rpx;
margin-right: 12rpx;
border: 4rpx solid #d6e4ff;
border-top-color: $color-primary;
border-radius: 50%;
animation: load-more-spin 0.8s linear infinite;
}
.load-more-footer__text,
.load-more-footer__finished {
font-size: 24rpx;
color: $color-text-secondary;
}
@keyframes load-more-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
</style>