diff --git a/frontend/src/components/DeDrag/index.vue b/frontend/src/components/DeDrag/index.vue index 29cda42516..8c4b58fb29 100644 --- a/frontend/src/components/DeDrag/index.vue +++ b/frontend/src/components/DeDrag/index.vue @@ -623,7 +623,7 @@ export default { elementMouseDown(e) { // private 设置当前组件数据及状态 this.$store.commit('setClickComponentStatus', true) - if (this.element.component !== 'v-text' && this.element.component !== 'rect-shape' && this.element.component !== 'de-input-search') { + if (this.element.component !== 'v-text' && this.element.component !== 'rect-shape' && this.element.component !== 'de-input-search' && this.element.component !== 'de-number-range') { e.preventDefault() } // 阻止冒泡事件 diff --git a/frontend/src/components/canvas/components/Editor/Shape.vue b/frontend/src/components/canvas/components/Editor/Shape.vue index 2191c2886e..b0475bd00d 100644 --- a/frontend/src/components/canvas/components/Editor/Shape.vue +++ b/frontend/src/components/canvas/components/Editor/Shape.vue @@ -226,7 +226,7 @@ export default { handleMouseDownOnShape(e) { this.$store.commit('setClickComponentStatus', true) - if (this.element.component !== 'v-text' && this.element.component !== 'rect-shape' && this.element.component !== 'de-input-search') { + if (this.element.component !== 'v-text' && this.element.component !== 'rect-shape' && this.element.component !== 'de-input-search' && this.element.component !== 'de-number-range') { e.preventDefault() } diff --git a/frontend/src/components/widget/DeWidget/DeNumberRange.vue b/frontend/src/components/widget/DeWidget/DeNumberRange.vue new file mode 100644 index 0000000000..8e728119c2 --- /dev/null +++ b/frontend/src/components/widget/DeWidget/DeNumberRange.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/frontend/src/components/widget/bean/Condition.js b/frontend/src/components/widget/bean/Condition.js index 8b44b5c01a..566a2e1a82 100644 --- a/frontend/src/components/widget/bean/Condition.js +++ b/frontend/src/components/widget/bean/Condition.js @@ -1,7 +1,7 @@ /** * fieldId 字段ID * value 字段值 - * operator 操作[eq, ne, gt, ge, lt, le, in, not in, like, not like] + * operator 操作[eq, ne, gt, ge, lt, le, in, not in, like, not like, between] * viewIds 过滤视图范围 */ export class Condition { diff --git a/frontend/src/components/widget/serviceImpl/NumberRangeServiceImpl.js b/frontend/src/components/widget/serviceImpl/NumberRangeServiceImpl.js new file mode 100644 index 0000000000..1168bbf7b1 --- /dev/null +++ b/frontend/src/components/widget/serviceImpl/NumberRangeServiceImpl.js @@ -0,0 +1,66 @@ +import { WidgetService } from '../service/WidgetService' + +const leftPanel = { + icon: 'iconfont icon-zuoce-qujian', + label: '数值区间', + defaultClass: 'text-filter' +} + +const dialogPanel = { + options: { + attrs: { + placeholder: '请输入整数', + viewIds: [] + }, + value: '' + }, + defaultClass: 'text-filter', + component: 'de-number-range' +} +const drawPanel = { + type: 'custom', + style: { + width: 500, + // height: 45.5, + height: 90, + fontSize: 14, + fontWeight: 500, + lineHeight: '', + letterSpacing: 0, + textAlign: '', + color: '' + }, + component: 'de-number-range' +} + +class NumberRangeServiceImpl extends WidgetService { + constructor(options = {}) { + Object.assign(options, { name: 'numberRangeWidget' }) + super(options) + this.filterDialog = true + this.showSwitch = false + } + + initLeftPanel() { + const value = JSON.parse(JSON.stringify(leftPanel)) + return value + } + + initFilterDialog() { + const value = JSON.parse(JSON.stringify(dialogPanel)) + return value + } + + initDrawPanel() { + const value = JSON.parse(JSON.stringify(drawPanel)) + return value + } + + filterFieldMethod(fields) { + return fields.filter(field => { + return field['deType'] === 2 + }) + } +} +const numberRangeServiceImpl = new NumberRangeServiceImpl() +export default numberRangeServiceImpl diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 07657cc4c9..95e502fd33 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1287,5 +1287,14 @@ export default { i18n_msg_type_dataset_sync_faild: 'Dataset synchronization failed', i18n_msg_type_all: 'All type', channel_inner_msg: 'On site news' + }, + denumberrange: { + please_key_min: 'Please key min value', + please_key_max: 'Please key max value', + out_of_min: 'The min value cannot be less than the min integer -2³²', + out_of_max: 'The max value cannot be more than the max integer 2³²-1', + must_int: 'Please key interger', + min_out_max: 'The min value must be less than the max value', + max_out_min: 'The max value must be more than the min value' } } diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 468514f291..641cace854 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -1287,5 +1287,14 @@ export default { i18n_msg_type_dataset_sync_faild: '數據集同步失敗', i18n_msg_type_all: '全部類型', channel_inner_msg: '站內消息' + }, + denumberrange: { + please_key_min: '請輸入最小值', + please_key_max: '請輸入最大值', + out_of_min: '最小值不能小于最小整數-2³²', + out_of_max: '最大值不能大于最大整數2³²-1', + must_int: '請輸入整數', + min_out_max: '最小值必須小于最大值', + max_out_min: '最大值必須大于最小值' } } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index d759095305..96d532551c 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1289,5 +1289,14 @@ export default { i18n_msg_type_dataset_sync_faild: '数据集同步失败', i18n_msg_type_all: '全部类型', channel_inner_msg: '站内消息' + }, + denumberrange: { + please_key_min: '请输入最小值', + please_key_max: '请输入最大值', + out_of_min: '最小值不能小于最小整数-2³²', + out_of_max: '最大值不能大于最大整数2³²-1', + must_int: '请输入整数', + min_out_max: '最小值必须小于最大值', + max_out_min: '最大值必须大于最小值' } } diff --git a/frontend/src/styles/index.scss b/frontend/src/styles/index.scss index 99911837a5..19d4358e57 100644 --- a/frontend/src/styles/index.scss +++ b/frontend/src/styles/index.scss @@ -211,12 +211,14 @@ div:focus { } .custom-component-class { width: 100%; + + div:not(.de-number-range-container ) { + width: 100% !important; + } + div.el-input-group__append { width: 10% !important; } - div { - width: 100% !important; - } } %field-icon{ diff --git a/frontend/src/views/panel/filter/index.vue b/frontend/src/views/panel/filter/index.vue index 7139107d12..409a1c24bf 100644 --- a/frontend/src/views/panel/filter/index.vue +++ b/frontend/src/views/panel/filter/index.vue @@ -54,7 +54,8 @@ export default { 'textInputWidget' ], '数字过滤组件': [ - 'numberSelectWidget' + 'numberSelectWidget', + 'numberRangeWidget' ] // '按钮': [ // 'buttonSureWidget'