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

合并分支 'dev' 到 'master'

2020.5.7 模板更新

查看合并请求 !2
...@@ -98,20 +98,21 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi ...@@ -98,20 +98,21 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
* @param {*} [context={}] * @param {*} [context={}]
* @param {*} [data={}] * @param {*} [data={}]
* @param {boolean} [isloading] * @param {boolean} [isloading]
* @param {*} [localdata]
* @returns {Promise<any>} * @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')}Service * @memberof ${srfclassname('${ctrl.codeName}')}Service
*/ */
@Errorlog @Errorlog
public wfstart(action: string,context: any = {},data: any = {}, isloading?: boolean): Promise<any> { public wfstart(action: string,context: any = {},data: any = {}, isloading?: boolean,localdata?:any): Promise<any> {
data = this.handleWFData(data); data = this.handleWFData(data);
context = this.handleRequestData(action,context,data).context; context = this.handleRequestData(action,context,data).context;
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
let result: Promise<any>; let result: Promise<any>;
const _appEntityService: any = this.appEntityService; const _appEntityService: any = this.appEntityService;
if (_appEntityService[action] && _appEntityService[action] instanceof Function) { if (_appEntityService[action] && _appEntityService[action] instanceof Function) {
result = _appEntityService[action](context,data, isloading); result = _appEntityService[action](context,data, isloading,localdata);
} else { } else {
result = this.appEntityService.Create(context,data, isloading); result = this.appEntityService.WFStart(context,data, isloading,localdata);
} }
result.then((response) => { result.then((response) => {
this.handleResponse(action, response); this.handleResponse(action, response);
...@@ -129,20 +130,21 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi ...@@ -129,20 +130,21 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
* @param {*} [context={}] * @param {*} [context={}]
* @param {*} [data={}] * @param {*} [data={}]
* @param {boolean} [isloading] * @param {boolean} [isloading]
* @param {*} [localdata]
* @returns {Promise<any>} * @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')}Service * @memberof ${srfclassname('${ctrl.codeName}')}Service
*/ */
@Errorlog @Errorlog
public wfsubmit(action: string,context: any = {}, data: any = {}, isloading?: boolean): Promise<any> { public wfsubmit(action: string,context: any = {}, data: any = {}, isloading?: boolean,localdata?:any): Promise<any> {
data = this.handleWFData(data,true); data = this.handleWFData(data,true);
context = this.handleRequestData(action,context,data).context; context = this.handleRequestData(action,context,data).context;
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
let result: Promise<any>; let result: Promise<any>;
const _appEntityService: any = this.appEntityService; const _appEntityService: any = this.appEntityService;
if (_appEntityService[action] && _appEntityService[action] instanceof Function) { if (_appEntityService[action] && _appEntityService[action] instanceof Function) {
result = _appEntityService[action](context,data, isloading); result = _appEntityService[action](context,data, isloading,localdata);
} else { } else {
result = this.appEntityService.Create(context,data, isloading); result = this.appEntityService.WFSubmit(context,data, isloading,localdata);
} }
result.then((response) => { result.then((response) => {
this.handleResponse(action, response); this.handleResponse(action, response);
......
...@@ -6,6 +6,24 @@ ...@@ -6,6 +6,24 @@
<tab-pane :index="${tabviewpanel_index}" name='${tabviewpanel.name}' tab='${ctrl.name}' class='<#if tabviewpanel.getPSSysCss?? && tabviewpanel.getPSSysCss()??>${tabviewpanel.getPSSysCss().getCssName()}</#if>' <tab-pane :index="${tabviewpanel_index}" name='${tabviewpanel.name}' tab='${ctrl.name}' class='<#if tabviewpanel.getPSSysCss?? && tabviewpanel.getPSSysCss()??>${tabviewpanel.getPSSysCss().getCssName()}</#if>'
:label="(h) =>{ :label="(h) =>{
return h('div', [ return h('div', [
<#if tabviewpanel.getPSSysImage()??>
<#assign sysimage = tabviewpanel.getPSSysImage()/>
<#if sysimage.getImagePath() == "">
h('i',{
class:'${sysimage.getCssClass()}',
style:{
'margin-right' : '2px'
}
}),
<#else>
h('img',{
src:'${sysimage.getImagePath()}',
style:{
'margin-right' : '2px'
}
}),
</#if>
</#if>
h('span', '${tabviewpanel.getCaption()}'), h('span', '${tabviewpanel.getCaption()}'),
h('Badge', { h('Badge', {
props: { props: {
......
...@@ -328,8 +328,9 @@ ...@@ -328,8 +328,9 @@
datas.forEach((data: any) => { datas.forEach((data: any) => {
keys.push(data.srfkey); keys.push(data.srfkey);
}); });
let _removeAction = keys.length > 1 ? 'removeBatch' : this.removeAction ;
const context:any = JSON.parse(JSON.stringify(this.context)); const context:any = JSON.parse(JSON.stringify(this.context));
const post: Promise<any> = this.service.delete(this.removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().getKeyPSAppDEField().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator); const post: Promise<any> = this.service.delete(_removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator);
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
> .ivu-split-trigger-con { > .ivu-split-trigger-con {
height: 100%; height: 100%;
width: 1px; width: 1px;
.ivu-split-trigger-vertical{
width: 2px;
}
} }
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
...@@ -68,6 +71,9 @@ ...@@ -68,6 +71,9 @@
} }
} }
> .ivu-split-vertical{ > .ivu-split-vertical{
.ivu-split-trigger-horizontal{
height: 2px;
}
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
height: 100%; height: 100%;
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
> .ivu-split-trigger-con { > .ivu-split-trigger-con {
height: 100%; height: 100%;
width: 1px; width: 1px;
.ivu-split-trigger-vertical{
width: 2px;
}
} }
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
...@@ -68,6 +71,9 @@ ...@@ -68,6 +71,9 @@
} }
} }
> .ivu-split-vertical{ > .ivu-split-vertical{
.ivu-split-trigger-horizontal{
height: 2px;
}
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
height: 100%; height: 100%;
......
<#assign deuiaction=item.getPSUIAction()> <#assign deuiaction=item.getPSUIAction()>
<#assign icon><#if item.getPSSysImage()??><#assign image = item.getPSSysImage()><#if image.getCssClass()??>, iconcls: '${image.getCssClass()}'</#if><#if image.getImagePath()??>, icon: '${image.getImagePath()}'</#if></#if></#assign> <#assign icon><#if item.getPSSysImage()??><#assign image = item.getPSSysImage()><#if image.getCssClass()??>, iconcls: '${image.getCssClass()}'</#if><#if image.getImagePath()??>, icon: '${image.getImagePath()}'</#if></#if></#assign>
<#if deuiaction.getUIActionTag() == 'ExportExcel'> <#if deuiaction.getUIActionTag() == 'ExportExcel'>
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' }<#if view.hasPSControl("GRID")><#assign gridhandler = view.getPSControl("GRID").getPSAjaxControlHandler()>, MaxRowCount: <#if gridhandler?? && gridhandler.getPSDEDataExport()??>${gridhandler.getPSDEDataExport().getMaxRowCount()?c}<#elseif sys.getDEDataExportMaxRowCount() gt 0>${sys.getDEDataExportMaxRowCount()?c}<#else>10000</#if></#if> }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' }<#if view.hasPSControl("GRID")><#assign gridhandler = view.getPSControl("GRID").getPSAjaxControlHandler()>, MaxRowCount: <#if gridhandler?? && gridhandler.getPSDEDataExport()??>${gridhandler.getPSDEDataExport().getMaxRowCount()?c}<#elseif sys.getDEDataExportMaxRowCount() gt 0>${sys.getDEDataExportMaxRowCount()?c}<#else>10000</#if></#if>, class: '<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' },
<#elseif deuiaction.getUIActionTag() == 'ToggleRowEdit'> <#elseif deuiaction.getUIActionTag() == 'ToggleRowEdit'>
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' } }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' }, class: '<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' },
<#else> <#else>
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' } }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', caption: '${item.caption}','isShowCaption':${item.isShowCaption()?c},'isShowIcon':${item.isShowIcon()?c}, tooltip: '${item.getTooltip()}'${icon}, disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '<#if deuiaction.getDataAccessAction()??>${deuiaction.getDataAccessAction()}</#if>', uiaction: { tag: '${deuiaction.getUIActionTag()}', target: '${deuiaction.getActionTarget()}' }, class: '<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' },
</#if> </#if>
\ No newline at end of file
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', <#if item.isShowCaption()>caption: '${item.caption}', </#if>disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '', uiaction: { } }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', <#if item.isShowCaption()>caption: '${item.caption}', </#if>disabled: false, type: '${item.getItemType()}', visabled: true, dataaccaction: '', uiaction: { }, class: '<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' },
<#if item.getPSDEToolbarItems()??> <#if item.getPSDEToolbarItems()??>
<#list item.getPSDEToolbarItems() as toolbarItem> <#list item.getPSDEToolbarItems() as toolbarItem>
${P.getPartCode(toolbarItem).code} ${P.getPartCode(toolbarItem).code}
......
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', type: '${item.getItemType()}', visabled: true, dataaccaction: '', uiaction: { } }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', type: '${item.getItemType()}', visabled: true, dataaccaction: '', uiaction: { }, class: '<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' },
\ No newline at end of file \ No newline at end of file
${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', type: '${item.getItemType()}', visabled: true, dataaccaction: '', uiaction: { } }, ${item.getName()?lower_case}: { name: '${item.getName()?lower_case}', type: '${item.getItemType()}', visabled: true, dataaccaction: '', uiaction: { }, class: '<#if item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' },
\ No newline at end of file \ No newline at end of file
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<#if layout == 'TABLE_24COL' && LayoutPos??><#t> <#if layout == 'TABLE_24COL' && LayoutPos??><#t>
<i-col<#if LayoutPos.getColXS() != -1> :xs="{ span: ${LayoutPos.getColXS()}, offset: <#if LayoutPos.getColXSOffset() != -1>${LayoutPos.getColXSOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColSM() != -1> :sm="{ span: ${LayoutPos.getColSM()}, offset: <#if LayoutPos.getColSMOffset() != -1>${LayoutPos.getColSMOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColMD() != -1> :md="{ span: ${LayoutPos.getColMD()}, offset: <#if LayoutPos.getColMDOffset() != -1>${LayoutPos.getColMDOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColLG() != -1> :lg="{ span: ${LayoutPos.getColLG()}, offset: <#if LayoutPos.getColLGOffset() != -1>${LayoutPos.getColLGOffset()}<#else>0</#if> }"</#if>> <i-col<#if LayoutPos.getColXS() != -1> :xs="{ span: ${LayoutPos.getColXS()}, offset: <#if LayoutPos.getColXSOffset() != -1>${LayoutPos.getColXSOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColSM() != -1> :sm="{ span: ${LayoutPos.getColSM()}, offset: <#if LayoutPos.getColSMOffset() != -1>${LayoutPos.getColSMOffset()}<#else>0</#if>}"</#if><#if LayoutPos.getColMD() != -1> :md="{ span: ${LayoutPos.getColMD()}, offset: <#if LayoutPos.getColMDOffset() != -1>${LayoutPos.getColMDOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColLG() != -1> :lg="{ span: ${LayoutPos.getColLG()}, offset: <#if LayoutPos.getColLGOffset() != -1>${LayoutPos.getColLGOffset()}<#else>0</#if> }"</#if>>
<card :bordered="false" dis-hover :padding="0"> <card :bordered="false" dis-hover :padding="0">
<#if portlet.isShowTitleBar()> <#if portlet.isShowTitleBar() && portlet.getTitle()?has_content>
<p slot='title'> <p slot='title'>
${portlet.getTitle()} ${portlet.getTitle()}
<span class="line"></span> <span class="line"></span>
...@@ -35,7 +35,7 @@ ${P.getCtrlCode(portlet, 'CONTROL.html').code} ...@@ -35,7 +35,7 @@ ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</i-col> </i-col>
<#else> <#else>
<card :bordered="false" dis-hover :padding="0"> <card :bordered="false" dis-hover :padding="0">
<#if portlet.isShowTitleBar()><#t> <#if portlet.isShowTitleBar() && portlet.getTitle()?has_content><#t>
<p slot='title'> <p slot='title'>
${portlet.getTitle()} ${portlet.getTitle()}
</p> </p>
...@@ -50,7 +50,7 @@ ${P.getCtrlCode(portlet, 'CONTROL.html').code} ...@@ -50,7 +50,7 @@ ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</#if> </#if>
<#if layout == 'FLEX'> <#if layout == 'FLEX'>
<card :bordered="false" dis-hover :padding="0"> <card :bordered="false" dis-hover :padding="0">
<#if portlet.isShowTitleBar()><#t> <#if portlet.isShowTitleBar() && portlet.getTitle()?has_content><#t>
<p slot='title'> <p slot='title'>
${portlet.getTitle()} ${portlet.getTitle()}
</p> </p>
...@@ -70,9 +70,9 @@ ${P.getCtrlCode(portlet, 'CONTROL.html').code} ...@@ -70,9 +70,9 @@ ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</#list> </#list>
</row> </row>
<row v-if="isHasCustomized" style="width: 100%;min-height: calc(100% - 40px);"> <row v-if="isHasCustomized" style="width: 100%;min-height: calc(100% - 40px);">
<div class="container" style="position: relative;width:100%;"> <div class="portlet-container" style="position: relative;width:100%;">
<template v-for="(item, index) of modelDta"> <template v-for="(item, index) of modelDta">
<#noparse><div :key="index" :style="{zIndex: 10, position: 'absolute', height: item.h*layoutRowH + 'px', width: `calc(100% / ${layoutColNum} * ${item.w})`,top: item.y*layoutRowH + 'px', left: `calc(100% / ${layoutColNum} * ${item.x})`,'padding':'8px'}"></#noparse> <#noparse><div :key="index" :style="{zIndex: 10, position: 'absolute', height: item.h*layoutRowH + 'px', width: `calc(100% / ${layoutColNum} * ${item.w})`,top: item.y*layoutRowH + 'px', left: `calc(100% / ${layoutColNum} * ${item.x})`}"></#noparse>
<component :key="$util.createUUID()" :is="item.componentName" :name="item.portletCodeName" :context="JSON.parse(JSON.stringify(context))" :viewDefaultUsage="false" :isAdaptiveSize="true" :viewState="viewState"></component> <component :key="$util.createUUID()" :is="item.componentName" :name="item.portletCodeName" :context="JSON.parse(JSON.stringify(context))" :viewDefaultUsage="false" :isAdaptiveSize="true" :viewState="viewState"></component>
</div> </div>
</template> </template>
......
...@@ -450,8 +450,9 @@ ...@@ -450,8 +450,9 @@
_datas.forEach((data: any) => { _datas.forEach((data: any) => {
keys.push(data.srfkey); keys.push(data.srfkey);
}); });
let _removeAction = keys.length > 1 ? 'removeBatch' : this.removeAction ;
const context:any = JSON.parse(JSON.stringify(this.context)); const context:any = JSON.parse(JSON.stringify(this.context));
const post: Promise<any> = this.service.delete(this.removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().getKeyPSAppDEField().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator); const post: Promise<any> = this.service.delete(_removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator);
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
> .ivu-split-trigger-con { > .ivu-split-trigger-con {
height: 100%; height: 100%;
width: 1px; width: 1px;
.ivu-split-trigger-vertical{
width: 2px;
}
} }
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
...@@ -68,6 +71,9 @@ ...@@ -68,6 +71,9 @@
} }
} }
> .ivu-split-vertical{ > .ivu-split-vertical{
.ivu-split-trigger-horizontal{
height: 2px;
}
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
height: 100%; height: 100%;
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
> .ivu-split-trigger-con { > .ivu-split-trigger-con {
height: 100%; height: 100%;
width: 1px; width: 1px;
.ivu-split-trigger-vertical{
width: 2px;
}
} }
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
...@@ -11,10 +14,12 @@ ...@@ -11,10 +14,12 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.tree-exp-bar-header { .tree-exp-bar-header {
line-height: 50px; line-height: 36px;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
>div { >div {
font-size: 18px; font-size: 16px;
font-weight: 600;
color: black;
padding-left: 8px; padding-left: 8px;
i { i {
font-size: 20px; font-size: 20px;
...@@ -25,7 +30,7 @@ ...@@ -25,7 +30,7 @@
.search-content { .search-content {
width: 100%; width: 100%;
height: 48px; height: 48px;
padding: 10px 5px 10px 5px; padding: 6px;
} }
.tree-exp-content { .tree-exp-content {
<#-- 计算高度 --> <#-- 计算高度 -->
...@@ -39,7 +44,6 @@ ...@@ -39,7 +44,6 @@
height: 100%; height: 100%;
</#if> </#if>
overflow: auto; overflow: auto;
padding: 16px 0;
margin-bottom: 10px; margin-bottom: 10px;
} }
.tree-exp-content2 { .tree-exp-content2 {
...@@ -54,9 +58,6 @@ ...@@ -54,9 +58,6 @@
padding-left: 10px; padding-left: 10px;
} }
} }
> .left-pane.ivu-split-pane {
padding-right: 10px;
}
} }
} }
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
> .ivu-split-trigger-con { > .ivu-split-trigger-con {
height: 100%; height: 100%;
width: 1px; width: 1px;
.ivu-split-trigger-vertical{
width: 2px;
}
} }
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
......
...@@ -4,8 +4,7 @@ ...@@ -4,8 +4,7 @@
<#if item.render??> <#if item.render??>
${item.render.code} ${item.render.code}
<#else> <#else>
<app-form-group layoutType="<#if item.getPSLayoutPos()??>${item.getPSLayoutPos().getLayout()}</#if>" titleStyle="<#if item.getLabelPSSysCss?? && item.getLabelPSSysCss()??>${item.getLabelPSSysCss().getCssName()}</#if>" class='<#if item.getPSSysCss?? && item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' uiActionGroup="detailsModel.${item.name}.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="<#if langbase??>$t('${langbase}.details.${item.name}')<#else>'${item.getCaption()}'</#if>" :isShowCaption="${item.isShowCaption()?c}" uiStyle="${item.getDetailStyle()}" :titleBarCloseMode="${item.getTitleBarCloseMode()}" :isInfoGroupMode="${item.isInfoGroupMode()?c}"> <app-form-group layoutType="<#if item.getPSLayoutPos()??>${item.getPSLayoutPos().getLayout()}</#if>" titleStyle="<#if item.getLabelPSSysCss?? && item.getLabelPSSysCss()??>${item.getLabelPSSysCss().getCssName()}</#if>" class='<#if item.getPSSysCss?? && item.getPSSysCss()??> ${item.getPSSysCss().getCssName()}</#if>' uiActionGroup="detailsModel.${item.name}.uiActionGroup" @groupuiactionclick="groupUIActionClick($event)" :caption="<#if langbase??>$t('${langbase}.details.${item.name}')<#else>'${item.getCaption()}'</#if>" :isShowCaption="${item.isShowCaption()?c}" uiStyle="${item.getDetailStyle()}" :titleBarCloseMode="${item.getTitleBarCloseMode()}" :isInfoGroupMode="${item.isInfoGroupMode()?c}" <#if item.getPSSysImage()??>:iconInfo="{<#assign img=item.getPSSysImage()><#if img.getImagePath() == "">'iconclass':'${img.getCssClass()}'<#else>'iconpath':'${img.getImagePath()}'</#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;position: absolute;top: -51px;left: 60px;"></i></#if></#if>
<#assign content> <#assign content>
<#list item.getPSDEFormDetails() as formmenber> <#list item.getPSDEFormDetails() as formmenber>
<#if !(formmenber.isHidden?? && formmenber.isHidden())> <#if !(formmenber.isHidden?? && formmenber.isHidden())>
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
<#-- BEGIN:数据列 --> <#-- BEGIN:数据列 -->
<el-table-column show-overflow-tooltip :prop="'${item.getName()?lower_case}'" :label="<#if langbase??>$t('${langbase}.columns.${item.getName()?lower_case}')<#else>'${item.getCaption()}'</#if>"<#if item.getWidthUnit()!='STAR'> :width="${item.width?c}"</#if> :align="'${item.getAlign()?lower_case}'"<#if (!ctrl.isNoSort()) && item.isEnableSort()> :sortable="'custom'"</#if>> <el-table-column show-overflow-tooltip :prop="'${item.getName()?lower_case}'" :label="<#if langbase??>$t('${langbase}.columns.${item.getName()?lower_case}')<#else>'${item.getCaption()}'</#if>"<#if item.getWidthUnit()!='STAR'> :width="${item.width?c}"</#if> :align="'${item.getAlign()?lower_case}'"<#if (!ctrl.isNoSort()) && item.isEnableSort()> :sortable="'custom'"</#if>>
<template v-slot="{row,column}"> <template v-slot="{row,column}">
<#if (item.render??) || (item.getCodeList()?? && item.getCLConvertMode() == 'FRONT') || (ctrl.isEnableRowEdit() && item.isEnableRowEdit())> <#if (item.render??) || (item.getCodeList()?? && item.getCLConvertMode() == 'FRONT') || item.isEnableRowEdit()>
<#-- BEGIN:列绘制、前端绘制代码表、行编辑 --> <#-- BEGIN:列绘制、前端绘制代码表、行编辑 -->
<#if (ctrl.isEnableRowEdit() && item.isEnableRowEdit())> <#if (ctrl.isEnableRowEdit() && item.isEnableRowEdit())>
<#-- BEGIN:行编辑 --> <#-- BEGIN:行编辑 -->
...@@ -119,14 +119,14 @@ ...@@ -119,14 +119,14 @@
<app-column-link deKeyField='<#if dataview.isPSDEView()>${dataview.getPSAppDataEntity().getCodeName()?lower_case}</#if>' :context="JSON.parse(JSON.stringify(context))" :viewparams="JSON.parse(JSON.stringify(viewparams))" :data="row" :linkview="{<#compress><#if appLinkView??>${appLinkView}</#if></#compress>}" valueitem="<#if item.getLinkValueItem()??>${item.getLinkValueItem()}</#if>"> <app-column-link deKeyField='<#if dataview.isPSDEView()>${dataview.getPSAppDataEntity().getCodeName()?lower_case}</#if>' :context="JSON.parse(JSON.stringify(context))" :viewparams="JSON.parse(JSON.stringify(viewparams))" :data="row" :linkview="{<#compress><#if appLinkView??>${appLinkView}</#if></#compress>}" valueitem="<#if item.getLinkValueItem()??>${item.getLinkValueItem()}</#if>">
<#-- BEGIN:常规显示 --> <#-- BEGIN:常规显示 -->
<#if item.getPSDEGridEditItem()?? && item.getPSDEGridEditItem().getPSEditorType?? && item.getPSDEGridEditItem().getPSEditorType()??> <#if item.getPSDEGridEditItem()?? && item.getPSDEGridEditItem().getPSEditorType?? && item.getPSDEGridEditItem().getPSEditorType()??>
<app-span editorType="${item.getPSDEGridEditItem().getPSEditorType().getStandardPSEditorType()}" :value="row.${item.getName()?lower_case}"></app-span> <app-span name='${item.name}' editorType="${item.getPSDEGridEditItem().getPSEditorType().getStandardPSEditorType()}" :value="row.${item.getName()?lower_case}"></app-span>
<#else> <#else>
<span>{{row.${item.getName()?lower_case}}}</span> <span>{{row.${item.getName()?lower_case}}}</span>
</#if> </#if>
</app-column-link> </app-column-link>
<#else> <#else>
<#if item.getPSDEGridEditItem()?? && item.getPSDEGridEditItem().getPSEditorType?? && item.getPSDEGridEditItem().getPSEditorType()??> <#if item.getPSDEGridEditItem()?? && item.getPSDEGridEditItem().getPSEditorType?? && item.getPSDEGridEditItem().getPSEditorType()??>
<app-span editorType="${item.getPSDEGridEditItem().getPSEditorType().getStandardPSEditorType()}" :value="row.${item.getName()?lower_case}"></app-span> <app-span name='${item.name}' editorType="${item.getPSDEGridEditItem().getPSEditorType().getStandardPSEditorType()}" :value="row.${item.getName()?lower_case}"></app-span>
<#else> <#else>
<#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>
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
:summary-method="getSummaries" :summary-method="getSummaries"
</#if> </#if>
<#-- 表格聚合end --> <#-- 表格聚合end -->
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'" :height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 36px)' : '100%'"
:highlight-current-row ="isSingleSelect" :highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName" :row-class-name="getRowClassName"
@row-click="rowClick($event)" @row-click="rowClick($event)"
...@@ -398,7 +398,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -398,7 +398,7 @@ import CodeListService from "@service/app/codelist-service";
* @type {number} * @type {number}
* @memberof AppIndex * @memberof AppIndex
*/ */
protected checkboxColWidth: number = <#if app.getPSApplicationUI()??>${app.getPSApplicationUI().getPFStyleParam('EL-TABLE.CHECKCOLWIDTH',80)}<#else>80</#if>; protected checkboxColWidth: number = <#if app.getPSApplicationUI()??>${app.getPSApplicationUI().getPFStyleParam('EL-TABLE.CHECKCOLWIDTH',34)}<#else>34</#if>;
/** /**
* 是否允许拖动列宽 * 是否允许拖动列宽
...@@ -585,8 +585,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -585,8 +585,9 @@ import CodeListService from "@service/app/codelist-service";
_datas.forEach((data: any) => { _datas.forEach((data: any) => {
keys.push(data.srfkey); keys.push(data.srfkey);
}); });
let _removeAction = keys.length > 1 ? 'removeBatch' : this.removeAction ;
const context:any = JSON.parse(JSON.stringify(this.context)); const context:any = JSON.parse(JSON.stringify(this.context));
const post: Promise<any> = this.service.delete(this.removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().getKeyPSAppDEField().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator); const post: Promise<any> = this.service.delete(_removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator);
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
......
...@@ -29,6 +29,18 @@ ...@@ -29,6 +29,18 @@
display: inline; display: inline;
} }
.el-table { .el-table {
th{
padding: 0px;
.cell{
font-size: 14px;
}
}
td{
padding: 3px 0;
}
tr .el-table-column--selection .cell{
padding: 0;
}
.el-tooltip{ .el-tooltip{
.ivu-form-item{ .ivu-form-item{
margin-bottom: unset !important; margin-bottom: unset !important;
...@@ -36,14 +48,20 @@ ...@@ -36,14 +48,20 @@
} }
} }
.grid-pagination { .grid-pagination {
height: 50px; height: 36px;
padding: 6px 0px; padding: 6px 0px;
button{
height: 22px;
}
span,.ivu-page-prev,.ivu-page-item,.ivu-page-next,.ivu-select-selection,.ivu-page-options-elevator,.ivu-page-options-elevator input,.ivu-select-selected-value{
height: 22px;
line-height: 22px;
}
.page-button { .page-button {
button { button {
padding: 0; padding: 0;
font-size: 16px; font-size: 14px;
min-width: 32px; width: 22px;
height: 32px;
margin-right: 4px; margin-right: 4px;
} }
} }
...@@ -53,7 +71,7 @@ ...@@ -53,7 +71,7 @@
} }
} }
.el-table__body-wrapper{ .el-table__body-wrapper{
height: calc(100% - 60px) !important; height: calc(100% - 36px) !important;
} }
.el-table__empty-block{ .el-table__empty-block{
height: auto !important; height: auto !important;
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
> .ivu-split-trigger-con { > .ivu-split-trigger-con {
height: 100%; height: 100%;
width: 1px; width: 1px;
.ivu-split-trigger-vertical{
width: 2px;
}
} }
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
...@@ -77,6 +80,9 @@ ...@@ -77,6 +80,9 @@
} }
} }
> .ivu-split-vertical{ > .ivu-split-vertical{
.ivu-split-trigger-horizontal{
height: 2px;
}
> .ivu-split-pane { > .ivu-split-pane {
> div { > div {
height: 100%; height: 100%;
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
:summary-method="getSummaries" :summary-method="getSummaries"
</#if> </#if>
<#-- 表格聚合end --> <#-- 表格聚合end -->
stripe :height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'" stripe :height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 36px)' : '100%'"
@row-click="rowClick($event)" @row-click="rowClick($event)"
@select-all="selectAll($event)" @select-all="selectAll($event)"
@select="select($event)" @select="select($event)"
...@@ -396,7 +396,7 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -396,7 +396,7 @@ import CodeListService from "@service/app/codelist-service";
* @type {number} * @type {number}
* @memberof AppIndex * @memberof AppIndex
*/ */
protected checkboxColWidth: number = <#if app.getPSApplicationUI()??>${app.getPSApplicationUI().getPFStyleParam('EL-TABLE.CHECKCOLWIDTH',80)}<#else>80</#if>; protected checkboxColWidth: number = <#if app.getPSApplicationUI()??>${app.getPSApplicationUI().getPFStyleParam('EL-TABLE.CHECKCOLWIDTH',34)}<#else>34</#if>;
/** /**
* 是否允许拖动列宽 * 是否允许拖动列宽
...@@ -582,8 +582,9 @@ import CodeListService from "@service/app/codelist-service"; ...@@ -582,8 +582,9 @@ import CodeListService from "@service/app/codelist-service";
_datas.forEach((data: any) => { _datas.forEach((data: any) => {
keys.push(data.srfkey); keys.push(data.srfkey);
}); });
let _removeAction = keys.length > 1 ? 'removeBatch' : this.removeAction ;
const context:any = JSON.parse(JSON.stringify(this.context)); const context:any = JSON.parse(JSON.stringify(this.context));
const post: Promise<any> = this.service.delete(this.removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().getKeyPSAppDEField().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator); const post: Promise<any> = this.service.delete(_removeAction,Object.assign(context,{ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') }),Object.assign({ ${ctrl.getPSAppDataEntity().codeName?lower_case}: keys.join(';') },{viewparams:this.viewparams}), this.showBusyIndicator);
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
post.then((response: any) => { post.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
......
...@@ -11,6 +11,9 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code} ...@@ -11,6 +11,9 @@ ${P.getCtrlCode(ctrl, 'CONTROL.html').code}
</#list> </#list>
</#if> </#if>
</#assign> </#assign>
<#if view.getViewStyle() != 'DEFAULT'>
<#assign viewStyle = view.getViewStyle() />
</#if>
<#ibizinclude> <#ibizinclude>
./VIEW_LAYOUT_BASE.ftl ./VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
...@@ -8,4 +8,4 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code} ...@@ -8,4 +8,4 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code}
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
./VIEW_LAYOUT_BASE.ftl ./VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<#else> <#else>
<#assign isStyleName = false/> <#assign isStyleName = false/>
</#if> </#if>
<app-layout viewName="${view.getCodeName()?lower_case}" viewTitle="${view.getTitle()}"<#if view.isShowCaptionBar?? && (view.isShowCaptionBar() == false)> :isShowCaptionBar="false"</#if><#if !view.hasPSControl('toolbar')> :isShowToolbar="false"</#if> :className="{ 'view-container': true<#if !isStyleName>, 'default-mode-view': true</#if>, '${view.getViewType()?lower_case}': true, '${srffilepath2(view.getCodeName())}': true<#if view.getPSSysCss?? && view.getPSSysCss()??>, '${view.getPSSysCss().getCssName()}': true</#if> }"<#if !isStyleName> layoutMode="VIEW"</#if> :isShowUserInfo="isDefaultView()" :openMode="openMode" @close-view="closeView($event)"> <app-layout viewName="${view.getCodeName()?lower_case}" viewTitle="${view.getTitle()}"<#if view.isShowCaptionBar?? && (view.isShowCaptionBar() == false)> :isShowCaptionBar="false"</#if><#if !view.hasPSControl('toolbar')> :isShowToolbar="false"</#if> :className="{ 'view-container': true<#if !isStyleName>, 'default-mode-view': true</#if>, '${view.getViewType()?lower_case}': true, '${srffilepath2(view.getCodeName())}': true<#if view.getPSSysCss?? && view.getPSSysCss()??>, '${view.getPSSysCss().getCssName()}': true</#if><#if viewStyle??>, '${viewStyle}': true</#if> }"<#if !isStyleName> layoutMode="VIEW"</#if> :isShowUserInfo="isDefaultView()" :openMode="openMode" @close-view="closeView($event)">
<template slot="headerLeft"> <template slot="headerLeft">
<div class="view-header-left"> <div class="view-header-left">
<#if isStyleName> <go-back-button v-if="isDefaultView()"/></#if> <#if isStyleName> <go-back-button v-if="isDefaultView()"/></#if>
......
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <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> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
</div> </div>
\ No newline at end of file
...@@ -5,4 +5,4 @@ ...@@ -5,4 +5,4 @@
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
...@@ -5,4 +5,4 @@ ...@@ -5,4 +5,4 @@
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <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> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :disHover="true" :padding="0" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :disHover="true" :padding="0" :bordered="false">
<div class="content-container"> <div class="content-container">
......
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <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> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :disHover="true" :padding="0" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :disHover="true" :padding="0" :bordered="false">
<div class="content-container"> <div class="content-container">
......
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
.ivu-split-horizontal{
.ivu-split-pane >div{
height: 100%;
overflow-y: auto;
.content-container{
height: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin: 0;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
}
}
\ No newline at end of file
<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>' :disHover="true" :padding="0" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<split id="${view.getCodeName()?lower_case}" v-model="split" mode="horizontal">
<div slot='left'>
<el-tree ref="tree" :data="wfStepModel" node-key="userTaskId" :highlight-current="true" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
</div>
<div slot="right">
<div class="content-container">
<#if view.hasPSControl('searchform')>
${P.getCtrlCode('searchform', 'CONTROL.html').code}
</#if>
<#if view.hasPSControl('grid')>
${P.getCtrlCode('grid', 'CONTROL.html').code}
</#if>
</div>
</div>
</split>
</card>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEWFDYNAEXPGRIDVIEW
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<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>' :disHover="true" :padding="0" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
<div slot="extra">
<div class='toolbar-container'>
<tooltip :transfer="true" :max-width="600" v-for="(linkItem, index) in linkModel" :key="index">
<i-button @click="dynamic_toolbar_click(linkItem, $event)">
<span class='caption'>{{linkItem.sequenceFlowName}}</span>
</i-button>
<div slot='content'>{{linkItem.sequenceFlowName}}</div>
</tooltip>
</div>
</div>
<div class="content-container">
<#if view.hasPSControl('form')>
<@ibizindent blank=8>
${P.getCtrlCode('form', 'CONTROL.html').code}
</@ibizindent>
</#if>
</div>
</card>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEWFDYNAEDITVIEW
\ No newline at end of file
<#ibizinclude>
../@MACRO/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
<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>' :disHover="true" :padding="0" :bordered="false">
<#ibizinclude>
../@MACRO/VIEW_CAPTION.vue.ftl
</#ibizinclude>
</card>
</div>
\ No newline at end of file
CTRLTYPE=VIEWLAYOUTPANEL#APPDEWFDYNAEDITVIEW3
\ No newline at end of file
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <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> <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 :padding="0" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' dis-hover :padding="0" :bordered="false">
<@ibizindent blank=8> <@ibizindent blank=8>
......
<div class="view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>"> <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> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
</div> </div>
\ No newline at end of file
...@@ -5,4 +5,4 @@ ...@@ -5,4 +5,4 @@
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
...@@ -7,4 +7,4 @@ ...@@ -7,4 +7,4 @@
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
...@@ -9,4 +9,4 @@ ...@@ -9,4 +9,4 @@
</#assign> </#assign>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<div class='view-container ${srffilepath2(view.getCodeName())}<#if view.getPSSysCss?? && view.getPSSysCss()??> ${view.getPSSysCss().getCssName()}</#if>'> <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> <app-studioaction :viewTitle="$t(model.srfTitle)" viewName="${view.getCodeName()?lower_case}"></app-studioaction>
<card class='view-card' dis-hover :bordered="false"> <card class='view-card' dis-hover :bordered="false">
<#ibizinclude> <#ibizinclude>
......
...@@ -5,6 +5,9 @@ ${P.getCtrlCode('dashboard', 'CONTROL.html').code} ...@@ -5,6 +5,9 @@ ${P.getCtrlCode('dashboard', 'CONTROL.html').code}
</#if> </#if>
</@ibizindent> </@ibizindent>
</#assign> </#assign>
<#if view.getViewStyle() != 'DEFAULT'>
<#assign viewStyle = view.getViewStyle() />
</#if>
<#ibizinclude> <#ibizinclude>
../@MACRO/VIEW_LAYOUT_BASE.ftl ../@MACRO/VIEW_LAYOUT_BASE.ftl
</#ibizinclude> </#ibizinclude>
\ No newline at end of file
<#if ctrl.getPortletType() == 'CONTAINER'>
<#assign portletClass = "portlet-container">
<#assign portletHeight = "100%">
<#assign portletWidth = "100%">
<#else>
<#assign portletHeight = "clac(100% - 16px)">
<#assign portletWidth = "clac(100% - 16px)">
<#assign portletClass = "portlet">
</#if>
<template> <template>
<div class='porlet ${srffilepath2(ctrl.getCodeName())}' :style="{<#if (ctrl.getHeight?? && ctrl.getHeight() gt 0)>'height': isAdaptiveSize ? '100%' : '${ctrl.getHeight()?c}px',</#if><#if (ctrl.getWidth?? && ctrl.getWidth() gt 0)>'width': isAdaptiveSize ? '100%' : '${ctrl.getWidth()?c}px '</#if>}"> <div class='${portletClass} ${srffilepath2(ctrl.getCodeName())}' :style="{<#if (ctrl.getHeight?? && ctrl.getHeight() gt 0)>'height': isAdaptiveSize ? '${portletHeight}' : '${ctrl.getHeight()?c}px',</#if><#if (ctrl.getWidth?? && ctrl.getWidth() gt 0)>'width': isAdaptiveSize ? '${portletWidth}' : '${ctrl.getWidth()?c}px '</#if>}">
<#if ctrl.getPortletType?? && ctrl.getPortletType()??><#t> <#if ctrl.getPortletType?? && ctrl.getPortletType()??><#t>
<#-- 视图 --> <#-- 视图 -->
<#if ctrl.getPortletType() == 'VIEW' && ctrl.getPortletPSAppView?? && ctrl.getPortletPSAppView()??><#t> <#if ctrl.getPortletType() == 'VIEW' && ctrl.getPortletPSAppView?? && ctrl.getPortletPSAppView()??><#t>
<#if ctrl.isShowTitleBar()> <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
<p class='porlet-title'> <p class='portlet-title'>
${ctrl.getTitle()} ${ctrl.getTitle()}
</p> </p>
</#if> </#if>
<div class="<#if ctrl.isShowTitleBar()>portlet-width-title<#else>portlet-widthout-title</#if>"> <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
<#assign refview = ctrl.getPortletPSAppView()><#t> <#assign refview = ctrl.getPortletPSAppView()><#t>
<${srffilepath2(refview.getCodeName())} :viewdata="JSON.stringify(context)" :viewDefaultUsage="false" ></${srffilepath2(refview.getCodeName())}> <${srffilepath2(refview.getCodeName())} :viewdata="JSON.stringify(context)" :viewDefaultUsage="false" ></${srffilepath2(refview.getCodeName())}>
</div> </div>
<#-- 菜单 --> <#-- 菜单 -->
<#elseif ctrl.getPortletType() == 'APPMENU'><#t> <#elseif ctrl.getPortletType() == 'APPMENU'><#t>
<#if ctrl.isShowTitleBar()> <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
<p class='porlet-title'> <p class='portlet-title'>
${ctrl.getTitle()} ${ctrl.getTitle()}
</p> </p>
</#if> </#if>
<div class="<#if ctrl.isShowTitleBar()>portlet-width-title<#else>portlet-widthout-title</#if>"> <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
<#assign appmenu = ctrl.getPSAppMenu()><#t> <#assign appmenu = ctrl.getPSAppMenu()><#t>
<@ibizindent blank=6> <@ibizindent blank=6>
${P.getCtrlCode(appmenu, 'CONTROL.html').code} ${P.getCtrlCode(appmenu, 'CONTROL.html').code}
...@@ -27,12 +36,12 @@ ...@@ -27,12 +36,12 @@
</div> </div>
<#-- 自定义 --> <#-- 自定义 -->
<#elseif ctrl.getPortletType() == 'CUSTOM'> <#elseif ctrl.getPortletType() == 'CUSTOM'>
<#if ctrl.isShowTitleBar()> <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
<p class='porlet-title'> <p class='portlet-title'>
${ctrl.getTitle()} ${ctrl.getTitle()}
</p> </p>
</#if> </#if>
<div class="<#if ctrl.isShowTitleBar()>portlet-width-title<#else>portlet-widthout-title</#if>"> <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
...@@ -41,12 +50,12 @@ ...@@ -41,12 +50,12 @@
</div> </div>
<#-- 操作栏 --> <#-- 操作栏 -->
<#elseif ctrl.getPortletType() == 'ACTIONBAR'> <#elseif ctrl.getPortletType() == 'ACTIONBAR'>
<#if ctrl.isShowTitleBar()> <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
<p class='porlet-title'> <p class='portlet-title'>
${ctrl.getTitle()} ${ctrl.getTitle()}
</p> </p>
</#if> </#if>
<div class="<#if ctrl.isShowTitleBar()>portlet-width-title<#else>portlet-widthout-title</#if>"> <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
<#if ctrl.render??> <#if ctrl.render??>
${ctrl.render.code} ${ctrl.render.code}
<#else> <#else>
...@@ -55,12 +64,12 @@ ...@@ -55,12 +64,12 @@
</div> </div>
<#-- HTML --> <#-- HTML -->
<#elseif ctrl.getPortletType() == 'HTML'> <#elseif ctrl.getPortletType() == 'HTML'>
<#if ctrl.isShowTitleBar()> <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
<p class='porlet-title'> <p class='portlet-title'>
${ctrl.getTitle()} ${ctrl.getTitle()}
</p> </p>
</#if> </#if>
<div class="<#if ctrl.isShowTitleBar()>portlet-width-title<#else>portlet-widthout-title</#if>"> <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
<iframe src="<#if ctrl.getPageUrl()??>${ctrl.getPageUrl()}</#if>" style="height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()?c}<#else>400</#if>px;width: 100%;border-width: 1px;"></iframe> <iframe src="<#if ctrl.getPageUrl()??>${ctrl.getPageUrl()}</#if>" style="height: <#if ctrl.getHeight() gt 0>${ctrl.getHeight()?c}<#else>400</#if>px;width: 100%;border-width: 1px;"></iframe>
</div> </div>
<#-- 容器 --> <#-- 容器 -->
...@@ -74,21 +83,21 @@ ...@@ -74,21 +83,21 @@
</#if> </#if>
<#if layout == 'TABLE_24COL' && LayoutPos??><#t> <#if layout == 'TABLE_24COL' && LayoutPos??><#t>
<i-col<#if LayoutPos.getColXS() != -1> :xs="{ span: ${LayoutPos.getColXS()}, offset: <#if LayoutPos.getColXSOffset() != -1>${LayoutPos.getColXSOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColSM() != -1> :sm="{ span: ${LayoutPos.getColSM()}, offset: <#if LayoutPos.getColSMOffset() != -1>${LayoutPos.getColSMOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColMD() != -1> :md="{ span: ${LayoutPos.getColMD()}, offset: <#if LayoutPos.getColMDOffset() != -1>${LayoutPos.getColMDOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColLG() != -1> :lg="{ span: ${LayoutPos.getColLG()}, offset: <#if LayoutPos.getColLGOffset() != -1>${LayoutPos.getColLGOffset()}<#else>0</#if> }"</#if>> <i-col<#if LayoutPos.getColXS() != -1> :xs="{ span: ${LayoutPos.getColXS()}, offset: <#if LayoutPos.getColXSOffset() != -1>${LayoutPos.getColXSOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColSM() != -1> :sm="{ span: ${LayoutPos.getColSM()}, offset: <#if LayoutPos.getColSMOffset() != -1>${LayoutPos.getColSMOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColMD() != -1> :md="{ span: ${LayoutPos.getColMD()}, offset: <#if LayoutPos.getColMDOffset() != -1>${LayoutPos.getColMDOffset()}<#else>0</#if> }"</#if><#if LayoutPos.getColLG() != -1> :lg="{ span: ${LayoutPos.getColLG()}, offset: <#if LayoutPos.getColLGOffset() != -1>${LayoutPos.getColLGOffset()}<#else>0</#if> }"</#if>>
<div class="portlet-widthout-title"> <div class="portlet-without-title">
<@ibizindent blank=18> <@ibizindent blank=18>
${P.getCtrlCode(portlet, 'CONTROL.html').code} ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</div> </div>
</i-col> </i-col>
<#else> <#else>
<div class="portlet-widthout-title"> <div class="portlet-without-title">
<@ibizindent blank=18> <@ibizindent blank=18>
${P.getCtrlCode(portlet, 'CONTROL.html').code} ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
</div> </div>
</#if> </#if>
<#if layout == 'FLEX'> <#if layout == 'FLEX'>
<div class="portlet-widthout-title"> <div class="portlet-without-title">
<@ibizindent blank=18> <@ibizindent blank=18>
${P.getCtrlCode(portlet, 'CONTROL.html').code} ${P.getCtrlCode(portlet, 'CONTROL.html').code}
</@ibizindent> </@ibizindent>
...@@ -101,12 +110,12 @@ ...@@ -101,12 +110,12 @@
</#list> </#list>
<#-- 其他部件 --> <#-- 其他部件 -->
<#elseif ctrl.getContentPSControl()??><#t> <#elseif ctrl.getContentPSControl()??><#t>
<#if ctrl.isShowTitleBar()> <#if ctrl.isShowTitleBar() && ctrl.getTitle()??>
<p class='porlet-title'> <p class='portlet-title'>
${ctrl.getTitle()} ${ctrl.getTitle()}
</p> </p>
</#if> </#if>
<div class="<#if ctrl.isShowTitleBar()>portlet-width-title<#else>portlet-widthout-title</#if>"> <div class="<#if ctrl.isShowTitleBar()>portlet-with-title<#else>portlet-without-title</#if>">
<#assign control = ctrl.getContentPSControl()><#t> <#assign control = ctrl.getContentPSControl()><#t>
<!-- 测试 --> <!-- 测试 -->
<@ibizindent blank=6> <@ibizindent blank=6>
......
<#ibizinclude> <#ibizinclude>
../@MACRO/CSS/DEFAULT.less.ftl ../@MACRO/CSS/DEFAULT.less.ftl
</#ibizinclude> </#ibizinclude>
.porlet{ .portlet{
height: 100%; height: 100%;
width: 100%; width: 100%;
> .porlet-title{ > .portlet-title{
padding: 14px 16px; padding: 14px 16px;
display: -webkit-box; display: -webkit-box;
display: -ms-flexbox; display: -ms-flexbox;
...@@ -23,13 +23,13 @@ ...@@ -23,13 +23,13 @@
color: #304265; color: #304265;
font-weight: 600; font-weight: 600;
} }
> .portlet-width-title{ > .portlet-with-title{
width:100%; width:100%;
height:calc(100% - 52px); height:calc(100% - 52px);
overflow:auto; overflow:auto;
padding:0px 12px; padding:0px 12px;
} }
> .portlet-widthout-title{ > .portlet-without-title{
width:100%; width:100%;
height:100%; height:100%;
overflow:auto; overflow:auto;
......
<span v-html="data.${editor.name}"></span>
\ No newline at end of file
EDITORTYPE=HTMLEDITOR#INFO
\ No newline at end of file
<app-upload-file-info name='${editor.name}' :value="data.${editor.name}" style="${editor.getEditorCssStyle()}"></app-upload-file-info> <app-upload-file-info name='${editor.name}' :value="row[column.property]" style="${editor.getEditorCssStyle()}"></app-upload-file-info>
\ No newline at end of file \ No newline at end of file
<app-span <#t> <app-span <#t>
name='${editor.name}'
:value="data.${editor.name}" <#t> :value="data.${editor.name}" <#t>
<#if item.getPSCodeList?? && item.getPSCodeList()??> <#if item.getPSCodeList?? && item.getPSCodeList()??>
<#assign codelist=item.getPSCodeList() /> <#assign codelist=item.getPSCodeList() />
......
<app-span <#t> <app-span <#t>
name='${editor.name}'
:value="data.${editor.name}" <#t> :value="data.${editor.name}" <#t>
<#if item.getPSCodeList?? && item.getPSCodeList()??> <#if item.getPSCodeList?? && item.getPSCodeList()??>
<#assign codelist=item.getPSCodeList() /> <#assign codelist=item.getPSCodeList() />
......
<span v-html="data.${item.getViewFieldName()?lower_case}"></span>
\ No newline at end of file
...@@ -14,7 +14,18 @@ ...@@ -14,7 +14,18 @@
if (!xData || !(xData.wfstart instanceof Function)) { if (!xData || !(xData.wfstart instanceof Function)) {
return; return;
} }
<#if view.getPSWorkflow()??>
<#assign curWorkflow = view.getPSWorkflow() />
<#-- 通过是否使用代理模式来区分流程启动的模式 -->
<#if curWorkflow.isUseWFProxyApp()>
xData.wfstart(args).then((response: any) => { xData.wfstart(args).then((response: any) => {
<#else>
let localdata:any = {processDefinitionKey:null};
xData.wfstart(args,localdata).then((response: any) => {
</#if>
<#else>
xData.wfstart(args).then((response: any) => {
</#if>
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
return; return;
} }
...@@ -25,6 +36,8 @@ ...@@ -25,6 +36,8 @@
if (_this.viewdata) { if (_this.viewdata) {
_this.$emit('viewdataschange', [{ ..._data }]); _this.$emit('viewdataschange', [{ ..._data }]);
_this.$emit('close'); _this.$emit('close');
}else if (this.$tabPageExp) {
this.$tabPageExp.onClose(this.$route.fullPath);
} }
}); });
} }
\ No newline at end of file
<#ibizinclude> <#ibizinclude>
../../../@MACRO/LANG_FUN.ftl ../../../@MACRO/LANG_FUN.ftl
</#ibizinclude> </#ibizinclude>
<#macro getres tempView>
<#compress>
<#if tempView.getPSAppDataEntity?? && tempView.getPSAppDataEntity()?? && tempView.getPSAppDataEntity().getMajorPSAppDERSs?? && tempView.getPSAppDataEntity().getMajorPSAppDERSs()??>
<#assign appDataEneity = tempView.getPSAppDataEntity() />
<#if appDataEneity.getMajorPSAppDERSs?? && appDataEneity.getMajorPSAppDERSs()??>
[<#list appDataEneity.getMajorPSAppDERSs() as psDes><#if !P.exists("importService", psDes.getMajorPSAppDataEntity().getId(), "")>'${psDes.getMajorPSAppDataEntity().getCodeName()}'</#if></#list>]
</#if>
</#if>
</#compress>
</#macro>
<#if item.getPSViewLogic?? && item.getPSViewLogic()??> <#if item.getPSViewLogic?? && item.getPSViewLogic()??>
<#assign viewlogic = item.getPSViewLogic()/> <#assign viewlogic = item.getPSViewLogic()/>
/** /**
...@@ -17,7 +27,47 @@ ...@@ -17,7 +27,47 @@
<#if viewlogic.isEnableWizardAdd()> <#if viewlogic.isEnableWizardAdd()>
this.$Notice.warning({ title: '错误', desc: '向导添加未实现' }); this.$Notice.warning({ title: '错误', desc: '向导添加未实现' });
<#elseif viewlogic.isEnableBatchAdd()> <#elseif viewlogic.isEnableBatchAdd()>
this.$Notice.warning({ title: '错误', desc: '支持批添加未实现' }); <#-- 批量添加 -->
<#if viewlogic.getBatchAddPSAppViews?? && viewlogic.getBatchAddPSAppViews()??>
<#assign batchAddPSAppViews = viewlogic.getBatchAddPSAppViews()/>
const batchAddPSAppViews=[
<#list batchAddPSAppViews as batchAddPSAppView>
{view:{viewname:'${srffilepath2(batchAddPSAppView.getCodeName())}',height: ${batchAddPSAppView.getHeight()?c},width: ${batchAddPSAppView.getWidth()?c},title: '${batchAddPSAppView.title}'},
res:<@getres tempView=batchAddPSAppView />}<#if batchAddPSAppView_has_next>,</#if>
</#list>
];
</#if>
if(batchAddPSAppViews.length == 0 || !this.context.srfparentdename){
this.$Notice.warning({ title: '错误', desc: '批量添加需添加N:N关系' });
return;
}
let openViewModel:any = batchAddPSAppViews.find((item:any) =>{
return (item.res && (item.res[0] !== this.context.srfparentdename));
})
let container: Subject<any> = this.$appmodal.openModal(openViewModel.view, JSON.parse(JSON.stringify(this.context)), args[0]);
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, 'OK')) {
return;
}
if(result.datas && result.datas.length == 0){
return;
}
let requestParam:Array<any> = [];
result.datas.forEach((record:any) => {
record[this.appEntityService.APPDEKEY] = this.context['srfparentkey'];
requestParam.push(record);
});
this.appEntityService.createBatch(JSON.parse(JSON.stringify(this.context)),requestParam,true).then((response:any) =>{
if (!response || response.status !== 200) {
this.$Notice.error({ title: '错误', desc: '批处理操作失败' });
return;
}
if (!xData || !(xData.refresh instanceof Function)) {
return;
}
xData.refresh(result.datas);
});
});
<#elseif viewlogic.isBatchAddOnly()> <#elseif viewlogic.isBatchAddOnly()>
this.$Notice.warning({ title: '错误', desc: '只支持批添加未实现' }); this.$Notice.warning({ title: '错误', desc: '只支持批添加未实现' });
<#elseif viewlogic.getNewDataPSAppView()??> <#elseif viewlogic.getNewDataPSAppView()??>
......
...@@ -128,7 +128,11 @@ ...@@ -128,7 +128,11 @@
const _this: any = this; const _this: any = this;
const openIndexViewTab = (data: any) => { const openIndexViewTab = (data: any) => {
const routePath = this.$viewTool.buildUpRoutePath(this.$route, curViewParam, deResParameters, parameters, args, data); const routePath = this.$viewTool.buildUpRoutePath(this.$route, curViewParam, deResParameters, parameters, args, data);
<#if dataview.getViewType() == "DEWFDYNAEDITVIEW" >
this.$router.push(routePath+'?userTaskId='+this.viewparams.userTaskId);
<#else>
this.$router.push(routePath); this.$router.push(routePath);
</#if>
} }
openIndexViewTab(data); openIndexViewTab(data);
<#elseif dataview.getOpenMode() == 'POPUPAPP'> <#elseif dataview.getOpenMode() == 'POPUPAPP'>
......
<#assign self_content>
/**
* 分割宽度
*
* @type {number}
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected split: number = 0.2;
/**
* 树导航栏数据
*
* @type {any}
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected wfStepModel: Array<any> = [];
/**
* 是否展开搜索表单
*
* @type {any}
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected isExpandSearchForm:boolean = true;
/**
* 是否单选
*
* @type {any}
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected isSingleSelect:boolean = true;
/**
* 左侧树的默认配置
*
* @type {any}
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected defaultProps:any ={
children: 'children',
label: 'userTaskName'
};
/**
* 左侧树当前选中节点
*
* @type {any}
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected curSelectedNode:any;
/**
* 获取树导航栏数据
*
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected getWFStepModel():Promise<any>{
return new Promise((resolve:any, reject:any) =>{
this.appEntityService.WFGetWFStep().then((response:any) =>{
if (response && response.status === 200) {
this.wfStepModel = response.data;
if(this.wfStepModel && this.wfStepModel.length > 0){
this.curSelectedNode = this.wfStepModel[0];
}
Object.assign(this.viewparams,{'userTaskId':this.curSelectedNode['userTaskId'],'processDefinitionKey':this.curSelectedNode['processDefinitionKey']});
this.setTreeNodeHighLight(this.curSelectedNode);
resolve(response.data);
}
}).catch((response: any) => {
if (response && response.status) {
this.$Notice.error({ title: '错误', desc: response.message });
return;
}
if (!response || !response.status || !response.data) {
this.$Notice.error({ title: '错误', desc: '系统异常' });
return;
}
});
})
}
/**
* 左侧树选中节点
*
* @type {any}
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected handleNodeClick(data:any) {
this.curSelectedNode = data;
this.setTreeNodeHighLight(this.curSelectedNode);
Object.assign(this.viewparams,{'userTaskId':data['userTaskId'],'processDefinitionKey':data['processDefinitionKey']});
(this.$refs.searchform as any).onSearch();
}
/**
* 设置选中高亮
*
* @param {*} data
* @memberof ${srfclassname('${view.codeName}')}Base
*/
protected setTreeNodeHighLight(data: any): void {
this.$nextTick(() =>{
const tree: any = this.$refs.tree;
tree.setCurrentKey(data.userTaskId);
})
}
</#assign>
<#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEWFDYNAEXPGRIDVIEW
\ No newline at end of file
<#assign self_content>
/**
* 工具栏模型数据
*
* @memberof ${srfclassname('${view.codeName}')}Base
*/
public linkModel:Array<any> = [];
/**
* 获取工具栏按钮
*
* @memberof ${srfclassname('${view.codeName}')}Base
*/
public getWFLinkModel():Promise<any>{
return new Promise((resolve:any, reject:any) =>{
let datas: any[] = [];
let xData: any = this.$refs.form;
if (xData.getDatas && xData.getDatas instanceof Function) {
datas = [...xData.getDatas()];
}
if(Object.keys(this.viewparams).length > 0){
Object.assign(datas,{'taskDefinitionKey':this.viewparams.userTaskId});
}
this.appEntityService.GetWFLink(JSON.parse(JSON.stringify(this.context)),datas,true).then((response:any) =>{
if (response && response.status === 200) {
this.linkModel = response.data;
resolve(response.data);
}
}).catch((response: any) => {
if (response && response.status) {
this.$Notice.error({ title: '错误', desc: response.message });
return;
}
if (!response || !response.status || !response.data) {
this.$Notice.error({ title: '错误', desc: '系统异常' });
return;
}
});
});
}
/**
* 动态工具栏点击
*
* @memberof ${srfclassname('${view.codeName}')}Base
*/
public dynamic_toolbar_click(linkItem:any, $event:any){
let datas: any[] = [];
let xData: any = this.$refs.form;
if (xData.getDatas && xData.getDatas instanceof Function) {
datas = [...xData.getDatas()];
}
xData.wfsubmit(datas,linkItem).then((response: any) => {
if (!response || response.status !== 200) {
return;
}
const { data: _data } = response;
if (this.viewdata) {
this.$emit('viewdataschange', [{ ..._data }]);
this.$emit('close');
} else if (this.$tabPageExp) {
this.$tabPageExp.onClose(this.$route.fullPath);
}
});
}
</#assign>
<#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEWFDYNAEDITVIEW
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW-BASE.vue.ftl
</#ibizinclude>
\ No newline at end of file
${P.getLayoutCode().code}
\ No newline at end of file
<#ibizinclude>
../@MACRO/VIEW.vue.ftl
</#ibizinclude>
\ No newline at end of file
VIEWTYPE=APPDEWFDYNAEDITVIEW3
\ No newline at end of file
...@@ -83,10 +83,55 @@ const mockDatas: Array<any> = [ ...@@ -83,10 +83,55 @@ const mockDatas: Array<any> = [
</#if> </#if>
]; ];
//getwflink
mock.onGet(new RegExp(/^\/wfcore\/${app.getPSSystem().getCodeName()?lower_case}-app-${app.getCodeName()?lower_case}\/${srfpluralize(item.codeName)?lower_case}\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => {
console.groupCollapsed("实体:${item.codeName?lower_case} 方法: getwflink");
console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, {}];
}
return [status,[
{"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意",
"taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1",
"processInstanceId":"ddlfldldfldsfds","refViewKey":""},
{"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意",
"taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1",
"processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"}
]];
});
// getwfstep
mock.onGet(new RegExp(/^\/wfcore\/${app.getPSSystem().getCodeName()?lower_case}-app-${app.getCodeName()?lower_case}\/${srfpluralize(item.codeName)?lower_case}\/process-definitions-nodes$/)).reply((config: any) => {
console.groupCollapsed("实体:${item.codeName?lower_case} 方法: getwfstep");
console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config);
if (status !== 200) {
return [status, {}];
}
return [status, [
{"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd",
"userTaskName":"待审",
"cnt":0,
"processDefinitionKey":"support-workorders-approve-v1",
"processDefinitionName":"工单审批流程v1"
},
{"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927",
"userTaskName":"待分配",
"cnt":3,
"processDefinitionKey":"support-workorders-approve-v1",
"processDefinitionName":"工单审批流程v1"}
]];
});
// createBatch // createBatch
mock.onPost(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).reply((config: any) => { mock.onPost(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:${item.codeName?lower_case} 方法: createBatch"); console.groupCollapsed("实体:${item.codeName?lower_case} 方法: createBatch");
console.table({url:config.url, method: config.method, data:config.data}); console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config); let status = MockAdapter.mockStatus(config);
if (status !== 200) { if (status !== 200) {
return [status, {}]; return [status, {}];
...@@ -98,6 +143,7 @@ mock.onPost(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)). ...@@ -98,6 +143,7 @@ mock.onPost(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).
mock.onPut(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).reply((config: any) => { mock.onPut(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:${item.codeName?lower_case} 方法: updateBatch"); console.groupCollapsed("实体:${item.codeName?lower_case} 方法: updateBatch");
console.table({url:config.url, method: config.method, data:config.data}); console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config); let status = MockAdapter.mockStatus(config);
if (status !== 200) { if (status !== 200) {
return [status, {}]; return [status, {}];
...@@ -109,6 +155,7 @@ mock.onPut(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).r ...@@ -109,6 +155,7 @@ mock.onPut(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).r
mock.onDelete(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).reply((config: any) => { mock.onDelete(new RegExp(/^\/${srfpluralize(item.codeName)?lower_case}\/batch$/)).reply((config: any) => {
console.groupCollapsed("实体:${item.codeName?lower_case} 方法: removeBatch"); console.groupCollapsed("实体:${item.codeName?lower_case} 方法: removeBatch");
console.table({url:config.url, method: config.method, data:config.data}); console.table({url:config.url, method: config.method, data:config.data});
console.groupEnd();
let status = MockAdapter.mockStatus(config); let status = MockAdapter.mockStatus(config);
if (status !== 200) { if (status !== 200) {
return [status, {}]; return [status, {}];
......
...@@ -438,6 +438,8 @@ export default class ${srfclassname('${item.getCodeName()}')}ServiceBase extends ...@@ -438,6 +438,8 @@ export default class ${srfclassname('${item.getCodeName()}')}ServiceBase extends
this.APPDEKEY = '${item.getKeyPSAppDEField().getCodeName()?lower_case}'; this.APPDEKEY = '${item.getKeyPSAppDEField().getCodeName()?lower_case}';
this.APPDENAME = '${srfpluralize(item.codeName)?lower_case}'; this.APPDENAME = '${srfpluralize(item.codeName)?lower_case}';
this.APPDETEXT = '<#if item.getMajorPSAppDEField?? && item.getMajorPSAppDEField()??>${item.getMajorPSAppDEField().getCodeName()?lower_case}</#if>'; this.APPDETEXT = '<#if item.getMajorPSAppDEField?? && item.getMajorPSAppDEField()??>${item.getMajorPSAppDEField().getCodeName()?lower_case}</#if>';
this.APPNAME = '${app.getCodeName()?lower_case}';
this.SYSTEMNAME = '${app.getPSSystem().getCodeName()?lower_case}';
} }
// 实体接口 // 实体接口
......
*2020-4-29* ## v7.0.0-alpha.2 [2020-5-7]
### Bug修复
分页导航栏添加图标配置
工具栏按钮样式支持
模态边距样式调整
### 功能新增及优化
#### 模板
表格文件上传信息显示
批添加、批删除
富文本信息模式
更新默认值
看板视图默认卡片模式,支持无缝模式
树导航样式调整
表格样式调整
拖拽样式修改
#### 基础文件
看板视图默认卡片模式,支持无缝模式
表格文件上传信息显示
用户名识别
工具栏按钮样式支持
模态边距样式调整
## v7.0.0-alpha.1 [2020-4-29]
初始化文件 初始化文件
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册