wupengfei
8 天以前 5694090781fb8badc7ab31d9a4a38de1856d5eda
feat: 接口对接
1个文件已添加
12个文件已修改
594 ■■■■■ 已修改文件
apps/bMiniApp/.eslintrc-auto-import.json 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/auto-imports.d.ts 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/hooks/task.ts 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/mine/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/JobApplicationCard.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/apiEnum.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/task.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/auth.ts 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/index.ts 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/task.ts 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/.eslintrc-auto-import.json
@@ -98,6 +98,28 @@
    "useIsLogin": true,
    "useLoginedJump": true,
    "useSwitchTab": true,
    "useUser": true
    "useUser": true,
    "HomeOrderType": true,
    "useTaskList": true,
    "EnumBillingMethod": true,
    "EnumClientType": true,
    "EnumMenuType": true,
    "EnumMenuVisitLevel": true,
    "EnumPagedListOrder": true,
    "EnumRealAccess": true,
    "EnumResourceController": true,
    "EnumResourceMethod": true,
    "EnumRoleWebApiDataPower": true,
    "EnumSettlementCycle": true,
    "EnumSmsAccess": true,
    "EnumSmsTemplateType": true,
    "EnumTaskCheckReceiveStatus": true,
    "EnumTaskRecommendStatus": true,
    "EnumTaskReleaseStatus": true,
    "EnumTaskSettlementStatus": true,
    "EnumTaskStatus": true,
    "EnumUserGender": true,
    "EnumUserStatus": true,
    "EnumUserType": true
  }
}
apps/bMiniApp/auto-imports.d.ts
@@ -8,6 +8,27 @@
  const AppLocalConfig: typeof import('./src/constants/app')['AppLocalConfig']
  const BackType: typeof import('./src/constants/enum')['BackType']
  const EffectScope: typeof import('vue')['EffectScope']
  const EnumBillingMethod: typeof import('./src/constants/apiEnum')['EnumBillingMethod']
  const EnumClientType: typeof import('./src/constants/apiEnum')['EnumClientType']
  const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
  const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']
  const EnumPagedListOrder: typeof import('./src/constants/apiEnum')['EnumPagedListOrder']
  const EnumRealAccess: typeof import('./src/constants/apiEnum')['EnumRealAccess']
  const EnumResourceController: typeof import('./src/constants/apiEnum')['EnumResourceController']
  const EnumResourceMethod: typeof import('./src/constants/apiEnum')['EnumResourceMethod']
  const EnumRoleWebApiDataPower: typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']
  const EnumSettlementCycle: typeof import('./src/constants/apiEnum')['EnumSettlementCycle']
  const EnumSmsAccess: typeof import('./src/constants/apiEnum')['EnumSmsAccess']
  const EnumSmsTemplateType: typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']
  const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
  const EnumTaskRecommendStatus: typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']
  const EnumTaskReleaseStatus: typeof import('./src/constants/apiEnum')['EnumTaskReleaseStatus']
  const EnumTaskSettlementStatus: typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']
  const EnumTaskStatus: typeof import('./src/constants/apiEnum')['EnumTaskStatus']
  const EnumUserGender: typeof import('./src/constants/apiEnum')['EnumUserGender']
  const EnumUserStatus: typeof import('./src/constants/apiEnum')['EnumUserStatus']
  const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType']
  const HomeOrderType: typeof import('./src/hooks/task')['HomeOrderType']
  const OssAssets: typeof import('./src/constants/img')['OssAssets']
  const RouterPath: typeof import('./src/constants/router')['RouterPath']
  const TabBarPageRouter: typeof import('./src/constants/tabBar')['TabBarPageRouter']
