| <template> | 
|   <ProTabs | 
|     v-model="queryState.status" | 
|     name="home-tab" | 
|     :showPaneContent="false" | 
|     class="home-tabs" | 
|     isTransparent | 
|     title-gutter="12" | 
|     title-scroll | 
|   > | 
|     <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane> | 
|     <ProTabPane :title="`待开始`" :pane-key="GetPersonalHireTaskInfosQueryStatus.Wait"></ProTabPane> | 
|     <ProTabPane | 
|       :title="`进行中`" | 
|       :pane-key="GetPersonalHireTaskInfosQueryStatus.InProcess" | 
|     ></ProTabPane> | 
|     <ProTabPane | 
|       :title="`已完成`" | 
|       :pane-key="GetPersonalHireTaskInfosQueryStatus.Completed" | 
|     ></ProTabPane> | 
|   </ProTabs> | 
|   <InfiniteLoading | 
|     scrollViewClassName="common-infinite-scroll-list home-list" | 
|     v-bind="infiniteLoadingProps" | 
|     :key="queryState.status" | 
|   > | 
|     <template #renderItem="{ item }"> | 
|       <TaskCard | 
|         :name="item.name" | 
|         :begin-time="item.beginTime" | 
|         :end-time="item.endTime" | 
|         :billing-method="item.billingMethod" | 
|         :benefits="item.benefits" | 
|         :service-fee="item.serviceFee" | 
|         :settlement-cycle="item.settlementCycle" | 
|         :address-name="item.addressName" | 
|         @click="goTaskDetail(item)" | 
|       > | 
|         <template #actions> | 
|           <div | 
|             class="task-card-actions-text" | 
|             :style="{ color: GetPersonalHireTaskInfosQueryStatusColor[item.status] }" | 
|           > | 
|             {{ GetPersonalHireTaskInfosQueryStatusText[item.status] }} | 
|           </div> | 
|         </template> | 
|       </TaskCard> | 
|     </template> | 
|   </InfiniteLoading> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { TaskCard, ProTabs, ProTabPane } from '@12333/components'; | 
| import { useInfiniteLoading } from '@12333/hooks'; | 
| import { | 
|   EnumPagedListOrder, | 
|   GetPersonalHireTaskInfosQueryStatus, | 
|   GetPersonalHireTaskInfosQueryStatusText, | 
|   GetPersonalHireTaskInfosQueryStatusColor, | 
| } from '@12333/constants'; | 
| import * as taskServices from '@12333/services/apiV2/task'; | 
| import Taro from '@tarojs/taro'; | 
|   | 
| defineOptions({ | 
|   name: 'InnerPage', | 
| }); | 
|   | 
| const queryState = reactive({ | 
|   status: 0 as any as GetPersonalHireTaskInfosQueryStatus, | 
| }); | 
|   | 
| const { infiniteLoadingProps } = useInfiniteLoading( | 
|   ({ pageParam }) => { | 
|     let params: API.GetPersonalHireTaskInfosQuery = { | 
|       pageModel: { | 
|         rows: 20, | 
|         page: pageParam, | 
|         orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], | 
|       }, | 
|     }; | 
|     if (Number(queryState.status)) { | 
|       params.status = queryState.status; | 
|     } | 
|     return taskServices.getPersonalHireTaskInfos(params, { | 
|       showLoading: false, | 
|     }); | 
|   }, | 
|   { | 
|     queryKey: ['taskServices/getPersonalHireTaskInfos', queryState], | 
|   } | 
| ); | 
|   | 
| function goTaskDetail(item: API.GetPersonalHireTaskInfosQueryResultItem) { | 
|   Taro.navigateTo({ | 
|     url: `${RouterPath.taskDetail}?id=${item.id}&from=hire`, | 
|   }); | 
| } | 
| </script> | 
|   | 
| <style lang="scss"> | 
| @import '@/styles/common.scss'; | 
|   | 
| .mineHire-page-wrapper { | 
|   .task-card-actions-text { | 
|     font-size: 24px; | 
|     line-height: 42px; | 
|   } | 
| } | 
| </style> |