<template>
<view class="list">
<view class="list-title">
<view v-for="(item,index) in titleList" :class="i == index?'active':''" @click="tab(index)">{{item.name}}
<text>{{item.num}}</text>
</view>
</view>
<view class="box">
<view class="item" @click="to(item)" v-for="(item,index) in dataList" :key="index">
<view class="number">
<view>工单编号:{{item.code}}</view>
<text>{{statusList[item.status]}}</text>
</view>
<view class="phone">
<text>{{item.applicantName}}</text>
<text>{{item.applicantPhone}}</text>
</view>
<view class="time">时间:{{item.insertTime}}</view>
<view class="address time">地址:{{item.address}}</view>
</view>
<uni-load-more :status="status"></uni-load-more>
</view>
</view>
</template>
<script>
import statusList from './config.js'
export default {
data() {
return {
statusList,
i: 0,
status: 'no-more',
titleList: [
{
name: '全部',
num: 10
},
{
name: '待接单',
num: 10
},
{
name: '待验收',
num: 10
},
],
params: {
page: 1,
length: 10,
flag:'todo'
},
dataList: [],
pages:1,
}
},
async onShow() {
this.dataList = []
this.initialization()
this.getNum()
},
async onReachBottom() {
console.log(this.params.page,this.pages)
// if(this.params.page >= this.pages) {
// return
// }
this.params.page ++
if(this.i == 1){
const waitRes = await this.getList(3)
if(waitRes) this.dataList = [...this.dataList, ...waitRes.records]
}else if(this.i == 2){
const alreadyRes = await this.getList(4)
if(alreadyRes) this.dataList = [...this.dataList, ...alreadyRes.records]
}else{
console.log(3333333)
this.initialization()
}
},
methods: {
async tab(index) {
this.dataList = []
this.i = index
this.params.page = 1
this.pages = 1
if(index == 1){
const res = await this.getList(3)
this.pages = res.pages
this.dataList = [...this.dataList, ...res.records]
}else if(index == 2){
const alreadyRes = await this.getList(4)
console.log(alreadyRes,8888888)
this.pages = alreadyRes.pages
this.dataList = [...this.dataList, ...alreadyRes.records]
}else{
this.initialization()
}
},
to(item) {
uni.navigateTo({
url: `./detail?id=${item.id}&status=${item.status}&actKey=${item.actKey}&bizId=${item.bizId}&taskId=${item.taskId}&nodeId=${item.nodeId}&instanceId=${item.instanceId}&pdfId=${item.pdfId}&code=${item.code}&applyId=${item.applyId}`
})
},
async initialization() {
const res = await this.getList()
if(res) {
this.pages = res.pages
this.dataList = [...this.dataList, ...res.records]
}
},
async getNum(){
const res = await this.getList()
const awitRes = await this.getList(3)
const alreadyRes = await this.getList(4)
this.titleList[0].num = res.total
this.titleList[1].num = awitRes.total
this.titleList[2].num = alreadyRes.total
},
getList(status) {
console.log(this.params.page,this.pages)
if(this.params.page > this.pages){
this.status = 'noMore'
return
}
this.status = 'loading'
if(status){
this.params.status = status
}else delete this.params.status
return new Promise(resolve => {
this.$ajax({
url: '/api/repair/examinationList',
medthod: 'post',
params:this.params,
needToken: true,
}).then(res => {
resolve(res.data.data)
if(res.data.data.length > 0){
this.pages = Number(res.data.data.pages)
if(this.params.page > Number(res.data.data.pages)){
this.status = 'noMore'
}else{
this.status = 'more'
}
}else{
this.status = 'noMore'
}
})
})
}
}
}
</script>
image.png