Files
lilishop-ui/im/src/store/modules/dialogue.js

96 lines
2.4 KiB
JavaScript

export default {
state: {
// 对话来源[1:私聊;2:群聊]
talk_type: 0,
// 接收者ID
receiver_id: 0,
is_robot: 0,
// 聊天记录
records: [
{
id: "",
createTime: "",
toUser: "",
isRead: false,
messageType: "",
talkId: "",
text: "",
float: "",
},
],
webSocketWithOut:false, // ws 是否是掉线 无输出状态
// 对话索引(聊天对话的唯一索引)
index_name: null,
},
mutations: {
// 设置ws状态
SET_WS_STATUS: (state,resource) =>{
state.webSocketWithOut = resource
},
// 更新对话
UPDATE_DIALOGUE_MESSAGE (state, resource) {
state.records = [];
state.talk_type = parseInt(resource.talk_type);
state.receiver_id = parseInt(resource.receiver_id);
state.is_robot = parseInt(resource.is_robot);
/**
* receiver_id 就是 好友id
* 比如 a 和 b 聊天 receiver_id = b的id
*/
state.index_name = (resource.talk_type || 1) + "_" + resource.receiver_id;
},
// 数组头部压入对话记录1494593861786271744 1494593778193793024
UNSHIFT_DIALOGUE (state, records) {
// console.log("%c 数组头部压入对话记录", "color:green");
// console.log("state", state);
// console.log("records", records);
if (state.records.length > 0) {
state.records.unshift(...records);
} else {
state.records.push(...records);
}
// console.log("最后的数据",state.records)
},
// 推送对话记录
PUSH_DIALOGUE (state, record) {
record = {...record,webSocketStatus:state.webSocketWithOut}
console.log("推送对话",)
state.records.push(record);
},
// 更新对话记录
UPDATE_DIALOGUE (state, resource) {
for (let i in state.records) {
if (state.records[i].id === resource.id) {
Object.assign(state.records[i], resource);
break;
}
}
},
// 删除对话记录
DELETE_DIALOGUE (state, index) {
state.records.splice(index, 1);
},
BATCH_DELETE_DIALOGUE (state, ids) {
ids.forEach((record_id) => {
let index = state.records.findIndex((item) => item.id == record_id);
if (index >= 0) state.records.splice(index, 1);
});
},
// 数组头部压入对话记录
SET_DIALOGUE (state, records) {
state.records = records;
},
},
};