// 不显示的信息点数组
import text from "@/utils/hansontable/mainText"
import tools from "@/assets/js/tools"
let noShowArr = [
    "Brand",
    "Specification",
    "Manufacturer",
    "Supplier",
    "SupplierContactor",
    "SupplierPhone",
    "SupplierEmail",
    "SupplierWeb",
    "SupplierFax",
    "Maintainer",
    "MaintainerContactor",
    "MaintainerPhone",
    "MaintainerEmail",
    "MaintainerWeb",
    "Principal",
    "MaintainerFax",
    "Insurer",
    "InsurerContactor",
    "InsurerPhone",
    "InsurerEmail",
    "InsurerWeb",
    "InsurerFax",
    "InsuranceFile",
    "EquipID",
    "EquipName",
]

let cantShow = [
    "EquipQRCode",
    "EquipID",
    "EquipName",
    "BIMLocation",
    "Brand",
    "Specification",
    "Manufacturer",
    "Supplier",
    "SupplierContactor",
    "SupplierPhone",
    "SupplierEmail",
    "SupplierWeb",
    "SupplierFax",
    "Maintainer",
    "MaintainerContactor",
    "MaintainerPhone",
    "MaintainerEmail",
    "MaintainerWeb",
    "Principal",
    "MaintainerFax",
    "Insurer",
    "InsurerContactor",
    "InsurerPhone",
    "InsurerEmail",
    "InsurerWeb",
    "InsurerFax",
    "InsuranceFile",
    "EquipID",
    "EquipName"
]

let cutArr = [{
    name: "品牌型号",
    code: "DPManufacturerID",
    num: 2,
}, {
    name: "供应商信息",
    code: "DPSupplierID",
    num: 5
}, {
    name: "维修商信息",
    code: "DPMaintainerID",
    num: 19
}, {
    name: "保险公司信息",
    code: "DPInsurerID",
    num: 25
}]

let newData = [{
    name: "品牌型号",
    code: "DPManufacturerID",
    num: 2,
}, {
    name: "供应商信息",
    code: "DPSupplierID",
    num: 8
}, {
    name: "维修商信息",
    code: "DPMaintainerID",
    num: 35
}, {
    name: "保险公司信息",
    code: "DPInsurerID",
    num: 42
}]

