const _Http = getApp().globalData.http,
    currency = require("../../utils/currency"),
    CNY = (value, symbol = "￥", precision = 2) => currency(value, {
        symbol,
        precision
    }).format();

import * as echarts from '../ec-canvas/echarts';
Component({
    properties: {
        mode: {
            type: String
        }
    },
    options: {
        addGlobalClass: true
    },
    lifetimes: {
        attached: function () {
            getApp().globalData.Language.getLanguagePackage(this)
            this.setData({
                "content.dataid": wx.getStorageSync('userMsg').userid,
                "content.username": wx.getStorageSync('userMsg').name,
            })
        }
    },
    data: {
        year: new Date().getFullYear().toString(),
        "content": {
            year: new Date().getFullYear().toString(),
            where: {}
        },
        isbooked: 0,
    },
    methods: {
        async getList(init = false) {
            let content = this.data.content
            const {
                dataid,
                type,
                username,
                isleave
            } = getCurrentPages()[getCurrentPages().length - 1].data;
            if (content.dataid != dataid || content.type != type || isleave != isleave) init = true
            content.dataid = dataid;
            content.type = type;
            content.username = username;
            content.where.isleave = isleave;
            if (this.properties.mode == '出货趋势分析') content.isbooked = this.data.isbooked;
            let ids = {
                '订单趋势分析': 20231012094804,
                '出货趋势分析': 20231012152004,
                '开票金额趋势分析': 20231016095304
            }
            _Http.basic({
                "id": ids[this.properties.mode],
                content
            }).then(res => {
                console.log(this.properties.mode, res)
                if (res.code != '1') return wx.showToast({
                    title: res.data,
                    icon: "none"
                })
                this.initChart(res.data)
            })
        },
        onCheckboxChange(e) {
            this.setData({
                isbooked: this.data.isbooked == 0 ? 1 : 0
            })
            this.getList(true)
        },
        initChart(data) {
            const dividend = wx.getStorageSync('languagecode') == 'ZH' ? 10000 : 1000,
                colors = ['#6CD2A1', '#5F9DFC', '#ECB937', '#F69240'],
                getMapText = getApp().globalData.Language.getMapText;
            let legend = [`${getMapText('去年同期金额')}(${getMapText('万元')})`, `${getMapText('本期金额')}(${getMapText('万元')})`, `${getMapText('同比增长率')}`],
                series = [{
                        name: `${getMapText('去年同期金额')}(${getMapText('万元')})`,
                        type: 'bar',
                        data: data.map(v => (v.oldamount / dividend).toFixed(2)),
                        smooth: true
                    },
                    {
                        name: `${getMapText('本期金额')}(${getMapText('万元')})`,
                        type: 'bar',
                        yAxisIndex: 1,
                        data: data.map(v => (v.amount / dividend).toFixed(2)),
                        smooth: true
                    },
                    {
                        name: getMapText('同比增长率'),
                        type: 'line',
                        yAxisIndex: 2,
                        data: data.map(v => (v.tbzzl * 100).toFixed(2)),
                        smooth: true
                    }
                ]

            if (this.properties.mode == '出货趋势分析') {
                legend.push(getMapText('准交率'))
                series.push({
                    name: getMapText('准交率'),
                    type: 'line',
                    yAxisIndex: 2,
                    data: data.map(v => (v.zjl * 100).toFixed(2)),
                    smooth: true
                })

            }
            const option = {
                color: colors,
                tooltip: {
                    trigger: 'axis',
                    confine: true, // Ensure tooltip stays within the chart area
                    formatter: function (params) {
                        let tooltipText = '';
                        params.forEach((item, index) => {
                            tooltipText += `${index==0?item.axisValue+'\n':''}${item.marker}${item.seriesName}: ${item.value}${item.seriesName == getMapText('同比增长率')||item.seriesName == getMapText('准交率') ? '%' : ''}\n`;
                        });
                        return tooltipText;
                    },
                    textStyle: {
                        fontSize: 10, // Reduced font size
                        lineHeight: 14 // Adjusted line height for smaller tooltip height
                    }
                },
                legend: {
                    data: legend
                },
                xAxis: [{
                    type: 'category',
                    axisTick: {
                        alignWithLabel: true
                    },
                    data: data.map(v => v.date),
                    axisLabel: {
                        interval: 0,
                        rotate: 45
                    }
                }],
                yAxis: [{
                        type: 'value',
                        name: '',
                        position: 'right',
                        offset: 80,
                        alignTicks: true,
                        axisLine: {
                            show: true,
                        },
                        axisLabel: {
                            formatter: '{value}'
                        }
                    },
                    {
                        type: 'value',
                        name: '',
                        position: 'left',
                        alignTicks: true,
                        axisLine: {
                            show: false,
                        },
                        axisLabel: {
                            formatter: '{value}',
                            rotate: 45
                        }
                    },
                    {
                        type: 'value',
                        name: '',
                        position: 'right',
                        alignTicks: true,
                        offset: 80,
                        axisLine: {
                            show: false,
                            lineStyle: {
                                color: colors[1]
                            }
                        },
                        axisLabel: {
                            formatter: '{value}'
                        }
                    },

                ],
                series
            };
            this.chartComponent = this.selectComponent('#mychart');
            this.chartComponent.init((canvas, width, height, dpr) => {
                const chart = echarts.init(canvas, null, {
                    width,
                    height,
                    devicePixelRatio: dpr
                });
                chart.setOption(option);
                return chart;
            });
        },
        changeDate({
            detail
        }) {
            this.setData({
                "content.year": detail
            })
            this.getList(true)
        },
    }
})