From 8ab48c9de9f89903a65b7e97ce4f194e01505e66 Mon Sep 17 00:00:00 2001 From: qianming Date: Fri, 3 Feb 2023 09:42:32 +0800 Subject: [PATCH] =?UTF-8?q?feat-=E4=B8=8B=E6=8B=89=E6=A1=86=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E8=A7=A3=E6=9E=90=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report-ui/src/mixins/queryform.js | 85 +++++++++++++------ .../tools/configure/form/widget-select.js | 20 +++-- .../designer/widget/form/widgetSelect.vue | 51 ++++++++--- 3 files changed, 113 insertions(+), 43 deletions(-) diff --git a/report-ui/src/mixins/queryform.js b/report-ui/src/mixins/queryform.js index ebf64a23..c013fac1 100644 --- a/report-ui/src/mixins/queryform.js +++ b/report-ui/src/mixins/queryform.js @@ -112,6 +112,7 @@ export default { // widget-heatmap 热力图 // widget-mapline 中国地图-路线图 // widget-radar 雷达图 + // widget-select 下拉框 const chartType = params.chartType if ( chartType == "widget-barchart" || @@ -134,13 +135,15 @@ export default { return this.linemapChartFn(params.chartProperties, data) } else if (chartType == "widget-radar") { return this.radarChartFn(params.chartProperties, data) + } else if (chartType == "widget-select") { + return this.selectChartFn(params.chartProperties, data) } else { return data } }, // 柱状图、折线图、柱线图 barOrLineChartFn(chartProperties, data) { - const ananysicData = {}; + const analysisData = {}; const xAxisList = []; const series = []; for (const key in chartProperties) { @@ -163,13 +166,13 @@ export default { series.push(obj); } } - ananysicData["xAxis"] = xAxisList; - ananysicData["series"] = series; - return ananysicData; + analysisData["xAxis"] = xAxisList; + analysisData["series"] = series; + return analysisData; }, //堆叠图 stackChartFn(chartProperties, data) { - const ananysicData = {}; + const analysisData = {}; const series = []; //全部字段字典值 const types = Object.values(chartProperties) @@ -196,13 +199,13 @@ export default { }) } } - ananysicData["xAxis"] = xAxisList; - ananysicData["series"] = series; - return ananysicData; + analysisData["xAxis"] = xAxisList; + analysisData["series"] = series; + return analysisData; }, // 饼图、漏斗图 piechartFn(chartProperties, data) { - const ananysicData = []; + const analysisData = []; for (let i = 0; i < data.length; i++) { const obj = {}; for (const key in chartProperties) { @@ -213,12 +216,12 @@ export default { obj["value"] = data[i][key]; } } - ananysicData.push(obj); + analysisData.push(obj); } - return ananysicData; + return analysisData; }, widgettext(chartProperties, data) { - const ananysicData = []; + const analysisData = []; for (let i = 0; i < data.length; i++) { const obj = {}; for (const key in chartProperties) { @@ -228,13 +231,13 @@ export default { obj["value"] = data[i][key]; } } - ananysicData.push(obj); + analysisData.push(obj); } - return ananysicData; + return analysisData; }, // 坐标系数据解析 coordChartFn(chartProperties, data) { - const ananysicData = {}; + const analysisData = {}; let series = []; //全部字段字典值 const types = Object.values(chartProperties) @@ -245,17 +248,17 @@ export default { //x轴数值去重,y轴去重 const xAxisList = this.setUnique(data.map(item => item[xAxisField])) const yAxisList = this.setUnique(data.map(item => item[yAxisField])) - ananysicData["xAxis"] = xAxisList; - ananysicData["yAxis"] = yAxisList; + analysisData["xAxis"] = xAxisList; + analysisData["yAxis"] = yAxisList; for (const i in data) { series[i] = [data[i][xAxisField], data[i][yAxisField], data[i][dataField]]; } - ananysicData["series"] = series; - return ananysicData; + analysisData["series"] = series; + return analysisData; }, // 中国地图。路线图数据解析,适合source、target、value linemapChartFn(chartProperties, data) { - const ananysicData = []; + const analysisData = []; for (let i = 0; i < data.length; i++) { const obj = {}; for (const key in chartProperties) { @@ -268,12 +271,13 @@ export default { obj["value"] = data[i][key]; } } - ananysicData.push(obj); + analysisData.push(obj); } - return ananysicData; + return analysisData; }, + // 雷达图 radarChartFn(chartProperties, data) { - const ananysicData = {}; + const analysisData = {}; // 字段名 const radarField = []; let nameField; @@ -286,10 +290,37 @@ export default { } } // 拿到数值 - ananysicData["name"] = nameField; - ananysicData["keys"] = radarField; - ananysicData["value"] = data; - return ananysicData; + analysisData["name"] = nameField; + analysisData["keys"] = radarField; + analysisData["value"] = data; + return analysisData; + }, + // 下拉框 + selectChartFn(chartProperties, data){ + let valueField; + let labelField; + for (const key in chartProperties) { + if (chartProperties[key] == "value") { + valueField = key; + } + if (chartProperties[key] == "label") { + labelField = key; + } + } + if (valueField == null && labelField != null) { + valueField = labelField; + } + if (labelField == null && valueField != null) { + labelField = valueField + } + const analysisData = []; + for (let i = 0; i < data.length; i++) { + const obj = {}; + obj["value"] = data[i][valueField]; + obj["label"] = data[i][labelField]; + analysisData.push(obj); + } + return analysisData; }, setUnique(arr) { let newArr = []; diff --git a/report-ui/src/views/bigscreenDesigner/designer/tools/configure/form/widget-select.js b/report-ui/src/views/bigscreenDesigner/designer/tools/configure/form/widget-select.js index 906e334e..e209a861 100644 --- a/report-ui/src/views/bigscreenDesigner/designer/tools/configure/form/widget-select.js +++ b/report-ui/src/views/bigscreenDesigner/designer/tools/configure/form/widget-select.js @@ -90,6 +90,14 @@ export const widgetSelect = { ], value: 'staticData', }, + { + type: 'el-input-number', + label: '刷新时间(毫秒)', + name: 'refreshTime', + relactiveDom: 'dataType', + relactiveDomValue: 'dynamicData', + value: 5000 + }, { type: 'el-button', label: '静态数据', @@ -99,11 +107,11 @@ export const widgetSelect = { relactiveDom: 'dataType', relactiveDomValue: 'staticData', value: [ - { "name": "苹果", "code": 1000 }, - { "name": "三星", "code": 2229 }, - { "name": "小米", "code": 3879 }, - { "name": "oppo", "code": 2379 }, - { "name": "vivo", "code": 4079 }, + { "label": "苹果", "value": 1000 }, + { "label": "三星", "value": 2229 }, + { "label": "小米", "value": 3879 }, + { "label": "oppo", "value": 2379 }, + { "label": "vivo", "value": 4079 }, ], }, { @@ -154,4 +162,4 @@ export const widgetSelect = { }, ], } -} \ No newline at end of file +} diff --git a/report-ui/src/views/bigscreenDesigner/designer/widget/form/widgetSelect.vue b/report-ui/src/views/bigscreenDesigner/designer/widget/form/widgetSelect.vue index d1b57a8d..9f56e660 100644 --- a/report-ui/src/views/bigscreenDesigner/designer/widget/form/widgetSelect.vue +++ b/report-ui/src/views/bigscreenDesigner/designer/widget/form/widgetSelect.vue @@ -4,13 +4,14 @@ :style="styleObj" v-model="selectValue" :localOptions="options" - label="name" - option="code" + label="label" + option="value" @[eventChange]="change" /> \ No newline at end of file +