75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
|
|
/**
|
|||
|
|
* 聊天室配置文件
|
|||
|
|
* 统一管理聊天室相关配置
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 聊天室配置
|
|||
|
|
*/
|
|||
|
|
export const chatConfig = {
|
|||
|
|
/**
|
|||
|
|
* 消息类型映射
|
|||
|
|
* 将消息类型名称映射到数字类型
|
|||
|
|
*/
|
|||
|
|
messageTypes: {
|
|||
|
|
text: 0, // 文本消息
|
|||
|
|
image: 1, // 图片消息
|
|||
|
|
audio: 2, // 语音消息
|
|||
|
|
video: 3, // 视频消息
|
|||
|
|
prescription: 4, // 处方消息
|
|||
|
|
file: 5, // 文件消息
|
|||
|
|
register: 10, // 挂号消息
|
|||
|
|
'patient-experience': 11, // 患者体验消息
|
|||
|
|
'product-card': 12, // 产品卡片消息
|
|||
|
|
'end-consultation': 13 // 结束问诊消息
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 根据消息类型名称获取数字类型
|
|||
|
|
* @param {string} typeName - 消息类型名称
|
|||
|
|
* @returns {number} 消息类型数字
|
|||
|
|
*/
|
|||
|
|
getMessageType(typeName) {
|
|||
|
|
return this.messageTypes[typeName] || 0;
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 根据数字类型获取消息类型名称
|
|||
|
|
* @param {number} type - 消息类型数字
|
|||
|
|
* @returns {string} 消息类型名称
|
|||
|
|
*/
|
|||
|
|
getMessageTypeName(type) {
|
|||
|
|
const entries = Object.entries(this.messageTypes);
|
|||
|
|
const found = entries.find(([name, value]) => value === type);
|
|||
|
|
return found ? found[0] : 'text';
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 房间配置
|
|||
|
|
*/
|
|||
|
|
room: {
|
|||
|
|
messagePageSize: 20, // 每页消息数量
|
|||
|
|
maxCacheSize: 100 // 最大缓存消息数
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 未读数配置
|
|||
|
|
*/
|
|||
|
|
unread: {
|
|||
|
|
maxCount: 99 // 最大未读数显示(超过显示99+)
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 格式化未读数显示
|
|||
|
|
* @param {number} count - 未读数
|
|||
|
|
* @returns {string} 格式化后的未读数
|
|||
|
|
*/
|
|||
|
|
formatUnreadCount(count) {
|
|||
|
|
if (count <= 0) return '';
|
|||
|
|
if (count > this.unread.maxCount) {
|
|||
|
|
return `${this.unread.maxCount}+`;
|
|||
|
|
}
|
|||
|
|
return count.toString();
|
|||
|
|
}
|
|||
|
|
};
|