integrated_traffic_uniapp/pages/application/speEquip/index.vue

267 lines
7.7 KiB
Vue
Raw Normal View History

2024-01-16 17:24:49 +08:00
<template>
<view>
<cu-custom ref="cuCustom" bgColor="bg-gradual-blueness" :isBack="true" :isRingt="true" :backUrl="backUrl">
<block slot="backText">返回</block>
<block slot="content">我的任务</block>
</cu-custom>
<scroll-view scroll-x class="bg-white nav">
<view class="flex text-center">
<view class="cu-item flex-sub" :class="index==TabCur?'text-orange cur':''"
v-for="(item,index) in tabNav" :key="index" @tap="tabSelect" :data-id="index">
{{tabNav[index]}}
</view>
</view>
</scroll-view>
<block>
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
<block v-if="TabCur==0">
<uni-collapse :accordion="true">
<uni-collapse-item :title="period" v-for="(period,index) in periodList" :key="index">
<view class="tasks-warp" v-if="item.PERIOD_NAME==period" v-for="(item,index) in equipList" :key="item.SPECIALEQUIPMENT_ID">
<view class="tasks-item">
<view class="title">
设备名称{{item.EQUIPMENTNAME}}
</view>
<view class="tasks-state">
设备类型{{item.EQUIPMENTTYPENAME}}
</view>
<view class="tasks-state">
巡检周期{{item.PERIOD_NAME}}
</view>
<view class="flex">
<view class="tasks-time">
{{handleIsChecked(item)}}
</view>
<view class="">
<button class="cu-btn bg-orange round sm" @click="$noMultipleClicks(goToAdd, item)">立即巡检</button>
</view>
</view>
</view>
</view>
</uni-collapse-item>
</uni-collapse>
</block>
<view class="tasks-warp" v-if="TabCur==1 && equipList.length>0" v-for="(item,index) in equipList" :key="item.SPECIALEQUIPMENT_ID">
<view class="tasks-item">
<view class="title">
设备名称{{item.EQUIPMENTNAME}}
</view>
<view class="tasks-state">
设备类型{{item.EQUIPMENTTYPENAME}}
</view>
<view class="tasks-state">
巡检周期{{item.PERIOD_NAME}}
</view>
<view class="flex">
<view class="tasks-time">
巡检次数: {{item.XJCOUNT}}
</view>
<view class="">
<button class="cu-btn bg-orange round sm" @click="$noMultipleClicks(goToRecordList, item)">巡检记录</button>
</view>
</view>
</view>
</view>
<view v-if="equipList.length<1" class="dy-null">
<view class="dy-null-img">
<image src="../../../static/null.png" mode=""></image>
</view>
<view class="dy-null-title">
暂无数据
</view>
</view>
<view class="cu-tabbar-height"></view>
</mescroll-body>
</block>
</view>
</template>
<script>
import {
basePath,baseImgPath,corpinfoId,loginSession,loginUser,formatDate
} from '@/common/tool.js';
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js"
import writingBoard from "@/components/writing-board/writing-board.vue"
export default {
mixins: [MescrollMixin], // 使用mixin
components: {
writingBoard
},
data() {
return {
initflag:false,
baseImgPath: baseImgPath,
CustomBar: this.CustomBar,
backUrl: '/pages/index/index',
sTop: 0,
totalHeight: 0,
downOption: {
use: true,
auto: false
},
upOption: {
use: true,
auto: false,
noMoreSize: 1,
textNoMore: '--已经没有更多了--'
},
periodList:['每日','每周','每旬','每月'],
scrollLeft: 0,
equipList: [], //任务列表返回数据
currentPage: 1, //分页参数--页数
showCount: 100, //分页参数--每页数据条数
totalCount: 0, //分页参数--初始化页数
isEnd: false, //防止多次刷新
totalPage: 0, //分页参数--分页数量
noClick: true,
TabCur: 0,
tabNav: ['开始巡检', '巡检记录'],
UNCHECK:'1'
};
},
onLoad() {
//页面显示或从后台跳回小程序时显示此页面时触发,从跳转页面返回时触发,不能传递参数
var _this = this
_this.background = require('@/common/background.json')
_this.currentPage = 1
_this.isEnd = false
_this.getEquipInit()
loginSession();
},
onShow(e) {
var _this = this;
if (_this.initflag) {
_this.initflag = false;
_this.currentPage = 1
_this.isEnd = false
this.getEquipInit()
}
},
methods: {
tabSelect(e) {
this.TabCur = e.currentTarget.dataset.id;
this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60
if (this.TabCur == 0) {
this.equipList = []
this.UNCHECK = '1'
this.getEquipInit()
} else if (this.TabCur == 1){
this.equipList = []
this.UNCHECK = ''
this.getEquipInit()
}
},
//重置分页
initPageData() {
var _this = this;
_this.currentPage = 1;
_this.isEnd = false;
},
//翻页
turnPage() {
var _this = this;
_this.currentPage = _this.currentPage + 1;
_this.isEnd = false;
},
//跳转事件
downCallback(page) { //搜索按钮事件
var _this = this;
_this.getEquipQuery(page)
},
// 滑动到底方法
upCallback(page) {
var _this = this;
_this.scrolltolowerEquip(page)
},
//切换选项卡初始化任务列表
getEquipInit() { //搜索按钮事件
var _this = this
_this.initPageData()
_this.equipList = []
_this.getEquipData();
},
//下拉刷新任务列表
getEquipQuery(page) {
var _this = this;
_this.initPageData()
_this.equipList = [];
_this.getEquipData();
},
// 上滑加载更多
scrolltolowerEquip(page) {
var _this = this;
_this.turnPage()
if (_this.totalPage >= _this.currentPage) {
_this.getTaskData(); //开始分页查询
}
},
getEquipData() {
var _this = this;
if (_this.isEnd) {
return
} else {
this.isEnd = true;
}
uni.showLoading({
title: "加载中..."
}); //加载中动画
uni.request({
url: basePath + '/app/specialequipmentaqxj/list?showCount=' + _this.showCount + '&currentPage=' + _this.currentPage,
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
UNCHECK: _this.UNCHECK,
tm: new Date().getTime(),
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
uni.hideLoading(); //结束加载中动画
if (res.data != null) {
_this.totalPage = res.data.page.totalPage
// 从后端获取的数据,将这一步骤放到异步获取后端数据的地方,对后端返回的数据进行处理
if (_this.equipList.length == 0) {
_this.equipList = res.data.varList;
} else {
if (res.data.varList != null) {
_this.equipList = _this.equipList.concat( res.data.varList);
}
}
_this.mescroll.endSuccess(res.data.varList.length, (res.data.page.totalPage > res.data.page.currentPage))
_this.mescroll.endUpScroll(res.data.page.totalPage == res.data.page.currentPage)
}
},
fail: () => {
// 请求失败,隐藏加载状态
_this.mescroll.endErr()
}
})
},
handleIsChecked(pd){
var date = formatDate(new Date(), 'yyyy-MM-dd hh:mm');
if(pd.PERIOD_START_DATE > date){//如果今天在下次检查周期之前
return "已检查"
}else{
return "未检查"
}
},
goToAdd(item) {
uni.navigateTo({
url: '/pages/application/speEquip/add?SPECIALEQUIPMENT_ID=' + item.SPECIALEQUIPMENT_ID
})
},
goToRecordList(item) {
uni.navigateTo({
url: '/pages/application/speEquip/record_list?SPECIALEQUIPMENT_ID=' + item.SPECIALEQUIPMENT_ID
})
}
}
}
</script>