<route lang="json5" type="page">
|
{
|
layout: 'default',
|
needLogin: true,
|
style: {
|
navigationBarTitleText: '点检汇总',
|
},
|
}
|
</route>
|
|
<template>
|
<z-paging ref="paging" v-model="dataList" @query="queryList" show-refresher-update-time>
|
<template #top>
|
<wd-tabs v-model="activeTab" @change="handleTabChange">
|
<wd-tab title="待点检"></wd-tab>
|
<wd-tab title="待确认"></wd-tab>
|
<wd-tab title="已完成"></wd-tab>
|
</wd-tabs>
|
</template>
|
<view class="bg-base">
|
<wd-card type="rectangle" v-for="(item, index) in dataList" :key="item.id">
|
<template #title>
|
<view class="flex justify-between">
|
<view class="flex items-center menu-title-box">
|
<view class="menu-indicator"></view>
|
<view class="ml-1 text-sm align-center">{{ item.equName }}</view>
|
<view class="text-color-gray ml-2 text-mini">{{ item.assetNo }}</view>
|
</view>
|
|
<view class="flex items-center">
|
<text class="text-color-gray text-mini">
|
{{
|
viewMode === 'Day' ? item.planTimeStr : item?.planTimeStr?.substring(0, 7) || ''
|
}}
|
</text>
|
</view>
|
</view>
|
</template>
|
<view class="flex h-[200rpx]" items-center>
|
<image class="slot-img text-center" src="/static/images/camera.png" />
|
<view class="flex-1">
|
<view class="text-color-gray text-sm mt-1 flex">
|
<text class="mr-3">总数: {{ item.recordCount }}</text>
|
|
|
<text class="mx-3">已点检: {{ item.checkCount }}</text>
|
|
|
<text class="ml-3">未点检: {{ item.unCheckCount }}</text>
|
</view>
|
<view class="text-color-gray text-sm mt-2 flex">
|
<text class="mr-3">正常: {{ item.normalNum }}</text>
|
|
|
<text class="mx-3">异常: {{ item.abNormalNum }}</text>
|
</view>
|
<view class="text-color-gray text-sm mt-2 flex">
|
<text>状态:</text>
|
<template v-if="item.status === '1'">
|
<wd-icon class="icon-color-success" name="check-outline" size="34rpx"></wd-icon>
|
<text class="ml-1">已完成</text>
|
</template>
|
<template v-else-if="item.status === '2'">
|
<wd-icon class="icon-color-warning" name="check-outline" size="34rpx"></wd-icon>
|
<text class="ml-1">已确认</text>
|
</template>
|
<template v-else>
|
<wd-icon class="icon-color-base" name="detection" size="40rpx"></wd-icon>
|
<text class="ml-1">进行中</text>
|
</template>
|
</view>
|
<view class="text-color-gray text-sm mt-2 flex">创建时间: {{ item.createTime }}</view>
|
</view>
|
<wd-button size="small" icon="edit-outline" @click.stop="itemClick(item)">明细</wd-button>
|
</view>
|
</wd-card>
|
</view>
|
</z-paging>
|
</template>
|
|
<script setup lang="ts">
|
import { getInspStList } from '@/service/inspect'
|
import dayjs from 'dayjs'
|
|
// 标签页相关
|
const activeTab = ref(0) // 默认选中第一个标签页(待点检)
|
|
// 原有变量
|
const viewMode = ref<string>('Day')
|
const equName = ref<string>('所有设备')
|
const filterDate = ref<string>('1')
|
const status = ref<string>('0') // 默认为待点检状态
|
|
const viewModeList = ref<Record<string, any>[]>([
|
{ label: '日视图', value: 'Day' },
|
{ label: '月视图', value: 'Month' },
|
])
|
const filterDateList = ref<Record<string, any>[]>([
|
{ label: '所有数据', value: '0' },
|
{ label: '当天(月)数据', value: '1' },
|
])
|
|
const equList = ref<Record<string, any>[]>([{ label: '所有设备', value: '所有设备' }])
|
|
// 标签页切换处理函数
|
function handleTabChange({ index }) {
|
// 根据标签页索引设置对应的状态值
|
if (index === 0) {
|
// 待点检
|
status.value = '0'
|
} else if (index === 1) {
|
// 待确认
|
status.value = '1'
|
} else if (index === 2) {
|
// 已完成
|
status.value = '2'
|
}
|
// 重新加载数据
|
reloadData()
|
}
|
|
// 原有函数
|
function handleViewMode({ value }) {
|
reloadData()
|
}
|
function handleEquName({ value }) {
|
console.log(value)
|
}
|
function handleFilterDate({ value }) {
|
reloadData()
|
}
|
|
const paging = ref(null)
|
const dataList = ref([])
|
|
const queryList = (pageNum?: number, pageSize?: number) => {
|
const params: any = {
|
pageNum,
|
pageSize,
|
viewMode: viewMode.value,
|
status: status.value, // 添加状态筛选
|
}
|
if (filterDate.value === '1') {
|
params.planTime = dayjs().format('YYYY-MM-DD')
|
} else {
|
delete params.planTime
|
}
|
getInspStList(params)
|
.then((res: any) => {
|
// 请勿在网络请求回调中给dataList赋值!!只需要调用complete就可以了
|
paging.value.completeByTotal(res.rows, res.total)
|
})
|
.catch((res) => {
|
// 如果请求失败写paging.value.complete(false),会自动展示错误页面
|
// 注意,每次都需要在catch中写这句话很麻烦,z-paging提供了方案可以全局统一处理
|
// 在底层的网络请求抛出异常时,写uni.$emit('z-paging-error-emit');即可
|
paging.value.complete(false)
|
})
|
}
|
|
function itemClick(item) {
|
// const inspCode = `${item.equId}_${item.planTime}_${viewMode.value}`
|
uni.navigateTo({
|
// url: `/pages/inspect/insp-record?id=${item.id}&createTime=${item.createTime}&inspCode=${inspCode}&specialNote=${item.specialNote ?? ''}&equName=${item.equName ?? ''}&assetNo=${item.assetNo ?? ''}&planTimeStr=${item.planTimeStr ?? ''}`,
|
url: `/pages/inspect/insp-record?id=${item.id}&viewMode=${viewMode.value}`,
|
})
|
}
|
|
function reloadData() {
|
paging.value.reload()
|
}
|
onLoad(() => {
|
uni.$on('insp-st-refresh', reloadData)
|
})
|
onUnload(() => {
|
uni.$off('insp-st-refresh', reloadData)
|
})
|
</script>
|
|
<style scoped lang="scss">
|
.menu-title-box {
|
}
|
|
.slot-img {
|
width: 72rpx;
|
height: 72rpx;
|
margin-right: 24rpx;
|
}
|
.statu-img {
|
width: 60rpx;
|
height: 40rpx;
|
}
|
.text-mini {
|
font-size: 24rpx;
|
}
|
|
.menu-indicator {
|
width: 6rpx;
|
height: 26rpx;
|
border-radius: 10rpx;
|
background-color: $uni-color-primary;
|
}
|
:deep(.wd-card__footer) {
|
padding: 10rpx !important;
|
}
|
:deep(.wd-card__title-content) {
|
padding: 24rpx 0 !important;
|
}
|
</style>
|