import { message,Timeline,Select  } from 'antd';
import React from 'react';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import {
    patentTypeList,
    patentStateList,
    patentFieldList,
    technicalSourceList,
    catagoryList,
    intellectualGetList,
    conversionFormList,
    annualReportStateList,
    cognizanceStateList,
    technologyStateList,
    copyrightStateList,
    auditStatusList,
    vocations
} from './dataDic.js';
import { provinceList } from './DicProvinceList.js';
import { techFieldList } from './DicTechFieldList.js'
module.exports = {
    addressInit: function (_cmbProvince, _cmbCity, _cmbArea, defaultProvince, defaultCity, defaultArea) {
        var cmbProvince = document.getElementById(_cmbProvince);
        var cmbCity = document.getElementById(_cmbCity);
        var cmbArea = document.getElementById(_cmbArea);

        function cmbSelect(cmb, str) {
            for (var i = 0; i < cmb.options.length; i++) {
                if (cmb.options[i].value == str) {
                    cmb.selectedIndex = i;
                    return;
                }
            }
        }

        function cmbAddOption(cmb, str, obj) {
            var option = document.createElement("OPTION");
            cmb.options.add(option);
            option.innerText = str;
            option.value = str;
            option.obj = obj;
        }

        function changeCity() {
            cmbArea.options.length = 0;
            if (cmbCity.selectedIndex == -1) return;
            var item = cmbCity.options[cmbCity.selectedIndex].obj;
            for (var i = 0; i < item.areaList.length; i++) {
                cmbAddOption(cmbArea, item.areaList[i], null);
            }
            cmbSelect(cmbArea, defaultArea);
        }

        function changeProvince() {
            cmbCity.options.length = 0;
            cmbCity.onchange = null;
            if (cmbProvince.selectedIndex == -1) return;
            var item = cmbProvince.options[cmbProvince.selectedIndex].obj;
            for (var i = 0; i < item.cityList.length; i++) {
                cmbAddOption(cmbCity, item.cityList[i].name, item.cityList[i]);
            }
            cmbSelect(cmbCity, defaultCity);
            changeCity();
            cmbCity.onchange = changeCity;
        }

        for (var i = 0; i < provinceList.length; i++) {
            cmbAddOption(cmbProvince, provinceList[i].name, provinceList[i]);
        }
        cmbSelect(cmbProvince, defaultProvince);
        changeProvince();
        cmbProvince.onchange = changeProvince;
    },
    splitUrl: function (string, i, url) {
        let theList = [];
        let theArr = [];
        if (string) {
            theArr = string.split(i);
            theArr.map(function (item, i) {
                theList.push({
                    uid: -i,
                    url: url + item,
                    response: {
                        data: item
                    }
                });
            });
        }
        return theList;
    },
    getBase64: function (img, callback) {
        const reader = new FileReader();
        reader.addEventListener('load', () => callback(reader.result));
        reader.readAsDataURL(img);
    },
    beforeUpload: function (file) {
        // debugger
        // const isJPG = file.type === 'image/jpeg/document';
        // if (!isJPG) {
        //     message.error('You can only upload JPG file!');
        // }
        // const isLt2M = file.size / 1024 / 1024 < 2;
        // if (!isLt2M) {
        //     message.error('Image must smaller than 2MB!');
        // }
        // return isJPG && isLt2M;
    },
    beforeUploadFile: function (file) {
        // debugger
        // const isJPG = file.type === 'image/jpeg/document';
        // if (!isJPG) {
        //     message.error('You can only upload JPG file!');
        // }
        // const isLt2M = file.size / 1024 / 1024 < 2;
        // if (!isLt2M) {
        //     message.error('Image must smaller than 2MB!');
        // }
        // return isJPG && isLt2M;
    },
    getTime: function (e, t) {
        if (e && !t) {
            var d = new Date(e);
            d = d.getFullYear() + "-" +
                ((d.getMonth() + 1) < 9 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1)) + "-" +
                (d.getDate() < 9 ? '0' + d.getDate() : d.getDate()) + " ";
            // + (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) + ":" +
            // (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) + ":" +
            // (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds());
            return d;
        } else if (e && t) {
            var d1 = new Date(e);
            var d2 = new Date(e);
            d2 = d2.setMonth(d1.getMonth() + t);
            d2 = new Date(d2)
            d2 = d2.getFullYear() + "-" +
                ((d2.getMonth() + 1) < 9 ? '0' + (d2.getMonth() + 1) : (d2.getMonth() + 1)) + "-" +
                (d2.getDate() < 9 ? '0' + d2.getDate() : d2.getDate()) + " ";
            return d2;
        } else {
            return '';
        }
    },
    getPatentType: function (e) {
        if (e) {
            let theType = '';
            patentTypeList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    getPatentState: function (e) {
        if (e) {
            let theState = '';
            patentStateList.map(function (item) {
                if (item.value == e) {
                    theState = item.key;
                };
            });
            return theState;
        }
    },
    getPatentField: function (e) {
        if (e) {
            let theState = '';
            patentFieldList.map(function (item) {
                if (item.value == e) {
                    theState = item.key;
                };
            });
            return theState;
        }
    },
    getTechnicalSource: function (e) {
        if (e) {
            let theSource = '';
            technicalSourceList.map(function (item) {
                if (item.value == e) {
                    theSource = item.key;
                };
            });
            return theSource;
        }
    },
    getTechField: function (field1, field2, field3) {
        let fieldList = [];
        for (let i = 0; i < techFieldList.length; i++) {
            fieldList.push({
                value: techFieldList[i].value,
                label: techFieldList[i].label
            });
            if (techFieldList[i].children) {
                for (let j = 0; j < techFieldList[i].children.length; j++) {
                    fieldList.push({
                        value: techFieldList[i].children[j].value,
                        label: techFieldList[i].children[j].label
                    });
                    if (techFieldList[i].children[j].children) {
                        for (let n = 0; n < techFieldList[i].children[j].children.length; n++) {
                            fieldList.push({
                                value: techFieldList[i].children[j].children[n].value,
                                label: techFieldList[i].children[j].children[n].label
                            });
                        }
                    };
                };
            }
        };
        fieldList.sort(function (a, b) {
            return a.value - b.value
        });
        let fieldKey = "";
        fieldList.map(function (item) {
            if (field1 == item.value) {
                fieldKey = item.label;
            };
            if (field2 == item.value) {
                fieldKey = fieldKey + "/" + item.label;
            };
            if (field3 == item.value) {
                fieldKey = fieldKey + "/" + item.label;
            };
        });
        return fieldKey;
    },
    getCatagory: function (e) {
        if (e) {
            let theType = '';
            catagoryList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    getIntellectualObtainWay: function (e) {
        if (e) {
            let theType = '';
            intellectualGetList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    getConversionForm: function (e) {
        if (e) {
            let theType = '';
            conversionFormList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    getAnnualReportState: function (e) {
        if (e) {
            let theType = '';
            annualReportStateList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    getCognizanceState: function (e) {
        if (e) {
            let theType = '';
            cognizanceStateList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    getTechnologyState: function (e) {
        if (e) {
            let theType = '';
            technologyStateList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    //显示用户认证状态
    getAuditState: function (e) {
        if (e) {
            let theType = '';
            auditStatusList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    getCopyrightState: function (e) {
        if (e) {
            let theType = '';
            copyrightStateList.map(function (item) {
                if (item.value == e) {
                    theType = item.key;
                };
            });
            return theType;
        }
    },
    downloadFile: function (path, fileName) {
        window.open(globalConfig.context + '/open/downloadFile?path=' + path + '&fileName=' + fileName)
    },
    techDownloadFile: function (url, id) {
        window.open(globalConfig.context + url + '?id=' + id)
    },
    copyrightDownloadFile: function (id, sign, url) {
        window.open(globalConfig.context + url + '?id=' + id + '&sign=' + sign)
    },
    newDownloadFile: function (id, sign, url) {
        window.open(globalConfig.context + url + '?id=' + id + '&sign=' + sign)
    },
    companySearch(input, option) {
        return option.props.children.indexOf(input) >= 0
    },
    getInUrgentTime(date, inUrgent) {
        let now = new Date(date);
        for (var i = 1; i <= inUrgent;) {
            now.setDate(now.getDate() + 1);
            if (!vocations[getKey(now)]) {
                i++;
            };
        };
        return now;

        function getKey(date) {
            var year = date.getFullYear(),
                month = date.getMonth() + 1,
                day = date.getDate();
            year = "" + year;
            month = (month > 9 ? "" : "0") + month;
            day = (day > 9 ? "" : "0") + day;
            return year + month + day;
        }
    },
    getStepList(pid,url) {
        let stepList = [];
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            cache: false,
            url: globalConfig.context + url + "?pid=" + pid,
            success: function (data) {
                if (!data.data) {
                    if (data.error && data.error.length ) {
                        return;
                    };
                };
                for (var item in data.data) {
                    stepList.push(
                        <Timeline.Item key={item}> 
                            <span>{module.exports.getPatentState(data.data[item].state)}</span> 
                            {module.exports.getTime(data.data[item].recordTime)} 
                        </Timeline.Item>
                    )
                };
            }.bind(this),
        });
        return stepList;
    },


    //各种通过接口获取下拉列表

    setPatentStateOption(permission) {
        let theArr = [];
        patentStateList.map(function (item) {
            for (let i = 0; i < permission.length; i++) {
                if (item.value == permission[i]) {
                    theArr.push(item);
                };
            };
        });
        return theArr;
    },
    
    setUserContactsList(){
        let theOption = [];
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/user/getContacts',
            success: function (data) {
                if (!data.data) {
                    if ( data.error && data.error.length ) {
                        message.warning(data.error[0].message);
                    };
                    return;
                };
                for (let item in data.data) {
                    let theData = data.data[item];
                    theOption.push(
                        <Select.Option value={item} key={theData}>{theData}</Select.Option>
                    );
                };
            }
        });
        return theOption;
    },
    setAdminContactsList(uid){
        let theOption = [];
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/admin/getContacts',
            data:{ "uid": uid },
            success: function (data) {
                if (!data.data) {
                    if ( data.error && data.error.length ) {
                        message.warning(data.error[0].message);
                    };
                    return;
                };
                for (let item in data.data) {
                    let theData = data.data[item];
                    theOption.push(
                        <Select.Option value={item} key={theData}>{theData}</Select.Option>
                    );
                };
            }
        });
        return theOption;
    }
}