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, }) } }, })