|
- // pages/statistics/statistics.js
- import * as UTIL from '../../utils/util.js';
- import * as API from '../../utils/API.js';
- import * as echarts from '../../ec-canvas/echarts';
- let EVN_CONFIG = require('../../env/env');
-
- const app = getApp();
-
- function setOption(chart, rowRows1, rowRows2) {
- var option = {
- title: [
- { // 第一个圆环标题
- text: '收入', // 主标题
- textStyle: { // 主标题样式
- color: '#5CAE77',
- fontWeight: '400',
- fontSize: 14
- },
- left: '27%', // 定位到适合的位置
- top: '45%', // 定位到适合的位置
- textAlign: 'center' // 主、副标题水平居中显示
- },
- {// 第二个圆环标题
- text: '支出',
- textStyle: {
- color: '#E90000',
- fontWeight: '400',
- fontSize: 14
- },
- left: '76%',
- top: '45%',
- textAlign: 'center'
- }
- ],
- tooltip: {
- trigger: 'item'
- },
- series: [
- { // 第一个圆环
- type: 'pie',
- radius: ['30%', '50%'],
- center: ['28%', '50%'],
- avoidLabelOverlap: false,
- label: {
- show: true,
- position: 'outside', // 数据会显示在图形上,'center':会显示在圆环的内部
- color: '#333',
- },
- labelLine:{
- length:'5',
- length2:'5',
- },
- data: rowRows1,
- },
- { // 第二个圆环
- type: 'pie',
- radius: ['30%', '50%'],
- center: ['77%', '50%'],
- avoidLabelOverlap: false,
- itemStyle: {
- },
- label: {
- show: true,
- position: 'outside', // 数据会显示在图形上,'center':会显示在圆环的内部
- color: '#333',
- },
- labelLine:{
- length:'5',
- length2:'5',
- },
- data: rowRows2,
- }
- ]
- };
-
- chart.setOption(option);
- }
- function initChart3(chart, rowRows1) {
- var option = {
- tooltip: {
- trigger: 'item'
- },
- series: [
- { // 第一个圆环
- type: 'pie',
- radius: ['50%', '70%'],
- center: ['50%', '50%'],
- avoidLabelOverlap: false,
- label: {
- show: true,
- color: '#333',
- },
- data: rowRows1
- }
- ]
- };
- chart.setOption(option);
- }
- function initChart4(chart, rowRows2) {
- var option = {
- tooltip: {
- trigger: 'item'
- },
- series: [
- { // 第二个圆环
- type: 'pie',
- radius: ['50%', '70%'],
- center: ['50%', '50%'],
- avoidLabelOverlap: false,
- label: {
- show: true,
- color: '#333',
- },
- data:rowRows2,
- }
- ]
- };
- chart.setOption(option);
- }
- function initChartLine(chart,lineRowsSR,lineRowsZC) {
- console.log(lineRowsSR);
- var option = {
- legend: {
- data: ['收入', '支出'],
- top: 0,
- left: 'center',
- z: 100
- },
- grid: {
- left: '0',
- top:'20%',
- right: '3%',
- bottom: '3%',
- containLabel: true
- },
- tooltip: {
- show: true,
- trigger: 'axis'
- },
- xAxis: {
- type: 'category',
- boundaryGap: false,
- data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
- // show: false
- },
- yAxis: {
- x: 'center',
- type: 'value',
- splitLine: {
- lineStyle: {
- type: 'dashed'
- }
- }
- // show: false
- },
- series: [{
- name: '收入',
- type: 'line',
- smooth: true,
- data: lineRowsSR
- }, {
- name: '支出',
- type: 'line',
- smooth: true,
- data: lineRowsZC
- }]
- };
-
- chart.setOption(option);
- }
-
- Page({
-
- /**
- * 页面的初始数据
- */
- data: {
- isIPX: app.globalData.isIPX,
- currentDate: new Date().getTime(),
- minDate: new Date().getTime(),
- ec: {
- lazyLoad: true,
- },
- ec2: {
- lazyLoad: true
- },
- ec3: {
- lazyLoad: true
- },
- ec4: {
- lazyLoad: true
- },
- showList:false,
- showZC:false,
- showSR:false,
- date:'2022',
- topDetail:[],
- },
- showList(){
- this.setData({
- showList:!this.data.showList,
- showSR:true
- })
- if (this.data.showList) {
- this.oneComponent2 = this.selectComponent('#mychart-one2');
- this.init_one2(this.data.rowRows1)
- }
- },
- bindDateChange(e){
- this.setData({
- showList:false,
- showSR:false,
- showZC:false,
- })
- this.setData({
- date: e.detail.value
- })
- this.onLoad();
- },
- CloseList(){
- this.setData({
- showList:!this.data.showList,
- showSR:false,
- showZC:false,
- })
- this.oneComponent = this.selectComponent('#mychart-one');
- this.init_one(this.data.rowRows1,this.data.rowRows2)
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad(options) {
- var that = this;
- that.oneComponent = that.selectComponent('#mychart-one');
- that.oneComponent4 = that.selectComponent('#mychart-one4');
- let sendData = {
- year:that.data.date,
- method:'GET'
- }
- //收入类型字典
- UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'income_type', {method:'GET'}, {
- success: (res) => {
- this.setData({
- incomeTypeOptions:res.data,
- })
- }
- })
- //支出类型字典
- UTIL.httpRequest(API.URL_GET_GETDICTTYPE + 'capital_expenditure_type', {method:'GET'}, {
- success: (res) => {
- this.setData({
- expenditureTypeOptions:res.data,
- })
- }
- })
- wx.showLoading({
- title: '加载中',
- })
-
- setTimeout(function () {
- wx.hideLoading()
- }, 2000)
- setTimeout(function(){
- UTIL.httpRequest(API.URL_GET_GETSTATISTICS, sendData,{
- success: (res) => {
- let lineRowsSR = [];
- let lineRowsZC = [];
- for (let i = 0; i < res.rows.length; i++) {
- const element = res.rows[i];
- lineRowsSR.push(element.jieAmount)
- lineRowsZC.push(element.daiAmount)
- element.daiAmount = Number(element.daiAmount).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { return $1 + ","; }).replace(/\.$/, "");
- element.jieAmount = Number(element.jieAmount).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { return $1 + ","; }).replace(/\.$/, "");
- }
- that.setData({
- list:res.rows,
- })
- that.init_one4(lineRowsSR,lineRowsZC)
- }
- })
- UTIL.httpRequest(API.URL_GET_GETSUMSTATISTICS, sendData,{
- success: (res) => {
- res.data.jieAmount = Number(res.data.jieAmount).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { return $1 + ","; }).replace(/\.$/, "");
- res.data.daiAmount = Number(res.data.daiAmount).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { return $1 + ","; }).replace(/\.$/, "");
- that.setData({
- topDetail:res.data
- })
- }
- })
- UTIL.httpRequest(API.URL_GET_GETSUMGROUPTYPE, sendData,{
- success: (res) => {
- console.log(res);
- let rowRows1 = [];
- let rowRows2 = [];
- res.data[1].forEach(rr=>{
- console.log('aaa');
- rowRows1.push({
- value: rr.percentage,
- name: UTIL.getTransform(rr.incomeType,that.data.incomeTypeOptions).substr(0,2)+'\n'+rr.percentage+'%'
- })
- rr.jieAmount = Number(rr.jieAmount).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { return $1 + ","; }).replace(/\.$/, "");
- })
- res.data[2].forEach(rrr=>{
- rowRows2.push({
- value: rrr.percentage,
- name: UTIL.getTransform(rrr.expenditureType,that.data.expenditureTypeOptions).substr(0,2)+'\n'+rrr.percentage+'%'
- })
- rrr.daiAmount = Number(rrr.daiAmount).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, ($0, $1) => { return $1 + ","; }).replace(/\.$/, "");
- })
- that.setData({
- centerRow:res.data,
- rowRows1:rowRows1,
- rowRows2:rowRows2
- })
- that.init_one(rowRows1,rowRows2)
- }
- })
- },2000)
-
- },
- init_one: function (rowRows1,rowRows2) {//饼图汇总
- this.oneComponent.init((canvas, width, height) => {
- const chart = echarts.init(canvas, null, {
- width: width,
- height: height
- });
- setOption(chart, rowRows1 , rowRows2)
- });
- },
- init_one2: function (rowRows1) {//收入饼图
- this.oneComponent2.init((canvas, width, height) => {
- const chart2 = echarts.init(canvas, null, {
- width: width,
- height: height
- });
- initChart3(chart2, rowRows1)
- });
- },
- init_one3: function (rowRows2) {//支出饼图
- this.oneComponent3.init((canvas, width, height) => {
- const chart3 = echarts.init(canvas, null, {
- width: width,
- height: height
- });
- initChart4(chart3, rowRows2)
- });
- },
- init_one4: function (lineRowsSR,lineRowsZC) {//折线图
- this.oneComponent4.init((canvas, width, height) => {
- const chart4 = echarts.init(canvas, null, {
- width: width,
- height: height
- });
- initChartLine(chart4, lineRowsSR,lineRowsZC)
- });
- },
- goSR(){
- this.setData({
- showZC:false,
- showSR:true
- })
- this.oneComponent2 = this.selectComponent('#mychart-one2');
- this.init_one2(this.data.rowRows1)
- },
- goZC(){
- this.setData({
- showZC:true,
- showSR:false
- })
- this.oneComponent3 = this.selectComponent('#mychart-one3');
- this.init_one3(this.data.rowRows2)
- },
- onInput(event) {
- this.setData({
- currentDate: event.detail,
- });
- },
- onTimeShow(e){
- this.setData({
- timeShow:true
- })
- },
- back:function(){
- wx.navigateBack({
- delta: 1
- })
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady() {
-
- },
-
- /**
- * 生命周期函数--监听页面显示
- */
- onShow() {
-
- },
-
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide() {
-
- },
-
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload() {
-
- },
-
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh() {
-
- },
-
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom() {
-
- },
-
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage() {
-
- }
- })
|