| | |
| | | <LoadingLayout :loading="isLoading && isEdit"> |
| | | <AppContainer> |
| | | <PageFormLayout title="基本信息"> |
| | | <ProForm :model="form" ref="productFormRef" label-width="110px" :is-read="isDetail"> |
| | | <ProForm :model="form" ref="productFormRef" label-width="120px" :is-read="isDetail"> |
| | | <ProFormCol> |
| | | <ProFormColItem :span="12"> |
| | | <ProFormItemV2 |
| | |
| | | :max="999999999999" |
| | | :precision="0" |
| | | unit="人" |
| | | @change="calcTaskTotalServiceFee" |
| | | ></ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | |
| | | }, |
| | | }, |
| | | ]" |
| | | @change="calcTaskTotalServiceFee" |
| | | > |
| | | <RadioWithExtra |
| | | v-model="form.billingMethod" |
| | |
| | | :max="999999999999" |
| | | :unit="EnumBillingMethodUnitText[form.billingMethod]" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | ></ProFormInputNumber> |
| | | </template> |
| | | </RadioWithExtra> |
| | |
| | | :max="999999999999" |
| | | unit="小时/天" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | ></ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | |
| | | :max="999999999999" |
| | | unit="件" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | ></ProFormInputNumber> |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | |
| | | </ProFormItemV2> |
| | | </ProFormColItem> |
| | | </ProFormCol> |
| | | <ProFormItemV2 label="预计服务费总额:" prop="totalServiceFee"> |
| | | {{ `${toThousand(form.totalServiceFee)}元` }} |
| | | </ProFormItemV2> |
| | | <ProFormItemV2 |
| | | label="结算方式:" |
| | | prop="settlementAccess" |
| | |
| | | EnumTaskCheckReceiveMethodText, |
| | | EnumEnterpriseWalletAccessText, |
| | | } from '@/constants'; |
| | | import { format, FormValidator } from '@/utils'; |
| | | import { format, FormValidator, toThousand } from '@/utils'; |
| | | import dayjs from 'dayjs'; |
| | | |
| | | defineOptions({ |
| | |
| | | }; |
| | | defineProps<Props>(); |
| | | const route = useRoute(); |
| | | const router = useRouter(); |
| | | const id = route.params.id as string; |
| | | const isEdit = !!id; |
| | | |
| | |
| | | }); |
| | | |
| | | const form = reactive({ |
| | | supplierEnterpriseId: '', |
| | | name: '', |
| | | billingMethod: EnumBillingMethod.Day, |
| | | serviceFee: null, |
| | |
| | | applyTime: [] as unknown as ModelValueType, |
| | | settlementAccess: '' as any as EnumEnterpriseWalletAccess, |
| | | needPeopleNumber: null as number, |
| | | |
| | | totalServiceFee: 0, |
| | | }); |
| | | |
| | | const { isLoading } = useQuery({ |
| | |
| | | }, |
| | | placeholderData: () => ({} as API.GetTaskInfoQueryResult), |
| | | onSuccess(data) { |
| | | form.supplierEnterpriseId = data.supplierEnterpriseId ?? ''; |
| | | form.name = data.name; |
| | | form.billingMethod = data.billingMethod; |
| | | form.serviceFee = data.serviceFee; |
| | |
| | | ]; |
| | | form.settlementAccess = data.settlementAccess; |
| | | form.needPeopleNumber = data.needPeopleNumber; |
| | | form.totalServiceFee = data.estimatedServiceFee; |
| | | }, |
| | | enabled: isEdit, |
| | | }); |
| | |
| | | |
| | | function handleTimeChange() { |
| | | form.applyTime = [] as unknown as ModelValueType; |
| | | calcTaskTotalServiceFee(); |
| | | } |
| | | |
| | | function handleBack() { |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | async function calcTaskTotalServiceFee() { |
| | | try { |
| | | let params: API.CalcTaskTotalServiceFeeCommand = { |
| | | billingMethod: form.billingMethod, |
| | | serviceFee: form.serviceFee ?? 0, |
| | | verifyWorkHours: form.verifyWorkHours ?? 0, |
| | | totalPieceQuantity: form.totalPieceQuantity, |
| | | 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'), |
| | | }; |
| | | let res = await taskServices.calcTaskTotalServiceFee(params); |
| | | if (res) { |
| | | form.totalServiceFee = res.totalServiceFee; |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function submit() { |
| | | try { |
| | | await calcTaskTotalServiceFee(); |
| | | let params: API.SaveTaskInfoCommand = { |
| | | supplierEnterpriseId: form.supplierEnterpriseId, |
| | | name: form.name, |
| | | needPeopleNumber: form.needPeopleNumber, |
| | | billingMethod: form.billingMethod, |
| | | totalPieceQuantity: form.totalPieceQuantity, |
| | | serviceFee: form.serviceFee, |
| | | settlementCycle: form.settlementCycle, |
| | | settlementDate: form.settlementDate ? form.settlementDate : 0, |
| | | totalPieceQuantity: form.totalPieceQuantity, |
| | | benefits: form.benefits, |
| | | ageMinLimit: form.ageMinLimit, |
| | | ageMaxLimit: form.ageMaxLimit, |
| | |
| | | checkReceiveMethods: form.checkReceiveMethods, |
| | | settlementAccess: form.settlementAccess, |
| | | }; |
| | | if (form.billingMethod !== EnumBillingMethod.Face) { |
| | | params.serviceFee = form.serviceFee; |
| | | } |
| | | 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) { |