Commit c1b39834 authored by 单奇雲's avatar 单奇雲

区域交互修改

parent 8ec1bf36
......@@ -114,7 +114,6 @@ class PointsPool extends Component {
onCreated={(val) => this.onMarkersCreated('riskSource', val)}
isEditMode={this.props.isEditMode}
addMarker={this.addMarker}
editFlag={this.props.editFlag}
selectPoints={this.props.selectPoints}
/>
{/* <PatrolPoint
......
......@@ -39,7 +39,7 @@ import RightEditPointPanel from './moduleEditComponent/RightEditPointPanel';
import RightEditRegionPanel from './moduleEditComponent/RightEditRegionPanel';
import { EVENTS_CONSTS } from '../consts/EventConsts';
import ExceptionArea from './exceptionArea/ExceptionArea';
import { exceptionRegionListAction } from '../services/panoramicService';
import { exceptionRegionListAction,getPointsByRegionIdAction } from '../services/panoramicService';
const AmosConfig = endConf.AmosConfig;
......@@ -112,7 +112,7 @@ class View3D extends Component {
routePathData: [], //区域线位置
pageType: 'region', //编辑类型
pointType: '', //筛选框点类型
editFlag: false,//编辑模式
isEditMode: false,//编辑模式
showRightPanel: false, //是否显示右侧详情
dragItem: '', //拖动的节点,
exceptionAreas: [], //异常区域
......@@ -196,7 +196,7 @@ class View3D extends Component {
this.setState(
{
planStarted: true,
editFlag: false
isEditMode: false
},
() => {
this.props.trigger(eventTopics.plan_start, {
......@@ -499,7 +499,7 @@ class View3D extends Component {
const me = this;
if (!obj.isForceParent) {
obj.on('click', evt => {
if (this.state.editFlag == false) {
if (this.state.isEditMode == false) {
console.log('obj click:', evt);
// this.focusPosition(evt.pickedPosition);
me.outlineFactory.toggleOutline(evt.object);
......@@ -546,11 +546,14 @@ class View3D extends Component {
}
}
};
getPointList = () => {
getPointList = (pointType) => {
let { markers } = this.state
this.clearMarkers();
getPointListAction().then(data => {
for (let i = 0; i < data.length;i++){
markers[data[i].type].push(data[i])
if(pointType && data[i].type == pointType){
markers[pointType].push(data[i]);
}
}
this.setState({markers})
})
......@@ -849,6 +852,10 @@ class View3D extends Component {
message.error('保存失败!');
});
}
changeRoutePath = ( routePathNode ) => {
this.state.routePathData.push(routePathNode);
}
//保存区域绑定
saveAreaData = () => {
let { routePathData } = this.state;
......@@ -953,24 +960,51 @@ class View3D extends Component {
}
//删除区域
deleteAreaBind = () => {
let { selectArea } = this.state;
let { selectArea,treeData } = this.state;
debugger;
if (selectArea) {
let areaParams = [];
areaParams.push({
getPointsByRegionIdAction(selectArea.id).then(d => {
if(d && d.length == 0){
this.state.routePathData.push({
riskSourceId: selectArea.id,
routePath: ''
});
saveAreaDataAction(areaParams).then(d => {
message.success('删除成功!');
getAreaTreeAction().then(data => {
this.getAreas(data);
routePath: '',
})
var tree = new Object();
tree.children = treeData;
this.removeTreeDataRoutePathByChildId(selectArea.id,tree);
this.getAreas(tree.children);
this.setState({
treeData: data || []
routePathData: this.state.routePathData,
treeData: tree.children,
});
}else{
this.toastWarningInfo('请先清除点的绑定再进行删除!')
}
});
}, eer => {
message.error('删除失败!');
}
}
removeTreeDataRoutePathByChildId = ( areaId, obj ) => {
let oldSize = obj.children.length;
let flag = false;
if(oldSize > 0){
obj.children && obj.children.some( t => {
if(t.id == areaId){
t.routePath = '';
t.isBind = false;
flag = true
}
});
if(flag){//移除
return;
}else{
obj.children && obj.children.some(t => {
this.removeTreeDataRoutePathByChildId( areaId, t );
});
}
}else{
return;
}
}
......@@ -1008,6 +1042,7 @@ class View3D extends Component {
pointType,
treeData:[]
});
this.getPointList(pointType);
getPointTreeAction(pointType).then(data => {
this.setState({
pointType,
......@@ -1087,19 +1122,19 @@ class View3D extends Component {
}
quitEditMode = () => {
this.setState({
editFlag: false
isEditMode: false
});
this.props.editModelChange(false);
}
editButtonClick = () => {
let { editFlag } = this.state;
if (editFlag === true) {
let { isEditMode } = this.state;
if (isEditMode === true) {
return false;
}
editFlag = true;
this.setState({ editFlag });
if (editFlag === true) {
isEditMode = true;
this.setState({ isEditMode });
if (isEditMode === true) {
getAreaTreeAction().then(data => {
this.setState({
treeData: data || []
......@@ -1111,8 +1146,8 @@ class View3D extends Component {
pointTypeArr: data || [],
pointType: data[0] ? data[0].code : ''
});
this.getPointList(data[0].code);
});
this.getPointList();
}
}
......@@ -1280,7 +1315,7 @@ class View3D extends Component {
this.clearMarkers();
this.props.editModelChange(false);
this.setState({
editFlag: false
isEditMode: false
});
if (showLabel){//进入各个模式名称设置
this.setHeaderName(label);
......@@ -1289,7 +1324,7 @@ class View3D extends Component {
this.asyncLoadImpEquipment(actionType);
this.props.editModelChange(true);
this.setState({
editFlag: false,
isEditMode: false,
isShowActionBar: false, //隐藏工具栏
startLoadExceptionArea: false,//隐藏marker
sideControlShow: false //隐藏耳朵
......@@ -1305,7 +1340,7 @@ class View3D extends Component {
} else {
this.props.editModelChange(false);
this.setState({
editFlag: false
isEditMode: false
});
}
}
......@@ -1394,7 +1429,7 @@ class View3D extends Component {
isShowActionBar: true, //显示工具栏
startLoadExceptionArea: true, //显示marker,
headerName: '', //设置头名称
editFlag: false, //推出编辑模式
isEditMode: false, //推出编辑模式
errorAreaId: ''
});
} else {
......@@ -1406,7 +1441,7 @@ class View3D extends Component {
isShowActionBar: true, //显示工具栏
startLoadExceptionArea: true, //显示marker,
headerName: '', //设置头名称
editFlag: false, //推出编辑模式
isEditMode: false, //推出编辑模式
errorAreaId: ''
});
}
......@@ -1420,7 +1455,7 @@ class View3D extends Component {
isShowActionBar: true, //显示工具栏
startLoadExceptionArea: true, //显示marker,
headerName: '', //设置头名称
editFlag: false, //推出编辑模式
isEditMode: false, //推出编辑模式
errorAreaId: ''
});
}
......@@ -1465,7 +1500,7 @@ class View3D extends Component {
planStarted,
alarmStarted,
fireEquipmentPosition,
drawing, pageType, pointTypeArr, editFlag, showRightPanel, selectPoints, selectArea,
drawing, pageType, pointTypeArr, isEditMode, showRightPanel, selectPoints, selectArea,
exceptionAreas, exceptionMarkers,startLoadExceptionArea,
sideControlShow,
isShowActionBar,
......@@ -1557,16 +1592,16 @@ class View3D extends Component {
onCreated={this.onGraphCreated}
>
{startAsyncLoad && <WorkerObjContent objs={asyncModels} onWorkerMessage={this.onWorkerLoading} enableLoading afterInit={this.onAfterWorkerInit} />}
{editFlag && pageType === 'region' ? '' :
<PointsPool markers={markers} editFlag={editFlag} selectPoints={selectPoints} updateMarker={this.updateMarker} planStarted={alarmStarted} addMarker={this.addMarker}/>}
{isEditMode && pageType === 'region' ? '' :
<PointsPool markers={markers} isEditMode={isEditMode} selectPoints={selectPoints} updateMarker={this.updateMarker} planStarted={alarmStarted} stagePilot={this.stagePilot} positionCtl={this.positionCtl} addMarker={this.addMarker}/>}
{fireTruckRoute && <FatLine {...lineData.fatLineConf} linePath={JSON.parse(fireTruckRoute)} visible={showFireTruckRoute} />}
<FlameFire position={firePosition} width={10} height={20} depth={8} sliceSpacing={1} visible={planStarted} />
{editFlag && this.renderAreas()}
{isEditMode && this.renderAreas()}
{this.renderPolygonRegion(exceptionAreas)}
{startLoadExceptionArea && <ExceptionArea markers={exceptionMarkers} handleExceptModel={this.handleExceptModel} />}
</A3DDesigner>
</div>
{ editFlag &&
{ isEditMode &&
<div>
{
pageType === 'region' ?
......@@ -1601,7 +1636,7 @@ class View3D extends Component {
</div>
<div className='rightBox'>
{
showRightPanel && pageType === 'region' ? <RightEditRegionPanel detailData={selectArea} rightHeight={rightHeight} closeRightPanel={()=>this.setState({showRightPanel:false})} saveRoutePath={this.saveRoutePath}/> : ''
showRightPanel && pageType === 'region' ? <RightEditRegionPanel detailData={selectArea} rightHeight={rightHeight} closeRightPanel={()=>this.setState({showRightPanel:false})} changeRoutePath={this.changeRoutePath} routePathData={this.state.routePathData}/> : ''
}
{
showRightPanel && pageType === 'point' ? <RightEditPointPanel detailData={selectPoints} positionxyz={positionxyz} closeRightPanel={()=>this.setState({showRightPanel:false})}/> : ''
......
......@@ -40,7 +40,7 @@ class AreaLeftTree extends Component {
}
componentWillReceiveProps(nextProps) {
console.log(nextProps)
console.log(nextProps,'nextProps')
let {treeData,pointTypeArr} = nextProps;
this.setState({
treeData,
......
......@@ -45,14 +45,14 @@ class PointLeftTree extends Component {
let {treeData,pointTypeArr} = nextProps;
this.setState({
treeData,
pointTypeArr,
pointType: pointTypeArr[0]?pointTypeArr[0].code:''
// pointTypeArr,
// pointType: pointTypeArr[0]?pointTypeArr[0].code:''
})
}
onSelectChange = (value, item) =>{
console.log(value, item);
this.state.pointType = value;
this.setState({pointType:value})
this.props.pointTypeChange(value);
}
onSearchChange = (e, value) => {
......@@ -194,7 +194,7 @@ class PointLeftTree extends Component {
<div className="leftTree">
<div className='leftContainer'>
<div className='topForm'>
<Select onChange={this.onSelectChange} defaultValue={pointType} className='leftSelect'>
<Select onChange={this.onSelectChange} defaultValue={pointType} value={pointType} className='leftSelect'>
{
pointTypeArr.map(item => {
return (<Option value={item.code} >{item.name}</Option>)
......
......@@ -15,26 +15,19 @@ const RadioGroup = Radio.Group;
class RightEditRegionPanel extends Component {
constructor(props) {
super(props);
this.state = {
form: {
},
rules:{},
treeDetailData:[]
form: {},
rules: {},
treeDetailData:[],
detailData: {},
heightInput: 0
};
}
componentDidMount() {
console.log(JSON.stringify(this.props.detailData))
// getAreaTreeDetailAction().then(data => {
// console.log(data);
// this.setState({
// treeDetailData:data || []
// })
// this.props.getAreaData(data || [])
// })
const { detailData,routePathData } = this.props;
this.mergeDetailData(detailData,routePathData);
}
componentWillUnmount() {
......@@ -42,16 +35,30 @@ class RightEditRegionPanel extends Component {
}
componentWillReceiveProps(nextProps) {
console.log(nextProps)
let {treeData,pointTypeArr} = nextProps;
// this.setState({
// if(this.props.detailData != nextProps.detailData || this.props.routePathData != nextProps.routePathData){
let { detailData,routePathData } = nextProps;
this.mergeDetailData(detailData,routePathData);
// }
}
// })
mergeDetailData = (detailData,routePathData) => {
let { heightInput } = this.state;
const { rightHeight } = this.props;
routePathData && routePathData.forEach(r => {
if(r.riskSourceId === detailData.id){
detailData.routePath = r.routePath;
}
});
heightInput = detailData && detailData.routePath && detailData.routePath != '' && JSON.parse(detailData.routePath).regionHeigth || rightHeight;
this.setState({ detailData, heightInput });
}
onChange = (key, e) => {
const value = e.target.value;
const newForm = Object.assign({}, this.state.form, { [key]: value });
this.setState({
form: newForm
form: newForm,
heightInput: value
});
}
onRadioChange = (value) => {
......@@ -67,15 +74,9 @@ class RightEditRegionPanel extends Component {
});
}
handleSubmit = (e) => {
// e.preventDefault();
const {detailData} = this.props
const {detailData} = this.state;
this.form.validate((valid, dataValues, errors) => {
console.log('返回内容:', dataValues, valid, errors);
if (valid) {
......@@ -83,10 +84,19 @@ class RightEditRegionPanel extends Component {
let routePathData=[ {
riskSourceId: detailData.id,
routePath: JSON.stringify({
routePath:detailData.routePath,
routePath:JSON.parse(detailData.routePath).routePath,
regionHeigth:parseFloat(dataValues.positionZ)
})}]
this.props.saveRoutePath(routePathData)
// this.props.saveRoutePath(routePathData)
let routePathDataNode={
riskSourceId: detailData.id,
routePath: JSON.stringify({
routePath:JSON.parse(detailData.routePath).routePath,
regionHeigth:parseFloat(dataValues.positionZ)
})
}
this.props.changeRoutePath(routePathDataNode);
} else {
console.log('error submit!!');
return false;
......@@ -95,8 +105,8 @@ class RightEditRegionPanel extends Component {
}
render() {
let { rules, form,pointTypeArr,pointType, } = this.state;
let { pageType,detailData,rightHeight } = this.props;
let { rules, form,pointTypeArr,pointType,detailData,heightInput } = this.state;
let { pageType,rightHeight } = this.props;
const formItemLayout = {
labelCol: {
xs: { span: 28 },
......@@ -174,7 +184,10 @@ class RightEditRegionPanel extends Component {
</div> */}
<div className='positionItem'>
<FormItem label="高" field="positionZ" {...formItemLayout}>
<Input placeholder={rightHeight} onChange={(e) => this.onChange('positionZ', e)}/>
<Input
placeholder={detailData.routePath && JSON.parse(detailData.routePath).regionHeigth || rightHeight}
value={heightInput}
onChange={(e) => this.onChange('positionZ', e)}/>
{/* <Input value={detailData.ue4Location && detailData.ue4Location[2]} /> */}
</FormItem>
</div>
......
......@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
import { utils } from 'amos-tool';
import { Markers } from 'amos-3d/lib/designer';
import { BaseObjHelper } from 'base-r3d/lib/factory';
import formatUrl from 'amos-processor/lib/utils/urlFormat';
import { CONSTS } from './../../consts/storageConsts';
import PointDialog from './PointDialog';
import { tirggerPlanTopic } from './../dataProcessor';
......@@ -17,29 +18,6 @@ const getIcon = (markerType, level) => {
return marker3DIoncMapper[`${markerType}`]
};
const buildMarkerOptions = (markers, markerType, defaultParams = {}) => {
if (!utils.isEmpty(markers)){
markers.forEach(m => {
const url = getIcon(markerType, m.level);
let position;
if (!utils.isArray(m.position)){
position = Object.values(m.position);
}
for (let k of Object.keys(defaultParams)) {
m[k] = defaultParams[k];
}
m.key = m.key || m.id;
m.url = url;
m.position = utils.isArray(m.position) ? m.position : position;
m.size = 10;
m.name = m.name ? m.name : m.label;
m.label = null;
// m.label = createMarkerLabel(m.name);
});
}
return markers;
};
const createMarkerLabel = (text) => {
const div = document.createElement('div');
div.style.position = 'absolute';
......@@ -100,7 +78,7 @@ export default function marker3DFactory(WrappedComponent = 'div', options){
}
componentWillReceiveProps = nextProps => {
// if(nextProps.editFlag){
// if(nextProps.isEditMode){
// this.markersCache.eachValue(obj=>{
// if(nextProps.selectPoints.type == obj.extData.type && nextProps.selectPoints.id ==obj.extData.id ){
// this.setTwinkleConf(obj);
......@@ -136,9 +114,6 @@ export default function marker3DFactory(WrappedComponent = 'div', options){
onMarkerClick = (marker, e) => {
const { isClick } = this.state;
if(this.props.editFlag){
return false
}
if (this.props.isEditMode) {
return false
}
......@@ -165,13 +140,13 @@ export default function marker3DFactory(WrappedComponent = 'div', options){
}
}
markerCreated = ({ markersCache }) => {
let {editFlag,selectKey} =this.props
let {isEditMode,selectKey} =this.props
this.markersCache = markersCache;
//this.outlineHelper = this.stagePilot ? this.stagePilot.outlineHelper : undefined;
this.stagePilot = this.props.stagePilot;
this.outlineHelper = this.stagePilot ? this.stagePilot.outlineHelper : undefined;
markersCache.eachValue(obj=>{
this.setTopCardConf(obj, obj.extData);
if(obj.extData.type === "riskSource" && markerType != 'impEquipmentMode' && !editFlag){
if(obj.extData.type === "riskSource" && markerType != 'impEquipmentMode' && !isEditMode){
this.setTwinkleConf(obj);
}
});
......@@ -222,12 +197,46 @@ export default function marker3DFactory(WrappedComponent = 'div', options){
obj.baseObjHelper.title = cardTitle;
}
buildMarkerOptions = (markers, markerType, defaultParams = {}) => {
const { isEditMode } = this.props;
if (!utils.isEmpty(markers)){
markers.forEach(m => {
const url = getIcon(markerType, m.level);
let position;
if (!utils.isArray(m.position)){
position = Object.values(m.position);
}
for (let k of Object.keys(defaultParams)) {
if((markerType === 'riskSource' || markerType === 'patrol' ) && k != 'useModel' && !isEditMode){
m[k] = formatUrl(defaultParams[k], { url: `${markerType}-${m.level}` });
}else if((markerType === 'riskSource' || markerType === 'patrol' ) && k != 'useModel' && isEditMode){
if(markerType === 'riskSource'){
m[k] = formatUrl(defaultParams[k], { url: `${markerType}-4` });
}else{
m[k] = formatUrl(defaultParams[k], { url: `${markerType}-1` });
}
}else{
m[k] = defaultParams[k];
}
}
m.key = m.key || m.id;
m.url = url;
m.position = utils.isArray(m.position) ? m.position : position;
m.size = 10;
m.name = m.name ? m.name : m.label;
m.label = null;
// m.label = createMarkerLabel(m.name);
});
}
return markers;
};
render() {
const { markers, ...rest } = this.props;
const { planStarted } = this.state;
let dialogStyle = { zIndex: 1000 };
const result = buildMarkerOptions(markers, markerType, markerParams);
const result = this.buildMarkerOptions(markers, markerType, markerParams);
return (
<WrappedComponent>
<Markers
......
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