351 lines
6.8 KiB
TypeScript
351 lines
6.8 KiB
TypeScript
import { defineStore } from 'pinia';
|
|
import { reactive, ref } from 'vue';
|
|
|
|
/**
|
|
* 全局状态管理
|
|
* @returns 应用状态及相关方法
|
|
*/
|
|
export const useStatusStore = defineStore('status', () => {
|
|
// ============================ 应用级状态 ================================
|
|
|
|
/**
|
|
* 应用加载完成状态
|
|
*/
|
|
const appLoadingCompleted = ref(false);
|
|
|
|
// ============================ UI 组件显示状态 ================================
|
|
|
|
/**
|
|
* UI 组件显示状态集合
|
|
*/
|
|
const uiComponents = reactive({
|
|
/** 灾情链影响点表格显示状态 */
|
|
disasterChainPointShow: {
|
|
show: false,
|
|
loading: true,
|
|
},
|
|
leftButton: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
leftLegend: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
rightButton: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
controlPanel: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
stepBar: {
|
|
show: false,
|
|
loading: true,
|
|
},
|
|
});
|
|
|
|
// ============================ 地图图层显示状态 ================================
|
|
|
|
/**
|
|
* 地图基础图层显示状态
|
|
*/
|
|
const mapLayers = reactive({
|
|
/** 显示行政区划 */
|
|
showAdministrativeDivision: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
/** 风险点显示状态 */
|
|
riskPointShow: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
/** 断裂带显示状态 */
|
|
faultShow: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
});
|
|
|
|
/**
|
|
* POI图层显示状态
|
|
*/
|
|
const poiLayers = reactive({
|
|
/** 显示医院 */
|
|
showHospital: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示危险源 */
|
|
showDangerSource: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示避难所 */
|
|
showRefugeeShelter: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示消防站 */
|
|
showFireStation: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示储备点 */
|
|
showReservePoint: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示学校 */
|
|
showSchool: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示人口网格 */
|
|
showPopulationGrid: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示地铁站 */
|
|
showSubwayStation: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示滑坡隐患点 */
|
|
showLandslideHiddenPoint: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
/** 显示泥石流隐患点 */
|
|
showDebrisFlowHiddenPoint: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
/** 显示内涝隐患点 */
|
|
showWaterLoggingHiddenPoint: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
/** 显示山洪隐患点 */
|
|
showFlashFloodHiddenPoint: {
|
|
show: true,
|
|
loading: true,
|
|
},
|
|
});
|
|
|
|
/**
|
|
* 基础设施图层显示状态
|
|
*/
|
|
const infrastructureLayers = reactive({
|
|
/** 显示管网系统 */
|
|
showNetworkSystem: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示交通道路 */
|
|
showTrafficRoad: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示桥梁 */
|
|
showBridge: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示高速 */
|
|
showHighway: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示国道 */
|
|
showMainRoad: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示水库 */
|
|
showReservoir: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
/** 显示地铁 */
|
|
showSubway: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
});
|
|
|
|
/**
|
|
* 气象图层显示状态
|
|
*/
|
|
const weatherLayers = reactive({
|
|
/** 显示降雨栅格 */
|
|
showRainfallGrid: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
});
|
|
|
|
// ============================ 地图功能显示状态 ================================
|
|
const functionStatus = reactive({
|
|
aroundAnalysis: {
|
|
show: false,
|
|
loading: false,
|
|
},
|
|
});
|
|
|
|
/**
|
|
* 鼠标样式状态
|
|
*/
|
|
const cursorStyle = ref<string>('default');
|
|
|
|
/**
|
|
* 恢复默认值
|
|
*/
|
|
const reset = () => {
|
|
// 应用加载状态重置
|
|
appLoadingCompleted.value = false;
|
|
|
|
resetScene();
|
|
};
|
|
|
|
/**
|
|
* 重置场景
|
|
*/
|
|
const resetScene = () => {
|
|
// UI 组件显示状态重置
|
|
uiComponents.disasterChainPointShow = {
|
|
show: false,
|
|
loading: true,
|
|
};
|
|
uiComponents.leftButton = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
uiComponents.leftLegend = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
uiComponents.rightButton = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
uiComponents.controlPanel = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
|
|
// 地图基础图层显示状态重置
|
|
mapLayers.showAdministrativeDivision = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
mapLayers.riskPointShow = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
|
|
// POI图层显示状态重置
|
|
poiLayers.showHospital = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showDangerSource = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showRefugeeShelter = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showFireStation = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showReservePoint = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showSchool = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showPopulationGrid = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showSubwayStation = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
poiLayers.showLandslideHiddenPoint = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
poiLayers.showDebrisFlowHiddenPoint = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
poiLayers.showWaterLoggingHiddenPoint = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
poiLayers.showFlashFloodHiddenPoint = {
|
|
show: true,
|
|
loading: true,
|
|
};
|
|
|
|
// 基础设施图层显示状态重置
|
|
infrastructureLayers.showNetworkSystem = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
infrastructureLayers.showTrafficRoad = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
infrastructureLayers.showBridge = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
infrastructureLayers.showHighway = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
infrastructureLayers.showMainRoad = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
infrastructureLayers.showReservoir = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
|
|
// 气象图层显示状态重置
|
|
weatherLayers.showRainfallGrid = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
|
|
// 功能显示状态重置
|
|
functionStatus.aroundAnalysis = {
|
|
show: false,
|
|
loading: false,
|
|
};
|
|
};
|
|
|
|
return {
|
|
appLoadingCompleted,
|
|
uiComponents,
|
|
mapLayers,
|
|
poiLayers,
|
|
infrastructureLayers,
|
|
weatherLayers,
|
|
functionStatus,
|
|
cursorStyle,
|
|
reset,
|
|
resetScene,
|
|
};
|
|
});
|