zhengyiming
5 天以前 5eb6e6bab29554390851bbed86615110e62efa48
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() {