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

313 lines
18 KiB
JavaScript
Raw Normal View History

2024-05-15 16:50:21 +08:00
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>
)
}
}