sadjv3/anmo-user/App.vue

766 lines
23 KiB
Vue
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.

<script>
import * as websocketUtils from 'utils/websocketUtils.js';
import {
WEBSOCKETADDRESS,
ROOTHOST
} from "@/common/config.js";
export default {
data() {
return {
// websocketStatus: null,
timer: null,
}
},
methods: {
// 建立ws连接
socketOpen() {
let userId = uni.getStorageSync("userId");
let _this = this;
if (userId) {
uni.connectSocket({
url: WEBSOCKETADDRESS + userId,
header: {
'content-type': 'application/json'
},
method: 'GET'
});
uni.onSocketOpen(function (res) {
console.log('开启方法中的WebSocket连接已打开');
// _this.websocketStatus = true;
});
}
},
socketClose() {
let _this = this;
console.log("关闭连接的方法");
uni.closeSocket({
success: function (res) {
console.log("WebSocket关闭成功");
},
fail: function (res) {
console.log("WebSocket关闭失败");
}
});
},
addSound(duration, frequency, volume, type, callback) {
var audioCtx = new (window.AudioContext || window.webkitAudioContext())();
var oscillator = audioCtx.createOscillator();
var gainNode = audioCtx.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioCtx.destination);
if (volume) {
gainNode.gain.value = volume;
}
if (frequency) {
oscillator.frequency.value = frequency;
}
if (type) {
oscillator.type = type;
}
if (callback) {
oscillator.onended = callback;
}
oscillator.start(audioCtx.currentTime);
oscillator.stop(audioCtx.currentTime + ((duration || 500) / 1000));
},
getNotificationPermissions() {
let platform = uni.getSystemInfoSync().platform; //首先判断app是安卓还是ios
console.log(platform, "wdwdwdwdwd");
//#ifdef APP-PLUS
if (platform == "ios") { //这里是ios的方法
console.log("我是iOS");
var UIApplication = plus.ios.import("UIApplication");
var app = UIApplication.sharedApplication();
var enabledTypes = 0;
if (app.currentUserNotificationSettings) {
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
console.log("enabledTypes1:" + enabledTypes);
if (enabledTypes == 0) { //如果enabledTypes = 0 就是通知权限没有开启
uni.showModal({
title: '提示',
content: '请打开通知权限',
success: res => {
if (res.confirm) {
this.openNotification()
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
plus.ios.deleteObject(settings);
} else if (platform == "android") { //下面是安卓的方法
// console.log("我是安卓", plus.android);
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var NotificationManagerCompat = plus.android.importClass(
"android.support.v4.app.NotificationManagerCompat"
);
//android.support.v4升级为androidx
if (NotificationManagerCompat == null) {
NotificationManagerCompat = plus.android.importClass(
"androidx.core.app.NotificationManagerCompat"
);
}
var areNotificationsEnabled =
NotificationManagerCompat.from(main).areNotificationsEnabled();
// console.log(areNotificationsEnabled);
// 未开通‘允许通知’权限,则弹窗提醒开通,并点击确认后,跳转到系统设置页面进行设置
if (!areNotificationsEnabled) {
this.tongzhi = true; //这里也一样未开启权限,弹出弹窗
}
if (!areNotificationsEnabled) {
uni.showModal({
title: '提示',
content: '是否前往打开通知权限',
success: res => {
if (res.confirm) {
this.openNotification()
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
}
//#endif
},
openNotification() { //弹窗按钮绑定方法
let platform = uni.getSystemInfoSync().platform; //获取安卓还是ios
if (platform == "ios") { //如果机型是iosios由于权限问题可能需要手动开启
var UIApplication = plus.ios.import("UIApplication");
var app = UIApplication.sharedApplication();
var settings = app.currentUserNotificationSettings();
enabledTypes = settings.plusGetAttribute("types");
var NSURL2 = plus.ios.import("NSURL");
var setting2 = NSURL2.URLWithString("app-settings:");
var application2 = UIApplication.sharedApplication();
application2.openURL(setting2);
plus.ios.deleteObject(setting2);
plus.ios.deleteObject(NSURL2);
plus.ios.deleteObject(application2);
plus.ios.deleteObject(settings);
} else if (platform == "android") { //如果机型是安卓
var main = plus.android.runtimeMainActivity();
var pkName = main.getPackageName();
var uid = main.getApplicationInfo().plusGetAttribute("uid");
var Intent = plus.android.importClass("android.content.Intent");
var Build = plus.android.importClass("android.os.Build");
//android 8.0引导
if (Build.VERSION.SDK_INT >= 26) { //判断安卓系统版本
var intent = new Intent("android.settings.APP_NOTIFICATION_SETTINGS");
intent.putExtra("android.provider.extra.APP_PACKAGE", pkName);
} else if (Build.VERSION.SDK_INT >= 21) { //判断安卓系统版本
//android 5.0-7.0
var intent = new Intent("android.settings.APP_NOTIFICATION_SETTINGS");
intent.putExtra("app_package", pkName);
intent.putExtra("app_uid", uid);
} else {
//(<21)其他--跳转到该应用管理的详情页
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
var uri = Uri.fromParts(
"package",
mainActivity.getPackageName(),
null
);
intent.setData(uri);
}
// 跳转到该应用的系统通知设置页
main.startActivity(intent);
}
},
},
onLaunch: function () {
this.getNotificationPermissions();
//#ifdef APP-PLUS
// APP检测更新 具体打包流程可以参考https://ask.dcloud.net.cn/article/35667
plus.screen.lockOrientation('portrait-primary'); //竖屏正方向锁定
//获取是否热更新过
const updated = uni.getStorageSync('updated'); // 尝试读取storage
if (updated.completed === true) {
// 如果上次刚更新过
// 删除安装包及安装记录
console.log('安装记录被删除,更新成功');
uni.removeSavedFile({
filePath: updated.packgePath,
success: res => {
uni.removeStorageSync('updated');
}
});
} else if (updated.completed === false) {
uni.removeStorageSync('updated');
plus.runtime.install(updated.packgePath, {
force: true
});
uni.setStorage({
key: 'updated',
data: {
completed: true,
packgePath: updated.packgePath
},
success: res => {
console.log('成功安装上次的更新,应用需要重启才能继续完成');
}
});
uni.showModal({
title: '温馨提示',
content: '应用将重启以完成更新',
showCancel: false,
complete: () => {
plus.runtime.restart();
}
});
} else {
//获取当前系统版本信息
plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {
//请求后台接口 解析数据 对比版本
let data = {
classify: 2
}
this.$Request.getT('/app/user/selectNewApp', data).then(res => {
res = res.data[0];
console.log(res)
console.log(widgetInfo.version)
let currentVersion = Number(widgetInfo.version);
let serverVersion = Number(res.version);
console.log(currentVersion, serverVersion, currentVersion < serverVersion);
if (res.wgtUrl && (currentVersion < serverVersion)) {
let downloadLink = '';
let androidLink = res.androidWgtUrl;
let iosLink = res.iosWgtUrl;
let ready = false;
let that = this;
console.log("ceshiceshi");
//校验是是不是热更新
if (res.wgtUrl.match(RegExp(/.wgt/))) {
console.log("123123anzhuo");
// 判断系统类型
if (plus.os.name.toLowerCase() === 'android') {
console.log('安卓系统');
if (androidLink && androidLink !== '#') {
// 我这里默认#也是没有地址,请根据业务自行修改
console.log('发现下载地址');
// 安卓:创建下载任务
if (androidLink.match(RegExp(/.wgt/))) {
console.log('确认wgt热更新包');
downloadLink = androidLink;
ready = true;
} else {
console.log('安卓推荐.wgt强制更新.apk的强制更新请您自行修改程序');
}
} else {
console.log('下载地址是空的,无法继续');
}
} else {
console.log('苹果系统');
if (iosLink && iosLink !== '#') {
// 我这里默认#也是没有地址,请根据业务自行修改
console.log('发现下载地址');
// 苹果(A)进行热更新如果iosLink是wgt更新包的下载地址判断文件名中是否含有.wgt
if (iosLink.match(RegExp(/.wgt/))) {
console.log('确认wgt热更新包');
downloadLink = iosLink;
ready = true;
} else {
console.log('苹果只支持.wgt强制更新');
}
} else {
console.log('下载地址是空的,无法继续');
}
}
if (ready) {
console.log('任务开始');
let downloadTask = uni.downloadFile({
url: downloadLink,
success: res => {
if (res.statusCode === 200) {
// 保存下载的安装包
console.log('保存安装包');
uni.saveFile({
tempFilePath: res.tempFilePath,
success: res => {
const packgePath = res
.savedFilePath;
// 保存更新记录到stroage下次启动app时安装更新
uni.setStorage({
key: 'updated',
data: {
completed: false,
packgePath: packgePath
},
success: () => {
console
.log(
'成功保存记录'
);
}
});
// 任务完成,关闭下载任务
console.log(
'任务完成,关闭下载任务,下一次启动应用时将安装更新'
);
downloadTask.abort();
downloadTask = null;
}
});
}
}
});
} else {
console.log('下载地址未准备,无法开启下载任务');
}
} else {
//不是热更新是在线更新 校验是否强制升级
if (res.method == 'true') {
uni.showModal({
showCancel: false,
confirmText: '立即更新',
title: '发现新版本',
content: res.des,
success: res => {
if (res.confirm) {
that.$queue.showLoading('下载中...');
if (uni.getSystemInfoSync().platform ==
'android') {
uni.downloadFile({
url: androidLink,
success: downloadResult => {
if (downloadResult
.statusCode ===
200) {
plus.runtime
.install(
downloadResult
.tempFilePath, {
force: false
},
d => {
console
.log(
'install success...'
);
plus.runtime
.restart();
},
e => {
console
.error(
'install fail...'
);
}
);
}
}
});
}
if (uni.getSystemInfoSync().platform ==
'ios') {
plus.runtime.openURL(iosLink, function (
res) { });
}
} else if (res.cancel) {
console.log('取消');
}
}
});
} else {
uni.showModal({
title: '发现新版本',
confirmText: '立即更新',
cancelText: '下次更新',
content: res.des,
success: res => {
if (res.confirm) {
that.$queue.showLoading('下载中...');
if (uni.getSystemInfoSync().platform ==
'android') {
uni.downloadFile({
url: androidLink,
success: downloadResult => {
if (downloadResult
.statusCode ===
200) {
plus.runtime
.install(
downloadResult
.tempFilePath, {
force: false
},
d => {
console
.log(
'install success...'
);
plus.runtime
.restart();
},
e => {
console
.error(
'install fail...'
);
}
);
}
}
});
}
if (uni.getSystemInfoSync().platform ==
'ios') {
plus.runtime.openURL(iosLink, function (
res) { });
}
} else if (res.cancel) {
console.log('取消');
}
}
});
}
}
}
});
});
}
//#endif
},
onUnload: function () {
// this.socketClose();
// this.websocketStatus = null;
// clearInterval(this.timer);
this.timer = null;
uni.$off("onlineStatus");
},
destroyed() {
uni.$off("onlineStatus");
},
mounted() {
// 下面代码用于接受技师端首页在线离线状态,当前业务逻辑暂不需要ws,后期涉及到的话解开即可,即在线建立连接,离线断开连接,后端用于离线时计算积分
// uni.$on("onlineStatus", (status) => {
// if (status == 1) {
// // 开启websocket监听
// this.socketOpen();
// } else {
// this.socketClose();
// }
// })
},
onShow: function () {
let _this = this;
//监听websocket断开时
// uni.onSocketClose(function(res) {
// debugger;
// _this.websocketStatus = false;
_this.$queue.setData("onlineStatus", 2);
// _this.timer = setInterval(() => {
// debugger;
// if (_this.websocketStatus == false) {
// _this.socketOpen();
// clearInterval(_this.timer);
// } else {
// clearInterval(_this.timer);
// }
// }, 3000)
// });
this.$Request.get('/app/common/type/238').then(res => {
if (res.code == 0) {
// #ifdef MP-WEIXIN
this.$queue.setData('XCXIsSelect', res.data.value);
// #endif
// #ifndef MP-WEIXIN
this.$queue.setData('XCXIsSelect', '是');
// #endif
}
});
// this.$Request.get('/app/common/type/298').then(res => {
// if (res.code == 0) {
// // #ifdef MP-WEIXIN
// this.$queue.setData('XCXIsSelect', res.data.value);
// // #endif
// // #ifndef MP-WEIXIN
// this.$queue.setData('XCXIsSelect', '是');
// // #endif
// }
// });
// 商户端联系方式 1 手机号 2企业微信 305
this.$Request.get('/app/common/type/305').then(res => {
if (res.code == 0) {
this.$queue.setData('kefu', res.data.value);
}
});
// 商户端客服手机号 306
this.$Request.get('/app/common/type/306').then(res => {
if (res.code == 0) {
this.$queue.setData('kefuPhone', res.data.value);
}
});
// 商户端企业微信AppId 307
this.$Request.get('/app/common/type/307').then(res => {
if (res.code == 0) {
this.$queue.setData('kefuAppId', res.data.value);
}
});
// 商户端企业微信链接 308
this.$Request.get('/app/common/type/308').then(res => {
if (res.code == 0) {
this.$queue.setData('kefuUrl', res.data.value);
}
});
// 理疗师是否可以自己修改服务 319
this.$Request.get('/app/common/type/319').then(res => {
if (res.code == 0) {
this.$queue.setData('xmCheck', res.data.value);
}
});
// 是否开启保证金 320
this.$Request.get('/app/common/type/320').then(res => {
if (res.code == 0) {
this.$queue.setData('bzjCheck', res.data.value);
}
});
// 提现底部提示 326
this.$Request.get('/app/common/type/326').then(res => {
if (res.code == 0) {
this.$queue.setData('txMsg', res.data.value);
}
});
// 商城配送方式 328
this.$Request.get('/app/common/type/328').then(res => {
if (res.code == 0) {
this.$queue.setData('peisongSel', res.data.value);
}
});
// 是否开启理疗师端商城 329
this.$Request.get('/app/common/type/329').then(res => {
if (res.code == 0) {
this.$queue.setData('shopSel', res.data.value);
}
});
// 商家地址 330
this.$Request.get('/app/common/type/330').then(res => {
if (res.code == 0) {
this.$queue.setData('adminShopAddress', res.data.value);
}
});
// 商家联系方式 331
this.$Request.get('/app/common/type/331').then(res => {
if (res.code == 0) {
this.$queue.setData('adminShopPhone', res.data.value);
}
});
// 商家名称 332
this.$Request.get('/app/common/type/332').then(res => {
if (res.code == 0) {
this.$queue.setData('adminShopName', res.data.value);
}
});
// 商家经纬度 333
this.$Request.get('/app/common/type/333').then(res => {
if (res.code == 0) {
this.$queue.setData('adminShopJW', res.data.value);
}
});
//是否开启银联提现 378
this.$Request.get('/app/common/type/378').then(res => {
if (res.code == 0) {
this.$queue.setData('ylSel', res.data.value);
}
});
//是否开启阿里云隐私电话 383
this.$Request.get('/app/common/type/383').then(res => {
if (res.code == 0) {
this.$queue.setData('aliphone', res.data.value);
}
});
// 是否开启微信提现 389
this.$Request.get('/app/common/type/389').then(res => {
if (res.code == 0) {
this.$queue.setData('wxTxSel', res.data.value);
}
});
// 是否开启银联提现 378
this.$Request.get('/app/common/type/378').then(res => {
if (res.code == 0) {
this.$queue.setData('ylTxSel', res.data.value);
}
});
// 是否开启为理疗师充值 390
this.$Request.get('/app/common/type/390').then(res => {
if (res.code == 0) {
this.$queue.setData('jsczSel', res.data.value);
}
});
// 忙时时间切换 1半个小时 2一个小时 392
this.$Request.get('/app/common/type/392').then(res => {
if (res.code == 0) {
this.$queue.setData('msTimeDate', res.data.value);
}
});
// 开始服务是否需要上传照片 420
this.$Request.get('/app/common/type/420').then(res => {
if (res.code == 0) {
this.$queue.setData('startImgSel', res.data.value);
}
});
//是否开启理疗师端实时定位 375
// this.$Request.get('/app/common/type/375').then(res => {
// if (res.code == 0 && res.data && res.data.value === '是') {
// setInterval(d => { //定时器,定时去调取聊天未读消息
// let that = this;
// let userId = uni.getStorageSync('userId')
// let longitude = uni.getStorageSync('longitude');
// let latitude = uni.getStorageSync('latitude');
// if (userId && longitude && latitude) {
// let data = {
// typeId: longitude,
// typeName: latitude,
// userId: userId
// }
// that.$Request.postJson('/app/message/insertArtificerLocation',data).then(
// res => {
// if (res.code === 0) {
// }
// });
// }
// }, 60000);
// }
// });
let userId = this.$queue.getData("userId")
if (userId) {
this.$Request.getT('/app/user/selectUserById').then(res => {
if (res.code == 0) {
if (res.data.status == 2) {
uni.showModal({
title: '账号已被封禁',
content: '请在【我的客服】申诉,申诉成功后重新登录',
showCancel: false,
cancelText: '',
confirmText: '我知道了',
success: res => {
uni.clearStorageSync()
},
fail: () => { },
complete: () => { }
});
}
}
})
}
console.log('App Show')
// #ifdef APP-PLUS
if (uni.getSystemInfoSync().platform == 'android') {
let clientid = plus.push.getClientInfo().clientid;
let userId = this.$queue.getData('userId');
if (userId) {
this.$Request.postT('/app/user/updateClientId?clientId=' + clientid + '&userId=' + userId).then(
res => { });
}
}
//#endif
//#ifdef H5
let isopen = false
this.$Request.get('/app/common/type/237').then(res => {
if (res.data.value == '是') {
isopen = true
}
});
if (isopen) {
let ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('micromessenger') !== -1) {
let openid = uni.getStorageSync('openid');
let userId = uni.getStorageSync('userId');
let that = this;
if (!openid) {
if (window.location.href.indexOf('?code=') !== -1 || window.location.href.indexOf('&code=') !==
-1) {
let code;
if (window.location.href.indexOf('?code=') !== -1) {
code = window.location.href.split('?code=')[1].split('&')[0];
} else {
code = window.location.href.split('&code=')[1].split('&')[0];
}
this.$Request.get('/app/Login/getOpenId?code=' + code).then(ret => {
uni.setStorageSync('openId', ret.data)
this.$Request.get('/app/Login/openid/login?openId=' + ret.data).then(res => {
this.$queue.setData("userId", res.user.userId);
this.$queue.setData("token", res.token);
this.$queue.setData("phone", res.user.phone);
this.$queue.setData("userName", res.user.userName);
this.$queue.setData("avatar", res.user.avatar);
this.$queue.setData("invitationCode", res.user.invitationCode);
this.$queue.setData("inviterCode", res.user.inviterCode);
});
});
} else {
this.$Request.get('/app/common/type/108').then(res => {
if (res.data.value == '是') {
window.location.href =
'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +
that.$queue.getWxAppid() +
'&redirect_uri=' +
window.location.href.split('#')[0] +
'&response_type=code&scope=snsapi_userinfo#wechat_redirect';
}
});
}
}
if (userId && openid) {
this.$Request.get('/app/Login/bindOpenId?userId=' + userId + '&openId=' + openid).then(res => {
// 盛安到家
});
}
}
}
//#endif
// websocketUtils.changeIsUploadLocation(true);
//console.log('websocketUtils.isUploadLocation() =>',websocketUtils.isUploadLocation());
websocketUtils.getLocaton();
uni.websocketUtils = websocketUtils;
if (userId) {
websocketUtils.getArtificerList();
}
},
onHide: function () {
console.log('App Hide')
}
}
</script>
<style lang="scss">
/*每个页面公共css */
@import "uview-ui/index.scss";
@import 'components/colorui/main.css';
@import 'components/colorui/icon.css';
@import './static/css/common.css';
@import './static/css/simplepro.css';
page {
background-color: #FFFFFF;
color: #343546;
}
.bg {
background-color: #F7F7F7;
}
</style>