Commit 37b6b7d9d5b210f0c5af36837fc9ea676fb81a2a
1 parent
036d3f05
Exists in
master
and in
3 other branches
fix: 修复Scheme弹出框关闭渲染问题
Showing
1 changed file
with
19 additions
and
8 deletions
Show diff stats
packages/scheme/index.vue
| ... | ... | @@ -109,7 +109,8 @@ |
| 109 | 109 | :lock-scroll="false" |
| 110 | 110 | :close-on-click-modal="false" |
| 111 | 111 | @closed="onDialogClosed" |
| 112 | - v-bind="dialogProps" | |
| 112 | + @close="onDialogClose" | |
| 113 | + v-bind="_dialogProps" | |
| 113 | 114 | > |
| 114 | 115 | <div v-loading="dialogLoading"> |
| 115 | 116 | <!-- 自定义弹出框标题 --> |
| ... | ... | @@ -179,9 +180,7 @@ const propsKeys = ['tableProps', 'filterProps', 'formProps', 'viewProps', 'dialo |
| 179 | 180 | propsKeys.forEach(key => { |
| 180 | 181 | propsMap[key] = { |
| 181 | 182 | type: Object, |
| 182 | - default: function() { | |
| 183 | - return {}; | |
| 184 | - }, | |
| 183 | + default: () => ({}), | |
| 185 | 184 | }; |
| 186 | 185 | }); |
| 187 | 186 | const apiKeys = ['searchApi', 'submitApi', 'addApi', 'modifyApi', 'getApi', 'viewApi', 'deleteApi']; |
| ... | ... | @@ -228,6 +227,7 @@ export default { |
| 228 | 227 | dialogType: 'none', |
| 229 | 228 | dialogLoading: false, |
| 230 | 229 | dialogTitle: '', |
| 230 | + dialogPropsHack: {}, | |
| 231 | 231 | currentPage: 1, |
| 232 | 232 | pageSize: 10, |
| 233 | 233 | total: 0, |
| ... | ... | @@ -355,6 +355,12 @@ export default { |
| 355 | 355 | } |
| 356 | 356 | return this.alias || this.zAlias || {}; |
| 357 | 357 | }, |
| 358 | + _dialogProps() { | |
| 359 | + return { | |
| 360 | + ...this.dialogProps, | |
| 361 | + ...this.dialogPropsHack, | |
| 362 | + }; | |
| 363 | + }, | |
| 358 | 364 | }, |
| 359 | 365 | methods: { |
| 360 | 366 | get, |
| ... | ... | @@ -590,28 +596,33 @@ export default { |
| 590 | 596 | .catch(() => {}); |
| 591 | 597 | }, |
| 592 | 598 | // 打开弹出框 |
| 593 | - openDialog(type, title) { | |
| 599 | + openDialog(type, title, config) { | |
| 594 | 600 | this.dialogVisible = true; |
| 595 | 601 | this.dialogRender = true; |
| 596 | 602 | this.dialogType = type; |
| 597 | 603 | this.dialogTitle = title; |
| 604 | + this.dialogPropsHack = config || {}; | |
| 598 | 605 | this.$emit('dialog-change', type); |
| 599 | 606 | }, |
| 600 | 607 | // 关闭弹出框 |
| 601 | 608 | closeDialog() { |
| 602 | 609 | this.dialogVisible = false; |
| 603 | - this.dialogRender = false; | |
| 604 | - this.dialogType = 'none'; | |
| 605 | - this.$emit('dialog-change', 'none'); | |
| 606 | 610 | }, |
| 607 | 611 | // 清空表单 |
| 608 | 612 | clearEditForm() { |
| 609 | 613 | this.editForm = {}; |
| 610 | 614 | this.$emit('update:formModel', {}); |
| 611 | 615 | }, |
| 616 | + // 弹出框关闭 | |
| 617 | + onDialogClose() { | |
| 618 | + this.dialogType = 'none'; | |
| 619 | + this.dialogRender = false; | |
| 620 | + this.$emit('dialog-change', 'none'); | |
| 621 | + }, | |
| 612 | 622 | // 弹出框关闭动画结束 |
| 613 | 623 | onDialogClosed() { |
| 614 | 624 | this.clearEditForm(); |
| 625 | + this.dialogPropsHack = {}; | |
| 615 | 626 | }, |
| 616 | 627 | // 分页-每页个数 |
| 617 | 628 | handleSizeChange(val) { | ... | ... |