lcny-admin-mobile-vue/src/pages/device/warning.vue

291 lines
6.6 KiB
Vue

<template>
<view class="bg-page">
<u-sticky z-index="99" :h5NavHeight="h5NavHeightP">
<view class="secreen-section" style="background-color: #fff;">
<u-dropdown class="dropdown-box" :class="[!dropDownShow?'downClose':'']" ref="uDropdown"
@close="dropdownClose" @open="dropdownOpen">
<u-dropdown-item v-model="lvvalue" title="预警等级"
:options="lvList" @change="change1"></u-dropdown-item>
<u-dropdown-item v-model="typevalue" title="设备类型"
:options="typeList" @change="change2"></u-dropdown-item>
<u-dropdown-item v-model="statusvalue" title="状态"
:options="statusList" @change="change3"></u-dropdown-item>
</u-dropdown>
</view>
</u-sticky>
<view class="content-box" style="padding-bottom: 60rpx;">
<view class="tb_swipe_list"
v-for="(item, index) in loglist"
:show="item.show" :index="index":key="item.id"
>
<view class="tb_body" @click="showInfo(index)">
<view class="row_box">
<view class="text">基地:{{ item.base_name }}</view>
</view>
<view class="row_box">
<view class="text">监控点:{{ item.point_name }}</view>
</view>
<!-- <view class="row_box">
<view class="text">设备类型:{{ item.device_type }}</view>
</view> -->
<view class="row_box">
<view class="text">等级:{{ lvname[item.lv] }}</view>
</view>
<view class="row_box">
<view class="text">状态:{{ statusname[item.status] }}</view>
</view>
<view class="row_box">
<view class="text">时间:{{ item.created_at|timeFormat}}</view>
</view>
</view>
</view>
<u-loadmore :status="loading" margin-top="60"/>
</view>
<u-popup v-model="popupShow" mode="bottom" border-radius="28" z-index="900">
<view class="popup-form-info">
<view class="top_box u-border-bottom">
<view class="title">警报明细</view>
</view>
<view class="section_c">
<view class="plist u-border-bottom">
<view class="label_t">基地</view>
<view class="flex-1">{{formInfo.base_name}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">监控点</view>
<view class="flex-1">{{formInfo.point_name}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">设备类型</view>
<view class="flex-1">{{devicetypename[formInfo.device_type]}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">等级</view>
<view class="flex-1">{{lvname[formInfo.lv]}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">状态</view>
<view class="flex-1">{{statusname[formInfo.status]}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">创建时间</view>
<view class="flex-1">{{formInfo.created_at|timeFormat}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">地址</view>
<view class="flex-1">{{formInfo.content}}</view>
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
import {showLoading,toast,formatDate} from '@/com/utils.js'
export default {
data() {
return {
dropDownShow:false,
per_page:15,
page:1,
loglist:[],
loading:'loadmore',
lvList:[
{
label: '全部',
value: 0,
},
{
label: 'Ⅰ级预警',
value: 1,
},
{
label: 'Ⅱ级预警',
value: 2,
},
{
label: 'Ⅲ级预警',
value: 3,
},
{
label: 'Ⅳ级预警',
value: 4,
},
],
lvvalue:'',
typeList:[
{
label: '全部',
value: '',
},
{
label: '监控设备',
value: 1,
},
{
label: '土壤设备',
value: 2,
},
{
label: '水质设备',
value: 3,
},
{
label: '气象设备',
value: 4,
}
],
typevalue:'',
statusList:[
{
label: '全部',
value: -1,
},
{
label: '未处理',
value: 0,
},
{
label: '已处理',
value: 1,
},
{
label: '已忽略',
value: 2,
},
],
statusvalue:-1,
statusname:{
0:'未处理',
1:'已处理',
2:'已忽略'
},
lvname:{
1:'Ⅰ级预警',
2:'Ⅱ级预警',
3:'Ⅲ级预警',
4:'Ⅳ级预警'
},
devicetypename:{
1:'监控设备',
2:'土壤设备',
3:'水质设备',
4:'气象设备'
},
popupShow:false,
formInfo:{},
};
},
filters:{
timeFormat(val){
return formatDate(val*1000, 'yyyy-MM-dd hh:mm');
},
typename(val){
let keys = {
delete:'删除',
create:'创建',
update:'修改'
}
let name = keys[val]?keys[val]:'其它'
return name;
},
},
onLoad() {
this.queryloglist();
},
methods: {
showInfo(index){
this.formInfo = this.loglist[index];
this.popupShow = true;
},
change1(val){
console.log(val);
this.queryloglist(true);
},
change2(val){
console.log(val);
this.queryloglist(true);
},
change3(val){
console.log(val);
this.queryloglist(true);
},
dropdownClose(){
this.dropDownShow = false;
},
dropdownOpen(){
this.dropDownShow = true;
},
queryloglist(refresh){
if(refresh){
this.loading = 'loadmore';
this.loglist = [];
this.page = 1;
}
if(this.loading=='nomore'){//超出最大页
return false;
}
let params = {
per_page:this.per_page,
page: this.page ++,
_t: new Date().getTime()
}
if(this.lvvalue){
params['lv'] = this.lvvalue;
}
if(this.typevalue){
params['device'] = this.typevalue;
}
if(this.statusvalue>-1){
params['status'] = this.statusvalue;
}
this.loading = 'loading';
this.$http.get('/api/device-warning-logs',{params:params}).then(({data})=>{
console.log(data)
this.loading = 'loadmore';
if(data.code==200){
let _list = data.data|| [];
let {current_page,per_page,last_page} = data.meta;
this.loglist = this.loglist.concat(_list);
console.log(this.loglist);
if(current_page >= last_page){
this.loading ='nomore';
}
}
}).catch(()=>{
this.loading = 'loadmore';
})
},
},
//触底加载
onReachBottom() {
if(this.loading=='loadmore'){
this.queryloglist();
}
},
}
</script>
<style lang="scss" scoped>
.content-box{
padding: 30rpx 30rpx 60rpx 30rpx;
}
.row_box{
.text{
word-break: break-all;
}
}
</style>