const app = getApp()
var innerAudioContext = wx.createInnerAudioContext()
Page({
    data: {
        nameTxt: '名片',
        dataList: [],
        curIndex: 0, //用来记录请求次数
        speedStep: 5, //快进快退秒数
        waitFlag: false,
        avatarUrl: app.globalData.userInfo.avatarUrl,
        areaList: [],
        cardHeight: '',
        cardInfo: {},
        cardUrl: app.urls.baseImgUrl,
        personIntro: {},
        companyIntro: {},
        shareImg: '',
        phoneTxt: '未录入',
        emailTxt: '未录入',
        wechateTxt: '未录入',
        addressTxt: '未录入',
        viewInfo: {},
        forwardCount: '',
        imgUrl: app.urls.baseImgUrl,
        shareRecordId: '',
        isShowBarCode: false,
        browUserList: [],
        shareImgUrl: '',
        tempUserId: '', //当前名片用户的ID
        cardTemplateDispatchId: '', //用来标记是否是分享过来的
        cardTemplateUseId: '', //分享过来的名片id
        isShowCard: false, //用来显示我浏览过的名片
        otherCardList: [], //卡包名片
        isPlayAudio: false, //标识当前是否在播放音乐
        audioId: '',
        count: 3,
        animationData: {},
        isShowBtn: false
    },
    onLoad(options) {
        var self = this
        self.setData({
            cardTemplateUseId: options.cardTemplateUseId
        })
        self.buildId()
        self.getCard()
    },
    // 获取名片
    getCard() {
        var self = this
        app.http.get(app.urls.shareCard.format({
            cardTemplateUseId: self.data.cardTemplateUseId
        }), {
            header: {
                token: app.globalData.token
            }
        }).then(res => {
            var area = res.data.areaList
            area.forEach(it => {
                if (it.templateAreaSource == 'name') {
                    self.setData({
                        nameTxt: it.templateAreaFontValue
                    })
                }
            })
            self.setData({
                cardInfo: res.data,
                areaList: area,
                dataList: []
            })

            if (res.data) {
                self.toSaveLocalImg(res.data.cardTemplateUseDispatchPhoto) //保存分享的图片
                self.getBrowCardUserList(res.data.cardTemplateUseId) //获取浏览数量
                self.setData({
                    tempUserId: res.data.creator
                })
                self.getMainColumn(res.data.creator) //获取当前用户的栏目
                self.getMainBaseUserInfo(res.data.creator) //获取当前人员基础信息
            }
        })
    },
    //将分享的Base64图片保存至本地
    toSaveLocalImg(data) {
        var _self = this
        var base64 = data
        var imgPath = wx.env.USER_DATA_PATH + '/index' + 'share.png'
        var imageData = base64.replace(/^data:image\/\w+;base64,/, "");
        var fs = wx.getFileSystemManager();
        fs.writeFileSync(imgPath, imageData, "base64");
        this.setData({
            shareImgUrl: imgPath
        })
    },
    //获取浏览当前名片的用户头像列表
    getBrowCardUserList(id) {
        var _self = this
        app.http.get(app.urls.getCardBrowUserList, {
                header: {
                    token: app.globalData.token
                },
                data: {
                    page: '1',
                    rows: '7',
                    cardTemplateUseId: id
                }
            })
            .then(res => {
                if (res.data) {
                    _self.setData({
                        browUserList: res.data.rows
                    })
                }
            })
            .catch(err => {
                console.log(err)
            })
    },
    //获取首页展示的栏目
    getMainColumn(id) {
        console.log(id)
        var _self = this
        _self.setData({
            dataList: []
        })
        app.http.get(app.urls.getMainColumn, {
                header: {
                    token: app.globalData.token
                },
                data: {
                    creator: id
                }
            })
            .then(res => {
                wx.showLoading({
                    title: '加载中...',
                })
                _self.getMainMoment(res.data, id, 0)
            })
            .catch(err => {
                wx.stopPullDownRefresh({})
            })
    },
    //获取首页栏目数据
    getMainMoment(datas, userid, index) {
        var _self = this
        var count = datas.length
        if (index < count) {
            app.http.get(app.urls.getMainMoment.format({
                    configColumnId: datas[_self.data.curIndex].configColumnId
                }), {
                    header: {
                        token: app.globalData.token
                    },
                    data: {
                        userId: userid
                    }
                })
                .then(res => {
                    if (res.data.length > 0) {
                        var tempItem = {
                            cId: datas[_self.data.curIndex].configColumnId,
                            type: datas[_self.data.curIndex].configColumnType,
                            name: datas[_self.data.curIndex].configColumnName,
                            mode: datas[_self.data.curIndex].configTableMode,
                            list: res.data.slice(0, datas[_self.data.curIndex].configColumnRowCount)
                        }
                        _self.data.dataList.push(tempItem)
                    }
                    _self.setData({
                        curIndex: ++_self.data.curIndex
                    })
                    _self.getMainMoment(datas, userid, _self.data.curIndex)

                })
                .catch(err => {
                    _self.setData({
                        curIndex: ++_self.data.curIndex
                    })
                    if (datas[_self.data.curIndex]) {
                        _self.getMainMoment(datas, userid, _self.data.curIndex)
                    }
                })
        } else {
            wx.hideLoading({})
            wx.stopPullDownRefresh({})
            _self.buildMainData()
        }
    },
    //构建主页显示数据
    buildMainData() {
        var _self = this
        _self.data.dataList.forEach(it => {
            it.list.forEach(item => {
                item.list.forEach(iem => {
                    switch (iem.dataType) {
                        case '2': //图片
                            var photoIds = iem.value.split('@')
                            if (photoIds.length > 1) {
                                //展示方式
                                iem.dataMode = photoIds[1]
                            } else {
                                iem.dataMode = '1'
                            }
                            var items = photoIds[0].split(',')
                            var tempList = []
                            items.forEach(item => {
                                var tempItem = {
                                    id: item,
                                    path: app.urls.baseImgUrl + item,
                                }
                                tempList.push(tempItem)
                            })
                            iem.valueList = tempList
                            break
                        case '3': //音频
                            var items = iem.value.split(',')
                            var tempList = []
                            items.forEach(item => {
                                if (item.length > 0) {
                                    var ss = item.split('&')
                                    var totalStr = '00:00'
                                    if (ss.length > 1) {
                                        var dur = ss[1]
                                        var tM = parseInt(dur / 60) //分钟
                                        var tS = parseInt(dur % 60) //秒
                                        var totalMStr = tM > 9 ? tM : '0' + tM
                                        var totalSStr = +tS > 9 ? tS : '0' + tS
                                        totalStr = totalMStr + ':' + totalSStr
                                    }
                                    var tempItem = {
                                        id: ss[0], //id
                                        path: app.urls.baseImgUrl + ss[0], //地址
                                        isPlay: false, //是否播放中
                                        duration: 100000, //时长
                                        curDuration: 0,
                                        curDurationStr: '00:00',
                                        totalDurationStr: totalStr
                                    }
                                    tempList.push(tempItem)
                                }
                            })
                            iem.valueList = tempList
                            break
                        case '4': //视频
                            var items = iem.value.split(',')
                            var tempList = []
                            for (var i = 0; i < items.length; i++) {
                                if (items[i].length > 0) {
                                    var ss = items[i].split('&')
                                    var videoUrl = app.urls.baseImgUrl + ss[0]
                                    var imgUrl = app.urls.baseImgUrl + ss[1]
                                    var tempItem = {
                                        path: videoUrl,
                                        imgPath: imgUrl
                                    }
                                    tempList.push(tempItem)
                                }
                            }
                            iem.valueList = tempList
                            break
                        case '6':
                            var items = iem.value.split('-')
                            var tempList = []
                            items.forEach(item => {
                                if (item.length > 0) {
                                    var latlng = item.split(',')
                                    var tempItem = {
                                        name: '',
                                        address: '',
                                        latitude: latlng[0],
                                        longitude: latlng[1],
                                    }
                                    tempList.push(tempItem)
                                }
                            })
                            iem.valueList = tempList
                            break
                        case '8': //单选
                            iem.dictionariesList.forEach(ss => {
                                if (iem.value.indexOf(ss.dataId) != -1) {
                                    iem.selValue = ss.dataName
                                }
                            })
                            break
                        case '9': //多选
                            iem.dictionariesList.forEach(ss => {
                                if (iem.value.indexOf(ss.dataId) != -1) {
                                    ss.isSel = true
                                } else {
                                    ss.isSel = false
                                }
                            })
                            break
                    }
                })
            })
        })
        _self.setData({
            curIndex: 0,
            dataList: _self.data.dataList
        })
    },
    //获取首页基础数据 电话 微信号 地址 邮箱
    getMainBaseUserInfo(userid) {
        var _self = this
        app.http.get(app.urls.getMainMoment.format({
                configColumnId: 'de7b5e22-64f9-4c60-a1f9-6ac004dfb9a8'
            }), {
                header: {
                    token: app.globalData.token
                },
                data: {
                    userId: userid
                }
            })
            .then(res => {
                if (res.data.length > 0) {
                    _self.setData({
                        isShowBtn: true
                    })
                    res.data[0].list.forEach(it => {
                        switch (it.name) {
                            case 'phone':
                                _self.setData({
                                    phoneTxt: it.value
                                })
                                break
                            case 'wechat':
                                _self.setData({
                                    wechateTxt: it.value
                                })
                                break
                            case 'email':
                                _self.setData({
                                    emailTxt: it.value
                                })
                                break
                            case 'address':
                                _self.setData({
                                    addressTxt: it.value
                                })
                                break
                        }
                    })
                } else {
                    _self.setData({
                        isShowBtn: false
                    })
                }
            })
            .catch(err => {
                console.log(err)
            })
    },
    // 生成随机id
    buildId: function () {
        var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];

        var nums = "";

        for (var i = 0; i < 36; i++) {
            var id = parseInt(Math.random() * 61);

            nums += chars[id];
        }
        return nums
    },
    //显示详情
    showDetail(e) {
        var type = e.currentTarget.dataset.ctype //需要跳详情
        if (type.indexOf('dda5007c-5fb7-48f2-8537-3cb8ea298242') != -1) {
            //需要跳详情
            var cId = e.currentTarget.dataset.cid
            var uId = e.currentTarget.dataset.id
            wx.navigateTo({
                url: '/packagecard/moments/momentsdetail/momentsdetail?uId=' + uId + '&cId=' + cId,
            })
        }
    },
    onHide(e) {
        this.setData({
            isShowCard: false
        })
        if (innerAudioContext) {
            innerAudioContext.stop()
        }
    },
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function (res) {
        var self = this
        wx.showShareMenu({
            withShareTicket: true,
            success: function (res) {
                console.log(res)
            }
        })

        // if (res.from == 'button') {
        var postId = self.buildId()
        self.shareRecord(postId)

        var param = '/pages/index/index?cardTemplateDispatchId=' + postId;
        return {
            title: '您好,这是我的电子名片,请查看.',
            path: param,
            imageUrl: self.data.shareImgUrl
        }
        // return返回    title 转发标题    path 路径 imageUrl 自定义图片,可以本地路径  代码包文件路径  支持png jpg 显示长宽比5:4
        // }
    },
    // 转发记录
    shareRecord: function (cardTemplateDispatchId) {
        var self = this
        app.http.post(app.urls.shareRecord, {
            header: {
                token: app.globalData.token
            },
            data: {
                cardTemplateUseId: self.data.cardInfo.cardTemplateUseId,
                cardTemplateDispatchParentId: '',
                cardTemplateDispatchId: cardTemplateDispatchId
            }
        }).then(res => {
            self.setData({
                shareRecordId: res.data.data
            })
        })
    },
    // 展示名片码
    showBarCode: function () {
        var _self = this
        wx.navigateTo({
            url: '/packagecard/sharePage/cardcode?cardImg=' + _self.data.cardInfo.cardTemplateUsePhotoUrl + '&id=' + _self.data.cardInfo.cardTemplateUseBarcode,
        })
        // this.setData({
        //     isShowBarCode: true
        // })
        // wx.hideTabBar()
        // var anim = wx.createAnimation({
        //     duration: 1200,
        //     timingFunction: 'linear',
        //     transformOrigin: '50% 50% 0'
        // })
        // anim.rotate(180).step()
        // this.setData({
        //     animationData: anim.export()
        // })
    },
    // 隐藏名片码
    hideBarCode: function () {
        this.setData({
            isShowBarCode: false
        })
        wx.showTabBar()
    },
    // 获取转发数
    getForwardCount: function () {
        var self = this
        app.restAjax.get(app.restAjax.path('{cardUrl}app/templateforwardingrecord/count', [app.cardUrl]), {
            templateUseId: self.data.cardInfo.cardPersonId
        }, {
            headers: {
                token: app.globalData.token
            }
        }, function (code, data) {
            self.setData({
                forwardCount: data.data
            })
        }, function (code, data) {
            app.dialog.msg(data.msg);
        });
    },
    // 复制文本
    copyText: function (e) {
        var self = this
        var text = e.currentTarget.dataset.text
        if (text) {
            wx.setClipboardData({
                data: text,
                success: function () {}
            })
        }
    },
    // 加入卡包
    includedCard: function () {
        var self = this
        app.http.post(app.urls.includedCard, {
                header: {
                    token: app.globalData.token
                },
                data: {
                    cardTemplateUseBagId: "",
                    cardTemplateUseId: self.data.cardInfo.cardTemplateUseId,
                    cardTemplateUseStar: "",
                    cardTemplateUseTag: "",
                    cardTemplateUseTop: ""
                }
            }).then(res => {
                console.log(res.data)
                wx.showToast({
                    title: '加入卡包成功！',
                })
            })
            .catch(err => {

            })
    },
    // 拨打电话
    makeCall: function () {
        var self = this
        var phone = self.data.phoneTxt
        if (phone) {
            wx.makePhoneCall({
                phoneNumber: phone,
            })
        }
    },
    // 获取浏览数
    getViewCount: function () {
        var self = this
        app.restAjax.get(app.restAjax.path('{cardUrl}app/templateviewrecord/getByTemplateUseId/' + self.data.cardInfo.cardPersonId, [app.cardUrl]), {}, {
            headers: {
                token: app.globalData.token
            }
        }, function (code, data) {
            self.setData({
                viewInfo: data
            })
        }, function (code, data) {
            if (data.msg) {
                app.dialog.msg(data.msg);
            }
        });
    },
    //获取浏览当前名片的用户头像列表
    getBrowCardUserList(id) {
        var _self = this
        app.http.get(app.urls.getCardBrowUserList, {
                header: {
                    token: app.globalData.token
                },
                data: {
                    page: '1',
                    rows: '7',
                    cardTemplateUseId: id
                }
            })
            .then(res => {
                if (res.data) {
                    _self.setData({
                        browUserList: res.data.rows
                    })
                }
            })
            .catch(err => {
                console.log(err)
            })
    },
    // 存入通讯录
    addContact: function () {
        var self = this
        wx.addPhoneContact({
            firstName: self.data.nameTxt,
            mobilePhoneNumber: self.data.phoneNum
        })
    },
    //预览图片
    viewImg(e) {
        var imgs = e.currentTarget.dataset.values
        var cur = e.currentTarget.dataset.url
        var imgPaths = []
        imgs.forEach(it => {
            imgPaths.push(it.path)
        })
        wx.previewImage({
            urls: imgPaths,
            current: cur
        })
    },
    //预览视频
    viewVideo(e) {
        var url = e.currentTarget.dataset.url
        wx.previewMedia({
            sources: [{
                url: url,
                type: 'video'
            }],
        })
    },
    play(e) {
        //进行播放
        const _self = this
        const index = e.currentTarget.dataset.index
        const idx = e.currentTarget.dataset.idx
        const ix = e.currentTarget.dataset.i
        const a = e.currentTarget.dataset.a
        var audio = e.currentTarget.dataset.item
        console.log(_self.data.isPlayAudio)
        if (_self.data.isPlayAudio) {
            //有播放的
            //先需要停止其他录音文件的播放
            _self.data.dataList.forEach(it => {
                it.list.forEach(item => {
                    item.list.forEach(ix => {
                        if (ix.dataType == '3') {
                            if (ix.valueList) {
                                ix.valueList.forEach(ii => {
                                    ii.isPlay = false
                                    ii.curDuration = 0
                                    ii.curDuationStr = '00:00'
                                })
                            }
                        }
                    })
                })
            })
            _self.setData({
                dataList: _self.data.dataList
            })
            innerAudioContext.stop()
            if (_self.data.audioId != audio.id) {
                wx.showLoading({
                    title: '加载中...',
                })
                setTimeout(function () {
                    wx.hideLoading({})
                    innerAudioContext.src = _self.data.dataList[index].list[idx].list[ix].valueList[a].path + '.mp3'
                    innerAudioContext.startTime = 0
                    innerAudioContext.autoplay = true
                    _self.data.dataList[index].list[idx].list[ix].valueList[a]['isPlay'] = true
                    _self.setData({
                        dataList: _self.data.dataList,
                        isPlayAudio: true,
                        audioId: audio.id
                    })
                }, 1500)
            }
        } else {
            //没有播放的
            innerAudioContext.src = _self.data.dataList[index].list[idx].list[ix].valueList[a].path + '.mp3'
            innerAudioContext.startTime = 0
            innerAudioContext.autoplay = true
            innerAudioContext.play()
            _self.data.dataList[index].list[idx].list[ix].valueList[a]['isPlay'] = true
            _self.setData({
                dataList: _self.data.dataList,
                isPlayAudio: true,
                audioId: audio.id
            })
        }
        innerAudioContext.onPlay(() => {

        });

        innerAudioContext.onCanplay((res) => {})
        innerAudioContext.onStop((res) => {
            console.log('onStop===')
            _self.data.dataList[index].list[idx].list[ix].valueList[a].isPlay = false
            _self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = 0
            _self.data.dataList[index].list[idx].list[ix].valueList[a].curDurationStr = '00:00'
            _self.setData({
                dataList: _self.data.dataList,
                isPlayAudio: false
            })
        })
        innerAudioContext.onEnded((res) => {
            console.log(res)
            console.log('播放完毕')
            _self.data.dataList[index].list[idx].list[ix].valueList[a].isPlay = false
            _self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = 0
            _self.data.dataList[index].list[idx].list[ix].valueList[a].curDurationStr = '00:00'
            _self.setData({
                dataList: _self.data.dataList,
                isPlayAudio: false
            })
        })
        innerAudioContext.onError((res) => {
            console.log('播放错误')
            console.log(res)
            _self.data.dataList[index].list[idx].list[ix].valueList[a].isPlay = false
            _self.data.dataList[index].list[idx].list[ix].valueList[a].curDuration = 0
            _self.data.dataList[index].list[idx].list[ix].valueList[a].curDurationStr = '00:00'
            _self.setData({
                dataList: _self.data.dataList,
                isPlayAudio: false
            })
        })
        innerAudioContext.onSeeking(() => {
            // console.log(innerAudioContext.currentTime)
        })
    },

    // 跳转模板列表
    goList: function () {
        wx.navigateTo({
            url: '/packagecard/cardList/cardList',
        })
    },
    //显示更多栏目数据
    showMore(e) {
        var item = e.currentTarget.dataset.item
        if (item.mode == '2') {
            var userid = e.currentTarget.dataset.userid
            var idx = e.currentTarget.dataset.idx
            wx.navigateTo({
                url: '/packagecard/moments/showlist/showlist?id=' + item.cId + '&userId=' + userid + '&index=' + idx,
            })
        }
    },
})