|  |  | 
 |  |  | <template> | 
 |  |  |   <ProTabs | 
 |  |  |     v-model="queryState.status" | 
 |  |  |     v-model="queryMenuState.status" | 
 |  |  |     name="task-tab" | 
 |  |  |     :showPaneContent="false" | 
 |  |  |     class="task-tabs" | 
 |  |  | 
 |  |  |     title-gutter="8" | 
 |  |  |     title-scroll | 
 |  |  |   > | 
 |  |  |     <ProTabPane :title="`待安排(${notCount})`" pane-key="10"></ProTabPane> | 
 |  |  |     <ProTabPane :title="`已安排(${hasCount})`" pane-key="20"></ProTabPane> | 
 |  |  |     <ProTabPane :title="`待安排(${waitAssignCount})`" :pane-key="EnumTaskStatus.Wait"></ProTabPane> | 
 |  |  |     <ProTabPane | 
 |  |  |       :title="`已安排(${completedAssignCount})`" | 
 |  |  |       :pane-key="EnumTaskStatus.Complete" | 
 |  |  |     ></ProTabPane> | 
 |  |  |   </ProTabs> | 
 |  |  |   <InfiniteLoading | 
 |  |  |     scrollViewClassName="common-infinite-scroll-list" | 
 |  |  |     v-bind="infiniteLoadingProps" | 
 |  |  |     :key="queryState.status" | 
 |  |  |     :key="queryMenuState.status" | 
 |  |  |   > | 
 |  |  |     <template #renderItem="{ item }"> | 
 |  |  |       <JobApplicationCard | 
 |  |  |         :taskName="item.taskName" | 
 |  |  |         :startDate="item.startDate" | 
 |  |  |         :endDate="item.endDate" | 
 |  |  |         :address="item.address" | 
 |  |  |         :creationTime="item.creationTime" | 
 |  |  |         :fee="item.fee" | 
 |  |  |         :unit="SalaryTimeTypeEnumUnit[item.feeType]" | 
 |  |  |         @click="goSubmitTaskDetail(item)" | 
 |  |  |         :name="item.name" | 
 |  |  |         :beginTime="item.beginTime" | 
 |  |  |         :endTime="item.endTime" | 
 |  |  |         :addressName="item.addressName" | 
 |  |  |         :createdTime="item.createdTime" | 
 |  |  |         :serviceFee="item.serviceFee" | 
 |  |  |         :unit="BillingMethodEnumUnit[item.billingMethod]" | 
 |  |  |         mode="taskManage" | 
 |  |  |       > | 
 |  |  |         <template #footer-actions> | 
 |  |  |           <nut-button | 
 |  |  |             v-if="item.isArrange" | 
 |  |  |             type="primary" | 
 |  |  |             :color="Colors.Info" | 
 |  |  |             class="dark-btn" | 
 |  |  |             @click="goSubmitTaskDetail(item)" | 
 |  |  |             >详情</nut-button | 
 |  |  |           > | 
 |  |  |           <nut-button type="primary" v-else @click="goBatchTaskList(item)">人员安排</nut-button> | 
 |  |  |           <div> | 
 |  |  |             <nut-button | 
 |  |  |               type="primary" | 
 |  |  |               @click.stop="goBatchTaskList(item, EnumTaskUserArrangeStatus.Wait)" | 
 |  |  |               >人员安排</nut-button | 
 |  |  |             > | 
 |  |  |             <nut-button | 
 |  |  |               v-if="item.status === EnumTaskStatus.Complete" | 
 |  |  |               type="primary" | 
 |  |  |               :color="Colors.Info" | 
 |  |  |               class="dark-btn" | 
 |  |  |               @click.stop="goBatchTaskList(item, EnumTaskUserArrangeStatus.Complete)" | 
 |  |  |               >详情</nut-button | 
 |  |  |             > | 
 |  |  |           </div> | 
 |  |  |         </template> | 
 |  |  |       </JobApplicationCard> | 
 |  |  |     </template> | 
 |  |  | 
 |  |  | <script setup lang="ts"> | 
 |  |  | import { JobApplicationCard, ProTabs, ProTabPane } from '@12333/components'; | 
 |  |  | import Taro from '@tarojs/taro'; | 
 |  |  | import { useInfiniteLoading } from '@12333/hooks'; | 
 |  |  | import { OrderInputType, Colors } from '@12333/constants'; | 
 |  |  | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; | 
 |  |  | import { SalaryTimeTypeEnumUnit } from '@/constants/task'; | 
 |  |  | import { | 
 |  |  |   EnumTaskStatus, | 
 |  |  |   BillingMethodEnumUnit, | 
 |  |  |   Colors, | 
 |  |  |   EnumTaskUserArrangeStatus, | 
 |  |  | } from '@12333/constants'; | 
 |  |  | import { useTaskList } from '@12333/hooks'; | 
 |  |  |  | 
 |  |  | defineOptions({ | 
 |  |  |   name: 'InnerPage', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const queryState = reactive({ | 
 |  |  |   status: '10', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const { infiniteLoadingProps } = useInfiniteLoading( | 
 |  |  |   ({ pageParam }) => { | 
 |  |  |     let params: API.GetFlexTaskListInput = { | 
 |  |  |       isArrange: queryState.status === '20', | 
 |  |  |       pageModel: { | 
 |  |  |         rows: 20, | 
 |  |  |         page: pageParam, | 
 |  |  |         orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }], | 
 |  |  |       }, | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     return flexWorkerServices.getFlexTaskByArrange(params, { | 
 |  |  |       showLoading: false, | 
 |  |  |     }); | 
 |  |  | const { queryMenuState, infiniteLoadingProps } = useTaskList({ | 
 |  |  |   defaultQueryMenuState: { | 
 |  |  |     status: EnumTaskStatus.Wait, | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState], | 
 |  |  |   } | 
 |  |  | ); | 
 |  |  |  | 
 |  |  | const hasCount = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.hasCount ?? 0; | 
 |  |  | }); | 
 |  |  | const notCount = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.notCount ?? 0; | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function goSubmitTaskDetail(item: API.GetFlexTaskListOutput) { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: `${RouterPath.flexJobDetail}?taskId=${item.taskId}`, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | const completedAssignCount = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedAssignCount ?? 0; | 
 |  |  | }); | 
 |  |  | const waitAssignCount = computed(() => { | 
 |  |  |   return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.waitAssignCount ?? 0; | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function goBatchTaskList(item: API.GetFlexTaskListOutput) { | 
 |  |  | //有问题 | 
 |  |  | // function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) { | 
 |  |  | //   Taro.navigateTo({ | 
 |  |  | //     url: `${RouterPath.taskManage}?taskId=${item.id}`, | 
 |  |  | //   }); | 
 |  |  | // } | 
 |  |  |  | 
 |  |  | function goBatchTaskList(item: API.GetTaskInfosQueryResultItem, status: EnumTaskUserArrangeStatus) { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: `${RouterPath.batchTaskList}?taskId=${item.taskId}`, | 
 |  |  |     url: `${RouterPath.batchTaskList}?id=${item.id}&status=${status}`, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style lang="scss"> | 
 |  |  | @import '@/styles/common.scss'; | 
 |  |  |  | 
 |  |  | .taskManage-page-wrapper { | 
 |  |  |   .dark-btn { | 
 |  |  |     margin-left: 12px; | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </style> |