From 318a7bbb40a8f37f825f9eb4ee1bcd84c6020a09 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 13 八月 2025 16:00:34 +0800
Subject: [PATCH] feat: 接口对接

---
 apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue |   80 +++++++++++--------
 apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue |   34 +++++++-
 apps/cMiniApp/src/pages/task/InnerPage.vue                       |   36 +++++---
 packages/hooks/task.ts                                           |   32 ++++++++
 4 files changed, 128 insertions(+), 54 deletions(-)

diff --git a/apps/cMiniApp/src/pages/task/InnerPage.vue b/apps/cMiniApp/src/pages/task/InnerPage.vue
index 7de494e..81dc2bb 100644
--- a/apps/cMiniApp/src/pages/task/InnerPage.vue
+++ b/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>
 
diff --git a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
index 4979b79..c91b50a 100644
--- a/apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
+++ b/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">
diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
index a7af757..05900ca 100644
--- a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
+++ b/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">
diff --git a/packages/hooks/task.ts b/packages/hooks/task.ts
index d092212..9cc65d2 100644
--- a/packages/hooks/task.ts
+++ b/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,
+  };
+}

--
Gitblit v1.9.1