yanzili 3 years ago
commit 09c68b0505

@ -1,4 +1,5 @@
import miment from 'miment' import miment from 'miment'
import {getData} from '@/api/bigscreen'
export default { export default {
data() { data() {
return { return {
@ -52,7 +53,7 @@ export default {
// disabledDate(time){ // disabledDate(time){
// return time.getTime() > Date.now() // return time.getTime() > Date.now()
// } // }
} },
} }
}, },
computed: { computed: {
@ -91,6 +92,104 @@ export default {
}, },
handlerInputchange(val){ handlerInputchange(val){
this.parseParamsBySelectInput(this.selectInput.keyname, val) this.parseParamsBySelectInput(this.selectInput.keyname, val)
},
// 查询echarts 数据
queryEchartsData(params) {
return new Promise(async(resolve) => {
const { code, data } = await getData(params);
if(code != 200) return
const analysisData = this.analysisChartsData(params, data);
resolve(analysisData)
})
},
// 解析不同图标的数据
analysisChartsData(params, data) {
// widget-barchart 柱线图、widget-linechart 折线图、 widget-barlinechart 柱线图、widget-piechart 饼图、widget-hollow-piechart 空心饼图
// widget-funnel 漏斗图 widget-gauge 仪表盘
const chartType = params.chartType
if (
chartType == "widget-barchart" ||
chartType == "widget-linechart" ||
chartType == "widget-barlinechart"
) {
return this.barOrLineChartFn(params.chartProperties, data);
} else if (
chartType == "widget-piechart" ||
chartType == "widget-hollow-piechart" ||
chartType == "widget-funnel"
) {
return this.piechartFn(params.chartProperties, data);
} else if (chartType == "widget-gauge") {
return this.gaugeFn(params.chartProperties, data);
} else {
}
},
// 柱状图、折线图、折柱图
barOrLineChartFn(chartProperties, data) {
const ananysicData = {};
const xAxisList = [];
const series = [];
for (const key in chartProperties) {
const obj = {};
const seriesData = [];
const value = chartProperties[key];
obj["type"] = value;
for (let i = 0; i < data.length; i++) {
if (value.startsWith("xAxis")) {
// 代表为x轴
xAxisList[i] = data[i][key];
} else {
// 其他的均为series展示数据
seriesData[i] = data[i][key];
}
}
obj["data"] = seriesData;
if (!obj["type"].startsWith("xAxis")) {
series.push(obj);
}
}
ananysicData["xAxis"] = xAxisList;
ananysicData["series"] = series;
// console.log(ananysicData, '结果数据')
return ananysicData;
},
// 饼图或者空心饼图或者漏斗图
piechartFn(chartProperties, data) {
const ananysicData = [];
for (let i = 0; i < data.length; i++) {
const obj = {};
for (const key in chartProperties) {
const value = chartProperties[key];
if (value === "name") {
obj["name"] = data[i][key];
} else {
obj["value"] = data[i][key];
}
}
ananysicData.push(obj);
}
// console.log(ananysicData, '结果数据')
return ananysicData;
},
gaugeFn(chartProperties, data) {
const ananysicData = [];
for (let i = 0; i < data.length; i++) {
const obj = {};
for (const key in chartProperties) {
const value = chartProperties[key];
if (value === "name") {
obj["name"] = data[i][key];
} else {
obj["value"] = data[i][key];
}
}
if (!obj["unit"]) {
obj["unit"] = "%";
}
ananysicData.push(obj);
}
// console.log(ananysicData, '结果数据')
return ananysicData[0];
} }
}, },
watch: { watch: {

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<el-form label-width="80px" label-position="left"> <el-form label-width="100px" label-position="left">
<el-form-item label="数据集"> <el-form-item label="数据集">
<el-select <el-select
size="mini" size="mini"
@ -43,7 +43,7 @@
</div> </div>
</template> </template>
<script> <script>
import { queryAllDataSet, detailBysetId, getData } from "@/api/bigscreen"; import { queryAllDataSet, detailBysetId } from "@/api/bigscreen";
import Dictionary from "@/components/Dictionary/index"; import Dictionary from "@/components/Dictionary/index";
export default { export default {
@ -108,105 +108,11 @@ export default {
chartProperties: this.chartProperties, chartProperties: this.chartProperties,
contextData contextData
}; };
console.log(params); this.$emit("input", params);
const { code, data } = await getData(params);
const analysisData = this.analysisChartsData(data);
console.log(analysisData);
this.$emit("input", analysisData);
this.$emit("change", params); this.$emit("change", params);
if (code != "200") return;
}, },
selectParams(val, key) { selectParams(val, key) {
this.chartProperties[key] = val; this.chartProperties[key] = val;
},
//
analysisChartsData(data) {
// widget-barchart 线widget-linechart 线 widget-barlinechart 线widget-piechart widget-hollow-piechart
// widget-funnel widget-gauge
const chartType = this.chartType;
if (
chartType == "widget-barchart" ||
chartType == "widget-linechart" ||
chartType == "widget-barlinechart"
) {
return this.barOrLineChartFn(data);
} else if (
chartType == "widget-piechart" ||
chartType == "widget-hollow-piechart" ||
chartType == "widget-funnel"
) {
return this.piechartFn(data);
} else if (chartType == "widget-gauge") {
return this.gaugeFn(data);
} else {
}
},
// 线
barOrLineChartFn(data) {
const ananysicData = {};
const xAxisList = [];
const series = [];
for (const key in this.chartProperties) {
const obj = {};
const seriesData = [];
const value = this.chartProperties[key];
obj["type"] = value;
for (let i = 0; i < data.length; i++) {
if (value.startsWith("xAxis")) {
// x
xAxisList[i] = data[i][key];
} else {
// series
seriesData[i] = data[i][key];
}
}
obj["data"] = seriesData;
if (!obj["type"].startsWith("xAxis")) {
series.push(obj);
}
}
ananysicData["xAxis"] = xAxisList;
ananysicData["series"] = series;
// console.log(ananysicData, '')
return ananysicData;
},
//
piechartFn(data) {
const ananysicData = [];
for (let i = 0; i < data.length; i++) {
const obj = {};
for (const key in this.chartProperties) {
const value = this.chartProperties[key];
if (value === "name") {
obj["name"] = data[i][key];
} else {
obj["value"] = data[i][key];
}
}
ananysicData.push(obj);
}
// console.log(ananysicData, '')
return ananysicData;
},
gaugeFn(data) {
const ananysicData = [];
for (let i = 0; i < data.length; i++) {
const obj = {};
for (const key in this.chartProperties) {
const value = this.chartProperties[key];
if (value === "name") {
obj["name"] = data[i][key];
} else {
obj["value"] = data[i][key];
}
}
if (!obj["unit"]) {
obj["unit"] = "%";
}
ananysicData.push(obj);
}
// console.log(ananysicData, '')
return ananysicData[0];
} }
} }
}; };

