docs(components): 补充 ArticleCard 和 PeriodInput 组件文档
- 新增 ArticleCard 组件文档(文章卡片) - 新增 PeriodInput 组件文档(提取期自定义输入) - 更新组件索引表格,添加缺失的组件条目 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Showing
1 changed file
with
115 additions
and
0 deletions
| ... | @@ -51,6 +51,7 @@ import TabBar from '@/components/navigation/TabBar.vue' | ... | @@ -51,6 +51,7 @@ import TabBar from '@/components/navigation/TabBar.vue' |
| 51 | |------|------|-------| | 51 | |------|------|-------| |
| 52 | | [`MaterialCard`](#materialcardvue) | 资料/文档卡片 | title, icon, learners, docType, collected | | 52 | | [`MaterialCard`](#materialcardvue) | 资料/文档卡片 | title, icon, learners, docType, collected | |
| 53 | | [`ProductCard`](#productcardvue) | 产品卡片 | name, type, tags, collected | | 53 | | [`ProductCard`](#productcardvue) | 产品卡片 | name, type, tags, collected | |
| 54 | +| [`ArticleCard`](#articlecardvue) | 文章卡片 | id, title, excerpt, coverUrl, date, learners, readPeoplePercent, collected, showCover | | ||
| 54 | 55 | ||
| 55 | **使用示例**: | 56 | **使用示例**: |
| 56 | ```vue | 57 | ```vue |
| ... | @@ -187,6 +188,7 @@ const htmlContent = '<p>HTML 内容</p>' | ... | @@ -187,6 +188,7 @@ const htmlContent = '<p>HTML 内容</p>' |
| 187 | | [`SelectPickerGlobal`](#selectpickerglobalvue) | 选项选择器 | | 188 | | [`SelectPickerGlobal`](#selectpickerglobalvue) | 选项选择器 | |
| 188 | | [`AmountKeyboard`](#amountkeyboardvue) | 金额键盘 | | 189 | | [`AmountKeyboard`](#amountkeyboardvue) | 金额键盘 | |
| 189 | | [`PaymentPeriodRadio`](#paymentperiodradiovue) | 缴费年期单选 | | 190 | | [`PaymentPeriodRadio`](#paymentperiodradiovue) | 缴费年期单选 | |
| 191 | +| [`PeriodInput`](#periodinputvue) | 提取期自定义输入 | | ||
| 190 | | [`RadioGroup`](#radiogroupvue) | 单选分组 | | 192 | | [`RadioGroup`](#radiogroupvue) | 单选分组 | |
| 191 | 193 | ||
| 192 | #### 模板 (PlanTemplates/) | 194 | #### 模板 (PlanTemplates/) |
| ... | @@ -322,6 +324,54 @@ emit('change', newValue) | ... | @@ -322,6 +324,54 @@ emit('change', newValue) |
| 322 | 324 | ||
| 323 | --- | 325 | --- |
| 324 | 326 | ||
| 327 | +### ArticleCard.vue | ||
| 328 | + | ||
| 329 | +文章卡片,展示文章标题、简介、封面图、日期和操作按钮。 | ||
| 330 | + | ||
| 331 | +**Props**: | ||
| 332 | +| Prop | 类型 | 默认值 | 说明 | | ||
| 333 | +|------|------|--------|------| | ||
| 334 | +| id | Number/String | - | 文章 ID | | ||
| 335 | +| title | String | - | 文章标题 | | ||
| 336 | +| excerpt | String | '' | 文章简介 | | ||
| 337 | +| coverUrl | String | '' | 封面图 URL | | ||
| 338 | +| date | String | '' | 发布日期(格式:YYYY-MM-DD HH:mm:ss) | | ||
| 339 | +| learners | String/Number | '' | 学习人数 | | ||
| 340 | +| readPeoplePercent | Number | null | 学习人数百分比(热度) | | ||
| 341 | +| collected | Boolean | false | 是否已收藏 | | ||
| 342 | +| showCover | Boolean | false | 是否显示封面图 | | ||
| 343 | + | ||
| 344 | +**Events**: | ||
| 345 | +| Event | 说明 | 参数 | | ||
| 346 | +|-------|------|------| | ||
| 347 | +| viewed | 查看文章时触发 | { id } | | ||
| 348 | +| collectChanged | 收藏状态改变时触发 | { id, title, excerpt, coverUrl, date, collected } | | ||
| 349 | + | ||
| 350 | +**使用示例**: | ||
| 351 | +```vue | ||
| 352 | +<template> | ||
| 353 | + <ArticleCard | ||
| 354 | + :id="article.id" | ||
| 355 | + :title="article.title" | ||
| 356 | + :excerpt="article.excerpt" | ||
| 357 | + :cover-url="article.coverUrl" | ||
| 358 | + :date="article.createdAt" | ||
| 359 | + :learners="article.learners" | ||
| 360 | + :read-people-percent="article.readPeoplePercent" | ||
| 361 | + :collected="article.collected" | ||
| 362 | + :show-cover="true" | ||
| 363 | + @viewed="handleViewed" | ||
| 364 | + @collect-changed="handleCollectChanged" | ||
| 365 | + /> | ||
| 366 | +</template> | ||
| 367 | + | ||
| 368 | +<script setup> | ||
| 369 | +import ArticleCard from '@/components/cards/ArticleCard.vue' | ||
| 370 | +</script> | ||
| 371 | +``` | ||
| 372 | + | ||
| 373 | +--- | ||
| 374 | + | ||
| 325 | ### MaterialCard.vue | 375 | ### MaterialCard.vue |
| 326 | 376 | ||
| 327 | 资料/文档卡片,展示资料信息和操作按钮。 | 377 | 资料/文档卡片,展示资料信息和操作按钮。 |
| ... | @@ -441,6 +491,71 @@ const handleFileClick = ({ url, fileName }) => { | ... | @@ -441,6 +491,71 @@ const handleFileClick = ({ url, fileName }) => { |
| 441 | 491 | ||
| 442 | --- | 492 | --- |
| 443 | 493 | ||
| 494 | +### PeriodInput.vue | ||
| 495 | + | ||
| 496 | +提取期自定义输入组件,支持整数年期和快捷选项(终身、一笔过)。 | ||
| 497 | + | ||
| 498 | +**Props**: | ||
| 499 | +| Prop | 类型 | 默认值 | 说明 | | ||
| 500 | +|------|------|--------|------| | ||
| 501 | +| visible | Boolean | false | 弹窗显示状态(v-model:visible) | | ||
| 502 | +| modelValue | String | '' | 绑定的值(v-model) | | ||
| 503 | +| label | String | '' | 标签文本 | | ||
| 504 | +| required | Boolean | false | 是否必填 | | ||
| 505 | +| placeholder | String | '请选择或输入提取期' | 占位符文本 | | ||
| 506 | +| inputLabel | String | '请输入提取期' | 弹窗内输入提示文本 | | ||
| 507 | +| inputPlaceholder | String | '请输入年数' | 输入框占位符 | | ||
| 508 | +| validationRules | Object | { min: 1, max: 100, ... } | 验证规则 | | ||
| 509 | +| hideTrigger | Boolean | false | 是否隐藏触发区域 | | ||
| 510 | + | ||
| 511 | +**Events**: | ||
| 512 | +| Event | 说明 | 参数 | | ||
| 513 | +|-------|------|------| | ||
| 514 | +| update:visible | 更新弹窗显示状态 | boolean | | ||
| 515 | +| update:modelValue | 更新绑定值 | string | | ||
| 516 | +| confirm | 确认输入 | string(确认的提取期值) | | ||
| 517 | +| cancel | 取消输入 | - | | ||
| 518 | + | ||
| 519 | +**功能特性**: | ||
| 520 | +- 整数年期约束(1-100年) | ||
| 521 | +- 快捷选项:终身、一笔过 | ||
| 522 | +- 实时验证输入格式 | ||
| 523 | +- 可扩展的验证器接口 | ||
| 524 | +- 支持全局弹窗管理 | ||
| 525 | + | ||
| 526 | +**使用示例**: | ||
| 527 | +```vue | ||
| 528 | +<template> | ||
| 529 | + <PeriodInput | ||
| 530 | + v-model:visible="showPeriodInput" | ||
| 531 | + v-model="periodValue" | ||
| 532 | + label="提取期" | ||
| 533 | + input-label="请输入提取期" | ||
| 534 | + :validation-rules="{ min: 1, max: 100 }" | ||
| 535 | + @confirm="handlePeriodConfirm" | ||
| 536 | + @cancel="handleCancel" | ||
| 537 | + /> | ||
| 538 | +</template> | ||
| 539 | + | ||
| 540 | +<script setup> | ||
| 541 | +import { ref } from 'vue' | ||
| 542 | +import PeriodInput from '@/components/plan/PlanFields/PeriodInput.vue' | ||
| 543 | + | ||
| 544 | +const showPeriodInput = ref(false) | ||
| 545 | +const periodValue = ref('') | ||
| 546 | + | ||
| 547 | +const handlePeriodConfirm = (value) => { | ||
| 548 | + console.log('确认提取期:', value) | ||
| 549 | +} | ||
| 550 | + | ||
| 551 | +const handleCancel = () => { | ||
| 552 | + console.log('取消输入') | ||
| 553 | +} | ||
| 554 | +</script> | ||
| 555 | +``` | ||
| 556 | + | ||
| 557 | +--- | ||
| 558 | + | ||
| 444 | ## 📖 最佳实践 | 559 | ## 📖 最佳实践 |
| 445 | 560 | ||
| 446 | ### 组件抽取原则 | 561 | ### 组件抽取原则 | ... | ... |
-
Please register or login to post a comment