Merge pull request #199 from zhanglc0618/feature

feat: 表单设计器-部门选择器增加可选返回部门id或者部门名称
This commit is contained in:
芋道源码
2025-11-25 19:52:09 +08:00
committed by GitHub
2 changed files with 34 additions and 6 deletions

View File

@@ -56,6 +56,11 @@ export const useApiSelect = (option: ApiSelectProps) => {
remoteField: { remoteField: {
type: String, type: String,
default: 'label' default: 'label'
},
// 返回值类型用于部门选择器等id 返回IDname 返回名称
returnType: {
type: String,
default: 'id'
} }
}, },
setup(props) { setup(props) {
@@ -119,10 +124,21 @@ export const useApiSelect = (option: ApiSelectProps) => {
function parseOptions0(data: any[]) { function parseOptions0(data: any[]) {
if (Array.isArray(data)) { if (Array.isArray(data)) {
options.value = data.map((item: any) => ({ options.value = data.map((item: any) => {
label: parseExpression(item, props.labelField), const label = parseExpression(item, props.labelField)
value: parseExpression(item, props.valueField) let value = parseExpression(item, props.valueField)
}))
// 根据 returnType 决定返回值
// 如果设置了 returnType 为 'name',则返回 label 作为 value
if (props.returnType === 'name') {
value = label
}
return {
label: label,
value: value
}
})
return return
} }
console.warn(`接口[${props.url}] 返回结果不是一个数组`) console.warn(`接口[${props.url}] 返回结果不是一个数组`)

View File

@@ -35,7 +35,7 @@ export const useFormCreateDesigner = async (designer: Ref) => {
// 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代 // 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代
designer.value?.removeMenuItem('upload') designer.value?.removeMenuItem('upload')
// 移除自带的富文本组件规则,使用 editorRule 替代 // 移除自带的富文本组件规则,使用 editorRule 替代
designer.value?.removeMenuItem('fc-editor') designer.value?.removeMenuItem('fcEditor')
const components = [editorRule, uploadFileRule, uploadImgRule, uploadImgsRule] const components = [editorRule, uploadFileRule, uploadImgRule, uploadImgsRule]
components.forEach((component) => { components.forEach((component) => {
// 插入组件规则 // 插入组件规则
@@ -57,7 +57,19 @@ export const useFormCreateDesigner = async (designer: Ref) => {
const deptSelectRule = useSelectRule({ const deptSelectRule = useSelectRule({
name: 'DeptSelect', name: 'DeptSelect',
label: '部门选择器', label: '部门选择器',
icon: 'icon-address-card-o' icon: 'icon-address-card-o',
props: [
{
type: 'select',
field: 'returnType',
title: '返回值类型',
value: 'id',
options: [
{ label: '部门ID', value: 'id' },
{ label: '部门名称', value: 'name' }
]
}
]
}) })
const dictSelectRule = useDictSelectRule() const dictSelectRule = useDictSelectRule()
const apiSelectRule0 = useSelectRule({ const apiSelectRule0 = useSelectRule({