提交 1944a083 编写于 作者: RedPig97's avatar RedPig97

update: 更新

上级 e94aa881
{{#*inline "TEXTBOX"}}{{>@macro/editor/input.hbs}}{{/inline}}
{{#*inline "NUMBER"}}{{>@macro/editor/input.hbs}}{{/inline}}
{{#*inline "PASSWORD"}}{{>@macro/editor/input.hbs}}{{/inline}}
{{#*inline "TEXTAREA"}}{{>@macro/editor/input.hbs}}{{/inline}}
{{#*inline "SPAN"}}{{>@macro/editor/span.hbs}}{{/inline}}
{{#*inline "DROPDOWNLIST"}}{{>@macro/editor/dropdown-list.hbs}}{{/inline}}
\ No newline at end of file
{{>@macro/editor/include-editor.hbs}}
{{#eq item.pSLayoutPos 'FLEX'}}
<div style="flex-grow: {{#if item.pSLayoutPos.grow}}{{item.pSLayoutPos.grow}}{{else}}0{{/if}};">
<IbizFormItem name="{{item.codeName}}" label="{{item.caption}}">
......
{{#*inline "FORMPAGE"}}{{>@macro/form-detail/form-page.hbs}}{{/inline}}
{{#*inline "GROUPPANEL"}}{{>@macro/form-detail/form-group.hbs}}{{/inline}}
{{#*inline "FORMITEM"}}{{>@macro/form-detail/form-item.hbs}}{{/inline}}
{{#*inline "TEXTBOX"}}{{>@macro/form-detail/input.hbs}}{{/inline}}
{{#*inline "NUMBER"}}{{>@macro/form-detail/input.hbs}}{{/inline}}
{{#*inline "PASSWORD"}}{{>@macro/form-detail/input.hbs}}{{/inline}}
{{#*inline "TEXTAREA"}}{{>@macro/form-detail/input.hbs}}{{/inline}}
{{#*inline "SPAN"}}{{>@macro/form-detail/span.hbs}}{{/inline}}
{{#*inline "DROPDOWNLIST"}}{{>@macro/form-detail/dropdown-list.hbs}}{{/inline}}
\ No newline at end of file
{{#*inline "FORMITEM"}}{{>@macro/form-detail/form-item.hbs}}{{/inline}}
\ No newline at end of file
<script setup lang="ts">
import { IParam, IActionParam, useContextParams } from "@ibiz-core";
import { onBeforeMount, ref, Ref } from "vue";
interface ToolbarProps {
/**
* @description 工具栏模型
*/
toolbarModel: IParam;
}
interface toolbarEmit {
(name: "toolbarEvent", value: IActionParam): void;
}
const props = withDefaults(defineProps<ToolbarProps>(), {});
const emit = defineEmits<toolbarEmit>();
const items: Ref<IParam[]> = ref(props.toolbarModel.items || []);
const { context, viewParams } = useContextParams(props);
const getItemClass = (item: IParam) => {
//todo 样式表
return item.class;
};
const getItemIcon = (item: IParam) => {
if (item.getPSSysImage) {
return item.getPSSysImage.cssClass;
}
};
const itemClick = (item: IParam) => {
emit("toolbarEvent", {
tag: item.name,
action: "toolbarEvent",
data: item,
});
};
</script>
<template>
<div class="app-toolbar">
<template v-for="(item, index) in items" :key="index">
<a-tooltip
v-if="Object.is(item.itemType, 'DEUIACTION')"
:title="item.tooltip"
>
<a-button
v-show="true"
:class="['toolbar-item', getItemClass(item)]"
:disabled="item.disabled"
type="primary"
@click="itemClick(item)"
>
<a-icon v-show="item.showIcon" :type="getItemIcon(item)" />
\{{ item.showCaption ? item.caption : "" }}
</a-button>
</a-tooltip>
<a-dropdown v-else-if="Object.is(item.itemType, 'items')">
<a-menu slot="overlay" @click="itemClick">
<a-tooltip
v-for="(childItem, index) in item"
v-if="Object.is(item.itemType, 'DEUIACTION')"
:title="item.tooltip"
>
<a-menu-item
v-show="childItem.visible"
:class="['toolbar-item', getItemClass(childItem)]"
:disabled="childItem.disabled"
type="primary"
@click="itemClick(childItem)"
>
<a-icon
v-show="childItem.showIcon"
:type="getItemIcon(childItem)"
/>
\{{ childItem.showCaption ? childItem.caption : "" }}
</a-menu-item>
</a-tooltip>
</a-menu>
</a-dropdown>
</template>
</div>
</template>
<style scoped>
.app-toolbar {
}
.app-toolbar .toolbar-item {
margin-right: 8px;
margin-bottom: 12px;
}
</style>
import { ViewBase, MainViewProps, MainViewState } from '@ibiz-core';
import { ViewBase, MainViewProps, MainViewState, IActionParam } from '@ibiz-core';
/**
* 实体部件
......@@ -34,6 +34,16 @@ export class MainView extends ViewBase {
*/
public useNewData(props: MainViewProps) {}
/**
* @description 处理工具栏事件
* @param {IActionParam} actionParam
* @memberof MainView
*/
public handleToolbarEvent(actionParam: IActionParam) {
const { tag, action, data } = actionParam;
//todo
}
/**
* 安装部件所有功能模块的方法
* @param props 传入的Props
......@@ -41,9 +51,14 @@ export class MainView extends ViewBase {
*/
public moduleInstall(props: MainViewProps, emit?: Function) {
const superParams = super.moduleInstall(props, emit);
const handleToolbarEvent = this.handleToolbarEvent.bind(this);
this.handleToolbarEvent = (actionParam: IActionParam) => {
handleToolbarEvent(actionParam)
}
return {
...superParams,
state: this.viewState,
handleToolbarEvent: this.handleToolbarEvent,
};
}
}
......@@ -29,7 +29,7 @@ interface ViewEmit {
const emit = defineEmits<ViewEmit>();
// 安装功能模块,提供状态和能力方法
const { state } = new EditView(ViewConfig).moduleInstall(props);
const { state, handleToolbarEvent } = new EditView(ViewConfig).moduleInstall(props);
</script>
......@@ -39,7 +39,11 @@ const { state } = new EditView(ViewConfig).moduleInstall(props);
<IbizIconText class="ibiz-view__caption" size="large" :text="state.viewCaption" />
</template>
<template v-slot:header-right>
<span>工具栏部件</span>
<ibizToolbar
:toolbarModel="state.editviewtoolbar"
@toolbarEvent="handleToolbarEvent"
:context="state.context"
:viewParams="state.viewParams"/>
</template>
{{#page.ctrls}}
{{#eq controlType "FORM"}}
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册