265 lines
12 KiB
JavaScript
265 lines
12 KiB
JavaScript
|
|
import React from 'react';
|
|||
|
|
import {inject, observer} from 'mobx-react';
|
|||
|
|
import {toJS} from 'mobx';
|
|||
|
|
import {Spin, Modal, Row, Col} from 'antd';
|
|||
|
|
import {WeaNewScrollPagination, WeaLocaleProvider} from 'ecCom';
|
|||
|
|
const getLabel = WeaLocaleProvider.getLabel;
|
|||
|
|
import WeesoTop from './childComponents/WeesoTop';
|
|||
|
|
import WeesoInput from './childComponents/WeesoInput';
|
|||
|
|
import CommonContent from './childComponents/CommonContent';
|
|||
|
|
import SearchTools from './childComponents/SearchTools';
|
|||
|
|
import ImagesContent from './childComponents/ImagesContent';
|
|||
|
|
import Adlink from './childComponents/Adlink';
|
|||
|
|
|
|||
|
|
const store = ['routing', 'weesoStore', 'weesoSeachSetStore']
|
|||
|
|
@inject(...store)
|
|||
|
|
@observer
|
|||
|
|
class WeesoResult extends React.Component {
|
|||
|
|
constructor(props) {
|
|||
|
|
super(props);
|
|||
|
|
this.state = {
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
viewSubCompany = (subcompanyid) => {
|
|||
|
|
const { addSubdomainUrl } = this.props.weesoStore;
|
|||
|
|
window.open(`${addSubdomainUrl('/spa/hrm/engine.html#/hrmengine/organization?showTree=false&isView=1&type=subcompany&id=')}${subcompanyid}`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
viewDepartment = (departmentid) => {
|
|||
|
|
const { addSubdomainUrl } = this.props.weesoStore;
|
|||
|
|
window.open(`${addSubdomainUrl('/spa/hrm/engine.html#/hrmengine/organization?showTree=false&isView=1&type=department&id=')}${departmentid}`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
componentDidMount() {
|
|||
|
|
const {weesoStore, routing, weesoSeachSetStore} = this.props;
|
|||
|
|
const { getAdConditions, recordType } = this.props.weesoSeachSetStore;
|
|||
|
|
//处理外部跳转进入微搜结果页面
|
|||
|
|
//value: 输入框的值 type:搜索类型 searchType: 内容/图片 msg: 服务未启动的报错信息
|
|||
|
|
const {location} = this.props;
|
|||
|
|
const {query = {value: '', type: '', searchType: '', msg}} = location;
|
|||
|
|
const { search } = this.props.location;
|
|||
|
|
weesoStore.setState(
|
|||
|
|
{ urlParams: query || {} },
|
|||
|
|
()=>{
|
|||
|
|
if(query.value !== undefined){//需要!== undefined作为判断,不能去掉
|
|||
|
|
weesoStore.isCustomer = true;
|
|||
|
|
if (query.value.trim() == '' && query.type == 'ALL') {
|
|||
|
|
routing.push(`/main/esearch/weeso`);
|
|||
|
|
}else if(query.searchType == 'ERROR'){
|
|||
|
|
Modal.error({
|
|||
|
|
title: getLabel(15172, "系统提示"),
|
|||
|
|
content: query.msg,
|
|||
|
|
});
|
|||
|
|
}else {
|
|||
|
|
weesoStore.setState(
|
|||
|
|
{
|
|||
|
|
inputValue: query.value || '',
|
|||
|
|
defalutMoreKey: query.type || 'ALL',
|
|||
|
|
searchType: query.searchType || 'CONTENT'
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
query.page_uuid && weesoSeachSetStore.setState({ page_uuid: query.page_uuid });
|
|||
|
|
const callRouting = () => routing.push(`/main/esearch/weeso${search}`);
|
|||
|
|
const callSearch = () => weesoStore.inputValue !== '' && weesoStore.doSearch();
|
|||
|
|
weesoStore.getBaseData(false, callRouting, callSearch, query.page_uuid);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
weesoStore.showSubmit();
|
|||
|
|
weesoStore.initWeesoResult();
|
|||
|
|
weesoStore.changeKey(query.type || 'ALL', false);
|
|||
|
|
weesoStore.isCustomer = false;
|
|||
|
|
weesoStore.showAdmin = false;
|
|||
|
|
|
|||
|
|
if(query && (query.value || query.type)) {// 直接url搜索 main/esearch/result?searchType=CONTENT&type=ALL&value=aa
|
|||
|
|
weesoStore.setState(
|
|||
|
|
{
|
|||
|
|
inputValue: query.value || '',
|
|||
|
|
defalutMoreKey: query.type || 'ALL',
|
|||
|
|
searchType: query.searchType || 'CONTENT',
|
|||
|
|
},
|
|||
|
|
() => {
|
|||
|
|
weesoSeachSetStore.setState({ topTabsVisible: true }, () => {
|
|||
|
|
let p = {
|
|||
|
|
search_type: query.type || 'ALL',
|
|||
|
|
page_uuid: query.page_uuid || 'FULLSEARCH',
|
|||
|
|
};
|
|||
|
|
if(query.page_uuid && (query.page_uuid !== 'FULLSEARCH')) {
|
|||
|
|
p = {
|
|||
|
|
search_type: ''
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
getAdConditions(p);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
} else {
|
|||
|
|
if(query.page_uuid && (query.page_uuid !== 'FULLSEARCH')) {
|
|||
|
|
// let p = {
|
|||
|
|
// search_type: '',
|
|||
|
|
// page_uuid: query.page_uuid,
|
|||
|
|
// };
|
|||
|
|
// getAdConditions(p);
|
|||
|
|
} else if(recordType !== 'commonContion') {
|
|||
|
|
getAdConditions();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
componentWillReceiveProps(nextProps) {
|
|||
|
|
|
|||
|
|
//处理外部跳转进入微搜结果页面
|
|||
|
|
const {location, weesoStore, routing, weesoSeachSetStore} = this.props;
|
|||
|
|
const { getAdConditions } = this.props.weesoSeachSetStore;
|
|||
|
|
const {query = {value: '', type: '', searchType: '', mag: ''}} = location;
|
|||
|
|
const
|
|||
|
|
nextVal = nextProps.location.query.value,
|
|||
|
|
nextType = nextProps.location.query.type,
|
|||
|
|
nextSearchType = nextProps.location.query.searchType,
|
|||
|
|
nextMsg = nextProps.location.query.msg;
|
|||
|
|
weesoStore.setState(
|
|||
|
|
{ urlParams: nextProps.location.query || {} },
|
|||
|
|
()=>{
|
|||
|
|
const { search } = this.props.location;
|
|||
|
|
if (this.props.location.key !== nextProps.location.key && weesoStore && nextVal && nextType) {
|
|||
|
|
//if (weesoStore && (query.value || nextVal) && (nextType !== query.type || nextVal !== query.value)) {
|
|||
|
|
weesoStore.isCustomer = true;
|
|||
|
|
if (nextVal == '' && nextType == 'ALL') {
|
|||
|
|
routing.push(`/main/esearch/weeso${search}`)
|
|||
|
|
}else if (nextType == 'ERROR') {
|
|||
|
|
Modal.error({
|
|||
|
|
title: getLabel(15172, "系统提示"),
|
|||
|
|
content: nextMsg,
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
const key = nextType || 'ALL';
|
|||
|
|
weesoStore.changeKey(key, false);
|
|||
|
|
weesoStore.setState(
|
|||
|
|
{
|
|||
|
|
inputValue: nextVal ? nextVal : query.value,
|
|||
|
|
defalutMoreKey: nextType ? nextType : query.type,
|
|||
|
|
defaultKey: nextSearchType ? nextSearchType : query.searchType
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
weesoStore.resortTopTaps();
|
|||
|
|
weesoStore.inputValue !== '' && weesoStore.doSearch();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
weesoStore.isCustomer = false;
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if(query && (query.value || query.type)) {// 直接url搜索 main/esearch/result?searchType=CONTENT&type=ALL&value=aa
|
|||
|
|
weesoStore.setState(
|
|||
|
|
{
|
|||
|
|
inputValue: query.value || '',
|
|||
|
|
defalutMoreKey: query.type || 'ALL',
|
|||
|
|
searchType: query.searchType || 'CONTENT',
|
|||
|
|
},
|
|||
|
|
() => {
|
|||
|
|
weesoSeachSetStore.setState({ topTabsVisible: true }, () => {
|
|||
|
|
let p = {
|
|||
|
|
search_type: query.type || 'ALL',
|
|||
|
|
page_uuid: query.page_uuid || 'FULLSEARCH',
|
|||
|
|
};
|
|||
|
|
getAdConditions(p);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
componentWillUnmount() {
|
|||
|
|
const { weesoSeachSetStore, weesoStore } = this.props;
|
|||
|
|
weesoSeachSetStore.setState({
|
|||
|
|
searchTagParams: {}
|
|||
|
|
});
|
|||
|
|
weesoStore.setState({
|
|||
|
|
skipSearchParams: {}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
render() {
|
|||
|
|
const {weesoStore} = this.props;
|
|||
|
|
let {defaultKey, loading, emptyResult, page, pages, imageResult, defalutMoreKey, inputValue, searchDatas, isSearchSucess,
|
|||
|
|
searchKey, tagsDatas, page_resultShowLogo, page_resultLogo
|
|||
|
|
} = weesoStore;
|
|||
|
|
const {contentType, normalkey} = searchDatas;
|
|||
|
|
const { logoVisible } = tagsDatas;
|
|||
|
|
let numberPage = Number(page);
|
|||
|
|
emptyResult = toJS(emptyResult);
|
|||
|
|
const showResult = isSearchSucess ? defalutMoreKey == contentType : true; //判断搜索结果和页面显示的搜索内容是否一致(避免因数据加载速度,前面搜素结果覆盖当下)
|
|||
|
|
const hideTitle = this.props.location.query.hideTitle;
|
|||
|
|
let { topTabsVisible, page_descStr } = this.props.weesoSeachSetStore;
|
|||
|
|
let topHeight = !topTabsVisible&&page_descStr==='' ? 'h-85' : 'h-115';
|
|||
|
|
if(hideTitle === 'true') {
|
|||
|
|
if(page_descStr !== '') {
|
|||
|
|
topHeight = 'h-115';
|
|||
|
|
} else {
|
|||
|
|
topHeight = 'h-85';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
const hideSearch = this.props.location.query.hideSearch || '0';
|
|||
|
|
let topStyle = {};
|
|||
|
|
if (hideSearch === '1') {
|
|||
|
|
topStyle = { display: 'none' };
|
|||
|
|
}
|
|||
|
|
return (
|
|||
|
|
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@a1lyao`} className="esearch-result-container" style={{ height: '100%' }}>
|
|||
|
|
{page_resultShowLogo && <div className="esearch-result-logo" style={topStyle}>
|
|||
|
|
<span className={`result-img ${topHeight}`}><img width={77} height={40} src={`${page_resultLogo}`}/></span>
|
|||
|
|
</div>}
|
|||
|
|
<div className={page_resultShowLogo ? `wea-weeso wea-weeso-result wea-weeso-logo-visible` : `wea-weeso wea-weeso-result`} style={{height: '100%'}}>
|
|||
|
|
{/* <Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@olwh8w`} spinning={false}> */}
|
|||
|
|
<div className={`wesult-top-container ${topHeight}`} style={topStyle}>
|
|||
|
|
<WeesoTop ecId={`${this && this.props && this.props.ecId || ''}_WeesoTop@81y3sc`}/>
|
|||
|
|
<div className="result-input">
|
|||
|
|
<WeesoInput ecId={`${this && this.props && this.props.ecId || ''}_WeesoInput@wv0or1`} hideTitle={hideTitle} />
|
|||
|
|
<SearchTools ecId={`${this && this.props && this.props.ecId || ''}_SearchTools@zpdrbc`}/>
|
|||
|
|
</div>
|
|||
|
|
<Adlink ecId={`${this && this.props && this.props.ecId || ''}_Adlink@5fmoeb`}/>
|
|||
|
|
</div>
|
|||
|
|
{/* </Spin> */}
|
|||
|
|
<div className='wea-weeso-spin'>
|
|||
|
|
<Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@oflcf2`} spinning={loading}>
|
|||
|
|
{
|
|||
|
|
defaultKey == 'CONTENT' ?
|
|||
|
|
<CommonContent ecId={`${this && this.props && this.props.ecId || ''}_CommonContent@piqq00`} hidesearch={hideSearch} topTabHeight={topHeight}/> :
|
|||
|
|
<div className="result-content-images">
|
|||
|
|
<WeaNewScrollPagination ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScrollPagination@camkgn`}
|
|||
|
|
height={'100%'}
|
|||
|
|
onScrollEnd={() => {
|
|||
|
|
if (page < pages) {
|
|||
|
|
weesoStore.setState({page: `${numberPage + 1}`})
|
|||
|
|
weesoStore.inputValue != '' && weesoStore.doSearch();
|
|||
|
|
}
|
|||
|
|
setTimeout(() => {
|
|||
|
|
this.setState({
|
|||
|
|
newScrollLoading: false,
|
|||
|
|
})
|
|||
|
|
}, 2000)
|
|||
|
|
}}>
|
|||
|
|
{emptyResult ?
|
|||
|
|
<div>
|
|||
|
|
<div dangerouslySetInnerHTML={{__html: emptyResult}}/>
|
|||
|
|
</div> :
|
|||
|
|
imageResult && imageResult.lengrh != 0 && imageResult.map((item, index) => {
|
|||
|
|
return (
|
|||
|
|
<ImagesContent ecId={`${this && this.props && this.props.ecId || ''}_ImagesContent@gdfjwn@${index}`} values={item} index={index}/>
|
|||
|
|
)
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
</WeaNewScrollPagination>
|
|||
|
|
</div>
|
|||
|
|
}
|
|||
|
|
</Spin>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</Row>
|
|||
|
|
)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export default props => <WeesoResult ecId={`${this && this.props && this.props.ecId || ''}_WeesoResult@yiq5pn`} {...props} key={props.location.search || 'weeso-result'} />
|