From d95efbd68be6320f5dfbffca3427d81c47ebac14 Mon Sep 17 00:00:00 2001 From: dailer Date: Thu, 22 Jul 2021 14:46:08 +0800 Subject: [PATCH] =?UTF-8?q?DEC-19867=20feat:=20=E6=95=B0=E6=8D=AElic?= =?UTF-8?q?=E5=8F=97=E9=99=90=E8=BF=9E=E6=8E=A5=E5=87=BA=E9=94=99=E6=8F=90?= =?UTF-8?q?=E7=A4=BA-=E5=89=8D=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- private/i18n.ts | 2 + src/modules/app.model.ts | 2 +- src/modules/crud/api.ts | 16 +++- src/modules/crud/crud.typings.d.ts | 5 ++ src/modules/crud/decision.api.ts | 57 ++++++++------ src/modules/crud/design.api.ts | 9 ++- .../pages/connection/connection.model.ts | 47 +++++++++++- src/modules/pages/connection/connection.ts | 24 +++--- .../pages/connection/list/list.model.ts | 4 +- src/modules/pages/connection/list/list.ts | 6 +- .../list/list_item/list_item.model.ts | 76 +++++++++++++------ .../connection/list/list_item/list_item.ts | 11 ++- .../pages/connection_pool/connection_pool.ts | 37 +++++---- .../pages/maintain/forms/form.model.ts | 18 +++-- 14 files changed, 214 insertions(+), 100 deletions(-) diff --git a/private/i18n.ts b/private/i18n.ts index d105961..6d9294b 100644 --- a/private/i18n.ts +++ b/private/i18n.ts @@ -303,4 +303,6 @@ export default { 'Dec-Dcm_Connection_Analytic_DB': '阿里云AnalyticDB', 'Dec-Dcm_Connection_Value_Out_Range': '数值超出范围', 'Dec-Dcm_Socket_Unable_Connect_Tip': '可能出现编辑冲突', + 'Dec-Connection_Lic_Limit_Approach_Tip': '当前数据连接数量超过注册lic限制({}个),所有数据连接都不可用,请删除多余的数据连接', + 'Dec-Connection_Lic_Limit_Approach_Prevent_Tip': '当前数据连接数量已经达到注册lic限制({}个),无法新增', }; diff --git a/src/modules/app.model.ts b/src/modules/app.model.ts index 8dd78a8..79b06f6 100644 --- a/src/modules/app.model.ts +++ b/src/modules/app.model.ts @@ -31,7 +31,7 @@ export class AppModel extends Model { setPageIndex: (index: string) => { this.model.pageIndex = index; }, - setFilter:(filter: string) => { + setFilter: (filter: string) => { this.model.filter = filter; }, setDatebaseTypeSelected: (datebaseTypeSelected: string) => { diff --git a/src/modules/crud/api.ts b/src/modules/crud/api.ts index 0122e48..1d917b8 100644 --- a/src/modules/crud/api.ts +++ b/src/modules/crud/api.ts @@ -1,4 +1,11 @@ -import { Connection, TestRequest, ConnectionPoolType, SocketResult, ResultType } from './crud.typings'; +import { + Connection, + ConnectionLicInfo, + TestRequest, + ConnectionPoolType, + SocketResult, + ResultType, +} from './crud.typings'; export interface Api { /** @@ -9,7 +16,12 @@ export interface Api { /** * 获取已添加的数据连接 */ - getConnectionlist(): Promise<{ data?: Connection[] }>; + getConnectionList(): Promise<{ data?: Connection[] }>; + + /** + * 获取数据连接lic限制信息 + */ + getConnectionLicInfo(): Promise<{ data?: ConnectionLicInfo }>; /** * 删除数据连接 diff --git a/src/modules/crud/crud.typings.d.ts b/src/modules/crud/crud.typings.d.ts index 84181fe..2d56028 100644 --- a/src/modules/crud/crud.typings.d.ts +++ b/src/modules/crud/crud.typings.d.ts @@ -25,6 +25,11 @@ export interface Connection { }[] } +export interface ConnectionLicInfo { + currentConnectionNum: number; + maxConnectionNum: number +} + export interface ConnectionJDBC { /** * 数据库名称 diff --git a/src/modules/crud/decision.api.ts b/src/modules/crud/decision.api.ts index 6c2f2a5..a15cd14 100644 --- a/src/modules/crud/decision.api.ts +++ b/src/modules/crud/decision.api.ts @@ -1,15 +1,19 @@ import { Api } from './api'; -import { Connection, TestRequest, ConnectionPoolType, SocketResult } from './crud.typings'; +import { Connection, TestRequest, ConnectionPoolType, SocketResult, ConnectionLicInfo } from './crud.typings'; import { requestGet, requestDelete, requestPost, requestPut } from './crud.service'; import { editStatusEvent, errorCode } from '@constants/env'; export class DecisionApi implements Api { isDec = true; - getConnectionlist(): Promise<{ data?: Connection[] }> { + getConnectionList(): Promise<{ data?: Connection[] }> { return requestGet('list', {}); } + getConnectionLicInfo(): Promise<{ data?: ConnectionLicInfo }> { + return requestGet('lic/info', {}); + } + deleteConnection(connectionName: string) { return requestDelete('', { connectionName, @@ -49,28 +53,29 @@ export class DecisionApi implements Api { } getConnectionStatus(name: string): Promise { - return this.sendEditStatusEvent(name, editStatusEvent.OPEN).then(re => { - if (re.errorCode) { - let errorMessage = ''; - switch (re.errorCode) { - case errorCode.CONNECTION_DELETED: - errorMessage = 'Dec-Dcm_Connection_Deleted'; - break; - case errorCode.CONNECTION_UNDER_EDIT: - errorMessage = 'Dec-Dcm_Connection_Is_Using'; - break; - default: - errorMessage = re.errorMsg; - break; + return this.sendEditStatusEvent(name, editStatusEvent.OPEN) + .then(re => { + if (re.errorCode) { + let errorMessage = ''; + switch (re.errorCode) { + case errorCode.CONNECTION_DELETED: + errorMessage = 'Dec-Dcm_Connection_Deleted'; + break; + case errorCode.CONNECTION_UNDER_EDIT: + errorMessage = 'Dec-Dcm_Connection_Is_Using'; + break; + default: + errorMessage = re.errorMsg; + break; + } + BI.Msg.toast(BI.i18nText(errorMessage, re.errorMsg), { + level: 'error', + }); + throw re; + } else { + return re; } - BI.Msg.toast(BI.i18nText(errorMessage, re.errorMsg), { - level: 'error', - }); - throw re; - } else { - return re; - } - }); + }); } shutdownConnectionStatus(name: string): Promise { @@ -94,11 +99,13 @@ export class DecisionApi implements Api { } getCipher(password: string) { - return BI.Providers.getProvider('dec.provider.cipher').getCipher(password); + return BI.Providers.getProvider('dec.provider.cipher') + .getCipher(password); } getPlain(cipher: string) { - return BI.Providers.getProvider('dec.provider.cipher').getPlain(cipher); + return BI.Providers.getProvider('dec.provider.cipher') + .getPlain(cipher); } getHyperlink(name: string) { diff --git a/src/modules/crud/design.api.ts b/src/modules/crud/design.api.ts index 2402db7..f010918 100644 --- a/src/modules/crud/design.api.ts +++ b/src/modules/crud/design.api.ts @@ -1,16 +1,21 @@ import { Api } from './api'; -import { Connection, TestRequest, ConnectionPoolType, SocketResult } from './crud.typings'; +import { Connection, TestRequest, ConnectionPoolType, SocketResult, ConnectionLicInfo } from './crud.typings'; +import { requestGet } from './crud.service'; // TODO: 此页面的接口等待设计器提供相应的方法 export class DesignApi implements Api { isDec = false; - getConnectionlist(): Promise<{ data: Connection[] }> { + getConnectionList(): Promise<{ data: Connection[] }> { return new Promise(resolve => { resolve({ data: [] }); }); } + getConnectionLicInfo(): Promise<{ data?: ConnectionLicInfo }> { + return requestGet('lic/info', {}); + } + deleteConnection(connectionName: string): Promise<{ data: string }> { return new Promise(resolve => { resolve({ data: 'success' }); diff --git a/src/modules/pages/connection/connection.model.ts b/src/modules/pages/connection/connection.model.ts index 6fe86dc..5874bdf 100644 --- a/src/modules/pages/connection/connection.model.ts +++ b/src/modules/pages/connection/connection.model.ts @@ -1,24 +1,60 @@ import { model, Model } from '@core/core'; import { AppModel } from '../../app.model'; import { ApiFactory } from 'src/modules/crud/apiFactory'; +import { PAGE_INDEX } from '@constants/constant'; + const api = new ApiFactory().create(); + @model() export class ConnectionModel extends Model<{ - types : { + types: { pageIndex: AppModel['TYPE']['pageIndex']; connections: AppModel['TYPE']['connections']; connectionSelected: AppModel['TYPE']['connectionSelected']; connectionSelectedOne: AppModel['TYPE']['connectionSelectedOne']; datebaseTypeSelected: AppModel['TYPE']['datebaseTypeSelected']; }, + childContext: ConnectionModel['childContext']; context: ConnectionModel['context']; }> { static xtype = 'dec.dcm.model.connection'; - context = ['pageIndex', 'connectionSelected', 'connectionSelectedOne', 'datebaseTypeSelected']; + state() { + return { + connectionLicInfo: { + currentConnectionNum: 0, + maxConnectionNum: 0, + }, + }; + } + + childContext: ['connectionLicInfo']; + + context = ['pageIndex', 'connectionSelected', 'connectionSelectedOne', 'datebaseTypeSelected', 'connectionLicInfo']; actions = { - setPageIndex:(index: string) => { + initConnectionLicInfo: (cb: Function) => { + return api.getConnectionLicInfo() + .then(res => { + this.model.connectionLicInfo = res.data; + if (res.data.currentConnectionNum > res.data.maxConnectionNum) { + BI.Services.getService('dec.service.component.icon_text.msg').alert({ + text: BI.i18nText('Dec-Connection_Lic_Limit_Approach_Tip', res.data.maxConnectionNum), + }); + } + cb(); + }); + }, + createNewConnection: () => { + if (this.model.connectionLicInfo.currentConnectionNum < this.model.connectionLicInfo.maxConnectionNum) { + this.setPageIndex(PAGE_INDEX.DATEBASE); + } else { + BI.Services.getService('dec.service.component.icon_text.msg').alert({ + text: BI.i18nText('Dec-Connection_Lic_Limit_Approach_Prevent_Tip', this.model.connectionLicInfo.maxConnectionNum), + }); + } + }, + setPageIndex: (index: string) => { this.model.pageIndex = index; }, setDatebaseTypeSelected(name: string) { @@ -30,5 +66,8 @@ export class ConnectionModel extends Model<{ getConnectionStatus() { return api.getConnectionStatus(this.model.connectionSelected); }, - } + checkConnectionLic() { + return this.model.connectionLicInfo.currentConnectionNum > this.model.connectionLicInfo.maxConnectionNum; + }, + }; } diff --git a/src/modules/pages/connection/connection.ts b/src/modules/pages/connection/connection.ts index 43387d5..60327af 100644 --- a/src/modules/pages/connection/connection.ts +++ b/src/modules/pages/connection/connection.ts @@ -24,7 +24,7 @@ export class Connection extends BI.Widget { title: HTapeLayout; watch = { - connectionSelected:(name: string) => { + connectionSelected: (name: string) => { if (name) { const canEdit = connectionCanEdit(this.model.connectionSelectedOne); const type = this.getSelectConnectionType(); @@ -43,11 +43,15 @@ export class Connection extends BI.Widget { this.connectionEditWidget.setVisible(false); } }, + }; + + beforeRender(cb: Function) { + this.store.initConnectionLicInfo(cb); } render() { this.store.setConnectionSelected(''); - + return { type: BI.HTapeLayout.xtype, hgap: 10, @@ -66,7 +70,7 @@ export class Connection extends BI.Widget { type: BI.Button.xtype, text: BI.i18nText('Dec-Dcm_Connection_New'), handler: () => { - this.store.setPageIndex(PAGE_INDEX.DATEBASE); + this.store.createNewConnection(); }, }], }, @@ -110,11 +114,13 @@ export class Connection extends BI.Widget { this.connectionEditWidget = _ref; }, handler: () => { - this.store.getConnectionStatus().then(re => { - this.store.setPageIndex(PAGE_INDEX.MAINTAIN); - this.store.setDatebaseTypeSelected(''); - }) - .catch(() => {}); + this.store.getConnectionStatus() + .then(re => { + this.store.setPageIndex(PAGE_INDEX.MAINTAIN); + this.store.setDatebaseTypeSelected(''); + }) + .catch(() => { + }); }, }], }, @@ -209,7 +215,7 @@ export class Connection extends BI.Widget { const connectionJDBC = this.model.connectionSelectedOne.connectionData as ConnectionJDBC; databaseType = getJdbcDatabaseType(connectionJDBC.database, connectionJDBC.driver).databaseType; } - + return databaseType; } } diff --git a/src/modules/pages/connection/list/list.model.ts b/src/modules/pages/connection/list/list.model.ts index 036f320..5d650e9 100644 --- a/src/modules/pages/connection/list/list.model.ts +++ b/src/modules/pages/connection/list/list.model.ts @@ -19,7 +19,7 @@ export class ConnectionListModel extends Model<{ } actions = { - setConnections: ():Promise => api.getConnectionlist().then(data => { + setConnections: ():Promise => api.getConnectionList().then(data => { if (BI.size(data.data) > 0) { this.model.connections = data.data; this.model.connections.forEach(item => { @@ -30,7 +30,7 @@ export class ConnectionListModel extends Model<{ } else { this.model.connectionSelected = ''; } - + return new Promise(resolve => { resolve(); }); diff --git a/src/modules/pages/connection/list/list.ts b/src/modules/pages/connection/list/list.ts index 0e4be9b..f674dab 100644 --- a/src/modules/pages/connection/list/list.ts +++ b/src/modules/pages/connection/list/list.ts @@ -6,7 +6,7 @@ import { Tab } from '@fui/core'; @shortcut() @store(ConnectionListModel) -export class ConnectionList extends BI.LoadingPane { +export class ConnectionList extends BI.Pane { static xtype = 'dec.dcm.connection.list'; store: ConnectionListModel['store']; @@ -15,7 +15,7 @@ export class ConnectionList extends BI.LoadingPane { groupWidget: any; tab: Tab; - beforeInit(cb: Function) { + beforeRender(cb: Function) { this.store.setConnections().then(() => { cb(); }); @@ -67,7 +67,7 @@ export class ConnectionList extends BI.LoadingPane { ], }; } - + return { type: BI.Loader.xtype, itemsCreator: (options: {times: number}, populate) => { diff --git a/src/modules/pages/connection/list/list_item/list_item.model.ts b/src/modules/pages/connection/list/list_item/list_item.model.ts index a02695d..f23de66 100644 --- a/src/modules/pages/connection/list/list_item/list_item.model.ts +++ b/src/modules/pages/connection/list/list_item/list_item.model.ts @@ -4,11 +4,13 @@ import { ApiFactory } from '../../../../crud/apiFactory'; import { ResultType } from '../../../../crud/crud.typings'; import { getChartLength } from '../../../../app.service'; import { NAME_MAX_LENGTH } from '../../../../app.constant'; +import { PAGE_INDEX } from '@constants/constant'; + const api = new ApiFactory().create(); @model() export class ListItemModel extends Model<{ - types : { + types: { connectionSelected: AppModel['TYPE']['connectionSelected']; connectionSelectedOne: AppModel['TYPE']['connectionSelectedOne']; datebaseTypeSelectedOne: AppModel['TYPE']['datebaseTypeSelectedOne']; @@ -21,7 +23,7 @@ export class ListItemModel extends Model<{ }> { static xtype = 'dec.dcm.model.connection.list_item'; - context = ['connectionSelected', 'connections', 'pageIndex', 'datebaseTypeSelectedOne', 'connectionSelectedOne', 'datebaseTypeSelected', 'isCopy']; + context = ['connectionSelected', 'connections', 'pageIndex', 'datebaseTypeSelectedOne', 'connectionSelectedOne', 'datebaseTypeSelected', 'isCopy', 'connectionLicInfo']; state() { return { @@ -52,10 +54,12 @@ export class ListItemModel extends Model<{ }, setIsEdit: (isEdit: boolean, name: string) => { if (isEdit) { - api.getConnectionStatus(name).then(re => { - this.model.isEdit = true; - }) - .catch(() => {}); + api.getConnectionStatus(name) + .then(re => { + this.model.isEdit = true; + }) + .catch(() => { + }); } else { api.shutdownConnectionStatus(name); this.model.isEdit = false; @@ -69,7 +73,10 @@ export class ListItemModel extends Model<{ } if (getChartLength(newName) > NAME_MAX_LENGTH) { return new Promise(resolve => { - resolve({ errorCode: '1', errorMsg: BI.i18nText('Dec-Dcm_Connection_Cannot_Too_Lang', NAME_MAX_LENGTH) }); + resolve({ + errorCode: '1', + errorMsg: BI.i18nText('Dec-Dcm_Connection_Cannot_Too_Lang', NAME_MAX_LENGTH), + }); }); } const hasNamed = this.model.connections.some(item => item.connectionName === newName); @@ -82,31 +89,50 @@ export class ListItemModel extends Model<{ connection.connectionId = oldName; connection.connectionName = newName; - - return api.updateConnection(connection).then(re => { - if (!re.errorCode) { - this.model.connections = this.model.connections.map(item => { - return { - ...item, - connectionName: item.connectionName === oldName ? newName : item.connectionName, - connectionId: item.connectionName === oldName ? newName : item.connectionName, - }; - }); - if (this.model.connectionSelected === oldName) { - this.model.connectionSelected = newName; + + return api.updateConnection(connection) + .then(re => { + if (!re.errorCode) { + this.model.connections = this.model.connections.map(item => { + return { + ...item, + connectionName: item.connectionName === oldName ? newName : item.connectionName, + connectionId: item.connectionName === oldName ? newName : item.connectionName, + }; + }); + if (this.model.connectionSelected === oldName) { + this.model.connectionSelected = newName; + } } - } - - return re; - }); + + return re; + }); + }, + copyConnection(connectionName) { + if (this.model.connectionLicInfo.currentConnectionNum >= this.model.connectionLicInfo.maxConnectionNum) { + BI.Services.getService('dec.service.component.icon_text.msg').alert({ + text: BI.i18nText('Dec-Connection_Lic_Limit_Approach_Prevent_Tip', this.model.connectionLicInfo.maxConnectionNum), + }); + + return; + } + this.setConnectionSelected(connectionName); + this.setIsCopy(true); + this.setPageIndex(PAGE_INDEX.MAINTAIN); }, setIsCopy: (isCopy: boolean) => { this.model.isCopy = isCopy; }, isDriverError: (errorCode: string) => api.isDriverError(errorCode), - } + }; + removeConnection(name: string) { - api.deleteConnection(name).then(re => api.getConnectionlist()) + api.deleteConnection(name) + .then(re => { + this.model.connectionLicInfo.currentConnectionNum -= 1; + + return api.getConnectionList(); + }) .then(connections => { this.model.connections = connections.data; this.model.connections.forEach(item => { diff --git a/src/modules/pages/connection/list/list_item/list_item.ts b/src/modules/pages/connection/list/list_item/list_item.ts index 4f098bc..58537d7 100644 --- a/src/modules/pages/connection/list/list_item/list_item.ts +++ b/src/modules/pages/connection/list/list_item/list_item.ts @@ -19,7 +19,7 @@ export class ListItem extends BI.BasicButton { height: 25, baseCls: 'dec-dcm-connection-list-item bi-list-item-active2', $testId: 'dec-dcm-connection-list-item', - } + }; store: ListItemModel['store']; model: ListItemModel['model']; @@ -36,7 +36,7 @@ export class ListItem extends BI.BasicButton { this.nameEditor.focus(); } }, - } + }; render() { const { name, databaseType } = this.options; @@ -220,15 +220,14 @@ export class ListItem extends BI.BasicButton { this.store.setPageIndex(PAGE_INDEX.MAINTAIN); this.store.setDatebaseTypeSelected(''); }) - .catch(() => { }); + .catch(() => { + }); }, changeName: () => { this.store.setIsEdit(true, name); }, copy: () => { - this.store.setConnectionSelected(name); - this.store.setIsCopy(true); - this.store.setPageIndex(PAGE_INDEX.MAINTAIN); + this.store.copyConnection(name); }, delete: () => { this.store.deleteConnection(name); diff --git a/src/modules/pages/connection_pool/connection_pool.ts b/src/modules/pages/connection_pool/connection_pool.ts index e3547f7..2cec421 100644 --- a/src/modules/pages/connection_pool/connection_pool.ts +++ b/src/modules/pages/connection_pool/connection_pool.ts @@ -4,6 +4,7 @@ import { ListItem } from './list_item/list_item'; import { Pool } from './pool/pool'; import { PAGE_SIZE } from '@constants/constant'; import { Label } from '@fui/core'; + @shortcut() @store(ConnectionPoolModel) export class ConnectionPool extends BI.Widget { @@ -18,7 +19,7 @@ export class ConnectionPool extends BI.Widget { selected: (selected: string) => { this.title.setText(selected); }, - } + }; mounted() { const defaultSelected = this.model.connectionJDBC.length > 0 ? this.model.connectionJDBC[0].connectionName : ''; @@ -29,7 +30,7 @@ export class ConnectionPool extends BI.Widget { if (BI.size(this.model.connectionJDBC) === 0) { return this.renderNoConnection(); } - + return { type: BI.HTapeLayout.xtype, items: [ @@ -37,6 +38,7 @@ export class ConnectionPool extends BI.Widget { el: { type: BI.VTapeLayout.xtype, cls: 'bi-border-right', + hgap: 10, items: [ { el: { @@ -44,16 +46,18 @@ export class ConnectionPool extends BI.Widget { cls: 'bi-border-bottom', textAlign: 'left', text: BI.i18nText('Dec-Dcm_Data_Connections'), - lgap: 10, }, height: 40, }, { - type: BI.Loader.xtype, - itemsCreator: (options: {times: number}, populate) => { - populate(this.renderList((options.times - 1) * PAGE_SIZE, options.times * PAGE_SIZE)); + el: { + type: BI.Loader.xtype, + itemsCreator: (options: { times: number }, populate) => { + populate(this.renderList((options.times - 1) * PAGE_SIZE, options.times * PAGE_SIZE)); + }, + hasNext: options => options.times * PAGE_SIZE < BI.size(this.model.connectionJDBC), }, - hasNext: options => options.times * PAGE_SIZE < BI.size(this.model.connectionJDBC), + vgap: 10, }, ], }, @@ -116,14 +120,15 @@ export class ConnectionPool extends BI.Widget { private renderList(start = 0, end = 0) { const defaultSelected = this.model.connectionJDBC.length > 0 ? this.model.connectionJDBC[0].connectionName : ''; - - return this.model.connectionJDBC.slice(start, end).map(item => { - return { - type: ListItem.xtype, - name: item.connectionName, - value: item.connectionName, - selected: item.connectionName === defaultSelected, - }; - }); + + return this.model.connectionJDBC.slice(start, end) + .map(item => { + return { + type: ListItem.xtype, + name: item.connectionName, + value: item.connectionName, + selected: item.connectionName === defaultSelected, + }; + }); } } diff --git a/src/modules/pages/maintain/forms/form.model.ts b/src/modules/pages/maintain/forms/form.model.ts index 3bbc66e..f72b8ed 100644 --- a/src/modules/pages/maintain/forms/form.model.ts +++ b/src/modules/pages/maintain/forms/form.model.ts @@ -4,11 +4,12 @@ import { Connection } from 'src/modules/crud/crud.typings'; import { ApiFactory } from 'src/modules/crud/apiFactory'; import { PAGE_INDEX } from '@constants/constant'; import { testConnection } from './form.server'; + const api = new ApiFactory().create(); @model() export class MaintainFormModel extends Model<{ - types : { + types: { datebaseTypeSelected: AppModel['TYPE']['datebaseTypeSelected']; datebaseTypeSelectedOne: AppModel['TYPE']['datebaseTypeSelectedOne']; connectionSelectedOne: AppModel['TYPE']['connectionSelectedOne']; @@ -21,7 +22,7 @@ export class MaintainFormModel extends Model<{ context: MaintainFormModel['context']; }> { static xtype = 'dec.dcm.model.maintain_form'; - + context = [ 'datebaseTypeSelected', 'datebaseTypeSelectedOne', @@ -31,13 +32,20 @@ export class MaintainFormModel extends Model<{ 'testEvent', 'connections', 'isCopy', + 'connectionLicInfo', ]; actions = { - addConnection: (data: Connection) => api.addConnection(data), + addConnection: (data: Connection) => api.addConnection(data).then(result => { + if (!result.errorCode) { + this.model.connectionLicInfo.currentConnectionNum += 1; + } + + return result; + }), updateConnection: (name: string, data: Connection) => { data.connectionId = name; - + return api.updateConnection(data); }, shutdownConnectionStatus: (name: string) => api.shutdownConnectionStatus(name), @@ -51,5 +59,5 @@ export class MaintainFormModel extends Model<{ goFirstPage() { this.model.pageIndex = PAGE_INDEX.CONNECTION; }, - } + }; }