提交 591dbcc0 编写于 作者: ibizdev's avatar ibizdev

ibiz4j 发布系统代码 [ ibiz-pay,支付]

上级 0338efeb
......@@ -25,6 +25,7 @@ import AppForm from './components/app-form/app-form.vue'
import APPAutocomplete from './components/app-autocomplete/app-autocomplete.vue'
import AppFormDruipart from './components/app-form-druipart/app-form-druipart.vue'
import DropdownList from './components/dropdown-list/dropdown-list.vue'
import DropdownListHidden from './components/dropdown-list-hidden/dropdown-list-hidden.vue'
import UploadFile from './components/upload-file/upload-file.vue'
import ContextMenuContainer from './components/context-menu-container/context-menu-container.vue'
import AppCheckboxList from './components/app-checkbox-list/app-checkbox-list.vue'
......@@ -45,6 +46,7 @@ import AppFormGroup2 from './components/app-form-group2/app-form-group2.vue'
import AppFormItem2 from './components/app-form-item2/app-form-item2.vue'
import CodeList from './components/codelist/codelist.vue'
import AppQuickMenus from './components/app-quick-menus/app-quick-menus.vue'
import AppIconMenus from './components/app-icon-menus/app-icon-menus.vue'
import AppCheckbox from './components/app-checkbox/app-checkbox.vue'
import AppColumnRender from './components/app-column-render/app-column-render.vue'
import AppPickerSelectView from './components/app-picker-select-view/app-picker-select-view.vue'
......@@ -150,6 +152,7 @@ export const AppComponents = {
v.component('app-autocomplete', APPAutocomplete);
v.component('app-form-druipart', AppFormDruipart);
v.component('dropdown-list', DropdownList);
v.component('dropdown-list-hidden', DropdownListHidden);
v.component('upload-file', UploadFile);
v.component('context-menu-container', ContextMenuContainer);
v.component('app-checkbox-list',AppCheckboxList);
......@@ -171,6 +174,7 @@ export const AppComponents = {
v.component('app-form-item2', AppFormItem2);
v.component('codelist', CodeList);
v.component('app-quick-menus', AppQuickMenus);
v.component('app-icon-menus', AppIconMenus);
v.component('app-checkbox',AppCheckbox);
v.component('app-column-render',AppColumnRender);
v.component('app-picker-select-view',AppPickerSelectView);
......
......@@ -482,7 +482,7 @@ export default class AppFormDRUIPart extends Vue {
* @public
* @memberof AppFormDRUIPart
*/
public viewdataschange(){
public viewdataschange($event:any){
console.log((this.$t('components.appFormDRUIPart.change1') as string));
}
......
.app-icon-menus{
display: flex;
flex-wrap: wrap;
.el-card{
margin: 6px 8px;
.el-card__body{
padding: 0;
width: 200px;
height: 122px;
margin: 0;
.menuIcon{
width: 100%;
height: 100%;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
border: 1px rgb(210,238,255) solid;
background-color: rgb(240,249,255);
border-radius: 3px;
cursor: pointer;
&:hover{
border-color: rgb(53,152,220) ;
}
span{
font-size: 40px;
color: rgb(55,155,222);
}
img{
width: 46px;
height: 46px;
// margin-top: 12px;
}
h4{
font-weight: 500;
font-size: 16px;
}
}
}
}
}
<template>
<div class="app-icon-menus">
<template v-for="(item,index) in menus">
<div :bordered="false" v-if="item.items && Array.isArray(item.items)" :key="index" :class="item.textcls">
<p @click="$emit('menuClick',item.name, [item.name])">
<span>{{$t('app.menus.' + ctrlName + '.' + item.name)}}</span>
<span class="line"></span>
</p>
<p style=" display: 'flex' ">
<app-icon-menus :menus="item.items" :ctrlName = "ctrlName" @menuClick="menuClick"></app-icon-menus>
</p>
</div>
<el-card
:key="index"
shadow="never"
:class="item.textcls"
v-else
>
<div @click="menuClick(item.name,[item.name])" class="menuIcon" >
<span v-if="isIcon(item.icon,item.iconcls)">
<i :class="item.icon" v-if="!Object.is(item.icon, '')" />
<i :class="item.iconcls" v-else-if="!Object.is(item.iconcls, '')" />
<i class="fa fa-cogs" v-else></i>
</span>
<span v-else>
<img :src="item.icon" v-if="!Object.is(item.icon, '')" />
<img :src="item.iconcls" v-else-if="!Object.is(item.iconcls, '')" />
<i class="fa fa-cogs" v-else></i>
</span>
<h4>{{$t('app.menus.' + ctrlName + '.' + item.name)}}</h4>
</div>
</el-card>
</template>
</div>
</template>
<script lang='ts'>
import { Component, Vue, Prop, Model, Watch } from "vue-property-decorator";
@Component({})
export default class AppQuickMenus extends Vue {
public isIcon( icon: string,iconcls: string) {
if (icon.indexOf("fa") == 0 || iconcls.indexOf("fa") == 0) {
return true;
}else {
return false;
}
}
public menuClick(index: any,indexs: any[]) {
this.$emit("menuClick",index,indexs);
}
/**
* 菜单数据
*
* @type {*}
* @memberof AppQuickMenus
*/
@Prop({ default: [] }) public menus!: any;
/**
* 部件名称
*
* @type {String}
* @memberof AppQuickMenus
*/
@Prop() public ctrlName!:String;
}
</script>
<style lang='less'>
@import "./app-icon-menus.less";
</style>
\ No newline at end of file
......@@ -10,13 +10,20 @@
</dropdown>
</template>
<script lang = 'ts'>
import { Component, Vue } from 'vue-property-decorator';
import { Component, Vue, Inject } from 'vue-property-decorator';
import { localList } from '@locale/local-list';
@Component({})
export default class AppLang extends Vue {
/**
* 注入刷新行为
*
* @memberof AppLang
*/
@Inject() reload: any;
/**
* 本地语言资源
*
......@@ -55,6 +62,7 @@ export default class AppLang extends Vue {
const local: any = this.localList.find((_local: any) => Object.is(_local.type, $evnet));
this.title = local.name;
localStorage.setItem('local', $evnet);
this.reload();
}
}
......
......@@ -312,7 +312,9 @@ export default class AppPicker extends Vue {
if (value) {
this.items.push({text: newVal, value: value});
}
this.onSearch(newVal, null, false);
if(newVal && value){
this.onSearch(newVal, null, false);
}
}
}
......
<template>
<template>
<div class="app-menus">
<template v-for="(item,index) in menus">
<card :bordered="false" dis-hover v-if="item.items && Array.isArray(item.items)" :key="index">
......@@ -12,8 +12,8 @@
<span class="line"></span>
</p>
<p style=" display: 'flex' ">
<app-quick-menus :menus="item.items" :ctrlName = "ctrlName"></app-quick-menus>
</p>
<app-quick-menus :menus="item.items" :ctrlName="ctrlName"></app-quick-menus>
</p>
</card>
<card
:key="index"
......@@ -43,12 +43,12 @@
</template>
</div>
</template>
<script lang='ts'>
import { Component, Vue, Prop, Model, Watch } from "vue-property-decorator";
@Component({})
export default class AppQuickMenus extends Vue {
/**
* 菜单数据
*
......@@ -58,7 +58,7 @@ export default class AppQuickMenus extends Vue {
@Prop({ default: [] }) public menus!: any;
/**
* 部件名称
* 部件名称
*
* @type {String}
* @memberof AppQuickMenus
......
......@@ -349,7 +349,7 @@ export default class CodeList extends Vue {
max-height: 32px;
padding: 0px 3px;
> img{
max-height: 32px;
max-height: 24px;
width: auto;
margin-right: 6px;
border-radius: 50%;
......
......@@ -33,7 +33,7 @@
:file-list="uploadFileList"
:show-file-list="false"
:http-request="customUploadFile">
<el-button type="primary" size="small" icon="el-icon-upload">
<el-button type="primary" size="small" icon="el-icon-upload" :disabled="disabled">
{{$t('components.diskFileUpload.clickUpload')}}
</el-button>
</el-upload>
......
.dropdown-list-hidden-container{
.dropdown-list-hidden{
display: inline-block;
}
.tree-dropdown-list{
width: 100%;
.el-input__inner{
height: 32px !important;
line-height: 32px !important;
}
.el-input__icon{
line-height: 32px;
}
}
}
\ No newline at end of file
......@@ -9,7 +9,7 @@
:filterable="filterable"
@on-open-change="onClick"
:placeholder="placeholder?placeholder:$t('components.dropDownList.placeholder')">
<i-option v-for="(item, index) in items" :key="index" :class="item.class" :value="item.value">{{($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" :disabled="item.disabled" :class="item.class" :value="item.value">{{($t('codelist.'+tag+'.'+item.value)!== ('codelist.'+tag+'.'+item.value))?$t('codelist.'+tag+'.'+item.value) : item.text}}</i-option>
</i-select>
<ibiz-select-tree v-if="hasChildren" class="tree-dropdown-list" :disabled="disabled" :NodesData="items" v-model="currentVal" :multiple="false"></ibiz-select-tree>
</div>
......@@ -61,6 +61,24 @@ export default class DropDownList extends Vue {
*/
@Model('change') readonly itemValue!: any;
/**
* 监控值变化,根据属性类型强制转换
*
* @memberof DropDownList
*/
@Watch('itemValue')
public valueWatch() {
try {
this.readyValue();
// 代码表集合中不存在改选项,重新准备集合
if (this.value && !this.items.find((item: any) => Object.is(this.value, item.value))) {
this.loadData();
}
} catch (error) {
console.log('下拉列表,值转换失败');
}
}
/**
* 代码表标识
*
......@@ -102,7 +120,7 @@ export default class DropDownList extends Vue {
*/
protected formStateEvent: Subscription | undefined;
/**
/**
* 监听表单数据
*
* @memberof DropDownList
......
......@@ -68,7 +68,7 @@ export default class TabPageExp extends Vue {
public getCaption(caption: any, info: any): any {
return info && !Object.is(info, "")
? `${this.$t(caption)} - ${info}`
? `${this.$t(caption)} - ${this.$t(info)}`
: this.$t(caption);
}
......
......@@ -101,7 +101,7 @@ export default class EditViewEngine extends ViewEngine {
* @memberof EditViewEngine
*/
public onFormLoad(arg: any): void {
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : this.view.$t('app.local.new');
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : 'app.local.new';
this.setTabCaption(this.view.model.dataInfo,Object.is(arg.srfuf, '0'));
const newdata: boolean = !Object.is(arg.srfuf, '1');
......@@ -116,7 +116,7 @@ export default class EditViewEngine extends ViewEngine {
* @memberof EditViewEngine
*/
public onFormSave(arg: any): void {
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : this.view.$t('app.local.new');
this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField?arg[this.majorPSDEField]:arg.srfmajortext) : 'app.local.new';
this.setTabCaption(this.view.model.dataInfo,Object.is(arg.srfuf, '0'));
const newdata: boolean = !Object.is(arg.srfuf, '1');
......@@ -200,12 +200,12 @@ export default class EditViewEngine extends ViewEngine {
}
// 解决表格视图标题问题
if(this.view.$tabPageExp && this.view.viewDefaultUsage){
this.view.$tabPageExp.setCurPageCaption(this.view.$t(viewdata.srfCaption), this.view.$t(viewdata.srfCaption), info);
this.view.$tabPageExp.setCurPageCaption(this.view.$t(viewdata.srfCaption), viewdata.srfCaption, info);
}
if(this.view.$route){
this.view.$route.meta.info = info;
}
this.view.model.srfCaption = `${this.view.$t(viewdata.srfCaption)}-${viewdata.dataInfo}`;
this.view.model.srfCaption = `${this.view.$t(viewdata.srfCaption)}-${this.view.$t(viewdata.dataInfo)}`;
this.view.initNavDataWithRoute(null,isNew);
}
}
......
......@@ -16,7 +16,7 @@ const messages = {
// 自动根据浏览器系统语言设置语言
const navLang = localStorage.getItem('local') || navigator.language;
const localLang = (navLang === 'zh-CN' || (navLang === 'en-US' && messages.hasOwnProperty('en-US'))) ? navLang : false;
const localLang = (navLang === 'zh-CN' || (navLang === 'en-US' && messages.hasOwnProperty('en-US')) || (navLang === 'ti-US' && messages.hasOwnProperty('ti-US'))) ? navLang : false;
let lang: string = localLang || 'zh-CN';
vueApp.config.lang = lang
......
此差异已折叠。
import app_BO_CN_Base from './BO-CN-base';
function getLocaleResource(){
const app_BO_CN_OwnData = {};
const targetData = Object.assign(app_BO_CN_Base(), app_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import codelist_BO_CN_Base from './codelist_BO_CN_base';
function getLocaleResource(){
const codelist_BO_CN_OwnData = {};
const targetData = Object.assign(codelist_BO_CN_Base(), codelist_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
OpenAccessType: {
"aliyun": commonLogic.appcommonhandle("阿里云",null),
"wechat": commonLogic.appcommonhandle("微信开放平台",null),
"qq": commonLogic.appcommonhandle("QQ互联",null),
"dingtalk": commonLogic.appcommonhandle("钉钉开放平台",null),
"empty": commonLogic.appcommonhandle("",null)
},
YesNo: {
"1": commonLogic.appcommonhandle("是",null),
"0": commonLogic.appcommonhandle("否",null),
"empty": commonLogic.appcommonhandle("",null)
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import components_BO_CN_Base from './components_BO_CN_base';
function getLocaleResource(){
const components_BO_CN_OwnData = {};
const targetData = Object.assign(components_BO_CN_Base(), components_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import PayOpenAccess_BO_CN_Base from './pay-open-access_BO_CN_base';
function getLocaleResource(){
const PayOpenAccess_BO_CN_OwnData = {};
const targetData = Object.assign(PayOpenAccess_BO_CN_Base(), PayOpenAccess_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
id: commonLogic.appcommonhandle("开放平台接入标识",null),
name: commonLogic.appcommonhandle("开放平台",null),
open_type: commonLogic.appcommonhandle("开放平台类型",null),
access_key: commonLogic.appcommonhandle("AccessKey(AppId)",null),
secret_key: commonLogic.appcommonhandle("SecretKey(AppSecret)",null),
region_id: commonLogic.appcommonhandle("RegionId",null),
access_token: commonLogic.appcommonhandle("管理账号token",null),
expires_time: commonLogic.appcommonhandle("管理账号token过期时间",null),
disabled: commonLogic.appcommonhandle("是否禁用",null),
redirect_uri: commonLogic.appcommonhandle("RedirectURI",null),
notify_url: commonLogic.appcommonhandle("NotifyUrl",null),
agent_id: commonLogic.appcommonhandle("AGENT_ID",null),
},
views: {
gridview: {
caption: commonLogic.appcommonhandle("支付平台",null),
title: commonLogic.appcommonhandle("支付平台表格视图",null),
},
pickupgridview: {
caption: commonLogic.appcommonhandle("支付平台",null),
title: commonLogic.appcommonhandle("支付平台选择表格视图",null),
},
pickupview: {
caption: commonLogic.appcommonhandle("支付平台",null),
title: commonLogic.appcommonhandle("支付平台数据选择视图",null),
},
editview: {
caption: commonLogic.appcommonhandle("支付平台",null),
title: commonLogic.appcommonhandle("支付平台编辑视图",null),
},
},
main_form: {
details: {
formpage1: commonLogic.appcommonhandle("基本信息",null),
srforikey: commonLogic.appcommonhandle("",null),
srfkey: commonLogic.appcommonhandle("开放平台接入标识",null),
srfmajortext: commonLogic.appcommonhandle("开放平台",null),
srftempmode: commonLogic.appcommonhandle("",null),
srfuf: commonLogic.appcommonhandle("",null),
srfdeid: commonLogic.appcommonhandle("",null),
srfsourcekey: commonLogic.appcommonhandle("",null),
accessname: commonLogic.appcommonhandle("开放平台",null),
open_type: commonLogic.appcommonhandle("开放平台类型",null),
access_key: commonLogic.appcommonhandle("AccessKey(AppId)",null),
secret_key: commonLogic.appcommonhandle("SecretKey(AppSecret)",null),
region_id: commonLogic.appcommonhandle("RegionId",null),
access_token: commonLogic.appcommonhandle("管理账号token",null),
expires_time: commonLogic.appcommonhandle("管理账号token过期时间",null),
redirect_uri: commonLogic.appcommonhandle("RedirectURI",null),
notify_url: commonLogic.appcommonhandle("NotifyUrl",null),
agent_id: commonLogic.appcommonhandle("AGENT_ID",null),
disabled: commonLogic.appcommonhandle("是否禁用",null),
accessid: commonLogic.appcommonhandle("开放平台接入标识",null),
},
uiactions: {
},
},
main_grid: {
columns: {
accessname: commonLogic.appcommonhandle("开放平台",null),
open_type: commonLogic.appcommonhandle("开放平台类型",null),
region_id: commonLogic.appcommonhandle("RegionId",null),
redirect_uri: commonLogic.appcommonhandle("RedirectURI",null),
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
},
uiactions: {
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("新建",null),
tip: commonLogic.appcommonhandle("新建",null),
},
tbitem4: {
caption: commonLogic.appcommonhandle("编辑",null),
tip: commonLogic.appcommonhandle("编辑",null),
},
tbitem6: {
caption: commonLogic.appcommonhandle("拷贝",null),
tip: commonLogic.appcommonhandle("拷贝",null),
},
tbitem7: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem8: {
caption: commonLogic.appcommonhandle("删除",null),
tip: commonLogic.appcommonhandle("删除",null),
},
tbitem9: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem13: {
caption: commonLogic.appcommonhandle("导出",null),
tip: commonLogic.appcommonhandle("导出",null),
},
tbitem10: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem16: {
caption: commonLogic.appcommonhandle("其它",null),
tip: commonLogic.appcommonhandle("其它",null),
},
tbitem21: {
caption: commonLogic.appcommonhandle("导出数据模型",null),
tip: commonLogic.appcommonhandle("导出数据模型",null),
},
tbitem23: {
caption: commonLogic.appcommonhandle("数据导入",null),
tip: commonLogic.appcommonhandle("数据导入",null),
},
tbitem17: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem19: {
caption: commonLogic.appcommonhandle("过滤",null),
tip: commonLogic.appcommonhandle("过滤",null),
},
tbitem18: {
caption: commonLogic.appcommonhandle("帮助",null),
tip: commonLogic.appcommonhandle("帮助",null),
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("保存",null),
tip: commonLogic.appcommonhandle("保存",null),
},
tbitem4: {
caption: commonLogic.appcommonhandle("保存并新建",null),
tip: commonLogic.appcommonhandle("保存并新建",null),
},
tbitem5: {
caption: commonLogic.appcommonhandle("保存并关闭",null),
tip: commonLogic.appcommonhandle("保存并关闭",null),
},
tbitem6: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem7: {
caption: commonLogic.appcommonhandle("删除并关闭",null),
tip: commonLogic.appcommonhandle("删除并关闭",null),
},
tbitem8: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem12: {
caption: commonLogic.appcommonhandle("新建",null),
tip: commonLogic.appcommonhandle("新建",null),
},
tbitem13: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem14: {
caption: commonLogic.appcommonhandle("拷贝",null),
tip: commonLogic.appcommonhandle("拷贝",null),
},
tbitem16: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem23: {
caption: commonLogic.appcommonhandle("第一个记录",null),
tip: commonLogic.appcommonhandle("第一个记录",null),
},
tbitem24: {
caption: commonLogic.appcommonhandle("上一个记录",null),
tip: commonLogic.appcommonhandle("上一个记录",null),
},
tbitem25: {
caption: commonLogic.appcommonhandle("下一个记录",null),
tip: commonLogic.appcommonhandle("下一个记录",null),
},
tbitem26: {
caption: commonLogic.appcommonhandle("最后一个记录",null),
tip: commonLogic.appcommonhandle("最后一个记录",null),
},
tbitem21: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem22: {
caption: commonLogic.appcommonhandle("帮助",null),
tip: commonLogic.appcommonhandle("帮助",null),
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import PayTrade_BO_CN_Base from './pay-trade_BO_CN_base';
function getLocaleResource(){
const PayTrade_BO_CN_OwnData = {};
const targetData = Object.assign(PayTrade_BO_CN_Base(), PayTrade_BO_CN_OwnData);
return targetData;
}
export default getLocaleResource;
\ No newline at end of file
import commonLogic from '@/locale/logic/common/common-logic';
function getLocaleResourceBase(){
const data:any = {
fields: {
subject: commonLogic.appcommonhandle("订单标题",null),
total_amount: commonLogic.appcommonhandle("订单金额",null),
trade_name: commonLogic.appcommonhandle("交易名称",null),
trade_type: commonLogic.appcommonhandle("支付类型",null),
trade_status: commonLogic.appcommonhandle("支付状态",null),
out_trade_no: commonLogic.appcommonhandle("订单号",null),
trade_id: commonLogic.appcommonhandle("交易标识",null),
app_id: commonLogic.appcommonhandle("AccessKey(AppId)",null),
access_name: commonLogic.appcommonhandle("支付平台",null),
access_id: commonLogic.appcommonhandle("支付平台接入标识",null),
},
views: {
editview: {
caption: commonLogic.appcommonhandle("支付交易",null),
title: commonLogic.appcommonhandle("支付交易编辑视图",null),
},
gridview: {
caption: commonLogic.appcommonhandle("支付交易",null),
title: commonLogic.appcommonhandle("支付交易表格视图",null),
},
},
main_form: {
details: {
formpage1: commonLogic.appcommonhandle("基本信息",null),
srforikey: commonLogic.appcommonhandle("",null),
srfkey: commonLogic.appcommonhandle("交易标识",null),
srfmajortext: commonLogic.appcommonhandle("交易名称",null),
srftempmode: commonLogic.appcommonhandle("",null),
srfuf: commonLogic.appcommonhandle("",null),
srfdeid: commonLogic.appcommonhandle("",null),
srfsourcekey: commonLogic.appcommonhandle("",null),
tradename: commonLogic.appcommonhandle("交易名称",null),
outtradeno: commonLogic.appcommonhandle("订单号",null),
subject: commonLogic.appcommonhandle("订单标题",null),
totalamount: commonLogic.appcommonhandle("订单金额",null),
accessname: commonLogic.appcommonhandle("支付平台",null),
tradeid: commonLogic.appcommonhandle("交易标识",null),
accessid: commonLogic.appcommonhandle("支付平台接入标识",null),
},
uiactions: {
},
},
main_grid: {
columns: {
tradename: commonLogic.appcommonhandle("交易名称",null),
subject: commonLogic.appcommonhandle("订单标题",null),
outtradeno: commonLogic.appcommonhandle("订单号",null),
totalamount: commonLogic.appcommonhandle("订单金额",null),
accessname: commonLogic.appcommonhandle("支付平台",null),
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
},
uiactions: {
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("保存",null),
tip: commonLogic.appcommonhandle("保存",null),
},
tbitem4: {
caption: commonLogic.appcommonhandle("保存并新建",null),
tip: commonLogic.appcommonhandle("保存并新建",null),
},
tbitem5: {
caption: commonLogic.appcommonhandle("保存并关闭",null),
tip: commonLogic.appcommonhandle("保存并关闭",null),
},
tbitem6: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem7: {
caption: commonLogic.appcommonhandle("删除并关闭",null),
tip: commonLogic.appcommonhandle("删除并关闭",null),
},
tbitem8: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem12: {
caption: commonLogic.appcommonhandle("新建",null),
tip: commonLogic.appcommonhandle("新建",null),
},
tbitem13: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem14: {
caption: commonLogic.appcommonhandle("拷贝",null),
tip: commonLogic.appcommonhandle("拷贝",null),
},
tbitem16: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem23: {
caption: commonLogic.appcommonhandle("第一个记录",null),
tip: commonLogic.appcommonhandle("第一个记录",null),
},
tbitem24: {
caption: commonLogic.appcommonhandle("上一个记录",null),
tip: commonLogic.appcommonhandle("上一个记录",null),
},
tbitem25: {
caption: commonLogic.appcommonhandle("下一个记录",null),
tip: commonLogic.appcommonhandle("下一个记录",null),
},
tbitem26: {
caption: commonLogic.appcommonhandle("最后一个记录",null),
tip: commonLogic.appcommonhandle("最后一个记录",null),
},
tbitem21: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem22: {
caption: commonLogic.appcommonhandle("帮助",null),
tip: commonLogic.appcommonhandle("帮助",null),
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("新建",null),
tip: commonLogic.appcommonhandle("新建",null),
},
tbitem4: {
caption: commonLogic.appcommonhandle("编辑",null),
tip: commonLogic.appcommonhandle("编辑",null),
},
tbitem6: {
caption: commonLogic.appcommonhandle("拷贝",null),
tip: commonLogic.appcommonhandle("拷贝",null),
},
tbitem7: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem8: {
caption: commonLogic.appcommonhandle("删除",null),
tip: commonLogic.appcommonhandle("删除",null),
},
tbitem9: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem13: {
caption: commonLogic.appcommonhandle("导出",null),
tip: commonLogic.appcommonhandle("导出",null),
},
tbitem10: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem16: {
caption: commonLogic.appcommonhandle("其它",null),
tip: commonLogic.appcommonhandle("其它",null),
},
tbitem21: {
caption: commonLogic.appcommonhandle("导出数据模型",null),
tip: commonLogic.appcommonhandle("导出数据模型",null),
},
tbitem23: {
caption: commonLogic.appcommonhandle("数据导入",null),
tip: commonLogic.appcommonhandle("数据导入",null),
},
tbitem17: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem19: {
caption: commonLogic.appcommonhandle("过滤",null),
tip: commonLogic.appcommonhandle("过滤",null),
},
tbitem18: {
caption: commonLogic.appcommonhandle("帮助",null),
tip: commonLogic.appcommonhandle("帮助",null),
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
// 用户自定义语言资源 藏文
function getLocaleResource(){
const data:any = {};
return data;
}
export default getLocaleResource;
\ No newline at end of file
export default {
el: {
colorpicker: {
confirm: 'གཏན་ཁེལ་',
clear: 'གཙང་སེལ་'
},
datepicker: {
now: 'སྐབས་དེར།',
today: 'དེ་རིང་',
cancel: 'མེད་པར་བཟོ་བ་',
clear: 'གཙང་སེལ་',
confirm: 'གཏན་ཁེལ་',
selectDate: 'བདམས་པའི་ཚེས་གྲངས།',
selectTime: 'བདམས་པའི་དུས་ཚོད།',
startDate: 'འགོ་འཛུགས་དུས་ཚོད།',
startTime: 'འགོ་རྩོམ་དུས་ཚོད།',
endDate: 'མཇུག་རྫོགས་ཚེས་གྲངས།',
endTime: 'མཇུག་རྫོགས་དུས་ཚོད།',
prevYear: 'ལོ་སྔོན་མ།',
nextYear: 'ལོ་རྗེས་མ།',
prevMonth: 'ཟླ་བ་གོང་མར་',
nextMonth: 'ཟླ་བ་རྗེས་མ་',
year: 'ལོ་',
month1: 'ཟླ་བ་དང་པོ།',
month2: 'ཟླ་བ་གཉིས་པ།',
month3: 'ཟླ་བ་གསུམ་པ།',
month4: 'ཟླ་བ་བཞི་པ།',
month5: 'ཟླ་བ་ལྔ་པ།',
month6: 'ཟླ་བ་དྲུག་པ།',
month7: 'ཟླ་བ་བདུན་པ།',
month8: 'ཟླ་བ་བརྒྱད་པ།',
month9: 'ཟླ་བ་དགུ་པ།',
month10: 'ཟླ་བ་བཅུ་པ།',
month11: 'ཟླ་བ་བཅུ་གཅིག་པ།',
month12: 'ཟླ་བ་བཅུ་གཉིས་པ།',
weeks: {
sun: 'ཉི་མ།',
mon: 'གཅིག',
tue: 'གཉིས།',
wed: 'གསུམ།',
thu: 'བཞི།',
fri: 'ལྔ།',
sat: 'དྲུག'
},
months: {
jan: 'ཟླ་བ་དང་པོ།',
feb: 'ཟླ་བ་གཉིས་པ།',
mar: 'ཟླ་བ་གསུམ་པ།',
apr: 'ཟླ་བ་བཞི་པ།',
may: 'ཟླ་བ་ལྔ་པ།',
jun: 'ཟླ་བ་དྲུག་པ།',
jul: 'ཟླ་བ་བདུན་པ།',
aug: 'ཟླ་བ་བརྒྱད་པ།',
sep: 'ཟླ་བ་དགུ་པ།',
oct: 'ཟླ་བ་བཅུ་པ།',
nov: 'ཟླ་བ་བཅུ་གཅིག་པ།',
dec: 'ཟླ་བ་བཅུ་གཉིས་པ།'
}
},
select: {
loading: 'སྣོན་འཇུག་ཁྲོད་',
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
noData: 'གཞི་གྲངས་མེད་པ་',
placeholder: 'འདེམ་རོགས་།'
},
cascader: {
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
loading: 'སྣོན་འཇུག་ཁྲོད་',
placeholder: 'འདེམ་རོགས་།',
noData: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་'
},
pagination: {
goto: 'ཕེབས་པ།',
pagesize: 'ནར་མོ/ལྡེབ་ངོས།',
total: 'མཉམ་དུ། {total} ལྕུག་མ།',
pageClassifier: 'ཤོག་ངོས་'
},
messagebox: {
title: 'གསལ་འདེབས་',
confirm: 'གཏན་ཁེལ་',
cancel: 'མེད་པར་བཟོ་བ་',
error: 'གཞི་གྲངས་ནང་འདྲེན་བྱས་པ་དེ་ཁྲིམས་དང་མི་མཐུན་པ་ཞིག་རེད།!'
},
upload: {
deleteTip: 'deleteམཐེབ་ལྟར་སུབ་པ་ཆོག་།',
delete: 'སུབ་པ་',
preview: 'པར་རིས་ལ་ལྟ་བ་',
continue: 'མུ་མཐུད་དུ་ཡར་བསྐུར་།'
},
table: {
emptyText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་',
confirmFilter: 'འཚག་འདེམས་',
resetFilter: 'བསྐྱར་འཇོག',
clearFilter: 'ཚང་མ།',
sumText: 'བསྡོམས་འབོར་'
},
tree: {
emptyText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་'
},
transfer: {
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
noData: 'གཞི་གྲངས་མེད་པ་',
titles: ['རེའུ་མིག1', 'རེའུ་མིག2'],
filterPlaceholder: 'བཤེར་འཚོལ་ནང་དོན་ནང་འཇུག་རོགས་།',
noCheckedFormat: 'མཉམ་དུ། {total} ཚན།',
hasCheckedFormat: 'བདམས་ཟིན་པ་ {checked}/{total} ཚན།'
},
image: {
error: 'ཁུར་སྣོན་ཕམ་པ།'
},
pageHeader: {
title: 'ཕྱིར་ལོག'
},
popconfirm: {
confirmButtonText: 'གཏན་ཁེལ་',
cancelButtonText: 'མེད་པར་བཟོ་བ་'
}
}
};
\ No newline at end of file
export default {
i: {
locale: 'BO-CN',
select: {
placeholder: 'འདེམ་རོགས་།',
noMatch: 'སྙོམ་མེད་གཞི་གྲངས།',
loading: 'སྣོན་འཇུག་ཁྲོད་'
},
table: {
noDataText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་',
noFilteredDataText: 'གནས་སྐབས་འཚག་འདེམས་མཇུག་འབྲས་མེད་།',
confirmFilter: 'འཚག་འདེམས་',
resetFilter: 'བསྐྱར་འཇོག',
clearFilter: 'ཚང་མ།',
sumText: 'བསྡོམས་འབོར་'
},
datepicker: {
selectDate: 'བདམས་པའི་ཚེས་གྲངས།',
selectTime: 'བདམས་པའི་དུས་ཚོད།',
startTime: 'འགོ་རྩོམ་དུས་ཚོད།',
endTime: 'མཇུག་རྫོགས་དུས་ཚོད།',
clear: 'གཙང་སེལ་',
ok: 'གཏན་ཁེལ་',
datePanelLabel: '[mmmm] [yyyy]',
month: 'ཟླ་བ།',
month1: 'ཟླ་བ་དང་པོ།',
month2: 'ཟླ་བ་གཉིས་པ།',
month3: 'ཟླ་བ་གསུམ་པ།',
month4: 'ཟླ་བ་བཞི་པ།',
month5: 'ཟླ་བ་ལྔ་པ།',
month6: 'ཟླ་བ་དྲུག་པ།',
month7: 'ཟླ་བ་བདུན་པ།',
month8: 'ཟླ་བ་བརྒྱད་པ།',
month9: 'ཟླ་བ་དགུ་པ།',
month10: 'ཟླ་བ་བཅུ་པ།',
month11: 'ཟླ་བ་བཅུ་གཅིག་པ།',
month12: 'ཟླ་བ་བཅུ་གཉིས་པ།',
year: 'ལོ་',
weekStartDay: '0',
weeks: {
sun: 'ཉི་མ།',
mon: 'གཅིག',
tue: 'གཉིས།',
wed: 'གསུམ།',
thu: 'བཞི།',
fri: 'ལྔ།',
sat: 'དྲུག'
},
months: {
m1: 'ཟླ་བ་དང་པོ།',
m2: 'ཟླ་བ་གཉིས་པ།',
m3: 'ཟླ་བ་གསུམ་པ།',
m4: 'ཟླ་བ་བཞི་པ།',
m5: 'ཟླ་བ་ལྔ་པ།',
m6: 'ཟླ་བ་དྲུག་པ།',
m7: 'ཟླ་བ་བདུན་པ།',
m8: 'ཟླ་བ་བརྒྱད་པ།',
m9: 'ཟླ་བ་དགུ་པ།',
m10: 'ཟླ་བ་བཅུ་པ།',
m11: 'ཟླ་བ་བཅུ་གཅིག་པ།',
m12: 'ཟླ་བ་བཅུ་གཉིས་པ།'
}
},
transfer: {
titles: {
source: 'ཁུངས་ཀྱི་རེའུ་མིག',
target: 'དམིགས་ཡུལ་རེའུ་མིག'
},
filterPlaceholder: 'བཤེར་འཚོལ་ནང་དོན་ནང་འཇུག་རོགས་།',
notFoundText: 'རེའུ་མིག་སྟོང་པ་རེད།'
},
modal: {
okText: 'གཏན་ཁེལ་',
cancelText: 'མེད་པར་བཟོ་བ་'
},
poptip: {
okText: 'གཏན་ཁེལ་',
cancelText: 'མེད་པར་བཟོ་བ་'
},
page: {
prev: 'ཤོག་ངོས་གོང་མ།',
next: 'ཤོག་ངོས་རྗེས་མ་',
total: 'མཉམ་དུ།',
item: 'ལྕུག་མ།',
items: 'ལྕུག་མ།',
prev5: 'མདུན་གྱི་ཤོག་ངོས་5།',
next5: 'རྒྱབ་ཏུ་ཤོག་ངོས་5།',
page: 'ནར་མོ/ལྡེབ་ངོས། ',
goto: 'མཆོང་།',
p: 'ཤོག་ངོས་'
},
rate: {
star: 'སྐར་མ་',
stars: 'སྐར་མ་'
},
time: {
before: 'མདུན།',
after: 'རྗེས་',
just: 'མ་ཐག་',
seconds: 'སྐར་ཆ་',
minutes: 'སྐར་མ་',
hours: 'ཆུ་ཚོད།',
days: 'གནམ་'
},
tree: {
emptyText: 'གནས་སྐབས་གཞི་གྲངས་མེད་པ་'
}
}
};
\ No newline at end of file
......@@ -1395,7 +1395,7 @@ export default class PayOpenAccessEditViewBase extends Vue {
Object.assign(data, { payopenaccess: args[0].payopenaccess });
}
if(!params) params = {};
Object.assign(params,{copymode:true});
Object.assign(args,{copymode:true});
_this.opendata([{ ...data }], args, params, $event, xData);
} else {
Object.assign(this.viewparams,{copymode:true});
......
......@@ -3,7 +3,7 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="payopenaccessgridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<span class='caption-info' :title="$t(model.srfCaption)">{{$t(model.srfCaption)}}</span>
</div>
<div class='view-top-messages'>
</div>
......@@ -1421,7 +1421,7 @@ export default class PayOpenAccessGridViewBase extends Vue {
Object.assign(data, { payopenaccess: args[0].payopenaccess });
}
if(!params) params = {};
Object.assign(params,{copymode:true});
Object.assign(args,{copymode:true});
_this.opendata([{ ...data }], args, params, $event, xData);
} else {
Object.assign(this.viewparams,{copymode:true});
......
......@@ -1395,7 +1395,7 @@ export default class PayTradeEditViewBase extends Vue {
Object.assign(data, { paytrade: args[0].paytrade });
}
if(!params) params = {};
Object.assign(params,{copymode:true});
Object.assign(args,{copymode:true});
_this.opendata([{ ...data }], args, params, $event, xData);
} else {
Object.assign(this.viewparams,{copymode:true});
......
......@@ -3,7 +3,7 @@
<app-studioaction :viewTitle="$t(model.srfCaption)" viewName="paytradegridview"></app-studioaction>
<card class='view-card ' :dis-hover="true" :bordered="false">
<div slot='title' class="header-container">
<span class='caption-info'>{{$t(model.srfCaption)}}</span>
<span class='caption-info' :title="$t(model.srfCaption)">{{$t(model.srfCaption)}}</span>
</div>
<div class='view-top-messages'>
</div>
......@@ -1421,7 +1421,7 @@ export default class PayTradeGridViewBase extends Vue {
Object.assign(data, { paytrade: args[0].paytrade });
}
if(!params) params = {};
Object.assign(params,{copymode:true});
Object.assign(args,{copymode:true});
_this.opendata([{ ...data }], args, params, $event, xData);
} else {
Object.assign(this.viewparams,{copymode:true});
......
......@@ -110,6 +110,10 @@
font-size: 18px;
color: #1890ff;
flex-shrink: 0;
max-width: 50%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
> .toolbar-container{
margin-left: auto;
......
......@@ -10,5 +10,11 @@ declare module "view-design/dist/locale/zh-CN" {
declare module "element-ui/lib/locale/lang/zh-CN" {
}
declare module "view-design/dist/locale/BO-CN" {
}
declare module "element-ui/lib/locale/lang/BO-CN" {
}
declare module "tinymce/tinymce" {
}
\ No newline at end of file
......@@ -8,7 +8,8 @@
:collapse="isCollapse"
@select="select"
:default-active="defaultActive">
<template v-if="Object.is(mode,'horizontal')">
<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" :class="item0.textcls">
......@@ -104,9 +105,10 @@
</el-menu-item>
</template>
</template>
</template>
</template>
</template>
<app-menu-item v-else :isCollapse="isCollapse" :menus="menus" :ctrlName="'payindexview'" :isFirst="true" :counterdata="counterdata" :popper-class="popperClass"></app-menu-item>
</el-menu>
</div>
</template>
......
......@@ -24,7 +24,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import PayOpenAccessService from '@/service/pay-open-access/pay-open-access-service';
import PayOpenAccessEntityService from '@/service/pay-open-access/pay-open-access-service';
import DefaultService from './default-searchform-service';
import PayOpenAccessUIService from '@/uiservice/pay-open-access/pay-open-access-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -113,7 +113,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {PayOpenAccessService}
* @memberof DefaultBase
*/
public appEntityService: PayOpenAccessService = new PayOpenAccessService({ $store: this.$store });
public appEntityService: PayOpenAccessEntityService = new PayOpenAccessEntityService({ $store: this.$store });
......
......@@ -177,7 +177,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import PayOpenAccessService from '@/service/pay-open-access/pay-open-access-service';
import PayOpenAccessEntityService from '@/service/pay-open-access/pay-open-access-service';
import MainService from './main-form-service';
import PayOpenAccessUIService from '@/uiservice/pay-open-access/pay-open-access-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -268,7 +268,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {PayOpenAccessService}
* @memberof MainBase
*/
public appEntityService: PayOpenAccessService = new PayOpenAccessService({ $store: this.$store });
public appEntityService: PayOpenAccessEntityService = new PayOpenAccessEntityService({ $store: this.$store });
......@@ -519,7 +519,16 @@ export default class MainBase extends Vue implements ControlInterface {
*
* @memberof MainBase
*/
public errorMessages: Array<any> = [];
public errorMessages: Array<any> = [];
/**
* 应用状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof MainBase
*/
public appStateEvent: Subscription | undefined;
/**
* 设置表单项错误提示信息
......@@ -1462,6 +1471,9 @@ export default class MainBase extends Vue implements ControlInterface {
if (this.dataChangEvent) {
this.dataChangEvent.unsubscribe();
}
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
}
/**
......
......@@ -10,6 +10,7 @@
:cell-class-name="getCellClassName"
max-height="items.length > 0 ? 'calc(100%-50px)' : '100%'"
@row-click="rowClick($event)"
@cell-click="cellClick"
@select-all="selectAll($event)"
@select="select"
@row-class-name="onRowClassName($event)"
......@@ -120,7 +121,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import PayOpenAccessService from '@/service/pay-open-access/pay-open-access-service';
import PayOpenAccessEntityService from '@/service/pay-open-access/pay-open-access-service';
import MainService from './main-grid-service';
import PayOpenAccessUIService from '@/uiservice/pay-open-access/pay-open-access-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -210,7 +211,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {PayOpenAccessService}
* @memberof MainBase
*/
public appEntityService: PayOpenAccessService = new PayOpenAccessService({ $store: this.$store });
public appEntityService: PayOpenAccessEntityService = new PayOpenAccessEntityService({ $store: this.$store });
......@@ -988,7 +989,8 @@ export default class MainBase extends Vue implements ControlInterface {
this.selections = [];
resolve(response);
}).catch((response: any) => {
if (response && response.status === 401) {
if (response && response.status != 200) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.message});
return;
}
if (!response || !response.status || !response.data) {
......@@ -1660,6 +1662,17 @@ export default class MainBase extends Vue implements ControlInterface {
this.$emit('selectionchange', this.selections);
}
/**
* 单元格单击隐藏提示框
*
* @memberof MainBase
*/
public cellClick() {
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
if (el) {
el.style.display = 'none';
}
}
/**
* 行单击选中
......@@ -1794,6 +1807,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public uiAction(row: any, tag: any, $event: any) {
// this.rowClick(row, true);
this.cellClick();
$event.stopPropagation();
}
......
......@@ -25,7 +25,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import PayOpenAccessService from '@/service/pay-open-access/pay-open-access-service';
import PayOpenAccessEntityService from '@/service/pay-open-access/pay-open-access-service';
import PickupViewpickupviewpanelService from './pickup-viewpickupviewpanel-pickupviewpanel-service';
import PayOpenAccessUIService from '@/uiservice/pay-open-access/pay-open-access-ui-service';
import PickupViewpickupviewpanelModel from './pickup-viewpickupviewpanel-pickupviewpanel-model';
......@@ -105,7 +105,7 @@ export default class PickupViewpickupviewpanelBase extends Vue implements Contro
* @type {PayOpenAccessService}
* @memberof PickupViewpickupviewpanelBase
*/
public appEntityService: PayOpenAccessService = new PayOpenAccessService({ $store: this.$store });
public appEntityService: PayOpenAccessEntityService = new PayOpenAccessEntityService({ $store: this.$store });
......
......@@ -24,7 +24,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import PayTradeService from '@/service/pay-trade/pay-trade-service';
import PayTradeEntityService from '@/service/pay-trade/pay-trade-service';
import DefaultService from './default-searchform-service';
import PayTradeUIService from '@/uiservice/pay-trade/pay-trade-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -113,7 +113,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {PayTradeService}
* @memberof DefaultBase
*/
public appEntityService: PayTradeService = new PayTradeService({ $store: this.$store });
public appEntityService: PayTradeEntityService = new PayTradeEntityService({ $store: this.$store });
......
......@@ -100,7 +100,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import PayTradeService from '@/service/pay-trade/pay-trade-service';
import PayTradeEntityService from '@/service/pay-trade/pay-trade-service';
import MainService from './main-form-service';
import PayTradeUIService from '@/uiservice/pay-trade/pay-trade-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -191,7 +191,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {PayTradeService}
* @memberof MainBase
*/
public appEntityService: PayTradeService = new PayTradeService({ $store: this.$store });
public appEntityService: PayTradeEntityService = new PayTradeEntityService({ $store: this.$store });
......@@ -442,7 +442,16 @@ export default class MainBase extends Vue implements ControlInterface {
*
* @memberof MainBase
*/
public errorMessages: Array<any> = [];
public errorMessages: Array<any> = [];
/**
* 应用状态事件
*
* @public
* @type {(Subscription | undefined)}
* @memberof MainBase
*/
public appStateEvent: Subscription | undefined;
/**
* 设置表单项错误提示信息
......@@ -1281,6 +1290,9 @@ export default class MainBase extends Vue implements ControlInterface {
if (this.dataChangEvent) {
this.dataChangEvent.unsubscribe();
}
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
}
/**
......
......@@ -10,6 +10,7 @@
:cell-class-name="getCellClassName"
max-height="items.length > 0 ? 'calc(100%-50px)' : '100%'"
@row-click="rowClick($event)"
@cell-click="cellClick"
@select-all="selectAll($event)"
@select="select"
@row-class-name="onRowClassName($event)"
......@@ -130,7 +131,7 @@ import { ControlInterface } from '@/interface/control';
import { UIActionTool,Util,ViewTool } from '@/utils';
import NavDataService from '@/service/app/navdata-service';
import AppCenterService from "@service/app/app-center-service";
import PayTradeService from '@/service/pay-trade/pay-trade-service';
import PayTradeEntityService from '@/service/pay-trade/pay-trade-service';
import MainService from './main-grid-service';
import PayTradeUIService from '@/uiservice/pay-trade/pay-trade-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -220,7 +221,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {PayTradeService}
* @memberof MainBase
*/
public appEntityService: PayTradeService = new PayTradeService({ $store: this.$store });
public appEntityService: PayTradeEntityService = new PayTradeEntityService({ $store: this.$store });
......@@ -1021,7 +1022,8 @@ export default class MainBase extends Vue implements ControlInterface {
this.selections = [];
resolve(response);
}).catch((response: any) => {
if (response && response.status === 401) {
if (response && response.status != 200) {
this.$Notice.error({ title: (this.$t('app.commonWords.wrong') as string), desc: response.message});
return;
}
if (!response || !response.status || !response.data) {
......@@ -1688,6 +1690,17 @@ export default class MainBase extends Vue implements ControlInterface {
this.$emit('selectionchange', this.selections);
}
/**
* 单元格单击隐藏提示框
*
* @memberof MainBase
*/
public cellClick() {
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
if (el) {
el.style.display = 'none';
}
}
/**
* 行单击选中
......@@ -1822,6 +1835,7 @@ export default class MainBase extends Vue implements ControlInterface {
*/
public uiAction(row: any, tag: any, $event: any) {
// this.rowClick(row, true);
this.cellClick();
$event.stopPropagation();
}
......
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ibzpay-app-web
labels:
app: ibzpay-app-web
spec:
replicas: 1
selector:
matchLabels:
app: ibzpay-app-web
template:
metadata:
labels:
app: ibzpay-app-web
spec:
imagePullSecrets:
- name: aly-shanghai
containers:
- name: ibzpay-app-web
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzpay-app-web:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: data
mountPath: /app/file
volumes:
- name: data
persistentVolumeClaim:
claimName: demo-date-pvc-nfs
---
apiVersion: v1
kind: Service
metadata:
name: ibzpay-app-web
labels:
app: ibzpay-app-web
spec:
type: NodePort
ports:
- name: http
port: 8080
targetPort: 8080
nodePort: 8080
protocol: TCP
selector:
app: ibzpay-app-web
......@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
import cn.ibizlab.core.pay.domain.PayOpenAccess;
import cn.ibizlab.core.pay.filter.PayOpenAccessSearchContext;
......
......@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
import cn.ibizlab.core.pay.domain.PayTrade;
import cn.ibizlab.core.pay.filter.PayTradeSearchContext;
......
......@@ -224,9 +224,6 @@ public class PayOpenAccessServiceImpl extends ServiceImpl<PayOpenAccessMapper, P
public IPayOpenAccessService getProxyService() {
return cn.ibizlab.util.security.SpringContextHolder.getBean(this.getClass());
}
......
......@@ -257,9 +257,6 @@ public class PayTradeServiceImpl extends ServiceImpl<PayTradeMapper, PayTrade> i
public IPayTradeService getProxyService() {
return cn.ibizlab.util.security.SpringContextHolder.getBean(this.getClass());
}
......
......@@ -16,7 +16,7 @@
"fieldname":"ACCESSID" ,
"codename":"Id",
"field_logic_name":"开放平台接入标识",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -30,7 +30,7 @@
"fieldname":"ACCESSNAME" ,
"codename":"Name",
"field_logic_name":"开放平台",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -44,7 +44,7 @@
"fieldname":"OPEN_TYPE" ,
"codename":"Open_type",
"field_logic_name":"开放平台类型",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"SSCODELIST",
"dict":"OpenAccessType",
"nullable":1,
......@@ -59,7 +59,7 @@
"fieldname":"ACCESS_KEY" ,
"codename":"Access_key",
"field_logic_name":"AccessKey(AppId)",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -73,7 +73,7 @@
"fieldname":"SECRET_KEY" ,
"codename":"Secret_key",
"field_logic_name":"SecretKey(AppSecret)",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -87,7 +87,7 @@
"fieldname":"REGION_ID" ,
"codename":"Region_id",
"field_logic_name":"RegionId",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -101,7 +101,7 @@
"fieldname":"ACCESS_TOKEN" ,
"codename":"Access_token",
"field_logic_name":"管理账号token",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -115,7 +115,7 @@
"fieldname":"EXPIRES_TIME" ,
"codename":"Expires_time",
"field_logic_name":"管理账号token过期时间",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"DATETIME",
"nullable":1,
"physical_field":1,
......@@ -128,7 +128,7 @@
"fieldname":"DISABLED" ,
"codename":"Disabled",
"field_logic_name":"是否禁用",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"YESNO",
"dict":"YesNo",
"nullable":1,
......@@ -142,7 +142,7 @@
"fieldname":"REDIRECT_URI" ,
"codename":"Redirect_uri",
"field_logic_name":"RedirectURI",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -156,7 +156,7 @@
"fieldname":"NOTIFY_URL" ,
"codename":"Notify_url",
"field_logic_name":"NotifyUrl",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -170,7 +170,7 @@
"fieldname":"AGENT_ID" ,
"codename":"Agent_id",
"field_logic_name":"AGENT_ID",
"entity_name":"PayOpenAccess",
"entity_name":"PAY_OPEN_ACCESS",
"field_type":"BIGINT",
"nullable":1,
"physical_field":1,
......@@ -207,7 +207,7 @@
"fieldname":"SUBJECT" ,
"codename":"Subject",
"field_logic_name":"订单标题",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -221,7 +221,7 @@
"fieldname":"TOTALAMOUNT" ,
"codename":"Total_amount",
"field_logic_name":"订单金额",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -235,7 +235,7 @@
"fieldname":"TRADENAME" ,
"codename":"Trade_name",
"field_logic_name":"交易名称",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -249,7 +249,7 @@
"fieldname":"TRADETYPE" ,
"codename":"Trade_type",
"field_logic_name":"支付类型",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"field_type":"SSCODELIST",
"dict":"TradeType",
"nullable":1,
......@@ -264,7 +264,7 @@
"fieldname":"TRADESTATUS" ,
"codename":"Trade_status",
"field_logic_name":"支付状态",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"field_type":"SSCODELIST",
"dict":"TradeStatus",
"nullable":1,
......@@ -279,7 +279,7 @@
"fieldname":"OUTTRADENO" ,
"codename":"Out_trade_no",
"field_logic_name":"订单号",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -294,7 +294,7 @@
"fieldname":"TRADEID" ,
"codename":"Trade_id",
"field_logic_name":"交易标识",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"field_type":"TEXT",
"nullable":1,
"physical_field":1,
......@@ -308,7 +308,7 @@
"fieldname":"APPID" ,
"codename":"App_id",
"field_logic_name":"AccessKey(AppId)",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"ref_de":"PAY_OPEN_ACCESS",
"ref_field_name":"ACCESS_KEY",
"relation_name":"DER1N_PAY_TRADE_PAY_OPEN_ACCESS_ACCESSID",
......@@ -326,7 +326,7 @@
"fieldname":"ACCESSNAME" ,
"codename":"Access_name",
"field_logic_name":"支付平台",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"ref_de":"PAY_OPEN_ACCESS",
"ref_field_name":"ACCESSNAME",
"relation_name":"DER1N_PAY_TRADE_PAY_OPEN_ACCESS_ACCESSID",
......@@ -344,7 +344,7 @@
"fieldname":"ACCESSID" ,
"codename":"Access_id",
"field_logic_name":"支付平台接入标识",
"entity_name":"PayTrade",
"entity_name":"PAY_TRADE",
"ref_de":"PAY_OPEN_ACCESS",
"ref_field_name":"ACCESSID",
"relation_name":"DER1N_PAY_TRADE_PAY_OPEN_ACCESS_ACCESSID",
......
......@@ -85,7 +85,6 @@
<oracle.version>19.8.0.0</oracle.version>
<postgresql.version>42.2.6</postgresql.version>
</properties>
<dependencyManagement>
......
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ibzpay-provider-api
labels:
app: ibzpay-provider-api
spec:
replicas: 1
selector:
matchLabels:
app: ibzpay-provider-api
template:
metadata:
labels:
app: ibzpay-provider-api
spec:
imagePullSecrets:
- name: aly-shanghai
containers:
- name: ibzpay-provider-api
image: registry.cn-shanghai.aliyuncs.com/ibizsys/ibzpay-provider-api:latest
imagePullPolicy: Always
ports:
- containerPort: 8081
volumeMounts:
- name: data
mountPath: /app/file
volumes:
- name: data
persistentVolumeClaim:
claimName: demo-date-pvc-nfs
---
apiVersion: v1
kind: Service
metadata:
name: ibzpay-provider-api
labels:
app: ibzpay-provider-api
spec:
type: NodePort
ports:
- name: http
port: 8081
targetPort: 8081
nodePort: 8081
protocol: TCP
selector:
app: ibzpay-provider-api
......@@ -110,8 +110,9 @@ public class PayOpenAccessResource {
@ApiOperation(value = "获取支付平台草稿", tags = {"支付平台" }, notes = "获取支付平台草稿")
@RequestMapping(method = RequestMethod.GET, value = "/payopenaccesses/getdraft")
public ResponseEntity<PayOpenAccessDTO> getDraft() {
return ResponseEntity.status(HttpStatus.OK).body(payopenaccessMapping.toDto(payopenaccessService.getDraft(new PayOpenAccess())));
public ResponseEntity<PayOpenAccessDTO> getDraft(PayOpenAccessDTO dto) {
PayOpenAccess domain = payopenaccessMapping.toDomain(dto);
return ResponseEntity.status(HttpStatus.OK).body(payopenaccessMapping.toDto(payopenaccessService.getDraft(domain)));
}
@ApiOperation(value = "检查支付平台", tags = {"支付平台" }, notes = "检查支付平台")
......@@ -158,5 +159,6 @@ public class PayOpenAccessResource {
}
}
......@@ -110,8 +110,9 @@ public class PayTradeResource {
@ApiOperation(value = "获取支付交易草稿", tags = {"支付交易" }, notes = "获取支付交易草稿")
@RequestMapping(method = RequestMethod.GET, value = "/paytrades/getdraft")
public ResponseEntity<PayTradeDTO> getDraft() {
return ResponseEntity.status(HttpStatus.OK).body(paytradeMapping.toDto(paytradeService.getDraft(new PayTrade())));
public ResponseEntity<PayTradeDTO> getDraft(PayTradeDTO dto) {
PayTrade domain = paytradeMapping.toDomain(dto);
return ResponseEntity.status(HttpStatus.OK).body(paytradeMapping.toDto(paytradeService.getDraft(domain)));
}
@ApiOperation(value = "检查支付交易", tags = {"支付交易" }, notes = "检查支付交易")
......@@ -158,5 +159,6 @@ public class PayTradeResource {
}
}
......@@ -124,6 +124,7 @@ public class RedisCacheConfig {
container.setConnectionFactory(redisConnectionFactory);
container.addMessageListener(messageListener, RedisChannelTopic.REDIS_CACHE_DELETE_TOPIC.getChannelTopic());
container.addMessageListener(messageListener, RedisChannelTopic.REDIS_CACHE_CLEAR_TOPIC.getChannelTopic());
container.addMessageListener(messageListener, RedisChannelTopic.REDIS_CACHE_DYNAMICMODEL_TOPIC.getChannelTopic());
return container;
}
}
\ No newline at end of file
......@@ -8,6 +8,7 @@ import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.util.StringUtils;
import org.springframework.util.ObjectUtils;
import java.util.Map;
import cn.ibizlab.util.cache.cache.LayeringCache;
import cn.ibizlab.util.enums.RedisChannelTopic;
......@@ -34,20 +35,25 @@ public class RedisMessageListener extends MessageListenerAdapter {
if(result instanceof Map){
map= (Map<String, Object>) result;
}
if(StringUtils.isEmpty(map)|| (!map.containsKey("cacheName"))|| (!map.containsKey("key"))){
if(StringUtils.isEmpty(map)|| (!map.containsKey("cacheName"))){
log.debug("解析缓存数据失败,无法获取指定值!");
return ;
}
log.debug("redis消息订阅者接收到频道【{}】发布的消息。消息内容:{}", channelTopic.getChannelTopicStr(), result.toString());
String cacheName = (String) map.get("cacheName");
Object key = map.get("key");
Cache cache = cacheManager.getCache(cacheName);// 根据缓存名称获取多级缓存
if (cache != null && cache instanceof LayeringCache) { // 判断缓存是否是多级缓存
switch (channelTopic) {
case REDIS_CACHE_DELETE_TOPIC: // 获取一级缓存,并删除一级缓存数据
((LayeringCache) cache).getFirstCache().evict(key);
((LayeringCache) cache).getSecondCache().evict(key);
log.debug("同步删除缓存{}数据,key:{},", cacheName, key.toString());
Object cacheKey = map.get("key");
if(!ObjectUtils.isEmpty(cacheKey)){
((LayeringCache) cache).getFirstCache().evict(cacheKey);
((LayeringCache) cache).getSecondCache().evict(cacheKey);
log.debug("同步删除缓存{}数据,key:{},", cacheName, cacheKey.toString());
}
else{
log.debug("同步删除缓存失败,{}缓存键值为空!",cacheName);
}
break;
case REDIS_CACHE_CLEAR_TOPIC:// 获取一级缓存,并删除一级缓存数据
((LayeringCache) cache).getFirstCache().clear();
......
......@@ -2,6 +2,8 @@ package cn.ibizlab.util.client;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
public class IBZLiteFallback implements IBZLiteFeignClient {
......@@ -10,4 +12,5 @@ public class IBZLiteFallback implements IBZLiteFeignClient {
public Boolean syncSysModel(JSONObject system) {
return null;
}
}
......@@ -3,6 +3,8 @@ package cn.ibizlab.util.client;
import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@FeignClient(value = "${ibiz.ref.service.lite:ibzlite-api}",contextId = "lite",fallback = IBZLiteFallback.class)
public interface IBZLiteFeignClient
......@@ -14,4 +16,5 @@ public interface IBZLiteFeignClient
*/
@PostMapping("/lite/syncsysmodel")
Boolean syncSysModel(@RequestBody JSONObject system);
}
......@@ -6,7 +6,8 @@ import org.springframework.data.redis.listener.ChannelTopic;
*/
public enum RedisChannelTopic {
REDIS_CACHE_DELETE_TOPIC("redis:cache:delete:topic1", "删除redis缓存消息频道"),
REDIS_CACHE_CLEAR_TOPIC("redis:cache:clear:topic2", "清空redis缓存消息频道");
REDIS_CACHE_CLEAR_TOPIC("redis:cache:clear:topic2", "清空redis缓存消息频道"),
REDIS_CACHE_DYNAMICMODEL_TOPIC("redis:cache:dynamicmodel:topic3", "动态模型频道");
String channelTopic;
String label;
......
......@@ -293,7 +293,7 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
Map<String,String> permissionFiled=new HashMap<>();
String orgField="orgid"; //组织属性
String orgDeptField="orgsecid"; //部门属性
String orgDeptField="orgsectorid"; //部门属性
String createManField="createman"; //创建人属性
DEFieldCacheMap.getFieldMap(entityBase.getClass().getName());
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册