This commit is contained in:
xiaoyu
2024-07-05 19:50:47 +08:00
parent 35b87e6cba
commit cde5a7572c
9 changed files with 285 additions and 543 deletions
+1
View File
@@ -125,6 +125,7 @@
.height-190{height:190rpx;box-sizing:border-box;}
.height-240{height:240rpx;box-sizing:border-box;}
.height-400{height:400rpx;box-sizing:border-box;}
.height-450{height:450rpx;box-sizing:border-box;}
.height-500{height:500rpx;box-sizing:border-box;}
.height-600{height:600rpx;box-sizing:border-box;}
.height-800{height:800rpx;box-sizing:border-box;}
+1
View File
@@ -73,6 +73,7 @@ api = {
appStatisticsStats: "app/statistics/stats", //获取渠道经理数据分析入口数据
appStatisticsStats_days: "app/statistics/stats_days", //获取渠道经理数据分析数据
appStatisticsStats_customer: "app/statistics/stats_customer", //获取渠道经理数据分析数据
appStatisticsStats_customer_pid: "app/statistics/stats_customer_pid", //客户数据二级
appUserResetbiz: "app/user/resetbiz", //更新用户店铺id
+7
View File
@@ -348,6 +348,13 @@ apiQuery.getAppStatisticsCust = function(params){
})
}
//客户数据二级
apiQuery.appStatisticsStats_customer_pid = function (params) {
return new Promise(function (resolve, reject) {
HttpRequest(false, Config.api.appStatisticsStats_customer_pid, 2, params, "GET", resolve, reject)
})
}
//获取渠道订单统计
apiQuery.getAppStatisticsOrders = function(params){
return new Promise(function (resolve, reject) {
+103 -433
View File
@@ -1,12 +1,11 @@
import _ from '../../../commons/js/commons';
import popularData from '../../../commons/js/lib/popularData';
import * as echarts from '../../../ecCanvas/components/ec-canvas/echarts';
const app = getApp()
let BarChartData;
let Pie1ChartData;
let Pie2ChartData;
let Pie3ChartData;
function BarChart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
@@ -31,10 +30,8 @@ function Pie1Chart(canvas, width, height, dpr) {
let option = Pie1ChartData
chart.setOption(option);
chart.on('click',function(e){
console.log(e)
if(e.data.id>0){
let obj = {}
obj.type = 1
obj.id = e.data.id
_.eventBus.emit("customerstats",obj)
}
@@ -55,20 +52,6 @@ function Pie2Chart(canvas, width, height, dpr) {
});
return chart;
}
function Pie3Chart(canvas, width, height, dpr) {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
canvas.setChart(chart);
let option = Pie3ChartData
chart.setOption(option);
chart.on('click',function(e){
//_.eventBus.emit("pinpai",e.name)
});
return chart;
}
Page({
data: {
@@ -77,13 +60,10 @@ Page({
ecPie1:{},
showPie2Chart:false,//是否显示Pie2图表
ecPie2:{},
showPie3Chart:false,//是否显示Pie3图表
ecPie3:{},
showBarChart:false,//是否显示Bar图表
ecBar:{},
Pie1title:'',
Pie2title:'',
Pie3title:'',
Bartitle:'',
},
@@ -97,27 +77,105 @@ Page({
this.getAppArea()
let that = this
//消息通讯 是否显示授权用户信息按钮
//消息通讯
_.eventBus.on("customerstats", this, function(res){
let url = '/pages/storeData/subData/index?from=customer&type=' + res.type + '&id=' + res.id + '&s_date=' + that.data.s_date + '&e_date=' + that.data.e_date + '&current_date=' + that.data.current_date
_.$router.openUrlScheme(url)
let that = this;
let params = {};
params['id'] = res.id;
params['type'] = that.data.type;
params['province_id'] = that.data.province_id;
params['city_id'] = that.data.city_id;
params['s_time'] = that.data.s_date;
params['e_time'] = that.data.e_date;
_.apiQuery.appStatisticsStats_customer_pid(params, that).then(res => {
if(that.data.Pie2title){
this.setData({
pie2noData:true,
})
}
this.setData({
Pie2title:res.data.title,
})
if(res.data.series_data.length==0){
this.setData({
pie2noData:true,
})
}else{
Pie2ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'12%',
radius: ['0', '55%'],
avoidLabelOverlap: false,
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie2ChartData.series[0].data = res.data.series_data
this.setData({
pie2noData:false,
showPie2Chart:true,
['ecPie2.onInit']:Pie2Chart,
pie2Bottom:res.data.bottom,
})
}
wx.stopPullDownRefresh()
});
})
},
//20240526 获取系统配置城市省市
getAppArea(){
_.apiQuery.getAppCityLists().then(res => {
let area_list = res.data.area_list
let area_id = res.data.default_area_id
let area_id = [this.data.province_id, this.data.city_id]
let areaArr = []
// let cur_index = []
area_list.forEach((item,index) => {
if(item.province_id==area_id[0]){
item.children.forEach((it,idx)=>{
if(it.city_id==area_id[1]){
// cur_index = [item.province_id,it.city_id]
this.setData({
areaIndex: [index,idx]
})
@@ -154,23 +212,22 @@ Page({
this.getAppStatisticsStats_customer()
},
//20240526地区联动
columnChangeArea(e){
let multiData = this.data.area_list;
let multiIndex = this.data.areaIndex;
let columnIndex = e.detail.column;
let columnValue = e.detail.value;
//20240526地区联动
columnChangeArea(e){
let multiData = this.data.area_list;
let multiIndex = this.data.areaIndex;
let columnIndex = e.detail.column;
let columnValue = e.detail.value;
multiIndex[columnIndex] = columnValue;
this.setData({
areaArr: [
multiData,
multiData[multiIndex[0]].children
],
})
},
multiIndex[columnIndex] = columnValue;
this.setData({
areaArr: [
multiData,
multiData[multiIndex[0]].children
],
})
},
//选择日期
changeDate(e){
@@ -240,7 +297,6 @@ columnChangeArea(e){
this.setData({
showPie1Chart:false,
showPie2Chart:false,
showPie3Chart:false,
showBarChart:false,
})
@@ -251,7 +307,6 @@ columnChangeArea(e){
params['s_time'] = this.data.s_date;
params['e_time'] = this.data.e_date;
_.apiQuery.getAppStatisticsStats_customer(params).then(res => {
wx.setNavigationBarTitle({
title: res.data.title
})
@@ -259,11 +314,9 @@ columnChangeArea(e){
this.setData({
Pie1title:res.data.pie1?res.data.pie1.title:'',
Pie2title:res.data.pie2?res.data.pie2.title:'',
Pie3title:res.data.pie3?res.data.pie3.title:'',
Bartitle:res.data.bar?res.data.bar.title:'',
})
//Pie1ChartData = getPie1Option()
if(res.data.pie1){
if(res.data.pie1.series_data_1.length==0){
this.setData({
@@ -343,153 +396,6 @@ columnChangeArea(e){
}
}
//Pie2ChartData = getPie2Option()
if(res.data.pie2){
if(res.data.pie2.series_data_1.length==0){
this.setData({
pie2noData:true,
})
}else{
Pie2ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'12%',
radius: '70%',
// avoidLabelOverlap: false,
// itemStyle: {
// borderRadius: 10,
// borderColor: '#fff',
// borderWidth: 2
// },
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie2ChartData.series[0].data = res.data.pie2.series_data_1
this.setData({
pie2noData:false,
showPie2Chart:true,
['ecPie2.onInit']:Pie2Chart,
pie2Bottom:res.data.pie2.bottom,
})
}
}
//Pie3ChartData = getPie3Option()
if(res.data.pie3){
if(res.data.pie3.series_data_1.length==0){
this.setData({
pie3noData:true,
})
}else{
Pie3ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'12%',
radius: '70%',
// avoidLabelOverlap: false,
// itemStyle: {
// borderRadius: 10,
// borderColor: '#fff',
// borderWidth: 2
// },
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie3ChartData.series[0].data = res.data.pie3.series_data_1
this.setData({
pie3noData:false,
showPie3Chart:true,
['ecPie3.onInit']:Pie3Chart,
pie3Bottom:res.data.pie3.bottom,
})
}
}
//BarChartData = getBarOption()
if(res.data.bar){
BarChartData = {
tooltip: {
@@ -546,7 +452,6 @@ columnChangeArea(e){
}
wx.stopPullDownRefresh()
});
},
@@ -571,239 +476,4 @@ columnChangeArea(e){
this.getAppStatisticsStats_customer()
},
})
function getPie1Option() {
return {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
selectedMode: 'single',
radius: [0, '30%'],
label: {
position: 'inner',
fontSize: 10
},
labelBar: {
show: false
},
data: [
{ value: 1548, name: 'H' },
{ value: 775, name: 'A' },
{ value: 679, name: 'B', }
]
},
{
name: 'Access From',
type: 'pie',
radius: ['45%', '65%'],
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: [
{ value: 1048, name: '转介绍' },
{ value: 335, name: '网络推广' },
{ value: 310, name: '外展外拓' },
{ value: 251, name: '自媒体' },
]
},
]
};
}
function getPie2Option() {
return {
// tooltip: {
// trigger: 'item',
// formatter: '{b}: {c} ({d}%)'
// },
series: [
{
name: 'Access From',
type: 'pie',
bottom:'10%',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: [
{ value: 48, name: '转介绍' },
{ value: 35, name: '网络推广' },
{ value: 30, name: '外展外拓' },
{ value: 21, name: '自媒体' },
]
}
]
};
}
function getPie3Option() {
return {
// tooltip: {
// trigger: 'item',
// formatter: '{b}: {c} ({d}%)'
// },
series: [
{
name: 'Access From',
type: 'pie',
bottom:'10%',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: [
{ value: 48, name: '转介绍' },
{ value: 35, name: '网络推广' },
{ value: 30, name: '外展外拓' },
{ value: 21, name: '自媒体' },
]
}
]
};
}
function getBarOption() {
return{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: {
type: 'value',
data: []
},
yAxis: {
type: 'category',
data: ['张三', '李四', '王五', '赵六', '孙七', '周八', '吴九','郑十']
},
grid: {
top: '5%',
left: '2%',
right: '5%',
bottom: '3%',
containLabel: true
},
series: [
{
data: [20, 20, 10, 20, 20, 20, 25, 2],
type: 'bar',
top: 0,
bottom:'0',
}
]
};
}
})
+2 -18
View File
@@ -37,7 +37,7 @@
</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888">{{pie1Bottom}}</view>
</view>
<view class="text-center font-22 color-f9394d" wx:if="{{showPie1Chart}}">点击分类卡片查看具体数据</view>
<view class="text-center font-22 color-f9394d" wx:if='{{!pie1noData}}' >点击分类扇区可查看下级来源数据</view>
</view>
</view>
@@ -51,23 +51,7 @@
<view class="absolute wp100 height-600" wx:if="{{showPie2Chart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie2 }}"></ec-canvas>
</view>
<!--view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{pie2Bottom}}</view-->
<view class="text-center font-22 color-f9394d" wx:if='{{!pie1noData}}'>点击分类卡片查看具体数据</view>
</view>
</view>
</view>
<view class="mb30 pl30 pr30" wx:if="{{Pie3title != ''}}">
<view class="inner30 pt40 bg-fff box-shadow-000-10-10 ulib-r10">
<view class="relative">
<view class="font-36">{{Pie3title}}</view>
</view>
<lcb-listmore isNoData='{{pie3noData}}' noDataMsg='暂无数据'></lcb-listmore>
<view class="mt50 mb20 relative height-600 z-index-0" wx:if="{{!pie3noData}}">
<view class="absolute wp100 height-600" wx:if="{{showPie3Chart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie3 }}"></ec-canvas>
</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{pie3Bottom}}</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888" >{{pie2Bottom}}</view>
</view>
</view>
</view>
+1
View File
@@ -187,6 +187,7 @@ Page({
params['city_id'] = this.data.city_id;
params['s_time'] = this.data.s_date;
params['e_time'] = this.data.e_date;
_.apiQuery.getAppStatisticsStats(params).then(res => {
wx.setNavigationBarTitle({
+1 -1
View File
@@ -27,7 +27,7 @@
<view class="mt10 mb40 pl30 pr30 fn-flex text-center color-fff">
<block wx:for='{{tabs}}' wx:key='index'>
<view class="fn-flex-item" bindtap="pushLink" data-url="{{item.url}}&province_id={{province_id}}&s_date={{s_date}}&e_date={{e_date}}&current_date={{current_date}}">
<view class="fn-flex-item" bindtap="pushLink" data-url="{{item.url}}&province_id={{province_id}}&city_id={{city_id}}&s_date={{s_date}}&e_date={{e_date}}&current_date={{current_date}}">
<view class="inline-block text-left">
<view class="text-center">
<text class="font-40">{{item.value_1}}</text>
+167 -89
View File
@@ -12,6 +12,7 @@ function Pie1Chart(canvas, width, height, dpr) {
});
canvas.setChart(chart);
let option = Pie1ChartData
console.log(option)
chart.setOption(option);
chart.on('click',function(e){
console.log(e)
@@ -33,7 +34,6 @@ Page({
})
}
this.getAppBizStats()
},
@@ -114,6 +114,8 @@ Page({
params['id'] = this.data.id;
params['s_time'] = this.data.s_date;
params['e_time'] = this.data.e_date;
params['province_id'] = this.data.province_id;
params['city_id'] = this.data.city_id;
if(this.data.from=='customer'){
_.apiQuery.getAppBizStats_customer_pid(params).then(res => {
@@ -122,6 +124,168 @@ Page({
title: res.data.title
})
this.setData({
Pie1title:res.data.title,
})
if(res.data.series_data.length==0){
this.setData({
pie1noData:true,
})
}else{
Pie1ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'15%',
radius: ['0', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie1ChartData.series[0].data = res.data.series_data
this.setData({
pie1noData:false,
showPie1Chart:true,
['ecPie1.onInit']:Pie1Chart,
pie1Bottom:res.data.pie1.bottom,
})
}
wx.stopPullDownRefresh()
});
}else if(this.data.from=='order'){
_.apiQuery.getAppBizStats_order_series(params).then(res => {
wx.setNavigationBarTitle({
title: res.data.title
})
if(res.data.series_data.length==0){
this.setData({
pie1noData:true,
})
}else{
Pie1ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'15%',
radius: ['0', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie1ChartData.series[0].data = res.data.series_data
this.setData({
pie1noData:false,
showPie1Chart:true,
['ecPie1.onInit']:Pie1Chart,
pie1Bottom:res.data.pie1.bottom,
})
}
wx.stopPullDownRefresh()
});
}else{
_.apiQuery.appStatisticsStats_customer_pid(params).then(res => {
wx.setNavigationBarTitle({
title: res.data.title
})
this.setData({
Pie1title:res.data.title,
})
@@ -147,10 +311,6 @@ Page({
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
@@ -192,93 +352,11 @@ Page({
pie1noData:false,
showPie1Chart:true,
['ecPie1.onInit']:Pie1Chart,
pie1Bottom:res.data.bottom,
})
}
wx.stopPullDownRefresh()
});
}else if(this.data.from=='order'){
_.apiQuery.getAppBizStats_order_series(params).then(res => {
wx.setNavigationBarTitle({
title: res.data.title
})
// this.setData({
// Pie1title:res.data.title,
// })
if(res.data.series_data.length==0){
this.setData({
pie1noData:true,
})
}else{
Pie1ChartData = {
tooltip: {
trigger: 'item',
formatter: '{b}: {c} ({d}%)'
},
series: [
{
name: 'Access From',
type: 'pie',
bottom:'15%',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
labelLine: {
fontSize:5,
length:10
},
label: {
formatter: '{b| {b} }{abg|}\n{hr|}\n{c| {c}({d}%) }',
backgroundColor: '#F6F8FC',
borderColor: '#8C8D8E',
borderWidth: 1,
borderRadius: 4,
rich: {
hr: {
borderColor: '#8C8D8E',
width: '100%',
borderWidth: 1,
height: 0
},
b: {
color: '#4C5058',
fontSize:10,
lineHeight:20,
align: 'center',
},
c: {
color: '#4C5058',
fontSize:8,
lineHeight:20,
align: 'center',
},
}
},
data: []
}
]
};
Pie1ChartData.series[0].data = res.data.series_data
this.setData({
pie1noData:false,
showPie1Chart:true,
['ecPie1.onInit']:Pie1Chart,
})
}
wx.stopPullDownRefresh()
});
});
}
},
+2 -2
View File
@@ -23,8 +23,8 @@
<view class="font-36">{{Pie1title}}</view>
</view>
<lcb-listmore isNoData='{{pie1noData}}' noDataMsg='暂无数据'></lcb-listmore>
<view class="mt50 mb20 relative height-500 z-index-0" wx:if="{{!pie1noData}}">
<view class="absolute wp100 height-600" wx:if="{{showPie1Chart}}">
<view class="mt50 mb20 relative height-450 z-index-0" wx:if="{{!pie1noData}}">
<view class="absolute wp100 height-450" wx:if="{{showPie1Chart}}">
<ec-canvas class="absolute top-0 bottom-0 left-0 right-0" ec="{{ ecPie1 }}"></ec-canvas>
</view>
<view class="absolute left-0 bottom-0 right-0 text-center font-22 color-888">{{pie1Bottom}}</view>