diff --git a/src/common/components/chart/index.tsx b/src/common/components/chart/index.tsx index f7e496a..09d516f 100644 --- a/src/common/components/chart/index.tsx +++ b/src/common/components/chart/index.tsx @@ -135,10 +135,10 @@ const LineChart: React.FC = (props) => { // 高亮 ctx.lineWidth = 1; const highlightPos = heightLightPercent ?? DEFAULT_HEIGHTLIGHT_POS; - const centerX = ((width - 2 * padding) / 7) * highlightPos + (1 / 2) * barWidth; + const centerX = ((width - 2 * padding) / 7) * Math.ceil(highlightPos); drawGradientRectangle( ctx, - centerX + barWidth / 2, + centerX + padding, padding - 6, barWidth, height - 2 * padding + 6, @@ -148,7 +148,11 @@ const LineChart: React.FC = (props) => { ctx.beginPath(); ctx.fillStyle = DEFAULT_TEXT_COLOR; ctx.font = '15px sans-serif'; - ctx.fillText(title ?? DEFAULT_TITLE, centerX, padding / 2); + ctx.fillText( + title ?? DEFAULT_TITLE, + centerX + (1 / 2) * (title ?? DEFAULT_TITLE)?.length, + padding / 2 + ); void ctx.draw(); }; diff --git a/src/modules/login/components/Login.tsx b/src/modules/login/components/Login.tsx index cd5aa9d..845fc83 100644 --- a/src/modules/login/components/Login.tsx +++ b/src/modules/login/components/Login.tsx @@ -6,7 +6,7 @@ import { TopBackground } from '@/common/assets/img/login'; import AuthForm from './AuthForm'; const Login: React.FC = memo(() => ( - + diff --git a/src/modules/notification/components/Notification.tsx b/src/modules/notification/components/Notification.tsx index a4de0da..1d55e75 100644 --- a/src/modules/notification/components/Notification.tsx +++ b/src/modules/notification/components/Notification.tsx @@ -128,10 +128,19 @@ const Notification: React.FC = memo(() => { }, [test]); const handleScroll = useCallback( (event) => { - if (end) return; + if (end) { + void Taro.showToast({ + title: '没有更多啦', + icon: 'none', + }); + return; + } + void Taro.showLoading({ title: '加载中 ...' }); if (!loading) { console.log('fetching', event); - void fetchData(); + void fetchData().then(() => { + void Taro.hideLoading(); + }); } }, [loading, currentMessage.length, end] diff --git a/src/pages/classInfo/index.config.ts b/src/pages/classInfo/index.config.ts index 59645b8..be3099d 100644 --- a/src/pages/classInfo/index.config.ts +++ b/src/pages/classInfo/index.config.ts @@ -1,4 +1,5 @@ export default definePageConfig({ navigationBarTitleText: '课程主页', navigationBarBackgroundColor: '#F9F9F2', + disableScroll: true, }); diff --git a/src/pages/editUser/index.config.ts b/src/pages/editUser/index.config.ts index 86a8a11..1dacdc4 100644 --- a/src/pages/editUser/index.config.ts +++ b/src/pages/editUser/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '修改个人信息', + disableScroll: true, }); diff --git a/src/pages/evaluate/evaluate.config.ts b/src/pages/evaluate/evaluate.config.ts index d27cbd3..28f37ad 100644 --- a/src/pages/evaluate/evaluate.config.ts +++ b/src/pages/evaluate/evaluate.config.ts @@ -1,4 +1,5 @@ export default definePageConfig({ navigationBarTitleText: '评课', navigationBarBackgroundColor: '#F9F9F2', + disableScroll: true, }); diff --git a/src/pages/evaluateInfo/index.config.ts b/src/pages/evaluateInfo/index.config.ts index 10e4e25..379594b 100644 --- a/src/pages/evaluateInfo/index.config.ts +++ b/src/pages/evaluateInfo/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '首页', + disableScroll: true, }); diff --git a/src/pages/feedback/index.config.ts b/src/pages/feedback/index.config.ts index a55e147..82d0655 100644 --- a/src/pages/feedback/index.config.ts +++ b/src/pages/feedback/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '意见反馈', + disableScroll: true, }); diff --git a/src/pages/guide/index.config.ts b/src/pages/guide/index.config.ts index d1af031..a8c80bd 100644 --- a/src/pages/guide/index.config.ts +++ b/src/pages/guide/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '选课手册', + disableScroll: true, }); diff --git a/src/pages/index/index.config.ts b/src/pages/index/index.config.ts index 10e4e25..379594b 100644 --- a/src/pages/index/index.config.ts +++ b/src/pages/index/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '首页', + disableScroll: true, }); diff --git a/src/pages/main/index.config.ts b/src/pages/main/index.config.ts index 10e4e25..379594b 100644 --- a/src/pages/main/index.config.ts +++ b/src/pages/main/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '首页', + disableScroll: true, }); diff --git a/src/pages/main/index.tsx b/src/pages/main/index.tsx index b1f9a6d..a8806c9 100644 --- a/src/pages/main/index.tsx +++ b/src/pages/main/index.tsx @@ -2,7 +2,7 @@ /* eslint-disable import/first */ import { Image, ScrollView, Text, View } from '@tarojs/components'; import Taro from '@tarojs/taro'; -import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import './index.scss'; @@ -24,7 +24,6 @@ const COURSE_NAME_MAP = { export default function Index() { const handleSearchToggle = () => { - // console.log(isSearchActive); void Taro.navigateTo({ url: '/pages/research/research', }); @@ -42,6 +41,36 @@ export default function Index() { changeType, }) ); + const touchStartX = useRef(0); // 记录触摸起始点 + const touchEndX = useRef(0); // 记录触摸结束点 + + const handleTouchStart = (e) => { + //eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + touchStartX.current = e?.touches[0].pageX as number; // 记录起始触摸点 + }; + const handleTouchMove = (e) => { + //eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + touchEndX.current = e?.touches[0].pageX as number; // 实时记录滑动点 + }; + + const handleTouchEnd = () => { + const deltaX = touchEndX.current - touchStartX.current; // 计算滑动距离 + const tabs = Object.entries(COURSE_NAME_MAP); + const currentTab = tabs.findIndex(([name, value]) => name === classType); + if (Math.abs(deltaX) > 50) { + // 判断滑动距离是否足够切换 Tab + if (deltaX > 0 && currentTab > 0) { + // 向右滑动且不是第一个 Tab + handleChangeType(tabs[currentTab - 1][0]); + } else if (deltaX < 0 && currentTab < tabs.length - 1) { + // 向左滑动且不是最后一个 Tab + handleChangeType(tabs[currentTab + 1][0]); + } + } + // 重置滑动记录 + touchStartX.current = 0; + touchEndX.current = 0; + }; useEffect(() => { void dispatch.loadMoreComments(); @@ -67,19 +96,6 @@ export default function Index() { } }, [classType]); - // useDidShow(() => { - // void Taro.showLoading({ title: '加载中' }); - // void dispatch - // .refershComments() - // .then(() => { - // Taro.hideLoading(); - // }) - // .catch(() => { - // Taro.hideLoading(); - // void Taro.showToast({ title: '加载失败', icon: 'none' }); - // }); - // }); - const handleSearch = (searchText: string) => { console.log('搜索文本:', searchText); }; @@ -90,13 +106,11 @@ export default function Index() { const res = (await postBool('/checkStatus', { name: 'kestack', })) as StatusResponse; - setTest(res.data.status); } catch (error) { console.error('Error fetching status:', error); } }; - void getParams(); }, []); useEffect(() => { @@ -105,6 +119,8 @@ export default function Index() { const geneHandler = () => { let timeNow = Date.now(); return (e) => { + console.log(e); + if ( !useCourseStore.getState().loading && // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access @@ -113,7 +129,16 @@ export default function Index() { e.detail.deltaY < 0 && Date.now() - timeNow > 1000 ) { - void dispatch.loadMoreComments(); + void Taro.showLoading({ title: '加载中...' }); + void dispatch + .loadMoreComments() + .then(() => { + Taro.hideLoading(); + }) + .catch(() => { + Taro.hideLoading(); + void Taro.showToast({ title: '加载失败', icon: 'error' }); + }); timeNow = Date.now(); } }; @@ -165,6 +190,9 @@ export default function Index() { })} + = (...args) => ({}); diff --git a/src/pages/notification/index.config.ts b/src/pages/notification/index.config.ts index 49681eb..e38eb66 100644 --- a/src/pages/notification/index.config.ts +++ b/src/pages/notification/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '消息提醒', + disableScroll: true, }); diff --git a/src/pages/profile/index.config.ts b/src/pages/profile/index.config.ts index 3a2a3ad..04da532 100644 --- a/src/pages/profile/index.config.ts +++ b/src/pages/profile/index.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '个人主页', + disableScroll: true, }); diff --git a/src/pages/publishQuestion/index.config.ts b/src/pages/publishQuestion/index.config.ts index fd01a30..4a8392c 100644 --- a/src/pages/publishQuestion/index.config.ts +++ b/src/pages/publishQuestion/index.config.ts @@ -1,4 +1,5 @@ export default definePageConfig({ navigationBarTitleText: '问问同学', navigationBarBackgroundColor: '#F9F9F2', + disableScroll: true, }); diff --git a/src/pages/questionInfo/index.config.ts b/src/pages/questionInfo/index.config.ts index fd01a30..4a8392c 100644 --- a/src/pages/questionInfo/index.config.ts +++ b/src/pages/questionInfo/index.config.ts @@ -1,4 +1,5 @@ export default definePageConfig({ navigationBarTitleText: '问问同学', navigationBarBackgroundColor: '#F9F9F2', + disableScroll: true, }); diff --git a/src/pages/research/research.config.ts b/src/pages/research/research.config.ts index e26cc93..7dd0866 100644 --- a/src/pages/research/research.config.ts +++ b/src/pages/research/research.config.ts @@ -1,3 +1,4 @@ export default definePageConfig({ navigationBarTitleText: '搜索', + disableScroll: true, }); diff --git a/src/pages/research/research.tsx b/src/pages/research/research.tsx index ef9cbac..c3867da 100644 --- a/src/pages/research/research.tsx +++ b/src/pages/research/research.tsx @@ -91,7 +91,7 @@ const Research: React.FC = () => { return ( { handleClick(); }}