|
|
|
@ -120,6 +120,7 @@
|
|
|
|
|
:config="transferConfig"
|
|
|
|
|
:data="customerServiceList"
|
|
|
|
|
:operation="[]"
|
|
|
|
|
style="height: 500px"
|
|
|
|
|
/>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</div>
|
|
|
|
@ -127,7 +128,8 @@
|
|
|
|
|
|
|
|
|
|
<script setup lang="jsx">
|
|
|
|
|
import { emojiData, entitiestoUtf16 } from '@/utils/chat.js';
|
|
|
|
|
import { ElButton } from 'element-plus/es';
|
|
|
|
|
import { ElButton } from 'element-plus/es/components/button/index';
|
|
|
|
|
import 'element-plus/es/components/button/style/css';
|
|
|
|
|
import MessageItem from './message.vue';
|
|
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
|
const store = useStore();
|
|
|
|
@ -152,10 +154,30 @@
|
|
|
|
|
return store.state.chat.sessionData?.sessionVOS || [];
|
|
|
|
|
});
|
|
|
|
|
const currentSession = computed(() => sessionList.value.find((item) => item.id === currentSessionId.value));
|
|
|
|
|
const sessionMessageList = computed(() => store.state.chat.messageList);
|
|
|
|
|
const handleChangeSession = (id) => {
|
|
|
|
|
store.commit('chat/setCurrentSession', id);
|
|
|
|
|
store.dispatch('chat/querySessionMessage');
|
|
|
|
|
handleReadMessage();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 聊天
|
|
|
|
|
const sessionMessageList = computed(() => store.state.chat.messageList);
|
|
|
|
|
const refsMessageList = ref(null);
|
|
|
|
|
watch(sessionMessageList, () => {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
refsMessageList.value.setScrollTop(refsMessageList.value.scrollbar$.scrollHeight);
|
|
|
|
|
}, 1000);
|
|
|
|
|
});
|
|
|
|
|
const handleSendMessage = (data) => {
|
|
|
|
|
if (!data) {
|
|
|
|
|
store.dispatch('chat/submitMessage', { text: state.message });
|
|
|
|
|
state.message = '';
|
|
|
|
|
} else {
|
|
|
|
|
proxy.$message.warning('发送消息不能为空');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
const handleReadMessage = () => {
|
|
|
|
|
store.dispatch('chat/submitRead');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 转移会话
|
|
|
|
@ -170,7 +192,7 @@
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: '客户昵称',
|
|
|
|
|
prop: 'waiterNickname',
|
|
|
|
|
prop: 'nickname',
|
|
|
|
|
minWidth: 160,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -183,7 +205,6 @@
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: '操作',
|
|
|
|
|
prop: 'waiterNickname',
|
|
|
|
|
width: 100,
|
|
|
|
|
slots: {
|
|
|
|
|
default: ({ row }) => (
|
|
|
|
@ -206,7 +227,11 @@
|
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
|
});
|
|
|
|
|
if (res.action === 'confirm') {
|
|
|
|
|
store.dispatch('chat/submitTransferSession', { waiterId: row.waiterId, reason: res.value });
|
|
|
|
|
store.dispatch('chat/submitTransferSession', {
|
|
|
|
|
toWaiterId: row.waiterId,
|
|
|
|
|
sessionId: unref(currentSessionId),
|
|
|
|
|
reason: res.value,
|
|
|
|
|
});
|
|
|
|
|
transferVisible.value = false;
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
@ -259,23 +284,6 @@
|
|
|
|
|
handleSendMessage(message);
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 发送消息
|
|
|
|
|
const refsMessageList = ref(null);
|
|
|
|
|
const handleSendMessage = (data) => {
|
|
|
|
|
if (!data) {
|
|
|
|
|
store.dispatch('chat/send', {
|
|
|
|
|
traceType: 20,
|
|
|
|
|
content: { payload: { 'text ': state.message }, storeId: 2, type: 1 },
|
|
|
|
|
});
|
|
|
|
|
state.message = '';
|
|
|
|
|
nextTick(() => {
|
|
|
|
|
refsMessageList.value.setScrollTop(refsMessageList.value.scrollbar$.scrollHeight);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
proxy.$message.warning('发送消息不能为空');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|