xytSk-App/pages/rain/rain.vue

386 lines
14 KiB
Vue
Raw Normal View History

2024-05-30 13:53:09 +08:00
<template>
2024-05-31 09:31:56 +08:00
<view class="rain-box">
<view class="nav-bar">
<u-icon name="arrow-left" color="#000" size="28"></u-icon>
<view class="">
雨情
</view>
<!-- <u-icon name="arrow-right" color="#000" size="28"></u-icon> -->
<cover-image
src="../../static/images/filter.png"
style="width: 20px; height: 20px; margin-right: 10px;"
@click="()=>this.popupOpen = true"
v-show="!this.popupOpen"
>
</cover-image>
</view>
<!-- 搜索以及多级下拉 -->
<view class="search-box">
<view class="search-item">
<view class="" @click="handleClick" >
{{selecetItem[1] || columns[0][0]}}
</view>
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="switchIcon"></u-icon>
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="!switchIcon"></u-icon>
<view class="rain-input">
<u--input
placeholder="请输入站点"
prefixIcon="search"
prefixIconStyle="font-size: 22px;color: #909399"
></u--input>
</view>
<view class="" @click="handleClick1" >
{{selecetItem1[1] || columns[0][0]}}
</view>
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="switchIcon1"></u-icon>
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="!switchIcon1"></u-icon>
</view>
</view>
<!-- 单纯下拉 -->
<view class="time-select">
<view :class="{'jiangyu':true,'noClick':this.rainTime}" @click="(e)=>{
if(this.rainTime){
e.stopPropagation();
return
}
this.jiangyu = !this.jiangyu}" >
<text>{{selectJyOne ? "按昨日降雨排序" :"按时段降雨排序"}}</text>
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="!this.jiangyu"></u-icon>
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="this.jiangyu"></u-icon>
<view class="jiangyu-dropdown" v-show="this.jiangyu">
<view :class="{'active': this.selectJyOne == 0}" @click="()=>this.selectJyOne = 0" style="border-bottom: 1px solid #dfdfdf; border-top: 1px solid #dfdfdf; padding: 10px 0; display: flex; align-items: center;">
<text style="margin-right: 220px;">按时段降雨排序</text>
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="this.selectJyOne == 0"></u-icon>
</view>
<view :class="{'active': this.selectJyOne == 1}" @click="()=>this.selectJyOne = 1" style="border-bottom: 1px solid #dfdfdf; padding-bottom: 10px; display: flex; align-items: center;">
<text style="margin-right: 220px;">按昨日降雨排序</text>
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="this.selectJyOne == 1"></u-icon>
</view>
</view>
</view>
<view class="rain-time" @click="(e)=>{
if(this.jiangyu){
e.stopPropagation();
return
}
this.rainTime = !this.rainTime}">
<text>{{selectTimeOne == 0 ? "1h" :
selectTimeOne == 1 ? "3h" :
selectTimeOne == 2 ? "6h" :
selectTimeOne == 3 ? "12h" :
selectTimeOne == 4 ? "24h" : ''
}}</text>
<u-icon name="arrow-down-fill" color="#000" size="20" v-show="!this.rainTime"></u-icon>
<u-icon name="arrow-up-fill" color="#000" size="20" v-show="this.rainTime"></u-icon>
<view class="rain-time-dropdown" v-show="rainTime">
<view class="" :class="{'active': this.selectTimeOne == 0}" @click="()=>this.selectTimeOne = 0" style="border-bottom: 1px solid #dfdfdf; border-top: 1px solid #dfdfdf; padding: 10px 0; display: flex; align-items: center;">
<text style="margin-right: 300px;">1h</text>
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="this.selectTimeOne == 0"></u-icon>
</view>
<view class="" :class="{'active': this.selectTimeOne == 1}" @click="()=>this.selectTimeOne = 1" style="border-bottom: 1px solid #dfdfdf; padding-bottom: 10px; display: flex; align-items: center;">
<text style="margin-right: 300px;">3h</text>
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="this.selectTimeOne == 1"></u-icon>
</view>
<view class="" :class="{'active': this.selectTimeOne == 2}" @click="()=>this.selectTimeOne = 2" style="border-bottom: 1px solid #dfdfdf; padding-bottom: 10px; display: flex; align-items: center;">
<text style="margin-right: 300px;">6h</text>
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="this.selectTimeOne == 2"></u-icon>
</view>
<view class="" :class="{'active': this.selectTimeOne == 3}" @click="()=>this.selectTimeOne = 3" style="border-bottom: 1px solid #dfdfdf; padding-bottom: 10px; display: flex; align-items: center;">
<text style="margin-right: 300px;">12h</text>
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="this.selectTimeOne == 3"></u-icon>
</view>
<view class="" :class="{'active': this.selectTimeOne == 4}" @click="()=>this.selectTimeOne = 4" style="border-bottom: 1px solid #dfdfdf; padding-bottom: 10px; display: flex; align-items: center;">
<text style="margin-right: 300px;">24h</text>
<u-icon name="checkmark" color="#02a7f0" size="20" v-show="this.selectTimeOne == 4"></u-icon>
</view>
</view>
</view>
</view>
<!-- 内容部分 -->
<view style="width: 100%; height: 10px; background-color: #f7f7f7;">
</view>
<!-- 时间段 -->
<view style="padding: 5px 10px; text-align: center; color: #f7b156;">
统计时段2024-04-25 10:00至2024-04-26 10:00
</view>
<view style="margin: 0 10px;">
<Table />
</view>
<u-picker
:show="show"
ref="uPicker"
:columns="columns"
@confirm="confirm"
@change="changeHandler"
@cancel="cancel"
>
</u-picker>
<u-picker
:show="show1"
ref="uPicker1"
:columns="columns"
@confirm="confirm1"
@change="changeHandler1"
@cancel="cancel1"
>
</u-picker>
<u-popup :show="popupOpen" mode="right" @close="()=>this.popupOpen=false" >
<view style="padding: 30px 20px;">
<text style="font-weight: bold;">按类型</text>
<view style="margin-bottom: 10px; margin-left: -5px;">
<u-checkbox-group
v-model="checkboxValue1"
@change="checkboxChange"
>
<u-checkbox
:customStyle="{margin: '7px'}"
v-for="(item, index) in checkboxList1"
:key="index"
:label="item.name"
:name="item.value"
>
</u-checkbox>
</u-checkbox-group>
</view>
<text style="font-weight: bold;">按时间</text>
<view class="example-body" style="display: flex; align-items: center; margin-bottom: 10px; margin-top: 10px;">
<uni-datetime-picker type="datetime" v-model="startTm" @change="(e) => this.startTm = e" />
<text style="margin-left: 10px;"></text>
</view>
<view class="example-body" style="width: 92%;">
<uni-datetime-picker type="datetime" v-model="endTm" @change="(e) => this.EndTm = e" />
</view>
<view style="display: flex; margin-top: 10px;">
<u-button class="first-btn" text="昨日08:00~当前时间"></u-button>
<u-button class="second-btn" text="今天08:00~当前时间"></u-button>
</view>
<view style="display: flex; margin-top: 140%;">
<u-button text="重置" class="bottom-btn1"></u-button>
<u-button text="确认" color="#d9001b" class="bottom-btn2"></u-button>
</view>
</view>
</u-popup>
</view>
2024-05-30 13:53:09 +08:00
</template>
<script>
2024-05-31 09:31:56 +08:00
import Table from "./Table"
import filter from "../../static/images/filter.png"
export default {
data() {
return {
show: false,
show1:false,
switchIcon:true,
switchIcon1:true,
selecetItem:[],
selecetItem1:[],
jiangyu:false, //显示下拉
rainTime:false, //显示下拉,
selectJyOne:1,//选中降雨最后一个元素,
selectTimeOne:4, //选中时间的最有一个元素
popupOpen:false, //抽屉打开
checkboxValue1:["SH","SW","QX","SK"],
// 基本案列数据
checkboxList1: [{
name: '山洪',
value: "SH"
},
{
name: '水文',
value: "SW"
},
{
name: '气象',
value: "QX"
},
{
name: '水库',
value: "SK"
}
],
startTm: '', //开始时间,
endTm:"",//结束时间
columns: [
['中国', '美国'],
['深圳', '厦门', '上海', '拉萨']
],
columnData: [
['深圳', '厦门', '上海', '拉萨'],
['得州', '华盛顿', '纽约', '阿拉斯加']
]
}
},
components:{
Table
},
methods: {
changeHandler(e) {
const {
columnIndex,
value,
values, // values为当前变化列的数组内容
index,
// 微信小程序无法将picker实例传出来只能通过ref操作
picker = this.$refs.uPicker
} = e
// 当第一列值发生变化时,变化第二列(后一列)对应的选项
if (columnIndex === 0) {
// picker为选择器this实例变化第二列对应的选项
picker.setColumnValues(1, this.columnData[index])
}
},
// 回调参数为包含columnIndex、value、values
confirm(e) {
console.log('confirm', e)
this.show = false
this.switchIcon=!this.switchIcon;
this.selecetItem = [...e.value]
},
cancel(e) {
this.show = false
},
changeHandler1(e) {
const {
columnIndex,
value,
values, // values为当前变化列的数组内容
index,
// 微信小程序无法将picker实例传出来只能通过ref操作
picker = this.$refs.uPicker1
} = e
// 当第一列值发生变化时,变化第二列(后一列)对应的选项
if (columnIndex === 0) {
// picker为选择器this实例变化第二列对应的选项
picker.setColumnValues(1, this.columnData[index])
}
},
// 回调参数为包含columnIndex、value、values
confirm1(e) {
console.log('confirm', e)
this.show1 = false
this.switchIcon=!this.switchIcon;
this.selecetItem1 = [...e.value]
},
cancel1(e) {
this.show1 = false
},
handleClick(){
this.show = true;
this.switchIcon = !this.switchIcon
},
handleClick1(){
this.show1 = true;
this.switchIcon1 = !this.switchIcon1
},
checkboxChange(n) {
console.log('change', n);
},
changeLog(e) {
console.log('change事件:', e);
},
}
}
2024-05-30 13:53:09 +08:00
</script>
2024-05-31 09:31:56 +08:00
<style lang="scss" scoped>
.nav-bar{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin-top: 30px;
padding-top: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #dfdfdf;
box-shadow: 0 5px 10px -8px #dfdfdf inset;
}
.search-box{
width: 100%;
display: flex;
justify-content: center;
.search-item{
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 20px;
width: 90%;
padding: 5px;
height: 30px;
background-color: #dddddd;
border-radius: 5px;
}
.rain-input{
// width: 30%;
}
}
.time-select{
position: relative;
display: flex;
justify-content: center;
margin-top: 20px;
margin-bottom: 20px;
.noClick{
pointer-events: initial;
}
.jiangyu,.rain-time{
display: flex;
column-gap: 5px;
margin-right: 20px;
}
.jiangyu{
position: relative;
.jiangyu-dropdown,{
position: absolute;
background-color: #fff;
width: 100vw;
left: -72px;
top: 35px;
.active{
color:#02a7f0
}
view{
margin-top: 10px;
}
}
}
.rain-time{
position: relative;
.rain-time-dropdown{
position: absolute;
background-color: #fff;
width: 100vw;
left: -230px;
top: 35px;
.active{
color:#02a7f0
}
view{
margin-top: 10px;
}
}
}
}
.first-btn{
margin-right: 5px;
background-color: #f2f2f2;
}
.second-btn{
background-color: #f2f2f2;
}
.bottom-btn1,.bottom-btn2{
width: 30%;
}
.bottom-btn1{
margin-left: 130px;
}
.bottom-btn2{
margin-right: -12px;
}
2024-05-30 13:53:09 +08:00
</style>