wupengfei
2025-11-10 8588e0fd3ad5ba29662c9339a4049c285b21f159
src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
@@ -41,6 +41,7 @@
                  :max="999999999999"
                  :precision="0"
                  unit="人"
                  @change="calcTaskTotalServiceFee"
                ></ProFormInputNumber>
              </ProFormItemV2>
            </ProFormColItem>
@@ -70,6 +71,7 @@
                  :showExtra="true"
                  :button-style="false"
                  :disabled="feeCannotEdit"
                  @change="calcTaskTotalServiceFee"
                >
                  <template #extra>
                    <ProFormInputNumber
@@ -81,6 +83,7 @@
                      :max="999999999999"
                      :unit="EnumBillingMethodUnitText[form.billingMethod]"
                      :disabled="feeCannotEdit"
                      @change="calcTaskTotalServiceFee"
                    ></ProFormInputNumber>
                  </template>
                </RadioWithExtra>
@@ -105,6 +108,7 @@
                    :max="999999999999"
                    unit="小时/天"
                    :disabled="feeCannotEdit"
                    @change="calcTaskTotalServiceFee"
                  ></ProFormInputNumber>
                </ProFormItemV2>
              </ProFormColItem>
@@ -146,6 +150,7 @@
                  :max="999999999999"
                  unit="件"
                  :disabled="feeCannotEdit"
                  @change="calcTaskTotalServiceFee"
                ></ProFormInputNumber>
              </ProFormItemV2>
            </ProFormColItem>
@@ -587,18 +592,13 @@
function handleTimeChange() {
  form.applyTime = [] as unknown as ModelValueType;
  calcTaskTotalServiceFee();
}
function handleBack() {
  closeViewPush(route, {
    name: 'TaskManageList',
  });
}
function calculateMonthInterval(startDate, endDate) {
  const diffInDays = dayjs(endDate).diff(startDate, 'day');
  const monthInterval = Math.ceil(diffInDays / 30);
  return monthInterval > 15 ? Math.ceil(monthInterval / 30) : monthInterval;
}
const productFormRef = ref<FormInstance>();
@@ -613,14 +613,42 @@
  });
}
// function calculateMonthInterval(startDate, endDate) {
//   const diffInDays = dayjs(endDate).diff(startDate, 'day');
//   const monthInterval = Math.ceil(diffInDays / 30);
//   return monthInterval > 15 ? Math.ceil(monthInterval / 30) : monthInterval;
// }
// const totalServiceFee = computed(() => {
//   const monthInterval = calculateMonthInterval(form.time[0], form.time[1]);
//   const dayInterval = dayjs(form.time[1]).diff(dayjs(form.time[0]), 'day');
//   switch (form.billingMethod) {
//     case EnumBillingMethod.Month:
//       return monthInterval * (form.serviceFee ?? 0) * (form.needPeopleNumber ?? 0);
//     case EnumBillingMethod.Day:
//       return dayInterval * (form.serviceFee ?? 0) * (form.needPeopleNumber ?? 0);
//     case EnumBillingMethod.Hour:
//       return (
//         dayInterval *
//         (form.verifyWorkHours ?? 0) *
//         (form.serviceFee ?? 0) *
//         (form.needPeopleNumber ?? 0)
//       );
//     case EnumBillingMethod.Piece:
//       return (form.totalPieceQuantity ?? 0) * (form.serviceFee ?? 0);
//     default:
//       return form.totalServiceFee;
//   }
// });
async function calcTaskTotalServiceFee() {
  try {
    let params: API.CalcTaskTotalServiceFeeCommand = {
      billingMethod: form.billingMethod,
      serviceFee: form.serviceFee,
      verifyWorkHours: form.verifyWorkHours,
      serviceFee: form.serviceFee ?? 0,
      verifyWorkHours: form.verifyWorkHours ?? 0,
      totalPieceQuantity: form.totalPieceQuantity,
      needPeopleNumber: form.needPeopleNumber,
      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'),
    };