提交 6de6fb77 编写于 作者: 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) {
......
...@@ -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) {
......
...@@ -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())>
......
...@@ -416,6 +416,9 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -416,6 +416,9 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
if(Object.is(action,'loadDraft')){ if(Object.is(action,'loadDraft')){
this.createDefault(); this.createDefault();
} }
if(Object.is(action,'load')){
this.updateDefault();
}
this.$nextTick(function () { this.$nextTick(function () {
this.ignorefieldvaluechange = false; this.ignorefieldvaluechange = false;
}) })
...@@ -850,8 +853,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -850,8 +853,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
}); });
} }
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
return; return;
} }
if (!response || !response.status || !response.data) { if (!response || !response.status || !response.data) {
...@@ -877,8 +880,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -877,8 +880,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
let post: Promise<any> = this.service.loadDraft(this.loaddraftAction,JSON.parse(JSON.stringify(this.context)),{viewparams:viewparamResult}, this.showBusyIndicator); let post: Promise<any> = this.service.loadDraft(this.loaddraftAction,JSON.parse(JSON.stringify(this.context)),{viewparams:viewparamResult}, this.showBusyIndicator);
post.then((response: any) => { post.then((response: any) => {
if (!response.status || response.status !== 200) { if (!response.status || response.status !== 200) {
if (response.errorMessage) { if (response.data) {
this.$Notice.error({ title: '错误', desc: response.errorMessage }); this.$Notice.error({ title: '错误', desc: response.data.message });
} }
return; return;
} }
...@@ -906,8 +909,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -906,8 +909,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
} }
}); });
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
return; return;
} }
if (!response || !response.status || !response.data) { if (!response || !response.status || !response.data) {
...@@ -940,8 +943,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -940,8 +943,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
const post: Promise<any> = this.service.add(action, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator); const post: Promise<any> = this.service.add(action, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator);
post.then((response: any) => { post.then((response: any) => {
if (!response.status || response.status !== 200) { if (!response.status || response.status !== 200) {
if (response.errorMessage) { if (response.data) {
this.$Notice.error({ title: '错误', desc: response.errorMessage }); this.$Notice.error({ title: '错误', desc: response.data.message });
} }
return; return;
} }
...@@ -956,8 +959,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -956,8 +959,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
this.formState.next({ type: 'save', data: data }); this.formState.next({ type: 'save', data: data });
}); });
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
return; return;
} }
if (!response || !response.status || !response.data) { if (!response || !response.status || !response.data) {
...@@ -1012,8 +1015,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1012,8 +1015,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
const post: Promise<any> = Object.is(data.srfuf, '1')?this.service.update(action, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator):this.service.add(action,JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator); const post: Promise<any> = Object.is(data.srfuf, '1')?this.service.update(action, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator):this.service.add(action,JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator);
post.then((response: any) => { post.then((response: any) => {
if (!response.status || response.status !== 200) { if (!response.status || response.status !== 200) {
if (response.errorMessage) { if (response.data) {
this.$Notice.error({ title: '错误', desc: response.errorMessage }); this.$Notice.error({ title: '错误', desc: response.data.message });
} }
return; return;
} }
...@@ -1034,8 +1037,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1034,8 +1037,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
</#if> </#if>
resolve(response); resolve(response);
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
reject(response); reject(response);
return; return;
} }
...@@ -1087,35 +1090,38 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1087,35 +1090,38 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
* 工作流启动 * 工作流启动
* *
* @param {*} [data={}] * @param {*} [data={}]
* @param {*} [localdata={}]
* @returns {Promise<any>} * @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected async wfstart(data: any): Promise<any> { protected async wfstart(data: any,localdata?:any): Promise<any> {
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
if(!this.WFStartAction){ <#-- if(!this.WFStartAction){
this.$Notice.error({ title: '错误', desc: 'WFCIDEditView视图表单WFStartAction参数未配置' }); this.$Notice.error({ title: '错误', desc: 'WFCIDEditView视图表单WFStartAction参数未配置' });
return; return;
} } -->
const _this: any = this; const _this: any = this;
const arg: any = data[0]; const arg: any = data[0];
Object.assign(arg,{viewparams:this.viewparams}); Object.assign(arg,{viewparams:this.viewparams});
const post: Promise<any> = Object.is(data.srfuf, '1')?this.service.update(this.updateAction, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator):this.service.add(this.createAction,JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator); const post: Promise<any> = Object.is(arg.srfuf, '1')?this.service.update(this.updateAction, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator):this.service.add(this.createAction,JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator);
post.then((response:any) =>{ post.then((response:any) =>{
const arg:any = response.data; const arg:any = response.data;
if(this.viewparams){ if(this.viewparams){
Object.assign(arg,{viewparams:this.viewparams}); Object.assign(arg,{viewparams:this.viewparams});
} }
const result: Promise<any> = this.service.wfstart(_this.WFStartAction, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator); const result: Promise<any> = this.service.wfstart(_this.WFStartAction, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator,localdata);
result.then((response: any) => { result.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
this.$Notice.error({ title: '', desc: '工作流启动失败, ' + response.info }); if(response.data){
this.$Notice.error({ title: '', desc: '工作流启动失败, ' + response.data.message });
}
return; return;
} }
this.$Notice.info({ title: '', desc: '工作流启动成功' }); this.$Notice.info({ title: '', desc: '工作流启动成功' });
resolve(response); resolve(response);
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
reject(response); reject(response);
return; return;
} }
...@@ -1127,8 +1133,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1127,8 +1133,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
reject(response); reject(response);
}); });
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
reject(response); reject(response);
return; return;
} }
...@@ -1146,15 +1152,16 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1146,15 +1152,16 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
* 工作流提交 * 工作流提交
* *
* @param {*} [data={}] * @param {*} [data={}]
* @param {*} [localdata={}]
* @returns {Promise<any>} * @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')} * @memberof ${srfclassname('${ctrl.codeName}')}
*/ */
protected async wfsubmit(data: any): Promise<any> { protected async wfsubmit(data: any,localdata?:any): Promise<any> {
return new Promise((resolve: any, reject: any) => { return new Promise((resolve: any, reject: any) => {
if(!this.WFSubmitAction){ <#-- if(!this.WFSubmitAction){
this.$Notice.error({ title: '错误', desc: '${view.getName()}视图表单WFSubmitAction参数未配置' }); this.$Notice.error({ title: '错误', desc: '${view.getName()}视图表单WFSubmitAction参数未配置' });
return; return;
} } -->
const _this: any = this; const _this: any = this;
const arg: any = data[0]; const arg: any = data[0];
Object.assign(arg,{viewparams:this.viewparams}); Object.assign(arg,{viewparams:this.viewparams});
...@@ -1167,17 +1174,19 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1167,17 +1174,19 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
if(this.viewparams){ if(this.viewparams){
Object.assign(arg,{viewparams:this.viewparams}); Object.assign(arg,{viewparams:this.viewparams});
} }
const result: Promise<any> = this.service.wfsubmit(_this.WFSubmitAction, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator); const result: Promise<any> = this.service.wfsubmit(_this.WFSubmitAction, JSON.parse(JSON.stringify(this.context)),arg, this.showBusyIndicator,localdata);
result.then((response: any) => { result.then((response: any) => {
if (!response || response.status !== 200) { if (!response || response.status !== 200) {
this.$Notice.error({ title: '', desc: '工作流提交失败, ' + response.info }); if(response.data){
this.$Notice.error({ title: '', desc: '工作流提交失败, ' + response.data.message });
}
return; return;
} }
this.$Notice.info({ title: '', desc: '工作流提交成功' }); this.$Notice.info({ title: '', desc: '工作流提交成功' });
resolve(response); resolve(response);
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
reject(response); reject(response);
return; return;
} }
...@@ -1189,8 +1198,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1189,8 +1198,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
reject(response); reject(response);
}); });
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
reject(response); reject(response);
return; return;
} }
...@@ -1243,8 +1252,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1243,8 +1252,8 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
this.formState.next({ type: 'updateformitem', ufimode: arg.srfufimode, data: _data }); this.formState.next({ type: 'updateformitem', ufimode: arg.srfufimode, data: _data });
}); });
}).catch((response: any) => { }).catch((response: any) => {
if (response && response.status) { if (response && response.status && response.data) {
this.$Notice.error({ title: '错误', desc: response.message }); this.$Notice.error({ title: '错误', desc: response.data.message });
return; return;
} }
if (!response || !response.status || !response.data) { if (!response || !response.status || !response.data) {
...@@ -1398,6 +1407,40 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; ...@@ -1398,6 +1407,40 @@ import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
</#list> </#list>
} }
/**
* 更新默认值
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public updateDefault(){
<#list ctrl.getAllPSDEFormDetails() as formdetail><#t>
<#if formdetail.getUpdateDV?? && formdetail.getUpdateDV()??><#t>
<#if !(formdetail.getUpdateDVT() == '')><#t>
if (this.data.hasOwnProperty('${formdetail.getCodeName()?lower_case}') && !this.data.${formdetail.getCodeName()?lower_case}) {
<#-- 网页请求 -->
<#if formdetail.getUpdateDVT() == 'CONTEXT'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.viewparams['${formdetail.getUpdateDV()}'];
<#-- 用户全局对象 -->
<#elseif formdetail.getUpdateDVT() == 'SESSION'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.context['${formdetail.getUpdateDV()}'];
<#-- 当前应用数据 -->
<#elseif formdetail.getUpdateDVT() == 'APPDATA'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.context['${formdetail.getUpdateDV()}'];
<#-- 当前操作用户(名称) -->
<#elseif formdetail.getUpdateDVT() == 'OPERATORNAME'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.context['srfusername'];
<#-- 当前操作用户(编号) -->
<#elseif formdetail.getUpdateDVT() == 'OPERATOR'>
this.data['${formdetail.getCodeName()?lower_case}'] = this.context['srfuserid'];
<#else>
<#-- 默认值 -->
this.data['${formdetail.getCodeName()?lower_case}'] = '${formdetail.getUpdateDV()}';
</#if>
}
</#if>
</#if>
</#list>
}
<#-- 搜索表单:Begin --> <#-- 搜索表单:Begin -->
<#if ctrl.getControlType() == 'SEARCHFORM'> <#if ctrl.getControlType() == 'SEARCHFORM'>
<#if ctrl.getSearchButtonStyle() == 'DEFAULT'> <#if ctrl.getSearchButtonStyle() == 'DEFAULT'>
......
...@@ -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>
......
...@@ -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) {
......
<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> <#if view.getViewStyle() != 'DEFAULT'>${view.getViewStyle()}</#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="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="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> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :disHover="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if> <#if !view.hasPSControl('toolbar')> view-no-toolbar</#if>' :disHover="true" :bordered="false">
......
<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="true" :bordered="false"> <card class='view-card' :dis-hover="true" :bordered="false">
......
...@@ -32,7 +32,7 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code} ...@@ -32,7 +32,7 @@ ${P.getCtrlCode('grid', 'CONTROL.html').code}
</#if> </#if>
</#if> </#if>
</#assign> </#assign>
<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="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :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>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover='true' :padding='0' :bordered='false'> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover='true' :padding='0' :bordered='false'>
......
<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
<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="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false">
<#ibizinclude> <#ibizinclude>
......
<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="true" :bordered="false"> <card class='view-card' :dis-hover="true" :bordered="false">
......
<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>' :bordered="false" :dis-hover="true" > <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :bordered="false" :dis-hover="true" >
......
<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 view-no-caption' :bordered="false" :dis-hover="true" > <card class='view-card view-no-caption' :bordered="false" :dis-hover="true" >
<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' :dis-hover="true" :bordered="false"> <card class='view-card' :dis-hover="true" :bordered="false">
......
<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>' :bordered="false" :dis-hover="true" > <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :bordered="false" :dis-hover="true" >
......
<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>' :bordered="false" :dis-hover="true" > <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :bordered="false" :dis-hover="true" >
......
<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>
<card class='view-card' :dis-hover="true" :padding="0" :bordered="false"> <card class='view-card' :dis-hover="true" :padding="0" :bordered="false">
<div class="content-container pickup-view"> <div class="content-container pickup-view">
......
<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="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :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>
<card class='view-card view-no-caption' :dis-hover="true" :bordered="false"> <card class='view-card view-no-caption' :dis-hover="true" :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>' :dis-hover="true" :padding="0" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :padding="0" :bordered="false">
<div class="content-container pickup-view"> <div class="content-container pickup-view">
......
<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
<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="true" :bordered="false"> <card class='view-card' :dis-hover="true" :bordered="false">
......
<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="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :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>
<card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false">
......
<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="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :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="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="true" :bordered="false"> <card class='view-card' :dis-hover="true" :bordered="false">
......
<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="true" :bordered="false"> <card class='view-card' :dis-hover="true" :bordered="false">
......
<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="true" :bordered="false"> <card class='view-card<#if !view.isShowCaptionBar()> view-no-caption</#if>' :dis-hover="true" :bordered="false">
<#-- 不带数据信息标题 --> <#-- 不带数据信息标题 -->
......
<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 view-no-caption' :dis-hover="true" :bordered="false"> <card class='view-card view-no-caption' :dis-hover="true" :bordered="false">
<div class='content-container pickup-grid-view'> <div class='content-container pickup-grid-view'>
......
<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>
<card class='view-card' dis-hover :bordered="false"> <card class='view-card' dis-hover :bordered="false">
<#ibizinclude> <#ibizinclude>
......
<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> <#if view.getViewStyle() != 'DEFAULT'>${view.getViewStyle()}</#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>
......
<#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>
<#if item.getPSViewLogic?? && item.getPSViewLogic()??> <#macro getres tempView>
<#assign viewlogic = item.getPSViewLogic()/> <#compress>
/** <#if tempView.getPSAppDataEntity?? && tempView.getPSAppDataEntity()?? && tempView.getPSAppDataEntity().getMajorPSAppDERSs?? && tempView.getPSAppDataEntity().getMajorPSAppDERSs()??>
* 打开新建数据视图 <#assign appDataEneity = tempView.getPSAppDataEntity() />
* <#if appDataEneity.getMajorPSAppDERSs?? && appDataEneity.getMajorPSAppDERSs()??>
* @param {any[]} args [<#list appDataEneity.getMajorPSAppDERSs() as psDes><#if !P.exists("importService", psDes.getMajorPSAppDataEntity().getId(), "")>'${psDes.getMajorPSAppDataEntity().getCodeName()}'</#if></#list>]
* @param {*} [params] </#if>
* @param {*} [fullargs] </#if>
* @param {*} [$event] </#compress>
* @param {*} [xData] </#macro>
* @memberof ${srfclassname('${view.name}')} <#if item.getPSViewLogic?? && item.getPSViewLogic()??>
*/ <#assign viewlogic = item.getPSViewLogic()/>
protected newdata(args: any[],fullargs?:any[], params?: any, $event?: any, xData?: any) { /**
<#if viewlogic.isEnableWizardAdd()> * 打开新建数据视图
this.$Notice.warning({ title: '错误', desc: '向导添加未实现' }); *
<#elseif viewlogic.isEnableBatchAdd()> * @param {any[]} args
this.$Notice.warning({ title: '错误', desc: '支持批添加未实现' }); * @param {*} [params]
<#elseif viewlogic.isBatchAddOnly()> * @param {*} [fullargs]
this.$Notice.warning({ title: '错误', desc: '只支持批添加未实现' }); * @param {*} [$event]
<#elseif viewlogic.getNewDataPSAppView()??> * @param {*} [xData]
<#assign dataview = viewlogic.getNewDataPSAppView()/> * @memberof ${srfclassname('${view.name}')}
const data: any = {}; */
let curViewParam = JSON.parse(JSON.stringify(this.context)); protected newdata(args: any[],fullargs?:any[], params?: any, $event?: any, xData?: any) {
if(args.length >0){ <#if viewlogic.isEnableWizardAdd()>
Object.assign(curViewParam,args[0]); this.$Notice.warning({ title: '错误', desc: '向导添加未实现' });
} <#elseif viewlogic.isEnableBatchAdd()>
<#-- BEGIN:准备参数 --> <#-- 批量添加 -->
<#-- BEGIN:是否应用实体视图 --> <#if viewlogic.getBatchAddPSAppViews?? && viewlogic.getBatchAddPSAppViews()??>
<#if dataview.isPSDEView()> <#assign batchAddPSAppViews = viewlogic.getBatchAddPSAppViews()/>
<#-- 存在关系start --> const batchAddPSAppViews=[
<#if dataview.getPSAppDERSPathCount() gt 0> <#list batchAddPSAppViews as batchAddPSAppView>
<#list 1..dataview.getPSAppDERSPathCount() as count> {view:{viewname:'${srffilepath2(batchAddPSAppView.getCodeName())}',height: ${batchAddPSAppView.getHeight()?c},width: ${batchAddPSAppView.getWidth()?c},title: '${batchAddPSAppView.title}'},
<#assign condition = ''/> res:<@getres tempView=batchAddPSAppView />}<#if batchAddPSAppView_has_next>,</#if>
<#list dataview.getPSAppDERSPath(count_index) as deRSPath> </#list>
<#if deRSPath.getMajorPSAppDataEntity?? && deRSPath.getMajorPSAppDataEntity()??> ];
<#assign _dataEntity = deRSPath.getMajorPSAppDataEntity()/> </#if>
<#assign condition>${condition}curViewParam.${_dataEntity.getCodeName()?lower_case} && </#assign> if(batchAddPSAppViews.length == 0 || !this.context.srfparentdename){
</#if> this.$Notice.warning({ title: '错误', desc: '批量添加需添加N:N关系' });
</#list> return;
</#list> }
let deResParameters: any[] = []; let openViewModel:any = batchAddPSAppViews.find((item:any) =>{
<#-- 如果是主实体需对context判断start --> return (item.res && (item.res[0] !== this.context.srfparentdename));
<#if dataview.getPSAppDataEntity().isMajor()> })
if(${condition}true){ let container: Subject<any> = this.$appmodal.openModal(openViewModel.view, JSON.parse(JSON.stringify(this.context)), args[0]);
deResParameters = [ container.subscribe((result: any) => {
<#list dataview.getPSAppDERSPath(dataview.getPSAppDERSPathCount() - 1) as deRSPath> if (!result || !Object.is(result.ret, 'OK')) {
<#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/> return;
{ pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' }, }
</#list> if(result.datas && result.datas.length == 0){
] return;
} }
<#else> let requestParam:Array<any> = [];
deResParameters = [ result.datas.forEach((record:any) => {
<#list dataview.getPSAppDERSPath(dataview.getPSAppDERSPathCount() - 1) as deRSPath> record[this.appEntityService.APPDEKEY] = this.context['srfparentkey'];
<#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/> requestParam.push(record);
{ pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' }, });
</#list> this.appEntityService.createBatch(JSON.parse(JSON.stringify(this.context)),requestParam,true).then((response:any) =>{
]; if (!response || response.status !== 200) {
</#if> this.$Notice.error({ title: '错误', desc: '批处理操作失败' });
<#-- 如果是主实体需对context判断end --> return;
<#else> }
const deResParameters: any[] = []; if (!xData || !(xData.refresh instanceof Function)) {
</#if> return;
<#-- 存在关系end --> }
<#else> xData.refresh(result.datas);
const deResParameters: any[] = []; });
</#if> });
<#-- END:是否应用实体视图 --> <#elseif viewlogic.isBatchAddOnly()>
<#if dataview.getOpenMode() == 'INDEXVIEWTAB' || dataview.getOpenMode() == ''> this.$Notice.warning({ title: '错误', desc: '只支持批添加未实现' });
<#-- BEGIN:是否应用实体视图 --> <#elseif viewlogic.getNewDataPSAppView()??>
<#if dataview.isPSDEView()> <#assign dataview = viewlogic.getNewDataPSAppView()/>
<#assign appDataEntity = dataview.getPSAppDataEntity()/> const data: any = {};
const parameters: any[] = [ let curViewParam = JSON.parse(JSON.stringify(this.context));
{ pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' }, if(args.length >0){
{ pathName: '${dataview.getPSDEViewCodeName()?lower_case}', parameterName: '${dataview.getPSDEViewCodeName()?lower_case}' }, Object.assign(curViewParam,args[0]);
]; }
<#else> <#-- BEGIN:准备参数 -->
const parameters: any[] = [ <#-- BEGIN:是否应用实体视图 -->
{ pathName: '${dataview.getCodeName()?lower_case}', parameterName: '${dataview.getCodeName()?lower_case}' }, <#if dataview.isPSDEView()>
]; <#-- 存在关系start -->
</#if> <#if dataview.getPSAppDERSPathCount() gt 0>
<#-- END:是否应用实体视图 --> <#list 1..dataview.getPSAppDERSPathCount() as count>
<#else> <#assign condition = ''/>
<#-- BEGIN:是否应用实体视图 --> <#list dataview.getPSAppDERSPath(count_index) as deRSPath>
<#if dataview.isPSDEView()> <#if deRSPath.getMajorPSAppDataEntity?? && deRSPath.getMajorPSAppDataEntity()??>
<#assign appDataEntity = dataview.getPSAppDataEntity()/> <#assign _dataEntity = deRSPath.getMajorPSAppDataEntity()/>
const parameters: any[] = [ <#assign condition>${condition}curViewParam.${_dataEntity.getCodeName()?lower_case} && </#assign>
{ pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' }, </#if>
]; </#list>
<#else> </#list>
const parameters: any[] = []; let deResParameters: any[] = [];
</#if> <#-- 如果是主实体需对context判断start -->
<#-- END:是否应用实体视图 --> <#if dataview.getPSAppDataEntity().isMajor()>
</#if> if(${condition}true){
<#-- END:准备参数 --> deResParameters = [
<#if dataview.getOpenMode() == 'INDEXVIEWTAB' || dataview.getOpenMode() == ''> <#list dataview.getPSAppDERSPath(dataview.getPSAppDERSPathCount() - 1) as deRSPath>
<#-- 打开顶级分页视图 --> <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/>
const _this: any = this; { pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' },
const openIndexViewTab = (data: any) => { </#list>
const _data: any = { w: (new Date().getTime()) }; ]
Object.assign(_data, data); }
const routePath = this.$viewTool.buildUpRoutePath(this.$route, curViewParam, deResParameters, parameters, args, _data); <#else>
this.$router.push(routePath); deResParameters = [
} <#list dataview.getPSAppDERSPath(dataview.getPSAppDERSPathCount() - 1) as deRSPath>
openIndexViewTab(data); <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/>
<#elseif dataview.getOpenMode() == 'POPUPAPP'> { pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' },
<#-- 打开独立程序弹出 --> </#list>
const _this: any = this; ];
const routePath = this.$viewTool.buildUpRoutePath(this.$route, curViewParam, deResParameters, parameters, args, data); </#if>
window.open('./#'+routePath, '_blank'); <#-- 如果是主实体需对context判断end -->
<#elseif dataview.getOpenMode() = 'POPUPMODAL'> <#else>
<#-- 打开模态 --> const deResParameters: any[] = [];
const _this: any = this; </#if>
const openPopupModal = (view: any, data: any) => { <#-- 存在关系end -->
let container: Subject<any> = this.$appmodal.openModal(view, curViewParam, data); <#else>
container.subscribe((result: any) => { const deResParameters: any[] = [];
if (!result || !Object.is(result.ret, 'OK')) { </#if>
return; <#-- END:是否应用实体视图 -->
} <#if dataview.getOpenMode() == 'INDEXVIEWTAB' || dataview.getOpenMode() == ''>
if (!xData || !(xData.refresh instanceof Function)) { <#-- BEGIN:是否应用实体视图 -->
return; <#if dataview.isPSDEView()>
} <#assign appDataEntity = dataview.getPSAppDataEntity()/>
xData.refresh(result.datas); const parameters: any[] = [
}); { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' },
} { pathName: '${dataview.getPSDEViewCodeName()?lower_case}', parameterName: '${dataview.getPSDEViewCodeName()?lower_case}' },
const view: any = { ];
viewname: '${srffilepath2(dataview.getCodeName())}', <#else>
height: ${dataview.getHeight()?c}, const parameters: any[] = [
width: ${dataview.getWidth()?c}, { pathName: '${dataview.getCodeName()?lower_case}', parameterName: '${dataview.getCodeName()?lower_case}' },
title: this.<@getViewLanguageTitle dataview />, ];
}; </#if>
openPopupModal(view, data); <#-- END:是否应用实体视图 -->
<#elseif dataview.getOpenMode()?index_of('DRAWER') == 0> <#else>
<#-- 打开抽屉 --> <#-- BEGIN:是否应用实体视图 -->
const _this: any = this; <#if dataview.isPSDEView()>
const openDrawer = (view: any, data: any) => { <#assign appDataEntity = dataview.getPSAppDataEntity()/>
let container: Subject<any> = this.$appdrawer.openDrawer(view, curViewParam, data); const parameters: any[] = [
container.subscribe((result: any) => { { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' },
if (!result || !Object.is(result.ret, 'OK')) { ];
return; <#else>
} const parameters: any[] = [];
if (!xData || !(xData.refresh instanceof Function)) { </#if>
return; <#-- END:是否应用实体视图 -->
} </#if>
xData.refresh(result.datas); <#-- END:准备参数 -->
}); <#if dataview.getOpenMode() == 'INDEXVIEWTAB' || dataview.getOpenMode() == ''>
} <#-- 打开顶级分页视图 -->
const view: any = { const _this: any = this;
viewname: '${srffilepath2(dataview.getCodeName())}', const openIndexViewTab = (data: any) => {
height: ${dataview.getHeight()?c}, const _data: any = { w: (new Date().getTime()) };
width: ${dataview.getWidth()?c}, Object.assign(_data, data);
title: this.<@getViewLanguageTitle dataview />, const routePath = this.$viewTool.buildUpRoutePath(this.$route, curViewParam, deResParameters, parameters, args, _data);
placement: '${dataview.getOpenMode()}', this.$router.push(routePath);
}; }
openDrawer(view, data); openIndexViewTab(data);
<#elseif dataview.getOpenMode() == 'POPOVER'> <#elseif dataview.getOpenMode() == 'POPUPAPP'>
<#-- 打开气泡卡片 --> <#-- 打开独立程序弹出 -->
const _this: any = this; const _this: any = this;
const openPopOver = (view: any, data: any) => { const routePath = this.$viewTool.buildUpRoutePath(this.$route, curViewParam, deResParameters, parameters, args, data);
let container: Subject<any> = this.$apppopover.openPop($event, view, curViewParam,data); window.open('./#'+routePath, '_blank');
container.subscribe((result: any) => { <#elseif dataview.getOpenMode() = 'POPUPMODAL'>
if (!result || !Object.is(result.ret, 'OK')) { <#-- 打开模态 -->
return; const _this: any = this;
} const openPopupModal = (view: any, data: any) => {
if (!xData || !(xData.refresh instanceof Function)) { let container: Subject<any> = this.$appmodal.openModal(view, curViewParam, data);
return; container.subscribe((result: any) => {
} if (!result || !Object.is(result.ret, 'OK')) {
xData.refresh(result.datas); return;
}); }
} if (!xData || !(xData.refresh instanceof Function)) {
const view: any = { return;
viewname: '${srffilepath2(dataview.getCodeName())}', }
height: ${dataview.getHeight()?c}, xData.refresh(result.datas);
width: ${dataview.getWidth()?c}, });
title: this.<@getViewLanguageTitle dataview />, }
placement: '${dataview.getOpenMode()}', const view: any = {
}; viewname: '${srffilepath2(dataview.getCodeName())}',
openPopOver(view, data); height: ${dataview.getHeight()?c},
<#else> width: ${dataview.getWidth()?c},
this.$Notice.warning({ title: '错误', desc: this.<@getViewLanguageTitle dataview />+'不支持该模式打开' }); title: this.<@getViewLanguageTitle dataview />,
</#if> };
<#else> openPopupModal(view, data);
this.$Notice.warning({ title: '错误', desc: '未指定关系视图' }); <#elseif dataview.getOpenMode()?index_of('DRAWER') == 0>
</#if> <#-- 打开抽屉 -->
} const _this: any = this;
</#if> const openDrawer = (view: any, data: any) => {
let container: Subject<any> = this.$appdrawer.openDrawer(view, curViewParam, data);
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, 'OK')) {
return;
}
if (!xData || !(xData.refresh instanceof Function)) {
return;
}
xData.refresh(result.datas);
});
}
const view: any = {
viewname: '${srffilepath2(dataview.getCodeName())}',
height: ${dataview.getHeight()?c},
width: ${dataview.getWidth()?c},
title: this.<@getViewLanguageTitle dataview />,
placement: '${dataview.getOpenMode()}',
};
openDrawer(view, data);
<#elseif dataview.getOpenMode() == 'POPOVER'>
<#-- 打开气泡卡片 -->
const _this: any = this;
const openPopOver = (view: any, data: any) => {
let container: Subject<any> = this.$apppopover.openPop($event, view, curViewParam,data);
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, 'OK')) {
return;
}
if (!xData || !(xData.refresh instanceof Function)) {
return;
}
xData.refresh(result.datas);
});
}
const view: any = {
viewname: '${srffilepath2(dataview.getCodeName())}',
height: ${dataview.getHeight()?c},
width: ${dataview.getWidth()?c},
title: this.<@getViewLanguageTitle dataview />,
placement: '${dataview.getOpenMode()}',
};
openPopOver(view, data);
<#else>
this.$Notice.warning({ title: '错误', desc: this.<@getViewLanguageTitle dataview />+'不支持该模式打开' });
</#if>
<#else>
this.$Notice.warning({ title: '错误', desc: '未指定关系视图' });
</#if>
}
</#if>
...@@ -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 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册