diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 5eae74ac6dbb832b1578bebc04056b0f10c9c7b8..c21f21c3b61e314c498dbb57bde42b60e3e599d3 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -7,6 +7,10 @@ ## [Unreleased] +### Added + +- 地图新增行政等级序号(srfarealevelnum)参数,省级行政对应为1 + ### Fixed - 修复树表格错误提示信息错误 diff --git a/packages/runtime/src/controller/control/map/map.controller.ts b/packages/runtime/src/controller/control/map/map.controller.ts index 9547cf63e0f8d1f8146debe2def57ba1c54f4922..4b918bd1e0925e6d0cc64279f2f9226997225548 100644 --- a/packages/runtime/src/controller/control/map/map.controller.ts +++ b/packages/runtime/src/controller/control/map/map.controller.ts @@ -9,6 +9,7 @@ import { MDCtrlLoadParams, } from '../../../interface'; import { MDControlController } from '../../common'; +import { getAreaLevelByCode, getAreaLevelNum } from '../../../utils'; export class MapController extends MDControlController @@ -64,13 +65,15 @@ export class MapController try { // *初始加载需要重置分页 const isInitialLoad = args.isInitialLoad === true; - - // *查询参数处理 const { context } = this.handlerAbilityParams(args); const params = await this.getFetchParams(args?.viewParam); // 将当前区域编码与行政等级添加到上下文中,可在地图项中配置自定义条件转换为视图参数 context.srfareacode = this.state.areaCode; context.srfarealevel = this.state.areaLevel; + // 地图为100000时无行政等级 + if (context.srfarealevel) { + context.srfarealevelnum = getAreaLevelNum(this.state.areaLevel); + } const res = await this.service.fetchAll(context, params); @@ -160,6 +163,7 @@ export class MapController : Number(this.state.defaultAreaCode); this.state.areaCode = this.state.defaultAreaCode; + this.state.areaLevel = getAreaLevelByCode(this.state.areaCode.toString()); } /** diff --git a/packages/runtime/src/utils/change-tracker /change-history-item.ts b/packages/runtime/src/utils/change-tracker/change-history-item.ts similarity index 100% rename from packages/runtime/src/utils/change-tracker /change-history-item.ts rename to packages/runtime/src/utils/change-tracker/change-history-item.ts diff --git a/packages/runtime/src/utils/change-tracker /change-tracker.ts b/packages/runtime/src/utils/change-tracker/change-tracker.ts similarity index 100% rename from packages/runtime/src/utils/change-tracker /change-tracker.ts rename to packages/runtime/src/utils/change-tracker/change-tracker.ts diff --git a/packages/runtime/src/utils/index.ts b/packages/runtime/src/utils/index.ts index 62d7ef9f3409952e2a850eeb20165eb4ac063de5..b2cb335eaef96f2680cb1810c5c69337dc2c4a07 100644 --- a/packages/runtime/src/utils/index.ts +++ b/packages/runtime/src/utils/index.ts @@ -34,5 +34,6 @@ export { VoiceUtil } from './voice-util/voice-util'; export { EncyptionUtil } from './encryption-uitl/encryption-uitl'; export * from './dr-ctrl-util'; export * from './date-util'; -export { ChangeTracker } from './change-tracker /change-tracker'; +export { ChangeTracker } from './change-tracker/change-tracker'; export { ViewShellHooks } from './view-shell-hooks/view-shell-hooks'; +export * from './map-util/map-util'; diff --git a/packages/runtime/src/utils/map-util/map-util.ts b/packages/runtime/src/utils/map-util/map-util.ts new file mode 100644 index 0000000000000000000000000000000000000000..2bd4c5c4bca4ad614bd9df5eecea54c00097547b --- /dev/null +++ b/packages/runtime/src/utils/map-util/map-util.ts @@ -0,0 +1,41 @@ +/** + * @description 根据行政等级获取行政等级对应的数字,province为1 + * @export + * @param {string} areaLevel + * @returns {*} {number} + */ +export function getAreaLevelNum(areaLevel: string): number { + return ['province', 'city', 'district', 'township'].indexOf(areaLevel) + 1; +} + +/** + * @description 根据行政编码计算行政等级,仅支持6位行政编码,国家级返回空串 + * @export + * @param {string} code + * @returns {*} {number} + */ +export const getAreaLevelByCode = (code: string): string => { + // 验证输入 + if (!code || code.length !== 6) { + return ''; + } + // 提取前6位作为基础代码 + const baseCode = code.substring(0, 6); + // 国家级判断: 后5位为0 + if (baseCode.substring(1) === '00000') { + return ''; + } + // 省级判断: 后4位为0 + if (baseCode.substring(2) === '0000') { + return 'province'; + } + // 地级判断: 后2位为0 + if (baseCode.substring(4) === '00') { + return 'city'; + } + // 县级判断: 6位完整代码 + if (code.length === 6) { + return 'district'; + } + return ''; +};