diff --git a/CHANGELOG.md b/CHANGELOG.md index b36738491c8c95476aa3945b928d3709042fd87c..557678fa38ba9c854f8f65fc7dcd4bcdc8dd97b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ ## [Unreleased] +### Changed + +- 补充地图初始化设置行政等级参数 +- 调整地图弹框默认换行样式 + +### Fixed + +- 修复地图内置导航未默认选中第一条数据,第一条数据为区域时还需传递行政编码与行政等级参数 + ## [0.7.41-alpha.19] - 2025-08-18 ### Added @@ -23,7 +32,7 @@ - 更新门户菜单容器默认显示的边距 -## Fixed +### Fixed - 修复数据关系分页部件流布局模式下嵌套数据关系分页部件流布局时样式异常以及初始导航栏定位异常问题 - 修复面板分页组件在切换分页时,如果分页里面有气泡飘窗,切换时飘窗会定位到界面左上角的样式异常问题 diff --git a/src/common/control-navigation/provider/map-navigation.provider.ts b/src/common/control-navigation/provider/map-navigation.provider.ts index 58319ba1439632cd244568753607dab24f8b242b..456493108451ffc7af6022529b713c54788aeabe 100644 --- a/src/common/control-navigation/provider/map-navigation.provider.ts +++ b/src/common/control-navigation/provider/map-navigation.provider.ts @@ -1,4 +1,6 @@ import { + calcDeCodeNameById, + getAreaLevelNum, IMapData, IMapEvent, INavViewMsg, @@ -42,7 +44,21 @@ export class MapNavigationProvider extends NavgationBaseProvider { .map(key => items.find(item => item._id === key)) .find(item => item !== undefined) || items[0]; if (navData) { - this.controller.setNavData(navData); + // 默认选中区域数据需传行政编码与行政等级 + if (navData._itemStyle.startsWith('REGION')) { + const data: IData = { ...navData }; + if (navData._areaCode) { + data.areaCode = this.controller.state.strAreaCode + ? `${navData._areaCode}` + : Number(navData._areaCode); + data.areaLevel = getAreaLevelNum(navData._areaCode); + } + this.controller.evt.emit('onNavDataChange', { + navData: data, + }); + } else { + this.controller.setNavData(navData); + } } else { this.navStack = []; this.navViewMsg.value = undefined; @@ -54,17 +70,26 @@ export class MapNavigationProvider extends NavgationBaseProvider { const { areaCode, areaLevel } = item; const itemModel = sysMapItems?.find(_item => _item.id === item._mapItemId); if (itemModel) { + const tempContext = this.controller.context.clone(); + const tempParams = { ...this.controller.params }; + // 点数据添加主键 + if (itemModel.itemStyle?.startsWith('POINT')) { + const deName = calcDeCodeNameById(itemModel.appDataEntityId!); + tempContext[deName] = item._deData.srfkey; + } + // 区域导航视图添加行政编码与行政等级 + if (itemModel.itemStyle?.startsWith('REGION')) { + tempParams.srfareacode = areaCode; + tempParams.srfarealevel = areaLevel; + tempParams.srfarealevelnum = getAreaLevelNum(areaLevel); + } const { context, params } = this.prepareParams( itemModel, { ...item._deData, areaCode, areaLevel }, - this.controller.context, - this.controller.params, + tempContext, + tempParams, ); - // 区域导航视图添加行政编码与行政等级 - if (itemModel.itemStyle?.startsWith('REGION')) { - params.srfareacode = areaCode; - params.srfarealevel = areaLevel; - } + Object.assign(params, tempParams); return { params, context, diff --git a/src/common/map-chart-user/map-chart-user.scss b/src/common/map-chart-user/map-chart-user.scss index f99339e0b746db22d9f8bb3961e94f7386cfafe7..c4fa5a9a3b86ec1b28dee50b75c45da40215a94f 100644 --- a/src/common/map-chart-user/map-chart-user.scss +++ b/src/common/map-chart-user/map-chart-user.scss @@ -30,5 +30,6 @@ @include e(popper) { padding: getCssVar(spacing, tight); + white-space: pre; } } \ No newline at end of file diff --git a/src/common/map-chart-user/map-chart-user.tsx b/src/common/map-chart-user/map-chart-user.tsx index 1296c1e408793507adf51931fc1c81131456215d..1d40010eecef90bd8fe0e638c50d2fed0580c19d 100644 --- a/src/common/map-chart-user/map-chart-user.tsx +++ b/src/common/map-chart-user/map-chart-user.tsx @@ -9,7 +9,11 @@ import { } from 'vue'; import { isNil, mergeDeepLeft, mergeDeepWithKey } from 'ramda'; import { useNamespace } from '@ibiz-template/vue3-util'; -import { IMapData, MapController } from '@ibiz-template/runtime'; +import { + getAreaLevelByCode, + IMapData, + MapController, +} from '@ibiz-template/runtime'; import { listenJSEvent, NOOP } from '@ibiz-template/core'; import { toNumber } from 'lodash-es'; import { @@ -115,6 +119,7 @@ export const IBizMapChartUser = defineComponent({ const name = options.value.defaultAreaCode; const areaCode = c.state.strAreaCode ? `${name}` : Number(name); c.state.areaCode = areaCode; + c.state.areaLevel = getAreaLevelByCode(areaCode.toString()); changeMap(name, areaCode, true); c.evt.on('onDrillDown', async (args: IData) => { diff --git a/src/control/map/map.tsx b/src/control/map/map.tsx index 86359da45bb68205f1d8afbd3b72a89635605ccf..3a13070a6a6dae0b04615753addc6c578a0b7e8f 100644 --- a/src/control/map/map.tsx +++ b/src/control/map/map.tsx @@ -69,35 +69,40 @@ const MapControl = defineComponent({ }, render() { const { state } = this.c; - if (!state.isCreated || !state.isLoaded) return; + if (!state.isCreated) return; + let content; + if (state.isLoaded) { + content = + this.mapStyle === 'USER' ? ( + + ) : ( + { + this.c.onMapChange(e.areaCode); + }} + onPointClick={(e: IMapData) => { + this.c.onPointClick(e); + }} + onAreaClick={(e: IMapData) => { + this.c.onAreaClick(e, '', ''); + }} + > + ); + } return ( - {this.mapStyle === 'USER' ? ( - - ) : ( - { - this.c.onMapChange(e.areaCode); - }} - onPointClick={(e: IMapData) => { - this.c.onPointClick(e); - }} - onAreaClick={(e: IMapData) => { - this.c.onAreaClick(e, '', ''); - }} - > - )} + {content} {this.c.state.enableNavView && this.c.state.showNavIcon ? ( !this.c.state.showNavView ? (