From f95d3066203612a450e462edd679eb5a4973f35c Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期一, 10 十一月 2025 16:59:29 +0800
Subject: [PATCH] fix: bug

---
 apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue |  103 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 80 insertions(+), 23 deletions(-)

diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
index 05900ca..6aec0e3 100644
--- a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
@@ -1,29 +1,52 @@
 <template>
-  <ContentScrollView :paddingH="false">
-    <nut-form :model-value="form" ref="formRef" :rules="rules">
-      <nut-form-item label="涓婁紶鐓х墖:" class="bole-form-item alignTop" prop="files" required>
-        <Uploader
-          v-model:file-list="form.files"
-          :maximum="9"
-          :limitFileSize="10"
-          class="bole-uploader nopaddingtop"
+  <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
+    <ContentScrollView :paddingH="false">
+      <nut-form :model-value="form" ref="formRef" :rules="rules">
+        <nut-form-item
+          label="涓婁紶鐓х墖:"
+          class="bole-form-item alignTop"
+          prop="files"
+          :required="!isContainCheckIn"
         >
-        </Uploader>
-      </nut-form-item>
-    </nut-form>
-  </ContentScrollView>
-  <PageFooter :isOnlyAction="false">
-    <PageFooterBtn type="primary" @click="handleSubmit()">鎻愪氦</PageFooterBtn>
-  </PageFooter>
+          <Uploader
+            v-model:file-list="form.files"
+            :maximum="9"
+            :limitFileSize="10"
+            class="bole-uploader nopaddingtop"
+            :sourceType="['camera']"
+          >
+          </Uploader>
+        </nut-form-item>
+      </nut-form>
+    </ContentScrollView>
+    <PageFooter :isOnlyAction="false">
+      <template v-if="isContainCheckIn">
+        <PageFooterBtn type="primary" v-if="!detail.userCheckHistoryType" @click="handleCheckIn()"
+          >绛惧埌</PageFooterBtn
+        >
+        <PageFooterBtn
+          v-else-if="detail.userCheckHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn"
+          type="primary"
+          @click="handleCheckOut()"
+          >绛惧嚭</PageFooterBtn
+        >
+      </template>
+      <PageFooterBtn v-else type="primary" @click="handleSubmit()">鎻愪氦</PageFooterBtn>
+    </PageFooter>
+  </LoadingLayout>
 </template>
 
 <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, Message } from '@12333/utils';
+import { FormValidator, Message, OrderUtils, convertApiPath2Url } from '@12333/utils';
 import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
 import Taro from '@tarojs/taro';
 import { goBack } from '@/utils';
+import { useQueryClient } from '@tanstack/vue-query';
+import dayjs from 'dayjs';
+import { useCheckReceiveTaskUserSubmit } from '@12333/hooks';
+import { EnumTaskUserSubmitCheckHistoryType } from '@12333/constants';
 
 defineOptions({
   name: 'InnerPage',
@@ -31,16 +54,48 @@
 
 const route = Taro.useRouter();
 const id = route.params?.id as string;
+const date = route.params?.date as string;
+const queryClient = useQueryClient();
+
+const { isLoading, isError, detail, refetch, isContainCheckIn } = useCheckReceiveTaskUserSubmit({
+  params: {
+    taskInfoId: id,
+    date: dayjs(date).format('YYYY-MM-DD'),
+  },
+  onSuccess(data) {
+    if (data.files?.length > 0) {
+      form.files = data.files.map(convertApiPath2Url);
+    }
+  },
+});
 
 const form = reactive({
   files: [] as FileItem[],
 });
 
 const rules = reactive<FormRules>({
-  files: [{ required: true, message: '璇蜂笂浼犵収鐗�', validator: FormValidator.validatorArray }],
+  files: [{ message: '璇蜂笂浼犵収鐗�', validator: FormValidator.validatorArray }],
 });
 
 const formRef = ref<any>(null);
+
+function handleCheckIn() {
+  submitCheckReceiveTask(EnumTaskUserSubmitCheckHistoryType.CheckIn);
+  // if (!formRef.value) return;
+  // formRef.value.validate().then(({ valid, errors }: any) => {
+  //   if (valid) {
+  //   }
+  // });
+}
+
+function handleCheckOut() {
+  submitCheckReceiveTask(EnumTaskUserSubmitCheckHistoryType.CheckOut);
+  // if (!formRef.value) return;
+  // formRef.value.validate().then(({ valid, errors }: any) => {
+  //   if (valid) {
+  //   }
+  // });
+}
 
 function handleSubmit() {
   if (!formRef.value) return;
@@ -51,24 +106,26 @@
   });
 }
 
-async function submitCheckReceiveTask() {
+async function submitCheckReceiveTask(userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType) {
   try {
     let params: API.SubmitCheckReceiveTaskCommand = {
       taskInfoId: id,
+      date: dayjs(date).format('YYYY-MM-DD'),
       files: form.files.map((x) => x.path),
+      userCheckHistoryType,
     };
     let res = await taskCheckReceiveServices.submitCheckReceiveTask(params);
     if (res) {
+      refetch();
       Message.success('鎻愪氦鎴愬姛', {
         onClosed() {
-          goBack();
+          if (userCheckHistoryType !== EnumTaskUserSubmitCheckHistoryType.CheckIn) {
+            goBack();
+          }
+          queryClient.invalidateQueries(['taskServices/getTaskInfo', id]);
         },
       });
     }
   } catch (error) {}
 }
 </script>
-
-<style lang="scss">
-@import '@/styles/common.scss';
-</style>

--
Gitblit v1.9.1