From 00840e19923b568b00143b1fd406af8b7e613eb1 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 07 十一月 2025 16:37:59 +0800
Subject: [PATCH] feat: 接口

---
 src/views/EmploymentManage/components/AddOrEditEmploymentView.vue |   91 +++++++++++++++++++++++----------------------
 1 files changed, 46 insertions(+), 45 deletions(-)

diff --git a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
index e537ff5..1d129cf 100644
--- a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
+++ b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
@@ -376,6 +376,9 @@
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
+          <ProFormItemV2 label="棰勮鏈嶅姟璐规�婚:" prop="totalServiceFee">
+            {{ `${toThousand(form.totalServiceFee)}鍏僠 }}
+          </ProFormItemV2>
           <ProFormItemV2
             label="缁撶畻鏂瑰紡:"
             prop="settlementAccess"
@@ -432,7 +435,7 @@
   EnumTaskCheckReceiveMethodText,
   EnumEnterpriseWalletAccessText,
 } from '@/constants';
-import { format, FormValidator } from '@/utils';
+import { format, FormValidator, toThousand } from '@/utils';
 import dayjs from 'dayjs';
 
 defineOptions({
@@ -512,6 +515,7 @@
   checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[],
   applyTime: [] as unknown as ModelValueType,
   settlementAccess: '' as any as EnumEnterpriseWalletAccess,
+  totalServiceFee: 0,
 });
 
 const { settlementAccessList } = useEnterpriseWalletAccessSelect({
@@ -594,27 +598,6 @@
   return monthInterval > 15 ? Math.ceil(monthInterval / 30) : monthInterval;
 }
 
-function calculateServicesFee(
-  billingMethod: EnumBillingMethod,
-  serviceFee: number,
-  time: ModelValueType,
-  needPeopleNumber: number,
-  verifyWorkHours: number
-) {
-  const monthInterval = calculateMonthInterval(time[0], time[1]);
-  const dayInterval = dayjs(time[1]).diff(time[0], 'day');
-  switch (billingMethod) {
-    case EnumBillingMethod.Month:
-      return monthInterval * serviceFee * needPeopleNumber;
-    case EnumBillingMethod.Day:
-      return serviceFee * dayInterval * needPeopleNumber;
-    case EnumBillingMethod.Hour:
-      return serviceFee * dayInterval * needPeopleNumber * verifyWorkHours;
-    case EnumBillingMethod.Piece:
-      return serviceFee * needPeopleNumber;
-  }
-}
-
 const productFormRef = ref<FormInstance>();
 function handleConfirm() {
   if (!productFormRef.value) return;
@@ -626,29 +609,28 @@
     }
   });
 }
+
+async function calcTaskTotalServiceFee() {
+  try {
+    let params: API.CalcTaskTotalServiceFeeCommand = {
+      billingMethod: form.billingMethod,
+      serviceFee: form.serviceFee,
+      verifyWorkHours: form.verifyWorkHours,
+      totalPieceQuantity: form.totalPieceQuantity,
+      needPeopleNumber: form.needPeopleNumber,
+      beginTime: dayjs(form.time[0]).format('YYYY-MM-DD 00:00:00'),
+      endTime: dayjs(form.time[1]).format('YYYY-MM-DD 23:59:59'),
+    };
+    let res = await taskServices.calcTaskTotalServiceFee(params);
+    if (res) {
+      form.totalServiceFee = res.totalServiceFee;
+    }
+  } catch (error) {}
+}
+
 async function submit() {
   try {
-    // const estimateServicesFee = calculateServicesFee(
-    //   form.billingMethod,
-    //   form.serviceFee,
-    //   form.time,
-    //   form.needPeopleNumber,
-    //   form.verifyWorkHours
-    // );
-    // if (estimateServicesFee > 10000) {
-    //   Message.tipMessage('鎮ㄥ綋鍓嶈处鎴蜂綑棰濅笉瓒筹紝鏆傛椂鏃犳硶鍙戝竷浠诲姟锛岃鍏呭�煎悗鎿嶄綔', {
-    //     confirmButtonText: '绔嬪嵆鍏呭��',
-    //     cancelButtonText: '鍙栨秷',
-    //     type: 'warning',
-    //     callback: (action) => {
-    //       if (action === 'confirm') {
-    //         router.push({
-    //           name: 'BalanceManageV2',
-    //         });
-    //       }
-    //     },
-    //   });
-    // }
+    await calcTaskTotalServiceFee();
     let params: API.SaveTaskInfoCommand = {
       supplierEnterpriseId: form.supplierEnterpriseId,
       name: form.name,
@@ -682,13 +664,32 @@
     if (isEdit) {
       params.id = id;
     }
-    let res = await taskServices.saveTaskInfo(params);
+    let res = await taskServices.saveTaskInfo(params, {
+      skipErrorHandler: true,
+    });
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       eventContext.emit(isEdit ? 'taskManage:edit' : 'taskManage:add');
       handleBack();
     }
-  } catch (error) {}
+  } catch (error) {
+    if (error?.info?.errorCode == 'BalanceNotEnough') {
+      Message.tipMessage('鎮ㄥ綋鍓嶈处鎴蜂綑棰濅笉瓒筹紝鏆傛椂鏃犳硶鍙戝竷浠诲姟锛岃鍏呭�煎悗鎿嶄綔', {
+        confirmButtonText: '绔嬪嵆鍏呭��',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+        callback: (action) => {
+          if (action === 'confirm') {
+            router.push({
+              name: 'BalanceManageV2',
+            });
+          }
+        },
+      });
+    } else {
+      Message.errorMessage(error);
+    }
+  }
 }
 
 function handleCheckBenefitsAllChange(val: boolean) {

--
Gitblit v1.9.1