|  |  | 
 |  |  | <template> | 
 |  |  |   <div class="searchbar-container"> | 
 |  |  |   <div class="searchbar-container" v-if="showQueryState"> | 
 |  |  |     <BlSearchbar | 
 |  |  |       v-model.trim="searchValue" | 
 |  |  |       placeholder="搜索姓名/身份证号" | 
 |  |  | 
 |  |  |     <template #renderItem="{ item }"> | 
 |  |  |       <FlexJobCard | 
 |  |  |         :name="item.name" | 
 |  |  |         :genderType="item.genderType" | 
 |  |  |         :gender="item.gender" | 
 |  |  |         :age="item.age" | 
 |  |  |         :educationalLevel="item.educationalLevel" | 
 |  |  |         :arrangeCount="item.arrangeCount" | 
 |  |  |         :avatar="item.avatar" | 
 |  |  |         :isReal="item.isReal" | 
 |  |  |         :educationalBackgroundContent="item.educationalBackgroundContent" | 
 |  |  |         :personalIdentityContent="item.personalIdentityContent" | 
 |  |  |         :workExperience="item.workExperience" | 
 |  |  |         :workSeniority="item.workSeniority" | 
 |  |  |         :taskCount="item.taskCount" | 
 |  |  |         :showFooterLeft="false" | 
 |  |  |       > | 
 |  |  |         <template #footerRight> | 
 |  |  |           <nut-button type="primary" @click="handleArrange(item)">安排</nut-button> | 
 |  |  |           <!-- <div class="batch-task-card-status">已安排</div> --> | 
 |  |  |           <nut-button v-if="showQueryState" type="primary" @click.stop="handleArrange(item)" | 
 |  |  |             >安排</nut-button | 
 |  |  |           > | 
 |  |  |           <div v-else class="batch-task-card-status">已安排</div> | 
 |  |  |         </template> | 
 |  |  |       </FlexJobCard> | 
 |  |  |     </template> | 
 |  |  | 
 |  |  | <script setup lang="ts"> | 
 |  |  | import Taro from '@tarojs/taro'; | 
 |  |  | import { useInfiniteLoading } from '@12333/hooks'; | 
 |  |  | import { OrderInputType } from '@12333/constants'; | 
 |  |  | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; | 
 |  |  | import { EnumTaskUserArrangeStatus, EnumPagedListOrder } from '@12333/constants'; | 
 |  |  | import * as taskUserServices from '@12333/services/apiV2/taskUser'; | 
 |  |  | import _ from 'lodash'; | 
 |  |  | import { Message, trim } from '@12333/utils'; | 
 |  |  | import { FlexJobCard } from '@12333/components'; | 
 |  |  | 
 |  |  |  | 
 |  |  | const searchValue = ref(''); | 
 |  |  | const router = Taro.useRouter(); | 
 |  |  | const taskId = router.params?.taskId ?? ''; | 
 |  |  | const id = router.params?.id ?? ''; | 
 |  |  | const status = Number(router.params?.status); | 
 |  |  | const queryState = reactive({ | 
 |  |  |   searchValueTrim: '', | 
 |  |  |   keywords: '', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const showQueryState = computed(() => { | 
 |  |  |   return status === EnumTaskUserArrangeStatus.Wait; | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const handleSearch = _.debounce(function () { | 
 |  |  |   queryState.searchValueTrim = trim(searchValue.value); | 
 |  |  |   queryState.keywords = trim(searchValue.value); | 
 |  |  | }, 300); | 
 |  |  |  | 
 |  |  | const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading( | 
 |  |  |   ({ pageParam }) => { | 
 |  |  |     let params: API.GetFlexTaskWorkerArrangeListInput = { | 
 |  |  |       searchKeys: queryState.searchValueTrim, | 
 |  |  |       flexTaskId: taskId, | 
 |  |  |     let params: API.GetArrangeTaskUsersQuery = { | 
 |  |  |       keywords: queryState.keywords, | 
 |  |  |       arrangeStatus: status, | 
 |  |  |       id: id, | 
 |  |  |       pageModel: { | 
 |  |  |         rows: 20, | 
 |  |  |         page: pageParam, | 
 |  |  |         orderInput: [{ property: 'lastShelfTime', order: OrderInputType.Desc }], | 
 |  |  |         orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], | 
 |  |  |       }, | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     return flexWorkerServices.getFlexTaskWorkerArrangeList(params, { | 
 |  |  |     return taskUserServices.getArrangeTaskUsers(params, { | 
 |  |  |       showLoading: false, | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     queryKey: ['flexWorkerServices/getFlexTaskWorkerArrangeList', queryState], | 
 |  |  |     queryKey: ['taskUserServices/getArrangeTaskUsers', queryState], | 
 |  |  |   } | 
 |  |  | ); | 
 |  |  |  | 
 |  |  | async function handleArrange(item: API.GetNewestWorkerListOutput) { | 
 |  |  | async function handleArrange(item: API.GetArrangeTaskUsersQueryResultItem) { | 
 |  |  |   try { | 
 |  |  |     let params: API.TaskWorkerArrangeInput = { | 
 |  |  |       flexTaskId: taskId, | 
 |  |  |       flexWorkerId: item.userId, | 
 |  |  |       arrange: true, | 
 |  |  |     let params: API.SetTaskUserArrangeCommand = { | 
 |  |  |       id: item.id, | 
 |  |  |       arrangeStatus: EnumTaskUserArrangeStatus.Complete, | 
 |  |  |     }; | 
 |  |  |     let res = await flexWorkerServices.taskWorkerArrange(params); | 
 |  |  |     let res = await taskUserServices.setTaskUserArrange(params); | 
 |  |  |     if (res) { | 
 |  |  |       Message.success('已安排'); | 
 |  |  |       invalidateQueries(); |