提交 b52ca1b3 编写于 作者: tony001's avatar tony001

Revert "Revert "Merge remote-tracking branch 'origin/dev' into dev""

This reverts commit cde5e1ad.
上级 cde5e1ad
...@@ -67,7 +67,7 @@ export default class ${srfclassname('${ctrl.codeName}')}Base extends Vue impleme ...@@ -67,7 +67,7 @@ export default class ${srfclassname('${ctrl.codeName}')}Base extends Vue impleme
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() public context: any; @Prop() public context!: any;
/** /**
* 视图参数 * 视图参数
...@@ -75,7 +75,7 @@ export default class ${srfclassname('${ctrl.codeName}')}Base extends Vue impleme ...@@ -75,7 +75,7 @@ export default class ${srfclassname('${ctrl.codeName}')}Base extends Vue impleme
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() public viewparams: any; @Prop() public viewparams!: any;
/** /**
* 视图状态事件 * 视图状态事件
......
...@@ -67,7 +67,7 @@ export default class <#if ctrl.getPSAppDataEntity()??>${srfclassname('${ctrl.get ...@@ -67,7 +67,7 @@ export default class <#if ctrl.getPSAppDataEntity()??>${srfclassname('${ctrl.get
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() public context: any; @Prop() public context!: any;
/** /**
* 视图参数 * 视图参数
...@@ -75,7 +75,7 @@ export default class <#if ctrl.getPSAppDataEntity()??>${srfclassname('${ctrl.get ...@@ -75,7 +75,7 @@ export default class <#if ctrl.getPSAppDataEntity()??>${srfclassname('${ctrl.get
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() public viewparams: any; @Prop() public viewparams!: any;
/** /**
* 视图状态事件 * 视图状态事件
......
...@@ -128,13 +128,13 @@ import { Environment } from '@/environments/environment'; ...@@ -128,13 +128,13 @@ import { Environment } from '@/environments/environment';
public action:any = ''; public action:any = '';
/** /**
* 分页面板统一资源存储对象 * 分页面板权限标识存储对象
* *
* @public * @public
* @type {*} * @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public authResourceObject:any = {<#list ctrl.getPSControls() as tabviewpanel>'${tabviewpanel.name}':{resourcetag:<#if tabviewpanel.getEmbeddedPSAppDEView()?? && tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()??>'${tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()}'<#else>null</#if><#if tabviewpanel.getPSDEOPPriv?? && tabviewpanel.getPSDEOPPriv()??>,actiontarget: 'SINGLEKEY',noprivdisplaymode:2,dataaccaction:'${tabviewpanel.getPSDEOPPriv().getName()}',visabled: true,disabled: false</#if>}<#if tabviewpanel_has_next>,</#if></#list>}; public authResourceObject:any = {<#list ctrl.getPSControls() as tabviewpanel>'${tabviewpanel.name}':{resourcetag:<#if tabviewpanel.getEmbeddedPSAppDEView()?? && tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()??>'${tabviewpanel.getEmbeddedPSAppDEView().getAccessKey()}'<#else>null</#if><#if tabviewpanel.getPSDEOPPriv?? && tabviewpanel.getPSDEOPPriv()??>,actiontarget: 'SINGLEKEY',noprivdisplaymode:2,dataaccaction:'${tabviewpanel.getPSDEOPPriv().getName()}'</#if>,visabled: true,disabled: false}<#if tabviewpanel_has_next>,</#if></#list>};
/** /**
* 被激活的分页面板 * 被激活的分页面板
...@@ -182,8 +182,8 @@ import { Environment } from '@/environments/environment'; ...@@ -182,8 +182,8 @@ import { Environment } from '@/environments/environment';
return mainState === false?false:true; return mainState === false?false:true;
if(!this.authResourceObject[name]) if(!this.authResourceObject[name])
return mainState === false?false:true; return mainState === false?false:true;
const resouceAuth:boolean = this.appAuthService.getResourcePermission(this.authResourceObject[name]['resourcetag']); const resourceAuth:boolean = this.appAuthService.getResourcePermission(this.authResourceObject[name]['resourcetag']);
return !resouceAuth?false:mainState?true:false; return !resourceAuth?false:mainState?true:false;
} }
/** /**
...@@ -267,6 +267,7 @@ import { Environment } from '@/environments/environment'; ...@@ -267,6 +267,7 @@ import { Environment } from '@/environments/environment';
if (!$event) { if (!$event) {
return; return;
} }
this.isInit = [];
this.isInit[$event] = true; this.isInit[$event] = true;
if (!this.viewState) { if (!this.viewState) {
return; return;
......
...@@ -10,19 +10,58 @@ ...@@ -10,19 +10,58 @@
color: #409eff; color: #409eff;
background-color: #ecf5ff; background-color: #ecf5ff;
} }
.el-collapse{
.el-collapse-item{
.el-collapse-item__wrap{
.el-collapse-item__content{
padding: 10px 0 10px 0;
}
}
}
}
.app-list-item { .app-list-item {
line-height: 34px; line-height: 34px;
border-radius:5px; padding: 12px 6px;
padding: 6px;
margin: 6px;
box-shadow: 0px 0px 2px 1px rgb(209, 208, 208);
background: #f7f7fa;
min-height: 24px; min-height: 24px;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #f0f0f0;
.app-list-item-content {
width: 70%;
display: flex;
align-items: center;
.item-icon {
width: 40px;
height: 40px;
margin-right: 14px;
img {
width: 40px;
height: 40px;
border-radius: 50%;
}
}
.item-content-text {
display: flex;
flex-direction: column;
.item-text {
font-size: 18px;
font-weight: bold;
}
.item-subtext {
color: #8c8c8c;
}
}
}
.app-list-item-date {
position: relative;
color: #8c8c8c;
}
} }
.app-list-item.isSelect { .app-list-item.isSelect {
background: #ecf5ff; background: #ecf5ff;
border-left: 5px solid #2d8cf0; border-radius: 2px;
box-shadow: 0px 0px 3px 1px #82bff7; border-color: rgb(197, 197, 197);
} }
.app-list-item:hover { .app-list-item:hover {
background: #ecf5ff; background: #ecf5ff;
...@@ -41,4 +80,27 @@ ...@@ -41,4 +80,27 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} <#if ctrl.getQuickPSDEToolbar?? && ctrl.getQuickPSDEToolbar()??>
\ No newline at end of file .quick-toolbar{
display: inline-block;
button{
background: #ebf3fb;
color: #2575ca;
border: 0;
}
}
</#if>
}
<#if ctrl.getBatchPSDEToolbar?? && ctrl.getBatchPSDEToolbar()??>
.list-pagination {
position: fixed;
background-color: #fff;
height: 50px;
bottom: 30px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
z-index: 5;
}
</#if>
\ No newline at end of file
...@@ -4,7 +4,7 @@ ${ctrl.render.code} ...@@ -4,7 +4,7 @@ ${ctrl.render.code}
<#else> <#else>
<layout class="app-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>"> <layout class="app-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>">
<#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??> <#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??>
<el-steps class="wizard-steps" :active="wizardForms.indexOf(activeForm)" finish-status="success"> <el-steps class="wizard-steps" :active="wizardForms.indexOf(activeForm)" finish-status="success" align-center>
<#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step> <#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step>
<el-step title="${step.getTitle()}"></el-step> <el-step title="${step.getTitle()}"></el-step>
</#list> </#list>
......
此差异已折叠。
<#ibizinclude>
../@MACRO/HTML/DEFAULT.html.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/CSS/DEFAULT.less.ftl
</#ibizinclude>
.map{
width: 80vw;
height: 70vh;
}
\ No newline at end of file
<#ibizinclude>
../@MACRO/CONTROL/CONTROL.vue.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/MODEL/MODEL_HEADER.ts.ftl
</#ibizinclude>
/**
* 地图项类型
*
* @returns {any[]}
* @memberof ${srfclassname('${ctrl.getCodeName()}')}${srfclassname('${ctrl.name}')}Mode
*/
public itemType: string = "";
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof ${srfclassname('${ctrl.getCodeName()}')}${srfclassname('${ctrl.name}')}Mode
*/
public getDataItems(): any[] {
let dataItems: any = [
<#-- 关联主实体的主键 -->
<#if ctrl.getPSAppDataEntity()??>
<#assign appDataEntity = ctrl.getPSAppDataEntity() />
<#if appDataEntity.isMajor() == false && appDataEntity.getMinorPSAppDERSs()??>
<#list appDataEntity.getMinorPSAppDERSs() as minorAppDERSs>
<#if minorAppDERSs.getMajorPSAppDataEntity()??>
<#assign majorAppDataEntity = minorAppDERSs.getMajorPSAppDataEntity() />
{
name: '${majorAppDataEntity.getCodeName()?lower_case}',
prop: '${majorAppDataEntity.getKeyPSAppDEField().getCodeName()?lower_case}'
},
</#if>
</#list>
</#if>
</#if>
{
name: 'itemType',
},
];
switch (this.itemType) {
<#-- 地图项实体映射 -->
<#if ctrl.getPSSysMapItems()??>
<#list ctrl.getPSSysMapItems() as mapItem>
<#if mapItem.getPSAppDataEntity()??>
case "${mapItem.getItemType()?lower_case}":
dataItems =
[
...dataItems,
{
name: 'longitude',
prop: '${mapItem.getLongitudePSAppDEField().getCodeName()?lower_case}'
},
{
name: 'latitude',
prop: '${mapItem.getLatitudePSAppDEField().getCodeName()?lower_case}'
},
{
// 高度
name: 'height',
prop: '<#if mapItem.getAltitudePSAppDEField?? && mapItem.getAltitudePSAppDEField()??>${mapItem.getAltitudePSAppDEField().getCodeName()?lower_case}</#if>'
},
{
// 背景颜色
name: 'height',
prop: '<#if mapItem.getBKColorPSAppDEField?? && mapItem.getBKColorPSAppDEField()??>${mapItem.getBKColorPSAppDEField().getCodeName()?lower_case}</#if>'
},
{
// 提示
name: 'tips',
prop: '<#if mapItem.getTipsPSAppDEField?? && mapItem.getTipsPSAppDEField()??>${mapItem.getTipsPSAppDEField().getCodeName()?lower_case}</#if>'
},
{
// 文本值
name: 'text',
prop: '<#if mapItem.getTextPSAppDEField?? && mapItem.getTextPSAppDEField()??>${mapItem.getTextPSAppDEField().getCodeName()?lower_case}</#if>'
},
{
// 排序
name: 'height',
prop: '<#if mapItem.getOrderValuePSAppDEField?? && mapItem.getOrderValuePSAppDEField()??>${mapItem.getOrderValuePSAppDEField().getCodeName()?lower_case}</#if>'
},
{
// 字体颜色
name: 'fontcolor',
prop: '<#if mapItem.getColorPSAppDEField?? && mapItem.getColorPSAppDEField()??>${mapItem.getColorPSAppDEField().getCodeName()?lower_case}</#if>'
},
{
// 数据项内容
name: 'content',
prop: '<#if mapItem.getContentPSDEField?? && mapItem.getContentPSDEField()??>${mapItem.getContentPSDEField().getCodeName()?lower_case}</#if>'
},
{
// 分组
name: 'group',
prop: '<#if mapItem.getGroupPSAppDEField?? && mapItem.getGroupPSAppDEField()??>${mapItem.getGroupPSAppDEField().getCodeName()?lower_case}</#if>'
},
{
// 图标
name: 'icon',
prop: '<#if mapItem.getIconPSAppDEField?? && mapItem.getIconPSAppDEField()??>${mapItem.getIconPSAppDEField().getCodeName()?lower_case}</#if>'
},
];
break;
</#if>
</#list>
</#if>
}
return dataItems;
}
<#ibizinclude>
../@MACRO/MODEL/MODEL_BOTTOM.ts.ftl
</#ibizinclude>
\ No newline at end of file
<#assign import_block>
<#if ctrl.getPSSysMapItems?? && ctrl.getPSSysMapItems()??>
<#list ctrl.getPSSysMapItems() as mapitem>
<#if mapitem.getPSAppDataEntity()??>
<#assign _appde = mapitem.getPSAppDataEntity() />
<#if _appde.getId() != appde.getId()>
<#if !P.exists("importService", _appde.getId(), "")>
import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffilepath2(_appde.getCodeName())}/${srffilepath2(_appde.getCodeName())}-service';
</#if>
</#if>
</#if>
</#list>
</#if>
</#assign>
<#ibizinclude>
../@MACRO/SERVICE/SERVICE_HEADER.ts.ftl
</#ibizinclude>
<#if ctrl.getPSSysMapItems?? && ctrl.getPSSysMapItems()??>
<#list ctrl.getPSSysMapItems() as mapitem>
<#if mapitem.getPSAppDataEntity()??>
<#assign _appde = mapitem.getPSAppDataEntity() />
<#if _appde.getId() != appde.getId()>
<#if !P.exists("importService", _appde.getId(), "")>
/**
* ${_appde.getLogicName()}服务对象
*
* @type {${srfclassname('${_appde.getCodeName()}')}Service}
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public ${_appde.getCodeName()?lower_case}Service: ${srfclassname('${_appde.getCodeName()}')}Service = new ${srfclassname('${_appde.getCodeName()}')}Service();
</#if>
</#if>
</#if>
</#list>
</#if>
/**
* 地图配置集合
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public mapConfig: any[] = [
<#if ctrl.getPSSysMapItems?? && ctrl.getPSSysMapItems()??>
<#list ctrl.getPSSysMapItems() as mapitem>
{
itemName: '${mapitem.getName()}',
itemType: '${mapitem.getItemType()}',
color : '${mapitem.getBKColor()}',
textColor : '${mapitem.getColor()}'
}<#if mapitem_has_next>,</#if>
</#list>
</#if>
];
/**
* 查询数据
*
* @param {string} action
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
@Errorlog
public search(action: string, context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let _this = this;
return new Promise((resolve: any, reject: any) => {
let promises:any = [];
let tempRequest:any;
<#if ctrl.getPSSysMapItems()??>
<#list ctrl.getPSSysMapItems() as mapitem>
<#if mapitem.getPSAppDataEntity()?? && mapitem.getPSDEDataSet()??>
<#assign _appde = mapitem.getPSAppDataEntity() />
<#assign deDataSet = mapitem.getPSDEDataSet() />
<#if !P.exists("importService3", _appde.getId() + deDataSet.getCodeName(), "")>
<#if _appde.getId() == appde.getId()>
tempRequest = this.handleRequestData(action,context,data,true,"${mapitem.getItemType()}");
promises.push(this.appEntityService.Fetch${deDataSet.getCodeName()}(tempRequest.context, tempRequest.data, isloading));
<#else>
tempRequest = this.handleRequestData(action,context,data,true,"${mapitem.getItemType()}");
promises.push(this.${_appde.getCodeName()?lower_case}Service.Fetch${deDataSet.getCodeName()}(tempRequest.context, tempRequest.data, isloading));
</#if>
</#if>
</#if>
</#list>
</#if>
Promise.all(promises).then((resArray: any) => {
let _data:any = [];
resArray.forEach((response:any,resIndex:number) => {
if (!response || response.status !== 200) {
return;
}
let _response: any = JSON.parse(JSON.stringify(response));
_response.data.forEach((item:any,index:number) =>{
_response.data[index].color = _this.mapConfig[resIndex].color;
_response.data[index].textColor = _this.mapConfig[resIndex].textColor;
_response.data[index].itemType = _this.mapConfig[resIndex].itemType;
});
;
_this.handleResponse(action, _response,false,_this.mapConfig[resIndex].itemType);
_data.push(..._response.data);
});
let result = {status: 200, data: _data};
resolve(result);
}).catch((response: any) => {
reject(response);
});
});
}
/**
* 处理request请求数据
*
* @param action 行为
* @param data 数据
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public handleRequestData(action: string,context:any ={},data: any = {},isMerge:boolean = false,itemType:string=""){
let model: any = this.getMode();
model.itemType = itemType;
return super.handleRequestData(action,context,data,isMerge);
}
/**
* 处理response返回数据
*
* @param {string} action
* @param {*} response
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public async handleResponse(action: string, response: any,isCreate:boolean = false,itemType:string=""){
let model: any = this.getMode();
model.itemType = itemType;
super.handleResponse(action,response,isCreate);
}
<#ibizinclude>
../@MACRO/SERVICE/SERVICE_BOTTOM.ts.ftl
</#ibizinclude>
\ No newline at end of file
CTRLTYPE=MAP
\ No newline at end of file
...@@ -21,7 +21,7 @@ ${item.render.code} ...@@ -21,7 +21,7 @@ ${item.render.code}
<#assign counter = uiaction.getPSAppCounter() /> <#assign counter = uiaction.getPSAppCounter() />
<Badge type="primary" v-show="${ModelsName}.${item.name}.visabled" :count="${counter.getCodeName()?lower_case}counterservice.counterData.<#if uiaction.getCounterId()??>${uiaction.getCounterId()}</#if>"> <Badge type="primary" v-show="${ModelsName}.${item.name}.visabled" :count="${counter.getCodeName()?lower_case}counterservice.counterData.<#if uiaction.getCounterId()??>${uiaction.getCounterId()}</#if>">
</#if> </#if>
<i-button v-show="${ModelsName}.${item.name}.visabled" :disabled="${ModelsName}.${item.name}.disabled" class='<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' @click="${ctrl.name}_click({ tag: '${item.name}' }, $event)"> <i-button v-show="${ModelsName}.${item.name}.visabled" :disabled="${ModelsName}.${item.name}.disabled" class='<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' v-loading:i-button @click="${ctrl.name}_click({ tag: '${item.name}' }, $event)">
<#if item.isShowIcon()><i class='<#if item.getPSSysImage()??><#assign img=item.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if></#if>'></i></#if> <#if item.isShowIcon()><i class='<#if item.getPSSysImage()??><#assign img=item.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if></#if>'></i></#if>
<#if item.isShowCaption()><span class='caption'>{{<#if langbase??>$t('${langbase}.${item.name}.caption')<#else>'${item.getCaption()}'</#if>}}</span></#if> <#if item.isShowCaption()><span class='caption'>{{<#if langbase??>$t('${langbase}.${item.name}.caption')<#else>'${item.getCaption()}'</#if>}}</span></#if>
</i-button> </i-button>
...@@ -40,7 +40,7 @@ ${item.render.code} ...@@ -40,7 +40,7 @@ ${item.render.code}
<#assign counter = uiaction.getPSAppCounter() /> <#assign counter = uiaction.getPSAppCounter() />
<Badge type="primary" v-show="${ModelsName}.${item.name}.visabled" :count="${counter.getCodeName()?lower_case}counterservice.counterData.<#if uiaction.getCounterId()??>${uiaction.getCounterId()}</#if>"> <Badge type="primary" v-show="${ModelsName}.${item.name}.visabled" :count="${counter.getCodeName()?lower_case}counterservice.counterData.<#if uiaction.getCounterId()??>${uiaction.getCounterId()}</#if>">
</#if> </#if>
<i-button v-show="${ModelsName}.${item.name}.visabled" :disabled="${ModelsName}.${item.name}.disabled" class='<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' @click="${ctrl.name}_click({ tag: '${item.name}' }, $event)"> <i-button v-show="${ModelsName}.${item.name}.visabled" :disabled="${ModelsName}.${item.name}.disabled" class='<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' v-loading:i-button @click="${ctrl.name}_click({ tag: '${item.name}' }, $event)">
<#if item.isShowIcon()><i class='<#if item.getPSSysImage()??><#assign img=item.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if></#if>'></i></#if> <#if item.isShowIcon()><i class='<#if item.getPSSysImage()??><#assign img=item.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>${img.getCssClass()}</#if></#if>'></i></#if>
<#if item.isShowCaption()><span class='caption'>{{<#if langbase??>$t('${langbase}.${item.name}.caption')<#else>'${item.getCaption()}'</#if>}}</span></#if> <#if item.isShowCaption()><span class='caption'>{{<#if langbase??>$t('${langbase}.${item.name}.caption')<#else>'${item.getCaption()}'</#if>}}</span></#if>
</i-button> </i-button>
......
...@@ -2,18 +2,20 @@ ...@@ -2,18 +2,20 @@
${item.render.code} ${item.render.code}
<#else> <#else>
<app-rawitem <app-rawitem
:viewparams="viewparams"
:context="context"
contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>" contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>"
sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>" sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>"
contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>" contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>"
<#if item.getRawContent?? && item.getRawContent()??>
rawContent="${item.getRawContent()}"
</#if>
<#if item.getHtmlContent?? && item.getHtmlContent()??> <#if item.getHtmlContent?? && item.getHtmlContent()??>
htmlContent="${item.getHtmlContent()}" :htmlContent='`${item.getHtmlContent()}`'
</#if> </#if>
<#if item.getPSSysImage?? && item.getPSSysImage()??> <#if item.getPSSysImage?? && item.getPSSysImage()??>
<#assign img=item.getPSSysImage()> <#assign img=item.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)> <#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
imageClass="${img.getCssClass()}"</#if></#if>> imageClass="${img.getCssClass()}"</#if></#if>>
<#if item.getContentType?? && item.getContentType() == 'RAW'>
${item.getRawContent()}
</#if>
</app-rawitem> </app-rawitem>
</#if> </#if>
\ No newline at end of file
...@@ -581,9 +581,17 @@ ${P.getLogicCode(singleFuncs,"LOGIC.vue").code} ...@@ -581,9 +581,17 @@ ${P.getLogicCode(singleFuncs,"LOGIC.vue").code}
item.items.map((singleItem:any) =>{ item.items.map((singleItem:any) =>{
if(!singleItem.hidden){ if(!singleItem.hidden){
item.hidden = false; item.hidden = false;
}else{
if(singleItem.items && singleItem.items.length >0){
singleItem.items.map((grandsonItem:any) =>{
if(!grandsonItem.hidden){
item.hidden = false;
}
})
}
} }
if(singleItem.items && singleItem.items.length >0){ if(item.items && item.items.length >0){
this.computeParentMenus(singleItem.items); this.computeParentMenus(item.items);
} }
}) })
} }
......
...@@ -298,7 +298,7 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -298,7 +298,7 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
*/ */
public createDefault(){ public createDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t> <#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getCreateDV?? && formdetail.getCreateDV()?? && formdetail.getCreateDV() !=""><#t> <#if (formdetail.getCreateDV?? || formdetail.getCreateDVT??) && (formdetail.getCreateDV()?? || formdetail.getCreateDVT()??) && (formdetail.getCreateDV() !="" || formdetail.getCreateDVT() != "")><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) { if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}')) {
<#if !(formdetail.getCreateDVT() == '')><#t> <#if !(formdetail.getCreateDVT() == '')><#t>
<#-- 网页请求 --> <#-- 网页请求 -->
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>"> <div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<div v-if="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('<#if langbase??>${langbase}.nodata</#if>')}}</div> <div v-show="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('<#if langbase??>${langbase}.nodata</#if>')}}</div>
<div v-else class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}px<#else>100%</#if>;padding: 6px 0;"></div> <div v-show="!isNoData" class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()?c}px;</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()?c}px<#else>100%</#if>;padding: 6px 0;"></div>
</div> </div>
</#if> </#if>
</template> </template>
...@@ -300,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char ...@@ -300,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
const parentdata: any = {}; const parentdata: any = {};
this.$emit('beforeload', parentdata); this.$emit('beforeload', parentdata);
Object.assign(arg, parentdata); Object.assign(arg, parentdata);
Object.assign(arg,{viewparams:this.viewparams,page:0,size:1000}); let tempViewParams:any = parentdata.viewparams?parentdata.viewparams:{};
Object.assign(tempViewParams,JSON.parse(JSON.stringify(this.viewparams)));
Object.assign(arg,{viewparams:tempViewParams});
Object.assign(arg,{page:0,size:1000});
<#if ctrl.getPSDEDataSet()??> <#if ctrl.getPSDEDataSet()??>
<#assign appDataSet = ctrl.getPSDEDataSet() /> <#assign appDataSet = ctrl.getPSDEDataSet() />
<#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??> <#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??>
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>"> <div class="app-data-chart<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>">
<div v-if="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('<#if langbase??>${langbase}.nodata</#if>')}}</div> <div v-show="isNoData" class="chart-no-data"><i class="el-icon-data-analysis"></i>{{$t('<#if langbase??>${langbase}.nodata</#if>')}}</div>
<div v-else class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()};</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()}px<#else>100%</#if>;padding: 6px 0;"></div> <div v-show="!isNoData" class="app-charts" :id="chartId" style="<#if ctrl.getWidth() gt 0>width: ${ctrl.getWidth()?c}px;</#if>height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()?c}px<#else>100%</#if>;padding: 6px 0;"></div>
</div> </div>
</#if> </#if>
</template> </template>
...@@ -300,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char ...@@ -300,7 +300,10 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
const parentdata: any = {}; const parentdata: any = {};
this.$emit('beforeload', parentdata); this.$emit('beforeload', parentdata);
Object.assign(arg, parentdata); Object.assign(arg, parentdata);
Object.assign(arg,{viewparams:this.viewparams,page:0,size:1000}); let tempViewParams:any = parentdata.viewparams?parentdata.viewparams:{};
Object.assign(tempViewParams,JSON.parse(JSON.stringify(this.viewparams)));
Object.assign(arg,{viewparams:tempViewParams});
Object.assign(arg,{page:0,size:1000});
<#if ctrl.getPSDEDataSet()??> <#if ctrl.getPSDEDataSet()??>
<#assign appDataSet = ctrl.getPSDEDataSet() /> <#assign appDataSet = ctrl.getPSDEDataSet() />
<#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??> <#if appDataSet.getMajorSortDir()?? && appDataSet.getMajorSortPSDEField()??>
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
position: relative;
// 排序栏样式 // 排序栏样式
.bar-container{ .bar-container{
padding: 6px 8px; padding: 6px 8px;
...@@ -75,7 +76,13 @@ ...@@ -75,7 +76,13 @@
.el-collapse{ .el-collapse{
width: 100%; width: 100%;
.el-collapse-item__content{ .el-collapse-item__content{
padding: 10px 0px 0px 0px;
display: flex; display: flex;
.item-nodata {
padding-bottom: 10px;
width: 100%;
text-align: center;
}
} }
} }
.el-collapse-item__header.is-active{ .el-collapse-item__header.is-active{
...@@ -98,23 +105,35 @@ ...@@ -98,23 +105,35 @@
width: 100%; width: 100%;
cursor: pointer; cursor: pointer;
border: 2px solid transparent; border: 2px solid transparent;
.single-card-default { .data-view-item{
.ivu-tooltip{ .single-card-default {
.ivu-tooltip-rel{ .ivu-tooltip{
width: 150px; .ivu-tooltip-rel{
white-space: nowrap; width: 150px;
text-overflow: ellipsis; white-space: nowrap;
overflow: hidden; text-overflow: ellipsis;
text-align: left; overflow: hidden;
padding-left: 5px; text-align: left;
font-size: 18px; padding-left: 5px;
font-weight: 800; font-size: 18px;
} font-weight: 800;
} }
}
}
.single-card-img {
width: 150px;
height: calc(100% - 32px);
}
} }
.single-card-img { .data-view-item-action{
width: 150px; button{
height: calc(100% - 32px); margin: 0 3px;
cursor: pointer;
padding:3px;
}
button:hover{
color: #409eff;
}
} }
} }
.isselected{ .isselected{
...@@ -149,6 +168,38 @@ ...@@ -149,6 +168,38 @@
.el-backtop { .el-backtop {
position: absolute; position: absolute;
} }
<#if ctrl.getBatchPSDEToolbar?? && ctrl.getBatchPSDEToolbar()??>
.drag-filed{
position: absolute;
height: 42px;
width: 100%;
top: 40px;
display: flex;
justify-content: flex-end;
align-items: center;
text-align: center;
font-size: 20px;
z-index: 5;
.dataview-pagination-icon{
width: 30px;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
border:1px solid #dcdee2;
border-radius: 50%;
background-color: #FFF;
margin: 3px;
position: absolute;
right: 0;
}
.dataview-pagination-icon:hover{
background-color: #409eff;
color: #fff;
}
}
</#if>
} }
<#ibizinclude> <#ibizinclude>
../@MACRO/CSS/DEFAULT.less.ftl ../@MACRO/CSS/DEFAULT.less.ftl
......
...@@ -9,22 +9,6 @@ ...@@ -9,22 +9,6 @@
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<div :class='calendarClass<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>'> <div :class='calendarClass<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??><#assign singleCss = ctrl.getPSSysCss()> ${singleCss.getCssName()}</#if>'>
<#if ctrl.getQuickPSDEToolbar?? && ctrl.getQuickPSDEToolbar()??>
<span class="quick-toolbar">
<#assign quickToolbar = ctrl.getQuickPSDEToolbar()/>
<@ibizindent blank=12>
${P.getCtrlCode(quickToolbar, 'CONTROL.html').code}
</@ibizindent>
</span>
</#if>
<#if ctrl.getBatchPSDEToolbar?? && ctrl.getBatchPSDEToolbar()??>
<span v-if="selections.length > 0" class="batch-toolbar">
<#assign batchToolbar = ctrl.getBatchPSDEToolbar()/>
<@ibizindent blank=12>
${P.getCtrlCode(batchToolbar, 'CONTROL.html').code}
</@ibizindent>
</span>
</#if>
<context-menu-container> <context-menu-container>
<#if ctrl.getCalendarStyle?? && ctrl.getCalendarStyle() == 'TIMELINE'> <#if ctrl.getCalendarStyle?? && ctrl.getCalendarStyle() == 'TIMELINE'>
<template v-if="events.length >0"> <template v-if="events.length >0">
...@@ -60,9 +44,17 @@ ${ctrl.render.code} ...@@ -60,9 +44,17 @@ ${ctrl.render.code}
</template> </template>
<template v-else> <template v-else>
<span class="app-data-empty">{{ $t('<#if langbase??>${langbase}.nodata</#if>') }}</span> <span class="app-data-empty">{{ $t('<#if langbase??>${langbase}.nodata</#if>') }}</span>
<#if ctrl.getQuickPSDEToolbar?? && ctrl.getQuickPSDEToolbar()??>
<span class="quick-toolbar">
<#assign quickToolbar = ctrl.getQuickPSDEToolbar()/>
<@ibizindent blank=12>
${P.getCtrlCode(quickToolbar, 'CONTROL.html').code}
</@ibizindent>
</span>
</#if>
</template> </template>
<#else> <#else>
<template v-if="events.length >0"> <template>
<div class="event-legends"> <div class="event-legends">
<#if ctrl.getPSSysCalendarItems()??> <#if ctrl.getPSSysCalendarItems()??>
<#list ctrl.getPSSysCalendarItems() as calendarItem> <#list ctrl.getPSSysCalendarItems() as calendarItem>
...@@ -96,11 +88,16 @@ ${ctrl.render.code} ...@@ -96,11 +88,16 @@ ${ctrl.render.code}
<el-date-picker style="width: 200px;" v-model="selectedGotoDate" type="date"></el-date-picker> <el-date-picker style="width: 200px;" v-model="selectedGotoDate" type="date"></el-date-picker>
</modal> </modal>
</template> </template>
<template v-else>
<span class="app-data-empty">{{ $t('<#if langbase??>${langbase}.nodata</#if>') }}</span>
</template>
</#if> </#if>
</context-menu-container> </context-menu-container>
<#if ctrl.getBatchPSDEToolbar?? && ctrl.getBatchPSDEToolbar()??>
<span v-if="selections.length > 0" class="batch-toolbar">
<#assign batchToolbar = ctrl.getBatchPSDEToolbar()/>
<@ibizindent blank=12>
${P.getCtrlCode(batchToolbar, 'CONTROL.html').code}
</@ibizindent>
</span>
</#if>
</div> </div>
</#if> </#if>
</template> </template>
...@@ -454,10 +451,12 @@ FullCalendar, ...@@ -454,10 +451,12 @@ FullCalendar,
if(fetchInfo && fetchInfo.query){ if(fetchInfo && fetchInfo.query){
Object.assign(arg,{query : fetchInfo.query}); Object.assign(arg,{query : fetchInfo.query});
} }
Object.assign(arg,{viewparams:this.viewparams});
const parentdata: any = {}; const parentdata: any = {};
this.$emit('beforeload', parentdata); this.$emit('beforeload', parentdata);
Object.assign(arg, parentdata); Object.assign(arg, parentdata);
let tempViewParams: any = parentdata.viewparams ? parentdata.viewparams : {};
Object.assign(tempViewParams, JSON.parse(JSON.stringify(this.viewparams)));
Object.assign(arg, { viewparams: tempViewParams });
// 处理events数据 // 处理events数据
let _this = this; let _this = this;
let handleEvents = ()=>{ let handleEvents = ()=>{
...@@ -604,6 +603,7 @@ FullCalendar, ...@@ -604,6 +603,7 @@ FullCalendar,
let _this = this; let _this = this;
let view: any = {}; let view: any = {};
let _context: any = Object.assign({},this.context); let _context: any = Object.assign({},this.context);
let _viewparams:any = Object.assign({start:event.start,end:event.end},this.viewparams);
switch(event.itemType) { switch(event.itemType) {
<#if ctrl.getPSSysCalendarItems()??> <#if ctrl.getPSSysCalendarItems()??>
<#list ctrl.getPSSysCalendarItems() as calendarItem> <#list ctrl.getPSSysCalendarItems() as calendarItem>
...@@ -627,16 +627,16 @@ FullCalendar, ...@@ -627,16 +627,16 @@ FullCalendar,
if(!view.viewname){ if(!view.viewname){
return; return;
} else if (Object.is(view.placement, 'INDEXVIEWTAB') || Object.is(view.placement, '')) { } else if (Object.is(view.placement, 'INDEXVIEWTAB') || Object.is(view.placement, '')) {
const routePath = this.$viewTool.buildUpRoutePath(this.$route, this.context, view.deResParameters, view.parameters, [JSON.parse(JSON.stringify(_context))] , JSON.parse(JSON.stringify(this.viewparams))); const routePath = this.$viewTool.buildUpRoutePath(this.$route, this.context, view.deResParameters, view.parameters, [JSON.parse(JSON.stringify(_context))] , _viewparams);
this.$router.push(routePath); this.$router.push(routePath);
} else { } else {
let container: Subject<any> = new Subject(); let container: Subject<any> = new Subject();
if (Object.is(view.placement, 'POPOVER')) { if (Object.is(view.placement, 'POPOVER')) {
container = this.$apppopover.openPop(isOriginData ? $event2 : $event.jsEvent, view,JSON.parse(JSON.stringify(_context)), JSON.parse(JSON.stringify(this.viewparams))); container = this.$apppopover.openPop(isOriginData ? $event2 : $event.jsEvent, view,JSON.parse(JSON.stringify(_context)), _viewparams);
} else if (Object.is(view.placement, 'POPUPMODAL')) { } else if (Object.is(view.placement, 'POPUPMODAL')) {
container = this.$appmodal.openModal(view, JSON.parse(JSON.stringify(_context)), JSON.parse(JSON.stringify(this.viewparams))); container = this.$appmodal.openModal(view, JSON.parse(JSON.stringify(_context)), _viewparams);
} else if (view.placement.startsWith('DRAWER')) { } else if (view.placement.startsWith('DRAWER')) {
container = this.$appdrawer.openDrawer(view, JSON.parse(JSON.stringify(_context)), JSON.parse(JSON.stringify(this.viewparams))); container = this.$appdrawer.openDrawer(view, JSON.parse(JSON.stringify(_context)), _viewparams);
} }
container.subscribe((result: any) => { container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, 'OK')) { if (!result || !Object.is(result.ret, 'OK')) {
......
...@@ -9,9 +9,19 @@ ...@@ -9,9 +9,19 @@
.calendar{ .calendar{
height:100%; height:100%;
overflow: auto; overflow: auto;
.context-menu-container {
height: calc(100% - 70px);
}
.el-timeline{ .el-timeline{
padding-left: 2px; padding-left: 2px;
} }
.app-data-empty{
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.event-legends{ .event-legends{
width: 100%; width: 100%;
text-align: center; text-align: center;
...@@ -90,12 +100,4 @@ ...@@ -90,12 +100,4 @@
text-align: center; text-align: center;
} }
} }
}
.calendarClass{
.app-data-empty{
margin: 0 auto;
display: flex;
align-items: center;
justify-content: center;
}
} }
\ No newline at end of file
...@@ -285,7 +285,23 @@ ...@@ -285,7 +285,23 @@
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public created() { public created() {
this.load(); this.afterCreated();
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterCreated() {
this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
if (Object.is('load', action)) {
this.load(data);
}
});
} }
/** /**
...@@ -334,7 +350,7 @@ ...@@ -334,7 +350,7 @@
* 打开编辑数据 * 打开编辑数据
* *
* @returns * @returns
* @memberof TreeTableBase * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public opendata(args: any) { public opendata(args: any) {
if(this.selections.length === 0) { if(this.selections.length === 0) {
...@@ -355,6 +371,27 @@ ...@@ -355,6 +371,27 @@
</#if> </#if>
} }
/**
* vue 生命周期
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public destroyed() {
this.afterDestroy();
}
/**
* 执行destroyed后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterDestroy() {
if (this.viewStateEvent) {
this.viewStateEvent.unsubscribe();
}
}
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl ../@MACRO/CONTROL/CONTROL_BOTTOM-BASE.vue.ftl
</#ibizinclude> </#ibizinclude>
......
<#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude>
<template> <template>
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
...@@ -24,6 +27,7 @@ ...@@ -24,6 +27,7 @@
@check="onCheck" @check="onCheck"
@current-change="selectionChange" @current-change="selectionChange"
:filter-node-method="filterNode" :filter-node-method="filterNode"
:empty-text="$t('<#if langbase??>${langbase}.nodata</#if>')"
> >
<template slot-scope="{ node, data }"> <template slot-scope="{ node, data }">
<context-menu :ref='data.id' :isBlocked="true" :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu" @showContext="showContext(data,$event)"> <context-menu :ref='data.id' :isBlocked="true" :contextMenuStyle="{width: '100%'}" :data="node" :renderContent="renderContextMenu" @showContext="showContext(data,$event)">
...@@ -141,7 +145,7 @@ import UIService from '@/uiservice/ui-service'; ...@@ -141,7 +145,7 @@ import UIService from '@/uiservice/ui-service';
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
@Prop() public selectedData?: string; @Prop() public selectedData!: string;
/** /**
* 选中值变化 * 选中值变化
...@@ -270,7 +274,7 @@ import UIService from '@/uiservice/ui-service'; ...@@ -270,7 +274,7 @@ import UIService from '@/uiservice/ui-service';
<#if childCtrl.getControlType() == "CONTEXTMENU"> <#if childCtrl.getControlType() == "CONTEXTMENU">
<#if childCtrl.getPSDEToolbarItems()??> <#if childCtrl.getPSDEToolbarItems()??>
<#list childCtrl.getPSDEToolbarItems() as item> <#list childCtrl.getPSDEToolbarItems() as item>
${childCtrl.getOwner().getNodeType()}_${item.name}: {name:'${item.name}',nodeOwner:'${childCtrl.getOwner().getNodeType()}',<#if item.getPSUIAction()??><#assign uiaction=item.getPSUIAction()>type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if><#if uiaction.getNoPrivDisplayMode(view)??>, noprivdisplaymode:${uiaction.getNoPrivDisplayMode(view)}</#if><#if uiaction.getDataAccessAction()??>, dataaccaction:'${uiaction.getDataAccessAction()}'</#if>, visabled: true, disabled: false</#if>}, ${childCtrl.getOwner().getNodeType()}_${item.name}: {name:'${item.name}',nodeOwner:'${childCtrl.getOwner().getNodeType()}',<#if item.getPSUIAction?? && item.getPSUIAction()??><#assign uiaction=item.getPSUIAction()>type: '${uiaction.getUIActionType()}', tag: '${uiaction.getUIActionTag()}'<#if (uiaction.getActionTarget()!="")>, actiontarget: '${uiaction.getActionTarget()}'</#if><#if uiaction.getNoPrivDisplayMode(view)??>, noprivdisplaymode:${uiaction.getNoPrivDisplayMode(view)}</#if><#if uiaction.getDataAccessAction()??>, dataaccaction:'${uiaction.getDataAccessAction()}'</#if>, visabled: true, disabled: false</#if>},
</#list> </#list>
</#if> </#if>
</#if> </#if>
......
...@@ -409,7 +409,7 @@ ...@@ -409,7 +409,7 @@
public onDrViewDatasChange($event: any): void { public onDrViewDatasChange($event: any): void {
<#if ctrl.getPSDETree()??> <#if ctrl.getPSDETree()??>
<#assign tree = ctrl.getPSDETree()/> <#assign tree = ctrl.getPSDETree()/>
this.viewState.next({ tag: '${tree.name}', action: 'refresh_current' }); this.viewState.next({ tag: '${tree.name}', action: 'refresh_parent' });
</#if> </#if>
} }
......
...@@ -16,12 +16,12 @@ ...@@ -16,12 +16,12 @@
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
<layout class="app-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>"> <layout class="app-state-wizard<#if ctrl.getPSSysCss?? && ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if>">
<#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??> <#if ctrl.getPSDEWizard?? && ctrl.getPSDEWizard()?? && ctrl.getPSDEWizard().getPSDEWizardSteps?? && ctrl.getPSDEWizard().getPSDEWizardSteps()??>
<div class="view-steps"> <div class="view-steps">
<div class="background-box"></div> <div class="background-box"></div>
<div class="steps_icon" @click="handleClick('PRE')"><i class="el-icon-arrow-left"></i></div> <div class="steps_icon" @click="handleClick('PRE')"><i class="el-icon-arrow-left"></i></div>
<el-steps class="wizard-steps" :active="(wizardForms.indexOf(activeForm) + 1)" finish-status="success"> <el-steps class="wizard-steps" :active="(wizardForms.indexOf(activeForm) + 1)" finish-status="success" align-center>
<#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step> <#list ctrl.getPSDEWizard().getPSDEWizardSteps() as step>
<el-step :class="{'app-active-step':activeForm==='<@getStepForm ctrlmodel=ctrl step=step />'?true:false}"> <el-step :class="{'app-active-step':activeForm==='<@getStepForm ctrlmodel=ctrl step=step />'?true:false}">
<template v-slot:title> <template v-slot:title>
...@@ -37,16 +37,16 @@ ...@@ -37,16 +37,16 @@
<#if ctrl.getPSDEEditForms()??> <#if ctrl.getPSDEEditForms()??>
<#list ctrl.getPSDEEditForms() as form> <#list ctrl.getPSDEEditForms() as form>
<#assign handler = form.getPSAjaxControlHandler() /> <#assign handler = form.getPSAjaxControlHandler() />
<el-popover v-model="stepVisiable['${form.getName()}']" ref="${form.getName()}_popover" popper-class="app-wizard-popover-container" placement="bottom-<#if form_has_next>start<#else>end</#if>" trigger="click"> <el-popover v-model="stepVisiable['${form.getName()}']" ref="${form.getName()}_popover" popper-class="app-state-wizard-popover-container" placement="bottom-<#if form_has_next>start<#else>end</#if>" trigger="click">
<div class="app-wizard-container"> <div class="app-state-wizard-container">
<div class="app-wizard-header"> <div class="app-state-wizard-header">
<div class="app-wizard-header-extra"> <div class="app-state-wizard-header-extra">
<Icon type="md-open" size="18" @click="handleOPen('${form.getName()}')"/> <Icon type="md-open" size="18" @click="handleOPen('${form.getName()}')"/>
<Icon type="md-close" size="18" @click="handleClose('${form.getName()}')"/> <Icon type="md-close" size="18" @click="handleClose('${form.getName()}')"/>
</div> </div>
</div> </div>
<div class="popover-title">${form.getLogicName()}</div> <div class="popover-title">${form.getLogicName()}</div>
<div class="app-wizard-content"> <div class="app-state-wizard-content">
<view_${form.getName()} <view_${form.getName()}
:key="'${form.name}'" :key="'${form.name}'"
:viewState='wizardState' :viewState='wizardState'
...@@ -64,14 +64,14 @@ ...@@ -64,14 +64,14 @@
ref='${form.name}'> ref='${form.name}'>
</view_${form.getName()}> </view_${form.getName()}>
</div> </div>
<div class="app-wizard-footer"> <div class="app-state-wizard-footer">
<i-button v-if="isVisiable('${form.name}','PREV')" @click="onClickPrev('${form.name}')" ><Icon type="ios-arrow-back"></Icon></i-button> <i-button v-if="isVisiable('${form.name}','PREV')" @click="onClickPrev('${form.name}')" ><Icon type="ios-arrow-back"></Icon></i-button>
<i-button v-if="isVisiable('${form.name}','NEXT')" @click="onClickNext('${form.name}')" type="primary" long>{{$t('app.wizardPanel.next')}}</i-button> <i-button v-if="isVisiable('${form.name}','NEXT')" @click="onClickNext('${form.name}')" type="primary" long>{{$t('app.wizardPanel.next')}}</i-button>
<i-button v-if="isVisiable('${form.name}','FINISH')" @click="onClickFinish('${form.name}')" type="primary" long>{{$t('app.wizardPanel.complete')}}</i-button> <i-button v-if="isVisiable('${form.name}','FINISH')" @click="onClickFinish('${form.name}')" type="primary" long>{{$t('app.wizardPanel.complete')}}</i-button>
</div> </div>
</div> </div>
</el-popover> </el-popover>
<drawer class="app-wizard-drawer" :closable="false" :value="drawerOpenStatus.isOpen && drawerOpenStatus.formName == '${form.name}'" <drawer class="app-state-wizard-drawer" :closable="false" :value="drawerOpenStatus.isOpen && drawerOpenStatus.formName == '${form.name}'"
:width="600" title="${form.getLogicName()}" @on-visible-change="onVisibleChange($event)"> :width="600" title="${form.getLogicName()}" @on-visible-change="onVisibleChange($event)">
<view_${form.getName()} <view_${form.getName()}
:key="'${form.name}'" :key="'${form.name}'"
......
.app-wizard { .app-state-wizard {
background: #fff; background: #fff;
.view-steps{ .view-steps{
display: flex; display: flex;
...@@ -72,30 +72,30 @@ ...@@ -72,30 +72,30 @@
border-top: 2px solid rgb(225, 225, 225); border-top: 2px solid rgb(225, 225, 225);
} }
} }
.app-wizard-popover-container{ .app-state-wizard-popover-container{
.app-wizard-container{ .app-state-wizard-container{
width: 100%; width: 100%;
.popover-title{ .popover-title{
position: absolute; position: absolute;
top: 14px; top: 14px;
left: 13px; left: 13px;
} }
.app-wizard-header{ .app-state-wizard-header{
width: 100%; width: 100%;
height: 30px; height: 30px;
line-height: 22px; line-height: 22px;
padding: 2px; padding: 2px;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
margin-bottom: 10px; margin-bottom: 10px;
.app-wizard-header-extra{ .app-state-wizard-header-extra{
float: right; float: right;
} }
} }
.app-wizard-content{ .app-state-wizard-content{
width: 100%; width: 100%;
padding: 4px 0px; padding: 4px 0px;
} }
.app-wizard-footer{ .app-state-wizard-footer{
display: flex; display: flex;
} }
} }
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
.el-popper[x-placement^=bottom] { .el-popper[x-placement^=bottom] {
margin-top: 0px; margin-top: 0px;
} }
.app-wizard-drawer{ .app-state-wizard-drawer{
.app-form { .app-form {
height: calc(100% - 51px); height: calc(100% - 51px);
} }
......
...@@ -362,8 +362,16 @@ GanttElastic, ...@@ -362,8 +362,16 @@ GanttElastic,
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public created() { public created() {
this.afterCreated();
}
/**
* 执行created后的逻辑
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public afterCreated() {
this.locale = this.$i18n.locale; this.locale = this.$i18n.locale;
this.load();
if(AppCenterService && AppCenterService.getMessageCenter()){ if(AppCenterService && AppCenterService.getMessageCenter()){
this.appStateEvent = AppCenterService.getMessageCenter().subscribe(({ name, action, data }) =>{ this.appStateEvent = AppCenterService.getMessageCenter().subscribe(({ name, action, data }) =>{
if(!Object.is(name,"${ctrl.getPSAppDataEntity().getCodeName()}")){ if(!Object.is(name,"${ctrl.getPSAppDataEntity().getCodeName()}")){
...@@ -374,7 +382,15 @@ GanttElastic, ...@@ -374,7 +382,15 @@ GanttElastic,
} }
}) })
} }
} this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }) => {
if (!Object.is(tag, this.name)) {
return;
}
if (Object.is('load', action)) {
this.load(data);
}
});
}
/** /**
* 点击事件 * 点击事件
...@@ -408,6 +424,9 @@ GanttElastic, ...@@ -408,6 +424,9 @@ GanttElastic,
if(this.appStateEvent){ if(this.appStateEvent){
this.appStateEvent.unsubscribe(); this.appStateEvent.unsubscribe();
} }
if(this.viewStateEvent){
this.viewStateEvent.unsubscribe();
}
<#if destroyed_block??> <#if destroyed_block??>
${destroyed_block} ${destroyed_block}
</#if> </#if>
......
...@@ -11,9 +11,17 @@ ${ctrl.render.code} ...@@ -11,9 +11,17 @@ ${ctrl.render.code}
<#if ctrl.groupRender??> <#if ctrl.groupRender??>
${ctrl.groupRender.code} ${ctrl.groupRender.code}
<#else> <#else>
<div :key="group + index" class="dataview-group-content" style="<#if ctrl.getGroupWidth() gt 0>width: ${ctrl.getGroupWidth()?c}px;<#else>flex-grow: 1;</#if>"> <div :key="index" class="dataview-group-folading-kanban">
<div class="dataview-group-icon">
<Icon :type="group.folding ? 'md-arrow-dropright' : 'md-arrow-dropleft'" size="25" @click="onClick(group,index)"/>
</div>
<div class="dataview-group-folding">
<span>{{getGroupText(group.value)}}({{group.items.length}})</span>
</div>
</div>
<div :key="group + index" class="dataview-group-content dataview-group-kanban" style="<#if ctrl.getGroupWidth() gt 0>width: ${ctrl.getGroupWidth()?c}px;<#else>flex-grow: 1;</#if>">
<div class="dataview-group-header<#if ctrl.getGroupPSSysCss()??> ${ctrl.getGroupPSSysCss().getCssName()}</#if>"> <div class="dataview-group-header<#if ctrl.getGroupPSSysCss()??> ${ctrl.getGroupPSSysCss().getCssName()}</#if>">
{{ getGroupText(group.name) }} {{ getGroupText(group.value) }}
<#if ctrl.getGroupPSUIActionGroup()??> <#if ctrl.getGroupPSUIActionGroup()??>
<Poptip trigger="hover" content="content" placement="bottom-end" style="float: right;"> <Poptip trigger="hover" content="content" placement="bottom-end" style="float: right;">
<Icon type="md-more" /> <Icon type="md-more" />
...@@ -38,11 +46,11 @@ ${ctrl.render.code} ...@@ -38,11 +46,11 @@ ${ctrl.render.code}
</Poptip> </Poptip>
</#if> </#if>
</div> </div>
<draggable :list="group.items" group="${ctrl.name}" class="dataview-group-items" @change="onDragChange($event, group.name)"> <draggable :list="group.items" group="${ctrl.name}" class="dataview-group-items" @change="onDragChange($event, group.value)">
<div v-for="(item, i) in group.items" :key="i" :class="{'dataview-group-item': true, 'is-select': item.isselected}" @click="handleClick(item)" @dblclick="handleDblClick(item)"> <div v-for="(item, i) in group.items" :key="i" :class="{'dataview-group-item': true, 'is-select': item.isselected}" @click="handleClick(item)" @dblclick="handleDblClick(item)">
<#if ctrl.getItemPSLayoutPanel()??> <#if ctrl.getItemPSLayoutPanel()??>
<#assign panel = ctrl.getItemPSLayoutPanel()> <#assign panel = ctrl.getItemPSLayoutPanel()>
<layout_${panel.getName()} name='${panel.name}' :inputData="item"></layout_${panel.getName()}> <layout_${panel.getName()} name='${panel.name}' :inputData="item" @panelDataChange="($event)=>{onPanelDataChange(item,$event)}"></layout_${panel.getName()}>
<#elseif ctrl.itemRender??> <#elseif ctrl.itemRender??>
${ctrl.itemRender.code} ${ctrl.itemRender.code}
<#else> <#else>
...@@ -81,6 +89,7 @@ ${ctrl.render.code} ...@@ -81,6 +89,7 @@ ${ctrl.render.code}
</template> </template>
<#assign import_block> <#assign import_block>
import draggable from "vuedraggable"; import draggable from "vuedraggable";
import CodeListService from '@codelist/codelist-service';
</#assign> </#assign>
<#assign component_block> <#assign component_block>
draggable, draggable,
...@@ -235,6 +244,22 @@ draggable, ...@@ -235,6 +244,22 @@ draggable,
*/ */
public selections: Array<any> = []; public selections: Array<any> = [];
/**
* 代码表服务
*
* @type {CodeListService}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public codeListService:CodeListService = new CodeListService( {$store: this.$store});
/**
* 代码表数据
*
* @type {Array<any>}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public allCodeList:Array<any> = [];
/** /**
* 当前页 * 当前页
* *
...@@ -296,13 +321,12 @@ draggable, ...@@ -296,13 +321,12 @@ draggable,
*/ */
public groupMode: string = '${ctrl.getGroupMode()}' public groupMode: string = '${ctrl.getGroupMode()}'
/** /**
* 分组模式 * 分组代码表
* *
* @type {string} * @type {string}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public groupCodelist: string = '<#if ctrl.getGroupPSCodeList()??>${ctrl.getGroupPSCodeList().getCodeName()}</#if>' public groupCodelist: any = {<#if ctrl.getGroupPSCodeList()??>type:'${ctrl.getGroupPSCodeList().getCodeListType()}',tag:'${ctrl.getGroupPSCodeList().getCodeName()}'</#if>};
/** /**
* Vue声明周期,组件挂载完毕 * Vue声明周期,组件挂载完毕
* *
...@@ -413,7 +437,7 @@ draggable, ...@@ -413,7 +437,7 @@ draggable,
* @param {boolean} [isReset=false] 是否重置items * @param {boolean} [isReset=false] 是否重置items
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public load(opt: any = {}, isReset: boolean = false): void { public async load(opt: any = {}, isReset: boolean = false) {
if(!this.fetchAction){ if(!this.fetchAction){
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: '${view.getName()}' + (this.$t('app.kanban.notConfig.fetchAction') as string) }); this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: '${view.getName()}' + (this.$t('app.kanban.notConfig.fetchAction') as string) });
return; return;
...@@ -585,7 +609,7 @@ draggable, ...@@ -585,7 +609,7 @@ draggable,
Object.assign(arg, { viewparams: this.viewparams }); Object.assign(arg, { viewparams: this.viewparams });
let _context = JSON.parse(JSON.stringify(this.context)); let _context = JSON.parse(JSON.stringify(this.context));
<#if ctrl.getPSAppDataEntity()??> <#if ctrl.getPSAppDataEntity()??>
Object.assign(_context, { ${ctrl.getPSAppDataEntity().getCodeName()?lower_case}: opt.task }); Object.assign(_context, { ${ctrl.getPSAppDataEntity().getCodeName()?lower_case}: opt.srfkey });
</#if> </#if>
const post: Promise<any> = this.service.update(this.updateGroupAction, _context, arg, this.showBusyIndicator); const post: Promise<any> = this.service.update(this.updateGroupAction, _context, arg, this.showBusyIndicator);
post.then((response: any) => { post.then((response: any) => {
...@@ -618,7 +642,7 @@ draggable, ...@@ -618,7 +642,7 @@ draggable,
* @param {} * @param {}
* @memberof ${srfclassname('${ctrl.codeName}')}Base * @memberof ${srfclassname('${ctrl.codeName}')}Base
*/ */
public setGroups() { public async setGroups() {
if(!this.isGroup || !this.groupField || Object.is(this.groupMode, 'NONE')) { if(!this.isGroup || !this.groupField || Object.is(this.groupMode, 'NONE')) {
return; return;
} }
...@@ -629,6 +653,7 @@ draggable, ...@@ -629,6 +653,7 @@ draggable,
if(!group) { if(!group) {
this.groups.push({ this.groups.push({
name: item[this.groupField], name: item[this.groupField],
value: item[this.groupField],
items: this.getGroupItems(item[this.groupField]) items: this.getGroupItems(item[this.groupField])
}) })
} }
...@@ -636,11 +661,13 @@ draggable, ...@@ -636,11 +661,13 @@ draggable,
} }
if(Object.is(this.groupMode, 'CODELIST') && this.groupCodelist) { if(Object.is(this.groupMode, 'CODELIST') && this.groupCodelist) {
this.groups = []; this.groups = [];
let codelist: any = this.$store.getters.getCodeList(this.groupCodelist); let codelistItems: any = await this.codeListService.getDataItems(this.groupCodelist);
if(codelist) { this.allCodeList = Util.deepCopy(codelistItems);
codelist.items.forEach((item: any) => { if(codelistItems && codelistItems.length >0) {
codelistItems.forEach((item: any) => {
this.groups.push({ this.groups.push({
name: item.value, name: item.value,
value: item.value,
items: this.getGroupItems(item.value) items: this.getGroupItems(item.value)
}) })
}) })
...@@ -672,18 +699,18 @@ draggable, ...@@ -672,18 +699,18 @@ draggable,
*/ */
public getGroupText(name: string) { public getGroupText(name: string) {
if(Object.is(this.groupMode, 'CODELIST') && this.groupCodelist) { if(Object.is(this.groupMode, 'CODELIST') && this.groupCodelist) {
let codelist: any = this.$store.getters.getCodeList(this.groupCodelist); if(this.allCodeList && this.allCodeList.length >0) {
if(codelist) {
if(!name) { if(!name) {
return codelist.emptytext; return '未定义';
} }
let item = codelist.items.find((item: any) => Object.is(item.value, name)); let item = this.allCodeList.find((item: any) => Object.is(item.value, name));
if(item) { if(item) {
return item.text; return item.text;
} }
} }
}else{
return name;
} }
return name;
} }
/** /**
...@@ -731,6 +758,24 @@ draggable, ...@@ -731,6 +758,24 @@ draggable,
this.$emit('selectionchange', this.selections); this.$emit('selectionchange', this.selections);
} }
/**
* 点击时触发看板的展开和收起
*
* @param group 分组看板
* @param index 分组看板编号
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public onClick(group: any,index: number){
group.folding = !group.folding;
let kanban: any = this.$el.getElementsByClassName('dataview-group-kanban')[index];
if(group.folding){
kanban.style.display="none";
}else{
kanban.style.display="block";
}
this.$forceUpdate();
}
/** /**
* 界面行为 * 界面行为
* *
...@@ -752,6 +797,17 @@ draggable, ...@@ -752,6 +797,17 @@ draggable,
</#if> </#if>
} }
/**
* 面板数据变化处理事件
* @param {any} item 当前列数据
* @param {any} $event 面板事件数据
*
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public onPanelDataChange(item:any,$event:any) {
Object.assign(item, $event, {rowDataState:'update'});
}
/** /**
* 拖拽变化 * 拖拽变化
* *
......
...@@ -2,6 +2,24 @@ ...@@ -2,6 +2,24 @@
height: 100%; height: 100%;
display: flex; display: flex;
overflow: auto; overflow: auto;
.dataview-group-folading-kanban{
border: 1px solid #ddd;
text-align: center;
border-left: 0;
height: 100%;
width: 40px;
background-color: #d8d8d8;
color: #a5a5a5;
.dataview-group-icon{
padding: 6px 0;
}
.dataview-group-folding{
height: calc(100% - 39px);
writing-mode: tb;
width: 31px;
font-size: 17px;
}
}
.dataview-group-content { .dataview-group-content {
border: 1px solid #ddd; border: 1px solid #ddd;
border-left: 0; border-left: 0;
......
...@@ -8,7 +8,19 @@ ${item.render.code} ...@@ -8,7 +8,19 @@ ${item.render.code}
<@badge item> <@badge item>
<i-button type="primary" :disabled="detailsModel.${item.getName()}.disabled" @click="${item.getName()}_click($event)" class="app-form-button<#if item.getPSSysCss?? && item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>" <i-button type="primary" :disabled="detailsModel.${item.getName()}.disabled" @click="${item.getName()}_click($event)" class="app-form-button<#if item.getPSSysCss?? && item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>"
style="<#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if>"> style="<#if item.getHeight() gt 0>height: ${item.getHeight()?c}px;</#if><#if item.getWidth() gt 0>width: ${item.getWidth()?c}px;</#if>">
<#if item.getPSSysImage()??><#assign img=item.getPSSysImage()><#if img.getCssClass()?? && (img.getCssClass()?length gt 0)><i class="${img.getCssClass()}" style="margin-right: 2px;"></i></#if></#if> <#if item.getPSSysImage()??>
<#assign img=item.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
<i class="${img.getCssClass()}" style="margin-right: 2px;"></i>
</#if>
<#else>
<#if item.getPSUIAction?? && item.getPSUIAction()?? && item.getPSUIAction().getPSSysImage?? && item.getPSUIAction().getPSSysImage()??>
<#assign img=item.getPSUIAction().getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
<menu-icon :item="{iconcls: '${img.getCssClass()}'}" />
</#if>
</#if>
</#if>
<#if item.isShowCaption()><span ><#if item.getCaptionItemName()?? && item.getCaptionItemName()?length gt 0>{{data.${item.getCaptionItemName()}}}<#else><#if langbase??>{{$t('${langbase}.details.${item.name}')}}<#else>${item.getCaption()}</#if></#if></span></#if> <#if item.isShowCaption()><span ><#if item.getCaptionItemName()?? && item.getCaptionItemName()?length gt 0>{{data.${item.getCaptionItemName()}}}<#else><#if langbase??>{{$t('${langbase}.details.${item.name}')}}<#else>${item.getCaption()}</#if></#if></span></#if>
</i-button> </i-button>
</@badge> </@badge>
......
...@@ -2,18 +2,20 @@ ...@@ -2,18 +2,20 @@
${item.render.code} ${item.render.code}
<#else> <#else>
<app-rawitem <app-rawitem
:viewparams="viewparams"
:context="context"
contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>" contentStyle="<#if item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>"
sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>" sizeStyle="<#if item.getRawItemHeight() gt 0>height: ${item.getRawItemHeight()?c}px;</#if><#if item.getRawItemWidth() gt 0>width: ${item.getRawItemWidth()?c}px;</#if>"
contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>" contentType="<#if item.getContentType?? && item.getContentType()??>${item.getContentType()}</#if>"
<#if item.getRawContent?? && item.getRawContent()??>
rawContent="${item.getRawContent()}"
</#if>
<#if item.getHtmlContent?? && item.getHtmlContent()??> <#if item.getHtmlContent?? && item.getHtmlContent()??>
htmlContent="${item.getHtmlContent()}" :htmlContent='`${item.getHtmlContent()}`'
</#if> </#if>
<#if item.getPSSysImage?? && item.getPSSysImage()??> <#if item.getPSSysImage?? && item.getPSSysImage()??>
<#assign img=item.getPSSysImage()> <#assign img=item.getPSSysImage()>
<#if img.getCssClass()?? && (img.getCssClass()?length gt 0)> <#if img.getCssClass()?? && (img.getCssClass()?length gt 0)>
imageClass="${img.getCssClass()}"</#if></#if>> imageClass="${img.getCssClass()}"</#if></#if>>
<#if item.getContentType?? && item.getContentType() == 'RAW'>
${item.getRawContent()}
</#if>
</app-rawitem> </app-rawitem>
</#if> </#if>
\ No newline at end of file
<#ibizinclude> <#ibizinclude>
../@MACRO/CONTROL/LANGBASE.vue.ftl ../@MACRO/CONTROL/LANGBASE.vue.ftl
</#ibizinclude> </#ibizinclude>
<i-form :model="this.data" class='app-form<#if ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if><#if ctrl.isInfoFormMode?? && ctrl.isInfoFormMode()> info-form-mode</#if>' ref='${ctrl.name}' id='${ctrl.getPSAppDataEntity().getCodeName()?lower_case}_${ctrl.getCodeName()?lower_case}' style="<#if ctrl.getFormWidth() gt 1>width: ${ctrl.getFormWidth()?c}px;</#if>"> <i-form :model="this.data" class='app-form<#if ctrl.getPSSysCss()??> ${ctrl.getPSSysCss().getCssName()}</#if><#if ctrl.isInfoFormMode?? && ctrl.isInfoFormMode()> info-form-mode</#if>' ref='${ctrl.name}' id='${ctrl.getPSAppDataEntity().getCodeName()?lower_case}_${ctrl.getCodeName()?lower_case}' style="<#if ctrl.getFormWidth() gt 1>width: ${ctrl.getFormWidth()?c}px;</#if>" @on-validate="formItemValidate">
<input style="display:none;" /> <input style="display:none;" />
<row > <row >
<#if ctrl.isNoTabHeader()> <#if ctrl.isNoTabHeader()>
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
} }
.app-form { .app-form {
overflow: auto; overflow: auto;
padding: 6px;
> .ivu-row { > .ivu-row {
> .ivu-tabs { > .ivu-tabs {
height: 100%; height: 100%;
......
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
</#if> </#if>
<template <#if (ctrl.isEnableRowEdit() && item.isEnableRowEdit())>v-if="!actualIsOpenEdit"</#if>> <template <#if (ctrl.isEnableRowEdit() && item.isEnableRowEdit())>v-if="!actualIsOpenEdit"</#if>>
<#if item.getPSDEUIAction?? && item.getPSDEUIAction()??> <#if item.getPSDEUIAction?? && item.getPSDEUIAction()??>
<a @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)"> <a v-show="row.${item.getPSDEUIAction().getUIActionTag()}.visabled" :disabled="row.${item.getPSDEUIAction().getUIActionTag()}.disabled" :style="{'display': 'block'}" @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)">
</#if> </#if>
<#if (item.render??)> <#if (item.render??)>
<#-- BEGIN:列绘制 --> <#-- BEGIN:列绘制 -->
...@@ -216,7 +216,7 @@ ...@@ -216,7 +216,7 @@
</app-column-link > </app-column-link >
<#else> <#else>
<#if item.getPSDEUIAction?? && item.getPSDEUIAction()??> <#if item.getPSDEUIAction?? && item.getPSDEUIAction()??>
<a @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)"> <a v-show="row.${item.getPSDEUIAction().getUIActionTag()}.visabled" :disabled="row.${item.getPSDEUIAction().getUIActionTag()}.disabled" :style="{'display': 'block'}" @click="uiAction(row, '${item.getPSDEUIAction().getUIActionTag()}', $event)">
</#if> </#if>
<#if item.getValueFormat()?? && item.getValueFormat() != "%1$s"> <#if item.getValueFormat()?? && item.getValueFormat() != "%1$s">
<app-format-data format="${item.getValueFormat()}" :data="row.${item.getName()?lower_case}"></app-format-data> <app-format-data format="${item.getValueFormat()}" :data="row.${item.getName()?lower_case}"></app-format-data>
......
...@@ -11,8 +11,10 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi ...@@ -11,8 +11,10 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
</#list> </#list>
<#if ctrl.getAggMode() == "ALL" && ctrl.getAggPSAppDataEntity()??> <#if ctrl.getAggMode() == "ALL" && ctrl.getAggPSAppDataEntity()??>
<#assign aggAppDataEntity = ctrl.getAggPSAppDataEntity() > <#assign aggAppDataEntity = ctrl.getAggPSAppDataEntity() >
<#if aggAppDataEntity.getId() != appde.getId()>
import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/service/${srffilepath2(aggAppDataEntity.getCodeName())}/${srffilepath2(aggAppDataEntity.getCodeName())}-service'; import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/service/${srffilepath2(aggAppDataEntity.getCodeName())}/${srffilepath2(aggAppDataEntity.getCodeName())}-service';
</#if> </#if>
</#if>
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/SERVICE/SERVICE_HEADER.ts.ftl ../@MACRO/SERVICE/SERVICE_HEADER.ts.ftl
...@@ -236,7 +238,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi ...@@ -236,7 +238,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
result.then((response) => { result.then((response) => {
//处理返回数据,补充判断标识 //处理返回数据,补充判断标识
if(response.data){ if(response.data){
Object.assign(response.data,{srfuf:0}); Object.assign(response.data,{srfuf:'0'});
} }
resolve(response); resolve(response);
}).catch(response => { }).catch(response => {
...@@ -445,7 +447,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi ...@@ -445,7 +447,7 @@ import ${srfclassname('${aggAppDataEntity.getCodeName()}')}Service from '@/servi
requestData[item.prop] = context[item.name]; requestData[item.prop] = context[item.name];
} }
}else{ }else{
if(item && item.isEditable && item.prop && item.name && (data[item.name] || Object.is(data[item.name],0) || Object.is(data[item.name],"")) ){ if(item && item.isEditable && item.prop && item.name && data.hasOwnProperty(item.name)){
requestData[item.prop] = data[item.name]; requestData[item.prop] = data[item.name];
} }
} }
......
此差异已折叠。
<#ibizinclude>
../@MACRO/HTML/GRID.html.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/CSS/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/CONTROL/CONTROL.vue.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>
../@MACRO/MODEL/MODEL_HEADER.ts.ftl
</#ibizinclude>
/**
* 是否是实体数据导出
*
* @returns {any[]}
* @memberof ${srfclassname('${ctrl.getCodeName()}')}${srfclassname('${ctrl.name}')}Mode
*/
public isDEExport: boolean = false;
/**
* 获取数据项集合
*
* @returns {any[]}
* @memberof ${srfclassname('${ctrl.getCodeName()}')}${srfclassname('${ctrl.name}')}Mode
*/
public getDataItems(): any[] {
if(this.isDEExport){
return [
<#-- 实体导出数据项 -->
<#if ctrl.getPSDEDataExport?? && ctrl.getPSDEDataExport()?? && ctrl.getPSDEDataExport().getPSDEDataExportItems()??>
<#list ctrl.getPSDEDataExport().getPSDEDataExportItems() as dataitem>
{
name: '${dataitem.getName()}',
<#if dataitem.getPSDEField()??>
prop: '${dataitem.getPSDEField().getCodeName()?lower_case}',
dataType: '${dataitem.getPSDEField().getDataType()}',
</#if>
<#if ctrl.getPSDEGridEditItems()??>
<#list ctrl.getPSDEGridEditItems() as editItem>
<#if editItem.getName() == dataitem.getName()>
<#if editItem.isEditable()>
isEditable:${editItem.isEditable()?c}
</#if>
</#if>
</#list>
</#if>
},
</#list>
</#if>
]
}else{
return [
<#-- 表格数据项 -->
<#if ctrl.getPSDEGridDataItems()??>
<#list ctrl.getPSDEGridDataItems() as dataitem>
{
name: '${dataitem.getName()}',
<#if dataitem.getPSDEField()??>
prop: '${dataitem.getPSDEField().getCodeName()?lower_case}',
dataType: '${dataitem.getPSDEField().getDataType()}',
</#if>
<#if ctrl.getPSDEGridEditItems()??>
<#list ctrl.getPSDEGridEditItems() as editItem>
<#if editItem.getName() == dataitem.getName()>
<#if editItem.isEditable()>
isEditable:${editItem.isEditable()?c}
</#if>
</#if>
</#list>
</#if>
},
</#list>
</#if>
<#-- 关联主实体的主键 -->
<#if ctrl.getPSAppDataEntity()??>
<#assign appDataEntity = ctrl.getPSAppDataEntity() />
<#if appDataEntity.isMajor() == false && appDataEntity.getMinorPSAppDERSs()??>
<#list appDataEntity.getMinorPSAppDERSs() as minorAppDERSs>
<#if minorAppDERSs.getMajorPSAppDataEntity()??>
<#assign majorAppDataEntity = minorAppDERSs.getMajorPSAppDataEntity() />
{
name: '${majorAppDataEntity.getCodeName()?lower_case}',
prop: '${minorAppDERSs.getPSDER1N().getPSPickupDEField().getCodeName()?lower_case}',
dataType: 'FONTKEY',
},
</#if>
</#list>
</#if>
</#if>
<#if ctrl.getPSDEGridDataItems()??>
<#list ctrl.getPSDEGridDataItems() as dataitem>
<#-- 界面主键标识 -->
<#if dataitem.getPSDEField?? && dataitem.getPSDEField()??>
<#if !P.exists("importService", dataitem.getPSDEField().getId(), "")>
<#if dataitem.getPSDEField().isKeyDEField() == true>
{
name: '${ctrl.getPSAppDataEntity().getCodeName()?lower_case}',
prop: '${dataitem.getPSDEField().getCodeName()?lower_case}',
},
</#if>
</#if>
</#if>
</#list>
</#if>
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'MODEL_CONTENT.ts').code}
</#if>
{
name:'size',
prop:'size'
},
{
name:'query',
prop:'query'
},
{
name:'filter',
prop:'filter'
},
{
name:'page',
prop:'page'
},
{
name:'sort',
prop:'sort'
},
{
name:'srfparentdata',
prop:'srfparentdata'
},
// 前端新增修改标识,新增为"0",修改为"1"或未设值
{
name: 'srffrontuf',
prop: 'srffrontuf',
dataType: 'TEXT',
},
]
}
}
<#ibizinclude>
../@MACRO/MODEL/MODEL_BOTTOM.ts.ftl
</#ibizinclude>
\ No newline at end of file
此差异已折叠。
CTRLTYPE=GRID#PivotTable
\ No newline at end of file
...@@ -36,7 +36,7 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code} ...@@ -36,7 +36,7 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code}
</div> </div>
</#if> </#if>
<#if view.isEnableQuickSearch()> <#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='quick-search-input' style='max-width: 400px;' placeholder="<@getQuickSearchPlaceholder view />" /> <i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='quick-search-input' style='max-width: 400px;padding-left: 24px' placeholder="<@getQuickSearchPlaceholder view />" />
</#if> </#if>
<div class='pull-right'> <div class='pull-right'>
<#if view.hasPSControl('toolbar')> <#if view.hasPSControl('toolbar')>
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</div> </div>
</#if> </#if>
<#if view.isEnableQuickSearch()> <#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' /> <i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;padding-left: 24px' />
</#if> </#if>
<div class='pull-right'> <div class='pull-right'>
<#if view.hasPSControl('toolbar')> <#if view.hasPSControl('toolbar')>
......
...@@ -16,8 +16,19 @@ ...@@ -16,8 +16,19 @@
<div class='content-container'> <div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment> <#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))> <#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar') || view.isEnableQuickGroup() || view.getQuickPSDESearchForm()??)>
<row style="margin-bottom:6px;"> <row style="margin-bottom:6px;">
<#if view.isEnableQuickGroup()>
<div class="quick-group-container">
<app-quick-group :items="quickGroupModel" <#if appCounter??>:counterService="${appCounter.getCodeName()?lower_case}counterservice"</#if> @valuechange="quickGroupValueChange"></app-quick-group>
</div>
</#if>
<#if view.getQuickPSDESearchForm()??>
<div class="quick-search-container">
<#assign quickSearchForm = view.getQuickPSDESearchForm() />
${P.getCtrlCode(quickSearchForm, 'CONTROL.html').code}
</div>
</#if>
<#if view.isEnableQuickSearch()> <#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' /> <i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' />
</#if> </#if>
......
...@@ -17,8 +17,19 @@ ...@@ -17,8 +17,19 @@
<div class='content-container'> <div class='content-container'>
<#assign MDContent> <#assign MDContent>
<#comment><!--开始:快速搜索或工具栏存在--></#comment> <#comment><!--开始:快速搜索或工具栏存在--></#comment>
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar'))> <#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar') || view.isEnableQuickGroup() || view.getQuickPSDESearchForm()??)>
<row style="margin-bottom:6px;"> <row style="margin-bottom:6px;">
<#if view.isEnableQuickGroup()>
<div class="quick-group-container">
<app-quick-group :items="quickGroupModel" <#if appCounter??>:counterService="${appCounter.getCodeName()?lower_case}counterservice"</#if> @valuechange="quickGroupValueChange"></app-quick-group>
</div>
</#if>
<#if view.getQuickPSDESearchForm()??>
<div class="quick-search-container">
<#assign quickSearchForm = view.getQuickPSDESearchForm() />
${P.getCtrlCode(quickSearchForm, 'CONTROL.html').code}
</div>
</#if>
<#if view.isEnableQuickSearch()> <#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' /> <i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='pull-left' placeholder="<@getQuickSearchPlaceholder view />" style='max-width: 400px;margin-top:6px;' />
</#if> </#if>
......
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<#ibizinclude>../../@MACRO/FUNC/MACRO.ftl</#ibizinclude>
<#assign MDContent><#t>
<#if view.getPSSysCounterRef?? && view.getPSSysCounterRef()?? && view.getPSSysCounterRef().getPSAppCounter()??>
<#assign appCounter = view.getPSSysCounterRef().getPSAppCounter() />
</#if>
<#if view.getViewType() == "DEGRIDVIEW9">
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code}
</#if>
</#if>
<#-- BEGIN:快速搜索框或工具栏或支持快速分组搜索或快速搜索表单部件存在 -->
<#if (view.isEnableQuickSearch() || view.hasPSControl('toolbar') || view.isEnableQuickGroup() || view.getQuickPSDESearchForm()??)>
<div style='margin-bottom: 6px;'>
<#if view.isEnableQuickGroup()>
<div class="quick-group-container">
<app-quick-group :items="quickGroupModel" <#if appCounter??>:counterService="${srfclassname('${appCounter.getCodeName()}')}counterservice"</#if> @valuechange="qucikGroupValueChange"></app-quick-group>
</div>
</#if>
<#if view.getQuickPSDESearchForm()??>
<div class="quick-search-container">
<#assign quickSearchForm = view.getQuickPSDESearchForm() />
${P.getCtrlCode(quickSearchForm, 'CONTROL.html').code}
</div>
</#if>
<#if view.isEnableQuickSearch()>
<i-input<#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show="!isExpandSearchForm"</#if></#if> v-model="query" search enter-button @on-search="onSearch($event)" class='quick-search-input' style='max-width: 400px;' placeholder="<@getQuickSearchPlaceholder view />" />
</#if>
<div class='pull-left'>
<#if view.hasPSControl('toolbar')>
<@ibizindent blank=8>
${P.getCtrlCode('toolbar', 'CONTROL.html').code}<#t>
</@ibizindent>
</#if>
</div>
</div>
</#if>
<#-- END:快速搜索或工具栏存在 -->
<#if view.getViewType() != "DEGRIDVIEW9">
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#if view.hasPSControl('map')>
${P.getCtrlCode('map', 'CONTROL.html').code}
</#if>
</#if>
</#assign>
<div class='view-container ${view.getViewType()?lower_case} ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'>
<app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card <#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false">
<@ibizindent blank=8>
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
</@ibizindent>
<div class='content-container'>
<#-- BEGIN:视图顶部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
../@MACRO/View_Pos_Top_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图顶部视图消息 -->
<#-- BEGIN:视图内容 -->
<@ibizindent blank=12>
<#ibizinclude>
../@MACRO/VIEW_MD_CONTENT.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图内容 -->
<#-- BEGIN:视图底部视图消息 -->
<@ibizindent blank=12>
<#ibizinclude>
../@MACRO/View_Pos_Bottom_Msgs.vue.ftl
</#ibizinclude>
</@ibizindent>
<#-- END:视图底部视图消息 -->
</div>
</card>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEMAPVIEW
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEMAPVIEW9
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEMPICKUPVIEW2
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEWFDYNAACTIONVIEW
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<div class="app-redirect-view ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>">
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEWFSTARTVIEW
\ No newline at end of file
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
</div> </div>
</#if> </#if>
<#if view.isEnableQuickSearch()> <#if view.isEnableQuickSearch()>
<i-input <#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show='!this.isExpandSearchForm '</#if></#if> v-model='query' search @on-search='onSearch' placeholder="<@getQuickSearchPlaceholder view />" class='pull-left' style='max-width: 400px;margin-top:6px;' /> <i-input <#if view.hasPSControl('searchform')><#if view.isExpandSearchForm??> v-show='!this.isExpandSearchForm '</#if></#if> v-model='query' search @on-search='onSearch' placeholder="<@getQuickSearchPlaceholder view />" class='pull-left' style='max-width: 400px;margin-top:6px;padding-left: 24px;' />
</#if> </#if>
<div class='pull-right'> <div class='pull-right'>
<#if view.hasPSControl('toolbar')> <#if view.hasPSControl('toolbar')>
......
CTRLTYPE=VIEWLAYOUTPANEL#APPDEPICKUPVIEW2
\ No newline at end of file
.view-card {
>.ivu-card-extra {
top: 5px;
right: 0px;
}
}
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册