|
@@ -1,193 +1,213 @@
|
|
<template>
|
|
<template>
|
|
<div>
|
|
<div>
|
|
- <el-form label-width="80px"
|
|
|
|
- label-position="left">
|
|
|
|
|
|
+ <el-form label-width="80px" label-position="left">
|
|
<el-form-item label="数据集">
|
|
<el-form-item label="数据集">
|
|
- <el-select v-model="dataSetValue"
|
|
|
|
- clearable
|
|
|
|
- placeholder="请选择"
|
|
|
|
- @change="selectDataSet">
|
|
|
|
- <el-option v-for="item in dataSet"
|
|
|
|
- :key="item.code"
|
|
|
|
- :label="item.setName"
|
|
|
|
- :value="item.id" />
|
|
|
|
|
|
+ <el-select
|
|
|
|
+ size="mini"
|
|
|
|
+ v-model="dataSetValue"
|
|
|
|
+ clearable
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ @change="selectDataSet"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in dataSet"
|
|
|
|
+ :key="item.code"
|
|
|
|
+ :label="item.setName"
|
|
|
|
+ :value="item.id"
|
|
|
|
+ />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item v-for="(item, index) in userNameList"
|
|
|
|
- :key="index"
|
|
|
|
- :label="item.paramName">
|
|
|
|
- <el-input v-model="item.sampleItem" />
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
+ v-for="(item, index) in userNameList"
|
|
|
|
+ :key="index"
|
|
|
|
+ :label="item.paramName"
|
|
|
|
+ >
|
|
|
|
+ <el-input v-model="item.sampleItem" size="mini" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item v-for="item in setParamList"
|
|
|
|
- :key="item"
|
|
|
|
- :label="item">
|
|
|
|
- <Dictionary v-model="params"
|
|
|
|
- :dict-key="'CHART_PROPERTIES'"
|
|
|
|
- @input="selectParams($event, item)" />
|
|
|
|
|
|
+ <el-form-item v-for="item in setParamList" :key="item" :label="item">
|
|
|
|
+ <Dictionary
|
|
|
|
+ v-model="params"
|
|
|
|
+ :dict-key="'CHART_PROPERTIES'"
|
|
|
|
+ @input="selectParams($event, item)"
|
|
|
|
+ />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-button style="width: 100%"
|
|
|
|
- type="primary"
|
|
|
|
- plain
|
|
|
|
- @click="saveDataBtn">刷新</el-button>
|
|
|
|
|
|
+ <el-button
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ type="primary"
|
|
|
|
+ plain
|
|
|
|
+ size="mini"
|
|
|
|
+ @click="saveDataBtn"
|
|
|
|
+ >刷新</el-button
|
|
|
|
+ >
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script>
|
|
<script>
|
|
-import { queryAllDataSet, detailBysetId, getData } from '@/api/bigscreen'
|
|
|
|
-import Dictionary from '@/components/Dictionary/index'
|
|
|
|
|
|
+import { queryAllDataSet, detailBysetId, getData } from "@/api/bigscreen";
|
|
|
|
+import Dictionary from "@/components/Dictionary/index";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
- name: 'DynamicComponents',
|
|
|
|
|
|
+ name: "DynamicComponents",
|
|
components: {
|
|
components: {
|
|
- Dictionary,
|
|
|
|
|
|
+ Dictionary
|
|
},
|
|
},
|
|
model: {
|
|
model: {
|
|
- prop: 'formData',
|
|
|
|
- event: 'input',
|
|
|
|
|
|
+ prop: "formData",
|
|
|
|
+ event: "input"
|
|
},
|
|
},
|
|
props: {
|
|
props: {
|
|
chartType: String,
|
|
chartType: String,
|
|
- props: ['formData'],
|
|
|
|
|
|
+ props: ["formData"]
|
|
},
|
|
},
|
|
- data () {
|
|
|
|
|
|
+ data() {
|
|
return {
|
|
return {
|
|
- dataSetValue: '',
|
|
|
|
|
|
+ dataSetValue: "",
|
|
dataSet: [], // 数据集
|
|
dataSet: [], // 数据集
|
|
userNameList: [], // 用户
|
|
userNameList: [], // 用户
|
|
setParamList: [], // 对应的不同的图形数据参数
|
|
setParamList: [], // 对应的不同的图形数据参数
|
|
params: {},
|
|
params: {},
|
|
- chartProperties: {},
|
|
|
|
- }
|
|
|
|
|
|
+ chartProperties: {}
|
|
|
|
+ };
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
- setCode () {
|
|
|
|
- let code = ''
|
|
|
|
- this.dataSet.forEach((el) => {
|
|
|
|
|
|
+ setCode() {
|
|
|
|
+ let code = "";
|
|
|
|
+ this.dataSet.forEach(el => {
|
|
if (el.id == this.dataSetValue) {
|
|
if (el.id == this.dataSetValue) {
|
|
- code = el.setCode
|
|
|
|
|
|
+ code = el.setCode;
|
|
}
|
|
}
|
|
- })
|
|
|
|
- return code
|
|
|
|
- },
|
|
|
|
|
|
+ });
|
|
|
|
+ return code;
|
|
|
|
+ }
|
|
},
|
|
},
|
|
- mounted () {
|
|
|
|
- this.loadDataSet()
|
|
|
|
|
|
+ mounted() {
|
|
|
|
+ this.loadDataSet();
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- async loadDataSet () {
|
|
|
|
- const { code, data } = await queryAllDataSet()
|
|
|
|
- this.dataSet = data
|
|
|
|
- if (code != '200') return
|
|
|
|
|
|
+ async loadDataSet() {
|
|
|
|
+ const { code, data } = await queryAllDataSet();
|
|
|
|
+ this.dataSet = data;
|
|
|
|
+ if (code != "200") return;
|
|
},
|
|
},
|
|
- async selectDataSet () {
|
|
|
|
- const { code, data } = await detailBysetId(this.dataSetValue)
|
|
|
|
- this.userNameList = data.dataSetParamDtoList
|
|
|
|
- this.setParamList = data.setParamList
|
|
|
|
- if (code != '200') return
|
|
|
|
|
|
+ async selectDataSet() {
|
|
|
|
+ const { code, data } = await detailBysetId(this.dataSetValue);
|
|
|
|
+ this.userNameList = data.dataSetParamDtoList;
|
|
|
|
+ this.setParamList = data.setParamList;
|
|
|
|
+ if (code != "200") return;
|
|
},
|
|
},
|
|
- async saveDataBtn () {
|
|
|
|
- const contextData = {}
|
|
|
|
|
|
+ async saveDataBtn() {
|
|
|
|
+ const contextData = {};
|
|
for (let i = 0; i < this.userNameList.length; i++) {
|
|
for (let i = 0; i < this.userNameList.length; i++) {
|
|
- contextData[this.userNameList[i].paramName] = this.userNameList[i].sampleItem
|
|
|
|
|
|
+ contextData[this.userNameList[i].paramName] = this.userNameList[
|
|
|
|
+ i
|
|
|
|
+ ].sampleItem;
|
|
}
|
|
}
|
|
const params = {
|
|
const params = {
|
|
chartType: this.chartType,
|
|
chartType: this.chartType,
|
|
setCode: this.setCode,
|
|
setCode: this.setCode,
|
|
chartProperties: this.chartProperties,
|
|
chartProperties: this.chartProperties,
|
|
- contextData,
|
|
|
|
- }
|
|
|
|
- const { code, data } = await getData(params)
|
|
|
|
- const analysisData = this.analysisChartsData(data)
|
|
|
|
- console.log(analysisData)
|
|
|
|
- this.$emit('input', analysisData)
|
|
|
|
- if (code != '200') return
|
|
|
|
|
|
+ contextData
|
|
|
|
+ };
|
|
|
|
+ const { code, data } = await getData(params);
|
|
|
|
+ const analysisData = this.analysisChartsData(data);
|
|
|
|
+ console.log(analysisData);
|
|
|
|
+ this.$emit("input", analysisData);
|
|
|
|
+ if (code != "200") return;
|
|
},
|
|
},
|
|
- selectParams (val, key) {
|
|
|
|
- this.chartProperties[key] = val
|
|
|
|
|
|
+ selectParams(val, key) {
|
|
|
|
+ this.chartProperties[key] = val;
|
|
},
|
|
},
|
|
// 解析不同图标的数据
|
|
// 解析不同图标的数据
|
|
- analysisChartsData (data) {
|
|
|
|
|
|
+ analysisChartsData(data) {
|
|
// widget-barchart 柱线图、widget-linechart 折线图、 widget-barlinechart 柱线图、widget-piechart 饼图、widget-hollow-piechart 空心饼图
|
|
// widget-barchart 柱线图、widget-linechart 折线图、 widget-barlinechart 柱线图、widget-piechart 饼图、widget-hollow-piechart 空心饼图
|
|
// widget-funnel 漏斗图 widget-gauge 仪表盘
|
|
// 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)
|
|
|
|
|
|
+ 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 {
|
|
} else {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
// 柱状图、折线图、折柱图
|
|
// 柱状图、折线图、折柱图
|
|
- barOrLineChartFn (data) {
|
|
|
|
- const ananysicData = {}
|
|
|
|
- const xAxisList = []
|
|
|
|
- const series = []
|
|
|
|
|
|
+ barOrLineChartFn(data) {
|
|
|
|
+ const ananysicData = {};
|
|
|
|
+ const xAxisList = [];
|
|
|
|
+ const series = [];
|
|
for (const key in this.chartProperties) {
|
|
for (const key in this.chartProperties) {
|
|
- const obj = {}
|
|
|
|
- const seriesData = []
|
|
|
|
- const value = this.chartProperties[key]
|
|
|
|
- obj['type'] = value
|
|
|
|
|
|
+ const obj = {};
|
|
|
|
+ const seriesData = [];
|
|
|
|
+ const value = this.chartProperties[key];
|
|
|
|
+ obj["type"] = value;
|
|
for (let i = 0; i < data.length; i++) {
|
|
for (let i = 0; i < data.length; i++) {
|
|
- if (value.startsWith('xAxis')) {
|
|
|
|
|
|
+ if (value.startsWith("xAxis")) {
|
|
// 代表为x轴
|
|
// 代表为x轴
|
|
- xAxisList[i] = data[i][key]
|
|
|
|
|
|
+ xAxisList[i] = data[i][key];
|
|
} else {
|
|
} else {
|
|
// 其他的均为series展示数据
|
|
// 其他的均为series展示数据
|
|
- seriesData[i] = data[i][key]
|
|
|
|
|
|
+ seriesData[i] = data[i][key];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- obj['data'] = seriesData
|
|
|
|
- if (!obj['type'].startsWith('xAxis')) {
|
|
|
|
- series.push(obj)
|
|
|
|
|
|
+ obj["data"] = seriesData;
|
|
|
|
+ if (!obj["type"].startsWith("xAxis")) {
|
|
|
|
+ series.push(obj);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- ananysicData['xAxis'] = xAxisList
|
|
|
|
- ananysicData['series'] = series
|
|
|
|
|
|
+ ananysicData["xAxis"] = xAxisList;
|
|
|
|
+ ananysicData["series"] = series;
|
|
// console.log(ananysicData, '结果数据')
|
|
// console.log(ananysicData, '结果数据')
|
|
- return ananysicData
|
|
|
|
|
|
+ return ananysicData;
|
|
},
|
|
},
|
|
|
|
|
|
// 饼图或者空心饼图或者漏斗图
|
|
// 饼图或者空心饼图或者漏斗图
|
|
- piechartFn (data) {
|
|
|
|
- const ananysicData = []
|
|
|
|
|
|
+ piechartFn(data) {
|
|
|
|
+ const ananysicData = [];
|
|
for (let i = 0; i < data.length; i++) {
|
|
for (let i = 0; i < data.length; i++) {
|
|
- const obj = {}
|
|
|
|
|
|
+ const obj = {};
|
|
for (const key in this.chartProperties) {
|
|
for (const key in this.chartProperties) {
|
|
- const value = this.chartProperties[key]
|
|
|
|
- if (value === 'name') {
|
|
|
|
- obj['name'] = data[i][key]
|
|
|
|
|
|
+ const value = this.chartProperties[key];
|
|
|
|
+ if (value === "name") {
|
|
|
|
+ obj["name"] = data[i][key];
|
|
} else {
|
|
} else {
|
|
- obj['value'] = data[i][key]
|
|
|
|
|
|
+ obj["value"] = data[i][key];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- ananysicData.push(obj)
|
|
|
|
|
|
+ ananysicData.push(obj);
|
|
}
|
|
}
|
|
// console.log(ananysicData, '结果数据')
|
|
// console.log(ananysicData, '结果数据')
|
|
- return ananysicData
|
|
|
|
|
|
+ return ananysicData;
|
|
},
|
|
},
|
|
- gaugeFn (data) {
|
|
|
|
- const ananysicData = []
|
|
|
|
|
|
+ gaugeFn(data) {
|
|
|
|
+ const ananysicData = [];
|
|
for (let i = 0; i < data.length; i++) {
|
|
for (let i = 0; i < data.length; i++) {
|
|
- const obj = {}
|
|
|
|
|
|
+ const obj = {};
|
|
for (const key in this.chartProperties) {
|
|
for (const key in this.chartProperties) {
|
|
- const value = this.chartProperties[key]
|
|
|
|
- if (value === 'name') {
|
|
|
|
- obj['name'] = data[i][key]
|
|
|
|
|
|
+ const value = this.chartProperties[key];
|
|
|
|
+ if (value === "name") {
|
|
|
|
+ obj["name"] = data[i][key];
|
|
} else {
|
|
} else {
|
|
- obj['value'] = data[i][key]
|
|
|
|
|
|
+ obj["value"] = data[i][key];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (!obj['unit']) {
|
|
|
|
- obj['unit'] = '%'
|
|
|
|
|
|
+ if (!obj["unit"]) {
|
|
|
|
+ obj["unit"] = "%";
|
|
}
|
|
}
|
|
- ananysicData.push(obj)
|
|
|
|
|
|
+ ananysicData.push(obj);
|
|
}
|
|
}
|
|
// console.log(ananysicData, '结果数据')
|
|
// console.log(ananysicData, '结果数据')
|
|
- return ananysicData[0]
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
-}
|
|
|
|
|
|
+ return ananysicData[0];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+};
|
|
</script>
|
|
</script>
|
|
<style lang="sass" scoped></style>
|
|
<style lang="sass" scoped></style>
|