update 调整银川大屏和西安大屏
This commit is contained in:
@@ -1,6 +1,14 @@
|
||||
import { ref, unref } from 'vue';
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
//服务详情数据弹窗参数
|
||||
export enum ServerDetailType {
|
||||
gross = '0', //最新呼入电话
|
||||
alerdyreceive = '1', //最新受理电话
|
||||
jqqz = '2', //突发重大伤病应急
|
||||
dbjy = '3', //重大伤病应急就医
|
||||
}
|
||||
|
||||
export function useStatistics() {
|
||||
const statistics = ref([
|
||||
{
|
||||
@@ -90,36 +98,36 @@ export function useSpin() {
|
||||
}
|
||||
|
||||
export const hospitalList = [
|
||||
{
|
||||
name: '泾河医院',
|
||||
key: 'zhigong',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '兴隆医院',
|
||||
key: 'tangdu',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '宁夏宝石花医院',
|
||||
key: 'yangehu',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '延安市人民医院',
|
||||
key: 'yananshi',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '西京医院',
|
||||
key: 'xijing',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
name: '庆阳医院',
|
||||
key: 'changan',
|
||||
value: 0,
|
||||
},
|
||||
// {
|
||||
// name: '泾河医院',
|
||||
// key: 'zhigong',
|
||||
// value: 0,
|
||||
// },
|
||||
// {
|
||||
// name: '兴隆医院',
|
||||
// key: 'tangdu',
|
||||
// value: 0,
|
||||
// },
|
||||
// {
|
||||
// name: '宁夏宝石花医院',
|
||||
// key: 'yangehu',
|
||||
// value: 0,
|
||||
// },
|
||||
// {
|
||||
// name: '延安市人民医院',
|
||||
// key: 'yananshi',
|
||||
// value: 0,
|
||||
// },
|
||||
// {
|
||||
// name: '西京医院',
|
||||
// key: 'xijing',
|
||||
// value: 0,
|
||||
// },
|
||||
// {
|
||||
// name: '庆阳医院',
|
||||
// key: 'changan',
|
||||
// value: 0,
|
||||
// },
|
||||
];
|
||||
|
||||
export function useHospitalList() {
|
||||
@@ -129,11 +137,12 @@ export function useHospitalList() {
|
||||
return unref(radarList);
|
||||
}
|
||||
|
||||
function setRadarList(res = {}) {
|
||||
radarList.value.forEach((item) => {
|
||||
const { key } = item;
|
||||
item.value = res[key] || 0;
|
||||
});
|
||||
function setRadarList(res) {
|
||||
radarList.value = res;
|
||||
// radarList.value.forEach((item) => {
|
||||
// const { key } = item;
|
||||
// item.value = res[key] || 0;
|
||||
// });
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { get } from '/@/api/request';
|
||||
export enum Api {
|
||||
departList = '/sys/sysDepart/allSecondaryDeparts',
|
||||
server = '/health-emergency/emergency/tblUserHelp/statistics',
|
||||
getDetail = '/health-emergency/emergency/tblHealthData/getDetail',
|
||||
getDetail = '/health-medical/medical/hospital/getMedicalHospital',
|
||||
complaint = '/health-emergency/emergency/tblHelpCenter/sicknessTypeStatistic',
|
||||
}
|
||||
|
||||
@@ -14,4 +14,4 @@ export const list = (params: any) => get(Api.server, params);
|
||||
//主诉分类
|
||||
export const complaint = (params: any) => get(Api.complaint, params);
|
||||
//体检数据
|
||||
export const getDetail = (params: any) => get(Api.getDetail, params);
|
||||
export const getDetail = (params: any) => get(Api.getDetail, params);
|
||||
|
||||
@@ -54,13 +54,13 @@
|
||||
async function getList() {
|
||||
setSpin(true);
|
||||
try {
|
||||
const { code, result } = (await getDetail({})) || {};
|
||||
const { code, result } = (await getDetail({ dataType: props.setting.dataType })) || {};
|
||||
setSpin(!spinning.value);
|
||||
if (code != 200 || !Array.isArray(result)) {
|
||||
if (code != 200) {
|
||||
return;
|
||||
}
|
||||
setSession(LEFT_KEY3, JSON.stringify(result[0]));
|
||||
setValue(result[0]);
|
||||
setSession(LEFT_KEY3, JSON.stringify(result));
|
||||
setValue(result);
|
||||
} catch {
|
||||
const result = JSON.parse(getSession(LEFT_KEY3));
|
||||
setValue(result);
|
||||
@@ -76,9 +76,9 @@
|
||||
|
||||
function initChart() {
|
||||
const myChart = echarts.init(document.querySelector('.RadarCharts'));
|
||||
let countList = radarList.value.map((item) => item.value);
|
||||
let countList = radarList.value.map((item) => item?.userCount);
|
||||
let max = Math.max(...countList);
|
||||
const indicator = radarList.value.map((item) => ({ name: item.name, max: max }));
|
||||
const indicator = radarList.value.map((item) => ({ name: item?.hospitalName, max: max }));
|
||||
const option = radarCharts({ indicator, countList });
|
||||
myChart.setOption(option);
|
||||
window.addEventListener('resize', () => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<public-title title="主诉分类" />
|
||||
<div class="inner">
|
||||
<div class="zc-inner">
|
||||
<div class="title">
|
||||
<div class="type-check">
|
||||
<span
|
||||
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, watch } from 'vue';
|
||||
import { ref, onMounted, watch, onUnmounted } from 'vue';
|
||||
import PublicTitle from '/@/components/publicTitle.vue';
|
||||
import * as echarts from 'echarts';
|
||||
import { complaint, getDepart } from '/@/components/body-d-left/left.api.ts';
|
||||
@@ -51,8 +51,20 @@
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
document.addEventListener('visibilitychange', checkTabState);
|
||||
init();
|
||||
});
|
||||
onUnmounted(() => {
|
||||
document.removeEventListener('visibilitychange', checkTabState);
|
||||
});
|
||||
const tabState = ref('');
|
||||
|
||||
function checkTabState() {
|
||||
console.log('checkTabState', document.hidden);
|
||||
tabState.value = document.hidden ? 'inactive' : 'active';
|
||||
if (!document.hidden) {
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
getDepartOption();
|
||||
@@ -112,8 +124,9 @@
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.inner {
|
||||
.zc-inner {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: calc(100% - 40px);
|
||||
|
||||
.spin {
|
||||
|
||||
@@ -2,10 +2,10 @@ import { get } from '/src/api/request';
|
||||
|
||||
export enum Api {
|
||||
getMonitorList = '/health-watch/watch/watchMonitorData/getMonitorList',
|
||||
getHealthDataList = '/health-emergency/emergency/tblHealthData/getHealthDataList',
|
||||
getHealthDataList = '/health-archives/archives/groupUserA/getGroupUserAInfo',
|
||||
}
|
||||
|
||||
//健康终端报警
|
||||
export const getMonitorList = (params: any) => get(Api.getMonitorList, params);
|
||||
//长庆油田大病人数
|
||||
export const getHealthDataList = (params: any) => get(Api.getHealthDataList, params);
|
||||
export const getHealthDataList = (params: any) => get(Api.getHealthDataList, params);
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
import { ringOption, useHealth } from '/@/components/body-d-right/bodyRightHooks.ts';
|
||||
import { useSession, caching } from '/@/hooks/autoRefresh/caching.ts';
|
||||
|
||||
const props = defineProps({
|
||||
setting: Object,
|
||||
});
|
||||
const { setSession, getSession } = useSession();
|
||||
const { RIGHT_KEY2 } = caching;
|
||||
const { setSpin, spinning } = useSpin();
|
||||
@@ -24,7 +27,7 @@
|
||||
|
||||
async function init() {
|
||||
try {
|
||||
const { code, result } = await getHealthDataList({});
|
||||
const { code, result } = await getHealthDataList({ dataType: props.setting?.dataType, orgCode: props.setting?.orgCode });
|
||||
setSpin(true);
|
||||
if (code != 200) {
|
||||
return;
|
||||
|
||||
@@ -50,11 +50,11 @@
|
||||
</div>
|
||||
<div class="center-footer">
|
||||
<div class="count-item">
|
||||
<div class="num">{{ useDetail?.alerdyreceive || '/' }}</div>
|
||||
<div class="num">{{ useDetail?.alerdyreceive || '0' }}</div>
|
||||
<div class="text">累计受理</div>
|
||||
</div>
|
||||
<div class="count-item">
|
||||
<div class="num">{{ useDetail?.totalacceptance || '/' }}</div>
|
||||
<div class="num">{{ useDetail?.totalacceptance || '0' }}</div>
|
||||
<div class="text">累计处置</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -449,4 +449,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -69,6 +69,10 @@
|
||||
const dataSource = ref([]);
|
||||
|
||||
async function getRecords() {
|
||||
if (!props.api) {
|
||||
setDataSource([{ name: '张三', department: '公司机关', sex: '男' }]);
|
||||
return;
|
||||
}
|
||||
const { code, result } = await props.api({ ...props.apiParams, pageSize: pageSize.value, pageNo: current.value });
|
||||
if (code == 200) {
|
||||
if (props.afterFetch && isFunction(props.afterFetch)) {
|
||||
@@ -92,6 +96,9 @@
|
||||
immediate: true,
|
||||
}
|
||||
);
|
||||
defineExpose({
|
||||
getRecords,
|
||||
});
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
:deep(.ant-table-thead > tr > th) {
|
||||
@@ -186,4 +193,4 @@
|
||||
:deep(.ant-table-pagination-right) {
|
||||
margin-right: 10px !important;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
<style scoped lang="less">
|
||||
.dialog-con {
|
||||
background-color: #00152b;
|
||||
border: 1px solid #129bff;
|
||||
//border: 1px solid #129bff;
|
||||
min-height: 500px;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ export const sexTypeList = [
|
||||
},
|
||||
];
|
||||
|
||||
interface Settings {
|
||||
export interface Settings {
|
||||
dataType: string;
|
||||
orgCode?: string;
|
||||
}
|
||||
|
||||
+3
-4
@@ -74,15 +74,15 @@ export function useSocket(p = basicPath) {
|
||||
|
||||
socket.value.onclose = function () {
|
||||
reconnect(path.value);
|
||||
console.log('连接关闭', new Date().toLocaleString());
|
||||
// console.log('连接关闭', new Date().toLocaleString());
|
||||
};
|
||||
socket.value.onerror = function () {
|
||||
reconnect(path.value);
|
||||
console.log('连接错误');
|
||||
console.warn('连接错误');
|
||||
};
|
||||
socket.value.onopen = function () {
|
||||
heartCheck.reset().start(); //心跳检测重置
|
||||
console.log('连接成功:' + new Date().toLocaleString());
|
||||
// console.log('连接成功:' + new Date().toLocaleString());
|
||||
};
|
||||
socket.value.onmessage = function (event) {
|
||||
//如果获取到消息,心跳检测重置
|
||||
@@ -108,4 +108,3 @@ export function useSocket(p = basicPath) {
|
||||
|
||||
return { socket, socketData, setSocketData, closeSocket };
|
||||
}
|
||||
|
||||
|
||||
+20
-7
@@ -10,15 +10,15 @@
|
||||
<div class="body-d">
|
||||
<div class="body-d-left">
|
||||
<one-l :setting="setting" :refreshState="refreshState" @handleClick="handlePhoneDialog" />
|
||||
<two-l :refreshState="refreshState" />
|
||||
<three-l :refreshState="refreshState" />
|
||||
<two-l :key="tabState" :refreshState="refreshState" />
|
||||
<three-l :key="tabState" :setting="setting" :refreshState="refreshState" />
|
||||
</div>
|
||||
<div class="body-d-middle">
|
||||
<china-map />
|
||||
</div>
|
||||
<div class="body-d-right">
|
||||
<one-r :setting="setting" :refreshState="refreshState" />
|
||||
<two-r :refreshState="refreshState" />
|
||||
<two-r :key="tabState" :setting="setting" :refreshState="refreshState" />
|
||||
<three-r :key="refreshState" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -29,7 +29,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { onUnmounted, ref, watch, nextTick } from 'vue';
|
||||
import { onUnmounted, ref, watch, nextTick, onMounted } from 'vue';
|
||||
import OneL from '/@/components/body-d-left/oneL.vue';
|
||||
import TwoL from '/@/components/body-d-left/twoL.vue';
|
||||
import ThreeL from '/@/components/body-d-left/threeL.vue';
|
||||
@@ -44,6 +44,7 @@
|
||||
import { useRefresh } from '/@/hooks/autoRefresh';
|
||||
import { DEFAULT_TIME } from '/@/hooks/autoRefresh/pageRefreshTime.ts';
|
||||
import { DataType, getSettings } from '/@/utils/settings.ts';
|
||||
import { ServerDetailType } from '/@/components/body-d-left/bodyLeftHooks.ts';
|
||||
import PhoneDialog from '/@/views/components/phoneDialog/phoneDialog.vue';
|
||||
|
||||
const { refreshState } = useRefresh(DEFAULT_TIME);
|
||||
@@ -65,10 +66,22 @@
|
||||
dayTimeT.value = timeRight;
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
init();
|
||||
document.addEventListener('visibilitychange', checkTabState);
|
||||
});
|
||||
onUnmounted(() => {
|
||||
clearInterval(interval.value);
|
||||
document.removeEventListener('visibilitychange', checkTabState);
|
||||
});
|
||||
init();
|
||||
|
||||
const tabState = ref('');
|
||||
|
||||
//判断窗口是否处于激活状态,切换浏览器tab会导致部门echarts显示不正常
|
||||
function checkTabState() {
|
||||
tabState.value = document.hidden ? 'inactive' : 'active';
|
||||
}
|
||||
|
||||
// 健康监测工具报警
|
||||
const { socketData, setSocketData, closeSocket } = useSocket(basicPath);
|
||||
const employeeDialogRef = ref();
|
||||
@@ -113,11 +126,11 @@
|
||||
nextTick(() => {
|
||||
//呼入电话
|
||||
if (key == 'gross') {
|
||||
phoneType.value = '2';
|
||||
phoneType.value = ServerDetailType['gross'];
|
||||
}
|
||||
//受理电话
|
||||
if (key == 'alerdyreceive') {
|
||||
phoneType.value = '1';
|
||||
phoneType.value = ServerDetailType['alerdyreceive'];
|
||||
}
|
||||
phoneDialogTitle.value = name;
|
||||
phoneDialogRef.value.openDialog();
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
import { caching, useSession } from '/@/hooks/autoRefresh/caching.ts';
|
||||
import { getTeamHealth } from '/@/views/yinChuan/yinChuan.api.ts';
|
||||
|
||||
const props = defineProps({
|
||||
setting: Object,
|
||||
});
|
||||
const { setSession, getSession } = useSession();
|
||||
const { TEAM_HEALTH } = caching;
|
||||
const list = ref([
|
||||
@@ -63,7 +66,7 @@
|
||||
|
||||
async function viewDetail() {
|
||||
try {
|
||||
const { code, result } = await getTeamHealth({});
|
||||
const { code, result } = await getTeamHealth({ dataType: props.setting?.dataType });
|
||||
if (code != 200) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import { get } from '/@/api/request';
|
||||
export enum Api {
|
||||
phoneList = '/health-emergency/emergency/tblUserHelp/phoneList',
|
||||
getWorkDaily = '/health-emergency/emergency/ycLargeScreen/medicalCenter',
|
||||
getTeamHealth = '/health-emergency/emergency/ycLargeScreen/userHealthCenter',
|
||||
getTeamHealth = '/health-archives/archives/groupUserA/getGroupUserAInfo',
|
||||
}
|
||||
|
||||
// 呼入电话、受理电话
|
||||
|
||||
@@ -10,30 +10,30 @@
|
||||
<div class="body-d">
|
||||
<div class="yichuan-body-left">
|
||||
<!--服务详情数据-->
|
||||
<ServiceDetails :setting="setting" class="service-details" :refreshState="refreshState" @handleClick="handlePhoneDialog" />
|
||||
<ServiceDetails :refreshState="refreshState" :setting="setting" class="service-details" @handleClick="handlePhoneDialog" />
|
||||
<!--一线医疗点每日工作动态-->
|
||||
<DailyWorkTrends class="daily-work-trends" :refreshState="refreshState" />
|
||||
<DailyWorkTrends :refreshState="refreshState" class="daily-work-trends" />
|
||||
</div>
|
||||
<div class="body-d-middle">
|
||||
<china-map />
|
||||
</div>
|
||||
<div class="body-d-right">
|
||||
<!--健康终端报警-->
|
||||
<TerminalAlarm :setting="setting" :refreshState="refreshState" @emit-view-detail="handleEmployeeDialog" />
|
||||
<TerminalAlarm :refreshState="refreshState" :setting="setting" @emit-view-detail="handleEmployeeDialog" />
|
||||
<!--员工队伍健康状况-->
|
||||
<EmployeeHealth :refreshState="refreshState" />
|
||||
<EmployeeHealth :refreshState="refreshState" :setting="setting" />
|
||||
<!--体检数据-->
|
||||
<PhysicalExaminationData :setting="setting" :refreshState="refreshState" />
|
||||
<PhysicalExaminationData :key="tabState" :refreshState="refreshState" :setting="setting" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom-d"></div>
|
||||
<EmployeeDialog ref="employeeDialogRef" :record="socketData" />
|
||||
<EmergencyDialog ref="emergencyDialogRef" :record="emergencyData" />
|
||||
<PhoneDialog ref="phoneDialogRef" :title="phoneDialogTitle" :useForm="true" :setting="setting" :phoneType="phoneType" />
|
||||
<PhoneDialog ref="phoneDialogRef" :phoneType="phoneType" :setting="setting" :title="phoneDialogTitle" :useForm="true" />
|
||||
<TerminalAlarmDialog ref="terminalAlarmDialogRef" :setting="setting" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
<script lang="ts" setup>
|
||||
import { onUnmounted, ref, watch, nextTick, onMounted } from 'vue';
|
||||
import ServiceDetails from '/@/components/body-d-left/oneL.vue';
|
||||
import DailyWorkTrends from '/@/views/yinChuan/componetns/dailyWorkTrends/dailyWorkTrends.vue';
|
||||
@@ -52,6 +52,7 @@
|
||||
// import { useUserStore } from '/@/store/modules/user.ts';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { DataType, getSettings } from '/@/utils/settings.ts';
|
||||
import { ServerDetailType } from '/@/components/body-d-left/bodyLeftHooks.ts';
|
||||
|
||||
const route = useRoute();
|
||||
const setting = getSettings(DataType.yinChuan);
|
||||
@@ -64,7 +65,20 @@
|
||||
// userStore.setUserInfo(data.userInfo);
|
||||
// console.log(useUserStore);
|
||||
// }
|
||||
init();
|
||||
document.addEventListener('visibilitychange', checkTabState);
|
||||
});
|
||||
onUnmounted(() => {
|
||||
clearInterval(interval.value);
|
||||
document.removeEventListener('visibilitychange', checkTabState);
|
||||
});
|
||||
const tabState = ref('');
|
||||
|
||||
//判断窗口是否处于激活状态,切换浏览器tab会导致部门echarts显示不正常
|
||||
function checkTabState() {
|
||||
tabState.value = document.hidden ? 'inactive' : 'active';
|
||||
}
|
||||
|
||||
const { refreshState } = useRefresh(DEFAULT_TIME);
|
||||
const dayTimeO = ref();
|
||||
const dayTimeT = ref();
|
||||
@@ -83,10 +97,6 @@
|
||||
dayTimeT.value = timeRight;
|
||||
}
|
||||
|
||||
onUnmounted(() => {
|
||||
clearInterval(interval.value);
|
||||
});
|
||||
init();
|
||||
// 健康监测工具报警
|
||||
const { socketData, setSocketData, closeSocket } = useSocket(basicPath);
|
||||
const employeeDialogRef = ref();
|
||||
@@ -130,16 +140,16 @@
|
||||
const { name, key } = item;
|
||||
//呼入电话
|
||||
if (key == 'gross') {
|
||||
phoneType.value = '2';
|
||||
phoneType.value = ServerDetailType['gross'];
|
||||
//受理电话
|
||||
if (key == 'alerdyreceive') {
|
||||
phoneType.value = ServerDetailType['alerdyreceive'];
|
||||
}
|
||||
nextTick(() => {
|
||||
phoneDialogTitle.value = name;
|
||||
phoneDialogRef.value.openDialog();
|
||||
});
|
||||
}
|
||||
//受理电话
|
||||
if (key == 'alerdyreceive') {
|
||||
phoneType.value = '1';
|
||||
}
|
||||
nextTick(() => {
|
||||
phoneDialogTitle.value = name;
|
||||
phoneDialogRef.value.openDialog();
|
||||
});
|
||||
}
|
||||
|
||||
const terminalAlarmDialogRef = ref();
|
||||
|
||||
Reference in New Issue
Block a user