Files
xzlz_GjWeb/src/views/home/components/beonDuty.vue

178 lines
4.8 KiB
Vue
Raw Normal View History

2025-06-08 22:44:18 +08:00
<template>
<div class="checkpoint-list noScollLine">
<el-timeline style="max-width: 375px">
2025-12-05 21:38:51 +08:00
<el-timeline-item v-for="(item, index) in warningList.listData" :key="index" :timestamp="item.yjSj"
placement="top" :hollow="true" color="#061b44">
2025-06-08 22:44:18 +08:00
<div class="item_card">
<div style="line-height: 18px">
{{ item.yjNr }}
</div>
<el-divider border-style="dashed" class="dashed" />
2025-12-05 21:38:51 +08:00
<div class="flex" @click="sendCommand(item)">
2025-06-08 22:44:18 +08:00
<div class="warning-image">
2025-12-05 21:38:51 +08:00
<!-- <img :src="item.yjTp" alt="预警图片" /> -->
<template v-if="!item.yjTp || item.yjTp.includes('baidu')">
<img src="@/assets/images/car.png" width="65" height="70" v-if="item.yjLx == 2" />
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
</template>
<el-image v-else :preview-teleported="true" style="width: 80px; height: 110px" :src="item.yjTp"
:preview-src-list="[item.yjTp]" show-progress>
<template #error>
<div class="image-slot error">
<img src="@/assets/images/car.png" width="65" height="80" v-if="item.yjLx == 2" />
<img src="@/assets/images/default_male.png" width="80" height="110" v-else />
</div>
</template>
</el-image>
2025-06-08 22:44:18 +08:00
</div>
<div class="inform">
<div class="flex align-center">
<div class="inform_name">
姓名<span>{{ item.yjRyxm }}</span>
</div>
2025-07-21 16:21:47 +08:00
<div class="inform_tag" v-if="item.yjlyBqmc">{{ item.yjlyBqmc }}</div>
2025-06-08 22:44:18 +08:00
</div>
<div>身份证{{ item.yjRysfzh }}</div>
<div>
购票时间<span>{{ item.gpsj }}</span>
</div>
<div>购买路线{{ item.gmlx }}</div>
<div>购买地点{{ item.gmdd }}</div>
</div>
</div>
</div>
</el-timeline-item>
</el-timeline>
<Empty :show="warningList.listData.length == 0" />
</div>
2025-12-05 21:38:51 +08:00
<FzDialog v-model="dialogVisible" :list="dataList"/>
2025-06-08 22:44:18 +08:00
</template>
<script setup>
2025-12-05 21:38:51 +08:00
import { reactive ,ref} from "vue";
2025-06-08 22:44:18 +08:00
import { tbGjYjgetPageList } from "@/api/mosty-zhgj.js";
import Empty from "@/components/Empty/index.vue";
2025-12-05 21:38:51 +08:00
import FzDialog from "../components/fqzl.vue";
2025-06-08 22:44:18 +08:00
const warningList = reactive({
listData: [],
total: 0
});
const linQuery = reactive({
pageCurrent: 1,
pageSize: 10
});
const gettbGjclselectPage = () => {
tbGjYjgetPageList(linQuery).then((res) => {
warningList.listData =
linQuery.pageCurrent == 1
? res.records
: warningList.listDat.concat(res.records);
warningList.total = res.total;
});
};
const scroll = () => {
if (warningList.total > warningList.listData.length) {
gettbGjclselectPage();
linQuery.pageCurrent++;
}
};
2025-12-05 21:38:51 +08:00
// 发送指令
const dialogVisible = ref(false);
const dataList=ref({})
const sendCommand = (item) => {
dialogVisible.value = true;
dataList.value=item
}
2025-06-08 22:44:18 +08:00
gettbGjclselectPage();
</script>
<style scoped lang="scss">
.checkpoint-list {
margin-top: 20px;
margin-left: 18px;
height: calc(100% - 40px);
overflow: hidden;
overflow-y: auto;
padding: 4px;
box-sizing: border-box;
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
.item_card {
font-size: 14px;
color: #fff;
padding: 18px 13px 8px 15px;
width: 359px;
height: 190px;
border-radius: 4px;
border: 1px solid #0468e1;
opacity: 0.86;
background: url("~@/assets/images/bi/jmk.png") no-repeat center center;
background-size: 100% 100%;
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
.dashed {
width: 100%;
border-top: 1px #0468e1 dashed;
margin: 10px 0px 9px;
}
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
.warning-image {
border: 1px solid #0468e1;
padding: 10px 10px 10px 14px;
width: 103px;
height: 99px;
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
.inform {
box-sizing: border-box;
margin-left: 11px;
width: 215px;
font-family: "Source Han Sans CN";
font-weight: 400;
font-size: 14px;
color: #ffffff;
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
.inform_name {
width: 120px;
}
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
.inform_tag {
font-family: "Source Han Sans CN";
font-weight: 300;
font-size: 10px;
color: #f9411c;
border: 1px solid #f9411c;
padding: 0px 8px;
font-weight: 800;
border-radius: 8px;
}
}
}
}
::v-deep .el-timeline-item__node {
border-color: rgb(13, 216, 37);
}
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
::v-deep .el-timeline-item__tail {
border-left: 2px solid #06366d;
}
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
::v-deep .el-timeline-item__wrapper {
padding-left: 10px;
}
2025-12-05 21:38:51 +08:00
2025-06-08 22:44:18 +08:00
::v-deep .is-top {
margin-bottom: 12px;
padding-top: 2px;
font-size: 14px;
margin-left: 10px;
color: #fff;
}
</style>