mirror of
https://gitee.com/myxzgzs/boyue_jnpf.git
synced 2025-08-09 15:52:42 +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);
|
||
|
}
|