150 lines
3.4 KiB
Vue
150 lines
3.4 KiB
Vue
<template>
|
||
<view class="work-container">
|
||
|
||
<uni-card v-for="(item,index) of dataList" class="parent">
|
||
<template v-slot:title>
|
||
<h3 class="title">{{item.declarationLabel}}</h3>
|
||
</template>
|
||
<h3>{{item.requirementDescription}}</h3>
|
||
<h3>{{item.occurTime}}</h3>
|
||
<view class="card-actions-item" @click="actionsClick(item.id)">
|
||
<button size="mini">详情</button>
|
||
</view>
|
||
</uni-card>
|
||
<uni-load-more status="已经没有更多数据了"></uni-load-more>
|
||
</uni-section>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
listData
|
||
} from '@/api/system/dict/data.js'
|
||
import {
|
||
listSafetyDeclaration
|
||
} from "@/api/sidebar/sidebar.js"
|
||
import formatTime from '@/utils/formatTime.js'
|
||
|
||
export default {
|
||
name: "FilingLog",
|
||
data() {
|
||
return {
|
||
dataList: [],
|
||
queryParams: {
|
||
pageNum: 1, // 初始页码设为1
|
||
pageSize: 10
|
||
},
|
||
isLoading: false, // 添加一个标志位,用于防止重复请求
|
||
typeDataList: [],
|
||
total: 0
|
||
}
|
||
},
|
||
methods: {
|
||
actionsClick(e) {
|
||
uni.navigateTo({
|
||
url: `/pages/work/sidebar/safetyDeclaratio/index?id=` + e
|
||
})
|
||
},
|
||
async getList() {
|
||
if (this.isLoading) return; // 如果已经在加载中,则不执行
|
||
this.isLoading = true;
|
||
const res = await listSafetyDeclaration(this.queryParams);
|
||
if (this.typeDataList.length == 0) {
|
||
this.typeDataList = await listData({
|
||
dictType: "hs_declaration_type"
|
||
});
|
||
}
|
||
this.total = res.total
|
||
let processedDataList = res.rows.map(item => {
|
||
const matchedType = this.typeDataList.rows.find(type => type.dictValue == item.declarationType);
|
||
const time = formatTime(item.occurTime);
|
||
return {
|
||
...item,
|
||
occurTime: time,
|
||
declarationLabel: matchedType ? matchedType.dictLabel : "未知类型"
|
||
};
|
||
});
|
||
// 合并新旧数据
|
||
this.dataList = [...this.dataList, ...processedDataList];
|
||
},
|
||
onLoad(options) {
|
||
this.getList();
|
||
},
|
||
},
|
||
onReachBottom() {
|
||
this.isLoading = false;
|
||
//上拉到底时触发,onReachBottom函数跟生命周期同级
|
||
let allTotal = this.queryParams.pageNum * this.queryParams.pageSize
|
||
console.log("allTotal",allTotal);
|
||
console.log("this.total",this.total);
|
||
if (allTotal < this.total) {
|
||
this.queryParams.pageNum++;
|
||
// this.queryParams.page++//当前条数小于总条数 则增加请求页数
|
||
this.getList() //调用加载数据方法
|
||
setTimeout(() => {
|
||
//结束下拉刷新
|
||
uni.stopPullDownRefresh();
|
||
}, 1000);
|
||
} else {
|
||
console.log('已加载全部数据')
|
||
}
|
||
},
|
||
onPullDownRefresh() {
|
||
this.queryParams.pageNum=1;
|
||
this.isLoading = false;
|
||
//下拉刷新触发,onPullDownRefresh函数跟生命周期同级
|
||
this.dataList = []
|
||
this.getList().then(res=>{
|
||
setTimeout(() => {
|
||
//结束下拉刷新
|
||
uni.stopPullDownRefresh();
|
||
}, 1000);
|
||
})
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
page {
|
||
display: flex;
|
||
flex-direction: column;
|
||
box-sizing: border-box;
|
||
background-color: #fff;
|
||
min-height: 100%;
|
||
height: auto;
|
||
}
|
||
|
||
|
||
.work-container {
|
||
margin-left: 4px
|
||
}
|
||
|
||
|
||
.parent {
|
||
position: relative;
|
||
|
||
h3 {
|
||
margin-bottom: 5px;
|
||
font-weight:600;
|
||
color: rgb(153, 153, 153);
|
||
}
|
||
|
||
.title {
|
||
font-weight:bold;
|
||
padding: 3rpx;
|
||
color: black;
|
||
}
|
||
}
|
||
|
||
.card-actions-item {
|
||
display: inline-block;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
position: absolute;
|
||
bottom: 5px;
|
||
right: 30px;
|
||
button {
|
||
border-radius: 10px;
|
||
}
|
||
}
|
||
</style> |