load(page){ var data={ before:(onSuccess)=>{ if(page){ this.formData.page=page; } //在下面加入自定义代码 //在上面加入正定义代码 onSuccess(); }, execute:(onSuccess)=>{//加载数据 const msg = this.$Message.loading({ content: "正在加载数据...", duration: 0 }); greeWarning.listUserProduct(this.formData, (result) => { msg(); onSuccess(result); }, (result)=> { msg(); this.$Message.error(result); }); }, after:(data)=>{//加载数据之后 console.log(data); this.tableData = data.data; this.total = data.data.length; //在下面加入自定义代码 }, } data.before(() => { data.execute((result) => { data.after(result); }); }) },
时间: 2024-04-10 20:31:46 浏览: 113
这段代码是一个加载数据的函数。它有三个步骤:before、execute和after。
- before:在加载数据之前执行的代码。如果有传入page参数,会将该参数赋值给formData.page。你可以在这个步骤中添加自定义代码。
- execute:实际加载数据的步骤。它会显示一个加载中的提示消息,然后调用greeWarning.listUserProduct方法加载数据。加载成功后,会调用onSuccess并传入结果。如果加载失败,会显示错误消息。
- after:加载数据之后执行的代码。它会将返回的数据赋值给tableData,然后输出data到控制台。你可以在这个步骤中添加自定义代码。
最后,代码会按照before、execute和after的顺序执行。
相关问题
var data={ before:(onSuccess)=>{//加载之前 if(page){ this.formData.page=page; } //在下面加入自定义代码 if(this.formData.beginDate){ this.formData.beginDate=this.formData.beginDate.format("yyyy-MM-dd"); } if(this.formData.endDate){ this.formData.endDate=this.formData.endDate.format("yyyy-MM-dd"); } this.formData.outTitle=[]; for(var i=2;i<this.tableColumns.length;++i){ var item={ fieldName:this.tableColumns[i].key, headName:this.tableColumns[i].title } //处理图片 if(item.fieldName && item.fieldName.indexOf("render")>-1){ item.fieldName=item.fieldName.replace("render",""); } this.formData.outTitle.push(item); } this.formData.operatorCode=parent.vue.formData.staffCode; this.formData.operatorName=parent.vue.formData.staffName; console.log(this.formData); //在上面加入正定义代码 onSuccess(); }, execute:(onSuccess)=>{//加载数据 const msg = this.$Message.loading({ content: "正在导出数据...", duration: 0 }); goodsInOut.outExcel(this.formData, (result) => { msg(); onSuccess(result); }, (result)=> { msg(); this.$Message.error(result); }); }, after:(data)=>{//加载数据之后 for (let i = 0; i < rows.length; ++i) { let AttrName = this.getWxAttrName(top.vue.wxAttrList, rows[i]); if(AttrName){ rows[i].wxAttr = AttrName; } } console.log(data); this.$Message.success("导出成功"); location.href=config.downloadUrl + data.values; //在下面加入自定义代码 //console.log("mountMend.queryList:" + JSON.stringify(this.formData)) }, }
这段代码定义了一个名为`data`的对象,包含了三个属性:`before`、`execute`和`after`。这些属性是函数,分别在不同的阶段执行。
`before`函数在加载数据之前执行。它首先检查是否有一个`page`参数,并将其赋值给`this.formData.page`。然后,它对`this.formData.beginDate`和`this.formData.endDate`进行格式化处理,将其转换为"yyyy-MM-dd"的格式。接下来,它清空`this.formData.outTitle`数组,并根据`this.tableColumns`数组的内容,构建一个包含字段名和标题的对象,并将其添加到`this.formData.outTitle`数组中。最后,它设置`this.formData.operatorCode`和`this.formData.operatorName`的值,并使用`console.log(this.formData)`打印出`this.formData`的内容。
`execute`函数在加载数据时执行。它首先显示一个正在导出数据的提示消息,并调用`goodsInOut.outExcel`方法导出数据。如果导出成功,它调用`onSuccess`函数并传递导出的结果;如果导出失败,它显示一个错误消息。
`after`函数在加载数据之后执行。它遍历`rows`数组,并根据条件为每个元素设置一个名为`wxAttr`的属性。然后,它使用`console.log(data)`打印出`data`的内容。接下来,它显示一个导出成功的提示消息,并使用`location.href`将页面重定向到`config.downloadUrl + data.values`,实现文件的下载功能。
请注意,这段代码中还有一些注释,其中包含了一些可能是自定义代码的提示,但是具体的实现并没有给出。
我明明加了loadType这个变量来约束为什么this.loadAuditedPage (pageNumber, true);方法的结果还是会把 this.loadCreatedPage (pageNumber, true);结果覆盖 protected handleNavigation(): void { combineLatest([this.activatedRoute.data, this.activatedRoute.queryParamMap]).subscribe(([data, params]) => { const page = params.get('page');//获取当前页面的页码 const pageNumber = +(page ?? 1);//将页码转换为数字类型,并赋值给 pageNumber 变量。如果页码为空,则默认为 1 if (pageNumber !== this.page ) { this.loadCreatedPage (pageNumber, true); this.loadAuditedPage (pageNumber, true); } }); } protected onSuccess(data: IApprovalRecord[] | null, headers: HttpHeaders, page: number, navigate: boolean,loadType: number): void { this.totalRecords = Number(headers.get('X-Total-Count')); this.page = page; if (navigate) { this.router.navigate(['/approval-record/my'], { queryParams: { page: this.page, size: this.recordsPerPage, }, }); } if(loadType === 0){ this.createdApprovalRecords = data ?? []; } if(loadType === 1){ this.auditedApprovalRecords = data ?? []; } this.ngbPaginationPage = this.page; }
根据你提供的代码,我可以看到在 `handleNavigation` 方法中,如果 `pageNumber` 不等于当前页面的页码 `this.page`,那么就会调用 `loadCreatedPage` 和 `loadAuditedPage` 方法。但是在 `onSuccess` 方法中,它并没有判断 `loadType` 是否为 0 或 1,而是使用了两个独立的条件语句。这意味着无论 `loadType` 的值是什么,都会同时加载 `createdApprovalRecords` 和 `auditedApprovalRecords` 的数据。
如果你想要避免这种情况,可以将 `onSuccess` 方法中的条件语句改为一个 `switch` 语句,根据 `loadType` 的值来分别处理不同的情况。例如:
```
protected onSuccess(data: IApprovalRecord[] | null, headers: HttpHeaders, page: number, navigate: boolean, loadType: number): void {
this.totalRecords = Number(headers.get('X-Total-Count'));
this.page = page;
if (navigate) {
this.router.navigate(['/approval-record/my'], {
queryParams: {
page: this.page,
size: this.recordsPerPage,
},
});
}
switch (loadType) {
case 0:
this.createdApprovalRecords = data ?? [];
break;
case 1:
this.auditedApprovalRecords = data ?? [];
break;
default:
break;
}
this.ngbPaginationPage = this.page;
}
```
这样就可以确保只有符合条件的数据会被加载。同时,也建议在 `handleNavigation` 方法中添加一些日志输出,来检查 `pageNumber` 和 `this.page` 的值是否正确。
阅读全文