showcase/wwwroot/index.ui
yumoqing 1cce05a119 feat: showcase模块 - 产品展示平台(MVP)
- 4张数据表: posts/comments/likes/downloads
- 5种媒体类型: music/mtv/short_video/long_video/ktv
- 社交功能: 点赞(toggle)、评论(嵌套回复)
- KTV付费下载: 购买记录、下载计数
- 11个dspy API端点
- 3个CRUD管理界面(posts/comments/downloads)
- Feed流(类型筛选+分页)、作品详情(浏览计数+点赞状态)
- load_path.py RBAC权限注册
- 符合module/db-table/crud三规范
2026-06-11 14:46:02 +08:00

62 lines
3.3 KiB
XML

{
"widgettype": "VBox",
"options": {"width": "100%", "height": "100%", "padding": "0px"},
"subwidgets": [
{
"widgettype": "HBox",
"options": {"width": "100%", "padding": "16px 24px", "bgcolor": "var(--bricks-card-bg, #fff)", "borderBottom": "1px solid var(--bricks-border, #eee)"},
"subwidgets": [
{"widgettype": "Title", "options": {"text": "展示平台", "fontSize": "22px", "fontWeight": "bold", "flex": "1"}},
{
"widgettype": "HBox",
"options": {"gap": "8px"},
"subwidgets": [
{
"widgettype": "Button",
"options": {"label": "全部", "id": "btn_all", "cfontsize": 0.85},
"binds": [{"wid": "self", "event": "click", "actiontype": "registerfunction", "target": "filterByType", "options": {"type": ""}}]
},
{
"widgettype": "Button",
"options": {"label": "🎵 音乐", "id": "btn_music", "cfontsize": 0.85},
"binds": [{"wid": "self", "event": "click", "actiontype": "registerfunction", "target": "filterByType", "options": {"type": "music"}}]
},
{
"widgettype": "Button",
"options": {"label": "🎬 MTV", "id": "btn_mtv", "cfontsize": 0.85},
"binds": [{"wid": "self", "event": "click", "actiontype": "registerfunction", "target": "filterByType", "options": {"type": "mtv"}}]
},
{
"widgettype": "Button",
"options": {"label": "📱 短视频", "id": "btn_short", "cfontsize": 0.85},
"binds": [{"wid": "self", "event": "click", "actiontype": "registerfunction", "target": "filterByType", "options": {"type": "short_video"}}]
},
{
"widgettype": "Button",
"options": {"label": "🎞️ 长视频", "id": "btn_long", "cfontsize": 0.85},
"binds": [{"wid": "self", "event": "click", "actiontype": "registerfunction", "target": "filterByType", "options": {"type": "long_video"}}]
},
{
"widgettype": "Button",
"options": {"label": "🎤 KTV", "id": "btn_ktv", "cfontsize": 0.85},
"binds": [{"wid": "self", "event": "click", "actiontype": "registerfunction", "target": "filterByType", "options": {"type": "ktv"}}]
}
]
}
]
},
{
"widgettype": "VBox",
"id": "showcase_feed_container",
"options": {"width": "100%", "flex": "1", "padding": "16px 24px", "overflow": "auto"},
"subwidgets": [
{
"widgettype": "ResponsableBox",
"id": "showcase_feed_grid",
"options": {"gap": "16px", "minWidth": "280px"}
}
]
}
]
}