|
@@ -1,7 +1,7 @@
|
|
|
<!--
|
|
|
* @Author: your name
|
|
|
* @Date: 2021-10-26 13:37:46
|
|
|
- * @LastEditTime: 2021-10-26 14:15:40
|
|
|
+ * @LastEditTime: 2021-11-29 14:46:57
|
|
|
* @LastEditors: Please set LastEditors
|
|
|
* @Description: 销售分析图
|
|
|
* @FilePath: \hyyfScreen\src\views\Production\board\ChartSales.vue
|
|
@@ -12,22 +12,22 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import { mapState } from 'vuex';
|
|
|
+import { mapState } from "vuex";
|
|
|
export default {
|
|
|
name: "ChartWater",
|
|
|
data() {
|
|
|
return {
|
|
|
- myChart: null
|
|
|
- }
|
|
|
+ myChart: null,
|
|
|
+ };
|
|
|
},
|
|
|
props: {
|
|
|
id: {
|
|
|
type: String,
|
|
|
- default: () => '0'
|
|
|
+ default: () => "0",
|
|
|
},
|
|
|
data: {
|
|
|
type: Object,
|
|
|
- default: () => {}
|
|
|
+ default: () => {},
|
|
|
},
|
|
|
// dataValue: {
|
|
|
// type: Array,
|
|
@@ -35,31 +35,51 @@ export default {
|
|
|
// }
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapState(['color'])
|
|
|
+ ...mapState(["color"]),
|
|
|
},
|
|
|
methods: {
|
|
|
init() {
|
|
|
- let dataAxis = this.data.sellDates
|
|
|
+ let dataAxis = this.data.timeList;
|
|
|
let start = dataAxis.length - 12;
|
|
|
let end = dataAxis.length - 1;
|
|
|
+ let quantityList = this.data.quantityList;
|
|
|
let options = {
|
|
|
tooltip: {
|
|
|
- trigger: 'axis',
|
|
|
+ trigger: "axis",
|
|
|
+ formatter: (params) => {
|
|
|
+ var res = "<div>" + params[0].name + "</div>"; // 字符串形式的html标签会被echarts转换渲染成数据,这个res主要是画的tooltip里的上部分的标题部分
|
|
|
+ for (var i = 0; i < params.length; i++) {
|
|
|
+ //因为是个数组,所以要遍历拿到里面的数据,并加入到tooltip的数据内容部分里面去
|
|
|
+ res +=
|
|
|
+ `<div>
|
|
|
+ <span style="display:inline-block;margin-right:5px;border-radius:5px;width:10px;height:10px;background-color:${[
|
|
|
+ params[i].color, // 默认是小圆点,我们将其修改成有圆角的正方形,这里用的是模板字符串。并拿到对应颜色、名字、数据
|
|
|
+ ]};"></span>
|
|
|
+ ${params[i].data}元
|
|
|
+ </div>` +
|
|
|
+ `<div><span style="display:inline-block;margin-right:5px;border-radius:5px;width:10px;height:10px;background-color:${[
|
|
|
+ params[i].color,
|
|
|
+ ]};"></span>${quantityList[i]}头</div>`;
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+ },
|
|
|
},
|
|
|
- color: ['#289df5'],
|
|
|
- dataZoom: [{
|
|
|
- type: 'inside',
|
|
|
- startValue: start,
|
|
|
- endValue: end,
|
|
|
- show: false
|
|
|
- // zoomOnMouseWheel: false,
|
|
|
- // zoomLock: true,
|
|
|
- }],
|
|
|
+ color: ["#289df5"],
|
|
|
+ dataZoom: [
|
|
|
+ {
|
|
|
+ type: "inside",
|
|
|
+ startValue: start,
|
|
|
+ endValue: end,
|
|
|
+ show: false,
|
|
|
+ // zoomOnMouseWheel: false,
|
|
|
+ // zoomLock: true,
|
|
|
+ },
|
|
|
+ ],
|
|
|
grid: {
|
|
|
- left: 30,
|
|
|
- right: '10%',
|
|
|
- top: '20%',
|
|
|
- bottom: '15%'
|
|
|
+ left: 40,
|
|
|
+ right: "10%",
|
|
|
+ top: "20%",
|
|
|
+ bottom: "15%",
|
|
|
// bottom: '30%',
|
|
|
// containLabel: true
|
|
|
},
|
|
@@ -78,95 +98,98 @@ export default {
|
|
|
// ],
|
|
|
xAxis: [
|
|
|
{
|
|
|
- type: 'category',
|
|
|
+ type: "category",
|
|
|
data: dataAxis,
|
|
|
boundaryGap: false,
|
|
|
axisPointer: {
|
|
|
- type: 'none'
|
|
|
+ type: "none",
|
|
|
},
|
|
|
axisLine: {
|
|
|
show: true,
|
|
|
lineStyle: {
|
|
|
- color: 'rgb(102,255,255)',
|
|
|
- }
|
|
|
+ color: "rgb(102,255,255)",
|
|
|
+ },
|
|
|
},
|
|
|
axisTick: {
|
|
|
- show: false
|
|
|
+ show: false,
|
|
|
},
|
|
|
- }
|
|
|
+ },
|
|
|
],
|
|
|
yAxis: [
|
|
|
{
|
|
|
- type: 'value',
|
|
|
- // name: '近周销售情况',
|
|
|
+ type: "value",
|
|
|
+ name: "元",
|
|
|
axisLabel: {
|
|
|
- // formatter: '{value} 头'
|
|
|
- show: true
|
|
|
+ // formatter: "{value} 元",
|
|
|
+ show: true,
|
|
|
},
|
|
|
axisLine: {
|
|
|
show: true,
|
|
|
lineStyle: {
|
|
|
- color: 'rgb(102,255,255)',
|
|
|
- }
|
|
|
+ color: "rgb(102,255,255)",
|
|
|
+ },
|
|
|
},
|
|
|
- axisTick:{
|
|
|
- show: false
|
|
|
+ axisTick: {
|
|
|
+ show: false,
|
|
|
},
|
|
|
splitLine: {
|
|
|
- show: false
|
|
|
- }
|
|
|
- }
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ },
|
|
|
],
|
|
|
series: [
|
|
|
{
|
|
|
- name: '销售',
|
|
|
- type: 'line',
|
|
|
+ // name: "销售",
|
|
|
+ type: "line",
|
|
|
// stack: 'Total',
|
|
|
smooth: true,
|
|
|
areaStyle: {},
|
|
|
emphasis: {
|
|
|
- focus: 'series'
|
|
|
+ focus: "series",
|
|
|
},
|
|
|
- itemStyle : {
|
|
|
- color: '#289df5',
|
|
|
- borderColor: '#289df5',
|
|
|
+ itemStyle: {
|
|
|
+ color: "#289df5",
|
|
|
+ borderColor: "#289df5",
|
|
|
normal: {
|
|
|
- label : {
|
|
|
+ label: {
|
|
|
show: false,
|
|
|
textStyle: {
|
|
|
- fontSize: 14
|
|
|
- }
|
|
|
+ fontSize: 14,
|
|
|
+ },
|
|
|
},
|
|
|
areaStyle: {
|
|
|
- type: 'default',
|
|
|
- opacity: 0.2
|
|
|
- }
|
|
|
- }
|
|
|
+ type: "default",
|
|
|
+ opacity: 0.2,
|
|
|
+ },
|
|
|
+ },
|
|
|
},
|
|
|
- data: this.data.quantitys
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- this.myChart.setOption(options)
|
|
|
- }
|
|
|
+ data: this.data.moneyList,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ this.myChart.setOption(options, true);
|
|
|
+ },
|
|
|
},
|
|
|
mounted() {
|
|
|
- this.myChart = this.$echarts.init(document.getElementById('salesChart'));
|
|
|
- this.init()
|
|
|
+ this.myChart = this.$echarts.init(document.getElementById("salesChart"));
|
|
|
+ // this.init();
|
|
|
},
|
|
|
watch: {
|
|
|
- data(newValue) {
|
|
|
- console.log(newValue)
|
|
|
- this.init()
|
|
|
+ data: {
|
|
|
+ handler(newValue) {
|
|
|
+ console.log(newValue);
|
|
|
+ this.init();
|
|
|
+ },
|
|
|
+ deep: true,
|
|
|
},
|
|
|
color(newVal) {
|
|
|
- if(newVal) {
|
|
|
+ if (newVal) {
|
|
|
this.myChart.clear();
|
|
|
- this.init()
|
|
|
+ this.init();
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
</script>
|
|
|
<style scoped>
|
|
|
.sales-chart {
|