const showTools = {
    addArr: () => {
        return cutArr
    },
    cantShow: (code) => {
        let falg = true
        cantShow.map(item => {
            if (item == code) {
                falg = false
            }
        })
        return falg
    },

    //几种类型不显示
    technologyParam: (item) => {
        if (
            item.FirstTag == "控制参数" &&
            item.FirstTag == "设定参数" &&
            item.FirstTag == "运行参数"
        ) {
            return undefined
        }
    },
    isShow: (code) => {
        let falg = true
        noShowArr.map(item => {
            if (item == code) {
                falg = false
            }
        })
        return falg
    },

    //插入需要的关系
    insertionRea: (data) => {
        cutArr.map(item => {
            data.splice(item.num, 0, item.name)
        })
        return data
    },

    insertionRea2: (data) => {
        newData.map(item => {
            data.splice(item.num, 0, item.name)
        })
        return data
    },

    insertionType: (data, callback) => {
        cutArr.map(item => {
            data.splice(item.num, 0, {
                data: "infos." + item.code,
                renderer: callback,
                readOnly: false
            })
        })
        return data
    },
    insertionType2: (data, callback) => {
        newData.map(item => {
            data.splice(item.num, 0, {
                data: "infos." + item.code,
                renderer: callback,
                readOnly: false
            })
        })
        return data
    },
    arrToArr(arr) {
        let first = 0,
            scound = 0,
            three = 0,
            four = 0
        arr.find(function(value, index, arr) {
            if (
                (value.InfoPointName == "品牌" ||
                    value.InfoPointName == "设备型号" ||
                    value.InfoPointName == "生产厂家") && !first && value.Visible
            ) {
                first = index
            }
            if (
                (value.InfoPointName == "供应商单位名称" ||
                    value.InfoPointName == "供应商联系人" ||
                    value.InfoPointName == "供应商电子邮件" ||
                    value.InfoPointName == "供应商网址" ||
                    value.InfoPointName == "供应商传真" ||
                    value.InfoPointName == "供应商联系电话") && !scound && value.Visible
            ) {
                scound = index
            }
            if (
                (value.InfoPointName == "维修商单位名称" ||
                    value.InfoPointName == "维修商联系人" ||
                    value.InfoPointName == "维修商联系电话" ||
                    value.InfoPointName == "维修商电子邮件" ||
                    value.InfoPointName == "维修商网址" ||
                    value.InfoPointName == "维修商传真") && !three && value.Visible
            ) {
                three = index
            }
            if (
                (value.InfoPointName == "保险公司名称" ||
                    value.InfoPointName == "保险公司联系人" ||
                    value.InfoPointName == "保险公司联系电话" ||
                    value.InfoPointName == "保险公司电子邮件" ||
                    value.InfoPointName == "保险公司网址" ||
                    value.InfoPointName == "保险公司传真") && !four && value.Visible
            ) {
                four = index
            }
        })
        let numList = [first, scound, three, four]
        numList.reverse().map((item, index) => {
            if (!!item) {
                if (index == 0) {
                    arr.splice(item, 0, {
                        InfoPointName: "保险公司信息",
                        InfoPointCode: "DPInsurerID",
                        InputMode: "Own",
                        Unit: "",
                        SecondTag: "",
                        FirstTag: "",
                        Visible: true,
                    })
                } else if (index == 1) {
                    arr.splice(item, 0, {
                        InfoPointName: "维修商信息",
                        InfoPointCode: "DPMaintainerID",
                        InputMode: "Own",
                        Unit: "",
                        SecondTag: "",
                        FirstTag: "",
                        Visible: true,
                    })
                } else if (index == 2) {
                    arr.splice(item, 0, {
                        InfoPointName: "供应商信息",
                        InfoPointCode: "DPSupplierID",
                        InputMode: "Own",
                        Unit: "",
                        SecondTag: "",
                        FirstTag: "",
                        Visible: true,
                    })
                } else if (index == 3) {
                    arr.splice(item, 0, {
                        InfoPointName: "品牌型号",
                        InfoPointCode: "DPManufacturerID",
                        InputMode: "Own",
                        Unit: "",
                        SecondTag: "",
                        FirstTag: "",
                        Visible: true,
                    })
                }
            }
        })
        return arr
    },
    changeTypes(arr, onlyRead, isWatch, allMess, falg = false, taizhang = false) {
        let data = arr.map(item => {
            if (falg) {
                if (item.FirstTag == "控制参数" ||
                    item.FirstTag == "设定参数" ||
                    item.FirstTag == "运行参数") {
                    return undefined
                }
            }
            if (item.InfoPointCode == "BIMLocation") {
                return undefined
            }
            if (item.Visible || !allMess) {
                //固定不显示的code
                if (!showTools.cantShow(item.InfoPointCode) && !onlyRead && !taizhang) {
                    return undefined
                }

                if (!showTools.isShow(item.InfoPointCode) && !taizhang && !taizhang) {
                    if (isWatch && !onlyRead) {
                        return undefined
                    }
                }

                if (item.InfoPointCode == "EquipQRCode") {
                    return undefined
                }

                if (item.InputMode == "D1") {
                    return {
                        data: "Infos." + item.InfoPointCode,
                        renderer: tools.customDropdownRenderer,
                        editor: "chosen",
                        chosenOptions: {
                            // multiple: true,//多选
                            data: item.DataSource || ""
                        }
                    };
                } else if (item.InputMode == "A1" || item.InputMode == "A2") {
                    return {
                        data: "Infos." + item.InfoPointCode,
                        type: "numeric",
                        numericFormat: {
                            pattern: "0,0.00"
                                // culture: 'de-DE' // use this for EUR (German),
                                // more cultures available on http://numbrojs.com/languages.html
                        }
                    };
                } else if (item.InputMode == "C5") {
                    return {
                        data: "Infos." + item.InfoPointCode,
                        type: "date",
                        dateFormat: "YYYY-MM-DD",
                        correctFormat: true
                    };
                } else if (
                    item.InputMode == "B1" ||
                    item.InputMode == "L" ||
                    item.InputMode == "L1" ||
                    item.InputMode == "L2"
                ) {
                    return {
                        data: "Infos." + item.InfoPointCode
                    };
                } else if (
                    item.InputMode == "X"
                    // item.InputMode == "L1" ||
                    // item.InputMode == "L2"
                ) {
                    //   return undefined
                    return {
                        data: "Infos." + item.InfoPointCode,
                        readOnly: true
                    };
                } else if (item.InputMode == "D2") {
                    return {
                        data: "Infos." + item.InfoPointCode,
                        renderer: tools.customDropdownRenderer,
                        editor: "chosen",
                        chosenOptions: {
                            multiple: true, //多选
                            data: item.DataSource || ""
                        }
                    };
                } else if (item.InputMode == "Own" && !onlyRead) {
                    return {
                        data: "Infos." + item.InfoPointCode,
                        renderer: text.idType,
                    }
                } else {
                    return undefined;
                }
            } else {
                return undefined
            }

        }).filter(item => item);
        return data
    },

    showTypes(arr, onlyRead, isWatch, allMess, falg = false, typeArr = false, taizhang = false) {
        if (!taizhang) {
            arr = showTools.arrToArr(arr)
        }
        let data = arr.map(item => {
            if (falg) {
                if (item.FirstTag == "控制参数" ||
                    item.FirstTag == "设定参数" ||
                    item.FirstTag == "运行参数") {
                    return undefined
                }
            }
            if (item.InfoPointCode == "BIMLocation") {
                return undefined
            }
            if (!!typeArr && typeArr.indexOf(item.InputMode) > -1) {
                return undefined
            }
            if (item.Visible || !allMess) {
                //固定不显示的code
                if (!showTools.cantShow(item.InfoPointCode) && !onlyRead) {
                    return undefined
                }

                if (!showTools.isShow(item.InfoPointCode)) {
                    if (isWatch && !onlyRead) {
                        return undefined
                    }
                }

                if (item.InfoPointCode == "EquipQRCode") {
                    return {
                        data: "infos." + item.InfoPointCode,
                        renderer: text.lookQRCode,
                        readOnly: true
                    }
                }

                //图片类型
                if (
                    item.InfoPointCode == "InstallPic" ||
                    item.InfoPointCode == "InstallDrawing" ||
                    item.InfoPointCode == "Nameplate" ||
                    item.InfoPointCode == "Pic" ||
                    item.InfoPointCode == "Drawing"
                ) {
                    return {
                        data: "infos." + item.InfoPointCode,
                        renderer: text.picType,
                        readOnly: true
                    }
                }

                //文件类型
                if (item.InfoPointCode == "InsuranceFile" ||
                    item.InfoPointCode == "Archive" ||
                    item.InfoPointCode == "CheckReport") {
                    return {
                        data: "infos." + item.InfoPointCode,
                        renderer: text.fileType,
                        readOnly: true
                    }
                }

                if (item.InputMode == "D1") {
                    return {
                        data: "infos." + item.InfoPointCode,
                        renderer: tools.customDropdownRenderer,
                        editor: "chosen",
                        chosenOptions: {
                            // multiple: true,//多选
                            data: item.DataSource || ""
                        }
                    };
                } else if (item.InputMode == "A1" || item.InputMode == "A2") {
                    return {
                        data: "infos." + item.InfoPointCode,
                        type: "numeric",
                        numericFormat: {
                            pattern: "0,0.00"
                                // culture: 'de-DE' // use this for EUR (German),
                                // more cultures available on http://numbrojs.com/languages.html
                        }
                    };
                } else if (item.InputMode == "C5") {
                    return {
                        data: "infos." + item.InfoPointCode,
                        type: "date",
                        dateFormat: "YYYY-MM-DD",
                        correctFormat: true
                    };
                } else if (
                    item.InputMode == "B1" ||
                    item.InputMode == "L" ||
                    item.InputMode == "L1" ||
                    item.InputMode == "L2" ||
                    item.InputMode == "M"
                ) {
                    return {
                        data: "infos." + item.InfoPointCode
                    };
                } else if (
                    item.InputMode == "X" ||
                    item.InputMode == "F2"
                    // item.InputMode == "L1" ||
                    // item.InputMode == "L2"
                ) {
                    //   return undefined
                    return {
                        data: "infos." + item.InfoPointCode,
                        readOnly: true
                    };
                } else if (item.InputMode == "D2") {
                    return {
                        data: "infos." + item.InfoPointCode,
                        renderer: tools.customDropdownRenderer,
                        editor: "chosen",
                        chosenOptions: {
                            multiple: true, //多选
                            data: item.DataSource || ""
                        }
                    };
                } else if (item.InputMode == "Own" && !onlyRead) {
                    return {
                        data: "infos." + item.InfoPointCode,
                        renderer: text.idType,
                    }
                } else {
                    return undefined;
                }
            } else {
                return undefined
            }

        }).filter(item => item);
        return data
    },

    changeHeader(arr, readArr, onlyRead, isWatch, allMess, falg = false, taizhang = false) {
        if (!taizhang) {
            arr = showTools.arrToArr(arr)
        }
        let data = arr.map(item => {
            if (falg) {
                if (item.FirstTag == "控制参数" ||
                    item.FirstTag == "设定参数" ||
                    item.FirstTag == "运行参数") {
                    return undefined
                }
            }

            if (item.InfoPointCode == "BIMLocation") {
                return undefined
            }
            if (
                readArr.indexOf(item.InputMode) > -1
            ) {
                if (item.Visible || !allMess) {
                    if (!showTools.cantShow(item.InfoPointCode) && !onlyRead && !taizhang) {
                        return undefined
                    }

                    if (!showTools.isShow(item.InfoPointCode) && !taizhang) {
                        if (isWatch && !onlyRead) {
                            return undefined
                        }
                    }
                    if (item.Unit == "") {
                        return item.InfoPointName;
                    } else {
                        return item.InfoPointName + "(" + item.Unit + ")";
                    }
                } else {
                    return undefined
                }
            } else {
                return undefined;
            }
        }).filter(d => d);
        return data
    }
}

export default showTools