diff --git a/packages/form/src/fields/NumberRange.vue b/packages/form/src/fields/NumberRange.vue
new file mode 100644
index 00000000..32ae23e6
--- /dev/null
+++ b/packages/form/src/fields/NumberRange.vue
@@ -0,0 +1,60 @@
+
+
+
+ -
+
+
+
+
+
diff --git a/packages/form/src/index.ts b/packages/form/src/index.ts
index 13f1f2ca..3a7813d2 100644
--- a/packages/form/src/index.ts
+++ b/packages/form/src/index.ts
@@ -38,6 +38,7 @@ import DynamicField from './fields/DynamicField.vue';
import Hidden from './fields/Hidden.vue';
import Link from './fields/Link.vue';
import Number from './fields/Number.vue';
+import NumberRange from './fields/NumberRange.vue';
import RadioGroup from './fields/RadioGroup.vue';
import Select from './fields/Select.vue';
import Switch from './fields/Switch.vue';
@@ -66,6 +67,7 @@ export { default as MTable } from './containers/Table.vue';
export { default as MGroupList } from './containers/GroupList.vue';
export { default as MText } from './fields/Text.vue';
export { default as MNumber } from './fields/Number.vue';
+export { default as MNumberRange } from './fields/NumberRange.vue';
export { default as MTextarea } from './fields/Textarea.vue';
export { default as MHidden } from './fields/Hidden.vue';
export { default as MDate } from './fields/Date.vue';
@@ -109,6 +111,7 @@ export default {
app.component('m-form-tab', Tabs);
app.component('m-fields-text', Text);
app.component('m-fields-number', Number);
+ app.component('m-fields-number-range', NumberRange);
app.component('m-fields-textarea', Textarea);
app.component('m-fields-hidden', Hidden);
app.component('m-fields-date', Date);
diff --git a/packages/form/src/schema.ts b/packages/form/src/schema.ts
index 3c143ac9..0f905ac6 100644
--- a/packages/form/src/schema.ts
+++ b/packages/form/src/schema.ts
@@ -339,6 +339,13 @@ export interface NumberConfig extends FormItem {
placeholder?: string;
}
+/**
+ * 数值范围
+ */
+export interface NumberRangeConfig extends FormItem {
+ type?: 'number-range';
+}
+
/**
* 隐藏域
*/
diff --git a/packages/form/src/theme/index.scss b/packages/form/src/theme/index.scss
index c2587c95..728a9dd4 100644
--- a/packages/form/src/theme/index.scss
+++ b/packages/form/src/theme/index.scss
@@ -9,3 +9,4 @@
@use "./table.scss";
@use "./select.scss";
@use "./tabs.scss";
+@use "./number-range.scss";
diff --git a/packages/form/src/theme/number-range.scss b/packages/form/src/theme/number-range.scss
new file mode 100644
index 00000000..97b1054f
--- /dev/null
+++ b/packages/form/src/theme/number-range.scss
@@ -0,0 +1,8 @@
+.m-fields-number-range {
+ display: flex;
+ align-items: center;
+
+ .split-tag {
+ margin: 0 5px;
+ }
+}
diff --git a/packages/form/src/utils/form.ts b/packages/form/src/utils/form.ts
index 89aab57c..42f4873d 100644
--- a/packages/form/src/utils/form.ts
+++ b/packages/form/src/utils/form.ts
@@ -174,7 +174,7 @@ const getDefaultValue = function (mForm: FormState | undefined, { defaultValue,
return false;
}
- if (multiple) {
+ if (multiple || type === 'number-range') {
return [];
}