You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

536 lines
18 KiB
Vue

2 months ago
<script lang="ts">
1 week ago
import { V2NIMMessage, V2NIMMessagePushConfig, V2NIMConversation } from "nim-web-sdk-ng/dist/v2/NIM_UNIAPP_SDK/V2NIMMessageService";
import { unix } from "dayjs";
import { V2NIMConst, NIM } from "./utils/nim";
2 months ago
import.meta.env.VITE_APP_THEMECOLOR = "#000";
// console.log("系统信息:", uni.getSystemInfoSync());
1 week ago
let isWxApp = uni.getSystemInfoSync().uniPlatform == "mp-weixin";
2 months ago
export default {
globalData: {
version: "1.0.0",
serverVersion: "1.0.1",
uid: 0,
isUseNewJob: true,
messageTab: 0,
messageId: "",
title: "",
2 months ago
// themeColor: "#3578f6",
// themeBackgroundColor: "#3578f621",
themeColor: "#00B666",
themeBackgroundColor: "#00B66621",
2 months ago
logo: "",
// #ifdef MP-WEIXIN
"g-open-env": "MP-MINI",
appId: uni.getAccountInfoSync().miniProgram.appId,
// #endif
// #ifdef MP-TOUTIAO
"g-open-env": "MP-TOUTIAO",
appId: tt.getEnvInfoSync().microapp.appId,
// #endif
// #ifdef MP-KUAISHOU
"g-open-env": "MP-KUAISHOU",
appId: uni.getAccountInfoSync().miniProgram.appId,
// #endif
},
data() {
return {
themeColor: "#3578f6",
themeBackgroundColor: "#3578f621",
currentInfo: {},
};
},
onShow: function (options) {
let that = this;
1 week ago
uni.setStorageSync('is_use_im',1);
2 months ago
let requestComeFrom = this.G.globalConstantData.requestComeFrom;
uni.setStorageSync("requestComeFrom", requestComeFrom && (requestComeFrom == "assistant_miniapp" || requestComeFrom == "supply_chain_miniapp") ? "isToB" : "isToC");
uni.onNetworkStatusChange((res) => {
// console.log("res", res);
// console.log("网络状态改变");
});
if (that.globalData.appId == "wxb0c590fd696b79be") {
that.globalData.title = "稻田工作";
that.themeColor = "#ff4400";
that.themeBackgroundColor = "#ff440011";
that.globalData.themeColor = "#ff4400";
that.globalData.themeBackgroundColor = "#ff440011";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/bocaigongyinglian/logo.png";
} else if (that.globalData.appId == "wx15bc9c758f4eb129") {
2 months ago
that.globalData.title = "业小满招聘";
2 months ago
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/yexiaoman.png";
} else if (that.globalData.appId == "wxcd0e4a001e1d87bd") {
that.globalData.title = "会聘工作";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/kuaipin.jpg";
} else if (that.globalData.appId == "wx581db3f39c49ed2b") {
that.globalData.title = "英华招工";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/yinghua.png";
} else if (that.globalData.appId == "wxd522e45fa0d4be09") {
that.globalData.title = "鑫都直聘";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/xindu.png";
} else if (that.globalData.appId == "wx5e1d6e017a193336") {
that.globalData.title = "春雷人力";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/chunleilogo.png";
} else if (that.globalData.appId == "wx57e965905e6b4530") {
that.globalData.title = "人海劳务";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/renhailaowu.png";
} else if (that.globalData.appId == "wx5fa8701bfff4357d") {
that.globalData.title = "靖杨劳务";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/renhailaowu.png";
} else if (that.globalData.appId == "wx70153a578d847bc1") {
that.globalData.title = "打工猫";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/zhi_logo.png";
} else if (that.globalData.appId == "wx89702db2259e0247") {
that.globalData.title = "鑫职一聘";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/xinyi_logo.png";
} else if (that.globalData.appId == "wx21f6c6445a194d4d") {
that.globalData.title = "铂诚人力";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/pugongying/bocheng_logo.png";
} else if (that.globalData.appId == "wxf14dd76421b8ce8f") {
that.globalData.title = "工企创联";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/80d0daf4-82f8-4ddf-88dc-169dde051df8_gongqichuanglian.png";
} else if (that.globalData.appId == "wxbc6d9dbb9dff5b37") {
that.globalData.title = "伯才稻田";
that.themeColor = "#ff4400";
that.themeBackgroundColor = "#ff440011";
that.globalData.themeColor = "#ff4400";
that.globalData.themeBackgroundColor = "#ff440011";
that.globalData.logo = uni.getStorageSync("miniApp-info").logo || "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/1shoudan/daotianLogo.png";
}
// #ifdef MP-WEIXIN
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function (res) {
// console.log("检测是否有新版本:", res.hasUpdate);
});
updateManager.onUpdateReady(function (res) {
uni.showModal({
title: "更新提示",
content: "新版本已经准备好,需重启应用",
showCancel: false,
success(res) {
if (res.confirm) {
// console.log("新版本已经准备好,需重启应用");
updateManager.applyUpdate();
}
},
});
});
updateManager.onUpdateFailed(function (res) {
uni.showModal({
title: "更新提示",
content: "新版本下载异常,需重启应用",
showCancel: false,
success(res) {
if (res.confirm) {
// console.log("新版本下载异常,需重启应用");
updateManager.applyUpdate();
}
},
});
});
this.G.getAgencyInfo();
this.G.getServiceQRCode();
// #endif
// #ifdef APP-PLUS
// that.globalData.nim && that.globalData.nim.V2NIMSettingService.setAppBackground(false);
// #endif
if (uni.getStorageSync("apply-token")) {
that.G.checkToken();
}
},
onHide: function () {
// #ifdef APP-PLUS
// this.globalData.nim && this.globalData.nim.V2NIMSettingService.setAppBackground(true);
// #endif
},
onLaunch(options) {
let that = this;
console.log("0127 APP", options);
if (options.scene) {
// console.log("XXXXXXXXXXXX");
//扫小程序码携带参数
var sceneStr = decodeURIComponent(options.query.scene);
var sceneJson = this.G.sceneToJson(sceneStr);
console.log("sceneJson===", sceneJson);
if (sceneJson.tk) {
uni.setStorageSync("apply-token", sceneJson.tk);
}
}
// that.G.getAgencyInfo();
uni.$on("isGlogin", function (data) {
// console.log("app.vue 接收", data);
if (uni.getStorageSync("apply-token")) {
that.initWyyx();
}
});
// const applyToken = uni.getStorageSync("apply-token");
// const applyUid = uni.getStorageSync("apply-uid");
// 无token直接返回
if (uni.getStorageSync("apply-token")) {
try {
// 有uid直接初始化无uid则先校验token
if (uni.getStorageSync("apply-uid")) {
that.initWyyx();
} else {
that.G.checkToken().then(() => {
console.log("已执行");
that.initWyyx();
});
}
} catch (err) {
console.error("初始化wyyx失败", err);
// 可补充token失效后的处理比如清除无效token、跳转登录页等
// uni.removeStorageSync("apply-token");
// uni.navigateTo({ url: '/pages/login/login' });
}
}
1 week ago
if (uni.getStorageSync("apply-token") && uni.getStorageSync("apply-uid")) {
// console.log("app.vue 是否调用");
that.initWyyx();
}else{
if(uni.getStorageSync("apply-token")){
that.G.checkToken().then(()=>{
console.log("已执行")
that.initWyyx();
})
}
}
2 months ago
uni.removeStorageSync("selectedCity");
uni.showShareMenu({
shareTypes: "normal",
});
2 months ago
// this.getLocation().then(() => {
// // console.log("that.currentInfo", that.currentInfo);
// if (that.currentInfo.longitude) {
// that.G.Get(that.api.getCityNameByLatLng, { lng: that.currentInfo.longitude, lat: that.currentInfo.latitude }, (res) => {
// // console.log("res", res);
// if (res) {
// let currentCity = res.replace("市", "");
// uni.setStorageSync("selectedCity", currentCity);
// uni.$emit("setCity");
// }
// });
// } else {
// uni.$emit("setCity");
// }
// });
2 months ago
// // 隐藏默认底部
// uni.hideTabBar();
},
methods: {
getLocation() {
let that = this;
return new Promise((resolve, reject) => {
uni.authorize({
// 检测是否授权位置信息
scope: "scope.userLocation",
success() {
uni.getLocation({
type: "wgs84",
success(res) {
that.currentInfo = {
latitude: res.latitude,
longitude: res.longitude,
timestamp: new Date().getTime(),
};
resolve();
},
fail(err) {
console.log(err);
},
complete() {
resolve();
},
});
},
fail(err) {
console.log(err);
uni.showToast({
title: "请在设置中开启定位权限以获取当前城市定位",
icon: "none",
});
resolve();
// that.showRefuseLocationPermission();
},
});
});
},
initWyyx() {
let that = this;
1 week ago
that.F.wyyxPost(
that.api.wyyx_getConfig,
{
userId: uni.getStorageSync("apply-uid"),
},
(res) => {
// console.log("wyyx_getConfig", res);
// 检查返回数据有效性
if (!res || !res.appKey || !res.accid || !res.token) {
console.error("获取IM配置失败参数不完整");
return;
}
let resData = {
appkey: res.appKey,
accid: res.accid,
token: res.token,
};
// 保存IM配置信息
uni.setStorageSync("im-appkey", resData.appkey);
uni.setStorageSync("im-accid", resData.accid);
uni.setStorageSync("im-token", resData.token);
const imOptions = {
appkey: resData.appkey,
account: resData.accid,
token: resData.token,
};
this.initNim(imOptions);
},
);
2 months ago
},
async initNim(opts) {
1 week ago
let that = this;
const account = opts.account;
const token = opts.token;
const appkey = opts.appkey;
const params1 = {
appkey: appkey,
debugLevel: "warning",
apiVersion: "v2",
readReceiptEnabled: true,
enableV2CloudConversation: true,
};
console.log("ems NIM", NIM);
const nim = NIM.getInstance(params1, {
V2NIMLoginServiceConfig: {
lbsUrls: isWxApp ? ["https://lbs.netease.im/lbs/wxwebconf.jsp"] : ["https://lbs.netease.im/lbs/webconf.jsp"],
linkUrl: isWxApp ? "wlnimsc0.netease.im" : "weblink.netease.im",
isFixedDeviceId: true,
autoLogin: true,
},
});
this.offWatchIM(nim);
this.watchIMLoginStatus(nim);
this.watchIMFriendChange(nim);
this.watchIMMessageChange(nim);
try {
await nim.V2NIMLoginService.login(account, token, {
forceMode: false,
timeout: 60000,
retryCount: 3,
authType: 0,
});
that.globalData.nim = nim;
that.G.nim = nim;
} catch (err) {
console.error("error", err);
}
},
/**
* IM信息更新监听回调
*/
watchIMMessageChange(nim) {
let that = this;
// 消息接收回调
nim.V2NIMMessageService.on("onReceiveMessages", function (messages) {
console.log("收到 V2NIMMessageService 模块的 onReceiveMessages 事件", messages);
let message = messages[0];
uni.$emit("updateMessageList", { ...message, messageFrom: "yunxin" });
});
// 发送消息接收监听
nim.V2NIMMessageService.on("onSendMessage", function (messages) {
console.log("收到 V2NIMMessageService 模块的 onSendMessage 事件", messages);
});
// 监听单聊已读回执
nim.V2NIMMessageService.on("onReceiveP2PMessageReadReceipts", function (readReceipts) {
console.log("收到 V2NIMMessageService 模块的 onReceiveP2PMessageReadReceipts 事件", readReceipts);
uni.$emit("updateMessageReadInfo", readReceipts[0]);
});
// 撤回成功回调
nim.V2NIMMessageService.on("onMessageRevokeNotifications", function (messages) {
console.log("收到 V2NIMMessageService 模块的 onMessageRevokeNotifications 事件", messages);
});
// 修改消息字段的回调
nim.V2NIMMessageService.on("onReceiveMessagesModified", function (messages) {
console.log("收到 V2NIMMessageService 模块的 onReceiveMessagesModified 事件", messages);
uni.$emit("updateMessage", messages);
});
// 会话列表变化改变
nim.V2NIMConversationService.on("onConversationChanged", function (conversationList: V2NIMConversation[]) {
console.log("初始化监听会话:", conversationList);
uni.$emit("updateConversationList");
let unreadConversations = conversationList.filter((item) => {
return Number(item.unreadCount) > 0;
});
console.log("未读会话数量:", unreadConversations);
if (unreadConversations.length > 0) {
that.playAudio();
}
});
// 未读消息总数变化
nim.V2NIMConversationService.on("onTotalUnreadCountChanged", function (messages) {
console.log("收到 V2NIMMessageService 模块的 onTotalUnreadCountChanged 事件", messages);
uni.$emit("newMessage", { count: messages, type: "message" });
uni.setStorageSync("chat_info", { count: messages, type: "message" });
});
// 删除回话的监听
nim.V2NIMConversationService.on("onConversationDeleted", function (conversationIds) {
uni.$emit("deleteConversationList", conversationIds);
console.log("conversationIds", conversationIds);
});
},
offWatchIM(nim) {
// 信息监听
nim.V2NIMMessageService.off("onReceiveMessages");
nim.V2NIMMessageService.off("onMessageRevokeNotifications");
nim.V2NIMMessageService.off("onReceiveMessagesModified");
nim.V2NIMConversationService.off("onConversationChanged");
nim.V2NIMConversationService.off("onConversationDeleted");
nim.V2NIMConversationService.off("onReceiveP2PMessageReadReceipts");
// 好友信息监听
nim.V2NIMFriendService.off("onFriendAdded");
nim.V2NIMFriendService.off("onFriendDeleted");
nim.V2NIMFriendService.off("onFriendAddApplication");
nim.V2NIMFriendService.off("onFriendAddRejected");
nim.V2NIMFriendService.off("onFriendInfoChanged");
},
/**
* IM好友信息更新监听回调
*/
watchIMFriendChange(nim) {
// 添加好友成功回调,返回添加成功的好友信息列表
nim.V2NIMFriendService.on("onFriendAdded", function (friend) {
console.log("watchIMFriend", friend);
});
// 删除好友回调,返回删除的好友信息
nim.V2NIMFriendService.on("onFriendDeleted", function (accountId, deletionType) {
console.log("watchIMFriend", accountId);
console.log("watchIMFriend", deletionType);
});
// 申请添加好友回调,返回申请添加为好友的信息
nim.V2NIMFriendService.on("onFriendAddApplication", function (application) {
console.log("watchIMFriend", application);
});
// 被对方拒绝好友添加申请的回调,被拒绝的好友申请信息
nim.V2NIMFriendService.on("onFriendAddRejected", function (rejection) {
console.log("watchIMFriend", rejection);
});
// 好友信息更新回调,返回变更的好友信息
nim.V2NIMFriendService.on("onFriendInfoChanged", function (friend) {
console.log("watchIMFriend", friend);
});
},
/**
* IM登录状态监听回调
*/
watchIMLoginStatus(nim) {
/**
* 登录瞬时状态监听
*/
// 登录状态变化回调
nim.V2NIMLoginService.on("onLoginStatus", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onLoginStatus 事件", arg1);
});
// 登录失败回调
nim.V2NIMLoginService.on("onLoginFailed", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onLoginFailed 事件", arg1);
});
// 登录终端被其他端踢下线回调
nim.V2NIMLoginService.on("onKickedOffline", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onKickedOffline 事件", arg1);
});
// 登录终端登录信息变更回调
nim.V2NIMLoginService.on("onLoginClientChanged", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onLoginClientChanged 事件", arg1);
});
/**
* 登录持续性状态监听
*/
// 登录连接状态变化回调
nim.V2NIMLoginService.on("onConnectStatus", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onConnectStatus 事件", arg1);
});
// 登录连接断开回调
nim.V2NIMLoginService.on("onDisconnected", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onDisconnected 事件", arg1);
});
// 登录连接失败回调
nim.V2NIMLoginService.on("onConnectFailed", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onConnectFailed 事件", arg1);
});
// 数据同步状态变化回调
nim.V2NIMLoginService.on("onDataSync", function (arg1) {
console.log("收到 V2NIMLoginService 模块的 onDataSync 事件", arg1);
});
2 months ago
},
playAudio() {
let that = this;
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = "https://bocai-cms.oss-cn-beijing.aliyuncs.com/web-resource/ibocai/tip.mp3";
innerAudioContext.onPlay(() => {
// console.log("开始播放");
});
uni.vibrateShort();
innerAudioContext.onError((res) => {
// console.log(res.errMsg);
// console.log(res.errCode);
});
},
},
};
</script>
<style lang="scss">
@import "./uni_modules/vk-uview-ui/index.scss";
@import "./static/css/base.scss";
@import "./static/css/iconfont.css";
uni-page-body {
height: 100%;
}
uni-page-body > uni-view {
height: 100%;
}
.g-components-panel-hr {
padding-bottom: 16px;
.doc-left {
width: 43px;
height: 2px;
border: 1px solid;
border-image: linear-gradient(270deg, rgba(255, 255, 255, 0.2), #cccccc) 1 1;
transform: rotate(180deg);
}
.doc-right {
width: 43px;
height: 2px;
border: 1px solid;
border-image: linear-gradient(270deg, rgba(255, 255, 255, 0.2), #cccccc) 1 1;
}
}
</style>