From 1bbd7061dac79cacf5513234a04cac8ba0be5c6f Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 21 三月 2025 09:15:36 +0800
Subject: [PATCH] feat: 接口对接
---
packages/components/src/AreaTreeSelect/PositionSelectView.vue | 26 +-
packages/constants/index.ts | 1
packages/constants/task.ts | 52 ++++
apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue | 2
apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue | 91 ++++++-
packages/components/src/Tag/JobTagList.vue | 17
apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue | 2
apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue | 5
packages/hooks/area.ts | 13 +
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue | 4
packages/services/api/index.ts | 2
apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue | 46 +++
apps/cMiniApp/src/pages/home/HomeQueryMenuView.vue | 15 +
apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue | 2
apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue | 110 ++++++++-
apps/cMiniApp/project.private.config.json | 7
apps/bMiniApp/tsconfig.json | 3
apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue | 55 ++++
packages/services/api/UserResume.ts | 16 +
packages/components/src/AreaTreeSelect/CategoryPane.vue | 6
packages/services/api/FlexEnterpriseWoker.ts | 54 ++++
packages/services/api/typings.d.ts | 115 ++++++++++
packages/utils/area.ts | 10
apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue | 2
apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue | 2
apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue | 2
26 files changed, 556 insertions(+), 104 deletions(-)
diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
index 2cc644d..d42c8da 100644
--- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
@@ -21,7 +21,7 @@
import { useQuery } from '@tanstack/vue-query';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import { Message } from '@12333/utils';
-import { FlexTaskWorkerHireEnum } from '@/constants/task';
+import { FlexTaskWorkerHireEnum } from '@12333/constants/task';
defineOptions({
name: 'InnerPage',
diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
index b52155b..29401b3 100644
--- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
@@ -43,7 +43,7 @@
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
-import { FlexWorkerEleSignEnum } from '@/constants/task';
+import { FlexWorkerEleSignEnum } from '@12333/constants/task';
import Taro from '@tarojs/taro';
defineOptions({
diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue
index 9caeaae..6a0d095 100644
--- a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue
+++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue
@@ -50,7 +50,7 @@
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import IconLocaltion from '@/assets/flexJob/icon-localtion.png';
import { TaskPrice, TaskDetailWelfareItem } from '@12333/components';
-import { SalaryTimeTypeEnumUnit, FlexTaskSettleTypeEnumText } from '@/constants/task';
+import { SalaryTimeTypeEnumUnit, FlexTaskSettleTypeEnumText } from '@12333/constants/task';
import dayjs from 'dayjs';
import { setOSSLink } from '@12333/utils';
import { RectRight } from '@nutui/icons-vue-taro';
diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
index 10c56b0..0bd03d2 100644
--- a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
+++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
@@ -21,7 +21,7 @@
<script setup lang="ts">
import { OrderInputType } from '@12333/constants';
import { RouterPath } from '@/constants';
-import { FlexTaskWorkerHireEnum } from '@/constants/task';
+import { FlexTaskWorkerHireEnum } from '@12333/constants/task';
import { useInfiniteLoading } from '@12333/hooks';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import { FlexJobCard } from '@12333/components';
diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
index 1340552..a29d411 100644
--- a/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
@@ -56,7 +56,7 @@
FlexTaskReleaseStatusEnum,
FlexTaskReleaseStatusEnumText,
SalaryTimeTypeEnumUnit,
-} from '@/constants/task';
+} from '@12333/constants/task';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import Taro from '@tarojs/taro';
import { Message } from '@12333/utils';
diff --git a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
index d95e866..5334987 100644
--- a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
+++ b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -26,7 +26,10 @@
<script setup lang="ts">
import TaskCheckPersonalView from './TaskCheckPersonalView.vue';
import { Colors, Gender } from '@12333/constants';
-import { FlexTaskCheckAcceptStatusEnum, FlexTaskCheckAcceptStatusEnumText } from '@/constants/task';
+import {
+ FlexTaskCheckAcceptStatusEnum,
+ FlexTaskCheckAcceptStatusEnumText,
+} from '@12333/constants/task';
defineOptions({
name: 'TaskCheckCard',
diff --git a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
index 738ce69..269f389 100644
--- a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
@@ -122,14 +122,14 @@
</template>
<script setup lang="ts">
+import { useUser } from '@/hooks';
import {
FlexTaskSettleTypeEnum,
FlexTaskSettleTypeEnumText,
FlexTaskFeeTypeEnum,
FlexTaskFeeTypeEnumText,
SalaryTimeTypeEnumUnit,
-} from '@/constants/task';
-import { useUser } from '@/hooks';
+} from '@12333/constants';
import {
ChooseInputWithPicker,
ChooseInputWithDatePicker,
diff --git a/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
index 9c049a0..dd4535c 100644
--- a/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
@@ -52,7 +52,7 @@
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType, Colors } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
-import { SalaryTimeTypeEnumUnit } from '@/constants/task';
+import { SalaryTimeTypeEnumUnit } from '@12333/constants/task';
defineOptions({
name: 'InnerPage',
diff --git a/apps/bMiniApp/tsconfig.json b/apps/bMiniApp/tsconfig.json
index 231b16a..dfb771d 100644
--- a/apps/bMiniApp/tsconfig.json
+++ b/apps/bMiniApp/tsconfig.json
@@ -21,7 +21,8 @@
"./types/**/*.d.ts",
"./components.d.ts",
"./auto-imports.d.ts",
- "../../types/api.d.ts"
+ "../../types/api.d.ts",
+ "../../packages/constants/task.ts"
],
"exclude": ["node_modules", "dist"],
"references": [
diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json
index 73439be..9961598 100644
--- a/apps/cMiniApp/project.private.config.json
+++ b/apps/cMiniApp/project.private.config.json
@@ -56,13 +56,6 @@
"query": "",
"launchMode": "default",
"scene": null
- },
- {
- "name": "",
- "pathName": "subpackages/mine/mineCertificateAddOrEdit/mineCertificateAddOrEdit",
- "query": "",
- "launchMode": "default",
- "scene": null
}
]
}
diff --git a/apps/cMiniApp/src/pages/home/HomeQueryMenuView.vue b/apps/cMiniApp/src/pages/home/HomeQueryMenuView.vue
index 26a6979..20ce0a2 100644
--- a/apps/cMiniApp/src/pages/home/HomeQueryMenuView.vue
+++ b/apps/cMiniApp/src/pages/home/HomeQueryMenuView.vue
@@ -2,10 +2,14 @@
<QueryMenuView @close="handleReset" @confirm="emit('close')" cancelText="閲嶇疆">
<div class="home-query-menu-view">
<QueryMenuItem title="缁撶畻鏂瑰紡">
- <ProRadio v-model="query.gender" :value-enum="GenderText" show-all-btn></ProRadio>
+ <ProRadio
+ v-model="query.gender"
+ :value-enum="FlexTaskSettleTypeEnumText"
+ show-all-btn
+ ></ProRadio>
</QueryMenuItem>
<QueryMenuItem title="鍛樺伐绂忓埄">
- <ProRadio v-model="query.gender" :value-enum="GenderText" show-all-btn></ProRadio>
+ <ProRadio v-model="query.gender" :value-enum="WelfareList" show-all-btn></ProRadio>
</QueryMenuItem>
<QueryMenuItem title="鎬у埆瑕佹眰">
<ProRadio v-model="query.gender" :value-enum="GenderText" show-all-btn></ProRadio>
@@ -16,7 +20,8 @@
<script setup lang="ts">
import { QueryMenuView, QueryMenuItem, ProRadio } from '@12333/components';
-import { GenderText } from '@12333/constants';
+import { GenderText, SearchType, FlexTaskSettleTypeEnumText } from '@12333/constants';
+import { useSearchSettingType } from '@12333/hooks';
defineOptions({
name: 'HomeQueryMenuView',
@@ -26,6 +31,10 @@
// const props = withDefaults(defineProps<Props>(), {});
+const { searchSettingTypeList: WelfareList } = useSearchSettingType({
+ searchType: SearchType.Welfare,
+});
+
const emit = defineEmits<{
(e: 'reset'): void;
(e: 'close'): void;
diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
index cfccdcb..9bf9b84 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
@@ -7,8 +7,8 @@
<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="socialIdentity">
<ChooseInputWithPicker
@@ -24,12 +24,12 @@
: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,12 +40,14 @@
<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 { useSearchSettingType } from '@12333/hooks';
-import { SearchType } from '@12333/constants';
+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',
@@ -58,18 +60,44 @@
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: '璇烽�夋嫨甯搁┗鍩庡競' }],
@@ -84,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">
diff --git a/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue
index ca2afc3..71a124b 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/expectPosition/InnerPage.vue
@@ -4,29 +4,65 @@
</ContentView>
<PageFooter>
<div class="expect-position-page-footer">
- <div class="expect-position-select-wrapper" v-if="positionList.length > 0">
- <div class="expect-position-select-item" v-for="(item, index) in positionList" :key="index">
- <div class="expect-position-select-item-text">{{ item }}</div>
+ <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-icon-wrapper">
- <Close :size="8" class="expect-position-select-item-icon" />
+ <Close
+ :size="8"
+ class="expect-position-select-item-icon"
+ @click="handleDelete(item.id)"
+ />
</div>
</div>
</div>
- <PageFooterBtn type="primary">淇濆瓨</PageFooterBtn>
+ <PageFooterBtn type="primary" @click="handleConfirm">淇濆瓨</PageFooterBtn>
</div>
</PageFooter>
</template>
<script setup lang="ts">
import { PositionSelectView } from '@12333/components';
+import { SearchType } from '@12333/constants';
+import { useSearchSettingType } from '@12333/hooks';
import { Close } from '@nutui/icons-vue-taro';
+import Taro from '@tarojs/taro';
import { size } from 'lodash';
+import { useEvent, useEventChannel } from 'senin-mini/hooks';
defineOptions({
name: 'InnerPage',
});
+const eventChannel = useEventChannel();
+
+useEvent('updatePosition', function (data: { content: string[] }) {
+ if (data.content.length) {
+ positionList.value = [...data.content];
+ }
+});
+
const positionList = ref([]);
+
+const { searchSettingTypeList: position } = useSearchSettingType({
+ searchType: SearchType.Position,
+});
+
+const checkdList = computed(() => {
+ if (!positionList.value.length) return [];
+ return position.value.filter((x) => positionList.value.includes(x.id));
+});
+
+function handleDelete(id: string) {
+ positionList.value = positionList.value.filter((x) => x !== id);
+}
+
+function handleConfirm() {
+ eventChannel.emit('addPosition', {
+ content: positionList.value,
+ });
+ Taro.navigateBack({ delta: 1 });
+}
</script>
<style lang="scss">
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue
index 77d25d5..c8b000e 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue
@@ -8,16 +8,24 @@
class="mine-curriculum-noticebar"
/>
<div class="mine-curriculum-info-wrapper">
- <UserAvatar :size="60" class="mine-curriculum-avatar" />
+ <Avatar
+ :size="60"
+ class="mine-curriculum-avatar"
+ :src="setOSSLink(detail?.resumeBaseInfo?.avatarUrl ?? '')"
+ ></Avatar>
<div class="mine-curriculum-info-content">
<div class="mine-curriculum-info-item">
<div class="mine-curriculum-info-item-left">
<div class="mine-curriculum-info-item-name">
- {{ userStore.userDetail?.userName ?? '' }}
+ {{ detail?.resumeBaseInfo?.name ?? '' }}
</div>
<div class="mine-curriculum-info-item-gender">
<div class="mine-curriculum-info-item-gender-dot">路</div>
- <img v-if="1" :src="IconMale" class="mine-curriculum-info-item-gender-icon" />
+ <img
+ v-if="detail?.resumeBaseInfo?.genderType === Gender.Male"
+ :src="IconMale"
+ class="mine-curriculum-info-item-gender-icon"
+ />
<img v-else :src="IconFemale" class="mine-curriculum-info-item-gender-icon" />
</div>
</div>
@@ -27,11 +35,13 @@
<div class="mine-curriculum-info-item-left">
<img :src="IconPhone" class="mine-curriculum-info-item-phone-icon" />
<div class="mine-curriculum-info-item-phone">
- {{ userStore.userDetail?.phoneNumber ?? '' }}
+ {{ detail?.resumeBaseInfo?.phoneNumber ?? '' }}
</div>
</div>
<div class="mine-curriculum-info-item-detail">
- {{ '26宀� | 闈炲鐢� | 鏈' }}
+ {{
+ `${detail?.resumeBaseInfo?.age}宀� | ${detail?.resumeBaseInfo?.socialIdentityName} | ${detail?.resumeBaseInfo?.educationalLevelName}`
+ }}
</div>
</div>
</div>
@@ -47,17 +57,23 @@
</div>
<MineAgreementSignDetailItem label="鏈熸湜宀椾綅" class="mine-curriculum-intention-job">
<template #detail>
- <JobTagList />
+ <JobTagList :jobTagList="jobTag" />
</template>
</MineAgreementSignDetailItem>
<MineAgreementSignDetailItem label="绌洪棽鏃堕棿">
<template #detail>
- <div class="mine-curriculum-intention-bold">涓嶉檺</div>
+ <div class="mine-curriculum-intention-bold">
+ {{ UserResumeFreeTimeEnumText[detail?.resumeExpectationJob?.freeTime] }}
+ </div>
</template>
</MineAgreementSignDetailItem>
<MineAgreementSignDetailItem label="姹傝亴鐘舵��">
<template #detail>
- <div class="mine-curriculum-intention-bold">绉瀬鎵惧伐浣�</div>
+ <div class="mine-curriculum-intention-bold">
+ {{
+ UserResumeJobSeekingStatusEnumText[detail?.resumeExpectationJob?.jobSeekingStatus]
+ }}
+ </div>
</template>
</MineAgreementSignDetailItem>
</div>
@@ -89,7 +105,12 @@
import { useUserStore } from '@/stores/modules/user';
import { useIsLogin } from '@/hooks';
import MineAgreementSignDetailItem from '../../mine/mineAgreementSignDetail/MineAgreementSignDetailItem.vue';
-import { List, ListItem, JobTagList } from '@12333/components';
+import { List, ListItem, JobTagList, Avatar } from '@12333/components';
+import {
+ Gender,
+ UserResumeFreeTimeEnumText,
+ UserResumeJobSeekingStatusEnumText,
+} from '@12333/constants';
import { RouterPath } from '@/constants';
import * as userResumeServices from '@12333/services/api/userResume';
import IconArrow from '@/assets/setting/icon-arrow.png';
@@ -99,6 +120,8 @@
import IconPhone from '@/assets/mine/icon-phone.png';
import Taro from '@tarojs/taro';
import { useQuery } from '@tanstack/vue-query';
+import { setOSSLink } from '@12333/utils';
+import { useEvent, useEventChannel } from 'senin-mini/hooks';
defineOptions({
name: 'InnerPage',
@@ -110,6 +133,20 @@
const taskId = router.params?.taskId;
+const eventChannel = useEventChannel();
+
+useEvent('updateResume', function (data: { content: boolean }) {
+ if (data.content) {
+ refetch({
+ type: 'inactive',
+ });
+ }
+});
+
+const jobTag = computed(
+ () => detail?.value?.resumeExpectationJob?.jobIdList?.map((x) => x.name) ?? []
+);
+
const {
isLoading,
isError,
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
index d123c03..d40cd5c 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
@@ -1,28 +1,23 @@
<template>
<ContentScrollView :paddingH="false">
<nut-form :model-value="form" ref="formRef" :rules="rules">
- <nut-form-item label="鏈熸湜宀椾綅:" class="bole-form-item" prop="job" label-position="top">
- <!-- <ChooseInputWithPicker
- v-model="form.job"
- placeholder="璇烽�夋嫨鏈熸湜宀椾綅"
- :value-enum="TaskStatusText"
- /> -->
+ <nut-form-item label="鏈熸湜宀椾綅:" class="bole-form-item" prop="jobIdList" label-position="top">
<CommonInputField class="job-common-input-field" @click="goExpectPosition">
- <JobTagList />
+ <JobTagList :jobTagList="jobTagList" />
</CommonInputField>
</nut-form-item>
- <nut-form-item label="绌洪棽鏃堕棿:" class="bole-form-item" prop="job">
+ <nut-form-item label="绌洪棽鏃堕棿:" class="bole-form-item" prop="freeTime">
<ChooseInputWithPicker
- v-model="form.job"
+ v-model="form.freeTime"
placeholder="璇烽�夋嫨绌洪棽鏃堕棿"
- :value-enum="TaskStatusText"
+ :value-enum="UserResumeFreeTimeEnumText"
/>
</nut-form-item>
- <nut-form-item label="姹傝亴鐘舵��:" class="bole-form-item" prop="job">
+ <nut-form-item label="姹傝亴鐘舵��:" class="bole-form-item" prop="jobSeekingStatus">
<ChooseInputWithPicker
- v-model="form.job"
+ v-model="form.jobSeekingStatus"
placeholder="璇烽�夋嫨姹傝亴鐘舵��"
- :value-enum="TaskStatusText"
+ :value-enum="UserResumeJobSeekingStatusEnumText"
/>
</nut-form-item>
</nut-form>
@@ -35,22 +30,70 @@
<script setup lang="ts">
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
import { ChooseInputWithPicker, JobTagList, CommonInputField } from '@12333/components';
-import { TaskStatusText, TaskStatus } from '@/constants';
-import { useUser } from '@/hooks';
+import {
+ UserResumeFreeTimeEnumText,
+ UserResumeJobSeekingStatusEnumText,
+ UserResumeFreeTimeEnum,
+ UserResumeJobSeekingStatusEnum,
+ SearchType,
+} from '@12333/constants';
import Taro from '@tarojs/taro';
+import * as userResumeServices from '@12333/services/api/userResume';
+import { useSearchSettingType } from '@12333/hooks';
+import { Message } from '@12333/utils';
+import { goBack } from '@/utils';
+import { useQuery } from '@tanstack/vue-query';
defineOptions({
name: 'InnerPage',
});
-const { userDetail } = useUser();
+const { searchSettingTypeList: positionList } = useSearchSettingType({
+ searchType: SearchType.Position,
+});
+
+const jobTagList = computed(() => {
+ return positionList.value?.filter((x) => form.jobIdList.includes(x.id)).map((x) => x.name) || [];
+});
const form = reactive({
- job: TaskStatus.All,
+ jobIdList: [] as string[],
+ freeTime: UserResumeFreeTimeEnum.NoLimit,
+ jobSeekingStatus: UserResumeJobSeekingStatusEnum.Activing,
+});
+
+const {
+ isLoading,
+ isError,
+ data: detail,
+ refetch,
+} = useQuery({
+ queryKey: ['userResumeServices/getResumeExpectationJob'],
+ queryFn: async () => {
+ return await userResumeServices.getResumeExpectationJob({
+ showLoading: false,
+ });
+ },
+ placeholderData: () => ({} as API.UserResumeExpectationJobOutput),
+ onSuccess(data) {
+ form.jobIdList = data.jobIdList.map((x) => x.id);
+ form.freeTime = data.freeTime;
+ form.jobSeekingStatus = data.jobSeekingStatus;
+ },
});
const rules = reactive<FormRules>({
- job: [{ required: true, message: '璇烽�夋嫨' }],
+ jobIdList: [
+ {
+ required: true,
+ validator() {
+ if (form.jobIdList.length) return Promise.resolve(true);
+ return Promise.reject('璇烽�夋嫨鏈熸湜宀椾綅');
+ },
+ },
+ ],
+ freeTime: [{ required: true, message: '璇烽�夋嫨绌洪棽鏃堕棿' }],
+ jobSeekingStatus: [{ required: true, message: '璇烽�夋嫨姹傝亴鐘舵��' }],
});
const formRef = ref<any>(null);
function handleConfirm() {
@@ -62,11 +105,40 @@
});
}
-function confirm() {}
+async function confirm() {
+ try {
+ let params: API.SaveUserResumeExpectationJobInput = {
+ jobIdList: form.jobIdList,
+ freeTime: form.freeTime,
+ jobSeekingStatus: form.jobSeekingStatus,
+ };
+ let res = await userResumeServices.saveUserResumeExpectationJob(params);
+ if (res) {
+ Message.success('淇濆瓨鎴愬姛', {
+ onClosed() {
+ Taro.navigateTo({
+ url: `${RouterPath.mineCurriculumVitae}`,
+ success: function (res) {
+ res.eventChannel.emit('updateResume', { content: true });
+ },
+ });
+ },
+ });
+ }
+ } catch (error) {}
+}
function goExpectPosition() {
Taro.navigateTo({
url: `${RouterPath.expectPosition}`,
+ events: {
+ addPosition: function (data: { content: string[] }) {
+ form.jobIdList = data.content?.length ? data.content : [];
+ },
+ },
+ success: function (res) {
+ res.eventChannel.emit('updatePosition', { content: form.jobIdList });
+ },
});
}
</script>
diff --git a/packages/components/src/AreaTreeSelect/CategoryPane.vue b/packages/components/src/AreaTreeSelect/CategoryPane.vue
index e9862ab..11aee8c 100644
--- a/packages/components/src/AreaTreeSelect/CategoryPane.vue
+++ b/packages/components/src/AreaTreeSelect/CategoryPane.vue
@@ -3,10 +3,10 @@
<div class="nut-category-pane__cateListRight">
<div v-for="(item, index) in categoryChild" :key="index">
<div class="nut-category-pane__childItemList">
- <div class="bole-category-pane__childItem" @click="onChange(item.value)">
+ <div class="bole-category-pane__childItem" @click="onChange(item.id)">
<div
class="bole-category-pane-item-wrapper"
- :class="{ active: modelValue.includes(item.value) }"
+ :class="{ active: modelValue.includes(item.id) }"
>
<div class="bole-category-pane-item-name">{{ item.name }}</div>
<Check :size="16" class="bole-category-pane-item-icon" />
@@ -29,7 +29,7 @@
type ChildType = {
name?: string;
- value?: string | number;
+ id?: string | number;
[key: string]: any;
};
diff --git a/packages/components/src/AreaTreeSelect/PositionSelectView.vue b/packages/components/src/AreaTreeSelect/PositionSelectView.vue
index 048754e..86ba1cc 100644
--- a/packages/components/src/AreaTreeSelect/PositionSelectView.vue
+++ b/packages/components/src/AreaTreeSelect/PositionSelectView.vue
@@ -1,15 +1,16 @@
<template>
- <Category :category="provinceList" @change="change" class="position-select-view">
+ <Category :category="industryList" @change="change" class="position-select-view">
<CategoryPane :max="max" :categoryChild="categoryChild" :multiple="multiple" v-model="model">
</CategoryPane>
</Category>
</template>
<script setup lang="ts">
-import { useAllAreaList } from '@12333/hooks';
+import { useAllSearchSettingList, useSearchSettingType } from '@12333/hooks';
import Category from './Category.vue';
import CategoryPane from './CategoryPane.vue';
import { reactive, computed, watch } from 'vue';
+import { SearchType } from '@12333/constants';
defineOptions({
name: 'PositionSelectView',
@@ -24,25 +25,26 @@
multiple: true,
});
-const model = defineModel<number[]>();
+const model = defineModel<string[]>();
const state = reactive({
provinceIndex: 0,
});
-const { areaTreeList } = useAllAreaList();
-
-const provinceList = computed(() => areaTreeList.value.map((x) => ({ ...x, name: x.areaName })));
+const { allSearchSettingList: positionList } = useAllSearchSettingList({
+ searchType: SearchType.Position,
+});
+const { searchSettingTypeList: industryList } = useSearchSettingType({
+ searchType: SearchType.IndustryCategory,
+});
const categoryChild = computed(() => {
- if (!provinceList.value.length) {
+ if (!industryList.value.length) {
return [];
}
- return provinceList.value[state.provinceIndex].children.map((x) => ({
- ...x,
- name: x.areaName,
- value: x.areaCode,
- }));
+ return positionList.value?.filter(
+ (x) => x.parentName === industryList.value[state.provinceIndex].name
+ );
});
const change = (index: number) => {
diff --git a/packages/components/src/Tag/JobTagList.vue b/packages/components/src/Tag/JobTagList.vue
index c962b4c..dc51ea1 100644
--- a/packages/components/src/Tag/JobTagList.vue
+++ b/packages/components/src/Tag/JobTagList.vue
@@ -1,13 +1,8 @@
<template>
<div class="mine-curriculum-intention-job-content">
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
- <div class="mine-curriculum-intention-job-item">瀹㈡埧鏈嶅姟鍛�</div>
+ <div v-for="item in jobTagList" :key="item" class="mine-curriculum-intention-job-item">
+ {{ item }}
+ </div>
</div>
</template>
@@ -16,9 +11,11 @@
name: 'JobTagList',
});
-// type Props = {};
+type Props = {
+ jobTagList?: string[];
+};
-// const props = withDefaults(defineProps<Props>(), {});
+const props = withDefaults(defineProps<Props>(), {});
</script>
<style lang="scss">
diff --git a/packages/constants/index.ts b/packages/constants/index.ts
index 6d4bb41..4ba4a42 100644
--- a/packages/constants/index.ts
+++ b/packages/constants/index.ts
@@ -11,3 +11,4 @@
export * from './oss';
export * from './authenticationV2';
export * from './parkOrHR';
+export * from './task';
diff --git a/apps/bMiniApp/src/constants/task.ts b/packages/constants/task.ts
similarity index 73%
rename from apps/bMiniApp/src/constants/task.ts
rename to packages/constants/task.ts
index 16d939b..742c086 100644
--- a/apps/bMiniApp/src/constants/task.ts
+++ b/packages/constants/task.ts
@@ -150,3 +150,55 @@
[FlexWorkerEleSignEnum.HasSign]: '宸茬绾�',
[FlexWorkerEleSignEnum.CancelSign]: '宸茶В绾�',
};
+
+export enum UserResumeFreeTimeEnum {
+ /**
+ * 涓嶉檺
+ */
+ NoLimit = 1,
+ /**
+ * 瀵掓殤鍋�
+ */
+ WinterAndSummerVacation = 2,
+ /**
+ * 鑺傚亣鏃�
+ */
+ Holiday = 3,
+ /**
+ * 鍛ㄥ叚鏃�
+ */
+ Weekend = 4,
+ /**
+ * 宸ヤ綔鏃�
+ */
+ Weekday = 5,
+}
+
+export const UserResumeFreeTimeEnumText = {
+ [UserResumeFreeTimeEnum.NoLimit]: '涓嶉檺',
+ [UserResumeFreeTimeEnum.WinterAndSummerVacation]: '瀵掓殤鍋�',
+ [UserResumeFreeTimeEnum.Holiday]: '鑺傚亣鏃�',
+ [UserResumeFreeTimeEnum.Weekend]: '鍛ㄥ叚鏃�',
+ [UserResumeFreeTimeEnum.Weekday]: '宸ヤ綔鏃�',
+};
+
+export enum UserResumeJobSeekingStatusEnum {
+ /**
+ * 绉瀬鎵惧伐浣�
+ */
+ Activing = 1,
+ /**
+ * 闅忎究鐪嬬湅
+ */
+ JustLook = 2,
+ /**
+ * 鏆傛椂涓嶆壘宸ヤ綔
+ */
+ NotLook = 3,
+}
+
+export const UserResumeJobSeekingStatusEnumText = {
+ [UserResumeJobSeekingStatusEnum.Activing]: '绉瀬鎵惧伐浣�',
+ [UserResumeJobSeekingStatusEnum.JustLook]: '闅忎究鐪嬬湅',
+ [UserResumeJobSeekingStatusEnum.NotLook]: '鏆傛椂涓嶆壘宸ヤ綔',
+};
diff --git a/packages/hooks/area.ts b/packages/hooks/area.ts
index 2f9220f..46668cf 100644
--- a/packages/hooks/area.ts
+++ b/packages/hooks/area.ts
@@ -63,7 +63,15 @@
return {
completeAreaList: computed(() => areaStore.value.completeAreaList),
completeAreaTree: computed(() => areaStore.value.completeAreaTree),
- // cityAreaTree: computed(() => areaStore.value.cityAreaTree),
+ cityAreaTree: computed(() =>
+ areaStore.value.completeAreaTree.map((x) => ({
+ ...x,
+ children: x.children.map((y) => ({
+ ...y,
+ children: undefined,
+ })),
+ }))
+ ),
provinceList: computed(() => areaStore.value.provinceList),
areaItemMap: computed(() => areaStore.value.areaItemMap),
getAreaFromCompleteAreaList,
@@ -72,7 +80,7 @@
}
export function useAllAreaList() {
- const { completeAreaTree, provinceList, completeAreaList } = useArea();
+ const { completeAreaTree, provinceList, completeAreaList, cityAreaTree } = useArea();
const findAreaCodeFromName = (areaName: string) => {
const areaItem = completeAreaList.value.find((x) => x.areaName === areaName);
@@ -95,6 +103,7 @@
findAreaItemFromCode,
areaTreeList: completeAreaTree,
provinceList,
+ cityAreaTree,
};
}
diff --git a/packages/services/api/FlexEnterpriseWoker.ts b/packages/services/api/FlexEnterpriseWoker.ts
new file mode 100644
index 0000000..9bafeb5
--- /dev/null
+++ b/packages/services/api/FlexEnterpriseWoker.ts
@@ -0,0 +1,54 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** C绔汉鍛樼鐞嗗垪琛� POST /api/FlexEnterpriseWoker/GetUserClientList */
+export async function getUserClientList(
+ body: API.GetUserClientForBackInput,
+ options?: API.RequestConfig
+) {
+ return request<API.GetUserClientForBackOutputPageOutput>(
+ '/api/FlexEnterpriseWoker/GetUserClientList',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** C绔汉鍛樼鐞�--绛剧害璇︽儏 POST /api/FlexEnterpriseWoker/GetUserClientSignList */
+export async function getUserClientSignList(
+ body: API.GetUserClientSignListInput,
+ options?: API.RequestConfig
+) {
+ return request<API.UserClientSignListOutputPageOutput>(
+ '/api/FlexEnterpriseWoker/GetUserClientSignList',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** C绔汉鍛樼鐞�--鑾峰彇浜哄憳璇︽儏 GET /api/FlexEnterpriseWoker/GetUserDetailForBack */
+export async function getUserDetailForBack(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetUserDetailForBackParams,
+ options?: API.RequestConfig
+) {
+ return request<API.GetUserDetailForBackOutput>('/api/FlexEnterpriseWoker/GetUserDetailForBack', {
+ method: 'GET',
+ params: {
+ ...params,
+ },
+ ...(options || {}),
+ });
+}
diff --git a/packages/services/api/UserResume.ts b/packages/services/api/UserResume.ts
index 9b0735e..3ec42a4 100644
--- a/packages/services/api/UserResume.ts
+++ b/packages/services/api/UserResume.ts
@@ -2,6 +2,14 @@
// @ts-ignore
import { request } from '@/utils/request';
+/** 鏍规嵁鐢ㄦ埛鑾峰彇鏈熷緟鐨勫伐浣� GET /api/UserResume/GetResumeExpectationJob */
+export async function getResumeExpectationJob(options?: API.RequestConfig) {
+ return request<API.UserResumeExpectationJobOutput>('/api/UserResume/GetResumeExpectationJob', {
+ method: 'GET',
+ ...(options || {}),
+ });
+}
+
/** 鏍规嵁鐢ㄦ埛鑾峰彇绠�鍘� GET /api/UserResume/GetUserResume */
export async function getUserResume(options?: API.RequestConfig) {
return request<API.MyResumeOutput>('/api/UserResume/GetUserResume', {
@@ -10,6 +18,14 @@
});
}
+/** 鏍规嵁鐢ㄦ埛鑾峰彇绠�鍘嗗熀纭�淇℃伅 GET /api/UserResume/GetUserResumeBaseInfo */
+export async function getUserResumeBaseInfo(options?: API.RequestConfig) {
+ return request<API.UserResumeBaseInfoOutput>('/api/UserResume/GetUserResumeBaseInfo', {
+ method: 'GET',
+ ...(options || {}),
+ });
+}
+
/** 鏍规嵁璁よ瘉id鑾峰彇璁よ瘉璇︽儏 GET /api/UserResume/GetUserResumeCertificateDetailById */
export async function getUserResumeCertificateDetailById(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/packages/services/api/index.ts b/packages/services/api/index.ts
index a9c1745..ffe8d03 100644
--- a/packages/services/api/index.ts
+++ b/packages/services/api/index.ts
@@ -9,6 +9,7 @@
import * as Common from './Common';
import * as Features from './Features';
import * as FlexEnterprise from './FlexEnterprise';
+import * as FlexEnterpriseWoker from './FlexEnterpriseWoker';
import * as FlexTask from './FlexTask';
import * as FlexWorker from './FlexWorker';
import * as IdentityRole from './IdentityRole';
@@ -30,6 +31,7 @@
Common,
Features,
FlexEnterprise,
+ FlexEnterpriseWoker,
FlexTask,
FlexWorker,
IdentityRole,
diff --git a/packages/services/api/typings.d.ts b/packages/services/api/typings.d.ts
index 3b11f05..58ea6e5 100644
--- a/packages/services/api/typings.d.ts
+++ b/packages/services/api/typings.d.ts
@@ -242,6 +242,10 @@
id: string;
}
+ interface APIgetUserDetailForBackParams {
+ userId?: string;
+ }
+
interface APIgetUserListByPhoneNumberParams {
phoneNumber?: string;
clientId?: string;
@@ -1197,6 +1201,77 @@
belongType?: number;
}
+ interface GetUserClientForBackInput {
+ pageModel?: Pagination;
+ /** 濮撳悕/鎵嬫満/韬唤璇佸彿/瀹㈡埛 */
+ searchKeys?: string;
+ /** 鏈�杩戝綍鐢ㄦ椂闂�--寮�濮� */
+ nearlyHireDateTimeBegin?: string;
+ /** 鏈�杩戝綍鐢ㄦ椂闂�--缁撴潫 */
+ nearlyHireDateTimeEnd?: string;
+ /** 鏈�杩戠绾︽椂闂�--寮�濮� */
+ nearlySignDateTimeBegin?: string;
+ /** 鏈�杩戠绾︽椂闂�--缁撴潫 */
+ nearlySignDateTimeEnd?: string;
+ /** 瀹炲悕鐘舵�� */
+ realVerifyStatus?: boolean;
+ }
+
+ interface GetUserClientForBackOutput {
+ userId?: string;
+ userResumeId?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 韬唤璇佸彿 */
+ idNumber?: string;
+ /** 鎵嬫満鍙� */
+ contactPhone?: string;
+ /** 骞撮緞 */
+ age?: number;
+ genderType?: GenderTypeEnum;
+ /** 甯搁┗鐪佷唤Code */
+ residentProvinceCode?: number;
+ /** 甯搁┗鍩庡競code */
+ residentCityCode?: number;
+ /** 甯搁┗鐪佷唤鍚嶇О */
+ residentProvinceName?: string;
+ /** 甯搁┗鍩庡競鍚嶇О */
+ residentCityName?: string;
+ /** 瀹炲悕鐘舵�� */
+ realVerifyStatus?: boolean;
+ /** 瀹炲悕鏃堕棿 */
+ realVerifyTime?: string;
+ nearlyWorkRecord?: NearlyFlexWorkerRecord;
+ }
+
+ interface GetUserClientForBackOutputPageOutput {
+ pageModel?: Pagination;
+ objectData?: any;
+ data?: GetUserClientForBackOutput[];
+ }
+
+ interface GetUserClientSignListInput {
+ pageModel?: Pagination;
+ userId?: string;
+ }
+
+ interface GetUserDetailForBackOutput {
+ userId?: string;
+ userResumeId?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 韬唤璇佸彿 */
+ idNumber?: string;
+ /** 鎵嬫満鍙� */
+ contactPhone?: string;
+ /** 骞撮緞 */
+ age?: number;
+ /** 韬唤璇佹闈� */
+ certificateFrontImgUrl?: string;
+ /** 韬唤璇佸弽闈� */
+ certificateBackImgUrl?: string;
+ }
+
interface GetWorkerListForBackOutput {
userId?: string;
/** 濮撳悕 */
@@ -1537,6 +1612,16 @@
value?: string;
}
+ interface NearlyFlexWorkerRecord {
+ taskId?: string;
+ /** 鏈�杩戝綍鐢ㄦ椂闂� */
+ nearlyHireDateTime?: string;
+ /** 鏈�杩戠绾︽椂闂� */
+ nearlySignDateTime?: string;
+ /** 鎵�灞炲晢鎴� */
+ enterpirseName?: string;
+ }
+
interface ObjectExtensionsDto {
modules?: Record<string, any>;
enums?: Record<string, any>;
@@ -1729,6 +1814,10 @@
residentCityCode?: number;
residentProvinceName?: string;
residentCityName?: string;
+ /** 鑱旂郴鐢佃瘽 */
+ phoneNumber?: string;
+ /** 澶村儚 */
+ avatarUrl?: string;
}
interface SaveUserResumeCertificateInput {
@@ -1938,6 +2027,30 @@
releaseStatus?: FlexTaskReleaseStatusEnum;
}
+ interface UserClientSignListOutput {
+ /** 鎵�灞炲晢鎴� */
+ enterpirseName?: string;
+ /** 鎶ュ悕鏃堕棿 */
+ applyTime?: string;
+ enterSignStatus?: FlexWorkerEleSignEnum;
+ /** 浼佷笟绛剧害鏃堕棿 */
+ enterSignTime?: string;
+ hireStatus?: FlexTaskWorkerHireEnum;
+ /** 褰曠敤鏃堕棿 */
+ hireDateTime?: string;
+ userSignStatus?: FlexWorkerEleSignEnum;
+ /** 鐏靛伐绛剧害鏃堕棿 */
+ userSignTime?: string;
+ /** 鐢靛瓙鍚堝悓 */
+ contractUrl?: string;
+ }
+
+ interface UserClientSignListOutputPageOutput {
+ pageModel?: Pagination;
+ objectData?: any;
+ data?: UserClientSignListOutput[];
+ }
+
interface UserData {
id?: string;
tenantId?: string;
@@ -2017,7 +2130,7 @@
/** 绠�鍘嗚璇佽鎯匢d */
id?: string;
/** 鐢ㄦ埛绠�鍘咺d */
- userResumeId?: string;
+ userId?: string;
/** 璁よ瘉绫诲埆Id */
certificateTypeId?: string;
/** 璁よ瘉璇佷欢鍙烽粯璁よ韩浠借瘉 */
diff --git a/packages/utils/area.ts b/packages/utils/area.ts
index a0b323e..1732267 100644
--- a/packages/utils/area.ts
+++ b/packages/utils/area.ts
@@ -1,11 +1,11 @@
import { AreaType } from '@12333/constants';
-export interface AreaTreeNode extends API.AreaInfo {
+export interface AreaTreeNode extends API.AreaDto {
children?: AreaTreeNode[];
}
export function formatAreaListToTree(
- areaDataList: API.AreaInfo[],
+ areaDataList: API.AreaDto[],
parentId: number,
maxLayer = AreaType.Area
) {
@@ -23,11 +23,11 @@
return treeNodeList;
}
-export function flattenAreaTree(tree: API.AreaInfo[]) {
- let result = [] as API.AreaInfo[];
+export function flattenAreaTree(tree: API.AreaDto[]) {
+ let result = [] as API.AreaDto[];
// 閫掑綊鍑芥暟锛岀敤浜庨亶鍘嗗瓙鑺傜偣
- function flatten(node: API.AreaInfo) {
+ function flatten(node: API.AreaDto) {
result.push(node);
if (node.children && node.children.length > 0) {
--
Gitblit v1.9.1