From 4bc9cf48154b5666d4c928f32182bcbb92eca6c5 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期五, 14 二月 2025 17:31:43 +0800 Subject: [PATCH] feat: mine --- apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.vue | 17 + apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.config.ts | 3 apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.vue | 17 + apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue | 45 ++++ apps/bMiniApp/src/constants/router.ts | 4 apps/bMiniApp/src/pages/workbenches/InnerPage.vue | 6 apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue | 105 +-------- apps/bMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue | 2 apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.config.ts | 3 apps/bMiniApp/project.private.config.json | 7 apps/bMiniApp/src/app.config.ts | 6 apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue | 2 apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue | 45 ++++ apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue | 10 apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue | 94 +++++++++ apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.vue | 17 + apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue | 98 +++++++++ apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.config.ts | 3 apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue | 6 packages/components/src/Card/FlexJobCard.vue | 4 apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue | 88 ++++++++ 21 files changed, 483 insertions(+), 99 deletions(-) diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json index a22a756..ed2ef1f 100644 --- a/apps/bMiniApp/project.private.config.json +++ b/apps/bMiniApp/project.private.config.json @@ -70,6 +70,13 @@ "query": "", "launchMode": "default", "scene": null + }, + { + "name": "", + "pathName": "subpackages/flexJobManage/flexJobManage/flexJobManage", + "query": "", + "launchMode": "default", + "scene": null } ] } diff --git a/apps/bMiniApp/src/app.config.ts b/apps/bMiniApp/src/app.config.ts index fc23e91..8b9b688 100644 --- a/apps/bMiniApp/src/app.config.ts +++ b/apps/bMiniApp/src/app.config.ts @@ -97,7 +97,11 @@ }, { root: 'subpackages/flexJob', - pages: ['flexJobDetail/flexJobDetail'], + pages: ['flexJobDetail/flexJobDetail', 'flexJobDetailFromTask/flexJobDetailFromTask'], + }, + { + root: 'subpackages/flexJobManage', + pages: ['flexJobManage/flexJobManage', 'flexJobDetailFromManage/flexJobDetailFromManage'], }, ], // preloadRule: { diff --git a/apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue b/apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue new file mode 100644 index 0000000..6552419 --- /dev/null +++ b/apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue @@ -0,0 +1,94 @@ +<template> + <ContentView style="background-color: transparent" class="job-detail-content"> + <FlexJobTopView size="small" class="job-detail-content-top" /> + <div class="job-detail-content-contact-info"> + <div class="job-detail-content-contact-info-item"> + <div class="job-detail-content-contact-info-item-label">鎵嬫満鍙凤細</div> + <div class="job-detail-content-contact-info-item-text"> + {{ isCollapse ? '13333333333' : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} + </div> + </div> + <div class="job-detail-content-contact-info-item"> + <div class="job-detail-content-contact-info-item-label">韬唤璇佸彿锛�</div> + <div class="job-detail-content-contact-info-item-text"> + {{ isCollapse ? hiddenIDNumberForEnd6('330902199909123456') : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} + </div> + </div> + </div> + </ContentView> + <ProTabs + v-model="tab" + name="job-detail-content-tab" + :showSmile="false" + class="job-detail-content-tabs" + isTransparent + title-gutter="8" + fullHeight + > + <ProTabPane :title="`绠�鍘哷" pane-key="1"> + <curriculumView /> + </ProTabPane> + <ProTabPane :title="`缁忓巻`" pane-key="2"> + <experienceView /> + </ProTabPane> + </ProTabs> + <PageFooter> + <slot name="footer"></slot> + </PageFooter> +</template> + +<script setup lang="ts"> +import { FlexJobTopView, ProTabs, ProTabPane } from '@12333/components'; +import { hiddenIDNumberForEnd6 } from '@12333/utils'; +import curriculumView from './components/curriculumView.vue'; +import experienceView from './components/experienceView.vue'; + +defineOptions({ + name: 'JobDetailContent', +}); + +type Props = { + isCollapse: boolean; +}; + +const tab = ref('1'); +const props = withDefaults(defineProps<Props>(), {}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.job-detail-content-top { + margin-bottom: 20px; +} + +.job-detail-content-contact-info { + padding-left: 130px; + margin-bottom: 78px; + + .job-detail-content-contact-info-item { + display: flex; + align-items: center; + font-weight: 400; + font-size: 24px; + line-height: 28px; + margin-bottom: 22px; + + &:last-child { + margin-bottom: 0; + } + + .job-detail-content-contact-info-item-label { + color: boleGetCssVar('text-color', 'secondary'); + margin-right: 8px; + } + + .job-detail-content-contact-info-item-text { + color: boleGetCssVar('text-color', 'primary'); + flex: 1; + min-width: 0; + @include ellipsis; + } + } +} +</style> diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/CurriculumViewItem.vue b/apps/bMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue similarity index 96% rename from apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/CurriculumViewItem.vue rename to apps/bMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue index 62171b3..4da3a13 100644 --- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/CurriculumViewItem.vue +++ b/apps/bMiniApp/src/components/JobDetailContent/components/CurriculumViewItem.vue @@ -28,7 +28,7 @@ <style lang="scss"> @import '@/styles/common.scss'; -.flexJobDetail-page-wrapper { +.job-detail-content-tabs { .curriculum-list-item { display: flex; margin-bottom: 14px; diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/curriculumView.vue b/apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue similarity index 98% rename from apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/curriculumView.vue rename to apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue index fb3ea33..b06b8f9 100644 --- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/curriculumView.vue +++ b/apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue @@ -95,7 +95,7 @@ <style lang="scss"> @import '@/styles/common.scss'; -.flexJobDetail-page-wrapper { +.job-detail-content-tabs { .curriculum-position-list { width: 100%; display: flex; diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/experienceView.vue b/apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue similarity index 90% rename from apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/experienceView.vue rename to apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue index 70ff130..6cd3d6e 100644 --- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/components/experienceView.vue +++ b/apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue @@ -1,7 +1,7 @@ <template> <ContentScrollView> <Cell title="宀椾綅缁忓巻"> - <nut-steps direction="vertical" progress-dot :current="3" class="flexJobDetail-steps"> + <nut-steps direction="vertical" progress-dot :current="3" class="job-detail-content-steps"> <nut-step title="2024.12.24" content="鎮ㄧ殑璁㈠崟宸茬粡鎵撳寘瀹屾垚锛屽晢鍝佸凡鍙戝嚭"></nut-step> <nut-step title="2024.12.24" content="鎮ㄧ殑璁㈠崟姝e湪閰嶉�侀�斾腑"></nut-step> <nut-step title="2024.12.24"> @@ -24,8 +24,8 @@ <style lang="scss"> @import '@/styles/common.scss'; -.flexJobDetail-page-wrapper { - .flexJobDetail-steps { +.job-detail-content-tabs { + .job-detail-content-steps { .nut-step-main { margin-bottom: 40px; } diff --git a/apps/bMiniApp/src/constants/router.ts b/apps/bMiniApp/src/constants/router.ts index 325f06f..6d82c1c 100644 --- a/apps/bMiniApp/src/constants/router.ts +++ b/apps/bMiniApp/src/constants/router.ts @@ -11,6 +11,10 @@ editRichContent = '/subpackages/editRichContent/editRichContent', flexJobDetail = '/subpackages/flexJob/flexJobDetail/flexJobDetail', + flexJobDetailFromTask = '/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask', + + flexJobManage = '/subpackages/flexJobManage/flexJobManage/flexJobManage', + flexJobDetailFromManage = '/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage', // userInfo = '/subpackages/setting/userInfo/userInfo', // setting = '/subpackages/setting/setting/setting', diff --git a/apps/bMiniApp/src/pages/workbenches/InnerPage.vue b/apps/bMiniApp/src/pages/workbenches/InnerPage.vue index 7dc7384..22fe2ec 100644 --- a/apps/bMiniApp/src/pages/workbenches/InnerPage.vue +++ b/apps/bMiniApp/src/pages/workbenches/InnerPage.vue @@ -17,7 +17,11 @@ </CellChunk> <CellChunk title="鐢ㄤ汉"> <div class="workbenches-cell-list"> - <TaskDetailWelfareItem :icon="IconFlexjobManage" text="鐏靛伐绠$悊" /> + <TaskDetailWelfareItem + :icon="IconFlexjobManage" + text="鐏靛伐绠$悊" + @click="goPage(RouterPath.flexJobManage)" + /> <TaskDetailWelfareItem :icon="IconTaskManage" text="浠诲姟绠$悊" diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue index 9ba2d43..8930e23 100644 --- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue +++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue @@ -1,53 +1,22 @@ <template> <PageLayoutWithBg class="flexJobDetail-page-wrapper" title="鐏靛伐璇︽儏" :need-auth="false"> <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> - <ContentView style="background-color: transparent"> - <FlexJobTopView size="small" class="flexJobDetail-top" /> - <div class="flexJobDetail-contact-info"> - <div class="flexJobDetail-contact-info-item"> - <div class="flexJobDetail-contact-info-item-label">鎵嬫満鍙凤細</div> - <div class="flexJobDetail-contact-info-item-text"> - {{ isCollapse ? '13333333333' : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} - </div> - </div> - <div class="flexJobDetail-contact-info-item"> - <div class="flexJobDetail-contact-info-item-label">韬唤璇佸彿锛�</div> - <div class="flexJobDetail-contact-info-item-text"> - {{ isCollapse ? hiddenIDNumberForEnd6('330902199909123456') : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} - </div> - </div> - </div> - </ContentView> - <ProTabs - v-model="tab" - name="flexJobDetail-tab" - :showSmile="false" - class="flexJobDetail-tabs" - isTransparent - title-gutter="8" - fullHeight - > - <ProTabPane :title="`绠�鍘哷" pane-key="1"> - <curriculumView /> - </ProTabPane> - <ProTabPane :title="`缁忓巻`" pane-key="2"> - <experienceView /> - </ProTabPane> - </ProTabs> - <PageFooter> - <PageFooterAction - :icon="IconShare" - text="鍒嗕韩" - :isFlex="false" - openType="share" - ></PageFooterAction> - <PageFooterAction - :icon="IconAttentionActive" - text="鏀惰棌" - :isFlex="false" - ></PageFooterAction> - <PageFooterBtn type="primary" @click="toggle">绔嬪嵆鑱旂郴</PageFooterBtn> - </PageFooter> + <JobDetailContent :isCollapse="isCollapse"> + <template #footer> + <PageFooterAction + :icon="IconShare" + text="鍒嗕韩" + :isFlex="false" + openType="share" + ></PageFooterAction> + <PageFooterAction + :icon="IconAttentionActive" + text="鏀惰棌" + :isFlex="false" + ></PageFooterAction> + <PageFooterBtn type="primary" @click="toggle">绔嬪嵆鑱旂郴</PageFooterBtn> + </template> + </JobDetailContent> </LoadingLayout> </PageLayoutWithBg> </template> @@ -56,14 +25,10 @@ import Taro from '@tarojs/taro'; import { useQuery } from '@tanstack/vue-query'; import * as orderServices from '@12333/services/api/Order'; -import { FlexJobTopView, ProTabs, ProTabPane } from '@12333/components'; import IconShare from '@/assets/flexJob/icon-share.png'; import IconAttention from '@/assets/flexJob/icon-attention-lg.png'; import IconAttentionActive from '@/assets/flexJob/icon-attention-lg-active.png'; import { useToggle } from 'senin-mini/hooks'; -import curriculumView from './components/curriculumView.vue'; -import experienceView from './components/experienceView.vue'; -import { hiddenIDNumberForEnd6 } from '@12333/utils'; defineOptions({ name: 'flexJobDetail', @@ -71,8 +36,6 @@ const router = Taro.useRouter(); const taskId = router.params?.id ?? ''; - -const tab = ref('1'); const { isLoading, @@ -97,40 +60,4 @@ <style lang="scss"> @import '@/styles/common.scss'; - -.flexJobDetail-page-wrapper { - .flexJobDetail-top { - margin-bottom: 20px; - } - - .flexJobDetail-contact-info { - padding-left: 130px; - margin-bottom: 78px; - - .flexJobDetail-contact-info-item { - display: flex; - align-items: center; - font-weight: 400; - font-size: 24px; - line-height: 28px; - margin-bottom: 22px; - - &:last-child { - margin-bottom: 0; - } - - .flexJobDetail-contact-info-item-label { - color: boleGetCssVar('text-color', 'secondary'); - margin-right: 8px; - } - - .flexJobDetail-contact-info-item-text { - color: boleGetCssVar('text-color', 'primary'); - flex: 1; - min-width: 0; - @include ellipsis; - } - } - } -} </style> diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue new file mode 100644 index 0000000..284ae97 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue @@ -0,0 +1,45 @@ +<template> + <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> + <JobDetailContent :isCollapse="true"> + <template #footer> + <PageFooterBtn type="primary" plain>璋㈢粷</PageFooterBtn> + <PageFooterBtn type="primary">褰曠敤</PageFooterBtn> + </template> + </JobDetailContent> + </LoadingLayout> +</template> + +<script setup lang="ts"> +import Taro from '@tarojs/taro'; +import { useQuery } from '@tanstack/vue-query'; +import * as orderServices from '@12333/services/api/Order'; + +defineOptions({ + name: 'InnerPage', +}); + +const router = Taro.useRouter(); +const taskId = router.params?.id ?? ''; + +const { + isLoading, + isError, + data: detail, + refetch, +} = useQuery({ + queryKey: ['orderServices/getOrdeForDetail', taskId], + queryFn: async () => { + return await orderServices.getOrdeForDetail( + { id: taskId }, + { + showLoading: false, + } + ); + }, + placeholderData: () => ({} as API.OrderInfoDto), +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.config.ts b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.vue b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.vue new file mode 100644 index 0000000..b93464d --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/flexJobDetailFromTask.vue @@ -0,0 +1,17 @@ +<template> + <PageLayoutWithBg class="flexJobDetailFromTask-page-wrapper" title="鐏靛伐璇︽儏"> + <InnerPage></InnerPage> + </PageLayoutWithBg> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'flexJobDetailFromTask', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue new file mode 100644 index 0000000..ef5b3e0 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue @@ -0,0 +1,45 @@ +<template> + <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> + <JobDetailContent :isCollapse="true"> + <template #footer> + <PageFooterBtn type="primary" plain>瑙g害</PageFooterBtn> + <PageFooterBtn type="primary">绛剧害</PageFooterBtn> + </template> + </JobDetailContent> + </LoadingLayout> +</template> + +<script setup lang="ts"> +import Taro from '@tarojs/taro'; +import { useQuery } from '@tanstack/vue-query'; +import * as orderServices from '@12333/services/api/Order'; + +defineOptions({ + name: 'InnerPage', +}); + +const router = Taro.useRouter(); +const taskId = router.params?.id ?? ''; + +const { + isLoading, + isError, + data: detail, + refetch, +} = useQuery({ + queryKey: ['orderServices/getOrdeForDetail', taskId], + queryFn: async () => { + return await orderServices.getOrdeForDetail( + { id: taskId }, + { + showLoading: false, + } + ); + }, + placeholderData: () => ({} as API.OrderInfoDto), +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.config.ts b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.vue new file mode 100644 index 0000000..6e43ee6 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/flexJobDetailFromManage.vue @@ -0,0 +1,17 @@ +<template> + <PageLayoutWithBg class="flexJobDetailFromManage-page-wrapper" title="鐏靛伐璇︽儏"> + <InnerPage></InnerPage> + </PageLayoutWithBg> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'flexJobDetailFromManage', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue new file mode 100644 index 0000000..34e4490 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue @@ -0,0 +1,98 @@ +<template> + <ProTabs + v-model="queryState.mineHireType" + name="home-tab" + :showPaneContent="false" + class="home-tabs" + isTransparent + title-gutter="12" + title-scroll + > + <ProTabPane :title="`宸茬绾" :pane-key="TaskStatus.All"></ProTabPane> + <ProTabPane :title="`寰呯绾" :pane-key="TaskStatus.WaitSign"></ProTabPane> + <ProTabPane :title="`宸茶В绾" :pane-key="TaskStatus.Effect"></ProTabPane> + </ProTabs> + <InfiniteLoading + scrollViewClassName="common-infinite-scroll-list home-list" + v-bind="infiniteLoadingProps" + > + <template #renderItem="{ item }"> + <FlexJobCard :show-done-detail="false" :show-footer-left="false" @click="goDetail(item)"> + <template #footerRight> + <template v-if="Number(queryState.mineHireType) === TaskStatus.All"> + <nut-button + class="flexJobManage-card-plain-button" + type="default" + plain + @click.stop="handleUnContract" + >瑙g害</nut-button + > + <nut-button type="primary" @click.stop="checkContract">鏌ョ湅鍚堢害</nut-button> + </template> + <nut-button v-else type="primary" @click.stop="goSignContract">绛剧害</nut-button> + </template> + </FlexJobCard> + </template> + </InfiniteLoading> +</template> + +<script setup lang="ts"> +import { FlexJobCard, ProTabs, ProTabPane } from '@12333/components'; +import { RouterPath } from '@/constants'; +import { useInfiniteLoading } from '@12333/hooks'; +import { OrderInputType } from '@12333/constants'; +import * as orderServices from '@12333/services/api/Order'; +import { TaskStatus } from '@/constants/task'; +import Taro from '@tarojs/taro'; + +defineOptions({ + name: 'InnerPage', +}); + +const queryState = reactive({ + mineHireType: TaskStatus.All, +}); + +const { infiniteLoadingProps } = useInfiniteLoading( + ({ pageParam }) => { + let params: API.FrontOrderListInput = { + pageModel: { + rows: 20, + page: pageParam, + orderInput: [{ property: 'isRecommend', order: OrderInputType.Desc }], + }, + }; + + return orderServices.getFrontOrderList(params, { + showLoading: false, + }); + }, + { + queryKey: ['orderServices/getFrontOrderList'], + } +); + +function goDetail(item: API.FrontOrderList) { + Taro.navigateTo({ + url: `${RouterPath.flexJobDetailFromManage}?id=${item.id}`, + }); +} + +function checkContract() {} +function handleUnContract() {} +function goSignContract() {} +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; + +.flexJobManage-page-wrapper { + .flexJobManage-card-plain-button { + margin-right: 30px; + + &.nut-button--plain { + border-width: 1px; + } + } +} +</style> diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.config.ts b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.config.ts new file mode 100644 index 0000000..305fdb1 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + disableScroll: true, +}); diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.vue new file mode 100644 index 0000000..dc618a4 --- /dev/null +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/flexJobManage.vue @@ -0,0 +1,17 @@ +<template> + <PageLayoutWithBg class="flexJobManage-page-wrapper" :title="'鐏靛伐绠$悊'"> + <InnerPage></InnerPage> + </PageLayoutWithBg> +</template> + +<script setup lang="ts"> +import InnerPage from './InnerPage.vue'; + +defineOptions({ + name: 'flexJobManage', +}); +</script> + +<style lang="scss"> +@import '@/styles/common.scss'; +</style> diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue index c2ff4ee..6717cb2 100644 --- a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue +++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue @@ -53,7 +53,7 @@ // const props = withDefaults(defineProps<Props>(), {}); const router = Taro.useRouter(); -const taskId = router.params?.id ?? ''; +const taskId = router.params?.id ?? 'c4cfe028-23e7-0be8-ee56-3a11e3743b9d'; const { isLoading, @@ -77,4 +77,90 @@ <style lang="scss"> @import '@/styles/common.scss'; +.jobApplicationDetail-page-wrapper { + .taskDetail-time { + font-size: 24px; + color: boleGetCssVar('text-color', 'regular'); + line-height: 36px; + margin-bottom: 16px; + } + + .task-card-welfare-wrapper { + display: flex; + align-items: flex-start; + padding-bottom: 48px; + border-bottom: 1px solid #d9d9d9; + margin-bottom: 12px; + + .task-card-welfare-list { + flex: 1; + display: flex; + min-width: 0; + flex-wrap: wrap; + min-height: 40px; + row-gap: 6px; + column-gap: 18px; + margin-right: 10px; + + .task-card-welfare-list-item { + font-size: 24px; + color: #ff7d00; + line-height: 36px; + } + } + } + + .taskDetail-address-wrapper { + padding: 28px 32px 14px; + background: #f9fbff; + border-radius: 8px; + + .taskDetail-address-title-wrapper { + display: flex; + align-items: center; + margin-bottom: 22px; + + .taskDetail-address-title-icon { + width: 40px; + height: 40px; + margin-right: 8px; + } + + .taskDetail-address-title { + flex: 1; + min-width: 0; + @include ellipsis; + font-size: 28px; + color: boleGetCssVar('text-color', 'primary'); + line-height: 42px; + } + } + + .taskDetail-address-info-wrapper { + display: flex; + align-items: center; + + .taskDetail-address-info { + flex: 1; + min-width: 0; + @include ellipsis; + font-weight: 400; + font-size: 24px; + color: boleGetCssVar('text-color', 'regular'); + line-height: 36px; + } + + .taskDetail-address-info-icon { + color: boleGetCssVar('text-color', 'secondary'); + margin-left: 10px; + } + } + } + + .taskDetail-welfare-list { + display: flex; + flex-wrap: wrap; + row-gap: 24px; + } +} </style> diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue index 75f5381..4028bf9 100644 --- a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue +++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue @@ -6,7 +6,7 @@ <div class="flexJob-card-footer-text">宸插綍鐢�</div> </template> <template #footerRight> - <nut-button type="primary">鏌ョ湅璇︽儏</nut-button> + <nut-button type="primary" @click="goToJobDetail(item.id)">鏌ョ湅璇︽儏</nut-button> </template> </FlexJobCard> </template> @@ -15,9 +15,11 @@ <script setup lang="ts"> import { OrderInputType } from '@12333/constants'; +import { RouterPath } from '@/constants'; import { useInfiniteLoading } from '@12333/hooks'; import * as orderServices from '@12333/services/api/Order'; import { FlexJobCard } from '@12333/components'; +import Taro from '@tarojs/taro'; defineOptions({ name: 'SignList', @@ -45,6 +47,12 @@ queryKey: ['orderServices/getFrontOrderList'], } ); + +function goToJobDetail(id: string) { + Taro.navigateTo({ + url: `${RouterPath.flexJobDetailFromTask}?id=${id}`, + }); +} </script> <style lang="scss"> diff --git a/packages/components/src/Card/FlexJobCard.vue b/packages/components/src/Card/FlexJobCard.vue index ed27a18..9764a3c 100644 --- a/packages/components/src/Card/FlexJobCard.vue +++ b/packages/components/src/Card/FlexJobCard.vue @@ -6,7 +6,7 @@ '鍋氳繃锛氬鎴挎湇鍔″憳銆佸鎴挎湇鍔″憳銆佸鎴垮鎴挎湇鍔″憳銆佸鎴垮仛杩囷細瀹㈡埧鏈嶅姟鍛樸�佸鎴挎湇鍔″憳銆佸鎴垮鎴挎湇鍔″憳銆佸鎴�' }} </div> - <div class="flexJob-card-done-detail"> + <div class="flexJob-card-done-detail" v-if="showDoneDetail"> <div class="flexJob-card-done-detail-item"> {{ '鍦ㄣ�屽畞娉㈤浄杩.閰掑簵銆嶏紝鍋氳繃瀹㈡埧鏈嶅姟鍛樺湪銆屽畞娉㈤浄杩.閰掑簵銆嶏紝鍋氳繃瀹㈡埧鏈嶅姟鍛�' }} </div> @@ -43,11 +43,13 @@ type Props = CommonTaskCardProps & { showFooterLeft?: boolean; showFooterRight?: boolean; + showDoneDetail?: boolean; }; const props = withDefaults(defineProps<Props>(), { showFooterLeft: true, showFooterRight: true, + showDoneDetail: true, }); </script> -- Gitblit v1.9.1