10.10综合交易所原始源码-管理后台
1
admin
2026-01-06 089bf5d2378b3c4a61d795b2a92bede2c193b771
src/utils/talk.js
New file
@@ -0,0 +1,100 @@
import store from '@/store'
import router from '@/router'
import { parseTime } from '@/utils/functions'
import { ServeCreateTalkList } from '@/api/chat'
const KEY_INDEX_NAME = 'send_message_index_name'
/**
 * 通过对话索引查找对话列表下标
 *
 * @param {String} index_name
 */
export function findTalkIndex(index_name) {
  return store.state.talks.items.findIndex(
    item => item.index_name == index_name
  )
}
/**
 * 通过对话索引查找对话列表
 *
 * @param {String} index_name
 */
export function findTalk(index_name) {
  return store.state.talks.items.find(item => item.index_name == index_name)
}
/**
 * 格式化聊天对话列表数据
 *
 * @param {Object} params
 */
export function formateTalkItem(params) {
  let options = {
    id: 0,
    talk_type: 1,
    receiver_id: 0,
    name: '未设置昵称',
    remark_name: '',
    avatar: '',
    is_disturb: 0,
    is_top: 0,
    is_online: 0,
    is_robot: 0,
    unread_num: 0,
    content: '......',
    draft_text: '',
    msg_text: '',
    index_name: '',
    created_at: parseTime(new Date()),
  }
  Object.assign(options, params)
  options.index_name = `${options.talk_type}_${options.receiver_id}`
  return options
}
/**
 * 打开指定对话窗口
 *
 * @param {Integer} talk_type 对话类型[1:私聊;2:群聊;]
 * @param {Integer} receiver_id 接收者ID
 */
export function toTalk(talk_type, receiver_id) {
  ServeCreateTalkList({
    talk_type: parseInt(talk_type),
    receiver_id: parseInt(receiver_id),
  }).then(({ code, data }) => {
    if (code == 200) {
      sessionStorage.setItem(KEY_INDEX_NAME, `${talk_type}_${receiver_id}`)
      if (findTalkIndex(`${talk_type}_${receiver_id}`) == -1) {
        store.commit('PUSH_TALK_ITEM', formateTalkItem(data))
      }
      router.push({
        path: '/message',
        query: {
          v: new Date().getTime(),
        },
      })
    }
  })
}
/**
 * 获取需要打开的对话索引值
 *
 * @returns
 */
export function getCacheIndexName() {
  let index_name = sessionStorage.getItem(KEY_INDEX_NAME)
  if (index_name) {
    sessionStorage.removeItem(KEY_INDEX_NAME)
  }
  return index_name
}