diff --git a/packages/view-design/src/components/design-collapse-control/design-collapse-control.tsx b/packages/view-design/src/components/design-collapse-control/design-collapse-control.tsx index d4c3c4de4789f32c053aac2f792a9f2ca386e6ba..f52b903df2e5fedb47a1cf850f1ecde11f0def0a 100644 --- a/packages/view-design/src/components/design-collapse-control/design-collapse-control.tsx +++ b/packages/view-design/src/components/design-collapse-control/design-collapse-control.tsx @@ -228,6 +228,7 @@ export default defineComponent({ { this.handleActionClick(event, action); }} diff --git a/packages/view-design/src/components/design-collapse-list/design-collapse-list.tsx b/packages/view-design/src/components/design-collapse-list/design-collapse-list.tsx index 03a74aac26265f76f1da1f4ea79f9b3edfbf7019..0161a80d69f1217153bd50de18ec9a7a34e25495 100644 --- a/packages/view-design/src/components/design-collapse-list/design-collapse-list.tsx +++ b/packages/view-design/src/components/design-collapse-list/design-collapse-list.tsx @@ -79,6 +79,7 @@ export default defineComponent({ { this.handleActionClick(event, action); }} diff --git a/packages/view-design/src/components/design-structure-tree/design-structure-tree.scss b/packages/view-design/src/components/design-structure-tree/design-structure-tree.scss index 35593cd3fff840ff0bb87f8d3f4e858a0059e4c8..a3ecf6c635902178268ed9540b5b599dcaa777e0 100644 --- a/packages/view-design/src/components/design-structure-tree/design-structure-tree.scss +++ b/packages/view-design/src/components/design-structure-tree/design-structure-tree.scss @@ -40,6 +40,10 @@ .el-tooltip__trigger:not(:first-child) { margin-left: 20px; } + + @include e(text) { + cursor: pointer; + } } @include b(design-structure-tree-header-content) { diff --git a/packages/view-design/src/components/design-structure-tree/design-structure-tree.tsx b/packages/view-design/src/components/design-structure-tree/design-structure-tree.tsx index 28a434c64e9115376acb659a37f27f686e02f71f..e6356d933199d4fb54cbfd76790758a0dcf09433 100644 --- a/packages/view-design/src/components/design-structure-tree/design-structure-tree.tsx +++ b/packages/view-design/src/components/design-structure-tree/design-structure-tree.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-nested-ternary */ import { PropType, computed, defineComponent, nextTick, ref, watch } from 'vue'; import { useNamespace } from '@ibiz-template/vue3-util'; import { recursiveIterate } from '@ibiz-template/core'; @@ -21,8 +22,12 @@ export default defineComponent({ activeNode: { type: String, }, + isShowActions: { + type: Boolean, + default: true, + }, }, - emits: ['nodeSelect', 'nodeDrop', 'itemClick'], + emits: ['nodeSelect', 'nodeDrop', 'itemClick', 'titleClick'], setup(props, { emit }) { const ns = useNamespace('design-structure-tree'); @@ -91,6 +96,9 @@ export default defineComponent({ ['AUTH_VERIFICATIONCODE', 'note-verify'], ['AUTH_LOGINMSG', 'login-info-tooltip'], ['AUTH_SSO', 'other-login'], + ['CONTROL', 'custom-control'], + ['PANELPART', 'panel-panel'], + ['BUTTONLIST', 'action-button'], ]); // 获取树节点图片 @@ -257,6 +265,11 @@ export default defineComponent({ emit('itemClick', tag); }; + // 处理标题点击 + const handleTitleClick = () => { + emit('titleClick'); + }; + // 节点 const nodes = ref([]); @@ -361,6 +374,7 @@ export default defineComponent({ handleDrop, handNodeSelect, handleItemClick, + handleTitleClick, }; }, render() { @@ -381,56 +395,18 @@ export default defineComponent({
-
布局结构
- {this.isDefaultLayout ? ( - - this.handleItemClick('switchpanel')} +
this.handleTitleClick()} + > + 布局结构 +
+
+ {!this.isShowActions ? null : this.isDefaultLayout ? ( + - - - - - - - - - - - - - ) : ( -
- @@ -457,8 +433,8 @@ export default defineComponent({ transform='translate(44.000000, 197.000000)' > @@ -478,56 +454,113 @@ export default defineComponent({ - - this.handleItemClick('reset')} + ) : ( + [ + - this.handleItemClick('switchpanel')} > - - + + + + - - - -
- )} + + , + + this.handleItemClick('reset')} + > + + + + + + + + + + + + , + ] + )} +
{ + const c = new AppViewDesignMaterialAreaController(panelItem, panel, parent); + await c.init(); + return c; + } +} diff --git a/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.scss b/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.scss new file mode 100644 index 0000000000000000000000000000000000000000..71a2560a5d1360f3d835cff59fec884ea1a39bbf --- /dev/null +++ b/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.scss @@ -0,0 +1,5 @@ +@include b(app-view-design-material-area) { + width: 100%; + height: 100%; + border: 1px solid getCssVar(color, border); +} diff --git a/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.state.ts b/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.state.ts new file mode 100644 index 0000000000000000000000000000000000000000..c809c8e5f1dd047bd13a3df2f5f08193245643c1 --- /dev/null +++ b/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.state.ts @@ -0,0 +1,3 @@ +import { PanelDesignMaterialAreaState } from '../../panel'; + +export class AppViewDesignMaterialAreaState extends PanelDesignMaterialAreaState {} diff --git a/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.tsx b/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.tsx new file mode 100644 index 0000000000000000000000000000000000000000..8e39b1ebc0d2f11fc16359651be6f45bc2c5aaaf --- /dev/null +++ b/packages/view-design/src/panel-items/app-view-design-material-area/app-view-design-material-area.tsx @@ -0,0 +1,72 @@ +import { PropType, defineComponent } from 'vue'; +import { useNamespace } from '@ibiz-template/vue3-util'; +import { IPanelItem } from '@ibiz/model-core'; +import { AppViewDesignMaterialAreaController } from './app-view-design-material-area.controller'; +import './app-view-design-material-area.scss'; + +export default defineComponent({ + name: 'IBizAppViewDesignMaterialArea', + props: { + modelData: { + type: Object as PropType, + required: true, + }, + controller: { + type: AppViewDesignMaterialAreaController, + required: true, + }, + }, + setup() { + const ns = useNamespace('app-view-design-material-area'); + + return { + ns, + }; + }, + render() { + const c = this.controller; + if (c.panelDesignMaterialPage?.state.activePage !== 'controls') { + return ( +
+ { + c.handleItemSelect(data.data); + }} + onNodeDrop={( + draggingNode: IData, + dropNode: IData, + dropType: string, + ) => { + c.onNodeDrop(draggingNode, dropNode, dropType); + }} + onItemClick={(tag: string) => { + c.handStructureTreeClick(tag); + }} + onTitleClick={() => { + c.view.call('onActiveRoot'); + }} + isShowActions={ + c.panelDesignMaterialPage?.state.activePage !== 'panelviewdesign' + } + > +
+ ); + } + return ( +
+ +
+ ); + }, +}); diff --git a/packages/view-design/src/panel-items/app-view-design-material-area/index.ts b/packages/view-design/src/panel-items/app-view-design-material-area/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..2029653758f5d11b2526c060cd0fe4df4d63d8fe --- /dev/null +++ b/packages/view-design/src/panel-items/app-view-design-material-area/index.ts @@ -0,0 +1,15 @@ +import { App } from 'vue'; +import { registerPanelItemProvider } from '@ibiz-template/runtime'; +import AppViewDesignMaterialArea from './app-view-design-material-area'; +import { AppViewDesignMaterialAreaProvider } from './app-view-design-material-area.provider'; + +export default { + install(app: App): void { + // 注册组件 + app.component('IBizAppViewDesignMaterialArea', AppViewDesignMaterialArea); + registerPanelItemProvider( + 'RAWITEM_APP_VIEW_DESIGN_MATERIAL_AREA', + () => new AppViewDesignMaterialAreaProvider(), + ); + }, +}; diff --git a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.controller.ts b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.controller.ts similarity index 97% rename from packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.controller.ts rename to packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.controller.ts index 8c7678b8772097dc3f9ba52747445a4162166bea..9dc646107ea8d2d4f4a28582eba804a0db01f99d 100644 --- a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.controller.ts +++ b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.controller.ts @@ -12,14 +12,14 @@ import { import { IPortalMessage, RuntimeError } from '@ibiz-template/core'; import { isNilOrEmpty } from 'qx-util'; import { PanelDesignMaterialAreaController } from '../../panel'; -import { ViewDesignMaterialAreaState } from './view-design-material-area.state'; +import { DEViewDesignMaterialAreaState } from './de-view-design-material-area.state'; import { ProviderRegister } from '../../providers'; -export class ViewDesignMaterialAreaController extends PanelDesignMaterialAreaController { - declare state: ViewDesignMaterialAreaState; +export class DEViewDesignMaterialAreaController extends PanelDesignMaterialAreaController { + declare state: DEViewDesignMaterialAreaState; - protected createState(): ViewDesignMaterialAreaState { - return new ViewDesignMaterialAreaState(this.parent?.state); + protected createState(): DEViewDesignMaterialAreaState { + return new DEViewDesignMaterialAreaState(this.parent?.state); } /** diff --git a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.provider.ts b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.provider.ts similarity index 47% rename from packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.provider.ts rename to packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.provider.ts index 5d92ddd50bd7c242717133acbf537901781659a9..46bf48a785caf2bb15aae6cbd73ff67551447bad 100644 --- a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.provider.ts +++ b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.provider.ts @@ -4,17 +4,17 @@ import { IPanelController, } from '@ibiz-template/runtime'; import { IPanelItem } from '@ibiz/model-core'; -import { ViewDesignMaterialAreaController } from './view-design-material-area.controller'; +import { DEViewDesignMaterialAreaController } from './de-view-design-material-area.controller'; -export class ViewDesignMaterialAreaProvider implements IPanelItemProvider { - component = 'IBizViewDesignMaterialArea'; +export class DEViewDesignMaterialAreaProvider implements IPanelItemProvider { + component = 'IBizDEViewDesignMaterialArea'; async createController( panelItem: IPanelItem, panel: IPanelController, parent?: IPanelItemController, - ): Promise { - const c = new ViewDesignMaterialAreaController(panelItem, panel, parent); + ): Promise { + const c = new DEViewDesignMaterialAreaController(panelItem, panel, parent); await c.init(); return c; } diff --git a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.scss b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.scss similarity index 58% rename from packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.scss rename to packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.scss index befc2f58a47ccd8e63600c255da38a34fc00c738..42bbe906d8d212d1270ebf2e11278a81ef9b63a1 100644 --- a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.scss +++ b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.scss @@ -1,10 +1,10 @@ -@include b(view-design-material-area) { +@include b(de-view-design-material-area) { width: 100%; height: 100%; border: 1px solid getCssVar(color, border); } -@include b(view-design-material-area-caption) { +@include b(de-view-design-material-area-caption) { flex: 0 0 auto; padding: 0 10px; font-size: 18px; @@ -12,13 +12,13 @@ cursor: pointer; } -@include b(view-design-material-area-container) { +@include b(de-view-design-material-area-container) { display: flex; flex-direction: column; height: 100%; } -@include b(view-design-material-area-content) { +@include b(de-view-design-material-area-content) { flex: 1 1 0; overflow: auto; } diff --git a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.state.ts b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.state.ts similarity index 93% rename from packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.state.ts rename to packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.state.ts index a06a78bc27d3b23c5ae49d5e13d84f6ebae677f5..f497dcb882a2bf062dee7f486c00e4fa3ac256ba 100644 --- a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.state.ts +++ b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.state.ts @@ -1,7 +1,7 @@ import { IDEToolbarItem } from '@ibiz/model-core'; import { PanelDesignMaterialAreaState } from '../../panel'; -export class ViewDesignMaterialAreaState extends PanelDesignMaterialAreaState { +export class DEViewDesignMaterialAreaState extends PanelDesignMaterialAreaState { /** * 视图默认控件 * diff --git a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.tsx b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.tsx similarity index 93% rename from packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.tsx rename to packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.tsx index 70c2a97a02abc6d2532f555ff93c7baaef6eae09..f86fe2bb9bebfd9dbd2107994eb76163250d420f 100644 --- a/packages/view-design/src/panel-items/view-design-material-area/view-design-material-area.tsx +++ b/packages/view-design/src/panel-items/de-view-design-material-area/de-view-design-material-area.tsx @@ -1,23 +1,23 @@ import { PropType, defineComponent, ref } from 'vue'; import { useNamespace } from '@ibiz-template/vue3-util'; import { IDEToolbarItem, IPanelItem } from '@ibiz/model-core'; -import { ViewDesignMaterialAreaController } from './view-design-material-area.controller'; -import './view-design-material-area.scss'; +import { DEViewDesignMaterialAreaController } from './de-view-design-material-area.controller'; +import './de-view-design-material-area.scss'; export default defineComponent({ - name: 'IBizViewDesignMaterialArea', + name: 'IBizDEViewDesignMaterialArea', props: { modelData: { type: Object as PropType, required: true, }, controller: { - type: ViewDesignMaterialAreaController, + type: DEViewDesignMaterialAreaController, required: true, }, }, setup() { - const ns = useNamespace('view-design-material-area'); + const ns = useNamespace('de-view-design-material-area'); // 分割值 const splitValue = ref(0.5); @@ -58,6 +58,9 @@ export default defineComponent({ onItemClick={(tag: string) => { c.handStructureTreeClick(tag); }} + onTitleClick={() => { + c.view.call('onActiveRoot'); + }} > ); }, diff --git a/packages/view-design/src/panel-items/view-design-material-area/index.ts b/packages/view-design/src/panel-items/de-view-design-material-area/index.ts similarity index 46% rename from packages/view-design/src/panel-items/view-design-material-area/index.ts rename to packages/view-design/src/panel-items/de-view-design-material-area/index.ts index cd4ee08c7d795d69eaa99974ca173323f6bd6f2b..2d44ecb17e7218f4bc4fb599bdb7cb431a8b4202 100644 --- a/packages/view-design/src/panel-items/view-design-material-area/index.ts +++ b/packages/view-design/src/panel-items/de-view-design-material-area/index.ts @@ -1,15 +1,15 @@ import { App } from 'vue'; import { registerPanelItemProvider } from '@ibiz-template/runtime'; -import ViewDesignMaterialArea from './view-design-material-area'; -import { ViewDesignMaterialAreaProvider } from './view-design-material-area.provider'; +import DEViewDesignMaterialArea from './de-view-design-material-area'; +import { DEViewDesignMaterialAreaProvider } from './de-view-design-material-area.provider'; export default { install(app: App): void { // 注册组件 - app.component('IBizViewDesignMaterialArea', ViewDesignMaterialArea); + app.component('IBizDEViewDesignMaterialArea', DEViewDesignMaterialArea); registerPanelItemProvider( 'RAWITEM_VIEW_DESIGN_MATERIAL_AREA', - () => new ViewDesignMaterialAreaProvider(), + () => new DEViewDesignMaterialAreaProvider(), ); }, }; diff --git a/packages/view-design/src/panel-items/index.ts b/packages/view-design/src/panel-items/index.ts index 4d4b068e04c5bb032ccc824db16c86544184d0a8..389e081066ea635a406de19e63e3c44ef916cee2 100644 --- a/packages/view-design/src/panel-items/index.ts +++ b/packages/view-design/src/panel-items/index.ts @@ -1,5 +1,6 @@ import { App } from 'vue'; -import ViewDesignMaterialTree from './view-design-material-area'; +import ViewDesignMaterialTree from './de-view-design-material-area'; +import AppViewDesignMaterialTree from './app-view-design-material-area'; import ViewDesignMaterialTab from './panel-design-material-page'; import PanelDesignContent from './panel-design-content'; import PanelDesignViewportSetting from './panel-design-viewport-setting'; @@ -10,5 +11,6 @@ export default { app.use(ViewDesignMaterialTab); app.use(PanelDesignContent); app.use(PanelDesignViewportSetting); + app.use(AppViewDesignMaterialTree); }, }; diff --git a/packages/view-design/src/panel-items/panel-design-material-page/panel-design-material-page.controller.ts b/packages/view-design/src/panel-items/panel-design-material-page/panel-design-material-page.controller.ts index a3b3de83972ef1c7830b09a07ec858e649162130..c3fbfd972d690123b36baae698c878d424c24743 100644 --- a/packages/view-design/src/panel-items/panel-design-material-page/panel-design-material-page.controller.ts +++ b/packages/view-design/src/panel-items/panel-design-material-page/panel-design-material-page.controller.ts @@ -9,7 +9,7 @@ import { IDEFormTabPanel, } from '@ibiz/model-core'; import { PanelDesignMaterialPageState } from './panel-design-material-page.state'; -import { PanelDesignBaseController } from '../../views/panel-design-base'; +import { PanelDesignBaseController } from '../../panel/views'; export class PanelDesignMaterialPageController extends PanelItemController { declare state: PanelDesignMaterialPageState; diff --git a/packages/view-design/src/panel-items/panel-design-viewport-setting/panel-design-viewport-setting.controller.ts b/packages/view-design/src/panel-items/panel-design-viewport-setting/panel-design-viewport-setting.controller.ts index 6e2e95ee758cdea66a83f8252d457143c5239f03..2f2af5d4b85466582afcc5d82ba99ded1b4bdfb3 100644 --- a/packages/view-design/src/panel-items/panel-design-viewport-setting/panel-design-viewport-setting.controller.ts +++ b/packages/view-design/src/panel-items/panel-design-viewport-setting/panel-design-viewport-setting.controller.ts @@ -1,7 +1,7 @@ import { PanelItemController } from '@ibiz-template/runtime'; import { PanelDesignViewportSettingState } from './panel-design-viewport-setting.state'; -import { PanelDesignBaseController } from '../../views/panel-design-base'; import { MOB_STATUS, WEB_STATUS, mobCandidate, pcCandidate } from '../../utils'; +import { PanelDesignBaseController } from '../../panel'; export class PanelDesignViewportSettingController extends PanelItemController { declare state: PanelDesignViewportSettingState; diff --git a/packages/view-design/src/providers/item/panel-item-provider-impl/panel-item-provider-impl.ts b/packages/view-design/src/providers/item/panel-item-provider-impl/panel-item-provider-impl.ts index cc13c59d5563394382d92e291fbc70ba0aa7cbd9..d870ce3f2b1e4dc71dbc884793073dbd6b1f8e82 100644 --- a/packages/view-design/src/providers/item/panel-item-provider-impl/panel-item-provider-impl.ts +++ b/packages/view-design/src/providers/item/panel-item-provider-impl/panel-item-provider-impl.ts @@ -358,7 +358,11 @@ export class PanelItemProviderImpl implements PanelItemProvider { newIndex: number, ): Promise | null> { const data = item.data; - if (!to || to.type === 'PSDEVIEWBASE') { + if ( + !to || + to.type === + this.panelDesignMetaData.panel?.appEntity.codeName?.toUpperCase() + ) { data.ppssysviewpanelitemid = null; data.ppssysviewpanelitemname = null; } else if ((!from && to) || from.id !== to.id) { diff --git a/packages/view-design/src/service/index.ts b/packages/view-design/src/service/index.ts index 65c34e0ced7fe358a192da617b15d4e4a8200e0e..e26de7daedfef7a8e47a8f3be30fb7eacfb1c7d9 100644 --- a/packages/view-design/src/service/index.ts +++ b/packages/view-design/src/service/index.ts @@ -10,6 +10,7 @@ import { PSSysViewPanelItemService } from './pssys-view-panel-item/pssys-view-pa import { PSSysViewPanelLogicService } from './pssys-view-panel-logic/pssys-view-panel-logic.service'; import { PSUWAppViewService } from './psuwapp-view/psuwapp-view.service'; import { PSAppUtilViewService } from './psapp-util-view/psapp-util-view.service'; +import { PSAppPanelViewService } from './psapp-panel-view/psapp-panel-view.service'; export default { install(_app: App) { @@ -73,5 +74,11 @@ export default { return new PSAppUtilViewService(srfSessionId, entityModel); }, ); + DEServiceUtil.register( + 'viewdesign.psapppanelview', + async (srfSessionId: string, entityModel: IAppDataEntity) => { + return new PSAppPanelViewService(srfSessionId, entityModel); + }, + ); }, }; diff --git a/packages/view-design/src/service/psapp-panel-view/psapp-panel-view.service.ts b/packages/view-design/src/service/psapp-panel-view/psapp-panel-view.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..ced0cc0757f40cf3f8fe81951046cdc2f8382171 --- /dev/null +++ b/packages/view-design/src/service/psapp-panel-view/psapp-panel-view.service.ts @@ -0,0 +1,14 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { IDataEntity } from '@ibiz-template/runtime'; +import { PSAppPanelView } from '../../entity'; +import { CommonViewService } from '../common-view/common-view.service'; + +export class PSAppPanelViewService extends CommonViewService { + protected newEntity(data: IData | IDataEntity): IDataEntity { + return new PSAppPanelView(this.model, data); + } + + protected getViewTypeField(): string { + return 'psappviewtype'; + } +} diff --git a/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.controller.ts b/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.controller.ts new file mode 100644 index 0000000000000000000000000000000000000000..28e9ffef28384f49688468557f7ca926f21b41ee --- /dev/null +++ b/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.controller.ts @@ -0,0 +1,21 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { PanelDesignBaseController } from '../../panel'; +import { AppPanelViewDesignEngine } from './app-panel-view-design.engine'; +import { AppPanelViewDesignState } from './interface/app-view-panel-design.state'; +import { AppPanelViewDesignEvent } from './interface/app-view-panel-design.event'; + +export class AppPanelViewDesignController extends PanelDesignBaseController< + AppPanelViewDesignState, + AppPanelViewDesignEvent +> { + /** + * 初始化引擎 + * + * @author tony001 + * @date 2024-09-24 18:09:51 + * @protected + */ + protected initEngines(): void { + this.engines.push(new AppPanelViewDesignEngine(this)); + } +} diff --git a/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.engine.ts b/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.engine.ts new file mode 100644 index 0000000000000000000000000000000000000000..e072c702998be9cd4f4e578abe929eec4a11dc5a --- /dev/null +++ b/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.engine.ts @@ -0,0 +1,34 @@ +import { PanelDesignViewEngine } from '../../panel'; +import { AppPanelViewDesignController } from './app-panel-view-design.controller'; + +export class AppPanelViewDesignEngine extends PanelDesignViewEngine { + protected declare view: AppPanelViewDesignController; + + /** + * 初始化自定义参数 + * + * @author tony001 + * @date 2024-11-07 17:11:05 + * @protected + */ + protected initCustomParams(): void { + this.view.context.srfapplicationtag = 'ViewDesign'; + } + + /** + * 视图能力调用 + * + * @author tony001 + * @date 2024-10-23 14:10:19 + * @param {string} key + * @param {IData} [args] + * @return {*} {(Promise)} + */ + async call(key: string, args?: IData): Promise { + if (key === 'reloadCtrlPos') { + this.view.evt.emit('onReloadCtrlPos', undefined); + return undefined; + } + return super.call(key, args); + } +} diff --git a/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.provider.ts b/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.provider.ts new file mode 100644 index 0000000000000000000000000000000000000000..4c66a2f8e42c5f2e9fdbcd27d58887e0610b1d49 --- /dev/null +++ b/packages/view-design/src/views/app-panel-view-design/app-panel-view-design.provider.ts @@ -0,0 +1,17 @@ +import { CTX, IViewController, IViewProvider } from '@ibiz-template/runtime'; +import { IAppDECustomView } from '@ibiz/model-core'; +import { AppPanelViewDesignController } from './app-panel-view-design.controller'; + +export class AppPanelViewDesignProvider implements IViewProvider { + component: string = 'IBizView'; + + createController( + model: IAppDECustomView, + context: IContext, + params?: IParams, + ctx?: CTX, + ): IViewController { + const c = new AppPanelViewDesignController(model, context, params, ctx); + return c; + } +} diff --git a/packages/view-design/src/views/app-panel-view-design/interface/app-view-panel-design.event.ts b/packages/view-design/src/views/app-panel-view-design/interface/app-view-panel-design.event.ts new file mode 100644 index 0000000000000000000000000000000000000000..78958c97c4e9467d1dab35bdea9fd492e2ab86e8 --- /dev/null +++ b/packages/view-design/src/views/app-panel-view-design/interface/app-view-panel-design.event.ts @@ -0,0 +1,19 @@ +import { EventBase } from '@ibiz-template/runtime'; +import { PanelDesignBaseEvent } from '../../../panel'; + +export interface AppPanelViewDesignEvent extends PanelDesignBaseEvent { + /** + * 加载部件占位事件 + * + * @author tony001 + * @date 2024-10-29 18:10:07 + * @type {{ + * event: EventBase; + * emitArgs: undefined; + * }} + */ + onReloadCtrlPos: { + event: EventBase; + emitArgs: undefined; + }; +} diff --git a/packages/view-design/src/views/app-panel-view-design/interface/app-view-panel-design.state.ts b/packages/view-design/src/views/app-panel-view-design/interface/app-view-panel-design.state.ts new file mode 100644 index 0000000000000000000000000000000000000000..c759dcf4474f1976203e001d8802b7a65c5ae5fe --- /dev/null +++ b/packages/view-design/src/views/app-panel-view-design/interface/app-view-panel-design.state.ts @@ -0,0 +1,3 @@ +import { PanelDesignBaseState } from '../../../panel'; + +export interface AppPanelViewDesignState extends PanelDesignBaseState {} diff --git a/packages/view-design/src/views/index.ts b/packages/view-design/src/views/index.ts index 4ca28d3f1cc9fef3e1aa54d131b131de2674620b..90bfa3a915a7c4a2be39c01710f5014ac89d172f 100644 --- a/packages/view-design/src/views/index.ts +++ b/packages/view-design/src/views/index.ts @@ -3,6 +3,7 @@ import { App } from 'vue'; import { registerViewProvider } from '@ibiz-template/runtime'; import { DEViewBaseDesignProvider } from './de-view-base-design/de-view-base-design.provider'; import { AppUtilViewDesignProvider } from './app-util-view-design/app-util-view-design.provider'; +import { AppPanelViewDesignProvider } from './app-panel-view-design/app-panel-view-design.provider'; export default { install(app: App) { @@ -22,5 +23,13 @@ export default { 'VIEW_CUSTOM_APP_UTIL_VIEW_DESIGN', () => new AppUtilViewDesignProvider(), ); + registerViewProvider( + 'VIEW_CUSTOM_APP_PANEL_VIEW_DESIGN_DESIGN', + () => new AppPanelViewDesignProvider(), + ); + registerViewProvider( + 'VIEW_CUSTOM_APP_PANEL_VIEW_DESIGN', + () => new AppPanelViewDesignProvider(), + ); }, };