141 lines
3.1 KiB
Vue
141 lines
3.1 KiB
Vue
|
<script setup>
|
|||
|
import { onLoad, onReachBottom } from '@dcloudio/uni-app'
|
|||
|
import { queryList } from '@/api/apis'
|
|||
|
|
|||
|
const page = ref(1)
|
|||
|
const pageSize = ref(10)
|
|||
|
const total = ref(0)
|
|||
|
const reportList = ref([])
|
|||
|
const loadingState = ref('loading')
|
|||
|
const num = ref(0)
|
|||
|
const max = ref(60)
|
|||
|
|
|||
|
// 初始加载数据
|
|||
|
function fetchData() {
|
|||
|
queryList({ page: page.value, page_size: pageSize.value }).then((res) => {
|
|||
|
if (res.code === 200) {
|
|||
|
total.value = res.data.total
|
|||
|
if (res.data.list && res.data.list.length > 0) {
|
|||
|
reportList.value.push(...res.data.list)
|
|||
|
page.value += 1
|
|||
|
}
|
|||
|
if (reportList.value.length >= total.value) {
|
|||
|
loadingState.value = 'finished'
|
|||
|
}
|
|||
|
else {
|
|||
|
loadingState.value = 'loading'
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
// 初始加载
|
|||
|
onLoad(() => {
|
|||
|
fetchData()
|
|||
|
})
|
|||
|
|
|||
|
// 下拉触底加载更多
|
|||
|
onReachBottom(() => {
|
|||
|
if (loadingState.value !== 'finished') {
|
|||
|
if (num.value >= max.value) {
|
|||
|
loadingState.value = 'finished'
|
|||
|
}
|
|||
|
else {
|
|||
|
fetchData()
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
function toDetail(item) {
|
|||
|
// if (item.query_state !== 'success')
|
|||
|
// return
|
|||
|
uni.navigateTo({
|
|||
|
url: `/pages/report?order_id=${item.order_id}`,
|
|||
|
})
|
|||
|
}
|
|||
|
// 状态文字映射
|
|||
|
function stateText(state) {
|
|||
|
switch (state) {
|
|||
|
case 'pending':
|
|||
|
return '查询中'
|
|||
|
case 'success':
|
|||
|
return '查询成功'
|
|||
|
case 'failed':
|
|||
|
return '查询失败'
|
|||
|
default:
|
|||
|
return '未知状态'
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 状态颜色映射
|
|||
|
function statusClass(state) {
|
|||
|
switch (state) {
|
|||
|
case 'pending':
|
|||
|
return 'status-pending'
|
|||
|
case 'success':
|
|||
|
return 'status-success'
|
|||
|
case 'failed':
|
|||
|
return 'status-failed'
|
|||
|
default:
|
|||
|
return ''
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<template>
|
|||
|
<wd-notice-bar
|
|||
|
text="为保证用户的隐私以及数据安全,您的报告生成30天之后将自动清除,请及时保存您的报告。" prefix="warn-bold" color="#007aff"
|
|||
|
background-color="#f8f8f8"
|
|||
|
/>
|
|||
|
<view class="flex flex-col gap-4 p-4">
|
|||
|
<view v-for="item in reportList" :key="item.id" class="card flex flex-col gap-2" @click="toDetail(item)">
|
|||
|
<view class="flex items-center justify-between">
|
|||
|
<view class="">
|
|||
|
状态:
|
|||
|
</view>
|
|||
|
<view class="rounded-xl px-2 py-1" :class="[statusClass(item.query_state)]">
|
|||
|
{{ stateText(item.query_state) }}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="flex items-center justify-between">
|
|||
|
<view class="">
|
|||
|
报告类型
|
|||
|
</view>
|
|||
|
<view>
|
|||
|
{{ item.product_name }}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="flex items-center justify-between">
|
|||
|
<view class="">
|
|||
|
查询时间:
|
|||
|
</view>
|
|||
|
<view>
|
|||
|
{{ item.create_time }}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<!-- 加载更多 -->
|
|||
|
<wd-loadmore :state="loadingState" @reload="fetchData" />
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.status-pending {
|
|||
|
@apply bg-yellow-100 text-yellow-600;
|
|||
|
}
|
|||
|
|
|||
|
.status-success {
|
|||
|
@apply bg-green-100 text-green-600;
|
|||
|
}
|
|||
|
|
|||
|
.status-failed {
|
|||
|
@apply bg-red-100 text-red-600;
|
|||
|
}
|
|||
|
</style>
|
|||
|
|
|||
|
<route lang="json">
|
|||
|
{
|
|||
|
"layout": "page",
|
|||
|
"title": "历史报告"
|
|||
|
}
|
|||
|
</route>
|