leon hai 1 ano
pai
achega
fed99f38a8

+ 45 - 7
src/features/trackTimeDuration/components/MainFastEatCard.tsx

@@ -1,4 +1,4 @@
-import { View, Text } from "@tarojs/components";
+import { View, Text,Image } from "@tarojs/components";
 import './MainCard.scss'
 import { useEffect, useRef, useState } from "react";
 import Modal from "@/components/layout/Modal.weapp";
@@ -15,6 +15,7 @@ import { endFast, startFast } from "../actions/TrackTimeActions";
 import formatMilliseconds from "@/utils/format_time";
 import TimePicker from "@/features/common/TimePicker";
 import showAlert from "@/components/basic/Alert";
+import showActionSheet from "@/components/basic/ActionSheet";
 let useNavigation;
 
 let Linking, PushNotification;
@@ -22,6 +23,7 @@ let checkNotification;
 let min = 0
 let max = 0
 let defaultTimestamp = 0
+let useActionSheet;
 
 if (process.env.TARO_ENV == 'rn') {
     useNavigation = require("@react-navigation/native").useNavigation
@@ -29,6 +31,7 @@ if (process.env.TARO_ENV == 'rn') {
     // JPush = require('jpush-react-native').default;
     PushNotification = require('react-native-push-notification')
     checkNotification = require('@/utils/native_permission_check').checkNotification;
+    useActionSheet = require('@expo/react-native-action-sheet').useActionSheet
 }
 export default function MainFastEatCard(props: { count: any }) {
     const [isFastMode, setIsFastMode] = useState(true)
@@ -53,9 +56,10 @@ export default function MainFastEatCard(props: { count: any }) {
 
     const user = useSelector((state: any) => state.user);
 
-    let navigation;
+    let navigation,showActionSheetWithOptions;
     if (useNavigation) {
         navigation = useNavigation()
+        showActionSheetWithOptions = useActionSheet()
     }
 
     useEffect(() => {
@@ -569,13 +573,40 @@ export default function MainFastEatCard(props: { count: any }) {
         }
     }
 
-    function goAddEat(index) {
-        if (status == 'process') {
+    function goAddEat(meal, index) {
+        if (!enableMeal(meal)) {
             return;
         }
         jumpPage('/pages/clock/AddEat?meal=' + JSON.stringify(eatData.meals[index]))
     }
 
+    function enableMeal(meal) {
+        if (meal.real_start_time > 0) {
+            return true
+        }
+        if (meal.target_start_time > new Date().getTime()) {
+            return true
+        }
+        return true
+    }
+
+    function more(){
+        showActionSheet({
+            showActionSheetWithOptions: showActionSheetWithOptions,
+            title:'Oprate Title',
+            itemList: [
+                'Add Snack',
+                '自定义餐次列表',
+            ],
+            success: (res) => {
+                switch (res) {
+                    case 0:
+                        break;
+                }
+            }
+        });
+    }
+
     if (!loaded) {
         return <View />
     }
@@ -636,15 +667,19 @@ export default function MainFastEatCard(props: { count: any }) {
             !isFastMode && <View>
                 {
                     eatData.meals.map((item, index) => {
-                        return <View className="log_row" key={index}>
+                        return <View className="log_row" style={{justifyContent:'flex-start'}} key={index}>
+                            {
+                                item.real_start_time && item.media && item.media.length>0 && item.media[0].url && <Image src={item.media[0].url} style={{width:50,height:50,marginRight:10}}/>
+                            }
                             <View className="schedule">
                                 <Text className="schedule_name">{item.name}</Text>
                                 <Text className="schedule_time">
-                                    {item.schedule_start_time}
+                                    {item.real_start_time ?dayjs(item.real_start_time).format('HH:mm')+' - '+dayjs(item.real_end_time).format('HH:mm'):item.schedule_start_time}
                                 </Text>
                             </View>
+                            <View style={{flex:1}}/>
                             {
-                                item.real_start_time ? <View className="fast_log_btn fast_log_btn_disable">已上传</View> : <View onClick={() => goAddEat(index)} className={status == 'process' ? "fast_log_btn fast_log_btn_disable" : "fast_log_btn fast_log_eat_btn"}>Add</View>
+                                item.real_start_time ? <View className="fast_log_btn fast_log_btn_disable">已记录</View> : <View onClick={() => goAddEat(item, index)} className={enableMeal(item) ? "fast_log_btn fast_log_eat_btn" : "fast_log_btn fast_log_btn_disable"}>Add</View>
                             }
 
                         </View>
@@ -656,6 +691,9 @@ export default function MainFastEatCard(props: { count: any }) {
 
 
         <Text onClick={switchMode}>Switch</Text>
+        {
+            !isFastMode && <Text onClick={more}>更多</Text>
+        }
         {
             showModal && <Modal dismiss={() => setShowModal(false)}>
                 <View style={{ width: 100, height: 100, backgroundColor: 'red' }}>{props.count}</View>

+ 71 - 8
src/pages/clock/AddEat.tsx

@@ -7,6 +7,10 @@ import { saveFoodCache } from "@/features/food/hooks/ExtraData";
 import { baseUrl } from "@/services/http/api";
 import { checkAuthorized } from "@/utils/check_authorized";
 import { eatMeals } from "@/services/trackSomething";
+import Modal from "@/components/layout/Modal.weapp";
+import dayjs from "dayjs";
+import TimePicker from "@/features/common/TimePicker";
+import { MainColorType } from "@/context/themes/color";
 
 
 let useRoute;
@@ -23,6 +27,10 @@ export default function AddEat() {
     const [imgUrl, setImgUrl] = useState('')
     const [startTime, setStartTime] = useState(0)
     const [endTime, setEndTime] = useState(0)
+    const [showPicker,setShowPicker] = useState(false)
+    const [durationPicker,setDurationPicker] = useState(false)
+
+    
 
     let router
     let navigation;
@@ -37,11 +45,12 @@ export default function AddEat() {
         router = useRouter()
     }
 
-    const meal = JSON.parse(router.params.meal)
+    const [meal,setMeal] = useState(JSON.parse(router.params.meal))
 
     useEffect(() => {
-        setStartTime(meal.target_start_time)
-        setEndTime(meal.target_end_time)
+        var obj = JSON.parse(router.params.meal)
+        setStartTime(obj.target_start_time)
+        setEndTime(obj.target_end_time)
      }, [])
 
     function getIntervalHoursAndMinutes(time1, time2) {
@@ -78,11 +87,11 @@ export default function AddEat() {
     }
 
     function tapTime() {
-
+        setShowPicker(true)
     }
 
     function tapDuration() {
-
+        setDurationPicker(true)
     }
 
     function addImage() {
@@ -104,10 +113,10 @@ export default function AddEat() {
         eatMeals({
             code: meal.code,
             description: desc,
-            real_start_time: startTime,
-            real_end_time: endTime,
+            real_start_time: meal.target_start_time,
+            real_end_time: meal.target_end_time,
             media: [{
-                imgUrl,
+                url:imgUrl,
                 type: imgUrl.indexOf('mp4') != -1 ? 'video' : 'image',
                 source: 'album'
             }],
@@ -187,6 +196,54 @@ export default function AddEat() {
         })
     }
 
+    function timeContent() {
+        return <Modal
+            testInfo={null}
+            dismiss={() => {
+                setShowPicker(false)
+            }}
+            confirm={() => { }}>
+            {
+                pickerContent()
+            }
+        </Modal>
+    }
+
+    function pickerContent(){
+        const timestamp = meal.target_start_time
+        const strTime = dayjs(timestamp).format('HH:mm')
+        return <TimePicker time={strTime}
+            color={MainColorType.eat}
+            title={meal.name}
+            confirm={(e) => {
+                confirmPickerTime(e)
+            }}
+            cancel={() => {
+                setShowPicker(false)
+            }} />
+    }
+
+    function confirmPickerTime(e){
+        const list = e.split(':')
+        const date = new Date()
+        date.setHours(list[0])
+        date.setMinutes(list[1])
+        
+        const duration = meal.target_end_time-meal.target_start_time
+        const endDate = date.getTime()+duration;
+        var data = JSON.parse(JSON.stringify(meal))
+        data.schedule_start_time = e
+        data.schedule_end_time = dayjs(endDate).format('HH:mm')
+        data.target_start_time = date.getTime()
+        data.target_end_time = date.getTime()+duration
+        setMeal(data)
+        setShowPicker(false)
+    }
+
+    function durationContent(){
+        return <View></View>
+    }
+
 
     return <View>
         <View className="header">
@@ -203,6 +260,12 @@ export default function AddEat() {
         }
         
         <View className="save" onClick={save}>Save</View>
+        {
+            showPicker && timeContent()
+        }
+        {
+            durationPicker && durationContent()
+        }
         {/* <Text> add eat detail</Text> */}
     </View>
 }