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

166 lines
5.0 KiB

"use strict";
const common_vendor = require("../../common/vendor.js");
const config_host = require("../../config/host.js");
const utils_functions = require("../../utils/functions.js");
const api_chat = require("../../api/chat.js");
const utils_log = require("../../utils/log.js");
require("../../utils/qqmap-wx-jssdk.min.js");
require("../../api/other.js");
require("../../utils/request.js");
const HeaderNav = () => "../../components/HeaderNav/Index.js";
const MzButton = () => "../../components/MzButton/Index.js";
const _sfc_main = {
components: {
HeaderNav,
MzButton
},
data: {
windowHeihgt: 1e3,
staticImage: {
wallpaperBgImage: config_host.imghost + "/static/image/background.png"
},
user: {
avatar: config_host.imghost + "/static/image/banner.png",
nickname: "清晨的风",
background: config_host.imghost + "/static/image/banner.png",
sex: "女",
phone: "15012345678",
coupons: 221,
id: 88685,
birthday: "2002-05-11"
},
ableChat: false,
message: "",
chat_id: 0,
type: 0,
user_id: 0,
messageList: []
},
onLoad(options) {
this.getToken(options.id);
},
methods: {
getToken(order_id) {
api_chat.getToken(order_id, this.$store.state.userInfo.store_id ? 2 : 1).then((data) => {
this.chat_id = data.data.chat_id;
this.type = data.data.type;
this.user_id = data.data.user_id;
common_vendor.index.connectSocket({
url: data.data.chat_url
});
common_vendor.index.onSocketOpen((res) => {
this.ableChat = true;
console.log("WebSocket连接已打开!");
});
common_vendor.index.onSocketClose((res) => {
this.ableChat = false;
console.log("WebSocket 已关闭!");
});
common_vendor.index.onSocketMessage((res) => {
this.newMessage(res);
});
});
},
newMessage(messages) {
utils_log.log(messages);
messages = JSON.parse(messages.data);
utils_log.log(messages);
if (messages.do_type === "init") {
this.messageList = messages.data;
return;
}
this.messageList.push(messages);
utils_log.log(this.messageList);
},
sendMessage() {
if (!this.message) {
return common_vendor.index.showToast({
title: "消息不能为空",
icon: "error"
});
}
common_vendor.index.showLoading({
title: "消息发送中...",
mask: true
});
if (!this.ableChat) {
setInterval((t) => {
if (!this.ableChat) {
return;
}
clearInterval(t);
common_vendor.index.sendSocketMessage({
data: this.message
});
common_vendor.index.hideLoading();
}, 50);
} else {
common_vendor.index.sendSocketMessage({
data: JSON.stringify({
do_type: "add",
info: this.message,
msg_type: 1,
send_user_id: this.user_id,
type: this.type,
chat_id: this.chat_id
})
});
common_vendor.index.hideLoading();
this.message = "";
}
}
},
onPageScroll(res) {
},
onUnload() {
try {
common_vendor.index.closeSocket();
} catch {
}
},
created() {
this.windowHeihgt = utils_functions.api.navHeight().windowHeihgt;
}
};
if (!Array) {
const _component_HeaderNav = common_vendor.resolveComponent("HeaderNav");
const _component_MzButton = common_vendor.resolveComponent("MzButton");
(_component_HeaderNav + _component_MzButton)();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.p({
title: "2023.5.3订单",
["is-back"]: true
}),
b: "url(" + _ctx.staticImage.wallpaperBgImage + ")",
c: common_vendor.f(_ctx.messageList, (item, index, i0) => {
return common_vendor.e({
a: item.send_user_id !== _ctx.user_id
}, item.send_user_id !== _ctx.user_id ? {
b: item.avatar ? item.avatar : _ctx.user.avatar
} : {}, {
c: common_vendor.t(item.create_time),
d: common_vendor.t(item.info),
e: item.send_user_id === _ctx.user_id
}, item.send_user_id === _ctx.user_id ? {
f: item.avatar ? item.avatar : _ctx.user.avatar
} : {}, {
g: common_vendor.n(item.send_user_id === _ctx.user_id ? "chat-item my-chat row" : "chat-item other-chat row")
});
}),
d: _ctx.message,
e: common_vendor.o(($event) => _ctx.message = $event.detail.value),
f: common_vendor.o($options.sendMessage),
g: common_vendor.p({
title: "发送",
["font-color"]: "#fff",
["button-color"]: "#4DC3B8",
["button-width"]: "auto"
}),
h: _ctx.windowHeihgt - 40 + "px"
};
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "E:/Project/pet_uni/pages/ChatDetail/index.vue"]]);
_sfc_main.__runtimeHooks = 1;
wx.createPage(MiniProgramPage);