| | |
| | | placeholder="请选择供应商" |
| | | :value-enum="supplierEnterpriseSelect" |
| | | :disabled="isEdit" |
| | | @change="supplierEnterpriseChange" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item label="任务名称:" class="bole-form-item" prop="name" label-width="90px"> |
| | |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="0" |
| | | @change="calcTaskTotalServiceFee" |
| | | /> |
| | | <div class="form-input-unit">人</div> |
| | | </div> |
| | |
| | | label-width="90px" |
| | | label-position="top" |
| | | > |
| | | <nut-radio-group v-model="form.billingMethod" direction="horizontal"> |
| | | <nut-radio-group |
| | | v-model="form.billingMethod" |
| | | direction="horizontal" |
| | | @change="calcTaskTotalServiceFee" |
| | | > |
| | | <BlRadio |
| | | :label="Number(key)" |
| | | v-for="(val, key) in EnumBillingMethodText" |
| | |
| | | :precision="2" |
| | | type="text" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | /> |
| | | <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div> |
| | | </div> |
| | |
| | | :precision="2" |
| | | type="text" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | /> |
| | | <div class="form-input-unit">{{ '小时/天' }}</div> |
| | | </div> |
| | |
| | | :precision="2" |
| | | type="text" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | /> |
| | | <div class="form-input-unit">{{ '件' }}</div> |
| | | </div> |
| | |
| | | v-model="form.endTime" |
| | | :minDate="nowDate" |
| | | placeholder="请选择任务结束日期" |
| | | @change="calcTaskTotalServiceFee()" |
| | | ></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | |
| | | {{ val }} |
| | | </nut-checkbox> |
| | | </nut-checkbox-group> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="保险产品:" |
| | | class="bole-form-item" |
| | | prop="insuranceProductId" |
| | | label-width="90px" |
| | | required |
| | | v-if=" |
| | | form.checkReceiveMethods.includes(EnumTaskCheckReceiveMethod.CheckIn) && |
| | | form.isConfiguredInsurance |
| | | " |
| | | > |
| | | <ChooseInputWithPicker |
| | | v-model="form.insuranceProductId" |
| | | placeholder="请选择保险产品" |
| | | :value-enum="enterpriseInsuranceProductSelect" |
| | | @change="calcTaskTotalServiceFee()" |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="结算方式:" |
| | |
| | | import { |
| | | useAllAreaList, |
| | | useDictionaryDataSelect, |
| | | useEnterpriseInsuranceProductSelect, |
| | | useEnterpriseWalletAccessSelect, |
| | | useGetSupplierEnterpriseSelect, |
| | | } from '@12333/hooks'; |
| | |
| | | const { findAreaNameFromCode } = useAllAreaList(); |
| | | |
| | | const { supplierEnterpriseSelect } = useGetSupplierEnterpriseSelect(); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const taskId = router.params?.id ?? ''; |
| | | const isEdit = !!taskId; |
| | | const isCopy = router.params?.isCopy === 'true'; |
| | | const isEdit = !!taskId && !isCopy; |
| | | |
| | | const nowDate = dayjs().toDate(); |
| | | const applyBeginTimeMinDate = computed(() => { |
| | |
| | | totalPieceQuantity: '' as any as number, |
| | | |
| | | totalServiceFee: null as number, |
| | | insuranceProductId: '', |
| | | isConfiguredInsurance: false, |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | |
| | | { |
| | | required: true, |
| | | message: '请选择验收方式', |
| | | validator(value) { |
| | | if (!value?.length) return Promise.reject('请选择验收方式'); |
| | | return Promise.resolve(true); |
| | | }, |
| | | }, |
| | | ], |
| | | insuranceProductId: [ |
| | | { |
| | | required: true, |
| | | message: '请选择保险产品', |
| | | validator(value) { |
| | | if (!value?.length) return Promise.reject('请选择保险产品'); |
| | | return Promise.resolve(true); |
| | | }, |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | const { settlementAccessList } = useEnterpriseWalletAccessSelect({ |
| | | supplierEnterpriseId: computed(() => form.supplierEnterpriseId), |
| | | }); |
| | | |
| | | const { enterpriseInsuranceProductSelect } = useEnterpriseInsuranceProductSelect({ |
| | | supplierEnterpriseId: computed(() => form.supplierEnterpriseId), |
| | | isConfiguredInsurance: computed(() => form.isConfiguredInsurance), |
| | | }); |
| | | |
| | | const { |
| | |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetTaskInfoQueryResult), |
| | | enabled: isEdit, |
| | | enabled: isEdit || isCopy, |
| | | onSuccess(data) { |
| | | form.supplierEnterpriseId = data.supplierEnterpriseId; |
| | | form.name = data.name; |
| | |
| | | latitude: data.latitude, |
| | | longitude: data.longitude, |
| | | addressName: data.addressName, |
| | | address: data.addressName, |
| | | }; |
| | | form.description = data.description; |
| | | form.verifyWorkHours = data.verifyWorkHours; |
| | |
| | | form.applyBeginTime = dayjs(data.applyBeginTime).format('YYYY-MM-DD'); |
| | | form.applyEndTime = dayjs(data.applyEndTime).format('YYYY-MM-DD'); |
| | | form.settlementAccess = data.settlementAccess; |
| | | form.insuranceProductId = data.insuranceProductId; |
| | | form.totalServiceFee = data.estimatedServiceFee; |
| | | |
| | | calcTaskTotalServiceFee(); |
| | | supplierEnterpriseChange(); |
| | | if (!!data.timeoutServiceFee) { |
| | | calcTaskTotalServiceFee(); |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | async function calcTaskTotalServiceFee() { |
| | | try { |
| | | console.log(); |
| | | if (!form.beginTime || !form.endTime) { |
| | | return; |
| | | } |
| | | |
| | | let params: API.CalcTaskTotalServiceFeeCommand = { |
| | | billingMethod: form.billingMethod, |
| | | serviceFee: form.serviceFee, |
| | | verifyWorkHours: form.verifyWorkHours, |
| | | totalPieceQuantity: form.totalPieceQuantity, |
| | | needPeopleNumber: form.needPeopleNumber, |
| | | needPeopleNumber: form.needPeopleNumber ? form.needPeopleNumber : 0, |
| | | beginTime: dayjs(form.beginTime).format('YYYY-MM-DD 00:00:00'), |
| | | endTime: dayjs(form.endTime).format('YYYY-MM-DD 23:59:59'), |
| | | supplierEnterpriseId: form.supplierEnterpriseId, |
| | | checkReceiveMethods: form.checkReceiveMethods, |
| | | }; |
| | | let res = await taskServices.calcTaskTotalServiceFee(params); |
| | | if (form.insuranceProductId) { |
| | | params.insuranceProductId = form.insuranceProductId; |
| | | } |
| | | let res = await taskServices.calcTaskTotalServiceFee(params, { showLoading: false }); |
| | | if (res) { |
| | | form.totalServiceFee = res.totalServiceFee; |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function supplierEnterpriseChange() { |
| | | if (form.supplierEnterpriseId) { |
| | | form.isConfiguredInsurance = supplierEnterpriseSelect.value?.find( |
| | | (item) => item.value === form.supplierEnterpriseId |
| | | )?.data?.isConfiguredInsurance; |
| | | } |
| | | } |
| | | |
| | | // const totalServiceFee = computed(() => { |
| | | // if (!form.beginTime || !form.endTime) { |
| | | // return 0; |
| | | // } |
| | | // var days = dayjs(form.endTime).diff(dayjs(form.beginTime), 'day') + 1; |
| | | // const serviceFee = form.serviceFee || 0; |
| | | // const needPeopleNumber = form.needPeopleNumber || 0; |
| | | // switch (form.billingMethod) { |
| | | // case EnumBillingMethod.Month: |
| | | // return serviceFee * Math.round(days / 30) * needPeopleNumber; |
| | | // case EnumBillingMethod.Day: |
| | | // return serviceFee * days * needPeopleNumber; |
| | | // case EnumBillingMethod.Hour: |
| | | // return serviceFee * (form.verifyWorkHours || 0) * days * needPeopleNumber; |
| | | // case EnumBillingMethod.Piece: |
| | | // return serviceFee * (form.totalPieceQuantity || 0); |
| | | // default: |
| | | // return 0; |
| | | // } |
| | | // }); |
| | | |
| | | const formRef = ref<any>(null); |
| | | function handleConfirm() { |
| | |
| | | name: form.name, |
| | | needPeopleNumber: form.needPeopleNumber, |
| | | billingMethod: form.billingMethod, |
| | | serviceFee: form.serviceFee, |
| | | // serviceFee: form.serviceFee, |
| | | totalPieceQuantity: form.totalPieceQuantity, |
| | | settlementCycle: form.settlementCycle, |
| | | settlementDate: form.settlementDate ? form.settlementDate : 0, |
| | |
| | | applyBeginTime: dayjs(form.applyBeginTime).format('YYYY-MM-DD 00:00:00'), |
| | | applyEndTime: dayjs(form.applyEndTime).format('YYYY-MM-DD 23:59:59'), |
| | | settlementAccess: form.settlementAccess, |
| | | insuranceProductId: form.insuranceProductId ? form.insuranceProductId : null, |
| | | }; |
| | | if (form.billingMethod !== EnumBillingMethod.Face) { |
| | | params.serviceFee = form.serviceFee; |
| | | } |
| | | if (isEdit) { |
| | | params.id = taskId; |
| | | } |
| | |
| | | function timeChange() { |
| | | form.applyBeginTime = ''; |
| | | form.applyEndTime = ''; |
| | | calcTaskTotalServiceFee(); |
| | | } |
| | | |
| | | function applyTimeChange() { |