import { ref } from 'vue'; import type { XianHiddenDangerSpots } from '@/types/base/XianHiddenDangerSpots'; import type { PaginationType } from '@/types/common/PaginationType'; import { PointType } from '@/types/common/DisasterType'; import { CesiumUtilsSingleton } from '@/utils/cesium/CesiumUtils'; import config from '@/config/config.json'; /** * 暴雨灾害链影响点列表钩子函数 * @returns 搜索条件、表格数据、分页配置及相关方法 */ export const useRainDisasterChain = () => { /** * 搜索条件 */ const conditions = ref({ tableData: '', hiddenPoint: PointType.LANDSLIDE, }); /** * 下拉选项 */ const selectOptions = [ { value: PointType.LANDSLIDE, label: '滑坡' }, { value: PointType.DEBRIS_FLOW, label: '泥石流' }, { value: PointType.FLASH_FLOOD, label: '山洪' }, { value: PointType.WATER_LOGGING, label: '内涝' }, ]; /** * 表格数据 */ const tableDatas = ref([]); /** * 表头配置 */ const tableColumns = [ { title: '名称', key: 'disasterName' }, { title: '位置', key: 'position' }, { title: '规模等级', key: 'scaleGrade' }, { title: '险情等级', key: 'riskGrade' }, ]; /** * 分页配置 */ const paginationConfig = ref({ currentPage: 1, pageSize: 10, total: 10, totalPage: 1, }); /** * 修改搜索条件 * @param value - 新的搜索条件 */ const changeConditions = (value: { tableData: string; hiddenPoint: PointType; }): void => { conditions.value = value; }; /** * 修改页码 * @param value - 新的页码 */ const changeCurrentPage = (value: number) => { paginationConfig.value.currentPage = value; }; /** * 左侧按钮信息 */ const leftButtonInfo = [ { name: '周边分析', callback: () => { console.log('周边分析'); }, }, { name: '关联分析', callback: () => { console.log('关联分析'); }, }, { name: '次生衍生灾害链分析', callback: () => { console.log('次生衍生灾害链分析'); }, }, { name: '历史相似性分析', callback: () => { console.log('历史相似性分析'); }, }, { name: '灾害链模型库测试', callback: () => { console.log('灾害链模型库测试'); }, }, { name: '承灾体信息提取', callback: () => { console.log('承灾体信息提取'); }, }, { name: '暴雨内涝灾害链(50mm)', callback: () => { console.log('暴雨内涝灾害链(50mm)'); }, }, { name: '暴雨滑坡灾害链(80mm)', callback: () => { console.log('暴雨滑坡灾害链(80mm)'); }, }, { name: '暴雨洪涝灾害链(100mm)', callback: () => { console.log('暴雨洪涝灾害链(100mm)'); }, }, { name: '暴雨山洪灾害链(110mm)', callback: () => { console.log('暴雨山洪灾害链(110mm)'); }, }, ]; /** * 右侧按钮信息 */ const rightButtonInfo = [ { name: '暴雨下载', callback: () => { console.log('暴雨下载'); }, }, { name: '图件下载', callback: () => { console.log('图件下载'); }, }, { name: '雷达云图', callback: () => { console.log('雷达云图'); }, }, { name: '信息表格', callback: () => { console.log('信息表格'); }, }, { name: '场景重置', callback: () => { CesiumUtilsSingleton.clearAllResources('custom'); }, executeOnce: true, }, { name: '视角重置', callback: () => { CesiumUtilsSingleton.flyToTarget( config.defaultPosition as [number, number, number] ); }, executeOnce: true, }, ]; // 把所有需要用到的数据/方法 return 出去 return { conditions, selectOptions, tableDatas, tableColumns, paginationConfig, leftButtonInfo, rightButtonInfo, changeConditions, changeCurrentPage, }; };