Commit 7244a98b authored by suhuiguang's avatar suhuiguang

1.修改顶牌,增加路由

parent 1463599a
...@@ -60,6 +60,7 @@ const AsyncDifferentiate = props => <AsyncLoader load={import('./../view/bizview ...@@ -60,6 +60,7 @@ const AsyncDifferentiate = props => <AsyncLoader load={import('./../view/bizview
const AsyncAlarmVideoMonitor = props => <AsyncLoader load={import('./../view/bizview/alarmVideoMonitor')} componentProps={props} />; const AsyncAlarmVideoMonitor = props => <AsyncLoader load={import('./../view/bizview/alarmVideoMonitor')} componentProps={props} />;
const AsyncAlarmTestView = props => <AsyncLoader load={import('./../view/bizview/alarm')} componentProps={props} />; const AsyncAlarmTestView = props => <AsyncLoader load={import('./../view/bizview/alarm')} componentProps={props} />;
const AsyncCusVizLib = props => <AsyncLoader load={import('./../view/planMgmt/cusVizLib')} componentProps={props} />; const AsyncCusVizLib = props => <AsyncLoader load={import('./../view/planMgmt/cusVizLib')} componentProps={props} />;
const AsyncGraph3DModel = props => <AsyncLoader load={import('amos-iot-3dgraph/lib/view/modelMgmt')} componentProps={props} />;
const Routes = { const Routes = {
...@@ -116,7 +117,8 @@ const Routes = { ...@@ -116,7 +117,8 @@ const Routes = {
differentiate: AsyncDifferentiate, differentiate: AsyncDifferentiate,
alarmVideoMonitor: AsyncAlarmVideoMonitor, alarmVideoMonitor: AsyncAlarmVideoMonitor,
alarmTest: AsyncAlarmTestView, alarmTest: AsyncAlarmTestView,
vizlib: AsyncCusVizLib vizlib: AsyncCusVizLib,
modelManage: AsyncGraph3DModel
}; };
const pageCompontent = key => { const pageCompontent = key => {
......
...@@ -4,7 +4,6 @@ import notFound from 'amos-security/lib/routes/notfound'; ...@@ -4,7 +4,6 @@ import notFound from 'amos-security/lib/routes/notfound';
import redirect from 'amos-security/lib/routes/notfound/redirect'; import redirect from 'amos-security/lib/routes/notfound/redirect';
import signUp, { signupRouters } from 'amos-security/lib/routes/signUp'; import signUp, { signupRouters } from 'amos-security/lib/routes/signUp';
import routerFilter, { checkLogin } from 'amos-security/lib/routes/validateRouter'; import routerFilter, { checkLogin } from 'amos-security/lib/routes/validateRouter';
import PublishView from './../view/planMgmt/view';
import AutoLogin from './../view/autoLogin/AutoLogin'; import AutoLogin from './../view/autoLogin/AutoLogin';
import calcRoutes from './calcRoutes'; import calcRoutes from './calcRoutes';
import addCustomRoutes, { customRoutes, customRoutesPubView } from './customRoutes'; import addCustomRoutes, { customRoutes, customRoutesPubView } from './customRoutes';
...@@ -17,8 +16,9 @@ import pageCompontent, { ...@@ -17,8 +16,9 @@ import pageCompontent, {
RegionList RegionList
} from './view'; } from './view';
import Iot3DGraphBiz from './../view/planMgmt/iot3DGraph'; import Iot3DGraphBiz from './../view/planMgmt/iot3DGraph';
import ShareTextPlan from './../view/planMgmt/view/ShareTextPlan'; import ShareTextPlan from './../view/planMgmt/view/ShareTextPlan';
import PublishApp from 'amos-iot-3dgraph/lib/view/pubview';
import ModelEdit from 'amos-iot-3dgraph/lib/view/modelMgmt/edit/ModelEdit';
const groups = [ const groups = [
...@@ -31,10 +31,9 @@ const injectRoutes = menus => { ...@@ -31,10 +31,9 @@ const injectRoutes = menus => {
const bizChilds = addCustomRoutes(biz); const bizChilds = addCustomRoutes(biz);
const consoleChilds = addCustomRoutes(consoleRoutes); const consoleChilds = addCustomRoutes(consoleRoutes);
const routes = [ const routes = [
{ { path: 'viz3d/:subjectId', component: Iot3DGraphBiz },
path: 'viz3d/:subjectId', { path: 'viz3dpub', component: PublishApp },
component: Iot3DGraphBiz { path: 'models/:modelId', component: ModelEdit },
},
{ path: 'login', component: Login }, { path: 'login', component: Login },
{ path: 'autologin', component: AutoLogin }, { path: 'autologin', component: AutoLogin },
{ path: 'region', component: RegionList }, // 区域选择 { path: 'region', component: RegionList }, // 区域选择
......
...@@ -54,6 +54,7 @@ import alarmTestView from './../view/bizview/alarm'; ...@@ -54,6 +54,7 @@ import alarmTestView from './../view/bizview/alarm';
import CusVizLib from './../view/planMgmt/cusVizLib'; import CusVizLib from './../view/planMgmt/cusVizLib';
import RealTimeMonitor from './../view/morphic'; import RealTimeMonitor from './../view/morphic';
import PublishView from './../view/planMgmt/view'; import PublishView from './../view/planMgmt/view';
import Graph3DModel from 'amos-iot-3dgraph/lib/view/modelMgmt';
const Routes = { const Routes = {
// 添加 rules 路由 // 添加 rules 路由
...@@ -107,7 +108,8 @@ const Routes = { ...@@ -107,7 +108,8 @@ const Routes = {
alarmVideoMonitor: AlarmVideoMonitor, alarmVideoMonitor: AlarmVideoMonitor,
alarmTest: alarmTestView, alarmTest: alarmTestView,
vizlib: CusVizLib, vizlib: CusVizLib,
planDrill: PublishView planDrill: PublishView,
modelManage: Graph3DModel
}; };
const pageCompontent = key => { const pageCompontent = key => {
......
...@@ -8,3 +8,7 @@ export const getOnlineWeather = (cityKey) => { ...@@ -8,3 +8,7 @@ export const getOnlineWeather = (cityKey) => {
const url = `http://wthrcdn.etouch.cn/weather_mini?city=${cityKey}`; const url = `http://wthrcdn.etouch.cn/weather_mini?city=${cityKey}`;
return singleFetch(url); return singleFetch(url);
}; };
export const conmmonGetService =(url) =>{
return singleFetch(url);
}
import React, { Component } from 'react'; import React, { Component } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { deepCopy } from 'amos-tool'; import { deepCopy } from 'amos-tool';
import A3DDesigner, { r3d, Connect, DESIGNER_CONSTS } from 'amos-3d/lib/designer'; import A3DDesigner, { r3d, Connect, DESIGNER_CONSTS,EVENT_CONSTS } from 'amos-3d/lib/designer';
import { A3DUtil } from 'amos-3d/lib/threeTools'; import { A3DUtil } from 'amos-3d/lib/threeTools';
import WorkerObjContent from 'amos-3d/lib/worker/WorkerObjContent'; import WorkerObjContent from 'amos-3d/lib/worker/WorkerObjContent';
import { ObjAnchorHelper } from 'base-r3d/lib/plugins'; import { ObjAnchorHelper } from 'base-r3d/lib/plugins';
import { BaseObjHelper } from 'base-r3d/lib/factory'; 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 { imageStyles } from 'amos-iot-3dgraph/lib/view/settingpanel/scenery/conf';
import imgStatic from 'amos-iot-3dgraph/lib/consts/imgStatic';
import { Button, Modal, Row, Col } from 'amos-framework'; import { Button, Modal, Row, Col } from 'amos-framework';
import { PubSub } from 'ray-eventpool'; import { PubSub } from 'ray-eventpool';
import { eventTopics } from './../../../3dview/consts'; import { eventTopics } from './../../../3dview/consts';
import { conmmonGetService } from './../../../../services/commonServices';
import PlayTaskTabs from './taskTabs'; import PlayTaskTabs from './taskTabs';
import Play from './play'; import Play from './play';
const { resizeConnect } = Connect; const { resizeConnect } = Connect;
const { Tools } = A3DUtil; const { Tools } = A3DUtil;
const { ANIMATION_CONSTS } = DESIGNER_CONSTS; const { ANIMATION_CONSTS } = DESIGNER_CONSTS;
const { EVENT_TYPE_CORE } = EVENT_CONSTS;
/** /**
* 3d 执行器 * 3d 执行器
...@@ -36,9 +40,9 @@ class StageActuator extends Component { ...@@ -36,9 +40,9 @@ class StageActuator extends Component {
modelModal: false,//详情弹框 modelModal: false,//详情弹框
modalContent: '', modalContent: '',
playing: false, //播放状态 playing: false, //播放状态
detailData: '', detailData: ''
objs: [],//特效objs
}; };
this.objs = [];//特效objs
} }
componentDidMount() { componentDidMount() {
...@@ -248,149 +252,102 @@ class StageActuator extends Component { ...@@ -248,149 +252,102 @@ class StageActuator extends Component {
this.cameraFactory = cameraFactory; this.cameraFactory = cameraFactory;
this.rendererFactory = stagePilot.rendererFactory; this.rendererFactory = stagePilot.rendererFactory;
this.r3d = r3d; this.r3d = r3d;
// 设置 UI // 设置 UI
this.objAnchorHelper = new ObjAnchorHelper({ this.objAnchorHelper = new ObjAnchorHelper({
r3d, r3d,
cameraFactory, cameraFactory,
sceneFactory sceneFactory
}); });
// 鼠标移入
//单击 this.r3d.on(EVENT_TYPE_CORE.MouseEnter, evt => {
this.r3d.on('click', (evt) => { console.log(evt);
console.log('click'); // if (evt.object && evt.object._boh){
let obj = evt.object; // evt.object._boh.style.color = 0xff00ff;
if (evt.object && evt.object.type === 'Mesh') { // }
const realObj = evt.object.parent;
const userData = realObj.userData;
if(userData && userData.dataConfig && userData.dataConfig.dataDetailUrl){
fetch(userData.dataConfig.dataDetailUrl)
.then(response => response.json())
.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;
}
}
}
}); });
// 鼠标移出
// 双击事件 this.r3d.on(EVENT_TYPE_CORE.MouseLeave, evt => {
this.r3d.on('dblclick', (evt) => { console.log(evt);
// console.log('dblclick'); // if (evt.object && evt.object._boh){
// evt.object._boh.style.color = null;
// }
}); });
//单击
// 鼠标移入事件 this.r3d.on(EVENT_TYPE_CORE.Click, (evt) => {
this.r3d.on('mouseover', (evt) => { if (evt.button === 0 && evt.object && evt.object.type === 'Mesh') {
let obj = evt.object; const userData = evt.object.parent.userData;
// console.log('mouseover'); if(userData && userData.dataConfig && userData.dataConfig.dataDetailUrl){
if (evt.object && evt.object.type === 'Mesh') { conmmonGetService(userData.dataConfig.dataDetailUrl).then(
const realObj = evt.object.parent; data => {
const userData = realObj.userData; this.setState({ modelModal: true , detailData: data.dataList});
},
//清除其他 error =>{
this.state.objs.forEach(o => { console.error(userData.dataConfig.dataDetailUrl + '请求元素详情失败');
if(o.userData.bubbleConfig && o.userData.bubbleConfig.displayMode == 'hover'){ }
o.baseObjHelper.title = null; );
}
});
if(userData.bubbleConfig && userData.bubbleConfig.displayMode == 'hover'){
this.state.objs.find(e => e.uuid == realObj.uuid).baseObjHelper.title = userData.displayName || null;
}
}
});
// 鼠标移出事件
this.r3d.on('mouseout', (evt) => {
// 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;
} }
} }
}); });
}; };
createInfowindow = (text) => { onComplete = obj => {
const div = document.createElement('div'); const boh = new BaseObjHelper({ obj });
div.style.position = 'absolute'; obj._boh = boh;
div.className = 'three-ui-infowindow';
div.innerText = text; };
return div;
}
createPanel = (id, text, type) => {
const div = document.createElement('div');
div.id = id;
div.style.position = 'absolute';
div.className = 'three-ui-anchor ' + type;
div.innerText = text;
return div;
}
afterRender = () => { afterRender = () => {
this.objAnchorHelper && this.objAnchorHelper.update(); this.objAnchorHelper && this.objAnchorHelper.update();
} }
handleModelParserData = (parser, fmtData) => { handleModelParserData = (parser, fmtData) => {
// 将 eid 绑定到 parser 的 node 上 // 将 fmtData 绑定到 parser 的 node.userData 上
// Object.assign(parser.obj.userData, { eid: fmtData.eid, displayName: fmtData.displayName }) // Object.assign(parser.obj.userData, fmtData)
// or parser.bindUserData(fmtData);
parser.bindUserData(deepCopy(fmtData)); const { sceneryConfig: { visible, position, imgUrlKey } = {},displayName } = fmtData;
const image = imageStyles.filter(image => image.key === imgUrlKey);
let obj = parser.obj; const imageUrl = image.length > 0 ? image[0].imgUrl : imgStatic.defaultScenery ;
const boh = new BaseObjHelper({ obj }); if (visible) {
obj.baseObjHelper = boh; parser.objHelper.titleConfig = {
obj.baseObjHelper.titleConfig = { planeOptions: {
// 顶牌平面参数 width: 256 * 0.1,
planeOptions: { height: 128 * 0.1,
...obj.userData.displayName, // 顶牌相对于 parser 模型的位置
width: 256 * 0.1, position,
height: 128 * 0.1, // 是否双面
position:{ x: 0, y: 30, z: 0 }, doubleSide: true
}, },
canvasOptions: { canvasOptions: {
fillStyle: 'rgb(51, 51, 51)', fillStyle: 'rgb(51, 51, 51)',
font: '32px sans-serif', font: '32px sans-serif',
textBaseline: 'middle', textBaseline: 'middle'
}, },
imgWidth: 256, // 设置顶牌大小及图片路径
imgHeight: 128, imgWidth: 256,
// 设置顶牌 图片路径 imgHeight: 128,
image: `/src/assets/planMgmt/center.png` image: imageUrl
}; };
if(obj.userData.displayName && obj.userData.bubbleConfig && obj.userData.bubbleConfig.displayMode == 'show'){ parser.objHelper.title = displayName;
obj.baseObjHelper.title = obj.userData.displayName;
}else{
obj.baseObjHelper.title = null;
} }
this.state.objs.push(obj); this.objs.push(parser.obj);
} }
/** 处理所有的模型解析完毕之后 */ /** 处理所有的模型解析完毕之后 */
handleModelParserDone = (modelParser) => { handleModelParserDone = (modelParser) => {
const { content } = this.props; const { content } = this.props;
// const modelExistAttach = content.filter(userData => userData.attachments && userData.attachments.length > 0 ); const modelExistAttach = content.filter(userData => userData.attachments && userData.attachments.length > 0 );
// 改变模型关联关系 // 改变模型关联关系
// modelExistAttach.forEach(userData =>{ modelExistAttach.forEach(userData =>{
// const parentObj = modelParser.get(userData.eid); const parentObj = modelParser.get(userData.eid);
// userData.attachments.forEach(eid=>{ userData.attachments.forEach(eid=>{
// const attachModel = modelParser.get(eid); const attachModel = modelParser.get(eid);
// attachModel && parentObj.attach(attachModel); if (attachModel){
// }); // attachModel.node.position.set(0,10,0);
// }); parentObj.attach(attachModel);
} }
});
});
}
//model start //model start
getContext = () => { getContext = () => {
...@@ -456,7 +413,8 @@ class StageActuator extends Component { ...@@ -456,7 +413,8 @@ class StageActuator extends Component {
onCreated: this.handlePenEditorCreated onCreated: this.handlePenEditorCreated
}; };
const modelContentProps = { const modelContentProps = {
onAllDone: this.onAllDone onAllDone: this.onAllDone,
onComplete: this.onComplete
}; };
return ( return (
...@@ -468,6 +426,7 @@ class StageActuator extends Component { ...@@ -468,6 +426,7 @@ class StageActuator extends Component {
baseObjs={baseObjs} baseObjs={baseObjs}
ref={node => this.a3dRef = node} ref={node => this.a3dRef = node}
disabledEdit disabledEdit
enableObjOutline
enablePen enablePen
penProps={penProps} penProps={penProps}
enableParticles enableParticles
......
...@@ -30,8 +30,8 @@ class taskTabs extends Component { ...@@ -30,8 +30,8 @@ class taskTabs extends Component {
componentDidMount(){ componentDidMount(){
let { tabs } = this.state; let { tabs } = this.state;
let models = this.props.content || []; let models = this.props.content || [];
tabs[0].models = models.filter(e => e.key.indexOf('person') != -1); tabs[0].models = models.filter(e => e.stuffType === 'human');
tabs[1].models = models.filter(e => e.key.indexOf('car') != -1); tabs[1].models = models.filter(e => e.stuffType === 'vehicle');
this.setState({ tabs }); this.setState({ tabs });
this.tabsPubsub = PubSub.subscribe(eventTopics.plan_task_list,function(topic,message){ this.tabsPubsub = PubSub.subscribe(eventTopics.plan_task_list,function(topic,message){
...@@ -48,8 +48,8 @@ class taskTabs extends Component { ...@@ -48,8 +48,8 @@ class taskTabs extends Component {
if (!fastDeepEqual(prevProps.content, this.props.content)){ if (!fastDeepEqual(prevProps.content, this.props.content)){
let { tabs } = this.state; let { tabs } = this.state;
let models = this.props.content|| []; let models = this.props.content|| [];
tabs[0].models = models.filter(e => e.key.indexOf('person') != -1); tabs[0].models = models.filter(e => e.stuffType === 'human');
tabs[1].models = models.filter(e => e.key.indexOf('car') != -1); tabs[1].models = models.filter(e => e.stuffType === 'vehicle');
this.setState({ tabs }); this.setState({ tabs });
} }
} }
......
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