// import merchant from "@/api/https/merchant";
import login from "@/api/https/login";
import { store } from "@/store";
import { setStorage} from "@/utils/storage";
import toast from "@/utils/toast";
// import toast from "@/utils/toast";
// import { timeFormatD } from "@/utils/tools";
// import { utilsMd5 } from '@/utils/md5.js'
// import Bluetooth from '@/utils/bluetoothPrinter/bluetooth'
// import { store as newStore } from '@/store'
// import util from '@/utils/bluetoothPrinter/util'
// import login from "@/api/https/login";
// import order from "@/api/https/order";
// import { computed } from "vue";
// import { emojiAnanlyze } from '@/utils/emoji'

/**
 * 今日营业数据
 * @param data 事实订单数据
 */
function useGlobalFunc() {
    // const bluetooth: any = getStorage('deviceName') ? new Bluetooth() : null


    // /*************************************************
    //  * 获取实时订单数据
    //  * @time 2023年2月1日 11点17分
    //  * @param {data} 请求data数据
    //  * @return {res} code:响应状态 data:响应数据 desc:错误信息
    // */
    // async function globGetToDay(data: AnyObject) {
    //     let orderNumber = await merchant.get_store_order_sale_info(data);
    //     if (orderNumber.code == 0) {
    //         return orderNumber.data
    //     } else {
    //         toast("实时订单数据异常", 2);
    //     }
    // }


    // /*************************************************
    //  * 退出登录
    // */
    // function logOutFn() {
    //     cleatStorage('token')
    //     cleatStorage('userID')
    //     cleatStorage('userType')
    //     cleatStorage('storeID')
    //     cleatStorage('storeName')
    //     cleatStorage('userID2')
    //     cleatStorage('mobile')
    //     cleatStorage('isAgreement')
    //     cleatStorage('loginType')
    //     store.commit('serveInfo/setIsFirestLogin', true)
    // }


    /*************************************************
     * 查看详情图片
     * @time 2023-02-01 11:18:09
     * @param {}-
     * @return {*}
    */
    async function previewImage(url: string | Array<string>,index?:number) {
        new Promise((resolve, reject) => {
            uni.previewImage({
                current: index ? index : typeof url === 'string' ? url : url[0],
                urls: Array.isArray(url) ? url : [url],
                longPressActions:{
                    itemList:['保存图片'],
                    success(res){
                        uni.showModal({
                            title: '相册权限使用说明',
                            content: '便于您保存图片与运营进行交流等场景中写入相册文件内容',
                            complete: (result) => {
                                if (result.confirm) {
                                    uni.saveImageToPhotosAlbum({
                                        filePath: Array.isArray(url) ? url[res.index] : url,
                                        complete(r) {
                                            if (r.errMsg === 'saveImageToPhotosAlbum:ok') {
                                                toast('保存成功')
                                            } else {
                                                toast('保存失败')
                                            }
                                        }
                                    })
                                }
                            }
                        })
                    }
                },
                success: (res: any) => {
                    resolve(res)
                },
                fail: (err: any) => {
                    toast(err)
                    reject(err)
                }
            })
        })
        uni.vibrateShort({})
    }


    /**
     * 保存图片
     */
    // 保存网络图片到相册（正式版可用）
    async function saveImageToAlbum(imgUrl:string) {
        try {
            // 1. 申请相册权限
            const authRes = await uni.authorize({
            scope: 'scope.writePhotosAlbum'
            }).catch(() => null);

            console.log('相册权限的返回值',authRes)
            if (!authRes) {
                uni.showModal({
                    title: '权限提示',
                    content: '需要相册权限才能保存图片，请在设置中开启',
                    success(res) {
                        if (res.confirm) uni.openSetting();
                    }
                });
                return;
            }

            // 2. 先下载到本地临时路径（关键！不能直接传url）
            const downRes = await uni.downloadFile({
                url: imgUrl
            });

            if (downRes.statusCode !== 200) {
            uni.showToast({ title: '图片下载失败', icon: 'none' });
            return;
            }

            // 3. 保存到相册
            await uni.saveImageToPhotosAlbum({
            filePath: downRes.tempFilePath
            });

            uni.showToast({ title: '保存成功' });
        } catch (err) {
            console.error('保存失败：', err);
            uni.showToast({ title: '保存失败', icon: 'none' });
        }
    }


    /*************************************************
     * 存储用户信息
     * @param {object} [data] 用户信息数据
    */
    let serveInfoTimer: any = null
    async function setUserInfo(data: AnyObject,userInfo:AnyObject) {
        // setStorage("token", data.token);
        // setStorage('userInfo',data.user)
        // console.log('1111111111',JSON.parse(JSON.parse(data.user.extraInfo)).session_key)
        // let userInfoDecry = await login.decryUser({
        //     sessionKey:JSON.parse(JSON.parse(data.user.extraInfo)).session_key,
        //     iv:userInfo.iv,
        //     encryptedData:userInfo.encryptedData,
        //     type:'name'
        // })
        // console.log('用户匿名信息,,,解密后的消息体',userInfoDecry)
        //  uni.navigateTo({ url: '/pages/index/index' })
        // setStorage("userID", data.userID);
        // setStorage("userID2", data.userID2);
        // setStorage("mobile", data.mobile);
        // setStorage("loginType", data.authBindInfo.type);
        // jx_default_storage_plugin()
        // // 防止ios app 出现认证信息还没有缓存就已经跳转请求了
        // if (getStorage("storeID")) {
        //     // await store.dispatch('storeInfo/getOneStore', getStorage("storeID"))
        //     uni.switchTab({ url: '/pages/index/index' })
        // } else {
        //     // let storeRes = await login.get_my_store_list({ version: '1.3.5' })
        //     // let dataList = storeRes.data || []
        //     // if (dataList.length == 0) {
        //     //     // return uni.jxAlert({
        //     //     //     title: '提示',
        //     //     //     content: '该账号未绑定门店，请联系运营绑定，加盟联系电话18048531223'
        //     //     // })
        //     // }
        //     // if (dataList.length == 1) {
        //     //     let data = dataList[0]
        //     //     setStorage("storeID", data.id);
        //     //     setStorage("storeName", data.name)
        //     //     uni.switchTab({ url: '/pages/merchant/index' })
        //     //     return
        //     // }

        //     // clearTimeout(serveInfoTimer)
        //     // serveInfoTimer = setTimeout(() => {
        //     //     uni.navigateTo({ url: "/subPages/switchStore/switchStore" })
        //     // }, 0)
        // }

    }


    // /*************************************************
    //  * app 微信登录
    //  * @bangding {Function} 绑定
    //  * @seccess {Function} 登录成功
    // */


    // /*************************************************
    //  * 全局判断是否有新信息，有信息就在tabar显示
    //  */
    // async function newMessage() {
    //     let data = {
    //         storeIDs: JSON.stringify([+getStorage('storeID')]),
    //         fromReadCount: 0,
    //         toReadCount: 0,
    //         offset: 0,
    //         pageSize: -1,
    //         fromTime:
    //             timeFormatD(+new Date() - 7 * 24 * 60 * 60 * 1000) + ' 00:00:00',
    //         toTime: timeFormatD(+new Date()) + ' 23:59:59',
    //     }
    //     let msgRes = await merchant.Get_store_message_statuses(data)
    //     if (msgRes.code == 0) {
    //         let num = msgRes.data.totalCount

    //         // 没有信息，移除
    //         if (num == 0) {
    //             store.commit('storeInfo/setIsNewMessage', false)
    //             uni.removeTabBarBadge({ index: 3 })
    //         } else {
    //             store.commit('storeInfo/setIsNewMessage', true)
    //             // 有信息显示
    //             uni.setTabBarBadge({
    //                 index: 3,
    //                 text: num > 100 ? '99+' : '' + num,
    //             })
    //         }
    //     }
    // }


    // /**************************************************************
    //  * 复制订单信息内容
    //  * @param {String} data 需要复制的内容
    //  * @param {String} [text] 复制成功提示内容(非必填)
    //  * @param {string} [errorT] 复制失败提示内容(非必填)
    //  */
    // function copyInfo(data: string, text = '复制成功', errorT = '复制失败') {
    //     uni.setClipboardData({
    //         data: data,
    //         success() {
    //             toast(text)
    //         },
    //         fail() {
    //             toast(errorT)
    //         }
    //     })
    //     uni.vibrateShort({})
    // }


    // /************************************************************
    //  * 拨打电话
    //  * @param {string} phoneNumber 将要拨号的手机号
    //  * @param {String} [text] 拨号成功提示内容(非必填)
    //  * @param {string} [errorT] 拨号失败提示内容(非必填)
    //  */
    // function phoneCall(phoneNumber: string, text = '拨号完成', errorT = '取消拨号') {
    //     uni.makePhoneCall({
    //         phoneNumber: phoneNumber,
    //         success() {
    //             console.log(text)
    //         },
    //         fail() {
    //             toast(errorT)
    //         }
    //     })
    //     uni.vibrateShort({})
    // }


    // const businessKey = 'XKJPOIHJ233adf01KJIXlIeQDSDKFJAD' // 商户秘钥
    // /*************************************************
    //  * 统一微信支付功能
    //  * 说明：app暂未申请支付功能，仅支持小程序支付
    //  * @param {number} [chargeMoney] 支付金额
    //  * @param {number | string} [storeID] 门店ID
    //  * @param {Function} [fn] 支付回调，成功或失败都会调用
    //  * @param {string} [vendorOrderID] 订单id
    //  * 
    // */
    // async function globalPlayMoney(orderPayType: number, chargeMoney: number, StoreID: number | string, code: string, fn: Function, vendorOrderID = '') {
    //     let tempMoney = +chargeMoney * 100
    //     // 创建订单
    //     let data = {
    //         orderType: orderPayType,
    //         storeID: StoreID,
    //         price: tempMoney,
    //         vendorOrderID: vendorOrderID
    //     }
    //     let orderNum = await order.create_store_acct_order(data)
    //     // 支付订单
    //     let data1 = {
    //         subAppID: 'wx08a5c2a8581414ff',
    //         payType: orderPayType,
    //         vendorOrderID: orderNum.data,
    //         vendorPayType: 'W06',
    //         code: `weixinappcs_${code}`
    //     }
    //     let orderInfo = await order.pay4_user(data1)
    //     let newOrderInfo = orderInfo.data
    //     // 调用微信支付
    //     handleCreatePay(newOrderInfo.vendorOrderID, newOrderInfo.prepayID, JSON.parse(newOrderInfo.codeURL), fn)
    // }
    // // 微信支付
    // function handleCreatePay(orderInfo: any, prepayID: number | string, codeURL: AnyObject, fn: Function) {
    //     let token = ''
    //     token = getStorage('token')
    //     let timeStamp: string
    //     let randomNum: number
    //     let strPay: string
    //     let nonceStr: string
    //     let packageA: string
    //     let paySign: string
    //     let signType = 'MD5'
    //     if (codeURL) {
    //         // 通联收银 payType 2
    //         timeStamp = codeURL.timeStamp
    //         nonceStr = codeURL.nonceStr
    //         packageA = codeURL.package
    //         signType = codeURL.signType
    //         paySign = codeURL.paySign
    //     } else {
    //         timeStamp = Math.round(new Date().getTime() / 1000).toString()
    //         randomNum = (Math.random() * 5) + 1
    //         strPay = timeStamp + token + randomNum
    //         nonceStr = utilsMd5.hex_md5(strPay)
    //         packageA = `prepay_id=${prepayID}`
    //         paySign = utilsMd5.hex_md5(`appId=wx4b5930c13f8b1170&nonceStr=${nonceStr}&package=${packageA}&signType=MD5&timeStamp=${timeStamp}&key=${businessKey}`)
    //     }
    //     uni.requestPayment({
    //         provider: 'wxpay',
    //         orderInfo: orderInfo,
    //         timeStamp: timeStamp,
    //         nonceStr: nonceStr,
    //         package: packageA,
    //         signType: signType,
    //         paySign: paySign,
    //         success: () => {
    //             toast('充值成功', 1)
    //         },
    //         fail: () => {
    //             toast('取消充值', 2)
    //         },
    //         complete: () => {
    //             fn && fn()
    //         }
    //     })
    // }


    // /*************************************************
    //  * 打开微信小程序
    //  * @param {string} [url] 跳转地址
    //  * @param {string} [id] 小程序原始ID
    // */


    // /*************************************************
    //  * 判断门店是否在营业中
    //  * @param {any} [newTime] 需要判断的时间
    // */
    // function isTrades(newTime: any): boolean {
    //     let storeInfo = newStore.state.storeInfo.allStoreInfo
    //     let businessTime: Array<any> = []
    //     businessTime[0] = storeInfo.openTime1
    //     businessTime[1] = storeInfo.closeTime1
    //     businessTime[2] = storeInfo.openTime2
    //     businessTime[3] = storeInfo.closeTime2

    //     // 获取当前时间进行比较
    //     let honer = newTime.getHours()
    //     let minutes = newTime.getMinutes() < 10 ? '0' + newTime.getMinutes() : newTime.getMinutes()
    //     let time: number = +(String(honer) + String(minutes))
        
    //     // true-未休息    false-休息中
    //     return (time >= businessTime[0] && time <= businessTime[1]) || (time >= businessTime[2] && time <= businessTime[3])
    // }

    // /*************************************************
    //  * 格式化今日订单数据
    // */
    // function wholeCalcPrice(calcData: AnyObject) {
    //     if (calcData.isPointStore) {
    //         if (calcData.isNotQuote || calcData.isZero) {
    //             return calcData.actualPayPrice
    //                 ? (calcData.actualPayPrice / 100).toFixed(2)
    //                 : 0;
    //         } else {
    //             if (calcData.isUpperfif) {
    //                 return calcData.earningPrice
    //                     ? (calcData.earningPrice / 100).toFixed(2)
    //                     : 0;
    //             } else {
    //                 return "请按平台查看";
    //             }
    //         }
    //     } else {
    //         if (calcData.isUpperfif || calcData.isZero) {
    //             return calcData.earningPrice
    //                 ? (calcData.earningPrice / 100).toFixed(2)
    //                 : 0;
    //         } else {
    //             return "请按平台查看";
    //         }
    //     }
    // }


    // /*************************************************
    //  * 格式化今日订单数据
    // */
    // function singleCalcPrice(calcData: AnyObject) {
    //     if (calcData.vendorPayPercentage != 0) {
    //         return calcData.vendorPayPercentage < 50 ? (calcData.actualPayPrice / 100).toFixed(2) : (calcData.earningPrice / 100).toFixed(2)
    //     } else {
    //         return calcData.isPointStore ? (calcData.actualPayPrice / 100).toFixed(2) : (calcData.earningPrice / 100).toFixed(2)
    //     }
    // }


    // /*************************************************
    //  * 查询打印机状态并连接
    // */
    // const playVoid = uni.createInnerAudioContext()
    // function setPrinterStatus() {
    //     // 获取打印机信息
    //     let data: any = getStorage('commitBTDevCharact')
    //     setInterval(() => {
    //         let isPlay = store.state.storeInfo.isConnectPrinter
    //         // 判断打印机是否在线
    //         util.notifyBLEState(data.deviceId, data.serviceId, data.uuid)
    //             .then(async (res) => {
    //                 if (res != 12) {
    //                     console.log('连接失败')
    //                     await bluetooth.reconnect()
    //                     if (!isPlay) return
    //                     playVoidFn()
    //                     store.commit('storeInfo/setIsConnectPrinter', false)

    //                 } else {
    //                     console.log('连接正常')
    //                     store.commit('storeInfo/setIsConnectPrinter', true)
    //                 }
    //             }).catch(async () => {
    //                 console.log('连接失败')
    //                 await bluetooth.reconnect()
    //                 if (!isPlay) return
    //                 playVoidFn()
    //                 store.commit('storeInfo/setIsConnectPrinter', false)
    //             })
    //     }, 1000 * 10)
    // }
    // // 播放音频
    // function playVoidFn() {
    //     playVoid.src = 'https://image.jxc4.com/image/ee1174253ee2919a23d7ea5277b2141b.jpg'
    //     playVoid.stop()
    //     playVoid.play()
    // }


    /*************************************************
     * 提示用户未勾选
    */
    let time: any = null
    function isUserAgreementFn() {
        store.commit('serveInfo/setIsAgreementIf', false)
        clearTimeout(time)
        time = setTimeout(() => {
            uni.vibrateShort({})
            store.commit('serveInfo/setIsAgreementIf', true)
        }, 200)
    }

    // // ******************** 判断是否有淘鲜达 *****************************
    // //#region 
    // const storeMaps = computed(() => {
    //     return store.state.storeInfo.allStoreInfo
    // })
    // // function isTxd() {
    // //     let state = false
    // //     storeMaps.value.StoreMaps.forEach((item: AnyObject) => {
    // //         if (item.vendorID == 16) {
    // //             state = true
    // //         }
    // //     })
    // //     return state
    // // }
    // //#endregion

    // /**
    // * 查询美团/饿百的IM状态
    // */
    // const getMtStoreIMStatus = async () => {
    //     let mtStore = isExistPlatformID(1)
    //     let ebStore = isExistPlatformID(3)
    //     let data = []
    //     if (mtStore && mtStore.length > 0) {
    //         data.push({
    //             vendorID: 1,
    //             vendorOrgCode: mtStore[0].vendorOrgCode + '',
    //             vendorStoreID: mtStore[0].vendorStoreID + ''
    //         })
    //     }

    //     if (ebStore && ebStore.length > 0) data.push({
    //         vendorID: 3,
    //         vendorOrgCode: ebStore[0].vendorOrgCode + '',
    //         vendorStoreID: ebStore[0].vendorStoreID + ''
    //     })
    //     if (data.length === 0) return
    //     let res = await merchant.get_mt_store_im_status({ data: data })
    //     let arr: any = []
    //     if (res.code === '0') {

    //         res.data.forEach((item: AnyObject) => {
    //             if (item.errMsg && item.errMsg) arr.push({
    //                 ...item,
    //                 vendorID: +item.errMsg.substring(0, 1)
    //             })
    //             else arr.push({ ...item })
    //         })
    //     }
    //     store.commit('storeInfo/setImOnlineStatus', arr)
    // }

    // /**
    //  * 是否存在某个平台
    //  */
    // function isExistPlatformID(platformID: number) {
    //     return storeMaps.value.StoreMaps && storeMaps.value.StoreMaps.length > 0 ? storeMaps.value.StoreMaps.filter((item: AnyObject) => item.vendorID == platformID) : []
    // }

    // /**
    //  * 是否含有聊天表情
    //  */
    // function isCloudEmoji(emoji: string) {
    //     let emojiArr = emoji.match(/\[(.+?)\]/g)
    //     return emojiArr && emojiArr.length > 0 ? true : false
    // }

    // interface emojiType {
    //     type: string,
    //     text: string,
    //     emoji: string
    // }

    // /**
    //  * 解析emoji数据
    //  */
    // function analyEmoji(emoji: string) {
    //     if (!isCloudEmoji(emoji)) {
    //         return [
    //             {
    //                 type: 'text',
    //                 text: emoji,
    //                 emoji: ''
    //             }
    //         ]
    //     }

    //     // emoji = '[大哭][大哭][大哭][大哭][心碎][心碎][心碎]11111顶顶顶顶呃零零零零[流泪]iiiihdhggydgjfg kevbuygbhjbnb'

    //     let arr: emojiType[] = []

    //     let emojiArr: string[] = emoji.match(/\[(.+?)\]/g) || []
    //     if (emojiArr && emojiArr.length > 0) {
    //         emojiArr.map((item, index) => {
    //             let emojiImg = emojiAnanlyze(item)  // 返回的emoji解析数据
    //             if (emojiImg === item) emojiImg = 'unknown:' + item    // 未知表情
    //             let indexOf = emoji.indexOf(item)   // item在聊天emoji中的位置

    //             if (indexOf === 0) {
    //                 // emoji
    //                 arr.push({
    //                     type: 'emoji',
    //                     text: '',
    //                     emoji: emojiImg
    //                 })

    //                 // emoji之后的文字
    //                 let afterSymbol = emoji.substring(indexOf + item.length, indexOf + item.length + 1)
    //                 if (afterSymbol !== '[' && afterSymbol.length > 0 && index === emojiArr.length - 1) {
    //                     arr.push({
    //                         type: 'text',
    //                         text: emoji.substring(indexOf + item.length),
    //                         emoji: ''
    //                     })
    //                 }
    //             } else {
    //                 // emoji之前的文字
    //                 arr.push({
    //                     type: 'text',
    //                     text: emoji.substring(0, indexOf),
    //                     emoji: ''
    //                 })

    //                 // emoji
    //                 arr.push({
    //                     type: 'emoji',
    //                     text: '',
    //                     emoji: emojiImg
    //                 })

    //                 // emoji之后的文字
    //                 let afterSymbol = emoji.substring(indexOf + item.length, indexOf + item.length + 1)
    //                 if (afterSymbol !== '[' && afterSymbol.length > 0 && index === emojiArr.length - 1) {
    //                     arr.push({
    //                         type: 'text',
    //                         text: emoji.substring(indexOf + item.length),
    //                         emoji: ''
    //                     })
    //                 }
    //             }

    //             emoji = emoji.replace(emoji.substring(0, indexOf + item.length), '')    // 清除已处理完的数据
    //         })
    //     }
    //     return arr || []
    // }



    return {
        // globGetToDay,               //获取实时订单数据
        saveImageToAlbum,           // 保存图片
        previewImage,               // 查看详情图
        setUserInfo,                // 储存用户信息
        // newMessage,                 // 展示新信息
        // copyInfo,                   // 复制信息
        // phoneCall,                  // 拨打电话
        // globalPlayMoney,            // 统一支付
        // isTrades,                   // 判断是否是在营业时间
        // wholeCalcPrice,             // 格式化今日订单数据
        // singleCalcPrice,            // 格式化今日订单数据
        // setPrinterStatus,           // 查询打印机状态并连接
        // logOutFn,                   // 退出登录
        isUserAgreementFn,          // 提示用户未勾选
        // // isTxd,                      // 判断是否有淘鲜达
        // getMtStoreIMStatus,         // 获取美团IM单聊状态
        // analyEmoji,                 // 解析emoji表情
        // isCloudEmoji                // 是否含有emoji
    }
}


export default useGlobalFunc