213 lines
6.1 KiB
Markdown
213 lines
6.1 KiB
Markdown
|
|
---
|
|||
|
|
name: 验证采购入库按钮修复
|
|||
|
|
overview: 问题已解决!提供验证步骤和进一步诊断方法,确保采购入库页面的"新增"按钮正常工作。
|
|||
|
|
todos: []
|
|||
|
|
isProject: false
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 采购入库按钮修复 - 验证和测试计划
|
|||
|
|
|
|||
|
|
## 当前状态
|
|||
|
|
|
|||
|
|
问题**已经解决**!以下改进已经应用到代码中:
|
|||
|
|
|
|||
|
|
### 已完成的修复
|
|||
|
|
|
|||
|
|
#### 1. 移除了 `.prevent` 修饰符
|
|||
|
|
|
|||
|
|
**文件**: `[mom-backend-ui/src/views/mes/wm/itemrecpt/index.vue:57](mom-backend-ui/src/views/mes/wm/itemrecpt/index.vue)`
|
|||
|
|
|
|||
|
|
```vue
|
|||
|
|
<!-- 修复前 -->
|
|||
|
|
@click.prevent="handleAdd"
|
|||
|
|
|
|||
|
|
<!-- 修复后 -->
|
|||
|
|
@click="handleAdd"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 2. 添加了完善的调试日志
|
|||
|
|
|
|||
|
|
在 `handleAdd` 方法中添加了详细的日志输出:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
handleAdd() {
|
|||
|
|
console.log('[采购入库] handleAdd 方法被调用');
|
|||
|
|
console.log('[采购入库] 当前状态:', { open, title, optType });
|
|||
|
|
// ... 业务逻辑
|
|||
|
|
console.log('[采购入库] Dialog 状态已更新:', { open, title, optType });
|
|||
|
|
// DOM 检查
|
|||
|
|
this.$nextTick(() => {
|
|||
|
|
console.log('[采购入库] Dialog DOM 检查:', {
|
|||
|
|
dialogExists, overlayExists
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 3. 增强了 Dialog 监控
|
|||
|
|
|
|||
|
|
添加了 Dialog 生命周期事件:
|
|||
|
|
|
|||
|
|
- `@open` - Dialog 开始打开
|
|||
|
|
- `@opened` - Dialog 完全打开
|
|||
|
|
- `@close` - Dialog 关闭
|
|||
|
|
|
|||
|
|
#### 4. 创建了诊断工具
|
|||
|
|
|
|||
|
|
- `[mom-backend-ui/DEBUGGING-ITEMRECPT.md](mom-backend-ui/DEBUGGING-ITEMRECPT.md)` - 完整诊断指南
|
|||
|
|
- `[mom-backend-ui/public/debug-itemrecpt.js](mom-backend-ui/public/debug-itemrecpt.js)` - 自动诊断脚本
|
|||
|
|
- `[CHANGES-ITEMRECPT-BUTTON-FIX.md](CHANGES-ITEMRECPT-BUTTON-FIX.md)` - 变更记录
|
|||
|
|
|
|||
|
|
## 验证步骤
|
|||
|
|
|
|||
|
|
### 步骤 1: 基本功能测试
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart TD
|
|||
|
|
A[打开采购入库页面] --> B[打开浏览器控制台F12]
|
|||
|
|
B --> C[点击新增按钮]
|
|||
|
|
C --> D{是否有日志输出?}
|
|||
|
|
D -->|有| E[检查日志内容]
|
|||
|
|
D -->|无| F[问题1:按钮未响应]
|
|||
|
|
E --> G{Dialog是否打开?}
|
|||
|
|
G -->|是| H[修复成功✓]
|
|||
|
|
G -->|否| I[问题2:Dialog未显示]
|
|||
|
|
|
|||
|
|
F --> F1[运行诊断脚本]
|
|||
|
|
I --> I1[查看DOM检查日志]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
### 步骤 2: 控制台验证
|
|||
|
|
|
|||
|
|
1. 打开采购入库页面
|
|||
|
|
2. 按 F12 打开开发者工具
|
|||
|
|
3. 进入 Console 标签
|
|||
|
|
4. 在 Filter 输入框输入: `[采购入库]`
|
|||
|
|
5. 点击"新增"按钮
|
|||
|
|
|
|||
|
|
**预期输出**:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[采购入库] handleAdd 方法被调用
|
|||
|
|
[采购入库] 当前状态: {open: false, title: "", optType: undefined}
|
|||
|
|
[采购入库] Dialog 状态已更新: {open: true, title: "添加物料入库单", optType: "add"}
|
|||
|
|
[采购入库] Dialog DOM 检查: {open: true, dialogExists: true, overlayExists: true}
|
|||
|
|
[采购入库] Dialog 开始打开动画
|
|||
|
|
[采购入库] Dialog 已完全打开
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤 3: 运行自动诊断脚本
|
|||
|
|
|
|||
|
|
在浏览器控制台执行:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
fetch('/debug-itemrecpt.js').then(r => r.text()).then(eval)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
该脚本会自动检查:
|
|||
|
|
|
|||
|
|
- 按钮是否存在于 DOM
|
|||
|
|
- Vue 应用是否正常
|
|||
|
|
- 用户权限是否正确
|
|||
|
|
- Element Plus 是否加载
|
|||
|
|
- Plus 图标是否正常
|
|||
|
|
|
|||
|
|
## 问题排查矩阵
|
|||
|
|
|
|||
|
|
|
|||
|
|
| 现象 | 可能原因 | 解决方案 | 参考文档 |
|
|||
|
|
| ------------------- | ----------- | --------------------------------- | --------------------------- |
|
|||
|
|
| 按钮不存在于 DOM | 权限问题 | 检查用户是否有 `mes:wm:itemrecpt:add` 权限 | DEBUGGING-ITEMRECPT.md §问题1 |
|
|||
|
|
| 无任何日志输出 | 事件未绑定或按钮被禁用 | 检查按钮 disabled 属性和 z-index | DEBUGGING-ITEMRECPT.md §问题2 |
|
|||
|
|
| 有日志但 Dialog 未显示 | Dialog 渲染问题 | 检查 DOM 和 CSS,查看 DOM 检查日志 | DEBUGGING-ITEMRECPT.md §问题3 |
|
|||
|
|
| dialogExists: false | Vue 响应式问题 | 检查 open 变量,使用 Vue DevTools | DEBUGGING-ITEMRECPT.md §问题3 |
|
|||
|
|
| 有错误日志 | 代码异常 | 查看 errorCaptured 日志详情 | 控制台错误栈 |
|
|||
|
|
|
|||
|
|
|
|||
|
|
## 检查用户权限
|
|||
|
|
|
|||
|
|
在浏览器控制台执行:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// 检查当前用户权限
|
|||
|
|
window.$store?.getters?.permissions
|
|||
|
|
|
|||
|
|
// 或者检查是否包含特定权限
|
|||
|
|
window.$store?.getters?.permissions?.includes('mes:wm:itemrecpt:add')
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果返回 `false` 或权限列表中不包含该权限,需要:
|
|||
|
|
|
|||
|
|
1. 联系管理员添加权限
|
|||
|
|
2. 或者在角色管理中配置权限
|
|||
|
|
|
|||
|
|
## 使用 Vue DevTools 调试
|
|||
|
|
|
|||
|
|
1. 安装 Vue DevTools 浏览器扩展
|
|||
|
|
2. 打开 Vue DevTools
|
|||
|
|
3. 在组件树中找到 `Itemrecpt` 组件
|
|||
|
|
4. 观察 `data` 中的变量:
|
|||
|
|
- `open` - Dialog 显示状态
|
|||
|
|
- `title` - Dialog 标题
|
|||
|
|
- `form` - 表单数据
|
|||
|
|
5. 点击按钮后实时查看变量变化
|
|||
|
|
|
|||
|
|
## 进一步诊断
|
|||
|
|
|
|||
|
|
如果按照上述步骤问题仍未解决,收集以下信息:
|
|||
|
|
|
|||
|
|
1. **浏览器信息**
|
|||
|
|
- 浏览器类型和版本
|
|||
|
|
- 操作系统版本
|
|||
|
|
2. **控制台输出**
|
|||
|
|
- 完整的日志输出(包含 [采购入库] 前缀的)
|
|||
|
|
- 任何错误信息和堆栈
|
|||
|
|
3. **权限信息**
|
|||
|
|
```javascript
|
|||
|
|
console.log('权限列表:', window.$store?.getters?.permissions)
|
|||
|
|
```
|
|||
|
|
4. **DOM 状态**
|
|||
|
|
```javascript
|
|||
|
|
console.log('按钮元素:', document.querySelector('button:contains("新增")'))
|
|||
|
|
console.log('Dialog:', document.querySelector('.el-dialog'))
|
|||
|
|
```
|
|||
|
|
5. **Vue DevTools 截图**
|
|||
|
|
- Itemrecpt 组件的 data 状态
|
|||
|
|
- open 变量的值
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- 详细诊断指南: `[DEBUGGING-ITEMRECPT.md](mom-backend-ui/DEBUGGING-ITEMRECPT.md)`
|
|||
|
|
- 完整变更记录: `[CHANGES-ITEMRECPT-BUTTON-FIX.md](CHANGES-ITEMRECPT-BUTTON-FIX.md)`
|
|||
|
|
- 诊断脚本: `[debug-itemrecpt.js](mom-backend-ui/public/debug-itemrecpt.js)`
|
|||
|
|
|
|||
|
|
## 后续行动
|
|||
|
|
|
|||
|
|
如果验证通过:
|
|||
|
|
|
|||
|
|
- 无需进一步操作,问题已解决
|
|||
|
|
|
|||
|
|
如果验证失败:
|
|||
|
|
|
|||
|
|
1. 按照问题排查矩阵定位具体问题
|
|||
|
|
2. 查阅 DEBUGGING-ITEMRECPT.md 获取详细解决方案
|
|||
|
|
3. 收集诊断信息寻求技术支持
|
|||
|
|
|
|||
|
|
## 总结
|
|||
|
|
|
|||
|
|
修复内容:
|
|||
|
|
|
|||
|
|
- 移除不必要的 `.prevent` 修饰符
|
|||
|
|
- 添加 18 个标准化调试日志
|
|||
|
|
- 增强 Dialog 事件监控
|
|||
|
|
- 创建完整的诊断工具集
|
|||
|
|
|
|||
|
|
验证要点:
|
|||
|
|
|
|||
|
|
- 点击按钮后应看到 `[采购入库]` 开头的日志
|
|||
|
|
- Dialog 应正常打开
|
|||
|
|
- 所有操作应有清晰的日志记录
|
|||
|
|
|