diff --git a/CHANGELOG.md b/CHANGELOG.md index 3631536132d21c2461c9429e30211d2b537aa23a..2de2be6f105f372db5e8a22632a66ba41d2043c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ ## [Unreleased] +### Added + +- 表格列行编辑支持部件逻辑的属性注入 + +### Fixed + +- 修复drbar首次点击分页之后后退没有回显 + ## [0.6.10] - 2024-03-19 ### Added diff --git a/src/control/drbar/drbar.controller.ts b/src/control/drbar/drbar.controller.ts index 34d880536276ae543e91fdb072afda4a5a3043a4..3676578bffbf5ec1f0e5c54f96e05ac7fb17522e 100644 --- a/src/control/drbar/drbar.controller.ts +++ b/src/control/drbar/drbar.controller.ts @@ -340,7 +340,10 @@ export class DRBarController * @param {string} key * @memberof DRBarController */ - handleSelectChange(key: string, isRoutePushed = false): void { + handleSelectChange( + key: string = this.state.defaultItem, + isRoutePushed = false, + ): void { if (this.state.selectedItem === key) { return; } diff --git a/src/control/drbar/drbar.tsx b/src/control/drbar/drbar.tsx index ea93dfa503ebc62b28739e428bb5be99febf6ad7..5f6180b2b4775b0f66dd608df70fa4cf30d31aa7 100644 --- a/src/control/drbar/drbar.tsx +++ b/src/control/drbar/drbar.tsx @@ -4,7 +4,7 @@ import { useControlController, useNamespace, } from '@ibiz-template/vue3-util'; -import { defineComponent, PropType, reactive, ref, VNode, watch } from 'vue'; +import { defineComponent, PropType, reactive, VNode, watch } from 'vue'; import { IDEDRBar } from '@ibiz/model-core'; import { useRoute, useRouter } from 'vue-router'; import { IControlProvider, IDRBarItemsState } from '@ibiz-template/runtime'; @@ -44,8 +44,6 @@ export const DRBarControl = defineComponent({ const route = useRoute(); - const defaultActive = ref(''); - let expViewRoutePath = ''; const opens: string[] = []; @@ -76,21 +74,7 @@ export const DRBarControl = defineComponent({ if (currentRoutePath === expViewRoutePath) { const routePath = route2routePath(route); const { srfnav } = routePath.pathNodes[depth! - 1]; - if ( - srfnav && - c.state.selectedItem && - c.state.selectedItem !== srfnav - ) { - c.handleSelectChange(srfnav); - defaultActive.value = srfnav; - } else if ( - srfnav === undefined && - c.state.defaultItem && - c.state.selectedItem !== c.state.defaultItem - ) { - c.handleSelectChange(c.state.defaultItem); - defaultActive.value = ''; - } + c.handleSelectChange(srfnav); } } } @@ -161,20 +145,19 @@ export const DRBarControl = defineComponent({ ns, handleSelect, renderMenuItems, - defaultActive, opens, }; }, render() { - const { isCreated, drBarItems, defaultItem } = this.c.state; + const { isCreated, drBarItems, selectedItem } = this.c.state; return ( - {isCreated && !!defaultItem && ( + {isCreated && ( diff --git a/src/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.tsx b/src/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.tsx index 95207ae65e2beca698e328447807d15aeea41bde..784d4ca3c8f037a1f47c3f659b2eef8e14917bb2 100644 --- a/src/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.tsx +++ b/src/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.tsx @@ -111,6 +111,7 @@ export const GridFieldEditColumn = defineComponent({ onInfoTextChange: this.onInfoTextChange, title: this.tooltip, ...this.editorProps, + ...this.$attrs, })} ); diff --git a/src/control/grid/grid/grid.tsx b/src/control/grid/grid/grid.tsx index 108ef615e01fae5e2c15b0552473cbd609a1e7e0..37e56bdc7cd9815c27cfc7a9decd98d8c925547a 100644 --- a/src/control/grid/grid/grid.tsx +++ b/src/control/grid/grid/grid.tsx @@ -13,7 +13,11 @@ import { VNodeArrayChildren, } from 'vue'; import { IDEGrid, IDEGridColumn, IDEGridGroupColumn } from '@ibiz/model-core'; -import { GridController, IControlProvider } from '@ibiz-template/runtime'; +import { + GridController, + IControlProvider, + ScriptFactory, +} from '@ibiz-template/runtime'; import { IGridProps, useAppGridBase, @@ -24,6 +28,25 @@ import './grid.scss'; import { useRowEditPopover } from '../row-edit-popover/use-row-edit-popover'; import { usePagination } from '../../../util'; +/** + * 绘制成员的attrs + * @author lxm + * @date 2024-03-19 03:48:00 + * @param {IDEFormDetail} model + * @return {*} {IParams} + */ +function renderAttrs(model: IDEGridColumn, params: IParams): IParams { + const attrs: IParams = {}; + model.controlAttributes?.forEach(item => { + if (item.attrName && item.attrValue) { + attrs[item.attrName!] = ScriptFactory.execSingleLine(item.attrValue!, { + ...params, + }); + } + }); + return attrs; +} + // 绘制除分组列之外的表格列 export function renderColumn( c: GridController, @@ -68,6 +91,10 @@ export function renderColumn( controller: columnC, row: rowState, key: elRow.tempsrfkey + columnName, + ...renderAttrs(model, { + ...c.getEventArgs(), + data: rowState.data, + }), }); } return null;