fix: listSelect可视化适配自定义label value

This commit is contained in:
zhangtao07 2023-11-08 20:27:56 +08:00
parent 8a3ccc736e
commit 2c140f6e8f
3 changed files with 28 additions and 29 deletions

View File

@ -304,7 +304,7 @@ export interface RendererInfo extends RendererScaffoldInfo {
sharedContext?: Record<string, any>;
dialogTitle?: string; //弹窗标题用于弹窗大纲的展示
dialogType?: string; //区分确认对话框类型
subEditorVariable?: Array<{label: string; children: any}>; // 传递给子编辑器的组件自定义变量如listSelect的选项名称和值
getSubEditorVariable: (schema?: any) => Array<{label: string; children: any}>; // 传递给子编辑器的组件自定义变量如listSelect的选项名称和值
}
export type BasicRendererInfo = Omit<
@ -1051,7 +1051,7 @@ export abstract class BasePlugin implements PluginInterface {
isListComponent: plugin.isListComponent,
rendererName: plugin.rendererName,
memberImmutable: plugin.memberImmutable,
subEditorVariable: plugin.subEditorVariable
getSubEditorVariable: plugin.getSubEditorVariable
};
}
}

View File

@ -1224,7 +1224,10 @@ export async function resolveVariablesFromScope(node: any, manager: any) {
// 子编辑器内读取的host节点自定义变量非数据域方式如listSelect的选项值
let hostNodeVaraibles = [];
if (manager?.store?.isSubEditor) {
hostNodeVaraibles = manager.config?.hostNode?.info?.subEditorVariable || [];
hostNodeVaraibles =
manager.config?.hostNode?.info?.getSubEditorVariable?.(
manager.config?.hostNode.schema
) || [];
}
const variables: VariableItem[] =

View File

@ -109,21 +109,26 @@ export class ListControlPlugin extends BasePlugin {
}
];
subEditorVariable: Array<{label: string; children: any}> = [
{
label: '当前选项',
children: [
{
label: '选项名称',
value: 'label'
},
{
label: '选项值',
value: 'value'
}
]
}
];
getSubEditorVariable(schema: any): Array<{label: string; children: any}> {
let labelField = schema?.labelField || 'label';
let valueField = schema?.valueField || 'value';
return [
{
label: '当前选项',
children: [
{
label: '选项名称',
value: labelField
},
{
label: '选项值',
value: valueField
}
]
}
];
}
panelBodyCreator = (context: BaseEventContext) => {
return formItemControl(
@ -201,7 +206,7 @@ export class ListControlPlugin extends BasePlugin {
body: [
{
type: 'tpl',
tpl: `\${${this.getDisplayField(value)}}`,
tpl: `\${${this.getDisplayField(data)}}`,
wrapperComponent: '',
inline: true
}
@ -275,16 +280,7 @@ export class ListControlPlugin extends BasePlugin {
}
getDisplayField(data: any) {
if (
data.source ||
(data.map &&
Array.isArray(data.map) &&
data.map[0] &&
Object.keys(data.map[0]).length > 1)
) {
return data.labelField ?? 'label';
}
return 'label';
return data?.labelField ?? 'label';
}
editDetail(id: string, field: string) {