weaver_trunk_cli/pc4mobx/esearch/components/WeesoResult.js

265 lines
12 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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'} />