This commit is contained in:
xuli
2025-11-28 16:42:57 +08:00
parent c8ad7a076c
commit 5d2472eac5
16 changed files with 770 additions and 521 deletions

View File

@@ -28,65 +28,56 @@
<!-- 列表 -->
<mescroll-uni ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
:up="upOption" :down="downOption" :fixed="false" class="scroll-h" :class="{'loading-scroll':cssFlag}">
<view class="white-bg">
<block v-if="list">
<block v-if="list.length>0">
<!-- <view class="r-title">{{ parseTime(obj.dateStr,'{y}-{m}-{d} 星期{a}')}}</view> -->
<view class="report-list" v-for="(item, index) in list" :key="index" @click="handleDetail(item)">
<view class="r-list" style="padding-bottom:0">
<view class="r-name">{{ item.taskName }}</view>
<view class="r-right">
<!-- 任务(巡检)状态 1=未发布 2=已发布 3 进行中 4 已完成 5 已过期 -->
<!-- 状态为3进行中时 进度>0执行中 进度=0为待执行 -->
<block v-if="item.taskStatus==3">
<img v-if="item.count==0" :src="'static/images/polling/icon-start.png'" class="img-w" />
<img v-else :src="'static/images/polling/icon-pending.png'" class="img-w" />
</block>
<img v-else-if="item.taskStatus==4" :src="'static/images/polling/icon-complete.png'" class="img-complete" />
<img v-else-if="item.taskStatus==5" :src="'static/images/polling/icon-Expired.png'" class="img-w" />
</view>
</view>
<view class="r-list">
<view class="r-left">
<view class="r-l-left">巡检单号<span class="r-gray">{{ item.taskId }}</span></view>
<view class="r-l-right">类型<span class="r-gray">{{ formatTaskType(item.taskType) }}</span></view>
</view>
</view>
<view class="r-list">
<view class="r-left">
<view class="r-l-left">开始时间<span class="r-gray">{{ parseTime(item.planTime,'{y}-{m}-{d} {h}:{i}') }}</span></view>
<view class="r-l-right">任务时长<span class="r-gray">{{ item.workHour }}小时</span></view>
</view>
</view>
<view class="r-list">
<view class="r-left">
<view class="r-l-left">
完成进度<span class="r-gray"><span :class="{'r-red':item.groupFinishNum<item.groupNum}">{{item.groupFinishNum}}</span>/{{item.groupNum}}</span>
</view>
<view class="r-l-right">完成比率<span class="r-blue">{{(item.groupFinishNum/item.groupNum).toFixed()+'%'}}</span></view>
</view>
</view>
<view class="r-list">
<view class="r-left">
<view>任务状态
<span class="r-gray" v-if="item.taskStatus==3">
<block v-if="item.groupFinishNum==0">待执行</block>
<block v-else>执行中</block>
</span>
<span class="r-gray" v-else>{{formatTaskStatus(item.taskStatus) }}</span>
</view>
</view>
</view>
<view class="report-border" v-if="index<list.length-1"></view>
<view class="white-bg" v-if="list.length>0">
<!-- <view class="r-title">{{ parseTime(obj.dateStr,'{y}-{m}-{d} 星期{a}')}}</view> -->
<view class="report-list" v-for="(item, index) in list" :key="index" @click="handleDetail(item)">
<view class="r-list" style="padding-bottom:0">
<view class="r-name">{{ item.taskName }}</view>
<view class="r-right">
<!-- 任务(巡检)状态 1=未发布 2=已发布 3 进行中 4 已完成 5 已过期 -->
<!-- 状态为3进行中时 进度>0执行中 进度=0为待执行 -->
<block v-if="item.taskStatus==3">
<img v-if="item.count==0" :src="'static/images/polling/icon-start.png'" class="img-w" />
<img v-else :src="'static/images/polling/icon-pending.png'" class="img-w" />
</block>
<img v-else-if="item.taskStatus==4" :src="'static/images/polling/icon-complete.png'" class="img-complete" />
<img v-else-if="item.taskStatus==5" :src="'static/images/polling/icon-Expired.png'" class="img-w" />
</view>
</block>
<view v-else class="no-data">
<img :src="'static/images/polling/pic-NoResult.png'" class="no-pic" />
</view>
</block>
<view v-else class="no-data">
<img :src="'static/images/polling/pic-NoResult.png'" class="no-pic" />
<view class="r-list">
<view class="r-left">
<view class="r-l-left">巡检单号<span class="r-gray">{{ item.taskId }}</span></view>
<view class="r-l-right">类型<span class="r-gray">{{ formatTaskType(item.taskType) }}</span></view>
</view>
</view>
<view class="r-list">
<view class="r-left">
<view class="r-l-left">开始时间<span class="r-gray">{{ parseTime(item.planTime,'{y}-{m}-{d} {h}:{i}') }}</span></view>
<view class="r-l-right">任务时长<span class="r-gray">{{ item.workHour }}小时</span></view>
</view>
</view>
<view class="r-list">
<view class="r-left">
<view class="r-l-left">
完成进度<span class="r-gray"><span :class="{'r-red':item.groupFinishNum<item.groupNum}">{{item.groupFinishNum}}</span>/{{item.groupNum}}</span>
</view>
<view class="r-l-right">完成比率<span class="r-blue">{{(item.groupFinishNum/item.groupNum*100).toFixed()+'%'}}</span></view>
</view>
</view>
<view class="r-list">
<view class="r-left">
<view>任务状态
<span class="r-gray" v-if="item.taskStatus==3">
<block v-if="item.groupFinishNum==0">待执行</block>
<block v-else>执行中</block>
</span>
<span class="r-gray" v-else>{{formatTaskStatus(item.taskStatus) }}</span>
</view>
</view>
</view>
<view class="report-border" v-if="index<list.length-1"></view>
</view>
</view>
</mescroll-uni>
</view>
@@ -105,7 +96,6 @@ import searchDate from '@/components/searchDate.vue';
import { parseTime,getDateRange,getDateRangeName } from '@/utils/datetime.js';
import { taskTypeOptions,formatTaskType,formatTaskStatus } from '@/utils/status.js';
import { taskLists } from '@/api/polling.js'
const { proxy } = getCurrentInstance();
// 底部日期选择
@@ -118,7 +108,6 @@ const dateClose=()=>{
}
// 选完日期提交回显
const dateConfirm=(dateObj)=>{
console.log(dateObj)
isShow.value = false;
dateStr.value = dateObj.startDate + ' 至 '+dateObj.endDate;
dateStrName.value = getDateRangeName(dateObj.lastType)
@@ -132,7 +121,7 @@ let taskTypeIndex = ref(0);
let taskTypeArr = ref([]);
let dateStr = ref('');
let dateStrName=ref('');
onLoad(option => {
onLoad(async option => {
taskTypeOptions.forEach(item => {
taskTypeArr.value.push(item.label)
});
@@ -143,6 +132,10 @@ onLoad(option => {
form.value.startDate = dateObj.startDate;
form.value.endDate = dateObj.endDate
// let res = await getList(0,3);
// cssFlag.value = false;
// list.value = res.list;
})
@@ -155,6 +148,7 @@ const changeTaskType = (e)=>{
}
// 查询列表
let lastId = ref('');
let list = ref([]);
let form = ref({
startDate:''
@@ -162,6 +156,7 @@ let form = ref({
const mescrollRef = ref(null);
const upOption = ref({
// use: false,
auto: true, // 禁用自动上拉
page: { num: 0, size: 10 },
noMoreSize: 5,
empty: {
@@ -183,16 +178,18 @@ let cssFlag=ref(false);//控制样式
const mescrollInit = (mescroll) => {
cssFlag.value = true;
mescrollRef.value = mescroll;
// mescrollRef.value.triggerUpScroll();
};
// 下拉刷新
const downCallback = async (mescroll) => {
console.log("mescroll=>",mescroll)
try {
console.log("下拉刷新")
const res = await getList(1, upOption.value.page.size);
console.log("下拉刷新");
const res = await getList(1, upOption.value.page.size,undefined);
cssFlag.value = false;
list.value = res.list;
mescroll.resetUpScroll();
mescroll.resetUpScroll()
} catch (error) {
mescroll.endErr();
} finally {
@@ -204,8 +201,8 @@ const downCallback = async (mescroll) => {
// 上拉加载更多
const upCallback = async (mescroll) => {
try {
console.log("上拉加载更多")
let res = await getList(mescroll.num, mescroll.size);
console.log("上拉加载更多",mescroll)
let res = await getList(mescroll.num, mescroll.size,lastId.value);
if (mescroll.num === 1) {
list.value = res.list;
} else {
@@ -218,27 +215,32 @@ const upCallback = async (mescroll) => {
}
// 获取数据列表
const getList = (pageIndex, pageSize) => {
const getList = (pageIndex, pageSize,last) => {
return new Promise(async (resolve) => {
let param = {
pageIndex,
// pageIndex,
pageSize,
timeBegin: form.value.startDate,
timeEnd: form.value.endDate,
lastId:last,
taskType:taskTypeOptions[taskTypeIndex.value].value
}
let res = await taskLists(param);
let data = res ||{};
lastId.value = data.isEnd==1?undefined:data.lastId
resolve({
...data,
// total: res.recordCount || 0
total: (data.isEnd==1?0:data.lastId) || 1, //是否最后一页(1-是,0-否)
lastId: data.isEnd==1?undefined:data.lastId
});
});
}
// 执行查询
const handleSearch=()=>{
getList(0,10)
const handleSearch= async ()=>{
let res = await getList(0,10);
cssFlag.value = false;
list.value = res.list;
}
// 查看详情
@@ -253,10 +255,10 @@ const handleDetail = (item,type) =>{
<style scoped>
.scroll-h{
/* #ifdef APP-PLUS */
height: calc(100vh - 108px);
height: calc(100vh - 148px);
/* #endif */
/* #ifndef APP-PLUS */
height: calc(100vh - 135px);
height: calc(100vh - 132px);
/* #endif */
}
@@ -364,7 +366,7 @@ const handleDetail = (item,type) =>{
width:525rpx
}
.r-left .r-l-left{
width:370rpx;
width:350rpx;
}
.r-left .r-l-right{