| | |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormItemV2 label="预计服务费总额:" prop="totalServiceFee"> |
| | | {{ `${toThousand(form.totalServiceFee)}元` }} |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="结算方式:" |
| | | prop="settlementAccess" |
| | |
| | | EnumTaskCheckReceiveMethodText, |
| | | EnumEnterpriseWalletAccessText, |
| | | } from '@/constants'; |
| | | import { format, FormValidator } from '@/utils'; |
| | | import { format, FormValidator, toThousand } from '@/utils'; |
| | | import dayjs from 'dayjs'; |
| | | |
| | | defineOptions({ |
| | |
| | | checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[], |
| | | applyTime: [] as unknown as ModelValueType, |
| | | settlementAccess: '' as any as EnumEnterpriseWalletAccess, |
| | | totalServiceFee: 0, |
| | | }); |
| | | |
| | | const { settlementAccessList } = useEnterpriseWalletAccessSelect({ |
| | |
| | | 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; |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | 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, |
| | |
| | | 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) { |