<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)"
|
@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({
|
releaseStatus: EnumTaskReleaseStatus.InProcess,
|
});
|
|
const releaseing = computed(() => {
|
return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.releaseing ?? 0;
|
});
|
const stoping = computed(() => {
|
return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.stoping ?? 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}?taskId=${item.id}&isCopy=${isCopy}`,
|
});
|
}
|
function goDetail(item: API.GetTaskInfosQueryResultItem) {
|
Taro.navigateTo({
|
url: `${RouterPath.jobApplicationDetail}?taskId=${item.id}`,
|
});
|
}
|
</script>
|
|
<style lang="scss">
|
@import '@/styles/common.scss';
|
</style>
|