azon_seeker/plans/MulInputModal_modification.md
2026-01-21 14:59:05 +08:00

78 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MulInputModal.vue 修改计划
## 目标
修改 `src/sidepanel/views/components/MulInputModal.vue` 组件,使其支持从 Excel 复制一列值粘贴到输入框,并提供格式验证和确认后的消息通知。
## 需求详情
1. **输入格式**:每行一个值(换行分隔),不允许空行。
2. **实时验证**:在用户输入时检查格式是否正确,并给出提示。
3. **确认通知**:点击确认按钮后,显示 n-message 通知成功或失败。
## 当前组件分析
当前组件是一个简单的模态对话框,包含一个文本区域输入框。它通过 `v-model:show-modal` 控制显示,但没有处理输入值或验证逻辑。
## 设计修改
### 1. 模板修改
- 保留现有的 `n-modal``n-dialog` 结构。
- 修改 `n-dialog` 属性:
- 移除 `content` 属性(因为其内容与功能不符)。
- 动态设置确认按钮的文本和状态:格式正确时显示“确认”,格式错误时显示“格式错误”并禁用按钮。
- 增强 `n-input`
- 添加 `placeholder` 提示用户粘贴格式。
- 设置 `autosize` 适应多行内容。
- 绑定 `v-model:value` 到本地输入文本。
- 添加验证提示区域:
- 显示验证状态消息(成功/错误)。
- 显示行数统计。
### 2. 脚本修改
- 导入必要的 Vue 和 Naive UI API。
- 定义模型:
- `showModal`:控制模态框显示。
- `modelValue`:可选,用于双向绑定关键词数组(字符串数组)。
- 定义本地响应式数据:
- `inputText`:文本区域的绑定值。
- 计算属性 `validation`
- 根据输入文本实时验证格式。
- 返回 `valid``lines`(非空行数组)、`message`
- 验证规则:
1. 输入不能为空(去除首尾空格后)。
2. 不允许空行(任何一行 trim 后为空即无效)。
3. 检测制表符(警告用户可能粘贴了多列)。
- 确认处理函数 `handleConfirm`
- 检查验证结果,如果无效则显示错误消息并返回。
- 如果有效,更新 `modelValue`,发出 `confirm` 事件,显示成功消息,关闭模态框。
- 初始化:当 `modelValue` 变化时,将数组转换为换行分隔的文本并填充到输入框。
### 3. 样式修改
- 添加验证提示区域的样式,根据状态改变颜色。
- 调整布局间距。
## 代码草案
详见 [MulInputModal.vue 草案](草案内容略)
## 向后兼容性
- 添加的 `modelValue` 模型为可选,不影响现有使用(父组件可以不传递)。
- 现有的 `showModal` 模型保持不变。
- 新增的 `confirm` 事件可选,父组件可以监听以获取导入的行。
## 测试计划
1. 手动测试从 Excel 复制一列值并粘贴到输入框。
2. 验证实时提示是否正确显示。
3. 测试确认按钮在格式正确/错误时的行为。
4. 测试 n-message 通知是否正常弹出。
## 下一步
完成详细设计后,切换到 Code 模式实施修改。