wupengfei
2025-11-07 00840e19923b568b00143b1fd406af8b7e613eb1
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) {