From 7039c7f1a1feacc5479cbe7b886f239dea3ef1e6 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 10 十一月 2025 14:05:08 +0800
Subject: [PATCH] Merge branch 'dev-1.3.0.1' of http://120.26.58.240:8888/r/flexJobMiniApp into dev-1.3.0.1

---
 apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue |  151 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 143 insertions(+), 8 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
index db091ef..e6a1e19 100644
--- a/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
+++ b/apps/bMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -1,25 +1,160 @@
 <template>
   <div class="task-check-card-wrapper">
-    <TaskCheckPersonalView class="task-check-card-view">
-      <template #actions>
-        <nut-button type="primary" class="task-check-card-phone-btn">楠屾敹</nut-button>
-        <!-- <div class="task-check-card-phone-status" :style="{ color: Colors.Success }">楠屾敹閫氳繃</div> -->
+    <TaskCheckPersonalView
+      class="task-check-card-view"
+      :avatar="avatar"
+      :name="name"
+      :gender="gender"
+      :isReal="isReal"
+      :contactPhoneNumber="contactPhoneNumber"
+    >
+      <template
+        #actions
+        v-if="
+          checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive ||
+          checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit
+        "
+      >
+        <template v-if="OrderUtils.isContainCheckIn(checkReceiveMethods)">
+          <nut-button
+            v-if="
+              !checkHistoryType || checkHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn
+            "
+            type="primary"
+            class="task-check-card-phone-btn"
+            @click.stop="handleMore"
+            >鎿嶄綔</nut-button
+          >
+          <nut-button
+            v-else
+            type="primary"
+            class="task-check-card-phone-btn"
+            @click.stop="emit('checkReceive')"
+            >楠屾敹</nut-button
+          >
+        </template>
+        <nut-button
+          v-else
+          type="primary"
+          class="task-check-card-phone-btn"
+          @click.stop="emit('checkReceive')"
+          >楠屾敹</nut-button
+        >
       </template>
     </TaskCheckPersonalView>
   </div>
 </template>
 
 <script setup lang="ts">
-import TaskCheckPersonalView from './TaskCheckPersonalView.vue';
-import { Colors } from '@12333/constants';
+import {
+  Colors,
+  EnumUserGender,
+  EnumTaskCheckReceiveStatus,
+  EnumTaskCheckReceiveStatusText,
+  EnumTaskCheckReceiveMethod,
+  EnumGetCheckReceiveTasksQueryResultItemCheckStatus,
+  EnumTaskUserSubmitCheckReceiveStatus,
+  EnumTaskUserSubmitCheckHistoryType,
+} from '@12333/constants';
+import { TaskCheckPersonalView } from '@12333/components';
+import { CheckInOrOutEventEnum } from '../constants';
+import { Portal } from 'senin-mini/components';
+import { ActionSheet } from '@nutui/nutui-taro';
+import { OrderUtils } from '@12333/utils';
 
 defineOptions({
   name: 'TaskCheckCard',
 });
 
-// type Props = {};
+enum ManageActions {
+  CheckIn = 1,
+  CheckOut,
+  OutWork,
+}
 
-// const props = withDefaults(defineProps<Props>(), {});
+type Props = {
+  avatar?: string;
+  name?: string;
+  gender?: EnumUserGender;
+  isReal?: boolean;
+  contactPhoneNumber?: string;
+  checkReceiveStatus?: EnumTaskCheckReceiveStatus;
+  /** 绛惧埌鏃堕棿 */
+  checkInTime?: string;
+  /** 绛惧嚭鏃堕棿 */
+  checkOutTime?: string;
+  checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
+
+  submitCheckReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
+
+  checkHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const emit = defineEmits<{
+  (e: 'checkReceive'): void;
+  (e: 'checkInOrOut', ev: EnumTaskUserSubmitCheckHistoryType): void;
+}>();
+
+const menuList = computed(() => {
+  let _menuList = [];
+  if (OrderUtils.isContainCheckIn(props.checkReceiveMethods)) {
+    if (!props.checkInTime) {
+      _menuList.push({
+        name: '绛惧埌',
+        value: ManageActions.CheckIn,
+      });
+    } else if (!props.checkOutTime) {
+      _menuList.push({
+        name: '绛惧嚭',
+        value: ManageActions.CheckOut,
+      });
+    }
+    _menuList.push({
+      name: '鏈埌宀�',
+      value: ManageActions.OutWork,
+    });
+  }
+
+  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', EnumTaskUserSubmitCheckHistoryType.CheckIn);
+      break;
+    case ManageActions.CheckOut:
+      emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.CheckOut);
+      break;
+    case ManageActions.OutWork:
+      emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.UnCheckIn);
+      break;
+  }
+}
 </script>
 
 <style lang="scss">

--
Gitblit v1.9.1