@@ -218,9 +218,9 @@ async function setModelConfig() {
218
218
function initModelData (formData = {}) {
219
219
state .loading = false ;
220
220
221
- nextTick (async () => {
222
- state .detailData = Object . assign ( formData, props . modelValueDefaults ) ;
223
- await getModelData ();
221
+ nextTick (() => {
222
+ state .detailData = formData;
223
+ getModelData ();
224
224
});
225
225
}
226
226
@@ -231,18 +231,29 @@ function resetDetailData() {
231
231
state .loading = true ;
232
232
}
233
233
234
+ function updateDetailData (originalData ) {
235
+ instance .ctx .$refs .formView .formDataSource = originalData;
236
+ state .detailDataSource = originalData;
237
+ Object .keys (state .detailData ).forEach (
238
+ (key ) =>
239
+ originalData .hasOwnProperty (key) &&
240
+ (state .detailData [key] = originalData[key])
241
+ );
242
+ }
243
+
234
244
async function getModelData () {
235
245
try {
236
- const formDataSource = await props .getModelDataFn ()(fullInstanceData .value );
246
+ let originalData = await props .getModelDataFn ()(fullInstanceData .value );
237
247
238
- if (isObject (formDataSource ) && Object .keys (formDataSource ).length ) {
239
- instance . ctx . $refs . formView . formDataSource = formDataSource ;
240
- state . detailDataSource = formDataSource;
241
- Object .keys ( state . detailData ). forEach (
242
- ( key ) =>
243
- formDataSource . hasOwnProperty (key) &&
244
- ( state . detailData [key] = formDataSource[key])
248
+ if (isObject (originalData ) && Object .keys (originalData ).length ) {
249
+ updateDetailData (originalData) ;
250
+ } else {
251
+ originalData = Object .assign (
252
+ {},
253
+ state . detailData ,
254
+ props . modelValueDefaults
245
255
);
256
+ Object .keys (originalData).length && updateDetailData (originalData);
246
257
}
247
258
} catch (err) {
248
259
console .warn (` [${ UI_DETAIL_VIEW .NAME } ]: ${ err .toString ()} ` );
@@ -285,7 +296,9 @@ async function handleAction(action, result) {
285
296
}
286
297
287
298
if (canSubmit && action .submit !== false ) {
288
- await props .setModelDataFn ()(fullInstanceData .value );
299
+ await props .setModelDataFn ()(
300
+ Object .assign ({ action }, fullInstanceData .value )
301
+ );
289
302
props .redirectOnSave && redirect (props .to , false );
290
303
}
291
304
break ;
0 commit comments