From 10089fbb4958ff4780c33bf2e51ec6f04024e2b6 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 11 八月 2025 15:55:23 +0800
Subject: [PATCH] feat: 接口对接
---
apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue | 108 ++++++++++---
apps/cMiniApp/src/pages/task/InnerPage.vue | 57 ++----
apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue | 1
apps/cMiniApp/project.private.config.json | 7
packages/services/apiV2/auth.ts | 63 ++++++-
packages/hooks/task.ts | 4
apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue | 9 +
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue | 13
apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue | 39 ++--
packages/services/apiV2/typings.d.ts | 80 +++++++++
apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue | 28 ++-
packages/constants/apiEnum.ts | 10 +
apps/cMiniApp/src/pages/mine/index.vue | 43 ++++
13 files changed, 338 insertions(+), 124 deletions(-)
diff --git a/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
index 639db70..2010249 100644
--- a/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
@@ -1,7 +1,7 @@
<template>
<Calendar v-model="queryMenuState.time"></Calendar>
<ProTabs
- v-model="queryMenuState.status"
+ v-model="queryMenuState.checkReceiveStatus"
name="task-tab"
:showPaneContent="false"
class="task-tabs"
@@ -9,14 +9,14 @@
title-gutter="8"
title-scroll
>
- <ProTabPane title="寰呮彁浜�" pane-key="10"></ProTabPane>
- <ProTabPane title="寰呴獙鏀�" pane-key="10"></ProTabPane>
- <ProTabPane title="宸查獙鏀�" pane-key="20"></ProTabPane>
+ <ProTabPane :title="`寰呮彁浜" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane>
+ <ProTabPane :title="`寰呴獙鏀禶" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane>
+ <ProTabPane :title="`宸查獙鏀禶" :pane-key="EnumTaskCheckReceiveStatus.Completed"></ProTabPane>
</ProTabs>
<InfiniteLoading
scrollViewClassName="common-infinite-scroll-list"
v-bind="infiniteLoadingProps"
- :key="queryMenuState.status"
+ :key="queryMenuState.checkReceiveStatus"
>
<template #renderItem="{ item }">
<MyTaskCard
@@ -33,6 +33,7 @@
<script setup lang="ts">
import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components';
import Taro from '@tarojs/taro';
+import { EnumTaskCheckReceiveStatus } from '@12333/constants';
import { useTaskList } from '@12333/hooks';
defineOptions({
@@ -41,7 +42,7 @@
const { queryMenuState, infiniteLoadingProps } = useTaskList({
defaultQueryMenuState: {
- status: EnumTaskStatus.Wait,
+ checkReceiveStatus: EnumTaskCheckReceiveStatus.Wait,
},
});
diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json
index a17549d..ca80844 100644
--- a/apps/cMiniApp/project.private.config.json
+++ b/apps/cMiniApp/project.private.config.json
@@ -70,13 +70,6 @@
"query": "",
"launchMode": "default",
"scene": null
- },
- {
- "name": "",
- "pathName": "subpackages/curriculum/mineCertificate/mineCertificate",
- "query": "",
- "launchMode": "default",
- "scene": null
}
]
}
diff --git a/apps/cMiniApp/src/pages/mine/index.vue b/apps/cMiniApp/src/pages/mine/index.vue
index 4bafb51..cb55be5 100644
--- a/apps/cMiniApp/src/pages/mine/index.vue
+++ b/apps/cMiniApp/src/pages/mine/index.vue
@@ -16,7 +16,7 @@
<div class="mine-avatar-wrapper" @click="goLogin">
<UserAvatar :size="52" class="mine-avatar" />
<div class="user-info" v-if="isLogin">
- <div class="user-info-item">{{ userDetail?.userName ?? '' }}</div>
+ <div class="user-info-item">{{ detail?.name ?? '' }}</div>
<!-- <div class="user-info-auth">
<div class="user-info-auth-item">
<div class="user-info-unCertified" v-if="isCertified">
@@ -64,15 +64,30 @@
<img :src="IconArrow" class="mine-order-list-title-icon" />
</div>
<div class="mine-order-list-content">
- <nut-badge class="mine-order-list-item" top="8" :value="8" @click="goMineSign">
+ <nut-badge
+ class="mine-order-list-item"
+ top="8"
+ :value="detail?.taskCount ?? 0"
+ @click="goMineSign"
+ >
<img :src="IconOrderSign" class="mine-order-list-icon" />
<div class="mine-order-list-text">鎴戠殑鎶ュ悕</div>
</nut-badge>
- <nut-badge class="mine-order-list-item" top="8" :value="8" @click="goMineHire">
+ <nut-badge
+ class="mine-order-list-item"
+ top="8"
+ :value="detail?.hirePassTaskCount ?? 0"
+ @click="goMineHire"
+ >
<img :src="IconOrderHire" class="mine-order-list-icon" />
<div class="mine-order-list-text">宸插綍鐢�</div>
</nut-badge>
- <nut-badge class="mine-order-list-item" top="8" :value="8" @click="goMineCancel">
+ <nut-badge
+ class="mine-order-list-item"
+ top="8"
+ :value="detail?.hireRefuseTaskCount ?? 0"
+ @click="goMineCancel"
+ >
<img :src="IconOrderCancel" class="mine-order-list-icon" />
<div class="mine-order-list-text">宸插彇娑�</div>
</nut-badge>
@@ -106,6 +121,8 @@
import { useSystemStore } from '@/stores/modules/system';
import PageLayoutWithBg from '@/components/Layout/PageLayoutWithBg.vue';
import { toThousand } from '@12333/utils';
+import { useQuery } from '@tanstack/vue-query';
+import * as authServices from '@12333/services/apiV2/auth';
const { userDetail, isCertified } = useUser();
const isLogin = useIsLogin();
@@ -114,6 +131,24 @@
const { goLoginFn } = useGoLogin();
const bgHeight = computed(() => 133 + systemStore.navHeight);
+const {
+ isLoading,
+ isError,
+ data: detail,
+ refetch,
+} = useQuery({
+ queryKey: ['authServices/getPersonalLoginInfo'],
+ queryFn: async () => {
+ return await authServices.getPersonalLoginInfo(
+ {},
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.GetPersonalLoginInfoQueryResult),
+});
+
function goLogin() {
if (!isLogin.value) {
goLoginFn();
diff --git a/apps/cMiniApp/src/pages/task/InnerPage.vue b/apps/cMiniApp/src/pages/task/InnerPage.vue
index 33a1569..7de494e 100644
--- a/apps/cMiniApp/src/pages/task/InnerPage.vue
+++ b/apps/cMiniApp/src/pages/task/InnerPage.vue
@@ -1,7 +1,7 @@
<template>
- <Calendar v-model="queryState.date"></Calendar>
+ <Calendar v-model="queryMenuState.time"></Calendar>
<ProTabs
- v-model="queryState.status"
+ v-model="queryMenuState.checkReceiveStatus"
name="task-tab"
:showPaneContent="false"
class="task-tabs"
@@ -9,16 +9,23 @@
title-gutter="8"
title-scroll
>
- <ProTabPane :title="`寰呮彁浜" :pane-key="10"></ProTabPane>
- <ProTabPane :title="`寰呴獙鏀禶" :pane-key="20"></ProTabPane>
+ <ProTabPane :title="`寰呮彁浜" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane>
+ <ProTabPane :title="`寰呴獙鏀禶" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane>
+ <ProTabPane :title="`宸查獙鏀禶" :pane-key="EnumTaskCheckReceiveStatus.Completed"></ProTabPane>
</ProTabs>
<InfiniteLoading
scrollViewClassName="common-infinite-scroll-list task-list"
v-bind="infiniteLoadingProps"
- :key="queryState.status"
+ :key="queryMenuState.checkReceiveStatus"
>
<template #renderItem="{ item }">
- <MyTaskCard @click="goSubmitTaskDetail(item)" />
+ <MyTaskCard
+ :name="item.name"
+ :addressName="item.addressName"
+ :begin-time="item.beginTime"
+ :end-time="item.endTime"
+ @click="goSubmitTaskDetail(item)"
+ />
</template>
</InfiniteLoading>
</template>
@@ -26,44 +33,22 @@
<script setup lang="ts">
import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components';
import Taro from '@tarojs/taro';
-import { useInfiniteLoading } from '@12333/hooks';
-import { OrderInputType } from '@12333/constants';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import { useTaskList } from '@12333/hooks';
+import { EnumTaskCheckReceiveStatus } from '@12333/constants';
defineOptions({
name: 'InnerPage',
});
-const queryState = reactive({
- status: 10,
- date: new Date(),
+const { queryMenuState, infiniteLoadingProps } = useTaskList({
+ defaultQueryMenuState: {
+ checkReceiveStatus: EnumTaskCheckReceiveStatus.Wait,
+ },
});
-const { infiniteLoadingProps } = useInfiniteLoading(
- ({ pageParam }) => {
- let params: API.GetFlexTaskListInput = {
- pageModel: {
- rows: 20,
- page: pageParam,
- orderInput: [{ property: 'lastShelfTime', order: OrderInputType.Desc }],
- },
- };
-
- return flexWorkerServices.getFlexTaskByArrange(params, {
- showLoading: false,
- });
- },
- {
- queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState],
- }
-);
-
-function goSubmitTaskDetail(item: API.GetFlexTaskListOutput) {
- // Taro.navigateTo({
- // url: `${RouterPath.taskSubmitCheck}?id=${item.id}`,
- // });
+function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) {
Taro.navigateTo({
- url: `${RouterPath.taskCheckDetail}?id=${item.taskId}`,
+ url: `${RouterPath.taskCheckDetail}?id=${item.id}`,
});
}
</script>
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue
index e659738..f546f29 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue
@@ -21,11 +21,20 @@
import { RouterPath } from '@/constants';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import { useQuery } from '@tanstack/vue-query';
+import { useEvent } from 'senin-mini/hooks';
defineOptions({
name: 'InnerPage',
});
+useEvent('updateResume', function (data: { content: boolean }) {
+ if (data.content) {
+ refetch({
+ type: 'inactive',
+ });
+ }
+});
+
const {
isLoading,
isError,
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
index 123fc38..46c8966 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
@@ -1,22 +1,22 @@
<template>
<ContentScrollView :paddingH="false">
<nut-form :model-value="form" ref="formRef" :rules="rules">
- <nut-form-item label="璇佷功绫诲瀷:" class="bole-form-item" prop="type">
+ <nut-form-item label="璇佷功绫诲瀷:" class="bole-form-item" prop="typeCode">
<ChooseInputWithPicker
- v-model="form.type"
+ v-model="form.typeCode"
placeholder="璇烽�夋嫨璇佷功绫诲瀷"
- :value-enum="TaskStatusText"
+ :value-enum="certificateTypeList"
/>
</nut-form-item>
- <nut-form-item label="璇佷功缂栧彿:" class="bole-form-item" prop="certificateNumber">
- <nut-input v-model="form.certificateNumber" type="number" placeholder="璇疯緭鍏�"> </nut-input>
+ <nut-form-item label="璇佷功缂栧彿:" class="bole-form-item" prop="code">
+ <nut-input v-model="form.code" type="number" placeholder="璇疯緭鍏�"> </nut-input>
</nut-form-item>
<nut-form-item
label="姘镐箙璇佷功:"
class="bole-form-item permanent-certificate"
- prop="isPermanentCertificate"
+ prop="isForever"
>
- <nut-switch v-model="form.isPermanentCertificate" />
+ <nut-switch v-model="form.isForever" />
</nut-form-item>
<nut-form-item label="寮�濮嬫棩鏈�:" class="bole-form-item" prop="startDate">
<ChooseInputWithDatePicker v-model="form.startDate"></ChooseInputWithDatePicker>
@@ -24,26 +24,26 @@
<nut-form-item label="缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate">
<ChooseInputWithDatePicker v-model="form.endDate"></ChooseInputWithDatePicker>
</nut-form-item>
- <nut-form-item label="鍙戣瘉鍗曚綅:" class="bole-form-item" prop="certificateNumber">
- <nut-input v-model="form.certificateNumber" placeholder="璇疯緭鍏�"> </nut-input>
+ <nut-form-item label="鍙戣瘉鍗曚綅:" class="bole-form-item" prop="issueUnit">
+ <nut-input v-model="form.issueUnit" placeholder="璇疯緭鍏�"> </nut-input>
</nut-form-item>
<div class="certificate-upload">
<div class="certificate-upload-title">涓婁紶璇佷功</div>
<nut-form-item
label="璇佷功姝i潰鐓х墖锛堣纭繚璇佷功鍙枫�佸ご鍍忕収鐗囩瓑娓呮櫚鍙锛�"
class="bole-form-item"
- prop="photo"
+ prop="img"
label-position="top"
>
- <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader>
+ <Uploader v-model:file-list="form.img" :maximum="1" class="bole-uploader"> </Uploader>
</nut-form-item>
<nut-form-item
label="璇佷功鍙嶉潰鐓х墖锛堟垨鍏朵粬鏈夊唴瀹归〉锛�"
class="bole-form-item"
- prop="photo"
+ prop="backImg"
label-position="top"
>
- <Uploader v-model:file-list="form.photo" :maximum="1" class="bole-uploader"> </Uploader>
+ <Uploader v-model:file-list="form.backImg" :maximum="1" class="bole-uploader"> </Uploader>
</nut-form-item>
</div>
</nut-form>
@@ -54,13 +54,16 @@
</template>
<script setup lang="ts">
-import { useUser } from '@/hooks';
import { ChooseInputWithPicker, ChooseInputWithDatePicker } from '@12333/components';
import * as userResumeServices from '@12333/services/apiV2/userResume';
-import { TaskStatusText, TaskStatus } from '@/constants';
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
-import { useQuery } from '@tanstack/vue-query';
+import { useQuery, useQueryClient } from '@tanstack/vue-query';
import Taro from '@tarojs/taro';
+import { useDictionaryDataSelect } from '@12333/hooks';
+import { CategoryCode } from '@12333/constants';
+import { convertApi2FormUrlOnlyOne, Message, setOSSLink, FormValidator } from '@12333/utils';
+import dayjs from 'dayjs';
+import { goBack } from '@/utils';
defineOptions({
name: 'InnerPage',
@@ -69,14 +72,21 @@
const router = Taro.useRouter();
const id = router.params?.id as string;
const isEdit = computed(() => !!id);
+const queryClient = useQueryClient();
+
+const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({
+ categoryCode: CategoryCode.CertificateType,
+});
const form = reactive({
- type: TaskStatus.All,
- certificateNumber: '',
+ typeCode: '',
+ code: '',
startDate: '',
endDate: '',
- isPermanentCertificate: false,
- photo: [],
+ issueUnit: '',
+ isForever: false,
+ img: [],
+ backImg: [],
});
const {
@@ -95,14 +105,37 @@
);
},
placeholderData: () => ({} as API.GetUserResumeCredentialQueryResult),
- enabled: isEdit.value,
+ enabled: computed(() => isEdit.value),
+ onSuccess(data) {
+ form.typeCode = data.typeCode;
+ form.code = data.code;
+ form.startDate = dayjs(data.startDate).format('YYYY-MM-DD 00:00:00');
+ form.endDate = dayjs(data.endDate).format('YYYY-MM-DD 23:59:59');
+ form.issueUnit = data.issueUnit;
+ form.isForever = data.isForever;
+ form.img = convertApi2FormUrlOnlyOne(setOSSLink(data.img));
+ form.backImg = convertApi2FormUrlOnlyOne(setOSSLink(data.backImg));
+ },
});
const rules = reactive<FormRules>({
- type: [{ required: true, message: '璇疯緭鍏ユ墜鏈哄彿' }],
+ typeCode: [{ required: true, message: '璇烽�夋嫨璇佷功绫诲瀷' }],
startDate: [{ required: true, message: '璇烽�夋嫨寮�濮嬫棩鏈�' }],
- endDate: [{ required: true, message: '璇烽�夋嫨缁撴潫鏃ユ湡' }],
- photo: [{ required: true, message: '璇蜂笂浼犺瘉涔︽闈㈢収' }],
+ endDate: [
+ {
+ required: true,
+ message: '璇烽�夋嫨缁撴潫鏃ユ湡',
+ validator(value) {
+ if (!value) return Promise.reject('璇烽�夋嫨缁撴潫鏃ユ湡');
+ if (value <= form.startDate) return Promise.reject('缁撴潫鏃ユ湡涓嶈兘灏忎簬寮�濮嬫棩鏈�');
+ return Promise.resolve(true);
+ },
+ },
+ ],
+ img: [{ required: true, message: '璇蜂笂浼犺瘉涔︽闈㈢収', validator: FormValidator.validatorArray }],
+ backImg: [
+ { required: true, message: '璇蜂笂浼犺瘉涔﹀弽闈㈢収', validator: FormValidator.validatorArray },
+ ],
});
const formRef = ref<any>(null);
function handleConfirm() {
@@ -114,7 +147,32 @@
});
}
-function confirm() {}
+async function confirm() {
+ try {
+ let params: API.SaveUserResumeCredentialCommand = {
+ typeCode: form.typeCode,
+ code: form.code,
+ isForever: form.isForever,
+ startDate: dayjs(form.startDate).format('YYYY-MM-DD 00:00:00'),
+ endDate: dayjs(form.endDate).format('YYYY-MM-DD 23:59:59'),
+ issueUnit: form.issueUnit,
+ img: form.img[0]?.path,
+ backImg: form.backImg[0]?.path,
+ };
+ if (isEdit.value) {
+ params.id = id;
+ }
+ let res = await userResumeServices.saveUserResumeCredential(params);
+ if (res) {
+ Message.success(isEdit ? '缂栬緫鎴愬姛' : '娣诲姞鎴愬姛', {
+ onClosed() {
+ goBack();
+ queryClient.invalidateQueries(['userResumeServices/getUserResumeCredentials']);
+ },
+ });
+ }
+ } catch (error) {}
+}
</script>
<style lang="scss">
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
index e360f49..9a7eca4 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
@@ -17,8 +17,7 @@
prop="photo"
label-position="top"
>
- <Uploader v-model:file-list="form.lifeCircleImgUrlList" :maximum="6" class="bole-uploader">
- </Uploader>
+ <Uploader v-model:file-list="form.photos" :maximum="6" class="bole-uploader"> </Uploader>
</nut-form-item>
</nut-form>
</ContentScrollView>
@@ -30,7 +29,7 @@
<script setup lang="ts">
import { goBack } from '@/utils';
import { NumberInput } from '@12333/components';
-import * as userResumeServices from '@12333/services/api/userResume';
+import * as userResumeServices from '@12333/services/apiV2/userResume';
import { convertApiPath2Url, Message } from '@12333/utils';
import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type';
import { useQuery } from '@tanstack/vue-query';
@@ -39,48 +38,50 @@
name: 'InnerPage',
});
+const { refetch: userResumeRefetch } = useUserResume();
+
const {
isLoading,
isError,
data: detail,
refetch,
} = useQuery({
- queryKey: ['userResumeServices/getUserResumeDetailInfo'],
+ queryKey: ['userResumeServices/getUserResumeDetail'],
queryFn: async () => {
- return await userResumeServices.getUserResumeDetailInfo({
- showLoading: false,
- });
+ return await userResumeServices.getUserResumeDetail(
+ {},
+ {
+ showLoading: false,
+ }
+ );
},
- placeholderData: () => ({} as API.UserResumeDetailInfoOutput),
+ placeholderData: () => ({} as API.GetUserResumeDetailQueryResult),
onSuccess(data) {
form.height = data.height;
form.weight = data.weight;
- form.lifeCircleImgUrlList = data.lifeCircleImgUrlList?.length
- ? data.lifeCircleImgUrlList.map((x) => convertApiPath2Url(x))
- : [];
+ form.photos = data.photos?.length ? data.photos.map((x) => convertApiPath2Url(x)) : [];
},
});
const form = reactive({
- height: '',
- weight: '',
- lifeCircleImgUrlList: [] as FileItem[],
+ height: 0,
+ weight: 0,
+ photos: [] as FileItem[],
});
async function handleConfirm() {
try {
- let params: API.SaveUserResumeDetailInfoInput = {
+ let params: API.SaveUserResumeDetailCommand = {
weight: form.weight,
height: form.weight,
- lifeCircleImgUrlList: form.lifeCircleImgUrlList?.length
- ? form.lifeCircleImgUrlList.map((x) => x.url)
- : [],
+ photos: form.photos?.length ? form.photos.map((x) => x.path) : [],
};
- let res = await userResumeServices.saveUserResumeDetailInfo(params);
+ let res = await userResumeServices.saveUserResumeDetail(params);
if (res) {
Message.success('淇濆瓨鎴愬姛', {
onClosed() {
goBack();
+ userResumeRefetch({ type: 'inactive' });
},
});
}
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
index 87b07bf..309e69d 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
@@ -147,7 +147,6 @@
},
},
success: function (res) {
- console.log('res: ', res);
res.eventChannel.emit('updatePosition', { content: form.userExpectJobs });
},
});
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue
index 60f5d12..1303900 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue
@@ -1,8 +1,8 @@
<template>
<ContentScrollView :paddingH="false">
<nut-form :model-value="form" ref="formRef">
- <nut-form-item label="宸ヤ綔骞撮檺:" class="bole-form-item" prop="workingSeniority">
- <nut-input v-model="form.workingSeniority" placeholder="璇疯緭鍏�"> </nut-input>
+ <nut-form-item label="宸ヤ綔骞撮檺:" class="bole-form-item" prop="workSeniority">
+ <nut-input v-model="form.workSeniority" placeholder="璇疯緭鍏�"> </nut-input>
</nut-form-item>
<nut-form-item label="宸ヤ綔缁忛獙:" class="bole-form-item" prop="workExperience">
<nut-input v-model="form.workExperience" type="textarea" placeholder="璇疯緭鍏�"> </nut-input>
@@ -16,7 +16,7 @@
<script setup lang="ts">
import { goBack } from '@/utils';
-import * as userResumeServices from '@12333/services/api/userResume';
+import * as userResumeServices from '@12333/services/apiV2/userResume';
import { Message } from '@12333/utils';
import { useQuery } from '@tanstack/vue-query';
@@ -24,8 +24,10 @@
name: 'InnerPage',
});
+const { refetch: userResumeRefetch } = useUserResume();
+
const form = reactive({
- workingSeniority: '',
+ workSeniority: '',
workExperience: '',
});
@@ -37,21 +39,24 @@
} = useQuery({
queryKey: ['userResumeServices/getUserResumeWorkExperience'],
queryFn: async () => {
- return await userResumeServices.getUserResumeWorkExperience({
- showLoading: false,
- });
+ return await userResumeServices.getUserResumeWorkExperience(
+ {},
+ {
+ showLoading: false,
+ }
+ );
},
- placeholderData: () => ({} as API.UserResumeWorkExperienceOutput),
+ placeholderData: () => ({} as API.GetUserResumeWorkExperienceQueryResult),
onSuccess(data) {
- form.workingSeniority = data.workingSeniority;
+ form.workSeniority = data.workSeniority;
form.workExperience = data.workExperience;
},
});
async function handleConfirm() {
try {
- let params: API.SaveUserResumeWorkExperienceInput = {
- workingSeniority: form.workingSeniority,
+ let params: API.SaveUserResumeWorkExperienceCommand = {
+ workSeniority: form.workSeniority,
workExperience: form.workExperience,
};
let res = await userResumeServices.saveUserResumeWorkExperience(params);
@@ -59,6 +64,7 @@
Message.success('淇濆瓨鎴愬姛', {
onClosed() {
goBack();
+ userResumeRefetch({ type: 'inactive' });
},
});
}
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index 849b19f..cc6ab80 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -199,6 +199,16 @@
Female = 20,
}
+/** 鐢ㄦ埛瀹炲悕鏂瑰紡 */
+export enum EnumUserRealMethod {
+ /**涓汉鎵嬫満鍙蜂笁瑕佺礌 */
+ Identity3 = 10,
+ /**閾惰鍗″瑕佺礌 */
+ Identity4 = 20,
+ /**鍒疯劯璁よ瘉 */
+ Face = 30,
+}
+
/** 鐢ㄦ埛淇℃伅鐘舵�� */
export enum EnumUserStatus {
/**姝e父 */
diff --git a/packages/hooks/task.ts b/packages/hooks/task.ts
index bac7643..77af26c 100644
--- a/packages/hooks/task.ts
+++ b/packages/hooks/task.ts
@@ -2,6 +2,7 @@
import {
EnumPagedListOrder,
EnumSettlementCycle,
+ EnumTaskCheckReceiveStatus,
EnumTaskRecommendStatus,
EnumTaskReleaseStatus,
EnumTaskStatus,
@@ -27,6 +28,7 @@
status?: EnumTaskStatus;
genderLimit?: EnumUserGender;
settlementCycle?: EnumSettlementCycle;
+ checkReceiveStatus?: EnumTaskCheckReceiveStatus;
benefitCodes?: string;
enterpriseId?: string;
time?: Date;
@@ -44,6 +46,7 @@
benefitCodes: '',
status: '' as any as EnumTaskStatus,
releaseStatus: EnumTaskReleaseStatus.InProcess,
+ checkReceiveStatus: '' as any as EnumTaskCheckReceiveStatus,
enterpriseId: '',
time: '' as any as Date,
...defaultQueryMenuState,
@@ -77,6 +80,7 @@
genderLimit: queryMenuState.genderLimit,
status: queryMenuState.status,
releaseStatus: queryMenuState.releaseStatus,
+ checkReceiveStatus: queryMenuState.checkReceiveStatus,
enterpriseId: queryMenuState.enterpriseId,
beginTime: queryMenuState.time
? dayjs(queryMenuState.time).format('YYYY-MM-DD 00:00:00')
diff --git a/packages/services/apiV2/auth.ts b/packages/services/apiV2/auth.ts
index 38dc7f7..331a423 100644
--- a/packages/services/apiV2/auth.ts
+++ b/packages/services/apiV2/auth.ts
@@ -2,12 +2,12 @@
// @ts-ignore
import { request } from '@/utils/request';
-/** 缁戝畾鎵嬫満鍙� POST /api/user/auth/bindPhoneNumber */
-export async function bindPhoneNumber(
- body: API.BindPhoneNumberCommand,
+/** 缁戝畾寰俊灏忕▼搴忕敤鎴蜂俊鎭� POST /api/user/auth/bindWxmpUserInfo */
+export async function bindWxmpUserInfo(
+ body: API.BindWxmpUserInfoCommand,
options?: API.RequestConfig
) {
- return request<boolean>('/api/user/auth/bindPhoneNumber', {
+ return request<API.LoginCommandCallback>('/api/user/auth/bindWxmpUserInfo', {
method: 'POST',
headers: {
'Content-Type': 'application/json-patch+json',
@@ -17,12 +17,12 @@
});
}
-/** 缁戝畾寰俊灏忕▼搴忕敤鎴蜂俊鎭� POST /api/user/auth/bindWxmpUserInfo */
-export async function bindWxmpUserInfo(
- body: API.BindWxmpUserInfoCommand,
+/** 鏇存崲鎵嬫満鍙� POST /api/user/auth/changePhoneNumber */
+export async function changePhoneNumber(
+ body: API.ChangePhoneNumberCommand,
options?: API.RequestConfig
) {
- return request<API.LoginCommandCallback>('/api/user/auth/bindWxmpUserInfo', {
+ return request<boolean>('/api/user/auth/changePhoneNumber', {
method: 'POST',
headers: {
'Content-Type': 'application/json-patch+json',
@@ -81,9 +81,41 @@
});
}
+/** 鏌ヨ涓汉鐢ㄦ埛鐧诲綍淇℃伅 GET /api/user/auth/getPersonalLoginInfo */
+export async function getPersonalLoginInfo(
+ // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+ params: API.APIgetPersonalLoginInfoParams,
+ options?: API.RequestConfig
+) {
+ return request<API.GetPersonalLoginInfoQueryResult>('/api/user/auth/getPersonalLoginInfo', {
+ method: 'GET',
+ params: {
+ ...params,
+ request: undefined,
+ ...params['request'],
+ },
+ ...(options || {}),
+ });
+}
+
/** 瀵嗙爜鐧诲綍 POST /api/user/auth/passwordLogin */
export async function passwordLogin(body: API.PasswordLoginCommand, options?: API.RequestConfig) {
return request<API.LoginCommandCallback>('/api/user/auth/passwordLogin', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** 娉ㄥ唽涓汉璐﹀彿 POST /api/user/auth/registerPersonalUser */
+export async function registerPersonalUser(
+ body: API.RegisterPersonalUserCommand,
+ options?: API.RequestConfig
+) {
+ return request<boolean>('/api/user/auth/registerPersonalUser', {
method: 'POST',
headers: {
'Content-Type': 'application/json-patch+json',
@@ -120,6 +152,21 @@
});
}
+/** 鍙戦�佹洿鎹㈡墜鏈哄彿鐭俊 POST /api/user/auth/updatePhoneNumberVerifyCode */
+export async function updatePhoneNumberVerifyCode(
+ body: API.UpdatePhoneNumberVerifyCodeCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/user/auth/updatePhoneNumberVerifyCode', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 寰俊灏忕▼搴忕櫥褰� POST /api/user/auth/wxmpLogin */
export async function wxmpLogin(body: API.WxmpLoginCommand, options?: API.RequestConfig) {
return request<API.LoginCommandCallback>('/api/user/auth/wxmpLogin', {
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index 1d549f8..a8f052a 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -69,6 +69,11 @@
roleId?: string;
}
+ interface APIgetPersonalLoginInfoParams {
+ /** 鏌ヨ涓汉鐢ㄦ埛鐧诲綍淇℃伅 */
+ request?: GetPersonalLoginInfoQuery;
+ }
+
interface APIgetResourceFieldsParams {
/** Id */
id?: string;
@@ -140,13 +145,6 @@
request?: GetUserResumeWorkExperienceQuery;
}
- interface BindPhoneNumberCommand {
- /** 鎵嬫満鍙风爜 */
- phoneNumber?: string;
- /** 楠岃瘉鐮� */
- verifyCode?: string;
- }
-
interface BindWxmpUserInfoCommand {
/** 鍖呮嫭鏁忔劅鏁版嵁鍦ㄥ唴鐨勫畬鏁寸敤鎴蜂俊鎭殑鍔犲瘑鏁版嵁 */
encryptedData: string;
@@ -154,6 +152,13 @@
iv: string;
/** 鑾峰彇浼氳瘽瀵嗛挜 */
sessionKey: string;
+ }
+
+ interface ChangePhoneNumberCommand {
+ /** 鎵嬫満鍙风爜 */
+ phoneNumber: string;
+ /** 楠岃瘉鐮� */
+ verifyCode: string;
}
interface DeleteDictionaryCategoryCommand {
@@ -355,6 +360,15 @@
Female = 20,
}
+ enum EnumUserRealMethod {
+ /**涓汉鎵嬫満鍙蜂笁瑕佺礌 */
+ Identity3 = 10,
+ /**閾惰鍗″瑕佺礌 */
+ Identity4 = 20,
+ /**鍒疯劯璁よ瘉 */
+ Face = 30,
+ }
+
enum EnumUserStatus {
/**姝e父 */
Normal = 10,
@@ -470,6 +484,24 @@
/** 閿欒鐮� */
errorCode?: string;
data?: GetMenuQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetPersonalLoginInfoQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetPersonalLoginInfoQueryResult;
/** 鎵ц鎴愬姛 */
success?: boolean;
/** 閿欒淇℃伅 */
@@ -1251,6 +1283,24 @@
name?: string;
}
+ type GetPersonalLoginInfoQuery = Record<string, any>;
+
+ interface GetPersonalLoginInfoQueryResult {
+ /** Id */
+ id?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 鏄惁瀹炲悕 */
+ isReal?: boolean;
+ realMethod?: EnumUserRealMethod;
+ /** 鎴戠殑鎶ュ悕 */
+ taskCount?: number;
+ /** 宸插綍鐢� */
+ hirePassTaskCount?: number;
+ /** 宸插彇娑� */
+ hireRefuseTaskCount?: number;
+ }
+
interface GetResourceFieldsQueryResultItem {
/** 缂栧彿 */
code?: string;
@@ -1702,6 +1752,10 @@
accessToken?: string;
/** 鍒锋柊浠ょ墝 */
refreshToken?: string;
+ /** 浼氳瘽绉橀挜锛堜粎鐢ㄤ簬寰俊灏忕▼搴忔巿鏉冪櫥褰曪級 */
+ sessionKey?: string;
+ /** 鏄惁宸茬粦瀹氭墜鏈哄彿锛堜粎鐢ㄤ簬寰俊灏忕▼搴忔巿鏉冪櫥褰曪級 */
+ isBindPhoneNumber?: boolean;
}
interface PagedListQueryPageModel {
@@ -1769,6 +1823,13 @@
password: string;
type?: EnumUserType;
clientType?: EnumClientType;
+ }
+
+ interface RegisterPersonalUserCommand {
+ /** 鎵嬫満鍙风爜 */
+ phoneNumber: string;
+ /** 楠岃瘉鐮� */
+ verifyCode: string;
}
interface SaveDictionaryCategoryCommand {
@@ -2201,6 +2262,11 @@
type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;
+ interface UpdatePhoneNumberVerifyCodeCommand {
+ /** 鎵嬫満鍙风爜 */
+ phoneNumber: string;
+ }
+
interface WxmpLoginCommand {
/** 鐢ㄦ埛鐧诲綍鍑瘉 */
code: string;
--
Gitblit v1.9.1