Наша цель состоит в том, чтобы при исправлении полей одной записи все поля этой записи (включая новые значения исправленных полей) сохранялись в другой таблице, а не исходная таблица.
Бэкэнд использует Java, а внешний интерфейс – Vue.js. Когда я запускаю серверную часть и внешний интерфейс и изменяю значения полей с помощью графического интерфейса, журналы серверной части показывают, что исправленное значение передается на серверную часть, но я получаю ошибку для сохранения, и записи не сохраняются в новая таблица и конечно окно не закрывается после нажатия кнопок исправления или отмены, ошибка такая:
Ошибка сохранения исправления
TypeError: closeEditor не является функцией
хотя я уже определил его.
Я пробовал разные способы решения, но не смог этого сделать, было бы здорово, если бы кто-нибудь поделился своими знаниями в этой области. вот часть кода сохранения записей:
Код: Выделить всё
:disabled="!saveEnabled"
@click="saveCorrectionAndClose"/>
setup() {
let trade = ref(); // Store trade information
const schema = ref({}); // Store the schema for editable fields
const saveEnabled = ref(false); // Enable save button
const tradeExport = ref();
const tradeReconciliation = ref();
const tradeValuation = ref();
let closeEditor = null
const confirm = useConfirm();
const dialogRef = inject('dialogRef')
const editableValues = ref([])
function findByFileName(row,fieldName) {
return row.fieldName === fieldName;
}
const _loadTrade = () => {
const newEditableValues = []
const _displayedField = ref([]);
if (trade.value.Asset_class === "CURR") {
_displayedField.value = includedTradeField_CURR;
} else {
_displayedField.value = includedTradeField;
}
Object.keys(trade.value).forEach(function(key) {
if (_displayedField.value.indexOf(key) > -1)
{
newEditableValues.push({
"fieldName": key,
"originalValue": trade.value[key] ? "" + trade.value[key] : "",
"value": trade.value[key] ? "" + trade.value[key] : "",
"changed": false,
"value2": ""
})
}
});
editableValues.value = newEditableValues;
const cancelAndClose = () => {
if (editableValues.value && editableValues.value.find(it => it.changed)) {
confirm.require({
message: "Cancellation will discard any unsaved changes. Do you want to cancel?",
header: "Unsaved changes",
acceptLabel: "Yes",
acceptClass: "p-button-secondary",
rejectLabel: "No",
accept: () => {
closeEditor();
}
})
} else {
closeEditor();
}
}
const saveCorrectionAndClose = () => {
const correctionValues = {};
let doSave = false;
editableValues.value.forEach((eValue) => {
if (eValue.changed) {
correctionValues[eValue.fieldName] = eValue.value === "" ? null : eValue.value;
doSave = true;
}
});
if (doSave) {
const tradeDetailsId = trade.value.TradeDetailsId;
// API call to save corrections
client.post("/api/emir/trade/createCorrection/"+ trade.value.TradeDetailsId, correctionValues)
.then(() => {
console.log("Saving correction for tradeDetailsId: ", tradeDetailsId);
console.log("Correction values: ", correctionValues);
alert('Corrections saved successfully');
closeEditor();
})
.catch(error => console.error('Error saving corrections', error));
alert('Error saving corrections');
} else {
closeEditor();
}
};
return {
editableValues,
trade,tradeReconciliation,tradeExport,tradeValuation,
onCellEditComplete,saveEnabled,
formatXML,cancelChanges,
// dataQualityInfo,
// additionalInfo,
saveCorrectionAndClose, cancelAndClose
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-function
Мобильная версия