From 286f1b727856d6b32a8d237f353ae008f3076deb Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期二, 11 三月 2025 17:48:15 +0800 Subject: [PATCH] feat: 接口对接 --- apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue | 176 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 138 insertions(+), 38 deletions(-) diff --git a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue index 0b3ad58..738ce69 100644 --- a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue +++ b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue @@ -6,10 +6,11 @@ </nut-form-item> <nut-form-item label="鏈嶅姟璐�:" - class="bole-form-item" + class="bole-form-item alignTop" prop="feeType" required label-width="90px" + label-position="top" > <nut-radio-group v-model="form.feeType" direction="horizontal"> <BlRadio :label="Number(key)" v-for="(val, key) in FlexTaskFeeTypeEnumText" :key="key">{{ @@ -17,7 +18,7 @@ }}</BlRadio> </nut-radio-group> </nut-form-item> - <nut-form-item label=" " class="bole-form-item" prop="fee" label-width="90px"> + <nut-form-item label=" " class="bole-form-item" prop="fee" label-width="0"> <div class="bole-form-input-wrapper"> <nut-input v-model.trim="form.fee" @@ -44,55 +45,62 @@ > </nut-radio-group> </nut-form-item> - <nut-form-item label="绂忓埄:" class="bole-form-item" prop="listAideIds" label-width="90px"> - <ChooseInputWithPicker + <nut-form-item label="绂忓埄:" class="bole-form-item" prop="settleType" label-width="90px"> + <ChooseInputWithCheckbox v-model="form.listAideIds" + title="璇烽�夋嫨绂忓埄" + :columns="WelfareTypeList" placeholder="璇烽�夋嫨绂忓埄" - :value-enum="TaskStatusText" /> </nut-form-item> <nut-form-item label="骞撮緞鑼冨洿:" class="bole-form-item" - prop="ageStart" + prop="minAge" required label-width="90px" > <div class="bole-form-input-wrapper"> <NumberInput - v-model.trim="form.ageStart" + v-model.trim="form.minAge" class="nut-input-text bole-input-text" placeholder="璇烽�夋嫨骞撮緞鑼冨洿" :min="1" /> <div class="form-input-separator">鑷�</div> <NumberInput - v-model.trim="form.ageEnd" + v-model.trim="form.maxAge" class="nut-input-text bole-input-text" placeholder="璇烽�夋嫨骞撮緞鑼冨洿" :min="1" /> </div> </nut-form-item> - <nut-form-item label="鎬у埆:" class="bole-form-item" prop="welfare" label-width="90px"> + <nut-form-item label="鎬у埆:" class="bole-form-item" prop="sexType" label-width="90px"> <ChooseInputWithPicker - v-model="form.welfare" + v-model="form.sexType" placeholder="璇烽�夋嫨鎬у埆瑕佹眰" - :value-enum="TaskStatusText" + :value-enum="GenderText" /> </nut-form-item> - <nut-form-item label="璧勬牸璇佷功:" class="bole-form-item" prop="welfare" label-width="90px"> - <ChooseInputWithPicker - v-model="form.welfare" - placeholder="璇烽�夋嫨瑕佹眰鐨勮祫鏍艰瘉涔�" - :value-enum="TaskStatusText" + <nut-form-item label="璧勬牸璇佷功:" class="bole-form-item" prop="settleType" label-width="90px"> + <ChooseInputWithCheckbox + v-model="form.listCertionIds" + title="璇烽�夋嫨璧勬牸璇佷功" + :columns="CertificateTypeList" + placeholder="璇烽�夋嫨璧勬牸璇佷功" /> </nut-form-item> - <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="weMapInfo" required> - <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鎵�鍦ㄥ湴" v-model="form.weMapInfo" /> + <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="areaList" required> + <!-- <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鎵�鍦ㄥ湴" v-model="form.weMapInfo" /> --> + <ChooseInputWithAreaPicker + :columns="areaTreeList" + v-model="form.areaList" + placeholder="璇烽�夋嫨鎵�鍦ㄥ湴鍖�" + ></ChooseInputWithAreaPicker> </nut-form-item> - <nut-form-item label="璇︾粏鍦板潃:" class="bole-form-item" prop="name" label-width="90px"> - <nut-input v-model="form.name" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"> </nut-input> + <nut-form-item label="璇︾粏鍦板潃:" class="bole-form-item" prop="address" label-width="90px"> + <nut-input v-model="form.address" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"> </nut-input> </nut-form-item> <nut-form-item label="浠诲姟寮�濮嬫棩鏈�:" @@ -115,8 +123,6 @@ <script setup lang="ts"> import { - TaskStatus, - TaskStatusText, FlexTaskSettleTypeEnum, FlexTaskSettleTypeEnumText, FlexTaskFeeTypeEnum, @@ -130,21 +136,37 @@ NumberInput, ChooseLocationInput, Radio as BlRadio, + ChooseInputWithAreaPicker, + ChooseInputWithCheckbox, } from '@12333/components'; import { FormValidator, Message } from '@12333/utils'; import * as flexWorkerServices from '@12333/services/api/FlexWorker'; import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; import Taro from '@tarojs/taro'; import { goBack } from '@/utils'; +import { Gender, GenderText, SearchType } from '@12333/constants'; +import { useAllAreaList, useSearchSettingType } from '@12333/hooks'; +import { useQuery } from '@tanstack/vue-query'; +import dayjs from 'dayjs'; defineOptions({ name: 'InnerPage', }); const { userDetail } = useUser(); +const { areaTreeList } = useAllAreaList(); const router = Taro.useRouter(); const taskId = router.params?.taskId ?? ''; -const isEdit = computed(() => !!taskId); +const isEdit = !!taskId; +const isCopy = router.params?.isCopy === 'true'; +console.log('isCopy: ', router.params?.isCopy); + +const { searchSettingTypeList: WelfareTypeList } = useSearchSettingType({ + searchType: SearchType.Welfare, +}); +const { searchSettingTypeList: CertificateTypeList } = useSearchSettingType({ + searchType: SearchType.CertificateType, +}); const form = reactive({ taskName: '', @@ -152,43 +174,101 @@ fee: 0, settleType: FlexTaskSettleTypeEnum.OfMonth, listAideIds: [] as string[], - - welfare: TaskStatus.All, - salaryTimeType: SalaryTimeTypeEnum.Month, - salaryType: SalaryType.month, + minAge: 0, + maxAge: 0, + sexType: Gender.Male, + listCertionIds: [] as string[], + address: '', startDate: '', endDate: '', - ageStart: '', - ageEnd: '', + areaList: [] as number[], + weMapInfo: {} as WeMapModel, }); const rules = reactive<FormRules>({ taskName: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�' }], - weMapInfo: [ - { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap }, + // weMapInfo: [ + // { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap }, + // ], + areaList: [ + { required: true, message: '娓呮坊鍔犲伐浣滃湴鐐�', validator: FormValidator.validatorArray }, ], - ageStart: [ + minAge: [ { required: true, message: '璇疯緭鍏ュ勾榫勮姹�', validator: () => { - if (!form.ageStart) { + if (!form.minAge) { return Promise.reject('璇疯緭鍏ュ勾榫勮姹�'); } - if (!form.ageEnd) { + if (!form.maxAge) { return Promise.reject('璇疯緭鍏ュ勾榫勮姹�'); } - if (Number(form.ageEnd) <= Number(form.ageStart)) { + if (Number(form.maxAge) <= Number(form.minAge)) { return Promise.reject('鏈�澶у勾榫勪笉鑳藉皬浜庢渶灏忓勾榫�'); } return Promise.resolve(true); }, }, ], + + startDate: [ + { + required: true, + message: '璇烽�夋嫨寮�濮嬫棩鏈�', + }, + ], + endDate: [ + { + required: true, + message: '璇烽�夋嫨缁撴潫鏃ユ湡', + validator(value) { + if (!value) return Promise.reject('璇烽�夋嫨缁撴潫鏃ユ湡'); + if (value <= form.startDate) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�'); + return Promise.resolve(true); + }, + }, + ], }); + +const { + isLoading, + isError, + data: detail, + refetch, +} = useQuery({ + queryKey: ['flexWorkerServices/getFlexTaskDto', taskId], + queryFn: async () => { + return await flexWorkerServices.getFlexTaskDto( + { id: taskId }, + { + showLoading: false, + } + ); + }, + placeholderData: () => ({} as API.GetFlexTaskDtoOutput), + enabled: isEdit, + onSuccess(data) { + form.taskName = data.taskName; + form.feeType = data.feeType; + form.fee = data.fee; + form.settleType = data.settleType; + form.listAideIds = data.taskWeals?.length > 0 ? data.taskWeals.map((item) => item.id) : []; + form.minAge = data.minAge; + form.maxAge = data.maxAge; + form.sexType = data.sexType; + form.listCertionIds = data.taskCerts?.length > 0 ? data.taskCerts.map((item) => item.id) : []; + form.address = data.address; + form.startDate = dayjs(data.startDate).format('YYYY-MM-DD'); + form.endDate = dayjs(data.endDate).format('YYYY-MM-DD'); + form.areaList = [data.provinceId, data.cityId, data.areaId]; + form.address = data.address; + }, +}); + const formRef = ref<any>(null); function handleConfirm() { if (!formRef.value) return; @@ -203,14 +283,30 @@ try { let params: API.AddEidtFlexTaskInput = { taskName: form.taskName, - feeType: form.salaryType, + feeType: form.feeType, + fee: form.fee, + settleType: form.settleType, + listAideIds: form.listAideIds, + minAge: form.minAge, + maxAge: form.maxAge, + sexType: form.sexType, + listCertionIds: form.listCertionIds, + address: form.address, + startDate: form.startDate, + endDate: form.endDate, + provinceId: form.areaList[0], + cityId: form.areaList[1], + areaId: form.areaList[2], }; - if (isEdit.value) { + if (isEdit) { params.taskId = taskId; + } + if (isCopy) { + params.taskId = ''; } let res = await flexWorkerServices.addEidtFlexTask(params); if (res) { - Message.success(isEdit.value ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛', { + Message.success(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛', { onClosed() { goBack(); }, @@ -238,5 +334,9 @@ color: boleGetCssVar('text-color', 'primary'); flex-shrink: 0; } + + .form-input-separator { + margin-right: 10px; + } } </style> -- Gitblit v1.9.1