| | |
| | | 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); |
| | | return res; |
| | | } 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) { |