@@ -87,6 +108,7 @@
  const useRouter: typeof import('vue-router')['useRouter']
  const useSlots: typeof import('vue')['useSlots']
  const useSwitchTab: typeof import('./src/hooks/router')['useSwitchTab']
  const useTaskList: typeof import('./src/hooks/task')['useTaskList']
  const useTemplateRef: typeof import('vue')['useTemplateRef']
  const useUser: typeof import('./src/hooks/user')['useUser']
  const watch: typeof import('vue')['watch']
@@ -105,6 +127,9 @@
  // @ts-ignore
  export type { RouterPath, RouterPath } from './src/constants/router'
  import('./src/constants/router')
  // @ts-ignore
  export type { HomeOrderType } from './src/hooks/task'
  import('./src/hooks/task')
}
// for vue template auto import
import { UnwrapRef } from 'vue'
@@ -113,6 +138,7 @@
    readonly AppLocalConfig: UnwrapRef<typeof import('./src/constants/app')['AppLocalConfig']>
    readonly BackType: UnwrapRef<typeof import('./src/constants/enum')['BackType']>
    readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
    readonly HomeOrderType: UnwrapRef<typeof import('./src/hooks/task')['HomeOrderType']>
    readonly OssAssets: UnwrapRef<typeof import('./src/constants/img')['OssAssets']>
    readonly RouterPath: UnwrapRef<typeof import('./src/constants/router')['RouterPath']>
    readonly TabBarPageRouter: UnwrapRef<typeof import('./src/constants/tabBar')['TabBarPageRouter']>
@@ -190,6 +216,7 @@
    readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
    readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
    readonly useSwitchTab: UnwrapRef<typeof import('./src/hooks/router')['useSwitchTab']>
    readonly useTaskList: UnwrapRef<typeof import('./src/hooks/task')['useTaskList']>
    readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
    readonly useUser: UnwrapRef<typeof import('./src/hooks/user')['useUser']>
    readonly watch: UnwrapRef<typeof import('vue')['watch']>
apps/bMiniApp/src/hooks/task.ts
New file
@@ -0,0 +1,86 @@
import { useInfiniteLoading } from '@12333/hooks';
import {
  EnumPagedListOrder,
  EnumSettlementCycle,
  EnumTaskRecommendStatus,
  EnumTaskReleaseStatus,
  EnumTaskStatus,
  EnumUserGender,
} from '@12333/constants';
import _ from 'lodash';
import { trim } from '@12333/utils';
import { MaybeRef } from 'vue';
import * as taskServices from '@12333/services/apiV2/task';
export enum HomeOrderType {
  Recommend = 'Recommend',
  LastShelfTime = 'LastShelfTime',
}
type UseTaskListOptions = {
  cityCode?: MaybeRef<string>;
  enabled?: MaybeRef<boolean>;
};
export function useTaskList(options: UseTaskListOptions = {}) {
  const { cityCode = '', enabled = true } = options;
  const searchValue = ref('');
  const queryMenuState = reactive({
    genderLimit: '' as any as EnumUserGender,
    settlementCycle: '' as any as EnumSettlementCycle,
    benefitCodes: '',
    status: '' as any as EnumTaskStatus,
    releaseStatus: '' as any as EnumTaskReleaseStatus,
  });
  const queryState = reactive({
    searchValueTrim: '',
    orderType: HomeOrderType.Recommend,
  });
  const handleSearch = _.debounce(function () {
    queryState.searchValueTrim = trim(searchValue.value);
  }, 300);
  const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
    ({ pageParam }) => {
      let params: API.GetTaskInfosQuery = {
        pageModel: {
          rows: 20,
          page: pageParam,
          orderInput: [
            queryState.orderType === HomeOrderType.Recommend
              ? { property: 'recommendStatus', order: EnumPagedListOrder.Desc }
              : { property: 'createdTime', order: EnumPagedListOrder.Desc },
          ],
        },
        keywords: queryState.searchValueTrim,
        cityCode: unref(cityCode),
        settlementCycle: queryMenuState.settlementCycle,
        benefitCodes: [queryMenuState.benefitCodes].filter(Boolean),
        genderLimit: queryMenuState.genderLimit,
        status: queryMenuState.status,
        releaseStatus: queryMenuState.releaseStatus,
      };
      return taskServices.getTaskInfos(params, {
        showLoading: false,
      });
    },
    {
      queryKey: ['taskServices/getTaskInfos', queryState, queryMenuState, cityCode],
      enabled: enabled,
    }
  );
  return {
    searchValue,
    queryState,
    queryMenuState,
    handleSearch,
    infiniteLoadingProps,
    invalidateQueries,
  };
}
apps/bMiniApp/src/pages/mine/index.vue
@@ -42,7 +42,7 @@
            <div class="mine-go-login" v-else>去登录</div>
          </div>
        </template>
        <div class="mine-business-card">
        <div class="mine-business-card" v-if="isLogin">
          <div class="mine-business-card-item" @click="goBusinessCard">
            <img class="mine-business-card-item-icon" :src="IconBusinessCard" alt="" />
            <div class="mine-business-card-item-text">我的电子名片</div>
apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
  <ProTabs
    v-model="queryState.flexTaskReleaseStatus"
    v-model="queryMenuState.releaseStatus"
    name="home-tab"
    :showPaneContent="false"
    class="home-tabs"
@@ -9,37 +9,35 @@
    title-scroll
  >
    <ProTabPane
      :title="`${
        FlexTaskReleaseStatusEnumText[FlexTaskReleaseStatusEnum.Releasing]
      }(${releaseing})`"
      :pane-key="FlexTaskReleaseStatusEnum.Releasing"
      :title="`发布中(${releaseing})`"
      :pane-key="EnumTaskReleaseStatus.InProcess"
    ></ProTabPane>
    <ProTabPane
      :title="`${FlexTaskReleaseStatusEnumText[FlexTaskReleaseStatusEnum.Stoping]}(${stoping})`"
      :pane-key="FlexTaskReleaseStatusEnum.Stoping"
      :title="`已停止(${stoping})`"
      :pane-key="EnumTaskReleaseStatus.Stopped"
    ></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list home-list"
    v-bind="infiniteLoadingProps"
    :key="queryState.flexTaskReleaseStatus"
    :key="queryMenuState.releaseStatus"
  >
    <template #renderItem="{ item }">
      <JobApplicationCard
        :taskName="item.taskName"
        :startDate="item.startDate"
        :endDate="item.endDate"
        :creationTime="item.creationTime"
        :address="item.address"
        :fee="item.fee"
        :applyWorkerCount="item.applyWorkerCount"
        :unit="SalaryTimeTypeEnumUnit[item.feeType]"
        :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, FlexTaskReleaseStatusEnum.Releasing)"
        @stop="handleChangeStatus(item, FlexTaskReleaseStatusEnum.Stoping)"
        @publish="handleChangeStatus(item, EnumTaskReleaseStatus.InProcess)"
        @stop="handleChangeStatus(item, EnumTaskReleaseStatus.Stopped)"
        @delete="handleDelete(item)"
      >
      </JobApplicationCard>
@@ -50,44 +48,17 @@
<script setup lang="ts">
import { JobApplicationCard, ProTabs, ProTabPane } from '@12333/components';
import { RouterPath } from '@/constants';
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType } from '@12333/constants';
import {
  FlexTaskReleaseStatusEnum,
  FlexTaskReleaseStatusEnumText,
  SalaryTimeTypeEnumUnit,
} from '@12333/constants/task';
import { EnumTaskReleaseStatus, BillingMethodEnumUnit } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import Taro from '@tarojs/taro';
import { Message } from '@12333/utils';
import * as taskServices from '@12333/services/apiV2/task';
defineOptions({
  name: 'InnerPage',
});
const queryState = reactive({
  flexTaskReleaseStatus: FlexTaskReleaseStatusEnum.Releasing,
});
const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetFlexTaskListByStatusInput = {
      releaseStatus: queryState.flexTaskReleaseStatus,
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
      },
    };
    return flexWorkerServices.getFlexTaskList(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['flexWorkerServices/getFlexTaskList', queryState],
  }
);
const { queryMenuState, infiniteLoadingProps, invalidateQueries } = useTaskList();
const releaseing = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.releaseing ?? 0;
@@ -97,15 +68,15 @@
});
async function handleChangeStatus(
  item: API.GetFlexTaskListOutput,
  releaseStatus: FlexTaskReleaseStatusEnum
  item: API.GetTaskInfosQueryResultItem,
  releaseStatus: EnumTaskReleaseStatus
) {
  try {
    let params: API.UpdateTaskReleaseStatusInput = {
      taskId: item.taskId,
    let params: API.SetTaskInfoReleaseStatusCommand = {
      ids: [item.id],
      releaseStatus: releaseStatus,
    };
    let res = await flexWorkerServices.updateFlexTaskReleaseStatus(params);
    let res = await taskServices.setTaskInfoReleaseStatus(params);
    if (res) {
      Message.success('操作成功');
      invalidateQueries();
@@ -113,15 +84,15 @@
  } catch (error) {}
}
async function handleDelete(item: API.GetFlexTaskListOutput) {
async function handleDelete(item: API.GetTaskInfosQueryResultItem) {
  try {
    await Message.confirm({
      message: '确定要删除吗?',
    });
    let params: API.APIdeleteFlexTaskParams = {
      id: item.taskId,
    let params: API.DeleteTaskInfoCommand = {
      ids: [item.id],
    };
    let res = await flexWorkerServices.deleteFlexTask(params);
    let res = await taskServices.deleteTaskInfo(params);
    if (res) {
      Message.success('删除成功');
      invalidateQueries();
@@ -129,14 +100,14 @@
  } catch (error) {}
}
function goEdit(item: API.GetFlexTaskListOutput, isCopy = false) {
function goEdit(item: API.GetTaskInfosQueryResultItem, isCopy = false) {
  Taro.navigateTo({
    url: `${RouterPath.publishTask}?taskId=${item.taskId}&isCopy=${isCopy}`,
    url: `${RouterPath.publishTask}?taskId=${item.id}&isCopy=${isCopy}`,
  });
}
function goDetail(item: API.GetFlexTaskListOutput) {
function goDetail(item: API.GetTaskInfosQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.jobApplicationDetail}?taskId=${item.taskId}`,
    url: `${RouterPath.jobApplicationDetail}?taskId=${item.id}`,
  });
}
</script>
apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
  <ProTabs
    v-model="queryState.status"
    v-model="queryMenuState.status"
    name="task-tab"
    :showPaneContent="false"
    class="task-tabs"
