|
|
@@ -325,6 +325,7 @@
|
|
|
:title="activeTab === 'mini' ? '会员档案详情' : '商家入驻全量档案'"
|
|
|
size="1100px"
|
|
|
custom-class="archive-drawer-modern"
|
|
|
+ append-to-body
|
|
|
>
|
|
|
<div class="archive-content">
|
|
|
<!-- 头部综合信息区 (动态识别用户/商家) -->
|
|
|
@@ -464,7 +465,7 @@
|
|
|
</el-drawer>
|
|
|
|
|
|
<!-- 全部记录抽屉 -->
|
|
|
- <el-drawer v-model="showAllOrders" title="历史深度交易看板" size="1000px">
|
|
|
+ <el-drawer v-model="showAllOrders" title="历史深度交易看板" size="1000px" append-to-body>
|
|
|
<div class="drawer-p20">
|
|
|
<el-table :data="currentDisplayOrders" stripe style="width: 100%">
|
|
|
<el-table-column prop="orderNo" label="订单号" width="200" />
|
|
|
@@ -488,6 +489,8 @@
|
|
|
:title="currentSelectionType === 'job' ? '选择发送岗位' : '选择岗位发送结算单'"
|
|
|
width="600px"
|
|
|
class="job-selector-dialog"
|
|
|
+ append-to-body
|
|
|
+ destroy-on-close
|
|
|
>
|
|
|
<div class="job-selector-body">
|
|
|
<div class="filter-tabs-wrapper">
|
|
|
@@ -588,6 +591,14 @@ const isResizing = ref(false);
|
|
|
|
|
|
// 视图控制
|
|
|
const showFullArchive = ref(false);
|
|
|
+const showAllOrders = ref(false);
|
|
|
+const jobSelectVisible = ref(false);
|
|
|
+const currentSelectionType = ref('job'); // job or order
|
|
|
+const selectedJobCategory = ref('全职岗位');
|
|
|
+const jobSearchKeyword = ref('');
|
|
|
+const jobCurrentPage = ref(1);
|
|
|
+const jobPageSize = ref(3);
|
|
|
+
|
|
|
const sessionList = ref([]);
|
|
|
const messageList = ref([]);
|
|
|
|
|
|
@@ -737,7 +748,7 @@ async function handleSend() {
|
|
|
// 调用REST API发送消息
|
|
|
const response = await sendTextMessage(messageData);
|
|
|
|
|
|
- if (response.code === 0) {
|
|
|
+ if (response.code === 200 || response.code === 0) {
|
|
|
// 添加到本地消息列表
|
|
|
messageList.value.push({
|
|
|
sender: 'waiter',
|
|
|
@@ -805,18 +816,27 @@ async function selectSession(session) {
|
|
|
pageNum: 1,
|
|
|
pageSize: 50
|
|
|
});
|
|
|
-
|
|
|
- if (response.code === 0 && response.data) {
|
|
|
+ if ((response.code === 200 || response.code === 0) && response.rows) {
|
|
|
// 将后端返回的消息转换为前端格式
|
|
|
- messageList.value = response.data.rows.map(msg => ({
|
|
|
- sender: msg.senderType === 2 ? 'waiter' : 'customer',
|
|
|
- type: msg.msgType || 'text',
|
|
|
- content: msg.content,
|
|
|
- time: msg.sendTime,
|
|
|
- payload: msg.msgType === 'job_card' || msg.msgType === 'order_card' ? JSON.parse(msg.payload) : null,
|
|
|
- fileUrl: msg.fileUrl,
|
|
|
- fileName: msg.fileName
|
|
|
- }));
|
|
|
+ messageList.value = response.rows.map(msg => {
|
|
|
+ let parsedPayload = null;
|
|
|
+ if ((msg.msgType === 'job_card' || msg.msgType === 'order_card') && msg.payload) {
|
|
|
+ parsedPayload = typeof msg.payload === 'string' ? JSON.parse(msg.payload) : msg.payload;
|
|
|
+ } else if (msg.msgType === 'file') {
|
|
|
+ parsedPayload = { name: msg.fileName || '未知文件', url: msg.fileUrl, size: '未知大小' };
|
|
|
+ } else if (msg.msgType === 'image') {
|
|
|
+ parsedPayload = { url: msg.fileUrl || msg.content };
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ sender: msg.senderType === 2 ? 'waiter' : 'customer',
|
|
|
+ type: msg.msgType || 'text',
|
|
|
+ content: msg.content,
|
|
|
+ time: msg.sendTime,
|
|
|
+ payload: parsedPayload,
|
|
|
+ fileUrl: msg.fileUrl,
|
|
|
+ fileName: msg.fileName
|
|
|
+ };
|
|
|
+ });
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.error('加载历史消息失败:', error);
|
|
|
@@ -848,7 +868,7 @@ async function handleFileChange(e) {
|
|
|
if (file.type.startsWith('image/')) {
|
|
|
// 上传图片
|
|
|
const response = await sendImageMessage(activeSessionId.value, msgNo, file);
|
|
|
- if (response.code === 0) {
|
|
|
+ if (response.code === 200 || response.code === 0) {
|
|
|
messageList.value.push({
|
|
|
sender: 'waiter',
|
|
|
type: 'image',
|
|
|
@@ -861,7 +881,7 @@ async function handleFileChange(e) {
|
|
|
} else {
|
|
|
// 上传文件
|
|
|
const response = await sendFileMessage(activeSessionId.value, msgNo, file);
|
|
|
- if (response.code === 0) {
|
|
|
+ if (response.code === 200 || response.code === 0) {
|
|
|
messageList.value.push({
|
|
|
sender: 'waiter',
|
|
|
type: 'file',
|