Leon 2 년 전
부모
커밋
0986754261
53개의 변경된 파일305개의 추가작업 그리고 156개의 파일을 삭제
  1. 18 21
      src/app.config.ts
  2. 2 2
      src/components/LimitPickers.tsx
  3. 6 0
      src/context/locales/en.js
  4. 21 0
      src/context/locales/layout.scss
  5. 81 0
      src/context/locales/layout.tsx
  6. 7 0
      src/context/locales/zh.js
  7. 1 0
      src/custom-tab-bar/index.scss
  8. 4 4
      src/custom-tab-bar/index.tsx
  9. 1 1
      src/features/auth/components/CreatePassword.tsx
  10. 1 1
      src/features/auth/components/login.tsx
  11. 25 13
      src/features/trackSomething/components/Activity.tsx
  12. 3 32
      src/features/trackSomething/components/ActivityHistory.tsx
  13. 1 1
      src/features/trackSomething/components/Metric.scss
  14. 15 10
      src/features/trackSomething/components/Metric.tsx
  15. 1 1
      src/features/trackSomething/components/MetricItem.scss
  16. 1 1
      src/features/trackSomething/components/Metric_backup.tsx
  17. 3 3
      src/features/trackSomething/components/activity_backup.tsx
  18. 1 1
      src/features/trackTimeDuration/components/ChooseScenario.tsx
  19. 1 1
      src/features/trackTimeDuration/components/Console.tsx
  20. 3 3
      src/features/trackTimeDuration/components/More.tsx
  21. 2 2
      src/features/trackTimeDuration/components/Schedule.tsx
  22. 1 1
      src/features/trackTimeDuration/components/SetSchedule.tsx
  23. 1 1
      src/features/trackTimeDuration/components/SetSchedule_backup.tsx
  24. 0 11
      src/pages/Metric.tsx
  25. 0 3
      src/pages/RecordsHistory.config.ts
  26. 0 0
      src/pages/account/Auth.tsx
  27. 0 0
      src/pages/account/ChooseAuth.scss
  28. 3 3
      src/pages/account/ChooseAuth.tsx
  29. 0 0
      src/pages/account/EditPage.tsx
  30. 2 2
      src/pages/account/Login.tsx
  31. 0 0
      src/pages/account/Profile.scss
  32. 5 5
      src/pages/account/Profile.tsx
  33. 0 0
      src/pages/account/ProfileSetting.scss
  34. 1 1
      src/pages/account/ProfileSetting.tsx
  35. 0 0
      src/pages/account/Setting.tsx
  36. 0 0
      src/pages/account/Settings.tsx
  37. 0 0
      src/pages/account/Welcome.tsx
  38. 2 1
      src/pages/activity/Activity.config.ts
  39. 0 0
      src/pages/activity/Activity.scss
  40. 1 2
      src/pages/activity/Activity.tsx
  41. 0 0
      src/pages/clock/ChooseScenario.tsx
  42. 0 0
      src/pages/clock/Clock.scss
  43. 3 3
      src/pages/clock/Clock.tsx
  44. 0 0
      src/pages/clock/SetSchedule.config.ts
  45. 0 0
      src/pages/clock/SetSchedule.tsx
  46. 0 0
      src/pages/common/H5.tsx
  47. 4 0
      src/pages/common/RecordsHistory.config.ts
  48. 58 22
      src/pages/common/RecordsHistory.tsx
  49. 1 1
      src/pages/index/index.tsx
  50. 2 1
      src/pages/metric/Metric.config.ts
  51. 9 0
      src/pages/metric/Metric.tsx
  52. 2 2
      src/pages/rn/RNMain.tsx
  53. 12 0
      src/utils/types.ts

+ 18 - 21
src/app.config.ts

@@ -1,24 +1,21 @@
 const appConfig = defineAppConfig({
   pages: [
-    'pages/Clock',
+    'pages/clock/Clock',
     'pages/demo',
-    
-    
-    
     'pages/index/index',
-    'pages/Login',
-    'pages/Auth',
-    'pages/ChooseAuth',
-    'pages/ChooseScenario',
-    'pages/SetSchedule',
-    'pages/H5',
-    'pages/Profile',
-    'pages/Metric',
-    'pages/Activity',
-    'pages/RecordsHistory',
-    'pages/ProfileSetting',
-    'pages/Setting',
-    'pages/EditPage',
+    'pages/account/Login',
+    'pages/account/Auth',
+    'pages/account/ChooseAuth',
+    'pages/clock/ChooseScenario',
+    'pages/clock/SetSchedule',
+    'pages/common/H5',
+    'pages/account/Profile',
+    'pages/metric/Metric',
+    'pages/activity/Activity',
+    'pages/common/RecordsHistory',
+    'pages/account/ProfileSetting',
+    'pages/account/Setting',
+    'pages/account/EditPage',
   ],
   subPackages: [
     {
@@ -64,19 +61,19 @@ process.env.TARO_ENV === 'weapp' && (appConfig.tabBar = {
   custom: true,
   list: [
     {
-      pagePath: 'pages/Clock',
+      pagePath: 'pages/clock/Clock',
       text: '首页',
     },
     {
-      pagePath: 'pages/Metric',
+      pagePath: 'pages/metric/Metric',
       text: '第二页',
     },
     {
-      pagePath: 'pages/Activity',
+      pagePath: 'pages/activity/Activity',
       text: '第三页',
     },
     {
-      pagePath: 'pages/Profile',
+      pagePath: 'pages/account/Profile',
       text: '第四页',
     }
   ]

+ 2 - 2
src/components/LimitPickers.tsx

@@ -236,9 +236,9 @@ const Component = forwardRef((props: {
                 </PickerViewColumn>
             </PickerView>
 
-            <View className="point_bg1 ">
+            {/* <View className="point_bg1 ">
                 <Text style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>:</Text>
-            </View>
+            </View> */}
         </View>
         <View className='modal_operate'>
             <View className='modal_btn' style={{ backgroundColor: color + alpha }} onClick={cancel}>

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

@@ -31,6 +31,12 @@ export default {
         set_goal:{
             title:'',
             btn_done:''
+        },
+        activity:{
+            title:'Activity',
+        },
+        metric:{
+            title:'Metric',
         }
     },
     feature:{

+ 21 - 0
src/context/locales/layout.scss

@@ -0,0 +1,21 @@
+
+.layout_container{
+    display: flex;
+    flex: 1;
+    height: 100vh;
+    flex-direction: column;
+}
+.layout_title{
+    color: #fff;
+    margin-left: 46px;
+    font-size: 72px;
+    line-height: 72px;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    font-weight: 500;
+}
+
+.grid_bg{
+    margin-left: 46px;
+    margin-right: 46px;
+}

+ 81 - 0
src/context/locales/layout.tsx

@@ -0,0 +1,81 @@
+import { ScrollView, View, Text } from "@tarojs/components";
+import './layout.scss'
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
+import { useEffect, useState } from "react";
+import Taro from "@tarojs/taro";
+
+
+
+
+export default function Layout(props: {
+    children: React.ReactNode,
+    type: TemplateType,
+    refresh?: Function,
+    more?: Function,
+    triggered?: boolean,
+    title?: string,
+    titleShowStyle: NaviBarTitleShowType
+}) {
+    const { children, type, triggered } = props;
+    const [showTitle, setShowTitle] = useState(props.titleShowStyle == NaviBarTitleShowType.alwayShow)
+
+    useEffect(() => {
+        Taro.setNavigationBarTitle({
+            title: showTitle ? props.title ? props.title : '' : ''
+        })
+    }, [showTitle])
+
+    function onScroll(e) {
+        if (props.titleShowStyle == NaviBarTitleShowType.scrollToShow) {
+            if (e.detail.scrollTop > 80) {
+                setShowTitle(true)
+            }
+            else {
+                setShowTitle(false)
+            }
+        }
+
+    }
+
+
+    switch (type) {
+        case TemplateType.list:
+            return <ScrollView className="layout_container"
+                onScroll={onScroll}
+                scrollY refresherEnabled={true}
+                refresherThreshold={100} refresherBackground="#000"
+                refresherDefaultStyle="white"
+                onRefresherRefresh={() => { props.refresh!() }}
+                upperThreshold={50}
+                onScrollToLower={() => { props.more!() }}
+                refresherTriggered={triggered}>
+                {
+                    props.title && <Text className='layout_title'>{props.title}</Text>
+                }
+                {children}
+            </ScrollView>
+        case TemplateType.grid:
+            return <ScrollView className="layout_container"
+                enableFlex={true}
+                onScroll={onScroll}
+                scrollY refresherEnabled={true}
+                refresherThreshold={100} refresherBackground="#000"
+                refresherDefaultStyle="white"
+                onRefresherRefresh={() => { props.refresh!() }}
+                upperThreshold={50}
+                onScrollToLower={() => { props.more!() }}
+                refresherTriggered={triggered}>
+                {
+                    props.title && <Text className='layout_title'>{props.title}</Text>
+                }
+                <View className="grid_bg">
+                    {children}
+                </View>
+            </ScrollView>
+        case TemplateType.flex:
+            return <View className='flex'>
+                {children}
+            </View>
+    }
+    return <View />
+}

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

@@ -28,6 +28,13 @@ export default {
             sleep:'睡眠',
             fast_sleep:'断食睡眠',
         },
+        activity:{
+            title:'运动',
+        },
+        metric:{
+            title:'指标',
+        }
+
     },
     feature:{
         tabbar:{

+ 1 - 0
src/custom-tab-bar/index.scss

@@ -13,6 +13,7 @@
     padding-bottom: constant(safe-area-inset-bottom);
     /* 兼容 iOS < 11.2 */
     padding-bottom: env(safe-area-inset-bottom);
+    z-index: 100;
 }
 
 .tabbar-item{

+ 4 - 4
src/custom-tab-bar/index.tsx

@@ -10,22 +10,22 @@ export default function TabBar() {
         switch (index) {
             case 0:
                 Taro.switchTab({
-                    url: '/pages/Clock'
+                    url: '/pages/clock/Clock'
                 })
                 break;
             case 1:
                 Taro.switchTab({
-                    url: '/pages/Metric'
+                    url: '/pages/metric/Metric'
                 })
                 break;
             case 2:
                 Taro.switchTab({
-                    url: '/pages/Activity'
+                    url: '/pages/activity/Activity'
                 })
                 break;
             case 3:
                 Taro.switchTab({
-                    url: '/pages/Profile'
+                    url: '/pages/account/Profile'
                 })
                 break;
         }

+ 1 - 1
src/features/auth/components/CreatePassword.tsx

@@ -36,7 +36,7 @@ export default function Component(prop: { name: string, email: string }) {
         delta: 2
       })
       Taro.redirectTo({
-        url: '/pages/ChooseScenario'
+        url: '/pages/clock/ChooseScenario'
       })
     }
   }, [user.isLogin])

+ 1 - 1
src/features/auth/components/login.tsx

@@ -31,7 +31,7 @@ export default function Login(props: { register: () => void }) {
                     delta: 1
                 })
                 Taro.redirectTo({
-                    url: '/pages/ChooseScenario'
+                    url: '/pages/clock/ChooseScenario'
                 })
             }
 

+ 25 - 13
src/features/trackSomething/components/Activity.tsx

@@ -1,4 +1,4 @@
-import { View, Text,ScrollView } from "@tarojs/components";
+import { View, Text, ScrollView } from "@tarojs/components";
 import './Metric.scss'
 import { setAuth } from "../hooks/werun";
 import { useDidShow, useReady } from "@tarojs/taro";
@@ -8,12 +8,16 @@ import Taro from "@tarojs/taro";
 import { activityCards, uploadSteps } from "@/services/trackSomething";
 import { TimeFormatter } from "@/utils/time_format";
 import MetricItem from "./MetricItem";
+import Layout from '@/context/locales/layout'
 import NoData from "@/components/NoData";
 import { ResultType, checkFail, checkRetry, checkStart, checkSuccess, resetStatus, setResult } from "@/store/action_results";
 import { uploadSessionKey } from "@/services/common";
 import RequestType, { thirdPartRequest } from "@/services/thirdPartRequest";
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
+import { useTranslation } from "react-i18next";
 
 export default function Component(props: any) {
+    const { t } = useTranslation()
     const user = useSelector((state: any) => state.user);
     const checkResult = useSelector((state: any) => state.checkResult);
     const [allowRun, setAllowRun] = useState(false)
@@ -78,7 +82,7 @@ export default function Component(props: any) {
             }
         }).catch(e => {
             setTriggered(false)
-            if (list.length==0){
+            if (list.length == 0) {
                 setErrorPage(true)
             }
             // console.log('请求超时')
@@ -121,7 +125,7 @@ export default function Component(props: any) {
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/account/ChooseAuth'
             })
         }
     }
@@ -244,18 +248,18 @@ export default function Component(props: any) {
 
 
 
-    function goDetail() {
+    function goDetail(item) {
         if (user.isLogin) {
             if (!allowRun) {
                 return;
             }
             Taro.navigateTo({
-                url: '/pages/RecordsHistory?type=activity&refreshList=getCards'
+                url: '/pages/common/RecordsHistory?type=activity&refreshList=getCards&title='+item.name
             })
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/account/ChooseAuth'
             })
         }
 
@@ -371,7 +375,7 @@ export default function Component(props: any) {
                         btnText={btnTitle}
                         isDisabled={!isEnable}
                         themeColor={item.theme_color}
-                        onClickDetail={goDetail}
+                        onClickDetail={()=>{goDetail(item)}}
                         showBadge={showErrorBadge && checkResult.type == 'idle'}
                         onClick={() => {
                             tapBtn()
@@ -383,12 +387,20 @@ export default function Component(props: any) {
         </View>
     }
 
-    return <ScrollView style={{ backgroundColor: '#000',flex:1 }} scrollY refresherEnabled={true}
-        refresherThreshold={100} refresherBackground="#000"
-        refresherDefaultStyle="white" onRefresherRefresh={getCards}
-        refresherTriggered={triggered}>
-        {showErrorPage ? <NoData refresh={() => { getCards() }} /> : detail()}
-    </ScrollView>
+    // return <ScrollView style={{ backgroundColor: '#000',flex:1 }} scrollY refresherEnabled={true}
+    //     refresherThreshold={100} refresherBackground="#000"
+    //     refresherDefaultStyle="white" onRefresherRefresh={getCards}
+    //     refresherTriggered={triggered}>
+    //     {showErrorPage ? <NoData refresh={() => { getCards() }} /> : detail()}
+    // </ScrollView>
     // return showErrorPage ? <NoData refresh={() => { getCards() }} /> : detail()
+    return <Layout children={showErrorPage ? <NoData refresh={() => { getCards() }} /> : detail()}
+        title={t('page.activity.title')}
+        type={TemplateType.grid}
+        refresh={() => { getCards() }}
+        triggered={triggered}
+        more={() => { getCards() }}
+        titleShowStyle={NaviBarTitleShowType.scrollToShow}
+    />
 
 }

+ 3 - 32
src/features/trackSomething/components/ActivityHistory.tsx

@@ -33,14 +33,14 @@ export default function Component(props: { records: any[] }) {
     function clear(){
 
     }
+    
     return <View style={{ display: 'flex', flexDirection: 'column' }}>
-        <View className="operate_view">
+        {/* <View className="operate_view">
             <Text>时间倒序</Text>
             <Text style={{ marginLeft: 5, marginRight: 5 }}> | </Text>
             <Text>时间正序</Text>
             <View style={{flex:1}}/>
-            {/* <Text onClick={clear}>删除全部</Text> */}
-        </View>
+        </View> */}
         {
             (props.records as any).map(item => {
                 return <View style={{ display: 'flex', flexDirection: 'column' }}>
@@ -62,34 +62,5 @@ export default function Component(props: { records: any[] }) {
                 </View>
             })
         }
-
-
-        {/* <View className="operate_item">
-            <View className="status_bg">
-                <Text className="status_text">总计</Text>
-            </View>
-            <Text className="value">8888</Text>
-            <Text className="unit">步</Text>
-            <View style={{ flex: 1 }} />
-            <Text className="time">刚刚</Text>
-        </View>
-        <View className="operate_item">
-            <View className="status_bg">
-                <Text className="status_text">总计</Text>
-            </View>
-            <Text className="value">8888</Text>
-            <Text className="unit">步</Text>
-            <View style={{ flex: 1 }} />
-            <Text className="time">刚刚</Text>
-        </View>
-        <View className="operate_item">
-            <View className="status_bg">
-                <Text className="status_text">总计</Text>
-            </View>
-            <Text className="value">8888</Text>
-            <Text className="unit">步</Text>
-            <View style={{ flex: 1 }} />
-            <Text className="time">刚刚</Text>
-        </View> */}
     </View>
 }

+ 1 - 1
src/features/trackSomething/components/Metric.scss

@@ -2,7 +2,7 @@
     display: flex;
     flex-direction: row;
     flex-wrap: wrap;
-    justify-content: space-around;
+    justify-content: space-between;
 }
 
 .space_width{

+ 15 - 10
src/features/trackSomething/components/Metric.tsx

@@ -15,8 +15,12 @@ import LimitPickers from "@/components/LimitPickers";
 import SlidngScale from "@/components/SlidngScale";
 import NoData from "@/components/NoData";
 import { alphaToHex } from "@/utils/tools";
+import Layout from "@/context/locales/layout";
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
+import { useTranslation } from "react-i18next";
 
 export default function Component(props: any) {
+    const { t } = useTranslation()
     const user = useSelector((state: any) => state.user);
     const [list, setList] = useState([])
 
@@ -92,12 +96,12 @@ export default function Component(props: any) {
                 return
             }
             Taro.navigateTo({
-                url: '/pages/RecordsHistory?type=metric&refreshList=getCards&code=' + item.code
+                url: '/pages/common/RecordsHistory?type=metric&refreshList=getCards&code=' + item.code+`&title=${item.name}`
             })
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/account/ChooseAuth'
             })
         }
     }
@@ -115,7 +119,7 @@ export default function Component(props: any) {
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/account/ChooseAuth'
             })
         }
     }
@@ -308,13 +312,14 @@ export default function Component(props: any) {
     // return showErrorPage ? <NoData refresh={() => { getCards() }} /> : detail()
 
     return <View style={{ display: 'flex', flex: 1, height: '100%' }}>
-        <ScrollView style={{ backgroundColor: '#000' }} scrollY refresherEnabled={true}
-            refresherThreshold={100} refresherBackground="#000"
-            refresherDefaultStyle="white" onRefresherRefresh={getCards}
-            refresherTriggered={triggered}>
-            {showErrorPage ? <NoData refresh={() => { getCards() }} /> : detail()}
-            <View style={{ height: 100 }} />
-        </ScrollView>
+        <Layout children={showErrorPage ? <NoData refresh={() => { getCards() }} /> : detail()}
+            title={t('page.metric.title')}
+            type={TemplateType.grid}
+            refresh={() => { getCards() }}
+            triggered={triggered}
+            more={() => { getCards() }}
+            titleShowStyle={NaviBarTitleShowType.scrollToShow}
+        />
         {
             isModalOpen && <Modal dismiss={closeModal} title={(metricItem as any).name}
                 themeColor={(metricItem as any).theme_color}

+ 1 - 1
src/features/trackSomething/components/MetricItem.scss

@@ -9,7 +9,7 @@
     padding-bottom: 24px;
     background-color: #1c1c1c;
     box-sizing: border-box;
-    margin-bottom: 30px;
+    margin-top: 20px;
 }
 
 .metric_title {

+ 1 - 1
src/features/trackSomething/components/Metric_backup.tsx

@@ -68,7 +68,7 @@ export default function Component(props: any) {
     function goDetail(item) {
         if (user.isLogin) {
             Taro.navigateTo({
-                url: '/pages/RecordsHistory?type=metric&code=' + item.code
+                url: '/pages/common/RecordsHistory?type=metric&code=' + item.code
             })
         }
         else {

+ 3 - 3
src/features/trackSomething/components/activity_backup.tsx

@@ -117,7 +117,7 @@ export default function Component(props: any) {
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/clock/ChooseAuth'
             })
         }
     }
@@ -231,12 +231,12 @@ export default function Component(props: any) {
                 return;
             }
             Taro.navigateTo({
-                url: '/pages/RecordsHistory?type=activity'
+                url: '/pages/common/RecordsHistory?type=activity'
             })
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/account/ChooseAuth'
             })
         }
 

+ 1 - 1
src/features/trackTimeDuration/components/ChooseScenario.tsx

@@ -59,7 +59,7 @@ export default function Component() {
 
     function next() {
         Taro.navigateTo({
-            url: '/pages/SetSchedule'
+            url: '/pages/clock/SetSchedule'
         })
     }
 

+ 1 - 1
src/features/trackTimeDuration/components/Console.tsx

@@ -287,7 +287,7 @@ export default function Component() {
 
     function login() {
         Taro.navigateTo({
-            url: '/pages/ChooseAuth'
+            url: '/pages/account/ChooseAuth'
         })
     }
 

+ 3 - 3
src/features/trackTimeDuration/components/More.tsx

@@ -33,7 +33,7 @@ const Component = forwardRef((props, ref) => {
 
     function login() {
         Taro.navigateTo({
-            url: '/pages/ChooseAuth'
+            url: '/pages/account/ChooseAuth'
         })
     }
 
@@ -54,12 +54,12 @@ const Component = forwardRef((props, ref) => {
                             dispatch(setStep('fast'))
                         }
                         Taro.navigateTo({
-                            url: '/pages/SetSchedule'
+                            url: '/pages/clock/SetSchedule'
                         })
                         break;
                     case 1:
                         Taro.navigateTo({
-                            url: '/pages/ChooseScenario'
+                            url: '/pages/clock/ChooseScenario'
                         })
                         break;
                 }

+ 2 - 2
src/features/trackTimeDuration/components/Schedule.tsx

@@ -68,7 +68,7 @@ export default function Component(props: { type?: string, data?: any, delSuccess
 
     function editSchedule() {
         Taro.navigateTo({
-            url: '/pages/SetSchedule'
+            url: '/pages/clock/SetSchedule'
         })
     }
 
@@ -393,7 +393,7 @@ export default function Component(props: { type?: string, data?: any, delSuccess
     function all() {
         if (props.type == 'latest') {
             Taro.navigateTo({
-                url: '/pages/RecordsHistory?type=time'
+                url: '/pages/common/RecordsHistory?type=time&title=Time'
             })
         }
     }

+ 1 - 1
src/features/trackTimeDuration/components/SetSchedule.tsx

@@ -121,7 +121,7 @@ export default function Component() {
         saveTempCache(startTime, endTime)
 
         Taro.navigateTo({
-          url: '/pages/SetSchedule'
+          url: '/pages/clock/SetSchedule'
         })
       }
       else {

+ 1 - 1
src/features/trackTimeDuration/components/SetSchedule_backup.tsx

@@ -90,7 +90,7 @@ export default function Component() {
         }
 
         Taro.navigateTo({
-          url: '/pages/SetSchedule'
+          url: '/pages/clock/SetSchedule'
         })
       }
       else {

+ 0 - 11
src/pages/Metric.tsx

@@ -1,11 +0,0 @@
-import { View, Text} from "@tarojs/components";
-import Metric from "@/features/trackSomething/components/Metric";
-
-export default function Page() {
-
-    return <View className="container">
-        <Text>Metric Page</Text>
-            <Metric />
-            <View style={{height:100,flexShrink:0,display:'flex'}}/>
-        </View>
-}

+ 0 - 3
src/pages/RecordsHistory.config.ts

@@ -1,3 +0,0 @@
-export default definePageConfig({
-    "disableScroll": true
-})

+ 0 - 0
src/pages/Auth.tsx → src/pages/account/Auth.tsx


+ 0 - 0
src/pages/ChooseAuth.scss → src/pages/account/ChooseAuth.scss


+ 3 - 3
src/pages/ChooseAuth.tsx → src/pages/account/ChooseAuth.tsx

@@ -2,7 +2,7 @@ import { View } from "@tarojs/components";
 import Buttons from '@components/Buttons'
 import Texts from '@components/Texts'
 import './ChooseAuth.scss'
-import { ButtonType, ComponentStatus, TextType } from "../utils/types";
+import { ButtonType, ComponentStatus, TextType } from "../../utils/types";
 import Taro, { useReady } from "@tarojs/taro";
 import { useDispatch, useSelector } from "react-redux";
 import { useEffect, useState } from "react";
@@ -23,7 +23,7 @@ export default function Page() {
             }
             else {
                 Taro.redirectTo({
-                    url: '/pages/ChooseScenario'
+                    url: '/pages/clock/ChooseScenario'
                 })
             }
 
@@ -57,7 +57,7 @@ export default function Page() {
 
     function createAccount() {
         Taro.navigateTo({
-            url: '/pages/Auth'
+            url: '/pages/account/Auth'
         })
     }
 

+ 0 - 0
src/pages/EditPage.tsx → src/pages/account/EditPage.tsx


+ 2 - 2
src/pages/Login.tsx → src/pages/account/Login.tsx

@@ -2,7 +2,7 @@ import { View,Text } from "@tarojs/components";
 import Buttons from "@components/Buttons";
 import SingleSelect from "@components/SingleSelect";
 import Rings from '@components/Rings';
-import { ButtonType,ComponentStatus } from "../utils/types";
+import { ButtonType,ComponentStatus } from "../../utils/types";
 import Taro from "@tarojs/taro";
 
 export default function Login(){
@@ -14,7 +14,7 @@ export default function Login(){
     function goAuth(){
         // console.log('goAuth')
         Taro.navigateTo({
-            url:'/pages/Auth'
+            url:'/pages/account/Auth'
         })
     }
 

+ 0 - 0
src/pages/Profile.scss → src/pages/account/Profile.scss


+ 5 - 5
src/pages/Profile.tsx → src/pages/account/Profile.tsx

@@ -12,7 +12,7 @@ export default function Page() {
 
     function tapLogin() {
         Taro.navigateTo({
-            url: '/pages/ChooseAuth'
+            url: '/pages/account/ChooseAuth'
         })
     }
 
@@ -32,12 +32,12 @@ export default function Page() {
     function tapProfile() {
         if (user.isLogin){
             Taro.navigateTo({
-                url: '/pages/ProfileSetting'
+                url: '/pages/account/ProfileSetting'
             })
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/account/ChooseAuth'
             })
         }
     }
@@ -48,7 +48,7 @@ export default function Page() {
         }
         else {
             Taro.navigateTo({
-                url: '/pages/ChooseAuth'
+                url: '/pages/account/ChooseAuth'
             })
         }
         
@@ -56,7 +56,7 @@ export default function Page() {
 
     function goSetting(){
         Taro.navigateTo({
-            url: '/pages/Setting'
+            url: '/pages/account/Setting'
         })
     }
 

+ 0 - 0
src/pages/ProfileSetting.scss → src/pages/account/ProfileSetting.scss


+ 1 - 1
src/pages/ProfileSetting.tsx → src/pages/account/ProfileSetting.tsx

@@ -11,7 +11,7 @@ export default function Page() {
     const user = useSelector((state: any) => state.user);
     function editNickname(){
         Taro.navigateTo({
-            url: '/pages/EditPage'
+            url: '/pages/account/EditPage'
         })
     }
 

+ 0 - 0
src/pages/Setting.tsx → src/pages/account/Setting.tsx


+ 0 - 0
src/pages/Settings.tsx → src/pages/account/Settings.tsx


+ 0 - 0
src/pages/Welcome.tsx → src/pages/account/Welcome.tsx


+ 2 - 1
src/pages/Activity.config.ts → src/pages/activity/Activity.config.ts

@@ -3,6 +3,7 @@ export default definePageConfig({
       // 'ec-canvas': '../../lib/ec-canvas/ec-canvas',
       // 'demo':'../../components/demo'
     },
-    "disableScroll": true
+    "disableScroll": true,
+    "navigationBarTitleText":""
   })
   

+ 0 - 0
src/pages/Activity.scss → src/pages/activity/Activity.scss


+ 1 - 2
src/pages/Activity.tsx → src/pages/activity/Activity.tsx

@@ -14,8 +14,7 @@ export default function Page(){
         console.log('refresh')
     }
     return (
-        <View className="container activity">
-            <Text>Activity Page</Text>
+        <View>
             <Activity />
         </View>
     )

+ 0 - 0
src/pages/ChooseScenario.tsx → src/pages/clock/ChooseScenario.tsx


+ 0 - 0
src/pages/Clock.scss → src/pages/clock/Clock.scss


+ 3 - 3
src/pages/clock.tsx → src/pages/clock/Clock.tsx

@@ -1,6 +1,6 @@
 import { Component, PropsWithChildren, useEffect, useRef, useState } from 'react'
 import { View, Text, Button, Input, Picker } from '@tarojs/components'
-import './index/index.scss'
+import '../index/index.scss'
 import './Clock.scss'
 import Taro, { useDidShow, useReady, useRouter } from '@tarojs/taro'
 // import ComponentA from './component'
@@ -247,7 +247,7 @@ export default function IndexPage() {
       success(result) {
         if (result.confirm) {
           Taro.navigateTo({
-            url: '/pages/H5?title=fast16cc 关注服务号&url=' + resource[0].url,
+            url: '/pages/common/H5?title=fast16cc 关注服务号&url=' + resource[0].url,
           })
         }
       },
@@ -294,7 +294,7 @@ export default function IndexPage() {
       {
         user.isLogin && <Text onClick={() => {
           Taro.navigateTo({
-            url: '/pages/RecordsHistory?type=time'
+            url: '/pages/common/RecordsHistory?type=time&title=time'
           })
         }}>查看全部记录</Text>
       }

+ 0 - 0
src/pages/SetSchedule.config.ts → src/pages/clock/SetSchedule.config.ts


+ 0 - 0
src/pages/SetSchedule.tsx → src/pages/clock/SetSchedule.tsx


+ 0 - 0
src/pages/H5.tsx → src/pages/common/H5.tsx


+ 4 - 0
src/pages/common/RecordsHistory.config.ts

@@ -0,0 +1,4 @@
+export default definePageConfig({
+    "disableScroll": true,
+    "navigationBarTitleText":""
+})

+ 58 - 22
src/pages/RecordsHistory.tsx → src/pages/common/RecordsHistory.tsx

@@ -7,6 +7,9 @@ import MetricHistory from "@/features/trackSomething/components/MetricHistory";
 import ActivityHistory from "@/features/trackSomething/components/ActivityHistory";
 import { activityRecords, clearMetricRecords, cleartActivityRecords, metricRecords } from "@/services/trackSomething";
 import Taro from "@tarojs/taro";
+import Layout from "@/context/locales/layout";
+import NoData from "@/components/NoData";
+import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
 
 export default function Page() {
     const router = useRouter();
@@ -15,7 +18,9 @@ export default function Page() {
     const [records, setRecords] = useState<any[]>([])
     const [counter, setCounter] = useState(0)
     const [timerId, setTimerId] = useState(null)
-    const {refreshList} = router.params
+    const [showErrorPage, setShowErrorPage] = useState(false)
+    const { refreshList } = router.params
+    const [triggered, setTriggered] = useState(false)
 
     useEffect(() => {
         startTimer();
@@ -68,12 +73,14 @@ export default function Page() {
 
     function getHistory(page = pageIndex) {
         // debugger
+        setTriggered(true)
         if (router.params.type == 'time') {
             getClockRecords({
                 page: page,
                 limit: pageSize,
                 only_finished: false
             }).then(res => {
+                setTriggered(false)
                 if (page == 1) {
                     setRecords((res as any).data)
                 } else {
@@ -89,6 +96,7 @@ export default function Page() {
                     code: '_walk'
                 }
             ).then(res => {
+                setTriggered(false)
                 if (page == 1) {
                     setRecords((res as any).data)
                 } else {
@@ -104,6 +112,7 @@ export default function Page() {
                     code: router.params.code
                 }
             ).then(res => {
+                setTriggered(false)
                 if (page == 1) {
                     setRecords((res as any).data)
                 } else {
@@ -156,26 +165,53 @@ export default function Page() {
         }
     }
 
-    return <View className="container">
-
-        {
-            (router.params.type == 'metric' || router.params.type == 'activity') && <View style={{ height: 50, fontSize: 30, color: '#fff' }} onClick={clear}>删除全部</View>
+    function detail() {
+        if (router.params.type == 'time') {
+            return <View>
+                {
+                    records.map((item, index) => {
+                        return <Schedule key={index} data={item} type="record" delSuccess={(item) => removeItem(item)} />
+                    })
+                }
+            </View>
         }
-        <ScrollView scrollY style={{ height: '100vh', display: 'flex', flexDirection: 'column' }}
-            onScrollToLower={more} enableFlex
-        // onRefresh={refresh}
-        >
-            {
-                router.params.type == 'time' && records.map((item, index) => {
-                    return <Schedule key={index} data={item} type="record" delSuccess={(item) => removeItem(item)} />
-                })
-            }
-            {
-                router.params.type == 'metric' && <MetricHistory records={records} />
-            }
-            {
-                router.params.type == 'activity' && <ActivityHistory records={records} />
-            }
-        </ScrollView>
-    </View>;
+        if (router.params.type == 'metric') {
+            return <MetricHistory records={records} />
+        }
+        if (router.params.type == 'activity') {
+            return <ActivityHistory records={records} />
+        }
+    }
+
+    return <Layout children={showErrorPage ? <NoData refresh={() => { refresh() }} /> : detail()}
+        title={router.params.title}
+        type={TemplateType.list}
+        refresh={() => { refresh() }}
+        triggered={triggered}
+        more={() => { more() }}
+        titleShowStyle={NaviBarTitleShowType.scrollToShow}
+    />
+
+    // return <View className="container">
+
+    //     {
+    //         (router.params.type == 'metric' || router.params.type == 'activity') && <View style={{ height: 50, fontSize: 30, color: '#fff' }} onClick={clear}>删除全部</View>
+    //     }
+    //     <ScrollView scrollY style={{ height: '100%', display: 'flex', flexDirection: 'column' }}
+    //         onScrollToLower={more} enableFlex
+    //     // onRefresh={refresh}
+    //     >
+    //         {
+    //             router.params.type == 'time' && records.map((item, index) => {
+    //                 return <Schedule key={index} data={item} type="record" delSuccess={(item) => removeItem(item)} />
+    //             })
+    //         }
+    //         {
+    //             router.params.type == 'metric' && <MetricHistory records={records} />
+    //         }
+    //         {
+    //             router.params.type == 'activity' && <ActivityHistory records={records} />
+    //         }
+    //     </ScrollView>
+    // </View>;
 }

+ 1 - 1
src/pages/index/index.tsx

@@ -57,7 +57,7 @@ export default function IndexPage() {
       success(result) {
         if (result.confirm) {
           Taro.navigateTo({
-            url: '/pages/H5?title=fast16cc 关注服务号&url=' + resource[0].url,
+            url: '/pages/common/H5?title=fast16cc 关注服务号&url=' + resource[0].url,
           })
         }
       },

+ 2 - 1
src/pages/Metric.config.ts → src/pages/metric/Metric.config.ts

@@ -3,6 +3,7 @@ export default definePageConfig({
       // 'ec-canvas': '../../lib/ec-canvas/ec-canvas',
       // 'demo':'../../components/demo'
     },
-    "disableScroll": true
+    "disableScroll": true,
+    "navigationBarTitleText":""
   })
   

+ 9 - 0
src/pages/metric/Metric.tsx

@@ -0,0 +1,9 @@
+import { View, Text } from "@tarojs/components";
+import Metric from "@/features/trackSomething/components/Metric";
+
+export default function Page() {
+
+    return <View className="container">
+        <Metric />
+    </View>
+}

+ 2 - 2
src/pages/RNMain.tsx → src/pages/rn/RNMain.tsx

@@ -3,8 +3,8 @@ import { NavigationContainer } from '@react-navigation/native';
 import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
 import { createStackNavigator } from '@react-navigation/stack';
 
-import Clock from './Clock'
-import Profile from './Profile'
+import Clock from '../clock/Clock'
+import Profile from '../account/Profile'
 
 // 创建底部 Tab 导航器
 const Tab = createBottomTabNavigator();

+ 12 - 0
src/utils/types.ts

@@ -20,4 +20,16 @@ export enum ScenarioType{
     fast = 'fast',
     sleep = 'sleep',
     fastSleep = 'fastSleep',
+}
+
+export enum TemplateType {
+    list = 'list',
+    grid = 'grid',
+    flex = 'flex',
+}
+
+export enum NaviBarTitleShowType{
+    alwayShow = 'alwayShow',
+    alwayHide = 'alwayHide',
+    scrollToShow = 'scrollToShow',
 }