uChars官网地址:秋云uCharts图表组件
一、绘制堆叠柱状图
首先,去官网 下载demo项目,讲需要的组件引入到项目中,放入到uniapp项目对应的components文件下(注意:要把整个qiun-data-chars文件夹全部复制过去),如图:

然后,根据自己的需求引用,先引入组件并注册
import QiunDataCharts from '../components/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue';引用
<qiun-data-charts type="column" :opts="{extra:{column:{type:'stack'}}}"
:chartData="bankdata" :echartsH5="false" />获取后台数据(数据结构是在后台封装好的)
this.$app.api.getBankDetailsList({
saleId: this.id,
days: this.day
})
.then((res) => {
console.log("堆叠柱状图", res)
if (res.data.categories && res.data.categories.length > 0)
{
for (var i = 0; i < res.data.categories.length; i++) {
let str = res.data.categories[i].substr(5, 6)
res.data.categories[i] = str
}
}
this.bankdata.categories = res.data.categories
this.bankdata.series = res.data.series
this.bankdata.series[0].color = "#FA4E4E"
this.bankdata.series[1].color = "#4E66F3"
this.bankdata.series[1].format = 'seriesFormat'
this.bankSale.curMonthtotalCount =
res.data.bankSales.curMonthtotalCount;
this.bankSale.memeberCount =
res.data.bankSales.memeberCount,
this.bankSale.orgCount = res.data.bankSales.orgCount
this.salesRate = res.data.salesRate
})
.catch((error) => {
this.handleEndErr();
});后台数据结构封装代码(堆叠柱状图)
Map<String, Object> map = new HashMap<String, Object>();
//学典销量
BankSaleOrderCountDto bankSales = baseMapper.getBankSales(saleId);
Double salesRate = (Double.parseDouble(bankSales.getCurMonthtotalCount().toString())- Double.parseDouble(bankSales.getLastMonthTotalCount().toString()))
/Double.parseDouble(bankSales.getLastMonthTotalCount().toString())*100;
if(Double.isNaN(salesRate) || Double.isInfinite(salesRate)){
salesRate = 0.0d;
}
map.put("bankSales",bankSales);
map.put("salesRate",salesRate);
//获取柱状图纵坐标数据
List<Map<String,Object>> series=new ArrayList<Map<String,Object>>();
//堆叠柱状图会员销量
List<BankSaleOrderCountDto> memberSales = baseMapper.getMemberSales(saleId,days);
//堆叠柱状图机构销量
List<BankSaleOrderCountDto> orgSales = baseMapper.getOrgSales(saleId,days);
Map<String,Object> memberMap = new HashMap<String,Object>();
Map<String,Object> orgMap = new HashMap<String,Object>();
memberMap.put("name","学员购买数量");
orgMap.put("name","机构购买数量");
List<Integer> memberList = new ArrayList<Integer>();
List<Integer> orgList = new ArrayList<Integer>();
//获取横坐标
List<Date> categories = baseMapper.getDate(days);
if(categories!=null && categories.size() > 0){
if(memberSales!=null && memberSales.size() > 0){
for (int i = 0; i < categories.size(); i++) {
for (int j = 0; j < memberSales.size(); j++) {
if(categories.get(i).equals(memberSales.get(j).getCreateDate())){
memberList.add(memberSales.get(j).getMemberCount());
}else{
memberList.add(0);
}
}
}
}else{
for (int i = 0; i < categories.size(); i++) {
memberList.add(0);
}
}
if(orgSales!=null && orgSales.size() >0){
for (int i = 0; i < categories.size(); i++) {
for (int j = 0; j < orgSales.size(); j++) {
if(categories.get(i).equals(orgSales.get(j).getCreateDate())){
orgList.add(orgSales.get(j).getOrgCount());
}else{
orgList.add(0);
}
}
}
}else{
for (int i = 0; i < categories.size(); i++) {
orgList.add(0);
}
}
}
memberMap.put("data",memberList);
series.add(memberMap);
orgMap.put("data",orgList);
series.add(orgMap);
map.put("categories",categories);
map.put("series",series);
return map;使用堆叠柱状图注意事项:series中的每一组data数据值都不能为空,没有数据补0,否则会报错
圆环图数据结构封装
public Map<String, Object> pieMap(String saleId) {
Map<String, Object> pieMap = new HashMap<String, Object>();
List<Map<String,Object>> series=new ArrayList< Map<String,Object>>();
Map<String, Object> pieMap1 = new HashMap<String, Object>();
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
List<Map<String,Object>> data1 = new ArrayList<Map<String,Object>>();
//查询累计营业额
BankSaleOrderCountDto salesMoney = baseMapper.getTotalMoney(saleId);
//查询月退款数据
BankSaleOrderCountDto refundCount = baseMapper.getRefundSales(saleId);
Map<String,Object> memberMap = new HashMap<String,Object>();
Map<String,Object> orgMap = new HashMap<String,Object>();
memberMap.put("name","学员退款数量");
memberMap.put("value",refundCount.getMemberRefundSales());
orgMap.put("name","机构退款数量");
orgMap.put("value",refundCount.getOrgRefundSales());
pieMap.put("salesMoney",salesMoney);
data.add(memberMap);
data.add(orgMap);
pieMap1.put("data",data);
series.add(pieMap1);
pieMap.put("series",series);
pieMap.put("totalRefundCount",refundCount.getOrgRefundSales()+refundCount.getMemberRefundSales());
return pieMap;
}版权声明:本文为qq_35867245原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。