From d269b48e600f53e86e9d2656d5a912e27e8e05f8 Mon Sep 17 00:00:00 2001 From: ch Date: Mon, 13 Jun 2022 16:34:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/chat/chat copy.js | 363 ++++++++++++++++++++++++++++ src/store/modules/chat/chat.js | 265 ++++---------------- src/store/modules/im/im.js | 154 ------------ src/utils/im.js | 6 +- src/views/chat/index.vue | 24 +- src/views/chat/message.vue | 12 +- 6 files changed, 427 insertions(+), 397 deletions(-) create mode 100644 src/store/modules/chat/chat copy.js delete mode 100644 src/store/modules/im/im.js diff --git a/src/store/modules/chat/chat copy.js b/src/store/modules/chat/chat copy.js new file mode 100644 index 0000000..5ded1e6 --- /dev/null +++ b/src/store/modules/chat/chat copy.js @@ -0,0 +1,363 @@ +import { login } from '@/api/chat'; +import config from '@/configs'; +import { ElMessage } from '@/plugins/element-plus'; +import { UUID } from '@/utils/chat'; +import dayjs from 'dayjs'; +const state = () => ({ + socket: null, + heart: null, + queue: [], + task: [], + + currentSession: null, + messageList: [], + messageType: { 1: 'text', 2: 'audio', 3: 'image', 4: 'video', 5: 'revoke', 6: 'custom', 7: 'notify' }, + + curCustomerService: {}, + sessionData: [], + customerServiceList: [], + opts: { + customerServiceType: [ + { + label: '售前', + value: 1, + }, + { + label: '售后', + value: 2, + }, + { + label: '发货', + value: 3, + }, + ], + }, +}); +const getters = { + parseTime: () => { + return (timestamp) => { + dayjs(new Date(timestamp)).format('MM-DD HH:mm:ss'); + }; + }, + parseText: () => { + return ({ payload, type }) => { + if (type === 2) { + payload = '[语音]'; + } else if (type === 3) { + payload = '[图片]'; + } else if (type === 4) { + payload = '[视频]'; + } else if (type === 5) { + payload = '[撤回消息]'; + } else if (type === 6 || type === 1) { + try { + // payload = JSON.parse(payload); + if ('text' in payload) { + payload = payload.text; + } else if ('linkJump' in payload) { + payload = '[超链接]'; + } else if ('orderNo' in payload) { + payload = '[订单信息]'; + } else if ('productImageUrl' in payload) { + payload = '[商品信息]'; + } else { + payload = '[未知数据]'; + } + } catch (e) { + payload = '[解析异常]'; + } + } else if (type === 7) { + payload = '[撤回消息]'; + } else { + payload = '[未知类型]'; + } + return payload; + }; + }, + parseImage: () => { + return (payload) => { + try { + // payload = JSON.parse(payload); + if ('url' in payload) { + payload = payload.url; + } else { + payload = '[未知图片]'; + } + } catch (e) { + payload = '[解析异常]'; + } + return payload; + }; + }, + parseVideo: () => { + return (payload) => { + try { + // payload = JSON.parse(payload); + if ('url' in payload) { + payload = payload.url; + } else { + payload = '[未知视频]'; + } + } catch (e) { + payload = '[解析异常]'; + } + return payload; + }; + }, + parseContent: () => { + return (payload) => { + try { + // payload = JSON.parse(payload); + if ('linkJump' in payload) { + payload.type = 'link'; + } else if ('orderNo' in payload) { + payload.type = 'order'; + } else if ('productImageUrl' in payload) { + payload.type = 'product'; + } else { + payload = '[未知消息]'; + } + } catch (e) { + payload = '[解析异常]'; + } + return payload; + }; + }, +}; +const mutations = { + setSocket: (state, data) => (state.socket = data), + setHeart: (state, data) => (state.heart = data), + setTask: (state, data) => (state.task = data), + addTask: (state, data) => state.task.push(data), + delTask: (state, data) => state.task.splice(data, 1), + setCurrentSession: (state, data) => (state.currentSession = data), + setSessionData: (state, data) => (state.sessionData = data), + setMessageList: (state, data) => (state.messageList = data), + setCustomerServiceList: (state, data) => (state.customerServiceList = data), + + SET_CUR_SERVICE(state, data) { + state.curCustomerService = data || {}; + }, + SET_SESSION_DATA(state, data) { + state.sessionData = data; + }, + SET_SERVICE_LIST(state, data) { + state.customerServiceList = data; + }, +}; +const actions = { + /** + * 创建连接 + */ + connect: async ({ state, commit, dispatch }) => { + let { ticket } = await login({ storeId: 1 }); + return new Promise((resolve, reject) => { + if (window.WebSocket) { + const socket = new WebSocket(`${config.socketURL}?client=${ticket}&type=2`); + socket.onmessage = ({ data }) => { + dispatch('receive', data); + }; + socket.onopen = () => { + commit( + 'setHeart', + setInterval(() => { + dispatch('heart'); + }, 3000) + ); + console.info('[chat] open'); + resolve(socket); + }; + socket.onclose = () => { + clearInterval(state.heart); + console.info('[chat] close'); + }; + socket.onerror = (e) => { + clearInterval(state.heart); + console.info('[chat] error', e); + reject(e); + }; + commit('setSocket', socket); + } else { + ElMessage.error('当前浏览器不支持 WebSocket'); + reject('not support websocket'); + } + }); + }, + /** + * 发送心跳,任务监测 + */ + heart: ({ state, dispatch }) => { + dispatch('send', { + traceType: 26, + content: { storeId: 1 }, + }); + // console.info('[chat] heart'); + state.task.forEach((item) => { + dispatch('send', item); + }); + }, + /** + * 执行任务 + */ + invoke: ({ commit, dispatch }, data) => { + data.traceId = UUID(); + commit('addTask', data); + dispatch('send', data); + }, + /** + * 撤销任务 + */ + revoke: ({ state, commit }, data) => { + console.info(state.task.length); + commit( + 'setTask', + state.task.filter((item) => item.traceType !== data) + ); + console.info(state.task.length); + }, + /** + * 发送数据 + */ + send: ({ state }, data) => { + if (window.WebSocket) { + if (state.socket?.readyState === WebSocket.OPEN) { + data.traceId = data.traceId || UUID(); + state.socket.send(JSON.stringify(data)); + if (data.traceType !== 26) { + console.info('[chat] send', data); + } + } + } + }, + /** + * 接收数据 + */ + receive: ({ state, commit, dispatch }, data) => { + data = JSON.parse(data); + if (data.traceType !== 0) { + let index = state.task.findIndex((item) => item.traceId === data.traceId); + if (index !== -1) { + console.info('[chat] data', data); + commit('delTask', index); + dispatch('handle', data); + } else if (data.traceType === 25) { + console.info('[chat] msg', data); + dispatch('handle', data); + } else { + console.info('[chat] deprecated', data); + } + } + }, + /** + * 处理数据 + */ + handle: ({ state, commit, dispatch }, { code, traceType, content }) => { + if (code === 200) { + switch (traceType) { + case 25: // 收到消息 + if (content.sessionId === state.currentSession) { + commit('setMessageList', [...state.messageList, content]); + dispatch('submitRead'); + } else { + dispatch('querySession'); + } + break; + case 32: // 发送消息 + commit('setMessageList', [...state.messageList, content]); + break; + case 27: // 会话列表 + commit('setSessionData', content); + break; + case 28: // 消息列表 + commit('setMessageList', [...content, ...state.messageList]); + break; + case 29: // 客服列表 + commit('setCustomerServiceList', content); + break; + case 31: // 已读消息 + dispatch('querySession'); + break; + default: + break; + } + } + }, + /** + * 查询会话列表 + */ + querySession: ({ dispatch }) => { + dispatch('invoke', { + traceType: 27, + content: { storeId: 1 }, + }); + }, + /** + * 查询会话消息列表 + */ + querySessionMessage: ({ state, dispatch }, data) => { + dispatch('invoke', { + traceType: 28, + content: { sessionId: state.currentSession, size: 10, topMessageId: null, ...data }, + }); + }, + /** + * 查询可转移客服列表 + */ + queryCustomerService: ({ dispatch }) => { + dispatch('invoke', { + traceType: 29, + content: { storeId: 1 }, + }); + }, + /** + * 提交转移会话 + */ + submitTransferSession: ({ dispatch }, data) => { + dispatch('invoke', { + traceType: 30, + content: { storeId: 1, ...data }, + }); + }, + /** + * 提交已读消息 + */ + submitRead: ({ state, dispatch }) => { + dispatch('invoke', { + traceType: 31, + content: { sessionId: state.currentSession }, + }); + }, + /** + * 提交发送消息 + */ + submitMessage: ({ state, dispatch }, payload) => { + dispatch('invoke', { + traceType: 32, + content: { payload, toSessionId: state.currentSession, type: 1 }, + }); + }, + /** + * 提交发送图片 + */ + submitImage: ({ state, dispatch }, payload) => { + dispatch('invoke', { + traceType: 32, + content: { payload, toSessionId: state.currentSession, type: 3 }, + }); + }, + /** + * 提交发送视频 + */ + submitVideo: ({ state, dispatch }, payload) => { + dispatch('invoke', { + traceType: 32, + content: { payload, toSessionId: state.currentSession, type: 4 }, + }); + }, +}; +export default { + state, + getters, + mutations, + actions, +}; diff --git a/src/store/modules/chat/chat.js b/src/store/modules/chat/chat.js index 0785fed..1585d5a 100644 --- a/src/store/modules/chat/chat.js +++ b/src/store/modules/chat/chat.js @@ -1,18 +1,18 @@ -import { login } from '@/api/chat'; -import config from '@/configs'; -import { ElMessage } from '@/plugins/element-plus'; -import { UUID } from '@/utils/chat'; +/* + * @Author: ch + * @Date: 2022-06-07 15:41:05 + * @LastEditors: ch + * @LastEditTime: 2022-06-13 16:30:57 + * @Description: file content + */ +import * as api from '@/api/chat'; import dayjs from 'dayjs'; -const state = () => ({ - socket: null, - heart: null, - queue: [], - task: [], - sessionData: {}, - currentSession: null, - messageList: [], - messageType: { 1: 'text', 2: 'audio', 3: 'image', 4: 'video', 5: 'revoke', 6: 'custom', 7: 'notify' }, +const state = { + curCustomerService: {}, + sessionData: [], customerServiceList: [], + messageType: { 1: 'text', 2: 'audio', 3: 'image', 4: 'video', 5: 'revoke', 6: 'custom', 7: 'notify' }, + opts: { customerServiceType: [ { @@ -29,7 +29,8 @@ const state = () => ({ }, ], }, -}); +}; + const getters = { parseTime: () => { return (timestamp) => { @@ -48,7 +49,7 @@ const getters = { payload = '[撤回消息]'; } else if (type === 6 || type === 1) { try { - payload = JSON.parse(payload); + // payload = JSON.parse(payload.value); if ('text' in payload) { payload = payload.text; } else if ('linkJump' in payload) { @@ -74,7 +75,7 @@ const getters = { parseImage: () => { return (payload) => { try { - payload = JSON.parse(payload); + // payload = JSON.parse(payload); if ('url' in payload) { payload = payload.url; } else { @@ -89,7 +90,7 @@ const getters = { parseVideo: () => { return (payload) => { try { - payload = JSON.parse(payload); + // payload = JSON.parse(payload); if ('url' in payload) { payload = payload.url; } else { @@ -104,7 +105,7 @@ const getters = { parseContent: () => { return (payload) => { try { - payload = JSON.parse(payload); + // payload = JSON.parse(payload); if ('linkJump' in payload) { payload.type = 'link'; } else if ('orderNo' in payload) { @@ -122,223 +123,43 @@ const getters = { }, }; const mutations = { - setSocket: (state, data) => (state.socket = data), - setHeart: (state, data) => (state.heart = data), - setTask: (state, data) => (state.task = data), - addTask: (state, data) => state.task.push(data), - delTask: (state, data) => state.task.splice(data, 1), - setCurrentSession: (state, data) => (state.currentSession = data), - setSessionData: (state, data) => (state.sessionData = data), - setMessageList: (state, data) => (state.messageList = data), - setCustomerServiceList: (state, data) => (state.customerServiceList = data), -}; -const actions = { - /** - * 创建连接 - */ - connect: async ({ state, commit, dispatch }) => { - let { ticket } = await login({ storeId: 1 }); - return new Promise((resolve, reject) => { - if (window.WebSocket) { - const socket = new WebSocket(`${config.socketURL}?client=${ticket}&type=2`); - socket.onmessage = ({ data }) => { - dispatch('receive', data); - }; - socket.onopen = () => { - commit( - 'setHeart', - setInterval(() => { - dispatch('heart'); - }, 3000) - ); - console.info('[chat] open'); - resolve(socket); - }; - socket.onclose = () => { - clearInterval(state.heart); - console.info('[chat] close'); - }; - socket.onerror = (e) => { - clearInterval(state.heart); - console.info('[chat] error', e); - reject(e); - }; - commit('setSocket', socket); - } else { - ElMessage.error('当前浏览器不支持 WebSocket'); - reject('not support websocket'); - } - }); - }, - /** - * 发送心跳,任务监测 - */ - heart: ({ state, dispatch }) => { - dispatch('send', { - traceType: 26, - content: { storeId: 1 }, - }); - // console.info('[chat] heart'); - state.task.forEach((item) => { - dispatch('send', item); - }); + SET_CUR_SERVICE(state, data) { + state.curCustomerService = data || {}; }, - /** - * 执行任务 - */ - invoke: ({ commit, dispatch }, data) => { - data.traceId = UUID(); - commit('addTask', data); - dispatch('send', data); + SET_SESSION_DATA(state, data) { + state.sessionData = data; }, - /** - * 撤销任务 - */ - revoke: ({ state, commit }, data) => { - console.info(state.task.length); - commit( - 'setTask', - state.task.filter((item) => item.traceType !== data) - ); - console.info(state.task.length); + SET_SERVICE_LIST(state, data) { + state.customerServiceList = data; }, - /** - * 发送数据 - */ - send: ({ state }, data) => { - if (window.WebSocket) { - if (state.socket?.readyState === WebSocket.OPEN) { - data.traceId = data.traceId || UUID(); - state.socket.send(JSON.stringify(data)); - if (data.traceType !== 26) { - console.info('[chat] send', data); - } - } - } - }, - /** - * 接收数据 - */ - receive: ({ state, commit, dispatch }, data) => { - data = JSON.parse(data); - if (data.traceType !== 0) { - let index = state.task.findIndex((item) => item.traceId === data.traceId); - if (index !== -1) { - console.info('[chat] data', data); - commit('delTask', index); - dispatch('handle', data); - } else if (data.traceType === 25) { - console.info('[chat] msg', data); - dispatch('handle', data); - } else { - console.info('[chat] deprecated', data); - } - } - }, - /** - * 处理数据 - */ - handle: ({ state, commit, dispatch }, { code, traceType, content }) => { - if (code === 200) { - switch (traceType) { - case 25: // 收到消息 - if (content.sessionId === state.currentSession) { - commit('setMessageList', [...state.messageList, content]); - dispatch('submitRead'); - } else { - dispatch('querySession'); - } - break; - case 32: // 发送消息 - commit('setMessageList', [...state.messageList, content]); - break; - case 27: // 会话列表 - commit('setSessionData', content); - break; - case 28: // 消息列表 - commit('setMessageList', [...content, ...state.messageList]); - break; - case 29: // 客服列表 - commit('setCustomerServiceList', content); - break; - case 31: // 已读消息 - dispatch('querySession'); - break; - default: - break; - } - } - }, - /** - * 查询会话列表 - */ - querySession: ({ dispatch }) => { - dispatch('invoke', { - traceType: 27, - content: { storeId: 1 }, - }); - }, - /** - * 查询会话消息列表 - */ - querySessionMessage: ({ state, dispatch }, data) => { - dispatch('invoke', { - traceType: 28, - content: { sessionId: state.currentSession, size: 10, topMessageId: null, ...data }, +}; +const actions = { + queryCurCustomerService: ({ commit }) => { + api.getCustomerService().then((res) => { + commit('SET_CUR_SERVICE', res); }); }, + /** * 查询可转移客服列表 */ - queryCustomerService: ({ dispatch }) => { - dispatch('invoke', { - traceType: 29, - content: { storeId: 1 }, + queryCustomerService: ({ commit }) => { + api.customerServiceList({ + length: 100, + pageIndex: 1, + }).then((res) => { + commit('SET_SERVICE_LIST', res.records); }); }, /** * 提交转移会话 */ - submitTransferSession: ({ dispatch }, data) => { - dispatch('invoke', { - traceType: 30, - content: { storeId: 1, ...data }, - }); - }, - /** - * 提交已读消息 - */ - submitRead: ({ state, dispatch }) => { - dispatch('invoke', { - traceType: 31, - content: { sessionId: state.currentSession }, - }); - }, - /** - * 提交发送消息 - */ - submitMessage: ({ state, dispatch }, payload) => { - dispatch('invoke', { - traceType: 32, - content: { payload, toSessionId: state.currentSession, type: 1 }, - }); - }, - /** - * 提交发送图片 - */ - submitImage: ({ state, dispatch }, payload) => { - dispatch('invoke', { - traceType: 32, - content: { payload, toSessionId: state.currentSession, type: 3 }, - }); - }, - /** - * 提交发送视频 - */ - submitVideo: ({ state, dispatch }, payload) => { - dispatch('invoke', { - traceType: 32, - content: { payload, toSessionId: state.currentSession, type: 4 }, + submitTransferSession: ({}, data) => { + api.transferCustomerService({ + storeId: 1, + ...data, + }).then((res) => { + console.log(res, 'resresres'); }); }, }; diff --git a/src/store/modules/im/im.js b/src/store/modules/im/im.js deleted file mode 100644 index 131dc85..0000000 --- a/src/store/modules/im/im.js +++ /dev/null @@ -1,154 +0,0 @@ -/* - * @Author: ch - * @Date: 2022-06-07 15:41:05 - * @LastEditors: ch - * @LastEditTime: 2022-06-13 14:32:42 - * @Description: file content - */ -import * as api from '@/api/chat'; -import dayjs from 'dayjs'; -const state = { - curCustomerService: {}, - sessionData: [], - customerServiceList: [], - messageType: { 1: 'text', 2: 'audio', 3: 'image', 4: 'video', 5: 'revoke', 6: 'custom', 7: 'notify' }, -}; - -const getters = { - parseTime: () => { - return (timestamp) => { - dayjs(new Date(timestamp)).format('MM-DD HH:mm:ss'); - }; - }, - parseText: () => { - return ({ payload, type }) => { - if (type === 2) { - payload = '[语音]'; - } else if (type === 3) { - payload = '[图片]'; - } else if (type === 4) { - payload = '[视频]'; - } else if (type === 5) { - payload = '[撤回消息]'; - } else if (type === 6 || type === 1) { - try { - // payload = JSON.parse(payload.value); - if ('text' in payload) { - payload = payload.text; - } else if ('linkJump' in payload) { - payload = '[超链接]'; - } else if ('orderNo' in payload) { - payload = '[订单信息]'; - } else if ('productImageUrl' in payload) { - payload = '[商品信息]'; - } else { - payload = '[未知数据]'; - } - } catch (e) { - payload = '[解析异常]'; - } - } else if (type === 7) { - payload = '[撤回消息]'; - } else { - payload = '[未知类型]'; - } - return payload; - }; - }, - parseImage: () => { - return (payload) => { - try { - // payload = JSON.parse(payload); - if ('url' in payload) { - payload = payload.url; - } else { - payload = '[未知图片]'; - } - } catch (e) { - payload = '[解析异常]'; - } - return payload; - }; - }, - parseVideo: () => { - return (payload) => { - try { - // payload = JSON.parse(payload); - if ('url' in payload) { - payload = payload.url; - } else { - payload = '[未知视频]'; - } - } catch (e) { - payload = '[解析异常]'; - } - return payload; - }; - }, - parseContent: () => { - return (payload) => { - try { - // payload = JSON.parse(payload); - if ('linkJump' in payload) { - payload.type = 'link'; - } else if ('orderNo' in payload) { - payload.type = 'order'; - } else if ('productImageUrl' in payload) { - payload.type = 'product'; - } else { - payload = '[未知消息]'; - } - } catch (e) { - payload = '[解析异常]'; - } - return payload; - }; - }, -}; -const mutations = { - SET_CUR_SERVICE(state, data) { - state.curCustomerService = data || {}; - }, - SET_SESSION_DATA(state, data) { - state.sessionData = data; - }, - SET_SERVICE_LIST(state, data) { - state.customerServiceList = data; - }, -}; -const actions = { - queryCurCustomerService: ({ commit }) => { - api.getCustomerService().then((res) => { - commit('SET_CUR_SERVICE', res); - }); - }, - - /** - * 查询可转移客服列表 - */ - queryCustomerService: ({ commit }) => { - api.customerServiceList({ - length: 100, - pageIndex: 1, - }).then((res) => { - commit('SET_SERVICE_LIST', res.records); - }); - }, - /** - * 提交转移会话 - */ - submitTransferSession: ({}, data) => { - api.transferCustomerService({ - storeId: 1, - ...data, - }).then((res) => { - console.log(res, 'resresres'); - }); - }, -}; -export default { - state, - getters, - mutations, - actions, -}; diff --git a/src/utils/im.js b/src/utils/im.js index 8a0bc70..4017e7e 100644 --- a/src/utils/im.js +++ b/src/utils/im.js @@ -2,7 +2,7 @@ * @Author: ch * @Date: 2022-06-07 15:52:37 * @LastEditors: ch - * @LastEditTime: 2022-06-13 15:46:19 + * @LastEditTime: 2022-06-13 16:18:45 * @Description: file content */ import * as api from '@/api/chat'; @@ -38,7 +38,7 @@ const ImInit = (waiterId) => { }; Im.interceptors.dataChangeAfter = () => { - $store.commit('im/SET_SESSION_DATA', JSON.parse(JSON.stringify(Im.sessionData))); + $store.commit('chat/SET_SESSION_DATA', JSON.parse(JSON.stringify(Im.sessionData))); // let msgCount = 0; // Im.sessionData.forEach((i) => { // msgCount += i.unreadCount; @@ -49,7 +49,7 @@ Im.interceptors.dataChangeAfter = () => { Im.interceptors.onLogout = () => { Im.setSessionData([]); // Im.setCurSessionId(null); - $store.commit('im/SET_SESSION_DATA', []); + $store.commit('chat/SET_SESSION_DATA', []); // $store.commit('SET_IM_MSG_COUNT', 0); }; export { Im, ImInit }; diff --git a/src/views/chat/index.vue b/src/views/chat/index.vue index 843b884..6635a61 100644 --- a/src/views/chat/index.vue +++ b/src/views/chat/index.vue @@ -37,12 +37,12 @@
{{ item.fromNickname }}
- {{ store.getters['im/parseTime'](item.lastMessage.createTimeStamp) }} + {{ store.getters['chat/parseTime'](item.lastMessage.createTimeStamp) }}
- {{ store.getters['im/parseText'](item.lastMessage) }} + {{ store.getters['chat/parseText'](item.lastMessage) }}
@@ -144,15 +144,15 @@ const { proxy } = getCurrentInstance(); const router = useRouter(); const store = useStore(); - store.dispatch('im/queryCurCustomerService'); + store.dispatch('chat/queryCurCustomerService'); const socketInit = () => { - if (!store.state.im.curCustomerService.waiterId) { + if (!store.state.chat.curCustomerService.waiterId) { setTimeout(() => { socketInit(); }, 1000); return false; } - ImInit(store.state.im.curCustomerService.waiterId).then(() => { + ImInit(store.state.chat.curCustomerService.waiterId).then(() => { Im.getSessionList(); }); }; @@ -177,7 +177,7 @@ const state = reactive({ message: '', }); - const sessionList = computed(() => store.state.im.sessionData); + const sessionList = computed(() => store.state.chat.sessionData); const currentSession = computed(() => sessionList.value.find((item) => item.id === currentSessionId.value)); const handleChangeSession = (id) => { currentSessionId.value = id; @@ -219,7 +219,7 @@ Im.getHistoryMsg(); }; const handleSendMessage = (e) => { - const curService = store.state.im.curCustomerService; + const curService = store.state.chat.curCustomerService; if (e && e.shiftKey) { state.message += '\n'; } else { @@ -282,9 +282,9 @@ }, ], }); - const customerServiceList = computed(() => store.state.im.customerServiceList); + const customerServiceList = computed(() => store.state.chat.customerServiceList); const handleTransferSession = () => { - store.dispatch('im/queryCustomerService'); + store.dispatch('chat/queryCustomerService'); transferVisible.value = true; }; const handleConfirmTransfer = async (row) => { @@ -293,7 +293,7 @@ confirmButtonText: '确定', }); if (res.action === 'confirm') { - store.dispatch('im/submitTransferSession', { + store.dispatch('chat/submitTransferSession', { toWaiterId: row.waiterId, sessionId: unref(currentSessionId), reason: res.value, @@ -322,7 +322,7 @@ const file = e.target.files[0]; e.target.value = null; let url = await upload('mall-product', 'im/', file); - const curService = store.state.im.curCustomerService; + const curService = store.state.chat.curCustomerService; Im.sendMsg({ fromId: curService.waiterId, fromAvatar: curService.waiterAvatar, @@ -346,7 +346,7 @@ let url = await upload('mall-product', 'im/', file); // store.dispatch('chat/submitVideo', { url }); - const curService = store.state.im.curCustomerService; + const curService = store.state.chat.curCustomerService; Im.sendMsg({ fromId: curService.waiterId, fromAvatar: curService.waiterAvatar, diff --git a/src/views/chat/message.vue b/src/views/chat/message.vue index b648613..8664409 100644 --- a/src/views/chat/message.vue +++ b/src/views/chat/message.vue @@ -73,26 +73,26 @@
- {{ store.getters['im/parseText'](props.message) }} + {{ store.getters['chat/parseText'](props.message) }}
- {{ store.getters['im/parseTime'](props.message.createTimeStamp) }} + {{ store.getters['chat/parseTime'](props.message.createTimeStamp) }}
@@ -111,7 +111,7 @@ }, }); const messageType = computed(() => store.state.chat.messageType); - const content = computed(() => store.getters['im/parseContent']({ ...props.message.payload })); + const content = computed(() => store.getters['chat/parseContent']({ ...props.message.payload })); const handleProduct = (id) => { router.push({ name: 'UpdateProduct',