leon il y a 1 an
Parent
commit
5bf4d44549
42 fichiers modifiés avec 582 ajouts et 467 suppressions
  1. 9 2
      src/_health/components/console_cell.tsx
  2. 5 5
      src/_health/components/fast_sleep_console.scss
  3. 8 7
      src/_health/components/fast_sleep_console.tsx
  4. 1 1
      src/_health/components/fast_sleep_popup.scss
  5. 2 1
      src/_health/components/fast_sleep_popup.tsx
  6. 17 13
      src/_health/components/fast_sleep_popup_content.tsx
  7. 0 1
      src/_health/components/onboard.scss
  8. 2 1
      src/_health/components/onboard.tsx
  9. 1 0
      src/_health/components/schedule_item.tsx
  10. 4 2
      src/_health/components/sticky_date_list.tsx
  11. 27 21
      src/_health/pages/add_moment.tsx
  12. 1 1
      src/_health/pages/archive.config.ts
  13. 9 5
      src/_health/pages/archive.tsx
  14. 78 69
      src/_health/pages/fast_sleep.tsx
  15. 1 0
      src/_health/pages/guide_active.tsx
  16. 6 5
      src/_health/pages/guide_eat.tsx
  17. 33 4
      src/_health/pages/long_fast.tsx
  18. 11 0
      src/_health/pages/move.tsx
  19. 92 70
      src/_health/pages/move_schedule.tsx
  20. 69 56
      src/_health/pages/move_setting.tsx
  21. 61 48
      src/_health/pages/move_setting_reminder.tsx
  22. 48 97
      src/_health/pages/move_setting_time.tsx
  23. 3 0
      src/_health/pages/schedules.tsx
  24. 2 1
      src/_health/pages/schedules_edit.scss
  25. 7 23
      src/_health/pages/schedules_edit.tsx
  26. 10 6
      src/_health/pages/streak_calendar.tsx
  27. 2 1
      src/_health/pages/timeline_detail.config.ts
  28. 9 3
      src/_health/pages/timeline_detail.scss
  29. 9 4
      src/_health/pages/timeline_detail.tsx
  30. 1 0
      src/context/locales/en.js
  31. 1 0
      src/context/locales/zh.js
  32. 2 1
      src/features/health/HistoryItem.tsx
  33. 1 0
      src/features/health/MainConsole.scss
  34. 1 1
      src/features/health/MainConsole.tsx
  35. 1 1
      src/pages/account/Album.scss
  36. 10 8
      src/pages/account/Album.tsx
  37. 6 2
      src/pages/account/Journal.tsx
  38. 9 0
      src/pages/account/JournalDetail.config.ts
  39. 9 0
      src/pages/account/JournalDetail.scss
  40. 5 5
      src/pages/account/JournalDetail.tsx
  41. 8 1
      src/pages/account/PhotoWall.tsx
  42. 1 1
      src/utils/time_format.ts

+ 9 - 2
src/_health/components/console_cell.tsx

