文章目录
当用户点击“登记”按钮时,触发了一系列的操作和执行流程。根据你提供的代码,以下是点击“登记”按钮后发生的事情的详细步骤和执行流程:
1. 触发 handleAdd
方法
在模板部分,<el-button type="danger" size="mini" @click="handleAdd">登记</el-button>
绑定了 @click
事件,当用户点击“登记”按钮时,会调用 handleAdd
方法。
2. handleAdd
方法的实现
public handleAdd() {
this.aveForm = Object.assign({}, {});
this.aveFormVis = true;
this.operateType = 'add';
}
详细解释:
- 初始化表单数据:
this.aveForm = Object.assign({}, {});
创建了一个空对象并赋值给aveForm
,用于存储新条目的表单数据。 - 显示对话框:
this.aveFormVis = true;
将aveFormVis
设置为true
,这将使AveForm
对话框组件变得可见。 - 设置操作类型:
this.operateType = 'add';
设置operateType
为'add'
,表示当前操作是添加新条目。
3. AveForm
对话框显示
AveForm
组件的 visible
属性绑定到了 aveFormVis
,因此当 aveFormVis
变为 true
时,AveForm
对话框会显示出来。
4. 初始化 AveForm
表单
在 AveForm
组件中,watchValue
监听器会监听 value
的变化,并在 value
更新时初始化表单数据:
@Watch('value')
watchValue(v: any) {
this.$nextTick(() => {
this.getProducts();
this.form = { ...v };
});
}
详细解释:
- 获取产品列表:
this.getProducts();
异步调用productAll
API 获取所有产品列表,并更新productList
。 - 初始化表单:
this.form = { ...v };
将传递给AveForm
的value
(即aveForm
)复制到form
中。由于此时value
是一个空对象,因此form
也会是一个空对象,准备好接收用户输入。
5. 用户填写表单
用户可以在 AveForm
对话框中填写表单字段,如客户昵称、疑点描述、图片附件、涉及产品和批次号。
6. 提交表单
当用户填写完表单并点击“提交”按钮时,会触发 handleSubmit
方法:
private handleSubmit() {
if (!this.form.productId || this.form.productId === ' ') {
this.$message.error('请选择产品');
return;
}
this.save();
}
详细解释:
- 验证产品选择:首先检查
form.productId
是否为空或为空字符串。如果为空,弹出错误提示“请选择产品”,并阻止提交。 - 调用保存方法:如果验证通过,则调用
save
方法保存数据。
7. 保存数据
save
方法负责将表单数据发送到服务器:
private async save() {
const data = this.form;
const res: any = await esave(data);
if (res?.code === 0) {
this.$emit('close', true);
}
}
详细解释:
- 准备数据:将
form
中的数据赋值给data
。 - 调用 API:异步调用
esave
API,将data
发送到服务器进行保存。 - 处理响应:如果服务器返回的状态码为
0
(表示成功),则通过$emit('close', true)
通知父组件关闭对话框,并刷新列表。
8. 关闭对话框
在父组件中,onAveFormClose
方法会监听 AveForm
组件发出的 close
事件:
public onAveFormClose(refresh: any) {
this.aveFormVis = false;
refresh && this.getList();
}
详细解释:
- 隐藏对话框:
this.aveFormVis = false;
将aveFormVis
设置为false
,隐藏AveForm
对话框。 - 刷新列表:如果
refresh
为true
,则调用getList
方法重新获取最新的列表数据,确保界面上显示的是最新的信息。
总结
点击“登记”按钮后的完整执行流程如下:
- 触发
handleAdd
方法:初始化表单数据,显示AveForm
对话框,并设置操作类型为“添加”。 - 初始化
AveForm
表单:获取产品列表并准备好接收用户输入。 - 用户填写表单:用户在对话框中填写必要的信息。
- 提交表单:用户点击“提交”按钮,验证表单并调用保存方法。
- 保存数据:将表单数据发送到服务器进行保存。
- 关闭对话框:保存成功后,关闭对话框并刷新列表,确保界面上显示最新的数据。
这个流程确保了用户可以顺利地添加新条目,并且界面上的数据始终保持最新状态。