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
@ -117,19 +117,21 @@
width="50%" width="50%"
:before-close="handleClose" :before-close="handleClose"
> >
<!-- <codemirror--> <!-- <codemirror-->
<!-- v-model.trim="formData[item.name]"--> <!-- v-model.trim="formData[item.name]"-->
<!-- class="code-mirror"--> <!-- class="code-mirror"-->
<!-- :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
@ -344,8 +346,8 @@ export default {
} }
} }
}, },
onJsonChange (value) { }, onJsonChange(value) {},
onJsonSave (value) { }, onJsonSave(value) {},
saveData() { saveData() {
this.$emit("onChanged", this.formData); this.$emit("onChanged", this.formData);
this.dialogVisibleStaticData = false; this.dialogVisibleStaticData = false;

@ -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>
@ -13,7 +12,7 @@ export default {
value: Object, value: Object,
ispreview: Boolean ispreview: Boolean
}, },
data () { data() {
return { return {
options: { options: {
grid: {}, grid: {},
@ -55,11 +54,12 @@ export default {
}, },
optionsStyle: {}, // optionsStyle: {}, //
optionsData: {}, // optionsData: {}, //
optionsSetup: {} optionsSetup: {},
flagInter: null
}; };
}, },
computed: { computed: {
styleObj () { styleObj() {
return { return {
position: this.ispreview ? "absolute" : "static", position: this.ispreview ? "absolute" : "static",
width: this.optionsStyle.width + "px", width: this.optionsStyle.width + "px",
@ -72,8 +72,7 @@ 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;
@ -83,7 +82,7 @@ export default {
deep: true deep: true
} }
}, },
mounted () { mounted() {
this.optionsStyle = this.value.position; this.optionsStyle = this.value.position;
this.optionsData = this.value.data; this.optionsData = this.value.data;
this.optionsCollapse = this.value.setup; this.optionsCollapse = this.value.setup;
@ -92,7 +91,7 @@ export default {
}, },
methods: { methods: {
// options // options
editorOptions () { editorOptions() {
this.setOptionsTitle(); this.setOptionsTitle();
this.setOptionsX(); this.setOptionsX();
this.setOptionsY(); this.setOptionsY();
@ -104,7 +103,7 @@ export default {
this.setOptionsData(); this.setOptionsData();
}, },
// //
setOptionsTitle () { setOptionsTitle() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const title = {}; const title = {};
title.text = optionsCollapse.titleText; title.text = optionsCollapse.titleText;
@ -125,7 +124,7 @@ export default {
this.options.title = title; this.options.title = title;
}, },
// X // X
setOptionsX () { setOptionsX() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const xAxis = { const xAxis = {
type: "category", type: "category",
@ -162,7 +161,7 @@ export default {
this.options.xAxis = xAxis; this.options.xAxis = xAxis;
}, },
// Y // Y
setOptionsY () { setOptionsY() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const yAxis = { const yAxis = {
type: "value", type: "value",
@ -200,7 +199,7 @@ export default {
this.options.yAxis = yAxis; this.options.yAxis = yAxis;
}, },
// or // or
setOptionsTop () { setOptionsTop() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const series = this.options.series; const series = this.options.series;
@ -221,7 +220,7 @@ export default {
this.options.series = series; this.options.series = series;
}, },
// tooltip // tooltip
setOptionsTooltip () { setOptionsTooltip() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const tooltip = { const tooltip = {
trigger: "item", trigger: "item",
@ -234,7 +233,7 @@ export default {
this.options.tooltip = tooltip; this.options.tooltip = tooltip;
}, },
// //
setOptionsMargin () { setOptionsMargin() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const grid = { const grid = {
left: optionsCollapse.marginLeft, left: optionsCollapse.marginLeft,
@ -246,7 +245,7 @@ export default {
this.options.grid = grid; this.options.grid = grid;
}, },
// legend // legend
setOptionsLegend () { setOptionsLegend() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const legend = this.options.legend; const legend = this.options.legend;
legend.show = optionsCollapse.isShowLegend; legend.show = optionsCollapse.isShowLegend;
@ -263,7 +262,7 @@ export default {
legend.itemWidth = optionsCollapse.lengedWidth; legend.itemWidth = optionsCollapse.lengedWidth;
}, },
// //
setOptionsColor () { setOptionsColor() {
const optionsCollapse = this.optionsSetup; const optionsCollapse = this.optionsSetup;
const customColor = optionsCollapse.customColor; const customColor = optionsCollapse.customColor;
if (!customColor) return; if (!customColor) return;
@ -287,17 +286,20 @@ export default {
this.options = Object.assign({}, this.options); this.options = Object.assign({}, this.options);
}, },
// //
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) {
const staticData = JSON.parse(val); const staticData = JSON.parse(val);
// x // x
if (optionsSetup.verticalShow) { if (optionsSetup.verticalShow) {
@ -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