From e3ae5da789eb35217a4a377cab0ff3241ceaf72a Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期一, 11 八月 2025 13:42:07 +0800 Subject: [PATCH] feat: 接口对接 --- apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue | 133 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 107 insertions(+), 26 deletions(-) diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue index 7b1d765..61ef2e5 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="gender"> + <nut-form-item label="韬唤:" class="bole-form-item" prop="personalIdentityCode"> <ChooseInputWithPicker - v-model="form.gender" + v-model="form.personalIdentityCode" placeholder="璇烽�夋嫨韬唤" - :value-enum="TaskStatusText" + :value-enum="identityList" /> </nut-form-item> - <nut-form-item label="瀛﹀巻:" class="bole-form-item" prop="gender"> + <nut-form-item label="瀛﹀巻:" class="bole-form-item" prop="educationalBackgroundCode"> <ChooseInputWithPicker - v-model="form.gender" + v-model="form.educationalBackgroundCode" placeholder="璇烽�夋嫨瀛﹀巻" - :value-enum="TaskStatusText" + :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="completeAreaTree" + v-model="form.areaList" placeholder="璇烽�夋嫨甯搁┗鍩庡競" - :value-enum="TaskStatusText" - /> + ></ChooseInputWithAreaPicker> </nut-form-item> </nut-form> </ContentScrollView> @@ -40,26 +40,81 @@ <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 { ChooseInputWithPicker, ChooseInputWithAreaPicker } from '@12333/components'; +import { convertApi2FormUrlOnlyOne, Message, setOSSLink } from '@12333/utils'; +import { useArea, useDictionaryDataSelect } from '@12333/hooks'; +import { CategoryCode } from '@12333/constants'; +import * as userResumeServices from '@12333/services/apiV2/userResume'; +import Taro from '@tarojs/taro'; +import { useQuery } from '@tanstack/vue-query'; defineOptions({ name: 'InnerPage', }); -const { userDetail } = useUser(); +const { dictionaryDataList: identityList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Identity, +}); + +const { dictionaryDataList: educationList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Education, +}); + +const { completeAreaTree } = useArea(); const form = reactive({ - avatarUrl: convertApi2FormUrlOnlyOne(userDetail.value?.originalAvatarUrl), + avatar: [], name: '', - phone: '', - gender: TaskStatus.All, + identity: '', + 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(setOSSLink(data.avatar)); + form.name = data.name; + form.identity = data.identity; + form.contactPhoneNumber = data.contactPhoneNumber; + form.personalIdentityCode = data.personalIdentityCode ?? ''; + form.educationalBackgroundCode = data.educationalBackgroundCode ?? ''; + form.areaList = + data.provinceCode && data.cityCode ? [data.provinceCode, data.cityCode] : ['', '']; + }, }); const rules = reactive<FormRules>({ - phone: [{ 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() { @@ -71,7 +126,33 @@ }); } -function confirm() {} +async function confirm() { + try { + let params: API.SaveUserResumePersonalCommand = { + name: form.name, + identity: form.identity, + 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() { + Taro.navigateTo({ + url: `${RouterPath.mineCurriculumVitae}`, + success: function (res) { + res.eventChannel.emit('updateResume', { content: true }); + }, + }); + }, + }); + } + } catch (error) {} +} </script> <style lang="scss"> -- Gitblit v1.9.1