329 lines
7.3 KiB
Vue
329 lines
7.3 KiB
Vue
|
|
<template>
|
||
|
|
<view class="tabBody">
|
||
|
|
<div class="searchBox">
|
||
|
|
<div class="searchBox_left">
|
||
|
|
<u-search
|
||
|
|
shape="square"
|
||
|
|
:clearabled="true"
|
||
|
|
:showAction=false
|
||
|
|
v-model="searchVal"
|
||
|
|
placeholder='请输入乡镇'
|
||
|
|
height=40
|
||
|
|
>
|
||
|
|
</u-search>
|
||
|
|
</div>
|
||
|
|
<div class="searchBox_right">
|
||
|
|
<view
|
||
|
|
hover-class="is-hover"
|
||
|
|
class="searchBox_right_btn"
|
||
|
|
hover-stay-time=100
|
||
|
|
@click="myShow"
|
||
|
|
>
|
||
|
|
<u--image :src="'../../static/images/filter.png'" width="22px" height="22px"></u--image>
|
||
|
|
</view>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="tableHead">
|
||
|
|
<div class="td t1">乡镇</div>
|
||
|
|
<div class="td t2">预警时间</div>
|
||
|
|
<div class="td t3">预警状态</div>
|
||
|
|
<div class="td t4">危险等级</div>
|
||
|
|
</div>
|
||
|
|
<div class="tableBody">
|
||
|
|
<div v-for="(item,index) in getSearchVal" class="tableRow">
|
||
|
|
<div class="td t1" @click="toSh(item)">{{item.adnm}}</div>
|
||
|
|
<div class="td t2">{{item.warnstm}}</div>
|
||
|
|
<div class="td t3">{{warnstatus[item.warnstatusid]}}</div>
|
||
|
|
<div class="td t4">{{warngrade[item.warngradeid]}}</div>
|
||
|
|
</div>
|
||
|
|
<div :style="{height:'80px'}">
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<u-popup
|
||
|
|
:show="show"
|
||
|
|
mode="right"
|
||
|
|
:safeAreaInsetTop='true'
|
||
|
|
:closeOnClickOverlay='false'
|
||
|
|
@close="close"
|
||
|
|
@open="myShow">
|
||
|
|
<view :style="{padding:'10px',width:'250px'}">
|
||
|
|
<u-toast ref="uToast"></u-toast>
|
||
|
|
<text class="title">按预警状态</text>
|
||
|
|
<u-checkbox-group
|
||
|
|
placement="row"
|
||
|
|
v-model="check1"
|
||
|
|
:style="{padding:'10px 0px 20px 0px'}"
|
||
|
|
>
|
||
|
|
<u-checkbox name="0" label="新产生" class="checkItem"></u-checkbox>
|
||
|
|
<u-checkbox name="30" label="已关闭" class="checkItem"></u-checkbox>
|
||
|
|
</u-checkbox-group>
|
||
|
|
<text class="title">按危险等级</text>
|
||
|
|
<u-checkbox-group
|
||
|
|
placement="row"
|
||
|
|
v-model="check2"
|
||
|
|
:style="{padding:'10px 0px 20px 0px'}"
|
||
|
|
>
|
||
|
|
<u-checkbox name="6" label="立即转移" class="checkItem"></u-checkbox>
|
||
|
|
<u-checkbox name="5" label="准备转移" class="checkItem"></u-checkbox>
|
||
|
|
</u-checkbox-group>
|
||
|
|
<text class="title">按预警时间</text>
|
||
|
|
<div :style="{display:'flex',marginTop:'10px'}">
|
||
|
|
<view
|
||
|
|
class="tmPicker"
|
||
|
|
@click="showStmPicker = true"
|
||
|
|
hover-class="is-hover"
|
||
|
|
hover-stay-time=100
|
||
|
|
>{{getStmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||
|
|
</view>
|
||
|
|
<text :style="{width:'20%',lineHeight:'32px',textAlign:'center'}">至</text>
|
||
|
|
</div>
|
||
|
|
<div :style="{display:'flex',marginTop:'10px'}">
|
||
|
|
<view
|
||
|
|
class="tmPicker"
|
||
|
|
@click="showEtmPicker = true"
|
||
|
|
hover-class="is-hover"
|
||
|
|
hover-stay-time=100
|
||
|
|
>{{getEtmStr}}<u-icon name="calendar" size="18" color="#909399"></u-icon>
|
||
|
|
</view>
|
||
|
|
<text :style="{width:'20%'}"></text>
|
||
|
|
</div>
|
||
|
|
<div :style="{position:'absolute',bottom:'20px',right:'20px',display:'flex'}">
|
||
|
|
<u-button
|
||
|
|
:style="{width:'80px',marginRight:'10px'}"
|
||
|
|
text="重置"
|
||
|
|
@click="reSet"
|
||
|
|
></u-button>
|
||
|
|
<u-button
|
||
|
|
:style="{width:'80px'}"
|
||
|
|
color="rgba(217, 0, 27, 1)"
|
||
|
|
type="primary"
|
||
|
|
text="确定"
|
||
|
|
@click="submit"
|
||
|
|
></u-button>
|
||
|
|
</div>
|
||
|
|
</view>
|
||
|
|
<u-datetime-picker
|
||
|
|
:show="showStmPicker"
|
||
|
|
v-model="stm"
|
||
|
|
mode="datetime"
|
||
|
|
closeOnClickOverlay
|
||
|
|
@confirm="showStmPicker = false"
|
||
|
|
@cancel="showStmPicker = false"
|
||
|
|
@close="showStmPicker = false"
|
||
|
|
>
|
||
|
|
</u-datetime-picker>
|
||
|
|
<u-datetime-picker
|
||
|
|
:show="showEtmPicker"
|
||
|
|
v-model="etm"
|
||
|
|
mode="datetime"
|
||
|
|
closeOnClickOverlay
|
||
|
|
@confirm="showEtmPicker = false"
|
||
|
|
@cancel="showEtmPicker = false"
|
||
|
|
@close="showEtmPicker = false"
|
||
|
|
>
|
||
|
|
</u-datetime-picker>
|
||
|
|
</u-popup>
|
||
|
|
</view>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
import moment from 'moment'
|
||
|
|
const warnstatus = {
|
||
|
|
'0':'新产生',
|
||
|
|
'10':'已内部告警',
|
||
|
|
'20':'已外部告警',
|
||
|
|
'30':'关闭预警',
|
||
|
|
'70':'灾情上报',
|
||
|
|
}
|
||
|
|
const warngrade = {
|
||
|
|
'5':'准备转移',
|
||
|
|
'6':'立即转移'
|
||
|
|
}
|
||
|
|
|
||
|
|
export default {
|
||
|
|
data() {
|
||
|
|
return {
|
||
|
|
warnstatus:warnstatus,
|
||
|
|
warngrade:warngrade,
|
||
|
|
show:false,
|
||
|
|
showStmPicker:false,
|
||
|
|
showEtmPicker:false,
|
||
|
|
searchVal:'',
|
||
|
|
stm:Number(moment(new Date()).add(-7,'days')),
|
||
|
|
etm:Number(new Date()),
|
||
|
|
check1:['0','30'],
|
||
|
|
check2:['6','5'],
|
||
|
|
list:[]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
computed: {
|
||
|
|
getStmStr() {
|
||
|
|
return moment(this.stm).format('YYYY-MM-DD HH:mm:ss')
|
||
|
|
},
|
||
|
|
getEtmStr() {
|
||
|
|
return moment(this.etm).format('YYYY-MM-DD HH:mm:ss')
|
||
|
|
},
|
||
|
|
getSearchVal() {
|
||
|
|
if(this.searchVal){
|
||
|
|
return this.list.filter(o => o.adnm && o.adnm?.indexOf(this.searchVal)>-1)
|
||
|
|
}else{
|
||
|
|
return this.list
|
||
|
|
}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
methods: {
|
||
|
|
myShow() {
|
||
|
|
this.show = true
|
||
|
|
},
|
||
|
|
close() {
|
||
|
|
this.show = false
|
||
|
|
},
|
||
|
|
reSet() {
|
||
|
|
this.stm = Number(moment(new Date()).add(-7,'days'))
|
||
|
|
this.etm = Number(new Date())
|
||
|
|
this.check1 = ['0','30']
|
||
|
|
this.check2 = ['6','5']
|
||
|
|
},
|
||
|
|
async submit() {
|
||
|
|
if(!moment(this.stm).isBefore(this.etm)){
|
||
|
|
this.$refs.uToast.show({
|
||
|
|
type: 'error',
|
||
|
|
title: '失败主题',
|
||
|
|
message: "开始时间需小于结束时间",
|
||
|
|
})
|
||
|
|
return
|
||
|
|
}
|
||
|
|
try{
|
||
|
|
const params = {
|
||
|
|
stm:moment(this.stm).format('YYYY-MM-DD HH:mm:ss'),
|
||
|
|
etm:moment(this.etm).format('YYYY-MM-DD HH:mm:ss'),
|
||
|
|
warnstatusids:this.check1,
|
||
|
|
warngradeids:this.check2
|
||
|
|
}
|
||
|
|
const res = await uni.$http.post('/gunshiApp/xfflood/current/situation/app/flood/warn',params)
|
||
|
|
this.list = res.data.data
|
||
|
|
this.close()
|
||
|
|
}catch(e){
|
||
|
|
//TODO handle the exception
|
||
|
|
this.$refs.uToast.show({
|
||
|
|
type: 'error',
|
||
|
|
title: '失败主题',
|
||
|
|
message: "请求失败",
|
||
|
|
})
|
||
|
|
setTimeout(()=>{
|
||
|
|
this.close()
|
||
|
|
},1000)
|
||
|
|
}
|
||
|
|
},
|
||
|
|
toSh(record) {
|
||
|
|
uni.navigateTo({
|
||
|
|
url: '/pages/forewarning/shInformation/shInformation?obj='+JSON.stringify(record) // 跳转到对应路径的页面
|
||
|
|
});
|
||
|
|
},
|
||
|
|
},
|
||
|
|
created() {
|
||
|
|
this.submit()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style lang="scss" scoped>
|
||
|
|
.tabBody{
|
||
|
|
background-color: rgba(247, 247, 247, 1);
|
||
|
|
height: 100%;
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
align-items: center;
|
||
|
|
}
|
||
|
|
.searchBox{
|
||
|
|
height: 62px;
|
||
|
|
width: 100%;
|
||
|
|
background-color: #ffffff;
|
||
|
|
border-bottom: 1px solid #eee;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
}
|
||
|
|
.tableHead{
|
||
|
|
width: 97%;
|
||
|
|
margin-top: 5px;
|
||
|
|
height: 50px;
|
||
|
|
background-color: #e4f2fe;
|
||
|
|
display: flex;
|
||
|
|
color: #208FEE;
|
||
|
|
}
|
||
|
|
.tableBody{
|
||
|
|
width: 97%;
|
||
|
|
height: calc( 100vh - 214px );
|
||
|
|
background-color: #f7f7f7;//#ffffff;
|
||
|
|
overflow-y: scroll;
|
||
|
|
}
|
||
|
|
.tableRow{
|
||
|
|
width: 100%;
|
||
|
|
height: 46px;
|
||
|
|
display: flex;
|
||
|
|
border-bottom: 1px solid #eee;
|
||
|
|
background-color: #ffffff;
|
||
|
|
}
|
||
|
|
|
||
|
|
.td{
|
||
|
|
text-align: center;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
font-size: 13px;
|
||
|
|
}
|
||
|
|
.t1{
|
||
|
|
width: 25%;
|
||
|
|
color: #208FEE;
|
||
|
|
}
|
||
|
|
.t2{
|
||
|
|
width: 37%;
|
||
|
|
}
|
||
|
|
.t3{
|
||
|
|
width: 18%;
|
||
|
|
}
|
||
|
|
.t4{
|
||
|
|
width: 20%;
|
||
|
|
}
|
||
|
|
.searchBox_left{
|
||
|
|
width: 82%;
|
||
|
|
padding-left: 15px;
|
||
|
|
}
|
||
|
|
.searchBox_right{
|
||
|
|
width: 18%;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
}
|
||
|
|
.searchBox_right_btn{
|
||
|
|
width: 40px;
|
||
|
|
height: 40px;
|
||
|
|
border-radius: 5px;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
}
|
||
|
|
.is-hover{
|
||
|
|
background-color: #eee;
|
||
|
|
}
|
||
|
|
.title{
|
||
|
|
display: inline-block;
|
||
|
|
font-size: 16px;
|
||
|
|
}
|
||
|
|
.checkItem{
|
||
|
|
margin-right: 10px;
|
||
|
|
}
|
||
|
|
.tmPicker{
|
||
|
|
width: 100%;
|
||
|
|
height: 30px;
|
||
|
|
border: 1px solid rgba(240, 240, 240, 1);
|
||
|
|
border-radius: 4px;
|
||
|
|
margin-right: 10px;
|
||
|
|
font-size: 14px;
|
||
|
|
display: flex;
|
||
|
|
justify-content: space-around;
|
||
|
|
align-items: center;
|
||
|
|
// padding-left: 10px;
|
||
|
|
}
|
||
|
|
</style>
|