提交 7375987d 编写于 作者: sq3536's avatar sq3536

Merge remote-tracking branch 'origin/master'

......@@ -175,6 +175,14 @@
"viewname": "MetaEntityPickupGridView",
"viewtag": "5c14ceb58f4392849324f2a6dc13eac2"
},
"dynamicmodelconfiggridview": {
"title": "动态模型配置表格视图",
"caption": "动态模型配置",
"viewtype": "DEGRIDVIEW",
"viewmodule": "lite",
"viewname": "DynamicModelConfigGridView",
"viewtag": "60de3991ba0f10d3baf57a55c43b69ee"
},
"dstsystempickupgridview": {
"title": "系统选择表格视图",
"caption": "系统",
......@@ -247,6 +255,14 @@
"viewname": "MetaEntityGridView",
"viewtag": "88894333da0e2e0f7a556ecabf7b48ab"
},
"dynamicmodelconfigeditview": {
"title": "动态模型配置编辑视图",
"caption": "动态模型配置",
"viewtype": "DEEDITVIEW",
"viewmodule": "lite",
"viewname": "DynamicModelConfigEditView",
"viewtag": "8ea3fd15b81f812ae55aa5cc6be9975a"
},
"dstconfigeditview": {
"title": "配置编辑视图",
"caption": "配置",
......
......@@ -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);
......
......@@ -48,6 +48,7 @@ export class AuthServiceRegister {
this.allAuthService.set('dstapi', () => import('@/authservice/dst-api/dst-api-auth-service'));
this.allAuthService.set('dstrouter', () => import('@/authservice/dst-router/dst-router-auth-service'));
this.allAuthService.set('dstconfig', () => import('@/authservice/dst-config/dst-config-auth-service'));
this.allAuthService.set('dynamicmodelconfig', () => import('@/authservice/dynamic-model-config/dynamic-model-config-auth-service'));
this.allAuthService.set('metamodel', () => import('@/authservice/meta-model/meta-model-auth-service'));
this.allAuthService.set('metamodule', () => import('@/authservice/meta-module/meta-module-auth-service'));
this.allAuthService.set('dstdatasource', () => import('@/authservice/dst-data-source/dst-data-source-auth-service'));
......
import AuthService from '../auth-service';
/**
* 动态模型配置权限服务对象基类
*
* @export
* @class DynamicModelConfigAuthServiceBase
* @extends {AuthService}
*/
export default class DynamicModelConfigAuthServiceBase extends AuthService {
/**
* Creates an instance of DynamicModelConfigAuthServiceBase.
*
* @param {*} [opts={}]
* @memberof DynamicModelConfigAuthServiceBase
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 根据当前数据获取实体操作标识
*
* @param {*} mainSateOPPrivs 传入数据操作标识
* @returns {any}
* @memberof DynamicModelConfigAuthServiceBase
*/
public getOPPrivs(mainSateOPPrivs:any):any{
let curDefaultOPPrivs:any = this.getSysOPPrivs();
let copyDefaultOPPrivs:any = JSON.parse(JSON.stringify(curDefaultOPPrivs));
if(mainSateOPPrivs){
Object.assign(curDefaultOPPrivs,mainSateOPPrivs);
}
// 统一资源优先
Object.keys(curDefaultOPPrivs).forEach((name:string) => {
if(this.sysOPPrivsMap.get(name) && copyDefaultOPPrivs[name] === 0){
curDefaultOPPrivs[name] = copyDefaultOPPrivs[name];
}
});
return curDefaultOPPrivs;
}
}
\ No newline at end of file
import DynamicModelConfigAuthServiceBase from './dynamic-model-config-auth-service-base';
/**
* 动态模型配置权限服务对象
*
* @export
* @class DynamicModelConfigAuthService
* @extends {DynamicModelConfigAuthServiceBase}
*/
export default class DynamicModelConfigAuthService extends DynamicModelConfigAuthServiceBase {
/**
* Creates an instance of DynamicModelConfigAuthService.
*
* @param {*} [opts={}]
* @memberof DynamicModelConfigAuthService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -116,6 +116,7 @@ export default class DstAppList {
_items.push(itemdata);
});
}
......
......@@ -116,6 +116,7 @@ export default class DstSystemList {
_items.push(itemdata);
});
}
......
.app-icon-menus{
display: flex;
.el-card{
margin-left: 16px;
.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
<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%;
......
.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
......
......@@ -7,6 +7,7 @@ import dstview_en_US from '@locale/lanres/entities/dst-view/dst-view_en_US';
import dstapi_en_US from '@locale/lanres/entities/dst-api/dst-api_en_US';
import dstrouter_en_US from '@locale/lanres/entities/dst-router/dst-router_en_US';
import dstconfig_en_US from '@locale/lanres/entities/dst-config/dst-config_en_US';
import dynamicmodelconfig_en_US from '@locale/lanres/entities/dynamic-model-config/dynamic-model-config_en_US';
import metamodel_en_US from '@locale/lanres/entities/meta-model/meta-model_en_US';
import metamodule_en_US from '@locale/lanres/entities/meta-module/meta-module_en_US';
import dstdatasource_en_US from '@locale/lanres/entities/dst-data-source/dst-data-source_en_US';
......@@ -155,6 +156,7 @@ function getAppLocale(){
menuitem4: commonLogic.appcommonhandle("组件",null),
menuitem11: commonLogic.appcommonhandle("配置项",null),
menuitem10: commonLogic.appcommonhandle("大屏",null),
menuitem14: commonLogic.appcommonhandle("动态模型",null),
},
},
formpage:{
......@@ -259,6 +261,7 @@ function getAppLocale(){
dstapi: dstapi_en_US(),
dstrouter: dstrouter_en_US(),
dstconfig: dstconfig_en_US(),
dynamicmodelconfig: dynamicmodelconfig_en_US(),
metamodel: metamodel_en_US(),
metamodule: metamodule_en_US(),
dstdatasource: dstdatasource_en_US(),
......
......@@ -7,6 +7,7 @@ import dstview_zh_CN from '@locale/lanres/entities/dst-view/dst-view_zh_CN';
import dstapi_zh_CN from '@locale/lanres/entities/dst-api/dst-api_zh_CN';
import dstrouter_zh_CN from '@locale/lanres/entities/dst-router/dst-router_zh_CN';
import dstconfig_zh_CN from '@locale/lanres/entities/dst-config/dst-config_zh_CN';
import dynamicmodelconfig_zh_CN from '@locale/lanres/entities/dynamic-model-config/dynamic-model-config_zh_CN';
import metamodel_zh_CN from '@locale/lanres/entities/meta-model/meta-model_zh_CN';
import metamodule_zh_CN from '@locale/lanres/entities/meta-module/meta-module_zh_CN';
import dstdatasource_zh_CN from '@locale/lanres/entities/dst-data-source/dst-data-source_zh_CN';
......@@ -155,6 +156,7 @@ function getAppLocale(){
menuitem4: commonLogic.appcommonhandle("组件",null),
menuitem11: commonLogic.appcommonhandle("配置项",null),
menuitem10: commonLogic.appcommonhandle("大屏",null),
menuitem14: commonLogic.appcommonhandle("动态模型",null),
},
},
formpage:{
......@@ -258,6 +260,7 @@ function getAppLocale(){
dstapi: dstapi_zh_CN(),
dstrouter: dstrouter_zh_CN(),
dstconfig: dstconfig_zh_CN(),
dynamicmodelconfig: dynamicmodelconfig_zh_CN(),
metamodel: metamodel_zh_CN(),
metamodule: metamodule_zh_CN(),
dstdatasource: dstdatasource_zh_CN(),
......
import DynamicModelConfig_en_US_Base from './dynamic-model-config_en_US_base';
function getLocaleResource(){
const DynamicModelConfig_en_US_OwnData = {};
const targetData = Object.assign(DynamicModelConfig_en_US_Base(), DynamicModelConfig_en_US_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: {
configid: commonLogic.appcommonhandle("ID",null),
configname: commonLogic.appcommonhandle("名称",null),
modelfile: commonLogic.appcommonhandle("文件",null),
status: commonLogic.appcommonhandle("状态",null),
},
views: {
gridview: {
caption: commonLogic.appcommonhandle("动态模型配置",null),
title: commonLogic.appcommonhandle("动态模型配置表格视图",null),
},
editview: {
caption: commonLogic.appcommonhandle("动态模型配置",null),
title: commonLogic.appcommonhandle("动态模型配置编辑视图",null),
},
},
main_form: {
details: {
group1: commonLogic.appcommonhandle("动态模型配置基本信息",null),
formpage1: commonLogic.appcommonhandle("基本信息",null),
srforikey: commonLogic.appcommonhandle("",null),
srfkey: commonLogic.appcommonhandle("ID",null),
srfmajortext: commonLogic.appcommonhandle("名称",null),
srftempmode: commonLogic.appcommonhandle("",null),
srfuf: commonLogic.appcommonhandle("",null),
srfdeid: commonLogic.appcommonhandle("",null),
srfsourcekey: commonLogic.appcommonhandle("",null),
configname: commonLogic.appcommonhandle("名称",null),
modelfile: commonLogic.appcommonhandle("文件",null),
status: commonLogic.appcommonhandle("状态",null),
configid: commonLogic.appcommonhandle("ID",null),
},
uiactions: {
},
},
main_grid: {
columns: {
configname: commonLogic.appcommonhandle("名称",null),
status: commonLogic.appcommonhandle("状态",null),
},
nodata:commonLogic.appcommonhandle("",null),
uiactions: {
},
},
default_searchform: {
details: {
formpage1: commonLogic.appcommonhandle("常规条件",null),
},
uiactions: {
},
},
gridviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("New",null),
tip: commonLogic.appcommonhandle("New",null),
},
tbitem4: {
caption: commonLogic.appcommonhandle("Edit",null),
tip: commonLogic.appcommonhandle("Edit {0}",null),
},
tbitem6: {
caption: commonLogic.appcommonhandle("Copy",null),
tip: commonLogic.appcommonhandle("Copy {0}",null),
},
tbitem7: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem8: {
caption: commonLogic.appcommonhandle("Remove",null),
tip: commonLogic.appcommonhandle("Remove {0}",null),
},
tbitem9: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem13: {
caption: commonLogic.appcommonhandle("Export",null),
tip: commonLogic.appcommonhandle("Export {0} Data To Excel",null),
},
tbitem10: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem16: {
caption: commonLogic.appcommonhandle("其它",null),
tip: commonLogic.appcommonhandle("其它",null),
},
tbitem21: {
caption: commonLogic.appcommonhandle("Export Data Model",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("Filter",null),
tip: commonLogic.appcommonhandle("Filter",null),
},
tbitem18: {
caption: commonLogic.appcommonhandle("Help",null),
tip: commonLogic.appcommonhandle("Help",null),
},
},
editviewtoolbar_toolbar: {
tbitem3: {
caption: commonLogic.appcommonhandle("Save",null),
tip: commonLogic.appcommonhandle("Save",null),
},
tbitem6: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem7: {
caption: commonLogic.appcommonhandle("Remove And Close",null),
tip: commonLogic.appcommonhandle("Remove And Close Window",null),
},
tbitem8: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem12: {
caption: commonLogic.appcommonhandle("New",null),
tip: commonLogic.appcommonhandle("New",null),
},
tbitem13: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem14: {
caption: commonLogic.appcommonhandle("Copy",null),
tip: commonLogic.appcommonhandle("Copy {0}",null),
},
tbitem16: {
caption: commonLogic.appcommonhandle("-",null),
tip: commonLogic.appcommonhandle("",null),
},
tbitem18: {
caption: commonLogic.appcommonhandle("其它",null),
tip: commonLogic.appcommonhandle("其它",null),
},
tbitem5: {
caption: commonLogic.appcommonhandle("Save And Close",null),
tip: commonLogic.appcommonhandle("Save And Close Window",null),
},
tbitem4: {
caption: commonLogic.appcommonhandle("Save And New",null),
tip: commonLogic.appcommonhandle("Save And New",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),
},
tbitem22: {
caption: commonLogic.appcommonhandle("Help",null),
tip: commonLogic.appcommonhandle("Help",null),
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
import DynamicModelConfig_zh_CN_Base from './dynamic-model-config_zh_CN_base';
function getLocaleResource(){
const DynamicModelConfig_zh_CN_OwnData = {};
const targetData = Object.assign(DynamicModelConfig_zh_CN_Base(), DynamicModelConfig_zh_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: {
configid: commonLogic.appcommonhandle("ID",null),
configname: commonLogic.appcommonhandle("名称",null),
modelfile: commonLogic.appcommonhandle("文件",null),
status: commonLogic.appcommonhandle("状态",null),
},
views: {
gridview: {
caption: commonLogic.appcommonhandle("动态模型配置",null),
title: commonLogic.appcommonhandle("动态模型配置表格视图",null),
},
editview: {
caption: commonLogic.appcommonhandle("动态模型配置",null),
title: commonLogic.appcommonhandle("动态模型配置编辑视图",null),
},
},
main_form: {
details: {
group1: commonLogic.appcommonhandle("动态模型配置基本信息",null),
formpage1: commonLogic.appcommonhandle("基本信息",null),
srforikey: commonLogic.appcommonhandle("",null),
srfkey: commonLogic.appcommonhandle("ID",null),
srfmajortext: commonLogic.appcommonhandle("名称",null),
srftempmode: commonLogic.appcommonhandle("",null),
srfuf: commonLogic.appcommonhandle("",null),
srfdeid: commonLogic.appcommonhandle("",null),
srfsourcekey: commonLogic.appcommonhandle("",null),
configname: commonLogic.appcommonhandle("名称",null),
modelfile: commonLogic.appcommonhandle("文件",null),
status: commonLogic.appcommonhandle("状态",null),
configid: commonLogic.appcommonhandle("ID",null),
},
uiactions: {
},
},
main_grid: {
columns: {
configname: commonLogic.appcommonhandle("名称",null),
status: commonLogic.appcommonhandle("状态",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),
},
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),
},
tbitem18: {
caption: commonLogic.appcommonhandle("其它",null),
tip: commonLogic.appcommonhandle("其它",null),
},
tbitem5: {
caption: commonLogic.appcommonhandle("保存并关闭",null),
tip: commonLogic.appcommonhandle("保存并关闭",null),
},
tbitem4: {
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),
},
tbitem22: {
caption: commonLogic.appcommonhandle("帮助",null),
tip: commonLogic.appcommonhandle("帮助",null),
},
},
};
return data;
}
export default getLocaleResourceBase;
\ No newline at end of file
......@@ -243,6 +243,24 @@ mock.onGet('v7/lite-indexappmenu').reply((config: any) => {
textcls: '',
appfunctag: 'AppFunc10',
resourcetag: '',
},
{
id: 'A51B0224-E5AB-4221-82CA-CAF4CB5BA509',
name: 'menuitem14',
text: '动态模型',
type: 'MENUITEM',
counterid: '',
tooltip: '动态模型',
expanded: false,
separator: false,
hidden: false,
hidesidebar: false,
opendefault: false,
iconcls: '',
icon: '',
textcls: '',
appfunctag: 'AppFunc14',
resourcetag: '',
},
],
}];
......
......@@ -16,6 +16,7 @@ import './entity/dst-views/dst-views';
import './entity/dst-apis/dst-apis';
import './entity/dst-routers/dst-routers';
import './entity/dst-configs/dst-configs';
import './entity/dynamic-model-configs/dynamic-model-configs';
import './entity/meta-models/meta-models';
import './entity/meta-modules/meta-modules';
import './entity/dst-data-sources/dst-data-sources';
......
......@@ -183,6 +183,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "MetaEntityPickupGridView",
"viewtag": "5c14ceb58f4392849324f2a6dc13eac2"
},
"dynamicmodelconfiggridview": {
"title": "动态模型配置表格视图",
"caption": "动态模型配置",
"viewtype": "DEGRIDVIEW",
"viewmodule": "lite",
"viewname": "DynamicModelConfigGridView",
"viewtag": "60de3991ba0f10d3baf57a55c43b69ee"
},
"dstsystempickupgridview": {
"title": "系统选择表格视图",
"caption": "系统",
......@@ -255,6 +263,14 @@ mock.onGet('./assets/json/view-config.json').reply((config: any) => {
"viewname": "MetaEntityGridView",
"viewtag": "88894333da0e2e0f7a556ecabf7b48ab"
},
"dynamicmodelconfigeditview": {
"title": "动态模型配置编辑视图",
"caption": "动态模型配置",
"viewtype": "DEEDITVIEW",
"viewmodule": "lite",
"viewname": "DynamicModelConfigEditView",
"viewtag": "8ea3fd15b81f812ae55aa5cc6be9975a"
},
"dstconfigeditview": {
"title": "配置编辑视图",
"caption": "配置",
......
......@@ -1375,7 +1375,7 @@ export default class BladeVisualEditViewBase extends Vue {
Object.assign(data, { bladevisual: args[0].bladevisual });
}
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="bladevisualgridview"></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>
......@@ -1452,7 +1452,7 @@ export default class BladeVisualGridViewBase extends Vue {
Object.assign(data, { bladevisual: args[0].bladevisual });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstAPIEditViewBase extends Vue {
Object.assign(data, { dstapi: args[0].dstapi });
}
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="dstapigridview"></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>
......@@ -1488,7 +1488,7 @@ export default class DstAPIGridViewBase extends Vue {
Object.assign(data, { dstapi: args[0].dstapi });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstAppEditViewBase extends Vue {
Object.assign(data, { dstapp: args[0].dstapp });
}
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="dstappgridview"></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>
......@@ -1488,7 +1488,7 @@ export default class DstAppGridViewBase extends Vue {
Object.assign(data, { dstapp: args[0].dstapp });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstComponentEditViewBase extends Vue {
Object.assign(data, { dstcomponent: args[0].dstcomponent });
}
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="dstcomponentgridview"></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>
......@@ -1462,7 +1462,7 @@ export default class DstComponentGridViewBase extends Vue {
Object.assign(data, { dstcomponent: args[0].dstcomponent });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstConfigEditViewBase extends Vue {
Object.assign(data, { dstconfig: args[0].dstconfig });
}
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="dstconfiggridview"></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>
......@@ -1478,7 +1478,7 @@ export default class DstConfigGridViewBase extends Vue {
Object.assign(data, { dstconfig: args[0].dstconfig });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstDataSourceEditViewBase extends Vue {
Object.assign(data, { dstdatasource: args[0].dstdatasource });
}
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="dstdatasourcegridview"></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'>
<app-alert-group position='TOP' :context="context" :viewparam="viewparams" infoGroup='VMGroup' viewname='dstdatasourcegridview'></app-alert-group> </div>
......@@ -1521,7 +1521,7 @@ export default class DstDataSourceGridViewBase extends Vue {
Object.assign(data, { dstdatasource: args[0].dstdatasource });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstMicroserviceEditViewBase extends Vue {
Object.assign(data, { dstmicroservice: args[0].dstmicroservice });
}
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="dstmicroservicegridview"></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>
......@@ -1488,7 +1488,7 @@ export default class DstMicroserviceGridViewBase extends Vue {
Object.assign(data, { dstmicroservice: args[0].dstmicroservice });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstRouterEditViewBase extends Vue {
Object.assign(data, { dstrouter: args[0].dstrouter });
}
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="dstroutergridview"></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>
......@@ -1488,7 +1488,7 @@ export default class DstRouterGridViewBase extends Vue {
Object.assign(data, { dstrouter: args[0].dstrouter });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstSystemEditViewBase extends Vue {
Object.assign(data, { dstsystem: args[0].dstsystem });
}
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="dstsystemgridview"></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>
......@@ -1478,7 +1478,7 @@ export default class DstSystemGridViewBase extends Vue {
Object.assign(data, { dstsystem: args[0].dstsystem });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class DstViewEditViewBase extends Vue {
Object.assign(data, { dstview: args[0].dstview });
}
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="dstviewgridview"></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>
......@@ -1462,7 +1462,7 @@ export default class DstViewGridViewBase extends Vue {
Object.assign(data, { dstview: args[0].dstview });
}
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});
......
.view-card {
>.ivu-card-extra {
top: 5px;
right: 0px;
}
}
.dynamic-model-config-edit-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import DynamicModelConfigEditViewBase from './dynamic-model-config-edit-view-base.vue';
import view_form from '@widgets/dynamic-model-config/main-form/main-form.vue';
@Component({
components: {
view_form,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
if(!Object.is(vm.navModel,"route")){
vm.initNavDataWithTab(vm.viewCacheData);
}
vm.$store.commit('addCurPageViewtag', { fullPath: to.fullPath, viewtag: vm.viewtag });
});
},
})
export default class DynamicModelConfigEditView extends DynamicModelConfigEditViewBase {
}
</script>
\ No newline at end of file
.dynamic-model-config-grid-view{
position: relative;
}
.toolbar-container {
button {
margin: 6px 0px 4px 4px;
.caption {
margin-left: 4px;
}
}
.seperator {
color: #dcdee2;
margin: 0 0px 0 4px;
}
}
// this is less
<script lang='tsx'>
import { Component } from 'vue-property-decorator';
import DynamicModelConfigGridViewBase from './dynamic-model-config-grid-view-base.vue';
import view_grid from '@widgets/dynamic-model-config/main-grid/main-grid.vue';
import view_searchform from '@widgets/dynamic-model-config/default-searchform/default-searchform.vue';
@Component({
components: {
view_grid,
view_searchform,
},
beforeRouteEnter: (to: any, from: any, next: any) => {
next((vm: any) => {
if(!Object.is(vm.navModel,"route")){
vm.initNavDataWithTab(vm.viewCacheData);
}
vm.$store.commit('addCurPageViewtag', { fullPath: to.fullPath, viewtag: vm.viewtag });
});
},
})
export default class DynamicModelConfigGridView extends DynamicModelConfigGridViewBase {
}
</script>
\ No newline at end of file
......@@ -23,6 +23,7 @@ export const PageComponents = {
Vue.component('meta-module-grid-view', () => import('@pages/lite/meta-module-grid-view/meta-module-grid-view.vue'));
Vue.component('blade-visual-grid-view', () => import('@pages/avuedata/blade-visual-grid-view/blade-visual-grid-view.vue'));
Vue.component('meta-field-pickup-view', () => import('@pages/lite/meta-field-pickup-view/meta-field-pickup-view.vue'));
Vue.component('dynamic-model-config-edit-view', () => import('@pages/lite/dynamic-model-config-edit-view/dynamic-model-config-edit-view.vue'));
Vue.component('meta-relationship-edit-view', () => import('@pages/lite/meta-relationship-edit-view/meta-relationship-edit-view.vue'));
Vue.component('dst-data-source-pickup-view', () => import('@pages/lite/dst-data-source-pickup-view/dst-data-source-pickup-view.vue'));
Vue.component('meta-field-edit-grid-view', () => import('@pages/lite/meta-field-edit-grid-view/meta-field-edit-grid-view.vue'));
......@@ -37,6 +38,7 @@ export const PageComponents = {
Vue.component('dst-component-edit-view', () => import('@pages/lite/dst-component-edit-view/dst-component-edit-view.vue'));
Vue.component('meta-module-pickup-grid-view', () => import('@pages/lite/meta-module-pickup-grid-view/meta-module-pickup-grid-view.vue'));
Vue.component('dst-router-edit-view', () => import('@pages/lite/dst-router-edit-view/dst-router-edit-view.vue'));
Vue.component('dynamic-model-config-grid-view', () => import('@pages/lite/dynamic-model-config-grid-view/dynamic-model-config-grid-view.vue'));
Vue.component('dst-app-grid-view', () => import('@pages/lite/dst-app-grid-view/dst-app-grid-view.vue'));
Vue.component('dst-view-grid-view', () => import('@pages/lite/dst-view-grid-view/dst-view-grid-view.vue'));
Vue.component('meta-entity-grid-view', () => import('@pages/lite/meta-entity-grid-view/meta-entity-grid-view.vue'));
......
......@@ -665,6 +665,20 @@ const router = new Router({
},
component: () => import('@pages/lite/meta-field-pickup-view/meta-field-pickup-view.vue'),
},
{
path: 'dynamicmodelconfigs/:dynamicmodelconfig?/editview/:editview?',
meta: {
caption: 'entities.dynamicmodelconfig.views.editview.caption',
info:'',
parameters: [
{ pathName: 'liteindex', parameterName: 'liteindex' },
{ pathName: 'dynamicmodelconfigs', parameterName: 'dynamicmodelconfig' },
{ pathName: 'editview', parameterName: 'editview' },
],
requireAuth: true,
},
component: () => import('@pages/lite/dynamic-model-config-edit-view/dynamic-model-config-edit-view.vue'),
},
{
path: 'dstsystems/:dstsystem?/metaentities/:metaentity?/metarelationships/:metarelationship?/editview/:editview?',
meta: {
......@@ -1123,6 +1137,20 @@ const router = new Router({
},
component: () => import('@pages/lite/dst-router-edit-view/dst-router-edit-view.vue'),
},
{
path: 'dynamicmodelconfigs/:dynamicmodelconfig?/gridview/:gridview?',
meta: {
caption: 'entities.dynamicmodelconfig.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'liteindex', parameterName: 'liteindex' },
{ pathName: 'dynamicmodelconfigs', parameterName: 'dynamicmodelconfig' },
{ pathName: 'gridview', parameterName: 'gridview' },
],
requireAuth: true,
},
component: () => import('@pages/lite/dynamic-model-config-grid-view/dynamic-model-config-grid-view.vue'),
},
{
path: 'dstsystems/:dstsystem?/dstapps/:dstapp?/gridview/:gridview?',
meta: {
......@@ -1967,6 +1995,19 @@ const router = new Router({
},
component: () => import('@pages/lite/meta-entity-pickup-grid-view/meta-entity-pickup-grid-view.vue'),
},
{
path: '/dynamicmodelconfigs/:dynamicmodelconfig?/gridview/:gridview?',
meta: {
caption: 'entities.dynamicmodelconfig.views.gridview.caption',
info:'',
parameters: [
{ pathName: 'dynamicmodelconfigs', parameterName: 'dynamicmodelconfig' },
{ pathName: 'gridview', parameterName: 'gridview' },
],
requireAuth: true,
},
component: () => import('@pages/lite/dynamic-model-config-grid-view/dynamic-model-config-grid-view.vue'),
},
{
path: '/dstdatasources/:dstdatasource?/pickupview/:pickupview?',
meta: {
......@@ -2160,6 +2201,19 @@ const router = new Router({
},
component: () => import('@pages/lite/meta-entity-grid-view/meta-entity-grid-view.vue'),
},
{
path: '/dynamicmodelconfigs/:dynamicmodelconfig?/editview/:editview?',
meta: {
caption: 'entities.dynamicmodelconfig.views.editview.caption',
info:'',
parameters: [
{ pathName: 'dynamicmodelconfigs', parameterName: 'dynamicmodelconfig' },
{ pathName: 'editview', parameterName: 'editview' },
],
requireAuth: true,
},
component: () => import('@pages/lite/dynamic-model-config-edit-view/dynamic-model-config-edit-view.vue'),
},
{
path: '/dstconfigs/:dstconfig?/editview/:editview?',
meta: {
......
......@@ -1375,7 +1375,7 @@ export default class MetaDataSetEditViewBase extends Vue {
Object.assign(data, { metadataset: args[0].metadataset });
}
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});
......
......@@ -1514,7 +1514,7 @@ export default class MetaDataSetGridViewBase extends Vue {
Object.assign(data, { metadataset: args[0].metadataset });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class MetaEntityEditViewBase extends Vue {
Object.assign(data, { metaentity: args[0].metaentity });
}
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="metaentitygridview"></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>
......@@ -1505,7 +1505,7 @@ export default class MetaEntityGridViewBase extends Vue {
Object.assign(data, { metaentity: args[0].metaentity });
}
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});
......
......@@ -1514,7 +1514,7 @@ export default class MetaFieldEditGridViewBase extends Vue {
Object.assign(data, { metafield: args[0].metafield });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class MetaFieldEditViewBase extends Vue {
Object.assign(data, { metafield: args[0].metafield });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class MetaModelEditViewBase extends Vue {
Object.assign(data, { metamodel: args[0].metamodel });
}
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="metamodelgridview"></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>
......@@ -1452,7 +1452,7 @@ export default class MetaModelGridViewBase extends Vue {
Object.assign(data, { metamodel: args[0].metamodel });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class MetaModuleEditViewBase extends Vue {
Object.assign(data, { metamodule: args[0].metamodule });
}
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="metamodulegridview"></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>
......@@ -1478,7 +1478,7 @@ export default class MetaModuleGridViewBase extends Vue {
Object.assign(data, { metamodule: args[0].metamodule });
}
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});
......
......@@ -1514,7 +1514,7 @@ export default class MetaRelationshipEditGridViewBase extends Vue {
Object.assign(data, { metarelationship: args[0].metarelationship });
}
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});
......
......@@ -1375,7 +1375,7 @@ export default class MetaRelationshipEditViewBase extends Vue {
Object.assign(data, { metarelationship: args[0].metarelationship });
}
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});
......
......@@ -320,14 +320,14 @@ export default class DstComponentServiceBase extends EntityService {
public async SyncBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dstsystem && context.dstapp && true){
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/dstapps/${context.dstapp}/dstcomponent/syncbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/dstapps/${context.dstapp}/dstcomponents/syncbatch`,tempData,isloading);
}
if(context.dstapp && true){
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstapps/${context.dstapp}/dstcomponent/syncbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstapps/${context.dstapp}/dstcomponents/syncbatch`,tempData,isloading);
}
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstcomponent/syncbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstcomponents/syncbatch`,tempData,isloading);
}
/**
......
......@@ -178,7 +178,7 @@ export default class DstConfigServiceBase extends EntityService {
*/
public async ResetBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstconfig/resetbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstconfigs/resetbatch`,tempData,isloading);
}
/**
......
......@@ -164,7 +164,7 @@ export default class DstDataSourceServiceBase extends EntityService {
*/
public async BuildDSBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstdatasource/builddsbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstdatasources/builddsbatch`,tempData,isloading);
}
/**
......@@ -206,7 +206,7 @@ export default class DstDataSourceServiceBase extends EntityService {
*/
public async InitDSBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstdatasource/initdsbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstdatasources/initdsbatch`,tempData,isloading);
}
/**
......
......@@ -181,7 +181,7 @@ export default class DstSystemServiceBase extends EntityService {
*/
public async InitDefaultDataSourceBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstsystem/initdefaultdatasourcebatch`,tempData,isloading);
return await Http.getInstance().post(`/dstsystems/initdefaultdatasourcebatch`,tempData,isloading);
}
/**
......@@ -226,7 +226,7 @@ export default class DstSystemServiceBase extends EntityService {
*/
public async SyncSysModelBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstsystem/syncsysmodelbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstsystems/syncsysmodelbatch`,tempData,isloading);
}
/**
......
import { Http,Util } from '@/utils';
import EntityService from '../entity-service';
/**
* 动态模型配置服务对象基类
*
* @export
* @class DynamicModelConfigServiceBase
* @extends {EntityServie}
*/
export default class DynamicModelConfigServiceBase extends EntityService {
/**
* Creates an instance of DynamicModelConfigServiceBase.
*
* @param {*} [opts={}]
* @memberof DynamicModelConfigServiceBase
*/
constructor(opts: any = {}) {
super(opts);
}
/**
* 初始化基础数据
*
* @memberof DynamicModelConfigServiceBase
*/
public initBasicData(){
this.APPLYDEKEY ='dynamicmodelconfig';
this.APPDEKEY = 'configid';
this.APPDENAME = 'dynamicmodelconfigs';
this.APPDETEXT = 'configname';
this.APPNAME = 'web';
this.SYSTEMNAME = 'ibzlite';
}
// 实体接口
/**
* Select接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async Select(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = Http.getInstance().get(`/dynamicmodelconfigs/${context.dynamicmodelconfig}/select`,isloading);
return res;
}
/**
* Create接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async Create(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
if(!data.srffrontuf || data.srffrontuf !== "1"){
data[this.APPDEKEY] = null;
}
if(data.srffrontuf){
delete data.srffrontuf;
}
let tempContext:any = JSON.parse(JSON.stringify(context));
let res:any = await Http.getInstance().post(`/dynamicmodelconfigs`,data,isloading);
return res;
}
/**
* Update接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async Update(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().put(`/dynamicmodelconfigs/${context.dynamicmodelconfig}`,data,isloading);
return res;
}
/**
* Remove接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async Remove(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = Http.getInstance().delete(`/dynamicmodelconfigs/${context.dynamicmodelconfig}`,isloading);
return res;
}
/**
* Get接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async Get(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = await Http.getInstance().get(`/dynamicmodelconfigs/${context.dynamicmodelconfig}`,isloading);
return res;
}
/**
* GetDraft接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async GetDraft(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = await Http.getInstance().get(`/dynamicmodelconfigs/getdraft`,isloading);
res.data.dynamicmodelconfig = data.dynamicmodelconfig;
return res;
}
/**
* CheckKey接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async CheckKey(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let res:any = Http.getInstance().post(`/dynamicmodelconfigs/${context.dynamicmodelconfig}/checkkey`,data,isloading);
return res;
}
/**
* Save接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async Save(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let masterData:any = {};
Object.assign(data,masterData);
let res:any = await Http.getInstance().post(`/dynamicmodelconfigs/${context.dynamicmodelconfig}/save`,data,isloading);
return res;
}
/**
* FetchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async FetchDefault(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
let res:any = Http.getInstance().get(`/dynamicmodelconfigs/fetchdefault`,tempData,isloading);
return res;
}
/**
* searchDefault接口方法
*
* @param {*} [context={}]
* @param {*} [data={}]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @memberof DynamicModelConfigServiceBase
*/
public async searchDefault(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dynamicmodelconfigs/searchdefault`,tempData,isloading);
}
}
\ No newline at end of file
import { Http,Util } from '@/utils';
import DynamicModelConfigServiceBase from './dynamic-model-config-service-base';
/**
* 动态模型配置服务对象
*
* @export
* @class DynamicModelConfigService
* @extends {DynamicModelConfigServiceBase}
*/
export default class DynamicModelConfigService extends DynamicModelConfigServiceBase {
/**
* Creates an instance of DynamicModelConfigService.
*
* @param {*} [opts={}]
* @memberof DynamicModelConfigService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -48,6 +48,7 @@ export class EntityServiceRegister {
this.allEntityService.set('dstapi', () => import('@/service/dst-api/dst-api-service'));
this.allEntityService.set('dstrouter', () => import('@/service/dst-router/dst-router-service'));
this.allEntityService.set('dstconfig', () => import('@/service/dst-config/dst-config-service'));
this.allEntityService.set('dynamicmodelconfig', () => import('@/service/dynamic-model-config/dynamic-model-config-service'));
this.allEntityService.set('metamodel', () => import('@/service/meta-model/meta-model-service'));
this.allEntityService.set('metamodule', () => import('@/service/meta-module/meta-module-service'));
this.allEntityService.set('dstdatasource', () => import('@/service/dst-data-source/dst-data-source-service'));
......
......@@ -239,10 +239,10 @@ export default class MetaEntityServiceBase extends EntityService {
public async GetDefaultModelBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dstsystem && true){
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/metaentity/getdefaultmodelbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/metaentities/getdefaultmodelbatch`,tempData,isloading);
}
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/metaentity/getdefaultmodelbatch`,tempData,isloading);
return await Http.getInstance().post(`/metaentities/getdefaultmodelbatch`,tempData,isloading);
}
/**
......@@ -278,10 +278,10 @@ export default class MetaEntityServiceBase extends EntityService {
public async InitModelsBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dstsystem && true){
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/metaentity/initmodelsbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/metaentities/initmodelsbatch`,tempData,isloading);
}
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/metaentity/initmodelsbatch`,tempData,isloading);
return await Http.getInstance().post(`/metaentities/initmodelsbatch`,tempData,isloading);
}
/**
......
......@@ -164,7 +164,7 @@ export default class MetaModelServiceBase extends EntityService {
*/
public async ChangeBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/metamodel/changebatch`,tempData,isloading);
return await Http.getInstance().post(`/metamodels/changebatch`,tempData,isloading);
}
/**
......
......@@ -289,14 +289,14 @@ export default class MetaRelationshipServiceBase extends EntityService {
public async InitModelBatch(context: any = {},data: any = {}, isloading?: boolean): Promise<any> {
if(context.dstsystem && context.metaentity && true){
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/metaentities/${context.metaentity}/metarelationship/initmodelbatch`,tempData,isloading);
return await Http.getInstance().post(`/dstsystems/${context.dstsystem}/metaentities/${context.metaentity}/metarelationships/initmodelbatch`,tempData,isloading);
}
if(context.metaentity && true){
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/metaentities/${context.metaentity}/metarelationship/initmodelbatch`,tempData,isloading);
return await Http.getInstance().post(`/metaentities/${context.metaentity}/metarelationships/initmodelbatch`,tempData,isloading);
}
let tempData:any = JSON.parse(JSON.stringify(data));
return await Http.getInstance().post(`/metarelationship/initmodelbatch`,tempData,isloading);
return await Http.getInstance().post(`/metarelationships/initmodelbatch`,tempData,isloading);
}
/**
......
......@@ -202,6 +202,16 @@ export const viewstate: any = {
refviews: [
],
},
{
viewtag: '60de3991ba0f10d3baf57a55c43b69ee',
viewmodule: 'lite',
viewname: 'DynamicModelConfigGridView',
viewaction: '',
viewdatachange: false,
refviews: [
'8ea3fd15b81f812ae55aa5cc6be9975a',
],
},
{
viewtag: '7102cd4ba5ca690e5ce03127920292f5',
viewmodule: 'lite',
......@@ -268,6 +278,7 @@ export const viewstate: any = {
'd613248735503950b91cb7094b036cdc',
'f20b2b6dc4d1c75c48f5da3eca3a3274',
'16af256f35cdf891e8e04f8fe652e91b',
'60de3991ba0f10d3baf57a55c43b69ee',
'1ade7920c947bf50c32012de9962a92d',
'33ec4b7d5a31addaec9b033067520820',
'88894333da0e2e0f7a556ecabf7b48ab',
......@@ -286,6 +297,15 @@ export const viewstate: any = {
'2feae2829a80f67eb57a3335aad45d42',
],
},
{
viewtag: '8ea3fd15b81f812ae55aa5cc6be9975a',
viewmodule: 'lite',
viewname: 'DynamicModelConfigEditView',
viewaction: '',
viewdatachange: false,
refviews: [
],
},
{
viewtag: '8ee101d8fe3517d595bd6518026d1ab8',
viewmodule: 'lite',
......
......@@ -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;
......
import { Environment } from '@/environments/environment';
import { UIActionTool,Util } from '@/utils';
import UIService from '../ui-service';
import { Subject } from 'rxjs';
import DynamicModelConfigService from '@/service/dynamic-model-config/dynamic-model-config-service';
import DynamicModelConfigAuthService from '@/authservice/dynamic-model-config/dynamic-model-config-auth-service';
/**
* 动态模型配置UI服务对象基类
*
* @export
* @class DynamicModelConfigUIServiceBase
*/
export default class DynamicModelConfigUIServiceBase extends UIService {
/**
* 是否支持工作流
*
* @memberof DynamicModelConfigUIServiceBase
*/
public isEnableWorkflow:boolean = false;
/**
* 是否支持实体主状态
*
* @memberof DynamicModelConfigUIServiceBase
*/
public isEnableDEMainState:boolean = false;
/**
* 当前UI服务对应的数据服务对象
*
* @memberof DynamicModelConfigUIServiceBase
*/
public dataService:DynamicModelConfigService = new DynamicModelConfigService();
/**
* 所有关联视图
*
* @memberof DynamicModelConfigUIServiceBase
*/
public allViewMap: Map<string, Object> = new Map();
/**
* 状态值
*
* @memberof DynamicModelConfigUIServiceBase
*/
public stateValue: number = 0;
/**
* 状态属性
*
* @memberof DynamicModelConfigUIServiceBase
*/
public stateField: string = "";
/**
* 主状态属性集合
*
* @memberof DynamicModelConfigUIServiceBase
*/
public mainStateFields:Array<any> = [];
/**
* 主状态集合Map
*
* @memberof DynamicModelConfigUIServiceBase
*/
public allDeMainStateMap:Map<string,string> = new Map();
/**
* 主状态操作标识Map
*
* @memberof DynamicModelConfigUIServiceBase
*/
public allDeMainStateOPPrivsMap:Map<string,any> = new Map();
/**
* Creates an instance of DynamicModelConfigUIServiceBase.
*
* @param {*} [opts={}]
* @memberof DynamicModelConfigUIServiceBase
*/
constructor(opts: any = {}) {
super(opts);
this.authService = new DynamicModelConfigAuthService(opts);
this.initViewMap();
this.initDeMainStateMap();
this.initDeMainStateOPPrivsMap();
}
/**
* 初始化视图Map
*
* @memberof DynamicModelConfigUIServiceBase
*/
public initViewMap(){
this.allViewMap.set('MDATAVIEW:',{viewname:'gridview',srfappde:'dynamicmodelconfigs',component:'dynamic-model-config-grid-view'});
this.allViewMap.set('EDITVIEW:',{viewname:'editview',srfappde:'dynamicmodelconfigs',component:'dynamic-model-config-edit-view'});
}
/**
* 初始化主状态集合
*
* @memberof DynamicModelConfigUIServiceBase
*/
public initDeMainStateMap(){
}
/**
* 初始化主状态操作标识
*
* @memberof DynamicModelConfigUIServiceBase
*/
public initDeMainStateOPPrivsMap(){
}
/**
* 获取指定数据的重定向页面
*
* @param srfkey 数据主键
* @param isEnableWorkflow 重定向视图是否需要处理流程中的数据
* @memberof DynamicModelConfigUIServiceBase
*/
public async getRDAppView(srfkey:string,isEnableWorkflow:boolean){
this.isEnableWorkflow = isEnableWorkflow;
// 进行数据查询
let result:any = await this.dataService.Get({dynamicmodelconfig:srfkey});
const curData:any = result.data;
//判断当前数据模式,默认为true,todo
const iRealDEModel:boolean = true;
let bDataInWF:boolean = false;
let bWFMode:any = false;
// 计算数据模式
if (this.isEnableWorkflow) {
bDataInWF = await this.dataService.testDataInWF({stateValue:this.stateValue,stateField:this.stateField},curData);
if (bDataInWF) {
bDataInWF = true;
bWFMode = await this.dataService.testUserExistWorklist(null,curData);
}
}
let strPDTViewParam:string = await this.getDESDDEViewPDTParam(curData, bDataInWF, bWFMode);
//若不是当前数据模式,处理strPDTViewParam,todo
//查找视图
//返回视图
return this.allViewMap.get(strPDTViewParam);
}
/**
* 获取实际的数据类型
*
* @memberof DynamicModelConfigUIServiceBase
*/
public getRealDEType(entity:any){
}
/**
* 获取实体单数据实体视图预定义参数
*
* @param curData 当前数据
* @param bDataInWF 是否有数据在工作流中
* @param bWFMode 是否工作流模式
* @memberof DynamicModelConfigUIServiceBase
*/
public async getDESDDEViewPDTParam(curData:any, bDataInWF:boolean, bWFMode:boolean){
let strPDTParam:string = '';
if (bDataInWF) {
// 判断数据是否在流程中
}
//多表单,todo
const multiFormDEField:string|null =null;
if (multiFormDEField) {
const objFormValue:string = curData[multiFormDEField];
if(!Environment.isAppMode){
return 'MOBEDITVIEW:'+objFormValue;
}
return 'EDITVIEW:'+objFormValue;
}
if(!Environment.isAppMode){
if(this.getDEMainStateTag(curData)){
return `MOBEDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'MOBEDITVIEW:';
}
if(this.getDEMainStateTag(curData)){
return `EDITVIEW:MSTAG:${ this.getDEMainStateTag(curData)}`;
}
return 'EDITVIEW:';
}
/**
* 获取数据对象的主状态标识
*
* @param curData 当前数据
* @memberof DynamicModelConfigUIServiceBase
*/
public getDEMainStateTag(curData:any){
if(this.mainStateFields.length === 0) return null;
this.mainStateFields.forEach((singleMainField:any) =>{
if(!(singleMainField in curData)){
console.warn(`当前数据对象不包含属性「${singleMainField}」,根据「${singleMainField}」属性进行的主状态计算默认为空值`);
}
})
for (let i = 0; i <= 1; i++) {
let strTag:string = (curData[this.mainStateFields[0]] != null && curData[this.mainStateFields[0]] !== "")?(i == 0) ? `${curData[this.mainStateFields[0]]}` : "":"";
if (this.mainStateFields.length >= 2) {
for (let j = 0; j <= 1; j++) {
let strTag2:string = (curData[this.mainStateFields[1]] != null && curData[this.mainStateFields[1]] !== "")?`${strTag}__${(j == 0) ? `${curData[this.mainStateFields[1]]}` : ""}`:strTag;
if (this.mainStateFields.length >= 3) {
for (let k = 0; k <= 1; k++) {
let strTag3:string = (curData[this.mainStateFields[2]] != null && curData[this.mainStateFields[2]] !== "")?`${strTag2}__${(k == 0) ? `${curData[this.mainStateFields[2]]}` : ""}`:strTag2;
// 判断是否存在
return this.allDeMainStateMap.get(strTag3);
}
}else{
return this.allDeMainStateMap.get(strTag2);
}
}
}else{
return this.allDeMainStateMap.get(strTag);
}
}
return null;
}
/**
* 获取数据对象当前操作标识
*
* @param data 当前数据
* @memberof DynamicModelConfigUIServiceBase
*/
public getDEMainStateOPPrivs(data:any){
if(this.getDEMainStateTag(data)){
return this.allDeMainStateOPPrivsMap.get((this.getDEMainStateTag(data) as string));
}else{
return null;
}
}
/**
* 获取数据对象所有的操作标识
*
* @param data 当前数据
* @memberof DynamicModelConfigUIServiceBase
*/
public getAllOPPrivs(data:any){
return this.authService.getOPPrivs(this.getDEMainStateOPPrivs(data));
}
}
\ No newline at end of file
import DynamicModelConfigUIServiceBase from './dynamic-model-config-ui-service-base';
/**
* 动态模型配置UI服务对象
*
* @export
* @class DynamicModelConfigUIService
*/
export default class DynamicModelConfigUIService extends DynamicModelConfigUIServiceBase {
/**
* Creates an instance of DynamicModelConfigUIService.
*
* @param {*} [opts={}]
* @memberof DynamicModelConfigUIService
*/
constructor(opts: any = {}) {
super(opts);
}
}
\ No newline at end of file
......@@ -48,6 +48,7 @@ export class UIServiceRegister {
this.allUIService.set('dstapi', () => import('@/uiservice/dst-api/dst-api-ui-service'));
this.allUIService.set('dstrouter', () => import('@/uiservice/dst-router/dst-router-ui-service'));
this.allUIService.set('dstconfig', () => import('@/uiservice/dst-config/dst-config-ui-service'));
this.allUIService.set('dynamicmodelconfig', () => import('@/uiservice/dynamic-model-config/dynamic-model-config-ui-service'));
this.allUIService.set('metamodel', () => import('@/uiservice/meta-model/meta-model-ui-service'));
this.allUIService.set('metamodule', () => import('@/uiservice/meta-module/meta-module-ui-service'));
this.allUIService.set('dstdatasource', () => import('@/uiservice/dst-data-source/dst-data-source-ui-service'));
......
......@@ -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="'liteindex'" :isFirst="true" :counterdata="counterdata" :popper-class="popperClass"></app-menu-item>
</el-menu>
</div>
</template>
......@@ -611,6 +613,9 @@ export default class LiteIndexBase extends Vue implements ControlInterface {
case 'AppFunc13':
this.clickAppFunc13(item);
return;
case 'AppFunc14':
this.clickAppFunc14(item);
return;
case 'AppFunc9':
this.clickAppFunc9(item);
return;
......@@ -777,6 +782,29 @@ export default class LiteIndexBase extends Vue implements ControlInterface {
})
}
/**
* 动态模型
*
* @param {*} [item={}]
* @memberof LiteIndex
*/
public clickAppFunc14(item: any = {}) {
const viewparam: any = {};
Object.assign(viewparam, {});
const deResParameters: any[] = [];
const parameters: any[] = [
{ pathName: 'dynamicmodelconfigs', parameterName: 'dynamicmodelconfig' },
{ pathName: 'gridview', parameterName: 'gridview' },
];
const path: string = this.$viewTool.buildUpRoutePath(this.$route, {}, deResParameters, parameters, [], viewparam);
if(Object.is(this.$route.fullPath,path)){
return;
}
this.$nextTick(function(){
this.$router.push(path);
})
}
/**
* 模型
*
......
......@@ -260,6 +260,25 @@ export default class LiteIndexModel {
appfunctag: 'AppFunc10',
resourcetag: '',
authtag:'web-liteIndex-menuitem10',
},
{
id: 'A51B0224-E5AB-4221-82CA-CAF4CB5BA509',
name: 'menuitem14',
text: '动态模型',
type: 'MENUITEM',
counterid: '',
tooltip: '动态模型',
expanded: false,
separator: false,
hidden: false,
hidesidebar: false,
opendefault: false,
iconcls: '',
icon: '',
textcls: '',
appfunctag: 'AppFunc14',
resourcetag: '',
authtag:'web-liteIndex-menuitem14',
},
];
......@@ -343,6 +362,18 @@ export default class LiteIndexModel {
{ pathName: 'gridview', parameterName: 'gridview' },
],
},
{
appfunctag: 'AppFunc14',
appfuncyype: 'APPVIEW',
openmode: '',
codename: 'dynamicmodelconfiggridview',
deResParameters: [],
routepath: '/liteindex/:liteindex?/dynamicmodelconfigs/:dynamicmodelconfig?/gridview/:gridview?',
parameters: [
{ pathName: 'dynamicmodelconfigs', parameterName: 'dynamicmodelconfig' },
{ pathName: 'gridview', parameterName: 'gridview' },
],
},
{
appfunctag: 'AppFunc9',
appfuncyype: 'APPVIEW',
......
......@@ -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 BladeVisualService from '@/service/blade-visual/blade-visual-service';
import BladeVisualEntityService from '@/service/blade-visual/blade-visual-service';
import DefaultService from './default-searchform-service';
import BladeVisualUIService from '@/uiservice/blade-visual/blade-visual-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 {BladeVisualService}
* @memberof DefaultBase
*/
public appEntityService: BladeVisualService = new BladeVisualService({ $store: this.$store });
public appEntityService: BladeVisualEntityService = new BladeVisualEntityService({ $store: this.$store });
......
......@@ -80,7 +80,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 BladeVisualService from '@/service/blade-visual/blade-visual-service';
import BladeVisualEntityService from '@/service/blade-visual/blade-visual-service';
import MainService from './main-form-service';
import BladeVisualUIService from '@/uiservice/blade-visual/blade-visual-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -171,7 +171,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {BladeVisualService}
* @memberof MainBase
*/
public appEntityService: BladeVisualService = new BladeVisualService({ $store: this.$store });
public appEntityService: BladeVisualEntityService = new BladeVisualEntityService({ $store: this.$store });
......@@ -422,7 +422,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;
/**
* 设置表单项错误提示信息
......@@ -1244,6 +1253,9 @@ export default class MainBase extends Vue implements ControlInterface {
if (this.dataChangEvent) {
this.dataChangEvent.unsubscribe();
}
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
}
/**
......
......@@ -118,7 +118,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 BladeVisualService from '@/service/blade-visual/blade-visual-service';
import BladeVisualEntityService from '@/service/blade-visual/blade-visual-service';
import MainService from './main-grid-service';
import BladeVisualUIService from '@/uiservice/blade-visual/blade-visual-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -208,7 +208,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {BladeVisualService}
* @memberof MainBase
*/
public appEntityService: BladeVisualService = new BladeVisualService({ $store: this.$store });
public appEntityService: BladeVisualEntityService = new BladeVisualEntityService({ $store: this.$store });
......@@ -1000,7 +1000,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) {
......@@ -1673,6 +1674,9 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public rowClick($event: any, ifAlways: boolean = false): void {
// 提示栏样式
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
el.style.display = 'none';
// 分组行跳过
if($event && $event.children){
return;
......
......@@ -72,7 +72,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 DstAPIService from '@/service/dst-api/dst-api-service';
import DstAPIEntityService from '@/service/dst-api/dst-api-service';
import DefaultService from './default-searchform-service';
import DstAPIUIService from '@/uiservice/dst-api/dst-api-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -161,7 +161,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {DstAPIService}
* @memberof DefaultBase
*/
public appEntityService: DstAPIService = new DstAPIService({ $store: this.$store });
public appEntityService: DstAPIEntityService = new DstAPIEntityService({ $store: this.$store });
......
......@@ -97,7 +97,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 DstAPIService from '@/service/dst-api/dst-api-service';
import DstAPIEntityService from '@/service/dst-api/dst-api-service';
import MainService from './main-form-service';
import DstAPIUIService from '@/uiservice/dst-api/dst-api-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -188,7 +188,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {DstAPIService}
* @memberof MainBase
*/
public appEntityService: DstAPIService = new DstAPIService({ $store: this.$store });
public appEntityService: DstAPIEntityService = new DstAPIEntityService({ $store: this.$store });
......@@ -439,7 +439,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();
}
}
/**
......
......@@ -154,7 +154,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 DstAPIService from '@/service/dst-api/dst-api-service';
import DstAPIEntityService from '@/service/dst-api/dst-api-service';
import MainService from './main-grid-service';
import DstAPIUIService from '@/uiservice/dst-api/dst-api-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -244,7 +244,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {DstAPIService}
* @memberof MainBase
*/
public appEntityService: DstAPIService = new DstAPIService({ $store: this.$store });
public appEntityService: DstAPIEntityService = new DstAPIEntityService({ $store: this.$store });
......@@ -1084,7 +1084,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) {
......@@ -1763,6 +1764,9 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public rowClick($event: any, ifAlways: boolean = false): void {
// 提示栏样式
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
el.style.display = 'none';
// 分组行跳过
if($event && $event.children){
return;
......
......@@ -59,7 +59,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 DstAppService from '@/service/dst-app/dst-app-service';
import DstAppEntityService from '@/service/dst-app/dst-app-service';
import DefaultService from './default-searchform-service';
import DstAppUIService from '@/uiservice/dst-app/dst-app-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -148,7 +148,7 @@ export default class DefaultBase extends Vue implements ControlInterface {
* @type {DstAppService}
* @memberof DefaultBase
*/
public appEntityService: DstAppService = new DstAppService({ $store: this.$store });
public appEntityService: DstAppEntityService = new DstAppEntityService({ $store: this.$store });
......
......@@ -150,7 +150,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 DstAppService from '@/service/dst-app/dst-app-service';
import DstAppEntityService from '@/service/dst-app/dst-app-service';
import MainService from './main-form-service';
import DstAppUIService from '@/uiservice/dst-app/dst-app-ui-service';
import { FormButtonModel, FormPageModel, FormItemModel, FormDRUIPartModel, FormPartModel, FormGroupPanelModel, FormIFrameModel, FormRowItemModel, FormTabPageModel, FormTabPanelModel, FormUserControlModel } from '@/model/form-detail';
......@@ -241,7 +241,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {DstAppService}
* @memberof MainBase
*/
public appEntityService: DstAppService = new DstAppService({ $store: this.$store });
public appEntityService: DstAppEntityService = new DstAppEntityService({ $store: this.$store });
......@@ -492,7 +492,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;
/**
* 设置表单项错误提示信息
......@@ -1378,6 +1387,9 @@ export default class MainBase extends Vue implements ControlInterface {
if (this.dataChangEvent) {
this.dataChangEvent.unsubscribe();
}
if(this.appStateEvent){
this.appStateEvent.unsubscribe();
}
}
/**
......
......@@ -182,7 +182,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 DstAppService from '@/service/dst-app/dst-app-service';
import DstAppEntityService from '@/service/dst-app/dst-app-service';
import MainService from './main-grid-service';
import DstAppUIService from '@/uiservice/dst-app/dst-app-ui-service';
import CodeListService from "@/codelist/codelist-service";
......@@ -272,7 +272,7 @@ export default class MainBase extends Vue implements ControlInterface {
* @type {DstAppService}
* @memberof MainBase
*/
public appEntityService: DstAppService = new DstAppService({ $store: this.$store });
public appEntityService: DstAppEntityService = new DstAppEntityService({ $store: this.$store });
......@@ -1109,7 +1109,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) {
......@@ -1813,6 +1814,9 @@ export default class MainBase extends Vue implements ControlInterface {
* @memberof MainBase
*/
public rowClick($event: any, ifAlways: boolean = false): void {
// 提示栏样式
let el: any = document.getElementsByClassName('el-tooltip__popper')[0];
el.style.display = 'none';
// 分组行跳过
if($event && $event.children){
return;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册