Commit 45716ba5 authored by 单奇雲's avatar 单奇雲

预案

parent 8f361d08
...@@ -44,12 +44,13 @@ ...@@ -44,12 +44,13 @@
} }
.board-actuator-tasktab{ .board-actuator-tasktab{
position: absolute; position: absolute !important;
height: calc(100% - 72px);
width: 230px; width: 230px;
right: 0; right: 0 !important;
top: 40px; left: auto !important;
color: white; top: 82px !important;
bottom: 32px !important;
.amos-tabs{ .amos-tabs{
height: 100%; height: 100%;
...@@ -75,6 +76,8 @@ ...@@ -75,6 +76,8 @@
padding: 0px; padding: 0px;
height: 100%; height: 100%;
border: none; border: none;
width: calc(100% - 36px) !important;
float: left !important;
.board-tasktab-all{ .board-tasktab-all{
color: white; color: white;
......
...@@ -86,7 +86,9 @@ export const eventTopics = { ...@@ -86,7 +86,9 @@ export const eventTopics = {
top_afe_msg: 'base3d.fromws.top_alarm_fire_equip_msg', //顶部传感器报警消息 top_afe_msg: 'base3d.fromws.top_alarm_fire_equip_msg', //顶部传感器报警消息
top_ae_msg: 'base3d.fromws.top_alarm_equip_msg', //顶部重点装备报警提醒消息 top_ae_msg: 'base3d.fromws.top_alarm_equip_msg', //顶部重点装备报警提醒消息
plan_task_ist:'task_tabs_show'//预案演练任务列表展开事件 plan_task_list:'biz.planDrill.task_tabs_show',//预案演练任务列表展开事件
plan_tree_view:'biz.planDrill.plan_tree_view',//预案树展开事件
plan_drill_appId:'biz.planDrill.plan_drill_app_id',//预案选择节点
}; };
export const isPointEvent = (topic) => topic.indexOf('.point_') > -1; export const isPointEvent = (topic) => topic.indexOf('.point_') > -1;
......
...@@ -9,6 +9,8 @@ import 'amos-iot-webstudio/lib/styles';// 独立使用,需要引入样式 ...@@ -9,6 +9,8 @@ import 'amos-iot-webstudio/lib/styles';// 独立使用,需要引入样式
import { pageUrl } from './../common/conf'; import { pageUrl } from './../common/conf';
import Upload from './../common/upload'; import Upload from './../common/upload';
import { FasSerUrl } from '../../../consts/urlConsts'; import { FasSerUrl } from '../../../consts/urlConsts';
import { PubSub } from 'ray-eventpool';
import { eventTopics } from './../../3dview/consts';
const ls = _amosTool.Store.lsTool; const ls = _amosTool.Store.lsTool;
const apiKey = SysConsts.api_key; const apiKey = SysConsts.api_key;
...@@ -43,6 +45,7 @@ class CusVizLib extends Component { ...@@ -43,6 +45,7 @@ class CusVizLib extends Component {
pathname: pageUrl.planDrill, pathname: pageUrl.planDrill,
state: { appId: data.id,isPublish: !!data.publishState } state: { appId: data.id,isPublish: !!data.publishState }
}; };
ls.write(eventTopics.plan_drill_appId,data.id)
browserHistory.push(path); browserHistory.push(path);
} }
if (itemKey === 'textImport') { if (itemKey === 'textImport') {
......
import React, { Component } from 'react'; import React, { Component } from 'react';
import { Tree, Button} from 'amos-framework'; import { Tree, message } from 'amos-framework';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import classnames from 'classnames'; import classnames from 'classnames';
import { getPlanTreeAction } from './../../../services/preControlService'; import { getPlanTreeAction } from './../../../services/preControlService';
...@@ -14,7 +14,8 @@ class PlanTreeView extends Component { ...@@ -14,7 +14,8 @@ class PlanTreeView extends Component {
treeData: [], treeData: [],
expandedKeys: [], expandedKeys: [],
selectedKeys: [], selectedKeys: [],
autoExpandParent: true autoExpandParent: true,
selectData: undefined
}; };
} }
...@@ -68,8 +69,18 @@ class PlanTreeView extends Component { ...@@ -68,8 +69,18 @@ class PlanTreeView extends Component {
defaultOpen =()=>{ defaultOpen =()=>{
let { treeData } = this.state; let { treeData } = this.state;
let { onTreeSelect } = this.props; let { onTreeSelect, selectAppId } = this.props;
let defaultOpenPlan = this.loopTreeNodes(treeData[0]); let defaultOpenPlan = {};
if(selectAppId != ''){
this.findTreeNodesById(treeData,selectAppId);
if(this.state.selectData != undefined){
defaultOpenPlan = this.state.selectData;
}else{
message.danger('预案未发布!!!');
}
}else{
defaultOpenPlan = this.loopTreeNodes(treeData[0]);
}
if (defaultOpenPlan) { if (defaultOpenPlan) {
onTreeSelect && onTreeSelect(defaultOpenPlan); onTreeSelect && onTreeSelect(defaultOpenPlan);
this.setState({ this.setState({
...@@ -88,6 +99,19 @@ class PlanTreeView extends Component { ...@@ -88,6 +99,19 @@ class PlanTreeView extends Component {
return data; return data;
} }
findTreeNodesById = ( arrData,selectAppId ) => {
outerloop :
for (let i = 0; i < arrData.length; i++) {
const e = arrData[i];
if(e.id == selectAppId){
this.state.selectData = e;
break outerloop;
}else if(e.children && e.children.length > 0){
this.findTreeNodesById(e.children,selectAppId)
}
}
}
getTreeIcon = (props) => { getTreeIcon = (props) => {
let { type } = props; let { type } = props;
if (type === 'treeNode') { if (type === 'treeNode') {
...@@ -110,7 +134,6 @@ class PlanTreeView extends Component { ...@@ -110,7 +134,6 @@ class PlanTreeView extends Component {
} }
return data; return data;
} }
renderTreeNodes = (data) => { renderTreeNodes = (data) => {
let { activeKey } = this.props; let { activeKey } = this.props;
......
...@@ -13,6 +13,8 @@ import _amosTool from 'amos-tool'; ...@@ -13,6 +13,8 @@ import _amosTool from 'amos-tool';
import { PubSub } from 'ray-eventpool'; import { PubSub } from 'ray-eventpool';
import { eventTopics } from './../../3dview/consts'; import { eventTopics } from './../../3dview/consts';
const ls = _amosTool.Store.lsTool;
const sidePaneStyle = { const sidePaneStyle = {
planDrill: { planDrill: {
left: 0, left: 0,
...@@ -56,6 +58,7 @@ class PublishView extends Component { ...@@ -56,6 +58,7 @@ class PublishView extends Component {
node: {}, node: {},
shareVisible: false, shareVisible: false,
taskTabsShow: false,//任务列表 taskTabsShow: false,//任务列表
selectAppId: '',
}; };
} }
...@@ -67,11 +70,19 @@ class PublishView extends Component { ...@@ -67,11 +70,19 @@ class PublishView extends Component {
let viewRootDiv = document.getElementsByClassName('publish-view-content')[0]; let viewRootDiv = document.getElementsByClassName('publish-view-content')[0];
viewRootDiv && viewRootDiv.addEventListener('click', this._handleClick);//页面增加鼠标单击监听 viewRootDiv && viewRootDiv.addEventListener('click', this._handleClick);//页面增加鼠标单击监听
window.addEventListener('resize', this._resize); window.addEventListener('resize', this._resize);
//预案树展示
this.planTreePubsub = PubSub.subscribe(eventTopics.plan_tree_view,function(topic,message){
this.setState({ visible: message })
}.bind(this));
//获取选择预案树节点
this.setState({ selectAppId: ls.read(eventTopics.plan_drill_appId) });
} }
componentWillUnmount(){ componentWillUnmount(){
let viewRootDiv = document.getElementsByClassName('publish-view-content')[0]; let viewRootDiv = document.getElementsByClassName('publish-view-content')[0];
viewRootDiv && viewRootDiv.addEventListener('click', this._handleClick);//页面增加鼠标单击监听 viewRootDiv && viewRootDiv.addEventListener('click', this._handleClick);//页面增加鼠标单击监听
window.addEventListener('resize', this._resize); window.addEventListener('resize', this._resize);
PubSub.unsubscribe(this.planTreePubsub);
} }
_handleClick = (event) => { _handleClick = (event) => {
...@@ -90,11 +101,12 @@ class PublishView extends Component { ...@@ -90,11 +101,12 @@ class PublishView extends Component {
let { params = {}, activeKey } = this.state; let { params = {}, activeKey } = this.state;
params.appId = param.id; params.appId = param.id;
params.isPublish = !!param.publishState; params.isPublish = !!param.publishState;
this.setState({ params }, () => this.handleChange(activeKey)); this.setState({ params, selectAppId: param.id }, () => this.handleChange(activeKey));
} }
getSidePaneContent = (activeKey) => { getSidePaneContent = (activeKey) => {
return <PlanTreeView activeKey={activeKey} onTreeSelect={this.onTreeSelect} onRightClick={this.onRightClick} onRightCancel={this._handleClick}/>; const { selectAppId } = this.state;
return <PlanTreeView activeKey={activeKey} selectAppId={selectAppId} onTreeSelect={this.onTreeSelect} onRightClick={this.onRightClick} onRightCancel={this._handleClick}/>;
} }
handleChange = (activeKey) => { handleChange = (activeKey) => {
...@@ -124,7 +136,7 @@ class PublishView extends Component { ...@@ -124,7 +136,7 @@ class PublishView extends Component {
this.setState({ visible: !this.state.visible }); this.setState({ visible: !this.state.visible });
break; break;
case 'taskList': //任务列表 case 'taskList': //任务列表
PubSub.publish(eventTopics.plan_task_ist,!this.state.taskTabsShow); PubSub.publish(eventTopics.plan_task_list,!this.state.taskTabsShow);
this.setState({ taskTabsShow: !this.state.taskTabsShow }); this.setState({ taskTabsShow: !this.state.taskTabsShow });
break; break;
default: default:
......
...@@ -4,8 +4,11 @@ import { deepCopy } from 'amos-tool'; ...@@ -4,8 +4,11 @@ import { deepCopy } from 'amos-tool';
import A3DDesigner, { r3d, Connect, DESIGNER_CONSTS } from 'amos-3d/lib/designer'; import A3DDesigner, { r3d, Connect, DESIGNER_CONSTS } from 'amos-3d/lib/designer';
import { A3DUtil } from 'amos-3d/lib/threeTools'; import { A3DUtil } from 'amos-3d/lib/threeTools';
import { ObjAnchorHelper } from 'base-r3d/lib/plugins'; import { ObjAnchorHelper } from 'base-r3d/lib/plugins';
import { BaseObjHelper } from 'base-r3d/lib/factory';
import { ELEMENT_TYPE } from 'amos-iot-3dgraph/lib/view/pubview/../design/conf'; import { ELEMENT_TYPE } from 'amos-iot-3dgraph/lib/view/pubview/../design/conf';
import { Button, Modal, Row, Col } from 'amos-framework'; import { Button, Modal, Row, Col } from 'amos-framework';
import { PubSub } from 'ray-eventpool';
import { eventTopics } from './../../../3dview/consts';
import PlayTaskTabs from './taskTabs'; import PlayTaskTabs from './taskTabs';
import Play from './play'; import Play from './play';
...@@ -32,6 +35,7 @@ class StageActuator extends Component { ...@@ -32,6 +35,7 @@ class StageActuator extends Component {
modalContent: '', modalContent: '',
playing: false, //播放状态 playing: false, //播放状态
detailData: '', detailData: '',
objs: [],//特效objs
}; };
} }
...@@ -69,14 +73,15 @@ class StageActuator extends Component { ...@@ -69,14 +73,15 @@ class StageActuator extends Component {
if(animate.showPopup){ if(animate.showPopup){
this.a3dRef && this.a3dRef.changePlayState('pause'); this.a3dRef && this.a3dRef.changePlayState('pause');
setTimeout( e => { // setTimeout( e => {
this.setState({ this.setState({
modal: true, modal: true,
modalContent: animate.popupContent, modalContent: animate.popupContent,
currentIndex: animate.animateIndex, currentIndex: animate.animateIndex,
ativeAnimate: animate.animateKey,
playing: false playing: false
}); });
}, animate.animateParams.duration ); // }, animate.animateParams.duration );
}else{ }else{
if(animate.showVoiceBroadcast){ if(animate.showVoiceBroadcast){
this.text2Speech(animate.description); this.text2Speech(animate.description);
...@@ -137,13 +142,17 @@ class StageActuator extends Component { ...@@ -137,13 +142,17 @@ class StageActuator extends Component {
const { animations = [] } = this.props; const { animations = [] } = this.props;
const { currentIndex } = this.state; const { currentIndex } = this.state;
if(animations.length > 1) this.setState({ playing: true }); if(animations.length > 1) this.setState({ playing: true });
if(type === 'reset'){ if(currentIndex < animations.length - 1 && type === 'continue'){
this.a3dRef && this.a3dRef.changePlayState('start');
}else{
this.a3dRef && this.a3dRef.playAll(); this.a3dRef && this.a3dRef.playAll();
this.setState({ currentIndex: 0, ativeAnimate: animations[0].animateKey}); this.setState({ currentIndex: 0, ativeAnimate: animations[0].animateKey});
this.taskTabs.resetTaskTabs(); this.taskTabs.resetTaskTabs();
}else{
this.a3dRef && this.a3dRef.changePlayState('start');
} }
//展开任务列表
PubSub.publish(eventTopics.plan_task_list,true);
//收起预案树
PubSub.publish(eventTopics.plan_tree_view,false);
} }
playTargetAnimate = (anim, e) => { playTargetAnimate = (anim, e) => {
...@@ -157,13 +166,13 @@ class StageActuator extends Component { ...@@ -157,13 +166,13 @@ class StageActuator extends Component {
const { animations } = this.props; const { animations } = this.props;
let anim = animations[animateIndex]; let anim = animations[animateIndex];
if(anim.showPopup){ if(anim.showPopup){
setTimeout(e => { // setTimeout(e => {
this.setState({ this.setState({
modal: true, modal: true,
modalContent: animations[animateIndex].popupContent, modalContent: animations[animateIndex].popupContent,
currentIndex: animateIndex currentIndex: animateIndex
}) })
}, anim.animateParams.duration ); // }, anim.animateParams.duration );
} }
this.a3dRef && this.a3dRef.playAnimation(animateIndex); this.a3dRef && this.a3dRef.playAnimation(animateIndex);
} }
...@@ -227,40 +236,26 @@ class StageActuator extends Component { ...@@ -227,40 +236,26 @@ class StageActuator extends Component {
//单击 //单击
this.r3d.on('click', (evt) => { this.r3d.on('click', (evt) => {
// console.log('click'); console.log('click');
let obj = evt.object; let obj = evt.object;
if (evt.object && evt.object.type === 'Mesh') { if (evt.object && evt.object.type === 'Mesh') {
const realObj = evt.object.parent; const realObj = evt.object.parent;
const userData = realObj.userData; const userData = realObj.userData;
//该模型之前顶牌展示状态
userData.clickShow = userData.clickShow == undefined ? true : !userData.clickShow;
if(userData && userData.bubbleConfig && userData.bubbleConfig.visible && userData.bubbleConfig.displayMode == "click"){
if(userData.clickShow){//判断之前是否显示
let div = document.getElementById(userData.id);
let showText = userData.displayName;
if(div){
div.innerText = showText;
div.className = 'three-ui-anchor';
}else{
this.objAnchorHelper.create({
parent: obj,
element: this.createPanel(userData.id,showText,`click ${userData.bubbleConfig.displayStyle}`),
position: [0, 5, 0]
});
}
}else{//状态为true 则移除
let parent = document.getElementsByClassName('three-objanchor')[0];
let node = document.getElementById(userData.id);
parent.removeChild(node);
}
}
if(userData && userData.dataConfig && userData.dataConfig.dataDetailUrl){ if(userData && userData.dataConfig && userData.dataConfig.dataDetailUrl){
fetch(userData.dataConfig.dataDetailUrl) fetch(userData.dataConfig.dataDetailUrl)
.then(response => response.json()) .then(response => response.json())
.then(data => this.setState({ modelModal: true , detailData: data.dataList})); .then(data => this.setState({ modelModal: true , detailData: data.dataList}));
}
if(userData.bubbleConfig && userData.bubbleConfig.displayMode == 'click'){
//该模型之前顶牌展示状态
userData.clickShow = userData.clickShow == undefined ? true : !userData.clickShow;
if(userData.clickShow){//判断之前是否显示
this.state.objs.find(e => e.uuid == realObj.uuid).baseObjHelper.title = userData.displayName || null;
}else{
this.state.objs.find(e => e.uuid == realObj.uuid).baseObjHelper.title = null;
}
} }
} }
}); });
...@@ -277,39 +272,29 @@ class StageActuator extends Component { ...@@ -277,39 +272,29 @@ class StageActuator extends Component {
if (evt.object && evt.object.type === 'Mesh') { if (evt.object && evt.object.type === 'Mesh') {
const realObj = evt.object.parent; const realObj = evt.object.parent;
const userData = realObj.userData; const userData = realObj.userData;
let parent = document.getElementsByClassName('three-objanchor')[0]; //清除其他
let nodes = document.getElementsByClassName('mouseover'); this.state.objs.forEach(o => {
if(nodes && nodes.length > 0) {//移除其他mouseover 模型顶牌 if(o.userData.bubbleConfig && o.userData.bubbleConfig.displayMode == 'hover'){
for(var i = 0; i < nodes.length; i++){ o.baseObjHelper.title = null;
parent.removeChild(nodes[i]);
} }
}; });
if(userData && userData.bubbleConfig && userData.bubbleConfig.visible && userData.bubbleConfig.displayMode == "hover"){ //判断是否有 移入事件 if(userData.bubbleConfig && userData.bubbleConfig.displayMode == 'hover'){
let node = document.getElementById(userData.id); //移除该模型点击顶牌 this.state.objs.find(e => e.uuid == realObj.uuid).baseObjHelper.title = userData.displayName || null;
if(node) parent.removeChild(node);
let showText = userData.displayName;
let div = document.getElementById(userData.id);
if(div){
div.innerText = showText;
div.className = 'mouseover'
}else{
this.objAnchorHelper.create({
parent: obj,
element: this.createPanel(userData.id,showText,`mouseover ${userData.bubbleConfig.displayStyle}`),
position: [0, 5, 0]
});
}
userData.clickShow = false;
} }
} }
}); });
// 鼠标移出事件 // 鼠标移出事件
this.r3d.on('mouseout', (evt) => { this.r3d.on('mouseout', (evt) => {
// console.log('mouseout'); // console.log('mouseout');
if (evt.object && evt.object.type === 'Mesh') {
const realObj = evt.object.parent;
const userData = realObj.userData;
if(userData.bubbleConfig && userData.bubbleConfig.displayMode == 'hover'){
this.state.objs.find(e => e.uuid == realObj.uuid).baseObjHelper.title = null;
}
}
}); });
}; };
...@@ -340,6 +325,35 @@ class StageActuator extends Component { ...@@ -340,6 +325,35 @@ class StageActuator extends Component {
// Object.assign(parser.obj.userData, { eid: fmtData.eid, displayName: fmtData.displayName }) // Object.assign(parser.obj.userData, { eid: fmtData.eid, displayName: fmtData.displayName })
// or // or
parser.bindUserData(deepCopy(fmtData)); parser.bindUserData(deepCopy(fmtData));
let obj = parser.obj;
const boh = new BaseObjHelper({ obj });
obj.baseObjHelper = boh;
obj.baseObjHelper.titleConfig = {
// 顶牌平面参数
planeOptions: {
...obj.userData.displayName,
width: 256 * 0.1,
height: 128 * 0.1,
position:{ x: 0, y: 30, z: 0 },
},
canvasOptions: {
fillStyle: 'rgb(51, 51, 51)',
font: '32px sans-serif',
textBaseline: 'middle',
},
imgWidth: 256,
imgHeight: 128,
// 设置顶牌 图片路径
image: `/src/assets/planMgmt/center.png`
};
if(obj.userData.displayName && obj.userData.bubbleConfig && obj.userData.bubbleConfig.displayMode == 'show'){
obj.baseObjHelper.title = obj.userData.displayName;
}else{
obj.baseObjHelper.title = null;
}
this.state.objs.push(obj);
} }
//model start //model start
...@@ -351,7 +365,7 @@ class StageActuator extends Component { ...@@ -351,7 +365,7 @@ class StageActuator extends Component {
getFooter = () => { getFooter = () => {
return ( return (
<div> <div>
<Button onClick={() => this.cancel()}>取消</Button> <Button onClick={() => this.playCancel()}>取消</Button>
<Button onClick={() => this.playAnimation()}>确定</Button> <Button onClick={() => this.playAnimation()}>确定</Button>
</div> ) </div> )
; ;
...@@ -382,12 +396,16 @@ class StageActuator extends Component { ...@@ -382,12 +396,16 @@ class StageActuator extends Component {
} }
} }
cancel = () => { playCancel = () => {
const { graphConf } = this.props; const { graphConf } = this.props;
//恢复最佳视角 //恢复最佳视角
this.cameraFactory.fitView(graphConf.options.cameraEffects); this.cameraFactory.fitView(graphConf.options.cameraEffects);
this.setState({ modal: false , modelModal: false}); this.setState({ modal: false });
}; };
modelCancel = () => {
this.setState({ modelModal: false});
}
//model end //model end
render() { render() {
...@@ -401,6 +419,7 @@ class StageActuator extends Component { ...@@ -401,6 +419,7 @@ class StageActuator extends Component {
scrollUV: true, scrollUV: true,
onCreated: this.handlePenEditorCreated onCreated: this.handlePenEditorCreated
}; };
return ( return (
<div className="board-actuator"> <div className="board-actuator">
{graphConf && {graphConf &&
...@@ -439,7 +458,7 @@ class StageActuator extends Component { ...@@ -439,7 +458,7 @@ class StageActuator extends Component {
content={this.getContext()} content={this.getContext()}
outterClosable={false} outterClosable={false}
footer={this.getFooter()} footer={this.getFooter()}
onCancel={() => this.cancel()} onCancel={() => this.playCancel()}
/> />
<Modal <Modal
header='详情' header='详情'
...@@ -449,7 +468,7 @@ class StageActuator extends Component { ...@@ -449,7 +468,7 @@ class StageActuator extends Component {
destroyContent destroyContent
content={this.getDetailContext()} content={this.getDetailContext()}
noDefaultFooter noDefaultFooter
onCancel={() => this.cancel()} onCancel={() => this.modelCancel()}
/> />
</div> </div>
); );
......
...@@ -6,10 +6,10 @@ import ActuatorContainer from './ActuatorContainer'; ...@@ -6,10 +6,10 @@ import ActuatorContainer from './ActuatorContainer';
/** /**
* 三维可视化 发布模式 * 三维可视化 发布模式
* *
* @class PublishView * @class Pubview
* @extends {Component} * @extends {Component}
*/ */
class PublishView extends Component { class Pubview extends Component {
constructor(props){ constructor(props){
super(props); super(props);
...@@ -66,7 +66,7 @@ class PublishView extends Component { ...@@ -66,7 +66,7 @@ class PublishView extends Component {
} }
} }
PublishView.propTypes = { Pubview.propTypes = {
params: PropTypes.shape({ params: PropTypes.shape({
appId: PropTypes.oneOfType([ appId: PropTypes.oneOfType([
PropTypes.string, PropTypes.string,
...@@ -84,4 +84,4 @@ PublishView.propTypes = { ...@@ -84,4 +84,4 @@ PublishView.propTypes = {
}) })
}; };
export default PublishView; export default Pubview;
...@@ -33,10 +33,14 @@ class PlayMenuBar extends Component { ...@@ -33,10 +33,14 @@ class PlayMenuBar extends Component {
} }
componentDidMount(){ componentDidMount(){
this.tabsPubsub = PubSub.subscribe(eventTopics.plan_task_ist,function(topic,message){ this.tabsPubsub = PubSub.subscribe(eventTopics.plan_task_list,function(topic,message){
this.setState({ taskTabsShow: message }) this.setState({ taskTabsShow: message })
}.bind(this)); }.bind(this));
} }
componentWillUnmount(){
PubSub.unsubscribe(this.tabsPubsub);
}
onSelectChange = () => { onSelectChange = () => {
......
import React, { Component } from 'react'; import React, { Component } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { fastDeepEqual } from 'amos-tool'; import { fastDeepEqual } from 'amos-tool';
import { Button, Modal, message, AmosAlert, Tabs, Collapse,Timeline } from 'amos-framework'; import { SidePane, Tabs, Collapse,Timeline } from 'amos-framework';
import moment from 'moment'; import moment from 'moment';
import { PubSub } from 'ray-eventpool'; import { PubSub } from 'ray-eventpool';
import { eventTopics } from './../../../../../view/3dview/consts'; import { eventTopics } from './../../../../../view/3dview/consts';
...@@ -34,7 +34,7 @@ class taskTabs extends Component { ...@@ -34,7 +34,7 @@ class taskTabs extends Component {
tabs[1].models = models.filter(e => e.key.indexOf('car') != -1); tabs[1].models = models.filter(e => e.key.indexOf('car') != -1);
this.setState({ tabs }); this.setState({ tabs });
this.tabsPubsub = PubSub.subscribe(eventTopics.plan_task_ist,function(topic,message){ this.tabsPubsub = PubSub.subscribe(eventTopics.plan_task_list,function(topic,message){
this.setState({ taskTabsShow: message }) this.setState({ taskTabsShow: message })
}.bind(this)); }.bind(this));
...@@ -83,48 +83,61 @@ class taskTabs extends Component { ...@@ -83,48 +83,61 @@ class taskTabs extends Component {
this.setState({ tabs }); this.setState({ tabs });
} }
render() { getTaskContent = () => {
const { tabs,taskTabsShow } = this.state; const { tabs } = this.state;
if(taskTabsShow){ return <Tabs defaultActiveKey="1" tabPosition="left">
return ( <TabList>
<div className='board-actuator-tasktab'> {tabs.map(e => (
<Tabs defaultActiveKey="1" tabPosition="left"> <Tab tab={`Tab-${e.key}`} key={e.key}>
<TabList> {/* <BizIcon icon={e.icon}/> */}
{tabs.map(e => ( <img className='board-tabs-img' src={`/src/assets/planMgmt/${e.icon}.png`}/>
<Tab tab={`Tab-${e.key}`} key={e.key}> </Tab>
{/* <BizIcon icon={e.icon}/> */} ))}
<img className='board-tabs-img' src={`/src/assets/planMgmt/${e.icon}.png`}/> </TabList>
</Tab> {tabs.map(tab => (
))} <TabPanel tab={`Tab-${tab.key}`} key={tab.key}>
</TabList> <Collapse className='board-tasktab-all' activeKey={['1']}>
{tabs.map(tab => ( <Panel header='全部' key={'1'}>
<TabPanel tab={`Tab-${tab.key}`} key={tab.key}> <Collapse className='board-tasktab-part' accordion>
<Collapse className='board-tasktab-all' activeKey={['1']}> {tab.models && tab.models.map(model => {
<Panel header='全部' key={'1'}> return <Panel header={model.displayName} key={model.key}>
<Collapse className='board-tasktab-part' accordion> <Timeline className='board-tasktab-timeLine'>
{tab.models && tab.models.map(model => { {model.tasks && model.tasks.map(task => {
return <Panel header={model.displayName} key={model.key}> return <Timeline.Item>
<Timeline className='board-tasktab-timeLine'> <p>{task.startTime}</p>
{model.tasks && model.tasks.map(task => { <p>{task.taskDes}</p>
return <Timeline.Item> </Timeline.Item>
<p>{task.startTime}</p> })}
<p>{task.taskDes}</p> </Timeline>
</Timeline.Item>
})}
</Timeline>
</Panel>
})}
</Collapse>
</Panel> </Panel>
})}
</Collapse> </Collapse>
</TabPanel> </Panel>
))} </Collapse>
</Tabs> </TabPanel>
</div> ))}
</Tabs>;
}
render() {
const { taskTabsShow } = this.state;
const animateProps = {
transitionAppear: true
};
const animateDelay = 0;
// if(taskTabsShow){
return (
<SidePane
className='board-actuator-tasktab'
animateName="fade"
animateProps={animateProps}
animateDelay={animateDelay}
visible={taskTabsShow}
>
{this.getTaskContent()}
</SidePane>
); );
}else{
return null;
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment