2025-08-01 17:16:03 +08:00
|
|
|
|
<template>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<div class="warning-card" :style="{ 'border': `1px solid ${changeBG(item.yjjb)}` }">
|
2025-08-01 17:16:03 +08:00
|
|
|
|
<div class="warning-image flex">
|
2025-10-26 12:25:50 +08:00
|
|
|
|
<!-- -->
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<template v-if="!item.yjtp || item.yjtp.includes('baidu')">
|
|
|
|
|
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="item.yjlb == 2" />
|
2025-10-26 12:25:50 +08:00
|
|
|
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
|
2025-10-09 21:33:58 +08:00
|
|
|
|
</template>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<el-image preview-teleported v-else @click.stop style="width: 65px; height: 70px" :src="item.yjtp" :preview-src-list="[item.yjtp]" show-progress>
|
2025-10-26 12:25:50 +08:00
|
|
|
|
<template #error>
|
|
|
|
|
|
<div class="image-slot error">
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="item.yjlb == 2" />
|
2025-10-26 12:25:50 +08:00
|
|
|
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else />
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</el-image>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
<div class="ml10 warning-info">
|
|
|
|
|
|
<div class="flex just-between align-center">
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<div class="flex align-center mt4" v-if="item.yjlb == 2">
|
|
|
|
|
|
<span>{{ item.cph }}</span>
|
2025-10-26 12:25:50 +08:00
|
|
|
|
</div>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
<div class="flex align-center mt4" v-else>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<span>{{ item.ryxm }}</span>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
<span class="gapline mr10 ml10"></span>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<span>{{ IdCard(item.rysfzh, 2) }}</span>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
<span class="gapline mr10 ml10"></span>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<span>{{ IdCard(item.rysfzh, 3) }}</span>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<span class="tag" v-if="item.yjbq" :style="{ 'background': `${changeBG(item.yjjb)}` }">{{ item.yjbq }}</span>
|
2025-10-26 12:25:50 +08:00
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<div v-if="item.yjlb == 2" class="flex">车牌类型:
|
|
|
|
|
|
<DictTag :tag="false" :value="item.hplx" color="#fff" :options="dict.D_BZ_HPZL" />
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<div class="mt4" v-else>身份证:{{ item.rysfzh }}</div>
|
|
|
|
|
|
<div class="mt4 two_text_detail">预警时间:{{ item.yjsj }}</div>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<div class="warning-info warning-boder pb5" v-if="item.yjlx == '01'">
|
|
|
|
|
|
<div class="mt4 two_text_detail">预警内容:{{ item.yjnr }}</div>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<div class="warning-info pt5 pb5 warning-boder" v-if="item.yjlx == '01'">
|
|
|
|
|
|
<div class="mt4 two_text_detail">处置结果:{{ item.yjnr }}</div>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<div class="warning-info pt5 " v-if="item.yjlx == '01'">
|
2025-10-26 12:25:50 +08:00
|
|
|
|
<div class="two_text_detail flex lh25"><img src="@/assets/images/ddtb.png" width="20" height="25" alt=""
|
|
|
|
|
|
srcset="">{{
|
2025-11-22 21:59:58 +08:00
|
|
|
|
item.yjnr }}</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="mt4 two_text_detail" v-if="buttonBox">
|
2025-11-28 22:25:58 +08:00
|
|
|
|
<el-button type="primary" @click="pushAssess(item)">全息档案</el-button>
|
|
|
|
|
|
<el-button type="primary" @click="pushWarning(item)">预警指派</el-button>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<el-button color="#ef7762" @click="showDetail(item)" style="color: #fff;">转合成</el-button>
|
2025-11-27 14:27:59 +08:00
|
|
|
|
<!-- <el-button type="warning">转基管</el-button> -->
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<el-button type="danger">转会商</el-button>
|
|
|
|
|
|
<el-button type="success" @click="showFeedback(item, '签收')" v-if="item.czzt == '01'">签收</el-button>
|
|
|
|
|
|
<el-button type="success" @click="showFeedback(item, '反馈')" v-if="item.czzt == '02'">反馈</el-button>
|
|
|
|
|
|
<el-button type="success" @click="showFeedback(item, '查看反馈')" v-if="item.czzt == '03'">查看反馈</el-button>
|
|
|
|
|
|
<el-button type="success" @click="plotThetrajectory(item.rysfzh)">轨迹上图</el-button>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<!-- props.item.czzt == '03'" -->
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</div>
|
2025-11-22 21:59:58 +08:00
|
|
|
|
<HolographicArchive v-model="assessShow" :dataList="dataList" />
|
2025-11-28 22:25:58 +08:00
|
|
|
|
<WarningAssignment v-model="warningShow" :dataList="dataList"/>
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
import { IdCard } from '@/utils/validate.js'
|
2025-11-28 22:25:58 +08:00
|
|
|
|
import { reactive, ref, getCurrentInstance, watch } from "vue";
|
2025-11-22 21:59:58 +08:00
|
|
|
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
|
|
|
|
|
import HolographicArchive from './holographicArchive.vue'
|
2025-11-28 22:25:58 +08:00
|
|
|
|
import WarningAssignment from './warningAssignment.vue'
|
2025-12-11 19:15:57 +08:00
|
|
|
|
import { holographicProfileJump } from "@/utils/tools.js"
|
|
|
|
|
|
|
2025-11-22 21:59:58 +08:00
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
|
|
|
2025-08-01 17:16:03 +08:00
|
|
|
|
const props = defineProps({
|
|
|
|
|
|
item: {
|
|
|
|
|
|
type: Object,
|
|
|
|
|
|
default: {}
|
|
|
|
|
|
}, dict: {
|
|
|
|
|
|
tupe: Object,
|
|
|
|
|
|
default: {}
|
2025-11-22 21:59:58 +08:00
|
|
|
|
}, buttonBox: {
|
|
|
|
|
|
type: Boolean,
|
|
|
|
|
|
default: false
|
2025-08-01 17:16:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
2025-11-28 22:25:58 +08:00
|
|
|
|
watch(() => props.item, (newVal, oldVal) => {
|
|
|
|
|
|
emit('fkLxOptions', newVal);
|
|
|
|
|
|
},{deep:true,immediate:true})
|
|
|
|
|
|
const emit = defineEmits(["plotThetrajectory", "showDetail", 'showFeedback','fkLxOptions']);
|
2025-08-01 17:16:03 +08:00
|
|
|
|
|
|
|
|
|
|
const changeBG = (str) => {
|
|
|
|
|
|
switch (str) {
|
2025-11-28 22:25:58 +08:00
|
|
|
|
case "01":
|
2025-08-01 17:16:03 +08:00
|
|
|
|
return "red";
|
2025-11-28 22:25:58 +08:00
|
|
|
|
case "02":
|
2025-08-01 17:16:03 +08:00
|
|
|
|
return "orange";
|
2025-11-28 22:25:58 +08:00
|
|
|
|
case "03":
|
2025-10-26 12:25:50 +08:00
|
|
|
|
return "#b5b522";
|
2025-11-22 21:59:58 +08:00
|
|
|
|
default:
|
|
|
|
|
|
return "blue";
|
2025-08-01 17:16:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
};
|
2025-11-22 21:59:58 +08:00
|
|
|
|
// 轨迹上图
|
|
|
|
|
|
const plotThetrajectory = (val) => {
|
|
|
|
|
|
emit('plotThetrajectory', val);
|
|
|
|
|
|
}
|
|
|
|
|
|
// 查看反馈
|
|
|
|
|
|
const showFeedback = (val, type) => {
|
|
|
|
|
|
switch (type) {
|
|
|
|
|
|
case '签收':
|
|
|
|
|
|
proxy.$confirm("是否确定要签收?", "警告", { type: "warning" }).then(() => {
|
2025-11-28 22:25:58 +08:00
|
|
|
|
// switch (val.czzt) {
|
|
|
|
|
|
// case '01':
|
|
|
|
|
|
// val.czzt = '02'
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// case '02':
|
|
|
|
|
|
// val.czzt = '03'
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// default:
|
|
|
|
|
|
// break;
|
|
|
|
|
|
// }
|
2025-11-22 21:59:58 +08:00
|
|
|
|
qcckPost({ id: val.id }, "/mosty-gsxt/tbYjxx/yjqs").then(() => {
|
|
|
|
|
|
val.czzt = '02'
|
|
|
|
|
|
proxy.$message({ type: "success", message: "签收成功" });
|
|
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
break;
|
|
|
|
|
|
case '反馈':
|
|
|
|
|
|
case '查看反馈':
|
|
|
|
|
|
const data = {
|
|
|
|
|
|
...val,
|
|
|
|
|
|
type: type,
|
|
|
|
|
|
}
|
|
|
|
|
|
emit('showFeedback', data);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const showDetail = (item) => {
|
|
|
|
|
|
emit('showDetail', item);
|
|
|
|
|
|
}
|
2025-11-28 22:25:58 +08:00
|
|
|
|
// 全息档案
|
2025-11-22 21:59:58 +08:00
|
|
|
|
const assessShow = ref(false)
|
|
|
|
|
|
const dataList = ref()
|
|
|
|
|
|
const pushAssess = (val) => {
|
2025-12-11 19:15:57 +08:00
|
|
|
|
return holographicProfileJump(val?.rysfzh) // 全息档案跳转
|
|
|
|
|
|
// assessShow.value = true;
|
|
|
|
|
|
// dataList.value = val;
|
2025-11-22 21:59:58 +08:00
|
|
|
|
}
|
2025-11-28 22:25:58 +08:00
|
|
|
|
// 预警指派
|
|
|
|
|
|
const warningShow = ref(false)
|
|
|
|
|
|
const pushWarning = (val) => {
|
|
|
|
|
|
warningShow.value = true;
|
|
|
|
|
|
dataList.value = val;
|
|
|
|
|
|
}
|
2025-08-01 17:16:03 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
.warning-card {
|
2025-10-26 12:25:50 +08:00
|
|
|
|
// background: url("~@/assets/images/xxxxxx.png") no-repeat center center;
|
2025-08-01 17:16:03 +08:00
|
|
|
|
background-size: 100% 100%;
|
2025-10-26 12:25:50 +08:00
|
|
|
|
|
2025-08-01 17:16:03 +08:00
|
|
|
|
gap: 12px;
|
|
|
|
|
|
margin-bottom: 4px;
|
|
|
|
|
|
padding: 10px;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
|
|
.warning-image {
|
2025-10-09 21:33:58 +08:00
|
|
|
|
//
|
2025-08-01 17:16:03 +08:00
|
|
|
|
// width: 80px;
|
|
|
|
|
|
// height: 100px;
|
|
|
|
|
|
|
|
|
|
|
|
// img {
|
|
|
|
|
|
// width: 100%;
|
|
|
|
|
|
// height: 100%;
|
|
|
|
|
|
// object-fit: cover;
|
|
|
|
|
|
// }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.warning-info {
|
|
|
|
|
|
flex: 1;
|
2025-10-09 21:33:58 +08:00
|
|
|
|
|
2025-08-01 17:16:03 +08:00
|
|
|
|
.tag {
|
|
|
|
|
|
padding: 1px 6px;
|
|
|
|
|
|
background: #0072FF;
|
|
|
|
|
|
border-radius: 2px 2px 2px 2px;
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.gapline {
|
|
|
|
|
|
width: 2px;
|
|
|
|
|
|
height: 14px;
|
|
|
|
|
|
background: #e9e9e9;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-10-09 21:33:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 图片错误状态样式
|
|
|
|
|
|
.image-slot {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
background-color: #f5f5f5;
|
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 主图错误和预览图错误的样式
|
|
|
|
|
|
.image-slot.error,
|
|
|
|
|
|
.image-slot.viewer-error {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
}
|
2025-10-26 12:25:50 +08:00
|
|
|
|
|
|
|
|
|
|
.warning-boder {
|
|
|
|
|
|
border-bottom: 2px dashed #0958b2;
|
2025-08-01 17:16:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.red {
|
|
|
|
|
|
background: url("~@/assets/images/GroupRed.png") no-repeat center center;
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.orange {
|
|
|
|
|
|
background: url("~@/assets/images/GroupOrange.png") no-repeat center center;
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.yellow {
|
|
|
|
|
|
background: url("~@/assets/images/GroupYellow.png") no-repeat center center;
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.blue {
|
|
|
|
|
|
background: url("~@/assets/images/GroupBlue.png") no-repeat center center;
|
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|