diff --git a/packages/er-design/src/service/pssysermapdraft/pssysermapdraft.service.ts b/packages/er-design/src/service/pssysermapdraft/pssysermapdraft.service.ts index 4b08066808ada514f20ff599dcabbb7320be459a..a9e645080c6dd3bcd73a8de43dc7502a750c7fc9 100644 --- a/packages/er-design/src/service/pssysermapdraft/pssysermapdraft.service.ts +++ b/packages/er-design/src/service/pssysermapdraft/pssysermapdraft.service.ts @@ -1,3 +1,49 @@ -import { DEService } from '@ibiz-template/runtime'; +import { IHttpResponse } from '@ibiz-template/core'; +import { DEService, IDataEntity } from '@ibiz-template/runtime'; -export class PSSysERMapDraftService extends DEService {} +export class PSSysERMapDraftService extends DEService { + /** + * 执行服务方法 + * + * @author zhanghengfeng + * @date 2025-03-27 18:03:51 + * @param {string} id + * @param {IContext} context + * @param {(IData | IData[])} [params] + * @param {IParams} [params2] + * @param {IData} [header] + * @return {*} {Promise} + */ + async exec( + id: string, + context: IContext, + params?: IData | IData[], + params2?: IParams, + header?: IData, + ): Promise { + const result = await super.exec(id, context, params, params2, header); + if (result && result.ok && result.data) { + if (id.toUpperCase() === 'UPDATE' || id === 'UpdateTempRealTimeData') { + await this.updateLocalData(context, result.data as IDataEntity); + } + } + return result; + } + + /** + * 更新本地数据 + * + * @author zhanghengfeng + * @date 2025-03-27 18:03:24 + * @param {IContext} context + * @param {IDataEntity} data + * @return {*} {Promise} + */ + async updateLocalData(context: IContext, data: IDataEntity): Promise { + const app = ibiz.hub.getApp(this.model.appId); + app.deService.clearTempCache(context); + const method = await this.getMethod('update'); + await method.result.handle(context, { ...data }); + this.local.add(context, data); + } +} diff --git a/packages/er-design/src/views/er-draft-design-view/er-draft-design-view.engine.ts b/packages/er-design/src/views/er-draft-design-view/er-draft-design-view.engine.ts index 4c56e5dcbd14413e08d8ca7a7cb52394e0af1b8f..6bef4f6ae66c776c3e53255f1f35c786cbb2a6e6 100644 --- a/packages/er-design/src/views/er-draft-design-view/er-draft-design-view.engine.ts +++ b/packages/er-design/src/views/er-draft-design-view/er-draft-design-view.engine.ts @@ -194,12 +194,39 @@ export class ERDraftDesignViewEngine extends DEMainViewEngine { * 刷新 * * @author zhanghengfeng - * @date 2025-02-28 16:02:10 + * @date 2025-03-27 19:03:47 * @protected + * @param {IData} [args] * @return {*} {Promise} */ - protected async refresh(): Promise { - await this.load(); + protected async refresh(args?: IData): Promise { + const { ignoreLoad = false } = args || {}; + // 仅当需要加载数据时才执行加载 + if (!ignoreLoad) { + await this.load(); + } else { + const app = ibiz.hub.getApp(this.view.model.appId); + const service = await app.deService.getService( + this.view.context, + this.form.appDataEntityId!, + ); + const appEntity = await ibiz.hub.getAppDataEntity( + this.form.appDataEntityId!, + this.view.model.appId, + ); + const appEntityKeyName = ( + findModelChild( + appEntity.appDEFields as IAppDEField[], + appEntity.keyAppDEFieldId!, + ) as IModel + ).codeName.toLowerCase(); + const res = await service.getTemp(this.view.context, { + [appEntityKeyName]: this.view.state.data.srfkey, + })!; + if (res && res.ok && res.data) { + this.view.state.data = res.data as IDataEntity; + } + } if (this.view.select.data?.id === this.view.state.data?.srfkey) { if (this.activePropertyView) { this.activePropertyView.redrawView?.({ @@ -504,6 +531,10 @@ export class ERDraftDesignViewEngine extends DEMainViewEngine { this.activeRoot(); return undefined; } + if (key === 'Refresh') { + this.refresh(args); + return undefined; + } return super.call(key, args); } diff --git a/packages/local-version-control/src/de-actions/real-time-data/real-time-data.method.ts b/packages/local-version-control/src/de-actions/real-time-data/real-time-data.method.ts index 3f5d907bd28a2cdd42c6dc23e83bf1421cb54d70..15792bb2a2eed720ea0c9e3623b0e4ef2ef61d58 100644 --- a/packages/local-version-control/src/de-actions/real-time-data/real-time-data.method.ts +++ b/packages/local-version-control/src/de-actions/real-time-data/real-time-data.method.ts @@ -22,7 +22,7 @@ import { ScriptFactory, } from '@ibiz-template/runtime'; import { IAppDEAction, IAppDEMethod } from '@ibiz/model-core'; -import { isArray } from 'lodash-es'; +import { isArray, isNil } from 'lodash-es'; /** * 前端实时数据方法实现(本地版本管理使用) @@ -240,7 +240,7 @@ export class RealTimeDataMethod extends Method { for (const key in data) { if (Object.prototype.hasOwnProperty.call(data, key)) { const val = data[key]; - if (typeof val === 'object') { + if (typeof val === 'object' && !isNil(val)) { data[key] = undefined; } }