289 lines
11 KiB
JavaScript
289 lines
11 KiB
JavaScript
|
|
import React from 'react';
|
|||
|
|
import {Button, Popover} from 'antd';
|
|||
|
|
import {WeaSelect, WeaLocaleProvider} from 'ecCom';
|
|||
|
|
import {inject, observer} from 'mobx-react';
|
|||
|
|
import {toJS} from 'mobx';
|
|||
|
|
const getLabel = WeaLocaleProvider.getLabel;
|
|||
|
|
|
|||
|
|
import ApiSet from '../ApiSet';
|
|||
|
|
import WeesoSearchSet from '../weesoSearchSet';
|
|||
|
|
|
|||
|
|
const store = [
|
|||
|
|
'weesoStore',
|
|||
|
|
'weesoSetStore',
|
|||
|
|
'routing',
|
|||
|
|
'weesoSeachSetStore'
|
|||
|
|
]
|
|||
|
|
@inject(...store)
|
|||
|
|
@observer
|
|||
|
|
export default class WeesoTop extends React.Component {
|
|||
|
|
constructor(props) {
|
|||
|
|
super(props);
|
|||
|
|
this.state = {
|
|||
|
|
setMaskClosable: true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
componentDidMount() {
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
componentWillUnmount() {
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
render() {
|
|||
|
|
const {weesoStore} = this.props;
|
|||
|
|
let {
|
|||
|
|
setVisible, sysVisible, perVisible, sysadminVisible,
|
|||
|
|
numberValue, searchValue, sortValue, baseDadas,
|
|||
|
|
addSubdomainUrl
|
|||
|
|
} = weesoStore;
|
|||
|
|
baseDadas = toJS(baseDadas);
|
|||
|
|
let
|
|||
|
|
sysBtn = baseDadas.sysBtn || [],
|
|||
|
|
hotKeyPer = baseDadas.hotKey && baseDadas.hotKey.per || [],
|
|||
|
|
hotKeySys = baseDadas.hotKey && baseDadas.hotKey.sys || [],
|
|||
|
|
numperpage = baseDadas.searchSet && baseDadas.searchSet.numperpage || [],
|
|||
|
|
searchField = baseDadas.searchSet && baseDadas.searchSet.searchField || [],
|
|||
|
|
sortField = baseDadas.searchSet && baseDadas.searchSet.sortField || [];
|
|||
|
|
let hasPer = true, hasSys = true;
|
|||
|
|
if(baseDadas.hotKey) {
|
|||
|
|
baseDadas.hotKey.hasPer !== undefined && (hasPer = baseDadas.hotKey.hasPer);
|
|||
|
|
baseDadas.hotKey.hasSys !== undefined && (hasSys = baseDadas.hotKey.hasSys);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const {setMaskClosable} = this.state;
|
|||
|
|
const sysadminContent = (
|
|||
|
|
<ul className="wea-top-hot-content">
|
|||
|
|
{sysBtn && sysBtn.length != 0 && sysBtn.map(item => {
|
|||
|
|
return (
|
|||
|
|
<li className="weeso-systop-link" title={item.title}><a target="_blank" href={item.link}>{item.title}</a></li>
|
|||
|
|
)
|
|||
|
|
})}
|
|||
|
|
</ul>
|
|||
|
|
)
|
|||
|
|
const sysContent = (
|
|||
|
|
<ul className="wea-top-hot-content">
|
|||
|
|
{ hotKeySys.length ===0 && <li>{getLabel('391116','暂无热点')}</li>}
|
|||
|
|
{hotKeySys && hotKeySys.length!==0 && hotKeySys.map(item => {
|
|||
|
|
return (
|
|||
|
|
<li title={item} onClick={() => {
|
|||
|
|
weesoStore.sysVisible = false;
|
|||
|
|
this.hotCommonClick(item);
|
|||
|
|
}}>{item}</li>
|
|||
|
|
)
|
|||
|
|
})}
|
|||
|
|
</ul>
|
|||
|
|
)
|
|||
|
|
const perContent = (
|
|||
|
|
<ul className="wea-top-hot-content">
|
|||
|
|
{ hotKeyPer.length ===0 && <li>{getLabel('391116','暂无热点')}</li>}
|
|||
|
|
{hotKeyPer && hotKeyPer.length!==0 && hotKeyPer.map(item => {
|
|||
|
|
return (
|
|||
|
|
<li title={item} onClick={() => {
|
|||
|
|
weesoStore.perVisible = false;
|
|||
|
|
this.hotCommonClick(item);
|
|||
|
|
}}>{item}</li>
|
|||
|
|
)
|
|||
|
|
})}
|
|||
|
|
</ul>
|
|||
|
|
)
|
|||
|
|
const searchContent = (
|
|||
|
|
<div className="wea-top-set-content">
|
|||
|
|
<p className="set-content-search">
|
|||
|
|
{getLabel(384226, "搜索设置")}
|
|||
|
|
</p>
|
|||
|
|
<div className="set-content-advanced" ref="contentWrapper">
|
|||
|
|
<div className="set-content-count">
|
|||
|
|
<span title={getLabel(17491, "每页显示记录数")}>{getLabel(17491, "每页显示记录数")}:</span>
|
|||
|
|
<span className="set-select">
|
|||
|
|
<WeaSelect ecId={`${this && this.props && this.props.ecId || ''}_WeaSelect@7aubcb`}
|
|||
|
|
value={numberValue}
|
|||
|
|
options={this.opt(numperpage)}
|
|||
|
|
onChange={(v) => {
|
|||
|
|
weesoStore.setState({numberValue: v})
|
|||
|
|
this.setState({setMaskClosable: true})
|
|||
|
|
}}
|
|||
|
|
onFocus={() => {
|
|||
|
|
this.setState({setMaskClosable: false})
|
|||
|
|
}}
|
|||
|
|
onBlur={() => {
|
|||
|
|
this.setState({setMaskClosable: true})
|
|||
|
|
}}
|
|||
|
|
layout={this.refs.contentWrapper}
|
|||
|
|
/>
|
|||
|
|
</span>
|
|||
|
|
<span>{getLabel(18256, "条")}</span>
|
|||
|
|
</div>
|
|||
|
|
<div>
|
|||
|
|
<span title={getLabel(19332, "高级设置")}>{getLabel(19332, "高级设置")}:</span>
|
|||
|
|
<span className="set-select">
|
|||
|
|
<WeaSelect ecId={`${this && this.props && this.props.ecId || ''}_WeaSelect@2gt090`}
|
|||
|
|
value={searchValue}
|
|||
|
|
options={this.opt(searchField)}
|
|||
|
|
onChange={(v) => {
|
|||
|
|
weesoStore.setState({searchValue: v})
|
|||
|
|
this.setState({setMaskClosable: true})
|
|||
|
|
}}
|
|||
|
|
layout={this.refs.contentWrapper}
|
|||
|
|
onFocus={() => {
|
|||
|
|
this.setState({setMaskClosable: false})
|
|||
|
|
}}
|
|||
|
|
onBlur={() => {
|
|||
|
|
this.setState({setMaskClosable: true})
|
|||
|
|
}}
|
|||
|
|
style={{maxWidth:'120px'}}
|
|||
|
|
/>
|
|||
|
|
</span>
|
|||
|
|
<span className="set-select">
|
|||
|
|
<WeaSelect ecId={`${this && this.props && this.props.ecId || ''}_WeaSelect@6uba9a`}
|
|||
|
|
value={sortValue}
|
|||
|
|
options={this.opt(sortField)}
|
|||
|
|
onChange={(v) => {
|
|||
|
|
weesoStore.setState({sortValue: v})
|
|||
|
|
this.setState({setMaskClosable: true})
|
|||
|
|
}}
|
|||
|
|
layout={this.refs.contentWrapper}
|
|||
|
|
onFocus={() => {
|
|||
|
|
this.setState({setMaskClosable: false})
|
|||
|
|
}}
|
|||
|
|
onBlur={() => {
|
|||
|
|
this.setState({setMaskClosable: true})
|
|||
|
|
}}
|
|||
|
|
style={{maxWidth:'120px'}}
|
|||
|
|
/>
|
|||
|
|
</span>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div className="set-content-btn">
|
|||
|
|
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@0t2fim`} type="primary" onClick={() => {
|
|||
|
|
weesoStore.setState({setVisible: false});
|
|||
|
|
weesoStore.saveSearchSet();
|
|||
|
|
}}>{getLabel(826, "确定")}</Button>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
)
|
|||
|
|
return (
|
|||
|
|
<div className="weeso-topbox">
|
|||
|
|
<ul className="weeso-top">
|
|||
|
|
<li className="top-set">
|
|||
|
|
<Popover ecId={`${this && this.props && this.props.ecId || ''}_Popover@8ggo1s`} visible={setVisible} placement="bottomRight" content={searchContent} trigger="click"
|
|||
|
|
onVisibleChange={(v) => {
|
|||
|
|
weesoStore.setState({setVisible: v})
|
|||
|
|
}}
|
|||
|
|
mask={true}
|
|||
|
|
maskClosable={setMaskClosable}
|
|||
|
|
overlayClassName="weeso-style-popover"
|
|||
|
|
>
|
|||
|
|
<span className={weesoStore.setVisible ? 'topbox-li-focus' : 'topbox-li-blur'}
|
|||
|
|
onClick={() => {
|
|||
|
|
weesoStore.setState({setVisible: !setVisible})
|
|||
|
|
}}>{getLabel(30747, "设置")}</span>
|
|||
|
|
</Popover>
|
|||
|
|
</li>
|
|||
|
|
{hasPer && <li className="top-hot">
|
|||
|
|
<Popover ecId={`${this && this.props && this.props.ecId || ''}_Popover@ouftc1`} visible={perVisible} placement="bottomLeft" content={perContent} trigger="click"
|
|||
|
|
onVisibleChange={(v) => {
|
|||
|
|
weesoStore.setState({perVisible: v})
|
|||
|
|
}}
|
|||
|
|
overlayClassName="weeso-style-popover"
|
|||
|
|
>
|
|||
|
|
<span className={weesoStore.perVisible ? 'topbox-li-focus' : 'topbox-li-blur'}
|
|||
|
|
onClick={() => {
|
|||
|
|
weesoStore.setState({perVisible: !perVisible})
|
|||
|
|
}}>{getLabel(81784, "个人热点")}</span>
|
|||
|
|
</Popover>
|
|||
|
|
</li>}
|
|||
|
|
{hasSys && <li className="top-hot">
|
|||
|
|
<Popover ecId={`${this && this.props && this.props.ecId || ''}_Popover@5nn803`} visible={sysVisible} placement="bottomLeft" content={sysContent} trigger="click"
|
|||
|
|
onVisibleChange={(v) => {
|
|||
|
|
weesoStore.setState({sysVisible: v})
|
|||
|
|
}}
|
|||
|
|
overlayClassName="weeso-style-popover"
|
|||
|
|
>
|
|||
|
|
<span className={weesoStore.sysVisible ? 'topbox-li-focus' : 'topbox-li-blur'}
|
|||
|
|
onClick={() => {
|
|||
|
|
weesoStore.setState({sysVisible: !sysVisible})
|
|||
|
|
}}>{getLabel(81783, "系统热点")}</span>
|
|||
|
|
</Popover>
|
|||
|
|
</li>}
|
|||
|
|
|
|||
|
|
{weesoStore.showAdmin && sysBtn && sysBtn.length != 0 && sysBtn.length > 4 &&
|
|||
|
|
<li className="top-hot">
|
|||
|
|
<Popover ecId={`${this && this.props && this.props.ecId || ''}_Popover@bdott7`} visible={sysadminVisible} placement="bottomLeft" content={sysadminContent} trigger="click"
|
|||
|
|
onVisibleChange={(v) => {
|
|||
|
|
weesoStore.setState({sysadminVisible: v})
|
|||
|
|
}}
|
|||
|
|
overlayClassName="weeso-style-popover"
|
|||
|
|
>
|
|||
|
|
<span className={weesoStore.sysadminVisible ? 'topbox-li-focus' : 'topbox-li-blur'}
|
|||
|
|
onClick={() => {
|
|||
|
|
weesoStore.setState({sysadminVisible: !sysadminVisible})
|
|||
|
|
}}>{getLabel(25433, "管理")}</span>
|
|||
|
|
</Popover>
|
|||
|
|
</li>
|
|||
|
|
}
|
|||
|
|
</ul>
|
|||
|
|
|
|||
|
|
<ul className="weeso-systop">
|
|||
|
|
{weesoStore.showAdmin && sysBtn && sysBtn.length != 0 && sysBtn.map((item,index) => {
|
|||
|
|
if(item.id == 0){
|
|||
|
|
return <li className='weeso-systop-link'>
|
|||
|
|
<div className="systop-link-searchset" onClick={() => {
|
|||
|
|
const { setState, getCusPageSetList } = this.props.weesoSeachSetStore;
|
|||
|
|
setState({ dialogVisible: true }, () => {
|
|||
|
|
getCusPageSetList();
|
|||
|
|
});
|
|||
|
|
}}> {item.title} </div>
|
|||
|
|
</li>
|
|||
|
|
}
|
|||
|
|
if(item.id == 1){
|
|||
|
|
return <li className='weeso-systop-link'><a target="_blank" href={item.link}>{item.title}</a></li>
|
|||
|
|
}
|
|||
|
|
if(item.id == 2) {
|
|||
|
|
return <li className='weeso-systop-link' onClick={() => window.open(addSubdomainUrl('/spa/esearch/static/index.html#/main/esearch/robot'))}><a>{item.title}</a></li>
|
|||
|
|
}
|
|||
|
|
if(item.id == 3){
|
|||
|
|
return <li className='weeso-systop-link' onClick={() => this.props.weesoSetStore.setState({showDialog: true})}><a>{item.title}</a></li>
|
|||
|
|
}
|
|||
|
|
})}
|
|||
|
|
</ul>
|
|||
|
|
|
|||
|
|
<ApiSet ecId={`${this && this.props && this.props.ecId || ''}_ApiSet@d7208b`} isDialog={true}></ApiSet>
|
|||
|
|
<WeesoSearchSet ecId={`${this && this.props && this.props.ecId || ''}_WeesoSearchSet@84tb20`} />
|
|||
|
|
</div>
|
|||
|
|
)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//系统热点、个人热点--共有方法
|
|||
|
|
hotCommonClick = (item) => {
|
|||
|
|
const {weesoStore, routing} = this.props;
|
|||
|
|
const { search } = routing.location;
|
|||
|
|
weesoStore.setState({
|
|||
|
|
inputValue: item,
|
|||
|
|
isHotkeySearch: true,
|
|||
|
|
selectionStart: item.length,
|
|||
|
|
selectionEnd: item.length
|
|||
|
|
});
|
|||
|
|
const { filterParams } = this.props.weesoSeachSetStore;
|
|||
|
|
let p = { page_search_json: JSON.stringify(filterParams())};
|
|||
|
|
weesoStore.preSearch(p);
|
|||
|
|
if(!weesoStore.isSearch){
|
|||
|
|
weesoStore.changeKey(weesoStore.defalutMoreKey, false);
|
|||
|
|
weesoStore.baseDadas.FLAG != -1 && routing.push(`/main/esearch/result${search}`);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
opt = (datas) => {
|
|||
|
|
let options = [];
|
|||
|
|
datas = toJS(datas);
|
|||
|
|
datas && datas.length!==0 && datas.map(item => {
|
|||
|
|
options.push({
|
|||
|
|
key: item.key,
|
|||
|
|
selected: item.selected,
|
|||
|
|
showname: item.showname,
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
return options;
|
|||
|
|
}
|
|||
|
|
}
|