电影影评+评论:详情浮层接「评价与评论」真功能 laoyang/FamilyBook#27
用户原话(2026-10-28):「鸿蒙端对齐网页端」。观影详情原来只能看平均分。
现在:
1) FbMovieRepo 加影评/评论类型 + reviews/saveReview/deleteReview/
addReviewComment/deleteReviewComment 五个 API + 解析(含感受目录、评论树、mine 判断)
2) 新组件 FbMovieReviewSheet:我的影评(打分 1-10 星 + 观后感受多选 + 正文 +
改/删)、全部影评列表(含评论树、回复、逐条删除)
3) FbMovieDetailSheet 加「评价与评论」入口 + 内嵌影评浮层
⚠️ 影评数/均分仍以列表项为准(详情接口不返回,与既有注释一致)。
编译 BUILD SUCCESSFUL;服务端冒烟 _i27_movie_review_api.py 22/0 + 反证命中。
This commit is contained in:
@@ -15,13 +15,14 @@
|
||||
* 加载中 / 成功 / 失败。别只画成功态 —— 断网时用户会看到"空白浮层"。
|
||||
*/
|
||||
|
||||
import { FbColors, FbMetric } from '../common/Theme';
|
||||
import { FbColors, FbMetric, fbAlpha } from '../common/Theme';
|
||||
import { FbModuleDef, fbModuleOf, fbThemeVars } from '../model/Modules';
|
||||
import { FbMovieAttendeeRow, FbMovieDetail } from '../data/FbMovieRepo';
|
||||
import { FB_TOKEN_STORE } from '../data/FbTokenStore';
|
||||
import { FbAvatar, FbRating } from './Widgets';
|
||||
import { FbSheetRing } from './FbSheetRing';
|
||||
import { FbSheetClose } from './FbSheetClose';
|
||||
import { FbMovieReviewSheet } from './FbMovieReviewSheet';
|
||||
import { fbImageSrc } from '../data/FbAttachQueue';
|
||||
|
||||
/**
|
||||
@@ -45,6 +46,8 @@ export struct FbMovieDetailSheet {
|
||||
/** 列表项带过来的评分(详情接口不给,见 FbMovieRepo.detail 的说明) */
|
||||
@Param listRating: number = 0;
|
||||
@Param listReviewCount: number = 0;
|
||||
/** 影评/评论浮层是否打开(工单 #27) */
|
||||
@Local reviewsOpen: boolean = false;
|
||||
/** 关闭回调 */
|
||||
@Event onClose: () => void = (): void => {
|
||||
};
|
||||
@@ -168,6 +171,21 @@ export struct FbMovieDetailSheet {
|
||||
if (this.viewerOpen) {
|
||||
this.viewer()
|
||||
}
|
||||
|
||||
// ---- 影评 + 评论浮层(工单 #27)----
|
||||
if (this.reviewsOpen && this.detail !== null) {
|
||||
FbMovieReviewSheet({
|
||||
movieId: this.detail.id,
|
||||
movieTitle: this.detail.title,
|
||||
accent: this.accentColor(),
|
||||
onClose: (): void => {
|
||||
this.reviewsOpen = false;
|
||||
},
|
||||
onChanged: (): void => {
|
||||
// 评分/条数可能变了,但详情接口不返回,不在这里强刷
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
.width('100%')
|
||||
// ⚠️ 高度随内容自适应(浮层是"底部抽屉"形态)。
|
||||
@@ -417,6 +435,20 @@ export struct FbMovieDetailSheet {
|
||||
.alignItems(VerticalAlign.Center)
|
||||
}
|
||||
|
||||
// ---- 评价与评论入口(工单 #27)----
|
||||
Row() {
|
||||
Text('评价与评论' + (this.listReviewCount > 0 ? '(' + this.listReviewCount.toString() + ')' : ''))
|
||||
.fontSize(FbMetric.fontSmall)
|
||||
.fontColor(this.accentColor())
|
||||
.padding({ left: 12, right: 12, top: 7, bottom: 7 })
|
||||
.borderRadius(FbMetric.radiusPill)
|
||||
.backgroundColor(fbAlpha(this.accentColor(), 0.1))
|
||||
.onClick((): void => {
|
||||
this.reviewsOpen = true;
|
||||
})
|
||||
}
|
||||
.width('100%')
|
||||
|
||||
// ---- 影院 ----
|
||||
if (d.cinemaName !== '') {
|
||||
Column({ space: 4 }) {
|
||||
|
||||
Reference in New Issue
Block a user