zhengyiming
3 天以前 fb4010f879763b1aa3afb00010b93dd331549246
Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
4个文件已修改
182 ■■■■ 已修改文件
apps/cMiniApp/src/pages/task/InnerPage.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/task.ts 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/pages/task/InnerPage.vue
@@ -1,7 +1,7 @@
<template>
  <Calendar v-model="queryMenuState.time"></Calendar>
  <Calendar v-model="queryState.date"></Calendar>
  <ProTabs
    v-model="queryMenuState.checkReceiveStatus"
    v-model="queryState.checkReceiveStatus"
    name="task-tab"
    :showPaneContent="false"
    class="task-tabs"
@@ -9,14 +9,17 @@
    title-gutter="8"
    title-scroll
  >
    <ProTabPane :title="`待提交`" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane>
    <ProTabPane :title="`待验收`" :pane-key="EnumTaskCheckReceiveStatus.Wait"></ProTabPane>
    <ProTabPane :title="`待提交`" :pane-key="EnumTaskCheckReceiveStatus.WaitSubmit"></ProTabPane>
    <ProTabPane
      :title="`待验收`"
      :pane-key="EnumTaskCheckReceiveStatus.WaitCheckReceive"
    ></ProTabPane>
    <ProTabPane :title="`已验收`" :pane-key="EnumTaskCheckReceiveStatus.Completed"></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list task-list"
    v-bind="infiniteLoadingProps"
    :key="queryMenuState.checkReceiveStatus"
    :key="queryState.checkReceiveStatus"
  >
    <template #renderItem="{ item }">
      <MyTaskCard
