From 5583271e6f5bb7a0dcc8e4876513f23a21a7b25f Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期三, 13 八月 2025 13:22:22 +0800 Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp --- apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue | 131 +++++++++++++++++++++++++++++++++++++++---- 1 files changed, 117 insertions(+), 14 deletions(-) diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue index b599bbe..a0435bc 100644 --- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue @@ -4,9 +4,23 @@ <Cell :title="detail?.name ?? ''" titleSize="large"> <template #title-right> <img + v-if="from === 'apply'" :src="detail.isCollected ? IconAttentioActive : IconAttention" class="taskDetail-attention-icon" + @click="handleAttention" /> + <div + v-if="from === 'sign'" + :style="{ color: GetPersonalApplyTaskInfosQueryStatusColor[detail.applyButton] }" + > + {{ GetTaskInfoQueryResultApplyButtonText[detail.applyButton] }} + </div> + <div + v-if="from === 'hire'" + :style="{ color: GetPersonalHireTaskInfosQueryStatusColor[detail.hireButton] }" + > + {{ GetTaskInfoQueryResultHireButtonText[detail.hireButton] }} + </div> </template> <div class="taskDetail-time"> {{ dayjs(detail?.beginTime).format('YYYY骞碝M鏈圖D鏃�') }} 鑷� @@ -22,7 +36,7 @@ </div> --> </div> <TaskPrice - :value="detail.serviceFee ?? 0" + :value="toThousand(detail.serviceFee ?? 0)" :unit="BillingMethodEnumUnit[detail.billingMethod]" /> </div> @@ -43,7 +57,7 @@ <TaskDetailWelfareItem v-for="benefit in detail.benefits" :key="benefit.benefitCode" - :icon="IconAttentioActive" + :icon="setOSSLink(benefit.benefitField2)" :text="benefit.benefitContent" /> </div> @@ -100,8 +114,36 @@ :isFlex="false" openType="share" ></PageFooterAction> - <PageFooterAction :icon="IconPhone" text="鎵嬫満" :isFlex="false"></PageFooterAction> - <PageFooterBtn type="primary">鎶ュ悕锛�5浜哄凡鎶ュ悕锛�</PageFooterBtn> + <PageFooterAction + :icon="IconPhone" + text="鎵嬫満" + :isFlex="false" + @click="handleCall" + ></PageFooterAction> + <PageFooterBtn v-if="from === 'sign'" type="primary" disabled> + {{ GetTaskInfoQueryResultApplyButtonText[detail.applyButton] }} + </PageFooterBtn> + <PageFooterBtn + v-if="from === 'hire'" + type="primary" + :disabled="detail?.hireButton !== GetTaskInfoQueryResultHireButton.ApplyCheckReceive" + @click="handleHire" + > + {{ GetTaskInfoQueryResultHireButtonText[detail.hireButton] }} + </PageFooterBtn> + <template v-if="from === 'apply'"> + <PageFooterBtn + v-if="detail?.releaseStatus === EnumTaskReleaseStatus.InProcess" + type="primary" + @click="handleApply" + :disabled="!!detail?.hireStatus" + >{{ `鎶ュ悕锛�${detail?.applyCount ?? 0}浜哄凡鎶ュ悕锛塦 }}</PageFooterBtn + > + + <PageFooterBtn v-if="detail.releaseStatus === EnumTaskReleaseStatus.Stopped" color="#999999" + >宸插仠姝�</PageFooterBtn + > + </template> </PageFooter> </LoadingLayout> </template> @@ -110,6 +152,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'; @@ -122,8 +165,17 @@ import './taskDetail.scss'; import CompanyDesc from '../components/CompanyDesc.vue'; import dayjs from 'dayjs'; -import { TaskUtils } from '@12333/utils'; -import { EnumSettlementCycleText, BillingMethodEnumUnit } from '@12333/constants'; +import { TaskUtils, toThousand, setOSSLink, Message } from '@12333/utils'; +import { + EnumSettlementCycleText, + BillingMethodEnumUnit, + EnumTaskReleaseStatus, + GetPersonalApplyTaskInfosQueryStatusColor, + GetTaskInfoQueryResultApplyButtonText, + GetPersonalHireTaskInfosQueryStatusColor, + GetTaskInfoQueryResultHireButtonText, + GetTaskInfoQueryResultHireButton, +} from '@12333/constants'; import { useAccessLogin } from '@/hooks'; defineOptions({ @@ -131,11 +183,12 @@ }); /** - * TODO 缂哄皯宸叉姤鍚嶄汉鏁� 鎵嬫満 鎶曡瘔涓炬姤鎺ュ彛 + * TODO 缂哄皯 鎶曡瘔涓炬姤鎺ュ彛 */ const router = Taro.useRouter(); -const taskId = router.params?.id ?? ''; +const id = router.params?.id ?? ''; +const from = router.params?.from ?? ''; const { isLoading, @@ -143,10 +196,10 @@ data: detail, refetch, } = useQuery({ - queryKey: ['taskServices/getTaskInfo', taskId], + queryKey: ['taskServices/getTaskInfo', id], queryFn: async () => { return await taskServices.getTaskInfo( - { id: taskId }, + { id: id }, { showLoading: false, } @@ -162,13 +215,63 @@ const goComplaint = useAccessLogin(() => { Taro.navigateTo({ - url: `${RouterPath.complaint}?id=${taskId}`, + url: `${RouterPath.complaint}?id=${id}`, }); }); const goCompanyDetail = useAccessLogin(() => { - Taro.navigateTo({ - url: `${RouterPath.companyDetail}?id=${taskId}`, - }); + if (detail.value.enterpriseId) { + Taro.navigateTo({ + url: `${RouterPath.companyDetail}?id=${detail.value.enterpriseId}`, + }); + } }); + +const handleApply = useAccessLogin(async () => { + try { + let params: API.ApplyTaskCommand = { + ids: [id], + }; + let res = await taskUserServices.applyTask(params); + if (res) { + Message.success('鎶ュ悕鎴愬姛'); + refetch({ type: 'inactive' }); + } + } catch (error) {} +}); + +const handleAttention = useAccessLogin(async () => { + try { + // await Message.confirm({ + // message: `纭畾${detail.value?.isCollected ? '鍙栨秷鏀惰棌' : '鏀惰棌'}鍚楋紵`, + // }); + let params: API.CollectTaskCommand = { + ids: [id], + isCollect: !detail.value?.isCollected, + }; + let res = await taskUserServices.collectTask(params); + if (res) { + refetch({ type: 'inactive' }); + // Message.success('鎿嶄綔鎴愬姛', { + // onClosed() { + // refetch({ type: 'inactive' }); + // }, + // }); + } + } catch (error) {} +}); + +const handleCall = useAccessLogin(() => { + if (detail.value.contactPhoneNumber) { + Taro.makePhoneCall({ + phoneNumber: detail.value.contactPhoneNumber, + }); + } +}); + +function handleHire() { +Taro.navigateTo({ + url: `${RouterPath.taskSubmitCheck}?id=${id}`, +}) +} </script> -- Gitblit v1.9.1