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

Merge branch 'dev'

......@@ -389,6 +389,27 @@ import ${srfclassname('${_appde.getCodeName()}')}Service from '@/service/${srffi
return {context:tempContext,data:requestData};
}
/**
* 通过属性名称获取表单项名称
*
* @param name 实体属性名称
* @memberof ${srfclassname('${ctrl.codeName}')}Service
*/
public getItemNameByDeName(name:string) :string{
let itemName = name;
let mode: any = this.getMode();
if (!mode && mode.getDataItems instanceof Function) {
return name;
}
let formItemItems: any[] = mode.getDataItems();
formItemItems.forEach((item:any)=>{
if(item.prop === name){
itemName = item.name;
}
});
return itemName.trim();
}
<#ibizinclude>
./SERVICE_BOTTOM.ts.ftl
</#ibizinclude>
\ No newline at end of file
......@@ -375,7 +375,6 @@
}
this.selection = {};
Object.assign(this.selection, { view: { viewname: this.navViewName },context:tempContext,viewparam:tempViewParam});
this.$emit('selectionchange',args);
this.$forceUpdate();
}
......
......@@ -379,7 +379,6 @@
}
this.selection = {};
Object.assign(this.selection, { view: { viewname: this.navViewName },context:tempContext,viewparam:tempViewParam});
this.$emit('selectionchange',args);
this.$forceUpdate();
}
......
......@@ -260,6 +260,7 @@
post.then((response: any) => {
if (response && response.status === 200) {
const data = response.data;
this.$Notice.success({ title: this.$t('app.commonWords.success') as string, desc: this.$t('app.commonWords.startsuccess') as string });
this.$emit("finish", data);
}
}).catch((response: any) => {
......
......@@ -48,6 +48,8 @@
return new Promise((resolve: any, reject: any) => {
let result: Promise<any>;
const _appEntityService: any = this.appEntityService;
// 忽略版本检查
Object.assign(Data,{ignoreversioncheck:1});
if (_appEntityService[action] && _appEntityService[action] instanceof Function) {
result = _appEntityService[action](Context,Data, isloading);
} else {
......
......@@ -5,13 +5,111 @@
<div class="app-app-menu">
<el-menu
class="app-menu"
:default-openeds="defaultOpeneds"
<#if view.getMainMenuAlign()?? && view.getMainMenuAlign()!="TOP">:default-openeds="defaultOpeneds"</#if>
:mode="mode"
:menu-trigger="trigger"
:collapse="isCollapse"
@select="select"
:default-active="defaultActive">
<app-menu-item :menus="menus" :ctrlName="'${ctrl.codeName?lower_case}'" :isFirst="true" :counterdata="counterdata" :popperclass="popperClass"></app-menu-item>
<template v-if="Object.is(mode,'horizontal')">
<template v-for="item0 in menus">
<template v-if="item0.items && Array.isArray(item0.items) && item0.items.length > 0">
<el-submenu v-show="!item0.hidden" :index="item0.name" :popper-class="popperClass" :key="item0.id">
<template slot='title'>
<template v-if="item0.icon && item0.icon != ''">
<img :src="item0.icon" class='app-menu-icon' />
</template>
<template v-else-if="item0.iconcls && item0.iconcls != ''">
<i :class="[item0.iconcls, 'app-menu-icon']"></i>
</template>
<template v-else>
<i class='fa fa-cogs app-menu-icon'></i>
</template>
<span class='text' :title="$t('app.menus.appindexview.' + item0.name)">{{$t('app.menus.appindexview.' + item0.name)}}</span>
</template>
<template v-for="item1 in item0.items">
<template v-if="item1.items && Array.isArray(item1.items) && item1.items.length > 0">
<el-submenu v-show="!item1.hidden" :index="item1.name" :popper-class="popperClass" :key="item1.id">
<template slot='title'>
<template v-if="item1.icon && item1.icon != ''">
<img :src="item1.icon" class='app-menu-icon' />
</template>
<template v-else-if="item1.iconcls && item1.iconcls != ''">
<i :class="[item1.iconcls, 'app-menu-icon']"></i>
</template>
<span class='text' :title="$t('app.menus.appindexview.' + item1.name)">{{$t('app.menus.appindexview.' + item1.name)}}</span>
</template>
<template v-for="item2 in item1.items">
<template v-if="item2.type =='MENUITEM'">
<el-menu-item v-show="!item2.hidden" :index="item2.name" :key="item2.id">
<template v-if="item2.icon && item2.icon != ''">
<img :src="item2.icon" class='app-menu-icon' />
</template>
<template v-else-if="item2.iconcls && item2.iconcls != ''">
<i :class="[item2.iconcls, 'app-menu-icon']"></i>
</template>
<template slot="title">
<span class="text" :title="$t('app.menus.appindexview.' + item2.name)">{{$t('app.menus.appindexview.' + item2.name)}}</span>
<template v-if="counterdata && counterdata[item2.counterid] && counterdata[item2.counterid] > 0">
<span class="pull-right">
<badge :count="counterdata[item2.counterid]" :overflow-count="9999"></badge>
</span>
</template>
</template>
</el-menu-item>
</template>
</template>
</el-submenu>
</template>
<template v-else>
<template v-if="item1.type =='MENUITEM'">
<el-menu-item v-show="!item1.hidden" :index="item1.name" :key="item1.id">
<template v-if="item1.icon && item1.icon != ''">
<img :src="item1.icon" class='app-menu-icon' />
</template>
<template v-else-if="item1.iconcls && item1.iconcls != ''">
<i :class="[item1.iconcls, 'app-menu-icon']"></i>
</template>
<template slot="title">
<span class="text" :title="$t('app.menus.appindexview.' + item1.name)">{{$t('app.menus.appindexview.' + item1.name)}} </span>
<template v-if="counterdata && counterdata[item1.counterid] && counterdata[item1.counterid] > 0">
<span class="pull-right">
<badge :count="counterdata[item1.counterid]" :overflow-count="9999"></badge>
</span>
</template>
</template>
</el-menu-item>
</template>
</template>
</template>
</el-submenu>
</template>
<template v-else>
<template v-if="item0.type =='MENUITEM'">
<el-menu-item v-show="!item0.hidden" :index="item0.name" :key="item0.id">
<template v-if="item0.icon && item0.icon != ''">
<img :src="item0.icon" class='app-menu-icon' />
</template>
<template v-else-if="item0.iconcls && item0.iconcls != ''">
<i :class="[item0.iconcls, 'app-menu-icon']"></i>
</template>
<template v-else>
<i class='fa fa-cogs app-menu-icon'></i>
</template>
<template slot="title">
<span class="text" :title="$t('app.menus.appindexview.' + item0.name)">{{$t('app.menus.appindexview.' + item0.name)}}</span>
<template v-if="counterdata && counterdata[item0.counterid] && counterdata[item0.counterid] > 0">
<span class="pull-right">
<badge :count="counterdata[item0.counterid]" :overflow-count="9999"></badge>
</span>
</template>
</template>
</el-menu-item>
</template>
</template>
</template>
</template>
<app-menu-item v-else :isCollapse="isCollapse" :menus="menus" :ctrlName="'appindexview'" :isFirst="true" :counterdata="counterdata" :popper-class="popperClass"></app-menu-item>
</el-menu>
</div>
</#if>
......
......@@ -24,18 +24,47 @@
font-size: 12px;
width: 18px;
}
.el-submenu__title .app-menu-icon,.el-submenu__title .app-menu-icon{
.el-submenu__title .app-menu-icon,.el-menu-item .app-menu-icon{
width:20px;
font-size: 14px;
}
.el-submenu__title .text {
font-size: 16px;
}
.el-menu-item, .el-submenu__title {
.el-submenu__title .app-menu-circle,.el-menu-item .app-menu-circle {
display: inline-block;
border-radius: 50%;
width: 20px;
height: 20px;
line-height: 36px;
vertical-align:middle;
background: rgb(var(--app-footer-background-color-rgb));
border: 1px solid #fff;
border-color: rgb(var(--app-header-color-rgb));
color: rgb(var(--app-header-color-rgb));;
text-align: center;
font: 12px Arial, sans-serif;
}
.el-submenu__title, .el-menu-item {
height: 50px;
font-size: 14px;
line-height: 50px;
border-left: 4px !important;
}
.el-menu-item .el-tooltip {
padding-left: 12px !important;
}
.isCollpase .el-submenu__title{
padding-left: 12px !important;
}
.isFirst > .text {
font-size: 16px !important;
}
.el-menu-item, .el-submenu, .el-menu {
border-top: 1px solid #fff;
}
......@@ -73,6 +102,23 @@
overflow: hidden;
}
}
.el-menu--horizontal{
display: flex;
width: calc(100vw - 1100px);
height: 65px;
flex-wrap: nowrap;
overflow-x:scroll;
padding-top: 3px;
.el-menu-item{
overflow: visible;
}
.el-submenu{
.el-submenu__title{
padding-right: 0px !important;
padding-left: 0px !important;
}
}
}
.ivu-divider-horizontal {
width: 100%;
min-width: 100%;
......@@ -110,7 +156,6 @@
}
}
<#ibizinclude>
../@MACRO/CSS/DEFAULT.less.ftl
</#ibizinclude>
\ No newline at end of file
......@@ -743,7 +743,17 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
arr.forEach((item:any) =>{
let sortFieldValue:Array<any> = item[groupField[0].name].split("-");
Object.assign(item,{sortField:Number(sortFieldValue[0])*10000+Number(sortFieldValue[1])});
/**
* @judgment 分组为月份时,月份+1 start
* @author mos
* @date 2020.07.20
*/
if(Object.is(label, "月")) {
item[groupField[0].name] = sortFieldValue[0]+(this.$t('app.chart.year') as string)+(Number(sortFieldValue[1])+1)+label;
} else {
item[groupField[0].name] = sortFieldValue[0]+(this.$t('app.chart.year') as string)+sortFieldValue[1]+label;
}
// @judgment 分组为月份时,月份+1 end
})
arr.sort((a:any, b:any) => {
return Number(a.sortField) - Number(b.sortField);
......
......@@ -743,7 +743,17 @@ import { ChartDataSetField,ChartLineSeries,ChartFunnelSeries,ChartPieSeries,Char
arr.forEach((item:any) =>{
let sortFieldValue:Array<any> = item[groupField[0].name].split("-");
Object.assign(item,{sortField:Number(sortFieldValue[0])*10000+Number(sortFieldValue[1])});
/**
* @judgment 分组为月份时,月份+1 start
* @author mos
* @date 2020.07.20
*/
if(Object.is(label, "月")) {
item[groupField[0].name] = sortFieldValue[0]+(this.$t('app.chart.year') as string)+(Number(sortFieldValue[1])+1)+label;
} else {
item[groupField[0].name] = sortFieldValue[0]+(this.$t('app.chart.year') as string)+sortFieldValue[1]+label;
}
// @judgment 分组为月份时,月份+1 end
})
arr.sort((a:any, b:any) => {
return Number(a.sortField) - Number(b.sortField);
......
......@@ -19,6 +19,11 @@
</#if>
</#list>
</#if>
<#-- 兼容6.0无引擎抛值start -->
<#if view.getViewType() == 'DEINDEXPICKUPDATAVIEW'>
@selectionchange = "dataviewDataSeletionchange"
</#if>
<#-- 兼容6.0无引擎抛值end -->
</#assign>
<#ibizinclude>
../@MACRO/HTML/DEFAULT.html.ftl
......
......@@ -220,7 +220,7 @@ import ${srfclassname('${node.getPSAppDataEntity().codeName}')}Service from '@se
return new Promise((resolve:any,reject:any) =>{
<#if node.getTreeNodeType() == 'STATIC'>
let treeNode: any = {};
Object.assign(treeNode, { text: 'entities.${appde.getCodeName()?lower_case}.${ctrl.getCodeName()?lower_case}_${ctrl.getControlType()?lower_case}.nodes.${node.getNodeType()?lower_case}' });
Object.assign(treeNode, { text: i18n.t('entities.${appde.getCodeName()?lower_case}.${ctrl.getCodeName()?lower_case}_${ctrl.getControlType()?lower_case}.nodes.${node.getNodeType()?lower_case}') });
Object.assign(treeNode, { isUseLangRes: true });
<#if node.isEnableQuickSearch()>
if(filter.srfnodefilter && !Object.is(filter.srfnodefilter,"")){
......@@ -310,7 +310,7 @@ import ${srfclassname('${node.getPSAppDataEntity().codeName}')}Service from '@se
const handleChildData = (context:any,item:any,) =>{
Object.assign(item,{srfappctx:context});
<#if node.getPSCodeList().getCodeListType() == 'STATIC'>
Object.assign(item, { text: 'codelist.${node.getPSCodeList().codeName}.'+item.value });
Object.assign(item, { text: i18n.t('codelist.${node.getPSCodeList().codeName}.'+item.value) });
Object.assign(item, { isUseLangRes: true });
<#else>
Object.assign(item, { text: item.text });
......@@ -368,7 +368,7 @@ import ${srfclassname('${node.getPSAppDataEntity().codeName}')}Service from '@se
let treeNode: any = {};
Object.assign(treeNode,{srfappctx:context});
<#if node.getPSCodeList().getCodeListType() == 'STATIC'>
Object.assign(treeNode, { text: 'codelist.${node.getPSCodeList().codeName}.'+item.value });
Object.assign(treeNode, { text: i18n.t('codelist.${node.getPSCodeList().codeName}.'+item.value) });
Object.assign(treeNode, { isUseLangRes: true });
<#else>
Object.assign(treeNode, { text: item.text });
......
......@@ -258,7 +258,6 @@
this.selection = {};
Object.assign(this.selection, { view: { viewname: refview.viewname } });
Object.assign(this.selection,{'viewparam':tempViewparam,'context':tempContext});
this.$emit('selectionchange',args);
this.$forceUpdate();
}
......
......@@ -29,6 +29,7 @@ ${item.render.code}
refreshitems='<#if item.getRefreshItems()??>${item.getRefreshItems()}</#if>'
:ignorefieldvaluechange="ignorefieldvaluechange"
viewname='${srffilepath2(refView.codeName)}'
tempMode='${refView.getTempMode()}'
:data="JSON.stringify(this.data)"
@drdatasaved="drdatasaved($event)"
style="<#if item.getPSLayoutPos()?? && item.getPSLayoutPos().getLayout() == "FLEX">height: 100%</#if><#if item.getContentHeight() == 0><#if refView.getHeight() gt 0>height:${refView.getHeight()?c}px</#if><#else>height:${item.getContentHeight()?c}px</#if>;overflow: auto;">
......
......@@ -5,7 +5,7 @@
<#if item.render??>
${item.render.code}
<#else>
<app-form-item name='${item.name}' :itemRules="this.rules.${item.name}" class='<#if item.getPSSysCss?? && item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>'<#if item.getLabelPSSysCss?? && item.getLabelPSSysCss()??> labelStyle="${item.getLabelPSSysCss().getCssName()}"</#if> :caption="<#if langbase??>$t('${langbase}.details.${item.name}')<#else>'${item.getCaption()}'</#if>" uiStyle="${item.getDetailStyle()}" :labelWidth="${item.getLabelWidth()?c}" :isShowCaption="${item.isShowCaption()?c}" :error="detailsModel.${item.name}.error" :isEmptyCaption="${item.isEmptyCaption()?c}" labelPos="${item.getLabelPos()}">
<app-form-item name='${item.name}' :itemRules="this.rules().${item.name}" class='<#if item.getPSSysCss?? && item.getPSSysCss()??>${item.getPSSysCss().getCssName()}</#if>'<#if item.getLabelPSSysCss?? && item.getLabelPSSysCss()??> labelStyle="${item.getLabelPSSysCss().getCssName()}"</#if> :caption="<#if langbase??>$t('${langbase}.details.${item.name}')<#else>'${item.getCaption()}'</#if>" uiStyle="${item.getDetailStyle()}" :labelWidth="${item.getLabelWidth()?c}" :isShowCaption="${item.isShowCaption()?c}" :error="detailsModel.${item.name}.error" :isEmptyCaption="${item.isEmptyCaption()?c}" labelPos="${item.getLabelPos()}">
<#if item.isCompositeItem()>
<#assign formitems=item.getPSDEFormItems()>
<app-range-editor v-model="data.${item.name}" :activeData="data" :disabled="detailsModel.${item.name}.disabled" name="${item.name}" editorType="${item.getEditorType()}" format="${item.getEditorParam("TIMEFMT","")}" :refFormItem="[<#list formitems as formitem><#if formitem_index gt 0>,</#if>'${formitem.name}'</#list>]" @formitemvaluechange="onFormItemValueChange" style="<#if item.getContentWidth()?? && item.getContentWidth() != 0>width:${item.getContentWidth()}px;</#if><#if item.getContentHeight()?? && item.getContentHeight() != 0>height:${item.getContentHeight()}px;</#if>"></app-range-editor>
......
......@@ -14,6 +14,9 @@ import schema from 'async-validator';
../@MACRO/CONTROL/CONTROL_HEADER-BASE.vue.ftl
</#ibizinclude>
<#ibizinclude>
../@MACRO/FUNC/MACRO.ftl
</#ibizinclude>
/**
* 视图默认使用
*
......@@ -240,7 +243,8 @@ import schema from 'async-validator';
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public rules: any = {
public rules() :any {
return {
<#list ctrl.getAllPSDEFormDetails() as formdetail>
<#if formdetail.getDetailType?? && formdetail.getDetailType() == 'FORMITEM'>
${formdetail.getName()}: [
......@@ -273,6 +277,12 @@ import schema from 'async-validator';
</#if>
</#if>
</#if>
<#-- 属性值规则 -->
<#if fideValueRule.getCheckMode?? && fideValueRule.getCheckMode()?? && fideValueRule.getCheckMode() != 2 && fideValueRule.getPSDEFValueRule?? && fideValueRule.getPSDEFValueRule()??>
<#assign deRule = fideValueRule.getPSDEFValueRule()/>
{validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").infoMessage, trigger: 'change' },
{validator:(rule:any, value:any)=>{return this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").isPast},message: this.verifyDeRules("${fideValueRule.getPSDEFormItemName()}").infoMessage, trigger: 'blur' },
</#if>
</#if>
</#list>
</#if>
......@@ -280,7 +290,97 @@ import schema from 'async-validator';
</#if>
</#list>
}
}
/**
* 属性值规则
*
* @type {*}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public deRules:any = {
<#if ctrl.getPSDEFormItemVRs?? && ctrl.getPSDEFormItemVRs()??>
<#list ctrl.getPSDEFormItemVRs() as fideValueRule>
<#if fideValueRule.getCheckMode?? && fideValueRule.getCheckMode()?? && fideValueRule.getCheckMode() != 2 && fideValueRule.getPSDEFValueRule?? && fideValueRule.getPSDEFValueRule()??>
<#assign deRule = fideValueRule.getPSDEFValueRule()/>
<#if fideValueRule.getPSDEFormItemName?? && fideValueRule.getPSDEFormItemName()??>
${fideValueRule.getPSDEFormItemName()}:[
<#if deRule.getPSDEFVRGroupCondition?? && deRule.getPSDEFVRGroupCondition()?? && deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions?? && deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions()??>
<#list deRule.getPSDEFVRGroupCondition().getPSDEFVRConditions() as condItem>
<@getDeRule condItem />
</#list>
</#if>],
</#if>
</#if>
</#list>
</#if>
};
/**
* 校验属性值规则
*
* @public
* @param {{ name: string }} { name }
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public verifyDeRules(name:string,rule:any = this.deRules,op:string = "AND") :{isPast:boolean,infoMessage:string}{
let falg:any = {infoMessage:""};
if(!rule[name]){
return falg;
}
let opValue = op == 'AND'? true :false;
let startOp = (val:boolean)=>{
if(falg.isPast){
if(opValue){
falg.isPast = falg && val;
}else{
falg.isPast = falg || val;
}
}else{
falg.isPast = val;
}
}
rule[name].forEach((item:any) => {
let dataValue = item.deName?this.data[this.service.getItemNameByDeName(item.deName)]:"";
// 常规规则
if(item.type == 'SIMPLE'){
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,{},item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 数值范围
if(item.type == 'VALUERANGE2'){
startOp( !this.$verify.checkFieldValueRangeRule(dataValue,item.minValue,item.isIncludeMinValue,item.maxValue,item.isIncludeMaxValue,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 正则式
if (item.type == "REGEX") {
startOp(!this.$verify.checkFieldRegExRule(dataValue,item.regExCode,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 长度
if (item.type == "STRINGLENGTH") {
startOp(!this.$verify.checkFieldStringLengthRule(dataValue,item.minValue,item.isIncludeMinValue,item.maxValue,item.isIncludeMaxValue,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 系统值规则
if(item.type == "SYSVALUERULE") {
startOp(!this.$verify.checkFieldSysValueRule(dataValue,item.sysRule.regExCode,item.ruleInfo,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 分组
if(item.type == 'GROUP'){
falg = this.verifyDeRules('group',item)
if(item.isNotMode){
falg.isPast = !falg.isPast;
}
}
});
if(!falg.hasOwnProperty("isPast")){
falg.isPast = true;
}
return falg;
}
/**
* 详情模型集合
......@@ -411,7 +511,7 @@ import schema from 'async-validator';
*/
public checkItem(name:string):Promise<any> {
return new Promise((resolve, reject) => {
var validator = new schema({[name]:this.rules[name]});
var validator = new schema({[name]:this.rules()[name]});
validator.validate({[name]:this.data[name]}).then(()=>{
resolve(true);
})
......@@ -594,6 +694,17 @@ import schema from 'async-validator';
this.data[$event.name] = $event.value;
}
/**
* 编辑器行为触发
*
* @param {*} arg
* @returns {void}
* @memberof ${srfclassname('${ctrl.codeName}')}Base
*/
public onFormItemActionClick(arg:any){
if(arg && (arg instanceof Function)) arg();
}
/**
* 设置数据项值
*
......@@ -975,6 +1086,7 @@ import schema from 'async-validator';
</#if>
</#if>
</#list>
data.${appde.getCodeName()?lower_case} = null;
this.$emit('load', data);
this.$nextTick(() => {
this.formState.next({ type: 'load', data: data });
......@@ -1080,8 +1192,8 @@ import schema from 'async-validator';
}
const arg: any = { ...opt };
const data = this.getValues();
Object.assign(arg, data);
Object.assign(arg, this.context);
Object.assign(arg, data);
if (ifStateNext) {
<#assign drcounter = 0>
<#list ctrl.getAllPSDEFormDetails() as formdetail>
......@@ -1206,6 +1318,8 @@ import schema from 'async-validator';
const post: Promise<any> = _this.save({},false);
post.then((response:any) =>{
const arg:any = response.data;
// 准备工作流数据,填充未存库数据
Object.assign(arg,this.getData());
if(this.viewparams){
Object.assign(arg,{viewparams:this.viewparams});
}
......@@ -1276,6 +1390,8 @@ import schema from 'async-validator';
this.$nextTick(() => {
this.formState.next({ type: 'save', data: arg });
});
// 准备工作流数据,填充未存库数据
Object.assign(arg,this.getData());
// 准备提交参数
if(this.viewparams){
Object.assign(arg,{viewparams:this.viewparams});
......
......@@ -77,13 +77,17 @@
<#list item.getPSDEUIActionGroup().getPSUIActionGroupDetails() as uiactionDetail>
<#if uiactionDetail.getPSUIAction?? && uiactionDetail.getPSUIAction()??>
<#assign uiaction = uiactionDetail.getPSUIAction() />
<#if preUIAction??>
<#-- 取消分割线标签,使用样式替代分割线 start -->
<#-- @author ljy -->
<#-- @update 2020.7.21 -->
<#-- <#if preUIAction??>
<divider type='vertical' v-show="scope.row.${preUIAction.getUIActionTag()}.visabled && scope.row.${uiaction.getUIActionTag()}.visabled" ></divider>
</#if>
</#if> -->
<#if !uiactionDetail.isShowCaption()>
<tooltip :transfer="true" :max-width="600">
</#if>
<a v-show="scope.row.${uiaction.getUIActionTag()}.visabled" :style="{'pointer-events':scope.row.${uiaction.getUIActionTag()}.disabled?'none':'auto'}" @click="uiAction(scope.row, '${uiaction.getUIActionTag()}', $event)">
<a v-show="scope.row.${uiaction.getUIActionTag()}.visabled" <#if !preUIAction??>:class="{'grid-first-uiaction':scope.row.${uiaction.getUIActionTag()}.visabled && scope.row.${uiaction.getUIActionTag()}.visabled}"</#if> <#if preUIAction??>:class="{'grid-uiaction-divider':scope.row.${preUIAction.getUIActionTag()}.visabled && scope.row.${uiaction.getUIActionTag()}.visabled}"</#if> :style="{'pointer-events':scope.row.${uiaction.getUIActionTag()}.disabled?'none':'auto'}" @click="uiAction(scope.row, '${uiaction.getUIActionTag()}', $event)">
<#-- 取消分割线标签,使用样式替代分割线 end -->
<#if uiactionDetail.isShowIcon()><i class='<#if uiaction.getIconCls?? && uiaction.getIconCls()??>${uiaction.getIconCls()}</#if>'></i></#if>
<#if uiactionDetail.isShowCaption()>{{<#if langbase??>$t('${langbase}.uiactions.${uiaction.getFullCodeName()?lower_case}')<#else>'${uiaction.getCaption()}'</#if>}}</#if>
</a>
......
......@@ -33,6 +33,15 @@
display: inline;
}
.el-table {
.el-table__row{
.grid-uiaction-divider {
padding:0 10px 0 10px;
border-left: 1px #b3b3b3 solid;
}
.grid-first-uiaction {
padding:0 10px 0 10px;
}
}
.quick-toolbar{
display: inline-block;
button{
......
......@@ -381,7 +381,6 @@
}
this.selection = {};
Object.assign(this.selection, { view: { viewname: this.navViewName }, context:tempContext,viewparam:tempViewParam });
this.$emit('selectionchange',args);
this.$forceUpdate();
}
......
......@@ -13,6 +13,12 @@
overflow: hidden;
color:#303133;
background-color: #fff;
.app-horizontal-layout{
.view-container{
height: calc(100% - 32px);
margin: 12px;
}
}
.index_header{
height:65px;
padding:0 20px;
......
......@@ -61,7 +61,7 @@
<img src="../../../assets/img/logo.png" height="32" />
<span style="display: inline-block;margin-left: 10px;font-size: 22px;">{{$t(model.srfCaption)}}</span>
</div>
<div style="margin-left: 50px;">
<div <#if view.getMainMenuAlign()?? && view.getMainMenuAlign()!="TOP">style="margin-left: 50px;"</#if>>
${P.getCtrlCode('appmenu', 'CONTROL.html').code}
</div>
</div>
......@@ -73,7 +73,7 @@
<app-theme style="width:45px;display: flex;justify-content: center;"></app-theme>
</div>
</header>
<content style="height:calc(100vh - 50px);" @click="contextMenuDragVisiable=false">
<content <#if view.getMainMenuAlign()?? && view.getMainMenuAlign()=="TOP">class="app-horizontal-layout"</#if> style="height:calc(100vh - 50px);" @click="contextMenuDragVisiable=false">
<router-view></router-view>
</content>
</layout>
......
......@@ -18,6 +18,29 @@
deKeyField='${editor.getPSAppDataEntity().getCodeName()?lower_case}'
</#if>
:service="service"
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
<#-- 自填模式界面行为组start -->
<#if editor.getPSAppDEACMode().getPSDEUIActionGroup?? && editor.getPSAppDEACMode().getPSDEUIActionGroup()??>
<#assign editorActionGroup = editor.getPSAppDEACMode().getPSDEUIActionGroup() />
<#if editorActionGroup.getPSUIActionGroupDetails?? && editorActionGroup.getPSUIActionGroupDetails()??>
:actionDetails="[<#compress>
<#list editorActionGroup.getPSUIActionGroupDetails() as actionDetail>
<#if actionDetail.getPSUIAction?? && actionDetail.getPSUIAction()??>
<#assign uiaction = actionDetail.getPSUIAction() />
{caption:'${uiaction.getCaption()}',tag:${editor.name}_editor_${actionDetail.getName()}_click}<#if actionDetail_has_next>,</#if>
</#if>
</#list>
</#compress>]"
@editoractionclick="onFormItemActionClick"
</#if>
</#if>
<#-- 自填模式界面行为组end -->
</#if>
:acParams=<@getAcParams editor />
valueitem='${editor.getValueItemName()}'
:value="data.${editor.name}"
......
......@@ -18,6 +18,13 @@
deKeyField='${editor.getPSAppDataEntity().getCodeName()?lower_case}'
</#if>
:service="service"
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
</#if>
:acParams=<@getAcParams editor />
valueitem='${editor.getValueItemName()}'
:value="row[column.property]"
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??>
${item.render.code}
<#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??>
<app-picker
:formState="formState"
:data="data"
:context="context"
:viewparams="viewparams"
:localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor />
:disabled="detailsModel.${editor.name}.disabled"
name='${editor.name}'
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
<#-- 自填模式界面行为组start -->
<#if editor.getPSAppDEACMode().getPSDEUIActionGroup?? && editor.getPSAppDEACMode().getPSDEUIActionGroup()??>
<#assign editorActionGroup = editor.getPSAppDEACMode().getPSDEUIActionGroup() />
<#if editorActionGroup.getPSUIActionGroupDetails?? && editorActionGroup.getPSUIActionGroupDetails()??>
:actionDetails="[<#compress>
<#list editorActionGroup.getPSUIActionGroupDetails() as actionDetail>
<#if actionDetail.getPSUIAction?? && actionDetail.getPSUIAction()??>
<#assign uiaction = actionDetail.getPSUIAction() />
{caption:'${uiaction.getCaption()}',tag:${editor.name}_editor_${actionDetail.getName()}_click}<#if actionDetail_has_next>,</#if>
</#if>
</#list>
</#compress>]"
@editoractionclick="onFormItemActionClick"
</#if>
</#if>
<#-- 自填模式界面行为组end -->
</#if>
<#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??>
deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'
deKeyField='${editor.getPSAppDataEntity().getCodeName()?lower_case}'
</#if>
:service="service"
:acParams=<@getAcParams editor />
valueitem='${editor.getValueItemName()}'
:value="data.${editor.name}"
editortype=""
:pickupView=<@getPickupView editor />
:linkview=<@getLinkView editor />
style="${editor.getEditorCssStyle()}"
@formitemvaluechange="onFormItemValueChange">
<@getItemRender editor />
</app-picker>
</#if>
</#if>
</#if>
\ No newline at end of file
......@@ -11,6 +11,29 @@
:localParam =<@getNavigateParams editor />
:disabled="detailsModel.${editor.name}.disabled"
name='${editor.name}'
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
<#-- 自填模式界面行为组start -->
<#if editor.getPSAppDEACMode().getPSDEUIActionGroup?? && editor.getPSAppDEACMode().getPSDEUIActionGroup()??>
<#assign editorActionGroup = editor.getPSAppDEACMode().getPSDEUIActionGroup() />
<#if editorActionGroup.getPSUIActionGroupDetails?? && editorActionGroup.getPSUIActionGroupDetails()??>
:actionDetails="[<#compress>
<#list editorActionGroup.getPSUIActionGroupDetails() as actionDetail>
<#if actionDetail.getPSUIAction?? && actionDetail.getPSUIAction()??>
<#assign uiaction = actionDetail.getPSUIAction() />
{caption:'${uiaction.getCaption()}',tag:${editor.name}_editor_${actionDetail.getName()}_click}<#if actionDetail_has_next>,</#if>
</#if>
</#list>
</#compress>]"
@editoractionclick="onFormItemActionClick"
</#if>
</#if>
<#-- 自填模式界面行为组end -->
</#if>
<#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??>
deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'
deKeyField='${editor.getPSAppDataEntity().getCodeName()?lower_case}'
......
......@@ -16,6 +16,13 @@
deKeyField='${editor.getPSAppDataEntity().getCodeName()?lower_case}'
</#if>
:service="service"
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
</#if>
:acParams=<@getAcParams editor />
valueitem='${item.getValueItemName()}'
:value="row[column.property]"
......
......@@ -13,6 +13,29 @@
:localParam =<@getNavigateParams editor />
:disabled="detailsModel.${editor.name}.disabled"
name='${editor.name}'
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
<#-- 自填模式界面行为组start -->
<#if editor.getPSAppDEACMode().getPSDEUIActionGroup?? && editor.getPSAppDEACMode().getPSDEUIActionGroup()??>
<#assign editorActionGroup = editor.getPSAppDEACMode().getPSDEUIActionGroup() />
<#if editorActionGroup.getPSUIActionGroupDetails?? && editorActionGroup.getPSUIActionGroupDetails()??>
:actionDetails="[<#compress>
<#list editorActionGroup.getPSUIActionGroupDetails() as actionDetail>
<#if actionDetail.getPSUIAction?? && actionDetail.getPSUIAction()??>
<#assign uiaction = actionDetail.getPSUIAction() />
{caption:'${uiaction.getCaption()}',tag:${editor.name}_editor_${actionDetail.getName()}_click}<#if actionDetail_has_next>,</#if>
</#if>
</#list>
</#compress>]"
@editoractionclick="onFormItemActionClick"
</#if>
</#if>
<#-- 自填模式界面行为组end -->
</#if>
<#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??>
deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'
deKeyField='${editor.getPSAppDataEntity().getCodeName()?lower_case}'
......
<#ibizinclude>../@MACRO/FUNC/PUBLIC.vue.ftl</#ibizinclude>
<#if item.render??>
${item.render.code}
<#else>
<#if editor.getEditorParam("PICKUPVIEW",true)??>
<#if editor.getPickupPSAppView()??>
<app-picker
:formState="formState"
:data="data"
:context="context"
:viewparams="viewparams"
:localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor />
:disabled="detailsModel.${editor.name}.disabled"
:showButton="false"
name='${editor.name}'
<#if editor.getPSAppDataEntity?? && editor.getPSAppDataEntity()??>
deMajorField='${editor.getPSAppDataEntity().getMajorPSAppDEField().getCodeName()?lower_case}'
deKeyField='${editor.getPSAppDataEntity().getCodeName()?lower_case}'
</#if>
:service="service"
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
<#-- 自填模式界面行为组start -->
<#if editor.getPSAppDEACMode().getPSDEUIActionGroup?? && editor.getPSAppDEACMode().getPSDEUIActionGroup()??>
<#assign editorActionGroup = editor.getPSAppDEACMode().getPSDEUIActionGroup() />
<#if editorActionGroup.getPSUIActionGroupDetails?? && editorActionGroup.getPSUIActionGroupDetails()??>
:actionDetails="[<#compress>
<#list editorActionGroup.getPSUIActionGroupDetails() as actionDetail>
<#if actionDetail.getPSUIAction?? && actionDetail.getPSUIAction()??>
<#assign uiaction = actionDetail.getPSUIAction() />
{caption:'${uiaction.getCaption()}',tag:${editor.name}_editor_${actionDetail.getName()}_click}<#if actionDetail_has_next>,</#if>
</#if>
</#list>
</#compress>]"
@editoractionclick="onFormItemActionClick"
</#if>
</#if>
<#-- 自填模式界面行为组end -->
</#if>
:acParams=<@getAcParams editor />
valueitem='${editor.getValueItemName()}'
:value="data.${editor.name}"
editortype=""
:pickupView=<@getPickupView editor />
style="${editor.getEditorCssStyle()}"
@formitemvaluechange="onFormItemValueChange">
<@getItemRender editor />
</app-picker>
</#if>
</#if>
</#if>
\ No newline at end of file
<#if item.render??>
${item.render.code}
<#else>
<input-box v-model="data.${editor.name}" @enter="onEnter($event)" <#if item.getUnitName()??> unit="${item.getUnitName()}"</#if> :disabled="detailsModel.${editor.name}.disabled" type='<#if item.getPSDEField()??><#assign datatype=srfjavatype(item.getPSDEField().getStdDataType())><#if datatype=='BigInteger' || datatype=='Integer' || datatype=='Double' || datatype=='Decimal' || datatype=='Float' || datatype=='BigDecimal'>number<#else>text</#if><#else>text</#if>' <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> style="${editor.getEditorCssStyle()}"></input-box>
<input-box v-model="data.${editor.name}" @enter="onEnter($event)" <#if item.getUnitName()??> unit="${item.getUnitName()}"</#if> :disabled="detailsModel.${editor.name}.disabled" type='text' <#if item.getPlaceHolder()??> placeholder="${item.getPlaceHolder()}"</#if> style="${editor.getEditorCssStyle()}"></input-box>
</#if>
\ No newline at end of file
......@@ -15,6 +15,13 @@
:localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor />
:service="service"
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
</#if>
:acParams=<@getAcParams editor />
valueitem='${item.getValueItemName()}'
:value="data.${editor.name}"
......
......@@ -15,6 +15,13 @@
:localContext =<@getNavigateContext editor />
:localParam =<@getNavigateParams editor />
:service="service"
<#if editor.getPSAppDEACMode?? && editor.getPSAppDEACMode()??>
<#if editor.getPSAppDEACMode().getMinorSortPSDEF?? && editor.getPSAppDEACMode().getMinorSortPSDEF()?? && editor.getPSAppDEACMode().getMinorSortDir?? && editor.getPSAppDEACMode().getMinorSortDir()??>
<#if editor.getPSAppDEACMode().getMinorSortDir() == 'ASC' || editor.getPSAppDEACMode().getMinorSortDir() == 'DESC'>
sort='${editor.getPSAppDEACMode().getMinorSortPSDEF().getCodeName()?lower_case},${editor.getPSAppDEACMode().getMinorSortDir()?lower_case}'
</#if>
</#if>
</#if>
:acParams=<@getAcParams editor />
valueitem='${item.getValueItemName()}'
:value="row[column.property]"
......
......@@ -43,7 +43,38 @@
let localContext:any = <#if curNewLogicRefView?? && curNewLogicRefView.getPSNavigateContexts?? && curNewLogicRefView.getPSNavigateContexts()??><@getNavigateContext curNewLogicRefView /><#else>null</#if>;
let localViewParam:any =<#if curNewLogicRefView?? && curNewLogicRefView.getPSNavigateParams?? && curNewLogicRefView.getPSNavigateParams()??><@getNavigateParams curNewLogicRefView /><#else>null</#if>;
<#if viewlogic.isEnableWizardAdd()>
this.$Notice.warning({ title: '错误', desc: '向导添加未实现' });
<#if viewlogic.getWizardPSAppView?? && viewlogic.getWizardPSAppView()??>
<#assign wizardAppView = viewlogic.getWizardPSAppView() />
let wizardAppView:any = {viewname:'${srffilepath2(wizardAppView.getCodeName())}',height: ${wizardAppView.getHeight()?c},width: ${wizardAppView.getWidth()?c},title: '${wizardAppView.title}'};
let container: Subject<any> = this.$appmodal.openModal(wizardAppView, JSON.parse(JSON.stringify(this.context)), args[0]);
container.subscribe((result: any) => {
if (!result || !Object.is(result.ret, 'OK')) {
return;
}
if(result && result.datas && result.datas.length >0 ){
let targetkey:string = result.datas[0].srfkey;
<#if viewlogic.getNewDataPSAppViews?? && viewlogic.getNewDataPSAppViews()??>
let newDataAppViews:any ={
<#list viewlogic.getNewDataPSAppViews() as newDataAppView>
<#compress>${newDataAppView.getRefMode()}:<#if newDataAppView.isPSDEView()><#assign appDataEntity = newDataAppView.getPSAppDataEntity() />[{ pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' },{ pathName: '${newDataAppView.getPSDEViewCodeName()?lower_case}', parameterName: '${newDataAppView.getPSDEViewCodeName()?lower_case}' }]<#else>[]</#if><#if newDataAppView_has_next>,</#if></#compress>
</#list>
};
</#if>
const data: any = {};
if(args[0].srfsourcekey) data.srfsourcekey = args[0].srfsourcekey;
let tempContext = JSON.parse(JSON.stringify(this.context));
const openIndexViewTab = (data: any) => {
const _data: any = { w: (new Date().getTime()) };
Object.assign(_data, data);
const routePath = this.$viewTool.buildUpRoutePath(this.$route, tempContext, [], newDataAppViews[targetkey], args, _data);
this.$router.push(routePath);
}
openIndexViewTab(data);
}
})
<#else>
this.$Notice.warning({ title: '错误', desc: '请添加新建数据向导视图' });
</#if>
<#elseif viewlogic.isEnableBatchAdd()>
<#-- 批量添加 -->
let batchAddPSAppViews:Array<any>=[];
......
......@@ -64,7 +64,9 @@
<#else>
<#if item.getPSControlContainer()?? && item.getPSControlContainer().getPSAppDataEntity()??>
<#assign appDataEntity = item.getPSControlContainer().getPSAppDataEntity()/>
this.${uiaction.getFullCodeName()}(datas, contextJO,paramJO, $event, xData,this,<#if appDataEntity??>"${appDataEntity.getCodeName()}"<#else>null</#if>);
this.${uiaction.getFullCodeName()}(datas, contextJO,paramJO, $event, xData,this,"${appDataEntity.getCodeName()}");
<#else>
this.${uiaction.getFullCodeName()}(datas, contextJO,paramJO, $event, xData,this,undefined);
</#if>
</#if>
<#-- 属于应用实体的界面行为走UI服务end -->
......
......@@ -27,3 +27,59 @@ ${navParam.getKey()}:<#if navParam.isRawValue()?? && navParam.isRawValue() == tr
</#if>
}<#t>
</#macro>
<#-- 属性值规则 -->
<#macro getDeRule condItem>
{
type:"<#if condItem.getCondType?? && condItem.getCondType()??>${condItem.getCondType()}</#if>",
condOP:"<#if condItem.getCondOp?? && condItem.getCondOp()??>${condItem.getCondOp()}</#if>",
ruleInfo:"<#if condItem.getRuleInfo?? && condItem.getRuleInfo()??>${condItem.getRuleInfo()}</#if>",
isKeyCond:<#if condItem.isKeyCond?? && condItem.isKeyCond()??>${condItem.isKeyCond()?c}</#if>,
<#if condItem.getParamValue?? && condItem.getParamValue()??>
paramValue:"${condItem.getParamValue()}",
</#if>
<#if condItem.getParamType?? && condItem.getParamType()??>
paramType:"${condItem.getParamType()}",
</#if>
<#if condItem.isNotMode?? && condItem.isNotMode()??>
isNotMode:${condItem.isNotMode()?c},
</#if>
<#if condItem.getRegExCode?? && condItem.getRegExCode()??>
regExCode:/${condItem.getRegExCode()}/,
</#if>
<#if condItem.getMaxValue?? && condItem.getMaxValue()??>
maxValue:${condItem.getMaxValue()?c},
</#if>
<#if condItem.getMinValue?? && condItem.getMinValue()??>
minValue:${condItem.getMinValue()?c},
</#if>
<#if condItem.getDEFName?? && condItem.getDEFName()??>
deName:"${condItem.getDEFName()?lower_case}",
</#if>
<#if condItem.isIncludeMaxValue?? && condItem.isIncludeMaxValue()??>
isIncludeMaxValue:${condItem.isIncludeMaxValue()?c},
</#if>
<#if condItem.isIncludeMinValue?? && condItem.isIncludeMinValue()??>
isIncludeMinValue:${condItem.isIncludeMinValue()?c},
</#if>
<#if condItem.getPSSysValueRule?? && condItem.getPSSysValueRule()??>
<#assign valRule = condItem.getPSSysValueRule()>
sysRule:{
ruleType:"<#if valRule.getRuleType?? && valRule.getRuleType()??>${valRule.getRuleType()}</#if>",
ruleInfo:"<#if valRule.getRuleInfo?? && valRule.getRuleInfo()??>${valRule.getRuleInfo()}</#if>",
<#if valRule.getRuleType?? && valRule.getRuleType()?? && valRule.getRuleType() == "REG" && valRule.getRegExCode?? && valRule.getRegExCode()?? >
regExCode:/${valRule.getRegExCode()}/,
</#if>
},
</#if>
<#if condItem.getCondType?? && condItem.getCondType()?? && condItem.getCondType() == 'GROUP'>
group:[
<#if condItem.getPSDEFVRConditions?? && condItem.getPSDEFVRConditions()??>
<#list condItem.getPSDEFVRConditions() as group_item>
<@getDeRule group_item />
</#list>
</#if>
]
</#if>
},
</#macro>
\ No newline at end of file
......@@ -20,7 +20,16 @@
* @type {boolean}
* @memberof ${srfclassname('${view.name}')}Base
*/
public isSingleSelect: boolean = ${dataview.isSingleSelect()?c};
public isSingleSelect: boolean = true;
/**
* 数据选中抛值
*
* @memberof ${srfclassname('${view.name}')}Base
*/
public dataviewDataSeletionchange(args:any){
this.$emit('viewdataschange', [...args]);
}
</#if>
......
......@@ -31,6 +31,7 @@ export default {
deleteError: "Failed to delete",
delDataFail: "Failed to delete data",
noData: "No data",
startsuccess:"Start successful"
},
local:{
new: "New",
......
......@@ -27,10 +27,11 @@ export default {
rulesException: "值规则校验异常",
saveSuccess: "保存成功",
saveFailed: "保存失败",
deleteSuccess: "删除成功",
deleteError: "删除失败",
deleteSuccess: "删除成功",
deleteError: "删除失败",
delDataFail: "删除数据失败",
noData: "暂无数据",
startsuccess:"启动成功"
},
local:{
new: "新建",
......
......@@ -65,6 +65,30 @@ import ${srfclassname('${singleLogic.getCodeName()}')}Logic from '@/service/${sr
</#if>
</#macro>
<#-- 本地供数satrt -->
<#macro local_supply item singleAppMethod>
<#if singleAppMethod.getPredefinedType?? && singleAppMethod.getPredefinedType()??>
<#-- 预定义类型为索引实体start -->
<#if singleAppMethod.getPredefinedType() == "INDEXDE">
<#if singleAppMethod.getPSAppCodeList?? && singleAppMethod.getPSAppCodeList()??>
<#assign appCodeList = singleAppMethod.getPSAppCodeList() />
let codelistModel:any = {tag:'${appCodeList.codeName}',codelistType:'${appCodeList.getCodeListType()}'};
let res:any = await this.getCodeList(codelistModel.tag,codelistModel.codelistType,context,data);
if(res && res.length > 0){
res.forEach((ele:any) => {
// 仿真返回数据集
ele.${item.getKeyPSAppDEField().getCodeName()?lower_case} = ele.value;
ele.${item.getMajorPSAppDEField().getCodeName()?lower_case} = ele.text
});
}
return {status:200,data:res};
</#if>
</#if>
<#-- 预定义类型为索引实体end -->
</#if>
</#macro>
<#-- 本地供数end -->
<#-- 检查行为是否可以执行 start -->
<#-- @author zpc -->
<#-- @update 2020.7.13 18:00 -->
......@@ -486,7 +510,7 @@ import ${srfclassname('${singleLogic.getCodeName()}')}Logic from '@/service/${sr
<#macro excuteBeforeAction appdeAction>
<#if appdeAction.getBeforePSDEActionLogics?? && appdeAction.getBeforePSDEActionLogics()??>
<#list appdeAction.getBeforePSDEActionLogics() as beforelogic>
<#if beforelogic.getPSDELogic()??>
<#if beforelogic.getPSDELogic()?? && beforelogic.getPSDELogic().getLogicHolder?? && beforelogic.getPSDELogic().getLogicHolder()?? && (beforelogic.getPSDELogic().getLogicHolder() == 2 || beforelogic.getPSDELogic().getLogicHolder() == 3)>
<#assign singleLogic = beforelogic.getPSDELogic() />
let ${singleLogic.getCodeName()?lower_case}:${srfclassname('${singleLogic.getCodeName()}')}Logic = new ${srfclassname('${singleLogic.getCodeName()}')}Logic({context:JSON.parse(JSON.stringify(context)),data:JSON.parse(JSON.stringify(data))});
data = await ${singleLogic.getCodeName()?lower_case}.onExecute(context,data,isloading?true:false);
......@@ -502,10 +526,10 @@ import ${srfclassname('${singleLogic.getCodeName()}')}Logic from '@/service/${sr
<#macro excuteAfterAction appdeAction>
<#if appdeAction.getAfterPSDEActionLogics?? && appdeAction.getAfterPSDEActionLogics()??>
<#list appdeAction.getAfterPSDEActionLogics() as afterlogic>
<#if afterlogic.getPSDELogic()??>
<#if afterlogic.getPSDELogic()?? && afterlogic.getPSDELogic().getLogicHolder?? && afterlogic.getPSDELogic().getLogicHolder()?? && (afterlogic.getPSDELogic().getLogicHolder() == 2 || afterlogic.getPSDELogic().getLogicHolder() == 3)>
<#assign singleLogic = afterlogic.getPSDELogic() />
<@compress single_line=true>let ${singleLogic.getCodeName()?lower_case}:${srfclassname('${singleLogic.getCodeName()}')}Logic = new ${srfclassname('${singleLogic.getCodeName()}')}Logic({context:JSON.parse(JSON.stringify(context)),data:JSON.parse(JSON.stringify(res))});</@compress>
<@compress single_line=true>res = await ${singleLogic.getCodeName()?lower_case}.onExecute(context,res,isloading?true:false);</@compress>
<@compress single_line=true>res = await ${singleLogic.getCodeName()?lower_case}.onExecute(context,res.data,isloading?true:false);</@compress>
</#if>
</#list>
</#if>
......@@ -601,11 +625,15 @@ export default class ${srfclassname('${item.getCodeName()}')}ServiceBase extends
</#if>
<#--是否存在前端处理逻辑end -->
<#else>
<#-- 行为执行之后 start -->
<#-- 无实体行为,有接口走接口,无接口走本地供数 start -->
<#-- @author zpc -->
<#-- @update 2020.7.14 14:00 -->
<#-- @update 2020.7.22 17:00 -->
<#if singleAppMethod.getPSDEServiceAPIMethod?? && singleAppMethod.getPSDEServiceAPIMethod()??>
<@service_block item=item singleAppMethod=singleAppMethod />
<#-- 行为执行之后 end -->
<#else>
<@local_supply item=item singleAppMethod=singleAppMethod />
</#if>
<#-- 无实体行为,有接口走接口,无接口走本地供数 end -->
</#if>
}
<#-- 查询数据集(post方式)start -->
......@@ -677,7 +705,7 @@ export default class ${srfclassname('${item.getCodeName()}')}ServiceBase extends
<@getTestActionModifier appdeAction=appdeAction/> async test${srfclassname('${singleAppMethod.getCodeName()}')}(context: any = {},data: any = {}): Promise<any> {
return true;
}
<#if singleAppMethod.getMethodType?? && singleAppMethod.getMethodType()?? && singleAppMethod.getMethodType() == "FETCH">
<#-- <#if singleAppMethod.getMethodType?? && singleAppMethod.getMethodType()?? && singleAppMethod.getMethodType() == "FETCH">
<#assign dataSet = singleAppMethod.getPSDEDataSet() />
/**
......@@ -691,7 +719,7 @@ export default class ${srfclassname('${item.getCodeName()}')}ServiceBase extends
<@getTestActionModifier appdeAction=appdeAction/> async test${srfclassname('search${dataSet.getCodeName()}')}(context: any = {},data: any = {}): Promise<any> {
return true;
}
</#if>
</#if> -->
</#if>
</#if>
<#-- 检查行为是否可以执行 end -->
......
## v7.0.0-alpha.15 [2020-7-23]
### Bug修复
修复修复数值框错误问题
修复表单通知关系界面上下文、表单数据先后顺序
修复实体行为执行前、后逻辑增加行为逻辑者判断
修复表单loadDraft清空表单临时主键
修复数据图表月份显示问题
修复首页横向菜单呈现
修复树视图部件国际化问题
### 功能新增及优化
#### 模板
新增表单属性值规则(正则式规则、数值范围规则、字符长度规则、常规规则、系统值规则、规则组)支持
新增数据选择、自动填充编辑器自填模式排序
新增表单传入关系界面临时模式
新增数据选择编辑器自填模式界面行为组(662)
新增向导添加数据
优化向导面板成功提示、忽略版本检查
优化导航类部件选中事件
优化表格操作列分隔符问题
优化表单准备工作流数据,填充未存库数据
#### 基础文件
修复数值框firstElementChild异常问题
修复图表视图无搜索表单加载数据问题
修复表格视图标题问题
更新view-design组件库的版本,修复面板分割组件
优化关系界面内嵌表格视图先行通知,再保存表单逻辑
优化部门选择、组织选择编辑器的样式
优化导入文件逻辑
新增关系界面增加无临时数据模式判断
新增数据选择、自动填充编辑器自填模式排序
新增数据选择编辑器自填模式界面行为组(662)
## v7.0.0-alpha.14 [2020-7-18]
### Bug修复
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册