Commit e0bd2f46 authored by 卢均锐's avatar 卢均锐

feat: 准备接入im部分

parent 31580809
......@@ -7,7 +7,8 @@ import { observer } from 'mobx-react'
import { PublicApi } from '@/services/api';
import { priceFormat } from '@/utils/numberFomat';
import { formatTimeString } from '@/utils'
import { formatTimeString } from '@/utils';
import { toChatRoom } from '@/utils/im';
import { usePurchaseBidStore } from '@/store/purchaseBid';
import StatusBox from '../../../purchaseBid/readyBid/management/components/statusBox';
......@@ -98,7 +99,7 @@ const Detail = () => {
<div className={styles.warp}>
<div className={styles.header}>
<ArrowLeftOutlined className={styles.goBack} onClick={() => history.goBack()} />
<div className={styles.title}>{dataSource?.details}<span>{dataSource?.createMemberName}</span><IMBtn func={() => console.log('ok')} /></div>
<div className={styles.title}>{dataSource?.details}<span>{dataSource?.createMemberName}</span><IMBtn func={() => toChatRoom(dataSource.memberId)} /></div>
</div>
<div className={styles.layout}>
<Row gutter={[8, 8]}>
......
......@@ -5,6 +5,7 @@ import level1 from '@/assets/icons/the_first.png';
import level2 from '@/assets/icons/the_second.png';
import level3 from '@/assets/icons/the_third.png';
import { priceFormat } from '@/utils/numberFomat';
import { toChatRoom } from '@/utils/im';
import IMBtn from '../../../../../components/detail/components/iMBtn';
......@@ -55,7 +56,7 @@ const RankRow: React.FC<RankRowProps> = (props: any) => {
</div>
<div className={styles.rankRowRight}>
{detail.contacts}
<IMBtn func={() => console.log(1)} />
<IMBtn func={() => toChatRoom(detail.memberId)} />
</div>
</div>
)
......@@ -71,7 +72,7 @@ const RankRow: React.FC<RankRowProps> = (props: any) => {
<div>
<div className={styles.rankRowRight}>
{detail.contacts}
<IMBtn func={() => console.log(1)} />
<IMBtn func={() => toChatRoom(detail.memberId)} />
</div>
</div>
</div>
......
import React from 'react';
import { Button, notification, message } from 'antd';
import BASE_CONFIG from '../../config/base.config.json'
import { PublicApi } from '@/services/api';
import { SHOP_TYPE } from '@/constants';
import { getAuth } from '@/utils/auth';
const DOMAIN = {...BASE_CONFIG}.global.siteInfo.siteUrl.replace('www','');//document.domain
const CHATROOM_URL = `http://chatroom${DOMAIN}/chatRoom`;
const COOKIEPREFIX = 'CHATROOM_';
// 主动调起聊天室 mmeberId 为接收人的memberId
export const toChatRoom = (memberId: string = '', shopType: number = 1) => {
const _curUserInfo = getAuth();
if(!memberId){
document.cookie = `${COOKIEPREFIX}userInfo=${JSON.stringify(_curUserInfo)};path=/;domain=${DOMAIN}`;
document.cookie = `${COOKIEPREFIX}shopType=${shopType};path=/;domain=${DOMAIN}`;
window.open(CHATROOM_URL);
return;
}
PublicApi.getMessageImHistorySession({ memberId: memberId, currMemberId: String(_curUserInfo.memberId) }).then(res => {
if (res.code === 1000) {
const _userId = res.data.data?.[0]?.userList?.[0]?.userId
if (_userId) {
document.cookie = `${COOKIEPREFIX}curMemberId=${memberId};path=/;domain=${DOMAIN}`;
document.cookie = `${COOKIEPREFIX}curUserId=${_userId};path=/;domain=${DOMAIN}`;
document.cookie = `${COOKIEPREFIX}userInfo=${JSON.stringify(_curUserInfo)};path=/;domain=${DOMAIN}`;
document.cookie = `${COOKIEPREFIX}shopType=${shopType};path=/;domain=${DOMAIN}`;
window.open(CHATROOM_URL);
} else {
message.error('该会员底下没有客服!');
}
}
})
}
interface NotificationChatRoomProps {
//通知消息
detail: any
}
// 被动从websocket调起聊天室
export const notificationChatRoom = (props: NotificationChatRoomProps) => {
const { detail } = props
const _curUserInfo = getAuth();
const close = () => {
console.log(
'Notification was closed. Either the close button was clicked or duration time elapsed.',
);
};
const key = `open${Date.now()}`;
const btn = (
<Button type="primary" size="small" onClick={() => {
document.cookie = `${COOKIEPREFIX}userInfo=${JSON.stringify(_curUserInfo)};path=/;domain=${DOMAIN}`;
document.cookie = `${COOKIEPREFIX}shopType=${shopType};path=/;domain=${DOMAIN}`;
window.open(CHATROOM_URL);
notification.close(key)
}}>
查看
</Button>
);
notification.open({
message: '你收到一条消息',
description:
'A function will be be called after the notification is closed (automatically after the "duration" time of manually).',
btn,
key,
duration: 10,
onClose: close,
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment