365 lines
8.9 KiB
Vue
365 lines
8.9 KiB
Vue
|
<template>
|
||
|
<div style="padding-top: 13vw">
|
||
|
<TopNav navTitle="指令列表" :showRight="false" :showLeft="true" />
|
||
|
<div class="search">
|
||
|
<div class="sort">
|
||
|
<van-icon name="arrow-up" />
|
||
|
<van-icon name="arrow-down" />
|
||
|
时间排序
|
||
|
</div>
|
||
|
<span class="search-filter" @click="showRight = true">过滤筛选 <van-icon name="filter-o" /></span>
|
||
|
</div>
|
||
|
<!-- 列表 -->
|
||
|
<ul class="listBox">
|
||
|
<van-pull-refresh v-model="loadingPull" @refresh="onRefresh">
|
||
|
<van-list v-model:loading="loading" :finished="finished" finished-text="" @load="onLoad" offset="1"
|
||
|
:immediate-check="false">
|
||
|
<li class="listBox-item" v-for="(item, index) in yjList" :key="index" @click="handelDetail(item)">
|
||
|
<YjzlItem :data="item" />
|
||
|
</li>
|
||
|
<van-empty description="暂无信息" image="default" v-if="yjList.length <= 0 && !loading" />
|
||
|
</van-list>
|
||
|
</van-pull-refresh>
|
||
|
</ul>
|
||
|
|
||
|
<!-- 弹出层 -->
|
||
|
<van-popup v-model:show="showRight" position="right" :style="{ width: '60%', height: '100%' }">
|
||
|
<div class="popup-content">
|
||
|
<div class="popup-title">过滤筛选</div>
|
||
|
<ul class="popup-box">
|
||
|
<li class="popup-item yjlx-info">
|
||
|
<van-field v-model="form.warnType" label-width="60px" label="预警类型:" readonly placeholder="请选择预警类型"
|
||
|
@click.stop="chooseYjlx()"></van-field>
|
||
|
|
||
|
<ul class="select-box" v-if="showLx">
|
||
|
<span class="triangleup"></span>
|
||
|
<li class="select-box-li" :class="isActive == 0 ? 'active' : ''" @click="cilickLx(0)">
|
||
|
车辆
|
||
|
</li>
|
||
|
<li class="select-box-li" :class="isActive == 1 ? 'active' : ''" @click="cilickLx(1)">
|
||
|
人员
|
||
|
</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li class="popup-item">
|
||
|
<van-field v-model="form.beginDate" label-width="60px" label="开始时间:" input-align="left"
|
||
|
placeholder="请选择开始时间" readonly @click.stop="onClickTime('start')"></van-field>
|
||
|
</li>
|
||
|
<li class="popup-item">
|
||
|
<van-field v-model="form.endDate" label-width="60px" input-align="left" label="结束时间:"
|
||
|
@click.stop="onClickTime('end')" placeholder="请选择结束时间" readonly></van-field>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<div style="padding: 4vw 2vw">
|
||
|
<van-button block plain @click="(form = {}), (form.beginDate = dateFormat())"
|
||
|
style="margin-bottom: 2vw">重置</van-button>
|
||
|
<van-button block type="primary" @click="onSubmit" loading-type="spinner"
|
||
|
loading-text="登录中...">查询</van-button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</van-popup>
|
||
|
<!-- 时间选择器 -->
|
||
|
<SelectTime :timeType="timeType" v-if="timeShow" @update:time="onSelectTime"
|
||
|
@update:cancelTime="timeShow = false" />
|
||
|
|
||
|
<!-- 时间提示框 -->
|
||
|
<van-popup v-model:show="alertInfo" round :style="{ width: '80%' }">
|
||
|
<div class="alertInfoBox">
|
||
|
<div class="alert">结束时间必须大于开始时间</div>
|
||
|
<div class="alertBtn" @click="alertInfo = false">确定</div>
|
||
|
</div>
|
||
|
</van-popup>
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script setup>
|
||
|
import { ref, onMounted } from "vue";
|
||
|
import TopNav from "../../../components/topNav.vue";
|
||
|
import YjzlItem from "../../../components//yjzlItem.vue";
|
||
|
import SelectTime from "../../../components//SelectTime.vue";
|
||
|
import { useRouter, useRoute } from "vue-router";
|
||
|
import { getyjzlList } from "../../../api/checkponit.js";
|
||
|
import { dateFormat } from "../../../utils/tools.js";
|
||
|
import { Loading } from "vant";
|
||
|
const route = useRoute();
|
||
|
const router = useRouter();
|
||
|
const showRight = ref(false);
|
||
|
const form = ref({ beginDate: dateFormat() });
|
||
|
const isActive = ref(-1);
|
||
|
const showLx = ref(false); //显示类型
|
||
|
const timeType = ref("start");
|
||
|
const timeShow = ref(false); //是否显示时间选择器
|
||
|
const page = ref(1); //分页
|
||
|
const pageSize = ref(10); //分页数
|
||
|
const total = ref(0); //总数
|
||
|
const yjList = ref([]);
|
||
|
const loadingPull = ref(false); //下拉刷新
|
||
|
const loading = ref(true); //数据加载中
|
||
|
const finished = ref(false); //数据加载完成
|
||
|
const alertInfo = ref(false) //消息提示
|
||
|
onMounted(() => {
|
||
|
getYjList();
|
||
|
});
|
||
|
|
||
|
// 触底加载数据
|
||
|
function onLoad() {
|
||
|
if (yjList.value.length < total.value) {
|
||
|
page.value++;
|
||
|
getYjList();
|
||
|
} else {
|
||
|
loading.value = false;
|
||
|
finished.value = true;
|
||
|
}
|
||
|
}
|
||
|
//下拉刷新
|
||
|
function onRefresh() {
|
||
|
loading.value = false;
|
||
|
loadingPull.value = false;
|
||
|
finished.value = false;
|
||
|
page.value = 1;
|
||
|
getYjList();
|
||
|
}
|
||
|
|
||
|
// 查询
|
||
|
function onSubmit() {
|
||
|
let date1 = new Date(form.value.beginDate); //开始
|
||
|
let date2 = new Date(form.value.endDate); //结束
|
||
|
if (date1 > date2) {
|
||
|
alertInfo.value = true
|
||
|
} else {
|
||
|
yjList.value = [];
|
||
|
showRight.value = false;
|
||
|
page.value = 1;
|
||
|
loading.value = true
|
||
|
getYjList();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// 获取预警指令列表
|
||
|
function getYjList() {
|
||
|
let warnType =
|
||
|
form.value.warnType == "车辆"
|
||
|
? "1"
|
||
|
: form.value.warnType == "人员"
|
||
|
? "2"
|
||
|
: "";
|
||
|
let params = {
|
||
|
currentPage: page.value,
|
||
|
pageSize: pageSize.value,
|
||
|
beginDate: '2022-01-01',
|
||
|
// beginDate: form.value.beginDate,
|
||
|
checkpointCode: route.query.kkid,
|
||
|
warnType: warnType,
|
||
|
endDate: form.value.endDate,
|
||
|
};
|
||
|
getyjzlList(params)
|
||
|
.then((res) => {
|
||
|
if (page.value == 1) {
|
||
|
yjList.value = res.records;
|
||
|
} else {
|
||
|
yjList.value = yjList.value.concat(res.records);
|
||
|
}
|
||
|
page.value = res.current;
|
||
|
pageSize.value = res.size;
|
||
|
total.value = res.total;
|
||
|
loading.value = false;
|
||
|
})
|
||
|
.catch(() => {
|
||
|
loading.value = false;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
//查看详情
|
||
|
function handelDetail(item) {
|
||
|
let data = {
|
||
|
time: item.warnningTime,
|
||
|
label: item.label,
|
||
|
plateNumber: item.plateNumber,
|
||
|
checkName: item.checkName,
|
||
|
activityAddress: item.activityAddress,
|
||
|
id: item.id,
|
||
|
carImg: item.carImg,
|
||
|
userName: item.userName,
|
||
|
photo: item.idcardPhoto,
|
||
|
jd: item.jd,
|
||
|
wd: item.wd,
|
||
|
sfzh: item.idcard
|
||
|
}
|
||
|
router.push({ path: '/lmjHome/zlJczDetail', query: data })
|
||
|
}
|
||
|
|
||
|
// 时间点击
|
||
|
function onClickTime(val) {
|
||
|
timeType.value = val;
|
||
|
timeShow.value = true;
|
||
|
}
|
||
|
|
||
|
// 时间选中
|
||
|
function onSelectTime(val) {
|
||
|
if (timeType.value == "start") {
|
||
|
form.value.beginDate = val;
|
||
|
} else {
|
||
|
form.value.endDate = val;
|
||
|
}
|
||
|
timeShow.value = false;
|
||
|
}
|
||
|
|
||
|
// 选则类型
|
||
|
function chooseYjlx() {
|
||
|
showLx.value = !showLx.value;
|
||
|
}
|
||
|
// 选中类型
|
||
|
function cilickLx(val) {
|
||
|
isActive.value = val;
|
||
|
switch (val) {
|
||
|
case 0:
|
||
|
form.value.warnType = "车辆";
|
||
|
break;
|
||
|
case 1:
|
||
|
form.value.warnType = "人员";
|
||
|
break;
|
||
|
}
|
||
|
showLx.value = !showLx.value;
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss" scoped>
|
||
|
.search {
|
||
|
padding: 2vw 2vw 0;
|
||
|
box-sizing: border-box;
|
||
|
height: 11vw;
|
||
|
line-height: 5vw;
|
||
|
font-size: 12px;
|
||
|
background: #f1f1f1;
|
||
|
|
||
|
.sort {
|
||
|
float: left;
|
||
|
padding: 1vw 3vw 1vw 6vw;
|
||
|
border: 1px solid #e9e9e9;
|
||
|
position: relative;
|
||
|
background: #fff;
|
||
|
|
||
|
.van-icon-arrow-up {
|
||
|
position: absolute;
|
||
|
left: 4px;
|
||
|
top: 2px;
|
||
|
}
|
||
|
|
||
|
.van-icon-arrow-down {
|
||
|
position: absolute;
|
||
|
left: 4px;
|
||
|
bottom: 2px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.search-filter {
|
||
|
float: right;
|
||
|
color: #3373fa;
|
||
|
line-height: 8vw;
|
||
|
|
||
|
.van-icon {
|
||
|
font-size: 13px;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.listBox {
|
||
|
height: calc(100vh - 24vw);
|
||
|
overflow: hidden;
|
||
|
overflow-y: auto;
|
||
|
// .van-pull-refresh{
|
||
|
// height: 100%;
|
||
|
// overflow-y: auto;
|
||
|
|
||
|
// }
|
||
|
.listBox-item {}
|
||
|
}
|
||
|
|
||
|
// 弹窗
|
||
|
.popup-content {
|
||
|
.popup-title {
|
||
|
height: 40px;
|
||
|
line-height: 40px;
|
||
|
text-align: center;
|
||
|
background: #fff;
|
||
|
color: #000;
|
||
|
}
|
||
|
|
||
|
.popup-box {
|
||
|
border-top: 1px solid #e5e5e5;
|
||
|
font-size: 12px;
|
||
|
line-height: 11vw;
|
||
|
color: #000;
|
||
|
|
||
|
.popup-item {
|
||
|
border-bottom: 1px solid #e5e5e5;
|
||
|
|
||
|
.popup-name {
|
||
|
display: inline-block;
|
||
|
width: 60px;
|
||
|
text-align-last: justify;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.yjlx-info {
|
||
|
position: relative;
|
||
|
|
||
|
.select-box {
|
||
|
position: absolute;
|
||
|
z-index: 99;
|
||
|
width: 50%;
|
||
|
background: #fff;
|
||
|
border: 1px solid #ccc;
|
||
|
top: 50px;
|
||
|
right: 20px;
|
||
|
|
||
|
.select-box-li {
|
||
|
padding-left: 2vw;
|
||
|
box-sizing: border-box;
|
||
|
border-bottom: 1px solid #e9e9e9;
|
||
|
}
|
||
|
|
||
|
.active {
|
||
|
background: rgb(22, 220, 255);
|
||
|
color: #fff;
|
||
|
}
|
||
|
|
||
|
.select-box-li:last-child {
|
||
|
border: none;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.triangleup {
|
||
|
position: absolute;
|
||
|
left: 50px;
|
||
|
top: -13px;
|
||
|
display: inline-block;
|
||
|
width: 0;
|
||
|
height: 0;
|
||
|
border: 6px solid transparent;
|
||
|
border-bottom-color: #ccc;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.alertInfoBox {
|
||
|
padding: 2vw;
|
||
|
|
||
|
.alert {
|
||
|
line-height: 10vw;
|
||
|
text-align: center;
|
||
|
color: #8f8f94;
|
||
|
border-bottom: 1px solid #ddd;
|
||
|
}
|
||
|
|
||
|
.alertBtn {
|
||
|
text-align: center;
|
||
|
height: 12vw;
|
||
|
line-height: 12vw;
|
||
|
margin: 4vw 0;
|
||
|
background: #eee;
|
||
|
color: #8f8f94
|
||
|
}
|
||
|
}
|
||
|
</style>
|