mirror of
https://gitee.com/myxzgzs/boyue_jnpf.git
synced 2025-08-08 23:32:43 +08:00
113 lines
2.4 KiB
JavaScript
113 lines
2.4 KiB
JavaScript
import {
|
|
defineStore
|
|
} from 'pinia';
|
|
import store from '../index'
|
|
|
|
export const useChatStore = defineStore({
|
|
id: ' chat',
|
|
state: () => ({
|
|
socket: null,
|
|
badgeNum: 0,
|
|
msgInfo: {},
|
|
formUserId: ''
|
|
}),
|
|
getters: {
|
|
getSocket() {
|
|
return this.socket
|
|
},
|
|
getBadgeNum() {
|
|
return this.badgeNum
|
|
},
|
|
getMsgInfo() {
|
|
return this.msgInfo
|
|
}
|
|
},
|
|
actions: {
|
|
setSocket(socket) {
|
|
this.socket = socket
|
|
},
|
|
setBadgeNum(badgeNum) {
|
|
this.badgeNum = badgeNum
|
|
},
|
|
addBadgeNum(num) {
|
|
this.badgeNum += num
|
|
},
|
|
reduceBadgeNum(num) {
|
|
let badgeNum = this.badgeNum - num
|
|
if (badgeNum < 0) badgeNum = 0
|
|
this.badgeNum = badgeNum
|
|
},
|
|
setMsgInfo(msgInfo) {
|
|
this.msgInfo = msgInfo
|
|
},
|
|
setMsgInfoNum(num) {
|
|
if (num || num === 0) {
|
|
this.msgInfo.messageCount = num
|
|
this.msgInfo.count = num
|
|
this.badgeNum = num
|
|
return
|
|
}
|
|
this.msgInfo.messageCount -= 1
|
|
this.msgInfo.count = this.msgInfo.messageCount
|
|
let badgeNum = this.badgeNum - 1
|
|
if (badgeNum < 0) badgeNum = 0
|
|
this.badgeNum = badgeNum
|
|
},
|
|
setFormUserId(formUserId) {
|
|
this.formUserId = formUserId
|
|
},
|
|
sendMessage(data) {
|
|
const item = {
|
|
account: data.toAccount,
|
|
headIcon: data.toHeadIcon,
|
|
id: data.toUserId,
|
|
latestDate: data.latestDate,
|
|
latestMessage: data.toMessage,
|
|
messageType: data.messageType,
|
|
realName: data.toRealName,
|
|
unreadMessage: 0
|
|
}
|
|
const addItem = {
|
|
sendUserId: data.UserId,
|
|
contentType: data.messageType,
|
|
content: data.toMessage,
|
|
sendTime: data.dateTime,
|
|
method: data.method
|
|
}
|
|
uni.$emit('addMsg', addItem)
|
|
uni.$emit('updateList', item)
|
|
},
|
|
receiveMessage(data) {
|
|
if (this.formUserId === data.formUserId) {
|
|
data.unreadMessage = 0
|
|
const item = {
|
|
sendUserId: data.formUserId,
|
|
contentType: data.messageType,
|
|
content: data.formMessage,
|
|
sendTime: data.dateTime,
|
|
method: data.method
|
|
}
|
|
uni.$emit('addMsg', item)
|
|
} else {
|
|
data.unreadMessage = 1
|
|
this.addBadgeNum(1)
|
|
}
|
|
data.id = data.formUserId
|
|
data.latestMessage = data.formMessage
|
|
uni.$emit('updateList', data)
|
|
},
|
|
getMessageList(data) {
|
|
uni.$emit('getMessageList', data)
|
|
},
|
|
messagePush(data) {
|
|
this.msgInfo.messageText = data.title;
|
|
this.msgInfo.messageCount += data.unreadNoticeCount;
|
|
this.msgInfo.messageDate = data.messageDefaultTime
|
|
this.addBadgeNum(data.unreadNoticeCount || 1)
|
|
}
|
|
},
|
|
});
|
|
|
|
export function useChatStoreWithOut() {
|
|
return useChatStore(store);
|
|
} |