|
|
@@ -1,32 +1,30 @@
|
|
|
<template>
|
|
|
<view class="top">
|
|
|
<view class="qiun-charts">
|
|
|
- <view v-for="(item,index) in datalist" :key="index">
|
|
|
+ <view v-for="(item,index) in orderList" :key="index">
|
|
|
<view class="content">
|
|
|
<view class="qiun-charts-one">
|
|
|
</view>
|
|
|
- <text class="qiun-charts-two">赛轮轮胎品牌任务统计</text>
|
|
|
+ <text class="qiun-charts-two">{{item.brand}}</text>
|
|
|
<view style="display: flex;justify-content: space-between;">
|
|
|
-
|
|
|
-
|
|
|
- <view class="qiun-charts-three">
|
|
|
- <view>
|
|
|
- </view>
|
|
|
- <view>
|
|
|
- 10月10条任务统计
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- <view class="qiun-charts-four">
|
|
|
- <view>
|
|
|
+ <view class="qiun-charts-three">
|
|
|
+ <view>
|
|
|
+ </view>
|
|
|
+ <view>
|
|
|
+ {{item.month}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view>
|
|
|
- 10月10条任务统计
|
|
|
+ <view class="qiun-charts-four">
|
|
|
+ <view>
|
|
|
+ </view>
|
|
|
+ <view>
|
|
|
+ {{item.quarter}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
<view class="content-one">
|
|
|
- <canvas canvas-id="canvasRing" id="canvasRing" class="charts" @touchstart="touchRing"></canvas>
|
|
|
- <canvas canvas-id="canvasRing" id="canvasRing" class="charts" @touchstart="touchRing"></canvas>
|
|
|
+ <canvas :canvas-id="'mouthPie' + index" :id="'mouthPie' + index" class="charts" @touchstart="touchPie($event,'mouthPie' + index)"></canvas>
|
|
|
+ <canvas :canvas-id="'quarterPie' + index" :id="'quarterPie' + index" class="charts" @touchstart="touchPie($event,'quarterPie' + index)"></canvas>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
@@ -35,76 +33,183 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+ var canvasObj = {};
|
|
|
+ import {
|
|
|
+ request
|
|
|
+ } from '../../../common/request/request'
|
|
|
+ require("promise.prototype.finally").shim()
|
|
|
import uCharts from '@/components/u-charts/u-charts.js';
|
|
|
import {
|
|
|
isJSON
|
|
|
} from '@/common/checker.js';
|
|
|
var _self;
|
|
|
- var canvaRing = null;
|
|
|
+ var canvaPie = null;
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
- datalist: [{},
|
|
|
- {},
|
|
|
- {},
|
|
|
- {},
|
|
|
- {},
|
|
|
- ],
|
|
|
+ orderList: [],
|
|
|
cWidth: '',
|
|
|
cHeight: '',
|
|
|
pixelRatio: 1,
|
|
|
- textarea: ''
|
|
|
+ piearr: [],
|
|
|
+ textarea: '',
|
|
|
+ // name: '',
|
|
|
+ pieObj:{
|
|
|
+ series:[
|
|
|
+ {
|
|
|
+ data:60,
|
|
|
+ name:'已完成'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ data:40,
|
|
|
+ name:'未完成'
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ pieObj2:{
|
|
|
+ series:[
|
|
|
+ {
|
|
|
+ data:60,
|
|
|
+ name:'已完成'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ data:40,
|
|
|
+ name:'未完成'
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
onLoad() {
|
|
|
_self = this;
|
|
|
_self.cWidth = uni.upx2px(370);
|
|
|
_self.cHeight = uni.upx2px(320);
|
|
|
- this.showRing('canvasRing')
|
|
|
- // this.getServerData();
|
|
|
+ // this.showPie('canvasRing')
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getDate()
|
|
|
},
|
|
|
methods: {
|
|
|
- // 这是官网给的调接口渲染数据的代码,我写的没有后台数据,自己写的固定的数据 就注销了
|
|
|
- // getServerData() {
|
|
|
- // uni.request({
|
|
|
- // url: 'https://www.ucharts.cn/data.json',
|
|
|
- // data: {},
|
|
|
- // success: function(res) {
|
|
|
- // console.log(res.data.data)
|
|
|
- // console.log("3333")
|
|
|
- // let Ring = {
|
|
|
- // series: []
|
|
|
- // };
|
|
|
- // //这里我后台返回的是数组,所以用等于,如果您后台返回的是单条数据,需要push进去
|
|
|
- // Ring.series = res.data.data.Ring.series;
|
|
|
- // //自定义文案示例,需设置format字段
|
|
|
- // for (let i = 0; i < Ring.series.length; i++) {
|
|
|
- // Ring.series[i].format = () => {
|
|
|
- // console.log(Ring.series[i].name + Ring.series[i].data)
|
|
|
- // return Ring.series[i].name + Ring.series[i].data
|
|
|
- // };
|
|
|
- // }
|
|
|
- // _self.textarea = JSON.stringify(res.data.data.Ring);
|
|
|
- // _self.showRing("canvasRing", Ring);
|
|
|
- // },
|
|
|
- // fail: () => {
|
|
|
- // _self.tips = "网络错误,小程序端请检查合法域名";
|
|
|
- // },
|
|
|
- // });
|
|
|
- // },
|
|
|
+ getDate() {
|
|
|
+ request({
|
|
|
+ url: '/myapp/storeBrandTask',
|
|
|
+ method: 'post',
|
|
|
+ data: {
|
|
|
+ "storeId": '1000'
|
|
|
|
|
|
- showRing(canvasId, chartData) {
|
|
|
- var chartData = {
|
|
|
- series: [{
|
|
|
- "name": "已完成",
|
|
|
- "data": 50
|
|
|
- }, {
|
|
|
- "name": "待完成",
|
|
|
- "data": 30
|
|
|
- }]
|
|
|
- };
|
|
|
- canvaRing = new uCharts({
|
|
|
+ }
|
|
|
+ }).then(res => {
|
|
|
+ console.log(res)
|
|
|
+ this.orderList = res.data.data
|
|
|
+ for(var i=0;i<res.data.data.length;i++){
|
|
|
+ let monthPie = {
|
|
|
+ series: []
|
|
|
+ };
|
|
|
+ let quarterPie = {
|
|
|
+ series: []
|
|
|
+ }
|
|
|
+
|
|
|
+ for(var j=0;j<res.data.data[i].storeMonthList.length;j++){
|
|
|
+ // var _this = this
|
|
|
+ this.name = res.data.data[i].storeMonthList[j].data
|
|
|
+ let name = ""
|
|
|
+ console.log(this.name)
|
|
|
+ let monthObj = {
|
|
|
+ data:null,
|
|
|
+ name:'',
|
|
|
+ }
|
|
|
+ let quarterObj = {
|
|
|
+ data:null,
|
|
|
+ name:'',
|
|
|
+ }
|
|
|
+ name= res.data.data[i].storeMonthList[j].data
|
|
|
+ console.log(name)
|
|
|
+ monthObj.data = res.data.data[i].storeMonthList[j].data
|
|
|
+ monthObj.name = res.data.data[i].storeMonthList[j].name
|
|
|
+ quarterObj.data = res.data.data[i].storeQuarterList[j].data
|
|
|
+ quarterObj.name = res.data.data[i].storeQuarterList[j].name
|
|
|
+
|
|
|
+ console.log('^^^^',monthObj)
|
|
|
+ console.log('9999999',quarterObj)
|
|
|
+
|
|
|
+ monthPie.series.push(monthObj)
|
|
|
+ quarterPie.series.push(quarterObj)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log(`mouthPie${i}`,monthPie,quarterPie)
|
|
|
+ this.showPie(`mouthPie${i}`,monthPie);
|
|
|
+ this.showPie(`quarterPie${i}`,quarterPie)
|
|
|
+ // this[`${this.refVal}`]
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // let HstoreMonthList = res.data.data[0].storeMonthList
|
|
|
+ // let SstoreMonthList = res.data.data[1].storeMonthList
|
|
|
+ // for(var i=0;i<HstoreMonthList.length;i++){
|
|
|
+ // let obj = {
|
|
|
+ // data:null,
|
|
|
+ // name:'',
|
|
|
+ // }
|
|
|
+ // obj.data = HstoreMonthList[i].data
|
|
|
+ // obj.name = HstoreMonthList[i].name
|
|
|
+ // console.log(obj)
|
|
|
+ // Pie.series[i] = obj
|
|
|
+ // }
|
|
|
+ // this.showPie("canvasPie", Pie);
|
|
|
+ //这里我后台返回的是数组,所以用等于,如果您后台返回的是单条数据,需要push进去
|
|
|
+ // for (let i = 0; i < res.data.data.length; i++) {
|
|
|
+ // for(let j=0;j<res.data.data[i].storeMonthList.length;j++){
|
|
|
+ // let obj = {
|
|
|
+ // data:null,
|
|
|
+ // name:'',
|
|
|
+ // }
|
|
|
+ // console.log(res.data.data[i].storeMonthList[j].data)
|
|
|
+ // console.log(res.data.data[i].storeMonthList[j].name)
|
|
|
+ // obj.data = res.data.data[i].storeMonthList[j].data
|
|
|
+ // obj.name = res.data.data[i].storeMonthList[j].name
|
|
|
+ // Pie.series[j] = obj
|
|
|
+ // }
|
|
|
+ // this.showPie("canvasPie", Pie);
|
|
|
+ // this.pieObj = res.data.data[i].storeMonthList
|
|
|
+ // for(let j =0;j<res.data.data[i].storeMonthList.length;j++){
|
|
|
+ // let obj = {
|
|
|
+ // name:'',
|
|
|
+ // data:null
|
|
|
+ // }
|
|
|
+ // obj.name = res.data.data[i].storeMonthList[j].name
|
|
|
+ // obj.data = res.data.data[i].storeMonthList[j].data
|
|
|
+ // Pie.series[j] = obj
|
|
|
+ // console.log('^^^^^',Pie)
|
|
|
+ // this.showPie("canvasPie",Pie);
|
|
|
+ // }
|
|
|
+ // let obj = {
|
|
|
+ // name:'',
|
|
|
+ // data:null
|
|
|
+ // }
|
|
|
+ // obj.name = res.data.data[i]
|
|
|
+ // Pie.series = res.data.data[i].storeMonthList;
|
|
|
+ // console.log(this.pieObj)
|
|
|
+ // console.log(Pie)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // }
|
|
|
+
|
|
|
+ }).catch(err => {
|
|
|
+ console.log(err)
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.hideLoading();
|
|
|
+ this.loading = false;
|
|
|
+ }, 300)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ showPie(canvasId, chartData) {
|
|
|
+ console.log('8888888',canvasId,chartData)
|
|
|
+ canvasObj[canvasId]=new uCharts({
|
|
|
$this: _self,
|
|
|
canvasId: canvasId,
|
|
|
type: 'ring',
|
|
|
@@ -131,12 +236,12 @@
|
|
|
disablePieStroke: true,
|
|
|
dataLabel: true,
|
|
|
subtitle: {
|
|
|
- name: '70%',
|
|
|
+ // name: 40,1
|
|
|
color: '#7cb5ec',
|
|
|
fontSize: 12 * _self.pixelRatio,
|
|
|
},
|
|
|
title: {
|
|
|
- name: '已完成',
|
|
|
+ name: '待完成',
|
|
|
color: '#666666',
|
|
|
fontSize: 13 * _self.pixelRatio,
|
|
|
},
|
|
|
@@ -148,6 +253,7 @@
|
|
|
}
|
|
|
},
|
|
|
});
|
|
|
+ // this.piearr = canvaPie.opts.series;
|
|
|
},
|
|
|
// touchRing(e) {
|
|
|
// canvaRing.touchLegend(e, {
|
|
|
@@ -159,30 +265,22 @@
|
|
|
// }
|
|
|
// });
|
|
|
// },
|
|
|
- touchRing(e) {
|
|
|
- canvaRing.touchLegend(e, {
|
|
|
- animation: false
|
|
|
- });
|
|
|
- canvaRing.showToolTip(e, {
|
|
|
- format: function(item) {
|
|
|
- return item.name + ':' + item.data
|
|
|
- }
|
|
|
+ touchPie(e,id){
|
|
|
+ console.log(e,id)
|
|
|
+
|
|
|
+ // canvaPie.touchLegend(e, {
|
|
|
+ // animation: false
|
|
|
+ // });
|
|
|
+ canvasObj[id].showToolTip(e, {
|
|
|
+ format: function (item) {
|
|
|
+ return item.name + ':' + item.data
|
|
|
+ }
|
|
|
});
|
|
|
},
|
|
|
- changeData() {
|
|
|
- if (isJSON(_self.textarea)) {
|
|
|
- let newdata = JSON.parse(_self.textarea);
|
|
|
- canvaRing.updateData({
|
|
|
- series: newdata.series,
|
|
|
- categories: newdata.categories
|
|
|
- });
|
|
|
- } else {
|
|
|
- uni.showToast({
|
|
|
- title: '数据格式错误',
|
|
|
- image: '../../../static/images/alert-warning.png'
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
@@ -239,48 +337,53 @@
|
|
|
position: relative;
|
|
|
top: -20rpx;
|
|
|
}
|
|
|
+
|
|
|
.qiun-charts-three>view:nth-child(1) {
|
|
|
width: 24rpx;
|
|
|
height: 24rpx;
|
|
|
border: 6rpx solid #0094FE;
|
|
|
- transform:rotate(50deg);
|
|
|
+ transform: rotate(50deg);
|
|
|
position: relative;
|
|
|
top: 20rpx;
|
|
|
left: 30rpx;
|
|
|
}
|
|
|
+
|
|
|
.qiun-charts-three>view:nth-child(2) {
|
|
|
width: 150rpx;
|
|
|
height: 22rpx;
|
|
|
background-color: #000000;
|
|
|
color: #fff;
|
|
|
font-size: 15rpx;
|
|
|
- opacity: 0.3;
|
|
|
+ opacity: 0.3;
|
|
|
text-align: center;
|
|
|
position: relative;
|
|
|
top: -2rpx;
|
|
|
left: 40rpx;
|
|
|
border-top-right-radius: 12rpx;
|
|
|
}
|
|
|
+
|
|
|
.qiun-charts-four {
|
|
|
position: relative;
|
|
|
right: 200rpx;
|
|
|
}
|
|
|
+
|
|
|
.qiun-charts-four>view:nth-child(1) {
|
|
|
width: 24rpx;
|
|
|
height: 24rpx;
|
|
|
border: 6rpx solid #0094FE;
|
|
|
- transform:rotate(50deg);
|
|
|
+ transform: rotate(50deg);
|
|
|
position: relative;
|
|
|
top: 20rpx;
|
|
|
left: 30rpx;
|
|
|
}
|
|
|
+
|
|
|
.qiun-charts-four>view:nth-child(2) {
|
|
|
width: 150rpx;
|
|
|
height: 22rpx;
|
|
|
background-color: #000000;
|
|
|
color: #fff;
|
|
|
font-size: 15rpx;
|
|
|
- opacity: 0.3;
|
|
|
+ opacity: 0.3;
|
|
|
text-align: center;
|
|
|
position: relative;
|
|
|
top: -2rpx;
|