From 676578f3be736ef109d1c8a15da265a62c66ba04 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期二, 12 八月 2025 13:13:23 +0800 Subject: [PATCH] feat: 接口对接 --- apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue | 146 +++++++++++++++++++++++++++++++++++------------- 1 files changed, 105 insertions(+), 41 deletions(-) diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue index cfccdcb..3eb5d6a 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue @@ -1,35 +1,35 @@ <template> <ContentScrollView :paddingH="false"> <nut-form :model-value="form" ref="formRef" :rules="rules"> - <nut-form-item label="澶村儚:" class="bole-form-item" prop="avatarUrl"> - <Uploader v-model:file-list="form.avatarUrl" :maximum="1" class="bole-uploader"> </Uploader> + <nut-form-item label="澶村儚:" class="bole-form-item" prop="avatar"> + <Uploader v-model:file-list="form.avatar" :maximum="1" class="bole-uploader"> </Uploader> </nut-form-item> <nut-form-item label="濮撳悕:" class="bole-form-item" prop="name"> - <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ヤ紒涓氬悕绉�" /> + <nut-input v-model.trim="form.name" placeholder="璇疯緭鍏ュ鍚�" /> </nut-form-item> - <nut-form-item label="鎵嬫満鍙�:" class="bole-form-item" prop="phone" required> - <nut-input v-model.trim="form.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" type="text" /> + <nut-form-item label="鎵嬫満鍙�:" class="bole-form-item" prop="contactPhoneNumber" required> + <nut-input v-model.trim="form.contactPhoneNumber" placeholder="璇疯緭鍏ユ墜鏈哄彿" type="text" /> </nut-form-item> - <nut-form-item label="韬唤:" class="bole-form-item" prop="socialIdentity"> + <nut-form-item label="韬唤:" class="bole-form-item" prop="personalIdentityCode"> <ChooseInputWithPicker - v-model="form.socialIdentity" + v-model="form.personalIdentityCode" placeholder="璇烽�夋嫨韬唤" - :value-enum="IdentityTypeList" + :value-enum="identityList" /> </nut-form-item> - <nut-form-item label="瀛﹀巻:" class="bole-form-item" prop="educationalLevel"> + <nut-form-item label="瀛﹀巻:" class="bole-form-item" prop="educationalBackgroundCode"> <ChooseInputWithPicker - v-model="form.educationalLevel" + v-model="form.educationalBackgroundCode" placeholder="璇烽�夋嫨瀛﹀巻" - :value-enum="EducationTypeList" + :value-enum="educationList" /> </nut-form-item> - <nut-form-item label="甯搁┗鍩庡競:" class="bole-form-item" prop="gender"> - <ChooseInputWithPicker - v-model="form.gender" + <nut-form-item label="甯搁┗鍩庡競:" class="bole-form-item" prop="areaList"> + <ChooseInputWithAreaPicker + :columns="areaTree" + v-model="form.areaList" placeholder="璇烽�夋嫨甯搁┗鍩庡競" - :value-enum="TaskStatusText" - /> + ></ChooseInputWithAreaPicker> </nut-form-item> </nut-form> </ContentScrollView> @@ -40,39 +40,86 @@ <script setup lang="ts"> import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; -import { ChooseInputWithPicker } from '@12333/components'; -import { TaskStatusText, TaskStatus } from '@/constants'; -import { convertApi2FormUrlOnlyOne } from '@12333/utils'; -import { useUser } from '@/hooks'; -import { useSearchSettingType } from '@12333/hooks'; -import { SearchType } from '@12333/constants'; +import { ChooseInputWithPicker, ChooseInputWithAreaPicker } from '@12333/components'; +import { convertApi2FormUrlOnlyOne, Message, setOSSLink } from '@12333/utils'; +import { useAreaTree, useDictionaryDataSelect } from '@12333/hooks'; +import { AreaType, CategoryCode } from '@12333/constants'; +import * as userResumeServices from '@12333/services/apiV2/userResume'; +import Taro from '@tarojs/taro'; +import { useQuery } from '@tanstack/vue-query'; +import { useEventChannel } from 'senin-mini/hooks'; +import { goBack } from '@/utils'; defineOptions({ name: 'InnerPage', }); -const { searchSettingTypeList: EducationTypeList } = useSearchSettingType({ - searchType: SearchType.Education, +const { updateUserResume } = useUpdateResume(); + +const eventChannel = useEventChannel(); + +const { dictionaryDataList: identityList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Identity, }); -const { searchSettingTypeList: IdentityTypeList } = useSearchSettingType({ - searchType: SearchType.Identity, + +const { dictionaryDataList: educationList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Education, +}); + +const { areaTree } = useAreaTree({ + maxLayer: AreaType.City, }); const form = reactive({ - // avatarUrl: convertApi2FormUrlOnlyOne(userDetail.value?.originalAvatarUrl), + avatar: [], name: '', - phone: '', - gender: TaskStatus.All, - socialIdentity: '', - educationalLevel: '', - areaList: [] as number[], + contactPhoneNumber: '', + personalIdentityCode: '', + educationalBackgroundCode: '', + areaList: [] as string[], +}); + +const { + isLoading, + isError, + data: detail, + refetch, +} = useQuery({ + queryKey: ['userResumeServices/getUserResumePersonal'], + queryFn: async () => { + return await userResumeServices.getUserResumePersonal( + {}, + { + showLoading: false, + } + ); + }, + placeholderData: () => ({} as API.GetUserResumePersonalQueryResult), + onSuccess(data) { + form.avatar = convertApi2FormUrlOnlyOne(data.avatar); + form.name = data.name ?? ''; + form.contactPhoneNumber = data.contactPhoneNumber ?? ''; + form.personalIdentityCode = data.personalIdentityCode ?? ''; + form.educationalBackgroundCode = data.educationalBackgroundCode ?? ''; + form.areaList = [data.provinceCode, data.cityCode].filter(Boolean); + }, }); const rules = reactive<FormRules>({ - phone: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }], - socialIdentity: [{ required: true, message: '璇烽�夋嫨韬唤' }], - educationalLevel: [{ required: true, message: '璇烽�夋嫨瀛﹀巻' }], - areaList: [{ required: true, message: '璇烽�夋嫨甯搁┗鍩庡競' }], + contactPhoneNumber: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }], + personalIdentityCode: [{ required: true, message: '璇烽�夋嫨韬唤' }], + educationalBackgroundCode: [{ required: true, message: '璇烽�夋嫨瀛﹀巻' }], + areaList: [ + { + required: true, + validator: () => { + if (!form.areaList.length) { + return Promise.reject('璇烽�夋嫨甯搁┗鍩庡競'); + } + return Promise.resolve(); + }, + }, + ], }); const formRef = ref<any>(null); function handleConfirm() { @@ -84,9 +131,26 @@ }); } -function confirm() {} +async function confirm() { + try { + let params: API.SaveUserResumePersonalCommand = { + name: form.name, + avatar: form.avatar?.[0]?.path ?? '', + contactPhoneNumber: form.contactPhoneNumber, + educationalBackgroundCode: form.educationalBackgroundCode, + personalIdentityCode: form.personalIdentityCode, + provinceCode: form.areaList?.[0] ?? '', + cityCode: form.areaList?.[1] ?? '', + }; + let res = await userResumeServices.saveUserResumePersonal(params); + if (res) { + Message.success('淇濆瓨鎴愬姛', { + onClosed() { + goBack(); + updateUserResume(); + }, + }); + } + } catch (error) {} +} </script> - -<style lang="scss"> -@import '@/styles/common.scss'; -</style> -- Gitblit v1.9.1