zhengyiming
5 天以前 354fa08d53f4cd97014bfb0008c8c5f0326bbdd3
Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
11个文件已修改
149 ■■■■ 已修改文件
apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/FlexJobTopView.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/MyTaskCard.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/task.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/task.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
@@ -61,10 +61,10 @@
const { queryMenuState, infiniteLoadingProps, invalidateQueries } = useTaskList();
const releaseing = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.releaseing ?? 0;
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.inProcessReleaseCount ?? 0;
});
const stoping = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.stoping ?? 0;
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.stoppedReleaseCount ?? 0;
});
async function handleChangeStatus(
apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -10,13 +10,13 @@
    >
      <template #actions>
        <nut-button
          v-if="checkAcceptStatus === FlexTaskCheckAcceptStatusEnum.Wait"
          v-if="checkAcceptStatus === EnumTaskCheckReceiveStatus.Wait"
          type="primary"
          class="task-check-card-phone-btn"
          >验收</nut-button
        >
        <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
          {{ FlexTaskCheckAcceptStatusEnumText[checkAcceptStatus] }}
          {{ EnumTaskCheckReceiveStatusText[checkAcceptStatus] }}
        </div>
      </template>
    </TaskCheckPersonalView>
@@ -25,11 +25,12 @@
<script setup lang="ts">
import TaskCheckPersonalView from './TaskCheckPersonalView.vue';
import { Colors, Gender } from '@12333/constants';
import {
  FlexTaskCheckAcceptStatusEnum,
  FlexTaskCheckAcceptStatusEnumText,
} from '@12333/constants/task';
  Colors,
  EnumUserGender,
  EnumTaskCheckReceiveStatus,
  EnumTaskCheckReceiveStatusText,
} from '@12333/constants';
defineOptions({
  name: 'TaskCheckCard',
@@ -38,10 +39,10 @@
type Props = {
  avatarUrl?: string;
  name?: string;
  genderType?: Gender;
  genderType?: EnumUserGender;
  isRealName?: boolean;
  contactPhone?: string;
  checkAcceptStatus?: API.FlexTaskCheckAcceptStatusEnum;
  checkAcceptStatus?: EnumTaskCheckReceiveStatus;
};
const props = withDefaults(defineProps<Props>(), {});
apps/bMiniApp/src/subpackages/task/components/TaskCheckPersonalView.vue
@@ -19,7 +19,7 @@
<script setup lang="ts">
import { FlexJobTopView } from '@12333/components';
import { Gender } from '@12333/constants';
import { EnumUserGender } from '@12333/constants';
defineOptions({
  name: 'TaskCheckPersonalView',
@@ -28,7 +28,7 @@
type Props = {
  avatarUrl?: string;
  name?: string;
  genderType?: Gender;
  genderType?: EnumUserGender;
  isRealName?: boolean;
  contactPhone?: string;
};
apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue
@@ -217,7 +217,21 @@
  name: [{ required: true, message: '请输入任务名称' }],
  genderLimit: [{ required: true, message: '请选择性别要求' }],
  addressDetail: [{ required: true, message: '请输入详细地址' }],
  billingMethod: [
    {
      required: true,
      message: '请选择收费方式',
      validator: () => {
        if (!form.billingMethod) {
          return Promise.reject('请选择服务费类型');
        }
        if (!form.serviceFee) {
          return Promise.reject('请输入服务费');
        }
        return Promise.resolve(true);
      },
    },
  ],
  weMapInfo: [
    { required: true, message: '请设置工作地点', validator: FormValidator.validatorWeMap },
  ],
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
@@ -1,7 +1,7 @@
<template>
  <Calendar v-model="queryState.date"></Calendar>
  <Calendar v-model="queryMenuState.time"></Calendar>
  <ProTabs
    v-model="queryState.status"
    v-model="queryMenuState.status"
    name="task-tab"
    :showPaneContent="false"
    class="task-tabs"
@@ -9,20 +9,21 @@
    title-gutter="8"
    title-scroll
  >
    <ProTabPane title="待提交" pane-key="10"></ProTabPane>
    <ProTabPane title="待验收" pane-key="10"></ProTabPane>
    <ProTabPane title="已验收" pane-key="20"></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list"
    v-bind="infiniteLoadingProps"
    :key="queryState.status"
    :key="queryMenuState.status"
  >
    <template #renderItem="{ item }">
      <MyTaskCard
        :taskName="item.taskName"
        :startDate="item.startDate"
        :endDate="item.endDate"
        :address="item.address"
        :name="item.name"
        :beginTime="item.beginTime"
        :endTime="item.endTime"
        :addressName="item.addressName"
        @click="goSubmitTaskDetail(item)"
      />
    </template>
@@ -32,42 +33,21 @@
<script setup lang="ts">
import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components';
import Taro from '@tarojs/taro';
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import { useTaskList } from '@12333/hooks';
defineOptions({
  name: 'InnerPage',
});
const queryState = reactive({
  status: '10',
  date: new Date(),
const { queryMenuState, infiniteLoadingProps } = useTaskList({
  defaultQueryMenuState: {
    status: EnumTaskStatus.Wait,
  },
});
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetFlexTaskListInput = {
      isOverCheck: queryState.status === '20',
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
      },
    };
    return flexWorkerServices.getFlexTaskByIsOverCheck(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['flexWorkerServices/getFlexTaskByIsOverCheck', queryState],
  }
);
function goSubmitTaskDetail(item: API.GetFlexTaskListOutput) {
function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.taskCheckDetail}?taskId=${item.taskId}`,
    url: `${RouterPath.taskCheckDetail}?taskId=${item.id}`,
  });
}
</script>
apps/bMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -2,8 +2,8 @@
  <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
    <ContentView>
      <MyTaskCard
        :task-name="detail.taskName"
        :address="address"
        :namee="detail.name"
        :addressName="detail.addressName"
        :showMyTaskArrow="false"
        :showTime="false"
      ></MyTaskCard>
@@ -32,7 +32,7 @@
<script setup lang="ts">
import Taro from '@tarojs/taro';
import { useQuery } from '@tanstack/vue-query';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import * as taskServices from '@12333/services/apiV2/task';
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType } from '@12333/constants';
import TaskCheckCard from '../components/TaskCheckCard.vue';
@@ -52,20 +52,16 @@
  data: detail,
  refetch,
} = useQuery({
  queryKey: ['flexWorkerServices/getFlexTaskDto', taskId],
  queryKey: ['taskServices/getTaskInfo', taskId],
  queryFn: async () => {
    return await flexWorkerServices.getFlexTaskDto(
    return await taskServices.getTaskInfo(
      { id: taskId },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.GetFlexTaskDtoOutput),
});
const address = computed(() => {
  return `${detail.value.provinceName} ${detail.value.cityName} ${detail.value.areaName} ${detail.value.address}`;
  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
});
const queryState = reactive({
apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue
@@ -8,8 +8,11 @@
    title-gutter="8"
    title-scroll
  >
    <ProTabPane :title="`待安排(${notCount})`" :pane-key="EnumTaskStatus.Wait"></ProTabPane>
    <ProTabPane :title="`已安排(${hasCount})`" :pane-key="EnumTaskStatus.Complete"></ProTabPane>
    <ProTabPane :title="`待安排(${waitAssignCount})`" :pane-key="EnumTaskStatus.Wait"></ProTabPane>
    <ProTabPane
      :title="`已安排(${completedAssignCount})`"
      :pane-key="EnumTaskStatus.Complete"
    ></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list"
@@ -62,11 +65,11 @@
  },
});
const hasCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.hasCount ?? 0;
const completedAssignCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedAssignCount ?? 0;
});
const notCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.notCount ?? 0;
const waitAssignCount = computed(() => {
  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.waitAssignCount ?? 0;
});
function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) {
packages/components/src/Card/FlexJobTopView.vue
@@ -6,7 +6,7 @@
        <div class="flexJob-card-top-info-name">{{ name }}</div>
        <div class="flexJob-card-top-info-gender">
          <img
            v-if="genderType === Gender.Male"
            v-if="genderType === EnumUserGender.Male"
            :src="IconMale"
            class="flexJob-card-top-info-gender-icon"
          />
@@ -28,7 +28,7 @@
<script setup lang="ts">
import IconMale from '@/assets/mine/icon-male.png';
import IconFemale from '@/assets/mine/icon-female.png';
import { AvatarImage, Gender } from '@12333/constants';
import { AvatarImage, EnumUserGender } from '@12333/constants';
import { Avatar } from '@12333/components';
defineOptions({
@@ -40,7 +40,7 @@
  avatarUrl?: string;
  name?: string;
  genderType?: Gender;
  genderType?: EnumUserGender;
  age?: number;
  educationalLevel?: string;
  arrangeCount?: number;
packages/components/src/Card/MyTaskCard.vue
@@ -6,7 +6,7 @@
    </template>
    <div class="my-task-card-time" v-if="showTime">
      {{
        `${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 v-else></div>
@@ -27,10 +27,10 @@
  showMyTaskArrow?: boolean;
  showTime?: boolean;
  startDate?: string;
  endDate?: string;
  taskName?: string;
  address?: string;
  name?: string;
  beginTime?: string;
  endTime?: string;
  addressName?: string;
};
const props = withDefaults(defineProps<Props>(), {
packages/constants/task.ts
@@ -3,6 +3,7 @@
  EnumUserGender,
  EnumSettlementCycle,
  EnumTaskReleaseStatus,
  EnumTaskCheckReceiveStatus,
} from './apiEnum';
export const EnumBillingMethodText = {
@@ -40,3 +41,8 @@
  [EnumTaskReleaseStatus.InProcess]: '发布中',
  [EnumTaskReleaseStatus.Stopped]: '已停止',
};
export const EnumTaskCheckReceiveStatusText = {
  [EnumTaskCheckReceiveStatus.Wait]: '待验收',
  [EnumTaskCheckReceiveStatus.Completed]: '已验收',
};
packages/hooks/task.ts
@@ -11,6 +11,7 @@
import { trim } from '@12333/utils';
import { MaybeRef, reactive, ref, unref } from 'vue';
import * as taskServices from '@12333/services/apiV2/task';
import dayjs from 'dayjs';
export enum HomeOrderType {
  Recommend = 'Recommend',
@@ -28,6 +29,7 @@
    settlementCycle?: EnumSettlementCycle;
    benefitCodes?: string;
    enterpriseId?: string;
    time?: Date;
  };
};
@@ -43,6 +45,7 @@
    status: '' as any as EnumTaskStatus,
    releaseStatus: EnumTaskReleaseStatus.InProcess,
    enterpriseId: '',
    time: '' as any as Date,
    ...defaultQueryMenuState,
  });
@@ -75,6 +78,8 @@
        status: queryMenuState.status,
        releaseStatus: queryMenuState.releaseStatus,
        enterpriseId: queryMenuState.enterpriseId,
        beginTime: dayjs(queryMenuState.time).format('YYYY-MM-DD 00:00:00'),
        endTime: dayjs(queryMenuState.time).format('YYYY-MM-DD 23:59:59'),
      };
      return taskServices.getTaskInfos(params, {