diff --git a/frontend/src/components/widget/DeWidget/DeTreeSelect.vue b/frontend/src/components/widget/DeWidget/DeTreeSelect.vue
new file mode 100644
index 0000000000..bbdea8ec26
--- /dev/null
+++ b/frontend/src/components/widget/DeWidget/DeTreeSelect.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/widget/serviceImpl/NumberSelectServiceImpl.js b/frontend/src/components/widget/serviceImpl/NumberSelectServiceImpl.js
new file mode 100644
index 0000000000..514365a509
--- /dev/null
+++ b/frontend/src/components/widget/serviceImpl/NumberSelectServiceImpl.js
@@ -0,0 +1,80 @@
+
+import { WidgetService } from '../service/WidgetService'
+
+const leftPanel = {
+ icon: 'iconfont icon-xialakuang',
+ label: '数字下拉',
+ defaultClass: 'text-filter'
+}
+
+const dialogPanel = {
+ options: {
+ attrs: {
+ multiple: false,
+ placeholder: '请选择',
+ datas: [],
+ key: 'id',
+ label: 'text',
+ value: 'id'
+ },
+ value: ''
+ },
+ defaultClass: 'text-filter',
+ component: 'de-select'
+}
+const drawPanel = {
+ type: 'custom',
+ style: {
+ width: 300,
+ height: 35,
+ fontSize: 14,
+ fontWeight: 500,
+ lineHeight: '',
+ letterSpacing: 0,
+ textAlign: '',
+ color: ''
+ },
+ component: 'de-select'
+}
+
+class NumberSelectServiceImpl extends WidgetService {
+ constructor(options = {}) {
+ Object.assign(options, { name: 'numberSelectWidget' })
+ super(options)
+ this.filterDialog = true
+ this.showSwitch = true
+ }
+
+ 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
+ })
+ }
+
+ optionDatas(datas) {
+ if (!datas) return null
+ return datas.map(item => {
+ return {
+ id: item,
+ text: item
+ }
+ })
+ }
+}
+const numberSelectServiceImpl = new NumberSelectServiceImpl()
+export default numberSelectServiceImpl
diff --git a/frontend/src/views/panel/filter/index.vue b/frontend/src/views/panel/filter/index.vue
index bfa730ed84..de92d15faa 100644
--- a/frontend/src/views/panel/filter/index.vue
+++ b/frontend/src/views/panel/filter/index.vue
@@ -54,6 +54,9 @@ export default {
'textSelectWidget',
'textInputWidget'
],
+ '数字过滤组件': [
+ 'numberSelectWidget'
+ ],
'按钮': [
'buttonSureWidget'
]
@@ -186,6 +189,24 @@ export default {
color: #fff;
}
}
+ .tree-filter {
+ background-color: rgba(22,160,132,.1);
+ .filter-widget-icon {
+ color: #37b4aa;
+ }
+ .filter-widget-text {
+ color: #3d4d66;
+ }
+ }
+ .tree-filter:hover {
+ background-color: #37b4aa;
+ .filter-widget-icon {
+ color: #37b4aa;
+ }
+ .filter-widget-text {
+ color: #fff;
+ }
+ }
.filter-widget-icon {
width: 40px;