diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3e79c95 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,10 @@ +{ + "printWidth": 100, + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "trailingComma": "es5", + "arrowParens": "avoid", + "htmlWhitespaceSensitivity": "ignore", + "vueIndentScriptAndStyle": false +} \ No newline at end of file diff --git a/packages/screen/src/assets/RiskWarning_img/隐患点弹窗背景@2x.png b/packages/screen/src/assets/RiskWarning_img/隐患点弹窗背景@2x.png new file mode 100644 index 0000000..e2b6a67 Binary files /dev/null and b/packages/screen/src/assets/RiskWarning_img/隐患点弹窗背景@2x.png differ diff --git a/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue index 93035db..0d421c0 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/clearanceSituationDialog.vue @@ -86,9 +86,9 @@ @@ -99,15 +99,11 @@ diff --git a/packages/screen/src/views/RiskWarning/Dialog/hazardPointSituationDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/hazardPointSituationDialog.vue new file mode 100644 index 0000000..fb15420 --- /dev/null +++ b/packages/screen/src/views/RiskWarning/Dialog/hazardPointSituationDialog.vue @@ -0,0 +1,369 @@ + + + + + diff --git a/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue index 0014b13..54a3218 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/impactPointDialog.vue @@ -683,7 +683,7 @@ const processUnifiedData = (item, type) => { return { ...baseData, // 影响区域 - 使用区县名称 - region: item.GL1_QXMC || "-", + region: item.GL1_ZDMC || "-", // 影响点位置 - 使用路线名称+起终点桩号 pointLocation: `${item.GL1_GLMC || item.GL1_GLBH || "-"} (${item.GL1_QDZH || "-"} - ${item.GL1_ZDZH || "-"})`, // 影响点等级 - 使用风险等级 diff --git a/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue b/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue index 5fffb6e..7a80771 100644 --- a/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue +++ b/packages/screen/src/views/RiskWarning/Dialog/responseStatusDialog.vue @@ -19,78 +19,20 @@
-
+
- 影响桥梁 - (1430) -
-
-
-
-
- 影响边坡 - (933) -
-
-
-
-
- 影响隧道 - (1033) -
-
-
-
-
- 影响项目 - (832) -
-
-
-
-
- 影响路段 - (832) + {{ item.label }} + {{ item.value }}
@@ -115,7 +57,8 @@ -->
影响点等级 -
是否回应 - @@ -160,11 +102,7 @@ {{ row.trafficDept.name }}
@@ -197,11 +135,11 @@ - diff --git a/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue b/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue index f4f29f0..c8f396e 100644 --- a/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue +++ b/packages/screen/src/views/RiskWarning/component/ChongqingMap.vue @@ -16,10 +16,6 @@ :z-index="zIndex" :width="width" > - + +
diff --git a/packages/screen/src/views/RiskWarning/component/WeatherWarningTable.vue b/packages/screen/src/views/RiskWarning/component/WeatherWarningTable.vue new file mode 100644 index 0000000..4a2e1d1 --- /dev/null +++ b/packages/screen/src/views/RiskWarning/component/WeatherWarningTable.vue @@ -0,0 +1,441 @@ + + + + + diff --git a/packages/screen/src/views/RiskWarning/component/index.js b/packages/screen/src/views/RiskWarning/component/index.js index daab8f2..5f6ed0a 100644 --- a/packages/screen/src/views/RiskWarning/component/index.js +++ b/packages/screen/src/views/RiskWarning/component/index.js @@ -1,32 +1,74 @@ // 弹窗组件统一数据配置 +import { ref } from 'vue'; +import { request } from '@/utils/request'; // 行政区域选项 -export const regionOptions = [ - { label: "重庆市", value: "重庆市" }, - { label: "万州区", value: "万州区" }, - { label: "沙坪坝区", value: "沙坪坝区" }, - { label: "渝中区", value: "渝中区" }, - { label: "巫溪县", value: "巫溪县" }, - { label: "涪陵区", value: "涪陵区" }, - { label: "合川区", value: "合川区" }, - { label: "万盛区", value: "万盛区" }, - { label: "长寿区", value: "长寿区" }, - { label: "城口区", value: "城口区" }, - { label: "柏梓镇", value: "柏梓镇" }, - { label: "江北区", value: "江北区" }, -]; +export const regionOptions = ref([ + // { label: "重庆市", value: "重庆市" }, + // { label: "万州区", value: "万州区" }, + // { label: "沙坪坝区", value: "沙坪坝区" }, + // { label: "渝中区", value: "渝中区" }, + // { label: "巫溪县", value: "巫溪县" }, + // { label: "涪陵区", value: "涪陵区" }, + // { label: "合川区", value: "合川区" }, + // { label: "万盛区", value: "万盛区" }, + // { label: "长寿区", value: "长寿区" }, + // { label: "城口区", value: "城口区" }, + // { label: "柏梓镇", value: "柏梓镇" }, + // { label: "江北区", value: "江北区" }, +]); -// 类型选项 -export const typeOptions = [ - { label: "边坡坍塌", value: "边坡坍塌" }, - { label: "路面塌陷", value: "路面塌陷" }, - { label: "桥梁损坏", value: "桥梁损坏" }, - { label: "隧道事故", value: "隧道事故" }, - { label: "交通主管部门", value: "交通主管部门" }, - { label: "公路机构", value: "公路机构" }, - { label: "养护站", value: "养护站" }, - { label: "护路员", value: "护路员" }, -]; +// 获取行政区域选项 +export const fetchDistrictOptions = async () => { + try { + const res = await request({ + url: '/snow-ops-platform/sm-event/dashboard/district-options', + method: 'GET', + }); + if (res && res.code === '00000' && Array.isArray(res.data)) { + // 将接口返回的数据转换为选项格式 + const options = res.data.map(item => ({ + label: item.qxmc, + value: item.xzdm, + })); + // 保留"全部"选项,并添加接口返回的数据 + regionOptions.value = [ + { label: "全部", value: "" }, + ...options, + ]; + return options; + } + } catch (error) { + console.error('获取行政区域选项失败:', error); + } + return regionOptions.value; +}; + +// 路况类型选项(默认数据,会被API数据替换) +export const typeOptions = ref([ +]); + +// 获取路况类型选项 +export const fetchRoadConditionOptions = async () => { + try { + const res = await request({ + url: '/snow-ops-platform/sm-event/dashboard/road-condition-options', + method: 'GET', + }); + if (res && res.code === '00000' && Array.isArray(res.data)) { + // 将接口返回的字符串数组转换为选项格式 + const options = res.data.map(item => ({ + label: item, + value: item, + })); + typeOptions.value = options; + return options; + } + } catch (error) { + console.error('获取路况类型选项失败:', error); + } + return typeOptions.value; +}; // 管控措施选项 export const controlMeasureOptions = [ @@ -84,15 +126,9 @@ export const isEndedOptions = [ ]; // 行政区域选项(带全部) -export const regionOptionsWithAll = [ - { label: "全部", value: "" }, - { label: "万州区", value: "wanzhou" }, - { label: "涪陵区", value: "fuling" }, - { label: "合川区", value: "hechuan" }, - { label: "万盛区", value: "wansheng" }, - { label: "长寿区", value: "changshou" }, - { label: "城口区", value: "chengkou" }, -]; +export const regionOptionsWithAll = ref([ +]); + // 格式化日期时间为接口所需格式 export const formatDateTime = (date) => { @@ -120,4 +156,6 @@ export default { isEndedOptions, regionOptionsWithAll, formatDateTime, -}; \ No newline at end of file + fetchRoadConditionOptions, + fetchDistrictOptions, +}; diff --git a/packages/screen/src/views/RiskWarning/index.vue b/packages/screen/src/views/RiskWarning/index.vue index 1967cdf..d02b29a 100644 --- a/packages/screen/src/views/RiskWarning/index.vue +++ b/packages/screen/src/views/RiskWarning/index.vue @@ -1,17 +1,9 @@ @@ -502,7 +591,7 @@ onMounted(() => { position: relative; width: 100%; height: 100%; - background-image: url("../../assets/RiskWarning_img/遮罩层.png"); + background-image: url('../../assets/RiskWarning_img/遮罩层.png'); background-size: cover; background-position: center; } @@ -571,9 +660,17 @@ onMounted(() => { position: absolute; bottom: 5px; left: 25%; - width: 50%; + width: 20%; height: 43%; } +.weather-warning-table { + position: absolute; + bottom: 5px; + left: 30%; + width: 40%; + height: 43%; + // z-index: 1; +} .top { position: absolute; @@ -591,7 +688,7 @@ onMounted(() => { // left: 25%; width: 100%; height: 100%; - z-index: 2; + // z-index: 2; } /* 地图底层 - 填满整个容器 */ @@ -609,8 +706,7 @@ onMounted(() => { z-index: 1; pointer-events: none; /* 不阻挡交互 */ - background: url(../../assets/RiskWarning_img/遮罩层.png) no-repeat - center/cover; + background: url(../../assets/RiskWarning_img/遮罩层.png) no-repeat center/cover; } // 四个角的装饰 diff --git a/packages/screen/src/views/RiskWarning/right.vue b/packages/screen/src/views/RiskWarning/right.vue index 481fa64..46c10d2 100644 --- a/packages/screen/src/views/RiskWarning/right.vue +++ b/packages/screen/src/views/RiskWarning/right.vue @@ -19,7 +19,8 @@
{{ item.label }}
- {{ item.value }}{{ item.unit }} + {{ item.value }} + {{ item.unit }}
@@ -28,8 +29,8 @@
-
管控路段数 2
-
管控项目 2
+
管控路段数
+
管控项目
@@ -78,11 +79,7 @@
-
+
{{ item.value }}
{{ item.label }}
@@ -93,16 +90,13 @@
抢险投入情况
-
+
- {{ item.value }}{{ item.unit }} + {{ item.value }} + {{ item.unit }}
{{ item.label }}
@@ -116,9 +110,7 @@ @@ -699,7 +684,7 @@ watch( .section-header { display: flex; justify-content: space-between; - background-image: url("../../assets/RiskWarning_img/标题bg@2x.png"); + background-image: url('../../assets/RiskWarning_img/标题bg@2x.png'); align-items: center; margin-bottom: vw(8); height: vw(50); @@ -721,7 +706,7 @@ watch( justify-content: center; &::before { - content: "←"; + content: '←'; color: #fff; font-size: vw(10); } @@ -751,12 +736,7 @@ watch( padding: vw(4) vw(8); background: linear-gradient(270deg, rgba(18, 52, 97, 0) 0%, #203555 100%); border: 2px solid transparent; - border-image: linear-gradient( - 270deg, - rgba(80, 145, 201, 0), - rgba(39, 77, 153, 1) - ) - 2 2; + border-image: linear-gradient(270deg, rgba(80, 145, 201, 0), rgba(39, 77, 153, 1)) 2 2; border-radius: 6px; border-right: 0px; @@ -771,16 +751,16 @@ watch( font-size: vw(18); &.icon-team::before { - content: "👷"; + content: '👷'; } &.icon-person::before { - content: "👤"; + content: '👤'; } &.icon-equip::before { - content: "🚛"; + content: '🚛'; } &.icon-material::before { - content: "📦"; + content: '📦'; } } @@ -837,7 +817,7 @@ watch( grid-template-columns: repeat(2, 1fr); // background: rgba(62, 106, 172, 0.36); // box-shadow: inset 0px 0px 8px 0px #379bff; - background-image: url("../../assets/RiskWarning_img/路径 62@2x.png"); + background-image: url('../../assets/RiskWarning_img/路径 62@2x.png'); background-size: 100% 100%; background-position: right; gap: vw(8); @@ -904,7 +884,7 @@ watch( padding: vw(6) vw(5); // background: rgba(64, 169, 255, 0.1); // border-radius: 4px; - background-image: url("../../assets/RiskWarning_img/路径62@2x (1).png"); + background-image: url('../../assets/RiskWarning_img/路径62@2x (1).png'); background-size: 100% 100%; background-position: right; @@ -946,7 +926,7 @@ watch( // background: rgba(64, 169, 255, 0.1); // border: 1px solid rgba(64, 169, 255, 0.2); // border-radius: 6px; - background-image: url("../../assets/RiskWarning_img/路径62@2x (1).png"); + background-image: url('../../assets/RiskWarning_img/路径62@2x (1).png'); background-size: 100% 100%; background-position: right; @@ -960,13 +940,13 @@ watch( margin-left: vw(5); &.icon-rescue-person::before { - content: "👷"; + content: '👷'; } &.icon-rescue-equip::before { - content: "🚜"; + content: '🚜'; } &.icon-rescue-clear::before { - content: "🏔️"; + content: '🏔️'; } } @@ -1030,7 +1010,7 @@ watch( // display: grid; // grid-template-columns: repeat(5, 1fr); // gap: 10px; - background-image: url("../../assets/RiskWarning_img/编组22@2x.png"); + background-image: url('../../assets/RiskWarning_img/编组22@2x.png'); background-size: 100% 100%; background-position: center; @@ -1038,12 +1018,7 @@ watch( width: 2px; height: vw(40); margin: auto 0; - background: linear-gradient( - 180deg, - transparent 0%, - #18f2f9 50%, - transparent 100% - ); + background: linear-gradient(180deg, transparent 0%, #18f2f9 50%, transparent 100%); // margin: 0 auto; } @@ -1116,7 +1091,7 @@ watch( padding: vw(4) 0; // background: rgba(64, 169, 255, 0.1); // border-radius: 6px; - background-image: url("../../assets/RiskWarning_img/路径62@2x.png"); + background-image: url('../../assets/RiskWarning_img/路径62@2x.png'); background-size: 100% 100%; background-position: left; @@ -1159,7 +1134,7 @@ watch( padding: vw(12); // background: rgba(64, 169, 255, 0.1); // border-radius: 6px; - background-image: url("../../assets/RiskWarning_img/编组5@2x.png"); + background-image: url('../../assets/RiskWarning_img/编组5@2x.png'); background-size: 100% 100%; background-position: left; diff --git a/packages/screen/src/views/RiskWarning/top.vue b/packages/screen/src/views/RiskWarning/top.vue index 62bb2c4..16146a6 100644 --- a/packages/screen/src/views/RiskWarning/top.vue +++ b/packages/screen/src/views/RiskWarning/top.vue @@ -1,9 +1,7 @@