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/mineCertificate/InnerPage.vue | 21 +++ apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue | 35 ++--- packages/components/src/Input/ChooseInputWithAreaPicker.vue | 9 packages/hooks/area.ts | 5 apps/cMiniApp/src/hooks/user.ts | 3 apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue | 119 +++++++++++-------- packages/services/apiV2/typings.d.ts | 22 ++- apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue | 71 ++++++----- apps/cMiniApp/src/stores/modules/user.ts | 30 ++-- apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue | 14 +- 10 files changed, 192 insertions(+), 137 deletions(-) diff --git a/apps/cMiniApp/src/hooks/user.ts b/apps/cMiniApp/src/hooks/user.ts index 1f9b943..d81560c 100644 --- a/apps/cMiniApp/src/hooks/user.ts +++ b/apps/cMiniApp/src/hooks/user.ts @@ -10,7 +10,7 @@ export function useUser() { const userStore = useUserStore(); - const { userDetail, userInfo, locationCity } = storeToRefs(userStore); + const { userDetail, userInfo, locationCity, userId } = storeToRefs(userStore); function updateUserInfo() { return userStore.getCurrentUserInfo(); @@ -43,6 +43,7 @@ isCompanyAudited, isCertified, locationCity, + userId, }; } diff --git a/apps/cMiniApp/src/stores/modules/user.ts b/apps/cMiniApp/src/stores/modules/user.ts index d49e137..21cf5ab 100644 --- a/apps/cMiniApp/src/stores/modules/user.ts +++ b/apps/cMiniApp/src/stores/modules/user.ts @@ -87,6 +87,10 @@ accountInfo(): Partial<AccountInfo> { return getAccountInfoFromAccessToken(this.userInfo?.accessToken); }, + + userId: (state) => { + return state.userInfo?.id ?? ''; + }, }, actions: { // 鎵嬫満鍙锋巿鏉僀ode鐧诲綍 @@ -188,19 +192,19 @@ }, async getCurrentUserInfo() { - try { - let res = await userServices.getUserInfo({ showLoading: false }); - if (res) { - // res.frontStatus = getUserCertificationFrontStatusAdapter( - // res.userCertificationStatus, - // res.userCertificationAuditStatus - // ); - // res.originalAvatarUrl = res.avatarUrl; - // res.avatarUrl = res.avatarUrl ? setOSSLink(res.avatarUrl) : DefaultAvatar; - // this.setUserDetail(res); - // this.firstGetUserDetail = false; - } - } catch (error) {} + // try { + // let res = await userServices.getUserInfo({ showLoading: false }); + // if (res) { + // res.frontStatus = getUserCertificationFrontStatusAdapter( + // res.userCertificationStatus, + // res.userCertificationAuditStatus + // ); + // res.originalAvatarUrl = res.avatarUrl; + // res.avatarUrl = res.avatarUrl ? setOSSLink(res.avatarUrl) : DefaultAvatar; + // this.setUserDetail(res); + // this.firstGetUserDetail = false; + // } + // } catch (error) {} }, setTokenAction(tokenInfo: API.LoginCommandCallback) { diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue index 9bf9b84..61ef2e5 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/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="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="phoneNumber" required> - <nut-input v-model.trim="form.phoneNumber" 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="areaList"> <ChooseInputWithAreaPicker - :columns="cityAreaTree" + :columns="completeAreaTree" v-model="form.areaList" placeholder="璇烽�夋嫨甯搁┗鍩庡競" ></ChooseInputWithAreaPicker> @@ -41,11 +41,10 @@ <script setup lang="ts"> import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; import { ChooseInputWithPicker, ChooseInputWithAreaPicker } from '@12333/components'; -import { TaskStatusText } from '@/constants'; import { convertApi2FormUrlOnlyOne, Message, setOSSLink } from '@12333/utils'; -import { useAllAreaList, useArea, useSearchSettingType } from '@12333/hooks'; -import { Gender, SearchType } from '@12333/constants'; -import * as userResumeServices from '@12333/services/api/userResume'; +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'; @@ -53,23 +52,24 @@ name: 'InnerPage', }); -const { searchSettingTypeList: EducationTypeList } = useSearchSettingType({ - searchType: SearchType.Education, -}); -const { searchSettingTypeList: IdentityTypeList } = useSearchSettingType({ - searchType: SearchType.Identity, +const { dictionaryDataList: identityList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Identity, }); -const { findAreaNameFromCode, cityAreaTree } = useAllAreaList(); +const { dictionaryDataList: educationList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Education, +}); + +const { completeAreaTree } = useArea(); const form = reactive({ - avatarUrl: [], + avatar: [], name: '', - phoneNumber: '', - gender: Gender.Male, - socialIdentity: '', - educationalLevel: '', - areaList: [] as number[], + identity: '', + contactPhoneNumber: '', + personalIdentityCode: '', + educationalBackgroundCode: '', + areaList: [] as string[], }); const { @@ -78,29 +78,43 @@ data: detail, refetch, } = useQuery({ - queryKey: ['userResumeServices/getUserResumeBaseInfo'], + queryKey: ['userResumeServices/getUserResumePersonal'], queryFn: async () => { - return await userResumeServices.getUserResumeBaseInfo({ - showLoading: false, - }); + return await userResumeServices.getUserResumePersonal( + {}, + { + showLoading: false, + } + ); }, - placeholderData: () => ({} as API.UserResumeBaseInfoOutput), + placeholderData: () => ({} as API.GetUserResumePersonalQueryResult), onSuccess(data) { - form.avatarUrl = convertApi2FormUrlOnlyOne(setOSSLink(data.avatarUrl)); + form.avatar = convertApi2FormUrlOnlyOne(setOSSLink(data.avatar)); form.name = data.name; - form.phoneNumber = data.phoneNumber; - form.gender = data.genderType; - form.socialIdentity = data.socialIdentity; - form.educationalLevel = data.educationalLevel; - form.areaList = [data.residentProvinceCode, data.residentCityCode]; + 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>({ - phoneNumber: [{ 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() { @@ -114,18 +128,17 @@ async function confirm() { try { - let params: API.SaveUserResumeBaseInfoInput = { + let params: API.SaveUserResumePersonalCommand = { name: form.name, - avatarUrl: form.avatarUrl[0]?.path, - phoneNumber: form.phoneNumber, - educationalLevel: form.educationalLevel, - socialIdentity: form.socialIdentity, - residentProvinceCode: form.areaList[0], - residentProvinceName: findAreaNameFromCode(form.areaList[0]), - residentCityCode: form.areaList[1], - residentCityName: findAreaNameFromCode(form.areaList[1]), + 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.saveUserResumeBaseInfo(params); + let res = await userResumeServices.saveUserResumePersonal(params); if (res) { Message.success('淇濆瓨鎴愬姛', { onClosed() { diff --git a/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue index 71a124b..5ca5b03 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue @@ -6,12 +6,12 @@ <div class="expect-position-page-footer"> <div class="expect-position-select-wrapper" v-if="checkdList.length > 0"> <div class="expect-position-select-item" v-for="(item, index) in checkdList" :key="index"> - <div class="expect-position-select-item-text">{{ item.name }}</div> + <div class="expect-position-select-item-text">{{ item.label }}</div> <div class="expect-position-select-item-icon-wrapper"> <Close :size="8" class="expect-position-select-item-icon" - @click="handleDelete(item.id)" + @click="handleDelete(item.value)" /> </div> </div> @@ -23,8 +23,8 @@ <script setup lang="ts"> import { PositionSelectView } from '@12333/components'; -import { SearchType } from '@12333/constants'; -import { useSearchSettingType } from '@12333/hooks'; +import { CategoryCode } from '@12333/constants'; +import { useDictionaryDataSelect } from '@12333/hooks'; import { Close } from '@nutui/icons-vue-taro'; import Taro from '@tarojs/taro'; import { size } from 'lodash'; @@ -44,13 +44,13 @@ const positionList = ref([]); -const { searchSettingTypeList: position } = useSearchSettingType({ - searchType: SearchType.Position, +const { dictionaryDataList: position } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Position, }); const checkdList = computed(() => { if (!positionList.value.length) return []; - return position.value.filter((x) => positionList.value.includes(x.id)); + return position.value.filter((x) => positionList.value.includes(x.value)); }); function handleDelete(id: string) { diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue index 9109faa..d8dc7b3 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue @@ -19,6 +19,8 @@ import { List, ListItem } from '@12333/components'; import Taro from '@tarojs/taro'; import { RouterPath } from '@/constants'; +import * as userResumeServices from '@12333/services/apiV2/userResume'; +import { useQuery } from '@tanstack/vue-query'; defineOptions({ name: 'InnerPage', @@ -30,6 +32,25 @@ workYear: '', }); +const { + isLoading, + isError, + data: detail, + refetch, +} = useQuery({ + queryKey: ['userResumeServices/getUserResumeCredentials'], + queryFn: async () => { + return await userResumeServices.getUserResumeCredentials( + {}, + { + showLoading: false, + } + ); + }, + placeholderData: () => [] as API.GetUserResumeCredentialsQueryResultItem[], + onSuccess(data) {}, +}); + function handleAdd() { Taro.navigateTo({ url: RouterPath.mineCertificateAddOrEdit, diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue index 4526023..6faed82 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue @@ -1,7 +1,7 @@ <template> <ContentView> <nut-noticebar - text="涓汉绠�鍘嗗凡瀹屽杽50%锛屽畬鍠勭畝鍘嗗彲鎻愬崌褰曠敤鐜�" + :text="`涓汉绠�鍘嗗凡瀹屽杽${detail?.completeRate ?? 0}锛屽畬鍠勭畝鍘嗗彲鎻愬崌褰曠敤鐜嘸" :left-icon="false" background="transparent" close-mode @@ -35,14 +35,18 @@ <div class="mine-curriculum-info-item-left"> <img :src="IconPhone" class="mine-curriculum-info-item-phone-icon" /> <div class="mine-curriculum-info-item-phone"> - {{ detail?.phoneNumber ?? '' }} + {{ detail?.contactPhoneNumber ?? '' }} </div> </div> <div class="mine-curriculum-info-item-detail"> {{ - `${detail?.age ?? ''}宀� | ${detail?.personalIdentityContent} | ${ - detail?.educationalBackgroundContent - }` + `${detail?.age ? `${detail?.age}宀乣 : ''} + ${detail?.personalIdentityContent ? `| ${detail?.personalIdentityContent}` : ''} + ${ + detail?.educationalBackgroundContent + ? `| ${detail?.educationalBackgroundContent}` + : '' + }` }} </div> </div> @@ -103,7 +107,6 @@ <script setup lang="ts"> import { useUserStore } from '@/stores/modules/user'; -import { useIsLogin } from '@/hooks'; import MineAgreementSignDetailItem from '../../mine/mineAgreementSignDetail/MineAgreementSignDetailItem.vue'; import { List, ListItem, JobTagList, Avatar } from '@12333/components'; import { @@ -121,19 +124,13 @@ import Taro from '@tarojs/taro'; import { useQuery } from '@tanstack/vue-query'; import { setOSSLink } from '@12333/utils'; -import { useEvent, useEventChannel } from 'senin-mini/hooks'; +import { useEvent } from 'senin-mini/hooks'; defineOptions({ name: 'InnerPage', }); -const { userDetail } = useUserStore(); -const isLogin = useIsLogin(); -const router = Taro.useRouter(); - -const usrId = computed(() => userDetail?.userId ?? ''); - -const eventChannel = useEventChannel(); +const { userId } = useUser(); useEvent('updateResume', function (data: { content: boolean }) { if (data.content) { @@ -143,9 +140,7 @@ } }); -const jobTag = computed( - () => detail?.value?.userExpectJobs?.map((x) => x.personalIdentityContent) ?? [] -); +const jobTag = computed(() => detail?.value?.userExpectJobs?.map((x) => x.expectJobContent) ?? []); const { isLoading, @@ -153,17 +148,17 @@ data: detail, refetch, } = useQuery({ - queryKey: ['userResumeServices/getUserResume', usrId], + queryKey: ['userResumeServices/getUserResume', userId], queryFn: async () => { return await userResumeServices.getUserResume( - { userId: usrId.value }, + { userId: userId.value }, { showLoading: false, } ); }, placeholderData: () => ({} as API.GetUserResumeQueryResult), - enabled: !!usrId.value, + enabled: computed(() => !!userId.value), }); function goPage(routeName: string) { diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue index d40cd5c..4439660 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue @@ -1,7 +1,12 @@ <template> <ContentScrollView :paddingH="false"> <nut-form :model-value="form" ref="formRef" :rules="rules"> - <nut-form-item label="鏈熸湜宀椾綅:" class="bole-form-item" prop="jobIdList" label-position="top"> + <nut-form-item + label="鏈熸湜宀椾綅:" + class="bole-form-item" + prop="userExpectJobs" + label-position="top" + > <CommonInputField class="job-common-input-field" @click="goExpectPosition"> <JobTagList :jobTagList="jobTagList" /> </CommonInputField> @@ -10,14 +15,14 @@ <ChooseInputWithPicker v-model="form.freeTime" placeholder="璇烽�夋嫨绌洪棽鏃堕棿" - :value-enum="UserResumeFreeTimeEnumText" + :value-enum="EnumPersonalFreeTimeText" /> </nut-form-item> <nut-form-item label="姹傝亴鐘舵��:" class="bole-form-item" prop="jobSeekingStatus"> <ChooseInputWithPicker v-model="form.jobSeekingStatus" placeholder="璇烽�夋嫨姹傝亴鐘舵��" - :value-enum="UserResumeJobSeekingStatusEnumText" + :value-enum="EnumPersonalJobSeekingStatusText" /> </nut-form-item> </nut-form> @@ -31,35 +36,37 @@ import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; import { ChooseInputWithPicker, JobTagList, CommonInputField } from '@12333/components'; import { - UserResumeFreeTimeEnumText, - UserResumeJobSeekingStatusEnumText, - UserResumeFreeTimeEnum, - UserResumeJobSeekingStatusEnum, - SearchType, + CategoryCode, + EnumPersonalFreeTime, + EnumPersonalJobSeekingStatus, + EnumPersonalFreeTimeText, + EnumPersonalJobSeekingStatusText, } from '@12333/constants'; import Taro from '@tarojs/taro'; -import * as userResumeServices from '@12333/services/api/userResume'; -import { useSearchSettingType } from '@12333/hooks'; +import * as userResumeServices from '@12333/services/apiV2/userResume'; +import { useDictionaryDataSelect } from '@12333/hooks'; import { Message } from '@12333/utils'; -import { goBack } from '@/utils'; import { useQuery } from '@tanstack/vue-query'; defineOptions({ name: 'InnerPage', }); -const { searchSettingTypeList: positionList } = useSearchSettingType({ - searchType: SearchType.Position, +const { dictionaryDataList: positionList } = useDictionaryDataSelect({ + categoryCode: CategoryCode.Position, }); const jobTagList = computed(() => { - return positionList.value?.filter((x) => form.jobIdList.includes(x.id)).map((x) => x.name) || []; + return ( + positionList.value?.filter((x) => form.userExpectJobs.includes(x.value)).map((x) => x.label) || + [] + ); }); const form = reactive({ - jobIdList: [] as string[], - freeTime: UserResumeFreeTimeEnum.NoLimit, - jobSeekingStatus: UserResumeJobSeekingStatusEnum.Activing, + userExpectJobs: [] as string[], + freeTime: EnumPersonalFreeTime.NoLimit, + jobSeekingStatus: EnumPersonalJobSeekingStatus.Active, }); const { @@ -68,26 +75,29 @@ data: detail, refetch, } = useQuery({ - queryKey: ['userResumeServices/getResumeExpectationJob'], + queryKey: ['userResumeServices/getUserResumeJobSeeking'], queryFn: async () => { - return await userResumeServices.getResumeExpectationJob({ - showLoading: false, - }); + return await userResumeServices.getUserResumeJobSeeking( + {}, + { + showLoading: false, + } + ); }, - placeholderData: () => ({} as API.UserResumeExpectationJobOutput), + placeholderData: () => ({} as API.GetUserResumeJobSeekingQueryResult), onSuccess(data) { - form.jobIdList = data.jobIdList.map((x) => x.id); + form.userExpectJobs = data.userExpectJobs.map((x) => x.expectJobCode); form.freeTime = data.freeTime; form.jobSeekingStatus = data.jobSeekingStatus; }, }); const rules = reactive<FormRules>({ - jobIdList: [ + userExpectJobs: [ { required: true, validator() { - if (form.jobIdList.length) return Promise.resolve(true); + if (form.userExpectJobs.length) return Promise.resolve(true); return Promise.reject('璇烽�夋嫨鏈熸湜宀椾綅'); }, }, @@ -107,12 +117,12 @@ async function confirm() { try { - let params: API.SaveUserResumeExpectationJobInput = { - jobIdList: form.jobIdList, + let params: API.SaveUserResumeJobSeekingCommand = { + userExpectJobsExpectJobCode: form.userExpectJobs, freeTime: form.freeTime, jobSeekingStatus: form.jobSeekingStatus, }; - let res = await userResumeServices.saveUserResumeExpectationJob(params); + let res = await userResumeServices.saveUserResumeJobSeeking(params); if (res) { Message.success('淇濆瓨鎴愬姛', { onClosed() { @@ -133,11 +143,12 @@ url: `${RouterPath.expectPosition}`, events: { addPosition: function (data: { content: string[] }) { - form.jobIdList = data.content?.length ? data.content : []; + form.userExpectJobs = data.content?.length ? data.content : []; }, }, success: function (res) { - res.eventChannel.emit('updatePosition', { content: form.jobIdList }); + console.log('res: ', res); + res.eventChannel.emit('updatePosition', { content: form.userExpectJobs }); }, }); } diff --git a/packages/components/src/Input/ChooseInputWithAreaPicker.vue b/packages/components/src/Input/ChooseInputWithAreaPicker.vue index 62b687f..b0cd598 100644 --- a/packages/components/src/Input/ChooseInputWithAreaPicker.vue +++ b/packages/components/src/Input/ChooseInputWithAreaPicker.vue @@ -18,7 +18,7 @@ type Props = { fieldNames?: object; columns: API.AreaTreeNode[]; - modelValue: Array<string | number>; + modelValue: Array<string>; title?: string; }; @@ -30,12 +30,11 @@ children: 'children', }), }); -const inputValue = computed(() => - props.modelValue.map((x) => findAreaNameFromCode(Number(x))).join(',') -); +console.log('props: ', props); +const inputValue = computed(() => props.modelValue.map((x) => findAreaNameFromCode(x)).join(',')); const emit = defineEmits<{ - (e: 'update:modelValue', val: Array<string | number>): void; + (e: 'update:modelValue', val: Array<string>): void; }>(); function handleOpen() { diff --git a/packages/hooks/area.ts b/packages/hooks/area.ts index ec57c26..f8bd597 100644 --- a/packages/hooks/area.ts +++ b/packages/hooks/area.ts @@ -12,10 +12,11 @@ categoryCode: CategoryCode.Area, staleTime: Infinity, all: true, - maxDeep: AreaType.Area, + maxDeep: AreaType.City, }); const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode)); + console.log('areaList: ', areaList); const areaTree = computed(() => formatAreaListToTree(areaList.value)); @@ -43,7 +44,7 @@ return { children: [], areaCode: item.data?.code, - parentCode: '', + parentCode: item.data?.field1, areaName: item.label, layer: Number(item.data?.field4), quickQuery: item.data?.field2, diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts index 656be26..8f283be 100644 --- a/packages/services/apiV2/typings.d.ts +++ b/packages/services/apiV2/typings.d.ts @@ -1543,7 +1543,7 @@ /** 浣撻噸 */ weight?: number; /** 鐢熸椿鐓� */ - photos?: string[]; + photoImgs?: string[]; } type GetUserResumeJobSeekingQuery = Record<string, any>; @@ -1571,6 +1571,8 @@ avatar?: string; /** 濮撳悕 */ name?: string; + /** 鎵嬫満鍙� */ + contactPhoneNumber?: string; /** 韬唤璇佸彿 */ identity?: string; /** 韬唤缂栧彿 */ @@ -1594,12 +1596,14 @@ interface GetUserResumeQueryResult { /** 鐢ㄦ埛Id */ id?: string; + /** 瀹屽杽搴� */ + completeRate?: number; /** 澶村儚 */ avatar?: string; /** 濮撳悕 */ name?: string; /** 鎵嬫満鍙� */ - phoneNumber?: string; + contactPhoneNumber?: string; /** 韬唤璇佸彿 */ identity?: string; gender?: EnumUserGender; @@ -1665,10 +1669,12 @@ } interface GetUserResumeQueryResultExpectJob { + /** 鏈熸湜宀椾綅涓婄骇缂栧彿 */ + expectJobParentCode?: string; /** 鏈熸湜宀椾綅缂栧彿 */ - personalIdentityCode?: string; + expectJobCode?: string; /** 鏈熸湜宀椾綅 */ - personalIdentityContent?: string; + expectJobContent?: string; } type GetUserResumeWorkExperienceQuery = Record<string, any>; @@ -1681,6 +1687,8 @@ } interface LoginCommandCallback { + /** 鐢ㄦ埛Id */ + id?: string; /** 鐢ㄦ埛璁块棶浠ょ墝 */ accessToken?: string; /** 鍒锋柊浠ょ墝 */ @@ -2040,12 +2048,12 @@ /** 浣撻噸 */ weight?: number; /** 鐢熸椿鐓� */ - photos?: string[]; + photosImg?: string[]; } interface SaveUserResumeJobSeekingCommand { /** 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 */ - userExpectJobs: string[]; + userExpectJobsExpectJobCode: string[]; freeTime: EnumPersonalFreeTime; jobSeekingStatus: EnumPersonalJobSeekingStatus; } @@ -2055,6 +2063,8 @@ avatar?: string; /** 濮撳悕 */ name?: string; + /** 鎵嬫満鍙� */ + contactPhoneNumber?: string; /** 韬唤璇佸彿 */ identity: string; /** 韬唤缂栧彿 */ -- Gitblit v1.9.1