diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/LocationPanel/地理位置展出1.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/LocationPanel/地理位置展出1.png
new file mode 100644
index 0000000..6feaf33
Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/LocationPanel/地理位置展出1.png differ
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/LocationPanel/日期icon.png b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/LocationPanel/日期icon.png
new file mode 100644
index 0000000..d356b5e
Binary files /dev/null and b/packages/screen/src/views/3DSituationalAwarenessRefactor/assets/images/LocationPanel/日期icon.png differ
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue
index 98643f9..f641f24 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/ForcePreset.vue
@@ -421,7 +421,7 @@ const vClickOutside = {
display: flex;
flex-direction: column;
gap: vh(8);
- animation: scroll 40s linear infinite;
+ animation: scroll 8s linear infinite;
will-change: transform;
padding-right: vw(4); // 保留滚动条空间
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/LocationPanel.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/LocationPanel.vue
index ca0e046..db134e0 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/LocationPanel.vue
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/LeftPanel/LocationPanel.vue
@@ -35,6 +35,7 @@ import lineCodeIcon from '../../assets/images/LocationPanel/线路编号icon.png
import classNumberIcon from '../../assets/images/LocationPanel/路线桩号icon.png'
import inspectorIcon from '../../assets/images/LocationPanel/路段巡查员icon.png'
import phoneIcon from '../../assets/images/LocationPanel/联系电话icon.png'
+import dateIcon from '../../assets/images/LocationPanel/日期icon.png'
defineProps({
expanded: {
@@ -57,6 +58,8 @@ const locationInfo = [
{ label: '灾害桩号', value: 'K130 + 800', icon: classNumberIcon },
{ label: '路段巡路员', value: '张强', icon: inspectorIcon },
{ label: '联系电话', value: '13987657892', icon: phoneIcon },
+ { label: '演练日期', value: '2025-11-19', icon: dateIcon },
+
]
@@ -67,7 +70,7 @@ const locationInfo = [
.location-panel {
width: 100%;
padding: clamp(16px, vh(16), 18px) clamp(6px, vw(6), 6px);
- background: url('../../assets/images/LocationPanel/地理位置内容背景.png') no-repeat center center;
+ background: url('../../assets/images/LocationPanel/地理位置展出1.png') no-repeat center center;
background-size: 100% 100%;
border-radius: vw(8);
box-shadow: 0 0 vw(12) rgba(0, 0, 0, 0.35);
@@ -82,7 +85,7 @@ const locationInfo = [
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: repeat(2, minmax(0, 1fr));
- gap: clamp(2px, vh(4), 6px) 0px;
+ gap: clamp(2px, vh(10), 6px) 0px;
width: 100%;
height: 100%;
}
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/DispatchCommand.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/DispatchCommand.vue
index f08d955..4b19353 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/DispatchCommand.vue
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/RightPanel/DispatchCommand.vue
@@ -17,7 +17,7 @@
序号
{{ getColumnName('name') }}
{{ getColumnName('dept') }}
- 位置信息(公里)
+
操作
@@ -30,7 +30,7 @@
{{ index + 1 }}
{{ item.name }}
{{ item.department || item.type || '-' }}
- {{ item.distance || item.altitude || '-' }}
+
联动
@@ -111,7 +111,7 @@ const getColumnName = (type) => {
.table-header {
display: grid;
- grid-template-columns: vw(50) 1fr 1fr 1fr vw(80);
+ grid-template-columns: vw(50) 1fr 1fr vw(80);
gap: vw(8);
padding: vh(12) vw(16);
// background: rgba(20, 53, 118, 0.5);
@@ -147,7 +147,7 @@ const getColumnName = (type) => {
.table-row {
display: grid;
- grid-template-columns: vw(50) 1fr 1fr 1fr vw(80);
+ grid-template-columns: vw(50) 1fr 1fr vw(80);
gap: vw(8);
padding: vh(6) vw(16);
background: linear-gradient(to right, #163b60, #133147);
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/ActionButton.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/ActionButton.vue
index f4587fd..e624d78 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/ActionButton.vue
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/ActionButton.vue
@@ -58,6 +58,13 @@ const handleClick = () => {
font-weight: 500;
white-space: nowrap;
+ &:hover {
+ background-image: none;
+ background-color: #4FECFF;
+ color: #062B5B;
+ border-radius: 5px;
+ }
+
&__icon {
width: vw(16);
height: vh(16);
@@ -95,7 +102,7 @@ const handleClick = () => {
}
&--medium {
- padding: vh(10) vw(20);
+ padding: vh(12) vw(32);
font-size: fs(14);
}
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/EmergencyPlanContent.vue b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/EmergencyPlanContent.vue
index adbf06b..2b1f619 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/EmergencyPlanContent.vue
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/components/shared/EmergencyPlanContent.vue
@@ -19,6 +19,7 @@
class="custom-select"
popper-class="custom-dropdown"
>
+
@@ -31,6 +32,7 @@
class="custom-select"
popper-class="custom-dropdown"
>
+
@@ -59,7 +61,14 @@
class="custom-select"
popper-class="custom-dropdown"
>
-
+
+
@@ -81,6 +90,10 @@
class="custom-select"
popper-class="custom-dropdown"
>
+
@@ -92,6 +105,7 @@
class="custom-select"
popper-class="custom-dropdown"
>
+
@@ -176,10 +190,16 @@
:key="plan.id"
class="dispatch-card"
>
-
+
props.stations);
* 表单数据
*/
const formData = reactive({
- commander: "王军",
- viceCommander: "刘勇",
- trafficControl: "公安交警、交通执法队",
+ commander: "陈前",
+ viceCommander: "樵继川",
+ trafficControl: "忠县交通巡逻警察大队",
infoRelease: "融媒体中心",
- vehicleDispatch: "xxx消防队",
- personnelRescue: "xx医院",
+ vehicleDispatch: "忠县交通运输综合执法支队",
+ personnelRescue: "忠县人民医院",
clearanceMethod: "两端对接抢通,必要时开辟工作面",
estimatedTime: "6小时",
});
@@ -259,41 +279,41 @@ const clearanceSteps = reactive([
number: "①",
title: "评估封控",
content:
- "对现场进行封控,清点各类应急物资提前到达现场,划定作业区与危险区,设立观察哨,全程监控边坡状况。",
+ "对现场进行封闭,落实告警阻拦措施;对灾毁周边稳定性进行评估,划定作业区与危险区,设立观察哨,全程监控边坡状态。",
},
{
id: 2,
number: "②",
title: "边坡排险",
content:
- "在确保安全的前提下,使用长臂挖掘机或人工在安全地域进行清除工作。注意下方施救作业。",
+ "在确保安全的前提下,使用长臂挖掘机或人工在安全绳保护下对坡面上已松动、悬空的岩石和土体进行清除,注意下方暂停作业。",
},
{
id: 3,
number: "③",
title: "梯形清方",
content:
- '按照机械自上而下,装载机抢先挖入土石堆入车,确土车上车主生,增土车队运输,将受阻路段疏通清理通道。确保抢险不停工,形成高效的"挖一装一运"循环。',
+ '挖掘机在最前方、负责将塌方体挖松,装载机将土石料装入渣土车,渣土车编队运输,将废料运至指定弃渣场。确保挖掘机、装载机、渣土车数量匹配,形成高效的"挖一装一运"循环。',
},
{
id: 4,
number: "④",
title: "开辟工作面",
content:
- "根据地质情况而规划车,利用挖掘机、装载机完成设备增加的工作面。增加作业效率。",
+ "根据抢通和救援要求,利用挖掘机、装载机或无人设备开辟新的工作面,增加作业效率。",
},
{
id: 5,
number: "⑤",
title: "交通疏导",
content:
- "清理出足够疏散车辆的临时性通道,临时道路根据道路情况设置限量所制路牌。在应急抢险下,试行错位通车。",
+ "清理出足够疏散车辆的临时性通道,临时通道边缘用锥桶或沙袋进行警示和防护,在现场指挥下,放行积压车辆。",
},
{
id: 6,
number: "⑥",
title: "全断面抢通",
- content: "将剩余集聚废弃物的清理清除,恢复道路原貌状。",
+ content: "将剩余塌方体彻底清理,恢复路面原状。",
},
]);
@@ -305,14 +325,16 @@ const dispatchPlans = ref([
id: 1,
stationName: "", // 站点名称,从 stations 自动赋值
resources: [
- { label: "轮播挖掘机挖掘机", value: "1台" },
+ { label: "轮式挖掘机", value: "1台" },
{ label: "平板拖车", value: "1台" },
{ label: "自卸货车", value: "4台" },
{ label: "工程车", value: "1台" },
+ { label: "装载机", value: "1台" },
{ label: "人员", value: "15人" },
+ { label: "锥桶", value: "30件" },
+ { label: "铁锹", value: "10件" },
+ { label: "雪糕筒", value: "50件" },
{ label: "标志标牌", value: "5块" },
- { label: "铁锹", value: "30件" },
- { label: "铁镐", value: "10件" },
{ label: "麻袋、砂石袋等", value: "若干" },
],
},
@@ -320,14 +342,16 @@ const dispatchPlans = ref([
id: 2,
stationName: "",
resources: [
- { label: "轮播挖掘机挖掘机", value: "1台" },
+ { label: "轮式挖掘机", value: "1台" },
{ label: "平板拖车", value: "1台" },
{ label: "自卸货车", value: "4台" },
{ label: "工程车", value: "1台" },
- { label: "人员", value: "15人" },
+ { label: "装载机", value: "15台" },
+ { label: "人员", value: "5人" },
+ { label: "锥桶", value: "30件" },
+ { label: "铁锹", value: "10件" },
+ { label: "雪糕筒", value: "50件" },
{ label: "标志标牌", value: "5块" },
- { label: "铁锹", value: "30件" },
- { label: "铁镐", value: "10件" },
{ label: "麻袋、砂石袋等", value: "若干" },
],
},
@@ -337,7 +361,7 @@ const dispatchPlans = ref([
* 后续处治文本
*/
const followUpText = ref(
- '将该处于方案大部分障碍清点,设置"注意落石"等标志牌,进行巡逻管控,进行巡逻处理信号监测统设备。'
+ "将该处作为重大涉灾隐患点,设置“注意落石、观察通行”等标志,进行提级管控,进行边坡治理或设置监测预警设备。"
);
/**
@@ -384,7 +408,7 @@ watch(
*/
const handleAddPlan = () => {
// 暂时禁止新增预案
- return
+ return;
console.log("[EmergencyPlanContent] 点击新增预案");
const newId = Math.max(...dispatchPlans.value.map((p) => p.id)) + 1;
const newIndex = dispatchPlans.value.length;
@@ -393,14 +417,16 @@ const handleAddPlan = () => {
id: newId,
stationName: getStationNameByIndex(newIndex),
resources: [
- { label: "轮播挖掘机挖掘机", value: "1台" },
+ { label: "轮式挖掘机", value: "1台" },
{ label: "平板拖车", value: "1台" },
{ label: "自卸货车", value: "4台" },
{ label: "工程车", value: "1台" },
- { label: "人员", value: "15人" },
+ { label: "装载机", value: "15台" },
+ { label: "人员", value: "5人" },
+ { label: "锥桶", value: "30件" },
+ { label: "铁锹", value: "10件" },
+ { label: "雪糕筒", value: "50件" },
{ label: "标志标牌", value: "5块" },
- { label: "铁锹", value: "30件" },
- { label: "铁镐", value: "10件" },
{ label: "麻袋、砂石袋等", value: "若干" },
],
});
@@ -411,7 +437,7 @@ const handleAddPlan = () => {
*/
const handleDeletePlan = (id) => {
// 暂时禁止删除预案
- return
+ return;
console.log("[EmergencyPlanContent] 删除预案", id);
const index = dispatchPlans.value.findIndex((p) => p.id === id);
if (index > -1) {
@@ -716,6 +742,8 @@ const handleDeletePlan = (id) => {
line-height: 1.6;
padding: vh(8) vw(12);
transition: box-shadow 0.3s ease;
+ overflow: hidden !important;
+ // resize: none !important;
&:hover {
box-shadow: 0 0 0 1px var(--primary-color) inset !important;
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useDisasterData.js b/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useDisasterData.js
index 4e88021..158ec7c 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useDisasterData.js
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useDisasterData.js
@@ -82,8 +82,10 @@ export function useDisasterData() {
{
id: 1,
source: '气象预警',
+ // content:
+ // `忠县气象台${getCurrentDate()} 08:30分升级发布"暴雨黄色预警信号",过去6小时,文峰、红池坝、天元、长桂等乡镇累计降雨量已达70毫米以上。`,
content:
- `忠县气象台${getCurrentDate()} 08:30分升级发布"暴雨黄色预警信号",过去6小时,文峰、红池坝、天元、长桂等乡镇累计降雨量已达70毫米以上。`,
+ `忠县气象台2025-11-19 08:30分升级发布"暴雨黄色预警信号",过去6小时,文峰、红池坝、天元、长桂等乡镇累计降雨量已达70毫米以上。`,
timestamp: getCurrentDateTime('08:30')
},
{
@@ -95,8 +97,10 @@ export function useDisasterData() {
{
id: 3,
source: '融媒体中心',
+ // content:
+ // `发布了阻断信息:巴南S204武大线三湾于${getCurrentDateWithoutYear()}发生山体滑坡,边坡有继续垮塌风险,需断道观察,车辆从桥口坝绕行金田村,预计${getCurrentDate()} 24:00恢复通行。`,
content:
- `发布了阻断信息:巴南S204武大线三湾于${getCurrentDateWithoutYear()}发生山体滑坡,边坡有继续垮塌风险,需断道观察,车辆从桥口坝绕行金田村,预计${getCurrentDate()} 24:00恢复通行。`,
+ `发布了阻断信息:巴南S204武大线三湾于11月19日发生山体滑坡,边坡有继续垮塌风险,需断道观察,车辆从桥口坝绕行金田村,预计2025-11-19 24:00恢复通行。`,
timestamp: getCurrentDateTime('24:00')
}
])
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useForceDispatch.js b/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useForceDispatch.js
index a173bcc..05881c9 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useForceDispatch.js
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/composables/useForceDispatch.js
@@ -47,6 +47,13 @@ export function useForceDispatch() {
},
{
id: 2,
+ name: '挖掘机-002',
+ type: '挖掘机',
+ distance: 1.2,
+ status: 'ready'
+ },
+ {
+ id: 3,
name: '运输车-002',
type: '运输车',
distance: 0.8,
@@ -63,13 +70,6 @@ export function useForceDispatch() {
battery: 85,
status: 'flying'
},
- {
- id: 2,
- name: '无人机-002',
- altitude: 100,
- battery: 92,
- status: 'flying'
- }
])
// 切换标签页
diff --git a/packages/screen/src/views/3DSituationalAwarenessRefactor/constants/index.js b/packages/screen/src/views/3DSituationalAwarenessRefactor/constants/index.js
index 27afcb2..f61b875 100644
--- a/packages/screen/src/views/3DSituationalAwarenessRefactor/constants/index.js
+++ b/packages/screen/src/views/3DSituationalAwarenessRefactor/constants/index.js
@@ -46,7 +46,7 @@ export const VIDEO_MONITORS = [
{
id: 3,
type: VIDEO_TYPES.VEHICLE_EXTERNAL,
- title: '指挥车外部视角',
+ title: '设备操作视角',
videoSrc:
'http://222.212.85.86:9000/300bdf2b-a150-406e-be63-d28bd29b409f/demo/ylzg/指挥车外部视角.mp4',
dateRange: '2025/9/1-2025/12/1',
@@ -58,7 +58,7 @@ export const VIDEO_MONITORS = [
{
id: 4,
type: VIDEO_TYPES.VEHICLE_MEETING,
- title: '指挥车会议视角',
+ title: '指挥会议室视角',
videoSrc:
'http://222.212.85.86:9000/300bdf2b-a150-406e-be63-d28bd29b409f/demo/ylzg/指挥车会议视角.mp4',
dateRange: '2025/9/1-2025/12/1',
@@ -79,9 +79,9 @@ export const DIRECTIONS = {
// 现场设备标签页
export const DISPATCH_TABS = [
- { key: 'personnel', label: '现场单兵', count: 23 },
- { key: 'equipment', label: '现场设备', count: 21 },
- { key: 'drone', label: '现场无人机', count: 21 },
+ { key: 'personnel', label: '现场单兵', count: 3 },
+ { key: 'equipment', label: '现场设备', count: 3 },
+ { key: 'drone', label: '现场无人机', count: 1 },
]
// 响应等级