313 lines
18 KiB
JavaScript
313 lines
18 KiB
JavaScript
import React from 'react';
|
||
import {inject, observer} from 'mobx-react';
|
||
import {toJS} from 'mobx';
|
||
import {Spin, Pagination} from 'antd';
|
||
import {WeaNewScroll, WeaDialog, WeaTools, WeaAvatar, WeaInput, WeaCustomNew } from 'ecCom';
|
||
const { sendMsg } = WeaTools;
|
||
const Base64 = ecCom.WeaTools.Base64;
|
||
import {WeaLocaleProvider} from 'ecCom';
|
||
const getLabel = WeaLocaleProvider.getLabel;
|
||
|
||
// import Apps from 'weaSmallApp';
|
||
// const AppCom = Apps.com;
|
||
// const SendSms = AppCom.SendSms;
|
||
//
|
||
// import Workplan from 'weaWorkplan';
|
||
// const WorkPlanCreate = Workplan.com.WorkPlanCreate;
|
||
const store = [
|
||
'weesoSeachSetStore',
|
||
'weesoStore',
|
||
'routing'
|
||
];
|
||
@inject(...store)
|
||
@observer
|
||
export default class CommonContent extends React.Component {
|
||
constructor(props) {
|
||
super(props);
|
||
this.state = {
|
||
smsVisible: false,
|
||
workPlanVisible: false,
|
||
id: '',
|
||
}
|
||
}
|
||
|
||
componentDidMount() {
|
||
const { getAdConditions } = this.props.weesoSeachSetStore;
|
||
let pageuuid = this.props.routing&&this.props.routing.location&&this.props.routing.location.query&&this.props.routing.location.query.page_uuid;
|
||
const { getBaseData, setUrlParams } = this.props.weesoStore;
|
||
let urlParms = this.props.routing && this.props.routing.location && this.props.routing.location.query;
|
||
urlParms = toJS(urlParms);
|
||
if(pageuuid) {
|
||
setUrlParams(urlParms,() => {
|
||
getBaseData(undefined, undefined, undefined, pageuuid, () => {
|
||
if(pageuuid !== 'FULLSEARCH') {
|
||
let p = {
|
||
page_uuid: pageuuid,
|
||
};
|
||
getAdConditions(p);
|
||
}
|
||
});
|
||
});
|
||
} else {
|
||
setUrlParams(urlParms,() => {
|
||
getBaseData();
|
||
});
|
||
}
|
||
if (!window.weaWorkplan) {
|
||
eventRegister.loadModule('f_workplan', ()=>{
|
||
this.props.weesoStore.setWPLoaded(true)
|
||
}, ()=>{})
|
||
} else {
|
||
this.props.weesoStore.setWPLoaded(true)
|
||
}
|
||
if (!window.weaSmallApp) {
|
||
eventRegister.loadModule('f_smallApp', ()=>{
|
||
this.props.weesoStore.setSMLoaded(true)
|
||
}, ()=>{})
|
||
} else {
|
||
this.props.weesoStore.setSMLoaded(true)
|
||
}
|
||
|
||
}
|
||
|
||
render() {
|
||
const {weesoStore, topTabHeight} = this.props;
|
||
let {searchResult, emptyResult, page, searchDatas, supportSkipSearch, addSubdomainUrl, defalutMoreKey} = weesoStore;
|
||
searchDatas = toJS(searchDatas);
|
||
let
|
||
maxPerPage = searchDatas.maxPerPage || '',
|
||
recordCount = searchDatas.recordCount || '';
|
||
|
||
let paginationProps = supportSkipSearch ? {
|
||
showQuickJumper: true,
|
||
showTotal: total => getLabel('514163','共${num}页').replace('${num}', Math.ceil(total/maxPerPage)),
|
||
} : {
|
||
className: "esearch-pagination-customize",
|
||
};
|
||
const hidesearch = this.props.hidesearch || '0';
|
||
let topStyle = {};
|
||
if (hidesearch === '1') {
|
||
topStyle = { paddingTop: '10px', paddingLeft:'10px'};
|
||
}
|
||
if(topTabHeight === 'h-85') {
|
||
topStyle = {
|
||
...topStyle,
|
||
paddingTop: 88, // 85+3
|
||
}
|
||
}
|
||
return (
|
||
<div className="result-content" style={topStyle}>
|
||
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@4go8kr`} height={'100%'}>
|
||
{defalutMoreKey === 'customOdoc'?
|
||
<WeaCustomNew style={{height:'100%'}}>
|
||
<div></div>
|
||
</WeaCustomNew>
|
||
: <React.Fragment>
|
||
{emptyResult ?
|
||
<div className="wea-content-empty">
|
||
<div dangerouslySetInnerHTML={{__html: emptyResult}}/>
|
||
</div> :
|
||
<div>
|
||
{
|
||
searchResult && searchResult.length != 0 && searchResult.map((item,index) => {
|
||
if (item.schema == 'ROBOT') {
|
||
return (
|
||
<div className="robot-content">
|
||
<iframe
|
||
name={item.head.name}
|
||
width={item.head.width || '100%'}
|
||
height={item.head.height}
|
||
src={item.head.iframe} frameborder="0">
|
||
</iframe>
|
||
</div>
|
||
)
|
||
} else if (item.schema == 'RSC') {
|
||
return (
|
||
<div className="content">
|
||
<div className="content-img">
|
||
{item && item.head && item.head.id != '' ? <WeaAvatar ecId={`${this && this.props && this.props.ecId || ''}_WeaAvatar@6jng21@${index}`} userId={item.head.id} /> :
|
||
<img src={item.head.imageUrl}/>
|
||
}
|
||
</div>
|
||
<div className="content-detail">
|
||
<p className="detail-msg">
|
||
{this.getHrmNameContent(item,weesoStore,index)}
|
||
<span className="detail-msg-gender">{item.head.gender}</span>
|
||
<img className="detail-addrs" src={addSubdomainUrl('/fullsearch/img/unit_wev8.png')}/>
|
||
<span dangerouslySetInnerHTML={{__html: item.head.org}}/>
|
||
</p>
|
||
{
|
||
item.foot && item.foot.info && item.foot.info.length != 0 && item.foot.info.map(i => {
|
||
return (
|
||
<p className="content-foot">
|
||
<span>{i.key}:</span>
|
||
<p>{
|
||
i.value
|
||
&& (i.value.indexOf('desensitization__') > -1 || i.value.indexOf('encryption__') > -1)
|
||
? (<WeaInput ecId={`${this && this.props && this.props.ecId || ''}_WeaInput@jjsmg6@${index}`} style={{display: 'inline-block',verticalAlign: 'baseline'}} value={i.value} viewAttr={1} />)
|
||
: i.value
|
||
}
|
||
</p>
|
||
</p>
|
||
)
|
||
}
|
||
)
|
||
}
|
||
</div>
|
||
{this.getCommonComtent(item.head)}
|
||
</div>
|
||
)
|
||
} else {
|
||
const other = item.other ? JSON.parse(item.other) : undefined;
|
||
return (
|
||
<div className="common-content">
|
||
<p className="common-content-top wea-f14 ">
|
||
<span dangerouslySetInnerHTML={{__html: item.head && item.head.type}}/>
|
||
<a className="content-link"
|
||
target="_blank"
|
||
href={item.head && item.head.titlelink}
|
||
dangerouslySetInnerHTML={{__html: item.head && (weesoStore.defaultKey == 'CONTENT' ? Base64.decode(item.head.title) : item.head.title)}}
|
||
onClick={() => {this.userHabitCollect(item.head.titlelink, index)}}
|
||
/>
|
||
{ other && (other.attachFile === true) && <i style={{ marginLeft: 5,color: '#4d7ad8'}} className="icon-coms-currency-Enclosure" /> }
|
||
</p>
|
||
<p dangerouslySetInnerHTML={{__html: item.head && (weesoStore.defaultKey == 'CONTENT' ? Base64.decode(item.contents.contents) : item.contents.contents)}}/>
|
||
{
|
||
item.foot && item.foot.info && item.foot.info.length != 0 && item.foot.info.map(i => {
|
||
return (
|
||
<p className="conmon-content-foot">
|
||
<span>{i.key?i.key+":":""}</span>
|
||
<p>
|
||
<div dangerouslySetInnerHTML={{ __html: i.value }} />
|
||
</p>
|
||
</p>
|
||
)
|
||
}
|
||
)
|
||
}
|
||
</div>
|
||
)
|
||
}
|
||
})
|
||
}
|
||
{searchResult && searchResult.length != 0 && recordCount > maxPerPage &&
|
||
<div className="result-pagination">
|
||
<Pagination ecId={`${this && this.props && this.props.ecId || ''}_Pagination@k5a9pv`}
|
||
{...paginationProps}
|
||
hideFirstLast
|
||
defaultCurrent={Number(page)}
|
||
pageSize = {maxPerPage}
|
||
total={recordCount}
|
||
onChange={(cur) => {
|
||
weesoStore.setState({page: String(cur)});
|
||
const { filterParams } = this.props.weesoSeachSetStore;
|
||
let p = { page_search_json: JSON.stringify(filterParams())};
|
||
weesoStore.preSearch(p);
|
||
}}/>
|
||
</div>}
|
||
</div>
|
||
}
|
||
</React.Fragment>}
|
||
</WeaNewScroll>
|
||
|
||
{this.props.weesoStore.wpLoaded && window.weaWorkplan && window.weaWorkplan.com && window.weaWorkplan.com.WorkPlanCreate &&
|
||
<window.weaWorkplan.com.WorkPlanCreate ecId={`${this && this.props && this.props.ecId || ''}_undefined@51m1rp`} type="create"
|
||
visible={this.state.workPlanVisible}
|
||
doClose={() => {this.setState({workPlanVisible: false})}}
|
||
onlyClose={() => {this.setState({workPlanVisible: false})}}
|
||
isCustom={true}
|
||
selectUser={this.state.id}
|
||
createConditionParams={[]}
|
||
/>
|
||
}
|
||
|
||
|
||
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@0fruzs`} visible={this.state.smsVisible}
|
||
title={getLabel(125977,"发送短信")}
|
||
icon="icon-coms-message"
|
||
style={{width: 800, height: 500}}
|
||
onCancel = {() => {this.setState({smsVisible: false})}}
|
||
>
|
||
{this.props.weesoStore.smLoaded && window.weaSmallApp && window.weaSmallApp.com && window.weaSmallApp.com.SendSms &&
|
||
<window.weaSmallApp.com.SendSms ecId={`${this && this.props && this.props.ecId || ''}_undefined@0g85qw`} isCus = {true} hrm={this.state.id}/>
|
||
}
|
||
</WeaDialog>
|
||
</div>
|
||
)
|
||
}
|
||
|
||
//用户使用习惯记录
|
||
userHabitCollect = (link, index) => {
|
||
const {weesoStore} = this.props;
|
||
weesoStore.userDatas.push({
|
||
type: 'eventTrack',
|
||
key: weesoStore.inputValue,
|
||
contentType: weesoStore.defaultKey,
|
||
page: weesoStore.page,
|
||
searchType: weesoStore.defalutMoreKey,
|
||
sortField: weesoStore.sortValue,
|
||
timeStamp: String(new Date().getTime()),
|
||
index: String(index),
|
||
eventUrl: link
|
||
})
|
||
}
|
||
|
||
getHrmNameContent=(item,weesoStore,index)=>{
|
||
if(item.head.titlelink&&item.head.titlelink!=''){
|
||
return(
|
||
<a target="_blank"
|
||
href={item.head.titlelink}
|
||
onClick={() => {this.userHabitCollect(item.head.titlelink,index)}}
|
||
>
|
||
<span dangerouslySetInnerHTML={{__html: weesoStore.defaultKey == 'CONTENT' ? Base64.decode(item.head.title) : item.head.title}}></span>
|
||
</a>
|
||
);
|
||
}else{
|
||
return(
|
||
<span>
|
||
<span dangerouslySetInnerHTML={{__html: weesoStore.defaultKey == 'CONTENT' ? Base64.decode(item.head.title) : item.head.title}}></span>
|
||
</span>
|
||
);
|
||
}
|
||
}
|
||
|
||
getCommonComtent = (chooseValues) => {
|
||
const { addSubdomainUrl } = this.props.weesoStore;
|
||
return (
|
||
<div className="content-choose">
|
||
<div>
|
||
{ (chooseValues.hideMessage==undefined||chooseValues.hideMessage!='1')&&
|
||
<a className="choose-icon" title={getLabel(384220,"发送消息")}
|
||
onClick={() => sendMsg(chooseValues && chooseValues.id, 0, '', '')}>
|
||
<i className="icon-coms-Send-message"></i>
|
||
</a>
|
||
}
|
||
{
|
||
(chooseValues.hideSms==undefined||chooseValues.hideSms!='1')&&
|
||
<a className="choose-icon" title={getLabel(125977,"发送短信")}
|
||
onClick={() => {this.setState({smsVisible: true, id: chooseValues.id})}}>
|
||
<i className="icon-coms-message-o"></i>
|
||
</a>
|
||
}
|
||
|
||
{
|
||
(chooseValues.hideEmail==undefined||chooseValues.hideEmail!='1')&&
|
||
<a className="choose-icon" title={getLabel(2051,"发送邮件")}
|
||
onClick={() => window.open(`${addSubdomainUrl('/spa/email/static/index.html#/main/email/new?isInternal=1&internalto=')}${chooseValues && chooseValues.id}`)}>
|
||
<i className="icon-coms-Send-emails"></i>
|
||
</a>
|
||
}
|
||
|
||
{
|
||
(chooseValues.hideWorkPlan==undefined||chooseValues.hideWorkPlan!='1')&&
|
||
<a className="choose-icon" title={getLabel(18481,"新建日程")}
|
||
onClick={() => {this.setState({workPlanVisible: true, id: chooseValues.id})}}>
|
||
<i className="icon-coms-New-schedule-o"></i>
|
||
</a>
|
||
}
|
||
</div>
|
||
</div>
|
||
)
|
||
}
|
||
}
|