You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
5.3 KiB
186 lines
5.3 KiB
/*
|
|
* @Author: ch
|
|
* @Date: 2022-06-07 15:41:05
|
|
* @LastEditors: ch
|
|
* @LastEditTime: 2022-06-14 14:59:41
|
|
* @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' },
|
|
|
|
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) {
|
|
if (payload.customType === 'transferWaiterSession') {
|
|
let str = `${payload.fromNickname}将会话转移给了${payload.toNickname}`;
|
|
if (payload.reason) {
|
|
str += `,并留言:${payload.reason}`;
|
|
}
|
|
payload = str;
|
|
} else {
|
|
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 = payload.text;
|
|
} 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) => {
|
|
if (payload.customType === 'transferWaiterSession') {
|
|
payload.type = 'transferWaiterSession';
|
|
} else {
|
|
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) => {
|
|
return api
|
|
.transferCustomerService({
|
|
storeId: 1,
|
|
...data,
|
|
})
|
|
.then((res) => {
|
|
console.log(res, 'resresres');
|
|
});
|
|
},
|
|
};
|
|
export default {
|
|
state,
|
|
getters,
|
|
mutations,
|
|
actions,
|
|
};
|