Commit 366ae976735ba10a27df0a0b951f26416c1c579a
1 parent
28d58627
Exists in
master
and in
1 other branch
feat: 优化兼容性
Showing
2 changed files
with
44 additions
and
18 deletions
Show diff stats
packages/table/editor.vue
| @@ -87,7 +87,7 @@ function formItemRender(h, context, item, scope, children) { | @@ -87,7 +87,7 @@ function formItemRender(h, context, item, scope, children) { | ||
| 87 | return h( | 87 | return h( |
| 88 | editorProps.formItem || 'el-form-item', | 88 | editorProps.formItem || 'el-form-item', |
| 89 | { | 89 | { |
| 90 | - props: { prop: formItemProp, rules: item.rules || editorRules[item.prop], 'inline-message': true }, | 90 | + props: { prop: formItemProp, rules: item.rules || editorRules[item.prop], inlineMessage: true }, |
| 91 | }, | 91 | }, |
| 92 | children, | 92 | children, |
| 93 | ); | 93 | ); |
| @@ -101,6 +101,13 @@ function editorRender(h, context, item) { | @@ -101,6 +101,13 @@ function editorRender(h, context, item) { | ||
| 101 | const value = get(scope.row, item.prop); | 101 | const value = get(scope.row, item.prop); |
| 102 | let vnode = {}; | 102 | let vnode = {}; |
| 103 | // 默认 | 103 | // 默认 |
| 104 | + const setValue = val => { | ||
| 105 | + if (get(contentProps, 'editor.force') === true) { | ||
| 106 | + vnode.componentInstance.$set(scope.row, item.prop, val); | ||
| 107 | + } else { | ||
| 108 | + scope.row[item.prop] = val; | ||
| 109 | + } | ||
| 110 | + }; | ||
| 104 | const inputEvent = val => { | 111 | const inputEvent = val => { |
| 105 | if (get(contentProps, 'editor.deep') === true) { | 112 | if (get(contentProps, 'editor.deep') === true) { |
| 106 | if (item.prop.indexOf('.') > -1 || item.prop.indexOf('[') > -1) { | 113 | if (item.prop.indexOf('.') > -1 || item.prop.indexOf('[') > -1) { |
| @@ -116,12 +123,10 @@ function editorRender(h, context, item) { | @@ -116,12 +123,10 @@ function editorRender(h, context, item) { | ||
| 116 | set(propValue, item.prop, val); | 123 | set(propValue, item.prop, val); |
| 117 | vnode.componentInstance.$set(scope.row, bindProp, propValue[bindProp]); | 124 | vnode.componentInstance.$set(scope.row, bindProp, propValue[bindProp]); |
| 118 | } else { | 125 | } else { |
| 119 | - // set(scope.row, item.prop, val); | ||
| 120 | - scope.row[item.prop] = val; | 126 | + setValue(val); |
| 121 | } | 127 | } |
| 122 | } else { | 128 | } else { |
| 123 | - scope.row[item.prop] = val; | ||
| 124 | - // set(contentProps.data, `[${[scope.$index]}]${item.prop}`, val); | 129 | + setValue(val); |
| 125 | } | 130 | } |
| 126 | if (item.on && item.on.input) { | 131 | if (item.on && item.on.input) { |
| 127 | item.on.input(val); | 132 | item.on.input(val); |
| @@ -168,6 +173,13 @@ function createElTableColumns(h, context, columns) { | @@ -168,6 +173,13 @@ function createElTableColumns(h, context, columns) { | ||
| 168 | if (context.scopedSlots[`editor-${item.prop}`] && !editorItem) { | 173 | if (context.scopedSlots[`editor-${item.prop}`] && !editorItem) { |
| 169 | editorItem = item; | 174 | editorItem = item; |
| 170 | } | 175 | } |
| 176 | + if (isEditor) { | ||
| 177 | + if (props.className) { | ||
| 178 | + props.className = [props.className, 'column-editor'].filter(i => i).join(' '); | ||
| 179 | + } else { | ||
| 180 | + props.className = 'column-editor'; | ||
| 181 | + } | ||
| 182 | + } | ||
| 171 | // 处理插槽 | 183 | // 处理插槽 |
| 172 | const scopedSlots = { | 184 | const scopedSlots = { |
| 173 | header: headerRender(h, context, item), | 185 | header: headerRender(h, context, item), |
| @@ -181,7 +193,6 @@ export default { | @@ -181,7 +193,6 @@ export default { | ||
| 181 | name: 'TableEditor', | 193 | name: 'TableEditor', |
| 182 | functional: true, | 194 | functional: true, |
| 183 | render(h, context) { | 195 | render(h, context) { |
| 184 | - console.log(context); | ||
| 185 | const props = context.props || {}; | 196 | const props = context.props || {}; |
| 186 | // 设置默认class名称,用来追加一些默认的样式 | 197 | // 设置默认class名称,用来追加一些默认的样式 |
| 187 | let scopedSlots = context.scopedSlots || {}; | 198 | let scopedSlots = context.scopedSlots || {}; |
| @@ -203,6 +214,11 @@ export default { | @@ -203,6 +214,11 @@ export default { | ||
| 203 | const appendSlot = scopedSlots.append ? scopedSlots.append() : ''; | 214 | const appendSlot = scopedSlots.append ? scopedSlots.append() : ''; |
| 204 | // 渲染组件时移除当前组件特有的props,避免透传不必要的参数 | 215 | // 渲染组件时移除当前组件特有的props,避免透传不必要的参数 |
| 205 | delete context.columns; | 216 | delete context.columns; |
| 217 | + // 兼容旧版value属性 | ||
| 218 | + if (context.props.value && !context.props.data) { | ||
| 219 | + context.props.data = context.props.value; | ||
| 220 | + delete context.props.value; | ||
| 221 | + } | ||
| 206 | return h('el-table', renderContext(context), [prependSlot, leftSlot, ...elTableColumns, rightSlot, appendSlot]); | 222 | return h('el-table', renderContext(context), [prependSlot, leftSlot, ...elTableColumns, rightSlot, appendSlot]); |
| 207 | }, | 223 | }, |
| 208 | }; | 224 | }; |
| @@ -210,18 +226,23 @@ export default { | @@ -210,18 +226,23 @@ export default { | ||
| 210 | 226 | ||
| 211 | <style lang="scss"> | 227 | <style lang="scss"> |
| 212 | .z-table-editor { | 228 | .z-table-editor { |
| 213 | - &.el-table td .cell { | ||
| 214 | - padding-top: 2px; | ||
| 215 | - padding-bottom: 2px; | ||
| 216 | - padding-right: 2px; | ||
| 217 | - } | ||
| 218 | - &.el-table td .cell .el-form-item { | ||
| 219 | - margin-bottom: 0; | ||
| 220 | - } | ||
| 221 | - &.el-table th.el-table__cell .required::before { | ||
| 222 | - content: '*'; | ||
| 223 | - color: red; | ||
| 224 | - margin-right: 4px; | 229 | + .column-editor { |
| 230 | + .cell { | ||
| 231 | + padding: 2px; | ||
| 232 | + .el-form-item { | ||
| 233 | + margin-bottom: 0; | ||
| 234 | + &.is-error { | ||
| 235 | + ::placeholder { | ||
| 236 | + color: red; | ||
| 237 | + } | ||
| 238 | + } | ||
| 239 | + } | ||
| 240 | + .required::before { | ||
| 241 | + content: '*'; | ||
| 242 | + color: red; | ||
| 243 | + margin-right: 4px; | ||
| 244 | + } | ||
| 245 | + } | ||
| 225 | } | 246 | } |
| 226 | } | 247 | } |
| 227 | </style> | 248 | </style> |
packages/table/normal.vue
| @@ -78,6 +78,11 @@ export default { | @@ -78,6 +78,11 @@ export default { | ||
| 78 | const appendSlot = scopedSlots.append ? scopedSlots.append() : ''; | 78 | const appendSlot = scopedSlots.append ? scopedSlots.append() : ''; |
| 79 | // 渲染组件时移除当前组件特有的props,避免透传不必要的参数 | 79 | // 渲染组件时移除当前组件特有的props,避免透传不必要的参数 |
| 80 | delete context.columns; | 80 | delete context.columns; |
| 81 | + // 兼容旧版value属性 | ||
| 82 | + if (context.props.value && !context.props.data) { | ||
| 83 | + context.props.data = context.props.value; | ||
| 84 | + delete context.props.value; | ||
| 85 | + } | ||
| 81 | return h('el-table', renderContext(context), [prependSlot, leftSlot, ...elTableColumns, rightSlot, appendSlot]); | 86 | return h('el-table', renderContext(context), [prependSlot, leftSlot, ...elTableColumns, rightSlot, appendSlot]); |
| 82 | }, | 87 | }, |
| 83 | }; | 88 | }; |