|
|
@@ -590,11 +590,19 @@ async function openEdit(row: S0SrmPurchaseRow) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 币种字段后端为 long?(数值可空),而 s0_currency 字典给的是币种码字符串(如 CNY)、未选择时为空串,
|
|
|
+// 二者都无法绑定 long? 会导致保存 400。保存前规范化:纯数值串转数值,空串/非数值一律 null(可空放行)。
|
|
|
+function normalizeCurrencyType(v: string | number | null | undefined): number | null {
|
|
|
+ if (v === '' || v === null || v === undefined) return null;
|
|
|
+ const n = Number(v);
|
|
|
+ return Number.isInteger(n) ? n : null;
|
|
|
+}
|
|
|
+
|
|
|
async function submitForm() {
|
|
|
await formRef.value?.validate();
|
|
|
saving.value = true;
|
|
|
try {
|
|
|
- const payload: S0SrmPurchaseUpsert = { ...form };
|
|
|
+ const payload: S0SrmPurchaseUpsert = { ...form, currencyType: normalizeCurrencyType(form.currencyType) };
|
|
|
if (editingId.value) {
|
|
|
await s0SrmPurchasesApi.update(editingId.value, payload);
|
|
|
ElMessage.success('已保存');
|