import {checkLogin,logoutjpushId,getLastAndReadStatus,updateHistoryApp} from '@/api/user' import { getSopCourseStudyList } from "@/api/courseAnswer.js" import { bdCallBackReq } from '@/api/index.js' import { bindCompanyFsUser } from '@/api/companyUser.js' const TOKEN_KEY = 'AppToken'; // token 信息 const CONFIG_KEY = 'QXT_MAGMT_CONFIG_KEY'; // 系统配置 const USER_KEY = 'QXT_MAGMT_USER_KEY'; // 账号信息 const SITE_BASE_URL_KEY = 'SITE_BASE_URL_KEY'; // 链接信息 const SIP_ACCOUNT_KEY = 'SIP_ACCOUNT_KEY'; // 链接信息 let idCode=null; // #ifdef APP-PLUS idCode = uni.requireNativePlugin('Ba-IdCode'); // #endif // tabBar const tabBarPages = [ '/pages/index/index', '/pages/course/index', '/pages/course/video/living-app', '/pages/TUIKit/TUIPages/TUIConversation/index', '/pages/user/index' ] function userDefaults(key) { let ret = ''; ret = uni.getStorageSync(key); if (!ret) { ret = '{}'; } let obj = JSON.parse(ret); return obj; } /** * 获取当前登录用户的令牌信息 * @return {Object} 登录令牌信息 */ function getUserToken() { let usertoken = userDefaults(TOKEN_KEY); return usertoken; }; /** * 添加当前登录用户的令牌信息 * @param {Object} tokenInfo 令牌信息 */ function setUserToken(tokenInfo) { let tokens = getUserToken() let newToken = Object.assign(tokens, tokenInfo); // 只有在登陆是才能获取签名、实名状态,刷新token时只会返回token,不能直接得到状态,这里只调整覆盖原来的token uni.setStorageSync(TOKEN_KEY, JSON.stringify(newToken)); }; export function parseText(txt,len) { if(txt.length>len){ var text=txt.substr(0,len)+"..." return text; } return txt; } export function parseIDCardInfo(idCard) { // 正则表达式匹配身份证号格式 var reg = /^\d{17}[\dXx]$/; if (reg.test(idCard)) { // 提取出生日期 var birthday = idCard.substring(6, 14); var year = birthday.substring(0, 4); var month = birthday.substring(4, 6); var day = birthday.substring(6, 8); // 计算年龄 var currentYear = new Date().getFullYear(); var age = currentYear - parseInt(year); // 提取性别 var genderCode = parseInt(idCard.charAt(16)); var gender = genderCode % 2 === 0 ? "女" : "男"; return { birthday: year + "-" + month + "-" + day, age: age, gender: gender }; } return null; // 身份证号格式不正确 } export function isEmpty(obj) { if (obj == undefined || obj == null || obj=="") { return true; } else { return false; } } /** * 是否登录 * @return {Boolean} true 登录 false 未登录 */ export function isLogin() { let obj=uni.getStorageSync(TOKEN_KEY); return !!obj; } export function logout() { // #ifdef APP-PLUS logoutjpushId().then(res=>{ if(res.code == 200){ uni.setStorageSync(TOKEN_KEY,null); uni.removeStorageSync("onLaunch") uni.removeStorageSync("imUnread") uni.$emit("refreshUserInfo") uni.navigateTo({ url: '/pages/auth/loginIndex' }) //关闭推送事件监听 uni.offPushMessage(); // #ifdef APP-PLUS plus.runtime.setBadgeNumber(-1) // #endif } else { uni.showToast({ title: res.msg, icon: 'none' }) } }) // #endif // #ifndef APP-PLUS uni.setStorageSync(TOKEN_KEY,null); uni.removeStorageSync("onLaunch") uni.removeStorageSync("imUnread") uni.$emit("refreshUserInfo") uni.navigateTo({ url: '/pages/auth/loginIndex' }) // #endif } export function loginOut(){ uni.setStorageSync(TOKEN_KEY,null); uni.removeStorageSync("onLaunch") uni.removeStorageSync("imUnread") uni.$emit("refreshUserInfo") uni.navigateTo({ url: '/pages/auth/loginIndex' }); } var toast=function(msg) { // #ifdef APP-PLUS uni.showToast({title: msg,icon: 'none',duration:2000,position:'bottom'}); // #endif // #ifdef H5 uni.showToast({ title: msg,icon: 'none',duration:2000}); // #endif } export function getDictLabelName(dicts,dictValue) { if(dictValue==null){ return ""; } var name=""; dicts.forEach(function(item, index, array) { if(dictValue.toString()==item.dictValue.toString()) { name=item.dictLabel } }); return name; } export function getStoreDictByName(key,dictValue) { if(dictValue==null || dictValue==-1){ return "请选择"; } var dicts = uni.getStorageSync(key); var dict=JSON.parse(dicts); var name=""; dict.forEach(function(item, index, array) { if(dictValue.toString()==item.dictValue.toString()){ name=item.dictLabel } }); return name; } var getStoreIndexByName= function(key,dictValue) { if(dictValue==null || dictValue==-1){ return [0]; } var dicts = uni.getStorageSync(key); var dict=JSON.parse(dicts); var defIndexs=[0]; dict.forEach(function(item, index, array) { if(dictValue.toString()==item.dictValue.toString()){ defIndexs=[index]; } }); return defIndexs; } var getStorageByKey=function(key){ let storageObj=uni.getStorageSync(key); var dataArr=[]; if(!!storageObj){ dataArr=JSON.parse(storageObj); } return dataArr; } var getStorageNamesByKey=function(key){ let storageObj=uni.getStorageSync(key); if(!!storageObj){ var tempArr=JSON.parse(storageObj); var valueArr=[]; tempArr.forEach(function(item, index, array) { valueArr.push(item.dictLabel); }); return valueArr; } } var getDict= function(key) { var dicts = uni.getStorageSync('dicts'); dicts=JSON.parse(dicts); var dict=dicts[key] return dict; } var photosToArr= function(photoUrl) { var photos=[]; if(photoUrl!=null&&photoUrl!=''){ photos=photoUrl.split(','); } return photos } var dateFormat=function dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) }; }; return fmt; } var getProvider = service => { return new Promise((resolve, reject) => { // 获取当前环境的服务商 uni.getProvider({ service: service || 'oauth', success: function (res) { // 此处可以排除h5 if (res.provider) { resolve(res.provider[0]) } }, fail() { reject('获取环境服务商失败') }, }) }).catch(error => { console.log('167', error) }) } export function parsePhone(mobile) { var str = mobile.substr(0,3)+"****"+mobile.substr(7); return str; } export function getAge(strBirthday){ var returnAge, strBirthdayArr=strBirthday.split("-"), birthYear = strBirthdayArr[0], birthMonth = strBirthdayArr[1], birthDay = strBirthdayArr[2], d = new Date(), nowYear = d.getFullYear(), nowMonth = d.getMonth() + 1, nowDay = d.getDate(); if(nowYear == birthYear){ returnAge = 0;//同年 则为0周岁 } else{ var ageDiff = nowYear - birthYear ; //年之差 if(ageDiff > 0){ if(nowMonth == birthMonth) { var dayDiff = nowDay - birthDay;//日之差 if(dayDiff < 0) { returnAge = ageDiff - 1; }else { returnAge = ageDiff; } }else { var monthDiff = nowMonth - birthMonth;//月之差 if(monthDiff < 0) { returnAge = ageDiff - 1; } else { returnAge = ageDiff ; } } }else { returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天 } } return returnAge;//返回周岁年龄 } const urlToObj = function(url) { let obj = {} let str = url.slice(url.indexOf('?') + 1) let arr = str.split('&') for (let j = arr.length, i = 0; i < j; i++) { let arr_temp = arr[i].split('=') obj[arr_temp[0]] = arr_temp[1] } return obj } /** * 判断是否为空对象 * @param {Object} 时间字符串 */ var isNullObj=function(obj) { let isNull=(JSON.stringify(obj) == "{}"); return isNull; } var arrContainsVal=function(arr,val){ var isContains=false; for (var i = 0; i < arr.length; i++) { if (arr[i] == val) { isContains= true; break; } } return isContains; } var arrIndexOf = function(arr,val) { var isContains = this.arrContainsVal(arr,val); if (isContains) { return arr.indexOf(val); } else{ return -1; } } export function navBack() { uni.navigateBack({ animationType: 'pop-out', animationDuration: 200 }); } export function navTo(url) { uni.navigateTo({ url: url }); } var loginNavTo=function(url){ if(isLogin()){ uni.navigateTo({ url: url }); }else{ this.$showLoginPage(); } } var loginCallBack=function(callBack){ if(isLogin()){ callBack(); }else{ this.$showLoginPage(); } } /** * 获取用户信息 * */ export function getUserInfo(){ let userInfo=uni.getStorageSync('userInfo'); userInfo=userInfo ? JSON.parse(userInfo) : {}; return userInfo; }; export function parseIdCard(idCard) { var str = idCard.substr(0,4)+"****"+idCard.substr(8); return str; } /** * 获取腕表用户信息 * */ export function getUser(callback) { getWatchUserInfo({isFamily:false}).then(res => { if (res.code == 200) { uni.setStorageSync("userWatchInfo", JSON.stringify(res.user)) callback(res.user) } else { callback({}) } }) } /** * type == 1表示 00:00 改成0, 01:00 改成1, 23:00 改成23格式 * type != 1表示 0 改成00:00, 1 改成01:00, 23 改成23:00格式 */ export function formatHour(time,type) { if(type == 1) { const parts = time.split(":"); const hour = parseInt(parts[0]); return hour; } else { let str = time.toString(); if (str.length === 1) { str = '0' + str; } return str + ':00'; } } var bdCallBack=function(data,bdCmdType) { bdCallBackReq(data).then(res => { if(res.code==200){ uni.setStorageSync("bdCmdType",bdCmdType); if(bdCmdType==2){ uni.setStorageSync("bdCmdType",3); } }else{ uni.showToast({ icon:'none', title: res.msg }); } }); } var bdAdvFeedback=function(aType,aValue,bdCmdType,userId) { //获取设备的各种标识码 let devinfo=uni.getDeviceInfo(); console.log("qxj bdAdvFeedback devInfo:"+JSON.stringify(devinfo)); let that=this; // #ifdef APP-PLUS idCode.getIdCodes(res => { console.log("qxj getIdCodes:"+JSON.stringify(res)); if (res.data) { let params={"oaid":res.data.OAID,"model":devinfo.model,"osType":2,"aType":aType,"aValue":aValue.toString()}; if(!!userId){ params["userId"]=userId; } bdCallBack(params,bdCmdType); } }); // #endif } export function registerIdCode(aType,bdCmdType,aValue,userId) { //bdCmdType -1未操作 0:激活 1:已注册 2:已下单 3:已回传 //注册,先注册再获取,注意APP合规性,若最终用户未同意隐私政策则不要调用 // #ifdef APP-PLUS let that=this; idCode.register(res => { console.log(res); bdAdvFeedback(aType,aValue,bdCmdType,userId); }); // #endif } export function dateFormatStr(fmt, date){ let dateStr=dateFormat(fmt,date); return dateStr; } // 设置tabbar消息红点 export async function updateMsgDot(){ const resOther = await getLastAndReadStatus() let num1 = resOther.data && resOther.data.unReadNum ? resOther.data.unReadNum : 0 const resCourse = await getSopCourseStudyList({pageNum: 1,pageSize: 10}) let num2 = resCourse.isNotRead || 0 const imUnred = uni.getStorageSync("imUnread") || 0; let BadgeNumber = (num1 + num2+imUnred) > 0 ? num1 + num2+imUnred : -1; //BadgeNumber=num2; const status = BadgeNumber > 0 ? 1 : 0; console.log("--qxj num1:"+num1+" num2:"+num2); // 获取当前页面实例(通常在页面生命周期或方法中调用) const currentPages = getCurrentPages(); const currentPage = currentPages[currentPages.length - 1]; const currentRoute = currentPage.route; const formattedRoute = `/${currentRoute}`; const isTabBarPage = tabBarPages.includes(formattedRoute); if(isTabBarPage) { if(status == 1) { uni.showTabBarRedDot({ index: 3, }); } else { uni.hideTabBarRedDot({ index: 3, }); } } // #ifdef APP-PLUS plus.runtime.setBadgeNumber(BadgeNumber) // #endif } // 绑定销售 export function handleBindCompanyFsUser(comUserId) { bindCompanyFsUser(comUserId).then(res=>{ if(res.code == 200) { uni.navigateTo({ url: '/pages/user/bindCompanyUser' }) } else { uni.showToast({ title: res.msg, icon: 'none' }) } // #ifdef APP-PLUS plus.runtime.arguments = '' // #endif }).catch(()=>{ // #ifdef APP-PLUS plus.runtime.arguments = '' // #endif }) } // 设置来源 export function setSource() { // #ifdef APP-PLUS const historyApp = plus.runtime.channel || 'app' updateHistoryApp({historyApp:historyApp}) // #endif }