上周有一个需要,echarts的水球图要做展现,因为后盾数据有可能值会返回'-' ,所以须要动静展现,首先返回值会有四个,别离示意本周/本月百分率以及本周/本月具体数值所以,产品提了一个需要当后端接口如果返回本周'-'那就展现本周具体数值,本月也是一样的情理
因为对这种水球不太理解,所以当下想了一个办法,再写两个小球,当为-的时候用v-if/v-show来做显示暗藏~然而这种办法管制的太多了,所以有bug!于是乎,我间接将数据格式化
咱们先来看代码:
waterInit(paramUp) { // 回升的水球图 let waterUp = this.$echarts.init( document.querySelector("#water-polo-map-up") ); let optionUp = { series: [ { type: "liquidFill", data: [ { value:paramUp == '-' ? this.txDataCount.txNumByNowWeek:paramUp/100, // 百分比 direction: "left", itemStyle: { normal: { color: "#226BE2" } } } ], // 图像占满整个画布 radius: "99%", backgroundStyle: { borderWidth: 2, borderColor: "#226BE2", color: "#F0F0F0" }, outline: { show: false }, label: { normal:{ formatter:function(param){ let paramVal = String((param.data.value*100)); if(paramVal == paramUp){ // 值统一的话 就阐明须要%号 if((String(paramVal).length > 4)){ return paramVal.slice(0, 4) + '+%'; } else{ return `${paramVal}%`; } }else{ let paramVal = String((param.data.value)); // 值不统一的话 就阐明须要+号 不须要百分号 事务数不须要百分比 if(String(paramVal).length > 4){ return paramVal.slice(0, 4) + '+'; } else{ return `${paramVal}`; } } }, textStyle: { show: true, color: "#294D99", insideColor: "#fff", fontSize: 24, fontWeight: "400", align: "center", baseline: "top", position: "inside" } }, } } ] }; waterUp.setOption(optionUp);
当初来梳理一下代码逻辑(本代码示意本周的水球图):
1️ 首先调用waterInit
办法 参数为paramUp 示意本周返回的百分比 后端接口可能返回是百分比也可能返回 '-'
2️ 咱们在data的value属性中:来用三元表达式判断如果为'-'的话就显示具体值 否则就显示失常的百分比(至于为什么要/100 是因为水球图主动默认会转换成百分比)因为之前还有别的需要 所以我这边须要多解决
3️ 在formatter接管参数 获取到data的值 就是水波图显示的失常数值
4️ 咱们还有个需要就是只能显示4位数 多余的话用前面拼接+号 所以我这边会判断初始值(paramUp与实在渲染在echatrs图里的value值)通过比照
5️ 通过比照如果初始值与实在渲染的value值统一 那阐明咱们能够间接用%来示意 否则后端接口返回的值为 '-' 咱们再进行预处理