From 5404ec770daa044c8a8d5bbf56a03f65570d391a Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 12 十一月 2025 15:31:56 +0800
Subject: [PATCH] feat: 1.3.0.2

---
 src/views/EmploymentManage/components/AddOrEditEmploymentView.vue |   66 ++++++++++++++++++++++++++++++--
 src/views/UserManage/components/AddOrEditUserDialog.vue           |    2 
 2 files changed, 62 insertions(+), 6 deletions(-)

diff --git a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
index 343d16d..824d319 100644
--- a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
+++ b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
@@ -2,7 +2,7 @@
   <LoadingLayout :loading="isLoading && isEdit">
     <AppContainer>
       <PageFormLayout title="鍩烘湰淇℃伅">
-        <ProForm :model="form" ref="productFormRef" label-width="110px" :is-read="isDetail">
+        <ProForm :model="form" ref="productFormRef" label-width="120px" :is-read="isDetail">
           <ProFormCol>
             <ProFormColItem :span="12">
               <ProFormItemV2
@@ -25,6 +25,7 @@
                   :max="999999999999"
                   :precision="0"
                   unit="浜�"
+                  @change="calcTaskTotalServiceFee"
                 ></ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
@@ -47,6 +48,7 @@
                     },
                   },
                 ]"
+                @change="calcTaskTotalServiceFee"
               >
                 <RadioWithExtra
                   v-model="form.billingMethod"
@@ -65,6 +67,7 @@
                       :max="999999999999"
                       :unit="EnumBillingMethodUnitText[form.billingMethod]"
                       :disabled="feeCannotEdit"
+                      @change="calcTaskTotalServiceFee"
                     ></ProFormInputNumber>
                   </template>
                 </RadioWithExtra>
@@ -89,6 +92,7 @@
                     :max="999999999999"
                     unit="灏忔椂/澶�"
                     :disabled="feeCannotEdit"
+                    @change="calcTaskTotalServiceFee"
                   ></ProFormInputNumber>
                 </ProFormItemV2>
               </ProFormColItem>
@@ -130,6 +134,7 @@
                   :max="999999999999"
                   unit="浠�"
                   :disabled="feeCannotEdit"
+                  @change="calcTaskTotalServiceFee"
                 ></ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
@@ -348,6 +353,9 @@
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
+          <ProFormItemV2 label="棰勮鏈嶅姟璐规�婚:" prop="totalServiceFee">
+            {{ `${toThousand(form.totalServiceFee)}鍏僠 }}
+          </ProFormItemV2>
           <ProFormItemV2
             label="缁撶畻鏂瑰紡:"
             prop="settlementAccess"
@@ -404,7 +412,7 @@
   EnumTaskCheckReceiveMethodText,
   EnumEnterpriseWalletAccessText,
 } from '@/constants';
-import { format, FormValidator } from '@/utils';
+import { format, FormValidator, toThousand } from '@/utils';
 import dayjs from 'dayjs';
 
 defineOptions({
@@ -415,6 +423,7 @@
 };
 defineProps<Props>();
 const route = useRoute();
+const router = useRouter();
 const id = route.params.id as string;
 const isEdit = !!id;
 
@@ -484,6 +493,8 @@
   applyTime: [] as unknown as ModelValueType,
   settlementAccess: '' as any as EnumEnterpriseWalletAccess,
   needPeopleNumber: null as number,
+
+  totalServiceFee: 0,
 });
 
 const { isLoading } = useQuery({
@@ -537,6 +548,7 @@
     ];
     form.settlementAccess = data.settlementAccess;
     form.needPeopleNumber = data.needPeopleNumber;
+    form.totalServiceFee = data.estimatedServiceFee;
   },
   enabled: isEdit,
 });
@@ -547,6 +559,7 @@
 
 function handleTimeChange() {
   form.applyTime = [] as unknown as ModelValueType;
+  calcTaskTotalServiceFee();
 }
 
 function handleBack() {
@@ -565,15 +578,36 @@
     }
   });
 }
+
+async function calcTaskTotalServiceFee() {
+  try {
+    let params: API.CalcTaskTotalServiceFeeCommand = {
+      billingMethod: form.billingMethod,
+      serviceFee: form.serviceFee ?? 0,
+      verifyWorkHours: form.verifyWorkHours ?? 0,
+      totalPieceQuantity: form.totalPieceQuantity,
+      needPeopleNumber: form.needPeopleNumber ?? 0,
+      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 {
+    await calcTaskTotalServiceFee();
     let params: API.SaveTaskInfoCommand = {
       name: form.name,
+      needPeopleNumber: form.needPeopleNumber,
       billingMethod: form.billingMethod,
+      totalPieceQuantity: form.totalPieceQuantity,
       serviceFee: form.serviceFee,
       settlementCycle: form.settlementCycle,
       settlementDate: form.settlementDate ? form.settlementDate : 0,
-      totalPieceQuantity: form.totalPieceQuantity,
       benefits: form.benefits,
       ageMinLimit: form.ageMinLimit,
       ageMaxLimit: form.ageMaxLimit,
@@ -595,16 +629,38 @@
       checkReceiveMethods: form.checkReceiveMethods,
       settlementAccess: form.settlementAccess,
     };
+    if (form.billingMethod !== EnumBillingMethod.Face) {
+      params.serviceFee = form.serviceFee;
+    }
     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) {
diff --git a/src/views/UserManage/components/AddOrEditUserDialog.vue b/src/views/UserManage/components/AddOrEditUserDialog.vue
index 62fcf6a..11061f7 100644
--- a/src/views/UserManage/components/AddOrEditUserDialog.vue
+++ b/src/views/UserManage/components/AddOrEditUserDialog.vue
@@ -33,8 +33,8 @@
         label="鎿嶄綔瀵嗙爜"
         prop="operatorPassword"
         :check-rules="[
-          { message: '璇疯緭鍏ユ搷浣滃瘑鐮�' },
           {
+            required: false,
             message: '璇疯緭鍏�6浣嶆暟瀛�',
             pattern: /\b\d{6}\b/,
           },

--
Gitblit v1.9.1