diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue index 024fa6b3..92ac8bdf 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue @@ -1546,7 +1546,11 @@ const removeLocalData = (target) => { result.forEach((item) => { table.rows.splice( table.rows.findIndex((v) => { - return v[props.primaryKey] === item[props.primaryKey] || v[rowKey_] === item[rowKey_]; + if (!Tools.isEmpty(v[props.primaryKey]) && Tools.isEmpty(item[props.primaryKey])) { + return v[props.primaryKey] === item[props.primaryKey]; + } else { + return v[rowKey_] === item[rowKey_]; + } }), 1, ); diff --git a/io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue b/io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue index 730dd1af..d4029405 100644 --- a/io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue +++ b/io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue @@ -312,13 +312,13 @@ const rowClick = (args) => { watch( () => modelValue.value, - (newVal, oldVal) => { - fieldMethodsClass.updateValue(newVal); + async (newVal, oldVal) => { if (Tools.isEmpty(newVal)) { fieldMethodsClass.clearObjectValue(); } else if (newVal !== oldVal && needFetchData.value) { - fetchData(newVal); + await fetchData(newVal); } + fieldMethodsClass.updateValue(newVal); }, ); diff --git a/io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue b/io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue index 6f64f5a7..97e766ff 100644 --- a/io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue +++ b/io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue @@ -452,7 +452,6 @@ const tickedComputed = computed(() => { }); const buttonClick = async (button) => { - let beforeResult = true; const context = {}; const args = { selected: firstSelectedComputed.value, @@ -463,16 +462,29 @@ const buttonClick = async (button) => { context: context, selectedColName: props.grid.getSelectedCell()['colName'], }; + if (button.enableIf && !button.enableIf(args)) { + return; + } + let beforeResult = true; if (button.beforeClick) { beforeResult = await button.beforeClick(args); } if (beforeResult && button.click) { - await button.click({ ...args, _click: button._click }); + let callAfterEditorOpen = true; + const clickProps = { ...args }; + if (button._click) { + callAfterEditorOpen = false; + clickProps['_click'] = (_args: any) => { + button._click(_args || args); + callAfterEditorOpen = true; + }; + } + await button.click(clickProps); nextTick(async () => { if (button.afterClick) { await button.afterClick(args); } - if (button.afterEditorOpen) { + if (button.afterEditorOpen && callAfterEditorOpen) { button.afterEditorOpen(args); } });