From 676578f3be736ef109d1c8a15da265a62c66ba04 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期二, 12 八月 2025 13:13:23 +0800 Subject: [PATCH] feat: 接口对接 --- apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue | 4 apps/cMiniApp/src/pages/home/index.vue | 4 apps/cMiniApp/.eslintrc-auto-import.json | 3 apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue | 4 apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue | 5 apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue | 27 +----- apps/cMiniApp/project.private.config.json | 14 +++ apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue | 9 -- apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue | 20 ++-- apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue | 62 ++++++++++++++- packages/components/src/Card/TaskCard.vue | 5 - apps/cMiniApp/auto-imports.d.ts | 2 apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue | 4 apps/cMiniApp/project.config.json | 4 apps/cMiniApp/src/hooks/user.ts | 19 ++++ apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue | 4 16 files changed, 122 insertions(+), 68 deletions(-) diff --git a/apps/cMiniApp/.eslintrc-auto-import.json b/apps/cMiniApp/.eslintrc-auto-import.json index ff1c0db..ade550f 100644 --- a/apps/cMiniApp/.eslintrc-auto-import.json +++ b/apps/cMiniApp/.eslintrc-auto-import.json @@ -109,6 +109,7 @@ "useSwitchTab": true, "useTaskList": true, "useUser": true, - "useUserResume": true + "useUserResume": true, + "useUpdateResume": true } } diff --git a/apps/cMiniApp/auto-imports.d.ts b/apps/cMiniApp/auto-imports.d.ts index f8c3f8a..5702a8e 100644 --- a/apps/cMiniApp/auto-imports.d.ts +++ b/apps/cMiniApp/auto-imports.d.ts @@ -91,6 +91,7 @@ const useSlots: typeof import('vue')['useSlots'] const useSwitchTab: typeof import('./src/hooks/router')['useSwitchTab'] const useTemplateRef: typeof import('vue')['useTemplateRef'] + const useUpdateResume: typeof import('./src/hooks/user')['useUpdateResume'] const useUser: typeof import('./src/hooks/user')['useUser'] const useUserResume: typeof import('./src/hooks/user')['useUserResume'] const watch: typeof import('vue')['watch'] @@ -203,6 +204,7 @@ readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']> readonly useSwitchTab: UnwrapRef<typeof import('./src/hooks/router')['useSwitchTab']> readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']> + readonly useUpdateResume: UnwrapRef<typeof import('./src/hooks/user')['useUpdateResume']> readonly useUser: UnwrapRef<typeof import('./src/hooks/user')['useUser']> readonly useUserResume: UnwrapRef<typeof import('./src/hooks/user')['useUserResume']> readonly watch: UnwrapRef<typeof import('vue')['watch']> diff --git a/apps/cMiniApp/project.config.json b/apps/cMiniApp/project.config.json index 1d057ff..cc53dd5 100644 --- a/apps/cMiniApp/project.config.json +++ b/apps/cMiniApp/project.config.json @@ -3,8 +3,8 @@ "description": "", "setting": { "urlCheck": false, - "es6": true, - "enhance": true, + "es6": false, + "enhance": false, "postcss": false, "preloadBackgroundData": false, "minified": false, diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json index 02429d4..5bf897c 100644 --- a/apps/cMiniApp/project.private.config.json +++ b/apps/cMiniApp/project.private.config.json @@ -77,6 +77,20 @@ "query": "", "launchMode": "default", "scene": null + }, + { + "name": "", + "pathName": "subpackages/task/taskDetail/taskDetail", + "query": "id=04c75425-e783-4dbf-0f16-08ddd626b756", + "launchMode": "default", + "scene": null + }, + { + "name": "", + "pathName": "subpackages/curriculum/mineCurriculumVitae/mineCurriculumVitae", + "query": "", + "launchMode": "default", + "scene": null } ] } diff --git a/apps/cMiniApp/src/hooks/user.ts b/apps/cMiniApp/src/hooks/user.ts index 4238c51..db1c702 100644 --- a/apps/cMiniApp/src/hooks/user.ts +++ b/apps/cMiniApp/src/hooks/user.ts @@ -2,7 +2,7 @@ import Taro from '@tarojs/taro'; import { object2query, LocationUtils } from '@12333/utils'; import { ParkOrHRStatus, UserCertificationFrontStatus } from '@12333/constants'; -import { useQuery } from '@tanstack/vue-query'; +import { useQuery, useQueryClient } from '@tanstack/vue-query'; import { MaybeRef } from 'vue'; import { useRefeshDidShow } from '@12333/hooks/infiniteLoading'; import * as userResumeServices from '@12333/services/apiV2/userResume'; @@ -117,3 +117,20 @@ refetch, }; } + +export function useUpdateResume() { + const queryClient = useQueryClient(); + + const updateUserResumeCredentials = () => { + return queryClient.invalidateQueries(['userResumeServices/getUserResumeCredentials']); + }; + + const updateUserResume = () => { + return queryClient.invalidateQueries(['userResumeServices/getUserResume']); + }; + + return { + updateUserResumeCredentials, + updateUserResume, + }; +} diff --git a/apps/cMiniApp/src/pages/home/index.vue b/apps/cMiniApp/src/pages/home/index.vue index fb3d2cb..5231954 100644 --- a/apps/cMiniApp/src/pages/home/index.vue +++ b/apps/cMiniApp/src/pages/home/index.vue @@ -57,7 +57,7 @@ :key="queryState.orderType" > <template #renderItem="{ item }"> - <TaskCard @click="goTaskDetail(item)" v-bind="item" @apply="goTaskApply(item)" /> + <TaskCard @click="goTaskDetail(item)" v-bind="item" /> </template> </InfiniteLoading> </PageLayoutWithBg> @@ -65,8 +65,6 @@ <script setup lang="ts"> import { useUser } from '@/hooks'; -import { useUserStore } from '@/stores/modules/user'; -import { RectDown, Location2 } from '@nutui/icons-vue-taro'; import Taro from '@tarojs/taro'; import { setLocationCity } from '@/utils'; import _ from 'lodash'; diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue index 399ab72..3eb5d6a 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue @@ -54,6 +54,8 @@ name: 'InnerPage', }); +const { updateUserResume } = useUpdateResume(); + const eventChannel = useEventChannel(); const { dictionaryDataList: identityList } = useDictionaryDataSelect({ @@ -145,7 +147,7 @@ Message.success('淇濆瓨鎴愬姛', { onClosed() { goBack(); - eventChannel.emit('updateResume', { content: true }); + updateUserResume(); }, }); } diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue index f546f29..e659738 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificate/InnerPage.vue @@ -21,18 +21,9 @@ 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 { diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue index 26fc3cf..6aaee7d 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue @@ -78,7 +78,7 @@ const router = Taro.useRouter(); const id = router.params?.id as string; const isEdit = computed(() => !!id); -const queryClient = useQueryClient(); +const { updateUserResumeCredentials } = useUpdateResume(); const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({ categoryCode: CategoryCode.CertificateType, @@ -173,7 +173,7 @@ Message.success(isEdit.value ? '缂栬緫鎴愬姛' : '娣诲姞鎴愬姛', { onClosed() { goBack(); - queryClient.invalidateQueries(['userResumeServices/getUserResumeCredentials']); + updateUserResumeCredentials(); }, }); } diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue index 8165e96..2e12b89 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineCurriculumVitae/InnerPage.vue @@ -125,7 +125,6 @@ import IconPhone from '@/assets/mine/icon-phone.png'; import Taro from '@tarojs/taro'; import { setOSSLink } from '@12333/utils'; -import { useEvent } from 'senin-mini/hooks'; defineOptions({ name: 'InnerPage', @@ -140,16 +139,15 @@ function goPage(routeName: string) { Taro.navigateTo({ url: routeName, - events: { - updateResume(data: { content: boolean }) { - console.log('content: ', data.content); - if (data.content) { - refetch({ - type: 'inactive', - }); - } - }, - }, + // events: { + // updateResume(data: { content: boolean }) { + // if (data.content) { + // refetch({ + // type: 'inactive', + // }); + // } + // }, + // }, }); } function goEditMineInfo() { diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue index 9a7eca4..07085f8 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue @@ -38,7 +38,7 @@ name: 'InnerPage', }); -const { refetch: userResumeRefetch } = useUserResume(); +const { updateUserResume } = useUpdateResume(); const { isLoading, @@ -81,7 +81,7 @@ Message.success('淇濆瓨鎴愬姛', { onClosed() { goBack(); - userResumeRefetch({ type: 'inactive' }); + updateUserResume(); }, }); } diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue index d913841..a826890 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue @@ -48,13 +48,12 @@ import { Message } from '@12333/utils'; import { useQuery } from '@tanstack/vue-query'; import { goBack } from '@/utils'; -import { useEventChannel } from 'senin-mini/hooks'; defineOptions({ name: 'InnerPage', }); -const eventChannel = useEventChannel(); +const { updateUserResume } = useUpdateResume(); const { dictionaryDataList: positionList } = useDictionaryDataSelect({ categoryCode: CategoryCode.Position, @@ -131,7 +130,7 @@ Message.success('淇濆瓨鎴愬姛', { onClosed() { goBack(); - eventChannel.emit('updateResume', { content: true }); + updateUserResume(); }, }); } diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue index 1303900..36a1ced 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue @@ -24,7 +24,7 @@ name: 'InnerPage', }); -const { refetch: userResumeRefetch } = useUserResume(); +const { updateUserResume } = useUpdateResume(); const form = reactive({ workSeniority: '', @@ -64,7 +64,7 @@ Message.success('淇濆瓨鎴愬姛', { onClosed() { goBack(); - userResumeRefetch({ type: 'inactive' }); + updateUserResume(); }, }); } diff --git a/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue index b4a33b2..1861411 100644 --- a/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue @@ -16,34 +16,15 @@ <script setup lang="ts"> import { TaskCard } from '@12333/components'; import { useUserStore } from '@/stores/modules/user'; -import { useInfiniteLoading } from '@12333/hooks'; -import { OrderInputType } from '@12333/constants'; -import * as flexWorkerServices from '@12333/services/api/FlexWorker'; +import { useTaskList } from '@12333/hooks'; defineOptions({ name: 'InnerPage', }); -const userStore = useUserStore(); - -const { infiniteLoadingProps } = useInfiniteLoading( - ({ pageParam }) => { - let params: API.GetFlexTaskListInput = { - pageModel: { - rows: 20, - page: pageParam, - orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }], - }, - }; - - return flexWorkerServices.getFlexTaskByArrange(params, { - showLoading: false, - }); - }, - { - queryKey: ['flexWorkerServices/getFlexTaskByArrange'], - } -); +const { infiniteLoadingProps } = useTaskList({ + defaultQueryMenuState: {}, +}); </script> <style lang="scss"> diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue index 6a0d918..3261651 100644 --- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue @@ -6,6 +6,7 @@ <img :src="detail.isCollected ? IconAttentioActive : IconAttention" class="taskDetail-attention-icon" + @click="handleAttention" /> </template> <div class="taskDetail-time"> @@ -100,9 +101,17 @@ :isFlex="false" openType="share" ></PageFooterAction> - <PageFooterAction :icon="IconPhone" text="鎵嬫満" :isFlex="false"></PageFooterAction> - <PageFooterBtn v-if="detail.releaseStatus === EnumTaskReleaseStatus.InProcess" type="primary" - >鎶ュ悕锛�5浜哄凡鎶ュ悕锛�</PageFooterBtn + <PageFooterAction + :icon="IconPhone" + text="鎵嬫満" + :isFlex="false" + @click="handleCall" + ></PageFooterAction> + <PageFooterBtn + v-if="detail.releaseStatus === EnumTaskReleaseStatus.InProcess" + type="primary" + @click="handleApply" + >{{ `鎶ュ悕锛�${detail?.applyCount ?? 0}浜哄凡鎶ュ悕锛塦 }}</PageFooterBtn > <PageFooterBtn v-if="detail.releaseStatus === EnumTaskReleaseStatus.Stopped" color="#999999" >宸插仠姝�</PageFooterBtn @@ -115,6 +124,7 @@ import Taro from '@tarojs/taro'; import { useQuery } from '@tanstack/vue-query'; import * as taskServices from '@12333/services/apiV2/task'; +import * as taskUserServices from '@12333/services/apiV2/taskUser'; import { useToggle } from 'senin-mini/hooks'; import { TaskPrice, TaskDetailWelfareItem } from '@12333/components'; import IconAttention from '@/assets/task/icon-attention.png'; @@ -127,7 +137,7 @@ import './taskDetail.scss'; import CompanyDesc from '../components/CompanyDesc.vue'; import dayjs from 'dayjs'; -import { TaskUtils, toThousand, setOSSLink } from '@12333/utils'; +import { TaskUtils, toThousand, setOSSLink, Message } from '@12333/utils'; import { EnumSettlementCycleText, BillingMethodEnumUnit, @@ -182,4 +192,48 @@ }); } }); + +const handleApply = useAccessLogin(async () => { + try { + let params: API.ApplyTaskCommand = { + ids: [taskId], + }; + let res = await taskUserServices.applyTask(params); + if (res) { + Message.success('鎶ュ悕鎴愬姛', { + onClosed() { + refetch({ type: 'inactive' }); + }, + }); + } + } catch (error) {} +}); + +const handleAttention = useAccessLogin(async () => { + try { + await Message.confirm({ + message: `纭畾${detail.value?.isCollected ? '鍙栨秷鏀惰棌' : '鏀惰棌'}鍚楋紵`, + }); + let params: API.CollectTaskCommand = { + ids: [taskId], + isCollect: !detail.value?.isCollected, + }; + let res = await taskUserServices.collectTask(params); + if (res) { + Message.success('鎿嶄綔鎴愬姛', { + onClosed() { + refetch({ type: 'inactive' }); + }, + }); + } + } catch (error) {} +}); + +const handleCall = useAccessLogin(() => { + if (detail.value.contactPhoneNumber) { + Taro.makePhoneCall({ + phoneNumber: detail.value.contactPhoneNumber, + }); + } +}); </script> diff --git a/packages/components/src/Card/TaskCard.vue b/packages/components/src/Card/TaskCard.vue index 687f7f6..254b6c5 100644 --- a/packages/components/src/Card/TaskCard.vue +++ b/packages/components/src/Card/TaskCard.vue @@ -37,10 +37,7 @@ </div> <div class="task-card-actions" v-if="showActions"> <slot name="actions"> - <nut-button - v-if="releaseStatus === EnumTaskReleaseStatus.InProcess" - type="primary" - @click.stop="emit('apply', id)" + <nut-button v-if="releaseStatus === EnumTaskReleaseStatus.InProcess" type="primary" >鎶ュ悕</nut-button > </slot> -- Gitblit v1.9.1