| | |
| | | v-model="form.supplierEnterpriseId" |
| | | placeholder="请选择供应商" |
| | | :value-enum="supplierEnterpriseSelect" |
| | | :disabled="isEdit" |
| | | /> |
| | | </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"> |
| | | <BlRadio :label="Number(key)" v-for="(val, key) in EnumBillingMethodText" :key="key">{{ |
| | | val |
| | | }}</BlRadio> |
| | | <nut-radio-group |
| | | v-model="form.billingMethod" |
| | | direction="horizontal" |
| | | @change="calcTaskTotalServiceFee" |
| | | > |
| | | <BlRadio |
| | | :label="Number(key)" |
| | | v-for="(val, key) in EnumBillingMethodText" |
| | | :key="key" |
| | | :disabled="feeCannotEdit" |
| | | >{{ val }}</BlRadio |
| | | > |
| | | </nut-radio-group> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | /> |
| | | <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div> |
| | | </div> |
| | |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | /> |
| | | <div class="form-input-unit">{{ '小时/天' }}</div> |
| | | </div> |
| | |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | :disabled="feeCannotEdit" |
| | | /> |
| | | <div class="form-input-unit">{{ '元/小时' }}</div> |
| | | </div> |
| | |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | :disabled="feeCannotEdit" |
| | | @change="calcTaskTotalServiceFee" |
| | | /> |
| | | <div class="form-input-unit">{{ '件' }}</div> |
| | | </div> |
| | |
| | | direction="horizontal" |
| | | @change="settleTypeChange" |
| | | > |
| | | <BlRadio :label="Number(key)" v-for="(val, key) in EnumSettlementCycleText" :key="key">{{ |
| | | val |
| | | }}</BlRadio> |
| | | <BlRadio |
| | | :label="Number(key)" |
| | | v-for="(val, key) in EnumSettlementCycleText" |
| | | :key="key" |
| | | :disabled="feeCannotEdit" |
| | | >{{ val }}</BlRadio |
| | | > |
| | | </nut-radio-group> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | |
| | | v-model="form.endTime" |
| | | :minDate="nowDate" |
| | | placeholder="请选择任务结束日期" |
| | | @change="calcTaskTotalServiceFee()" |
| | | ></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | |
| | | <nut-form-item |
| | | label="验收方式:" |
| | | class="bole-form-item" |
| | | prop="checkReceiveMethod" |
| | | prop="checkReceiveMethods" |
| | | label-width="90px" |
| | | > |
| | | <!-- <nut-radio-group v-model="form.checkReceiveMethod" direction="horizontal"> |
| | |
| | | </nut-radio-group> --> |
| | | <nut-checkbox-group v-model="form.checkReceiveMethods"> |
| | | <nut-checkbox |
| | | :disabled="isEdit" |
| | | v-for="(val, key) in EnumTaskCheckReceiveMethodText" |
| | | :key="key" |
| | | :label="Number(key) as any" |
| | |
| | | prop="totalServiceFee" |
| | | label-width="110px" |
| | | > |
| | | {{ form.totalServiceFee }} |
| | | {{ `${toThousand(totalServiceFee)}元` }} |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | |
| | | ChooseInputWithAreaPicker, |
| | | ChooseInputWithCheckbox, |
| | | } from '@12333/components'; |
| | | import { FormValidator, Message } from '@12333/utils'; |
| | | import { FormValidator, Message, toThousand } from '@12333/utils'; |
| | | import * as taskServices from '@12333/services/apiV2/task'; |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import Taro from '@tarojs/taro'; |
| | |
| | | : form.beginTime |
| | | ? dayjs(form.beginTime).toDate() |
| | | : nowDate; |
| | | }); |
| | | |
| | | const feeCannotEdit = computed(() => { |
| | | return dayjs().isAfter(form.beginTime, 'second') && isEdit; |
| | | }); |
| | | |
| | | const { dictionaryDataList: WelfareTypeList } = useDictionaryDataSelect({ |
| | |
| | | }, |
| | | }, |
| | | ], |
| | | checkReceiveMethods: [ |
| | | { |
| | | required: true, |
| | | message: '请选择验收方式', |
| | | validator(value) { |
| | | if (!value?.length) return Promise.reject('请选择验收方式'); |
| | | return Promise.resolve(true); |
| | | }, |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | const { settlementAccessList } = useEnterpriseWalletAccessSelect({ |
| | |
| | | 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; |
| | | |
| | | if (!!data.timeoutServiceFee) { |
| | | calcTaskTotalServiceFee(); |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | async function calcTaskTotalServiceFee() { |
| | | try { |
| | | if (!form.beginTime || !form.endTime) { |
| | | return; |
| | | } |
| | | if (form.billingMethod !== EnumBillingMethod.Piece && !form.needPeopleNumber) { |
| | | return; |
| | | } |
| | | let params: API.CalcTaskTotalServiceFeeCommand = { |
| | | billingMethod: form.billingMethod, |
| | | serviceFee: form.serviceFee, |
| | |
| | | beginTime: dayjs(form.beginTime).format('YYYY-MM-DD 00:00:00'), |
| | | endTime: dayjs(form.endTime).format('YYYY-MM-DD 23:59:59'), |
| | | }; |
| | | let res = await taskServices.calcTaskTotalServiceFee(params); |
| | | return res; |
| | | let res = await taskServices.calcTaskTotalServiceFee(params, { showLoading: false }); |
| | | if (res) { |
| | | form.totalServiceFee = res.totalServiceFee; |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | |
| | | 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() { |
| | |
| | | function timeChange() { |
| | | form.applyBeginTime = ''; |
| | | form.applyEndTime = ''; |
| | | calcTaskTotalServiceFee(); |
| | | } |
| | | |
| | | function applyTimeChange() { |