From ff4f29dec1f42e9c3f04169a82a8048ddc0c320f Mon Sep 17 00:00:00 2001 From: likunming Date: Fri, 13 Dec 2024 15:07:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=86=85=E7=BD=AE=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=8A=9F=E8=83=BD=E5=87=BA=E7=8E=B0=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=97=B6=E8=A1=8C=E6=95=B0=E6=8D=AE=E8=A2=AB?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A5=E5=8F=8A=E5=86=8D=E6=AC=A1=E6=89=93?= =?UTF-8?q?=E5=BC=80=E7=AA=97=E5=8F=A3=E9=AA=8C=E8=AF=81=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9C=AA=E6=B8=85=E7=A9=BA=E7=9A=84=E7=BC=BA=E9=99=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/platform/components/form/WForm.vue | 10 ++++++++++ .../platform/components/grid/extra/Editor.vue | 3 ++- .../grid/extra/inline-edit/CellEditor.vue | 17 ++++++++++++----- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue index 86260aff..28775188 100644 --- a/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue +++ b/io.sc.platform.core.frontend/src/platform/components/form/WForm.vue @@ -337,6 +337,15 @@ const getFieldComponent = (name) => { return componentRef.value[name]; }; +const resetValidation = () => { + formRef.value.resetValidation(); + Object.keys(formFields).forEach((field) => { + if (Tools.hasOwnProperty(formFields[field], 'error') && formFields[field]['error']) { + formFields[field]['error'] = false; + } + }); +}; + defineExpose({ getFields, getData, @@ -350,6 +359,7 @@ defineExpose({ getColsNum, setValidationErrors, getFieldComponent, + resetValidation, }); const instance = getCurrentInstance(); diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/extra/Editor.vue b/io.sc.platform.core.frontend/src/platform/components/grid/extra/Editor.vue index 49bcd49e..b009f5d7 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/extra/Editor.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/extra/Editor.vue @@ -4,9 +4,10 @@ v-bind="tools.props.editor.dialog" :title="dialog.dialogTitle" :buttons="dialogButtonsComputed" - @hide=" + @before-hide=" () => { saveLoading = false; + dialogFormRef.resetValidation(); } " > diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/extra/inline-edit/CellEditor.vue b/io.sc.platform.core.frontend/src/platform/components/grid/extra/inline-edit/CellEditor.vue index 1df35f8b..de4ba688 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/extra/inline-edit/CellEditor.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/extra/inline-edit/CellEditor.vue @@ -4,10 +4,11 @@ :title="dialog.title" v-bind="bindDialogComputed" :buttons="dialog.buttons" - @hide=" + @before-hide=" () => { saveLoading = false; tools.table.store.inlineEditStatus = Constant.EDIT_STATUS.NONE; + dialogFormRef.resetValidation(); } " > @@ -79,20 +80,22 @@ const dialog = { const data = dialogFormRef.value.getData(); const row = tools.dataFM.getRow(tools.table.rows, cellSelected.row[Constant.FIELD_NAMES.ROW_KEY], false); if (row) { - row[cellSelected.colName] = data[cellSelected.colName]; // 判定是否需要往后端发送修改操作 if (!tools.props.localMode) { - const data = GridTools.removeExtraFields(toRaw(row)); - const url = getUrl(data[tools.props.primaryKey]); + const oldData = GridTools.removeExtraFields(toRaw(row)); + const newData = { ...oldData, ...data }; + const url = getUrl(oldData[tools.props.primaryKey]); const callback = () => { saveLoading.value = false; + updateLocalData(row, data, cellSelected); dialogRef.value.hide(); }; const errorCallback = () => { saveLoading.value = false; }; - tools.reqApiFM.save('PUT', data, url, dialogFormRef.value, callback, errorCallback); + tools.reqApiFM.save('PUT', newData, url, dialogFormRef.value, callback, errorCallback); } else { + updateLocalData(row, data, cellSelected); dialogRef.value.hide(); } } @@ -103,6 +106,10 @@ const dialog = { ], }; +const updateLocalData = (row, data, cellSelected) => { + row[cellSelected.colName] = data[cellSelected.colName]; +}; + const getUrl = (primaryKey) => { if (!Tools.isEmpty(tools.table.url.editDataUrl)) { return tools.table.url.editDataUrl + '/' + primaryKey;