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 |  119 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 66 insertions(+), 53 deletions(-)

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() {

--
Gitblit v1.9.1