|  |  | 
 |  |  | <template> | 
 |  |  |   <ProTabs | 
 |  |  |     v-model="queryState.mineHireType" | 
 |  |  |     v-model="queryMenuState.releaseStatus" | 
 |  |  |     name="home-tab" | 
 |  |  |     :showPaneContent="false" | 
 |  |  |     class="home-tabs" | 
 |  |  | 
 |  |  |     title-gutter="12" | 
 |  |  |     title-scroll | 
 |  |  |   > | 
 |  |  |     <ProTabPane :title="`发布中(${1})`" :pane-key="0"></ProTabPane> | 
 |  |  |     <ProTabPane :title="`已停止(${1})`" :pane-key="10"></ProTabPane> | 
 |  |  |     <ProTabPane | 
 |  |  |       :title="`发布中(${releaseing})`" | 
 |  |  |       :pane-key="EnumTaskReleaseStatus.InProcess" | 
 |  |  |     ></ProTabPane> | 
 |  |  |     <ProTabPane | 
 |  |  |       :title="`已停止(${stoping})`" | 
 |  |  |       :pane-key="EnumTaskReleaseStatus.Stopped" | 
 |  |  |     ></ProTabPane> | 
 |  |  |   </ProTabs> | 
 |  |  |   <InfiniteLoading | 
 |  |  |     scrollViewClassName="common-infinite-scroll-list home-list" | 
 |  |  |     v-bind="infiniteLoadingProps" | 
 |  |  |     :key="queryMenuState.releaseStatus" | 
 |  |  |   > | 
 |  |  |     <template #renderItem="{ item }"> | 
 |  |  |       <JobApplicationCard @edit="goEdit" @detail="goDetail"> </JobApplicationCard> | 
 |  |  |       <JobApplicationCard | 
 |  |  |         :name="item.name" | 
 |  |  |         :beginTime="item.beginTime" | 
 |  |  |         :endTime="item.endTime" | 
 |  |  |         :createdTime="item.createdTime" | 
 |  |  |         :addressName="item.addressName" | 
 |  |  |         :serviceFee="item.serviceFee" | 
 |  |  |         :userCount="item.userCount" | 
 |  |  |         :status="item.status" | 
 |  |  |         :unit="BillingMethodEnumUnit[item.billingMethod]" | 
 |  |  |         :releaseStatus="item.releaseStatus" | 
 |  |  |         @edit="goEdit(item)" | 
 |  |  |         @copy="goEdit(item, true)" | 
 |  |  |         @detail="goDetail(item)" | 
 |  |  |         @click="goDetail(item)" | 
 |  |  |         @publish="handleChangeStatus(item, EnumTaskReleaseStatus.InProcess)" | 
 |  |  |         @stop="handleChangeStatus(item, EnumTaskReleaseStatus.Stopped)" | 
 |  |  |         @delete="handleDelete(item)" | 
 |  |  |       > | 
 |  |  |       </JobApplicationCard> | 
 |  |  |     </template> | 
 |  |  |   </InfiniteLoading> | 
 |  |  | </template> | 
 |  |  | 
 |  |  | <script setup lang="ts"> | 
 |  |  | import { JobApplicationCard, ProTabs, ProTabPane } from '@12333/components'; | 
 |  |  | import { RouterPath } from '@/constants'; | 
 |  |  | import { useInfiniteLoading } from '@12333/hooks'; | 
 |  |  | import { OrderInputType } from '@12333/constants'; | 
 |  |  | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; | 
 |  |  | import { TaskStatus } from '@/constants/task'; | 
 |  |  | import { EnumTaskReleaseStatus, BillingMethodEnumUnit } from '@12333/constants'; | 
 |  |  | import Taro from '@tarojs/taro'; | 
 |  |  | import { Message } from '@12333/utils'; | 
 |  |  | import * as taskServices from '@12333/services/apiV2/task'; | 
 |  |  | import { useTaskList } from '@12333/hooks'; | 
 |  |  |  | 
 |  |  | defineOptions({ | 
 |  |  |   name: 'InnerPage', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const queryState = reactive({ | 
 |  |  |   mineHireType: TaskStatus.All, | 
 |  |  | const { queryMenuState, infiniteLoadingProps, invalidateQueries } = useTaskList({ | 
 |  |  |   defaultQueryMenuState: { | 
 |  |  |     releaseStatus: EnumTaskReleaseStatus.InProcess, | 
 |  |  |   }, | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const { infiniteLoadingProps } = useInfiniteLoading( | 
 |  |  |   ({ pageParam }) => { | 
 |  |  |     let params: API.GetFlexTaskListInput = { | 
 |  |  |       pageModel: { | 
 |  |  |         rows: 20, | 
 |  |  |         page: pageParam, | 
 |  |  |         orderInput: [{ property: 'isRecommend', order: OrderInputType.Desc }], | 
 |  |  |       }, | 
 |  |  | const releaseing = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.inProcessReleaseCount ?? 0; | 
 |  |  | }); | 
 |  |  | const stoping = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.stoppedReleaseCount ?? 0; | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | async function handleChangeStatus( | 
 |  |  |   item: API.GetTaskInfosQueryResultItem, | 
 |  |  |   releaseStatus: EnumTaskReleaseStatus | 
 |  |  | ) { | 
 |  |  |   try { | 
 |  |  |     let params: API.SetTaskInfoReleaseStatusCommand = { | 
 |  |  |       ids: [item.id], | 
 |  |  |       releaseStatus: releaseStatus, | 
 |  |  |     }; | 
 |  |  |     let res = await taskServices.setTaskInfoReleaseStatus(params); | 
 |  |  |     if (res) { | 
 |  |  |       Message.success('操作成功'); | 
 |  |  |       invalidateQueries(); | 
 |  |  |     } | 
 |  |  |   } catch (error) {} | 
 |  |  | } | 
 |  |  |  | 
 |  |  |     return flexWorkerServices.getFlexTaskByArrange(params, { | 
 |  |  |       showLoading: false, | 
 |  |  | async function handleDelete(item: API.GetTaskInfosQueryResultItem) { | 
 |  |  |   try { | 
 |  |  |     await Message.confirm({ | 
 |  |  |       message: '确定要删除吗?', | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     queryKey: ['flexWorkerServices/getFlexTaskByArrange'], | 
 |  |  |   } | 
 |  |  | ); | 
 |  |  |     let params: API.DeleteTaskInfoCommand = { | 
 |  |  |       ids: [item.id], | 
 |  |  |     }; | 
 |  |  |     let res = await taskServices.deleteTaskInfo(params); | 
 |  |  |     if (res) { | 
 |  |  |       Message.success('删除成功'); | 
 |  |  |       invalidateQueries(); | 
 |  |  |     } | 
 |  |  |   } catch (error) {} | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function goPage(routeName: string) { | 
 |  |  | function goEdit(item: API.GetTaskInfosQueryResultItem, isCopy = false) { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: routeName, | 
 |  |  |     url: `${RouterPath.publishTask}?id=${item.id}&isCopy=${isCopy}`, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function goEdit() { | 
 |  |  |   goPage(RouterPath.publishTask); | 
 |  |  | } | 
 |  |  | function goDetail() { | 
 |  |  |   goPage(RouterPath.jobApplicationDetail); | 
 |  |  | function goDetail(item: API.GetTaskInfosQueryResultItem) { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: `${RouterPath.jobApplicationDetail}?id=${item.id}`, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style lang="scss"> | 
 |  |  | @import '@/styles/common.scss'; | 
 |  |  |  | 
 |  |  | // .jobApplicationManage-page-wrapper { | 
 |  |  | // } | 
 |  |  | </style> |