/**
 * @Time 2019-12-12
 * @Author Zhengjingyi
 * @Action 全局公共方法
 */
import requestUrl from '@/services/config.env.js'
const caimeiApi = {
    /**
	 * @封装公共get数据请求方法无加载动画
	 * @方法参数:请求地址,请求后台需要的参数字段,回调函数
	 * @自定义请求头信息
	 */
    get:function(url,data,callback){
		 uni.request({
            url: requestUrl + url,
            data:data,
            header: {
                'Accept': 'application/json',
                'Content-Type': 'application/x-www-form-urlencoded', 
                'X-Token': uni.getStorageSync('token') ? uni.getStorageSync('token') : 'token',
                'cookie': uni.getStorageSync('sessionid')
            },
            method: 'GET',
            success: (response) => {
                if(response.statusCode !== 200){
                    uni.showToast({icon: 'none',title:'服务器连接错误',duration: 2000})
                    callback(response.statusCode)
                }else{
                    callback(response.data)
                }
            },
            fail: (error) => {
                if (error) {
                    uni.showToast({icon: 'none',title: '网络错误,请稍后重试',duration: 2000})
                }
            }
		 })
    },
    /**
	 * @封装公共get数据请求方法有加载动画
	 * @方法参数:请求地址,请求后台需要的参数字段,回调函数
	 * @自定义请求头信息
	 */
    lodingGet:function(url,data,callback){
		 uni.showLoading({mask: true,title:'加载中~',})
		 uni.request({
            url: requestUrl + url,
            data:data,
            header: {
                'Accept': 'application/json',
                'Content-Type': 'application/x-www-form-urlencoded', 
                'X-Token': uni.getStorageSync('token') ? uni.getStorageSync('token') : 'token',
                'cookie': uni.getStorageSync('sessionid')
            },
            method: 'GET',
            success: (response) => {
                if(response.statusCode !== 200){
                    uni.showToast({icon: 'none',title: '服务器连接错误',duration: 2000})
                    callback(response.statusCode)
                }else{
                    callback(response.data)
                }
            },
            fail: (error) => {
                if (error) {
                    uni.showToast({icon: 'none',title: '网络错误,请稍后重试',duration: 2000})
                }
            },
            complete: () => {
                setTimeout(function () {
                    uni.hideLoading()
                }, 250)
            }
		 })
    },
    /**
	 * @封装公共post数据请求方法
	 * @方法参数:请求地址,请求后台需要的参数字段,回调函数
	 */
    post:function(url,data,loadingStatus,callback){
        if(loadingStatus){uni.showLoading({mask: true,title:'加载中~'})}
        uni.request({
            url: requestUrl+url,
            data:data,
            header: {
                'Accept': 'application/json',
                'Content-Type': 'application/x-www-form-urlencoded',
                'X-Token': uni.getStorageSync('token') ? uni.getStorageSync('token') : 'token',
                'cookie': uni.getStorageSync('sessionid')
            },
            method: 'POST',
            success: (response) => {
                if(loadingStatus){uni.hideLoading()}
                const result = response.data
                callback(result)
            },
            fail: (error) => {
                uni.hideLoading()
                if (error) {
                    uni.showToast({icon: 'none',title: '网络错误,请稍后重试',duration: 2000})
                }
            }
        })
    },
    getComStorage:function(key){// 获取本地Storage
        return new Promise(function(resolve,reject) {
            uni.getStorage({
                key: key,
                success: function (res){
                    resolve(res.data)
                },
                fail: function(res){
                    reject(false)
                }
            })
        })
    },
    setStorage:function(key,data){// 存储本地Storage
        return new Promise(function(resolve,reject) {
            uni.setStorage({
                key: key,
                data:data,
                success: function (res){
                }
            })
        })
    },
    getStorage:function(){// 获取本地userInfo
        return new Promise(function(resolve,reject) {
            uni.getStorage({
                key: 'userInfo',
                success: function (res){
                    resolve(res.data)
                },
                fail: function(res){
                    reject(false)
                }
            })
        })
    },
    removeStorage:function(key){// 获取本地userInfo
        return new Promise(function(resolve,reject) {
            uni.removeStorage({
                key: key,
                success: function (res) {
                    console.log('success')
                }
            })
        })
    },
    getStorageAddressKey:function(){// 获取本地地址信息
        return new Promise(function(resolve,reject) {
            uni.getStorage({
                key: 'address_key',
                success: function (res){
                    resolve(res.data)
                }
            })
        })
    },
    loginStatus:function(){
        // 获取用户是否登陆 1:已登陆,否则未登陆
        return new Promise(function(resolve,reject) {
            uni.getStorage({
                key: 'userInfo',
                success: function (res){
                    if(res.data.code == '1'){
                        resolve(true)
                    } else {
                        resolve(false)
                    }
                }
            })
        })
    },
    navToListPage:function({type,value,id,lType} = {}){	
        // 跳转到列表页
        if(lType=='4'){
            const pages = getCurrentPages()
            const prevPage = pages[pages.length-2]
            prevPage.refresh = true
            prevPage.listData = {
                type: type,
                from: value,
                id: id
            }
            uni.navigateBack({
                delta: 1
            })
        }else{
            uni.navigateTo({
                url:`/pages/goods/goods?type=${type}&from=${value}&id=${id}`
            })
        }
    },
    navigateToGoods:function({type,value,id,lType} = {}){
        // 跳转到列表页
        if(lType=='4'){
            const pages = getCurrentPages()
            const prevPage = pages[pages.length-2]
            prevPage.refresh = true
            prevPage.listData = {
                type: type,
                from: value,
                id: id
            }
            uni.navigateBack({
                delta: 1
            })
        }else{
            uni.navigateTo({
                url:`/pages/goods/goods-classify?type=${type}&from=${value}&id=${id}`
            })
        }
    },
    FlooryNavigateTo:function(pros){
        if(pros.listType == 1){
            if(pros.product.productCategory == '1'){
                uni.navigateTo({
				  	url:`/pages/goods/product?id=${pros.product.productId}`
                })
            }else{
                uni.navigateTo({
				  	url:`/pages/second/product/product-details?id=${pros.product.productId}`
                })
            }
        }else{
            /**
			 * 页面跳转类型
			 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
			 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
			 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
			 **/
            if(pros.linkType){
                console.log(pros.linkType)
                const typeMap = {
				 	1:`/pages/goods/goods-instrument?linkId=${pros.linkParam.id}`,
				 	2:`/pages/goods/instrument-details?id=${pros.linkParam.id}`,
				 	3:`/pages/h5/article/page-image?image=${pros.adsImage}&title=专题直播`,
                    4:`/pages/h5/activity/activity?link=${pros.crmLink}&linkId=${pros.linkParam.id}`,
				 	5:`/pages/goods/product?id=${pros.linkParam.id}`,
				 	7:`/pages/supplier/user/my-shop?shopId=${pros.linkParam.id}`,
				 	8:'/pages/h5/activity/activity-list',
				 	9:'/pages/second/form/introduce',
				 	10:'/pages/second/product/product-list',
				 	11:'/pages/second/form/form',
				 	12:`/pages/search/search?keyWord=${pros.linkParam.keyword}`,
				 	13:`/pages/h5/article/path?link=${pros.link}`,
				 	14:`/pages/h5/article/path?link=${pros.link}`,
				 	15:`/pages/h5/article/path?link=${pros.link}`,
                    // '-1':`/pages/h5/article/path?link=${pros.link}`,
				 	17:'/pages/login/register-select',
				 	18:`/pages/h5/article/path?link=${pros.link}`,
				 	19:`/pages/search/search-supplier?keyWord=${pros.linkParam.keyword}`,
                    21:'/pages/h5/activity/meobohui',
                    23:`/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`,
                    24:'/pages/user/coupon/coupon',
                    25:'/pages/goods/goods-doc-list',//美业资料
                    28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
                    29:'/pages/user/coupon/coupon-collection',//领券中心
                }
                const url = typeMap[pros.linkType]
                uni.navigateTo({
				  	url:url
                })
            }
        }
    },
    BannerNavigateTo:function(linkType,linkId,linkHref,keyword){//楼层跳转判断
        if(linkType){
            const typeMap = {
                1:`/pages/goods/goods-instrument?linkId=${linkId}`,
                2:`/pages/goods/instrument-details?id=${linkId}`,
                4:`/pages/h5/activity/activity?link=${linkHref}&linkId=${linkId}`,
                5:`/pages/goods/product?id=${linkId}`, 
                7:`/pages/supplier/user/my-shop?shopId=${linkId}`,
                8:'/pages/h5/activity/activity-list',
                9:'/pages/second/form/introduce',
                10:'/pages/second/product/product-list',
                11:'/pages/second/form/form',
                12:`/pages/search/search?keyWord=${keyword}`,
                13:`/pages/h5/article/path?link=${linkHref}`,
                14:`/pages/h5/article/path?link=${linkHref}`,
                15:`/pages/h5/article/path?link=${linkHref}`,
                17:'/pages/login/register-select',
                18:`/pages/h5/article/path?link=${linkHref}`,
                19:`/pages/search/search-supplier?keyWord=${keyword}`,
                21:'/pages/h5/activity/meobohui',
                // '-1':`/pages/h5/article/path?link=${linkHref}`
                24:'/pages/user/coupon/coupon',
                25:'/pages/goods/goods-doc-list',  //美业资料
                28:`/pages/h5/article/path?link=${linkHref}`, // 采美认证通
                29:'/pages/user/coupon/coupon-collection',//领券中心

            }
            const url = typeMap[linkType]
            uni.navigateTo({
			 	url:url
            })
        }
    },
    navigateTo:function(url){
        //路由跳转:页面之间路由跳转
        uni.navigateTo({
            url:url
        })
    },
    redirectTo:function(url){
        //路由跳转:关闭当前页跳转到新页面	
        uni.redirectTo({
            url:url
        })
    },
    reLaunch:function(url){
        //路由跳转:关闭当前页跳转到新页面	
        uni.reLaunch({
            url:url
        })
    },
    switchTabTo:function(url){
        //路由跳转:底部 tab页
        uni.switchTab({
            url:url
        })
    },
    navigateBack:function(page){
	    uni.navigateBack({
		    delta: page
	    })
    },
    isNumber:function(value){//验证是否为数字
	    var patrn = /^(-)?\d+(\.\d+)?$/
	    if (patrn.exec(value) == null || value == '') {
	         return false
	    } else {
	         return true  
        }	 
    },
    getWindowHeight:function(){
        // 获取窗口高度
        const {windowHeight, pixelRatio} = wx.getSystemInfoSync()
        return windowHeight
    },
    adaptRichTextImg:function(res){
        /**
		 *@富文本实现图片自适应
		 *@style再添加自适应样式
		 */ 
        const html = res.replace(/<img[^>]*>/gi,function(match,capture){			
            let match1 = match.replace(/<img*/gi, '<img style="width:100% !important;height:auto !important;float:left !important;"'),
                results = match1.replace(/style=/gi, 'style="width:100%;height:auto;float:left;"')
            return results
        })
        return html	
    },
    FormatMoney:function(num){
        // 金额千分位
        return num.toString().replace(/\d+/, function (n) { // 先提取整数部分
            return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) { // 对整数部分添加分隔符
                return $1 + ','
            })
        })
    },
    formatDate:function(){
        //获取当前时间
        let date = new Date()
        let y = date.getFullYear()
        let MM = date.getMonth() + 1
        MM = MM < 10 ? ('0' + MM) : MM
        let d = date.getDate()
        d = d < 10 ? ('0' + d) : d
        let h = date.getHours()
        h = h < 10 ? ('0' + h) : h
        let m = date.getMinutes()
        m = m < 10 ? ('0' + m) : m
        let s = date.getSeconds()
        s = s < 10 ? ('0' + s) : s
	    return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s
    },
    regexSets:function() {
        let sets = {
            'companyName': /^[\u4e00-\u9fa5\(\)（）\s\da-zA-Z&]{2,50}$/gi,
            'phoneAndTelephone': /^([1]\d{10}|([\(（]?0[0-9]{2,3}[）\)]?[-]?)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?)$/,
            'bankNum': /^([1-9]{1})(\d{18})$/,
            'invalidChar': /^[\s\u4e00-\u9fa5a-z0-9_-]{0,}$/
        }
        return sets
    },
    timestampToTime:function(timestamp) {
        // 时间戳转日期
	   let date = new Date(timestamp * 1000)//时间戳为10位需*1000，时间戳为13位的话不需乘1000
	   let Y = date.getFullYear() + '-'
	   let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'
	   let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' '
	   let h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':'
	   let m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':'
	   let s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds())
	   return `${Y}${M}${D}${h}${m}${s}`
    },
    easyFormatData(timestamp){
        //时间转换
        let a = new Date(timestamp).getTime()
        const date = new Date(a)
        const Y = date.getFullYear() + '-'
        const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
        const D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + '  '
        const h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':'
        const m = (date.getMinutes() <10 ? '0'+date.getMinutes() : date.getMinutes()) 
        // const s = date.getSeconds(); // 秒
        const dateString = Y + M + D + h + m
        // console.log('dateString', dateString); // > dateString 2021-07-06 14:23
        return dateString
    }
}

