赞
踩
npm install echarts
配置参考echarts官网
- <template>
- <view class="ech">
- <l-echart ref="chartdom"></l-echart>
- </view>
- </template>
- <style lang="scss">
- //设置大小
- .ech {
- width: 116rpx;
- height: 86rpx;
- }
- </style>
js
- import * as echarts from 'echarts'
- import {
- ref,
- reactive,
- toRefs,
- onMounted
- } from 'vue'
- import {
- onReady,
- onLoad,
- onShow,
- onHide
- } from '@dcloudio/uni-app'
- let optionEch = reactive({
- data: {
- animation: true,//折线图动画
- toolbox: {
- show: true,
- feature: {
- // dataZoom: {
- // yAxisIndex: 'none'
- // },
- // dataView: { readOnly: false },
- // magicType: { type: ['line', 'bar'] },
- restore: {},
- // saveAsImage: {}//下载我没整好
- }
- },
- title: {
- show: true, //false
- text: "累计收益走势图", //主标题文本
- textStyle: {
- fontSize: 12,
- }
- },
- tooltip: {
- show: true,
- trigger: 'axis',
- backgroundColor: "rgba(0,0,0,0.4)",
- textStyle: {
- color: "#fff",
- fontSize: "12",
- },
- },
- legend: {
- data: ['单位净值', '累计净值']
- },
- grid: {
- left: 10,
- right: 10,
- bottom: 55,
- top: 40,
- containLabel: true
- },
- xAxis: [{
- show: true,
- type: 'category',
- boundaryGap: false,
- data: [1, 2, 3],
- axisLabel: {
- rotate: 50
- }
- }],
- yAxis: [{
- show: true,
- axisLine: {
- show: true
- },
- axisTick: {
- show: true
- },
- type: 'value',
- axisLabel: {
- formatter: function(value, index) {
- return value.toFixed(3);
- }
- },
- min: function(value) {
- return value.min * 0.999;
- },
- max: function(value) {
- return value.max * 1.002;
- },
- scale: true, //自适应
- }],
- dataZoom: [{
- type: "slider",
- xAxisIndex: 0,
- filterMode: "none"
- },
- {
- type: "inside",
- xAxisIndex: 0,
- filterMode: "none"
- }
- ],
- series: [{
- name: '单位净值',
- type: 'line',
- smooth: false,
- colorBy: "series",
- data: [4, 5, 6],
- color: '#00aaff', //改变折线点的颜色
- lineStyle: {
- color: '#00aaff' //改变折线颜色
- },
- },
- {
- name: '累计净值',
- type: 'line',
- smooth: false,
- colorBy: "series",
- data: [7, 8, 9],
- color: '#c20000', //改变折线点的颜色
- lineStyle: {
- color: '#c20000' //改变折线颜色
- }
- },
- ]
- }
- })
- let chartdom = ref(null)
- onMounted(() => {
- // 把 echarts 传入
- chartdom.value.init(echarts, chartdom => {//初始化调用函数,第一个参数是传入echarts,第二个参数是回调函数,回调函数的参数是 chart 实例
- chartdom.setOption(optionEch.data);
- })
- })
- onMounted(() => {
- // 把 echarts 传入
- // chartdom.value.init(echarts, chartdom => {
- // chartdom.setOption(optionEch.data);
- // })
- setTimeout(() => {
- fundValuePost();
- }, 200)
- })
- const fundValuePost = () => {
- //将图表配置对象复制一份
- let chartres = JSON.parse(JSON.stringify(optionEch.data))
- chartres.xAxis[0].data = []
- chartres.series.forEach((item) => {
- item.data = []
- })
- //调用接口
- fundValueApi(fundValuePage).then((res) => {
- res.data.data.forEach((item) => {
- chartres.xAxis[0].data.push(item.fundValueDate)
- chartres.series[0].data.push(item.unitFundValue)
- chartres.series[1].data.push(item.accrueFundValue)
- })
- optionEch.data = JSON.parse(JSON.stringify(chartres));
- // 使用请求到的数据,初始化图表
- chartdom.value.init(echarts, chartdom => {
- chartdom.setOption(optionEch.data);
- })
- }).catch((err) => {
- console.log(err, '收益曲线err')
- });
- }
- <template>
- <view class="ech">
- <l-echart ref="chartdom"></l-echart>
- </view>
- <view class="ech">
- <l-echart ref="chartdom"></l-echart>
- </view>
- </template>
js
- let chartdom = ref(null)//页面有多个chartdom时,chartdom为数组
- onMounted(async () => {
- let productGe = await productGetListFun()//获取产品列表productGetListDatas.data
- setTimeout(() => {
- fundValuePost();
- }, 100)
- })
- let fundValuePage = reactive({
- month: "1",
- orderBy: "asc",
- productId: null
- })
- const fundValuePost = () => {
- let chartArr = []
- productGetListDatas.data.forEach((items, indexs) => {//productGetListDatas.data为提前请求拿到的产品列表,然后拿id去请求折线图的数据
- let chartres = JSON.parse(JSON.stringify(optionEch.data))
- let indexx = indexs
- // console.log('chartres',chartres )
- chartres.xAxis[0].data = []
- chartres.series.forEach((item) => {
- item.data = []
- })//数据全部清空
- fundValuePage.productId = items.productId//拿id去请求折线图的数据
- fundValueApi(fundValuePage).then((res) => {
- // console.log(indexx, '收益曲线res', res)
- res.data.data.forEach((item) => {
- chartres.xAxis[0].data.push(item.fundValueDate)
- chartres.series[0].data.push(item.accrueFundValue)
- })
- let objArr = {
- ind: indexx,//对应产品数组的index
- chartresData: chartres
- }
- chartArr.push(objArr)//把拿到的所有的折线图数据,全部放入chartArr数组
- if (chartArr.length == productGetListDatas.data.length) {
- chartArr.forEach((item, index) => {//所有的产品数据全部拿到后,用图表数据的indexx对应产品数组的index,进行遍历,初始化对应图表
- chartdom.value[item.ind].init(echarts, chartdom => {
- chartdom.setOption(item.chartresData);
- })
- })
- }
- }).catch((err) => {
- console.log(err, '收益曲线err')
- });
- })
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。