h5-cli
Version:
hello
246 lines (219 loc) • 6.5 kB
JavaScript
import React from 'react'
import {render} from 'react-dom'
import {Tag, Button, Table, Badge, Input, Popconfirm,Modal,Select} from 'react-piros'
import utils from '../../libs/utils'
import QueueCenter from '../../module/QueueCenter';
import MenuQueueNav from './MenuQueueNav'
import Loading from './Loading'
import config from '../../../config';
import TelescopicMenu from './TelescopicMenu'
//分诊管理部分动态导航
export default class QueueMeangeNavList extends React.Component{
constructor(props){
super(props)
this.intervalFlag = {
"1":"上午",
"2":"下午"
}
this.state = {
loading:false,
isOpen:true,
queueMenu:[]
}
}
componentDidMount() {
let {corpId, area} = this.props;
if(corpId && area){
this.initData(corpId, area);
}
}
componentWillReceiveProps(nextProps) {
let {corpId, area} = nextProps;
if(corpId != this.props.corpId || area != this.props.area){
this.setState({
loading:true
});
this.initData(corpId, area);
}
}
componentWillUnmount() {
this.timer && this.timer.stop();
}
initData(corpId, area){
this.timer && this.timer.stop();
this.timer = QueueCenter.getActiveCorpWithOutHierarchy(corpId, area, "menuGetData").subscribe({
onComplete:()=>{
this.setState({
loading:false
})
},
onSuccess:(result)=>{
this.reloaSideMenu(result.data)
},
onError:(result)=>{
//登录超时
if(result.resultCode == "403"){
window.location.hash = "#/login";
}
this.reloaSideMenu([]);
}
}).turns(5000);
}
reloaSideMenu(data){
//是否排序
let {corpId, isSort} = this.props;
//去掉前端排序
// if(isSort){//对数据排序 科室排到后面,医生按照字母顺序排
// data = data.sort((a, b)=>{
// if(b.emp && a.emp){//都是医生按照字母排
// return b.simplePY < a.simplePY ? 1 : -1;
// }
//
// if(!b.emp && !a.emp){//都是医生按照字母排
// return b.simplePY < a.simplePY ? 1 : -1;
// }
//
// if(a.emp && !b.emp){//b不是医生,不要交换位置
// return -1;
// }
// if(!a.emp && b.emp){
// return 1;
// }
// });
// }
let queueMenu = data.map((item)=>{
let currentPatient = item.currentPatient;
let queueName = currentPatient ? currentPatient.queueName : "";
return {
title:item,
// title:title,//item.name+(item.allNum || ""),
href:"#/queue?"+utils.flat({
queueCode:item.code,
queueName:queueName || item.name
}),
key:item.code,
children:item.children.map((child)=>{
return {
href:"#/queue?"+utils.flat({
queueCode:item.code,
doctorCode:child.code,
doctorName:child.name,
queueName:queueName || item.name,
}),
code:item.code,
doctorCode:child.code,
doctorName:child.name,
queueCode:item.code,
queueName:queueName || item.name,
key:child.code + item.code,
currOrderNo:child.currentPatient ? child.currentPatient.orderNoTag : null
};
})
}
});
this.setState({
queueMenu:queueMenu
})
}
onOpen(){
this.setState({
isOpen:!this.state.isOpen
})
}
renderQueueChilds(children){
let doctorCode = this.props.doctorCode;
let queueCode = this.props.pathname;//.query.queueCode;
if(children && children.length){
return (
<ul className="last-child">
{
children.map((item, index)=>{
return <li key={index} className={(doctorCode+queueCode) == item.key ? "action" : ""} >
<a href={item.href}>
{item.doctorName}
{item.currOrderNo ?
<span style={{textIndent:0, marginLeft:4}} >
<Badge type="weaker">
{item.currOrderNo}
</Badge>
</span>
: null
}
</a>
</li>
})
}
</ul>
)
}
return null
}
//渲染动态队列title
renderQueueTitle( item ){
if(typeof item == "string"){
return item;
}
let currentPatient = item.currentPatient;
let queueName = currentPatient ? currentPatient.queueName : "";
let title = item.name + (item.emp ? `(${item.smallDeptName})` : "");
if(item.currentPatient){
title = <span key="1">
{title}
<span style={{textIndent:0, marginLeft:4}} >
<Badge type="weaker">
{this.intervalFlag[currentPatient.intervalFlag]} {currentPatient.orderNoTag}
</Badge>
</span>
</span>
}
//队列报警
if(item.isAlarmFlag){
title = [title,
<span key="2" style={{textIndent:0, marginLeft:4}} >
<Badge>{item.allNum}</Badge>
</span>
];
}
return title;
}
render(){
let {pathname} = this.props;
let {queueMenu,loading,isOpen} = this.state;
/**
<div className="filter-time">
<select >
<option>全部</option>
<option>上午</option>
<option>下午</option>
</select>
</div>
*/
return (
<div className={isOpen ? "item open" : "item"} data-spm="navqueuelist" >
<a className="title" href="#/" onClick={this.onOpen.bind(this)} >
分诊管理({queueMenu.length}) <Loading display={loading} text={""} style={{display:"inline-block", lineHeight:"2em"}} />
<div className="trg"></div>
</a>
<div className="children">
{
queueMenu.length ? (
<ul>
{
queueMenu.map((item, index)=>{
return <TelescopicMenu
key={index}
href={item.href}
isActive={pathname == item.key}
title={this.renderQueueTitle(item.title)}
childrenMenu={this.renderQueueChilds(item.children)}
/>
})
}
</ul>
) : null
}
</div>
</div>
)
}
}