From 89414f173e6c34411c7fbe984932aef1f3670380 Mon Sep 17 00:00:00 2001
From: zuihou <244387066@qq.com>
Date: Sat, 16 Oct 2021 21:25:57 +0800
Subject: [PATCH] =?UTF-8?q?feat(Form):=20=E6=96=B0=E5=A2=9E=20ApiRadioGrou?=
=?UTF-8?q?p=20=E7=BB=84=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
mock/demo/select-demo.ts | 8 +-
src/components/Form/index.ts | 1 +
src/components/Form/src/componentMap.ts | 2 +
.../Form/src/components/ApiRadioGroup.vue | 130 ++++++++++++++++++
src/components/Form/src/types/index.ts | 1 +
src/views/demo/form/index.vue | 44 ++++++
6 files changed, 182 insertions(+), 4 deletions(-)
create mode 100644 src/components/Form/src/components/ApiRadioGroup.vue
diff --git a/mock/demo/select-demo.ts b/mock/demo/select-demo.ts
index fc35a395..631c6bb0 100644
--- a/mock/demo/select-demo.ts
+++ b/mock/demo/select-demo.ts
@@ -1,11 +1,11 @@
import { MockMethod } from 'vite-plugin-mock';
import { resultSuccess } from '../_util';
-const demoList = (keyword) => {
+const demoList = (keyword, count = 20) => {
const result = {
list: [] as any[],
};
- for (let index = 0; index < 20; index++) {
+ for (let index = 0; index < count; index++) {
result.list.push({
name: `${keyword ?? ''}选项${index}`,
id: `${index}`,
@@ -20,9 +20,9 @@ export default [
timeout: 1000,
method: 'get',
response: ({ query }) => {
- const { keyword } = query;
+ const { keyword, count } = query;
console.log(keyword);
- return resultSuccess(demoList(keyword));
+ return resultSuccess(demoList(keyword, count));
},
},
] as MockMethod[];
diff --git a/src/components/Form/index.ts b/src/components/Form/index.ts
index f9cce5e4..9859b29a 100644
--- a/src/components/Form/index.ts
+++ b/src/components/Form/index.ts
@@ -9,5 +9,6 @@ export { useForm } from './src/hooks/useForm';
export { default as ApiSelect } from './src/components/ApiSelect.vue';
export { default as RadioButtonGroup } from './src/components/RadioButtonGroup.vue';
export { default as ApiTreeSelect } from './src/components/ApiTreeSelect.vue';
+export { default as ApiRadioGroup } from './src/components/ApiRadioGroup.vue';
export { BasicForm };
diff --git a/src/components/Form/src/componentMap.ts b/src/components/Form/src/componentMap.ts
index 4bfbdf11..6d0b1a6b 100644
--- a/src/components/Form/src/componentMap.ts
+++ b/src/components/Form/src/componentMap.ts
@@ -21,6 +21,7 @@ import {
Divider,
} from 'ant-design-vue';
+import ApiRadioGroup from './components/ApiRadioGroup.vue';
import RadioButtonGroup from './components/RadioButtonGroup.vue';
import ApiSelect from './components/ApiSelect.vue';
import ApiTreeSelect from './components/ApiTreeSelect.vue';
@@ -43,6 +44,7 @@ componentMap.set('Select', Select);
componentMap.set('ApiSelect', ApiSelect);
componentMap.set('TreeSelect', TreeSelect);
componentMap.set('ApiTreeSelect', ApiTreeSelect);
+componentMap.set('ApiRadioGroup', ApiRadioGroup);
componentMap.set('Switch', Switch);
componentMap.set('RadioButtonGroup', RadioButtonGroup);
componentMap.set('RadioGroup', Radio.Group);
diff --git a/src/components/Form/src/components/ApiRadioGroup.vue b/src/components/Form/src/components/ApiRadioGroup.vue
new file mode 100644
index 00000000..712cfba8
--- /dev/null
+++ b/src/components/Form/src/components/ApiRadioGroup.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+ {{ item.label }}
+
+
+ {{ item.label }}
+
+
+
+
+
diff --git a/src/components/Form/src/types/index.ts b/src/components/Form/src/types/index.ts
index 1cd6a02c..c63b3408 100644
--- a/src/components/Form/src/types/index.ts
+++ b/src/components/Form/src/types/index.ts
@@ -92,6 +92,7 @@ export type ComponentType =
| 'ApiSelect'
| 'TreeSelect'
| 'ApiTreeSelect'
+ | 'ApiRadioGroup'
| 'RadioButtonGroup'
| 'RadioGroup'
| 'Checkbox'
diff --git a/src/views/demo/form/index.vue b/src/views/demo/form/index.vue
index 72744cdf..7188f725 100644
--- a/src/views/demo/form/index.vue
+++ b/src/views/demo/form/index.vue
@@ -410,6 +410,50 @@
span: 8,
},
},
+ {
+ field: 'field34',
+ component: 'ApiRadioGroup',
+ label: '远程Radio',
+ helpMessage: ['ApiRadioGroup组件', '使用接口提供的数据生成选项'],
+ required: true,
+ componentProps: {
+ api: optionsListApi,
+ params: {
+ count: 2,
+ },
+ resultField: 'list',
+ // use name as label
+ labelField: 'name',
+ // use id as value
+ valueField: 'id',
+ },
+ defaultValue: '1',
+ colProps: {
+ span: 8,
+ },
+ },
+ {
+ field: 'field35',
+ component: 'ApiRadioGroup',
+ label: '远程Radio',
+ helpMessage: ['ApiRadioGroup组件', '使用接口提供的数据生成选项'],
+ required: true,
+ componentProps: {
+ api: optionsListApi,
+ params: {
+ count: 2,
+ },
+ resultField: 'list',
+ // use name as label
+ labelField: 'name',
+ // use id as value
+ valueField: 'id',
+ isBtn: true,
+ },
+ colProps: {
+ span: 8,
+ },
+ },
{
field: 'divider-linked',
component: 'Divider',