Files
im-system/im-uniapp/common/publicFc.js
2023-12-01 23:57:44 +08:00

1100 lines
26 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import http from '@/common/request'
import browser from '@/common/browser'
import store from '../store'
import pinyin from '@/common/pinyin.js';
import dayjs from "dayjs"
import localForage from 'localforage';
export default {
// 获取字典
getdict(dict) {
return new Promise((resolve, reject) => {
http.request({
url: '/system/dict/data/type/' + dict,
success: (res) => {
if (res.data.code == 200) {
var data = res.data.data
var arr = []
for (var i = 0; i < data.length; i++) {
arr.push({
label: data[i].dictLabel,
value: data[i].dictValue
})
}
// return arr
resolve(arr);
} else {
reject(res);
}
},
fail: (res) => {
reject(new Error(res.errMsg));
}
});
});
},
//文本转json
returnParse(txt) {
return JSON.parse(txt);
},
//字典翻译
findLabel(arr, text) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].value == text) {
return arr[i].label
break;
}
}
},
//判断按钮权限
permissions(permissions) {
var data = store.state.permissions
var have = data.indexOf(permissions)
if (have !== -1) {
return true
}
},
//判断单个角色权限
hasRole(Role) {
var data = store.state.userRole
var have = data.indexOf(Role)
if (have !== -1) {
return true
}
},
//判断多个角色权限
hasRoles(Roles) {
var data = store.state.userRole
function fidrole(Roles) {
for (var i = 0; i < Roles.length; i++) {
var have = data.indexOf(Roles[i])
if (have !== -1) {
return true
}
}
return false
}
return fidrole(Roles)
},
//预览单张图片
previewImagesolo(File) {
uni.previewImage({
urls: [File],
});
},
//预览一组图片(图片组,图片索引)
previewImages(FilePaths, current) {
uni.previewImage({
urls: FilePaths,
current: current
});
},
//根据后缀判断文件类型
getFileType(fileName) {
// 后缀获取
let suffix = '';
// 获取类型结果
let result = '';
try {
const flieArr = fileName.split('.');
suffix = flieArr[flieArr.length - 1];
} catch (err) {
suffix = '';
}
// fileName无后缀返回 false
if (!suffix) {
return false;
}
suffix = suffix.toLocaleLowerCase();
// 图片格式
const imglist = ['png', 'jpg', 'jpeg', 'bmp', 'gif'];
// 进行图片匹配
result = imglist.find(item => item === suffix);
if (result) {
return 'image';
}
// 匹配txt
const txtlist = ['txt'];
result = txtlist.find(item => item === suffix);
if (result) {
return 'txt';
}
// 匹配 excel
const excelist = ['xls', 'xlsx'];
result = excelist.find(item => item === suffix);
if (result) {
return 'excel';
}
// 匹配 word
const wordlist = ['doc', 'docx'];
result = wordlist.find(item => item === suffix);
if (result) {
return 'word';
}
// 匹配 pdf
const pdflist = ['pdf'];
result = pdflist.find(item => item === suffix);
if (result) {
return 'pdf';
}
// 匹配 ppt
const pptlist = ['ppt', 'pptx'];
result = pptlist.find(item => item === suffix);
if (result) {
return 'ppt';
}
// 匹配 视频
const videolist = ['mp4', 'm2v', 'mkv', 'rmvb', 'wmv', 'avi', 'flv', 'mov', 'm4v'];
result = videolist.find(item => item === suffix);
if (result) {
return 'video';
}
// 匹配 音频
const radiolist = ['mp3', 'wav', 'wmv'];
result = radiolist.find(item => item === suffix);
if (result) {
return 'radio';
}
// 其他 文件类型
return 'other';
},
//新开页面打开文档支持格式doc, xls, ppt, pdf, docx, xlsx, pptx
onOpenDoc(e) {
uni.downloadFile({
url: e,
success: function(res) {
var filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
success: function(res) {
console.log('打开文档成功');
}
});
}
});
},
//模拟浏览器打开第三方链接
openWebView(url) {
// #ifndef APP-PLUS
uni.showToast({
title: '仅手机端可打开',
icon: 'none'
})
return
// #endif
var options = { // 自定义头部参数
}
browser.init(options)
browser.show(url)
},
//获取时间format
getNewDate(format, add0, datetime) {
//获取当前时间
function addZero(val) {
//补零
if (add0) {
return val <= 9 ? '0' + val : val;
} else {
return val
}
}
var date = new Date()
if (datetime) {
date = Date.parse(new Date(datetime))
}
var year = date.getFullYear(),
month = addZero(date.getMonth() + 1),
strDate = addZero(date.getDate()),
hours = addZero(date.getHours()),
minutes = addZero(date.getMinutes()),
seconds = addZero(date.getSeconds());
switch (format) {
case 'y':
return year;
break;
case 'm':
return month;
break;
case 'd':
return strDate;
break;
case 'h':
return hours;
break;
case 'mm':
return minutes;
break;
case 'ss':
return seconds;
break;
case 'ymd':
return year + '/' + month + '/' + strDate;
break;
case 'hmmss':
return hours + ':' + minutes + ':' + seconds;
break;
default:
return year + '/' + month + '/' + strDate + ' ' + hours + ':' + minutes + ':' + seconds;
break;
}
},
//获取本地存储object/初始化
getKeyObjectStorage(keyname) {
try {
var chatData = uni.getStorageSync(keyname);
if (chatData) {
chatData = JSON.parse(chatData)
return chatData
} else {
chatData = new Object()
return chatData
uni.setStorageSync(keyname, JSON.stringify(chatData));
}
} catch (e) {
return new Object()
}
},
loadMore({
url = 'xxx/list/',
queryParams = {
refreshing: false,
pageNum: 1,
status: 'more', //more loading前 loading loading中 noMore 没有更多了
pageSize: 10
},
status = '0' //0无更多数据 1持续加载 2重新加载 3无数据+清空数据
}) {
return new Promise((resolve, reject) => {
http.request({
url: url + '&pageNum=' + (queryParams.refreshing ? 1 : queryParams.pageNum) +
'&pageSize=' + queryParams.pageSize,
success: res => {
if (res.data.code == 200) {
let list = [];
let data = res.data.rows;
if (queryParams.refreshing && res.data.rows == '' || queryParams
.refreshing && res.data.rows.length == 0) {
queryParams.status = 'noMore'
resolve({
queryParams: queryParams,
list: list,
status: '3'
})
return
}
if (res.data.rows == '' || res.data.rows.length == 0) {
queryParams.status = 'noMore'
resolve({
queryParams: queryParams,
list: list,
status: '0'
})
return
}
for (let i = 0, length = data.length; i < length; i++) {
var item = data[i];
list.push(item);
}
if (queryParams.refreshing) {
queryParams.refreshing = false;
queryParams.pageNum = 2;
queryParams.status = 'more'
resolve({
queryParams: queryParams,
list: list,
status: '2'
})
} else {
queryParams.pageNum += 1;
queryParams.status = 'more'
resolve({
queryParams: queryParams,
list: list,
status: '1'
})
}
} else {
reject(res);
}
},
fail: (res) => {
reject(res);
}
});
});
},
//接收推送消息
getPush(resbody) {
var pushType = resbody.pushType //推送类型
if (pushType == 'MSG') {
/*
if(resbody.msgContent.msgType=='TRTC_VOICE_START'||resbody.msgContent.msgType=='TRTC_VIDEO_START'){
//音视频开始拦截
return
}
*/
var userId = resbody.userId
var windowType = 'SINGLE'
/*
if(resbody.groupInfo.userId){
userId=resbody.groupInfo.userId
windowType='GROUP'
}
*/
const _userId = uni.getStorageSync("userId")
this.pushInMsg({
type: resbody.msgContent.msgType == 'ALERT' ? 3 : 1, //显示类型 1左侧 2右侧 3中间
msgContent: resbody.msgContent.content, //msg内容
msgType: resbody.msgContent.msgType, //msgType信息类型
windowType: windowType, //聊天室类型 SINGLE GROUP
time: resbody.createTime, //时间
fromInfo: resbody.fromInfo, //来源信息
groupInfo: resbody.groupInfo, //群信息
userId: userId, //talktoId
personId: resbody.fromInfo.userId,
msgId: resbody.msgId, //消息Id
disturb: resbody.msgContent.disturb, //是否静默消息
top: resbody.msgContent.top //是否置顶
})
return
}
if (pushType == 'NOTICE') { //红点通知等
if (resbody.msgContent.topicReply.count) {
store.commit('update_topicReply', resbody.msgContent.topicReply)
}
if (resbody.msgContent.topicRed.portrait) {
store.commit('update_topicRed', resbody.msgContent.topicRed)
}
if (resbody.msgContent.friendApply.count) {
store.commit('update_friendApply', resbody.msgContent.friendApply)
}
}
if (pushType == 'BIG') { //大消息
var bigId = resbody.msgContent.content
http.request({
url: '/chat/getBigMsg/' + bigId,
success: (res) => {
if (res.data.code == 200) {
var resbody = res.data.data
var userId = resbody.fromInfo.userId
var windowType = 'SINGLE'
if (resbody.groupInfo.userId) {
userId = resbody.groupInfo.userId
windowType = 'GROUP'
}
this.pushInMsg({
type: resbody.msgContent.msgType == 'ALERT' ? 3 : 1, //显示类型 1左侧 2右侧 3中间
msgContent: resbody.msgContent.content, //msg内容
msgType: resbody.msgContent.msgType, //msgType信息类型
windowType: windowType, //聊天室类型 SINGLE GROUP
time: resbody.createTime, //时间
fromInfo: resbody.fromInfo, //来源信息
groupInfo: resbody.groupInfo, //群信息
userId: userId, //talktoId
personId: resbody.fromInfo.userId,
msgId: resbody.msgId, //消息Id
disturb: resbody.msgContent.disturb, //是否静默消息
top: resbody.msgContent.top //是否置顶
})
}
}
});
return
}
},
// 接收到的聊天推送
pushInMsg({
msgId, //消息Id
msgContent, //内容
msgType, //消息类型
windowType, //聊天室类型 SINGLE GROUP
userId, //聊天对象ID
personId, //发送人ID
time, //时间
type, //显示类型 1左侧 2右侧 3中间
fromInfo, //来源
groupInfo, //群信息
disturb, //是否静默消息
top //是否置顶
}) {
var msgTypeLabel = ''; //消息类型
if (msgType == 'TEXT') {
msgTypeLabel = msgContent;
}
if (msgType == 'ALERT') {
msgTypeLabel = msgContent;
}
if (msgType == 'IMAGE') {
msgTypeLabel = '[图片]';
}
if (msgType == 'VOICE') {
msgTypeLabel = '[语音]';
}
if (msgType == 'VIDEO') {
msgTypeLabel = '[视频]';
}
if (msgType == 'LOCATION') {
msgTypeLabel = '[位置]';
}
if (msgType == 'COLLECTION') {
msgTypeLabel = '[收藏]';
}
if (msgType == 'CARD') {
msgTypeLabel = '[名片]';
}
if (msgType == 'FILE') {
msgTypeLabel = '[文件]';
}
if (msgType == 'TRTC_VOICE_END') {
msgTypeLabel = '[语音通话]'
}
if (msgType == 'TRTC_VIDEO_END') {
msgTypeLabel = '[视频通话]'
}
store.dispatch('createChatObj', {
userId: userId,
windowType: windowType,
}).then(res => {
var localData = res.data
store.dispatch('getchatDatalist');
store.dispatch('getChatList');
var chatWindowData = store.state.chatDatalist[userId].list
var chatListInfo = store.state.chatlist[userId]
var data2 = this.getKeyObjectStorage(store.state.userInfo.userId + '_' +
'chatlistData')
// var _num=data2[userId].num||
// 找到数组中对象属性值一样的对象并返回
function arrfindobject({
arr,
object,
key
}) {
var result = arr.find(item => {
return item[key] == object[key]
});
return result
}
var same = arrfindobject({
arr: chatWindowData,
object: {
msgId: msgId
},
key: 'msgId'
})
if (same) {
return
}
//离线消息体
var msgOffline = {
userId: userId,
personId: personId,
nickName: fromInfo.nickName,
portrait: fromInfo.portrait,
msgType: msgType,
content: msgContent,
time: time,
type: type,
msgId: msgId,
windowType: windowType
}
// 聊天记录体
var msgList = {}
if (windowType == 'SINGLE') {
msgList = {
userId: userId,
personId: personId,
nickName: fromInfo.nickName,
portrait: fromInfo.portrait,
content: msgTypeLabel,
time: dayjs().format("YYYY/MM/DD HH:mm:ss"),
num: disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num + 1 : 1),
windowType: windowType,
disturb: "N", //是否静默消息
top: "N", //是否置顶
userType: fromInfo.userType
}
}
if (windowType == 'GROUP') {
msgList = {
userId: userId,
personId: personId,
nickName: groupInfo.nickName,
portrait: groupInfo.portrait,
content: msgTypeLabel,
time: time,
num: disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num + 1 : 1),
windowType: windowType,
disturb: "N", //是否静默消息
top: top, //是否置顶
userType: 'GROUP'
}
}
chatWindowData.push(msgOffline)
store.dispatch('updateChatById', {
userId: userId,
data: chatWindowData
})
store.dispatch('updateChatListInfoById', {
userId: userId,
data: msgList
})
store.dispatch('tabBarpull')
store.dispatch('updateChatDataState', userId);
});
},
//发送消息
pushOutMsg({
msgContent, //内容
msgType, //消息类型
windowType, //聊天室类型SINGLE GROUP
userId
}) {
var msgTypeLabel = ''; //消息类型
if (msgType == 'TEXT') {
msgTypeLabel = msgContent;
}
if (msgType == 'ALERT') {
msgTypeLabel = msgContent;
}
if (msgType == 'IMAGE') {
msgTypeLabel = '[图片]';
}
if (msgType == 'VOICE') {
msgTypeLabel = '[语音]';
}
if (msgType == 'VIDEO') {
msgTypeLabel = '[视频]';
}
if (msgType == 'LOCATION') {
msgTypeLabel = '[位置]';
}
if (msgType == 'COLLECTION') {
msgTypeLabel = '[收藏]';
}
if (msgType == 'CARD') {
msgTypeLabel = '[名片]';
}
if (msgType == 'FILE') {
msgTypeLabel = '[文件]';
}
if (msgType == 'TRTC_VOICE_END') {
msgTypeLabel = '[语音通话]'
}
if (msgType == 'TRTC_VIDEO_END') {
msgTypeLabel = '[视频通话]'
}
var userInfo = store.state.userInfo;
store.dispatch('createChatObj', {
userId: userId,
windowType: windowType,
}).then(res => {
var localData = res.data
store.dispatch('getchatDatalist');
store.dispatch('getChatList');
var chatWindowData = store.state.chatDatalist[userId].list
var chatListInfo = store.state.chatlist[userId]
var time = this.getNewDate('format', true)
//在线消息体
var msgOnlie = {}
//聊天记录
var msgList = {}
var url = ''
if (windowType == 'SINGLE') {
msgOnlie = {
userId: userId,
msgType: msgType,
content: msgContent
}
url = '/chat/sendMsg'
msgList = {
userId: userId,
personId: userInfo.userId,
nickName: localData.fromInfo.nickName,
portrait: localData.fromInfo.portrait,
content: msgTypeLabel,
time: time,
num: chatListInfo.disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num : 0),
windowType: windowType,
disturb: chatListInfo.disturb ? chatListInfo.disturb : 'N', //是否静默消息
top: chatListInfo.top ? chatListInfo.top : 'N', //是否置顶
userType: localData.fromInfo.userType
}
}
if (windowType == 'GROUP') {
msgOnlie = {
groupId: userId,
msgType: msgType,
content: msgContent
}
url = '/group/sendMsg'
msgList = {
userId: userId,
personId: userInfo.userId,
nickName: localData.groupInfo.nickName,
portrait: localData.groupInfo.portrait,
content: msgTypeLabel,
time: time,
num: chatListInfo.disturb == 'Y' ? 'dot' : (chatListInfo.num ? chatListInfo.num : 0),
windowType: windowType,
disturb: chatListInfo.disturb ? chatListInfo.disturb : 'N', //是否静默消息
top: chatListInfo.top ? chatListInfo.top : 'N', //是否置顶
userType: 'GROUP'
}
}
//离线消息体 自己的消息
var msgOffline = {
userId: userInfo.userId,
personId: userInfo.userId,
nickName: userInfo.nickName,
portrait: userInfo.portrait,
msgType: msgType,
content: msgContent,
time: time,
type: 2,
msgId: 'local',
windowType: windowType
};
//离线/发送失败错误消息体
var msgNotSend = {
userId: userInfo.userId,
portrait: userInfo.portrait,
msgType: msgType,
content: msgContent,
type: 3
};
var msgSendType = 'wating';
//开始发送消息
store.dispatch('sendMsg', {
userId: userId,
data: msgOnlie
});
// TODO
// 发送完成之后设置消息状态
//TODO
// msgSendType = 'error';
msgOffline.sendtype = msgSendType;
msgOffline.msgId = "1231"
msgNotSend.content = msgOnlie.content;
msgList.content = msgOnlie.content;
chatWindowData.push(msgOffline);
if (msgSendType == 'error') {
chatWindowData.push(msgNotSend);
}
store.dispatch('updateChatById', {
userId: userId,
data: chatWindowData
});
store.dispatch('updateChatListInfoById', {
userId: userId,
data: msgList
});
store.dispatch('tabBarpull');
store.dispatch('updateChatDataState', userId);
return false;
http.request({
url: url,
method: 'POST',
data: JSON.stringify(msgOnlie),
success: res => {
if (res.data.code == 200) {
if (res.data.data.status !== '0') {
msgSendType = 'error';
msgOffline.sendtype = msgSendType;
msgOffline.msgId = res.data.data.msgId
msgNotSend.content = res.data.data.statusLabel;
msgList.content = res.data.data.statusLabel;
} else {
msgSendType = 'success';
}
} else {
msgSendType = 'error';
msgOffline.sendtype = msgSendType;
msgNotSend.content = res.data.msg;
}
chatWindowData.push(msgOffline);
if (msgSendType == 'error') {
chatWindowData.push(msgNotSend);
}
store.dispatch('updateChatById', {
userId: userId,
data: chatWindowData
});
store.dispatch('updateChatListInfoById', {
userId: userId,
data: msgList
});
store.dispatch('tabBarpull');
store.dispatch('updateChatDataState', userId);
},
fail: res => {
msgSendType = 'error';
msgOffline.sendtype = msgSendType;
msgNotSend.content = '发送失败,请检查网络';
chatWindowData.push(msgOffline);
chatWindowData.push(msgNotSend);
store.dispatch('updateChatById', {
userId: userId,
data: chatWindowData
});
store.dispatch('updateChatListInfoById', {
userId: userId,
data: msgList
});
store.dispatch('tabBarpull');
store.dispatch('updateChatDataState', userId);
}
});
});
},
//H5保存base64图片
h5SaveBase64Img({
base64
}) {
var arr = base64.split(',');
var bytes = atob(arr[1]);
let ab = new ArrayBuffer(bytes.length);
let ia = new Uint8Array(ab);
for (let i = 0; i < bytes.length; i++) {
ia[i] = bytes.charCodeAt(i);
}
var blob = new Blob([ab], {
type: 'application/octet-stream'
});
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = new Date().getTime() + ".png";
var e = document.createEvent('MouseEvents');
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
URL.revokeObjectURL(url);
},
//APP保存base64图片
plusSaveBase64Img({
base64
}) {
const bitmap = new plus.nativeObj.Bitmap("test");
bitmap.loadBase64Data(base64, function() {
const url = new Date().getTime() + ".png"; // url为时间戳命名方式
bitmap.save(url, {
overwrite: true, // 是否覆盖
}, (i) => {
uni.saveImageToPhotosAlbum({
filePath: url,
success: function() {
uni.showToast({
title: '图片保存成功',
icon: 'none'
})
bitmap.clear()
}
});
}, (e) => {
uni.showToast({
title: '图片保存失败',
icon: 'none'
})
bitmap.clear()
});
}, (e) => {
uni.showToast({
title: '图片保存失败',
icon: 'none'
})
bitmap.clear()
});
},
// 寻找数组中的对象中的key对应值的对象
arrFindkey({
arr, //数组[{id:'1'}]
key, //key键值'id'
val //值 '1'
}) {
var item = arr.find(function(obj, i, arr) {
return obj[key] === val
})
var index = arr.findIndex(function(obj, i, arr) {
return obj[key] === val
})
return {
item: item,
index: index
}
},
//APP下载文件
plusDownload({
onlinePath,
savePath = 'file://storage/emulated/0/Documents/weiliao/'
}) {
return new Promise((resolve, reject) => {
// #ifdef H5
reject('下载失败H5不支持plus')
return
// #endif
var fname = onlinePath.split("/").pop()
var localPath = savePath + fname
plus.io.resolveLocalFileSystemURL( //检测本地是否存在
localPath,
(entry) => {
console.log('文件已存在' + entry.name)
resolve(entry.fullPath)
},
(e) => {
console.log('文件不存在:' + e.message);
uni.showLoading({
title: '加载中'
})
createDownload(onlinePath)
}
);
function createDownload(e) {
let downloadOptions = {
method: "GET",
timeout: 120,
retryInterval: 10,
filename: savePath
};
// https://www.html5plus.org/doc/zh_cn/downloader.html#plus.downloader.Download
var dtask = plus.downloader.createDownload(e, downloadOptions, function(download, status) {
uni.hideLoading()
// 下载完成
if (status == 200) {
resolve(download.filename)
} else {
reject({
status: status,
msg: '下载失败'
})
}
});
dtask.start();
}
})
},
//APP打开文件
plusOpenFile({
filePath
}) {
let system = uni.getSystemInfoSync().platform;
if (system == 'ios') {
filePath = encodeURI(filePath);
}
uni.openDocument({
filePath,
success: res => {
// console.log('打开文件成功');
},
fail: res => {
console.log(res);
}
});
},
// 汉字拼音A-Z排序
sortList({
list,
key
}) {
var sortKey = [] //字母
list.forEach(item => {
let firstChar = ''
item[key] = item[key] ? item[key].trim() : ""
if (item[key]) { // 如传入空字符串getCamelFistChar错误地返回Y
firstChar = pinyin.getCamelFistChar(item[key]).toUpperCase() // 如字母开头,将返回字母且保留原大小写;一律改为大写
var reg = /^\d+$/;
if (reg.test(firstChar)) {
firstChar = 'Z#'
}
item.sort = firstChar
sortKey.push(firstChar)
}
})
sortKey = [...new Set(sortKey)]
list.sort((a, b) => a.sort.localeCompare(b.sort, 'zh')) //排序
sortKey.sort((a, b) => a.localeCompare(b, 'zh')) //排序
var sortlist = []
for (var i = 0; i < sortKey.length; i++) {
var sort = sortKey[i]
if (sort == 'Z#') {
sort = '#'
}
sortlist.push({
letter: sort,
data: []
})
for (var j = 0; j < list.length; j++) {
var item = list[j]
if (item.sort == 'Z#') {
item.sort = '#'
}
if (item.sort == sort) {
sortlist[i].data.push(item)
}
}
}
return sortlist
},
saoyisao() { //扫一扫
// #ifdef APP-PLUS
uni.scanCode({
success: (res) => {
var result = res.result
var data = res.result.split(':')
var type = data[0]
var value = data[1]
switch (type) {
case 'group':
uni.navigateTo({
url: '../../wx/groupInfo/scanCodeDetail?param=' + result
})
break;
case 'user':
uni.navigateTo({
url: '../../wx/personInfo/detail?param=' + value + '&source=1'
})
break;
default:
break;
}
}
});
// #endif
// #ifndef APP-PLUS
uni.showToast({
title: '扫一扫',
icon: 'none'
})
// #endif
},
// 设置原生titleNView导航文字
setTitleNViewBtns(index, text) {
let pages = getCurrentPages();
let page = pages[pages.length - 1];
// #ifdef APP-PLUS
let currentWebview = page.$getAppWebview();
let titleObj = currentWebview.getStyle().titleNView;
if (!titleObj.buttons) {
return;
}
titleObj.buttons[index].text = text;
currentWebview.setStyle({
titleNView: titleObj
});
// #endif
},
formatMessage(msg){
msg.pushType="MSG"
var msgType="TEXT"
var data = store.state.addressList
const fromUserData=data.find(item=>item.userId==msg.fromId)
const _data=JSON.parse(msg.messageBody)
// try{
// console.log("=======================formatMessage")
// console.log(_data)
// _data.content=JSON.parse(_data.content)
// msgType=_data.content.type
// }catch(e){
// console.error(e)
// //TODO handle the exception
// }
msg.msgContent={
msgType:_data.msgType,
content:_data.content,
disturb:false,
top:false,
}
msg.windowType="SINGLE"
msg.createTime=msg.messageTime;
msg.userId=msg.fromId;
msg.fromInfo={
userId:msg.fromId,
userType:1,
nickName:fromUserData?fromUserData.realname:msg.fromId,
portrait:"https://shudong2022.oss-cn-hangzhou.aliyuncs.com/common/user/logo.png"
};
msg.groupInfo={};
msg.msgId=msg.messageKey;
return msg
},
debounce(func, wait = 1000, immediate = true) {
/**
* @desc 函数防抖
* @param func 目标函数
* @param wait 延迟执行毫秒数
* @param immediate true - 立即执行, false - 延迟执行
*/
let timer;
return function() {
let args = arguments;
if (timer) {
console.log('拦截')
clearTimeout(timer);
}
if (immediate) {
let callNow = !timer;
timer = setTimeout(() => {
timer = null;
}, wait);
if (callNow) {
func.apply(this, args);
}
} else {
timer = setTimeout(() => {
func.apply(this, args);
}, wait)
}
}
},
throttle(func, wait = 1000, type = 1) {
/**
* @desc 函数节流
* @param func 函数
* @param wait 延迟执行毫秒数
* @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发
*/
let previous = 0;
let timeout;
return function() {
let context = this;
let args = arguments;
if (type === 1) {
let now = Date.now();
if (now - previous > wait) {
func.apply(context, args);
previous = now;
}
} else if (type === 2) {
if (!timeout) {
timeout = setTimeout(() => {
timeout = null;
func.apply(context, args)
}, wait)
}
}
}
}
}