|  |  | 
 |  |  |       <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> | 
 |  |  |           <div v-if="from === 'cancel'" :style="{ color: '#999999' }">已取消</div> | 
 |  |  |         </template> | 
 |  |  |         <div class="taskDetail-time"> | 
 |  |  |           {{ dayjs(detail?.beginTime).format('YYYY年MM月DD日') }} 至 | 
 |  |  | 
 |  |  |             :unit="BillingMethodEnumUnit[detail.billingMethod]" | 
 |  |  |           /> | 
 |  |  |         </div> | 
 |  |  |         <div class="taskDetail-address-wrapper"> | 
 |  |  |         <div class="taskDetail-address-wrapper" @click="goMap"> | 
 |  |  |           <div class="taskDetail-address-title-wrapper"> | 
 |  |  |             <img :src="IconLocaltion" class="taskDetail-address-title-icon" /> | 
 |  |  |             <div class="taskDetail-address-title">{{ detail?.addressName ?? '' }}</div> | 
 |  |  | 
 |  |  |             @click="goCompanyDetail" | 
 |  |  |             :enterpriseName="detail?.enterpriseName ?? ''" | 
 |  |  |             :taskCount="detail?.taskCount ?? 0" | 
 |  |  |             :isReal="detail?.isReal ?? false" | 
 |  |  |           ></CompanyDesc> | 
 |  |  |         </CellChunk> | 
 |  |  |       </Cell> | 
 |  |  | 
 |  |  |         :isFlex="false" | 
 |  |  |         @click="handleCall" | 
 |  |  |       ></PageFooterAction> | 
 |  |  |       <template v-if="from === 'mine'"> | 
 |  |  |         <PageFooterBtn | 
 |  |  |           v-if="detail.applyButton === GetTaskInfoQueryResultApplyButton.WaitHire" | 
 |  |  |           color="#999999" | 
 |  |  |           disabled | 
 |  |  |           >待确认</PageFooterBtn | 
 |  |  |         > | 
 |  |  |         <!-- <PageFooterBtn | 
 |  |  |         v-if="detail.applyButton === GetTaskInfoQueryResultApplyButton.WaitSignContract" | 
 |  |  |         >去签约</PageFooterBtn | 
 |  |  |       > --> | 
 |  |  |         <PageFooterBtn | 
 |  |  |           v-if="detail.hireButton === GetTaskInfoQueryResultHireButton.InProcess" | 
 |  |  |           color="#999999" | 
 |  |  |           disabled | 
 |  |  |           >进行中</PageFooterBtn | 
 |  |  |         > | 
 |  |  |         <!-- <PageFooterBtn | 
 |  |  |         v-if="detail.hireButton === GetTaskInfoQueryResultHireButton.ApplyCheckReceive" | 
 |  |  |         >申请验收</PageFooterBtn | 
 |  |  |       > --> | 
 |  |  |         <PageFooterBtn | 
 |  |  |           v-if="detail.hireButton === GetTaskInfoQueryResultHireButton.Completed" | 
 |  |  |           color="#999999" | 
 |  |  |           disabled | 
 |  |  |           >已完成</PageFooterBtn | 
 |  |  |         > | 
 |  |  |       </template> | 
 |  |  |       <template v-else> | 
 |  |  |       <PageFooterBtn | 
 |  |  |         v-if="from === 'sign'" | 
 |  |  |         type="primary" | 
 |  |  |         :disabled="detail?.applyButton === GetTaskInfoQueryResultApplyButton.WaitHire" | 
 |  |  |         @click="handleSign" | 
 |  |  |       > | 
 |  |  |         {{ 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" | 
 |  |  |           :disabled="!!detail?.hireStatus" | 
 |  |  |           >{{ `报名(${detail?.applyCount ?? 0}人已报名)` }}</PageFooterBtn | 
 |  |  |         > | 
 |  |  |  | 
 |  |  | 
 |  |  | import { useQuery } from '@tanstack/vue-query'; | 
 |  |  | import * as taskServices from '@12333/services/apiV2/task'; | 
 |  |  | import * as taskUserServices from '@12333/services/apiV2/taskUser'; | 
 |  |  | import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee'; | 
 |  |  | import { useToggle } from 'senin-mini/hooks'; | 
 |  |  | import { TaskPrice, TaskDetailWelfareItem } from '@12333/components'; | 
 |  |  | import IconAttention from '@/assets/task/icon-attention.png'; | 
 |  |  | 
 |  |  |   EnumSettlementCycleText, | 
 |  |  |   BillingMethodEnumUnit, | 
 |  |  |   EnumTaskReleaseStatus, | 
 |  |  |   EnumTaskUserHireStatus, | 
 |  |  |   GetTaskInfoQueryResultApplyButton, | 
 |  |  |   GetPersonalApplyTaskInfosQueryStatusColor, | 
 |  |  |   GetTaskInfoQueryResultApplyButtonText, | 
 |  |  |   GetPersonalHireTaskInfosQueryStatusColor, | 
 |  |  |   GetTaskInfoQueryResultHireButtonText, | 
 |  |  |   GetTaskInfoQueryResultHireButton, | 
 |  |  |   GetTaskInfoQueryResultApplyButton, | 
 |  |  | } from '@12333/constants'; | 
 |  |  | import { useAccessLogin } from '@/hooks'; | 
 |  |  |  | 
 |  |  | 
 |  |  | /** | 
 |  |  |  * TODO 缺少 投诉举报接口 | 
 |  |  |  */ | 
 |  |  |  | 
 |  |  | const { userDetail } = useUser(); | 
 |  |  | const router = Taro.useRouter(); | 
 |  |  | const id = router.params?.id ?? ''; | 
 |  |  | const from = router.params?.from ?? ''; | 
 |  |  | 
 |  |  |     }); | 
 |  |  |   } | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function handleHire() { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: `${RouterPath.taskSubmitCheck}?id=${id}`, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | const handleSign = useAccessReal(() => { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: `${RouterPath.mineAgreementSignDetail}?id=${detail.value?.enterpriseEmployeeId}`, | 
 |  |  |   }); | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function goMap() { | 
 |  |  |   Taro.openLocation({ | 
 |  |  |     latitude: detail.value?.latitude, | 
 |  |  |     longitude: detail.value?.longitude, | 
 |  |  |     scale: 18, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | Taro.useDidShow(() => { | 
 |  |  |   refetch(); | 
 |  |  | }); | 
 |  |  | </script> |