@@ -16,9 +16,16 @@ export default function ConsoleCell(props: {
     key?: any,
     moveCell?:boolean
 }) {
+
+    function lineLeft(){
+        if (props.moveCell){
+            return rpxToPx(58)
+        }
+        return props.fullLine ? -rpxToPx(42) : rpxToPx(98)
+    }
     return <Cell disable={props.disable} onClick={props.onClick} key={props.key}>
         <View className="timeline_item"
-            style={{ backgroundColor: 'transparent' }}>
+            style={{ paddingLeft:props.moveCell?rpxToPx(28):rpxToPx(42) }}>
             <View className="timeline_left">
                 <View style={{
                     height: props.description ? rpxToPx(28) : rpxToPx(36), flexShrink: 0
@@ -41,7 +48,7 @@ export default function ConsoleCell(props: {
                 props.right
             }
             {
-                props.showLine && <View className="border_footer_line" style={{ left: props.fullLine ? -rpxToPx(42) : rpxToPx(98) }} />
+                props.showLine && <View className="border_footer_line" style={{ left: lineLeft() }} />
             }
 
         </View>

+ 5 - 5
src/_health/components/fast_sleep_console.scss

@@ -4,11 +4,11 @@
   background-color: #E5E5E5;
 }
 
-.timeline_left {
-    display: flex;
-    flex-direction: column;
-    width: 300px;
-}
+// .timeline_left {
+//     display: flex;
+//     flex-direction: column;
+//     width: 300px;
+// }
 
 .timeline_time {
     font-size: 24px;

+ 8 - 7
src/_health/components/fast_sleep_console.tsx

@@ -218,7 +218,7 @@ export default function FastSleepConsole(props: { step: number, data: any, del:
     }
 
 
-    function timelineItem(item: any, index: number, count: number) {
+    function timelineItem(item: any, index: number, count: number,fullLine:boolean) {
         const { fast, sleep, status } = props.data
         var showBtn = true;
         var time = ''
@@ -383,7 +383,7 @@ export default function FastSleepConsole(props: { step: number, data: any, del:
             }}
             right={rightView()}
             showLine={true}
-            fullLine={count - 1 == index}
+            fullLine={fullLine}
         />
     }
 
@@ -403,8 +403,9 @@ export default function FastSleepConsole(props: { step: number, data: any, del:
                 is_start: true,
                 action: props.data.fast.timeline[0].action,
                 moment: props.data.fast.timeline[0].moment,
-                timeline: props.data.fast.timeline[0]
-            }, 0, 4)
+                timeline: props.data.fast.timeline[0],
+                
+            }, 0, 4,false)
         }
         {
             props.step != 3 && timelineItem({
@@ -414,7 +415,7 @@ export default function FastSleepConsole(props: { step: number, data: any, del:
                 action: props.data.fast.timeline[0].action,
                 moment: props.data.sleep.timeline[0].moment,
                 timeline: props.data.sleep.timeline[0]
-            }, 1, 4)
+            }, 1, 4,props.step==1)
         }
         {
             props.step != 1 && timelineItem({
@@ -423,7 +424,7 @@ export default function FastSleepConsole(props: { step: number, data: any, del:
                 is_start: false,
                 moment: props.data.sleep.timeline[1].moment,
                 timeline: props.data.sleep.timeline[1]
-            }, 2, 4)
+            }, 2, 4,props.step==2)
         }
         {
             props.step != 1 && props.step != 2 && timelineItem({
@@ -432,7 +433,7 @@ export default function FastSleepConsole(props: { step: number, data: any, del:
                 is_start: false,
                 moment: props.data.fast.timeline[1].moment,
                 timeline: props.data.fast.timeline[1]
-            }, 3, 4)
+            }, 3, 4,true)
         }
         {
             <View className="main_console_footer">

+ 1 - 1
src/_health/components/fast_sleep_popup.scss

@@ -1,6 +1,6 @@
 /* #ifdef weapp */
 .popup_container1 {
-    position: fixed;
+    position: absolute;
     left: 0;
     right: 0;
     top: 0;

+ 2 - 1
src/_health/components/fast_sleep_popup.tsx

@@ -11,7 +11,7 @@ import StatusIndicator, { StatusType } from "../base/status_indicator";
 import { IconCheck } from "@/components/basic/Icons";
 import FastSleepPopupContent from "./fast_sleep_popup_content";
 
-export default function FastSleepPopup(props: { close: any, data: any }) {
+export default function FastSleepPopup(props: { close: any, data: any,top?:number }) {
     const health = useSelector((state: any) => state.health);
     const { t } = useTranslation()
 
@@ -155,6 +155,7 @@ export default function FastSleepPopup(props: { close: any, data: any }) {
     }
 
     return <FastSleepPopupContent
+        top={props.top??0}
         close={props.close}
         status={props.data.status}
         beforeStatus={beforeStatus()}

+ 17 - 13
src/_health/components/fast_sleep_popup_content.tsx

@@ -21,7 +21,8 @@ export default function FastSleepPopupContent(props: {
     step2?: any,
     step3?: any,
     title?: string,
-    status?: any
+    status?: any,
+    top?: number
 }) {
     const { t } = useTranslation()
 
@@ -52,8 +53,8 @@ export default function FastSleepPopupContent(props: {
     function sleeping() {
         const type = props.sleepStatus
         var color = MainColorType.sleep
-        if (props.status){
-            if (props.status == 'OG1'){
+        if (props.status) {
+            if (props.status == 'OG1') {
                 color = MainColorType.g03
             }
         }
@@ -73,8 +74,8 @@ export default function FastSleepPopupContent(props: {
     function afterSleep() {
         const type = props.afterStatus
         var color = MainColorType.fast
-        if (props.status){
-            if (props.status != 'WFS' && props.status != 'OG3'){
+        if (props.status) {
+            if (props.status != 'WFS' && props.status != 'OG3') {
                 color = MainColorType.g03
             }
         }
@@ -91,8 +92,11 @@ export default function FastSleepPopupContent(props: {
         </StatusIndicator>
     }
 
-
-    return <View className="popup_container1">
+    debugger
+    return <View className="popup_container1" style={{
+        top:props.top,
+        height:'100vh'
+    }}>
         <View className="fast_sleep_content">
             <View className="h34 bold">{props.title ?? t('health.three_stages')}</View>
             {/* <View className="h24 bold g01" style={{ marginTop: rpxToPx(8) }}>{t('health.my_fast_duration', { time: props.total })}</View> */}
@@ -103,11 +107,11 @@ export default function FastSleepPopupContent(props: {
                 }
                 <View style={{ display: 'flex', flexDirection: 'row' }}>
                     <View style={{
-                        marginLeft: rpxToPx(10),
+                        marginLeft: rpxToPx(12),
                         marginRight: rpxToPx(24),
                         width: 1, height: rpxToPx(103),
-                        display:'flex',
-                        flexDirection:'column',
+                        display: 'flex',
+                        flexDirection: 'column',
                         backgroundColor: (props.sleepStatus == StatusType.ing || props.afterStatus == StatusType.ing) ? MainColorType.g01 : MainColorType.g03
                     }} />
                     <View className="pop_step_content">
@@ -124,7 +128,7 @@ export default function FastSleepPopupContent(props: {
                 }
                 <View style={{ display: 'flex', flexDirection: 'row' }}>
                     <View style={{
-                        marginLeft: rpxToPx(10),
+                        marginLeft: rpxToPx(12),
                         marginRight: rpxToPx(24),
                         width: 1, height: rpxToPx(103),
                         backgroundColor: props.afterStatus == StatusType.ing ? MainColorType.g01 : MainColorType.g03
@@ -143,8 +147,8 @@ export default function FastSleepPopupContent(props: {
                 }
                 <View style={{ display: 'flex', flexDirection: 'row' }}>
                     <View style={{
-                        marginLeft: rpxToPx(10),
-                        marginRight: rpxToPx(24.5),
+                        marginLeft: rpxToPx(12),
+                        marginRight: rpxToPx(24),
                         width: 1, height: rpxToPx(103),
                         backgroundColor: 'transparent'
                     }} />

+ 0 - 1
src/_health/components/onboard.scss

@@ -18,7 +18,6 @@
     width: 590px;
     font-size: 26px;
     line-height: 40px;
-    color: #B2B2B2;
     text-align: center;
     margin-bottom: 40px;
     margin-top: 6px;

+ 2 - 1
src/_health/components/onboard.tsx

@@ -7,9 +7,10 @@ import NewButton, { NewButtonType } from "../base/new_button";
 
 export default function OnBoard(props: { title: string, desc: string, btnTitle: string, onClick: any, color?: string }) {
     const health = useSelector((state: any) => state.health);
+    debugger
     return <View className="onboard_bg">
         <Text className="onboard_title">{props.title}</Text>
-        <Text className={health.mode=='ACTIVE'?"onboard_desc g01":"onboard_desc"} 
+        <Text className={health.mode=='ACTIVE'?"onboard_desc g01":"onboard_desc g02"} 
         style={{fontSize:health.mode=='ACTIVE'?rpxToPx(24):rpxToPx(26)}}>{props.desc}</Text>
         <NewButton
             type={NewButtonType.fill}

+ 1 - 0
src/_health/components/schedule_item.tsx

@@ -112,6 +112,7 @@ export default function ScheduleItem(props: {
                             text={props.obj.title}
                             fontSize={rpxToPx(34)}
                             fontColor="#000"
+                            space={rpxToPx(12)}
                             color={props.obj.is_conflict ? MainColorType.error : props.errors.length == 0 ? getThemeColor(props.obj.window) : 'transparent'} >
                             {
                                 props.obj.is_conflict && <IconError color="#fff" width={rpxToPx(26)} />

+ 4 - 2
src/_health/components/sticky_date_list.tsx

@@ -9,7 +9,8 @@ export default function StickyDateList(props: {
     loadMore?: any,
     onScroll: any,
     showDate: boolean,
-    date: string
+    date: string,
+    disable?:boolean
 }) {
 
     function headerDate(){
@@ -40,7 +41,8 @@ export default function StickyDateList(props: {
             <View className="border_footer_line" />
         </View>
         <ScrollView style='height:100vh'
-            scrollY
+            
+            scrollY={!props.disable}
             refresherEnabled
             refresherBackground={MainColorType.g05}
             onRefresherRefresh={props.onRefresherRefresh}

+ 27 - 21
src/_health/pages/add_moment.tsx

@@ -50,6 +50,8 @@ export default function AddMoment() {
     const [labels, setLabels] = useState<any>([])
     const [bottom, setBottom] = useState(-120)
 
+    const [titleFocus, setTitleFocus] = useState(false)
+
 
 
     let router
@@ -480,12 +482,12 @@ export default function AddMoment() {
                 placeholder={health.mode == 'EAT' ? 'Meal Name' : 'Active Name'}
                 style={{ caretColor: getThemeColor(health.mode) }}
                 // cursorColor='#ff0000'
-                // onFocus={() => {
-                //     setTitleFocus(true)
-                // }}
-                // onBlur={() => {
-                //     setTitleFocus(false)
-                // }}
+                onFocus={() => {
+                    setTitleFocus(true)
+                }}
+                onBlur={() => {
+                    setTitleFocus(false)
+                }}
                 onInput={(e: any) => {
                     setTitle(e.target.value)
                 }}
@@ -495,23 +497,27 @@ export default function AddMoment() {
 
             />
 
-            <View style={{position:'relative'}}>
-            <View className="border_footer_line" style={{left:rpxToPx(96)}}/>
+            <View style={{ position: 'relative' }}>
+                <View className="border_footer_line" style={{ left: rpxToPx(96) }} />
             </View>
 
-            <View className="tag_list">
-                <ScrollView style={{ width: rpxToPx(750), flexDirection: 'row', display: 'flex', height: rpxToPx(108) }} scrollX enableFlex showScrollbar={false}>
-                    <View style={{ width: rpxToPx(96), flexShrink: 0 }} />
-                    {
-                        labels.map((item, index) => {
-                            return <View className="add_page_tag_btn" key={index} onClick={() => {
-                                setTitle(item.title)
-                            }}>{item.title}</View>
-                        })
-                    }
-                    <View style={{ width: rpxToPx(40), flexShrink: 0 }} />
-                </ScrollView>
-            </View>
+            {
+                titleFocus && <View className="tag_list">
+                    <ScrollView style={{ width: rpxToPx(750), flexDirection: 'row', display: 'flex', height: rpxToPx(108) }} scrollX enableFlex showScrollbar={false}>
+                        <View style={{ width: rpxToPx(96), flexShrink: 0 }} />
+                        {
+                            labels.map((item, index) => {
+                                return <View className="add_page_tag_btn" key={index} onClick={() => {
+                                    setTitle(item.title)
+                                }}>{item.title}</View>
+                            })
+                        }
+                        <View style={{ width: rpxToPx(40), flexShrink: 0 }} />
+                    </ScrollView>
+                </View>
+            }
+            <View style={{height:rpxToPx(40),flexShrink:0}}/>
+
 
             <Textarea placeholder="简单描述(选填)" className="textarea g01"
                 placeholder-style="color:#B2B2B2"

+ 1 - 1
src/_health/pages/archive.config.ts

@@ -4,5 +4,5 @@ export default definePageConfig({
         // 'demo':'../../components/demo'
     },
     "navigationBarTitleText": "",
-    "navigationBarBackgroundColor": "#ffffff"
+    "navigationBarBackgroundColor": "#f5f5f5"
 })

+ 9 - 5
src/_health/pages/archive.tsx

@@ -240,7 +240,7 @@ export default function Archive() {
             flexDirection: 'column',
             boxSizing: 'border-box'
         }}>
-            <View className="h26" style={{lineHeight:rpxToPx(40)+'px'}}>档案存储了某一天中含有不完整条目的记录。如果您已完成当天所有[餐食/活动]记录,请将该记录“标记为完成”。</View>
+            <View className="h26" style={{ lineHeight: rpxToPx(40) + 'px' }}>档案存储了某一天中含有不完整条目的记录。如果您已完成当天所有[餐食/活动]记录,请将该记录“标记为完成”。</View>
             <View style={{
                 display: 'flex',
                 flexDirection: 'row',
@@ -269,10 +269,10 @@ export default function Archive() {
                     width: rpxToPx(125),
                     height: rpxToPx(72),
                     display: 'flex',
-                        alignItems: 'center',
-                        justifyContent: 'center'
+                    alignItems: 'center',
+                    justifyContent: 'center'
                 }}>
-                    <NewButton 
+                    <NewButton
                         type={NewButtonType.link}
                         color={getThemeColor(health.mode)}
                         onClick={() => {
@@ -283,7 +283,7 @@ export default function Archive() {
                                     data: true
                                 })
                             }
-    
+
                         }}
                         title="知道了"
                     />
@@ -331,6 +331,10 @@ export default function Archive() {
                     </View>
                 })
             }
+            {
+                list.length > 0 && <View style={{ display: 'flex', height: rpxToPx(40), flexShrink: 0, backgroundColor: '#fff' }} />
+            }
+
             <ListFooter noMore={(list.length > 0) && (total == list.length)} />
         </View>
     </StickyDateList>

+ 78 - 69
src/_health/pages/fast_sleep.tsx

@@ -19,6 +19,7 @@ import StickyDateList from "../components/sticky_date_list";
 import FastSleepPopup from "../components/fast_sleep_popup";
 import { useTranslation } from "react-i18next";
 
+let scrollTop = 0
 export default function FastSleep() {
     const health = useSelector((state: any) => state.health);
     const [showPopCard, setShowPopCard] = useState(false)
@@ -78,80 +79,88 @@ export default function FastSleep() {
 
     if (!loaded) return <View />
 
-    return <View><StickyDateList
-        isPulling={isPulling}
-        showDate={showDate}
-        date={date}
-        onRefresherRefresh={() => {
-            (historyRef.current as any).refresh()
-            setIsPulling(true)
-        }}
-        onScroll={e => {
-            if (historyRef) {
-                (historyRef.current as any).onScroll(e)
-            }
-        }}
-        loadMore={() => {
-            if (historyRef) {
-                (historyRef.current as any).more()
-            }
-        }}
-    >
-        <View className="page_container">
-            <NewHeader type={health.fast_with_sleep.status != 'OG2_MISALIGNED' ? NewHeaderType.left_subtitle : NewHeaderType.left}
-                title={t('health.fast_with_sleep')}
-                subtitle={health.fast_with_sleep.status != 'OG2_MISALIGNED' ? 'Tune Into Your Circadian Rhythm ' : ''}
-            />
-            {
-                health.fast_with_sleep.status != 'OG2_MISALIGNED' && <Swiper indicatorColor='#59595933'
-                    indicatorActiveColor='#59595999'
-                    style={{ height: rpxToPx(460), marginBottom: rpxToPx(24), flexShrink: 0 }}
-                    onChange={e => setCurrent(e.detail.current)}
-                    current={current}
-                    indicatorDots>
-                    <SwiperItem onClick={() => setShowPopCard(true)}>
-                        <Card>
-                            <FastSleepCard step={0} data={data} />
-
-                        </Card>
-                    </SwiperItem>
-                    <SwiperItem onClick={() => setShowPopCard(true)}>
-                        <Card>
-                            <FastSleepCard step={1} data={data} />
-                        </Card>
-                    </SwiperItem>
-                    <SwiperItem onClick={() => setShowPopCard(true)}>
-                        <Card>
-                            <FastSleepCard step={2} data={data} />
-                        </Card>
-                    </SwiperItem>
-                    <SwiperItem onClick={() => setShowPopCard(true)}>
-                        <Card>
-                            <FastSleepCard step={3} data={data} />
-                        </Card>
-                    </SwiperItem>
-                </Swiper>
-            }
-            {/* {
+    return <View style={{ position: 'relative' }}>
+        <StickyDateList
+            isPulling={isPulling}
+            showDate={showDate}
+            date={date}
+            onRefresherRefresh={() => {
+                (historyRef.current as any).refresh()
+                setIsPulling(true)
+            }}
+            disable={showPopCard}
+            onScroll={e => {
+                scrollTop = e.detail.scrollTop
+                // debugger
+                if (historyRef) {
+                    (historyRef.current as any).onScroll(e)
+                }
+            }}
+            loadMore={() => {
+                if (historyRef) {
+                    (historyRef.current as any).more()
+                }
+            }}
+        >
+            <View className="page_container">
+                <NewHeader type={health.fast_with_sleep.status != 'OG2_MISALIGNED' ? NewHeaderType.left_subtitle : NewHeaderType.left}
+                    title={t('health.fast_with_sleep')}
+                    subtitle={health.fast_with_sleep.status != 'OG2_MISALIGNED' ? 'Tune Into Your Circadian Rhythm ' : ''}
+                />
+                {
+                    health.fast_with_sleep.status != 'OG2_MISALIGNED' && <Swiper indicatorColor='#59595933'
+                        indicatorActiveColor='#59595999'
+                        style={{ height: rpxToPx(460), marginBottom: rpxToPx(24), flexShrink: 0 }}
+                        onChange={e => setCurrent(e.detail.current)}
+                        current={current}
+                        indicatorDots>
+                        <SwiperItem onClick={() => setShowPopCard(true)}>
+                            <Card>
+                                <FastSleepCard step={0} data={data} />
+
+                            </Card>
+                        </SwiperItem>
+                        <SwiperItem onClick={() => setShowPopCard(true)}>
+                            <Card>
+                                <FastSleepCard step={1} data={data} />
+                            </Card>
+                        </SwiperItem>
+                        <SwiperItem onClick={() => setShowPopCard(true)}>
+                            <Card>
+                                <FastSleepCard step={2} data={data} />
+                            </Card>
+                        </SwiperItem>
+                        <SwiperItem onClick={() => setShowPopCard(true)}>
+                            <Card>
+                                <FastSleepCard step={3} data={data} />
+                            </Card>
+                        </SwiperItem>
+                    </Swiper>
+                }
+                {/* {
                 health.fast_with_sleep.status != 'OG2_MISALIGNED' && <FastSleepDetailCard data={data} />
             } */}
 
 
 
-            <FastSleepConsole step={current} data={data} del={() => {
-                getDatas()
-            }} showDetail={()=>setShowPopCard(true)}/>
-            <MainHistory type='FAST,SLEEP' ref={historyRef} updateDate={(e) => {
-                setShowDate(e.show)
-                setDate(e.date)
-            }} refreshSuccess={() => {
-                setIsPulling(false)
-            }} />
+                <FastSleepConsole step={current} data={data} del={() => {
+                    getDatas()
+                }} showDetail={() => {
+                    setShowPopCard(true)
+                }} />
+                <MainHistory type='FAST,SLEEP' ref={historyRef} updateDate={(e) => {
+                    setShowDate(e.show)
+                    setDate(e.date)
+                }} refreshSuccess={() => {
+                    setIsPulling(false)
+                }} />
+
+                {
+                    showPopCard && <FastSleepPopup top={scrollTop} close={() => { setShowPopCard(false) }} data={data} />
+                }
+
+            </View>
+        </StickyDateList>
 
-        </View>
-    </StickyDateList>
-        {
-            showPopCard && <FastSleepPopup close={() => { setShowPopCard(false) }} data={data} />
-        }
     </View>
 }

+ 1 - 0
src/_health/pages/guide_active.tsx

@@ -204,6 +204,7 @@ export default function GuideActive() {
             <View className='item_add'
                 onClick={() => add()}>
                 <StatusIndicator type={StatusType.img} text={t('health.add_active')}
+                    space={rpxToPx(12)}
                     color={MainColorType.active} fontColor={MainColorType.active} fontSize={rpxToPx(34)} >
                     <IconAdd color="#fff" width={rpxToPx(20)} />
                 </StatusIndicator>

+ 6 - 5
src/_health/pages/guide_eat.tsx

@@ -142,7 +142,7 @@ export default function GuideEat() {
                 items.map((obj, i) => {
                     return <ScheduleItem
                         index={i}
-                        count={items.length+1}
+                        count={items.length + 1}
                         key={i * 100}
                         obj={obj}
                         highlight={highlight ? obj.window == 'EAT' : false}
@@ -195,9 +195,10 @@ export default function GuideEat() {
             <View className='item_add'
                 onClick={() => add()}>
                 <StatusIndicator type={StatusType.img} text={t('health.add_meal')}
+                    space={rpxToPx(12)}
                     color={MainColorType.eat} fontColor={MainColorType.eat} fontSize={rpxToPx(34)} >
-                        <IconAdd color="#fff" width={rpxToPx(20)} />
-                    </StatusIndicator>
+                    <IconAdd color="#fff" width={rpxToPx(20)} />
+                </StatusIndicator>
                 <View style={{ flex: 1 }} />
             </View>
         </Card>
@@ -210,7 +211,7 @@ export default function GuideEat() {
                 items.map((obj, i) => {
                     return <ScheduleItem
                         index={i}
-                        count={items.length+1}
+                        count={items.length + 1}
                         key={i * 100}
                         obj={obj}
                         highlight={false}
@@ -250,7 +251,7 @@ export default function GuideEat() {
         </Card>
     }
     return <View style={{ flex: 1, display: 'flex', flexDirection: 'column', height: '100vh' }}>
-        <View style={{ height: navigationBarHeight, backgroundColor: MainColorType.g05,flexShrink:0 }} />
+        <View style={{ height: navigationBarHeight, backgroundColor: MainColorType.g05, flexShrink: 0 }} />
         <View className="navi-bar" style={{ height: navigationBarHeight, zIndex: 1000, backgroundColor: MainColorType.g05 }}>
 
             <View style={{

+ 33 - 4
src/_health/pages/long_fast.tsx

@@ -22,6 +22,7 @@ import Taro from "@tarojs/taro";
 import { useTranslation } from "react-i18next";
 import NewTimePicker from "../base/new_timepicker";
 import StickyDateList from "../components/sticky_date_list";
+import StatusIndicator, { StatusType } from "../base/status_indicator";
 
 let useActionSheet;
 let pauseTime = false;
@@ -36,7 +37,7 @@ export default function LongFast() {
     const [editDuration, setEditDuration] = useState(false)
     const [showPicker, setShowPicker] = useState(false)
     const [duration, setDuration] = useState(0)
-    
+
     const [time, setTime] = useState(dayjs().format('HH:mm'))
     const { t } = useTranslation()
     const [isPulling, setIsPulling] = useState(false)
@@ -62,9 +63,9 @@ export default function LongFast() {
         }
     }, [])
 
-    useEffect(()=>{
+    useEffect(() => {
         pauseTime = editDuration
-    },[editDuration])
+    }, [editDuration])
 
     function tapStart() {
         const fast = getScenario(health.windows, 'FAST')
@@ -238,7 +239,7 @@ export default function LongFast() {
         return <View />
     }
 
-    global.refreshLongFast = ()=>{
+    global.refreshLongFast = () => {
         (historyRef.current as any).refresh()
     }
 
@@ -254,6 +255,17 @@ export default function LongFast() {
             if (historyRef) {
                 (historyRef.current as any).onScroll(e)
             }
+
+            if (e.detail.scrollTop > 70) {
+                Taro.setNavigationBarTitle({
+                    title: t('health.long_fast')
+                })
+            }
+            else {
+                Taro.setNavigationBarTitle({
+                    title: ''
+                })
+            }
         }}
         loadMore={() => {
             if (historyRef) {
@@ -267,6 +279,23 @@ export default function LongFast() {
             />
             <Card>
                 <View className="long_fast_card">
+                    <View style={{
+                        position: 'absolute',
+                        display: 'flex',
+                        alignItems: 'center',
+                        flexDirection: 'row',
+                        left: rpxToPx(20),
+                        top: rpxToPx(20),
+                    }}>
+                        <StatusIndicator type={StatusType.normal}//type={status == 'WFS' ? StatusType.normal : StatusType.ing}
+                            color={ MainColorType.fast}
+                            text={long_fast.status == 'WFS' ?t('health.longfast_wait'):t('health.in_progress')}
+                            fontColor={MainColorType.g01}
+                            fontSize={rpxToPx(20)}
+                        >
+                            {/* {status == 'WFS' && <IconCircle width={rpxToPx(26)} color={MainColorType.fast} />} */}
+                        </StatusIndicator>
+                    </View>
                     <View style={{ height: rpxToPx(96) }} />
                     <View className="h50 bold" style={{ color: MainColorType.fast }}>{timeText()}</View>
                     <View className="h24" style={{ color: MainColorType.g02, marginTop: rpxToPx(12) }}>Goal {goal()}</View>

+ 11 - 0
src/_health/pages/move.tsx

@@ -177,6 +177,17 @@ export default function Move() {
     function onScroll(e) {
         var top = e.detail.scrollTop
         myScrollTop = top
+        if (e.detail.scrollTop > 70) {
+            Taro.setNavigationBarTitle({
+                title:'Move Every Hour'
+            })
+        }
+        else {
+            Taro.setNavigationBarTitle({
+                title:''
+            })
+        }
+
         if (itemLayouts.length > 0) {
             var i = -1
             var date = ''

+ 92 - 70
src/_health/pages/move_schedule.tsx

@@ -11,6 +11,9 @@ import StatusIndicator, { StatusType } from "../base/status_indicator";
 import { MainColorType } from "@/context/themes/color";
 import { IconNotification, IconNotificationOff } from "@/components/basic/Icons";
 import ConsoleCell from "../components/console_cell";
+import Layout from "@/components/layout/layout";
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
+import Card from "../components/card";
 
 let useRoute;
 let useNavigation;
@@ -131,74 +134,93 @@ export default function MoveSchedule() {
         return <Text></Text>
     }
 
-    return <View style={{ display: 'flex', flexDirection: 'column' }}>
-        <NewHeader type={NewHeaderType.left} title="Upcoming Check Ins" />
-        {
-            hours.length == 0 && <View style={{ display: 'flex', flex: 1, flexDirection: 'column', alignItems: 'center', marginTop: rpxToPx(110) }}>
-                <Image src={require('@assets/_health/sleep2.png')} style={{ width: rpxToPx(64), height: rpxToPx(64) }} />
-                <Text style={{ marginTop: rpxToPx(24), fontSize: rpxToPx(50), fontWeight: 'bold', color: '#B2B2B2' }}>睡个好觉</Text>
-            </View>
-        }
-        {
-            hours.map((item, index) => {
-                var start = item.hour
-                var open: any = start
-                var end = start + 1
-                start = (start + '').padStart(2, '0')
-                end = (end + '').padStart(2, '0')
-
-                open = (open + '').padStart(2, '0')
-                if (item.status != 'WFS') return <View key={index} />
-                return <ConsoleCell key={index}
-                    moveCell
-                    status={<StatusIndicator type={StatusType.normal}
-                        color={MainColorType.active}
-                        text={'WAKING HOUR ' + (index + 1)} />}
-                    title={`Check in at ${open}:50`}
-                    description={`${parseInt(start) < new Date().getHours() ? '' : ''}${start}:00-${end}:00`}
-                    subDesc={<Text className="schedule_item_time">  {firstTime(index)}</Text>}
-                    right={<View style={{
-                        display: 'flex',
-                        flexDirection: 'row',
-                        alignItems: 'center'
-                    }}>
-                        {
-                            item.reminder ? <IconNotification color={MainColorType.g03} width={rpxToPx(28)} /> : <IconNotificationOff color={MainColorType.g03} width={rpxToPx(28)} />
-                        }
-                        <View style={{ width: rpxToPx(12) }} />
-                        <Switch checked={item.reminder} color={getThemeColor('ACTIVE')} onChange={e => {
-                            console.log(item)
-
-                            createSchedule({
-                                schedules: [{
-                                    id: item.schedule_id,
-                                    reminder: e.detail.value
-                                }],
-                            }).then(res => {
-                                getData()
-                                if (global.refreshWindow) {
-                                    global.refreshWindow()
-                                }
-                                if (global.refreshSchedules) {
-                                    global.refreshSchedules()
-                                }
-                                if (global.updateMove) {
-                                    global.updateMove()
-                                }
-                            })
-                        }} />
-                    </View>}
-                    disable={true}
-                    onClick={() => { }}
-                    showLine={true}
-                    fullLine={false}
-
-                />
-
-            })
-        }
-        <Text className="no_more" style={{ color: '#5C7099' }} onClick={() => {
-            jumpPage('./move_setting_reminder')
-        }}>Full schedules</Text>
-    </View>
+    function detailContent() {
+
+
+        return <View style={{ display: 'flex', flexDirection: 'column' }}>
+            <NewHeader type={NewHeaderType.left} title="Upcoming Check Ins" />
+            {
+                hours.length == 0 && <View style={{ display: 'flex', flex: 1, flexDirection: 'column', alignItems: 'center', marginTop: rpxToPx(110) }}>
+                    <Image src={require('@assets/_health/sleep2.png')} style={{ width: rpxToPx(64), height: rpxToPx(64) }} />
+                    <Text style={{ marginTop: rpxToPx(24), fontSize: rpxToPx(50), fontWeight: 'bold', color: '#B2B2B2' }}>睡个好觉</Text>
+                </View>
+            }
+            <Card>
+                <View style={{ display: 'flex', flexDirection: 'column', width: rpxToPx(700) }}>
+                    {
+                        hours.map((item, index) => {
+                            var start = item.hour
+                            var open: any = start
+                            var end = start + 1
+                            start = (start + '').padStart(2, '0')
+                            end = (end + '').padStart(2, '0')
+
+                            open = (open + '').padStart(2, '0')
+                            if (item.status != 'WFS') return <View key={index} />
+                            return <ConsoleCell key={index}
+                                moveCell
+                                status={<StatusIndicator type={StatusType.normal}
+                                    color={MainColorType.active}
+                                    text={'WAKING HOUR ' + (index + 1)} />}
+                                title={`Check in at ${open}:50`}
+                                description={`${parseInt(start) < new Date().getHours() ? '' : ''}${start}:00-${end}:00`}
+                                subDesc={<Text className="schedule_item_time">  {firstTime(index)}</Text>}
+                                right={<View style={{
+                                    display: 'flex',
+                                    flexDirection: 'row',
+                                    alignItems: 'center'
+                                }}>
+                                    {
+                                        item.reminder ? <IconNotification color={MainColorType.g03} width={rpxToPx(28)} /> : <IconNotificationOff color={MainColorType.g03} width={rpxToPx(28)} />
+                                    }
+                                    <View style={{ width: rpxToPx(12) }} />
+                                    <Switch checked={item.reminder} color={getThemeColor('ACTIVE')} onChange={e => {
+                                        console.log(item)
+
+                                        createSchedule({
+                                            schedules: [{
+                                                id: item.schedule_id,
+                                                reminder: e.detail.value
+                                            }],
+                                        }).then(res => {
+                                            getData()
+                                            if (global.refreshWindow) {
+                                                global.refreshWindow()
+                                            }
+                                            if (global.refreshSchedules) {
+                                                global.refreshSchedules()
+                                            }
+                                            if (global.updateMove) {
+                                                global.updateMove()
+                                            }
+                                        })
+                                    }} />
+                                    <View style={{marginRight:-rpxToPx(14)}}/>
+                                </View>}
+                                disable={true}
+                                onClick={() => { }}
+                                showLine={true}
+                                fullLine={false}
+
+                            />
+
+                        })
+                    }
+                </View>
+            </Card>
+
+            <Text className="no_more" style={{ color: '#5C7099' }} onClick={() => {
+                jumpPage('./move_setting_reminder')
+            }}>Full schedules</Text>
+        </View>
+    }
+
+    return <Layout children={detailContent()}
+        // title={router.params.title}
+        header={null}
+        secondPage={true}
+        titleColor={'#fff'}
+        title={'Upcoming Check Ins'}
+        type={TemplateType.customHeader}
+        titleShowStyle={NaviBarTitleShowType.scrollToShow} />
 }

+ 69 - 56
src/_health/pages/move_setting.tsx

@@ -7,80 +7,93 @@ import { getThemeColor } from "@/features/health/hooks/health_hooks";
 import { getMoveSchedules, setMoveSchedules } from "@/services/health";
 import Taro from "@tarojs/taro";
 import { jumpPage } from "@/features/trackTimeDuration/hooks/Common";
+import Layout from "@/components/layout/layout";
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
 
 export default function MoveSetting() {
     const [selIndex, setSelIndex] = useState(-1)
     const [hours, setHours] = useState('')
     const [total, setTotal] = useState('')
-    const [detail,setDetail] = useState<any>(null)
+    const [detail, setDetail] = useState<any>(null)
 
-    useEffect(()=>{
-        getMoveSchedules().then(res=>{
+    useEffect(() => {
+        getMoveSchedules().then(res => {
             setDetail(res)
             setHours((res as any).goal.hour)
             setTotal((res as any).goal.day)
         })
-    },[])
+    }, [])
 
-    function tapDone(){
+    function tapDone() {
         setMoveSchedules({
-            goal:{
-                day:total,
-                hour:hours
+            goal: {
+                day: total,
+                hour: hours
             }
-        }).then(res=>{
+        }).then(res => {
             global.updateMove()
             Taro.navigateBack()
         })
     }
-    return <View className="setting_container">
-        <View className="setting_cell" hoverClass='cell_hover' hoverStayTime={50} onClick={() => {
-            jumpPage('./move_setting_time')
-        }}>
-            <Text className="setting_title">打卡提醒</Text>
-            <Text className="placeholder">设置</Text>
-            <IconCellArrow width={18} color="#B2B2B2" />
-        </View>
-        <View className="group_space" />
-        <View className="setting_cell" hoverClass='cell_hover' hoverStayTime={50} onClick={() => {
-            setSelIndex(0)
-        }}>
-            <Text className="setting_title">每小时最低步数</Text>
-            {
-                selIndex == 0 ? <Input className='placeholder' style={{ flex: 1 }}
-                    value={hours}
-                    autoFocus={true}
-                    focus={true}
-                    onBlur={() => {
-                        setSelIndex(-1)
-                    }}
-                    onInput={(e) => {
-                        setHours(e.detail.value)
-                    }} /> : <Text className="placeholder">{hours}</Text>
-            }
-            <IconCellArrow width={18} color="#B2B2B2" />
-            <View className="border_footer_line" style={{ left: rpxToPx(52) }} />
-        </View>
-        <View className="setting_cell" hoverClass='cell_hover' hoverStayTime={50} onClick={() => {
-            setSelIndex(1)
-        }}>
-            <Text className="setting_title">每日总步数目标</Text>
-            {
-                selIndex == 1 ? <Input className='placeholder' style={{ flex: 1 }}
-                    value={total}
-                    autoFocus={true}
-                    focus={true}
-                    onBlur={() => {
-                        setSelIndex(-1)
-                    }}
-                    onInput={(e) => {
-                        setTotal(e.detail.value)
-                    }} /> : <Text className="placeholder">{total}</Text>
-            }
 
-            <IconCellArrow width={18} color="#B2B2B2" />
+    function detailContent() {
+        return <View className="setting_container">
+            <View className="setting_cell" hoverClass='cell_hover' hoverStayTime={50} onClick={() => {
+                jumpPage('./move_setting_time')
+            }}>
+                <Text className="setting_title">打卡提醒</Text>
+                <Text className="placeholder">设置</Text>
+                <IconCellArrow width={18} color="#B2B2B2" />
+            </View>
+            <View className="group_space" />
+            <View className="setting_cell" hoverClass='cell_hover' hoverStayTime={50} onClick={() => {
+                setSelIndex(0)
+            }}>
+                <Text className="setting_title">每小时最低步数</Text>
+                {
+                    selIndex == 0 ? <Input className='placeholder' style={{ flex: 1 }}
+                        value={hours}
+                        autoFocus={true}
+                        focus={true}
+                        onBlur={() => {
+                            setSelIndex(-1)
+                        }}
+                        onInput={(e) => {
+                            setHours(e.detail.value)
+                        }} /> : <Text className="placeholder">{hours}</Text>
+                }
+                <IconCellArrow width={18} color="#B2B2B2" />
+                <View className="border_footer_line" style={{ left: rpxToPx(52) }} />
+            </View>
+            <View className="setting_cell" hoverClass='cell_hover' hoverStayTime={50} onClick={() => {
+                setSelIndex(1)
+            }}>
+                <Text className="setting_title">每日总步数目标</Text>
+                {
+                    selIndex == 1 ? <Input className='placeholder' style={{ flex: 1 }}
+                        value={total}
+                        autoFocus={true}
+                        focus={true}
+                        onBlur={() => {
+                            setSelIndex(-1)
+                        }}
+                        onInput={(e) => {
+                            setTotal(e.detail.value)
+                        }} /> : <Text className="placeholder">{total}</Text>
+                }
+
+                <IconCellArrow width={18} color="#B2B2B2" />
+            </View>
+
+            <View className="edit_footer_btn" style={{ color: getThemeColor('ACTIVE'), backgroundColor: getThemeColor('ACTIVE') + '33' }} onClick={tapDone}>完成</View>
         </View>
+    }
 
-        <View className="edit_footer_btn" style={{ color: getThemeColor('ACTIVE'), backgroundColor: getThemeColor('ACTIVE') + '33' }} onClick={tapDone}>完成</View>
-    </View>
+    return <Layout children={detailContent()}
+        // title={router.params.title}
+        secondPage={true}
+        titleColor={'#fff'}
+        title={'11'}
+        type={TemplateType.flex}
+        titleShowStyle={NaviBarTitleShowType.scrollToShow} />
 }

+ 61 - 48
src/_health/pages/move_setting_reminder.tsx

@@ -10,6 +10,8 @@ import { IconNotification, IconNotificationOff } from "@/components/basic/Icons"
 import { MainColorType } from "@/context/themes/color";
 import { rpxToPx } from "@/utils/tools";
 import StatusIndicator, { StatusType } from "../base/status_indicator";
+import Layout from "@/components/layout/layout";
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
 
 export default function MoveSettingReminder() {
     const [selIndex, setSelIndex] = useState(-1)
@@ -31,61 +33,72 @@ export default function MoveSettingReminder() {
 
     if (!detail) return <View />
 
-    return <View>
-        <NewHeader type={NewHeaderType.left} title="Full Check In Schedule" />
-        {
-            detail.schedules.map((item, index) => {
-                return <View key={index}>
-                    <View key={index} className="schedule_item">
-                        {/* <View style={{ display: 'flex', flexDirection: 'column' }}>
+    function detailContent() {
+        return <View>
+            <NewHeader type={NewHeaderType.left} title="Full Check In Schedule" />
+            {
+                detail.schedules.map((item, index) => {
+                    return <View key={index}>
+                        <View key={index} className="schedule_item">
+                            {/* <View style={{ display: 'flex', flexDirection: 'column' }}>
                             <Text>{item.reminder_time}</Text>
                             <View>
                                 <Text style={{ flex: 1 }}>check in for {item.time}-{item.end_time}</Text>
 
                             </View>
                         </View> */}
-                        <View className="schedule_item_left">
-                            <StatusIndicator type={StatusType.normal}
-                                color={MainColorType.active}
-                                text={'WAKING HOUR ' + (index + 1)} />
-                            <View className="h34" style={{ marginLeft: rpxToPx(30) }}>Check in at {item.reminder_time}</View>
-                            <Text className="h22" style={{ color: MainColorType.g02, marginTop: rpxToPx(12), marginLeft: rpxToPx(30) }}>
-                                {item.title}
-                            </Text>
-                            {/* <Text className="schedule_item_target">{item.real_steps}/{item.target_steps} steps</Text> */}
+                            <View className="schedule_item_left">
+                                <StatusIndicator type={StatusType.normal}
+                                    color={MainColorType.active}
+                                    text={'WAKING HOUR ' + (index + 1)} />
+                                <View className="h34" style={{ marginLeft: rpxToPx(30) }}>Check in at {item.reminder_time}</View>
+                                <Text className="h22" style={{ color: MainColorType.g02, marginTop: rpxToPx(12), marginLeft: rpxToPx(30) }}>
+                                    {item.title}
+                                </Text>
+                                {/* <Text className="schedule_item_target">{item.real_steps}/{item.target_steps} steps</Text> */}
+                            </View>
+                            <View style={{ flex: 1 }} />
+                            {
+                                item.reminder ? <IconNotification color={MainColorType.g03} width={rpxToPx(28)} /> : <IconNotificationOff color={MainColorType.g03} width={rpxToPx(28)} />
+                            }
+                            <View style={{ width: rpxToPx(12) }} />
+                            <Switch checked={item.reminder} color={getThemeColor('ACTIVE')} onChange={e => {
+                                console.log(item)
+                                createSchedule({
+                                    schedules: [{
+                                        id: item.id,
+                                        reminder: e.detail.value
+                                    }],
+                                }).then(res => {
+                                    getData()
+                                    if (global.refreshWindow) {
+                                        global.refreshWindow()
+                                    }
+                                    if (global.refreshSchedules) {
+                                        global.refreshSchedules()
+                                    }
+                                    if (global.updateMove) {
+                                        global.updateMove()
+                                    }
+                                })
+                            }} />
+                            {
+                                index < detail.schedules.length - 1 && <View className="border_footer_line" style={{ left: rpxToPx(72) }} />
+                            }
                         </View>
-                        <View style={{ flex: 1 }} />
-                        {
-                            item.reminder ? <IconNotification color={MainColorType.g03} width={rpxToPx(28)} /> : <IconNotificationOff color={MainColorType.g03} width={rpxToPx(28)} />
-                        }
-                        <View style={{ width: rpxToPx(12) }} />
-                        <Switch checked={item.reminder} color={getThemeColor('ACTIVE')} onChange={e => {
-                            console.log(item)
-                            createSchedule({
-                                schedules: [{
-                                    id: item.id,
-                                    reminder: e.detail.value
-                                }],
-                            }).then(res => {
-                                getData()
-                                if (global.refreshWindow) {
-                                    global.refreshWindow()
-                                }
-                                if (global.refreshSchedules) {
-                                    global.refreshSchedules()
-                                }
-                                if (global.updateMove) {
-                                    global.updateMove()
-                                }
-                            })
-                        }} />
-                        {
-                        index < detail.schedules.length - 1 && <View className="border_footer_line" style={{ left: rpxToPx(72) }} />
-                    }
                     </View>
-                </View>
-            })
-        }
+                })
+            }
+
+        </View>
+    }
 
-    </View>
+    return <Layout children={detailContent()}
+        // title={router.params.title}
+        header={null}
+        secondPage={true}
+        titleColor={'#fff'}
+        title={'Full Check In Schedule'}
+        type={TemplateType.customHeader}
+        titleShowStyle={NaviBarTitleShowType.scrollToShow} />
 }

+ 48 - 97
src/_health/pages/move_setting_time.tsx

@@ -9,6 +9,9 @@ import NewButton, { NewButtonType } from "../base/new_button";
 import StatusIndicator, { StatusType } from "../base/status_indicator";
 import { MainColorType } from "@/context/themes/color";
 import ConsoleCell from "../components/console_cell";
+import Layout from "@/components/layout/layout";
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
+import Card from "../components/card";
 
 export default function MoveSettingTime() {
     const [selIndex, setSelIndex] = useState(-1)
@@ -30,88 +33,41 @@ export default function MoveSettingTime() {
 
     if (!detail) return <View />
 
-    return <View>
-        <NewHeader
-            type={NewHeaderType.left_subtitle}
-            title="每小时步数目标"
-            subtitle={`平均 ${hours} 步,全天 ${total} 步`}
-        />
-        {
-            detail.schedules.map((item, index) => {
-                return <ConsoleCell key={index}
-                    moveCell
-                    status={<StatusIndicator
-                        type={StatusType.normal}
-                        text={'WALKING HOUR ' + (index + 1)}
-                        color={MainColorType.active}
-                    />
-                    }
-                    right={selIndex != index ? <Text className="h26" style={{ color: MainColorType.link }} onClick={() => {
-                        setSelIndex(index)
-                    }}>更改目标</Text> : null}
-                    disable={true}
-                    showLine={true}
-                    fullLine={false}
-                    description={`${item.time}-${item.end_time}`}
-                    title={selIndex != index ? `Hit ${item.goal} Steps` : null}
-                    titleComponent={selIndex == index ? <Input className='item_name h34' style={{ flex: 1, height: rpxToPx(46),marginLeft:rpxToPx(32) }}
-                        value={item.goal}
-                        autoFocus={true}
-                        focus={true}
-                        type="number"
-                        cursor={item.goal.length}
-                        onBlur={() => {
-                            setSelIndex(-1)
-                            createSchedule({
-                                schedules: [{
-                                    id: item.id,
-                                    goal: item.goal
-                                }],
-                            }).then(res => {
-                                if (global.refreshWindow) {
-                                    global.refreshWindow()
-                                }
-                                if (global.refreshSchedules) {
-                                    global.refreshSchedules()
-                                }
-                                if (global.updateMove) {
-                                    global.updateMove()
-                                }
-                                getDatas()
-                            })
-                        }}
-                        onInput={(e) => {
-                            // item.goal = e.detail.value
-                            var obj = JSON.parse(JSON.stringify(detail))
-                            obj.schedules[index].goal = e.detail.value
-                            setDetail(obj)
-                        }} /> : null}
-                />
-                return <View key={index} style={{
-                    position: 'relative',
-                    display: 'flex',
-                    backgroundColor: '#fff',
-                    paddingLeft: rpxToPx(40),
-                    paddingRight: rpxToPx(40),
-                    height: rpxToPx(172),
-                    msFlexDirection: 'row',
-                    alignItems: 'center'
-                }}>
 
-                    <View style={{ display: 'flex', flexDirection: 'column', flex: 1, boxSizing: 'border-box' }}>
-                        <StatusIndicator
-                            type={StatusType.normal}
-                            text={'WALKING HOUR ' + (index + 1)}
-                            color={MainColorType.active}
-                        />
+    function detailContent() {
 
-                        <View style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between' }}>
-                            {
-                                selIndex == index ? <Input className='item_name h34' style={{ flex: 1, marginLeft: rpxToPx(30), height: rpxToPx(46) }}
+        return <View>
+            <NewHeader
+                type={NewHeaderType.left_subtitle}
+                title="每小时步数目标"
+                subtitle={`平均 ${hours} 步,全天 ${total} 步`}
+            />
+            <Card>
+                <View style={{ display: 'flex', flexDirection: 'column', width: rpxToPx(700) }}>
+                    {
+                        detail.schedules.map((item, index) => {
+                            return <ConsoleCell key={index}
+                                moveCell
+                                status={<StatusIndicator
+                                    type={StatusType.normal}
+                                    text={'WALKING HOUR ' + (index + 1)}
+                                    color={MainColorType.active}
+                                />
+                                }
+                                right={selIndex != index ? <Text className="h26" style={{ color: MainColorType.link }} onClick={() => {
+                                    setSelIndex(index)
+                                }}>更改目标</Text> : null}
+                                disable={true}
+                                showLine={true}
+                                fullLine={false}
+                                description={`${item.time}-${item.end_time}`}
+                                title={selIndex != index ? `Hit ${item.goal} Steps` : null}
+                                titleComponent={selIndex == index ? <Input className='item_name h34' style={{ flex: 1, height: rpxToPx(46), marginLeft: rpxToPx(32) }}
                                     value={item.goal}
                                     autoFocus={true}
                                     focus={true}
                                     type="number"
+                                    cursor={item.goal.length}
                                     onBlur={() => {
                                         setSelIndex(-1)
                                         createSchedule({
@@ -137,28 +93,23 @@ export default function MoveSettingTime() {
                                         var obj = JSON.parse(JSON.stringify(detail))
                                         obj.schedules[index].goal = e.detail.value
                                         setDetail(obj)
-                                    }} /> : <Text className="h34" style={{ marginLeft: rpxToPx(30), height: rpxToPx(46) }}>Hit {item.goal} Steps</Text>
-                            }
-                            <View>
-                                {
-                                    selIndex != index && <NewButton type={NewButtonType.link}
-                                        title="更改目标"
-                                        onClick={() => {
-                                            setSelIndex(index)
-                                        }}
-                                    />
-                                }
-                            </View>
-
-                        </View>
-                        <Text className="h22" style={{ color: MainColorType.g02, marginTop: rpxToPx(12), marginLeft: rpxToPx(30) }}>{item.time}-{item.end_time}</Text>
-                    </View>
-                    {
-                        index < detail.schedules.length - 1 && <View className="border_footer_line" style={{ left: rpxToPx(72) }} />
+                                    }} /> : null}
+                            />
+                        })
                     }
                 </View>
-            })
-        }
+            </Card>
+
+
+        </View>
+    }
 
-    </View>
+    return <Layout children={detailContent()}
+        // title={router.params.title}
+        header={null}
+        secondPage={true}
+        titleColor={'#fff'}
+        title={'每小时步数目标'}
+        type={TemplateType.customHeader}
+        titleShowStyle={NaviBarTitleShowType.scrollToShow} />
 }

+ 3 - 0
src/_health/pages/schedules.tsx

@@ -470,6 +470,7 @@ export default function Schedules() {
                         <StatusIndicator type={StatusType.img}
                             fontColor={getAddColor()}
                             fontSize={rpxToPx(34)}
+                            space={rpxToPx(12)}
                             text={(selMode == 'FAST' || selMode == 'EAT') ? t('health.add_meal') : t('health.add_active')} color={getAddColor()}>
                             <IconAdd color="#fff" width={rpxToPx(20)} />
                         </StatusIndicator>
@@ -486,6 +487,7 @@ export default function Schedules() {
                             <StatusIndicator type={StatusType.img}
                                 fontColor={MainColorType.eat}
                                 fontSize={rpxToPx(34)}
+                                space={rpxToPx(12)}
                                 text={t('health.add_meal')} color={MainColorType.eat}>
                                 <IconAdd color="#fff" width={rpxToPx(20)} />
                             </StatusIndicator>
@@ -497,6 +499,7 @@ export default function Schedules() {
                             <StatusIndicator type={StatusType.img}
                                 fontColor={MainColorType.active}
                                 fontSize={rpxToPx(34)}
+                                space={rpxToPx(12)}
                                 text={t('health.add_active')} color={MainColorType.active}>
                                 <IconAdd color="#fff" width={rpxToPx(20)} />
                             </StatusIndicator>

+ 2 - 1
src/_health/pages/schedules_edit.scss

@@ -47,9 +47,10 @@
 
 }
 
-.item_name{
+.item_name2{
     color: #000;
     font-size: 34px;
+    margin-left: 12px;
 }
 
 .edit_item_time{

+ 7 - 23
src/_health/pages/schedules_edit.tsx

@@ -239,7 +239,7 @@ export default function SchedulesEdit() {
     function editName(item, obj, index, i) {
         if ((item.window == 'EAT' || item.window == 'ACTIVE') &&
             !(editIndex.row == index && editIndex.index == i)) {
-            return <View>
+            return <View style={{marginRight:rpxToPx(12)}}>
                 <NewButton type={NewButtonType.link}
                     title="更改"
                     onClick={() => {
@@ -306,11 +306,11 @@ export default function SchedulesEdit() {
                                                 <View className='schedule_item' style={{ width: rpxToPx(700), boxSizing: 'border-box' }}>
                                                     <View style={{ display: 'flex', flexDirection: 'column', justifyContent: 'flex-start', flex: 1 }}>
                                                         <View className='item_left2'>
-                                                            <StatusIndicator type={StatusType.normal} color={getThemeColor(obj.window)} />
+                                                            <StatusIndicator type={StatusType.normal} space={rpxToPx(12)} color={getThemeColor(obj.window)} />
 
                                                             {
                                                                 editIndex.row == index && editIndex.index == i ?
-                                                                    <Input className='item_name' style={{ flex: 1 }}
+                                                                    <Input className='item_name2' style={{ flex: 1 }}
                                                                         value={selItem.title}
                                                                         autoFocus={true}
                                                                         focus={true}
@@ -325,32 +325,16 @@ export default function SchedulesEdit() {
                                                                             temp.title = e.detail.value
                                                                             obj.title = e.detail.value
                                                                             setSelItem(temp)
-                                                                        }} /> : <Text className='item_name'>{obj.title}</Text>
+                                                                        }} /> : <Text className='item_name2'>{obj.title}</Text>
                                                             }
 
-                                                            {/* {
-                                                        (item.window == 'EAT' || item.window == 'ACTIVE') &&
-                                                        !(editIndex.row == index && editIndex.index == i) &&
-                                                        <Image src={require('@assets/_health/edit.png')}
-                                                            className="edit_icon"
-                                                            onClick={(e) => {
-                                                                if (process.env.TARO_ENV == 'weapp') {
-                                                                    e.stopPropagation()
-                                                                }
-                                                                setSelItem(obj)
-                                                                setEditIndex({
-                                                                    row: index,
-                                                                    index: i
-                                                                })
-                                                            }}
-                                                        />
-                                                    } */}
+
                                                         </View>
                                                         {
-                                                            obj.specific_time && <View className="h22" style={{ color: MainColorType.g02, marginLeft: rpxToPx(26) }}>{obj.time}</View>
+                                                            obj.specific_time && <View className="h22" style={{ color: MainColorType.g02, marginLeft: rpxToPx(38) }}>{obj.time}</View>
                                                         }
                                                         {
-                                                            !obj.specific_time && <View className="h22" style={{ color: MainColorType.g02, marginLeft: rpxToPx(26) }}>{obj.time_label}</View>
+                                                            !obj.specific_time && <View className="h22" style={{ color: MainColorType.g02, marginLeft: rpxToPx(38) }}>{obj.time_label}</View>
                                                         }
                                                     </View>
                                                     {

+ 10 - 6
src/_health/pages/streak_calendar.tsx

@@ -260,7 +260,7 @@ export default function StreakCalendar() {
     }
 
     console.log(mode)
-    return <View style={{display:'flex',flexDirection:'column',height:'100vh'}}>
+    return <View style={{ display: 'flex', flexDirection: 'column', height: '100vh' }}>
         <NewHeader type={NewHeaderType.left} title="Calendar" />
         <ScrollView style={{ width: rpxToPx(750), flexDirection: 'row', display: 'flex', height: rpxToPx(72) }} scrollX enableFlex showScrollbar={false}>
             <View style={{ width: rpxToPx(40), flexShrink: 0 }} />
@@ -269,7 +269,8 @@ export default function StreakCalendar() {
                     style={{ backgroundColor: mode == 'EAT' ? getThemeColor('EAT') + '1A' : 'transparent' }}
                 >
                     <Text className={mode == 'EAT' ? 'bold h30' : 'h30'}
-                        style={{ color: mode == 'EAT' ? getThemeColor('EAT') : MainColorType.g01 }}>Eat <Text className="h20" style={{ lineHeight: '20px', verticalAlign: 'text-top' }}>{currentCount('EAT')}</Text></Text>
+                        style={{ color: mode == 'EAT' ? getThemeColor('EAT') : MainColorType.g01, marginRight: 5 }}>Eat </Text>
+                    <Text className="h20" style={{ color: mode == 'EAT' ? getThemeColor('EAT') : MainColorType.g01 }}>{currentCount('EAT')}</Text>
                 </View>
             </NewButton>
 
@@ -278,7 +279,8 @@ export default function StreakCalendar() {
                     style={{ backgroundColor: mode == 'ACTIVE' ? getThemeColor('ACTIVE') + '1A' : 'transparent' }}
                 >
                     <Text className={mode == 'ACTIVE' ? 'bold h30' : 'h30'}
-                        style={{ color: mode == 'ACTIVE' ? getThemeColor('ACTIVE') : MainColorType.g01 }}>Active<Text className="h20" style={{ lineHeight: '20px', verticalAlign: 'text-top' }}> {currentCount('ACTIVE')}</Text></Text>
+                        style={{ color: mode == 'ACTIVE' ? getThemeColor('ACTIVE') : MainColorType.g01, marginRight: 5 }}>Active</Text>
+                    <Text className="h20" style={{ color: mode == 'ACTIVE' ? getThemeColor('ACTIVE') : MainColorType.g01 }}> {currentCount('ACTIVE')}</Text>
                 </View>
             </NewButton>
             <NewButton type={NewButtonType.img} onClick={() => setMode('FAST')}>
@@ -286,7 +288,8 @@ export default function StreakCalendar() {
                     style={{ backgroundColor: mode == 'FAST' ? getThemeColor('FAST') + '1A' : 'transparent' }}
                 >
                     <Text className={mode == 'FAST' ? 'bold h30' : 'h30'}
-                        style={{ color: mode == 'FAST' ? getThemeColor('FAST') : MainColorType.g01 }}>Fast<Text className="h20" style={{ lineHeight: '20px', verticalAlign: 'text-top' }}> {currentCount('FAST')}</Text></Text>
+                        style={{ color: mode == 'FAST' ? getThemeColor('FAST') : MainColorType.g01, marginRight: 5 }}>Fast</Text>
+                    <Text className="h20" style={{ color: mode == 'FAST' ? getThemeColor('FAST') : MainColorType.g01 }}> {currentCount('FAST')}</Text>
                 </View>
             </NewButton>
             <NewButton type={NewButtonType.img} onClick={() => setMode('SLEEP')}>
@@ -294,12 +297,13 @@ export default function StreakCalendar() {
                     style={{ backgroundColor: mode == 'SLEEP' ? getThemeColor('SLEEP') + '1A' : 'transparent' }}
                 >
                     <Text className={mode == 'SLEEP' ? 'bold h30' : 'h30'}
-                        style={{ color: mode == 'SLEEP' ? getThemeColor('SLEEP') : MainColorType.g01 }}>Sleep<Text className="h20" style={{ lineHeight: '20px', verticalAlign: 'text-top' }}> {currentCount('SLEEP')}</Text></Text>
+                        style={{ color: mode == 'SLEEP' ? getThemeColor('SLEEP') : MainColorType.g01, marginRight: 5 }}>Sleep</Text>
+                    <Text className="h20" style={{ color: mode == 'SLEEP' ? getThemeColor('SLEEP') : MainColorType.g01 }}> {currentCount('SLEEP')}</Text>
                 </View>
             </NewButton>
             <View style={{ width: rpxToPx(40), flexShrink: 0 }} />
         </ScrollView>
-        <View style={{ flex: 1, backgroundColor: '#fff',marginTop:rpxToPx(36) }}>
+        <View style={{ flex: 1, backgroundColor: '#fff', marginTop: rpxToPx(36) }}>
             <Calendar year={year} month={month} mode={mode} />
         </View>
 

+ 2 - 1
src/_health/pages/timeline_detail.config.ts

@@ -4,5 +4,6 @@ export default definePageConfig({
         // 'demo':'../../components/demo'
     },
     "navigationBarTitleText": "详情",
-    "disableScroll":true
+    "disableScroll":true,
+    "navigationBarBackgroundColor":"#f5f5f5"
 })

+ 9 - 3
src/_health/pages/timeline_detail.scss

@@ -6,7 +6,13 @@
     display: flex;
     flex-direction: row;
     box-sizing: border-box;
-    min-height: 642px;
+    min-height: 100vh;
+}
+
+html
+page
+{
+    background-color: #fff;
 }
 
 .detail_header_header{
@@ -28,11 +34,11 @@
     font-weight: bold;
     font-size: 34px;
     line-height: 42px;
-    margin-bottom: 12px;
+    margin-bottom: 24px;
 }
 
 .add_note{
-    background-color: #fff;
+    background-color: #f5f5f5;
     position: fixed;
     left: 0;
     right:0;

+ 9 - 4
src/_health/pages/timeline_detail.tsx

@@ -72,9 +72,13 @@ export default function TimelineDetail() {
 
     useEffect(() => {
         Taro.setNavigationBarColor({
-            backgroundColor: showPop ? '#191919' : '#ffffff',
+            backgroundColor: showPop ? '#191919' : '#f5f5f5',
             frontColor: '#000000'
         })
+        Taro.setBackgroundColor({
+            backgroundColor:'#ffffff',
+            backgroundColorBottom:'#ffffff'
+        })
     }, [showPop])
 
     useEffect(() => {
@@ -381,7 +385,7 @@ export default function TimelineDetail() {
     if (!loaded) return <View />
 
 
-    return <View style={{ display: 'flex', flex: 1, flexDirection: 'column' }}>
+    return <View style={{ display: 'flex', flex: 1, flexDirection: 'column',backgroundColor:'#fff' }}>
         <View className="detail_header">
             <Image className="detail_header_header"
                 src={user.avatar}
@@ -487,10 +491,11 @@ export default function TimelineDetail() {
                     </View>
                 } */}
                 {
-                    mediaCount() > 0 && <View style={{ marginTop: rpxToPx(24) }}>
+                    mediaCount() > 0 && <View style={{ marginTop: rpxToPx(17),display:'flex',flexShrink:0 }}>
                         <CoverList imgs={imgList()} count={mediaCount()} />
                     </View>
                 }
+                <View style={{height:rpxToPx(17),flexShrink:0,display:'flex'}}/>
 
                 {
                     isfastsleep=='0' && history && detail.windows && detail.windows.map((item, index) => {
@@ -518,7 +523,7 @@ export default function TimelineDetail() {
                 }
                 {
                     publish && <View style={{ display: 'flex', flexDirection: 'row', height: rpxToPx(60), marginTop: rpxToPx(17), alignItems: 'center', justifyContent: 'space-between' }}>
-                        <Text className="h24 g02">{publish.edited ? '编辑于' : '发布于'}{dayjs(publish.timestamp).format('MM-DD HH:mm')}</Text>
+                        <Text className="h24 g02">{publish.edited ? '编辑于' : '发布于'}{dayjs(publish.timestamp).format('M月D日 HH:mm')}</Text>
                         <NewButton
                             type={NewButtonType.more}
                             onClick={tapMore}

+ 1 - 0
src/context/locales/en.js

@@ -893,6 +893,7 @@ export default {
         live_now:'Live Now',
         next_up:'Up Next',
         in_progress:'In Progress',
+        longfast_wait:'Awaiting Start',
 
         fasting_log:'Fasting Log',
         meal_log:'Meal Log',

+ 1 - 0
src/context/locales/zh.js

@@ -892,6 +892,7 @@ export default {
         live_now:'正在进行',
         next_up:'接下来',
         in_progress:'进行中',
+        longfast_wait:'待开始',
 
         fasting_log:'断食记录',
         meal_log:'饮食记录',

+ 2 - 1
src/features/health/HistoryItem.tsx

@@ -264,6 +264,7 @@ export default function HistoryItem(props: {
         }
 
     }
+
     return <View className="history_item2" onClick={goDetail}>
         <View className="cell_date" >
             <View className="h42 bold" style={{ lineHeight: rpxToPx(60) + 'px' }}>{historyDate()}</View>
@@ -371,7 +372,7 @@ export default function HistoryItem(props: {
             } */}
 
             {
-                props.type != 'FAST,SLEEP' && props.data.windows.map((item, index) => {
+                props.type != 'FAST,SLEEP' && props.mode!='EAT' && props.mode!='ACTIVE' && props.data.windows.map((item, index) => {
                     return <TargetProgress key={index} showLine={index < props.data.windows.length - 1}
                         color={getThemeColor(item.window)}
                         showRing={props.fast_type != 'LF'}

+ 1 - 0
src/features/health/MainConsole.scss

@@ -139,6 +139,7 @@
   font-size: 24px;
   line-height: 36px;
   height: 36px;
+  margin-top: 2px;
 }
 
 .main_summary_status {

+ 1 - 1
src/features/health/MainConsole.tsx

@@ -617,7 +617,7 @@ export default function MainConsole(props: { type: WindowType }) {
                     // </Swiper>
                     return <OnBoard title={list[0].title}
                         desc={list[0].time_label}
-                        btnTitle="Action"
+                        btnTitle="Create My Activities"
                         onClick={() => {
                             if (!user.isLogin) {
                                 jumpPage('/pages/account/ChooseAuth', 'ChooseAuth', navigation)

+ 1 - 1
src/pages/account/Album.scss

@@ -39,7 +39,7 @@
     border-radius: 18px;
     display: flex;
     flex-direction: row;
-    // justify-content: center;
+    justify-content: center;
     align-items: center;
     padding-left: 48px;
     padding-right: 48px;

+ 10 - 8
src/pages/account/Album.tsx

@@ -125,12 +125,12 @@ export default function Album() {
 
         if (e.detail.scrollTop > 60) {
             Taro.setNavigationBarTitle({
-                title:'Album'
+                title: 'Album'
             })
         }
         else {
             Taro.setNavigationBarTitle({
-                title:''
+                title: ''
             })
         }
 
@@ -157,7 +157,7 @@ export default function Album() {
 
     function historyYear(index) {
         var showDate = false;
-        var dateStr2:any = ''
+        var dateStr2: any = ''
         if (index == 0) {
             var currentDate = global.language == 'en' ? dayjs(medias[index].timestamp).format('YYYY') : dayjs(medias[index].timestamp).format('YYYY年')
             var now = global.language == 'en' ? dayjs().format('YYYY') : dayjs().format('YYYY年')
@@ -228,7 +228,7 @@ export default function Album() {
         }
         return dayjs(item.timestamp).format('MMM')
     }
-    
+
 
     return <StickyDateList onRefresherRefresh={() => {
         setIsPulling(true)
@@ -252,7 +252,8 @@ export default function Album() {
                         style={{ backgroundColor: window == '' ? '#B2B2B21A' : 'transparent' }}
                     >
                         <Text className={window == '' ? 'bold h30' : 'h30'}
-                            style={{ color: window == '' ? '#000' : MainColorType.g01 }}>全部 <Text className="h20" style={{ lineHeight: '20px', verticalAlign: 'middle' }}>{stat.total}</Text></Text>
+                            style={{ color: window == '' ? '#000' : MainColorType.g01,marginRight:5 }}>全部 </Text>
+                        <Text className="h20" style={{ color: window == '' ? '#000' : MainColorType.g01 }}>{stat.total}</Text>
                     </View>
                 </NewButton>
 
@@ -267,7 +268,8 @@ export default function Album() {
                                     style={{ backgroundColor: window == item.window ? getThemeColor(item.window) + '1A' : 'transparent' }}
                                 >
                                     <Text className={window == item.window ? 'bold h30' : 'h30'}
-                                        style={{ color: window == item.window ? getThemeColor(item.window) : MainColorType.g01 }}>{item.window} <Text className="h20" style={{ lineHeight: '20px', verticalAlign: 'middle' }}>{item.image_count}</Text></Text>
+                                        style={{ color: window == item.window ? getThemeColor(item.window) : MainColorType.g01,marginRight:5  }}>{item.window} </Text>
+                                    <Text className="h20" style={{ color: window == item.window ? getThemeColor(item.window) : MainColorType.g01 }}>{' ' + item.image_count}</Text>
                                 </View>
                             </NewButton>
                         </View>
@@ -291,7 +293,7 @@ export default function Album() {
                         {
                             historyYear(index)
                         }
-                        <View className="history_item2" style={{paddingRight:rpxToPx(30)}}>
+                        <View className="history_item2" style={{ paddingRight: rpxToPx(30) }}>
                             <View className="cell_date" >
                                 <View className="h42 bold" style={{ lineHeight: rpxToPx(60) + 'px' }}>{historyDate(item, index)}</View>
                                 <View className="h24 bold" style={{ marginLeft: rpxToPx(6), marginTop: rpxToPx(13), lineHeight: rpxToPx(47) + 'px' }}>{historyMonth(item, index)}</View>
@@ -320,7 +322,7 @@ export default function Album() {
                     </View>
                 })
             }
-            <View style={{height:rpxToPx(40),flexShrink:0,backgroundColor:'#fff'}}/>
+            <View style={{ height: rpxToPx(40), flexShrink: 0, backgroundColor: '#fff' }} />
             <ListFooter noMore={(medias.length > 0) && (total == medias.length)} />
         </View>
     </StickyDateList>

+ 6 - 2
src/pages/account/Journal.tsx

@@ -169,13 +169,17 @@ export default function Journal() {
                 // flex: 1,
                 overflow: 'hidden',
                 backgroundColor: array.length == 0 ? '#fafafa' : 'transparent',
-                padding: array.length == 0 ? rpxToPx(20) : 0,
+                paddingLeft: array.length == 0 ? rpxToPx(20) : 0,
+                paddingRight: array.length == 0 ? rpxToPx(20) : 0,
+                paddingTop: array.length == 0 ? rpxToPx(12) : 0,
+                paddingBottom: array.length == 0 ? rpxToPx(12) : 0,
                 marginRight: rpxToPx(40),
                 flexShrink:0
             }}>
                 {
 
                     window.events.map((item2, index2) => {
+                        if (item2.moments && item2.moments[0].type=='PIC') return <View key={index2*1000}/>
                         return <TimeTitleDesc
                             key={index2 * 1000}
                             className="line1"
@@ -278,7 +282,7 @@ export default function Journal() {
         loadMore={() => {
             more()
         }}
-    ><View style={{ display: 'flex', flexDirection: 'column',minHeight:rpxToPx(464),backgroundColor:'#fff' }}>
+    ><View style={{ display: 'flex', flexDirection: 'column',minHeight:rpxToPx(464),backgroundColor:'#f5f5f5' }}>
             <NewHeader type={NewHeaderType.left} title="Journal" />
             {
                 journals.map((item, index) => {

+ 9 - 0
src/pages/account/JournalDetail.config.ts

@@ -0,0 +1,9 @@
+export default definePageConfig({
+    usingComponents:{
+      // 'ec-canvas': '../../lib/ec-canvas/ec-canvas',
+      // 'demo':'../../components/demo'
+    },
+    "navigationBarTitleText":"",
+    "navigationBarBackgroundColor":"#f5f5f5",
+    "backgroundColor":"#ffffff"
+  })

+ 9 - 0
src/pages/account/JournalDetail.scss

@@ -6,6 +6,14 @@
     padding-right: 40px;
     padding-bottom: 40px;
     padding-top: 40px;
+    min-height: 100vh;
+}
+
+page
+html
+body{
+    height: 100%;
+    background-color: #fff;
 }
 
 .header_avatar {
@@ -25,6 +33,7 @@
 .journal_nickname {
     display: flex;
     font-size: 34px;
+    line-height: 42px;
     font-weight: bold;
     color: #5C7099;
     font-weight: bold;

+ 5 - 5
src/pages/account/JournalDetail.tsx

@@ -210,12 +210,12 @@ export default function JournalDetail() {
 
 
 
-    return <View>
+    return <View style={{backgroundColor:'#fff'}}>
         <View className="journal_detail">
             <Image className="header_avatar" src={user.avatar} mode="aspectFill" />
             <View className="jounal_content">
                 <Text className="journal_nickname">{user.nickname}</Text>
-                <View style={{ flexDirection: 'column', display: 'flex', marginTop: rpxToPx(16) }}>
+                <View style={{ flexDirection: 'column', display: 'flex', marginTop: rpxToPx(24) }}>
                     {
                         events.map((item, index) => {
                             return eventList(item, index)
@@ -260,7 +260,7 @@ export default function JournalDetail() {
                 </View>
 
 
-                <View className="img_container" style={{ marginTop: -rpxToPx(24) }}>
+                <View className="img_container" style={{ marginTop: -rpxToPx(24),marginBottom:rpxToPx(17) }}>
                     <CoverList
                         imgs={imgs}
                         count={imgs.length}
@@ -276,7 +276,7 @@ export default function JournalDetail() {
 
                 {
                     data.windows.map((item, index) => {
-                        return <TargetProgress key={index} showLine={index < data.windows.length - 1}
+                        return <TargetProgress key={index} showLine={true}
                             color={getThemeColor(item.window)}
                             showRing={true}
                             desc={item.description}
@@ -290,7 +290,7 @@ export default function JournalDetail() {
                     })
                 }
 
-                <Text className="h24" style={{ color: MainColorType.g02,marginTop:rpxToPx(13) }}>发布于{dayjs(data.publish_timestamp).format('MM-DD HH:mm')}</Text>
+                <Text className="h24" style={{ color: MainColorType.g02,marginTop:rpxToPx(17),lineHeight:rpxToPx(60)+'px' }}>发布于{dayjs(data.publish_timestamp).format('M月D日 HH:mm')}</Text>
             </View>
 
 

+ 8 - 1
src/pages/account/PhotoWall.tsx

@@ -1,6 +1,6 @@
 import { View, Image } from "@tarojs/components";
 import './PhotoWall.scss'
-import Taro, { useReachBottom, useRouter } from "@tarojs/taro";
+import Taro, { usePullDownRefresh, useReachBottom, useRouter } from "@tarojs/taro";
 import { useEffect, useState } from "react";
 import NewTimePicker from "@/_health/base/new_timepicker";
 import { getAlbums } from "@/services/health";
@@ -56,6 +56,10 @@ export default function PhotoWall() {
         // getAlbumsData(router.params.window)
     }, [])
 
+    usePullDownRefresh(() => {
+        refresh()
+    })
+
     function refresh() {
         getList(1)
     }
@@ -76,6 +80,7 @@ export default function PhotoWall() {
 
     function getList(page) {
         if (loading) return
+
         setPageIndex(page)
         setLoading(true)
         if (page == 1)
@@ -100,6 +105,8 @@ export default function PhotoWall() {
             } else {
                 setList(list.concat(array))
             }
+
+            Taro.stopPullDownRefresh()
             // setMedias((res as any).data)
         })
     }

+ 1 - 1
src/utils/time_format.ts

@@ -855,7 +855,7 @@ export class TimeFormatter {
     const endDate = date2.startOf('day');
     const days = endDate.diff(startDate, 'day')
     if (days > 0)
-      return '+' + days;
+      return '+' + days+(global.language=='en'?'d':'天');
     return ''
   }