This commit is contained in:
qiuyuan 2025-08-12 17:44:54 +08:00
parent a5178d64f6
commit e55fe17bcf
4 changed files with 210 additions and 64 deletions

View File

@ -32,7 +32,8 @@
</view>
</view>
</view>
<view> <Copyright/><Footer></Footer></view>
<Copyright/>
<Footer></Footer>
</view>
</template>
@ -109,15 +110,17 @@
$transition: all 0.3s ease; //
.activity-list-page {
padding: 20rpx;
background-color: $secondary-color;
min-height: 100vh;
box-sizing: border-box;
background-color: #f5f7fa;
padding: 20rpx;
min-height: 100vh;
box-sizing: border-box;
display: flex; /* 新增 */
flex-direction: column; /* 新增 */
padding-bottom: calc(100rpx + 80rpx); /* 调整为footer高度 + copyright高度 */
.activity-container {
// display: grid;
// grid-template-columns: repeat(2, 1fr);
// gap: 20rpx;
flex: 1; /* 新增 - 让内容区域占据剩余空间 */
margin-bottom: 20rpx; /* 新增 - 与版权组件保持间距 */
}
.activity-item {

View File

@ -378,21 +378,21 @@
$tag-radius: 8rpx;
.container {
position: relative; //
min-height: 100vh;
padding-bottom: 120rpx; // copyright
box-sizing: border-box; // padding
padding: 0;
min-height: 100vh;
background-color: $bg-color;
padding: 20rpx;
min-height: 100vh;
box-sizing: border-box;
display: flex; /* 新增 */
flex-direction: column; /* 新增 */
padding-bottom: calc(100rpx + 80rpx); /* 调整为footer高度 + copyright高度 */
.copyright-fixed {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 10; /* 防止被其他元素遮挡 */
}
// .copyright-fixed {
// position: fixed;
// bottom: 0;
// left: 0;
// right: 0;
// z-index: 10; /* */
// }
.nav-bar {
display: flex;

View File

@ -51,7 +51,6 @@
</view>
<view class="order-description">{{ order.content }}</view>
<view class="order-meta">
<!-- <text class="meta-item">{{ order.label || '通用问题' }}</text> -->
<button
@click.stop="handleAction(order, $event)"
class="order-action"
@ -61,19 +60,28 @@
</button>
</view>
</view>
</view>
<!-- 空状态提示 -->
<u-empty
textSize="24"
width="180px"
height="780px"
v-if="filteredOrders.length === 0"
mode="data"
icon="/static/imgs/noData.jpeg"
></u-empty>
</view>
<!-- <Footer></Footer> -->
<!-- 加载更多提示 -->
<view class="load-more" v-if="loading">
<u-loading-icon mode="circle" size="24"></u-loading-icon>
<text class="load-text">加载中...</text>
</view>
<!-- 空状态提示 -->
<u-empty
textSize="24"
width="180px"
height="780px"
v-if="filteredOrders.length === 0 && !loading"
mode="data"
icon="/static/imgs/noData.png"
></u-empty>
<!-- 没有更多数据提示 -->
<view class="no-more" v-if="noMoreData && orders.length > 0 && filteredOrders.length != 0">
<text>没有更多数据了</text>
</view>
</view>
</view>
<!-- 发布工单按钮 -->
<view class="fab-container">
@ -88,6 +96,7 @@
import Footer from '@/components/footer_common.vue';
import { IMAGE_BASE_URL,BASE_URL } from '@/utils/config';
import { formatTime, formatRelativeTime } from '@/utils/timeFormat';
import { get, post,put } from '@/utils/request';
export default {
components: {
@ -104,6 +113,10 @@
currentTab: '', //
isLoading: false,
formatTime,
currentPage: 1, //
pageSize: 10, //
loading: false, //
noMoreData: false, //
};
},
computed: {
@ -115,6 +128,10 @@
}
}
},
onReachBottom() {
//
this.loadMore();
},
mounted(){
this.getReciprocitiesList();
},
@ -175,6 +192,15 @@
// tabs
handleTabChange(index) {
this.currentTab = index.value;
this.resetList(); //
},
//
resetList() {
this.currentPage = 1;
this.orders = [];
this.noMoreData = false;
this.getReciprocitiesList();
},
//
@ -221,19 +247,35 @@
uni.navigateTo({ url: '/pages/mySeekHelpDetail/index' });
},
//
loadMore() {
if (this.loading || this.noMoreData) return;
this.currentPage += 1;
this.getReciprocitiesList();
},
//
async getReciprocitiesList() {
if (this.isLoading) return;
this.isLoading = true;
if (this.loading) return;
this.loading = true;
try {
const res = await get('/api/v1/app_auth/my/reciprocities', {
current: 1,
pageSize: 10,
current: this.currentPage,
pageSize: this.pageSize,
});
console.log("res",res)
if (res?.success) {
this.orders = res.data || [];
const newData = res.data || [];
if (this.currentPage === 1) {
this.orders = newData;
} else {
this.orders = [...this.orders, ...newData];
}
//
this.noMoreData = newData.length < this.pageSize;
}
} catch (err) {
console.error('获取我的求助失败:', err);
@ -241,8 +283,12 @@
title: '加载列表失败',
icon: 'none'
});
// 退
if (this.currentPage > 1) {
this.currentPage -= 1;
}
} finally {
this.isLoading = false;
this.loading = false;
}
},
}
@ -388,6 +434,28 @@
}
}
}
//
.load-more {
display: flex;
justify-content: center;
align-items: center;
padding: 20rpx 0;
color: $gray-color;
font-size: 26rpx;
.load-text {
margin-left: 15rpx;
}
}
//
.no-more {
text-align: center;
padding: 20rpx 0;
color: $gray-color;
font-size: 26rpx;
}
}
}
@ -399,8 +467,8 @@
z-index: 100;
.fab-button {
width: 130rpx;
height: 130rpx;
width: 90rpx;
height: 90rpx;
border-radius: 50%;
background: $gradient-primary;
display: flex;

View File

@ -61,19 +61,32 @@
</button>
</view>
</view>
</view>
<!-- 空状态提示 -->
<u-empty
textSize="24"
width="180px"
height="780px"
v-if="filteredOrders.length === 0"
mode="data"
icon="/static/imgs/noData.jpeg"
></u-empty>
</view>
<Footer></Footer>
<!-- 加载状态提示 -->
<view class="load-more" v-if="loading">
<u-loading-icon mode="circle" size="24"></u-loading-icon>
<text class="load-text">加载中...</text>
</view>
<!-- 空状态提示 -->
<u-empty
textSize="24"
width="180px"
height="780px"
v-if="filteredOrders.length === 0 && !loading"
mode="data"
icon="/static/imgs/noData.png"
></u-empty>
<!-- 没有更多数据提示 -->
<view class="no-more" v-if="noMoreData && orders.length > 0 && filteredOrders.length != 0">
<text>没有更多数据了</text>
</view>
</view>
</view>
<!-- 发布工单按钮 -->
<view class="fab-container">
@ -104,10 +117,20 @@
currentTab: '', //
isLoading: false,
formatTime,
currentPage: 1, //
pageSize: 10, //
loading: false, //
noMoreData: false, //
};
},
mounted(){
this.getWorkOrderList();
//
uni.$on('scrollToLower', this.loadMore);
},
beforeDestroy() {
//
uni.$off('scrollToLower', this.loadMore);
},
computed: {
filteredOrders() {
@ -172,6 +195,15 @@
handleTabChange(index) {
this.currentTab = index.value;
this.resetList(); //
},
//
resetList() {
this.currentPage = 1;
this.orders = [];
this.noMoreData = false;
this.getWorkOrderList();
},
showPublishForm() {
@ -202,7 +234,7 @@
const res = await put(`/api/v1/app_auth/work-order/${orderId}`, {status:98});
if (res?.success) {
uni.showToast({ title: '工单已撤回', icon: 'success' });
this.getWorkOrderList();
this.resetList(); //
}
} catch (err) {
console.error('撤回工单失败:', err);
@ -215,22 +247,43 @@
uni.navigateTo({ url: '/pages/myTicketsDetail/index' });
},
//
loadMore() {
if (this.loading || this.noMoreData) return;
this.currentPage += 1;
this.getWorkOrderList();
},
async getWorkOrderList(){
if (this.isLoading) return;
this.isLoading = true;
if (this.loading) return;
this.loading = true;
try {
const res = await get('/api/v1/app_auth/my/work-order', {
current: 1,
pageSize: 10,
current: this.currentPage,
pageSize: this.pageSize,
});
if (res?.success) {
this.orders = res.data || [];
const newData = res.data || [];
if (this.currentPage === 1) {
this.orders = newData;
} else {
this.orders = [...this.orders, ...newData];
}
//
this.noMoreData = newData.length < this.pageSize;
}
} catch (err) {
console.error('获取我的求助失败:', err);
console.error('获取工单列表失败:', err);
uni.showToast({ title: '加载列表失败', icon: 'none' });
// 退
if (this.currentPage > 1) {
this.currentPage -= 1;
}
} finally {
this.isLoading = false;
this.loading = false;
}
}
}
@ -376,6 +429,28 @@
}
}
}
//
.load-more {
display: flex;
justify-content: center;
align-items: center;
padding: 20rpx 0;
color: $gray-color;
font-size: 26rpx;
.load-text {
margin-left: 15rpx;
}
}
//
.no-more {
text-align: center;
padding: 20rpx 0;
color: $gray-color;
font-size: 26rpx;
}
}
}
@ -387,8 +462,8 @@
z-index: 100;
.fab-button {
width: 130rpx;
height: 130rpx;
width: 90rpx;
height: 90rpx;
border-radius: 50%;
background: $gradient-primary;
display: flex;