提交 8e165d35 编写于 作者: JunZai's avatar JunZai

update

上级 0edcfef8
流水线 #205 已失败 ,包含阶段
<${ctrl.getCodeName()}${ctrl.getName()}></${ctrl.getCodeName()}${ctrl.getName()}>
\ No newline at end of file
<form nz-form nz-row class="app-form<#if ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>">
<#if ctrl.isNoTabHeader()>
<#list ctrl.getPSDEFormPages() as formmenber>
${P.getPartCode(formmenber).code}
</#list>
<#else>
<nz-tabset>
<#list ctrl.getPSDEFormPages() as formpage>
<nz-tab nzTitle="${formpage.getCaption()}">
${P.getPartCode(formpage).code}
</nz-tab>
</#list>
</nz-tabset>
</#if>
</form>
\ No newline at end of file
<${ctrl.getCodeName()?lower_case}-${ctrl.getName()}></${ctrl.getCodeName()?lower_case}-${ctrl.getName()}>
\ No newline at end of file
import { NgZorroAntdModule } from 'ng-zorro-antd';
import { RouterModule } from '@angular/router';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ${srfclassname('${ctrl.name}')} } from './${srffilepath2(ctrl.getCodeName())}-${ctrl.getControlType()?lower_case}';
import { AppTimePickerModule } from '@components/app-time-picker/app-time-picker.module';
import { AppDatePickerModule } from '@components/app-date-picker/app-date-picker.module';
import { AppSelectModule } from '@components/app-select/app-select.module';
import { AppRadioModule } from '@components/app-radio/app-radio.module';
import { AppCheckboxListModule } from '@components/app-checkbox-list/app-checkbox-list.module';
@NgModule({
imports: [
NgZorroAntdModule,
CommonModule,
FormsModule,
AppDatePickerModule,
AppTimePickerModule,
AppSelectModule,
AppRadioModule,
AppCheckboxListModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [${srfclassname('${ctrl.name}')}],
exports: [${srfclassname('${ctrl.name}')}]
})
export class ${srfclassname('${ctrl.name}')}Module { }
import { Component, OnInit, Input, Output, EventEmitter, ViewContainerRef, ViewChild, OnDestroy, AfterViewInit } from '@angular/core';
import { Subject, Subscription } from 'rxjs';
import { NzNotificationService } from 'ng-zorro-antd/notification';
import { Util } from '@global/util/util';
import { NzModalService } from 'ng-zorro-antd/modal';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@global/model/form-detail';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
@Component({
selector: '${ctrl.getCodeName()?lower_case}-${ctrl.getName()}',
templateUrl: './${srffilepath2(ctrl.codeName)}-${ctrl.getControlType()?lower_case}.html',
styleUrls: ['./${srffilepath2(ctrl.codeName)}-${ctrl.getControlType()?lower_case}.less'],
})
export class ${srfclassname('${ctrl.name}')} implements OnInit {
/**
* 生命周期
*
* @memberof ${srfclassname('${ctrl.name}')}
*/
ngOnInit(): void {
}
}
\ No newline at end of file
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.tsx.ftl
</#ibizinclude>
<div className="ibiz-form ${ctrl.getCodeName()?lower_case}<#if ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if><#if ctrl.isInfoFormMode?? && ctrl.isInfoFormMode()> info-form-mode</#if>">
<Form layout="inline">
<#if ctrl.isNoTabHeader()>
<#list ctrl.getPSDEFormPages() as formmenber>
${P.getPartCode(formmenber).code}
</#list>
<#else>
<Tabs defaultActiveKey="1" onChange={(key: string) => this.tabChange(key)}>
<#list ctrl.getPSDEFormPages() as formpage>
<TabPane
tab={
<span className='caption<#if formpage.getLabelPSSysCss?? && formpage.getLabelPSSysCss()??> ${formpage.getLabelPSSysCss().getCssName()}</#if>'>
<#if formpage.getPSSysImage()??>
<#assign sysimage = formpage.getPSSysImage()/>
<#if sysimage.getImagePath() == "">
<i className='${sysimage.getCssClass()}'></i>&nbsp;
<#else>
<img src='${sysimage.getImagePath()}'/>&nbsp;
</#if>
</#if>
${formpage.getCaption()}
</span>
}
key="${formpage_index}">
<@ibizindent blank=28>
${P.getPartCode(formpage).code}
</@ibizindent>
</TabPane>
</#list>
</Tabs>
</#if>
</Form>
</div>
\ No newline at end of file
import React, { PureComponent } from 'react';
// eslint-disable-next-line
import { Form, Input, Row, Col, Tabs, Icon, Collapse } from 'antd';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '../../../ibizsys/form-detail';
import './${srffilepath2(ctrl.codeName)}.less';
const { TabPane } = Tabs;
const { Panel } = Collapse;
/**
* 表单属性
*
* @export
* @interface ${srfclassname(ctrl.codeName)}FormData
*/
export interface ${srfclassname(ctrl.codeName)}FormData {
<#list ctrl.getPSDEFormItems() as item>
<#if item.getName()?index_of('srf') != 0>
/**
* <#if item.getCaption()??>${item.getCaption()}<#else>${item.getName()}</#if>
*
* @type {*}
* @memberof ${srfclassname(ctrl.codeName)}FormData
*/
${item.getName()}?: any;
</#if>
</#list>
}
/**
* 输入属性
*
* @export
* @interface ${srfclassname(ctrl.codeName)}Props
*/
export interface ${srfclassname(ctrl.codeName)}Props {
/**
* 表单数据对象
*
* @type {${srfclassname(ctrl.codeName)}FormData}
* @memberof ${srfclassname(ctrl.codeName)}Props
*/
data?: ${srfclassname(ctrl.codeName)}FormData;
/**
* 表单分页切换
*
* @memberof ${srfclassname(ctrl.codeName)}Props
*/
tabChange?: (key: string) => void;
}
/**
* ${srfclassname(ctrl.codeName)}
*
* @export
* @class ${srfclassname(ctrl.codeName)}
* @extends {PureComponent}
*/
export default class ${srfclassname(ctrl.codeName)} extends PureComponent<${srfclassname(ctrl.codeName)}Props> {
/**
* 表单数据
*
* @type {*}
* @memberof ${srfclassname(ctrl.codeName)}
*/
public data: ${srfclassname(ctrl.codeName)}FormData = {};
/**
* 在组件接收到一个新的 prop (或更新后)时被调用
*
* @memberof IBizViewController
*/
public componentWillReceiveProps(nextProps: Readonly<${srfclassname(ctrl.codeName)}Props>, nextContext: any) {
if (this.data && nextProps.data && !Object.is(JSON.stringify(this.data), JSON.stringify(nextProps.data))) {
Object.assign(this.data, nextProps.data);
}
}
/**
* 在组件从 DOM 中移除的时候立刻被调用
*
* @memberof IBizViewController
*/
public componentWillUnmount() {
}
/**
* 属性值规则
*
* @type {*}
* @memberof ${srfclassname(ctrl.codeName)}
*/
public rules: any = {
<#list ctrl.getAllPSDEFormDetails() as formdetail>
<#if formdetail.getDetailType?? && formdetail.getDetailType() == 'FORMITEM'>
${formdetail.getName()}: [
{ type: '<#assign datatype=srfjavatype(formdetail.getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double'>number<#else>string</#if>', message: '${formdetail.getCaption()} 值必须为<#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double'>数值<#else>字符串</#if>类型', trigger: 'change' },
{ required: <#if formdetail.isAllowEmpty()>false<#else>true</#if>, type: '<#assign datatype=srfjavatype(formdetail.getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double'>number<#else>string</#if>', message: '${formdetail.getCaption()} 值不能为空', trigger: 'change' },
{ required: <#if formdetail.isAllowEmpty()>false<#else>true</#if>, type: '<#assign datatype=srfjavatype(formdetail.getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double'>number<#else>string</#if>', message: '${formdetail.getCaption()} 值不能为空', trigger: 'blur' },
],
</#if>
</#list>
}
/**
* 详情模型集合
*
* @type {*}
* @memberof ${srfclassname(ctrl.codeName)}
*/
public detailsModel: any = {
<#list ctrl.getAllPSDEFormDetails() as formdetail>
${formdetail.name}: ${P.getPartCode(formdetail, 'DETAIL_MODEL').code},
</#list>
<#if !ctrl.isNoTabHeader()>
${ctrl.name}: new FormTabPanelModel({ caption: '${ctrl.name}', detailType: 'TABPANEL', name: '${ctrl.name}', visible: true, isShowCaption: true, form: this, tabPages: [<#list ctrl.getPSDEFormPages() as formmenber><#if formmenber_index gt 0>, </#if>{ name: '${formmenber.name}', index: ${formmenber_index}, visible: <#if formmenber.getPSDEFDGroupLogic('PANELVISIBLE')??>false<#else>true</#if> }</#list>] }),
</#if>
};
/**
* 表单逻辑
*
* @private
* @param {{ name: string, newVal: any, oldVal: any }} { name, newVal, oldVal }
* @memberof ${srfclassname(ctrl.codeName)}
*/
private formLogic({ name, newVal, oldVal }: { name: string, newVal: any, oldVal: any }): void {
<#if P.getPartCode(item,'FORM_LOGIC').code?length gt 0>
${P.getPartCode(item,'FORM_LOGIC').code}
</#if>
<#if ctrl.getPSDEFormItems()??>
<#list ctrl.getPSDEFormItems() as formitem>
<#if formitem.getPSDEFormItemUpdate()??>
<#assign itemUpdate=formitem.getPSDEFormItemUpdate()/>
if(Object.is(name, '${formitem.name}')){
const details: string[] = [<#list itemUpdate.getPSDEFIUpdateDetails() as detail><#if detail_index gt 0>, </#if>'${detail.getPSDEFormDetailName()?lower_case}'</#list>];
this.updateFormItems('${itemUpdate.codeName}', this.data, details, ${itemUpdate.isShowBusyIndicator()?c});
}
</#if>
</#list>
</#if>
}
<#list ctrl.getAllPSDEFormDetails() as formdetail>
<#if formdetail.getDetailType?? && formdetail.getDetailType() == 'BUTTON'>
<#if formdetail.getActionType?? && formdetail.getActionType()??>
<#if formdetail.getActionType() == 'UIACTION'>
/**
* 表单 ${formdetail.getCaption()} 事件
*
* @memberof @memberof ${srfclassname('${ctrl.codeName}')}
*/
public ${formdetail.getName()}_click($event: any): void {
alert('需自定义实现');
}
</#if>
<#if formdetail.getActionType() == 'FIUPDATE'>
/**
* 表单 ${formdetail.getCaption()} 事件
*
* @memberof @memberof ${srfclassname('${ctrl.codeName}')}
*/
public ${formdetail.getName()}_click($event: any): void {
alert('需自定义实现');
}
</#if>
</#if>
</#if>
</#list>
/**
* 表单分页切换
*
* @param {string} key 分页标识
* @memberof ${srfclassname(ctrl.codeName)}
*/
public tabChange(key: string): void {
if (this.props.tabChange) {
this.props.tabChange(key);
}
}
/**
* 绘制内容
*
* @returns
* @memberof ${srfclassname(ctrl.codeName)}
*/
public render(): any {
return <>
${P.getPartCode(item,'FORM').code}
</>;
}
/**
* 变更监测
*
* @protected
* @memberof Main
*/
protected tick(): void {
this.setState({
date: new Date()
});
}
}
\ No newline at end of file
<div>
<#if view.hasPSControl('form')>
<@ibizindent blank=4>
${P.getCtrlCode('form', 'CONTROL.html').code}
${P.getCtrlCode('form', 'CONTROL.label').code}
</@ibizindent>
</#if>
</div>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
import { NgZorroAntdModule } from 'ng-zorro-antd';
import { RouterModule } from '@angular/router';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as curctrl>
<#if curctrl.getControlType() != "TOOLBAR">
<#if curctrl.getPSDataEntity?? && curctrl.getPSDataEntity()??>
import { ${srfclassname('${curctrl.name}')}Module } from '@widgets/${srffilepath2(curctrl.getPSDataEntity().getCodeName())}/${srffilepath2(curctrl.getCodeName())}-${curctrl.getControlType()?lower_case}/${srffilepath2(curctrl.getCodeName())}-${curctrl.getControlType()?lower_case}.module';
</#if>
</#if>
</#list>
</#if>
import { ${srfclassname('${view.name}')}Page } from './${srffilepath2(view.getCodeName())}.page';
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: ${srfclassname('${view.name}')}Page,
data: { name: '${view.getPSAppModule().getCodeName()?lower_case}_${view.getCodeName()?lower_case}' }
}
])
],
exports: [ RouterModule ]
})
export class ${srfclassname('${view.name}')}RouteModule {}
@NgModule({
imports: [
NgZorroAntdModule,
CommonModule,
FormsModule,
${srfclassname('${view.name}')}RouteModule,
<#if view.getAllPSControls()??>
<#list view.getAllPSControls() as curctrl>
<#if curctrl.getControlType() != "TOOLBAR">
${srfclassname('${curctrl.name}')}Module,
</#if>
</#list>
</#if>
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [${srfclassname('${view.name}')}Page],
entryComponents: [${srfclassname('${view.name}')}Page],
exports: [${srfclassname('${view.name}')}Page]
})
export class ${srfclassname('${view.name}')}Module {}
import { Component } from '@angular/core';
import { Subject, Unsubscribable } from 'rxjs';
<#if import_block??>
${import_block}
</#if>
@Component({
selector: 'view-${srffilepath2('${view.getCodeName()}')?lower_case}',
templateUrl: './${srffilepath2('${view.getCodeName()}')?lower_case}.page.html',
styleUrls: ['./${srffilepath2('${view.getCodeName()}')?lower_case}.page.less']
})
export class ${srfclassname('${view.name}')}Page {
}
\ No newline at end of file
import React, { PureComponent } from 'react';
import './${srffilepath2(view.getCodeName())}.less';
<#if view.getPSControls()??>
<#list view.getPSControls() as ctrl>
<#if ctrl.getControlType() == 'FORM'>
<#if ctrl.getPSDataEntity?? && ctrl.getPSDataEntity()??>
import ${ctrl.getCodeName()}${ctrl.getName()} from '../../../forms/${srffilepath2(ctrl.getPSDataEntity().getCodeName())}/${srffilepath2(ctrl.getCodeName())}/${srffilepath2(ctrl.getCodeName())}';
</#if>
</#if>
</#list>
</#if>
/**
* ${srfclassname(view.name)}
*
* @export
* @class ${srfclassname(view.name)}
* @extends {PureComponent}
*/
export default class ${srfclassname(view.name)} extends PureComponent {
/**
* 绘制内容
*
* @returns
* @memberof ${srfclassname(view.name)}
*/
public render() {
return <>
<@ibizindent blank=12>
${P.getLayoutCode().code}
</@ibizindent>
</>;
}
}
\ No newline at end of file
<#ibiztemplate>
TARGET=PSSYSAPP
</#ibiztemplate>
import React, { PureComponent } from 'react';
<#if app.getAllPSAppViews()??>
<#list app.getAllPSAppViews() as view>
<#if view.getViewType() == "DEEDITVIEW">
import ${srfclassname(view.getCodeName())} from './pages/${srffilepath2(view.getPSAppModule().getCodeName())}/${srffilepath2(view.getCodeName())}/${srffilepath2(view.getCodeName())}';
</#if>
</#list>
</#if>
import './App.less';
import { Tabs } from 'antd';
const { TabPane } = Tabs;
/**
* App
*
* @export
* @class App
* @extends {PureComponent}
*/
export default class App extends PureComponent {
/**
*
*
* @returns
* @memberof App
*/
public render() {
return <div className="App">
<#if app.getAllPSAppViews()??>
<Tabs defaultActiveKey="1">
<#list app.getAllPSAppViews() as view>
<#if view.getViewType() == "DEEDITVIEW">
<TabPane tab="<#if view.getCaption()??>${view.getCaption()}<#else>未知</#if>" key="${view_index}">
<${srfclassname(view.getCodeName())}/>
</TabPane>
</#if>
</#list>
</Tabs>
</#if>
</div>;
}
}
\ No newline at end of file
<#ibiztemplate>
TARGET=PSAPPVIEW
TEMPLFILE=VIEW.html
</#ibiztemplate>
\ No newline at end of file
<#ibiztemplate>
TARGET=PSAPPVIEW
TEMPLFILE=VIEW.module.ts
</#ibiztemplate>
\ No newline at end of file
<#ibiztemplate>
TARGET=PSAPPVIEW
TEMPLFILE=VIEW.tsx
TEMPLFILE=VIEW.ts
</#ibiztemplate>
\ No newline at end of file
<#ibiztemplate>
TARGET=PSSYSAPP
TARGET=PSAPPVIEWCTRL_FORM
</#ibiztemplate>
// App.less
\ No newline at end of file
${P.getCtrlCode('CONTROL.tsx').code}
\ No newline at end of file
<#ibiztemplate>
TARGET=PSAPPVIEWCTRL_FORM
</#ibiztemplate>
${P.getCtrlCode('CONTROL.tsx').code}
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册