diff --git a/CHANGELOG.md b/CHANGELOG.md index 859dbc7749de29ea456888183a2a12c6bf9b14bb..9ed80f4cf2651af013d9c7ad944d0b3ff8f410d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,11 @@ - 新增应用菜单样式: 扩展视图1,二级菜单以后的菜单均以分组菜单呈现 - 新增表单全局参数validateMode与表单部件参数validatemode,为notification时表单项错误信息以通知方式显示 +### Changed + +- 数据关系栏、数据关系分页等部件,在初始化计数器时识别部件状态属性isCounterDisabled(是否禁用计数器) +- 将表单分页计数器逻辑统一迁移至控制器处理 + ## [0.7.41-alpha.23] - 2025-08-29 ### Changed diff --git a/src/control/drbar/drbar.controller.ts b/src/control/drbar/drbar.controller.ts index 140b69a1fe5e0787e75d426ea39a46f1db2512f8..627368979e358a9027ffcf72e3a1606c272203b9 100644 --- a/src/control/drbar/drbar.controller.ts +++ b/src/control/drbar/drbar.controller.ts @@ -604,6 +604,7 @@ export class DRBarController * @return {*} {Promise} */ protected async initCounter(): Promise { + if (this.state.isCounterDisabled) return; const { appCounterRefs } = this.model; const appCounterRef = appCounterRefs?.[0]; if (appCounterRef) { diff --git a/src/control/drtab/drtab.controller.ts b/src/control/drtab/drtab.controller.ts index 741ab99d0fefc3e095434165b0633ab030d2988f..9fa93adaf9656aa08e32c09e85f89734201b9593 100644 --- a/src/control/drtab/drtab.controller.ts +++ b/src/control/drtab/drtab.controller.ts @@ -585,6 +585,7 @@ export class DRTabController * @return {*} {Promise} */ protected async initCounter(): Promise { + if (this.state.isCounterDisabled) return; // todo 接口更新后换 const { appCounterRefs } = this.model as IData; const appCounterRef = appCounterRefs?.[0]; diff --git a/src/control/form/form-detail/form-tab-panel/form-tab-panel.tsx b/src/control/form/form-detail/form-tab-panel/form-tab-panel.tsx index 7026b5e9def3857f1fc8249b14dd8eb8a47c97c8..c27ec1dfa29e6ea333da72bb647a28e620356f2b 100644 --- a/src/control/form/form-detail/form-tab-panel/form-tab-panel.tsx +++ b/src/control/form/form-detail/form-tab-panel/form-tab-panel.tsx @@ -1,19 +1,10 @@ -import { - defineComponent, - onMounted, - onUnmounted, - PropType, - reactive, - ref, - VNode, -} from 'vue'; +import { defineComponent, PropType, VNode } from 'vue'; import { useController, useNamespace } from '@ibiz-template/vue3-util'; import './form-tab-panel.scss'; import { IDEFormTabPanel } from '@ibiz/model-core'; import { FormTabPanelController, FormTabPageController, - AppCounter, } from '@ibiz-template/runtime'; export const FormTabPanel = defineComponent({ @@ -28,19 +19,10 @@ export const FormTabPanel = defineComponent({ required: true, }, }, - setup(props, { slots }) { + setup(props) { const ns = useNamespace('form-tab-panel'); useController(props.controller); - // 计数器 - let counter: AppCounter | null = null; - - // 计数器数据 - const counterData = reactive({}); - - // 计数器ID - const counterRefId = ref(''); - const onTabClick = (tabIns: IData, event: MouseEvent) => { props.controller.onTabChange(tabIns.props.name); @@ -53,43 +35,9 @@ export const FormTabPanel = defineComponent({ } }; - const fn = (data: IData) => { - counterData.value = data; - }; - - onMounted(() => { - // 计数器相关 - const defaultSlots: VNode[] = slots.default?.() || []; - for (let i = 0; i < defaultSlots.length; i++) { - const slot: VNode = defaultSlots[i]; - const pagePropsC = slot.props?.controller as - | FormTabPageController - | undefined; - if ( - pagePropsC && - pagePropsC.model && - pagePropsC.model.appCounterRefId - ) { - counterRefId.value = pagePropsC.model.appCounterRefId; - break; - } - } - if (counterRefId.value) { - counter = props.controller.getCounter(counterRefId.value); - if (counter) { - counter.onChange(fn); - } - } - }); - - onUnmounted(() => { - counter?.offChange(fn); - }); - return { ns, onTabClick, - counterData, }; }, render() { @@ -136,7 +84,7 @@ export const FormTabPanel = defineComponent({ default: (): VNode => slot, label: (): JSX.Element => { const value = c.model.counterId - ? this.counterData.value[c.model.counterId] + ? this.controller.state.counterData[c.model.counterId] : undefined; return c.model.counterId ? (