From 6622f65ec5afda6c028068b5d300dd7ad5423098 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 14 十一月 2025 11:14:12 +0800
Subject: [PATCH] fix: bug
---
src/views/EmploymentManage/components/AddOrEditEmploymentView.vue | 91 ++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 84 insertions(+), 7 deletions(-)
diff --git a/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue b/src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
index 343d16d..5a53e23 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
@@ -16,7 +16,11 @@
</ProFormCol>
<ProFormCol>
<ProFormColItem :span="12">
- <ProFormItemV2 label="闇�姹備汉鏁�:" prop="needPeopleNumber">
+ <ProFormItemV2
+ label="闇�姹備汉鏁�:"
+ prop="needPeopleNumber"
+ :check-rules="[{ message: '璇疯緭鍏ラ渶姹備汉鏁�' }]"
+ >
<ProFormInputNumber
:controls="false"
v-model="form.needPeopleNumber"
@@ -25,6 +29,7 @@
:max="999999999999"
:precision="0"
unit="浜�"
+ @change="calcTaskTotalServiceFee"
></ProFormInputNumber>
</ProFormItemV2>
</ProFormColItem>
@@ -47,6 +52,7 @@
},
},
]"
+ @change="calcTaskTotalServiceFee"
>
<RadioWithExtra
v-model="form.billingMethod"
@@ -65,6 +71,7 @@
:max="999999999999"
:unit="EnumBillingMethodUnitText[form.billingMethod]"
:disabled="feeCannotEdit"
+ @change="calcTaskTotalServiceFee"
></ProFormInputNumber>
</template>
</RadioWithExtra>
@@ -89,6 +96,7 @@
:max="999999999999"
unit="灏忔椂/澶�"
:disabled="feeCannotEdit"
+ @change="calcTaskTotalServiceFee"
></ProFormInputNumber>
</ProFormItemV2>
</ProFormColItem>
@@ -130,6 +138,7 @@
:max="999999999999"
unit="浠�"
:disabled="feeCannotEdit"
+ @change="calcTaskTotalServiceFee"
></ProFormInputNumber>
</ProFormItemV2>
</ProFormColItem>
@@ -302,7 +311,20 @@
<ProFormItemV2
label="浠诲姟鏃堕棿:"
prop="time"
- :check-rules="[{ message: '璇烽�夋嫨浠诲姟鏃堕棿', type: 'array' }]"
+ :check-rules="[
+ { message: '璇烽�夋嫨浠诲姟鏃堕棿', type: 'array' },
+ {
+ validator: (rule, value, callback) => {
+ if (form.billingMethod === EnumBillingMethod.Month) {
+ if (dayjs(form.time[1]).diff(dayjs(form.time[0]), 'month') < 1) {
+ callback(new Error('鏈堢粨浠诲姟鏃朵换鍔℃椂闂撮渶澶т簬涓�涓湀'));
+ }
+ callback();
+ }
+ callback();
+ },
+ },
+ ]"
>
<ProFormDatePicker
v-model="form.time"
@@ -344,10 +366,14 @@
<ProFormCheckbox
v-model="form.checkReceiveMethods"
:value-enum="EnumTaskCheckReceiveMethodText"
+ :disabled="isEdit"
></ProFormCheckbox>
</ProFormItemV2>
</ProFormColItem>
</ProFormCol>
+ <ProFormItemV2 label="棰勮鏈嶅姟璐规�婚:" prop="totalServiceFee">
+ {{ `${toThousand(form.totalServiceFee)}鍏僠 }}
+ </ProFormItemV2>
<ProFormItemV2
label="缁撶畻鏂瑰紡:"
prop="settlementAccess"
@@ -404,7 +430,7 @@
EnumTaskCheckReceiveMethodText,
EnumEnterpriseWalletAccessText,
} from '@/constants';
-import { format, FormValidator } from '@/utils';
+import { format, FormValidator, toThousand } from '@/utils';
import dayjs from 'dayjs';
defineOptions({
@@ -415,6 +441,7 @@
};
defineProps<Props>();
const route = useRoute();
+const router = useRouter();
const id = route.params.id as string;
const isEdit = !!id;
@@ -463,6 +490,7 @@
});
const form = reactive({
+ supplierEnterpriseId: '',
name: '',
billingMethod: EnumBillingMethod.Day,
serviceFee: null,
@@ -484,6 +512,8 @@
applyTime: [] as unknown as ModelValueType,
settlementAccess: '' as any as EnumEnterpriseWalletAccess,
needPeopleNumber: null as number,
+
+ totalServiceFee: 0,
});
const { isLoading } = useQuery({
@@ -498,6 +528,7 @@
},
placeholderData: () => ({} as API.GetTaskInfoQueryResult),
onSuccess(data) {
+ form.supplierEnterpriseId = data.supplierEnterpriseId ?? '';
form.name = data.name;
form.billingMethod = data.billingMethod;
form.serviceFee = data.serviceFee;
@@ -537,6 +568,7 @@
];
form.settlementAccess = data.settlementAccess;
form.needPeopleNumber = data.needPeopleNumber;
+ form.totalServiceFee = data.estimatedServiceFee;
},
enabled: isEdit,
});
@@ -547,6 +579,7 @@
function handleTimeChange() {
form.applyTime = [] as unknown as ModelValueType;
+ calcTaskTotalServiceFee();
}
function handleBack() {
@@ -565,15 +598,37 @@
}
});
}
+
+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 = {
+ supplierEnterpriseId: form.supplierEnterpriseId,
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 +650,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: 'EnterpriseBalanceManage',
+ });
+ }
+ },
+ });
+ } else {
+ Message.errorMessage(error);
+ }
+ }
}
function handleCheckBenefitsAllChange(val: boolean) {
--
Gitblit v1.9.1