import { createStore } from 'vuex'

export default createStore({
    state: {
        assToken: '',
        query: null,
        siteId: 1, //公共api请求参数->siteId
        Time_Data: [], //公共api请求参数->Time_Data
        timearr: [], //公共处理开始时间和结束时间中的时间段天数 值存储
        itemStyle: [{
                normal: {
                    borderColor: "rgba(0,244,253,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(0,244,253,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(253,143,0,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(253,143,0,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(0,255,18,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(0,255,18,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(0,255,230,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(0,255,230,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(142,51,255,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(142,51,255,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(77,200,120,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(77,200,120,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(255,47,47,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(255,47,47,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(70,100,255,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(70,100,255,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(255,143,53,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(255,143,53,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(150,150,50,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(150,150,50,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(70,192,255,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(70,192,255,1)",
                    },
                },
            },
            {
                normal: {
                    borderColor: "rgba(20,99,100,1)",
                    borderWidth: 2,
                    color: "rgba(6, 68, 83, 1)",
                    lineStyle: {
                        width: 2, //折线宽度
                        color: "rgba(20,99,100,1)",
                    },
                },
            },
        ], //公共echarts图表样式
        Time_All: [], //公共时间 返回数组 -> 年月日时分秒 时间戳


        queryType: '', //设备监控--->数据报表api请求参数->queryType
        run_off_Status: null, //设备监控--->运行状态统计->echarts->OFF次数分布和运行状态曲线图表 api信息存储
        HistoricalCurve: null, //设备监控--->历史趋势->echarts->曲线图表 api信息存储
        se_defaultTime: [], //设备监控--->历史趋势时间选择器v-model
        th_defaultTime: [], //设备监控--->数据报表时间选择器v-model
        fh_defaultTime: [], //设备监控--->运行状态统计时间选择器v-model
        table_list: [{
                name: "电流",
                list: [
                    { name: "A相电流", value: "Ia" },
                    { name: "B相电流", value: "Ib" },
                    { name: "C相电流", value: "Ic" },
                ],
            },
            {
                name: "功率",
                list: [
                    { name: "A相有功功率 kW", value: "Pa" },
                    { name: "A相无功功率 kVar", value: "Qa" },
                    { name: "B相有功功率 kW", value: "Pb" },
                    { name: "B相无功功率 kVar", value: "Qb" },
                    { name: "C相有功功率 kW", value: "Pc" },
                    { name: "C相无功功率 kVar", value: "Qc" },
                    { name: "总有功功率 kW", value: "P" },
                    { name: "总无功功率 kW", value: "Q" },
                    { name: "实时需量 kW", value: "Demand" },
                ],
            },
            {
                name: "电度",
                list: [
                    { name: "正有功电度 kWh", value: "Epp" },
                    { name: "负有功电度 kWh", value: "Epn" },
                    { name: "正无功电度 kvarh", value: "Eqp" },
                    { name: "负无功电度 kvarh", value: "Eqn" },
                ],
            },
            {
                name: "电压",
                list: [
                    { name: "A相电压 kV", value: "Ua" },
                    { name: "B相电压 kV", value: "Ub" },
                    { name: "C相电压 kV", value: "Uc" },
                    { name: "回路电压 V", value: "Ul" },
                    { name: "AB线电压 V", value: "Uab" },
                    { name: "BC线电压 V", value: "Ubc" },
                    { name: "CA线电压 V", value: "Uca" },
                ],
            },
            {
                name: "温度 ℃",
                list: [
                    { name: "外接温度1", value: "T1" },
                    { name: "外接温度2", value: "T2" },
                    { name: "外接温度3", value: "T3" },
                    { name: "外接温度4", value: "T4" },
                    { name: "环境温度", value: "DeviceTemp" },
                ],
            },
            {
                name: "频率 Hz",
                list: [{ name: "频率", value: "F" }],
            },
            {
                name: "功率因数",
                list: [
                    { name: "A相功率因数", value: "COSa" },
                    { name: "B相功率因数", value: "COSb" },
                    { name: "C相功率因数", value: "COSc" },
                    { name: "功率因数", value: "COS" },
                ],
            },
            {
                name: "谐波电流有效值 A",
                list: [
                    { name: "Ia总谐波电流", value: "IHa" },
                    { name: "Ib总谐波电流", value: "IHa" },
                    { name: "Ic总谐波电流", value: "IHc" },
                ],
            },
            {
                name: "通讯参数",
                list: [{ name: "设备信号强度", value: "SignalIntensity" }],
            },
            {
                name: "电压突变 次",
                list: [
                    { name: "电压暂升次数", value: "Upt" },
                    { name: "电压暂降次数", value: "Udt" },
                    { name: "电压中断次数", value: "Ust" },
                ],
            },
        ], //设备监控--->数据报表->默认tabs数据
        se_tabs: [
            { label: '电流', name: "I" },
            { label: '功率', name: "P" },
            { label: '电度', name: "KWh" },
            { label: '电压', name: "V" },
            { label: '温度', name: "C" },
            { label: '频率', name: "HZ" },
            { label: '功率因数', name: "PS" },
            { label: '谐波电流有效值', name: "RMS" },
            { label: '通讯参数', name: "DDB" },
            { label: '电压突变', name: "VT" },
        ], //设备监控--->历史趋势->默认tabs数据

        trendIco: null, //事件告警--->事件告警统计->echarts->柱状图 api信息存储
        trendIco_state: null, //事件告警--->事件告警统计->select状态api信息存储
        trendIco_table: [
            { label: '发生时间', porp: 'soeTime' },
            { label: '告警描述', porp: 'measName' },
            { label: '设备', porp: 'deviceCode' },
            { label: '告警类型', porp: 'alarmName' },
            { label: '状态', porp: 'handlingStatus' },
            { label: '处理人', porp: 'handler' },
            { label: '处理时间', porp: 'handlingTime' },
        ], //事件告警--->事件告警统计->表格默认值存储


        trendIcoCount: null,
    },
    mutations: {
        /**
         * @公共api请求参数siteId
         * @param {*}} state 
         * @param {*} val 
         */
        increment(state, val) {
            state.siteId = val
        },
        /**
         * @数据报表 —> 多选按钮数据处理
         * @param {*} state 
         * @param {*} checked_list 
         */
        checkedCities_all(state, checked_list) {
            state.queryType = ''
            var checked = ''
            for (let i in checked_list) {
                checked_list[i] === "电流" ?
                    checked = "I" :
                    checked_list[i] === "功率" ?
                    checked = "P" :
                    checked_list[i] === "电度" ?
                    checked = "KWh" :
                    checked_list[i] === "电压" ?
                    checked = "V" :
                    checked_list[i] === "温度" ?
                    checked = "C" :
                    checked_list[i] === "频率" ?
                    checked = "HZ" :
                    checked_list[i] === "功率因数" ?
                    checked = "PS" :
                    checked_list[i] === "谐波电流有效值" ?
                    checked = "RMS" :
                    checked_list[i] === "通讯参数" ?
                    checked = "DDB" :
                    checked_list[i] === "电压突变" ?
                    checked = "VT" :
                    ""
                state.queryType += checked_list.length > 1 ? checked + "," : checked;
            }
            state.queryType = checked_list.length > 1 ? state.queryType.slice(0, state.queryType.length - 1) : state.queryType
        },
        /**
         * @历史趋势 -> echarts ->曲线图表 api信息存储
         */
        HistoricalCurve(state, data) {
            state.HistoricalCurve = data
        },
        /**
         * @公共处理时区方法
         */
        TimeAll_function(state, time) {
            state.Time_Data = []
            for (let i in time) {
                var Y = time[i].getFullYear() < 10 ? '0' + time[i].getFullYear() : time[i].getFullYear()
                var M = (time[i].getMonth() + 1) < 10 ? '0' + (time[i].getMonth() + 1) : (time[i].getMonth() + 1)
                var D = time[i].getDate() < 10 ? '0' + time[i].getDate() : time[i].getDate()
                var HH = time[i].getHours() < 10 ? '0' + time[i].getHours() : time[i].getHours()
                var MM = time[i].getMinutes() < 10 ? '0' + time[i].getMinutes() : time[i].getMinutes()
                var SS = time[i].getSeconds() < 10 ? '0' + time[i].getSeconds() : time[i].getSeconds()
                    // console.log(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
                state.Time_Data.push(Y + '-' + M + '-' + D + ' ' + HH + ':' + MM + ':' + SS)
            }
        },
        /**
         * @公共处理开始时间和结束时间中的时间段天数
         * @param {*} state 
         * @param {*} begin 开始时间和结束时间
         */
        getAll(state, begin) {
            let arr1 = begin[0].split("-");
            let arr2 = begin[1].split("-");
            let arr1_ = new Date();
            let arrTime = [];
            arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2]);
            let arr2_ = new Date();
            arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2]);
            let unixDb = arr1_.getTime();
            let unixDe = arr2_.getTime();
            for (let k = unixDb; k <= unixDe;) {
                arrTime.push(datetimeparse(k, "YY-MM-DD"));
                k = k + 24 * 60 * 60 * 1000;
            }
            state.timearr = arrTime
                // return arrTime;
                // 时间格式处理
            function datetimeparse(timestamp, format, prefix) {
                if (typeof timestamp == "string") {
                    timestamp = Number(timestamp);
                }
                //转换时区
                let currentZoneTime = new Date(timestamp);
                let currentTimestamp = currentZoneTime.getTime();
                let offsetZone = currentZoneTime.getTimezoneOffset() / 60; //如果offsetZone>0是西区，西区晚
                let offset = null;
                //客户端时间与服务器时间保持一致，固定北京时间东八区。
                offset = offsetZone + 8;
                currentTimestamp = currentTimestamp + offset * 3600 * 1000;

                let newtimestamp = null;
                if (currentTimestamp) {
                    if (currentTimestamp.toString().length === 13) {
                        newtimestamp = currentTimestamp.toString();
                    } else if (currentTimestamp.toString().length === 10) {
                        newtimestamp = currentTimestamp + "000";
                    } else {
                        newtimestamp = null;
                    }
                } else {
                    newtimestamp = null;
                }
                let dateobj = newtimestamp ?
                    new Date(parseInt(newtimestamp)) :
                    new Date();
                let YYYY = dateobj.getFullYear();
                let MM =
                    dateobj.getMonth() > 8 ?
                    dateobj.getMonth() + 1 :
                    "0" + (dateobj.getMonth() + 1);
                let DD =
                    dateobj.getDate() > 9 ? dateobj.getDate() : "0" + dateobj.getDate();
                let HH =
                    dateobj.getHours() > 9 ? dateobj.getHours() : "0" + dateobj.getHours();
                let mm =
                    dateobj.getMinutes() > 9 ?
                    dateobj.getMinutes() :
                    "0" + dateobj.getMinutes();
                let ss =
                    dateobj.getSeconds() > 9 ?
                    dateobj.getSeconds() :
                    "0" + dateobj.getSeconds();
                let output = "";
                let separator = "/";
                if (format) {
                    separator = format.match(/-/) ? "-" : "/";
                    output += format.match(/yy/i) ? YYYY : "";
                    output += format.match(/MM/) ?
                        (output.length ? separator : "") + MM :
                        "";
                    output += format.match(/dd/i) ?
                        (output.length ? separator : "") + DD :
                        "";
                    output += format.match(/hh/i) ? (output.length ? " " : "") + HH : "";
                    output += format.match(/mm/) ? (output.length ? ":" : "") + mm : "";
                    output += format.match(/ss/i) ? (output.length ? ":" : "") + ss : "";
                } else {
                    output += YYYY + separator + MM + separator + DD;
                }
                output = prefix ? prefix + output : output;
                return newtimestamp ? output : "";
            }
        },
        /**
         * @公共echarts图表下载
         */
        getConnectedDataURL(state, refs) {
            state || refs
            var url = refs[0].getConnectedDataURL({
                pixelRatio: 15,
                backgroundColor: "black",
                excludeComponents: ["toolbox"],
                type: "png",
            });
            var $a = document.createElement("a");
            var type = "png";
            //图片名称
            $a.download = refs[1] + "." + type;
            $a.target = "_blank";
            $a.href = url;
            if (typeof MouseEvent === "function") {
                var evt = new MouseEvent("click", {
                    view: window,
                    bubbles: true,
                    cancelable: false,
                });
                $a.dispatchEvent(evt);
            }
        },
        /**
         * @公共时间 返回数组 -> 年月日时分秒 时间戳
         */
        getTimeAll(state) {
            const time = new Date();
            const Y = time.getFullYear(); //年
            const M = time.getMonth(); //月
            const D = time.getDate(); //日
            const HH = time.getHours(); //时，
            const MM = time.getMinutes(); //分
            const SS = time.getSeconds(); //秒
            const timestamp = new Date().getTime(); //时间戳
            state.Time_All = [Y, M, D, HH, MM, SS, timestamp]
            state.se_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->历史趋势时间选择器v-model  //home设备总数
            state.se_defaultTime2 = [new Date(Y, M, D - 1, 0, 0, 0), new Date()] //--->历史趋势时间选择器v-model  //当前日减1
            state.th_defaultTime = [new Date(Y, M, D, 0, 0, 0), new Date()] //设备监控--->数据报表时间选择器v-model  //home运维管理
            state.fh_defaultTime = [new Date(Y, M, 1, 0, 0, 0), new Date()] //设备监控--->运行状态统计时间选择器v-model  //概览 -> 告警统计折线图


        },
    }
})