import { Component, Prop } from 'vue-property-decorator';
import { AppDefaultSearchFormDetail } from '../app-default-searchform-detail/app-default-searchform-detail';
import { IPSLanguageRes } from '@ibizstudio/runtime';
import { VueLifeCycleProcessing } from '../../../../decorators';
/**
* 表单UI组件
*
* @export
* @class AppDefaultSearchFormItem
* @extends {Vue}
*/
@Component({})
@VueLifeCycleProcessing()
export class AppDefaultSearchFormItem extends AppDefaultSearchFormDetail {
/**
* 表单数据
*
* @type {*}
* @memberof AppDefaultSearchFormItem
*/
@Prop() data: any;
/**
* 表单值规则
*
* @type {*}
* @memberof AppDefaultSearchFormItem
*/
@Prop() rules: any;
/**
* 应用上下文
*
* @type {*}
* @memberof AppDefaultSearchFormItem
*/
@Prop() context: any;
/**
* 视图参数
*
* @type {*}
* @memberof AppDefaultSearchFormItem
*/
@Prop() viewparams: any;
/**
* 表单服务对象
*
* @type {*}
* @memberof AppDefaultSearchFormItem
*/
@Prop() service: any;
/**
* 忽略表单项值变化
*
* @type {boolean}
* @memberof AppDefaultSearchFormItem
*/
@Prop() ignorefieldvaluechange?: boolean;
/**
* 表单项值变化事件
*
* @memberof AppDefaultSearchFormItem
*/
onFormItemValueChange(...args: any) {
this.$emit('formItemValueChange', ...args);
}
/**
* 绘制复合表单项
*
* @returns
* @memberof AppDefaultSearchFormItem
*/
renderCompositeItem() {
const { name, contentHeight, contentWidth, editor, formItems } = this.detailsInstance;
let editorType = editor?.editorType;
// 设置高宽
let contentStyle: string = '';
contentStyle += contentWidth && contentWidth != 0 ? `width:${contentWidth}px;` : '';
contentStyle += contentHeight && contentHeight != 0 ? `height:${contentHeight}px;` : '';
contentStyle += this.runtimeModel?.visible ? '' : 'display: none;';
const refFormItem: any = [];
if(formItems){
formItems?.forEach((formItem: any) => {
refFormItem.push(formItem?.name);
});
}
if (editor?.editorType !== 'USERCONTROL') {
return (
{
this.onFormItemValueChange(value);
}}
style={contentStyle}
>
);
} else {
return (
{
this.onFormItemValueChange(value);
}}
/>)
}
}
/**
* 绘制内容
*
* @returns {*}
* @memberof AppDefaultSearchFormItem
*/
render(): any {
const { detailClassNames } = this.renderOptions;
let {
name,
caption,
labelWidth,
labelPos,
showCaption,
emptyCaption,
detailStyle,
getLabelPSSysCss,
editor,
compositeItem,
contentWidth,
contentHeight,
} = this.detailsInstance;
let editorType = editor?.editorType;
// 隐藏表单项
if (editorType == 'HIDDEN') {
return;
}
// 设置高宽
let contentStyle: string = '';
contentStyle += contentWidth && contentWidth != 0 ? `width:${contentWidth}px;` : '';
contentStyle += contentHeight && contentHeight != 0 ? `height:${contentHeight}px;` : '';
contentStyle += this.runtimeModel?.visible ? '' : 'display: none;';
let labelCaption: any = this.$tl((this.detailsInstance.getCapPSLanguageRes() as IPSLanguageRes)?.lanResTag, caption);
return (
{ compositeItem ? (
this.renderCompositeItem()
) : this.$slots.default }
);
}
}