修改全局影响区域文字为行政区域,涉灾详情参数完成回填。

This commit is contained in:
fanjia 2026-04-17 15:21:10 +08:00
parent 5e90481aaa
commit 9b9c852c52
11 changed files with 146 additions and 54 deletions

View File

@ -16,7 +16,7 @@
<template #filter> <template #filter>
<div class="filter-row"> <div class="filter-row">
<div class="filter-item"> <div class="filter-item">
<span class="filter-label">影响区域</span> <span class="filter-label">行政区域</span>
<el-select <el-select
:teleported="false" :teleported="false"
v-model="filterForm.district" v-model="filterForm.district"
@ -136,7 +136,7 @@ const tableHeight = ref(300);
// //
const tableColumns = ref([ const tableColumns = ref([
{ prop: 'id', label: '序号', width: '' }, { prop: 'id', label: '序号', width: '' },
{ prop: 'district', label: '影响区域', width: '' }, { prop: 'district', label: '行政区域', width: '' },
{ prop: 'routeNo', label: '线路编号', width: '' }, { prop: 'routeNo', label: '线路编号', width: '' },
{ prop: 'stakeNo', label: '起止桩号', width: '', slot: 'stakeNo' }, { prop: 'stakeNo', label: '起止桩号', width: '', slot: 'stakeNo' },
{ prop: 'location', label: '路况位置', width: '', slot: 'location' }, { prop: 'location', label: '路况位置', width: '', slot: 'location' },

View File

@ -17,7 +17,7 @@
<template #filter> <template #filter>
<div class="filter-row"> <div class="filter-row">
<div class="filter-item"> <div class="filter-item">
<span class="filter-label">影响区域</span> <span class="filter-label">行政区域</span>
<el-select :teleported="false" v-model="filterForm.region" placeholder="请选择" class="filter-select" clearable> <el-select :teleported="false" v-model="filterForm.region" placeholder="请选择" class="filter-select" clearable>
<el-option <el-option
v-for="item in regionOptions" v-for="item in regionOptions"
@ -83,7 +83,7 @@ const filterForm = ref({
riskLevel: "", riskLevel: "",
}); });
// //
// index.js // index.js
// //
@ -95,7 +95,7 @@ const tableHeight = ref(300);
// //
const tableColumns = ref([ const tableColumns = ref([
{ prop: 'id', label: '序号', width: '60' }, { prop: 'id', label: '序号', width: '60' },
{ prop: 'region', label: '影响区域', width: '100' }, { prop: 'region', label: '行政区域', width: '100' },
{ prop: 'stationName', label: '驻地名称', width: '200', slot: 'stationName' }, { prop: 'stationName', label: '驻地名称', width: '200', slot: 'stationName' },
{ prop: 'project', label: '所属项目', width: '200', slot: 'project' }, { prop: 'project', label: '所属项目', width: '200', slot: 'project' },
{ prop: 'peopleCount', label: '驻地人数', width: '80' }, { prop: 'peopleCount', label: '驻地人数', width: '80' },

View File

@ -17,7 +17,7 @@
<template #filter> <template #filter>
<div class="filter-row"> <div class="filter-row">
<div class="filter-item"> <div class="filter-item">
<span class="filter-label">影响区域</span> <span class="filter-label">行政区域</span>
<el-select :teleported="false" <el-select :teleported="false"
v-model="filterForm.region" v-model="filterForm.region"
placeholder="请选择" placeholder="请选择"
@ -76,7 +76,7 @@ const filterForm = ref({
type: "", type: "",
}); });
// //
// index.js // index.js
// //

View File

@ -17,7 +17,7 @@
<template #filter> <template #filter>
<div class="filter-row"> <div class="filter-row">
<div class="filter-item"> <div class="filter-item">
<span class="filter-label">影响区域</span> <span class="filter-label">行政区域</span>
<el-select :teleported="false" <el-select :teleported="false"
v-model="filterForm.region" v-model="filterForm.region"
placeholder="请选择" placeholder="请选择"
@ -68,7 +68,7 @@ const filterForm = ref({
region: "", region: "",
}); });
// //
// index.js // index.js
// //
@ -77,7 +77,7 @@ const tableHeight = ref(300);
// //
const tableColumns = ref([ const tableColumns = ref([
{ prop: "id", label: "序号", width: "" }, { prop: "id", label: "序号", width: "" },
{ prop: "region", label: "影响区域", width: "" }, { prop: "region", label: "行政区域", width: "" },
{ prop: "dispatchCount", label: "调度数", width: "", slot: "dispatchCount" }, { prop: "dispatchCount", label: "调度数", width: "", slot: "dispatchCount" },
{ prop: "lastDispatchTime", label: "最近调度时间", width: "" }, { prop: "lastDispatchTime", label: "最近调度时间", width: "" },
]); ]);

View File

@ -148,40 +148,62 @@ const total = ref(0);
const currentPage = ref(1); const currentPage = ref(1);
const pageSize = ref(10); const pageSize = ref(10);
// //
const hazardData = ref({ const hazardData = ref({
district: '南川区', //
riskLevel: '较大隐患', district: '', // GL1_QXMC
roadCode: 'S523', riskLevel: '', // GL1_FXDJ
location: '开县-凭祥(K292+301至K292+386)', roadCode: '', // GL1_GLBH 线
riskDescription: roadName: '', // GL1_GLMC 线
'崩塌形成于路线右侧上边坡陡峭位置影响长度85m掉块、滑塌可能性极大。【类型路内风险点-边坡】', location: '', // GL1_QDZH + GL1_ZDZH
measures: '已纳入灾害防治工程计划,拟采用坡面整理及挂网喷射植被混凝土整治。', riskDescription: '', // GL1_FXMS
riskType: '', // GL1_FXLX
measures: '', // GL1_CQCS
isWithinRedLine: '', // GL1_SFHXN 线
//
trafficDept: { trafficDept: {
name: '何思毅', name: '', // GL1_JTXM
phone: '13896702005', phone: '', // GL1_JTDH
frequency: '半年巡查一次', frequency: '',
}, },
roadOrg: { roadOrg: {
name: '杨洪', name: '', // GL1_JGXM
phone: '15025697135', phone: '', // GL1_JGDH
frequency: '每月巡查一次', frequency: '',
}, },
maintenance: { maintenance: {
name: '陈李彪', name: '', // GL1_YHXM
phone: '13896713399', phone: '', // GL1_YHDH
frequency: '每周巡查一次', frequency: '',
}, },
roadKeeper: { roadKeeper: {
name: '陈李彪', name: '', // GL1_HLXM
phone: '13896713399', phone: '', // GL1_HLDH
frequency: '一周巡查两次', frequency: '',
}, },
earlyWarning: '当前无预警',
offlinePatrol: '常态化巡查', //
trafficControl: '观察通行 半幅通行 禁止通行 无', earlyWarning: '', // GL1_YJDJ
forcePreposition: '安宁养护站', offlinePatrol: '', // GL1_SFJCD
alarmBlocking: '设置警示标识 向社会发布信息 采取硬隔离措施 无', trafficControl: '', // GL1_SFZCQS
forcePreposition: '', // GL1_ZT
alarmBlocking: '', // GL1_SFZZWC
//
isMeasureTaken: '', // GL1_SFCQCS
completeDeadline: '', // GL1_WCSX
expertOpinion: '', // GL1_ZJYJ
isTransferred: '', // GL1_SFGZYJ
auditStatus: '', // GL1_SHZT
auditUnit: '', // GL1_SHDW
reporter: '', // GL1_SBR
reportTime: '', // GL1_SBSJ
remark: '', // GL1_BZ
//
longitude: '', // GL1_LON
latitude: '', // GL1_LAT
}); });
// //
@ -204,10 +226,70 @@ watch(
() => props.visible, () => props.visible,
newVal => { newVal => {
if (newVal && props.data) { if (newVal && props.data) {
// //
Object.assign(hazardData.value, props.data); const data = props.data;
hazardData.value = {
//
district: data.GL1_QXMC || data.district || '',
riskLevel: data.GL1_FXDJ || data.riskLevel || '',
roadCode: data.GL1_GLBH || data.roadCode || '',
roadName: data.GL1_GLMC || data.roadName || '',
location:
data.GL1_QDZH && data.GL1_ZDZH
? `${data.GL1_QDZH}${data.GL1_ZDZH}`
: data.location || '',
riskDescription: data.GL1_FXMS || data.riskDescription || '',
riskType: data.GL1_FXLX || data.riskType || '',
measures: data.GL1_CQCS || data.measures || '',
isWithinRedLine: data.GL1_SFHXN || data.isWithinRedLine || '',
//
trafficDept: {
name: data.GL1_JTXM || data.trafficDept?.name || '',
phone: data.GL1_JTDH || data.trafficDept?.phone || '',
frequency: data.trafficDept?.frequency || '',
},
roadOrg: {
name: data.GL1_JGXM || data.roadOrg?.name || '',
phone: data.GL1_JGDH || data.roadOrg?.phone || '',
frequency: data.roadOrg?.frequency || '',
},
maintenance: {
name: data.GL1_YHXM || data.maintenance?.name || '',
phone: data.GL1_YHDH || data.maintenance?.phone || '',
frequency: data.maintenance?.frequency || '',
},
roadKeeper: {
name: data.GL1_HLXM || data.roadKeeper?.name || '',
phone: data.GL1_HLDH || data.roadKeeper?.phone || '',
frequency: data.roadKeeper?.frequency || '',
},
//
earlyWarning: data.GL1_YJDJ || data.earlyWarning || '',
offlinePatrol: data.GL1_SFJCD || data.offlinePatrol || '',
trafficControl: data.GL1_SFZCQS || data.trafficControl || '',
forcePreposition: data.GL1_ZT || data.forcePreposition || '',
alarmBlocking: data.GL1_SFZZWC || data.alarmBlocking || '',
//
isMeasureTaken: data.GL1_SFCQCS || data.isMeasureTaken || '',
completeDeadline: data.GL1_WCSX || data.completeDeadline || '',
expertOpinion: data.GL1_ZJYJ || data.expertOpinion || '',
isTransferred: data.GL1_SFGZYJ || data.isTransferred || '',
auditStatus: data.GL1_SHZT || data.auditStatus || '',
auditUnit: data.GL1_SHDW || data.auditUnit || '',
reporter: data.GL1_SBR || data.reporter || '',
reportTime: data.GL1_SBSJ || data.reportTime || '',
remark: data.GL1_BZ || data.remark || '',
//
longitude: data.GL1_LON || data.longitude || '',
latitude: data.GL1_LAT || data.latitude || '',
};
} }
} },
{ immediate: true }
); );
</script> </script>

View File

@ -79,7 +79,7 @@
:teleported="false" :teleported="false"
v-model="filterForm.region" v-model="filterForm.region"
size="small" size="small"
placeholder="影响区域" placeholder="行政区域"
class="filter-select" class="filter-select"
> >
<el-option <el-option
@ -260,7 +260,7 @@ const filterForm = ref({
// 使 // 使
const unifiedColumns = [ const unifiedColumns = [
{ prop: "id", label: "序号", width: "" }, { prop: "id", label: "序号", width: "" },
{ prop: "region", label: "影响区域", width: "" }, { prop: "region", label: "行政区域", width: "" },
{ prop: "pointType", label: "影响点类型", width: "" }, { prop: "pointType", label: "影响点类型", width: "" },
{ prop: "pointLocation", label: "影响点位置", width: "" }, { prop: "pointLocation", label: "影响点位置", width: "" },
{ prop: "pointLevel", label: "影响点等级", width: "", slot: "pointLevel" }, { prop: "pointLevel", label: "影响点等级", width: "", slot: "pointLevel" },
@ -296,7 +296,7 @@ const unifiedColumns = [
// //
const projectColumns = [ const projectColumns = [
{ prop: "id", label: "序号", width: "60" }, { prop: "id", label: "序号", width: "60" },
{ prop: "region", label: "影响区域", width: "" }, { prop: "region", label: "行政区域", width: "" },
{ prop: "pointType", label: "影响点类型", width: "" }, { prop: "pointType", label: "影响点类型", width: "" },
{ prop: "siteName", label: "驻地名称", width: "" }, { prop: "siteName", label: "驻地名称", width: "" },
{ {
@ -535,7 +535,7 @@ const processUnifiedData = (item, type) => {
// //
const baseData = { const baseData = {
id: item.id, id: item.id,
// //
region: region:
item.GL1_QXMC || item.GL1_QXMC ||
item.COUNTY || item.COUNTY ||
@ -600,7 +600,7 @@ const processUnifiedData = (item, type) => {
if (cardTypeVal.value === "桥梁") { if (cardTypeVal.value === "桥梁") {
return { return {
...baseData, ...baseData,
// - 使 // - 使
region: item.GL1_QXMC || "-", region: item.GL1_QXMC || "-",
// - 使 // - 使
pointLocation: item.GL1_QLMC || "-", pointLocation: item.GL1_QLMC || "-",
@ -641,7 +641,7 @@ const processUnifiedData = (item, type) => {
if (cardTypeVal.value === "隧道") { if (cardTypeVal.value === "隧道") {
return { return {
...baseData, ...baseData,
// - 使 // - 使
region: item.GL1_QXMC || item.GL1_QXBM || "-", region: item.GL1_QXMC || item.GL1_QXBM || "-",
// - 使 // - 使
pointLocation: item.GL1_SDMC || "-", pointLocation: item.GL1_SDMC || "-",
@ -682,7 +682,7 @@ const processUnifiedData = (item, type) => {
if (cardTypeVal.value === "路段") { if (cardTypeVal.value === "路段") {
return { return {
...baseData, ...baseData,
// - 使 // - 使
region: item.GL1_ZDMC || "-", region: item.GL1_ZDMC || "-",
// - 使线+ // - 使线+
pointLocation: `${item.GL1_GLMC || item.GL1_GLBH || "-"} (${item.GL1_QDZH || "-"} - ${item.GL1_ZDZH || "-"})`, pointLocation: `${item.GL1_GLMC || item.GL1_GLBH || "-"} (${item.GL1_QDZH || "-"} - ${item.GL1_ZDZH || "-"})`,
@ -721,7 +721,7 @@ const processUnifiedData = (item, type) => {
if (cardTypeVal.value === "项目") { if (cardTypeVal.value === "项目") {
return { return {
...baseData, ...baseData,
// - 使COUNTY // - 使COUNTY
region: item.COUNTY || item.county || item.county_name || "-", region: item.COUNTY || item.county || item.county_name || "-",
// - 使 // - 使
pointLocation: item.PROJECT_NAME || item.projectName || item.name || "-", pointLocation: item.PROJECT_NAME || item.projectName || item.name || "-",

View File

@ -34,7 +34,7 @@
<div class="filter-item"> <div class="filter-item">
<el-select :teleported="false" <el-select :teleported="false"
v-model="filterForm.region" v-model="filterForm.region"
placeholder="影响区域" placeholder="行政区域"
class="filter-select" class="filter-select"
> >
<el-option <el-option
@ -128,7 +128,7 @@ const tableColumns = ref([
{ prop: "id", label: "序号", width: "" }, { prop: "id", label: "序号", width: "" },
{ prop: "weatherSource", label: "气象来源", width: "" }, { prop: "weatherSource", label: "气象来源", width: "" },
{ prop: "warningLevel", label: "预警等级", width: "", slot: "warningLevel" }, { prop: "warningLevel", label: "预警等级", width: "", slot: "warningLevel" },
{ prop: "region", label: "影响区域", width: "" }, { prop: "region", label: "行政区域", width: "" },
{ prop: "warningTime", label: "预警时间", width: "" }, { prop: "warningTime", label: "预警时间", width: "" },
{ prop: "endTime", label: "结束时间", width: "" }, { prop: "endTime", label: "结束时间", width: "" },
{ prop: "impactPoints", label: "影响点数量", width: "" }, { prop: "impactPoints", label: "影响点数量", width: "" },

View File

@ -34,7 +34,7 @@
</el-select> </el-select>
</div> </div>
<div class="filter-item"> <div class="filter-item">
<span class="filter-label">影响区域</span> <span class="filter-label">行政区域</span>
<el-select <el-select
v-model="filterForm.countyName" v-model="filterForm.countyName"
placeholder="请选择" placeholder="请选择"
@ -206,7 +206,7 @@ const tableColumns = ref([
width: "", width: "",
}, },
{ prop: "weatherType", label: "气象类型", width: "" }, { prop: "weatherType", label: "气象类型", width: "" },
{ prop: "countyName", label: "影响区域", width: "" }, { prop: "countyName", label: "行政区域", width: "" },
{ prop: "warningTime", label: "生效时间", width: "" }, { prop: "warningTime", label: "生效时间", width: "" },
{ prop: "endTime", label: "失效时间", width: "" }, { prop: "endTime", label: "失效时间", width: "" },
{ {

View File

@ -438,4 +438,10 @@ defineExpose({
:deep(.el-table .cell) { :deep(.el-table .cell) {
text-align: center; text-align: center;
} }
:deep(.el-table:not(.el-table--border) .el-table__cell) {
font-size: vw(14);
}
:deep(.el-table .cell) {
font-size: vw(16);
}
</style> </style>

View File

@ -81,6 +81,7 @@
:showHazardPopup="showHazardPopup" :showHazardPopup="showHazardPopup"
:riskPointStats="riskPointStats" :riskPointStats="riskPointStats"
:roadvalArrtrue="roadvalArrtrue" :roadvalArrtrue="roadvalArrtrue"
:showRoadStats="showRoadStats"
@openAIResult="openDialog('aiWarningResult')" @openAIResult="openDialog('aiWarningResult')"
@dateRangeChange="handleDateRangeChange" @dateRangeChange="handleDateRangeChange"
></top> ></top>
@ -342,9 +343,11 @@ const changeActiveIndex = index => {
activeitem.value = index; activeitem.value = index;
}; };
const roadItem = ref({}); const roadItem = ref({});
const showRoadStats = ref(false);
const roadItemClick = item => { const roadItemClick = item => {
console.log('点击路段:', item); console.log('点击路段:', item);
roadItem.value = item; roadItem.value = item;
showRoadStats.value = true;
}; };
// //

View File

@ -30,7 +30,7 @@
</span> </span>
</div> </div>
</div> </div>
<div class="road-stats" v-if="roadStats.length > 0"> <div class="road-stats" v-if="showRoadStats && roadStats.length > 0">
<div v-for="(item, index) in roadStats" :key="index" class="stat-item"> <div v-for="(item, index) in roadStats" :key="index" class="stat-item">
<span class="stat-label">{{ item.label }}</span> <span class="stat-label">{{ item.label }}</span>
<span class="stat-value-container display ai_center"> <span class="stat-value-container display ai_center">
@ -65,6 +65,10 @@ const props = defineProps({
type: Object, type: Object,
default: () => ({}), default: () => ({}),
}, },
showRoadStats: {
type: Boolean,
default: false,
},
}); });
watch( watch(
@ -199,9 +203,6 @@ const fetchRiskLevelCount = async () => {
let roadTotal = 0; let roadTotal = 0;
roadStats.value.forEach(item => { roadStats.value.forEach(item => {
data.forEach(d => { data.forEach(d => {
debugger;
console.log(item.label, d.level);
console.log(item.label.includes(d.level));
if (item.label.includes(d.level)) { if (item.label.includes(d.level)) {
roadTotal += Number(d.count); roadTotal += Number(d.count);
item.value = Number(d.count); item.value = Number(d.count);