@@ -33,23 +36,26 @@
<script setup lang="ts">
import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components';
import Taro from '@tarojs/taro';
import { useTaskList } from '@12333/hooks';
import { useCheckReceiveTasks, useTaskList } from '@12333/hooks';
import { EnumTaskCheckReceiveStatus } from '@12333/constants';
defineOptions({
  name: 'InnerPage',
});
const { queryMenuState, infiniteLoadingProps } = useTaskList({
  defaultQueryMenuState: {
    checkReceiveStatus: EnumTaskCheckReceiveStatus.Wait,
  },
});
const { queryState, infiniteLoadingProps } = useCheckReceiveTasks();
function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.taskCheckDetail}?id=${item.id}`,
  });
function goSubmitTaskDetail(item: API.GetCheckReceiveTasksQueryResultItem) {
  if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit) {
    Taro.navigateTo({
      url: `${RouterPath.taskSubmitCheck}?id=${item.id}`,
    });
  }
  if (item.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed) {
    Taro.navigateTo({
      url: `${RouterPath.taskCheckDetail}?id=${item.id}`,
    });
  }
}
</script>
apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -1,36 +1,47 @@
<template>
  <ContentScrollView style="background-color: transparent">
    <MyTaskCard :showMyTaskArrow="false"></MyTaskCard>
    <div class="taskCheckDetail-status-wrapper">
      <div class="taskCheckDetail-status-title">验收照片</div>
      <div
        class="taskCheckDetail-status"
        :style="{
          color: Colors.Warning,
        }"
      >
        待验收
      </div>
    </div>
    <div class="taskCheckDetail-time">2024.11.14 9:28:39</div>
    <nut-grid
      square
      :column-num="3"
      :border="false"
      :gutter="20"
      v-if="list.length > 0"
      class="taskCheckDetail-img-grid"
    <InfiniteLoading
      scrollViewClassName="common-infinite-scroll-list task-list"
      v-bind="infiniteLoadingProps"
    >
      <nut-grid-item
        v-for="(item, index) in list"
        :key="item"
        class="publish-circle-friend-file-grid-item"
      >
        <div class="taskCheckDetail-img-grid-item">
          <PreviewImage :src="item" class="taskCheckDetail-img" :urls="list" />
      <template #renderItem="{ item }">
        <div class="taskCheckDetail-status-wrapper">
          <div class="taskCheckDetail-status-title">验收照片</div>
          <div
            class="taskCheckDetail-status"
            :style="{
              color: Colors.Warning,
            }"
          >
            待验收
          </div>
        </div>
      </nut-grid-item>
    </nut-grid>
        <div class="taskCheckDetail-time">2024.11.14 9:28:39</div>
        <nut-grid
          square
          :column-num="3"
          :border="false"
          :gutter="20"
          v-if="item?.files?.length > 0"
          class="taskCheckDetail-img-grid"
        >
          <nut-grid-item
            v-for="(itema, index) in item.files"
            :key="index"
            class="publish-circle-friend-file-grid-item"
          >
            <div class="taskCheckDetail-img-grid-item">
              <PreviewImage
                :src="setOSSLink(itema)"
                class="taskCheckDetail-img"
                :urls="item.files"
              />
            </div>
          </nut-grid-item>
        </nut-grid>
      </template>
    </InfiniteLoading>
  </ContentScrollView>
  <!-- <div class="taskCheckDetail-tips-wrapper">
    <div class="taskCheckDetail-tips-text">您尚未绑定银行卡,暂时无法结算服务费</div>
@@ -41,17 +52,18 @@
<script setup lang="ts">
import { MyTaskCard, PreviewImage } from '@12333/components';
import { Colors } from '@12333/constants';
import Taro from '@tarojs/taro';
import { useCheckReceiveTaskUserSubmits } from '@12333/hooks';
import { setOSSLink } from '@12333/utils';
defineOptions({
  name: 'InnerPage',
});
const list = ref([
  'https://storage.360buyimg.com/jdc-article/NutUItaro34.jpg',
  'https://storage.360buyimg.com/jdc-article/NutUItaro2.jpg',
  'https://storage.360buyimg.com/jdc-article/welcomenutui.jpg',
  'https://storage.360buyimg.com/jdc-article/fristfabu.jpg',
]);
const route = Taro.useRouter();
const id = route.params?.id as string;
const { infiniteLoadingProps } = useCheckReceiveTaskUserSubmits({ id: id });
</script>
<style lang="scss">
apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
@@ -1,9 +1,9 @@
<template>
  <ContentScrollView :paddingH="false">
    <nut-form :model-value="form" ref="formRef" :rules="rules">
      <nut-form-item label="上传照片:" class="bole-form-item alignTop" prop="imgUrl" required>
      <nut-form-item label="上传照片:" class="bole-form-item alignTop" prop="files" required>
        <Uploader
          v-model:file-list="form.imgUrl"
          v-model:file-list="form.files"
          :maximum="9"
          :limitFileSize="10"
          class="bole-uploader nopaddingtop"
@@ -20,18 +20,24 @@
<script setup lang="ts">
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type';
import { FormValidator } from '@12333/utils';
import { FormValidator, Message } from '@12333/utils';
import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
import Taro from '@tarojs/taro';
import { goBack } from '@/utils';
defineOptions({
  name: 'InnerPage',
});
const route = Taro.useRouter();
const id = route.params?.id as string;
const form = reactive({
  imgUrl: [] as FileItem[],
  files: [] as FileItem[],
});
const rules = reactive<FormRules>({
  imgUrl: [{ required: true, message: '请上传照片', validator: FormValidator.validatorArray }],
  files: [{ required: true, message: '请上传照片', validator: FormValidator.validatorArray }],
});
const formRef = ref<any>(null);
@@ -40,9 +46,27 @@
  if (!formRef.value) return;
  formRef.value.validate().then(({ valid, errors }: any) => {
    if (valid) {
      submitCheckReceiveTask();
    }
  });
}
async function submitCheckReceiveTask() {
  try {
    let params: API.SubmitCheckReceiveTaskCommand = {
      taskInfoId: id,
      files: form.files.map((x) => x.path),
    };
    let res = await taskCheckReceiveServices.submitCheckReceiveTask(params);
    if (res) {
      Message.success('提交成功', {
        onClosed() {
          goBack();
        },
      });
    }
  } catch (error) {}
}
</script>
<style lang="scss">
packages/hooks/task.ts
@@ -145,3 +145,35 @@
    infiniteLoadingProps,
  };
}
type UseCheckReceiveTaskUserSubmitsOptions = {
  id?: string;
};
export function useCheckReceiveTaskUserSubmits(
  options: UseCheckReceiveTaskUserSubmitsOptions = {}
) {
  const { id } = options;
  const { infiniteLoadingProps } = useInfiniteLoading(
    ({ pageParam }) => {
      let params: API.GetCheckReceiveTaskUserSubmitsQuery = {
        pageModel: {
          rows: 20,
          page: pageParam,
        },
        id: id,
      };
      return taskCheckReceiveServices.getCheckReceiveTaskUserSubmits(params, {
        showLoading: false,
      });
    },
    {
      queryKey: ['taskCheckReceiveServices/getCheckReceiveTaskUserSubmits', id],
    }
  );
  return {
    infiniteLoadingProps,
  };
}