| New file |
| | |
| | | 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 |
| | | } |