From 9b4ae7dab43f4374a6d5051f0df3ee84e776030f Mon Sep 17 00:00:00 2001 From: 刘汉宸 Date: Tue, 16 Jun 2020 19:54:51 +0800 Subject: [PATCH] feat: 新增Form组件配置项slot支持 --- packages/form/form-render.vue | 70 +++++++++++++++++++++++++++++++++++++++++++++------------------------- packages/form/index.vue | 8 ++++++-- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/packages/form/form-render.vue b/packages/form/form-render.vue index eec6ab3..76365a2 100644 --- a/packages/form/form-render.vue +++ b/packages/form/form-render.vue @@ -9,6 +9,7 @@ :key="index" :span="type === 'div' ? undefined : item.group.span || 24" :style="{ width: type === 'div' ? '100%' : undefined }" + :class="colClassRender(item, index, colClass)" > @@ -41,34 +42,38 @@ :span="type === 'div' ? undefined : item.span || span" :key="index" :style="{ width: type === 'div' && item.style && item.style.width.includes('%') ? item.style.width : undefined, paddingRight: '10px' }" + :class="colClassRender(item, index, colClass)" > - - + @@ -89,6 +94,7 @@ export default { titleClass: String, contentClass: String, itemClass: String, + colClass: [String, Function], groupClass: String, type: String, span: Number, @@ -103,6 +109,20 @@ export default { }, methods: { /** + * @description 渲染col class + * @param {Object} item 表单项配置 + * @param {Object} index 表单项渲染下标 + * @param {Object} colClass 表单项配置 + * @return {String} col class + */ + colClassRender(item, index, colClass) { + if (colClass instanceof Function) { + return colClass(item, index); + } else { + return colClass; + } + }, + /** * @description 根据表单项的key查询该值 * @param {Object} item 表单项配置 * @returns {Any} 返回值 diff --git a/packages/form/index.vue b/packages/form/index.vue index fbeb8f8..cff0547 100644 --- a/packages/form/index.vue +++ b/packages/form/index.vue @@ -21,6 +21,7 @@ :title-class="titleClass" :content-class="contentClass" :item-class="itemClass" + :col-class="colClass" :group-class="groupClass" :list="formList" :value="model" @@ -30,7 +31,9 @@ @item-change="onItemChange" @form-item-change="onFormItemChange" @item-update="onItemUpdate" - > + > + + @@ -48,6 +51,7 @@ export default { titleClass: String, contentClass: String, itemClass: String, + colClass: [String, Function], groupClass: String, labelWidth: String, labelPosition: String, @@ -62,8 +66,8 @@ export default { }, }, data() { - // const $fullProps = { ...this.$attrs, ...this.$props }; return { + slotKeys: Object.keys(this.$slots), model: {}, formModel: {}, formList: [], -- libgit2 0.21.0