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 |  125 ++++++++++++++++++++++++++++++++++-------
 1 files changed, 103 insertions(+), 22 deletions(-)

diff --git a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
index a7af757..6aec0e3 100644
--- a/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskSubmitCheck/InnerPage.vue
@@ -1,50 +1,131 @@
 <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>
-        <Uploader
-          v-model:file-list="form.imgUrl"
-          :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 } 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',
 });
 
+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({
-  imgUrl: [] as FileItem[],
+  files: [] as FileItem[],
 });
 
 const rules = reactive<FormRules>({
-  imgUrl: [{ 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;
   formRef.value.validate().then(({ valid, errors }: any) => {
     if (valid) {
+      submitCheckReceiveTask();
     }
   });
 }
-</script>
 
-<style lang="scss">
-@import '@/styles/common.scss';
-</style>
+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() {
+          if (userCheckHistoryType !== EnumTaskUserSubmitCheckHistoryType.CheckIn) {
+            goBack();
+          }
+          queryClient.invalidateQueries(['taskServices/getTaskInfo', id]);
+        },
+      });
+    }
+  } catch (error) {}
+}
+</script>

--
Gitblit v1.9.1