| | |
| | | <ChartTitle name="车间正品率"></ChartTitle> |
| | | <div class="bar-contents"> |
| | | <div class="bar-total"> |
| | | <div class="bar-item">当日合计生产:{{ chartData.total }}</div> |
| | | <div class="bar-item">正品率:{{ chartData.rate }}</div> |
| | | <div class="bar-item">7日合计生产:{{ chartData.total }}</div> |
| | | <div class="bar-item">正品率:{{ chartData.rate }}%</div> |
| | | </div> |
| | | <div class="chart" ref="chart"></div> |
| | | </div> |
| | |
| | | import ChartTitle from "@/views/cockpitPage/components/ChartTitle.vue"; |
| | | //引入echart |
| | | import * as echarts from "echarts"; |
| | | let myChart; |
| | | export default { |
| | | components: { |
| | | ChartTitle, |
| | | }, |
| | | props: {}, |
| | | props: { |
| | | chartData: { |
| | | type: Object, |
| | | require: true, |
| | | default: () => { |
| | | return { |
| | | total: 0, |
| | | rate: "0", |
| | | datax: [], |
| | | datay: [], |
| | | datay2: [], |
| | | }; |
| | | }, |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | chartData: { |
| | | total: 1000, |
| | | rate: "99%", |
| | | datax: [ |
| | | "第一车间", |
| | | "第二车间", |
| | | "第三车间", |
| | | "第四车间", |
| | | "第五车间", |
| | | "第六车间", |
| | | "第七车间", |
| | | "第八车间", |
| | | "第九车间", |
| | | ], |
| | | datay: [120, 200, 150, 180, 170, 150, 130, 180, 140], |
| | | datay2: [20, 30, 50, 40, 70, 50, 30, 80, 40], |
| | | }, |
| | | // chartData: { |
| | | // total: 1000, |
| | | // rate: "99%", |
| | | // datax: [ |
| | | // "第一车间", |
| | | // "第二车间", |
| | | // "第三车间", |
| | | // "第四车间", |
| | | // "第五车间", |
| | | // "第六车间", |
| | | // "第七车间", |
| | | // "第八车间", |
| | | // "第九车间", |
| | | // ], |
| | | // datay: [120, 200, 150, 180, 170, 150, 130, 180, 140], |
| | | // datay2: [20, 30, 50, 40, 70, 50, 30, 80, 40], |
| | | // }, |
| | | startValue: 0, |
| | | endValue: 5, |
| | | chartTimer: null, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.pieChart("chart", this.chartData); |
| | | watch: { |
| | | "chartData.datay"(val) { |
| | | this.startValue = 0; |
| | | this.endValue = 5; |
| | | this.pieChart("chart", this.chartData); |
| | | }, |
| | | }, |
| | | watch: {}, |
| | | mounted() { |
| | | // this.pieChart("chart", this.chartData); |
| | | }, |
| | | methods: { |
| | | //在职 |
| | | pieChart(chartName, data) { |
| | | let that = this; |
| | | clearInterval(this.chartTimer); |
| | | let chartDom = this.$refs[chartName]; |
| | | let myChart = echarts.init(chartDom); |
| | | if (myChart != null && myChart != "" && myChart != undefined) { |
| | | myChart.dispose(); //销毁 |
| | | } |
| | | myChart = echarts.init(chartDom); |
| | | let option; |
| | | let lineColor = "#35ddc74d"; |
| | | let spirit = "/cockpitPage/order-bg.png"; |
| | | if (data) { |
| | | option = { |
| | | color: ["#dcb018", "#00FFFF"], |
| | | color: ["#fccd1d", "#00FFFF"], |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | |
| | | '<span style=width:70px;display:inline-block">' + |
| | | "正品率" + |
| | | "</span> " + |
| | | data.rate; |
| | | data.rate + |
| | | "%"; |
| | | list.push(lastString); |
| | | listItem = list.join("<br>"); |
| | | return '<div class="showBox">' + listItem + "</div>"; |
| | |
| | | type: "inside", |
| | | xAxisIndex: 0, |
| | | show: false, |
| | | startValue: 0, // 从头开始 |
| | | endValue: 5, // 一次性展示几个 |
| | | startValue: that.startValue, // 从头开始 |
| | | endValue: that.endValue, // 一次性展示几个 |
| | | zoomOnMouseWheel: false, |
| | | moveOnMouseWheel: true, |
| | | moveOnMouseMove: true, |
| | | }, |
| | | ], |
| | | legend: { |
| | |
| | | name: "正品数量", |
| | | icon: "circle", |
| | | textStyle: { |
| | | color: "#dcb018", |
| | | color: "#fccd1d", |
| | | }, |
| | | }, |
| | | { |
| | |
| | | }, |
| | | }, |
| | | axisLabel: { |
| | | // rotate:45, |
| | | margin: 10, |
| | | show: true, |
| | | textStyle: { |
| | | color: "#00FFFF", |
| | | }, |
| | | formatter: function (value) { |
| | | if (value.length > 4) { |
| | | return `${value.slice(0, 3)}...`; |
| | | } |
| | | return value; |
| | | }, |
| | | }, |
| | | data: data.datax ? data.datax : [], |
| | |
| | | { |
| | | type: "value", |
| | | name: "", |
| | | // min: data.yAxis[0].min?data.yAxis.min:0, |
| | | minInterval: 1, //坐标轴是整数 |
| | | max: Math.ceil(eval(`Math.max(${data.datay})`) / 5) * 5, //数据最大值加3 |
| | | interval: |
| | |
| | | ], |
| | | series: [ |
| | | { |
| | | type: "bar", |
| | | type: "pictorialBar", |
| | | name: "正品数量", |
| | | barWidth: "15", |
| | | itemStyle: { |
| | | normal: { |
| | | //柱形图圆角,初始化效果 |
| | | barBorderRadius: [4, 4, 0, 0], |
| | | }, |
| | | }, |
| | | symbol: spirit, |
| | | symbolRepeat: true, |
| | | symbolMargin: "25%", |
| | | symbolClip: true, |
| | | symbolSize: [17, 4], |
| | | barCategoryGap: "40%", |
| | | data: data.datay, |
| | | }, |
| | | { |
| | | type: "bar", |
| | | type: "pictorialBar", |
| | | barGap: "10%", |
| | | name: "次品数量", |
| | | barWidth: "15", |
| | | itemStyle: { |
| | | normal: { |
| | | //柱形图圆角,初始化效果 |
| | | barBorderRadius: [4, 4, 0, 0], |
| | | }, |
| | | }, |
| | | symbol: spirit, |
| | | symbolRepeat: true, |
| | | symbolMargin: "25%", |
| | | symbolClip: true, |
| | | symbolSize: [17, 4], |
| | | data: data.datay2, |
| | | }, |
| | | ], |
| | | }; |
| | | setInterval(function () { |
| | | this.chartTimer = setInterval(function () { |
| | | // 每次向左滑动一个,最后一个从头开始。 |
| | | if (option.dataZoom[0].endValue == that.chartData.datay.length) { |
| | | option.dataZoom[0].startValue = 0; |
| | | option.dataZoom[0].endValue = 5; |
| | | option.dataZoom[0].startValue = that.startValue; |
| | | option.dataZoom[0].endValue = that.endValue; |
| | | } else { |
| | | option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1; |
| | | option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1; |