Skip to content

Commit c77526e

Browse files
author
puhui999
committed
form-create: 封装通用选择器 hook
1 parent 1434d7d commit c77526e

File tree

2 files changed

+50
-57
lines changed

2 files changed

+50
-57
lines changed

src/components/FormCreate/src/components/useCurrencySelect.tsx

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ export const useCurrencySelect = (option: CurrencySelectProps) => {
3737
type: String,
3838
default: 'select'
3939
}
40+
// // 是否多选
41+
// multiple: {
42+
// type: Boolean,
43+
// default: false
44+
// }
4045
},
4146
setup(props) {
4247
const attrs = useAttrs()
@@ -79,15 +84,14 @@ export const useCurrencySelect = (option: CurrencySelectProps) => {
7984
onMounted(async () => {
8085
await getOptions()
8186
})
87+
// TODO puhui999: 单下拉多选的时候页面会卡住报错,下次解决
8288
const buildSelect = () => {
8389
return (
84-
<>
85-
<el-select class="w-1/1" {...attrs}>
86-
{options.value.map((item, index) => (
87-
<el-option key={index} label={item.label} value={item.value} />
88-
))}
89-
</el-select>
90-
</>
90+
<el-select class="w-1/1" {...attrs}>
91+
{options.value.map((item, index) => (
92+
<el-option key={index} label={item.label} value={item.value} />
93+
))}
94+
</el-select>
9195
)
9296
}
9397
const buildCheckbox = () => {
@@ -98,13 +102,11 @@ export const useCurrencySelect = (option: CurrencySelectProps) => {
98102
]
99103
}
100104
return (
101-
<>
102-
<el-checkbox-group class="w-1/1" {...attrs}>
103-
{options.value.map((item, index) => (
104-
<el-checkbox key={index} label={item.label} value={item.value} />
105-
))}
106-
</el-checkbox-group>
107-
</>
105+
<el-checkbox-group class="w-1/1" {...attrs}>
106+
{options.value.map((item, index) => (
107+
<el-checkbox key={index} label={item.label} value={item.value} />
108+
))}
109+
</el-checkbox-group>
108110
)
109111
}
110112
const buildRadio = () => {
@@ -115,15 +117,13 @@ export const useCurrencySelect = (option: CurrencySelectProps) => {
115117
]
116118
}
117119
return (
118-
<>
119-
<el-radio-group class="w-1/1" {...attrs}>
120-
{options.value.map((item, index) => (
121-
<el-radio key={index} value={item.value}>
122-
{item.label}
123-
</el-radio>
124-
))}
125-
</el-radio-group>
126-
</>
120+
<el-radio-group class="w-1/1" {...attrs}>
121+
{options.value.map((item, index) => (
122+
<el-radio key={index} value={item.value}>
123+
{item.label}
124+
</el-radio>
125+
))}
126+
</el-radio-group>
127127
)
128128
}
129129
return () => (

src/components/FormCreate/src/useFormCreateDesigner.ts

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,30 @@ export const useFormCreateDesigner = async (designer: Ref) => {
2525
const uploadFileRule = useUploadFileRule()
2626
const uploadImgRule = useUploadImgRule()
2727
const uploadImgsRule = useUploadImgsRule()
28+
29+
/**
30+
* 构建表单组件
31+
*/
32+
const buildFormComponents = () => {
33+
// 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代
34+
designer.value?.removeMenuItem('upload')
35+
// 移除自带的富文本组件规则,使用 editorRule 替代
36+
designer.value?.removeMenuItem('fc-editor')
37+
const components = [editorRule, uploadFileRule, uploadImgRule, uploadImgsRule]
38+
components.forEach((component) => {
39+
// 插入组件规则
40+
designer.value?.addComponent(component)
41+
// 插入拖拽按钮到 `main` 分类下
42+
designer.value?.appendMenuItem('main', {
43+
icon: component.icon,
44+
name: component.name,
45+
label: component.label
46+
})
47+
})
48+
}
49+
50+
const userSelectRule = useSelectRule({ name: 'UserSelect', label: '用户选择器' })
51+
const deptSelectRule = useSelectRule({ name: 'DeptSelect', label: '部门选择器' })
2852
const dictSelectRule = useDictSelectRule()
2953
const restfulSelectRule = useSelectRule({
3054
name: 'RestfulSelect',
@@ -56,46 +80,15 @@ export const useFormCreateDesigner = async (designer: Ref) => {
5680
}
5781
]
5882
})
59-
6083
/**
61-
* 构建表单组件
84+
* 构建系统字段菜单
6285
*/
63-
const buildFormComponents = () => {
64-
// 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代
65-
designer.value?.removeMenuItem('upload')
66-
// 移除自带的富文本组件规则,使用 editorRule 替代
67-
designer.value?.removeMenuItem('fc-editor')
86+
const buildSystemMenu = () => {
6887
// 移除自带的下拉选择器组件,使用 currencySelectRule 替代
6988
designer.value?.removeMenuItem('select')
7089
designer.value?.removeMenuItem('radio')
7190
designer.value?.removeMenuItem('checkbox')
72-
const components = [
73-
editorRule,
74-
uploadFileRule,
75-
uploadImgRule,
76-
uploadImgsRule,
77-
dictSelectRule,
78-
restfulSelectRule
79-
]
80-
components.forEach((component) => {
81-
// 插入组件规则
82-
designer.value?.addComponent(component)
83-
// 插入拖拽按钮到 `main` 分类下
84-
designer.value?.appendMenuItem('main', {
85-
icon: component.icon,
86-
name: component.name,
87-
label: component.label
88-
})
89-
})
90-
}
91-
92-
const userSelectRule = useSelectRule({ name: 'UserSelect', label: '用户选择器' })
93-
const deptSelectRule = useSelectRule({ name: 'DeptSelect', label: '部门选择器' })
94-
/**
95-
* 构建系统字段菜单
96-
*/
97-
const buildSystemMenu = () => {
98-
const components = [userSelectRule, deptSelectRule]
91+
const components = [userSelectRule, deptSelectRule, dictSelectRule, restfulSelectRule]
9992
const menu: Menu = {
10093
name: 'system',
10194
title: '系统字段',

0 commit comments

Comments
 (0)