@ -6,7 +6,7 @@
!--> !-->
<template> <template>
<div class="collapse-input-style"> <div class="collapse-input-style">
<el-form label-width="80px" label-position="left"> <el-form label-width="100px" label-position="left">
<template v-for="(item, index) in options"> <template v-for="(item, index) in options">
<div v-if="isShowForm(item, '[object Object]')" :key="index"> <div v-if="isShowForm(item, '[object Object]')" :key="index">
<el-form-item <el-form-item
@ -123,13 +123,15 @@
<!-- :options="optionsJavascript"--> <!-- :options="optionsJavascript"-->
<!-- style="height: 190px"--> <!-- style="height: 190px"-->
<!-- />--> <!-- />-->
<vue-json-editor v-model="formData[item.name]" <vue-json-editor
v-model="formData[item.name]"
:show-btns="false" :show-btns="false"
:mode="'code'" :mode="'code'"
lang="zh" lang="zh"
class="my-editor" class="my-editor"
@json-change="onJsonChange" @json-change="onJsonChange"
@json-save="onJsonSave" /> @json-save="onJsonSave"
/>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogVisibleStaticData = false" <el-button @click="dialogVisibleStaticData = false"
> </el-button > </el-button
@ -263,7 +265,7 @@
<script> <script>
import ColorPicker from "./colorPicker.vue"; import ColorPicker from "./colorPicker.vue";
import vueJsonEditor from 'vue-json-editor' import vueJsonEditor from "vue-json-editor";
import "codemirror/lib/codemirror.css"; // import "codemirror/lib/codemirror.css"; //
import "codemirror/theme/cobalt.css"; // options import "codemirror/theme/cobalt.css"; // options
// language // language

