From 42ee8002b987d18d10197825cb40b8b4dbc04eb3 Mon Sep 17 00:00:00 2001 From: zhangkang <57750083+zhangkang1314@users.noreply.github.com> Date: Fri, 26 May 2023 21:49:17 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E9=80=89=E6=8B=A9=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E5=BC=95=E6=93=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/view-engine/index.ts | 15 ++ src/view-engine/mpickup-view-engine.ts | 243 +++++++++++++++++++++ src/view-engine/pickup-grid-view.engine.ts | 75 +++++++ src/view-engine/pickup-view.engine.ts | 133 +++++++++++ 4 files changed, 466 insertions(+) create mode 100644 src/view-engine/mpickup-view-engine.ts create mode 100644 src/view-engine/pickup-grid-view.engine.ts create mode 100644 src/view-engine/pickup-view.engine.ts diff --git a/src/view-engine/index.ts b/src/view-engine/index.ts index 4c5f0492..150c3ff4 100644 --- a/src/view-engine/index.ts +++ b/src/view-engine/index.ts @@ -6,6 +6,9 @@ import { IndexViewEngine } from './index-view.engine'; import { ListViewEngine } from './list-view.engine'; import { DataViewEngine } from './data-view.engine'; import { OptViewEngine } from './opt-view.engine'; +import { PickupGridViewEngine } from './pickup-grid-view.engine'; +import { PickupViewEngine } from './pickup-view.engine'; +import { MPickupViewEngine } from './mpickup-view-engine'; export * from './grid-view.engine'; export * from './index-view.engine'; @@ -42,5 +45,17 @@ export const IBizViewEngine = { 'VIEW_OptionView', (c: IViewController) => new OptViewEngine(c), ); + ibiz.engine.register( + 'VIEW_PickupGridView', + (c: IViewController) => new PickupGridViewEngine(c), + ); + ibiz.engine.register( + 'VIEW_PickupView', + (c: IViewController) => new PickupViewEngine(c), + ); + ibiz.engine.register( + 'VIEW_MPickupView', + (c: IViewController) => new MPickupViewEngine(c), + ); }, }; diff --git a/src/view-engine/mpickup-view-engine.ts b/src/view-engine/mpickup-view-engine.ts new file mode 100644 index 00000000..3b90f3dd --- /dev/null +++ b/src/view-engine/mpickup-view-engine.ts @@ -0,0 +1,243 @@ +import { + ViewController, + IMPickupViewState, + IMPickupViewEvent, + SysUIActionTag, + IListController, +} from '@ibiz-template/runtime'; +// todo 缺失 IAppDEMPickupView +import { IAppDEPickupView } from '@ibiz/model-core'; +import { PickupViewEngine } from './pickup-view.engine'; + +/** + * 多数据选择视图引擎 + * + * @author zk + * @date 2023-05-25 03:05:17 + * @export + * @class MPickupViewEngine + * @extends {ViewEngineBase} + */ +export class MPickupViewEngine extends PickupViewEngine { + protected declare view: ViewController< + IAppDEPickupView, + IMPickupViewState, + IMPickupViewEvent + >; + + /** + * 简单列表控制器 + * + * @author zk + * @date 2023-05-26 03:05:43 + * @readonly + * @memberof MPickupViewEngine + */ + get simpleList() { + return this.view.getController('simplelist') as IListController; + } + + /** + * 视图created生命周期执行逻辑 + * + * @author zk + * @date 2023-05-26 05:05:36 + * @return {*} {Promise} + * @memberof MPickupViewEngine + */ + async doCreated(): Promise { + await super.doCreated(); + // 设置回显selectedData + if (this.view.params.selectedData) { + this.selectData = JSON.parse(this.view.params.selectedData); + delete this.view.params.selectedData; + } + if (!this.view.slotProps.simpleList) { + this.view.slotProps.simpleList = {}; + } + if (!this.view.slotProps.pickupViewPanel) { + this.view.slotProps.pickupViewPanel = {}; + } + this.view.slotProps.simpleList.mdctrlActiveMode = 2; + this.view.slotProps.simpleList.singleSelect = false; + this.view.slotProps.pickupViewPanel.singleSelect = false; + } + + /** + * 视图mounted生命周期执行逻辑 + * + * @author zk + * @date 2023-05-26 05:05:27 + * @return {*} {Promise} + * @memberof MPickupViewEngine + */ + async doMounted(): Promise { + await super.doMounted(); + // 列表激活取消选中 + this.simpleList.evt.on('onActive', event => { + this.simpleListActive(event.data); + }); + // 默认回显选中数据 + this.simpleList.setData(this.selectData); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async call(key: string, args: any): Promise { + if (key === SysUIActionTag.CANCEL) { + this.cancel(); + return null; + } + if (key === SysUIActionTag.OK) { + this.confirm(); + return null; + } + if (key === SysUIActionTag.ADD_SELECTION) { + this.addSelection(); + return null; + } + if (key === SysUIActionTag.ADD_ALL) { + this.addAll(); + return null; + } + if (key === SysUIActionTag.REMOVE_ALL) { + this.removeAll(); + return null; + } + if (key === SysUIActionTag.REMOVE_SELECTION) { + this.removeSelection(); + return null; + } + return super.call(key, args); + } + + /** + * 选则面板激活数据 + * + * @author zk + * @date 2023-05-26 05:05:13 + * @param {*} data + * @memberof PickupViewEngine + */ + public pickupViewPanelDataActive(data: IData[]) { + this.handlePushSimpleListItems(data); + } + + /** + * 列表激活 + * + * @author zk + * @date 2023-05-26 05:05:47 + * @param {IData[]} data + * @memberof MPickupViewEngine + */ + simpleListActive(data: IData[]) { + const items = this.simpleList.getAllData(); + data.forEach(item => { + const index = items.findIndex(_item => _item.srfkey === item.srfkey); + if (index !== -1) { + items.splice(index, 1); + } + }); + this.simpleList.setData(items); + } + + /** + * 添加选中 + * + * @author zk + * @date 2023-05-25 05:05:10 + * @memberof MPickupViewEngine + */ + public async addSelection() { + const selectItem = await this.pickupViewPanel.getSelectedData(); + this.handlePushSimpleListItems(selectItem); + } + + /** + * 处理添加简单列表数据 + * + * @author zk + * @date 2023-05-26 02:05:41 + * @param {IData[]} data + * @memberof MPickupViewEngine + */ + public handlePushSimpleListItems(data: IData[]) { + const allData = this.simpleList.getAllData(); + const items = [...allData, ...data]; + // 去重items + const uniqueItems = this.handleUniqueItems(items); + this.simpleList.setData(uniqueItems); + } + + /** + * 去重数组 + * + * @author zk + * @date 2023-05-26 03:05:08 + * @param {IData[]} arr + * @return {*} + * @memberof MPickupViewEngine + */ + public handleUniqueItems(arr: IData[]) { + const res = new Map(); + return arr.filter( + (item: IData) => !res.has(item.srfkey) && res.set(item.srfkey, 1), + ); + } + + /** + * 添加所有 + * + * @author zk + * @date 2023-05-25 05:05:12 + * @memberof MPickupViewEngine + */ + public async addAll() { + const allItems = await this.pickupViewPanel.getAllData(); + this.handlePushSimpleListItems(allItems); + } + + /** + * 删除所有 + * + * @author zk + * @date 2023-05-25 05:05:14 + * @memberof MPickupViewEngine + */ + public removeAll() { + this.simpleList.setData([]); + } + + /** + * 删除选中 + * + * @author zk + * @date 2023-05-25 05:05:16 + * @memberof MPickupViewEngine + */ + public removeSelection() { + const selectData = this.simpleList.getData(); + const items = this.simpleList.getAllData(); + selectData.forEach((_item: IData) => { + const index = items.findIndex( + (item: IData) => _item.srfkey === item.srfkey, + ); + if (index !== -1) { + items.splice(index, 1); + } + }); + this.simpleList.setData(items); + } + + /** + * 提交 + * + * @author zk + * @date 2023-05-25 06:05:42 + * @memberof MPickupViewEngine + */ + confirm() { + const items = this.handleSelectData(this.simpleList.getAllData()); + this.view.closeView({ ok: true, data: items }); + } +} diff --git a/src/view-engine/pickup-grid-view.engine.ts b/src/view-engine/pickup-grid-view.engine.ts new file mode 100644 index 00000000..461f6b7e --- /dev/null +++ b/src/view-engine/pickup-grid-view.engine.ts @@ -0,0 +1,75 @@ +import { + ViewController, + IPickupGridViewEvent, + IPickupGridViewState, + IGridController, +} from '@ibiz-template/runtime'; +// import { IAppDEPickupGridView } from '@ibiz/model-core'; +import { IAppDEGridView } from '@ibiz/model-core'; +import { GridViewEngine } from './grid-view.engine'; +// todo 缺失 IAppDEPickupGridView +export class PickupGridViewEngine extends GridViewEngine { + protected declare view: ViewController< + IAppDEGridView, + IPickupGridViewState, + IPickupGridViewEvent + >; + + /** + * 表格控制器 + * + * @author zk + * @date 2023-05-26 05:05:43 + * @readonly + * @memberof PickupGridViewEngine + */ + get grid() { + return this.view.getController('grid') as IGridController; + } + + /** + * 创建完成 + * + * @author zk + * @date 2023-05-26 05:05:35 + * @memberof PickupGridViewEngine + */ + async doCreated() { + super.doCreated(); + const { model } = this.view; + if (!this.view.slotProps.grid) { + this.view.slotProps.grid = {}; + } + this.view.slotProps.grid.singleSelect = this.view.state.singleSelect; + this.view.slotProps.grid.mdctrlActiveMode = model.gridRowActiveMode!; + } + + /** + * 挂载完成 + * + * @author zk + * @date 2023-05-26 10:05:13 + * @memberof PickupGridViewEngine + */ + async doMounted() { + const { model } = this.view; + this.xdataControl.evt.on('onSelectionChange', async event => { + this.view.evt.emit('onSelectionChange', { ...event }); + }); + this.xdataControl.evt.on('onActive', async event => { + this.view.evt.emit('onDataActive', { ...event }); + }); + // 默认加载 + if (model.loadDefault) { + this.load(); + } + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async call(key: string, args: any): Promise { + if (key === 'GetAllData') { + return this.grid.state.items; + } + return super.call(key, args); + } +} diff --git a/src/view-engine/pickup-view.engine.ts b/src/view-engine/pickup-view.engine.ts new file mode 100644 index 00000000..9d7a99e7 --- /dev/null +++ b/src/view-engine/pickup-view.engine.ts @@ -0,0 +1,133 @@ +import { + ViewEngineBase, + ViewController, + IPickupViewPanelController, + SysUIActionTag, + IPickupViewState, + IPickupViewEvent, +} from '@ibiz-template/runtime'; +import { IAppDEPickupView } from '@ibiz/model-core'; + +export class PickupViewEngine extends ViewEngineBase { + /** + * 视图控制器 + * + * @protected + * @type {ViewController} + * @memberof PickupViewEngine + */ + protected declare view: ViewController< + IAppDEPickupView, + IPickupViewState, + IPickupViewEvent + >; + + /** + * 选中数据 + * + * @type {IData[]} + * @memberof PickupViewEngine + */ + selectData: IData[] = []; + + /** + * 选择视图面板 + * + * @readonly + * @memberof PickupViewEngine + */ + get pickupViewPanel() { + return this.view.getController( + 'pickupviewpanel', + ) as IPickupViewPanelController; + } + + /** + * 视图created生命周期执行逻辑 + * + * @return {*} {Promise} + * @memberof PickupViewEngine + */ + async doCreated(): Promise { + await super.doCreated(); + const { childNames } = this.view; + childNames.push('pickupviewpanel'); + } + + /** + * 视图mounted生命周期执行逻辑 + * + * @return {*} {Promise} + * @memberof PickupViewEngine + */ + async doMounted(): Promise { + this.pickupViewPanel.state.singleSelect = true; + this.pickupViewPanel.evt.on('onSelectionChange', event => { + this.selectData = this.handleSelectData(event.data); + }); + this.pickupViewPanel.evt.on('onDataActive', event => { + this.pickupViewPanelDataActive(event.data); + }); + } + + /** + * 选则面板激活数据 + * + * @author zk + * @date 2023-05-26 05:05:13 + * @param {*} data + * @memberof PickupViewEngine + */ + public pickupViewPanelDataActive(data: IData[]) { + this.selectData = this.handleSelectData(data); + this.view.closeView({ ok: true, data: this.selectData }); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async call(key: string, args: any): Promise { + if (key === SysUIActionTag.CANCEL) { + this.cancel(); + return null; + } + if (key === SysUIActionTag.OK) { + this.confirm(); + return null; + } + return super.call(key, args); + } + + /** + * 处理选中数据 + * + * @memberof PickupViewEngine + */ + handleSelectData(data: IData[]): IData[] { + const selectData: IData[] = []; + data.forEach((item: IData) => { + selectData.push({ + srfkey: item.srfkey, + srfmajortext: item.srfmajortext, + data: { ...item }, + }); + }); + return selectData; + } + + /** + * 确认 + * + * @memberof PickupViewEngine + */ + confirm() { + this.view.closeView({ ok: true, data: this.selectData }); + } + + /** + * 取消 + * + * @memberof PickupViewEngine + */ + cancel() { + this.view.closeView({ ok: false, data: [] }); + } +} -- Gitee From 66ed91c76673c3c2d53d6fba70fa39b406cf95d6 Mon Sep 17 00:00:00 2001 From: zhangkang <57750083+zhangkang1314@users.noreply.github.com> Date: Fri, 26 May 2023 21:50:36 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E8=A7=86=E5=9B=BE=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/index.ts | 1 + src/control/pickup-view-panel/index.ts | 21 +++ .../pickup-view-panel.controller.ts | 138 ++++++++++++++++++ .../pickup-view-panel.provider.ts | 12 ++ .../pickup-view-panel/pickup-view-panel.scss | 0 .../pickup-view-panel/pickup-view-panel.tsx | 60 ++++++++ 6 files changed, 232 insertions(+) create mode 100644 src/control/pickup-view-panel/index.ts create mode 100644 src/control/pickup-view-panel/pickup-view-panel.controller.ts create mode 100644 src/control/pickup-view-panel/pickup-view-panel.provider.ts create mode 100644 src/control/pickup-view-panel/pickup-view-panel.scss create mode 100644 src/control/pickup-view-panel/pickup-view-panel.tsx diff --git a/src/control/index.ts b/src/control/index.ts index e790b9ae..a1a3f9f1 100644 --- a/src/control/index.ts +++ b/src/control/index.ts @@ -6,3 +6,4 @@ export * from './toolbar'; export * from './panel'; export * from './caption-bar'; export * from './data-view'; +export * from './pickup-view-panel'; diff --git a/src/control/pickup-view-panel/index.ts b/src/control/pickup-view-panel/index.ts new file mode 100644 index 00000000..9cbda51b --- /dev/null +++ b/src/control/pickup-view-panel/index.ts @@ -0,0 +1,21 @@ +import { registerControlProvider, ControlType } from '@ibiz-template/runtime'; +import { withInstall } from '@ibiz-template/vue3-util'; +import { App } from 'vue'; +import { PickupViewPanelControl } from './pickup-view-panel'; +import { PickupViewPanelProvider } from './pickup-view-panel.provider'; + +export * from './pickup-view-panel.provider'; +export * from './pickup-view-panel.controller'; + +export const IBizPickupViewPanelControl = withInstall( + PickupViewPanelControl, + function (v: App) { + v.component(PickupViewPanelControl.name, PickupViewPanelControl); + registerControlProvider( + ControlType.PICKUP_VIEW_PANEL, + () => new PickupViewPanelProvider(), + ); + }, +); + +export default IBizPickupViewPanelControl; diff --git a/src/control/pickup-view-panel/pickup-view-panel.controller.ts b/src/control/pickup-view-panel/pickup-view-panel.controller.ts new file mode 100644 index 00000000..94ce0782 --- /dev/null +++ b/src/control/pickup-view-panel/pickup-view-panel.controller.ts @@ -0,0 +1,138 @@ +import { + ControlController, + convertNavData, + IPickupGridViewEvent, + IPickupViewPanelController, + IPickupViewPanelEvent, + IPickupViewPanelState, + IViewController, + IPickupGridViewState, +} from '@ibiz-template/runtime'; +import { IAppDEGridView, IAppView, IDEPickupViewPanel } from '@ibiz/model-core'; + +/** + * 选择面板控制器 + * + * @export + * @class PickupViewPanelController + * @extends {ControlController} + * @implements {IPickupViewPanelController} + */ +export class PickupViewPanelController + extends ControlController< + IDEPickupViewPanel, + IPickupViewPanelState, + IPickupViewPanelEvent + > + implements IPickupViewPanelController +{ + /** + * 嵌入视图控制器 + * + * @type {IViewController} + * @memberof PickupViewPanelController + */ + embedView!: IViewController< + IAppDEGridView, + IPickupGridViewState, + IPickupGridViewEvent + >; + + /** + * 嵌入视图模型 + * + * @type {IAppView} + * @memberof PickupViewPanelController + */ + embedViewModel!: IAppView; + + /** + * 生命周期-创建完成 + * + * @protected + * @return {*} {Promise} + * @memberof PickupViewPanelController + */ + protected async doCreated(): Promise { + await super.doCreated(); + this.initNavParam(); + this.embedViewModel = await ibiz.hub.getAppView( + this.model.embeddedAppDEViewId!, + ); + } + + /** + * 初始化导航参数 + * + * @memberof PickupViewPanelController + */ + initNavParam() { + const { navigateContexts, navigateParams } = this.model; + const context = this.context.clone(); + const params = { ...this.params }; + if (navigateContexts) { + Object.assign( + context, + convertNavData(navigateContexts, this.context, this.params), + ); + } + if (navigateParams) { + Object.assign( + params, + convertNavData(navigateParams, this.context, this.params), + ); + } + this.state.context = context; + this.state.params = params; + } + + /** + * 设置嵌入视图 + * + * @param {IViewController} view + * @memberof PickupViewPanelController + */ + setEmbedView( + view: IViewController< + IAppDEGridView, + IPickupGridViewState, + IPickupGridViewEvent + >, + ) { + this.embedView = view; + this.embedView.evt.on('onSelectionChange', event => { + this.evt.emit('onSelectionChange', event); + }); + this.embedView.evt.on('onDataActive', event => { + this.evt.emit('onDataActive', { + data: event.data, + }); + }); + } + + /** + * 获取选中数据 + * + * @author zk + * @date 2023-05-26 03:05:53 + * @return {*} {Promise} + * @memberof PickupViewPanelController + */ + async getSelectedData(): Promise { + const items: IData[] = await this.embedView.call('GetData'); + return items; + } + + /** + * 获取全部数据 + * + * @author zk + * @date 2023-05-26 03:05:49 + * @return {*} {Promise} + * @memberof PickupViewPanelController + */ + async getAllData(): Promise { + const items: IData[] = await this.embedView.call('GetAllData'); + return items; + } +} diff --git a/src/control/pickup-view-panel/pickup-view-panel.provider.ts b/src/control/pickup-view-panel/pickup-view-panel.provider.ts new file mode 100644 index 00000000..40336312 --- /dev/null +++ b/src/control/pickup-view-panel/pickup-view-panel.provider.ts @@ -0,0 +1,12 @@ +import { IControlProvider } from '@ibiz-template/runtime'; + +/** + * 选择视图面板适配器 + * + * @export + * @class PickupViewPanelProvider + * @implements {IControlProvider} + */ +export class PickupViewPanelProvider implements IControlProvider { + component: string = 'IBizPickupViewPanelControl'; +} diff --git a/src/control/pickup-view-panel/pickup-view-panel.scss b/src/control/pickup-view-panel/pickup-view-panel.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/control/pickup-view-panel/pickup-view-panel.tsx b/src/control/pickup-view-panel/pickup-view-panel.tsx new file mode 100644 index 00000000..a6cfa36c --- /dev/null +++ b/src/control/pickup-view-panel/pickup-view-panel.tsx @@ -0,0 +1,60 @@ +import { useControlController, useNamespace } from '@ibiz-template/vue3-util'; +import { defineComponent, h, PropType, resolveComponent } from 'vue'; +import { IAppDEGridView, IDEPickupViewPanel } from '@ibiz/model-core'; +import { PickupViewPanelController } from './pickup-view-panel.controller'; +import { EventBase, IPickupGridViewEvent, IPickupGridViewState, IViewController } from '@ibiz-template/runtime'; +import './pickup-view-panel.scss'; + +export const PickupViewPanelControl = defineComponent({ + name: 'IBizPickupViewPanelControl', + props: { + modelData: { type: Object as PropType, required: true }, + context: { type: Object as PropType, required: true }, + params: { type: Object as PropType, default: () => ({}) }, + }, + setup() { + const c = useControlController((...args) => new PickupViewPanelController(...args)); + const ns = useNamespace(`control-${c.model.controlType!.toLowerCase()}`); + + const onCreated = (event: EventBase) => { + c.setEmbedView(event.view as IViewController< + IAppDEGridView, + IPickupGridViewState, + IPickupGridViewEvent + >); + }; + return { + c, + ns, + onCreated, + }; + }, + render() { + return ( + + { + this.c.state.isCreated && +
+ { + this.$slots.default ? + this.$slots.default({ + context: this.c.state.context, + params: this.c.state.params, + modelData: this.c.embedViewModel, + state: { singleSelect: this.c.state.singleSelect }, + onCreated: this.onCreated, + }) : + h(resolveComponent('IBizViewShell'), { + context: this.c.state.context, + params: this.c.state.params, + modelData: this.c.embedViewModel, + state: { singleSelect: this.c.state.singleSelect }, + onCreated: this.onCreated, + }) + } +
+ } +
+ ); + }, +}); -- Gitee From c20fdd0ca943980cebf4904078ce00f119d5cdd5 Mon Sep 17 00:00:00 2001 From: zhangkang <57750083+zhangkang1314@users.noreply.github.com> Date: Fri, 26 May 2023 21:52:51 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=E5=88=97=E8=A1=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=A2=9E=E5=BC=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/list/list.controller.ts | 24 ++++++++++++++++++++++++ src/control/list/list.tsx | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/control/list/list.controller.ts b/src/control/list/list.controller.ts index cde86e77..e4d895a3 100644 --- a/src/control/list/list.controller.ts +++ b/src/control/list/list.controller.ts @@ -55,4 +55,28 @@ export class ListController await super.afterLoad(allItems); return this.state.items; } + + /** + * 设置列表数据 + * + * @author zk + * @date 2023-05-26 02:05:46 + * @param {IData[]} items + * @memberof ListController + */ + setData(items: IData[]): void { + this.state.items = items; + } + + /** + * 获取列表数据 + * + * @author zk + * @date 2023-05-26 02:05:35 + * @return {*} {IData[]} + * @memberof ListController + */ + getAllData(): IData[] { + return this.state.items; + } } diff --git a/src/control/list/list.tsx b/src/control/list/list.tsx index 7bedcc62..bd887406 100644 --- a/src/control/list/list.tsx +++ b/src/control/list/list.tsx @@ -10,6 +10,24 @@ export const ListControl = defineComponent({ modelData: { type: Object as PropType, required: true }, context: { type: Object as PropType, required: true }, params: { type: Object as PropType, default: () => ({}) }, + /** + * 部件行数据默认激活模式 + * - 0 不激活 + * - 1 单击激活 + * - 2 双击激活(默认值) + * + * @type {(number | 0 | 1 | 2)} + */ + mdctrlActiveMode: { type: Number, default: 2 }, + + /** + * 是否为单选 + * - true 单选 + * - false 多选 + * + * @type {(Boolean)} + */ + singleSelect: { type: Boolean, default: true } }, setup() { const c = useControlController((...args) => new ListController(...args)); -- Gitee From e2cca5564deb9a5505e1fdee59bf03bfc76aa299 Mon Sep 17 00:00:00 2001 From: zhangkang <57750083+zhangkang1314@users.noreply.github.com> Date: Fri, 26 May 2023 21:53:48 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20=E8=A1=A8=E6=A0=BC=E5=A2=9E?= =?UTF-8?q?=E5=BC=BAsingleSelect=20prop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/control/grid/grid/grid.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/control/grid/grid/grid.tsx b/src/control/grid/grid/grid.tsx index c5c9b913..2a53be9c 100644 --- a/src/control/grid/grid/grid.tsx +++ b/src/control/grid/grid/grid.tsx @@ -20,6 +20,8 @@ export const GridControl = defineComponent({ * @type {(number | 0 | 1 | 2)} */ mdctrlActiveMode: { type: Number, default: 2 }, + + singleSelect: { type: Boolean, default: true } }, setup() { const c = useControlController((...args) => new GridController(...args)); -- Gitee From 9d9eb8ee24397e3e263a72fb429f8b74b850c023 Mon Sep 17 00:00:00 2001 From: zhangkang <57750083+zhangkang1314@users.noreply.github.com> Date: Fri, 26 May 2023 21:54:42 +0800 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20=E5=88=97=E8=A1=A8=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E5=BC=95=E6=93=8Estate=20=E5=80=BC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/view-engine/list-view.engine.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/view-engine/list-view.engine.ts b/src/view-engine/list-view.engine.ts index e4b669ea..302ae984 100644 --- a/src/view-engine/list-view.engine.ts +++ b/src/view-engine/list-view.engine.ts @@ -21,8 +21,6 @@ export class ListViewEngine extends MDViewEngine { async doMounted() { super.doMounted(); const { model } = this.view; - this.list.setState({ - mdctrlActiveMode: model.mdctrlActiveMode!, - }); + this.list.state.mdctrlActiveMode = model.mdctrlActiveMode!; } } -- Gitee From 4ae5e40fe15b2039f09aacc94ad53e12116a684b Mon Sep 17 00:00:00 2001 From: zhangkang <57750083+zhangkang1314@users.noreply.github.com> Date: Fri, 26 May 2023 22:01:14 +0800 Subject: [PATCH 6/6] =?UTF-8?q?feat:=20=E9=80=89=E6=8B=A9=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E9=9D=A2=E6=9D=BF=E7=BB=84=E4=BB=B6=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.ts b/src/index.ts index 85225a1c..2d2e941d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,6 +12,7 @@ import { IBizListControl, IBizCaptionBarControl, IBizDataViewControl, + IBizPickupViewPanelControl, } from './control'; import IBizEditor from './editor'; import { IBizView } from './view'; @@ -33,6 +34,7 @@ export default { v.use(IBizAppMenuControl); v.use(IBizGridControl); v.use(IBizListControl); + v.use(IBizPickupViewPanelControl); v.use(IBizToolbarControl); v.use(IBizViewLayoutPanelControl); v.use(IBizFormControl); -- Gitee