From 762ee921146f8557c2b9ce96df36ad85959c0f18 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 24 十月 2025 11:30:19 +0800
Subject: [PATCH] fix: bug

---
 apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue |   93 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 89 insertions(+), 4 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
index 801c3ee..02cda1e 100644
--- a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
+++ b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -10,7 +10,7 @@
     >
       <template #actions>
         <template v-if="checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn">
-          <nut-button
+          <!-- <nut-button
             v-if="!checkInTime"
             type="primary"
             class="task-check-card-phone-btn"
@@ -26,7 +26,21 @@
           >
           <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
             {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
-          </div>
+          </div> -->
+          <template
+            v-if="props.submitCheckReceiveStatus !== EnumTaskUserSubmitCheckReceiveStatus.Fail"
+          >
+            <nut-button
+              v-if="!checkInTime || !checkOutTime"
+              type="primary"
+              class="task-check-card-phone-btn"
+              @click.stop="handleMore"
+              >鎿嶄綔</nut-button
+            >
+            <div v-else class="task-check-card-phone-status" :style="{ color: Colors.Success }">
+              {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
+            </div>
+          </template>
         </template>
         <template v-else>
           <nut-button
@@ -45,19 +59,29 @@
 </template>
 
 <script setup lang="ts">
-import TaskCheckPersonalView from './TaskCheckPersonalView.vue';
 import {
   Colors,
   EnumUserGender,
   EnumTaskCheckReceiveStatus,
   EnumTaskCheckReceiveStatusText,
   EnumTaskCheckReceiveMethod,
+  EnumGetCheckReceiveTasksQueryResultItemCheckStatus,
+  EnumTaskUserSubmitCheckReceiveStatus,
 } from '@12333/constants';
+import { TaskCheckPersonalView } from '@12333/components';
 import { CheckInOrOutEventEnum } from '../constants';
+import { Portal } from 'senin-mini/components';
+import { ActionSheet } from '@nutui/nutui-taro';
 
 defineOptions({
   name: 'TaskCheckCard',
 });
+
+enum ManageActions {
+  CheckIn = 1,
+  CheckOut,
+  OutWork,
+}
 
 type Props = {
   avatar?: string;
@@ -71,14 +95,75 @@
   /** 绛惧嚭鏃堕棿 */
   checkOutTime?: string;
   checkReceiveMethod?: EnumTaskCheckReceiveMethod;
+
+  submitCheckReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
 };
 
 const props = withDefaults(defineProps<Props>(), {});
 
 const emit = defineEmits<{
   (e: 'checkReceive'): void;
-  (e: 'checkInOrOut', ev: CheckInOrOutEventEnum): void;
+  (e: 'checkInOrOut', ev: EnumTaskUserSubmitCheckReceiveStatus): void;
 }>();
+
+const menuList = computed(() => {
+  let _menuList = [];
+  if (props.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) {
+    _menuList.push({
+      name: '鏈埌宀�',
+      value: ManageActions.OutWork,
+    });
+    if (!props.checkInTime) {
+      _menuList.push({
+        name: '绛惧埌',
+        value: ManageActions.CheckIn,
+      });
+    } else if (!props.checkOutTime) {
+      _menuList.push({
+        name: '绛惧嚭',
+        value: ManageActions.CheckOut,
+      });
+    }
+  }
+
+  return _menuList;
+});
+
+function handleMore() {
+  Portal.add((key) => {
+    return h(
+      Portal.Container,
+      { keyNumber: key, delayOpen: true },
+      {
+        default: ({ open, onClose }) =>
+          // @ts-ignore
+          h(ActionSheet, {
+            visible: open.value,
+            'onUpdate:visible': () => onClose(),
+            menuItems: menuList.value,
+            onChoose: (item) => {
+              handleEmit(item);
+              onClose();
+            },
+          }),
+      }
+    );
+  });
+}
+
+function handleEmit(action: { name: string; value: number }) {
+  switch (action.value) {
+    case ManageActions.CheckIn:
+      emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive);
+      break;
+    case ManageActions.CheckOut:
+      emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.Success);
+      break;
+    case ManageActions.OutWork:
+      emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.Fail);
+      break;
+  }
+}
 </script>
 
 <style lang="scss">

--
Gitblit v1.9.1