weaver_trunk_cli/pc4mobx/esearch/components/childComponents/WeesoTop.js

289 lines
11 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 {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;
}
}