From 4eb9e8e4c6d525312af7334560d88798f415ee77 Mon Sep 17 00:00:00 2001 From: zhf <1204297681@qq.com> Date: Tue, 8 Jul 2025 21:18:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E4=B8=8B=E6=8B=89=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=A1=86=E6=94=AF=E6=8C=81valueseparator=E5=80=BC?= =?UTF-8?q?=E5=88=86=E9=9A=94=E7=AC=A6=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../ibiz-dropdown/ibiz-dropdown.tsx | 73 +++++++++++-------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b582f1a1b..5fa94e0fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Added - 重复器表单样式支持拖拽排序,新增重复器部件参数enablesort +- 下拉列表框支持valueseparator值分隔符参数 ### Changed diff --git a/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.tsx b/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.tsx index 256caad80..2c3cfd32e 100644 --- a/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.tsx +++ b/src/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.tsx @@ -34,6 +34,7 @@ import './ibiz-dropdown.scss'; * @editorparams {name:overflowmode,parameterType:'auto' | 'ellipsis',defaultvalue:'auto',description:用于控制该编辑器下拉区域的宽度显示方式。当参数值为 'auto' 时,下拉区域宽度会根据内容自动展开;当参数值为 'ellipsis' 时,下拉区域宽度将与输入框保持一致,若内容超出宽度则会显示省略号,鼠标悬浮在内容上时会出现提示信息} * @editorparams {name:allitems,parameterType:boolean,defaultvalue:false,description:下拉列表框是否启用全部项} * @editorparams {name:itemstext,parameterType:string,defaultvalue:'全部',description:下拉列表框全部项文本} + * @editorparams {"name":"valueseparator","parameterType":"string","defaultvalue":"','","description":"下拉列表框值分隔符,用于多选时,拼接多个选项值为字符串和分割字符串为选项值数组"} * @ignoreprops overflowMode */ export const IBizDropdown = defineComponent({ @@ -82,6 +83,9 @@ export const IBizDropdown = defineComponent({ // 隐藏的input框,用来替代下拉搜索框在浏览器焦点管理系统中的目标元素,用于触发enter键的keyup事件 const hiddenInputRef = ref(); + // 值分隔符 + const valueSeparator = c.editorParams?.valueseparator || ','; + // 是否显示表单默认内容 const showFormDefaultContent = computed(() => { if ( @@ -273,13 +277,13 @@ export const IBizDropdown = defineComponent({ if (c.allItems && c.multiple && !hasChildren.value) { return getSelection( [], - props.value.split(','), + props.value.split(valueSeparator), items.value as readonly CodeListItem[], items.value as readonly CodeListItem[], ).map(v => `${v}`); } return c!.multiple - ? props.value?.toString().split(',') + ? props.value?.toString().split(valueSeparator) : props.value.toString(); } if (props.value && Array.isArray(props.value)) { @@ -317,7 +321,7 @@ export const IBizDropdown = defineComponent({ } else if (c.model.valueType === 'SIMPLES') { selectArr = select; } else { - selectArr = select.join(','); + selectArr = select.join(valueSeparator); } emit('change', selectArr); } else if (editorItems && editorItems.length > 0) { @@ -372,7 +376,7 @@ export const IBizDropdown = defineComponent({ } }); }); - return textArr.join(','); + return textArr.join(valueSeparator); }); watch( @@ -482,7 +486,7 @@ export const IBizDropdown = defineComponent({ if (c.editorParams.type === 'round') { Object.assign(prefix, { prefix: () => { - return valueText.value.split(',').map(text => { + return valueText.value.split(valueSeparator).map(text => { const codeListItem = getCodeListItem(text); return (
{ - const codeListItem = this.getCodeListItem(text); - return ( - - {codeListItem?.sysImage && ( - - )} - {text} - - ); - }); + const readonlyContent = this.valueText + .split(this.valueSeparator) + .map(text => { + const codeListItem = this.getCodeListItem(text); + return ( + + {codeListItem?.sysImage && ( + + )} + + {text} + + + ); + }); // 表单默认内容 const formDefaultContent = ( @@ -709,7 +718,7 @@ export const IBizDropdown = defineComponent({ ]} > {this.valueText ? ( - this.valueText.split(',').map(text => { + this.valueText.split(this.valueSeparator).map(text => { const codeListItem = this.getCodeListItem(text); return ( Date: Tue, 8 Jul 2025 21:23:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E5=8F=82=E6=95=B0=E6=8F=8F=E8=BF=B0=E3=80=81?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E5=8F=82=E6=95=B0=E9=80=82=E9=85=8D?= =?UTF-8?q?=E5=B0=8F=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ibiz-picker-dropdown/ibiz-picker-dropdown.tsx | 9 +++++++-- .../ibiz-picker-embed-view.tsx | 14 ++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx b/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx index 9d657f915..cacc25f27 100644 --- a/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx +++ b/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx @@ -27,7 +27,10 @@ import './ibiz-picker-dropdown.scss'; * * @description 使用el-select组件封装,用于选择单项数据,仅以下拉列表的方式呈现选择数据。支持编辑器类型包含:`数据选择(下拉)` * @primary - * @editorparams {"name":"overflowMode","parameterType":"'auto' | 'ellipsis'","defaultvalue":"'auto'","description":"文本超出呈现模式。当参数值值为 'auto' 时,宽度按照内容展开;当参数值为 'ellipsis' 时,若内容超出宽度则会显示省略号"} + * @editorparams {"name":"overflowmode","parameterType":"'auto' | 'ellipsis'","defaultvalue":"'auto'","description":"用于控制该编辑器下拉区域的宽度显示方式。当参数值为 'auto' 时,下拉区域宽度会根据内容自动展开;当参数值为 'ellipsis' 时,下拉区域宽度将与输入框保持一致,若内容超出宽度则会显示省略号,鼠标悬浮在内容上时会出现 tooltip 提示信息"} + * @editorparams {"name":"objectidfield","parameterType":"string","description":"值类型为OBJECT时的对象标识属性"} + * @editorparams {"name":"objectnamefield","parameterType":"string","description":"值类型为OBJECT时的对象名称属性"} + * @editorparams {"name":"objectvaluefield","parameterType":"string","description":"值类型为OBJECT时的对象值属性"} * @ignoreprops overflowMode */ export const IBizPickerDropDown = defineComponent({ @@ -395,7 +398,9 @@ export const IBizPickerDropDown = defineComponent({ }, render() { const overflowMode = - this.c.editorParams.overflowMode || ibiz.config.pickerEditor.overflowMode; + this.c.editorParams.overflowMode || + this.c.editorParams.overflowmode || + ibiz.config.pickerEditor.overflowMode; const isEllipsis = overflowMode === 'ellipsis'; // 编辑态内容 diff --git a/src/editor/data-picker/ibiz-picker-embed-view/ibiz-picker-embed-view.tsx b/src/editor/data-picker/ibiz-picker-embed-view/ibiz-picker-embed-view.tsx index 9ee3dc839..ea9f3c230 100644 --- a/src/editor/data-picker/ibiz-picker-embed-view/ibiz-picker-embed-view.tsx +++ b/src/editor/data-picker/ibiz-picker-embed-view/ibiz-picker-embed-view.tsx @@ -23,10 +23,10 @@ import { PickerEditorController } from '../picker-editor.controller'; * @description 将配置的选择视图直接嵌入到编辑器内,在编辑器中呈现选择数据。支持编辑器类型包含:`数据选择(嵌入选择视图)` * @primary * @editorparams {"name":"multiple","parameterType":"boolean","defaultvalue":false,"description":"默认为单选模式,当该参数值设为 true 时,启用多选模式,允许同时选择多个数据项"} - * @editorparams {"name":"checkStrictly","parameterType":"boolean","defaultvalue":true,"description":"在显示复选框的情况下,是否严格的遵循父子不互相关联的做法"} - * @editorparams {"name":"isShowText","parameterType":"boolean","defaultvalue":true,"description":"是否显示文本。若设置为 true,会将选中的数组数据用逗号分隔后以文本方式展示在编辑器中,直观呈现选中的数据内容"} - * @ignoreprops autoFocus | overflowMode | controlParams - * @ignoreemits enter | infoTextChange + * @editorparams {"name":"checkstrictly","parameterType":"boolean","defaultvalue":true,"description":"在多选的情况下,树节点是否严格的遵循父子不互相关联的做法"} + * @editorparams {"name":"isshowtext","parameterType":"boolean","defaultvalue":true,"description":"是否显示文本。若设置为 true,会将选中的数组数据用逗号分隔后以文本方式展示在编辑器中,直观呈现选中的数据内容"} + * @ignoreprops autoFocus | overflowMode + * @ignoreemits blur | focus | enter | infoTextChange */ export const IBizPickerEmbedView = defineComponent({ name: 'IBizPickerEmbedView', @@ -92,9 +92,15 @@ export const IBizPickerEmbedView = defineComponent({ if (editorParams.checkStrictly) { checkStrictly.value = c.toBoolean(editorParams.checkStrictly); } + if (editorParams.checkstrictly) { + checkStrictly.value = c.toBoolean(editorParams.checkstrictly); + } if (editorParams.isShowText) { isShowText.value = c.toBoolean(editorParams.isShowText); } + if (editorParams.isshowtext) { + isShowText.value = c.toBoolean(editorParams.isshowtext); + } } // 选中数据 -- Gitee