docs(components): 更新组件文档和 CHANGELOG
- 修正 RichTextRenderer.vue 注释说明(scoped 样式相关) - 更新 components/README.md,添加 RichTextRenderer 组件文档 - 更新 CHANGELOG.md,记录今日计划书表单调整 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Showing
3 changed files
with
92 additions
and
2 deletions
| 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 | * 组件属性 | ... | ... |
-
Please register or login to post a comment