提交 8db7eb97 编写于 作者: jlj05024111@163.com's avatar jlj05024111@163.com

feat: 更新支持实体HTML视图

上级 e5d7de5b
......@@ -63,6 +63,7 @@ import {
TreeExpView,
PickupView2,
MPickupView2,
HtmlView,
} from './components/views';
import { IndexView } from './views';
import AppKeepAlive from './components/common/app-keep-alive/app-keep-alive.vue';
......@@ -164,6 +165,7 @@ export const AppRegister = {
v.component('TreeExpView', TreeExpView);
v.component('PickupView2', PickupView2);
v.component('MPickupView2', MPickupView2);
v.component('HtmlView', HtmlView);
// 注册部件组件
v.component('AppMenu', AppMenu);
v.component('GridControl', GridControl);
......
@include b(view-dehtmlview) {
width: 100%;
overflow: hidden;
height: 100%;
> iframe {
width: 100%;
height: 100%;
border: 0;
}
}
import { PropType, defineComponent, getCurrentInstance, ref, watch } from 'vue';
import { useHtmlViewController, useNamespace } from '@ibiz-template/vue-util';
import { IModal } from '@ibiz-template/runtime';
import { StringUtil } from '@ibiz-template/core';
import _404View from '../../../views/404-view/404-view';
import './html-view.scss';
export const HtmlView = defineComponent({
name: 'IBizHtmlView',
props: {
context: Object as PropType<IContext>,
params: { type: Object as PropType<IParams>, default: () => ({}) },
modelPath: { type: String, required: true },
modal: { type: Object as PropType<IModal> },
state: { type: Object as PropType<IData> },
},
setup(props) {
const ns = useNamespace('view');
const { proxy } = getCurrentInstance()!;
const c = useHtmlViewController(proxy, props.modelPath);
const url = ref('');
watch(
() => c,
() => {
if (c.model && c.model.htmlUrl) {
url.value = StringUtil.fill(c.model.htmlUrl, c.context, c.params);
} else {
url.value = '';
}
},
{
immediate: true,
deep: true,
},
);
c.beginViewLoading();
const onLoad = () => {
c.endViewLoading();
};
return { c, ns, url, onLoad };
},
render() {
if (this.url) {
return (
<view-base class={this.ns.b()} controller={this.c}>
<div class={[this.ns.b('dehtmlview')]}>
<iframe
src={this.url}
onLoad={() => this.onLoad()}
onError={() => this.onLoad()}
></iframe>
</div>
</view-base>
);
}
return (
<div class={this.ns.b()}>
<_404View></_404View>
</div>
);
},
});
......@@ -16,3 +16,4 @@ export * from './list-view/list-view';
export * from './tree-exp-view/tree-exp-view';
export * from './pickup-view2/pickup-view2';
export * from './mpickup-view2/mpickup-view2';
export * from './html-view/html-view';
import { IViewProvider } from '@ibiz-template/controller';
/**
* html视图适配器
*
* @export
* @class HtmlViewProvider
* @implements {IViewProvider}
*/
export class HtmlViewProvider implements IViewProvider {
component: string = 'HtmlView';
}
......@@ -18,6 +18,7 @@ import { WFDynaStartViewProvider } from './wf-dyna-start-view-provider';
import { WFStepTraceViewProvider } from './wf-step-trace-view-provider';
import { PickupView2Provider } from './pickup-view2-provider';
import { MPickupView2Provider } from './mpickup-view2-provider';
import { HtmlViewProvider } from './html-view-provider';
/**
* 预置默认的视图适配器
......@@ -58,6 +59,7 @@ export function presetViewProvider(): void {
view.register(ViewType.DE_LIST_EXP_VIEW, new ListExpViewProvider());
view.register(ViewType.DE_LIST_VIEW, new ListViewProvider());
view.register(ViewType.DE_TREE_EXP_VIEW, new TreeExpViewProvider());
view.register(ViewType.DE_HTML_VIEW, new HtmlViewProvider());
}
export {
......@@ -79,4 +81,5 @@ export {
TabExpViewProvider,
TreeExpViewProvider,
PickupView2Provider,
HtmlViewProvider,
};
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册