@@ -8,29 +8,29 @@
    title-gutter="8"
    title-scroll
  >
    <ProTabPane :title="`待安排(${notCount})`" pane-key="10"></ProTabPane>
    <ProTabPane :title="`已安排(${hasCount})`" pane-key="20"></ProTabPane>
    <ProTabPane :title="`待安排(${notCount})`" :pane-key="EnumTaskStatus.Wait"></ProTabPane>
    <ProTabPane :title="`已安排(${hasCount})`" :pane-key="EnumTaskStatus.Complete"></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list"
    v-bind="infiniteLoadingProps"
    :key="queryState.status"
    :key="queryMenuState.status"
  >
    <template #renderItem="{ item }">
      <JobApplicationCard
        :taskName="item.taskName"
        :startDate="item.startDate"
        :endDate="item.endDate"
        :address="item.address"
        :creationTime="item.creationTime"
        :fee="item.fee"
        :unit="SalaryTimeTypeEnumUnit[item.feeType]"
        :name="item.name"
        :beginTime="item.beginTime"
        :endTime="item.endTime"
        :addressName="item.addressName"
        :createdTime="item.createdTime"
        :serviceFee="item.serviceFee"
        :unit="BillingMethodEnumUnit[item.billingMethod]"
        @click="goSubmitTaskDetail(item)"
        mode="taskManage"
      >
        <template #footer-actions>
          <nut-button
            v-if="item.isArrange"
            v-if="item.status === EnumTaskStatus.Complete"
            type="primary"
            :color="Colors.Info"
            class="dark-btn"
