Compare commits
2 Commits
fc7e3ee0a9
...
97e421cf24
| Author | SHA1 | Date | |
|---|---|---|---|
| 97e421cf24 | |||
| bb0a0bb976 |
@ -65,7 +65,14 @@
|
||||
:key="tab.key"
|
||||
class="hierarchy-tab"
|
||||
:class="{ active: activeHierarchyTab === tab.key }"
|
||||
@click="activeHierarchyTab = tab.key"
|
||||
@click="
|
||||
activeHierarchyTab = tab.key;
|
||||
if (tab.key == 'city-dept') {
|
||||
activeImpactTab = 'point';
|
||||
} else {
|
||||
activeImpactTab = 'aiiType';
|
||||
}
|
||||
"
|
||||
>
|
||||
{{ tab.label }}
|
||||
</div>
|
||||
@ -78,7 +85,10 @@
|
||||
:key="tab.key"
|
||||
class="hierarchy-tab"
|
||||
:class="{ active: activeHierarchyTab === tab.key }"
|
||||
@click="activeHierarchyTab = tab.key"
|
||||
@click="
|
||||
activeHierarchyTab = tab.key;
|
||||
activeImpactTab = 'point';
|
||||
"
|
||||
>
|
||||
{{ tab.label }}
|
||||
</div>
|
||||
@ -91,7 +101,12 @@
|
||||
:key="tab.key"
|
||||
class="hierarchy-tab"
|
||||
:class="{ active: activeHierarchyTab === tab.key }"
|
||||
@click="activeHierarchyTab = tab.key"
|
||||
@click="
|
||||
activeHierarchyTab = tab.key;
|
||||
if (tab.key == 'frontline-whistle' || tab.key == 'frontline-guard') {
|
||||
activeImpactTab = 'project';
|
||||
}
|
||||
"
|
||||
>
|
||||
{{ tab.label }}
|
||||
</div>
|
||||
@ -163,7 +178,9 @@
|
||||
'city-dept' == activeHierarchyTab ||
|
||||
'city-emergency' == activeHierarchyTab ||
|
||||
'district-leader' == activeHierarchyTab ||
|
||||
'district-person' == activeHierarchyTab
|
||||
'district-person' == activeHierarchyTab ||
|
||||
'frontline-whistle' == activeHierarchyTab ||
|
||||
'frontline-contractor' == activeHierarchyTab
|
||||
"
|
||||
>
|
||||
<div class="display jc_sb ai_center">
|
||||
@ -171,7 +188,8 @@
|
||||
<div
|
||||
class="impact-tabs"
|
||||
v-if="
|
||||
'city-leader' == activeHierarchyTab || 'city-emergency' == activeHierarchyTab
|
||||
'district-leader' == activeHierarchyTab ||
|
||||
'district-person' == activeHierarchyTab
|
||||
"
|
||||
>
|
||||
<div
|
||||
@ -194,26 +212,41 @@
|
||||
'city-dept' == activeHierarchyTab ||
|
||||
'city-emergency' == activeHierarchyTab ||
|
||||
'district-leader' == activeHierarchyTab ||
|
||||
'district-person' == activeHierarchyTab
|
||||
'district-person' == activeHierarchyTab ||
|
||||
'frontline-whistle' == activeHierarchyTab ||
|
||||
'frontline-contractor' == activeHierarchyTab
|
||||
"
|
||||
>
|
||||
<el-table
|
||||
v-if="activeImpactTab === 'point'"
|
||||
:data="currentImpactData"
|
||||
v-if="activeImpactTab === 'aiiType'"
|
||||
:data="aiiTypeArr"
|
||||
style="background: transparent; width: 368px"
|
||||
:header-cell-style="headerCellStyle"
|
||||
:cell-style="cellStyle"
|
||||
size="small"
|
||||
height="150"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="area" label="影响区域" width="80" align="center" />
|
||||
<el-table-column prop="roadCode" label="线路编号" width="70" align="center" />
|
||||
<el-table-column prop="type" label="类型" width="60" align="center" />
|
||||
<el-table-column prop="label" label="类型" width="" align="center" />
|
||||
<el-table-column prop="number" label="数量" width="" align="center" />
|
||||
</el-table>
|
||||
|
||||
<el-table
|
||||
v-if="activeImpactTab === 'point'"
|
||||
:data="currentImpactData"
|
||||
style="background: transparent"
|
||||
:header-cell-style="headerCellStyle"
|
||||
:cell-style="cellStyle"
|
||||
size="small"
|
||||
height="150"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="" align="center" />
|
||||
<el-table-column prop="area" label="影响区域" width="" align="center" />
|
||||
<el-table-column prop="roadCode" label="线路编号" width="" align="center" />
|
||||
<el-table-column prop="type" label="类型" width="" align="center" />
|
||||
<el-table-column
|
||||
prop="stake"
|
||||
label="桩号"
|
||||
width="108"
|
||||
width=""
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
@ -221,25 +254,25 @@
|
||||
<el-table
|
||||
v-if="activeImpactTab === 'project'"
|
||||
:data="impactProjectDataTable"
|
||||
style="background: transparent; width: 368px"
|
||||
style="background: transparent"
|
||||
:header-cell-style="headerCellStyle"
|
||||
:cell-style="cellStyle"
|
||||
size="small"
|
||||
height="150"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="area" label="影响区域" width="80" align="center" />
|
||||
<el-table-column type="index" label="序号" width="" align="center" />
|
||||
<el-table-column prop="area" label="影响区域" width="" align="center" />
|
||||
<el-table-column prop="projectName" label="项目名称" width="70" align="center" />
|
||||
<el-table-column
|
||||
prop="projectAddress"
|
||||
label="项目地址"
|
||||
width="60"
|
||||
width=""
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="lineNumber"
|
||||
label="线路编号"
|
||||
width="108"
|
||||
width=""
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
@ -347,7 +380,9 @@ const warningTabs = ref([
|
||||
guard:
|
||||
'按照相关要求,启动I级防御响应,并请及时关注地质、水文等风险提示信息,落实主动封闭管控措施,请立即按照2小时一次频率对你管养的重点路段进行巡查,重点巡查较高及以上风险路段、涉灾隐患点、地质条件复杂路段、临河临崖路段,重点关注涉水桥梁基础及墩台、不良地质隧道、隧道洞口边仰坡及侧切结构、高陡边坡支挡防护以及防排水设施,发现异常情况,立即向上报告,采取紧急排危、告警阻拦、交通管控等措施,并及时报送工作开展情况。',
|
||||
whistle:
|
||||
'按照相关要求,启动I级防御响应,并请及时关注地质、水文等风险提示信息,落实主动“关停撤转”措施,应急抢险人员和吹哨人全员在岗值班,做好应急装备物资检修,并请立即对你项目的重点部位进行巡查,重点巡查两区三厂、大型设施设备、取弃土(渣)场、砂石料场、涉水桥梁、富水隧道、围堰、支架脚手架、高切坡、深基坑、滑坡处置等部位,发现异常情况,立即向上报告,采取紧急排危、吹哨撤转等措施,并及时报送工作开展情况。',
|
||||
'按照相关指南,请根据暴雨预警级别启动相应等级防御响应,请及时关注地质、水文等风险提示信息,做好会商研判,严格值班值守,落实预警叫应、部署调度、督导帮扶、力量预置、巡查排危和“关停撤转”等措施,及时跟踪分析、研究部署防范应对、受灾和抢险救援保通工作。',
|
||||
contractor:
|
||||
'按照相关指南,请根据暴雨预警级别启动相应等级防御响应,请及时关注地质、水文等风险提示信息,做好会商研判,严格值班值守,落实预警叫应、部署调度、督导帮扶、力量预置、巡查排危和“关停撤转”等措施,及时跟踪分析、研究部署防范应对、受灾和抢险救援保通工作。',
|
||||
},
|
||||
|
||||
{ key: 'dept', label: '处室负责人', content: '', suggestion: '' },
|
||||
@ -366,13 +401,20 @@ const impactTabs = ref([
|
||||
{ key: 'point', label: '影响点' },
|
||||
{ key: 'project', label: '影响项目' },
|
||||
]);
|
||||
const activeImpactTab = ref('point');
|
||||
const activeImpactTab = ref('project');
|
||||
|
||||
// 影响点数据
|
||||
const impactPointData = ref([]);
|
||||
// 影响项目数据
|
||||
const impactProjectData = ref([]);
|
||||
|
||||
const aiiTypeArr = ref([
|
||||
{ number: '2', label: '影响区县' },
|
||||
{ number: '21', label: '风险路段' },
|
||||
{ number: '21', label: '桥梁' },
|
||||
{ number: '21', label: '隧道' },
|
||||
{ number: '21', label: '项目' },
|
||||
]);
|
||||
// 影响项目
|
||||
const impactProjectDataTable = ref([
|
||||
{
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<base-dialog
|
||||
v-model:visible="props.visible"
|
||||
title="抢通情况"
|
||||
title="管控情况"
|
||||
:table-data="tableData"
|
||||
:table-columns="tableColumns"
|
||||
:table-height="tableHeight"
|
||||
@ -279,7 +279,7 @@ const fetchData = async () => {
|
||||
total.value = data.total;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取抢通情况数据失败:', error);
|
||||
console.error('获取管控情况数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -0,0 +1,227 @@
|
||||
<template>
|
||||
<base-dialog
|
||||
v-model:visible="props.visible"
|
||||
title="抽查人次"
|
||||
:table-data="tableData"
|
||||
:table-columns="tableColumns"
|
||||
:table-height="tableHeight"
|
||||
:total="total"
|
||||
:current-page="currentPage"
|
||||
:page-size="pageSize"
|
||||
max-width="800px"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@close="handleClose"
|
||||
>
|
||||
<!-- 筛选区域 -->
|
||||
<template #filter>
|
||||
<div class="filter-row">
|
||||
<div class="filter-item">
|
||||
<span class="filter-label">抽查区县</span>
|
||||
<el-select
|
||||
:teleported="false"
|
||||
v-model="filterForm.district"
|
||||
placeholder="请选择"
|
||||
class="filter-select"
|
||||
clearable
|
||||
@change="handleFilterChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in districtOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</base-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, watch } from 'vue';
|
||||
import BaseDialog from '../component/baseDialog.vue';
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(['update:visible', 'close']);
|
||||
|
||||
// 筛选表单
|
||||
const filterForm = ref({
|
||||
district: '',
|
||||
});
|
||||
|
||||
// 区县选项
|
||||
const districtOptions = ref([
|
||||
{ label: '万州区', value: 'wanzhou' },
|
||||
{ label: '黔江区', value: 'qianjiang' },
|
||||
{ label: '涪陵区', value: 'fuling' },
|
||||
{ label: '渝中区', value: 'yuzhong' },
|
||||
{ label: '大渡口区', value: 'dadukou' },
|
||||
{ label: '江北区', value: 'jiangbei' },
|
||||
{ label: '沙坪坝区', value: 'shapingba' },
|
||||
{ label: '九龙坡区', value: 'jiulongpo' },
|
||||
{ label: '南岸区', value: 'nanan' },
|
||||
{ label: '北碚区', value: 'beibei' },
|
||||
{ label: '渝北区', value: 'yubei' },
|
||||
{ label: '巴南区', value: 'banan' },
|
||||
{ label: '长寿区', value: 'changshou' },
|
||||
{ label: '江津区', value: 'jiangjin' },
|
||||
{ label: '合川区', value: 'hechuan' },
|
||||
{ label: '永川区', value: 'yongchuan' },
|
||||
{ label: '南川区', value: 'nanchuan' },
|
||||
{ label: '綦江区', value: 'qijiang' },
|
||||
{ label: '大足区', value: 'dazu' },
|
||||
{ label: '璧山区', value: 'bishan' },
|
||||
{ label: '铜梁区', value: 'tongliang' },
|
||||
{ label: '潼南区', value: 'tongnan' },
|
||||
{ label: '荣昌区', value: 'rongchang' },
|
||||
{ label: '开州区', value: 'kaizhou' },
|
||||
{ label: '梁平区', value: 'liangping' },
|
||||
{ label: '武隆区', value: 'wulong' },
|
||||
]);
|
||||
|
||||
// 表格高度
|
||||
const tableHeight = ref(300);
|
||||
|
||||
// 表格列配置 - 不设置宽度,由数据自动控制
|
||||
const tableColumns = ref([
|
||||
{ prop: 'id', label: '序号' },
|
||||
{ prop: 'district', label: '抽查区县' },
|
||||
{ prop: 'inspectTime', label: '抽查时间' },
|
||||
{ prop: 'inspectedPerson', label: '被抽查人' },
|
||||
{ prop: 'contactPhone', label: '联系电话' },
|
||||
]);
|
||||
|
||||
// 表格数据
|
||||
const tableData = ref([]);
|
||||
|
||||
// 分页
|
||||
const currentPage = ref(1);
|
||||
const pageSize = ref(10);
|
||||
const total = ref(0);
|
||||
|
||||
// 关闭对话框
|
||||
const handleClose = () => {
|
||||
emit('update:visible', false);
|
||||
emit('close');
|
||||
};
|
||||
|
||||
// 分页操作
|
||||
const handleSizeChange = val => {
|
||||
pageSize.value = val;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
const handleCurrentChange = val => {
|
||||
currentPage.value = val;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
// 筛选条件改变时触发
|
||||
const handleFilterChange = () => {
|
||||
currentPage.value = 1;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
// 获取数据
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/snow-ops-platform/inspection/personnel-list',
|
||||
method: 'GET',
|
||||
params: {
|
||||
pageNum: currentPage.value,
|
||||
pageSize: pageSize.value,
|
||||
districtCode: filterForm.value.district,
|
||||
},
|
||||
});
|
||||
|
||||
if (res.code === '00000' && res.data) {
|
||||
const data = res.data;
|
||||
tableData.value = data.records.map((item, index) => {
|
||||
return {
|
||||
id: currentPage.value * pageSize.value - (pageSize.value - index - 1),
|
||||
district: item.districtName || '-',
|
||||
inspectTime: item.inspectTime || '-',
|
||||
inspectedPerson: item.inspectedPerson || '-',
|
||||
contactPhone: item.contactPhone || '-',
|
||||
};
|
||||
});
|
||||
total.value = data.total;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取抽查人次数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 监听visible变化
|
||||
watch(
|
||||
() => props.visible,
|
||||
newVal => {
|
||||
if (newVal) {
|
||||
currentPage.value = 1;
|
||||
fetchData();
|
||||
}
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 筛选区域
|
||||
.filter-section {
|
||||
margin-bottom: 16px;
|
||||
|
||||
.filter-row {
|
||||
width: 700px;
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.filter-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
|
||||
.filter-label {
|
||||
font-size: 13px;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.filter-select {
|
||||
width: 160px;
|
||||
|
||||
:deep(.el-input__wrapper) {
|
||||
background-color: rgba(30, 70, 120, 0.4);
|
||||
border: 1px solid rgba(64, 169, 255, 0.3);
|
||||
box-shadow: none;
|
||||
border-radius: 4px;
|
||||
|
||||
.el-input__inner {
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
|
||||
&::placeholder {
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
.el-input__suffix {
|
||||
.el-icon {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -83,7 +83,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 填报动态信息 -->
|
||||
<div class="section">
|
||||
<div class="section" v-if="dynamicRecords.length > 0">
|
||||
<div class="section-title">
|
||||
<span class="title-icon">▍</span>
|
||||
填报动态信息
|
||||
@ -169,13 +169,13 @@ const emit = defineEmits(['update:visible', 'close']);
|
||||
|
||||
// 基本信息
|
||||
const basicInfo = ref({
|
||||
district: '合川区',
|
||||
level: '一般隐患',
|
||||
levelClass: 'level-normal',
|
||||
roadCode: 'G348',
|
||||
location: '丁吴路(K116+656至K116+739)',
|
||||
riskDesc: '未回应',
|
||||
discoverTime: '立即启动防汛Ⅰ级应急响应,立即转移危险区群众,医疗机构做好应急准备',
|
||||
district: '',
|
||||
level: '',
|
||||
levelClass: '',
|
||||
roadCode: '',
|
||||
location: '',
|
||||
riskDesc: '',
|
||||
discoverTime: '',
|
||||
});
|
||||
|
||||
// 照片列表
|
||||
@ -183,22 +183,22 @@ const photoList = ref([]);
|
||||
|
||||
// 动态记录
|
||||
const dynamicRecords = ref([
|
||||
{
|
||||
type: '首报',
|
||||
patrolTime: '2026-03-28 14:30:00',
|
||||
patrolPerson: '刘伟',
|
||||
description: '设置警示标识,半幅通行',
|
||||
hasProblem: true,
|
||||
image: 'https://via.placeholder.com/80x60/40a9ff/ffffff?text=现场',
|
||||
},
|
||||
{
|
||||
type: '续报',
|
||||
patrolTime: '2026-03-28 14:30:00',
|
||||
patrolPerson: '刘伟',
|
||||
description: '设置警示标识,半幅通行',
|
||||
hasProblem: false,
|
||||
image: null,
|
||||
},
|
||||
// {
|
||||
// type: '首报',
|
||||
// patrolTime: '2026-03-28 14:30:00',
|
||||
// patrolPerson: '刘伟',
|
||||
// description: '设置警示标识,半幅通行',
|
||||
// hasProblem: true,
|
||||
// image: 'https://via.placeholder.com/80x60/40a9ff/ffffff?text=现场',
|
||||
// },
|
||||
// {
|
||||
// type: '续报',
|
||||
// patrolTime: '2026-03-28 14:30:00',
|
||||
// patrolPerson: '刘伟',
|
||||
// description: '设置警示标识,半幅通行',
|
||||
// hasProblem: false,
|
||||
// image: null,
|
||||
// },
|
||||
]);
|
||||
|
||||
// 状态样式
|
||||
@ -277,19 +277,17 @@ const getAffectedObjectTypeId = data => {
|
||||
photoList.value = photos.length > 0 ? photos : [];
|
||||
|
||||
// 更新动态记录 - 桥梁信息没有巡查记录,使用基础信息展示
|
||||
dynamicRecords.value = [
|
||||
{
|
||||
type: '桥梁信息',
|
||||
patrolTime: data.GL1_JCTCRQ || '-', // 建成通车日期
|
||||
patrolPerson: data.GL1_QLZRR || '-', // 桥梁责任人
|
||||
description: `桥梁全长:${data.GL1_QLQC || '-'}m,跨径总长:${data.GL1_KJZC || '-'}m,上部结构:${data.GL1_SBJGLXMC || '-'}`,
|
||||
hasProblem: false,
|
||||
image: null,
|
||||
},
|
||||
];
|
||||
// dynamicRecords.value = [
|
||||
// {
|
||||
// type: '桥梁信息',
|
||||
// patrolTime: data.GL1_JCTCRQ || '-', // 建成通车日期
|
||||
// patrolPerson: data.GL1_QLZRR || '-', // 桥梁责任人
|
||||
// description: `桥梁全长:${data.GL1_QLQC || '-'}m,跨径总长:${data.GL1_KJZC || '-'}m,上部结构:${data.GL1_SBJGLXMC || '-'}`,
|
||||
// hasProblem: false,
|
||||
// image: null,
|
||||
// },
|
||||
// ];
|
||||
} else if (pointType === '边坡') {
|
||||
// 边坡数据处理
|
||||
const data = resData || {};
|
||||
// 更新基本信息 - 根据边坡接口返回数据映射
|
||||
basicInfo.value = {
|
||||
district: data.GL1_QXMC || '-', // 区县名称
|
||||
@ -312,16 +310,16 @@ const getAffectedObjectTypeId = data => {
|
||||
photoList.value = photos.length > 0 ? photos : [];
|
||||
|
||||
// 更新动态记录 - 边坡信息展示
|
||||
dynamicRecords.value = [
|
||||
{
|
||||
type: '边坡信息',
|
||||
patrolTime: data.GL1_BPPGC || '-', // 边坡坡高
|
||||
patrolPerson: data.GL1_ZRRXM || '-', // 责任人姓名
|
||||
description: `起点桩号:${data.GL1_QDZH || '-'},终点桩号:${data.GL1_ZDZH || '-'},起点经度:${data.GL1_QDJD || '-'},起点纬度:${data.GL1_QDWD || '-'},监测设施:${data.GL1_JCSSSZ || '-'},综合措施:${data.GL1_ZHXS || '-'}`,
|
||||
hasProblem: data.GL1_JCSSSZ !== '无' && data.GL1_JCSSSZ !== null,
|
||||
image: null,
|
||||
},
|
||||
];
|
||||
// dynamicRecords.value = [
|
||||
// {
|
||||
// type: '边坡信息',
|
||||
// patrolTime: data.GL1_BPPGC || '-', // 边坡坡高
|
||||
// patrolPerson: data.GL1_ZRRXM || '-', // 责任人姓名
|
||||
// description: `起点桩号:${data.GL1_QDZH || '-'},终点桩号:${data.GL1_ZDZH || '-'},起点经度:${data.GL1_QDJD || '-'},起点纬度:${data.GL1_QDWD || '-'},监测设施:${data.GL1_JCSSSZ || '-'},综合措施:${data.GL1_ZHXS || '-'}`,
|
||||
// hasProblem: data.GL1_JCSSSZ !== '无' && data.GL1_JCSSSZ !== null,
|
||||
// image: null,
|
||||
// },
|
||||
// ];
|
||||
} else if (pointType === '隧道') {
|
||||
// 更新基本信息 - 根据隧道数据库字段映射
|
||||
basicInfo.value = {
|
||||
@ -352,45 +350,42 @@ const getAffectedObjectTypeId = data => {
|
||||
photoList.value = photos.length > 0 ? photos : [];
|
||||
|
||||
// 更新动态记录 - 隧道信息展示
|
||||
dynamicRecords.value = [
|
||||
{
|
||||
type: '隧道信息',
|
||||
patrolTime: data.GL1_XCTCSJ || '-', // 修成通车时间
|
||||
patrolPerson: data.GL1_GLDW || '-', // 管理单位
|
||||
description: `隧道全长:${data.GL1_SDC || '-'}m,隧道净宽:${data.GL1_SDJK || '-'}m,围岩等级:${data.GL1_WYDJ || '-'},衬砌类型:${data.GL1_CQLXMC || '-'}`,
|
||||
hasProblem: false,
|
||||
image: null,
|
||||
},
|
||||
];
|
||||
// dynamicRecords.value = [
|
||||
// {
|
||||
// type: '隧道信息',
|
||||
// patrolTime: data.GL1_XCTCSJ || '-', // 修成通车时间
|
||||
// patrolPerson: data.GL1_GLDW || '-', // 管理单位
|
||||
// description: `隧道全长:${data.GL1_SDC || '-'}m,隧道净宽:${data.GL1_SDJK || '-'}m,围岩等级:${data.GL1_WYDJ || '-'},衬砌类型:${data.GL1_CQLXMC || '-'}`,
|
||||
// hasProblem: false,
|
||||
// image: null,
|
||||
// },
|
||||
// ];
|
||||
} else if (pointType === '路段') {
|
||||
// 路段数据处理
|
||||
const data = resData || {};
|
||||
// 更新基本信息 - 根据路段数据库字段映射
|
||||
basicInfo.value = {
|
||||
district: data.GL1_QDMC || '-', // 起点名称(区县)
|
||||
level: leveltext(data.GL1_JSDJ) || '未评定', // 技术等级
|
||||
levelClass:
|
||||
data.GL1_JSDJ === '一级' || data.GL1_JSDJ === '二级' ? 'level-normal' : 'level-serious', // 一二级为一般,三四五级为重大
|
||||
level: data.GL1_JSDJ || '未评定', // 技术等级
|
||||
levelClass: data.GL1_JSDJ, // 一二级为一般,三四五级为重大
|
||||
roadCode: data.GL1_LXBH || '-', // 路线编号
|
||||
location: `${data.GL1_QDMC || '-'} - ${data.GL1_ZDMC || '-'}`, // 起点到终点
|
||||
riskDesc: data.GL1_TZSJ || '-', // 特征数据/特殊数据
|
||||
discoverTime: data.GL1_XZDJ || '-', // 行政等级
|
||||
riskDesc: '-', // 风险点
|
||||
discoverTime: '-', // 发现时间
|
||||
};
|
||||
|
||||
// 更新照片列表 - 路段一般没有照片
|
||||
photoList.value = [];
|
||||
|
||||
// 更新动态记录 - 路段信息展示
|
||||
dynamicRecords.value = [
|
||||
{
|
||||
type: '路段信息',
|
||||
patrolTime: data.GL1_TZSJ || '-', // 特征数据
|
||||
patrolPerson: data.GL1_XZDJ || '-', // 行政等级
|
||||
description: `路段长度:${data.GL1_LDLC || '-'}km,路面宽度:${data.GL1_LMKD || '-'}m,路面类型:${data.GL1_LMLX || '-'},车道数量:${data.GL1_CDSL || '-'}`,
|
||||
hasProblem: false,
|
||||
image: null,
|
||||
},
|
||||
];
|
||||
// dynamicRecords.value = [
|
||||
// {
|
||||
// type: '路段信息',
|
||||
// patrolTime: data.GL1_TZSJ || '-', // 特征数据
|
||||
// patrolPerson: data.GL1_XZDJ || '-', // 行政等级
|
||||
// description: `路段长度:${data.GL1_LDLC || '-'}km,路面宽度:${data.GL1_LMKD || '-'}m,路面类型:${data.GL1_LMLX || '-'},车道数量:${data.GL1_CDSL || '-'}`,
|
||||
// hasProblem: false,
|
||||
// image: null,
|
||||
// },
|
||||
// ];
|
||||
}
|
||||
};
|
||||
|
||||
@ -449,6 +444,7 @@ watch(
|
||||
<style lang="scss" scoped>
|
||||
.content-wrapper {
|
||||
height: 500px;
|
||||
width: 600px;
|
||||
overflow-y: auto;
|
||||
|
||||
// 自定义滚动条样式
|
||||
|
||||
@ -680,13 +680,13 @@ const processUnifiedData = (item, type) => {
|
||||
},
|
||||
// 护路员 - 使用GL1_HLXM和GL1_HLDH
|
||||
roadKeeper: {
|
||||
name: item.GL1_HLXM || '-',
|
||||
phone: item.GL1_HLDH || '-',
|
||||
name: item.GL1_HLXM || item.ROAD_PATROL_WORKER_NAME || '-',
|
||||
phone: item.GL1_HLDH || item.ROAD_PATROL_WORKER_PHONE || '-',
|
||||
},
|
||||
// 一般人员(路长履职)- 使用风险类型和风险描述
|
||||
// 一般人员(路长履职)
|
||||
generalStaff: {
|
||||
name: item.GL1_FXLX || '-',
|
||||
phone: item.GL1_FXMS || '-',
|
||||
name: item.ROAD_SECTION_CHIEF_NAME || '-',
|
||||
phone: item.ROAD_SECTION_CHIEF_PHONE || '-',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@ -0,0 +1,304 @@
|
||||
<template>
|
||||
<base-dialog
|
||||
v-model:visible="props.visible"
|
||||
title="巡查里程"
|
||||
:table-data="tableData"
|
||||
:table-columns="tableColumns"
|
||||
:table-height="tableHeight"
|
||||
:total="total"
|
||||
:current-page="currentPage"
|
||||
:page-size="pageSize"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@close="handleClose"
|
||||
>
|
||||
<!-- 统计卡片区域 -->
|
||||
<template #header>
|
||||
<div class="stats-cards">
|
||||
<div class="stats-card">
|
||||
<span class="stats-icon road-icon"></span>
|
||||
<span class="stats-label">国省道:</span>
|
||||
<span class="stats-value">{{ nationalRoadMileage }}km</span>
|
||||
</div>
|
||||
<div class="stats-card">
|
||||
<span class="stats-icon rural-icon"></span>
|
||||
<span class="stats-label">农村公路:</span>
|
||||
<span class="stats-value">{{ ruralRoadMileage }}km</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- 筛选区域 -->
|
||||
<template #filter>
|
||||
<div class="filter-row">
|
||||
<div class="filter-item">
|
||||
<span class="filter-label">帮扶区县</span>
|
||||
<el-select
|
||||
:teleported="false"
|
||||
v-model="filterForm.district"
|
||||
placeholder="请选择"
|
||||
class="filter-select"
|
||||
clearable
|
||||
@change="handleFilterChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in districtOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</base-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, watch } from 'vue';
|
||||
import BaseDialog from '../component/baseDialog.vue';
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(['update:visible', 'close']);
|
||||
|
||||
// 统计数值
|
||||
const nationalRoadMileage = ref(345);
|
||||
const ruralRoadMileage = ref(4333);
|
||||
|
||||
// 筛选表单
|
||||
const filterForm = ref({
|
||||
district: '',
|
||||
});
|
||||
|
||||
// 区县选项
|
||||
const districtOptions = ref([
|
||||
{ label: '万州区', value: 'wanzhou' },
|
||||
{ label: '黔江区', value: 'qianjiang' },
|
||||
{ label: '涪陵区', value: 'fuling' },
|
||||
{ label: '渝中区', value: 'yuzhong' },
|
||||
{ label: '大渡口区', value: 'dadukou' },
|
||||
{ label: '江北区', value: 'jiangbei' },
|
||||
{ label: '沙坪坝区', value: 'shapingba' },
|
||||
{ label: '九龙坡区', value: 'jiulongpo' },
|
||||
{ label: '南岸区', value: 'nanan' },
|
||||
{ label: '北碚区', value: 'beibei' },
|
||||
{ label: '渝北区', value: 'yubei' },
|
||||
{ label: '巴南区', value: 'banan' },
|
||||
{ label: '长寿区', value: 'changshou' },
|
||||
{ label: '江津区', value: 'jiangjin' },
|
||||
{ label: '合川区', value: 'hechuan' },
|
||||
{ label: '永川区', value: 'yongchuan' },
|
||||
{ label: '南川区', value: 'nanchuan' },
|
||||
{ label: '綦江区', value: 'qijiang' },
|
||||
{ label: '大足区', value: 'dazu' },
|
||||
{ label: '璧山区', value: 'bishan' },
|
||||
{ label: '铜梁区', value: 'tongliang' },
|
||||
{ label: '潼南区', value: 'tongnan' },
|
||||
{ label: '荣昌区', value: 'rongchang' },
|
||||
{ label: '开州区', value: 'kaizhou' },
|
||||
{ label: '梁平区', value: 'liangping' },
|
||||
{ label: '武隆区', value: 'wulong' },
|
||||
]);
|
||||
|
||||
// 表格高度
|
||||
const tableHeight = ref(300);
|
||||
|
||||
// 表格列配置 - 不设置宽度,由数据自动控制
|
||||
const tableColumns = ref([
|
||||
{ prop: 'id', label: '序号' },
|
||||
{ prop: 'district', label: '所属区县' },
|
||||
{ prop: 'mileage', label: '巡查里程' },
|
||||
]);
|
||||
|
||||
// 表格数据
|
||||
const tableData = ref([]);
|
||||
|
||||
// 分页
|
||||
const currentPage = ref(1);
|
||||
const pageSize = ref(10);
|
||||
const total = ref(0);
|
||||
|
||||
// 关闭对话框
|
||||
const handleClose = () => {
|
||||
emit('update:visible', false);
|
||||
emit('close');
|
||||
};
|
||||
|
||||
// 分页操作
|
||||
const handleSizeChange = val => {
|
||||
pageSize.value = val;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
const handleCurrentChange = val => {
|
||||
currentPage.value = val;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
// 筛选条件改变时触发
|
||||
const handleFilterChange = () => {
|
||||
currentPage.value = 1;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
// 获取统计数据
|
||||
const fetchStatsData = async () => {
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/snow-ops-platform/patrol/mileage-stats',
|
||||
method: 'GET',
|
||||
});
|
||||
|
||||
if (res.code === '00000' && res.data) {
|
||||
nationalRoadMileage.value = res.data.nationalRoadMileage || 345;
|
||||
ruralRoadMileage.value = res.data.ruralRoadMileage || 4333;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取巡查里程统计数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 获取列表数据
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/snow-ops-platform/patrol/mileage-list',
|
||||
method: 'GET',
|
||||
params: {
|
||||
pageNum: currentPage.value,
|
||||
pageSize: pageSize.value,
|
||||
districtCode: filterForm.value.district,
|
||||
},
|
||||
});
|
||||
|
||||
if (res.code === '00000' && res.data) {
|
||||
const data = res.data;
|
||||
tableData.value = data.records.map((item, index) => {
|
||||
return {
|
||||
id: currentPage.value * pageSize.value - (pageSize.value - index - 1),
|
||||
district: item.districtName || '-',
|
||||
mileage: item.mileage ? `${item.mileage}公里` : '-',
|
||||
};
|
||||
});
|
||||
total.value = data.total;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取巡查里程列表数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 监听visible变化
|
||||
watch(
|
||||
() => props.visible,
|
||||
newVal => {
|
||||
if (newVal) {
|
||||
currentPage.value = 1;
|
||||
fetchStatsData();
|
||||
fetchData();
|
||||
}
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 统计卡片区域
|
||||
.stats-cards {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
margin-bottom: 16px;
|
||||
padding: 0 4px;
|
||||
|
||||
.stats-card {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 10px 16px;
|
||||
background: linear-gradient(135deg, rgba(64, 169, 255, 0.15) 0%, rgba(24, 144, 255, 0.1) 100%);
|
||||
border: 1px solid rgba(64, 169, 255, 0.3);
|
||||
border-radius: 6px;
|
||||
|
||||
.stats-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
|
||||
&.road-icon {
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2340a9ff"><path d="M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z"/></svg>');
|
||||
}
|
||||
|
||||
&.rural-icon {
|
||||
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%2340a9ff"><path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z"/></svg>');
|
||||
}
|
||||
}
|
||||
|
||||
.stats-label {
|
||||
font-size: 14px;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
|
||||
.stats-value {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #40a9ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 筛选区域
|
||||
.filter-section {
|
||||
margin-bottom: 16px;
|
||||
|
||||
.filter-row {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.filter-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
|
||||
.filter-label {
|
||||
font-size: 13px;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.filter-select {
|
||||
width: 160px;
|
||||
|
||||
:deep(.el-input__wrapper) {
|
||||
background-color: rgba(30, 70, 120, 0.4);
|
||||
border: 1px solid rgba(64, 169, 255, 0.3);
|
||||
box-shadow: none;
|
||||
border-radius: 4px;
|
||||
|
||||
.el-input__inner {
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
|
||||
&::placeholder {
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
.el-input__suffix {
|
||||
.el-icon {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,112 @@
|
||||
<template>
|
||||
<base-dialog
|
||||
v-model:visible="props.visible"
|
||||
title="巡查情况"
|
||||
:table-data="tableData"
|
||||
:table-columns="tableColumns"
|
||||
:table-height="tableHeight"
|
||||
:total="total"
|
||||
:current-page="currentPage"
|
||||
:page-size="pageSize"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
@close="handleClose"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, watch } from 'vue';
|
||||
import BaseDialog from '../component/baseDialog.vue';
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(['update:visible', 'close']);
|
||||
|
||||
// 表格高度
|
||||
const tableHeight = ref(350);
|
||||
|
||||
// 表格列配置 - 不设置宽度,由数据自动控制
|
||||
const tableColumns = ref([
|
||||
{ prop: 'id', label: '序号' },
|
||||
{ prop: 'type', label: '类型' },
|
||||
{ prop: 'nationalRoad', label: '国省道' },
|
||||
{ prop: 'ruralRoad', label: '农村公路' },
|
||||
{ prop: 'total', label: '总数' },
|
||||
]);
|
||||
|
||||
// 表格数据
|
||||
const tableData = ref([]);
|
||||
|
||||
// 分页
|
||||
const currentPage = ref(1);
|
||||
const pageSize = ref(10);
|
||||
const total = ref(0);
|
||||
|
||||
// 关闭对话框
|
||||
const handleClose = () => {
|
||||
emit('update:visible', false);
|
||||
emit('close');
|
||||
};
|
||||
|
||||
// 分页操作
|
||||
const handleSizeChange = val => {
|
||||
pageSize.value = val;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
const handleCurrentChange = val => {
|
||||
currentPage.value = val;
|
||||
fetchData();
|
||||
};
|
||||
|
||||
// 获取数据
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const res = await request({
|
||||
url: '/snow-ops-platform/patrol/situation-list',
|
||||
method: 'GET',
|
||||
params: {
|
||||
pageNum: currentPage.value,
|
||||
pageSize: pageSize.value,
|
||||
},
|
||||
});
|
||||
|
||||
if (res.code === '00000' && res.data) {
|
||||
const data = res.data;
|
||||
tableData.value = data.records.map((item, index) => {
|
||||
return {
|
||||
id: currentPage.value * pageSize.value - (pageSize.value - index - 1),
|
||||
type: item.type || '-',
|
||||
nationalRoad: item.nationalRoadNo || item.nationalRoad || '-',
|
||||
ruralRoad: item.ruralRoadValue || item.ruralRoad || '-',
|
||||
total: item.totalValue ? `${item.totalValue}公里` : item.total || '-',
|
||||
};
|
||||
});
|
||||
total.value = data.total;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取巡查情况数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 监听visible变化
|
||||
watch(
|
||||
() => props.visible,
|
||||
newVal => {
|
||||
if (newVal) {
|
||||
currentPage.value = 1;
|
||||
fetchData();
|
||||
}
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 组件样式
|
||||
</style>
|
||||
@ -230,6 +230,8 @@ const tableColumns = ref([
|
||||
{ prop: 'roadOrg', label: '公路机构责任人', width: '100px', slot: 'roadOrg' },
|
||||
{ prop: 'maintenance', label: '养护站负责人', width: '100px', slot: 'maintenance' },
|
||||
{ prop: 'roadKeeper', label: '护路员', width: '100px', slot: 'roadKeeper' },
|
||||
|
||||
{ prop: 'generalStaff', label: '一般人员(路长履职)', width: '100px', slot: 'generalStaff' },
|
||||
{ prop: 'urgeTime', label: '最新催告时间', width: '', slot: 'urgeTime' },
|
||||
{ prop: 'operation', label: '操作', width: '', slot: 'operation' },
|
||||
]);
|
||||
@ -370,6 +372,11 @@ const fetchData = async () => {
|
||||
img: roadKeeperEvent.replyState === 'read' ? respondedIcon : notRespondedIcon,
|
||||
isResponded: roadKeeperEvent.replyState === 'read',
|
||||
},
|
||||
generalStaff:{
|
||||
name: item.GL1_QLGCS || "-",
|
||||
phone: item.GL1_QLGCSDH || "-",
|
||||
},
|
||||
|
||||
urgeTime: {
|
||||
date: urgeTimeParts[0] || '-',
|
||||
time: urgeTimeParts[1] ? urgeTimeParts[1].substring(0, 8) : '-',
|
||||
|
||||
@ -38,6 +38,7 @@
|
||||
@openDispatchDistrict="openDialog('dispatchDistrict')"
|
||||
@showCenterCard="item => handleCenterCardClick(item)"
|
||||
@openOfflineHelp="openDialog('offlineHelp')"
|
||||
@openImageInspection="openDialog('imageInspection')"
|
||||
></left>
|
||||
</div>
|
||||
<div class="right">
|
||||
@ -194,7 +195,7 @@
|
||||
@close="closeDialog('tongnanProjectPerson')"
|
||||
/>
|
||||
|
||||
<!-- 抢通情况对话框 -->
|
||||
<!-- 管控情况对话框 -->
|
||||
<clearanceSituationDialog
|
||||
:dateRange="rightDateRange"
|
||||
v-model:visible="dialogVisible.clearanceSituation"
|
||||
@ -256,6 +257,12 @@
|
||||
v-model:visible="dialogVisible.offlineHelp"
|
||||
@close="closeDialog('offlineHelp')"
|
||||
/>
|
||||
|
||||
<!-- 抽查人次对话框 -->
|
||||
<imageInspectionDialog
|
||||
v-model:visible="dialogVisible.imageInspection"
|
||||
@close="closeDialog('imageInspection')"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -300,6 +307,7 @@ import centerInfoCard from './Dialog/centerInfoCard.vue';
|
||||
import tongnanProjectPersonDialog from './Dialog/tongnanProjectPersonDialog.vue';
|
||||
import hazardPointSituationDialog from './Dialog/hazardPointSituationDialog.vue';
|
||||
import offlineHelpDialog from './Dialog/offlineHelpDialog.vue';
|
||||
import imageInspectionDialog from './Dialog/imageInspectionDialog.vue';
|
||||
|
||||
import './component/el-select.scss';
|
||||
import './component/date-picker-theme.scss';
|
||||
@ -329,6 +337,7 @@ const dialogVisible = ref({
|
||||
tongnanProjectPerson: false,
|
||||
hazardPointSituation: false,
|
||||
offlineHelp: false,
|
||||
imageInspection: false,
|
||||
});
|
||||
const activeitem = ref({});
|
||||
|
||||
@ -706,7 +715,6 @@ onMounted(() => {
|
||||
position: absolute;
|
||||
bottom: 5px;
|
||||
left: 25%;
|
||||
width: 20%;
|
||||
height: 43%;
|
||||
}
|
||||
.weather-warning-table {
|
||||
|
||||
@ -115,11 +115,7 @@
|
||||
:key="index"
|
||||
class="stat-item"
|
||||
:class="{
|
||||
clickable:
|
||||
item.label === '叫应总数' ||
|
||||
item.label === '已回应数' ||
|
||||
item.label === '调度区县数' ||
|
||||
item.label === '线下帮扶数',
|
||||
clickable: true,
|
||||
}"
|
||||
@click="handleStatClick(item)"
|
||||
>
|
||||
@ -206,6 +202,7 @@ const emit = defineEmits([
|
||||
'warningClick',
|
||||
'dispatchDateRange',
|
||||
'openOfflineHelp',
|
||||
'openImageInspection',
|
||||
]);
|
||||
|
||||
// 点击统计项
|
||||
@ -220,6 +217,8 @@ const handleStatClick = item => {
|
||||
emit('openDispatchDistrict');
|
||||
} else if (item.label === '线下帮扶数') {
|
||||
emit('openOfflineHelp');
|
||||
} else if (item.label === '抽查人次') {
|
||||
emit('openImageInspection');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -39,10 +39,11 @@
|
||||
:key="index"
|
||||
class="control-item"
|
||||
:class="{
|
||||
clickable: item.label === '封闭管控数',
|
||||
clickable: true,
|
||||
}"
|
||||
@click="handleControlClick(item)"
|
||||
>
|
||||
<!-- item.label === '封闭管控数' -->
|
||||
<div class="control-value">{{ item.value }}</div>
|
||||
<div class="control-label">{{ item.label }}</div>
|
||||
</div>
|
||||
@ -55,7 +56,7 @@
|
||||
:key="index"
|
||||
class="control-item"
|
||||
:class="{
|
||||
clickable: item.label === '关闭驻地数',
|
||||
clickable: item.label == '停工项目数' || item.label == '关闭驻地数',
|
||||
}"
|
||||
@click="handleControlClick(item)"
|
||||
>
|
||||
@ -524,10 +525,15 @@ const extractAndSumNumbers = value => {
|
||||
|
||||
// 点击管控项
|
||||
const handleControlClick = item => {
|
||||
if (item.label === '封闭管控数') {
|
||||
if (
|
||||
item.label === '封闭管控数' ||
|
||||
item.label === '半幅通行数' ||
|
||||
item.label === '限速(限车型)数' ||
|
||||
item.label === '告警阻拦处数'
|
||||
) {
|
||||
emit('openClearanceSituation');
|
||||
emit('update:dateRange', getdateRange.value || []);
|
||||
} else if (item.label === '关闭驻地数') {
|
||||
} else if (item.label === '停工项目数' || item.label === '关闭驻地数') {
|
||||
emit('openControlSituation');
|
||||
}
|
||||
};
|
||||
@ -663,8 +669,8 @@ const blockData = ref([
|
||||
{ label: '本轮累计阻断数', current: '10', total: '23' },
|
||||
]);
|
||||
|
||||
// 死亡人数
|
||||
const deathData = ref({ label: '本轮因灾死亡人数', value: '5' });
|
||||
// 伤亡人数
|
||||
const deathData = ref({ label: '本轮因灾伤亡人数', value: '5' });
|
||||
|
||||
// 灾害情况数据
|
||||
const damageData = ref([
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user