| | |
| | | <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <template |
| | | v-if=" |
| | | form.billingMethod === EnumBillingMethod.Hour || |
| | | form.billingMethod === EnumBillingMethod.Day |
| | | " |
| | | > |
| | | <nut-form-item |
| | | label="核定工时:" |
| | | class="bole-form-item" |
| | | prop="verifyWorkHours" |
| | | label-width="90" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.verifyWorkHours" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请输入核定工时" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | /> |
| | | <div class="form-input-unit">{{ '小时/天' }}</div> |
| | | </div> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="超时服务费:" |
| | | class="bole-form-item" |
| | | prop="timeoutServiceFee" |
| | | label-width="90" |
| | | > |
| | | <div class="bole-form-input-wrapper"> |
| | | <NumberInput |
| | | v-model.trim="form.timeoutServiceFee" |
| | | class="nut-input-text bole-input-text" |
| | | placeholder="请输入超时服务费" |
| | | :min="0" |
| | | :max="999999999999" |
| | | :precision="2" |
| | | type="text" |
| | | /> |
| | | <div class="form-input-unit">{{ '元/小时' }}</div> |
| | | </div> |
| | | </nut-form-item> |
| | | </template> |
| | | <nut-form-item |
| | | label="结算方式:" |
| | | class="bole-form-item" |
| | |
| | | /> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="详细地址:" |
| | | label="地点说明:" |
| | | class="bole-form-item" |
| | | prop="addressDetail" |
| | | label-width="90px" |
| | | required |
| | | > |
| | | <nut-input v-model="form.addressDetail" placeholder="请输入详细地址"> </nut-input> |
| | | <nut-input v-model="form.addressDetail" placeholder="请输入地点说明"> </nut-input> |
| | | </nut-form-item> |
| | | <nut-form-item label="任务说明:" class="bole-form-item" prop="description" label-width="90px"> |
| | | <nut-textarea v-model="form.description" placeholder="请输入任务说明"> </nut-textarea> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="任务开始日期:" |
| | |
| | | v-model="form.beginTime" |
| | | :minDate="nowDate" |
| | | placeholder="请选择任务开始日期" |
| | | @change="timeChange" |
| | | ></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item label="任务结束日期:" class="bole-form-item" prop="endTime" label-width="90px"> |
| | |
| | | :minDate="nowDate" |
| | | placeholder="请选择任务结束日期" |
| | | ></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="报名开始日期:" |
| | | class="bole-form-item" |
| | | prop="applyBeginTime" |
| | | label-width="90px" |
| | | > |
| | | <ChooseInputWithDatePicker |
| | | v-model="form.applyBeginTime" |
| | | :minDate="form.beginTime ? dayjs(form.beginTime).toDate() : nowDate" |
| | | placeholder="请选择报名开始日期" |
| | | ></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="报名结束日期:" |
| | | class="bole-form-item" |
| | | prop="applyEndTime" |
| | | label-width="90px" |
| | | > |
| | | <ChooseInputWithDatePicker |
| | | v-model="form.applyEndTime" |
| | | :minDate="form.beginTime ? dayjs(form.beginTime).toDate() : nowDate" |
| | | placeholder="请选择报名结束日期" |
| | | ></ChooseInputWithDatePicker> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="验收方式:" |
| | | class="bole-form-item" |
| | | prop="checkReceiveMethod" |
| | | label-width="90px" |
| | | > |
| | | <nut-radio-group v-model="form.checkReceiveMethod" direction="horizontal"> |
| | | <BlRadio |
| | | :label="Number(key)" |
| | | v-for="(val, key) in EnumTaskCheckReceiveMethodText" |
| | | :key="key" |
| | | >{{ val }}</BlRadio |
| | | > |
| | | </nut-radio-group> |
| | | </nut-form-item> |
| | | <nut-form-item |
| | | label="结算方式:" |
| | | class="bole-form-item" |
| | | prop="settlementAccess" |
| | | label-width="90px" |
| | | required |
| | | > |
| | | <ChooseInputWithPicker |
| | | v-model="form.settlementAccess" |
| | | placeholder="请选择结算方式" |
| | | :value-enum="settlementAccessList" |
| | | :disabled="isEdit" |
| | | /> |
| | | </nut-form-item> |
| | | </nut-form> |
| | | </ContentScrollView> |
| | |
| | | EnumUserGenderTextOptions, |
| | | EnumSettlementCycleDateWeekArray, |
| | | EnumSettlementCycleDateMonthArray, |
| | | EnumTaskCheckReceiveMethod, |
| | | EnumTaskCheckReceiveMethodText, |
| | | EnumEnterpriseWalletAccess, |
| | | EnumEnterpriseWalletAccessText, |
| | | } from '@12333/constants'; |
| | | import { |
| | | ChooseInputWithPicker, |
| | |
| | | ChooseInputWithCheckbox, |
| | | } from '@12333/components'; |
| | | import { FormValidator, Message } from '@12333/utils'; |
| | | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; |
| | | import * as taskServices from '@12333/services/apiV2/task'; |
| | | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { goBack } from '@/utils'; |
| | | import { useAllAreaList, useDictionaryDataSelect } from '@12333/hooks'; |
| | | import { |
| | | useAllAreaList, |
| | | useDictionaryDataSelect, |
| | | useEnterpriseWalletAccessSelect, |
| | | } from '@12333/hooks'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import dayjs from 'dayjs'; |
| | | |
| | |
| | | |
| | | const { userDetail } = useUser(); |
| | | const { findAreaNameFromCode } = useAllAreaList(); |
| | | const { settlementAccessList } = useEnterpriseWalletAccessSelect(); |
| | | const router = Taro.useRouter(); |
| | | const taskId = router.params?.id ?? ''; |
| | | const isEdit = !!taskId; |
| | | const isCopy = router.params?.isCopy === 'true'; |
| | | |
| | | const nowDate = dayjs().toDate(); |
| | | const applyBeginTimeMinDate = computed(() => { |
| | | return form.applyBeginTime |
| | | ? dayjs(form.applyBeginTime).toDate() |
| | | : form.beginTime |
| | | ? dayjs(form.beginTime).toDate() |
| | | : nowDate; |
| | | }); |
| | | |
| | | const { dictionaryDataList: WelfareTypeList } = useDictionaryDataSelect({ |
| | | categoryCode: CategoryCode.Welfare, |
| | |
| | | |
| | | weMapInfo: {} as WeMapModel, |
| | | addressDetail: '', |
| | | |
| | | verifyWorkHours: null as number, |
| | | timeoutServiceFee: null as number, |
| | | description: '', |
| | | checkReceiveMethod: EnumTaskCheckReceiveMethod.CheckIn, |
| | | applyBeginTime: '', |
| | | applyEndTime: '', |
| | | settlementAccess: '' as any as EnumEnterpriseWalletAccess, |
| | | }); |
| | | |
| | | const rules = reactive<FormRules>({ |
| | | name: [{ required: true, message: '请输入任务名称' }], |
| | | genderLimit: [{ required: true, message: '请选择性别要求' }], |
| | | settlementCycleDate: [{ required: true, message: '请设置结算日期' }], |
| | | addressDetail: [{ required: true, message: '请输入详细地址' }], |
| | | settlementAccess: [{ required: true, message: '请选择结算方式' }], |
| | | // addressDetail: [{ required: true, message: '请输入详细地址' }], |
| | | billingMethod: [ |
| | | { |
| | | required: true, |
| | |
| | | }, |
| | | }, |
| | | ], |
| | | applyBeginTime: [ |
| | | { |
| | | required: true, |
| | | message: '请选择报名开始日期', |
| | | validator(value) { |
| | | if (!value) return Promise.reject('请选择报名开始日期'); |
| | | if (dayjs(value).isBefore(dayjs(form.beginTime))) |
| | | return Promise.reject('报名开始日期需大于任务开始日期'); |
| | | if (dayjs(value).isAfter(dayjs(form.endTime))) |
| | | return Promise.reject('报名开始日期需小于任务结束日期'); |
| | | return Promise.resolve(true); |
| | | }, |
| | | }, |
| | | ], |
| | | applyEndTime: [ |
| | | { |
| | | required: true, |
| | | message: '请选择报名结束日期', |
| | | validator(value) { |
| | | if (!value) return Promise.reject('请选择报名结束日期'); |
| | | if (dayjs(value).isBefore(dayjs(form.applyBeginTime))) |
| | | return Promise.reject('报名结束日期需大于报名开始日期'); |
| | | if (dayjs(value).isAfter(dayjs(form.endTime))) |
| | | return Promise.reject('报名结束日期需小于任务结束日期'); |
| | | return Promise.resolve(true); |
| | | }, |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | const { |
| | |
| | | longitude: data.longitude, |
| | | addressName: data.addressName, |
| | | }; |
| | | form.description = data.description; |
| | | form.verifyWorkHours = data.verifyWorkHours; |
| | | form.timeoutServiceFee = data.timeoutServiceFee; |
| | | form.checkReceiveMethod = data.checkReceiveMethod; |
| | | form.applyBeginTime = dayjs(data.applyBeginTime).format('YYYY-MM-DD'); |
| | | form.applyEndTime = dayjs(data.applyEndTime).format('YYYY-MM-DD'); |
| | | form.settlementAccess = data.settlementAccess; |
| | | }, |
| | | }); |
| | | |
| | |
| | | latitude: form.weMapInfo.latitude, |
| | | beginTime: dayjs(form.beginTime).format('YYYY-MM-DD 00:00:00'), |
| | | endTime: dayjs(form.endTime).format('YYYY-MM-DD 23:59:59'), |
| | | description: form.description, |
| | | verifyWorkHours: form.verifyWorkHours, |
| | | timeoutServiceFee: form.timeoutServiceFee, |
| | | checkReceiveMethod: form.checkReceiveMethod, |
| | | 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, |
| | | }; |
| | | if (isEdit) { |
| | | params.id = taskId; |
| | |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function timeChange() { |
| | | form.applyBeginTime = ''; |
| | | form.applyEndTime = ''; |
| | | } |
| | | |
| | | function applyTimeChange() { |
| | | form.applyEndTime = ''; |
| | | } |
| | | |
| | | function settleTypeChange() { |
| | | form.settlementDate = null as number; |
| | | } |