/**
 *@导出
 */ 
module.exports = {
    get: caimeiApi.get,
    post: caimeiApi.post,
    lodingGet: caimeiApi.lodingGet,
    isNumber: caimeiApi.isNumber,
    FormatMoney: caimeiApi.FormatMoney,
    navigateTo: caimeiApi.navigateTo,
    reLaunch: caimeiApi.reLaunch,
    redirectTo: caimeiApi.redirectTo,
    switchTabTo: caimeiApi.switchTabTo,
    navigateBack: caimeiApi.navigateBack,
    formatDate: caimeiApi.formatDate,
    loginStatus: caimeiApi.loginStatus,
    setStorage: caimeiApi.setStorage,
    getStorage: caimeiApi.getStorage,
    removeStorage: caimeiApi.removeStorage,
    getComStorage: caimeiApi.getComStorage,
    navToListPage: caimeiApi.navToListPage,
    navigateToGoods: caimeiApi.navigateToGoods,
    getWindowHeight: caimeiApi.getWindowHeight,
    adaptRichTextImg: caimeiApi.adaptRichTextImg,
    getStorageAddressKey: caimeiApi.getStorageAddressKey,
    regexSets: caimeiApi.regexSets,
    timestampToTime: caimeiApi.timestampToTime,
    BannerNavigateTo:caimeiApi.BannerNavigateTo,
    FlooryNavigateTo:caimeiApi.FlooryNavigateTo,
    easyFormatData:caimeiApi.easyFormatData
}
