wupengfei
昨天 c3d85f99d71dc283308e1219817e1d816e985809
src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
@@ -3,19 +3,6 @@
    <AppContainer>
      <PageFormLayout title="基本信息">
        <ProForm :model="form" ref="productFormRef" label-width="120px" :is-read="isDetail">
          <ProFormItemV2
            label="供应商:"
            prop="supplierEnterpriseId"
            :check-rules="[{ message: '请选择供应商' }]"
          >
            <ProFormSelect
              v-model="form.supplierEnterpriseId"
              :value-enum="supplierEnterpriseSelect"
              placeholder="请选择供应商"
              :disabled="isEdit"
              @change="supplierEnterpriseChange"
            ></ProFormSelect>
          </ProFormItemV2>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2
@@ -65,6 +52,7 @@
                    },
                  },
                ]"
                @change="calcTaskTotalServiceFee"
              >
                <RadioWithExtra
                  v-model="form.billingMethod"
@@ -72,7 +60,6 @@
                  :showExtra="true"
                  :button-style="false"
                  :disabled="feeCannotEdit"
                  @change="calcTaskTotalServiceFee"
                >
                  <template #extra>
                    <ProFormInputNumber
@@ -91,7 +78,7 @@
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <template v-if="form.billingMethod === EnumBillingMethod.Hour">
          <template v-if="form.billingMethod === EnumBillingMethod.Day">
            <ProFormCol>
              <ProFormColItem :span="12">
                <ProFormItemV2
@@ -384,21 +371,6 @@
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormItemV2
            label="保险产品:"
            prop="insuranceProductId"
            :check-rules="[{ message: '请选择保险产品' }]"
            v-if="
              form.checkReceiveMethods.includes(EnumTaskCheckReceiveMethod.CheckIn) &&
              form.isConfiguredInsurance
            "
          >
            <ProFormSelect
              v-model="form.insuranceProductId"
              :value-enum="enterpriseInsuranceProductSelect"
              @change="calcTaskTotalServiceFee"
            ></ProFormSelect>
          </ProFormItemV2>
          <ProFormItemV2 label="预计服务费总额:" prop="totalServiceFee">
            {{ `${toThousand(form.totalServiceFee)}元` }}
          </ProFormItemV2>
@@ -456,7 +428,7 @@
  EnumSettlementCycleDateWeekArray,
  EnumSettlementCycle,
  EnumTaskCheckReceiveMethodText,
  EnumTaskCheckReceiveMethod,
  EnumEnterpriseWalletAccessText,
} from '@/constants';
import { format, FormValidator, toThousand } from '@/utils';
import dayjs from 'dayjs';
@@ -473,7 +445,9 @@
const id = route.params.id as string;
const isEdit = !!id;
const { supplierEnterpriseSelect } = useGetSupplierEnterpriseSelect();
const { settlementAccessList } = useEnterpriseWalletAccessSelect({
  supplierEnterpriseId: computed(() => ''),
});
function disabledDate(time: Date) {
  return dayjs(time).isBefore(dayjs(), 'day');
@@ -518,12 +492,11 @@
const form = reactive({
  supplierEnterpriseId: '',
  name: '',
  needPeopleNumber: null as number,
  billingMethod: EnumBillingMethod.Day,
  serviceFee: null,
  totalPieceQuantity: null as number,
  settlementCycle: EnumSettlementCycle.Day,
  settlementDate: null as number,
  totalPieceQuantity: null as number,
  benefits: [] as string[],
  ageMinLimit: null,
  ageMaxLimit: null,
@@ -538,19 +511,9 @@
  checkReceiveMethods: [] as any as EnumTaskCheckReceiveMethod[],
  applyTime: [] as unknown as ModelValueType,
  settlementAccess: '' as any as EnumEnterpriseWalletAccess,
  needPeopleNumber: null as number,
  totalServiceFee: 0,
  insuranceProductId: '',
  isConfiguredInsurance: false,
});
const { settlementAccessList } = useEnterpriseWalletAccessSelect({
  supplierEnterpriseId: computed(() => form.supplierEnterpriseId),
});
const { enterpriseInsuranceProductSelect } = useEnterpriseInsuranceProductSelect({
  supplierEnterpriseId: computed(() => form.supplierEnterpriseId),
  isConfiguredInsurance: computed(() => form.isConfiguredInsurance),
});
const { isLoading } = useQuery({
@@ -565,14 +528,13 @@
  },
  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
  onSuccess(data) {
    form.supplierEnterpriseId = data.supplierEnterpriseId;
    form.supplierEnterpriseId = data.supplierEnterpriseId ?? '';
    form.name = data.name;
    form.needPeopleNumber = data.needPeopleNumber;
    form.billingMethod = data.billingMethod;
    form.totalPieceQuantity = data.totalPieceQuantity;
    form.serviceFee = data.serviceFee;
    form.settlementCycle = data.settlementCycle;
    form.settlementDate = data.settlementDate;
    form.totalPieceQuantity = data.totalPieceQuantity;
    form.benefits = data.benefits?.map((x) => x.benefitCode) ?? [];
    form.ageMinLimit = data.ageMinLimit;
    form.ageMaxLimit = data.ageMaxLimit;
@@ -605,11 +567,8 @@
      format(data.applyEndTime, 'YYYY-MM-DD 23:59:59'),
    ];
    form.settlementAccess = data.settlementAccess;
    form.needPeopleNumber = data.needPeopleNumber;
    form.totalServiceFee = data.estimatedServiceFee;
    form.insuranceProductId = data.insuranceProductId ?? '';
    supplierEnterpriseChange();
  },
  enabled: isEdit,
});
@@ -628,7 +587,6 @@
    name: 'TaskManageList',
  });
}
const productFormRef = ref<FormInstance>();
function handleConfirm() {
  if (!productFormRef.value) return;
@@ -641,42 +599,6 @@
  });
}
// 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;
//   }
// });
function supplierEnterpriseChange() {
  if (form.supplierEnterpriseId) {
    form.isConfiguredInsurance = supplierEnterpriseSelect.value?.find(
      (item) => item.value === form.supplierEnterpriseId
    )?.data?.isConfiguredInsurance;
  }
}
async function calcTaskTotalServiceFee() {
  try {
    let params: API.CalcTaskTotalServiceFeeCommand = {
@@ -687,12 +609,7 @@
      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'),
      supplierEnterpriseId: form.supplierEnterpriseId,
      checkReceiveMethods: form.checkReceiveMethods,
    };
    if (form.insuranceProductId) {
      params.insuranceProductId = form.insuranceProductId;
    }
    let res = await taskServices.calcTaskTotalServiceFee(params);
    if (res) {
      form.totalServiceFee = res.totalServiceFee;
@@ -732,7 +649,6 @@
      description: form.description,
      checkReceiveMethods: form.checkReceiveMethods,
      settlementAccess: form.settlementAccess,
      insuranceProductId: form.insuranceProductId ? form.insuranceProductId : null,
    };
    if (form.billingMethod !== EnumBillingMethod.Face) {
      params.serviceFee = form.serviceFee;
@@ -757,7 +673,7 @@
        callback: (action) => {
          if (action === 'confirm') {
            router.push({
              name: 'BalanceManageV2',
              name: 'EnterpriseBalanceManage',
            });
          }
        },