wupengfei
2025-03-21 1bbd7061dac79cacf5513234a04cac8ba0be5c6f
apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
@@ -7,29 +7,29 @@
      <nut-form-item label="姓名:" class="bole-form-item" prop="name">
        <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="phoneNumber" required>
        <nut-input v-model.trim="form.phoneNumber" 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="socialIdentity">
        <ChooseInputWithPicker
          v-model="form.gender"
          v-model="form.socialIdentity"
          placeholder="请选择身份"
          :value-enum="TaskStatusText"
          :value-enum="IdentityTypeList"
        />
      </nut-form-item>
      <nut-form-item label="学历:" class="bole-form-item" prop="gender">
      <nut-form-item label="学历:" class="bole-form-item" prop="educationalLevel">
        <ChooseInputWithPicker
          v-model="form.gender"
          v-model="form.educationalLevel"
          placeholder="请选择学历"
          :value-enum="TaskStatusText"
          :value-enum="EducationTypeList"
        />
      </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="cityAreaTree"
          v-model="form.areaList"
          placeholder="请选择常驻城市"
          :value-enum="TaskStatusText"
        />
        ></ChooseInputWithAreaPicker>
      </nut-form-item>
    </nut-form>
  </ContentScrollView>
@@ -40,26 +40,67 @@
<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 { 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 Taro from '@tarojs/taro';
import { useQuery } from '@tanstack/vue-query';
defineOptions({
  name: 'InnerPage',
});
const { userDetail } = useUser();
const { searchSettingTypeList: EducationTypeList } = useSearchSettingType({
  searchType: SearchType.Education,
});
const { searchSettingTypeList: IdentityTypeList } = useSearchSettingType({
  searchType: SearchType.Identity,
});
const { findAreaNameFromCode, cityAreaTree } = useAllAreaList();
const form = reactive({
  avatarUrl: convertApi2FormUrlOnlyOne(userDetail.value?.originalAvatarUrl),
  avatarUrl: [],
  name: '',
  phone: '',
  gender: TaskStatus.All,
  phoneNumber: '',
  gender: Gender.Male,
  socialIdentity: '',
  educationalLevel: '',
  areaList: [] as number[],
});
const {
  isLoading,
  isError,
  data: detail,
  refetch,
} = useQuery({
  queryKey: ['userResumeServices/getUserResumeBaseInfo'],
  queryFn: async () => {
    return await userResumeServices.getUserResumeBaseInfo({
      showLoading: false,
    });
  },
  placeholderData: () => ({} as API.UserResumeBaseInfoOutput),
  onSuccess(data) {
    form.avatarUrl = convertApi2FormUrlOnlyOne(setOSSLink(data.avatarUrl));
    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];
  },
});
const rules = reactive<FormRules>({
  phone: [{ required: true, message: '请输入手机号' }],
  phoneNumber: [{ required: true, message: '请输入手机号' }],
  socialIdentity: [{ required: true, message: '请选择身份' }],
  educationalLevel: [{ required: true, message: '请选择学历' }],
  areaList: [{ required: true, message: '请选择常驻城市' }],
});
const formRef = ref<any>(null);
function handleConfirm() {
@@ -71,7 +112,34 @@
  });
}
function confirm() {}
async function confirm() {
  try {
    let params: API.SaveUserResumeBaseInfoInput = {
      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]),
    };
    let res = await userResumeServices.saveUserResumeBaseInfo(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">