From 81d90a8c582c72f91b02dcc0e7d77e0a63c7231e Mon Sep 17 00:00:00 2001 From: 刘汉宸 Date: Fri, 19 Jun 2020 17:15:53 +0800 Subject: [PATCH] feat: 支持Function动态Props --- packages/filter/index.vue | 5 +++-- packages/form/form-render.vue | 22 +++++++++++++++++----- packages/form/index.vue | 59 ++++++++++++++++++++++++++++++++++++++++++----------------- packages/scheme/index.vue | 85 ++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------- 4 files changed, 110 insertions(+), 61 deletions(-) diff --git a/packages/filter/index.vue b/packages/filter/index.vue index d62c998..793aed8 100644 --- a/packages/filter/index.vue +++ b/packages/filter/index.vue @@ -1,5 +1,5 @@ @@ -101,6 +101,7 @@ export default { groupClass: String, type: String, span: Number, + params: Object, }, computed: { rowComponent() { @@ -202,10 +203,21 @@ export default { bindItemVisible(item, type) { const visible = item[type]; if (typeof visible === 'function') { - return visible(this.model); + return visible(this.model, this.params || {}); } return item[type] !== false; }, + /** + * @description 格式化props属性 + * @param {Object|Function} props 属性或属性对象 + * @returns {Object} 格式化的属性 + */ + propsFormatter(props) { + if (typeof props === 'function') { + return props(this.model, this.params || {}); + } + return props || {}; + }, }, }; diff --git a/packages/form/index.vue b/packages/form/index.vue index 3aefdd2..30ef4a2 100644 --- a/packages/form/index.vue +++ b/packages/form/index.vue @@ -1,22 +1,39 @@ - @@ -68,6 +89,7 @@ export default { type: Object, default: () => ({}), }, + params: Object, }, data() { return { @@ -136,8 +158,11 @@ export default { * @description 校验表单 */ validate() { - this.$refs.form.validate(valid => { - this.$emit('validate', valid, this.model); + return new Promise(resolve => { + this.$refs.form.validate(valid => { + this.$emit('validate', valid, this.model); + return resolve(valid); + }); }); }, /** diff --git a/packages/scheme/index.vue b/packages/scheme/index.vue index acd2e79..f861f49 100644 --- a/packages/scheme/index.vue +++ b/packages/scheme/index.vue @@ -19,6 +19,7 @@ @search="search" :loading="loading" v-bind="filterProps" + :params="_slotScope" > @@ -70,7 +71,7 @@ - + @@ -116,43 +117,47 @@