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