uniapp使用ucharts制作饼图

1.在uniapp找到秋云ucharts 下载导入项目

2.可以在uCharts官网 - 秋云uCharts跨平台图表库查看示例

3.查看文档找到自己想做成的效果

下面是我的用法:

<template>
	<view class="report-form">
		<view class="chart-box" :style="{'height': chartDataRadarLength / 3 * 140 + 'rpx'}">
			<view
				v-if="!(chartDataRadar&&chartDataRadar.series&&chartDataRadar.series.length>0&&chartDataRadar.series[0].data&&chartDataRadar.series[0].data.length>0)"
				class="no-data">
				<view class="no-data-text">
					暂无数据
				</view>
			</view>
			<qiun-data-charts v-if="!tempPwdLogin&&(chartDataRadar&&chartDataRadar.series&&chartDataRadar.series.length>0&&chartDataRadar.series[0].data&&chartDataRadar.series[0].data.length>0)" type="ring" :canvas2d="true" canvasId="radar" :opts="optsRadar"
				:chartData="chartDataRadar" />
		</view>
	</view>
</template>
<script>
    export default {
		data() {
			return {
				tabIndex: 0,
				beginTime: '',
				endTime: '',
				//您可以通过修改 config-ucharts.js 文件中下标为 ['column'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。

				chartDataRadar: {},
				optsRadar: {
					rotate: false,
					rotateLock: false,
					color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
						"#ea7ccc"
					],
					padding: [5, 5, 5, 5],
					dataLabel: true,
					legend: {
						show: true,
						position: "bottom",
						lineHeight: uni.upx2px(50)
					},
					title: {
						show: false,
						name: "",
						fontSize: uni.upx2px(42),
						color: "#000"
					},
					subtitle: {
						show: false,
						name: "",
						fontSize: uni.upx2px(28),
						color: "#666"
					},
					extra: {
						ring: {
							ringWidth: uni.upx2px(60),
							activeOpacity: 0.5,
							activeRadius: uni.upx2px(10),
							offsetAngle: 0,
							labelWidth: uni.upx2px(15),
							border: false,
							borderWidth: uni.upx2px(3),
							borderColor: "#FFFFFF"
						}
					}
				},
				chartDataRadarLength: 0,
				tempPwdLogin: false,
			};
		},
		props: {
			detailForm: {
				type: Object
			},
			type:{
				type:Number,
				default:0
			},
			optionsData: {
				type: Array,
				default () {
					return [{
							name: '剩余还款',
							value: 0
						},
						{
							name: '审核中',
							value: 0
						},
						{
							name: '已还款',
							value: 0
						},
					]
				}
			}

		},
		onReady() {
			this.init()
		},
		onShow() {
			if (uni.getStorageSync("tempPwdLogin")) {
				this.tempPwdLogin = true
			}
			this.init()
		},
		watch: {
			detailForm(val) {
				this.init()
			}
		},
		methods: {
			init() {
				this.getRadarData()
			},
			
			getRadarData() { 
				if(this.type==2){
					this.optionsData.forEach(item=>{
						if(item.name=='剩余还款'){
							item.value=Number(this.detailForm.residueAmount) 
						}else if(item.name == '审核中'){
							item.value=Number(this.detailForm.repaymentUnderReview) 
						}else if(item.name == '已还款'){
							item.value=Number(this.detailForm.amountRepaid)
						}
					})
				}else if(this.type == 1){
					this.optionsData.forEach(item=>{
						if(item.name=='剩余还款'){
							item.value=Number(this.detailForm.residueAmount) 
						}else if(item.name == '审核中'){
							item.value=Number(this.detailForm.applyAmount) 
						}else if(item.name == '已还款'){
							item.value=Number(this.detailForm.repaid)
						}
					})
				}
				
				let info = {
					series: [{
						data: this.optionsData
					}],
				}
				this.chartDataRadar = JSON.parse(JSON.stringify(info));
				console.log(this.chartDataRadar,'this.chartDataRadar');
			},
			formatDate(date, fmt = 'yyyy-MM-dd') {
				if (/(y+)/.test(fmt)) {
					// 把数字变成字符串
					let dateY = date.getFullYear() + "";
					//RegExp.$1 在判断中出现过,且是括号括起来的,所以 RegExp.$1 就是 "yyyy"
					fmt = fmt.replace(RegExp.$1, dateY.substr(4 - RegExp.$1.length));
				}

				//获取其他
				let o = {
					"M+": date.getMonth() + 1,
					"d+": date.getDate(),
					"h+": date.getHours(),
					"m+": date.getMinutes(),
					"s+": date.getSeconds(),
				};
				for (const k in o) {
					if (new RegExp(`(${k})`).test(fmt)) {
						let str = o[k] + "";
						fmt = fmt.replace(
							RegExp.$1,
							RegExp.$1.length == 1 ? str : this.padLeftZero(str)
						);
					}
				}
				return fmt;
			},
			padLeftZero(str) {
				return ("00" + str).substr(str.length);
			}
		}
	};
</script>

效果如图:

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值