import React, { useEffect, useState } from 'react' import { useHistory } from 'react-router-dom' import useRequest from '@ahooksjs/use-request/es' import { List, Spin, message } from 'antd' import { ReactComponent as CityImg } from 'assets/city.svg' import { default as ResearchActivitySvg } from 'assets/reseachactivity.svg' import { default as RecommendSvg } from 'assets/recommend.svg' import { default as GoingSvg } from 'assets/going.svg' import { default as WaitSvg } from 'assets/wait.svg' import { default as EndSvg } from 'assets/end.svg' import EmptyImg from 'assets/emptydata.png' import { useMedia } from 'Context/Media/MediaContext' import { ActivityService, IActivityTypeListItem } from 'Activity/Activity.service' import { INewPermissionType } from 'Material/components/NoPermission' import ActivityBtnComponent from 'Activity/components/ActivityBtn.component' import { IStateStringType } from 'Activity/components/ActivityBtn.component' import styles from '../css/ResearchActivity.module.scss' /**研选活动 */ const ResearchActivity: React.FC = () => { const history = useHistory() const media = useMedia() const [currentPage, setCurrentPage] = useState(1) const [pageSize, setPageSize] = useState(10) const [actTypeID, setActTypeID] = useState(undefined) // 活动类型,公司调研电话会-3 const [actState, setActState] = useState(undefined) // 活动进行状态 // 研选活动列表 const { data: actData, loading: activityListLoading, run: getResearchActivityList } = useRequest(ActivityService.getActivityTypeList, { manual: true, formatResult: response => response.data.Data }) // 获取易懂链接 const { run: getYidongUrl } = useRequest(ActivityService.getYidongActivityDetail, { manual: true, onSuccess: res => { res.data.Data?.YidongActivityUrl && window.open(res.data.Data?.YidongActivityUrl, '_blank') } }) useEffect(() => { getResearchActivityList({ PageSize: pageSize, CurrentIndex: 1, IsResearch: true }) // eslint-disable-next-line react-hooks/exhaustive-deps }, []) // 跳转到详情页 const handleToDetail = (item: IActivityTypeListItem) => { if ( item?.AuthInfo?.HasPermission && item?.AuthInfo?.HasPermission !== INewPermissionType.OK && (item?.YidongActivityUrl || (item as IActivityTypeListItem)?.IsYidongActivity) ) { return message.error('您暂无权限参加此活动,若想参加可以申请开通对应的试用权限') } // 易懂同步过来的活动 直接跳转 if ((item as IActivityTypeListItem)?.IsYidongActivity) { item.ActivityId && getYidongUrl(item.ActivityId) return } if (item?.YidongActivityUrl) { window.open(item.YidongActivityUrl) return } window.open(`${window.location.origin}/activity/detail/${(item as IActivityTypeListItem).ActivityId}`) } // 筛选进行中/已结束 const handleSelectState = (state: IStateStringType) => { setActState(state === actState ? undefined : state) getResearchActivityList({ PageSize: pageSize, CurrentIndex: 1, IsResearch: true, ActiveState: state === actState ? undefined : state, ActivityTypeId: actTypeID }) } // 筛选公司调研电话会 const handleSelectType = (type: number) => { setActTypeID(actTypeID ? undefined : type) getResearchActivityList({ PageSize: pageSize, CurrentIndex: 1, IsResearch: true, ActiveState: actState, ActivityTypeId: actTypeID ? undefined : type }) } const handleGetActivityData = (page: number, pageSize: number) => { setCurrentPage(page) setPageSize(pageSize) getResearchActivityList({ PageSize: pageSize, CurrentIndex: page, IsResearch: true, ActiveState: actState, ActivityTypeId: actTypeID }) window.scrollTo(0, 0) } const stateString = [ { state: IStateStringType.Waitting, name: '未开始', className: 'waitting-label', icon: WaitSvg }, { state: IStateStringType.Going, name: '进行中', className: 'going-label', icon: GoingSvg }, { state: IStateStringType.End, name: '已结束', className: 'end-label', icon: EndSvg } ] const formatState = (state: string, type: 'name' | 'className' | 'icon') => { const findItem = stateString.find(item => item.state === state) return findItem ? findItem[type] : '' } return (
icon 研选活动
进行中
已结束
公司调研电话会
{!activityListLoading && actData?.List?.length === 0 ? (
没有数据 暂无对应活动
) : ( (
icon {formatState(item.ActiveState, 'name')}
{item.ActivityType === 1 ? '线上' : '线下'}
{item.ActivityTypeName}
{item.Label}
{item.TopTime > 0 && item.ActiveState === IStateStringType.Waitting && ( icon )} {item.IsResearchPoints ? (
扣点
) : item.IsExternalLabel ? (
外部资源
) : null} {item.ActivityName}
{item.ActivityTimeText} {item.City && ( {item.City} )}
)} pagination={{ current: currentPage, total: actData?.Paging.Totals, hideOnSinglePage: true, showSizeChanger: true, showQuickJumper: true, responsive: true, pageSize: pageSize, pageSizeOptions: [10, 20, 50, 100], onChange: handleGetActivityData }} /> )}
) } export default ResearchActivity