From 057ef771c0d3c2d3c49be6b450b21029b642a746 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期六, 24 十月 2026 13:59:32 +0800
Subject: [PATCH] fix(hrm): 薪酬核算「确认」前自动保存行内修改(方案A)

---
 src/views/hrm/salary/calculation/index.vue |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/views/hrm/salary/calculation/index.vue b/src/views/hrm/salary/calculation/index.vue
index 77e4204..1636793 100644
--- a/src/views/hrm/salary/calculation/index.vue
+++ b/src/views/hrm/salary/calculation/index.vue
@@ -152,20 +152,36 @@
   previewData.value = [];
 }
 
-/** 纭钖叕鏍哥畻 */
+/** 鎶婅鍐呯紪杈戠殑鏂囨湰鍊煎綊涓�涓烘暟瀛楀悗鎻愪氦淇濆瓨 */
+async function saveRowEdits(row: any) {
+  const payload: any = { ...row };
+  EDITABLE_NUMBER_FIELDS.forEach((f) => {
+    payload[f] = toNumberOrZero(payload[f]);
+  });
+  await updateSalaryCalculation(payload);
+}
+
+/** 纭钖叕鏍哥畻锛堟柟妗圓锛氱‘璁ゅ墠鍏堜繚瀛樺綋鍓嶈鐨勪慨鏀癸紝閬垮厤銆屾敼浜嗘病淇濆瓨灏辩‘璁ゃ�嶅鑷撮噾棰濅涪澶憋級 */
 async function handleConfirm(row: HrmSalaryCalculationApi.SalaryCalculation) {
+  if (row.status === 0) {
+    await saveRowEdits(row);
+  }
   await confirmSalary([row.id!]);
   message.success('纭鎴愬姛');
   handleRefresh();
 }
 
-/** 鎵归噺纭閫変腑鐨勮褰� */
+/** 鎵归噺纭閫変腑鐨勮褰曪紙鍚屾牱鍏堜繚瀛樺嬀閫夌殑寰呯‘璁よ褰曪紝鍐嶇‘璁わ級 */
 async function handleBatchConfirm() {
   const records = gridApi.grid.getCheckboxRecords() as HrmSalaryCalculationApi.SalaryCalculation[];
   if (records.length === 0) {
     message.warning('璇烽�夋嫨瑕佺‘璁ょ殑璁板綍');
     return;
   }
+  const pending = records.filter((r) => r.status === 0);
+  for (const row of pending) {
+    await saveRowEdits(row);
+  }
   const ids = records.map((r) => r.id!);
   await confirmSalary(ids);
   message.success('纭鎴愬姛');

--
Gitblit v1.9.3