<template> 
 | 
  <ProTabs 
 | 
    v-model="queryMenuState.releaseStatus" 
 | 
    name="home-tab" 
 | 
    :showPaneContent="false" 
 | 
    class="home-tabs" 
 | 
    isTransparent 
 | 
    title-gutter="12" 
 | 
    title-scroll 
 | 
  > 
 | 
    <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 
 | 
        :name="item.name" 
 | 
        :beginTime="item.beginTime" 
 | 
        :endTime="item.endTime" 
 | 
        :createdTime="item.createdTime" 
 | 
        :addressName="item.addressName" 
 | 
        :serviceFee="item.serviceFee" 
 | 
        :userCount="item.userCount" 
 | 
        :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 { 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 { queryMenuState, infiniteLoadingProps, invalidateQueries } = useTaskList({ 
 | 
  defaultQueryMenuState: { 
 | 
    releaseStatus: EnumTaskReleaseStatus.InProcess, 
 | 
  }, 
 | 
}); 
 | 
  
 | 
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) {} 
 | 
} 
 | 
  
 | 
async function handleDelete(item: API.GetTaskInfosQueryResultItem) { 
 | 
  try { 
 | 
    await Message.confirm({ 
 | 
      message: '确定要删除吗?', 
 | 
    }); 
 | 
    let params: API.DeleteTaskInfoCommand = { 
 | 
      ids: [item.id], 
 | 
    }; 
 | 
    let res = await taskServices.deleteTaskInfo(params); 
 | 
    if (res) { 
 | 
      Message.success('删除成功'); 
 | 
      invalidateQueries(); 
 | 
    } 
 | 
  } catch (error) {} 
 | 
} 
 | 
  
 | 
function goEdit(item: API.GetTaskInfosQueryResultItem, isCopy = false) { 
 | 
  Taro.navigateTo({ 
 | 
    url: `${RouterPath.publishTask}?id=${item.id}&isCopy=${isCopy}`, 
 | 
  }); 
 | 
} 
 | 
function goDetail(item: API.GetTaskInfosQueryResultItem) { 
 | 
  Taro.navigateTo({ 
 | 
    url: `${RouterPath.jobApplicationDetail}?id=${item.id}`, 
 | 
  }); 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
@import '@/styles/common.scss'; 
 | 
</style> 
 |