提交 1e4e3566 编写于 作者: ibizdev's avatar ibizdev

Nnancy 发布系统代码,获取最新代码

上级 a849647f
## v7.0.0-alpha.16 [2020-8-2]
### Bug修复
修复表格聚合异常
修复文本框精度问题
修复属性值规则常规规则异常
修复应用菜单标题重复问题
修复界面行为异常问题
修复下拉选组件代码表类型和属性进行不匹配问题
### 功能新增及优化
#### 模板
新增应用数据看板视图(卡片样式)、实体数据看板视图(卡片样式)
优化拷贝功能
优化临时模式新建置空父键
优化实体行为执行后逻辑
优化操作栏触发界面行为逻辑
优化实体主状态
#### 基础文件
优化数值框数值位置
优化应用语言选择组件和应用组织部门信息呈现组件
优化无数据主键界面行为逻辑
## v7.0.0-alpha.15 [2020-7-23]
### Bug修复
......
......@@ -2,9 +2,9 @@
<div class="app-actionbar">
<div class="app-actionbar-item" v-for="(item,index) in items" :key="index">
<Badge v-if="item.counterService&&item.counterService.counterData" v-show="item.visabled" :count="item.counterService.counterData[item.counterId]" type="primary">
<i-button :style="{'pointer-events':item.disabled?'none':'auto'}" @click="handleClick(item.viewlogicname)"><i v-if="item.icon" style="margin-right: 5px;" :class="item.icon"></i>{{item.actionName}}</i-button>
<i-button :style="{'pointer-events':item.disabled?'none':'auto'}" @click="handleClick(item, $event)"><i v-if="item.icon" style="margin-right: 5px;" :class="item.icon"></i>{{item.actionName}}</i-button>
</Badge>
<i-button v-show="item.visabled" :style="{'pointer-events':item.disabled?'none':'auto'}" v-else @click="handleClick(item.viewlogicname)">{{item.actionName}}</i-button>
<i-button v-show="item.visabled" :style="{'pointer-events':item.disabled?'none':'auto'}" v-else @click="handleClick(item, $event)">{{item.actionName}}</i-button>
</div>
</div>
</template>
......@@ -49,6 +49,14 @@ export default class AppActionBar extends Vue {
*/
public viewStateEvent: Subscription | undefined;
/**
* 部件数据
*
* @type {*}
* @memberof AppActionBar
*/
public data: any;
/**
* 组件初始化
*
......@@ -61,6 +69,7 @@ export default class AppActionBar extends Vue {
return;
}
if(Object.is(action,'loadmodel')){
this.data = data;
this.calcActionItemAuthState(data,this.items,this.uiService);
}
});
......@@ -72,8 +81,13 @@ export default class AppActionBar extends Vue {
*
* @memberof AppActionBar
*/
public handleClick($event:any){
this.$emit('itemClick',$event);
public handleClick(item: any, $event:any){
let _data = {
tag : item.viewlogicname,
params : this.data,
event : $event
};
this.$emit('itemClick',_data);
}
/**
......
......@@ -30,6 +30,22 @@ export default class AppColumnLink extends Vue {
*/
@Prop() public linkview?: any;
/**
* 局部上下文导航参数
*
* @type {any}
* @memberof AppColumnLink
*/
@Prop() public localContext!:any;
/**
* 局部导航参数
*
* @type {any}
* @memberof AppColumnLink
*/
@Prop() public localParam!:any;
/**
* 值项名称
*
......@@ -281,6 +297,15 @@ export default class AppColumnLink extends Vue {
// 合并表单参数
arg.param = this.viewparams ? JSON.parse(JSON.stringify(this.viewparams)) : {};
arg.context = this.context ? JSON.parse(JSON.stringify(this.context)) : {};
// 附加参数处理
if (this.localContext && Object.keys(this.localContext).length >0) {
let _context = this.$util.computedNavData(this.data,arg.context,arg.param,this.localContext);
Object.assign(arg.context,_context);
}
if (this.localParam && Object.keys(this.localParam).length >0) {
let _param = this.$util.computedNavData(this.data,arg.param,arg.param,this.localParam);
Object.assign(arg.param,_param);
}
return true;
}
......
......@@ -291,6 +291,7 @@ export default class AppFormDRUIPart extends Vue {
let _param:any = this.$util.computedNavData(formData,tempContext,this.viewparams,this.localParam);
Object.assign(tempParam,_param);
}
if(this.viewparams.hasOwnProperty('copymode')) Object.assign(tempParam,{copymode:this.viewparams.copymode});
this.viewparam = JSON.stringify(tempParam);
if (this.isRelationalData) {
// 从数据模式无遮罩层
......
<template>
<dropdown trigger='click' @on-click="selectLang">
<dropdown v-if="localList.length > 1" trigger='click' @on-click="selectLang">
<span>
{{title}}
<icon size='18' type='md-arrow-dropdown'></icon>
......
......@@ -23,18 +23,18 @@
<el-menu-item :class="[{'isFirst' : isFirst},item.textcls]" v-show="!item.hidden" :index="item.name" :key="item.id">
<template v-if="item.icon && item.icon != ''">
<img :src="item.icon" class='app-menu-icon' />
<span v-if="isCollapse" ref="circleText" :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
<span v-if="(isFirst && isCollapse) ? true : false" ref="circleText" :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
</template>
<template v-else-if="item.iconcls && item.iconcls != ''">
<i :class="[item.iconcls, 'app-menu-icon']"></i>
<span v-if="isCollapse" ref="circleText" :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
<span v-if="(isFirst && isCollapse) ? true : false" ref="circleText" :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
</template>
<template v-else>
<i v-if="isFirst" class='fa fa-cogs app-menu-icon'></i>
<span v-if="isCollapse" ref="circleText" :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
<span v-if="(isFirst && isCollapse) ? true : false" ref="circleText" :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
</template>
<template slot="title">
<span ref="circleText" :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
<span :class="{'app-menu-circle' : appMenuCollapseFlag, 'text' : true}" :title="$t(`app.menus.${ctrlName}.${item.name}`)">{{$t(`app.menus.${ctrlName}.${item.name}`)}}</span>
<template v-if="counterdata && counterdata[item.counterid] && counterdata[item.counterid] > 0">
<span class="pull-right">
<badge :count="counterdata[item.counterid]" :overflow-count="9999"></badge>
......
......@@ -65,14 +65,36 @@ export default class AppOrgSector extends Vue {
* @memberof AppOrgSector
*/
public mounted() {
this.getData();
}
/**
* 获取数据
*
* @memberof AppOrgSector
*/
public getData(){
if (this.$store.getters.getAppData()) {
if (this.$store.getters.getAppData().context && this.$store.getters.getAppData().context.srforgsectorid && this.$store.getters.getAppData().context.srforgsectorname) {
let _context = this.$store.getters.getAppData().context;
let _srforgname = this.$store.getters.getAppData().context.srforgname;
let _srforgsectorname = this.$store.getters.getAppData().context.srforgsectorname;
if (_context && this.$store.getters.getAppData().context.srforgsectorid ){
this.selectedOrgId = this.$store.getters.getAppData().context.srforgsectorid;
this.selectedOrgName = this.$store.getters.getAppData().context.srforgsectorname;
} else {
return false;
}
if(_context && _srforgname && _srforgsectorname){
this.selectedOrgName = _srforgname + '-' + _srforgsectorname;
} else if (_context && _srforgname) {
this.selectedOrgName = _srforgname;
} else if (_context && _srforgsectorname) {
this.selectedOrgName = _srforgsectorname;
}
if (this.$store.getters.getAppData().srforgsections) {
this.selectedOrgArray = this.$store.getters.getAppData().srforgsections;
}
}
}
......
......@@ -123,6 +123,12 @@ export default class DropDownListDynamic extends Vue {
*/
@Prop() public placeholder?: string;
/**
* 属性类型
* @type {string}
* @memberof DropDownList
*/
@Prop() public valueType?: string;
/**
* 计算属性(当前值)
......@@ -199,9 +205,10 @@ export default class DropDownListDynamic extends Vue {
if(this.tag && Object.is(this.codelistType,"STATIC")){
const codelist = this.$store.getters.getCodeList(this.tag);
if (codelist) {
this.items = [...JSON.parse(JSON.stringify(codelist.items))];
let items: Array<any> = [...JSON.parse(JSON.stringify(codelist.items))];
this.formatCodeList(items);
} else {
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
console.log(`----${this.tag}----代码表不存在`);
}
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
// 公共参数处理
......@@ -211,9 +218,10 @@ export default class DropDownListDynamic extends Vue {
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
let items: Array<any> = [...res];
this.formatCodeList(items);
}).catch((error:any) => {
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
console.log(`----${this.tag}----代码表不存在`);
});
}
}
......@@ -234,14 +242,51 @@ export default class DropDownListDynamic extends Vue {
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
let items: Array<any> = [...res];
this.formatCodeList(items);
}).catch((error:any) => {
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
console.log(`----${this.tag}----代码表不存在`);
});
}
}
}
/**
* 代码表类型和属性匹配
*
* @param {*} items
* @memberof DropDownList
*/
public formatCodeList(items: Array<any>){
let matching: boolean = true;
this.items = [];
try{
if(this.valueType){
items.forEach((item: any)=>{
const type = this.$util.typeOf(item.value);
if(type != this.valueType){
matching = false;
if(type == 'number'){
item.value = item.value.toString();
}else{
if(item.value.indexOf('.') == -1){
item.value = parseInt(item.value);
}else{
item.value = parseFloat(item.value);
}
}
}
this.items.push(item);
});
if(!matching){
console.warn(`代码表 ${ this.tag } 值类型和属性类型不匹配,已自动强制转换,请修正代码表值类型和属性类型匹配`);
}
}else{
this.items = items;
}
}catch(error){
console.warn('代码表值类型和属性类型不匹配,自动强制转换异常,请修正代码表值类型和属性类型匹配');
}
}
}
</script>
......
......@@ -8,7 +8,7 @@
:filterable="filterable === true ? true : false"
@on-open-change="onClick"
:placeholder="$t('components.dropDownList.placeholder')">
<i-option v-for="(item, index) in items" :key="index" :value="item.value.toString()">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
<i-option v-for="(item, index) in items" :key="index" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select>
</template>
......@@ -116,7 +116,7 @@ export default class DropDownList extends Vue {
* @memberof AppFormDRUIPart
*/
@Prop() public viewparams!: any;
/**
* 是否禁用
* @type {any}
......@@ -139,6 +139,12 @@ export default class DropDownList extends Vue {
*/
@Prop() public placeholder?: string;
/**
* 属性类型
* @type {string}
* @memberof DropDownList
*/
@Prop() public valueType?: string;
/**
* 计算属性(当前值)
......@@ -157,7 +163,7 @@ export default class DropDownList extends Vue {
* @memberof DropDownList
*/
get currentVal() {
return this.itemValue ? this.itemValue.toString() : undefined;
return this.itemValue;
}
/**
......@@ -199,9 +205,10 @@ export default class DropDownList extends Vue {
if(this.tag && Object.is(this.codelistType,"STATIC")){
const codelist = this.$store.getters.getCodeList(this.tag);
if (codelist) {
this.items = [...JSON.parse(JSON.stringify(codelist.items))];
let items: Array<any> = [...JSON.parse(JSON.stringify(codelist.items))];
this.formatCodeList(items);
} else {
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
console.log(`----${this.tag}----代码表不存在`);
}
}else if(this.tag && Object.is(this.codelistType,"DYNAMIC")){
// 公共参数处理
......@@ -211,9 +218,10 @@ export default class DropDownList extends Vue {
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
let items: Array<any> = [...res];
this.formatCodeList(items);
}).catch((error:any) => {
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
console.log(`----${this.tag}----代码表不存在`);
});
}
}
......@@ -234,14 +242,52 @@ export default class DropDownList extends Vue {
let _context = data.context;
let _param = data.param;
this.codeListService.getItems(this.tag,_context,_param).then((res:any) => {
this.items = res;
let items: Array<any> = [...res];
this.formatCodeList(items);
}).catch((error:any) => {
console.log(`----${this.tag}----${(this.$t('app.commonWords.codeNotExist') as string)}`);
console.log(`----${this.tag}----代码表不存在`);
});
}
}
}
/**
* 代码表类型和属性匹配
*
* @param {*} items
* @memberof DropDownList
*/
public formatCodeList(items: Array<any>){
let matching: boolean = true;
this.items = [];
try{
if(this.valueType){
items.forEach((item: any)=>{
const type = this.$util.typeOf(item.value);
if(type != this.valueType){
matching = false;
if(type == 'number'){
item.value = item.value.toString();
}else{
if(item.value.indexOf('.') == -1){
item.value = parseInt(item.value);
}else{
item.value = parseFloat(item.value);
}
}
}
this.items.push(item);
});
if(!matching){
console.warn(`代码表 ${ this.tag } 值类型和属性类型不匹配,已自动强制转换,请修正代码表值类型和属性类型匹配`);
}
}else{
this.items = items;
}
}catch(error){
console.warn('代码表值类型和属性类型不匹配,自动强制转换异常,请修正代码表值类型和属性类型匹配');
}
}
}
</script>
......
......@@ -997,20 +997,16 @@ export default class SysAppEditViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysapp: args[0].sysapp });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1174,7 +1174,7 @@ export default class SysAppGridViewBase extends Vue {
* @param {*} [xData]
* @memberof SysAppGridView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
public opendata(args: any[],fullargs?:any,params?: any, $event?: any, xData?: any) {
if(!this.viewDefaultUsage){
if(Object.is(this.navModel,"route")){
this.initNavDataWithRoute(this.viewCacheData, false, true);
......@@ -1194,6 +1194,9 @@ export default class SysAppGridViewBase extends Vue {
{ pathName: 'sysapps', parameterName: 'sysapp' },
];
const _this: any = this;
if(fullargs && fullargs.copymode){
Object.assign(data,{copymode:true});
}
const openDrawer = (view: any, data: any) => {
let container: Subject<any> = this.$appdrawer.openDrawer(view, tempContext, data);
container.subscribe((result: any) => {
......@@ -1305,20 +1308,16 @@ export default class SysAppGridViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysapp: args[0].sysapp });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -695,7 +695,7 @@ export default class SysAuthLogGridViewBase extends Vue {
* @param {*} [xData]
* @memberof SysAuthLogGridView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
public opendata(args: any[],fullargs?:any,params?: any, $event?: any, xData?: any) {
if(!this.viewDefaultUsage){
if(Object.is(this.navModel,"route")){
this.initNavDataWithRoute(this.viewCacheData, false, true);
......
......@@ -997,20 +997,16 @@ export default class SYS_PERMISSIONEditViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { syspermission: args[0].syspermission });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1033,20 +1033,16 @@ export default class SYS_PERMISSIONEditView2Base extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { syspermission: args[0].syspermission });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1134,7 +1134,7 @@ export default class SYS_PERMISSIONGridViewBase extends Vue {
* @param {*} [xData]
* @memberof SYS_PERMISSIONGridView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
public opendata(args: any[],fullargs?:any,params?: any, $event?: any, xData?: any) {
if(!this.viewDefaultUsage){
if(Object.is(this.navModel,"route")){
this.initNavDataWithRoute(this.viewCacheData, false, true);
......@@ -1155,6 +1155,9 @@ export default class SYS_PERMISSIONGridViewBase extends Vue {
{ pathName: 'editview', parameterName: 'editview' },
];
const _this: any = this;
if(fullargs && fullargs.copymode){
Object.assign(data,{copymode:true});
}
const openIndexViewTab = (data: any) => {
const routePath = this.$viewTool.buildUpRoutePath(this.$route, tempContext, deResParameters, parameters, args, data);
this.$router.push(routePath);
......@@ -1251,20 +1254,16 @@ export default class SYS_PERMISSIONGridViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { syspermission: args[0].syspermission });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -997,20 +997,16 @@ export default class SysRoleEditViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysrole: args[0].sysrole });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1033,20 +1033,16 @@ export default class SysRoleEditView2Base extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysrole: args[0].sysrole });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1134,7 +1134,7 @@ export default class SysRoleGridViewBase extends Vue {
* @param {*} [xData]
* @memberof SysRoleGridView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
public opendata(args: any[],fullargs?:any,params?: any, $event?: any, xData?: any) {
if(!this.viewDefaultUsage){
if(Object.is(this.navModel,"route")){
this.initNavDataWithRoute(this.viewCacheData, false, true);
......@@ -1155,6 +1155,9 @@ export default class SysRoleGridViewBase extends Vue {
{ pathName: 'editview', parameterName: 'editview' },
];
const _this: any = this;
if(fullargs && fullargs.copymode){
Object.assign(data,{copymode:true});
}
const openIndexViewTab = (data: any) => {
const routePath = this.$viewTool.buildUpRoutePath(this.$route, tempContext, deResParameters, parameters, args, data);
this.$router.push(routePath);
......@@ -1251,20 +1254,16 @@ export default class SysRoleGridViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysrole: args[0].sysrole });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1154,7 +1154,7 @@ export default class SysRolePermissionGridViewBase extends Vue {
* @param {*} [xData]
* @memberof SysRolePermissionGridView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
public opendata(args: any[],fullargs?:any,params?: any, $event?: any, xData?: any) {
if(!this.viewDefaultUsage){
if(Object.is(this.navModel,"route")){
this.initNavDataWithRoute(this.viewCacheData, false, true);
......@@ -1180,6 +1180,9 @@ export default class SysRolePermissionGridViewBase extends Vue {
{ pathName: 'editview', parameterName: 'editview' },
];
const _this: any = this;
if(fullargs && fullargs.copymode){
Object.assign(data,{copymode:true});
}
const openIndexViewTab = (data: any) => {
const routePath = this.$viewTool.buildUpRoutePath(this.$route, tempContext, deResParameters, parameters, args, data);
this.$router.push(routePath);
......@@ -1276,20 +1279,16 @@ export default class SysRolePermissionGridViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysrolepermission: args[0].sysrolepermission });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -997,20 +997,16 @@ export default class SYS_ROLE_PERMISSIONEditViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysrolepermission: args[0].sysrolepermission });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1033,20 +1033,16 @@ export default class SYS_ROLE_PERMISSIONEditView2Base extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysrolepermission: args[0].sysrolepermission });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -997,20 +997,16 @@ export default class SysUserEditViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysuser: args[0].sysuser });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1134,7 +1134,7 @@ export default class SysUserGridViewBase extends Vue {
* @param {*} [xData]
* @memberof SysUserGridView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
public opendata(args: any[],fullargs?:any,params?: any, $event?: any, xData?: any) {
if(!this.viewDefaultUsage){
if(Object.is(this.navModel,"route")){
this.initNavDataWithRoute(this.viewCacheData, false, true);
......@@ -1155,6 +1155,9 @@ export default class SysUserGridViewBase extends Vue {
{ pathName: 'editview', parameterName: 'editview' },
];
const _this: any = this;
if(fullargs && fullargs.copymode){
Object.assign(data,{copymode:true});
}
const openIndexViewTab = (data: any) => {
const routePath = this.$viewTool.buildUpRoutePath(this.$route, tempContext, deResParameters, parameters, args, data);
this.$router.push(routePath);
......@@ -1251,20 +1254,16 @@ export default class SysUserGridViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysuser: args[0].sysuser });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -997,20 +997,16 @@ export default class SysUserRoleEditViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysuserrole: args[0].sysuserrole });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1033,20 +1033,16 @@ export default class SysUserRoleEditView2Base extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysuserrole: args[0].sysuserrole });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1154,7 +1154,7 @@ export default class SYS_USER_ROLEGridViewBase extends Vue {
* @param {*} [xData]
* @memberof SYS_USER_ROLEGridView
*/
public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) {
public opendata(args: any[],fullargs?:any,params?: any, $event?: any, xData?: any) {
if(!this.viewDefaultUsage){
if(Object.is(this.navModel,"route")){
this.initNavDataWithRoute(this.viewCacheData, false, true);
......@@ -1179,6 +1179,9 @@ export default class SYS_USER_ROLEGridViewBase extends Vue {
{ pathName: 'sysuserroles', parameterName: 'sysuserrole' },
];
const _this: any = this;
if(fullargs && fullargs.copymode){
Object.assign(data,{copymode:true});
}
const openDrawer = (view: any, data: any) => {
let container: Subject<any> = this.$appdrawer.openDrawer(view, tempContext, data);
container.subscribe((result: any) => {
......@@ -1290,20 +1293,16 @@ export default class SYS_USER_ROLEGridViewBase extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysuserrole: args[0].sysuserrole });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -1033,20 +1033,16 @@ export default class SYS_USEREditView2Base extends Vue {
return;
}
const _this: any = this;
if (_this.newdata && _this.newdata instanceof Function) {
const data: any = {};
if (args.length > 0) {
Object.assign(data, { srfsourcekey: args[0].srfkey })
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
}
_this.newdata([{ ...data }],[{ ...data }],params, $event, xData);
} else if (xData && xData.copy instanceof Function) {
if (_this.opendata && _this.opendata instanceof Function) {
const data: any = { };
if (args.length > 0) {
actionContext.$store.commit('addCopyData', { srfkey: args[0].srfkey, copyData: args[0] });
Object.assign(data, { sysuser: args[0].sysuser });
}
xData.copy(args[0].srfkey);
if(!params) params = {};
Object.assign(params,{copymode:true});
_this.opendata([{ ...data }], params, $event, xData);
} else {
_this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' });
Object.assign(this.viewparams,{copymode:true});
}
}
/**
......
......@@ -203,6 +203,7 @@ export default class EntityService {
if(context.srfsessionkey && !Object.is(this.tempStorage.getItem(context.srfsessionkey+'_'+this.APPDENAME),'undefined')){
let tempData:any = JSON.parse(this.tempStorage.getItem(context.srfsessionkey+'_'+this.APPDENAME) as any);
data.srffrontuf = "0";
data[this.APPDEKEY] = null;
tempData.push(data);
this.tempStorage.setItem(context.srfsessionkey+'_'+this.APPDENAME,JSON.stringify(tempData));
return {"status":200,"data":data};
......
......@@ -52,9 +52,9 @@ export class UIActionTool {
return;
}
let value: string | null = _params[name];
if (value && value.startsWith('%') && value.endsWith('%')) {
if (value && typeof(value) === 'string' && value.startsWith('%') && value.endsWith('%')) {
const key = value.substring(1, value.length - 1);
if (arg && arg.hasOwnProperty(key)) {
if (arg && arg.hasOwnProperty(key) && Object.is(actionTarget, 'SINGLEKEY')) {
value = (arg[key] !== null && arg[key] !== undefined) ? arg[key] : null;
} else if(parentContext && parentContext.hasOwnProperty(key)){
value = (parentContext[key] !== null && parentContext[key] !== undefined) ? parentContext[key] : null;
......@@ -76,7 +76,7 @@ export class UIActionTool {
}
let value: string | null = _params[name];
let values: any[] = [];
if (value && value.startsWith('%') && value.endsWith('%')) {
if (value && typeof(value) === 'string' && value.startsWith('%') && value.endsWith('%')) {
const key = value.substring(1, value.length - 1);
args.forEach((arg: any) => {
if (arg && arg.hasOwnProperty(key)) {
......
......@@ -276,12 +276,8 @@ export class Verify {
}
if (Object.is(paramType, 'ENTITYFIELD')) {
value2 = value2 ? value2.toLowerCase() : '';
// const _value2Field = form.findFormItem(value2);
// if (!_value2Field) {
// this.errorInfo = `表单项${value2}未配置`;
// return true;
// }
// value2 = _value2Field.getValue();
const _value2Field = form[value2]?form[value2]:value2;
value2 = _value2Field;
}
if (Util.isEmpty(errorInfo)) {
errorInfo = '内容必须符合值规则';
......
......@@ -6,7 +6,14 @@
<row>
<i-col v-show="detailsModel.n_appname_like.visible" :style="{}" :sm="{ span: 12, offset: 0 }" :md="{ span: 12, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 12, offset: 0 }">
<app-form-item name='n_appname_like' :itemRules="this.rules.n_appname_like" class='' :caption="$t('entities.sysapp.default_searchform.details.n_appname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_appname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_appname_like" @enter="onEnter($event)" :disabled="detailsModel.n_appname_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_appname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_appname_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
......
......@@ -8,14 +8,28 @@
<row>
<i-col v-show="detailsModel.appid.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='appid' :itemRules="this.rules().appid" class='' :caption="$t('entities.sysapp.main_form.details.appid')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.appid.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.appid" @enter="onEnter($event)" unit="" :disabled="detailsModel.appid.disabled" type='text' style=""></input-box>
<input-box
v-model="data.appid"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.appid.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.appname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='appname' :itemRules="this.rules().appname" class='' :caption="$t('entities.sysapp.main_form.details.appname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.appname.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.appname" @enter="onEnter($event)" unit="" :disabled="detailsModel.appname.disabled" type='text' style=""></input-box>
<input-box
v-model="data.appname"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.appname.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -30,7 +44,8 @@
:viewparams="viewparams"
:localContext ='{ }'
:localParam ='{ }'
:disabled="detailsModel.apptype.disabled"
:disabled="detailsModel.apptype.disabled"
valueType="string"
tag='AppType'
codelistType='STATIC'
placeholder='请选择...' style="">
......@@ -41,21 +56,42 @@
</i-col>
<i-col v-show="detailsModel.appgroup.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='appgroup' :itemRules="this.rules().appgroup" class='' :caption="$t('entities.sysapp.main_form.details.appgroup')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.appgroup.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.appgroup" @enter="onEnter($event)" unit="" :disabled="detailsModel.appgroup.disabled" type='text' style=""></input-box>
<input-box
v-model="data.appgroup"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.appgroup.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.fullname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='fullname' :itemRules="this.rules().fullname" class='' :caption="$t('entities.sysapp.main_form.details.fullname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.fullname.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.fullname" @enter="onEnter($event)" unit="" :disabled="detailsModel.fullname.disabled" type='text' style=""></input-box>
<input-box
v-model="data.fullname"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.fullname.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.icon.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='icon' :itemRules="this.rules().icon" class='' :caption="$t('entities.sysapp.main_form.details.icon')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.icon.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.icon" @enter="onEnter($event)" unit="" :disabled="detailsModel.icon.disabled" type='text' style=""></input-box>
<input-box
v-model="data.icon"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.icon.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -69,7 +105,14 @@
</i-col>
<i-col v-show="detailsModel.addr.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='addr' :itemRules="this.rules().addr" class='' :caption="$t('entities.sysapp.main_form.details.addr')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.addr.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.addr" @enter="onEnter($event)" unit="" :disabled="detailsModel.addr.disabled" type='text' style=""></input-box>
<input-box
v-model="data.addr"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.addr.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -605,7 +648,7 @@ export default class MainBase extends Vue implements ControlInterface {
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));
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 数值范围
......@@ -1530,6 +1573,9 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
Object.assign(arg,{viewparams:this.viewparams});
if(this.viewparams && this.viewparams.copymode){
data.srfuf = '0';
}
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) => {
if (!response.status || response.status !== 200) {
......@@ -1538,7 +1584,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
return;
}
this.viewparams.copymode = false;
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
......
......@@ -8,6 +8,7 @@
:highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName"
:cell-class-name="getCellClassName"
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'"
@row-click="rowClick($event)"
@select-all="selectAll($event)"
@select="select($event)"
......@@ -1009,7 +1010,7 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
const data: any = response.data;
this.totalrow = response.data.length;
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
......@@ -1717,6 +1718,12 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this;
// 拷贝模式
if(_this.viewparams && _this.viewparams.copymode && Object.is(_this.viewparams.copymode,'true') && _this.items && _this.items.length >0){
for (const item of _this.items) {
item.rowDataState = 'create';
}
}
if(_this.items && _this.items.length >0){
for (const item of _this.items) {
if(Object.is(item.rowDataState, 'update')){
......
......@@ -6,14 +6,28 @@
<row>
<i-col v-show="detailsModel.n_username_like.visible" :style="{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_username_like' :itemRules="this.rules.n_username_like" class='' :caption="$t('entities.sysauthlog.default_searchform.details.n_username_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_username_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_username_like" @enter="onEnter($event)" :disabled="detailsModel.n_username_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_username_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_username_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_personname_like.visible" :style="{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_personname_like' :itemRules="this.rules.n_personname_like" class='' :caption="$t('entities.sysauthlog.default_searchform.details.n_personname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_personname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_personname_like" @enter="onEnter($event)" :disabled="detailsModel.n_personname_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_personname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_personname_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
......@@ -28,7 +42,8 @@
:viewparams="viewparams"
:localContext ='{ }'
:localParam ='{ }'
:disabled="detailsModel.n_authcode_eq.disabled"
:disabled="detailsModel.n_authcode_eq.disabled"
valueType="string"
tag='CLAuthCode'
codelistType='STATIC'
placeholder='请选择...' style="width:100px;">
......@@ -53,7 +68,14 @@
</i-col>
<i-col v-show="detailsModel.n_domain_like.visible" :style="{}" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='n_domain_like' :itemRules="this.rules.n_domain_like" class='' :caption="$t('entities.sysauthlog.default_searchform.details.n_domain_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_domain_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_domain_like" @enter="onEnter($event)" :disabled="detailsModel.n_domain_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_domain_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_domain_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
......
......@@ -8,6 +8,7 @@
:highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName"
:cell-class-name="getCellClassName"
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'"
@row-click="rowClick($event)"
@select-all="selectAll($event)"
@select="select($event)"
......@@ -837,7 +838,7 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
const data: any = response.data;
this.totalrow = response.data.length;
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
......@@ -1537,6 +1538,12 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this;
// 拷贝模式
if(_this.viewparams && _this.viewparams.copymode && Object.is(_this.viewparams.copymode,'true') && _this.items && _this.items.length >0){
for (const item of _this.items) {
item.rowDataState = 'create';
}
}
if(_this.items && _this.items.length >0){
for (const item of _this.items) {
if(Object.is(item.rowDataState, 'update')){
......
......@@ -5,7 +5,14 @@
<i-col v-show="detailsModel.sys_permissionname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='sys_permissionname' :itemRules="this.rules().sys_permissionname" class='' :caption="$t('entities.syspermission.main_form.details.sys_permissionname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.sys_permissionname.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.sys_permissionname" @enter="onEnter($event)" unit="" :disabled="detailsModel.sys_permissionname.disabled" type='text' style=""></input-box>
<input-box
v-model="data.sys_permissionname"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.sys_permissionname.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -494,7 +501,7 @@ export default class MainBase extends Vue implements ControlInterface {
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));
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 数值范围
......@@ -1325,6 +1332,9 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
Object.assign(arg,{viewparams:this.viewparams});
if(this.viewparams && this.viewparams.copymode){
data.srfuf = '0';
}
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) => {
if (!response.status || response.status !== 200) {
......@@ -1333,7 +1343,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
return;
}
this.viewparams.copymode = false;
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
......
......@@ -8,6 +8,7 @@
:highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName"
:cell-class-name="getCellClassName"
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'"
@row-click="rowClick($event)"
@select-all="selectAll($event)"
@select="select($event)"
......@@ -701,7 +702,7 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
const data: any = response.data;
this.totalrow = response.data.length;
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
......@@ -1393,6 +1394,12 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this;
// 拷贝模式
if(_this.viewparams && _this.viewparams.copymode && Object.is(_this.viewparams.copymode,'true') && _this.items && _this.items.length >0){
for (const item of _this.items) {
item.rowDataState = 'create';
}
}
if(_this.items && _this.items.length >0){
for (const item of _this.items) {
if(Object.is(item.rowDataState, 'update')){
......
......@@ -570,7 +570,7 @@ export default class MainBase extends Vue implements ControlInterface {
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));
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 数值范围
......@@ -1449,6 +1449,9 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
Object.assign(arg,{viewparams:this.viewparams});
if(this.viewparams && this.viewparams.copymode){
data.srfuf = '0';
}
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) => {
if (!response.status || response.status !== 200) {
......@@ -1457,7 +1460,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
return;
}
this.viewparams.copymode = false;
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
......
......@@ -8,6 +8,7 @@
:highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName"
:cell-class-name="getCellClassName"
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'"
@row-click="rowClick($event)"
@select-all="selectAll($event)"
@select="select($event)"
......@@ -735,7 +736,7 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
const data: any = response.data;
this.totalrow = response.data.length;
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
......@@ -1427,6 +1428,12 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this;
// 拷贝模式
if(_this.viewparams && _this.viewparams.copymode && Object.is(_this.viewparams.copymode,'true') && _this.items && _this.items.length >0){
for (const item of _this.items) {
item.rowDataState = 'create';
}
}
if(_this.items && _this.items.length >0){
for (const item of _this.items) {
if(Object.is(item.rowDataState, 'update')){
......
......@@ -6,7 +6,14 @@
<row>
<i-col v-show="detailsModel.n_sys_rolename_like.visible" :style="{}" :lg="{ span: 8, offset: 0 }">
<app-form-item name='n_sys_rolename_like' :itemRules="this.rules.n_sys_rolename_like" class='' :caption="$t('entities.sysrole.default_searchform.details.n_sys_rolename_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_sys_rolename_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_sys_rolename_like" @enter="onEnter($event)" :disabled="detailsModel.n_sys_rolename_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_sys_rolename_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_sys_rolename_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
......
......@@ -8,7 +8,14 @@
<row>
<i-col v-show="detailsModel.sys_rolename.visible" :style="{}" :md="{ span: 8, offset: 0 }" :lg="{ span: 12, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='sys_rolename' :itemRules="this.rules().sys_rolename" class='' :caption="$t('entities.sysrole.main_form.details.sys_rolename')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.sys_rolename.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.sys_rolename" @enter="onEnter($event)" unit="" :disabled="detailsModel.sys_rolename.disabled" type='text' style=""></input-box>
<input-box
v-model="data.sys_rolename"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.sys_rolename.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -42,7 +49,14 @@
</i-col>
<i-col v-show="detailsModel.memo.visible" :style="{}" :md="{ span: 8, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 8, offset: 0 }">
<app-form-item name='memo' :itemRules="this.rules().memo" class='' :caption="$t('entities.sysrole.main_form.details.memo')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.memo.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.memo" @enter="onEnter($event)" unit="" :disabled="detailsModel.memo.disabled" type='text' style=""></input-box>
<input-box
v-model="data.memo"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.memo.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -640,7 +654,7 @@ export default class MainBase extends Vue implements ControlInterface {
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));
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 数值范围
......@@ -1534,6 +1548,9 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
Object.assign(arg,{viewparams:this.viewparams});
if(this.viewparams && this.viewparams.copymode){
data.srfuf = '0';
}
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) => {
if (!response.status || response.status !== 200) {
......@@ -1542,7 +1559,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
return;
}
this.viewparams.copymode = false;
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
......
......@@ -8,6 +8,7 @@
:highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName"
:cell-class-name="getCellClassName"
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'"
@row-click="rowClick($event)"
@select-all="selectAll($event)"
@select="select($event)"
......@@ -802,7 +803,7 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
const data: any = response.data;
this.totalrow = response.data.length;
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
......@@ -1494,6 +1495,12 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this;
// 拷贝模式
if(_this.viewparams && _this.viewparams.copymode && Object.is(_this.viewparams.copymode,'true') && _this.items && _this.items.length >0){
for (const item of _this.items) {
item.rowDataState = 'create';
}
}
if(_this.items && _this.items.length >0){
for (const item of _this.items) {
if(Object.is(item.rowDataState, 'update')){
......
......@@ -6,7 +6,14 @@
<row>
<i-col v-show="detailsModel.n_sys_username_like.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='n_sys_username_like' :itemRules="this.rules.n_sys_username_like" class='' :caption="$t('entities.sysuserrole.default_searchform.details.n_sys_username_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_sys_username_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_sys_username_like" @enter="onEnter($event)" :disabled="detailsModel.n_sys_username_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_sys_username_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_sys_username_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
......
......@@ -8,7 +8,14 @@
<row>
<i-col v-show="detailsModel.sys_roleid.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='sys_roleid' :itemRules="this.rules().sys_roleid" class='' :caption="$t('entities.sysuserrole.main_form.details.sys_roleid')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.sys_roleid.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.sys_roleid" @enter="onEnter($event)" unit="" :disabled="detailsModel.sys_roleid.disabled" type='text' style=""></input-box>
<input-box
v-model="data.sys_roleid"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.sys_roleid.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -587,7 +594,7 @@ export default class MainBase extends Vue implements ControlInterface {
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));
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 数值范围
......@@ -1467,6 +1474,9 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
Object.assign(arg,{viewparams:this.viewparams});
if(this.viewparams && this.viewparams.copymode){
data.srfuf = '0';
}
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) => {
if (!response.status || response.status !== 200) {
......@@ -1475,7 +1485,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
return;
}
this.viewparams.copymode = false;
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
......
......@@ -8,6 +8,7 @@
:highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName"
:cell-class-name="getCellClassName"
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'"
@row-click="rowClick($event)"
@select-all="selectAll($event)"
@select="select($event)"
......@@ -789,7 +790,7 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
const data: any = response.data;
this.totalrow = response.data.length;
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
......@@ -1481,6 +1482,12 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this;
// 拷贝模式
if(_this.viewparams && _this.viewparams.copymode && Object.is(_this.viewparams.copymode,'true') && _this.items && _this.items.length >0){
for (const item of _this.items) {
item.rowDataState = 'create';
}
}
if(_this.items && _this.items.length >0){
for (const item of _this.items) {
if(Object.is(item.rowDataState, 'update')){
......
......@@ -6,28 +6,56 @@
<row>
<i-col v-show="detailsModel.n_personname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 6, offset: 0 }">
<app-form-item name='n_personname_like' :itemRules="this.rules.n_personname_like" class='' :caption="$t('entities.sysuser.default_searchform.details.n_personname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_personname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_personname_like" @enter="onEnter($event)" :disabled="detailsModel.n_personname_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_personname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_personname_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_loginname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 6, offset: 0 }">
<app-form-item name='n_loginname_like' :itemRules="this.rules.n_loginname_like" class='' :caption="$t('entities.sysuser.default_searchform.details.n_loginname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_loginname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_loginname_like" @enter="onEnter($event)" :disabled="detailsModel.n_loginname_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_loginname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_loginname_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_mdeptname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 6, offset: 0 }">
<app-form-item name='n_mdeptname_like' :itemRules="this.rules.n_mdeptname_like" class='' :caption="$t('entities.sysuser.default_searchform.details.n_mdeptname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_mdeptname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_mdeptname_like" @enter="onEnter($event)" :disabled="detailsModel.n_mdeptname_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_mdeptname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_mdeptname_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.n_orgname_like.visible" :style="{}" :sm="{ span: 24, offset: 0 }" :md="{ span: 12, offset: 0 }" :lg="{ span: 8, offset: 0 }" :xl="{ span: 6, offset: 0 }">
<app-form-item name='n_orgname_like' :itemRules="this.rules.n_orgname_like" class='' :caption="$t('entities.sysuser.default_searchform.details.n_orgname_like')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.n_orgname_like.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.n_orgname_like" @enter="onEnter($event)" :disabled="detailsModel.n_orgname_like.disabled" type='text' style="width:100px;"></input-box>
<input-box
v-model="data.n_orgname_like"
@enter="onEnter($event)"
:disabled="detailsModel.n_orgname_like.disabled"
type='text'
style="width:100px;">
</input-box>
</app-form-item>
......
......@@ -5,42 +5,84 @@
<i-col v-show="detailsModel.userid.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='userid' :itemRules="this.rules().userid" class='' :caption="$t('entities.sysuser.main_form.details.userid')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.userid.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.userid" @enter="onEnter($event)" unit="" :disabled="detailsModel.userid.disabled" type='text' style=""></input-box>
<input-box
v-model="data.userid"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.userid.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.username.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='username' :itemRules="this.rules().username" class='' :caption="$t('entities.sysuser.main_form.details.username')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.username.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.username" @enter="onEnter($event)" unit="" :disabled="detailsModel.username.disabled" type='text' style=""></input-box>
<input-box
v-model="data.username"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.username.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.personname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='personname' :itemRules="this.rules().personname" class='' :caption="$t('entities.sysuser.main_form.details.personname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.personname.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.personname" @enter="onEnter($event)" unit="" :disabled="detailsModel.personname.disabled" type='text' style=""></input-box>
<input-box
v-model="data.personname"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.personname.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.loginname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='loginname' :itemRules="this.rules().loginname" class='' :caption="$t('entities.sysuser.main_form.details.loginname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.loginname.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.loginname" @enter="onEnter($event)" unit="" :disabled="detailsModel.loginname.disabled" type='text' style=""></input-box>
<input-box
v-model="data.loginname"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.loginname.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.orgname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='orgname' :itemRules="this.rules().orgname" class='' :caption="$t('entities.sysuser.main_form.details.orgname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.orgname.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.orgname" @enter="onEnter($event)" unit="" :disabled="detailsModel.orgname.disabled" type='text' style=""></input-box>
<input-box
v-model="data.orgname"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.orgname.disabled"
type='text'
style="">
</input-box>
</app-form-item>
</i-col>
<i-col v-show="detailsModel.mdeptname.visible" :style="{}" :lg="{ span: 24, offset: 0 }">
<app-form-item name='mdeptname' :itemRules="this.rules().mdeptname" class='' :caption="$t('entities.sysuser.main_form.details.mdeptname')" uiStyle="DEFAULT" :labelWidth="130" :isShowCaption="true" :error="detailsModel.mdeptname.error" :isEmptyCaption="false" labelPos="LEFT">
<input-box v-model="data.mdeptname" @enter="onEnter($event)" unit="" :disabled="detailsModel.mdeptname.disabled" type='text' style=""></input-box>
<input-box
v-model="data.mdeptname"
@enter="onEnter($event)"
unit=""
:disabled="detailsModel.mdeptname.disabled"
type='text'
style="">
</input-box>
</app-form-item>
......@@ -577,7 +619,7 @@ export default class MainBase extends Vue implements ControlInterface {
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));
startOp(!this.$verify.checkFieldSimpleRule(dataValue,item.condOP,item.paramValue,item.ruleInfo,item.paramType,this.data,item.isKeyCond));
falg.infoMessage = item.ruleInfo;
}
// 数值范围
......@@ -1457,6 +1499,9 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
Object.assign(arg,{viewparams:this.viewparams});
if(this.viewparams && this.viewparams.copymode){
data.srfuf = '0';
}
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) => {
if (!response.status || response.status !== 200) {
......@@ -1465,7 +1510,7 @@ export default class MainBase extends Vue implements ControlInterface {
}
return;
}
this.viewparams.copymode = false;
const data = response.data;
this.onFormLoad(data,'save');
this.$emit('save', data);
......
......@@ -8,6 +8,7 @@
:highlight-current-row ="isSingleSelect"
:row-class-name="getRowClassName"
:cell-class-name="getCellClassName"
:height="isEnablePagingBar && items.length > 0 ? 'calc(100% - 50px)' : '100%'"
@row-click="rowClick($event)"
@select-all="selectAll($event)"
@select="select($event)"
......@@ -795,7 +796,7 @@ export default class MainBase extends Vue implements ControlInterface {
return;
}
const data: any = response.data;
this.totalrow = response.data.length;
this.totalrow = response.total;
this.items = JSON.parse(JSON.stringify(data));
// 清空selections,gridItemsModel
this.selections = [];
......@@ -1487,6 +1488,12 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public async save(args: any[], params?: any, $event?: any, xData?: any){
let _this = this;
// 拷贝模式
if(_this.viewparams && _this.viewparams.copymode && Object.is(_this.viewparams.copymode,'true') && _this.items && _this.items.length >0){
for (const item of _this.items) {
item.rowDataState = 'create';
}
}
if(_this.items && _this.items.length >0){
for (const item of _this.items) {
if(Object.is(item.rowDataState, 'update')){
......
package cn.ibizlab.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
public class DevBootAutoConfiguration {
}
......@@ -98,6 +98,7 @@
<artifactId>jobs-spring-boot-starter</artifactId>
</dependency>
</dependencies>
<properties>
......
......@@ -119,9 +119,7 @@ public class SysAuthLogServiceImpl extends ServiceImpl<SysAuthLogMapper, SysAuth
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
@Transactional
public boolean saveOrUpdate(SysAuthLog et) {
if (null == et) {
return false;
......
......@@ -126,9 +126,7 @@ public class SysPSSystemServiceImpl extends ServiceImpl<SysPSSystemMapper, SysPS
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
@Transactional
public boolean saveOrUpdate(SysPSSystem et) {
if (null == et) {
return false;
......
......@@ -122,9 +122,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
@Transactional
public boolean saveOrUpdate(SysPermission et) {
if (null == et) {
return false;
......
......@@ -130,9 +130,7 @@ public class SysRolePermissionServiceImpl extends ServiceImpl<SysRolePermissionM
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
@Transactional
public boolean saveOrUpdate(SysRolePermission et) {
if (null == et) {
return false;
......
......@@ -132,9 +132,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
@Transactional
public boolean saveOrUpdate(SysRole et) {
if (null == et) {
return false;
......
......@@ -130,9 +130,7 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
@Transactional
public boolean saveOrUpdate(SysUserRole et) {
if (null == et) {
return false;
......
......@@ -122,9 +122,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
@Override
@Transactional(
rollbackFor = {Exception.class}
)
@Transactional
public boolean saveOrUpdate(SysUser et) {
if (null == et) {
return false;
......
......@@ -19,8 +19,8 @@
</parent>
<properties>
<!-- Spring Cloud Alibaba(2.1.x.RELEASE) & Spring Cloud(Spring Cloud Greenwich) & Spring Boot(2.1.x.RELEASE) compatibility -->
<spring-cloud-alibaba.version>2.1.1.RELEASE</spring-cloud-alibaba.version>
<!-- Spring Cloud Alibaba(2.2.x.RELEASE) & Spring Cloud(Spring Cloud Greenwich) & Spring Boot(2.2.x.RELEASE) compatibility -->
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
<spring-cloud-openfeign.version>2.2.1.RELEASE</spring-cloud-openfeign.version>
......@@ -80,6 +80,12 @@
<!-- eureka微服务注册中心 -->
<eureka-client.version>2.2.1.RELEASE</eureka-client.version>
<!-- 阿里sentinel熔断器 -->
<alibaba-sentinel.version>2.1.1.RELEASE</alibaba-sentinel.version>
<!-- 阿里seata分布式事务 -->
<alibaba-seata.version>1.3.0</alibaba-seata.version>
<oracle.version>11.2.0.3</oracle.version>
<postgresql.version>42.2.6</postgresql.version>
......@@ -264,6 +270,7 @@
<version>${baomidou-jobs.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
......@@ -291,6 +298,7 @@
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${alibaba-sentinel.version}</version>
</dependency>
<!-- Lombok -->
......
......@@ -13,6 +13,7 @@ import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
import org.springframework.context.annotation.Import;
@Configuration
@ConditionalOnClass(apiRestConfiguration.class)
......
......@@ -24,6 +24,8 @@
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
......@@ -2,6 +2,8 @@ package cn.ibizlab.util.security;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Date;
public interface AuthTokenUtil {
String generateToken(UserDetails userDetails);
......@@ -9,6 +11,8 @@ public interface AuthTokenUtil {
Boolean validateToken(String token, UserDetails userDetails);
String getUsernameFromToken(String token);
Date getExpirationDateFromToken(String token) ;
}
#缓存、数据源
spring:
cache:
......@@ -16,10 +17,14 @@ spring:
max-wait: 300ms
max-idle: 16
min-idle: 8
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
datasource:
username: a_A_5d9d78509
password: '@6dEfb3@'
url: jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true
url: jdbc:mysql://172.16.180.232:3306/a_A_5d9d78509?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&allowMultiQueries=true
driver-class-name: com.mysql.jdbc.Driver
filters: stat,wall,log4j2
#配置初始化大小/最小/最大
......@@ -102,3 +107,4 @@ server:
mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
min-response-size: 10240
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册