hookehuyr

docs(components): 更新组件文档和 CHANGELOG

- 修正 RichTextRenderer.vue 注释说明(scoped 样式相关)
- 更新 components/README.md,添加 RichTextRenderer 组件文档
- 更新 CHANGELOG.md,记录今日计划书表单调整

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 # CHANGELOG 1 # CHANGELOG
2 2
3 +## [2026-02-28] - 储蓄类计划书表单调整
4 +
5 +### 优化
6 +- 移除储蓄类产品的"吸烟"字段(客户需求)
7 +- 切断年龄与出生日期的自动联动,改为独立填写(客户需求)
8 +- 更新储蓄类提交字段映射,移除吸烟字段
9 +
10 +### 文档
11 +- 更新 components/README.md,添加 RichTextRenderer 组件文档
12 +- 修正 RichTextRenderer.vue 的注释说明
13 +
14 +---
15 +
3 ## [2026-02-27] - 文章详情富文本样式优化 16 ## [2026-02-27] - 文章详情富文本样式优化
4 17
5 ### 修复 18 ### 修复
......
...@@ -15,7 +15,8 @@ components/ ...@@ -15,7 +15,8 @@ components/
15 ├── icons/ # 图标组件 15 ├── icons/ # 图标组件
16 ├── list/ # 列表组件 16 ├── list/ # 列表组件
17 ├── navigation/ # 导航组件 17 ├── navigation/ # 导航组件
18 -└── plan/ # 计划书组件 18 +├── plan/ # 计划书组件
19 +└── RichTextRenderer.vue # 富文本渲染组件
19 ``` 20 ```
20 21
21 --- 22 ---
...@@ -143,6 +144,32 @@ import LoadMoreList from '@/components/list/LoadMoreList/index.vue' ...@@ -143,6 +144,32 @@ import LoadMoreList from '@/components/list/LoadMoreList/index.vue'
143 144
144 --- 145 ---
145 146
147 +### 富文本组件
148 +
149 +| 组件 | 功能 | Props |
150 +|------|------|-------|
151 +| [`RichTextRenderer`](#richtextrenderervue) | 富文本渲染 | content, enableTransform |
152 +
153 +**使用示例**
154 +```vue
155 +<template>
156 + <RichTextRenderer
157 + :content="htmlContent"
158 + :enable-transform="true"
159 + @image-preview="handlePreview"
160 + @file-click="handleFileClick"
161 + />
162 +</template>
163 +
164 +<script setup>
165 +import RichTextRenderer from '@/components/RichTextRenderer.vue'
166 +
167 +const htmlContent = '<p>HTML 内容</p>'
168 +</script>
169 +```
170 +
171 +---
172 +
146 ### 计划书组件 (plan/) 173 ### 计划书组件 (plan/)
147 174
148 #### 弹窗容器 175 #### 弹窗容器
...@@ -365,6 +392,55 @@ IconFont 图标组件。 ...@@ -365,6 +392,55 @@ IconFont 图标组件。
365 392
366 --- 393 ---
367 394
395 +### RichTextRenderer.vue
396 +
397 +富文本渲染组件,基于 Taro v-html 实现。
398 +
399 +**Props**
400 +| Prop | 类型 | 默认值 | 说明 |
401 +|------|------|--------|------|
402 +| content | String | '' | HTML 内容字符串 |
403 +| enableTransform | Boolean | true | 是否启用图片自动处理 |
404 +
405 +**Events**
406 +| Event | 说明 | 参数 |
407 +|-------|------|------|
408 +| image-preview | 图片预览时触发 | { src } |
409 +| file-click | 文件链接点击时触发 | { url, fileName } |
410 +
411 +**功能特性**
412 +- HTML 实体自动解码
413 +- `<a>` 标签自动替换为 `<div data-href="">`
414 +- 图片长按预览
415 +- 文件链接点击处理
416 +- 自动处理图片样式(widthFix, max-width: 100%)
417 +
418 +**使用示例**
419 +```vue
420 +<template>
421 + <RichTextRenderer
422 + :content="article.content"
423 + :enable-transform="true"
424 + @image-preview="handlePreview"
425 + @file-click="handleFileClick"
426 + />
427 +</template>
428 +
429 +<script setup>
430 +import RichTextRenderer from '@/components/RichTextRenderer.vue'
431 +
432 +const handlePreview = ({ src }) => {
433 + console.log('预览图片:', src)
434 +}
435 +
436 +const handleFileClick = ({ url, fileName }) => {
437 + console.log('打开文件:', fileName, url)
438 +}
439 +</script>
440 +```
441 +
442 +---
443 +
368 ## 📖 最佳实践 444 ## 📖 最佳实践
369 445
370 ### 组件抽取原则 446 ### 组件抽取原则
......
...@@ -26,7 +26,8 @@ import { ref, watch, nextTick } from 'vue' ...@@ -26,7 +26,8 @@ import { ref, watch, nextTick } from 'vue'
26 import Taro from '@tarojs/taro' 26 import Taro from '@tarojs/taro'
27 import { $ } from '@tarojs/extend' 27 import { $ } from '@tarojs/extend'
28 import { useFileOperation } from '@/composables/useFileOperation' 28 import { useFileOperation } from '@/composables/useFileOperation'
29 -// 注意:不再导入全局的 @tarojs/taro/html.css,改用 scoped 样式 29 +// 注意:不再导入全局的 @tarojs/taro/html.css
30 +// 改为在组件内部内联完整的 html.css 样式,通过 #rich-text-renderer ID 选择器限制作用范围
30 31
31 /** 32 /**
32 * 组件属性 33 * 组件属性
......