wupengfei
2 天以前 85c2df026e79b6813e482af4e6ea124dac1fc112
src/views/EmploymentManage/TaskManageList.vue
@@ -43,14 +43,15 @@
          </QueryFilterItem>
        </template>
        <template #btn>
          <el-button @click="goAddOrEdit()" type="primary">发布</el-button>
          <el-button
            v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
            @click="goAddOrEdit()"
            type="primary"
            >发布</el-button
          >
        </template>
      </ProTableQueryFilterBar>
      <ProTableV2
        v-bind="proTableProps"
        :columns="EmploymentManageColumns"
        :operationBtns="operationBtns"
      >
      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
        <template #userCount="{ row }">
          <el-button link type="primary" @click="goSignList(row)">{{
            row.userCount || 0
@@ -72,44 +73,34 @@
  useTable,
  FieldDatePicker,
  FieldRadio,
  defineOperationBtns,
} from '@bole-core/components';
import { EmploymentManageColumns } from './constants';
import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
import { useGlobalEventContext } from '@/hooks';
import * as taskServices from '@/services/api/task';
import { format } from '@/utils';
import { format, OrderUtils } from '@/utils';
import { ModelValueType } from 'element-plus';
import { Message } from '@bole-core/core';
import dayjs from 'dayjs';
defineOptions({
  name: 'TaskManageList',
});
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'editBtn',
      name: '编辑',
    },
const operationBtnMap: Record<string, OperationBtnType> = {
  editBtn: {
    emits: {
      onClick: (role) => goAddOrEdit(role),
    },
  },
  {
    data: {
      enCode: 'detailBtn',
      name: '详情',
    extraProps: {
      hide: (row: API.GetTaskInfosQueryResultItem) => row.status === EnumTaskStatus.Complete,
    },
  },
  detailBtn: {
    emits: {
      onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row),
    },
  },
  {
    data: {
      enCode: 'publishBtn',
      name: '发布',
    },
  publishBtn: {
    emits: {
      onClick: (row: API.GetTaskInfosQueryResultItem) =>
        setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess),
@@ -119,11 +110,7 @@
        row.releaseStatus === EnumTaskReleaseStatus.InProcess,
    },
  },
  {
    data: {
      enCode: 'unPublishBtn',
      name: '停止发布',
    },
  unPublishBtn: {
    emits: {
      onClick: (row: API.GetTaskInfosQueryResultItem) =>
        setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped),
@@ -133,16 +120,20 @@
        row.releaseStatus === EnumTaskReleaseStatus.Stopped,
    },
  },
  {
    data: {
      enCode: 'arrangeBtn',
      name: '安排',
    },
  arrangeBtn: {
    emits: {
      onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row),
    },
    extraProps: {
      hide: (row: API.GetTaskInfosQueryResultItem) =>
        row.releaseStatus === EnumTaskReleaseStatus.Stopped,
    },
  },
]);
};
const { checkSubModuleItemShow, column, operationBtns } = useAccess({
  operationBtnMap,
});
const router = useRouter();
@@ -204,7 +195,6 @@
      releaseStatus: '' as any as EnumTaskReleaseStatus,
      time: [] as unknown as ModelValueType,
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['taskServices/getTaskInfos'],
    columnsRenderProps: {
@@ -213,12 +203,30 @@
      genderLimit: { type: 'enum', valueEnum: EnumUserGenderText },
      status: { type: 'enum', valueEnum: EnumTaskStatusText },
      releaseStatus: { type: 'enum', valueEnum: EnumTaskReleaseStatusText },
      createdTime: { type: 'date', format: 'YYYY-MM-DD' },
      beginTime: { type: 'date', format: 'YYYY-MM-DD' },
      endTime: { type: 'date', format: 'YYYY-MM-DD' },
      serviceFee: {
        type: 'money',
        formatter: (row) => {
          return `${row.serviceFee}${EnumBillingMethodUnitText[row.billingMethod]}`;
        type: 'text',
        formatter: (row: API.GetTaskInfosQueryResultItem) => {
          return OrderUtils.getServiceFeeText(row.serviceFee, row.billingMethod);
        },
      },
      applyBeginTime: { type: 'date', format: 'YYYY-MM-DD' },
      applyEndTime: { type: 'date', format: 'YYYY-MM-DD' },
      //@ts-ignore
      applyStatus: {
        formatter: (row: API.GetTaskInfosQueryResultItem) => {
          const applyBeginTime = dayjs(row.applyBeginTime);
          const applyEndTime = dayjs(row.applyEndTime);
          const now = dayjs();
          if (applyEndTime.isBefore(now)) {
            return '已结束';
          } else if (applyBeginTime.isAfter(now)) {
            return '待开始';
          } else {
            return '进行中';
          }
        },
      },
    },