card-mini/pages/mine/otherCard/othercarddetail.js

865 lines
31 KiB
JavaScript

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) {
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 options = datas[_self.data.curIndex]
var isOpen = options.configColumnCollect == '2' || options.configColumnCollect == '4' || options.configColumnLike == '2' && options.configColumnLike == '4' || options.configColumnDispatch == '2' || options.configColumnDispatch == '4' || options.configColumnComment == '2' || options.configColumnComment == '4'
var tempItem = {
funcSwitch: isOpen,
collectSwitch: datas[_self.data.curIndex].configColumnCollect, //收藏开关
commentSwitch: datas[_self.data.curIndex].configColumnComment, //评论开关
shareSwitch: datas[_self.data.curIndex].configColumnDispatch, //转发开关
likeSwitch: datas[_self.data.curIndex].configColumnLike, //点赞开关
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
var ids = ''
_self.data.dataList.forEach(it => {
it.list.forEach(item => {
ids += item.uid + ','
// 初始化评论 点赞 收藏状态
item.collectCount = 0
item.collectStatus = false
item.commentCount = 0
item.dispatchCount = 0
item.likeCount = 0
item.likeStatus = false
item.scansCount = 0
item.list.forEach(iem => {
switch (iem.dataType) {
case '2': //图片
if (iem.value.length > 0) {
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
})
_self.getColumnContentHandle(ids)
},
//获取栏目内容点赞 收藏 评论
getColumnContentHandle(ids) {
var _self = this
wx.showLoading({
title: '加载中...',
})
app.http.get(app.urls.getColumnContentHandle.format({
projectId: 'column',
businessIds: ids
}), {
header: {
token: app.globalData.token
}
})
.then(res => {
wx.hideLoading({})
res.data.forEach(it => {
_self.data.dataList.forEach(item => {
item.list.forEach(iem => {
if (iem.uid == it.businessId) {
iem.collectCount = it.collectCount
iem.collectStatus = it.collectStatus
iem.commentCount = it.commentCount
iem.dispatchCount = it.dispatchCount
iem.likeCount = it.likeCount
iem.likeStatus = it.likeStatus
iem.scansCount = it.scansCount
}
})
})
})
_self.setData({
curIndex: 0,
dataList: _self.data.dataList
})
})
.catch(err => {
})
},
//获取首页基础数据 电话 微信号 地址 邮箱
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
var like = e.currentTarget.dataset.like
var collect = e.currentTarget.dataset.collect
var comment = e.currentTarget.dataset.comment
var share = e.currentTarget.dataset.share
var params = '&collectSwitch=' + collect + '&likeSwitch=' + like + '&commentSwitch=' + comment + '&shareSwitch=' + share
wx.navigateTo({
url: '/packagecard/moments/momentsdetail/momentsdetail?uId=' + uId + '&cId=' + cId + params,
})
}
},
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,
})
}
},
//显示评论
showComment(e) {
//需要跳详情
var cId = e.currentTarget.dataset.cid
var uId = e.currentTarget.dataset.uid
var like = e.currentTarget.dataset.like
var collect = e.currentTarget.dataset.collect
var comment = e.currentTarget.dataset.comment
var share = e.currentTarget.dataset.share
var params = '&collectSwitch=' + collect + '&likeSwitch=' + like + '&commentSwitch=' + comment + '&shareSwitch=' + share
console.log(params)
wx.navigateTo({
url: '/packagecard/moments/momentsdetail/momentsdetail?uId=' + uId + '&cId=' + cId + params,
})
},
//点赞
doLike(e) {
var _self = this
var item = e.currentTarget.dataset.item
var idx = e.currentTarget.dataset.idx //内容索引
var index = e.currentTarget.dataset.index //栏目索引
var favor = item.likeStatus
var msg = ''
if (favor) {
msg = '取消中...'
} else {
msg = '保存中...'
}
wx.showLoading({
title: msg,
})
app.http.post(app.urls.doSaveLike, {
header: {
token: app.globalData.token
},
data: {
businessId: item.uid,
projectId: 'column'
}
})
.then(res => {
wx.hideLoading({})
_self.data.dataList[index].list[idx].likeStatus = !item.likeStatus
if (item.likeStatus) {
--_self.data.dataList[index].list[idx].likeCount
} else {
++_self.data.dataList[index].list[idx].likeCount
}
_self.setData({
dataList: _self.data.dataList
})
})
.catch(err => {})
},
//收藏
doCollect(e) {
var _self = this
var item = e.currentTarget.dataset.item
var idx = e.currentTarget.dataset.idx //内容索引
var index = e.currentTarget.dataset.index //栏目索引
var favor = item.collectStatus
var msg = ''
if (favor) {
msg = '取消收藏...'
} else {
msg = '收藏中...'
}
wx.showLoading({
title: msg,
})
app.http.post(app.urls.doSaveCollect, {
header: {
token: app.globalData.token
},
data: {
businessId: item.uid,
projectId: 'column'
}
})
.then(res => {
wx.hideLoading({})
_self.data.dataList[index].list[idx].collectStatus = !item.collectStatus
_self.setData({
dataList: _self.data.dataList
})
})
.catch(err => {})
}
})