1.新需求2025.9.19新需求:
去掉"健康监测"副屏, 修改后健康终端报警点击查看详情弹出告警记录分页列表;
去掉【体检人数统计】【体检数据】【健康打卡数据】,增加【心血管监测】模块功能,【心血管监测】功能将原心血管监测大屏上的内容整理并移动到急救服务平台大屏中;
员工求助时,地图中推荐两个医院、两个健康小屋、两个AED坐标信息,并按距离排序,体现距离远近顺序;
地图中油田医院、健康小屋等各个图例,显示总数信息;
救护车坐标信息维护,并在大屏上标记;
右上角"增加【救助信息】板块, 当出现应急弹窗后或从今日应急选中应急事件 , 该板块需展示应急事件的相关信息(开发中);
This commit is contained in:
2025-09-24 20:53:28 +08:00
parent a97d9c64aa
commit c7abcf1f67
29 changed files with 1783 additions and 175 deletions
+115 -94
View File
@@ -19,24 +19,26 @@
<twoL @handle-view="handleTwoLClick" :center-id="centerId" :bKey="`two-l-${count}`" />
</div>
<div class="sun-body-left-three">
<three-left-new :bKey="`three-l-n-${count}`" :center-id="centerId" />
<!-- <threeL />-->
<threeNewL :bKey="`three-l-${count}`" :center-id="centerId" />
</div>
<div class="sun-body-left-four" style="margin-bottom: 0">
<threeR @handle-click="handleThreeRClick" :center-id="centerId" :bKey="`four-l-${count}`" />
<!-- <threeNewL :bKey="`three-l-${count}`" :center-id="centerId" />-->
</div>
<!-- <div class="sun-body-left-four" style="margin-bottom: 0">-->
<!-- <threeR @handle-click="handleThreeRClick" :center-id="centerId" :bKey="`four-l-${count}`" />-->
<!-- </div>-->
</div>
<div class="sun-body-center">
<CenterMap
ref="centerMapRef"
:showHospitalList="showHospitalList"
:hospitalList="hospitalList"
@clear-hospital-list="clearHospitalList"
:show-rest-b="showRestB"
@handle-detail="handleCenterMapClick"
:map-bottom-info="mapBottom"
:show-map-bottom="showMapBottom"
@show-rest-b="
() => {
userData = {};
showRestB = false;
showMapBottom = false;
}
@@ -44,7 +46,10 @@
/>
</div>
<div class="sun-body-right">
<div class="sun-body-right-one" style="height: calc((100% - 350px) / 2 - 10px); margin-bottom: 10px">
<div class="sun-body-right-one">
<one-right-new :user-data="userData" @handle-view="handleOneRightView" @handle-archives="handleArchives" />
</div>
<div class="sun-body-right-two">
<oneR
@handle-view="handleOneRClick"
@show-reset="
@@ -55,11 +60,8 @@
:bKey="`one-r-${count}`"
/>
</div>
<div class="sun-body-right-two" style="height: calc((100% - 350px) / 2 - 10px); margin-bottom: 10px">
<rwo-new-r :center-id="centerId" :bKey="`two-n-r-${count}`" @handle-view="handleTwoNewRClick" />
</div>
<div class="sun-body-right-three" style="height: 350px">
<twoR @handle-click="handleTwoRClick" :center-id="centerId" :bKey="`two-r-${count}`" />
<div class="sun-body-right-three">
<two-new-r :center-id="centerId" :bKey="`two-n-r-${count}`" @handle-view="handleTwoNewRClick" />
</div>
</div>
</div>
@@ -79,16 +81,18 @@
:firstForm="firstFormOne"
:need-dept="needDept"
:twoROnly="twoROnly"
/>
>
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'cz'">
<a-button type="link" @click="forHelp(record)">救助信息</a-button>
</template>
</template>
</IndexModal>
</template>
<script setup lang="ts">
// import threeL from '/@/views/indexSun/threeL.vue';
import OneL from '/@/views/indexSun/oneL.vue';
import twoL from '/@/views/indexSun/twoL.vue';
import threeNewL from '/@/views/indexSun/threeNewL.vue';
import oneR from '/@/views/indexSun/oneR.vue';
import twoR from '/@/views/indexSun/twoR.vue';
import threeR from '/@/views/indexSun/threeR.vue';
import CenterMap from '/@/views/indexSun/centerMap.vue';
import { ServerDetailType } from '/@/components/body-d-left/bodyLeftHooks.ts';
import {
@@ -97,6 +101,7 @@
columns,
fromLists,
infoContentSpecial,
oneRNewColumns,
threeRModalColumns,
threeRModalFromList,
towRcolumns,
@@ -120,9 +125,12 @@
const { getCenterInfo, setCount } = useUserStore();
import {
healthArchivesApi,
nearResourcesApi,
oneLApi,
roomDetailApi,
threeRModalApi,
todayEmergencyListApi,
twoLModalApi,
twoRModal1Api,
twoRModal2Api,
@@ -130,7 +138,9 @@
twoRNApi,
} from '/@/views/indexSun/indexSun.api.ts';
import dayjs from 'dayjs';
import RwoNewR from '/@/views/indexSun/rwoNewR.vue';
import ThreeLeftNew from '/@/views/indexSun/threeLeftNew.vue';
import OneRightNew from '/@/views/indexSun/oneRightNew.vue';
import TwoNewR from '/@/views/indexSun/twoNewR.vue';
//0:处置 1:处理 2:呼入 3:全部
const phoneType = ref('');
const phoneDialogTitle = ref('呼入电话');
@@ -152,8 +162,9 @@
const qhInterval = ref();
const cInterval = ref();
const initDate = ref(startTime);
const mapBottom = ref({});
const showMapBottom = ref(false);
const userData = ref<object>({});
const centerMapRef = ref();
onMounted(() => {
getTime();
@@ -185,16 +196,40 @@
}
);
async function forHelp(record: any) {
showMapBottom.value = false;
indexModalRef.value.closeDialog();
record['lat'] = record?.latitude;
record['lon'] = record?.longitude;
if (record['lat']) {
let list: any = [];
const res: any = await nearResourcesApi({ longitude: record?.lon, latitude: record?.lat });
if (res.code === 200) {
list = res.result || [];
}
record['hospitalList'] = list.map((item: any) => {
item['latitude'] = item['lat'];
item['longitude'] = item['lon'];
return item;
});
} else {
centerMapRef.value.resetMap();
showRestB.value = false;
userData.value = record;
}
confirmHelp(record);
}
function toOther() {
window.open('http://aygc.jy.pc.iosp.ydpt.tech/envShow/envFullscreen', '_blank');
}
function handleOneLeftClick(item) {
function handleOneLeftClick(item: any) {
const { name, key } = item;
//呼入电话
//受理电话
if (key == 'alerdyreceive' || key == 'gross') {
phoneType.value = ServerDetailType[key];
phoneType.value = (ServerDetailType as any)[key];
indexModalTitle.value = name;
firstFormOne.value = fromLists[0];
indexColumn.value = columns[0];
@@ -247,56 +282,6 @@
orgName: '硬件部',
departCode: 'A01A01',
departName: '软硬件开发部',
hospitalList: [
{
id: null,
name: '吉祥作业区',
lat: 44.000833,
lon: 89.214722,
type: null,
centerResource: false,
manageName: null,
managePhone: null,
address: null,
ambulance: null,
docNum: null,
nurseNum: null,
expertNum: null,
distance: '383km',
},
{
id: null,
name: '吉祥作业区',
lat: 44.000833,
lon: 89.214722,
type: null,
centerResource: false,
manageName: null,
managePhone: null,
address: null,
ambulance: null,
docNum: null,
nurseNum: null,
expertNum: null,
distance: '383km',
},
{
id: null,
name: '页岩油作业区',
lat: 44.233333,
lon: 89.105278,
type: null,
centerResource: false,
manageName: null,
managePhone: null,
address: null,
ambulance: null,
docNum: null,
nurseNum: null,
expertNum: null,
distance: '363km',
},
],
type: '0',
centerId: '1940693902422519809',
popType: 1,
@@ -341,8 +326,8 @@
const hospitalList = ref([]); //医院列表
const showHospitalList = ref(false);
async function confirmHelp(data) {
if (!data.lon) return;
async function confirmHelp(data: any) {
if (!data.lon) return (showMapBottom.value = true);
Map.removeOverlayGroup();
hospitalList.value = data.hospitalList;
// showHospitalList.value = true;
@@ -350,7 +335,8 @@
let point = [data.lon, data.lat];
// if (data.hospitalList && data.hospitalList.length > 0) {
// try {
hospitalList.value = await getHospitalList(data.hospitalList, point);
const a = ((await getHospitalList(data.hospitalList, point)) as any) || [];
hospitalList.value = a.sort((a: any, b: any) => a.distance - b.distance);
// showHospitalList.value = true;
// } catch (error) {
// console.log('获取医院列表时出错:', error);
@@ -358,13 +344,8 @@
// } else {
// console.log('没有医院list');
// }
mapBottom.value = data;
// mapBottom.value['careLiaisonName'] = '1';
// mapBottom.value['careLiaisonPhone'] = '1';
// mapBottom.value['lifeguardName'] = '1';
// mapBottom.value['lifeguardPhone'] = '1';
showMapBottom.value = true;
const arr = Map.createOverlay(
// showMapBottom.value = true;
const arr = await Map.createOverlay1(
[...hospitalList.value, { latitude: data.lat, longitude: data.lon }],
{
content: (val) => {
@@ -410,9 +391,9 @@
Map.createEmergencyMarker(option);
Map.map.setFitView([...arr, Map.emergencyMarker], false, [180, 180, 180, 180]);
})
.catch((err) => {
Map.map.setFitView(arr, false, [180, 180, 180, 180]);
});
.catch((err) => {});
userData.value = data;
}
async function getHospitalList(hospitalList, userLocation) {
@@ -566,6 +547,34 @@
indexModalRef.value.openDialog();
});
}
function handleOneRightView() {
indexColumn.value = oneRNewColumns;
firstFormOne.value = [];
const params = {
centerId: centerId.value,
startDate: '2000-01-01',
endDate: '2025-09-25',
};
indexModalTitle.value = '今日应急';
modalApi.value = todayEmergencyListApi;
apiParams.value = params;
nextTick(() => {
indexModalRef.value.openDialog();
});
}
function handleArchives(userId: string) {
indexColumn.value = oneRNewColumns;
firstFormOne.value = [];
const params = {
userId: userId,
};
indexModalTitle.value = '今日应急';
modalApi.value = healthArchivesApi;
apiParams.value = params;
nextTick(() => {
indexModalRef.value.openDialog();
});
}
function handleCenterMapClick(res: any) {
indexColumn.value = centerMapColumns;
@@ -632,7 +641,7 @@
width: 22%;
display: flex;
flex-direction: column;
justify-content: space-between;
//justify-content: space-between;
}
.sun-body-center {
@@ -663,25 +672,29 @@
}
.sun-body-left-two {
height: 34%;
flex: 1;
}
.sun-body-left-three {
height: 28%;
}
.sun-body-left-four {
height: 18%;
//height: 45%;
}
//.sun-body-left-four {
// height: 18%;
//}
}
.sun-body-right {
display: flex;
flex-direction: column;
.sun-body-right-one,
.sun-body-right-two,
.sun-body-right-three {
//display: flex;
//flex-direction: column;
> div {
border: 1px solid #00ccff;
border-radius: 14px;
overflow: hidden;
overflow: hidden;
&:not(:last-child) {
margin-bottom: 10px;
}
.one-r-box,
.two-r-box,
@@ -689,6 +702,14 @@
height: 100%;
}
}
.sun-body-right-one {
}
.sun-body-right-two {
flex: 1;
}
.sun-body-right-three {
flex: 1;
}
}
}
}