123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- <!--
- * @Author: your name
- * @Date: 2021-10-26 09:15:22
- * @LastEditTime: 2021-10-26 10:54:54
- * @LastEditors: Please set LastEditors
- * @Description: 存栏结构图
- * @FilePath: \hyyfScreen\src\views\Production\board\ChartAmountPie.vue
- -->
- <template>
- <div class="chart-inventory-pie">
- <div id="chartAmountPie"></div>
- </div>
- </template>
- <script>
- export default {
- data() {
- return {
- myChart: null
- }
- },
- props: {
- data: {
- type: Array,
- required: true
- }
- },
- methods: {
- init() {
- const _this = this
- let total = this.data[1].stockQuantity + this.data[2].stockQuantity + this.data[3].stockQuantity + this.data[4].stockQuantity + this.data[5].stockQuantity
- let options = {
- // title: {
- // text: '存栏结构',
- // x: 20,
- // y: 20
- // },
- grid: {
- // x: 10,
- // y: 10
- },
- tooltip: {
- trigger: 'item',
- formatter: function ({name, value, percent}) {
- return name + ':' + value + '头 ' + percent + '%'
- }
- },
- legend: {
- top: '11%',
- left: '55%',
- orient: 'vertical',
- icon: "circle",
- selectedMode: false, // 取消右侧项选中
- itemGap: 20, // 各项间隔
- textStyle: {
- fontSize: 12,
- color: '#eff'
- },
- formatter: function (name) {
- var legendIndex = 0;
- var clientLabels = [
- { name: '母猪存栏', percent: parseFloat(_this.data[1].stockQuantity / total)*100 + '%', number: _this.data[1].stockQuantity },
- { name: '公猪存栏', percent: parseFloat(_this.data[2].stockQuantity / total)*100 + '%', number: _this.data[2].stockQuantity },
- { name: '哺乳仔猪存栏', percent: parseFloat(_this.data[3].stockQuantity / total)*100 + '%', number: _this.data[3].stockQuantity },
- { name: '保育猪存栏', percent: parseFloat(_this.data[4].stockQuantity / total)*100 + '%', number: _this.data[4].stockQuantity },
- { name: '育肥猪存栏', percent: parseFloat(_this.data[5].stockQuantity / total)*100 + '%', number: _this.data[5].stockQuantity },
- ]
- clientLabels.forEach(function (value, i) {
- if (value.name == name) {
- legendIndex = i;
- }
- });
- return name + " (" + clientLabels[legendIndex].percent + ', ' + clientLabels[legendIndex].number + '头' + ") ";
- }
- },
- graphic: [
- {
- type: 'text',
- left: '23%',
- top: '30%',
- style: {
- text: '总存栏',
- fontSize: 15,
- fontWeight: 700,
- fill: '#fff'
- }
- },
- {
- type: 'text',
- left: '23%',
- top: '40%',
- style: {
- text: total,
- fontSize: 24,
- fontWeight: 700,
- fill: '#fff'
- }
- }
- ],
- series: [
- {
- name: 'Access From',
- type: 'pie',
- radius: ['45%', '60%'], // 半径
- center: ['28%', '38%'],
- avoidLabelOverlap: false,
- label: {
- show: false,
- // position: 'center'
- },
- emphasis: {
- label: {
- show: false,
- fontSize: '40',
- fontWeight: 'bold'
- }
- },
- labelLine: {
- show: false
- },
- itemStyle: {
- normal: {
- color: function (colors) { // 颜色设置
- var colorList = ['#3aa0ff', '#4dcb73', '#fad337', '#f2637b', '#975fe4']
- return colorList[colors.dataIndex]
- },
- borderWidth: 3, // 设置各项空隙,白边
- borderColor: '#fff'
- }
- },
- data: [
- { value: this.data[1].stockQuantity, name: '母猪存栏' },
- { value: this.data[2].stockQuantity, name: '公猪存栏' },
- { value: this.data[3].stockQuantity, name: '哺乳仔猪存栏' },
- { value: this.data[4].stockQuantity, name: '保育猪存栏' },
- { value: this.data[5].stockQuantity, name: '育肥猪存栏' }
- ]
- }
- ]
- };
- this.myChart.setOption(options)
- }
- },
- mounted() {
- this.myChart = this.$echarts.init(document.getElementById('chartAmountPie'));
- this.init()
- console.log(this.data)
- },
- watch: {
- data(newValue) {
- console.log(newValue)
- this.init()
- }
- }
- }
- </script>
- <style scoped>
- .chart-inventory-pie {
- width: 100%;
- height: 300px;
- }
- #chartAmountPie {
- width: 100%;
- height: 100%;
- }
- </style>
|