qianlishi 3 years ago
parent 09c68b0505
commit 169c28c69f

@ -155,8 +155,8 @@ export default {
show: optionsCollapse.isShowSplitLineX,
lineStyle: {
color: optionsCollapse.splitLineColorX
},
},
}
}
};
this.options.xAxis = xAxis;
},
@ -192,8 +192,8 @@ export default {
show: optionsCollapse.isShowSplitLineY,
lineStyle: {
color: optionsCollapse.splitLineColorY
},
},
}
}
};
this.options.yAxis = yAxis;
@ -289,7 +289,6 @@ export default {
setOptionsData() {
const optionsSetup = this.optionsSetup;
const optionsData = this.optionsData; // or
console.log(optionsData);
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(

@ -1,17 +1,16 @@
<template>
<div :style="styleObj">
<v-chart :options="options"
autoresize />
<v-chart :options="options" autoresize />
</div>
</template>
<script>
export default {
name: 'WidgetLinechart',
name: "WidgetLinechart",
components: {},
props: {
value: Object,
ispreview: Boolean,
ispreview: Boolean
},
data() {
return {
@ -19,127 +18,127 @@ export default {
grid: {},
color: [],
title: {
text: '',
text: "",
textStyle: {
color: '#fff',
},
color: "#fff"
}
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}%',
trigger: "item",
formatter: "{a} <br/>{b} : {c}%"
},
legend: {
textStyle: {
color: '#fff',
},
color: "#fff"
}
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
axisLabel: {
show: true,
textStyle: {
color: '#fff',
},
},
color: "#fff"
}
}
},
yAxis: {
type: 'value',
type: "value",
axisLabel: {
show: true,
textStyle: {
color: '#fff',
},
},
color: "#fff"
}
}
},
series: [
{
data: [],
type: 'line',
},
],
type: "line"
}
]
},
optionsStyle: {}, //
optionsData: {}, //
optionsCollapse: {}, //
optionsSetup: {},
}
optionsSetup: {}
};
},
computed: {
styleObj() {
return {
position: this.ispreview ? 'absolute' : 'static',
width: this.optionsStyle.width + 'px',
height: this.optionsStyle.height + 'px',
left: this.optionsStyle.left + 'px',
top: this.optionsStyle.top + 'px',
background: this.optionsSetup.background,
position: this.ispreview ? "absolute" : "static",
width: this.optionsStyle.width + "px",
height: this.optionsStyle.height + "px",
left: this.optionsStyle.left + "px",
top: this.optionsStyle.top + "px",
background: this.optionsSetup.background
};
}
},
},
watch: {
value: {
handler(val) {
this.optionsStyle = val.position
this.optionsData = val.data
this.optionsCollapse = val.collapse
this.optionsSetup = val.setup
this.editorOptions()
},
deep: true,
this.optionsStyle = val.position;
this.optionsData = val.data;
this.optionsCollapse = val.collapse;
this.optionsSetup = val.setup;
this.editorOptions();
},
deep: true
}
},
created() {
this.optionsStyle = this.value.position
this.optionsData = this.value.data
this.optionsCollapse = this.value.collapse
this.optionsSetup = this.value.setup
this.editorOptions()
this.optionsStyle = this.value.position;
this.optionsData = this.value.data;
this.optionsCollapse = this.value.collapse;
this.optionsSetup = this.value.setup;
this.editorOptions();
},
methods: {
// options
editorOptions() {
this.setOptionsTitle()
this.setOptionsX()
this.setOptionsY()
this.setOptionsTop()
this.setOptionsTooltip()
this.setOptionsData()
this.setOptionsMargin()
this.setOptionsLegend()
this.setOptionsColor()
this.setOptionsTitle();
this.setOptionsX();
this.setOptionsY();
this.setOptionsTop();
this.setOptionsTooltip();
this.setOptionsData();
this.setOptionsMargin();
this.setOptionsLegend();
this.setOptionsColor();
},
//
setOptionsTitle() {
const optionsCollapse = this.optionsSetup
const title = {}
title.text = optionsCollapse.titleText
title.show = optionsCollapse.isNoTitle
title.left = optionsCollapse.textAlign
const optionsCollapse = this.optionsSetup;
const title = {};
title.text = optionsCollapse.titleText;
title.show = optionsCollapse.isNoTitle;
title.left = optionsCollapse.textAlign;
title.textStyle = {
color: optionsCollapse.textColor,
fontSize: optionsCollapse.textFontSize,
fontWeight: optionsCollapse.textFontWeight,
}
title.subtext = optionsCollapse.subText
fontWeight: optionsCollapse.textFontWeight
};
title.subtext = optionsCollapse.subText;
title.subtextStyle = {
color: optionsCollapse.subTextColor,
fontWeight: optionsCollapse.subTextFontWeight,
fontSize: optionsCollapse.subTextFontSize,
}
fontSize: optionsCollapse.subTextFontSize
};
this.options.title = title
this.options.title = title;
},
// X
setOptionsX() {
const optionsCollapse = this.optionsSetup
const optionsCollapse = this.optionsSetup;
const xAxis = {
type: 'category',
type: "category",
show: optionsCollapse.hideX, //
name: optionsCollapse.xName, //
nameTextStyle: {
color: optionsCollapse.xNameColor,
fontSize: optionsCollapse.xNameFontSize,
fontSize: optionsCollapse.xNameFontSize
},
nameRotate: optionsCollapse.textAngle, //
inverse: optionsCollapse.reversalX, //
@ -149,181 +148,184 @@ export default {
rotate: optionsCollapse.textAngle, //
textStyle: {
color: optionsCollapse.Xcolor, // x
fontSize: optionsCollapse.fontSizeX,
},
fontSize: optionsCollapse.fontSizeX
}
},
axisLine: {
show: true,
lineStyle: {
color: optionsCollapse.lineColorX,
},
color: optionsCollapse.lineColorX
}
},
splitLine: {
show: optionsCollapse.isShowSplitLineX,
lineStyle: {
color: optionsCollapse.splitLineColorX
},
},
}
this.options.xAxis = xAxis
}
};
this.options.xAxis = xAxis;
},
// Y
setOptionsY() {
const optionsCollapse = this.optionsSetup
const optionsCollapse = this.optionsSetup;
const yAxis = {
type: 'value',
type: "value",
show: optionsCollapse.isShowY, //
name: optionsCollapse.textNameY, //
nameTextStyle: {
color: optionsCollapse.NameColorY,
fontSize: optionsCollapse.NameFontSizeY,
fontSize: optionsCollapse.NameFontSizeY
},
inverse: optionsCollapse.reversalY, //
axisLabel: {
show: true,
textStyle: {
color: optionsCollapse.colorY, // x
fontSize: optionsCollapse.fontSizeY,
},
fontSize: optionsCollapse.fontSizeY
}
},
splitLine: {
show: false,
show: false
},
axisLine: {
show: true,
lineStyle: {
color: optionsCollapse.lineColorY,
},
color: optionsCollapse.lineColorY
}
},
splitLine: {
show: optionsCollapse.isShowSplitLineY,
lineStyle: {
color: optionsCollapse.splitLineColorY
},
},
}
}
};
this.options.yAxis = yAxis
this.options.yAxis = yAxis;
},
// 线
setOptionsTop() {
const optionsCollapse = this.optionsSetup
const series = this.options.series
const optionsCollapse = this.optionsSetup;
const series = this.options.series;
for (const key in series) {
if (series[key].type == 'line') {
series[key].showSymbol = optionsCollapse.markPoint
series[key].symbolSize = optionsCollapse.pointSize
series[key].smooth = optionsCollapse.smoothCurve
if (series[key].type == "line") {
series[key].showSymbol = optionsCollapse.markPoint;
series[key].symbolSize = optionsCollapse.pointSize;
series[key].smooth = optionsCollapse.smoothCurve;
if (optionsCollapse.area) {
series[key].areaStyle = {
opacity: optionsCollapse.areaThickness / 100,
}
opacity: optionsCollapse.areaThickness / 100
};
} else {
series[key].areaStyle = {
opacity: 0,
}
opacity: 0
};
}
series[key].lineStyle = {
width: optionsCollapse.lineWidth,
}
width: optionsCollapse.lineWidth
};
series[key].label = {
show: optionsCollapse.isShow,
position: 'top',
position: "top",
distance: 10,
fontSize: optionsCollapse.fontSize,
color: optionsCollapse.subTextColor,
fontWeight: optionsCollapse.fontWeight,
}
fontWeight: optionsCollapse.fontWeight
};
}
}
this.options.series = series
this.options.series = series;
},
// tooltip
setOptionsTooltip() {
const optionsCollapse = this.optionsSetup
const optionsCollapse = this.optionsSetup;
const tooltip = {
trigger: 'item',
trigger: "item",
show: true,
textStyle: {
color: optionsCollapse.lineColor,
fontSize: optionsCollapse.fontSize,
},
fontSize: optionsCollapse.fontSize
}
this.options.tooltip = tooltip
};
this.options.tooltip = tooltip;
},
//
setOptionsMargin() {
const optionsCollapse = this.optionsSetup
const optionsCollapse = this.optionsSetup;
const grid = {
left: optionsCollapse.marginLeft,
right: optionsCollapse.marginRight,
bottom: optionsCollapse.marginBottom,
top: optionsCollapse.marginTop,
containLabel: true,
}
this.options.grid = grid
containLabel: true
};
this.options.grid = grid;
},
// legend
setOptionsLegend() {
const optionsCollapse = this.optionsSetup
const legend = this.options.legend
legend.show = optionsCollapse.isShowLegend
legend.left = optionsCollapse.lateralPosition == 'left' ? 0 : 'auto'
legend.right = optionsCollapse.lateralPosition == 'right' ? 0 : 'auto'
legend.top = optionsCollapse.longitudinalPosition == 'top' ? 0 : 'auto'
legend.bottom = optionsCollapse.longitudinalPosition == 'bottom' ? 0 : 'auto'
legend.orient = optionsCollapse.layoutFront
const optionsCollapse = this.optionsSetup;
const legend = this.options.legend;
legend.show = optionsCollapse.isShowLegend;
legend.left = optionsCollapse.lateralPosition == "left" ? 0 : "auto";
legend.right = optionsCollapse.lateralPosition == "right" ? 0 : "auto";
legend.top = optionsCollapse.longitudinalPosition == "top" ? 0 : "auto";
legend.bottom =
optionsCollapse.longitudinalPosition == "bottom" ? 0 : "auto";
legend.orient = optionsCollapse.layoutFront;
legend.textStyle = {
color: optionsCollapse.lengedColor,
fontSize: optionsCollapse.fontSize,
}
legend.itemWidth = optionsCollapse.lengedWidth
console.log(legend)
fontSize: optionsCollapse.fontSize
};
legend.itemWidth = optionsCollapse.lengedWidth;
console.log(legend);
},
//
setOptionsColor() {
const optionsCollapse = this.optionsSetup
const customColor = optionsCollapse.customColor
if (!customColor) return
const arrColor = []
const optionsCollapse = this.optionsSetup;
const customColor = optionsCollapse.customColor;
if (!customColor) return;
const arrColor = [];
for (let i = 0; i < customColor.length; i++) {
arrColor.push(customColor[i].color)
arrColor.push(customColor[i].color);
}
this.options.color = arrColor
this.options = Object.assign({}, this.options)
this.options.color = arrColor;
this.options = Object.assign({}, this.options);
},
//
setOptionsData() {
const optionsData = this.optionsData // or
optionsData.dataType == 'staticData' ? this.staticDataFn(optionsData.staticData) : this.dynamicDataFn(optionsData.dynamicData)
const optionsData = this.optionsData; // or
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData);
},
staticDataFn(val) {
const staticData = JSON.parse(val)
const staticData = JSON.parse(val);
// x
this.options.xAxis.data = staticData.categories
this.options.xAxis.data = staticData.categories;
// series
const series = this.options.series
const series = this.options.series;
for (const i in series) {
if (series[i].type == 'line') {
series[i].data = staticData.series[0].data
if (series[i].type == "line") {
series[i].data = staticData.series[0].data;
}
}
},
dynamicDataFn(val) {
if (!val) return
if (!val) return;
// x
this.options.xAxis.data = val.xAxis
this.options.xAxis.data = val.xAxis;
// series
const series = this.options.series
const series = this.options.series;
for (const i in series) {
if (series[i].type == 'line') {
series[i].data = val.series[i].data
if (series[i].type == "line") {
series[i].data = val.series[i].data;
}
}
}
},
},
}
};
</script>
<style scoped lang="scss">

Loading…
Cancel
Save