| | |
| | | <template> |
| | | <div class="searchbar-container"> |
| | | <div class="searchbar-container" v-if="showQueryState"> |
| | | <BlSearchbar |
| | | v-model.trim="searchValue" |
| | | placeholder="搜索姓名/身份证号" |
| | |
| | | </div> |
| | | <InfiniteLoading scrollViewClassName="common-infinite-scroll-list" v-bind="infiniteLoadingProps"> |
| | | <template #renderItem="{ item }"> |
| | | <FlexJobCard :showFooterLeft="false"> |
| | | <FlexJobCard |
| | | :name="item.name" |
| | | :gender="item.gender" |
| | | :age="item.age" |
| | | :educationalBackgroundContent="item.educationalBackgroundContent" |
| | | :taskCount="item.taskCount" |
| | | :showFooterLeft="false" |
| | | > |
| | | <template #footerRight> |
| | | <nut-button type="primary">安排</nut-button> |
| | | <!-- <div class="batch-task-card-status">已安排</div> --> |
| | | <nut-button v-if="showQueryState" type="primary" @click="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 { trim } from '@12333/utils'; |
| | | import { Message, trim } from '@12333/utils'; |
| | | import { FlexJobCard } from '@12333/components'; |
| | | |
| | | defineOptions({ |
| | |
| | | }); |
| | | |
| | | const searchValue = ref(''); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const id = router.params?.id ?? ''; |
| | | const status = router.params?.status ?? ''; |
| | | const queryState = reactive({ |
| | | searchValueTrim: '', |
| | | keywords: '', |
| | | }); |
| | | |
| | | const showQueryState = computed(() => { |
| | | return status === 'arrange'; |
| | | }); |
| | | |
| | | const handleSearch = _.debounce(function () { |
| | | queryState.searchValueTrim = trim(searchValue.value); |
| | | queryState.keywords = trim(searchValue.value); |
| | | }, 300); |
| | | |
| | | const { infiniteLoadingProps } = useInfiniteLoading( |
| | | const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading( |
| | | ({ pageParam }) => { |
| | | let params: API.GetFlexTaskListInput = { |
| | | let params: API.GetArrangeTaskUsersQuery = { |
| | | keywords: queryState.keywords, |
| | | arrangeStatus: EnumTaskUserArrangeStatus.Wait, |
| | | id: id, |
| | | pageModel: { |
| | | rows: 20, |
| | | page: pageParam, |
| | | orderInput: [{ property: 'lastShelfTime', order: OrderInputType.Desc }], |
| | | orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], |
| | | }, |
| | | }; |
| | | |
| | | return flexWorkerServices.getFlexTaskByArrange(params, { |
| | | return taskUserServices.getArrangeTaskUsers(params, { |
| | | showLoading: false, |
| | | }); |
| | | }, |
| | | { |
| | | queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState], |
| | | queryKey: ['taskUserServices/getArrangeTaskUsers', queryState], |
| | | } |
| | | ); |
| | | |
| | | async function handleArrange(item: API.GetArrangeTaskUsersQueryResultItem) { |
| | | try { |
| | | let params: API.SetTaskUserArrangeCommand = { |
| | | id: item.id, |
| | | arrangeStatus: EnumTaskUserArrangeStatus.Complete, |
| | | }; |
| | | let res = await taskUserServices.setTaskUserArrange(params); |
| | | if (res) { |
| | | Message.success('已安排'); |
| | | invalidateQueries(); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |