From dd26282540382624d51f0d1f517cf44431875b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=88=90?= Date: Tue, 30 Sep 2025 17:56:24 +0800 Subject: [PATCH 1/5] 1 --- babel.config.js | 6 ++++++ package.json | 2 ++ src/app.config.ts | 1 + yarn.lock | 17 +++++++++++++++++ 4 files changed, 26 insertions(+) diff --git a/babel.config.js b/babel.config.js index 5df4526..ee2edf5 100644 --- a/babel.config.js +++ b/babel.config.js @@ -9,6 +9,7 @@ module.exports = { compiler: 'webpack5', }] ], + plugins: [ [ "import", @@ -46,7 +47,12 @@ module.exports = { // 自动加载 css 样式文件 // customStyleName: (name) => `@nutui/nutui-react-taro/dist/es/packages/${name.toLowerCase()}/style-jrkf/css` }, + + 'nutui-react', ], + + ['transform-remove-console', { exclude: ['error', 'warn'] }], + ['@babel/plugin-transform-runtime', { corejs: false }] ], } diff --git a/package.json b/package.json index 71d29f8..2207efa 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ ], "author": "", "dependencies": { + "@babel/plugin-transform-runtime": "^7.28.3", "@babel/runtime": "^7.21.5", "@nutui/nutui-react-taro": "^2.6.14", "@tarojs/components": "4.1.5", @@ -53,6 +54,7 @@ "@tarojs/runtime": "4.1.5", "@tarojs/shared": "4.1.5", "@tarojs/taro": "4.1.5", + "babel-plugin-transform-remove-console": "^6.9.4", "dayjs": "^1.11.13", "qweather-icons": "^1.8.0", "react": "^18.0.0", diff --git a/src/app.config.ts b/src/app.config.ts index 5ae88f1..9c3cf82 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -84,4 +84,5 @@ export default defineAppConfig({ provider: "wx76a9a06e5b4e693e", }, }, + "lazyCodeLoading": "requiredComponents" }); diff --git a/yarn.lock b/yarn.lock index ee50824..7718bc9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -720,6 +720,18 @@ babel-plugin-polyfill-regenerator "^0.6.5" semver "^6.3.1" +"@babel/plugin-transform-runtime@^7.28.3": + version "7.28.3" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz#f5990a1b2d2bde950ed493915e0719841c8d0eaa" + integrity sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + semver "^6.3.1" + "@babel/plugin-transform-shorthand-properties@^7.27.1": version "7.27.1" resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" @@ -3203,6 +3215,11 @@ babel-plugin-transform-imports-api@1.0.0: dependencies: is-invalid-path "^1.0.2" +babel-plugin-transform-remove-console@^6.9.4: + version "6.9.4" + resolved "https://registry.npmmirror.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz#b980360c067384e24b357a588d807d3c83527780" + integrity sha512-88blrUrMX3SPiGkT1GnvVY8E/7A+k6oj3MNvUtTIxJflFzXTw1bHkuJ/y039ouhFMp2prRn5cQGzokViYi1dsg== + babel-plugin-transform-solid-jsx@4.1.5: version "4.1.5" resolved "https://registry.npmmirror.com/babel-plugin-transform-solid-jsx/-/babel-plugin-transform-solid-jsx-4.1.5.tgz#203d07a15f32e65e09f266b6ad2080f346eb453a" From 78d8ec659e719d9bdaba59f12eef9e7e05b7043c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=88=90?= Date: Wed, 1 Oct 2025 00:36:51 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E6=B6=88=E6=81=AF=20?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.config.json | 90 ++--- project.private.config.json | 4 +- src/app.config.ts | 2 + src/app.ts | 2 +- src/components/EmptyState/index.scss | 33 ++ src/components/EmptyState/index.tsx | 23 ++ src/components/index.ts | 2 + src/other_pages/comment_reply/index.config.ts | 4 + src/other_pages/comment_reply/index.scss | 246 ++++++++++++++ src/other_pages/comment_reply/index.tsx | 188 ++++++++++ src/other_pages/message/index.scss | 321 +++++++++--------- src/other_pages/message/index.tsx | 262 +++++++++----- src/other_pages/new_follow/index.config.ts | 4 + src/other_pages/new_follow/index.scss | 199 +++++++++++ src/other_pages/new_follow/index.tsx | 206 +++++++++++ .../qweather-icons/fonts/qweather-icons.ttf | Bin 0 -> 198504 bytes .../qweather-icons/fonts/qweather-icons.woff2 | Bin 0 -> 55020 bytes src/scss/qweather-icons/qweather-icons.css | 92 +++++ src/static/message/ar-right.svg | 3 + src/static/message/comment-icon.svg | 11 + src/static/message/emi.svg | 38 +++ src/static/message/follow-icon.svg | 12 + 22 files changed, 1450 insertions(+), 292 deletions(-) create mode 100644 src/components/EmptyState/index.scss create mode 100644 src/components/EmptyState/index.tsx create mode 100644 src/other_pages/comment_reply/index.config.ts create mode 100644 src/other_pages/comment_reply/index.scss create mode 100644 src/other_pages/comment_reply/index.tsx create mode 100644 src/other_pages/new_follow/index.config.ts create mode 100644 src/other_pages/new_follow/index.scss create mode 100644 src/other_pages/new_follow/index.tsx create mode 100644 src/scss/qweather-icons/fonts/qweather-icons.ttf create mode 100644 src/scss/qweather-icons/fonts/qweather-icons.woff2 create mode 100644 src/scss/qweather-icons/qweather-icons.css create mode 100644 src/static/message/ar-right.svg create mode 100644 src/static/message/comment-icon.svg create mode 100644 src/static/message/emi.svg create mode 100644 src/static/message/follow-icon.svg diff --git a/project.config.json b/project.config.json index eaad1b7..00f5065 100644 --- a/project.config.json +++ b/project.config.json @@ -1,46 +1,46 @@ { - "miniprogramRoot": "dist/", - "projectname": "playBallTogether", - "description": "playBallTogether", - "appid": "wx815b533167eb7b53", - "setting": { - "urlCheck": true, - "es6": true, - "enhance": true, - "postcss": false, - "preloadBackgroundData": false, - "minified": false, - "newFeature": true, - "coverView": true, - "nodeModules": false, - "autoAudits": false, - "showShadowRootInWxmlPanel": false, - "scopeDataCheck": false, - "uglifyFileName": false, - "checkInvalidKey": true, - "checkSiteMap": true, - "uploadWithSourceMap": true, - "compileHotReLoad": false, - "useMultiFrameRuntime": true, - "useApiHook": true, - "useApiHostProcess": false, - "babelSetting": { - "ignore": [], - "disablePlugins": [], - "outputPath": "" - }, - "enableEngineNative": false, - "useIsolateContext": true, - "useCompilerModule": false, - "userConfirmedUseCompilerModuleSwitch": false, - "userConfirmedBundleSwitch": false, - "packNpmManually": false, - "packNpmRelationList": [], - "minifyWXSS": true, - "minifyWXML": true - }, - "compileType": "miniprogram", - "simulatorType": "wechat", - "simulatorPluginLibVersion": {}, - "condition": {} - } + "miniprogramRoot": "dist/", + "projectname": "playBallTogether", + "description": "playBallTogether", + "appid": "wx815b533167eb7b53", + "setting": { + "urlCheck": true, + "es6": true, + "enhance": true, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": true, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": false, + "scopeDataCheck": false, + "uglifyFileName": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "useMultiFrameRuntime": true, + "useApiHook": true, + "useApiHostProcess": false, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "enableEngineNative": false, + "useIsolateContext": true, + "useCompilerModule": false, + "userConfirmedUseCompilerModuleSwitch": false, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true, + "minifyWXML": true + }, + "compileType": "miniprogram", + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": {} +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json index 2c19aa8..aaeb056 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -3,12 +3,12 @@ "projectname": "playBallTogether", "condition": {}, "setting": { - "urlCheck": true, + "urlCheck": false, "coverView": true, "lazyloadPlaceholderEnable": false, "skylineRenderEnable": false, "preloadBackgroundData": false, - "autoAudits": false, + "autoAudits": true, "useApiHook": true, "useApiHostProcess": true, "showShadowRootInWxmlPanel": false, diff --git a/src/app.config.ts b/src/app.config.ts index 9c3cf82..09a4ec6 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -54,6 +54,8 @@ export default defineAppConfig({ root: 'other_pages', pages: [ "message/index", + "comment_reply/index", // 收到的评论和回复 + "new_follow/index", // 新增关注 "favorites/index", // 收藏页 "ntrp-evaluate/index", // NTRP评估页 ], diff --git a/src/app.ts b/src/app.ts index 565dd5f..bf0017c 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,7 +1,7 @@ import { Component, ReactNode } from "react"; import "./nutui-theme.scss"; import "./app.scss"; -import "qweather-icons/font/qweather-icons.css"; +import "./scss/qweather-icons/qweather-icons.css"; import { useGlobalStore } from "./store/global"; interface AppProps { diff --git a/src/components/EmptyState/index.scss b/src/components/EmptyState/index.scss new file mode 100644 index 0000000..dd79951 --- /dev/null +++ b/src/components/EmptyState/index.scss @@ -0,0 +1,33 @@ +.empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 124px 16px; + min-height: 400px; + + .empty-icon { + width: 221px; + height: 200px; + position: relative; + border-radius: 20px; + margin-bottom: 12px; + + .img { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + height: 100%; + } + } + + .empty-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 14px; + line-height: 1.71; + color: rgba(0, 0, 0, 0.35); + } +} diff --git a/src/components/EmptyState/index.tsx b/src/components/EmptyState/index.tsx new file mode 100644 index 0000000..f0d2f14 --- /dev/null +++ b/src/components/EmptyState/index.tsx @@ -0,0 +1,23 @@ +import { View, Text, Image } from "@tarojs/components"; +import "./index.scss"; + +interface EmptyStateProps { + text?: string; + icon?: any; // 图片资源 +} + +const EmptyState = ({ + text = "暂无数据", + icon = require("@/static/message/emi.svg") +}: EmptyStateProps) => { + return ( + + + + + {text} + + ); +}; + +export default EmptyState; diff --git a/src/components/index.ts b/src/components/index.ts index 785769a..6ad48dc 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -22,6 +22,7 @@ import FollowUserCard from './FollowUserCard/index'; import Comments from "./Comments"; import GeneralNavbar from "./GeneralNavbar"; import RadarChart from './Radar' +import EmptyState from './EmptyState'; export { ActivityTypeSwitch, @@ -49,4 +50,5 @@ export { Comments, GeneralNavbar, RadarChart, + EmptyState, }; diff --git a/src/other_pages/comment_reply/index.config.ts b/src/other_pages/comment_reply/index.config.ts new file mode 100644 index 0000000..82a32e0 --- /dev/null +++ b/src/other_pages/comment_reply/index.config.ts @@ -0,0 +1,4 @@ +export default definePageConfig({ + navigationStyle: "custom", + navigationBarTitleText: "收到的评论和回复", +}); diff --git a/src/other_pages/comment_reply/index.scss b/src/other_pages/comment_reply/index.scss new file mode 100644 index 0000000..4d1bc60 --- /dev/null +++ b/src/other_pages/comment_reply/index.scss @@ -0,0 +1,246 @@ +@use '~@/scss/images.scss' as img; + +.comment-reply-container { + width: 100%; + height: 100vh; + box-sizing: border-box; + display: flex; + flex-direction: column; + background: #FFFFFF; + + // 顶部导航栏 + .navbar { + height: 100px; + background: #FFFFFF; + position: sticky; + top: 0; + z-index: 100; + + .navbar-content { + height: 56px; + display: flex; + align-items: center; + justify-content: center; + padding: 0 15px; + margin-top: 44px; + position: relative; + + .back-button { + position: absolute; + left: 10px; + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + + .back-icon { + width: 8px; + height: 16px; + position: relative; + + &::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 8px; + height: 8px; + border-left: 2.67px solid #000000; + border-bottom: 2.67px solid #000000; + transform: rotate(45deg); + } + } + } + + .navbar-title { + font-family: 'PingFang SC'; + font-weight: 600; + font-size: 20px; + line-height: 1.4; + letter-spacing: 0.019em; + color: #000000; + } + } + } + + // 评论列表滚动区域 + .comment-scroll { + flex: 1; + height: 100%; + padding: 0 15px; + } + + // 评论列表 + .comment-list { + padding-bottom: 20px; + } + + // 评论项 + .comment-item { + display: flex; + justify-content: space-between; + gap: 12px; + padding: 16px 0; + border-bottom: 0.5px solid rgba(0, 0, 0, 0.08); + + .comment-left { + display: flex; + gap: 12px; + flex: 1; + min-width: 0; + + .user-avatar { + width: 48px; + height: 48px; + border-radius: 999px; + flex-shrink: 0; + } + + .comment-content { + display: flex; + flex-direction: column; + gap: 4px; + flex: 1; + min-width: 0; + + .user-nickname { + font-family: 'PingFang SC'; + font-weight: 600; + font-size: 14px; + line-height: 1.43; + color: #000000; + } + + .action-row { + display: flex; + align-items: center; + gap: 8px; + + .action-text, + .time-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 10px; + line-height: 1.6; + color: rgba(60, 60, 67, 0.6); + } + } + + .comment-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 12px; + line-height: 1.5; + color: #000000; + word-break: break-word; + } + + // 被回复的评论 + .original-comment { + display: flex; + align-items: flex-start; + gap: 4px; + margin-top: 4px; + + .quote-line { + width: 2px; + height: 14px; + background: rgba(120, 120, 128, 0.12); + border-radius: 7px; + flex-shrink: 0; + } + + .original-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 12px; + line-height: 1.5; + color: rgba(60, 60, 67, 0.6); + word-break: break-word; + flex: 1; + } + } + + // 回复按钮 + .reply-button { + display: flex; + align-items: center; + gap: 4px; + padding: 4px 8px; + background: rgba(120, 120, 128, 0.12); + border-radius: 20px; + width: fit-content; + margin-top: 4px; + cursor: pointer; + + &:active { + opacity: 0.8; + } + + .reply-icon { + width: 12px; + height: 12px; + position: relative; + + // 绘制回复图标(使用SVG路径) + &::before, + &::after { + content: ''; + position: absolute; + background: #333333; + } + + &::before { + top: 1px; + left: 1px; + width: 10px; + height: 8.75px; + clip-path: polygon(0% 0%, 100% 0%, 100% 20%, 20% 20%, 20% 100%, 0% 100%); + } + + &::after { + width: 0; + height: 0.75px; + background: #333333; + } + } + + .reply-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 10px; + line-height: 1.6; + color: #000000; + } + } + } + } + + // 右侧球局图片 + .activity-image { + width: 48px; + height: 48px; + border-radius: 9px; + background: #F5F5F5; + flex-shrink: 0; + } + } + + // 到底了提示 + .bottom-tip { + display: flex; + justify-content: center; + align-items: center; + padding: 24px 0 12px; + + .tip-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 14px; + line-height: 1.71; + color: rgba(0, 0, 0, 0.35); + } + } +} diff --git a/src/other_pages/comment_reply/index.tsx b/src/other_pages/comment_reply/index.tsx new file mode 100644 index 0000000..7742e58 --- /dev/null +++ b/src/other_pages/comment_reply/index.tsx @@ -0,0 +1,188 @@ +import { useState, useEffect } from "react"; +import { View, Text, ScrollView, Image } from "@tarojs/components"; +import { Avatar } from "@nutui/nutui-react-taro"; +import { withAuth, EmptyState } from "@/components"; +import noticeService from "@/services/noticeService"; +import Taro from "@tarojs/taro"; +import "./index.scss"; + +// 评论/回复类型定义 +interface CommentReplyItem { + id: string; + user_avatar: string; + user_nickname: string; + action_type: "comment" | "reply"; // 评论了你的球局 / 回复了你的评论 + time: string; + content: string; + original_comment?: string; // 被回复的评论内容 + activity_image: string; + activity_id?: string; + is_read: number; +} + +const CommentReply = () => { + const [commentList, setCommentList] = useState([]); + const [loading, setLoading] = useState(false); + + useEffect(() => { + getCommentReplyList(); + }, []); + + // 获取评论和回复列表 + const getCommentReplyList = async () => { + if (loading) return; + + setLoading(true); + try { + const res = await noticeService.getNotificationList({ + notification_type: "comment", // 筛选评论类型 + }); + + if (res.code === 0) { + // 映射数据 + const mappedList = res.data.list.map((item: any) => ({ + id: item.id, + user_avatar: item.related_user_avatar || "", + user_nickname: item.related_user_nickname || "匿名用户", + action_type: (item.notification_type === "reply" ? "reply" : "comment") as "comment" | "reply", + time: item.created_at, + content: item.content || "", + original_comment: item.original_content || "", + activity_image: item.activity_image || "", + activity_id: item.related_activity_id || "", + is_read: item.is_read, + })); + + setCommentList(mappedList); + } + } catch (e) { + Taro.showToast({ + title: "获取列表失败", + icon: "none", + duration: 2000, + }); + } finally { + setLoading(false); + } + }; + + // 格式化时间显示 + const formatTime = (timeStr: string) => { + if (!timeStr) return ""; + + const date = new Date(timeStr); + const now = new Date(); + const diff = now.getTime() - date.getTime(); + const minutes = Math.floor(diff / (1000 * 60)); + const hours = Math.floor(diff / (1000 * 60 * 60)); + const days = Math.floor(diff / (1000 * 60 * 60 * 24)); + + if (minutes < 60) { + return `${minutes}分钟前`; + } else if (hours < 24) { + return `${hours}小时前`; + } else if (days === 1) { + return "1天前"; + } else if (days < 7) { + return `${days}天前`; + } else { + const month = date.getMonth() + 1; + const day = date.getDate(); + return `${month}月${day}日`; + } + }; + + // 处理回复 + const handleReply = (item: CommentReplyItem) => { + console.log("回复:", item); + // TODO: 跳转到回复页面或弹出回复框 + }; + + // 处理返回 + const handleBack = () => { + Taro.navigateBack(); + }; + + // 渲染评论/回复项 + const renderCommentItem = (item: CommentReplyItem) => { + const actionText = item.action_type === "comment" ? "评论了你的球局" : "回复了你的评论"; + + return ( + + + + + + {item.user_nickname} + + + {actionText} + {formatTime(item.time)} + + + {item.content} + + {/* 如果是回复,显示被回复的评论 */} + {item.action_type === "reply" && item.original_comment && ( + + + {item.original_comment} + + )} + + {/* 回复按钮 */} + handleReply(item)}> + + 回复 + + + + + {/* 右侧球局图片 */} + + + ); + }; + + return ( + + {/* 顶部导航栏 */} + + + + + + 收到的评论和回复 + + + + {/* 评论列表 */} + + {commentList.length > 0 ? ( + + {commentList.map(renderCommentItem)} + + {/* 到底了提示 */} + + 到底了 + + + ) : ( + + )} + + + ); +}; + +export default withAuth(CommentReply); diff --git a/src/other_pages/message/index.scss b/src/other_pages/message/index.scss index d2730dc..b644b3d 100644 --- a/src/other_pages/message/index.scss +++ b/src/other_pages/message/index.scss @@ -6,23 +6,22 @@ box-sizing: border-box; display: flex; flex-direction: column; + background: #FFFFFF; - // 导航栏 + // 顶部导航栏 .navbar { - height: 56px; + height: 100px; background: #FFFFFF; - padding-top: 44px; position: sticky; top: 0; z-index: 100; - box-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.06); .navbar-content { height: 56px; display: flex; align-items: center; - justify-content: space-between; padding: 0 15px; + margin-top: 44px; .navbar-left { display: flex; @@ -39,52 +38,109 @@ font-weight: 600; font-size: 20px; line-height: 1.4; + letter-spacing: 0.019em; color: #000000; } } } } + // 分类标签区 + .category-tabs { + display: flex; + align-items: stretch; + gap: 20px; + padding: 6px 24px; + background: #FFFFFF; - // 消息列表 - .message-list { - flex: 1; - overflow: hidden; - box-sizing: border-box; - // margin-bottom:100px; - background-color: none !important; - - .message-list-content { + .tab-item { display: flex; flex-direction: column; - padding: 12px 12px 112px; + justify-content: center; + align-items: center; gap: 8px; + padding: 12px 15px; + flex: 1; + cursor: pointer; + transition: all 0.2s; + + .tab-icon { + width: 56px; + height: 56px; + border-radius: 56px; + transition: all 0.3s; + } + + .tab-text { + font-family: 'PingFang SC'; + font-weight: 600; + font-size: 16px; + line-height: 1.5; + color: #000000; + } + + &.active { + .tab-icon { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25); + transform: scale(1.05); + } + } + + &:active { + .tab-icon { + transform: scale(0.95); + } + } + } + } + + // 消息滚动区域 + .message-scroll { + flex: 1; + overflow: hidden; + background: #FFFFFF; + + .message-cards { + padding: 12px; + display: flex; + flex-direction: column; + gap: 8px; + padding-bottom: 120px; } - // 系统消息样式 - .system-message { + // 系统消息卡片 + .message-card { background: #FFFFFF; border: 0.5px solid rgba(0, 0, 0, 0.08); border-radius: 20px; - padding: 0 0 12px; box-shadow: 0px 4px 36px 0px rgba(0, 0, 0, 0.06); - box-sizing: border-box; + padding: 0 0 12px; + transition: all 0.2s; - .message-header { - display: flex; - align-items: center; + &:active { + transform: scale(0.98); + opacity: 0.95; + } + + .card-title-row { padding: 12px 15px 0; - .message-title { + .card-title { font-family: 'PingFang SC'; font-weight: 600; font-size: 16px; line-height: 1.5; color: #000000; - flex: 1; } + } - .message-time { + .card-time-row { + padding: 4px 15px 0; + display: flex; + align-items: center; + gap: 2px; + + .card-time { font-family: 'PingFang SC'; font-weight: 400; font-size: 12px; @@ -93,31 +149,37 @@ } } - .message-content { + .card-content-row { padding: 8px 15px 0; + display: flex; + align-items: stretch; + gap: 2px; - .message-text { + .card-content { font-family: 'PingFang SC'; font-weight: 400; font-size: 14px; line-height: 1.43; color: rgba(0, 0, 0, 0.7); + flex: 1; } } - .message-action { + .card-footer { padding: 12px 15px 0; - .action-divider { + .footer-divider { height: 0.5px; background: rgba(0, 0, 0, 0.08); margin-bottom: 12px; + width: 100%; } - .action-button { + .footer-action { display: flex; justify-content: space-between; align-items: center; + cursor: pointer; .action-text { font-family: 'PingFang SC'; @@ -128,151 +190,94 @@ } .action-arrow { - width: 16px; - height: 16px; + position: relative; + .img { + position: absolute; + left: -16px; + top: -9px; + width: 14px;; + height: 14px; + } + } + + &:active { + opacity: 0.7; } } } } - // 用户消息样式 - .user-message { + // 到底了提示 + .bottom-tip { display: flex; + justify-content: center; align-items: center; - gap: 12px; - padding: 12px 15px; - background: #FFFFFF; - border: 0.5px solid rgba(0, 0, 0, 0.08); - border-radius: 20px; - box-shadow: 0px 4px 36px 0px rgba(0, 0, 0, 0.06); - box-sizing: border-box; + padding: 24px 0 12px; - .message-avatar { - position: relative; - flex-shrink: 0; - - .unread-dot { - position: absolute; - top: -2px; - right: -2px; - width: 10px; - height: 10px; - background: #FF4848; - border-radius: 50%; - } - } - - .message-info { - flex: 1; - min-width: 0; - - .message-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 4px; - - .message-title { - font-family: 'PingFang SC'; - font-weight: 600; - font-size: 16px; - line-height: 1.5; - color: #000000; - } - - .message-time { - font-family: 'PingFang SC'; - font-weight: 400; - font-size: 14px; - line-height: 1.71; - color: rgba(0, 0, 0, 0.35); - } - } - - .message-content { - display: flex; - align-items: center; - gap: 4px; - min-width: 0; - - .message-text { - font-family: 'PingFang SC'; - font-weight: 400; - font-size: 14px; - line-height: 1.29; - color: rgba(0, 0, 0, 0.35); - flex: 1; - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .unread-indicator { - width: 10px; - height: 10px; - background: #FF4848; - border-radius: 50%; - flex-shrink: 0; - } - } + .tip-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 14px; + line-height: 1.71; + color: rgba(0, 0, 0, 0.35); } } } - // 空状态 - .empty-state { + // 悬浮新建消息按钮 + .floating-button { + position: fixed; + right: 12px; + bottom: 132px; + width: 60px; + height: 60px; + border-radius: 50%; + background: radial-gradient(circle at 27% 8%, rgba(189, 255, 74, 1) 17%, rgba(149, 242, 62, 1) 54%, rgba(50, 216, 56, 1) 100%); + border: 2px solid rgba(0, 0, 0, 0.06); + box-shadow: 0px 4px 48px 0px rgba(0, 0, 0, 0.08); display: flex; - flex-direction: column; align-items: center; - padding: 124px 16px; - height: 746px; + justify-content: center; + cursor: pointer; + z-index: 99; + transition: all 0.2s; - .empty-icon { - width: 300px; - height: 225px; - margin-bottom: 12px; - position: relative; - - .empty-message-icon { - width: 100%; - height: 100%; - background: linear-gradient(135deg, #f0f0f0 0%, #e0e0e0 100%); - border-radius: 12px; - position: relative; - - &::before { - content: ''; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 60px; - height: 60px; - background: #d0d0d0; - border-radius: 50%; - } - - &::after { - content: ''; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 30px; - height: 30px; - background: #a0a0a0; - border-radius: 50%; - } - } + &:active { + transform: scale(0.92); } - .empty-text { - font-family: 'PingFang SC'; - font-weight: 500; - font-size: 14px; - line-height: 1.71; - color: rgba(0, 0, 0, 0.85); + .button-icon { + width: 36px; + height: 36px; + position: relative; + + // 加号图标 - 竖线 + &::before { + content: ''; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + width: 4px; + height: 25px; + background: #FFFFFF; + border-radius: 2px; + box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.2); + } + + // 加号图标 - 横线 + &::after { + content: ''; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + width: 25px; + height: 4px; + background: #FFFFFF; + border-radius: 2px; + box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.2); + } } } } \ No newline at end of file diff --git a/src/other_pages/message/index.tsx b/src/other_pages/message/index.tsx index e4a6653..60441df 100644 --- a/src/other_pages/message/index.tsx +++ b/src/other_pages/message/index.tsx @@ -1,136 +1,226 @@ import { useState, useEffect } from "react"; -import { View, Text, ScrollView, Image } from "@tarojs/components"; +import { View, Text, Image, ScrollView } from "@tarojs/components"; import { Avatar } from "@nutui/nutui-react-taro"; import GuideBar from "@/components/GuideBar"; -import { withAuth } from "@/components"; +import { withAuth, EmptyState } from "@/components"; import noticeService from "@/services/noticeService"; -import Taro, { useRouter } from "@tarojs/taro"; +import { useUserInfo } from "@/store/userStore"; +import Taro from "@tarojs/taro"; import "./index.scss"; // 消息类型定义 interface MessageItem { id: string; - type: "system" | "user" | "like" | "comment" | "follow"; + notification_type: string; title: string; content: string; - time: string; - avatar?: string; - isRead: boolean; - hasAction?: boolean; - actionText?: string; + create_time: string; + is_read: number; + related_user_avatar?: string; + related_user_nickname?: string; + activity_image?: string; } +// 消息分类类型 +type MessageCategory = "comment" | "follow"; + const Message = () => { - const [activeTab] = useState<"all" | "like" | "comment" | "follow">("all"); + const userInfo = useUserInfo() as any; + const [activeTab, setActiveTab] = useState(null); const [messageList, setMessageList] = useState([]); + const [loading, setLoading] = useState(false); + const [reachedBottom, setReachedBottom] = useState(false); + + // 获取消息列表 + const getNoticeList = async () => { + if (loading) return; + setLoading(true); + try { + const res = await noticeService.getNotificationList({}); + if (res.code === 0) { + setMessageList(res.data.list || []); + } + } catch (e) { + Taro.showToast({ + title: "获取列表失败,请重试", + icon: "none", + duration: 2000, + }); + } finally { + setLoading(false); + } + }; useEffect(() => { - const getNoticeList = async () => { - try { - const res = await noticeService.getNotificationList({}); - if (res.code === 0) { - setMessageList(res.data.list); - } - } catch (e) { - Taro.showToast({ - title: "获取列表失败,请重试", - icon: "none", - duration: 2000, - }); - } finally { - } - }; getNoticeList(); }, []); - // 过滤消息 - const filteredMessages = messageList.filter((message) => { - if (activeTab === "all") return true; - return message.type === activeTab; - }); + // 过滤系统消息 + const filteredMessages = messageList; - // 渲染消息项 - const renderMessageItem = (message: MessageItem) => { - if (message.type === "system") { - return ( - - - {message.title} - {message.time} - - - {message.content} - - {message.hasAction && ( - - - - {message.actionText} - - - - )} - - ); + // 处理分类标签点击 + const handleTabClick = (tab: MessageCategory) => { + // 点击评论标签跳转到评论和回复页面 + if (tab === "comment") { + Taro.navigateTo({ + url: "/other_pages/comment_reply/index", + }); + return; } + + // 点击关注标签跳转到新增关注页面 + if (tab === "follow") { + Taro.navigateTo({ + url: "/other_pages/new_follow/index", + }); + return; + } + + setActiveTab(activeTab === tab ? null : tab); + }; - return ( - - - - - - - {message.title} - {message.time} - - - {message.content} - {!message.isRead && } - - - - ); + // 处理查看详情 + const handleViewDetail = (messageId: string) => { + console.log("查看详情:", messageId); + // TODO: 根据消息类型跳转到对应详情页 + }; + + // 处理滚动到底部 + const handleScrollToLower = () => { + if (!reachedBottom && filteredMessages.length > 0) { + setReachedBottom(true); + // 2秒后隐藏提示 + setTimeout(() => { + setReachedBottom(false); + }, 2000); + } + }; + + // 格式化时间显示 + const formatTime = (timeStr: string) => { + if (!timeStr) return ""; + const date = new Date(timeStr); + const now = new Date(); + const diff = now.getTime() - date.getTime(); + const days = Math.floor(diff / (1000 * 60 * 60 * 24)); + + if (days === 0) { + const hours = date.getHours(); + const minutes = date.getMinutes(); + return `今天 ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`; + } else if (days === 1) { + const hours = date.getHours(); + const minutes = date.getMinutes(); + return `昨天 ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`; + } else if (days < 3) { + return `${days}天前`; + } else { + const year = date.getFullYear(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`; + } }; return ( - {/* 导航栏 */} + {/* 顶部导航栏 */} 消息 - {/* 消息列表 */} - + {/* 分类标签 */} + + handleTabClick("comment")} + > + + 评论和回复 + + handleTabClick("follow")} + > + + 新增关注 + + + + {/* 系统消息卡片列表 */} + {filteredMessages.length > 0 ? ( - - {filteredMessages.map(renderMessageItem)} + + {filteredMessages.map((message) => ( + + + {message.title} + + + {formatTime(message.create_time)} + + + {message.content} + + + + handleViewDetail(message.id)}> + 查看详情 + + + + + + + + + ))} + {/* 到底了提示 */} + {filteredMessages.length > 0 && ( + + 到底了 + + )} ) : ( - - - - - 暂无消息 - + )} + {/* 悬浮新建按钮 */} + console.log("新建消息")}> + + + {/* 底部导航 */} ); }; -export default withAuth(Message); +export default withAuth(Message); \ No newline at end of file diff --git a/src/other_pages/new_follow/index.config.ts b/src/other_pages/new_follow/index.config.ts new file mode 100644 index 0000000..4626cb8 --- /dev/null +++ b/src/other_pages/new_follow/index.config.ts @@ -0,0 +1,4 @@ +export default definePageConfig({ + navigationStyle: "custom", + navigationBarTitleText: "新增关注", +}); diff --git a/src/other_pages/new_follow/index.scss b/src/other_pages/new_follow/index.scss new file mode 100644 index 0000000..5e8dc98 --- /dev/null +++ b/src/other_pages/new_follow/index.scss @@ -0,0 +1,199 @@ +@use '~@/scss/images.scss' as img; + +.new-follow-container { + width: 100%; + height: 100vh; + box-sizing: border-box; + display: flex; + flex-direction: column; + background: #FFFFFF; + + // 顶部导航栏 + .navbar { + height: 100px; + background: #FFFFFF; + position: sticky; + top: 0; + z-index: 100; + + .navbar-content { + height: 56px; + display: flex; + align-items: center; + justify-content: center; + padding: 0 15px; + margin-top: 44px; + position: relative; + + .back-button { + position: absolute; + left: 10px; + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + + .back-icon { + width: 8px; + height: 16px; + position: relative; + + &::before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 8px; + height: 8px; + border-left: 2.67px solid #000000; + border-bottom: 2.67px solid #000000; + transform: rotate(45deg); + } + } + } + + .navbar-title { + font-family: 'PingFang SC'; + font-weight: 600; + font-size: 20px; + line-height: 1.4; + letter-spacing: 0.019em; + color: #000000; + } + } + } + + // 关注列表滚动区域 + .follow-scroll { + flex: 1; + height: 100%; + } + + // 关注列表 + .follow-list { + display: flex; + flex-direction: column; + gap: 12px; + padding: 0 0 20px; + } + + // 关注项 + .follow-item { + display: flex; + justify-content: space-between; + align-items: center; + gap: 12px; + padding: 8px 20px; + + .follow-left { + display: flex; + align-items: center; + gap: 12px; + flex: 1; + min-width: 0; + cursor: pointer; + + .user-avatar { + width: 40px; + height: 40px; + border-radius: 999px; + flex-shrink: 0; + } + + .user-info { + display: flex; + flex-direction: column; + gap: 8px; + flex: 1; + min-width: 0; + height: 40px; + justify-content: center; + + .user-nickname { + font-family: 'PingFang SC'; + font-weight: 600; + font-size: 14px; + line-height: 1.14; + color: rgba(0, 0, 0, 0.8); + } + + .user-signature { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 12px; + line-height: 1.33; + color: rgba(60, 60, 67, 0.6); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .action-row { + display: flex; + align-items: center; + gap: 8px; + + .action-text, + .time-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 12px; + line-height: 1.33; + color: rgba(60, 60, 67, 0.6); + } + } + } + } + + // 回关按钮 + .follow-button { + display: flex; + justify-content: center; + align-items: center; + padding: 4px 16px; + border: 0.5px solid #000000; + border-radius: 20px; + cursor: pointer; + flex-shrink: 0; + + &:active { + opacity: 0.8; + } + + &.mutual { + border-color: rgba(120, 120, 128, 0.12); + background: transparent; + } + + .button-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 12px; + line-height: 1.33; + color: #000000; + } + + &.mutual .button-text { + color: rgba(0, 0, 0, 0.8); + } + } + } + + // 到底了提示 + .bottom-tip { + display: flex; + justify-content: center; + align-items: center; + padding: 24px 0 12px; + + .tip-text { + font-family: 'PingFang SC'; + font-weight: 400; + font-size: 14px; + line-height: 1.71; + color: rgba(0, 0, 0, 0.35); + } + } +} diff --git a/src/other_pages/new_follow/index.tsx b/src/other_pages/new_follow/index.tsx new file mode 100644 index 0000000..1d44b56 --- /dev/null +++ b/src/other_pages/new_follow/index.tsx @@ -0,0 +1,206 @@ +import { useState, useEffect } from "react"; +import { View, Text, ScrollView } from "@tarojs/components"; +import { Avatar } from "@nutui/nutui-react-taro"; +import { withAuth, EmptyState } from "@/components"; +import noticeService from "@/services/noticeService"; +import Taro from "@tarojs/taro"; +import "./index.scss"; + +// 关注项类型定义 +interface FollowItem { + id: string; + user_id: string; + user_avatar: string; + user_nickname: string; + user_signature?: string; + time: string; + is_mutual: boolean; // 是否互相关注 + is_read: number; +} + +const NewFollow = () => { + const [followList, setFollowList] = useState([]); + const [loading, setLoading] = useState(false); + + useEffect(() => { + getFollowList(); + }, []); + + // 获取新增关注列表 + const getFollowList = async () => { + if (loading) return; + + setLoading(true); + try { + const res = await noticeService.getNotificationList({ + notification_type: "follow", // 筛选关注类型 + }); + + if (res.code === 0) { + // 映射数据 + const mappedList = res.data.list.map((item: any) => ({ + id: item.id, + user_id: item.related_user_id || "", + user_avatar: item.related_user_avatar || "", + user_nickname: item.related_user_nickname || "匿名用户", + user_signature: item.related_user_signature || "", + time: item.created_at, + is_mutual: item.is_mutual_follow || false, + is_read: item.is_read, + })); + + setFollowList(mappedList); + } + } catch (e) { + Taro.showToast({ + title: "获取列表失败", + icon: "none", + duration: 2000, + }); + } finally { + setLoading(false); + } + }; + + // 格式化时间显示 + const formatTime = (timeStr: string) => { + if (!timeStr) return ""; + + const date = new Date(timeStr); + const now = new Date(); + const diff = now.getTime() - date.getTime(); + const hours = Math.floor(diff / (1000 * 60 * 60)); + const days = Math.floor(diff / (1000 * 60 * 60 * 24)); + + if (hours < 24) { + return `${hours}小时前`; + } else if (days === 1) { + return "1天前"; + } else if (days < 7) { + return `${days}天前`; + } else { + const month = date.getMonth() + 1; + const day = date.getDate(); + return `${month}月${day}日`; + } + }; + + // 处理回关 + const handleFollowBack = async (item: FollowItem) => { + if (item.is_mutual) { + // 已经互相关注,无需操作 + return; + } + + try { + // TODO: 调用关注接口 + // await userService.followUser({ user_id: item.user_id }); + + Taro.showToast({ + title: "关注成功", + icon: "success", + duration: 2000, + }); + + // 更新列表 + setFollowList(prevList => + prevList.map(followItem => + followItem.id === item.id + ? { ...followItem, is_mutual: true } + : followItem + ) + ); + } catch (e) { + Taro.showToast({ + title: "关注失败", + icon: "none", + duration: 2000, + }); + } + }; + + // 处理返回 + const handleBack = () => { + Taro.navigateBack(); + }; + + // 处理点击用户 + const handleUserClick = (userId: string) => { + Taro.navigateTo({ + url: `/user_pages/other/index?user_id=${userId}`, + }); + }; + + // 渲染关注项 + const renderFollowItem = (item: FollowItem) => { + return ( + + handleUserClick(item.user_id)}> + + + + {item.user_nickname} + + {item.user_signature ? ( + {item.user_signature} + ) : ( + + 开始关注你了,期待你的回关 + {formatTime(item.time)} + + )} + + + + handleFollowBack(item)} + > + {item.is_mutual ? "互相关注" : "回关"} + + + ); + }; + + return ( + + {/* 顶部导航栏 */} + + + + + + 新增关注 + + + + {/* 关注列表 */} + + {followList.length > 0 ? ( + + {followList.map(renderFollowItem)} + + {/* 到底了提示 */} + + 到底了 + + + ) : ( + + )} + + + ); +}; + +export default withAuth(NewFollow); diff --git a/src/scss/qweather-icons/fonts/qweather-icons.ttf b/src/scss/qweather-icons/fonts/qweather-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2a47642a8dd592b92c06ee696833f945bd4443b7 GIT binary patch literal 198504 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 literal 0 HcmV?d00001 diff --git a/src/scss/qweather-icons/fonts/qweather-icons.woff2 b/src/scss/qweather-icons/fonts/qweather-icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e1f8f4828b62f7e97360e6b50d5f9254ebccc5f7 GIT binary patch literal 55020 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 z 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 literal 0 HcmV?d00001 diff --git a/src/scss/qweather-icons/qweather-icons.css b/src/scss/qweather-icons/qweather-icons.css new file mode 100644 index 0000000..6dc64d9 --- /dev/null +++ b/src/scss/qweather-icons/qweather-icons.css @@ -0,0 +1,92 @@ + + +@font-face { + font-family: "qweather-icons"; + src: url("./fonts/qweather-icons.woff2?3696017a726a77099c2617f87a3367ac") format("woff2") + +} + +[class^="qi-"]::before, +[class*=" qi-"]::before { + display: inline-block; + font-family: "qweather-icons" !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.qi-100::before { content: "\f101"; } +.qi-101::before { content: "\f102"; } +.qi-102::before { content: "\f103"; } +.qi-103::before { content: "\f104"; } +.qi-104::before { content: "\f105"; } +.qi-150::before { content: "\f106"; } +.qi-151::before { content: "\f107"; } +.qi-152::before { content: "\f108"; } +.qi-153::before { content: "\f109"; } +.qi-300::before { content: "\f10a"; } +.qi-301::before { content: "\f10b"; } +.qi-302::before { content: "\f10c"; } +.qi-303::before { content: "\f10d"; } +.qi-304::before { content: "\f10e"; } +.qi-305::before { content: "\f10f"; } +.qi-306::before { content: "\f110"; } +.qi-307::before { content: "\f111"; } +.qi-308::before { content: "\f112"; } +.qi-309::before { content: "\f113"; } +.qi-310::before { content: "\f114"; } +.qi-311::before { content: "\f115"; } +.qi-312::before { content: "\f116"; } +.qi-313::before { content: "\f117"; } +.qi-314::before { content: "\f118"; } +.qi-315::before { content: "\f119"; } +.qi-316::before { content: "\f11a"; } +.qi-317::before { content: "\f11b"; } +.qi-318::before { content: "\f11c"; } +.qi-350::before { content: "\f11d"; } +.qi-351::before { content: "\f11e"; } +.qi-399::before { content: "\f11f"; } +.qi-400::before { content: "\f120"; } +.qi-401::before { content: "\f121"; } +.qi-402::before { content: "\f122"; } +.qi-403::before { content: "\f123"; } +.qi-404::before { content: "\f124"; } +.qi-405::before { content: "\f125"; } +.qi-406::before { content: "\f126"; } +.qi-407::before { content: "\f127"; } +.qi-408::before { content: "\f128"; } +.qi-409::before { content: "\f129"; } +.qi-410::before { content: "\f12a"; } +.qi-456::before { content: "\f12b"; } +.qi-457::before { content: "\f12c"; } +.qi-499::before { content: "\f12d"; } +.qi-500::before { content: "\f12e"; } +.qi-501::before { content: "\f12f"; } +.qi-502::before { content: "\f130"; } +.qi-503::before { content: "\f131"; } +.qi-504::before { content: "\f132"; } +.qi-507::before { content: "\f133"; } +.qi-508::before { content: "\f134"; } +.qi-509::before { content: "\f135"; } +.qi-510::before { content: "\f136"; } +.qi-511::before { content: "\f137"; } +.qi-512::before { content: "\f138"; } +.qi-513::before { content: "\f139"; } +.qi-514::before { content: "\f13a"; } +.qi-515::before { content: "\f13b"; } +.qi-800::before { content: "\f13c"; } +.qi-801::before { content: "\f13d"; } +.qi-802::before { content: "\f13e"; } +.qi-803::before { content: "\f13f"; } +.qi-804::before { content: "\f140"; } +.qi-805::before { content: "\f141"; } +.qi-806::before { content: "\f142"; } +.qi-807::before { content: "\f143"; } +.qi-900::before { content: "\f144"; } +.qi-901::before { content: "\f145"; } +.qi-999::before { content: "\f146"; } diff --git a/src/static/message/ar-right.svg b/src/static/message/ar-right.svg new file mode 100644 index 0000000..412901b --- /dev/null +++ b/src/static/message/ar-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/static/message/comment-icon.svg b/src/static/message/comment-icon.svg new file mode 100644 index 0000000..69a4659 --- /dev/null +++ b/src/static/message/comment-icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/static/message/emi.svg b/src/static/message/emi.svg new file mode 100644 index 0000000..6a526d1 --- /dev/null +++ b/src/static/message/emi.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/static/message/follow-icon.svg b/src/static/message/follow-icon.svg new file mode 100644 index 0000000..b6fffff --- /dev/null +++ b/src/static/message/follow-icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + From a5539bd21969e7a42de026aeffb1a5b4028e9f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=88=90?= Date: Wed, 1 Oct 2025 01:48:36 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=B2=89=E4=B8=9D?= =?UTF-8?q?=E5=85=B3=E6=B3=A8=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/env.ts | 4 +- src/other_pages/comment_reply/index.scss | 28 ++----- src/other_pages/comment_reply/index.tsx | 52 ++++++++----- src/other_pages/new_follow/index.tsx | 37 +++++----- src/services/commentService.ts | 94 ++++++++++++++++++++++++ src/services/followService.ts | 28 +++++++ src/static/message/reply-icon.svg | 6 ++ 7 files changed, 187 insertions(+), 62 deletions(-) create mode 100644 src/services/commentService.ts create mode 100644 src/static/message/reply-icon.svg diff --git a/src/config/env.ts b/src/config/env.ts index 00d5ebd..0a5c281 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -24,8 +24,8 @@ const envConfigs: Record = { // 开发环境 development: { name: '开发环境', - apiBaseURL: 'https://sit.light120.com', - // apiBaseURL: 'http://localhost:9098', + // apiBaseURL: 'https://sit.light120.com', + apiBaseURL: 'http://localhost:9098', timeout: 15000, enableLog: true, enableMock: true, diff --git a/src/other_pages/comment_reply/index.scss b/src/other_pages/comment_reply/index.scss index 4d1bc60..92755ea 100644 --- a/src/other_pages/comment_reply/index.scss +++ b/src/other_pages/comment_reply/index.scss @@ -182,29 +182,6 @@ .reply-icon { width: 12px; height: 12px; - position: relative; - - // 绘制回复图标(使用SVG路径) - &::before, - &::after { - content: ''; - position: absolute; - background: #333333; - } - - &::before { - top: 1px; - left: 1px; - width: 10px; - height: 8.75px; - clip-path: polygon(0% 0%, 100% 0%, 100% 20%, 20% 20%, 20% 100%, 0% 100%); - } - - &::after { - width: 0; - height: 0.75px; - background: #333333; - } } .reply-text { @@ -225,6 +202,11 @@ border-radius: 9px; background: #F5F5F5; flex-shrink: 0; + cursor: pointer; + + &:active { + opacity: 0.8; + } } } diff --git a/src/other_pages/comment_reply/index.tsx b/src/other_pages/comment_reply/index.tsx index 7742e58..3c1cbb1 100644 --- a/src/other_pages/comment_reply/index.tsx +++ b/src/other_pages/comment_reply/index.tsx @@ -2,13 +2,13 @@ import { useState, useEffect } from "react"; import { View, Text, ScrollView, Image } from "@tarojs/components"; import { Avatar } from "@nutui/nutui-react-taro"; import { withAuth, EmptyState } from "@/components"; -import noticeService from "@/services/noticeService"; +import commentService, { CommentActivity } from "@/services/commentService"; import Taro from "@tarojs/taro"; import "./index.scss"; // 评论/回复类型定义 interface CommentReplyItem { - id: string; + id: number; user_avatar: string; user_nickname: string; action_type: "comment" | "reply"; // 评论了你的球局 / 回复了你的评论 @@ -16,8 +16,8 @@ interface CommentReplyItem { content: string; original_comment?: string; // 被回复的评论内容 activity_image: string; - activity_id?: string; - is_read: number; + activity_id: number; + activity_title: string; } const CommentReply = () => { @@ -34,23 +34,24 @@ const CommentReply = () => { setLoading(true); try { - const res = await noticeService.getNotificationList({ - notification_type: "comment", // 筛选评论类型 + const res = await commentService.getMyActivities({ + page: 1, + pageSize: 20, }); - if (res.code === 0) { + if (res.code === 0 && res.data) { // 映射数据 - const mappedList = res.data.list.map((item: any) => ({ + const mappedList = res.data.rows.map((item: CommentActivity) => ({ id: item.id, - user_avatar: item.related_user_avatar || "", - user_nickname: item.related_user_nickname || "匿名用户", - action_type: (item.notification_type === "reply" ? "reply" : "comment") as "comment" | "reply", - time: item.created_at, + user_avatar: item.user?.avatar_url || "", + user_nickname: item.user?.nickname || "匿名用户", + action_type: item.type === "reply" ? "reply" as const : "comment" as const, + time: item.create_time, content: item.content || "", - original_comment: item.original_content || "", - activity_image: item.activity_image || "", - activity_id: item.related_activity_id || "", - is_read: item.is_read, + original_comment: item.parent_comment?.content || "", + activity_image: item.game?.image_list?.[0] || "", + activity_id: item.game_id, + activity_title: item.game?.title || "", })); setCommentList(mappedList); @@ -98,6 +99,13 @@ const CommentReply = () => { // TODO: 跳转到回复页面或弹出回复框 }; + // 处理点击球局 + const handleGameClick = (gameId: number) => { + Taro.navigateTo({ + url: `/game_pages/detail/index?id=${gameId}`, + }); + }; + // 处理返回 const handleBack = () => { Taro.navigateBack(); @@ -136,14 +144,22 @@ const CommentReply = () => { {/* 回复按钮 */} handleReply(item)}> - + 回复 {/* 右侧球局图片 */} - + handleGameClick(item.activity_id)} + /> ); }; diff --git a/src/other_pages/new_follow/index.tsx b/src/other_pages/new_follow/index.tsx index 1d44b56..8b88513 100644 --- a/src/other_pages/new_follow/index.tsx +++ b/src/other_pages/new_follow/index.tsx @@ -2,20 +2,21 @@ import { useState, useEffect } from "react"; import { View, Text, ScrollView } from "@tarojs/components"; import { Avatar } from "@nutui/nutui-react-taro"; import { withAuth, EmptyState } from "@/components"; -import noticeService from "@/services/noticeService"; +import FollowService from "@/services/followService"; import Taro from "@tarojs/taro"; import "./index.scss"; // 关注项类型定义 interface FollowItem { - id: string; - user_id: string; + id: number; + user_id: number; user_avatar: string; user_nickname: string; user_signature?: string; + city?: string; + ntrp_level?: string; time: string; is_mutual: boolean; // 是否互相关注 - is_read: number; } const NewFollow = () => { @@ -32,21 +33,20 @@ const NewFollow = () => { setLoading(true); try { - const res = await noticeService.getNotificationList({ - notification_type: "follow", // 筛选关注类型 - }); + const res = await FollowService.get_new_fans_list(1, 20); - if (res.code === 0) { + if (res.list) { // 映射数据 - const mappedList = res.data.list.map((item: any) => ({ + const mappedList = res.list.map((item: any) => ({ id: item.id, - user_id: item.related_user_id || "", - user_avatar: item.related_user_avatar || "", - user_nickname: item.related_user_nickname || "匿名用户", - user_signature: item.related_user_signature || "", - time: item.created_at, - is_mutual: item.is_mutual_follow || false, - is_read: item.is_read, + user_id: item.id, + user_avatar: item.avatar_url || "", + user_nickname: item.nickname || "匿名用户", + user_signature: item.personal_profile || "", + city: item.city || "", + ntrp_level: item.ntrp_level || "", + time: item.follow_time, + is_mutual: item.is_mutual || false, })); setFollowList(mappedList); @@ -93,8 +93,7 @@ const NewFollow = () => { } try { - // TODO: 调用关注接口 - // await userService.followUser({ user_id: item.user_id }); + await FollowService.follow_back(item.user_id); Taro.showToast({ title: "关注成功", @@ -125,7 +124,7 @@ const NewFollow = () => { }; // 处理点击用户 - const handleUserClick = (userId: string) => { + const handleUserClick = (userId: number) => { Taro.navigateTo({ url: `/user_pages/other/index?user_id=${userId}`, }); diff --git a/src/services/commentService.ts b/src/services/commentService.ts new file mode 100644 index 0000000..88913c6 --- /dev/null +++ b/src/services/commentService.ts @@ -0,0 +1,94 @@ +import httpService from "./httpService"; +import type { ApiResponse } from "./httpService"; + +// 评论项接口定义 +export interface CommentActivity { + id: number; + type: "comment" | "reply"; + activity_type: string; + game_id: number; + parent_id: number | null; + content: string; + like_count: number; + reply_count: number; + create_time: string; + user: { + id: number; + nickname: string; + province: string; + avatar_url: string; + }; + game: { + id: number; + title: string; + start_time: string; + location_name: string; + image_list?: string[]; + }; + reply_to_user: { + id: number; + nickname: string; + avatar_url: string; + } | null; + parent_comment: { + id: number; + content: string; + user_id: number; + user_nickname: string; + } | null; +} + +// 获取评论动态请求参数 +export interface GetMyActivitiesParams { + page?: number; + pageSize?: number; +} + +// 评论动态列表响应 +export interface CommentActivitiesResponse { + rows: CommentActivity[]; + count: number; + page: number; + pageSize: number; + totalPages: number; +} + +class CommentService { + // 获取当前用户的评论和回复动态 + async getMyActivities(params: GetMyActivitiesParams = {}): Promise> { + const { page = 1, pageSize = 10 } = params; + return httpService.post("/comments/my_activities", { page, pageSize }, { showLoading: false }); + } + + // 发表评论 + async createComment(game_id: number, content: string): Promise> { + return httpService.post("/comments/create", { game_id, content }); + } + + // 回复评论 + async replyComment(parent_id: number, reply_to_user_id: number, content: string): Promise> { + return httpService.post("/comments/reply", { parent_id, reply_to_user_id, content }); + } + + // 获取评论列表 + async getCommentList(game_id: number, page: number = 1, pageSize: number = 10): Promise> { + return httpService.post("/comments/list", { game_id, page, pageSize }); + } + + // 点赞/取消点赞评论 + async likeComment(comment_id: number): Promise> { + return httpService.post("/comments/like", { comment_id }); + } + + // 删除评论 + async deleteComment(comment_id: number): Promise> { + return httpService.post("/comments/delete", { comment_id }); + } + + // 获取评论的所有回复 + async getCommentReplies(comment_id: number, page: number = 1, pageSize: number = 10): Promise> { + return httpService.post("/comments/replies", { comment_id, page, pageSize }); + } +} + +export default new CommentService(); diff --git a/src/services/followService.ts b/src/services/followService.ts index acf6e3f..0589ee1 100644 --- a/src/services/followService.ts +++ b/src/services/followService.ts @@ -84,6 +84,34 @@ export class FollowService { } } + // 获取新增粉丝列表(新关注的人) + static async get_new_fans_list( + page: number = 1, + page_size: number = 20 + ): Promise { + try { + const response = await httpService.post( + '/user_follow/new_fans_list', + { page, page_size }, + { showLoading: false } + ); + + if (response.code === 0) { + // 为数据添加 follow_status 标识 + const list = response.data.list.map(user => ({ + ...user, + follow_status: user.is_mutual ? 'mutual_follow' as const : 'follower' as const + })); + return { ...response.data, list }; + } else { + throw new Error(response.message || '获取新增粉丝列表失败'); + } + } catch (error) { + console.error('获取新增粉丝列表失败:', error); + return { list: [], total: 0 }; + } + } + // 获取我的关注列表 static async get_following_list( page: number = 1, diff --git a/src/static/message/reply-icon.svg b/src/static/message/reply-icon.svg new file mode 100644 index 0000000..0d560d2 --- /dev/null +++ b/src/static/message/reply-icon.svg @@ -0,0 +1,6 @@ + + + + + + From 274c2e4b16ee719db8ac4d82ab78d66681d12cbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=88=90?= Date: Wed, 1 Oct 2025 01:55:09 +0800 Subject: [PATCH 4/5] 1 --- src/other_pages/comment_reply/index.tsx | 40 +++++++++ src/other_pages/message/index.tsx | 23 +++++ src/other_pages/new_follow/index.tsx | 108 ++++++++++++++++++------ 3 files changed, 145 insertions(+), 26 deletions(-) diff --git a/src/other_pages/comment_reply/index.tsx b/src/other_pages/comment_reply/index.tsx index 3c1cbb1..8e94dd3 100644 --- a/src/other_pages/comment_reply/index.tsx +++ b/src/other_pages/comment_reply/index.tsx @@ -23,6 +23,7 @@ interface CommentReplyItem { const CommentReply = () => { const [commentList, setCommentList] = useState([]); const [loading, setLoading] = useState(false); + const [refreshing, setRefreshing] = useState(false); useEffect(() => { getCommentReplyList(); @@ -111,6 +112,42 @@ const CommentReply = () => { Taro.navigateBack(); }; + // 处理下拉刷新 + const handleRefresh = async () => { + setRefreshing(true); + try { + const res = await commentService.getMyActivities({ + page: 1, + pageSize: 20, + }); + + if (res.code === 0 && res.data) { + const mappedList = res.data.rows.map((item: CommentActivity) => ({ + id: item.id, + user_avatar: item.user?.avatar_url || "", + user_nickname: item.user?.nickname || "匿名用户", + action_type: item.type === "reply" ? "reply" as const : "comment" as const, + time: item.create_time, + content: item.content || "", + original_comment: item.parent_comment?.content || "", + activity_image: item.game?.image_list?.[0] || "", + activity_id: item.game_id, + activity_title: item.game?.title || "", + })); + + setCommentList(mappedList); + } + } catch (e) { + Taro.showToast({ + title: "刷新失败", + icon: "none", + duration: 2000, + }); + } finally { + setRefreshing(false); + } + }; + // 渲染评论/回复项 const renderCommentItem = (item: CommentReplyItem) => { const actionText = item.action_type === "comment" ? "评论了你的球局" : "回复了你的评论"; @@ -183,6 +220,9 @@ const CommentReply = () => { scrollWithAnimation enhanced showScrollbar={false} + refresherEnabled={true} + refresherTriggered={refreshing} + onRefresherRefresh={handleRefresh} > {commentList.length > 0 ? ( diff --git a/src/other_pages/message/index.tsx b/src/other_pages/message/index.tsx index 60441df..342b4c3 100644 --- a/src/other_pages/message/index.tsx +++ b/src/other_pages/message/index.tsx @@ -30,6 +30,7 @@ const Message = () => { const [messageList, setMessageList] = useState([]); const [loading, setLoading] = useState(false); const [reachedBottom, setReachedBottom] = useState(false); + const [refreshing, setRefreshing] = useState(false); // 获取消息列表 const getNoticeList = async () => { @@ -96,6 +97,25 @@ const Message = () => { } }; + // 处理下拉刷新 + const handleRefresh = async () => { + setRefreshing(true); + try { + const res = await noticeService.getNotificationList({}); + if (res.code === 0) { + setMessageList(res.data.list || []); + } + } catch (e) { + Taro.showToast({ + title: "刷新失败", + icon: "none", + duration: 2000, + }); + } finally { + setRefreshing(false); + } + }; + // 格式化时间显示 const formatTime = (timeStr: string) => { if (!timeStr) return ""; @@ -173,6 +193,9 @@ const Message = () => { showScrollbar={false} lowerThreshold={50} onScrollToLower={handleScrollToLower} + refresherEnabled={true} + refresherTriggered={refreshing} + onRefresherRefresh={handleRefresh} > {filteredMessages.length > 0 ? ( diff --git a/src/other_pages/new_follow/index.tsx b/src/other_pages/new_follow/index.tsx index 8b88513..c7d722c 100644 --- a/src/other_pages/new_follow/index.tsx +++ b/src/other_pages/new_follow/index.tsx @@ -22,6 +22,7 @@ interface FollowItem { const NewFollow = () => { const [followList, setFollowList] = useState([]); const [loading, setLoading] = useState(false); + const [refreshing, setRefreshing] = useState(false); useEffect(() => { getFollowList(); @@ -69,10 +70,15 @@ const NewFollow = () => { const date = new Date(timeStr); const now = new Date(); const diff = now.getTime() - date.getTime(); + const minutes = Math.floor(diff / (1000 * 60)); const hours = Math.floor(diff / (1000 * 60 * 60)); const days = Math.floor(diff / (1000 * 60 * 60 * 24)); - if (hours < 24) { + if (minutes < 1) { + return "刚刚"; + } else if (minutes < 60) { + return `${minutes}分钟前`; + } else if (hours < 24) { return `${hours}小时前`; } else if (days === 1) { return "1天前"; @@ -85,33 +91,49 @@ const NewFollow = () => { } }; - // 处理回关 + // 处理回关/取消关注 const handleFollowBack = async (item: FollowItem) => { - if (item.is_mutual) { - // 已经互相关注,无需操作 - return; - } - try { - await FollowService.follow_back(item.user_id); - - Taro.showToast({ - title: "关注成功", - icon: "success", - duration: 2000, - }); - - // 更新列表 - setFollowList(prevList => - prevList.map(followItem => - followItem.id === item.id - ? { ...followItem, is_mutual: true } - : followItem - ) - ); + if (item.is_mutual) { + // 已经互相关注,点击取消关注 + await FollowService.unfollow_user(item.user_id); + + Taro.showToast({ + title: "取消关注成功", + icon: "success", + duration: 2000, + }); + + // 更新列表 + setFollowList(prevList => + prevList.map(followItem => + followItem.id === item.id + ? { ...followItem, is_mutual: false } + : followItem + ) + ); + } else { + // 未互关,点击回关 + await FollowService.follow_back(item.user_id); + + Taro.showToast({ + title: "关注成功", + icon: "success", + duration: 2000, + }); + + // 更新列表 + setFollowList(prevList => + prevList.map(followItem => + followItem.id === item.id + ? { ...followItem, is_mutual: true } + : followItem + ) + ); + } } catch (e) { Taro.showToast({ - title: "关注失败", + title: item.is_mutual ? "取消关注失败" : "关注失败", icon: "none", duration: 2000, }); @@ -130,6 +152,38 @@ const NewFollow = () => { }); }; + // 处理下拉刷新 + const handleRefresh = async () => { + setRefreshing(true); + try { + const res = await FollowService.get_new_fans_list(1, 20); + + if (res.list) { + const mappedList = res.list.map((item: any) => ({ + id: item.id, + user_id: item.id, + user_avatar: item.avatar_url || "", + user_nickname: item.nickname || "匿名用户", + user_signature: item.personal_profile || "", + city: item.city || "", + ntrp_level: item.ntrp_level || "", + time: item.follow_time, + is_mutual: item.is_mutual || false, + })); + + setFollowList(mappedList); + } + } catch (e) { + Taro.showToast({ + title: "刷新失败", + icon: "none", + duration: 2000, + }); + } finally { + setRefreshing(false); + } + }; + // 渲染关注项 const renderFollowItem = (item: FollowItem) => { return ( @@ -148,8 +202,7 @@ const NewFollow = () => { {item.user_signature} ) : ( - 开始关注你了,期待你的回关 - {formatTime(item.time)} + {formatTime(item.time)}关注了你 )} @@ -184,6 +237,9 @@ const NewFollow = () => { scrollWithAnimation enhanced showScrollbar={false} + refresherEnabled={true} + refresherTriggered={refreshing} + onRefresherRefresh={handleRefresh} > {followList.length > 0 ? ( From 7b906def5aeb20b13a230190bfbdd50245f5275d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=88=90?= Date: Wed, 1 Oct 2025 01:58:32 +0800 Subject: [PATCH 5/5] 1 --- src/config/env.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/env.ts b/src/config/env.ts index 0a5c281..4587a0e 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -24,8 +24,8 @@ const envConfigs: Record = { // 开发环境 development: { name: '开发环境', - // apiBaseURL: 'https://sit.light120.com', - apiBaseURL: 'http://localhost:9098', + apiBaseURL: 'https://sit.light120.com', + // apiBaseURL: 'http://localhost:9098', timeout: 15000, enableLog: true, enableMock: true,