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 []; }