@@ -49,38 +49,14 @@
<script setup lang="ts">
import { JobApplicationCard, ProTabs, ProTabPane } from '@12333/components';
import Taro from '@tarojs/taro';
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType, Colors } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import { SalaryTimeTypeEnumUnit } from '@12333/constants/task';
import { EnumTaskStatus, BillingMethodEnumUnit, Colors } from '@12333/constants';
import { useTaskList } from '@/hooks/task';
defineOptions({
  name: 'InnerPage',
});
const queryState = reactive({
  status: '10',
});
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetFlexTaskListInput = {
      isArrange: queryState.status === '20',
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
      },
    };
    return flexWorkerServices.getFlexTaskByArrange(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState],
  }
);
const { queryMenuState, infiniteLoadingProps } = useTaskList();
const hasCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.hasCount ?? 0;
@@ -89,15 +65,15 @@
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.notCount ?? 0;
});
function goSubmitTaskDetail(item: API.GetFlexTaskListOutput) {
function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.flexJobDetail}?taskId=${item.taskId}`,
    url: `${RouterPath.flexJobDetail}?taskId=${item.id}`,
  });
}
function goBatchTaskList(item: API.GetFlexTaskListOutput, status: string) {
function goBatchTaskList(item: API.GetTaskInfosQueryResultItem, status: string) {
  Taro.navigateTo({
    url: `${RouterPath.batchTaskList}?taskId=${item.taskId}&detail=${status}`,
    url: `${RouterPath.batchTaskList}?taskId=${item.id}&detail=${status}`,
  });
}
</script>
packages/components/src/Card/JobApplicationCard.vue
@@ -1,8 +1,8 @@
<template>
  <div class="job-application-card-wrapper">
    <div class="job-application-card-title-wrapper">
      <div class="job-application-card-title">{{ taskName }}</div>
      <TaskPrice :value="fee" :unit="unit" v-if="mode === 'taskManage'" />
      <div class="job-application-card-title">{{ name }}</div>
      <TaskPrice :value="serviceFee" :unit="unit" v-if="mode === 'taskManage'" />
      <div v-else class="job-application-card-title-more" @click.stop="handleMore">
        <img :src="IconMore" class="more-btn-icon" />
      </div>
@@ -10,29 +10,29 @@
    <div class="job-application-card-line">
      <div class="job-application-card-time">
        {{
          `${dayjs(startDate).format('YYYY年MM月DD日')}至${dayjs(endDate).format('YYYY年MM月DD日')}`
          `${dayjs(beginTime).format('YYYY年MM月DD日')}至${dayjs(endTime).format('YYYY年MM月DD日')}`
        }}
      </div>
      <div class="job-application-card-status" v-if="mode === 'normal'">
        {{ FlexTaskReleaseStatusEnumText[releaseStatus] }}
        {{ EnumTaskReleaseStatusText[releaseStatus] }}
      </div>
    </div>
    <div class="job-application-card-line">
      <div class="job-application-card-company">
        <div class="job-application-card-company-tag">H</div>
        <div class="job-application-card-company-address">{{ address }}</div>
        <div class="job-application-card-company-address">{{ addressName }}</div>
      </div>
      <div class="job-application-card-people" v-if="mode === 'normal'">
        {{ `报名人数:${applyWorkerCount}` }}
        {{ `报名人数:${userCount}` }}
      </div>
    </div>
    <div class="job-application-card-line">
      <div class="job-application-card-publish-time">
        {{ `发布日期:${dayjs(creationTime).format('YYYY-MM-DD')}` }}
        {{ `发布日期:${dayjs(createdTime).format('YYYY-MM-DD')}` }}
      </div>
      <slot name="footer-actions">
        <div class="job-application-card-fee">
          <TaskPrice :value="fee" :unit="unit" />
          <TaskPrice :value="serviceFee" :unit="unit" />
        </div>
      </slot>
    </div>
@@ -46,6 +46,7 @@
import { ActionSheet } from '@nutui/nutui-taro';
import { Portal } from 'senin-mini/components';
import { TaskPrice } from '@12333/components';
import { EnumTaskStatus, EnumTaskReleaseStatus, EnumTaskReleaseStatusText } from '@12333/constants';
import dayjs from 'dayjs';
defineOptions({
@@ -61,36 +62,20 @@
  Delete,
}
enum FlexTaskReleaseStatusEnum {
  /**
   * 发布中
   */
  Releasing = 10,
  /**
   * 已停止
   */
  Stoping = 20,
}
const FlexTaskReleaseStatusEnumText = {
  [FlexTaskReleaseStatusEnum.Releasing]: '发布中',
  [FlexTaskReleaseStatusEnum.Stoping]: '已停止',
};
type Props = CommonTaskCardProps & {
  showActions?: boolean;
  status?: FlexTaskReleaseStatusEnum;
  status?: EnumTaskStatus;
  mode?: 'taskManage' | 'normal';
  taskName?: string;
  startDate?: string;
  endDate?: string;
  address?: string;
  creationTime?: string;
  fee?: number;
  applyWorkerCount?: number;
  name?: string;
  beginTime?: string;
  endTime?: string;
  addressName?: string;
  createdTime?: string;
  serviceFee?: number;
  userCount?: number;
  unit?: string;
  releaseStatus?: API.FlexTaskReleaseStatusEnum;
  releaseStatus?: EnumTaskReleaseStatus;
};
const props = withDefaults(defineProps<Props>(), {
@@ -119,13 +104,13 @@
      value: ManageActions.Detail,
    }
  );
  if (props.releaseStatus === FlexTaskReleaseStatusEnum.Stoping) {
  if (props.releaseStatus === EnumTaskReleaseStatus.Stopped) {
    _menuList.push({
      name: '发布',
      value: ManageActions.Publish,
    });
  }
  if (props.releaseStatus === FlexTaskReleaseStatusEnum.Releasing) {
  if (props.releaseStatus === EnumTaskReleaseStatus.InProcess) {
    _menuList.push({
      name: '停止发布',
      value: ManageActions.Stop,
packages/constants/apiEnum.ts
@@ -125,20 +125,6 @@
  AliyunSms = 10,
}
/** 短信模板类型 */
export enum EnumSmsTemplateType {
  /**登录 */
  Login = 0,
  /**注册 */
  Register = 1,
  /**修改密码 */
  UpdatePassword = 2,
  /**绑定手机号码 */
  BindPhoneNumber = 3,
  /**修改手机号码 */
  UpdatePhoneNumber = 4,
}
/** 任务结算状态 */
export enum EnumTaskCheckReceiveStatus {
  /**待验收 */
packages/constants/task.ts
@@ -1,4 +1,9 @@
import { EnumBillingMethod, EnumUserGender, EnumSettlementCycle } from './apiEnum';
import {
  EnumBillingMethod,
  EnumUserGender,
  EnumSettlementCycle,
  EnumTaskReleaseStatus,
} from './apiEnum';
export const EnumBillingMethodText = {
  [EnumBillingMethod.Month]: '按月',
@@ -30,3 +35,8 @@
  [EnumBillingMethod.Hour]: '元/小时',
  [EnumBillingMethod.Piece]: '元/件',
};
export const EnumTaskReleaseStatusText = {
  [EnumTaskReleaseStatus.InProcess]: '发布中',
  [EnumTaskReleaseStatus.Stopped]: '已停止',
};
packages/services/apiV2/auth.ts
@@ -53,7 +53,7 @@
/** 密码登录 POST /api/user/auth/passwordLogin */
export async function passwordLogin(body: API.PasswordLoginCommand, options?: API.RequestConfig) {
  return request<API.PasswordLoginCommandCallback>('/api/user/auth/passwordLogin', {
  return request<API.LoginCommandCallback>('/api/user/auth/passwordLogin', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
@@ -63,9 +63,24 @@
  });
}
/** 发送验证码 POST /api/user/auth/sendVerifyCode */
export async function sendVerifyCode(body: API.SendVerifyCodeCommand, options?: API.RequestConfig) {
  return request<string>('/api/user/auth/sendVerifyCode', {
/** 发送登录或注册短信 POST /api/user/auth/sendLoginOrRegisterVerifyCode */
export async function sendLoginOrRegisterVerifyCode(
  body: API.SendLoginOrRegisterVerifyCodeCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/auth/sendLoginOrRegisterVerifyCode', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 短信登录 POST /api/user/auth/smsLogin */
export async function smsLogin(body: API.SmsLoginCommand, options?: API.RequestConfig) {
  return request<API.LoginCommandCallback>('/api/user/auth/smsLogin', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
packages/services/apiV2/index.ts
@@ -2,21 +2,21 @@
/* eslint-disable */
// API 更新时间:
// API 唯一标识:
import * as dictionary from './dictionary';
import * as menu from './menu';
import * as enterprise from './enterprise';
import * as task from './task';
import * as auth from './auth';
import * as user from './user';
import * as role from './role';
import * as resource from './resource';
import * as user from './user';
import * as dictionary from './dictionary';
import * as auth from './auth';
import * as task from './task';
import * as enterprise from './enterprise';
import * as role from './role';
import * as menu from './menu';
export default {
  dictionary,
  menu,
  enterprise,
  task,
  auth,
  user,
  role,
  resource,
  user,
  dictionary,
  auth,
  task,
  enterprise,
  role,
  menu,
};
packages/services/apiV2/task.ts
@@ -2,6 +2,18 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 删除任务 DELETE /api/flexjob/task/deleteTaskInfo */
export async function deleteTaskInfo(body: API.DeleteTaskInfoCommand, options?: API.RequestConfig) {
  return request<number>('/api/flexjob/task/deleteTaskInfo', {
    method: 'DELETE',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 查询任务详情 GET /api/flexjob/task/getTaskInfo */
export async function getTaskInfo(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -19,17 +31,14 @@
/** 查询任务分页列表 POST /api/flexjob/task/getTaskInfos */
export async function getTaskInfos(body: API.GetTaskInfosQuery, options?: API.RequestConfig) {
  return request<API.PagedListQueryResultGetTaskInfosQueryResultItem>(
    '/api/flexjob/task/getTaskInfos',
    {
  return request<API.GetTaskInfosQueryResult>('/api/flexjob/task/getTaskInfos', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
  });
}
/** 保存任务 POST /api/flexjob/task/saveTaskInfo */
packages/services/apiV2/typings.d.ts
@@ -122,6 +122,10 @@
    ids: string[];
  }
  interface DeleteTaskInfoCommand {
    ids: string[];
  }
  enum EnumBillingMethod {
    /**按月 */
    Month = 10,
@@ -233,19 +237,6 @@
  enum EnumSmsAccess {
    /**阿里云短信 */
    AliyunSms = 10,
  }
  enum EnumSmsTemplateType {
    /**登录 */
    Login = 0,
    /**注册 */
    Register = 1,
    /**修改密码 */
    UpdatePassword = 2,
    /**绑定手机号码 */
    BindPhoneNumber = 3,
    /**修改手机号码 */
    UpdatePhoneNumber = 4,
  }
  enum EnumTaskCheckReceiveStatus {
@@ -422,6 +413,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetTaskInfoQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetTaskInfosQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetTaskInfosQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -621,6 +630,24 @@
    timestamp?: number;
  }
  interface FriendlyResultLoginCommandCallback {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: LoginCommandCallback;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultPagedListQueryResultGetDictionaryCategoriesQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
@@ -701,42 +728,6 @@
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetRolesQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultPagedListQueryResultGetTaskInfosQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetTaskInfosQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultPasswordLoginCommandCallback {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: PasswordLoginCommandCallback;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1155,7 +1146,7 @@
    /** 企业Id */
    enterpriseId?: string;
    /** 企业全称 */
    enterpriseName?: string;
    enterpriseEnterpriseName?: string;
    /** 在招岗位数量 */
    taskCount?: number;
    /** 任务名称 */
@@ -1204,7 +1195,9 @@
  interface GetTaskInfoQueryResultBenefit {
    /** 福利编号 */
    benefitCode?: string;
    /** 福利 */
    /** 福利图标 */
    benefitField2?: string;
    /** 福利名称 */
    benefitContent?: string;
  }
@@ -1219,6 +1212,8 @@
    pageModel?: PagedListQueryPageModel;
    /** 关键字(任务名称) */
    keywords?: string;
    /** 企业Id */
    enterpriseId?: string;
    /** 发布时间-开始 */
    beginTime?: string;
    /** 发布时间-结束 */
@@ -1232,6 +1227,24 @@
    status?: EnumTaskStatus;
    releaseStatus?: EnumTaskReleaseStatus;
    recommendStatus?: EnumTaskRecommendStatus;
  }
  interface GetTaskInfosQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetTaskInfosQueryResultItem[];
    count?: GetTaskInfosQueryResultCount;
  }
  interface GetTaskInfosQueryResultCount {
    /** 待安排数量 */
    waitAssignCount?: number;
    /** 已安排数量 */
    completedAssignCount?: number;
    /** 发布中数量 */
    inProcessReleaseCount?: number;
    /** 已停止数量 */
    stoppedReleaseCount?: number;
  }
  interface GetTaskInfosQueryResultItem {
@@ -1294,6 +1307,13 @@
  type GetUserResumeQueryResult = Record<string, any>;
  interface LoginCommandCallback {
    /** 用户访问令牌 */
    accessToken?: string;
    /** 刷新令牌 */
    refreshToken?: string;
  }
  interface PagedListQueryPageModel {
    /** 行数 */
    rows?: number;
@@ -1339,12 +1359,6 @@
    data?: GetRolesQueryResultItem[];
  }
  interface PagedListQueryResultGetTaskInfosQueryResultItem {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetTaskInfosQueryResultItem[];
  }
  interface PagedListQueryResultPageModel {
    /** 行数 */
    rows?: number;
@@ -1365,13 +1379,6 @@
    password: string;
    type?: EnumUserType;
    clientType?: EnumClientType;
  }
  interface PasswordLoginCommandCallback {
    /** 用户访问令牌 */
    accessToken?: string;
    /** 刷新令牌 */
    refreshToken?: string;
  }
  interface SaveDictionaryCategoryCommand {
@@ -1642,10 +1649,9 @@
    data?: any;
  }
  interface SendVerifyCodeCommand {
  interface SendLoginOrRegisterVerifyCodeCommand {
    /** 手机号码 */
    phoneNumber?: string;
    templateCode?: EnumSmsTemplateType;
    phoneNumber: string;
  }
  interface SetDictionaryDataIsDisabledCommand {
@@ -1722,5 +1728,14 @@
    status?: EnumUserStatus;
  }
  interface SmsLoginCommand {
    /** 手机号码 */
    phoneNumber: string;
    /** 验证码 */
    verifyCode: string;
    type?: EnumUserType;
    clientType?: EnumClientType;
  }
  type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;
}