From 4e2b08ec7c558498592a1e9b32bae8016b0906ac Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期五, 08 八月 2025 10:54:10 +0800 Subject: [PATCH] fix: s --- apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue | 247 ++++++++++++++++++++++++++++--------------------- 1 files changed, 140 insertions(+), 107 deletions(-) diff --git a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue index caf284e..8e810c9 100644 --- a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue +++ b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue @@ -1,32 +1,32 @@ <template> <ContentScrollView :paddingH="false"> <nut-form :model-value="form" ref="formRef" :rules="rules"> - <nut-form-item label="浠诲姟鍚嶇О:" class="bole-form-item" prop="taskName" label-width="90px"> - <nut-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�"> </nut-input> + <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> <nut-form-item label="鏈嶅姟璐�:" class="bole-form-item alignTop" - prop="feeType" + prop="billingMethod" 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">{{ + <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> </nut-form-item> - <nut-form-item label=" " class="bole-form-item" prop="fee" label-width="0"> + <nut-form-item label=" " class="bole-form-item" prop="serviceFee" label-width="0"> <div class="bole-form-input-wrapper"> <nut-input - v-model.trim="form.fee" + v-model.trim="form.serviceFee" class="nut-input-text bole-input-text" placeholder="璇疯緭鍏ユ湇鍔¤垂" type="text" /> - <div class="form-input-unit">{{ SalaryTimeTypeEnumUnit[form.feeType] }}</div> + <div class="form-input-unit">{{ BillingMethodEnumUnit[form.billingMethod] }}</div> </div> </nut-form-item> <nut-form-item @@ -36,18 +36,15 @@ required label-width="90px" > - <nut-radio-group v-model="form.settleType" direction="horizontal"> - <BlRadio - :label="Number(key)" - v-for="(val, key) in FlexTaskSettleTypeEnumText" - :key="key" - >{{ val }}</BlRadio - > + <nut-radio-group v-model="form.settlementCycle" direction="horizontal"> + <BlRadio :label="Number(key)" v-for="(val, key) in EnumSettlementCycleText" :key="key">{{ + val + }}</BlRadio> </nut-radio-group> </nut-form-item> - <nut-form-item label="绂忓埄:" class="bole-form-item" prop="settleType" label-width="90px"> + <nut-form-item label="绂忓埄:" class="bole-form-item" prop="benefits" label-width="90px"> <ChooseInputWithCheckbox - v-model="form.listAideIds" + v-model="form.benefits" title="璇烽�夋嫨绂忓埄" :columns="WelfareTypeList" placeholder="璇烽�夋嫨绂忓埄" @@ -56,62 +53,79 @@ <nut-form-item label="骞撮緞鑼冨洿:" class="bole-form-item" - prop="minAge" + prop="ageMinLimit" required label-width="90px" > <div class="bole-form-input-wrapper"> <NumberInput - v-model.trim="form.minAge" + v-model.trim="form.ageMinLimit" class="nut-input-text bole-input-text" placeholder="璇烽�夋嫨骞撮緞鑼冨洿" :min="1" /> <div class="form-input-separator">鑷�</div> <NumberInput - v-model.trim="form.maxAge" + v-model.trim="form.ageMaxLimit" class="nut-input-text bole-input-text" placeholder="璇烽�夋嫨骞撮緞鑼冨洿" :min="1" /> </div> </nut-form-item> - <nut-form-item label="鎬у埆:" class="bole-form-item" prop="sexType" label-width="90px"> + <nut-form-item + label="鎬у埆瑕佹眰:" + class="bole-form-item" + prop="genderLimit" + label-width="90px" + required + > <ChooseInputWithPicker - v-model="form.sexType" + v-model="form.genderLimit" placeholder="璇烽�夋嫨鎬у埆瑕佹眰" - :value-enum="GenderText" + :value-enum="EnumUserGenderText" /> </nut-form-item> - <nut-form-item label="璧勬牸璇佷功:" class="bole-form-item" prop="settleType" label-width="90px"> + <nut-form-item + label="璧勬牸璇佷功:" + class="bole-form-item" + prop="credentialLimits" + label-width="90px" + > <ChooseInputWithCheckbox - v-model="form.listCertionIds" + v-model="form.credentialLimits" title="璇烽�夋嫨璧勬牸璇佷功" :columns="CertificateTypeList" placeholder="璇烽�夋嫨璧勬牸璇佷功" /> </nut-form-item> - <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="areaList" required> - <!-- <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鎵�鍦ㄥ湴" v-model="form.weMapInfo" /> --> - <ChooseInputWithAreaPicker + <nut-form-item label="浠诲姟鍦扮偣" class="bole-form-item" prop="weMapInfo" required> + <ChooseLocationInput placeholder="璇烽�夋嫨浠诲姟鍦扮偣" v-model="form.weMapInfo" /> + <!-- <ChooseInputWithAreaPicker :columns="areaTreeList" v-model="form.areaList" placeholder="璇烽�夋嫨鎵�鍦ㄥ湴鍖�" - ></ChooseInputWithAreaPicker> + ></ChooseInputWithAreaPicker> --> </nut-form-item> - <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 + label="璇︾粏鍦板潃:" + class="bole-form-item" + prop="addressDetail" + label-width="90px" + required + > + <nut-input v-model="form.addressDetail" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�"> </nut-input> </nut-form-item> <nut-form-item label="浠诲姟寮�濮嬫棩鏈�:" class="bole-form-item" - prop="startDate" + prop="beginTime" label-width="90px" > - <ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker> + <ChooseInputWithDatePicker v-model="form.beginTime"></ChooseInputWithDatePicker> </nut-form-item> - <nut-form-item label="浠诲姟缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate" label-width="90px"> - <ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker> + <nut-form-item label="浠诲姟缁撴潫鏃ユ湡:" class="bole-form-item" prop="endTime" label-width="90px"> + <ChooseInputWithDatePicker v-model="form.endTime"></ChooseInputWithDatePicker> </nut-form-item> </nut-form> </ContentScrollView> @@ -124,11 +138,14 @@ <script setup lang="ts"> import { useUser } from '@/hooks'; import { - FlexTaskSettleTypeEnum, - FlexTaskSettleTypeEnumText, - FlexTaskFeeTypeEnum, - FlexTaskFeeTypeEnumText, - SalaryTimeTypeEnumUnit, + CategoryCode, + EnumBillingMethod, + EnumSettlementCycle, + EnumUserGender, + EnumBillingMethodText, + EnumUserGenderText, + EnumSettlementCycleText, + BillingMethodEnumUnit, } from '@12333/constants'; import { ChooseInputWithPicker, @@ -141,11 +158,11 @@ } 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 { Gender, GenderText, SearchType } from '@12333/constants'; -import { useAllAreaList, useSearchSettingType } from '@12333/hooks'; +import { useAllAreaList, useDictionaryDataSelect } from '@12333/hooks'; import { useQuery } from '@tanstack/vue-query'; import dayjs from 'dayjs'; @@ -154,56 +171,63 @@ }); const { userDetail } = useUser(); -const { areaTreeList } = useAllAreaList(); +const { findAreaNameFromCode } = useAllAreaList(); const router = Taro.useRouter(); const taskId = router.params?.taskId ?? ''; const isEdit = !!taskId; const isCopy = router.params?.isCopy === 'true'; console.log('isCopy: ', router.params?.isCopy); -const WelfareTypeList = ref([]); -const CertificateTypeList = ref([]); +const { dictionaryDataList: WelfareTypeList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Welfare, +}); +const { dictionaryDataList: CertificateTypeList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.CertificateType, +}); const form = reactive({ - taskName: '', - feeType: FlexTaskFeeTypeEnum.OfMonth, - fee: 0, - settleType: FlexTaskSettleTypeEnum.OfMonth, - listAideIds: [] as string[], - minAge: 0, - maxAge: 0, - sexType: Gender.Male, - listCertionIds: [] as string[], - address: '', - startDate: '', - endDate: '', - areaList: [] as number[], + name: '', + billingMethod: EnumBillingMethod.Month, + serviceFee: '' as any as number, + settlementCycle: EnumSettlementCycle.Month, + benefits: [] as string[], + ageMinLimit: 0, + ageMaxLimit: 0, + genderLimit: '' as any as EnumUserGender, + credentialLimits: [] as string[], + // address: '', + beginTime: '', + endTime: '', + // areaList: [] as number[], weMapInfo: {} as WeMapModel, + addressDetail: '', }); const rules = reactive<FormRules>({ - taskName: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�' }], + name: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉�' }], + genderLimit: [{ required: true, message: '璇烽�夋嫨鎬у埆瑕佹眰' }], + addressDetail: [{ required: true, message: '璇疯緭鍏ヨ缁嗗湴鍧�' }], - // weMapInfo: [ - // { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap }, - // ], - areaList: [ - { required: true, message: '娓呮坊鍔犲伐浣滃湴鐐�', validator: FormValidator.validatorArray }, + weMapInfo: [ + { required: true, message: '璇疯缃伐浣滃湴鐐�', validator: FormValidator.validatorWeMap }, ], + // areaList: [ + // { required: true, message: '璇锋坊鍔犲伐浣滃湴鐐�', validator: FormValidator.validatorArray }, + // ], - minAge: [ + ageMinLimit: [ { required: true, message: '璇疯緭鍏ュ勾榫勮姹�', validator: () => { - if (!form.minAge) { + if (!form.ageMinLimit) { return Promise.reject('璇疯緭鍏ュ勾榫勮姹�'); } - if (!form.maxAge) { + if (!form.ageMaxLimit) { return Promise.reject('璇疯緭鍏ュ勾榫勮姹�'); } - if (Number(form.maxAge) <= Number(form.minAge)) { + if (Number(form.ageMaxLimit) <= Number(form.ageMinLimit)) { return Promise.reject('鏈�澶у勾榫勪笉鑳藉皬浜庢渶灏忓勾榫�'); } return Promise.resolve(true); @@ -211,19 +235,19 @@ }, ], - startDate: [ + beginTime: [ { required: true, message: '璇烽�夋嫨寮�濮嬫棩鏈�', }, ], - endDate: [ + endTime: [ { required: true, message: '璇烽�夋嫨缁撴潫鏃ユ湡', validator(value) { if (!value) return Promise.reject('璇烽�夋嫨缁撴潫鏃ユ湡'); - if (value <= form.startDate) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�'); + if (value <= form.beginTime) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�'); return Promise.resolve(true); }, }, @@ -236,32 +260,39 @@ data: detail, refetch, } = useQuery({ - queryKey: ['flexWorkerServices/getFlexTaskDto', taskId], + queryKey: ['taskServices/getTaskInfo', taskId], queryFn: async () => { - return await flexWorkerServices.getFlexTaskDto( + return await taskServices.getTaskInfo( { id: taskId }, { showLoading: false, } ); }, - placeholderData: () => ({} as API.GetFlexTaskDtoOutput), + placeholderData: () => ({} as API.GetTaskInfoQueryResult), 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; + form.name = data.name; + form.billingMethod = data.billingMethod; + form.serviceFee = data.serviceFee; + form.settlementCycle = data.settlementCycle; + form.benefits = (data.benefits ?? []).map((item) => item.code); + form.ageMinLimit = data.ageMinLimit; + form.ageMaxLimit = data.ageMaxLimit; + form.genderLimit = data.genderLimit; + form.credentialLimits = (data.credentialLimits ?? []).map((item) => item.code); + form.beginTime = dayjs(data.beginTime).format('YYYY-MM-DD'); + form.endTime = dayjs(data.endTime).format('YYYY-MM-DD'); + form.addressDetail = data.addressDetail; + form.weMapInfo = { + provinceName: findAreaNameFromCode(data.provinceCode), + cityName: findAreaNameFromCode(data.cityCode), + provinceCode: data.provinceCode, + cityCode: data.cityCode, + latitude: data.latitude, + longitude: data.longitude, + addressName: data.addressName, + }; }, }); @@ -277,30 +308,32 @@ async function confirm() { try { - let params: API.AddEidtFlexTaskInput = { - taskName: form.taskName, - 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], + let params: API.SaveTaskInfoCommand = { + name: form.name, + billingMethod: form.billingMethod, + serviceFee: form.serviceFee, + settlementCycle: form.settlementCycle, + benefits: form.benefits, + ageMinLimit: form.ageMinLimit, + ageMaxLimit: form.ageMaxLimit, + genderLimit: form.genderLimit, + credentialLimits: form.credentialLimits, + provinceCode: form.weMapInfo.provinceCode, + cityCode: form.weMapInfo.cityCode, + addressName: form.weMapInfo.addressName, + addressDetail: form.addressDetail, + longitude: form.weMapInfo.longitude, + latitude: form.weMapInfo.latitude, + beginTime: form.beginTime, + endTime: form.endTime, }; if (isEdit) { - params.taskId = taskId; + params.id = taskId; } if (isCopy) { - params.taskId = ''; + params.id = ''; } - let res = await flexWorkerServices.addEidtFlexTask(params); + let res = await taskServices.saveTaskInfo(params); if (res) { Message.success(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛', { onClosed() { -- Gitblit v1.9.1