@ -585,14 +585,14 @@ export default {
widgetValueChanged(key, val) { widgetValueChanged(key, val) {
if (this.screenCode == "screen") { if (this.screenCode == "screen") {
this.dashboard = this.deepClone(val); this.dashboard = this.deepClone(val);
} } else {
for (let i = 0; i < this.widgets.length; i++) { for (let i = 0; i < this.widgets.length; i++) {
if (this.widgetIndex == i) { if (this.widgetIndex == i) {
this.widgets[i].value[key] = this.deepClone(val); this.widgets[i].value[key] = this.deepClone(val);
this.setDefaultValue(this.widgets[i].options[key], val); this.setDefaultValue(this.widgets[i].options[key], val);
} }
} }
}
}, },
rightClick(event, index) { rightClick(event, index) {
this.rightClickIndex = index; this.rightClickIndex = index;

@ -1481,11 +1481,11 @@ const widgetTools = [
}, },
{ {
type: 'el-input-number', type: 'el-input-number',
label: '刷新时间(秒)', label: '刷新时间(秒)',
name: 'refreshTime', name: 'refreshTime',
relactiveDom: 'dataType', relactiveDom: 'dataType',
relactiveDomValue: 'dynamicData', relactiveDomValue: 'dynamicData',
value: 30 value: 5000
}, },
{ {
type: 'el-button', type: 'el-button',

@ -1,7 +1,6 @@
<template> <template>
<div :style="styleObj"> <div :style="styleObj">
<v-chart :options="options" <v-chart :options="options" autoresize />
autoresize />
</div> </div>
</template> </template>
@ -55,7 +54,8 @@ export default {
}, },
optionsStyle: {}, // optionsStyle: {}, //
optionsData: {}, // optionsData: {}, //
optionsSetup: {} optionsSetup: {},
flagInter: null
}; };
}, },
computed: { computed: {
@ -73,7 +73,6 @@ export default {
watch: { watch: {
value: { value: {
handler(val) { handler(val) {
console.log(val);
this.optionsStyle = val.position; this.optionsStyle = val.position;
this.optionsData = val.data; this.optionsData = val.data;
this.optionsCollapse = val.setup; this.optionsCollapse = val.setup;
@ -289,12 +288,15 @@ export default {
// //
setOptionsData() { setOptionsData() {
const optionsSetup = this.optionsSetup; const optionsSetup = this.optionsSetup;
console.log(optionsSetup);
const optionsData = this.optionsData; // or const optionsData = this.optionsData; // or
console.log(optionsData); console.log(optionsData);
optionsData.dataType == "staticData" optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup) ? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(optionsData.dynamicData, optionsSetup); : this.dynamicDataFn(
optionsData.dynamicData,
optionsData.refreshTime,
optionsSetup
);
}, },
// //
staticDataFn(val, optionsSetup) { staticDataFn(val, optionsSetup) {
@ -320,8 +322,24 @@ export default {
} }
}, },
// //
dynamicDataFn (val, optionsSetup) { dynamicDataFn(val, refreshTime, optionsSetup) {
if (!val) return; if (!val) return;
if (this.ispreview) {
this.getEchartData(val, optionsSetup);
this.flagInter = setInterval(() => {
this.getEchartData(val, optionsSetup);
}, refreshTime);
} else {
this.getEchartData(val, optionsSetup);
}
},
getEchartData(val, optionsSetup) {
const data = this.queryEchartsData(val);
data.then(res => {
this.renderingFn(optionsSetup, res);
});
},
renderingFn(optionsSetup, val) {
// x // x
if (optionsSetup.verticalShow) { if (optionsSetup.verticalShow) {
this.options.xAxis.data = []; this.options.xAxis.data = [];

@ -428,6 +428,8 @@
import { queryAllDataSourceSet, verificationSet, testTransformSet, dataSetPreview, addDataSet, editDataSet, deleteDataSet, dataSetPageList } from '@/api/report' import { queryAllDataSourceSet, verificationSet, testTransformSet, dataSetPreview, addDataSet, editDataSet, deleteDataSet, dataSetPageList } from '@/api/report'
import Dictionary from '@/components/Dictionary/index' import Dictionary from '@/components/Dictionary/index'
import { codemirror } from 'vue-codemirror' // codeMirror import { codemirror } from 'vue-codemirror' // codeMirror
import 'codemirror/mode/sql/sql.js'
import 'codemirror/mode/javascript/javascript.js'
import 'codemirror/lib/codemirror.css' // import 'codemirror/lib/codemirror.css' //
import 'codemirror/theme/cobalt.css' // options import 'codemirror/theme/cobalt.css' // options
import vueJsonEditor from 'vue-json-editor' import vueJsonEditor from 'vue-json-editor'
@ -467,7 +469,6 @@ export default {
lineNumbers: true, // lineNumbers: true, //
line: true, line: true,
styleActiveLine: true, // styleActiveLine: true, //
hintOptions: { hintOptions: {
completeSingle: true, // completeSingle: true, //
}, },

Loading…
Cancel
Save