hookehuyr

fix(plan): 修正储蓄类模板提取计划逻辑错误

- 移除"是否生成说明"字段与"款项提取"配置的强依赖关系
- "是否希望生成一份允许减少名义金额的提取说明?"现在作为独立字段
- 删除错误的 watch 监听器,该监听器在选择"否"时会错误清除字段
- 更新校验逻辑:withdrawal_enabled 改为可选字段
- 更新架构文档:修正三层结构描述为字段结构说明

影响文件:
- src/components/plan/PlanTemplates/SavingsTemplate.vue
- docs/plan/plan-entry-architecture.md

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
## [2026-02-13] - 储蓄类模板提取计划逻辑修正
### 修复
- 修正储蓄类产品模板的提取计划逻辑错误
- 移除"是否生成说明"字段与"款项提取"配置的强依赖关系
- "是否希望生成一份允许减少名义金额的提取说明?"现在作为独立字段,不影响提取方案配置
- 删除错误的 watch 监听器,该监听器在选择"否"时会错误地清除所有提取计划字段
- 更新校验逻辑:`withdrawal_enabled` 字段改为可选,不再强制校验
### 文档
- 更新 `docs/plan/plan-entry-architecture.md` 架构文档
- 从"三层结构"改为"字段结构说明",明确字段1为独立字段
- 更新组件设计代码示例,移除错误的 `v-if` 条件和 watch 监听器
---
**详细信息**
- **影响文件**: src/components/plan/PlanTemplates/SavingsTemplate.vue, docs/plan/plan-entry-architecture.md
- **技术栈**: Vue 3, Taro 4
- **测试状态**: 待测试
- **备注**: 提取方案配置现在始终显示(当配置启用时),不受"是否生成说明"字段影响
---
## [2026-02-13] - 消息详情页布局与状态优化
### 优化
......
......@@ -70,8 +70,7 @@
class="mb-5"
/>
<!-- 仅当选择"是"时才显示以下内容 -->
<template v-if="form.withdrawal_enabled === '是'">
<!-- 款项提取配置(始终显示,不受上面字段影响) -->
<h3 class="text-base font-semibold text-gray-900 mb-4">款项提取(允许减少名义金额)</h3>
<!-- 提取选项:指定提取金额 / 最高固定提取金额 -->
......@@ -165,7 +164,6 @@
class="mb-5"
/>
</template>
</template>
</div>
</div>
......@@ -364,25 +362,6 @@ const onWithdrawalModeChange = (mode) => {
}
/**
* 监听提取计划启用状态变化
* @description 当用户选择"否"时,清除所有提取计划相关字段
*/
watch(
() => form.withdrawal_enabled,
(newValue) => {
if (newValue === '否') {
// 清除所有提取计划相关字段
delete form.withdrawal_mode
delete form.specified_amount_type
delete form.withdrawal_start_age
delete form.withdrawal_period
delete form.annual_withdrawal_amount
delete form.annual_increase_percentage
}
}
)
/**
* 百分比输入限制(实时)
* @description 限制百分比输入为有效数值,最多2位小数
* 只允许输入数字和一个小数点
......@@ -453,17 +432,15 @@ const validate = () => {
// 提取计划校验
if (props.config.withdrawal_plan?.enabled) {
if (!form.withdrawal_enabled) {
Taro.showToast({ title: '请选择是否希望生成提取说明', icon: 'none' })
return false
}
// withdrawal_enabled 只是一个可选字段,不需要校验
// 真正需要校验的是提取方案配置
if (form.withdrawal_enabled === '是') {
if (!form.withdrawal_mode) {
Taro.showToast({ title: '请选择提取选项', icon: 'none' })
return false
}
// 根据选择的提取模式进行校验
if (form.withdrawal_mode === '指定提取金额') {
if (!form.specified_amount_type) {
Taro.showToast({ title: '请选择提取方式', icon: 'none' })
......@@ -508,7 +485,6 @@ const validate = () => {
}
}
}
}
return true
}
......