Skip to content

Commit 769b63d

Browse files
author
puhui999
committed
form-create:移除自带的下拉选择器组件,使用 currencySelectRule 替代
1 parent 0076236 commit 769b63d

File tree

8 files changed

+101
-62
lines changed

8 files changed

+101
-62
lines changed

src/components/FormCreate/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
import { useFormCreateDesigner } from './src/useFormCreateDesigner'
2+
import CurrencySelect from './src/CurrencySelect/index.vue'
23

3-
export { useFormCreateDesigner }
4+
export { useFormCreateDesigner, CurrencySelect }
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<template>
2+
<el-select class="w-1/1" v-bind="attrs">
3+
<el-option
4+
v-for="(item, index) in options"
5+
:key="index"
6+
:label="item.label"
7+
:value="item.value"
8+
/>
9+
</el-select>
10+
</template>
11+
12+
<script lang="ts" setup>
13+
import request from '@/config/axios'
14+
import { isEmpty } from '@/utils/is'
15+
16+
defineOptions({ name: 'CurrencySelect' })
17+
18+
// 接受父组件参数
19+
interface Props {
20+
labelField?: string // 字典类型
21+
valueField?: string // 字典值类型
22+
restful?: string // api 接口
23+
}
24+
25+
const props = withDefaults(defineProps<Props>(), {
26+
labelField: 'nickname',
27+
valueField: 'id',
28+
restful: '/system/user/simple-list'
29+
})
30+
31+
const attrs = useAttrs()
32+
const options = ref<any[]>([]) // 下拉数据
33+
const getOptions = async () => {
34+
options.value = []
35+
if (isEmpty(props.restful)) {
36+
return
37+
}
38+
// TODO 只支持 GET 查询,复杂下拉构建条件请使用业务表单
39+
const data = await request.get({ url: props.restful })
40+
if (Array.isArray(data)) {
41+
options.value = data.map((item: any) => ({
42+
label: item[props.labelField],
43+
value: item[props.valueField]
44+
}))
45+
return
46+
}
47+
console.log(`接口[${props.restful}] 返回结果不是一个数组`)
48+
}
49+
50+
onMounted(() => {
51+
getOptions()
52+
})
53+
</script>

src/components/FormCreate/src/config/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { useUploadFileRule } from './useUploadFileRule'
22
import { useUploadImgRule } from './useUploadImgRule'
33
import { useUploadImgsRule } from './useUploadImgsRule'
44
import { useDictSelectRule } from './useDictSelectRule'
5-
import { useUserSelectRule } from './useUserSelectRule'
5+
import { useCurrencySelectRule } from './useCurrencySelectRule'
66
import { useEditorRule } from './useEditorRule'
77

88
export {
99
useUploadFileRule,
1010
useUploadImgRule,
1111
useUploadImgsRule,
1212
useDictSelectRule,
13-
useUserSelectRule,
13+
useCurrencySelectRule,
1414
useEditorRule
1515
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { generateUUID } from '@/utils'
2+
import { localeProps, makeRequiredRule } from '@/components/FormCreate/src/utils'
3+
import selectRule from '@/components/FormCreate/src/config/selectRule'
4+
5+
export const useCurrencySelectRule = () => {
6+
const label = '通用选择器'
7+
const name = 'CurrencySelect'
8+
return {
9+
icon: 'icon-select',
10+
label,
11+
name,
12+
rule() {
13+
return {
14+
type: name,
15+
field: generateUUID(),
16+
title: label,
17+
info: '下面以获得系统用户下拉数据为例,您可以自行按需更改',
18+
$required: false
19+
}
20+
},
21+
props(_, { t }) {
22+
return localeProps(t, name + '.props', [
23+
makeRequiredRule(),
24+
{
25+
type: 'input',
26+
field: 'restful',
27+
title: 'restful api 接口',
28+
value: '/system/user/simple-list'
29+
},
30+
{ type: 'input', field: 'labelField', title: 'label 属性', value: 'nickname' },
31+
{ type: 'input', field: 'valueField', title: 'value 属性', value: 'id' },
32+
...selectRule
33+
])
34+
}
35+
}
36+
}

src/components/FormCreate/src/config/useUserSelectRule.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/components/FormCreate/src/useFormCreateDesigner.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import {
2+
useCurrencySelectRule,
23
useDictSelectRule,
34
useEditorRule,
45
useUploadFileRule,
56
useUploadImgRule,
6-
useUploadImgsRule,
7-
useUserSelectRule
7+
useUploadImgsRule
88
} from './config'
99
import { Ref } from 'vue'
1010

@@ -24,20 +24,22 @@ export const useFormCreateDesigner = (designer: Ref) => {
2424
const uploadImgRule = useUploadImgRule()
2525
const uploadImgsRule = useUploadImgsRule()
2626
const dictSelectRule = useDictSelectRule()
27-
const userSelectRule = useUserSelectRule()
27+
const currencySelectRule = useCurrencySelectRule()
2828

2929
onMounted(() => {
3030
// 移除自带的上传组件规则,使用 uploadFileRule、uploadImgRule、uploadImgsRule 替代
3131
designer.value?.removeMenuItem('upload')
3232
// 移除自带的富文本组件规则,使用 editorRule 替代
3333
designer.value?.removeMenuItem('fc-editor')
34+
// 移除自带的下拉选择器组件,使用 currencySelectRule 替代
35+
designer.value?.removeMenuItem('select')
3436
const components = [
3537
editorRule,
3638
uploadFileRule,
3739
uploadImgRule,
3840
uploadImgsRule,
3941
dictSelectRule,
40-
userSelectRule
42+
currencySelectRule
4143
]
4244
components.forEach((component) => {
4345
// 插入组件规则

src/plugins/formCreate/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import install from '@form-create/element-ui/auto-import'
2020
//======================= 自定义组件 =======================
2121
import { UploadFile, UploadImg, UploadImgs } from '@/components/UploadFile'
2222
import { DictSelect } from '@/components/DictSelect'
23-
import UserSelect from '@/views/system/user/components/UserSelect.vue'
23+
import { CurrencySelect } from '@/components/FormCreate'
2424
import { Editor } from '@/components/Editor'
2525

2626
const components = [
@@ -40,7 +40,7 @@ const components = [
4040
UploadImgs,
4141
UploadFile,
4242
DictSelect,
43-
UserSelect,
43+
CurrencySelect,
4444
Editor
4545
]
4646

src/views/system/user/components/UserSelect.vue

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)