From 8db81386cdb2e121810e7675d6a52ef18c7f797c Mon Sep 17 00:00:00 2001 From: Ali-ZLin <34703794+Ali-ZLin@users.noreply.github.com> Date: Tue, 2 Apr 2024 16:10:13 +0800 Subject: [PATCH] =?UTF-8?q?Update=20EditableCell.vue=20editComponentProps?= =?UTF-8?q?=20=E5=8F=82=E6=95=B0=E6=89=A9=E5=B1=95=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E5=87=BD=E6=95=B0=E8=AF=BB=E5=8F=96=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E8=A1=8C=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit editComponentProps 参数扩展支持回调函数读取表格行数据 可根据行信息灵活配置可编辑单元格参数 editComponentProps: (record) => { return {...}} --- .../src/components/editable/EditableCell.vue | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/components/Table/src/components/editable/EditableCell.vue b/src/components/Table/src/components/editable/EditableCell.vue index d334c25..8a9e39b 100644 --- a/src/components/Table/src/components/editable/EditableCell.vue +++ b/src/components/Table/src/components/editable/EditableCell.vue @@ -96,7 +96,11 @@ }); const getComponentProps = computed(() => { - const compProps = props.column?.editComponentProps ?? {}; + let editComponentProps = props.column?.editComponentProps ?? {}; + if (isFunction(editComponentProps)) { + editComponentProps = editComponentProps(props.record as Recordable); + } + const compProps = editComponentProps; const component = unref(getComponent); const apiSelectProps: Recordable = {}; if (component === 'ApiSelect') { @@ -122,8 +126,10 @@ }); const getValues = computed(() => { - const { editComponentProps, editValueMap } = props.column; - + let { editComponentProps, editValueMap } = props.column; + if (editComponentProps && isFunction(editComponentProps)) { + editComponentProps = editComponentProps(props.record as Recordable); + } const value = unref(currentValueRef); if (editValueMap && isFunction(editValueMap)) { @@ -193,7 +199,11 @@ } else if (isString(e) || isBoolean(e) || isNumber(e) || isArray(e)) { currentValueRef.value = e; } - const onChange = props.column?.editComponentProps?.onChange; + let editComponentProps = props.column?.editComponentProps ?? {}; + if (isFunction(editComponentProps)) { + editComponentProps = editComponentProps(props.record as Recordable); + } + const onChange = editComponentProps?.onChange; if (onChange && isFunction(onChange)) onChange(...arguments); table.emit?.('edit-change', { @@ -316,7 +326,11 @@ // only ApiSelect or TreeSelect function handleOptionsChange(options: LabelValueOptions) { - const { replaceFields } = props.column?.editComponentProps ?? {}; + let editComponentProps = props.column?.editComponentProps ?? {}; + if (isFunction(editComponentProps)) { + editComponentProps = editComponentProps(props.record as Recordable); + } + const { replaceFields } = editComponentProps; const component = unref(getComponent); if (component === 'ApiTreeSelect') { const { title = 'title', value = 'value', children = 'children' } = replaceFields || {};