Commit 44554099 authored by 张博's avatar 张博

Merge branch 'developer' of http://172.16.10.76/station/amos-station-module-view into developer

parents 7122aeb3 1cedeaf4
......@@ -30,7 +30,7 @@ export const FscSerUrl = {
msgCategoryListUrl: completePrefix(view3dURI, 'msgCategoryListUrl'), //右侧菜单-消息-类别集合
msgUrl: completePrefix(baseURI, 'api/message/page?pageNumber={page}&pageSize={size}&time={time}&type={category}&title={title}'), //右侧菜单-消息 *
ruleRePlayUrl: completePrefix(ruleURI, 'urule/rule/replay?batchNo={batchNo}'), //右侧菜单-步骤点击 *
stepUrl: completePrefix(baseURI, 'api/timeline/contingency/page?current={page}&pageSize={size}'), //右侧菜单-步骤 *
stepUrl: completePrefix(baseURI, 'api/timeline/contingency/page?pageNumber={page}&pageSize={size}'), //右侧菜单-步骤 *
broadcastTypeListUrl: completePrefix(view3dURI, 'broadcastTypeListUrl'), //右侧菜单-播报-类型集合
broadcastUrl: completePrefix(baseURI, 'api/timeline/{instanceNo}?recordType={recordType}'), //右侧菜单-播报 *
markerDetailsUrl: completePrefix(view3dURI, 'view3d/node/info?id={id}&type={type}'), //三维地图中各种点详情
......
......@@ -4,7 +4,7 @@ import { UUID, deepCopy } from 'amos-tool';
import { PubSub } from 'ray-eventpool';
import { Connect as UIConnect, message } from 'amos-framework';
import { FatLine } from 'amos-3d/lib/advanced';
import A3DDesigner, { Connect, FireObject,DESIGNER_CONSTS,PolygonRegion } from 'amos-3d/lib/designer';
import A3DDesigner, { Connect, FireObject,DESIGNER_CONSTS,PolygonRegion,EVENT_CONSTS } from 'amos-3d/lib/designer';
import WorkerObjContent from 'amos-3d/lib/worker/WorkerObjContent';
import * as endConf from 'amos-processor/lib/config/endconf';
import { LensJumpFactory } from 'base-r3d/lib/factory';
......@@ -68,6 +68,7 @@ const layerConfig = {
layers: []
};
const { PEN_STATE } = DESIGNER_CONSTS;
const { EVENT_TYPE_CORE } = EVENT_CONSTS;
/**
* 换流站3dview
......@@ -531,10 +532,17 @@ class View3D extends Component {
const me = this;
cacheObjsSave(me,obj,LENS_LEVEL);//缓存对象及对应关系
if (!obj.isForceParent) {
obj.on('click', evt => {
//单击聚焦
obj.on(EVENT_TYPE_CORE.Click, evt => {
if (this.state.isEditMode === false) {
// this.focusPosition(evt.pickedPosition);
me.outlineFactory.toggleOutline(evt.object);
me.focusObject(obj);
}
});
//双击进入模型内部
obj.on(EVENT_TYPE_CORE.DBLClick, evt => {
if (this.state.isEditMode === false) {
flyToSubView(me,obj,LENS_LEVEL);
}
});
......
......@@ -403,8 +403,6 @@ export const flyToSubView = (instance,obj,LENS_LEVEL) =>{
fitView && instance.cameraFactory.fitView(fitView);//视角调整为最近视角
instance.lensLevel = LENS_LEVEL.SUB;
instance.setState({ isOutterView: false });
} else {
instance.focusObject(obj);
}
};
......
......@@ -10,15 +10,22 @@ import {
searchAction,
msgAction,
exeRecordAction,
recordAction
recordAction,
recordStatusListAction
} from './../../services/3dService';
const { TabList, Tab, TabPanel } = Tabs;
const MsgType = { protal: '巡检',equiment: '设备', riskAlert: '风险' };
const space = 200;
const defaultHeight = 200;
/**
* 检索
* @param {object} self
* @param {String} retrieveType
*/
const getColumns = (self,retrieveType) => {
switch (retrieveType) {
case 'riskSource':
......@@ -60,6 +67,9 @@ const getColumns = (self,retrieveType) => {
}
};
/**
* 消息
*/
const getMsgColumns = () => {
return [
{ title: '标题',dataIndex: 'title',key: 'title',width: '15%' },
......@@ -68,8 +78,10 @@ const getMsgColumns = () => {
{ title: '内容',dataIndex: 'content',key: 'content',width: '55%' }
];
};
const getRecordColumns = () => {
/**
* 预案
*/
const getPlanColumns = () => {
return [
{ title: '名称',dataIndex: 'fire_Equipment_Name',key: 'name',width: '33%' },
{ title: '时间',dataIndex: 'create_time',key: 'create_time',width: '33%' },
......@@ -77,23 +89,40 @@ const getRecordColumns = () => {
];
};
const getTrajectoryColumns = () => {
/**
* 巡检记录
*/
const getRecordColumns = (statusList) => {
return [
{ title: '巡检人',dataIndex: 'userName',key: 'userName',width: '33%' },
{ title: '巡检点',dataIndex: 'pointName',key: 'pointName',width: '33%' },
{ title: '时间',dataIndex: 'checkTime',key: 'checkTime',width: '33%' },
{ title: '轨迹',dataIndex: 'pointName',key: 'pointName',width: '33%' }
{ title: '状态',dataIndex: 'isOk',key: 'isOk',width: '33%', render: isOk =>{
const status = statusList.find(e => e.code === isOk) || {};
return (
<span className="datapane-prop-value" style={{ color: status.color }}>
{status.name}
</span>
);
}
}
];
};
/**
* tab表头
*/
const tabs = [
{ id: '1', key: 'search', closable: false, title: '检索' },
{ id: '2', key: 'message', closable: false, title: '消息' },
{ id: '3', key: 'record', closable: false, title: '步骤' },
{ id: '4', key: 'trajectory', closable: false, title: '轨迹' }
{ id: '3', key: 'plan', closable: false, title: '预案' },
{ id: '4', key: 'record', closable: false, title: '记录' }
];
class SearchPane extends Component {
/**
* 检索
*/
class SearchPane extends Component {
constructor(props){
super(props);
this.pageConfig = {
......@@ -108,12 +137,14 @@ class SearchPane extends Component {
totalCount: 0,
msgDataList: [],
recordDataList: [],
trajectoryDataList: []
planDataList: [],
statusList: []
};
}
componentDidMount() {
this.fetchRetrieveData();
this.fetchRecordStatusList();
}
onTabClick = (value) =>{
......@@ -122,10 +153,10 @@ class SearchPane extends Component {
this.fetchRetrieveData();
} else if (value === 'message'){
this.fetchMsgData();
} else if (value === 'plan'){
this.fetchPlanRecordData();
} else if (value === 'record'){
this.fetchRecordData();
} else if (value === 'trajectory'){
this.fetchTrajectoryData();
this.fetchCheckRecordData();
}
this.setState({ activeKey: value ,filter: [] });
}
......@@ -146,6 +177,7 @@ class SearchPane extends Component {
message.danger('坐标未绑定!!!');
}
}
getPanelHeight = () => {
return defaultHeight;
};
......@@ -159,18 +191,18 @@ class SearchPane extends Component {
}
};
//轨迹
fetchTrajectoryData = () => {
//巡检记录
fetchCheckRecordData = () => {
const { filter } = this.state;
recordAction(filter, this.pageConfig.current, this.pageConfig.pageSize).then(d => {
this.setState({ trajectoryDataList: d.content,totalCount: d.totalElements });
this.setState({ recordDataList: d.content,totalCount: d.totalElements });
});
}
//步骤
fetchRecordData = () => {
//预案执行记录
fetchPlanRecordData = () => {
const { filter } = this.state;
exeRecordAction(filter, this.pageConfig.current, this.pageConfig.pageSize).then(d => {
this.setState({ recordDataList: d.content,totalCount: d.totalElements });
this.setState({ planDataList: d.content,totalCount: d.totalElements });
});
}
//消息
......@@ -240,16 +272,22 @@ class SearchPane extends Component {
);
};
fetchRecordStatusList = ()=>{
recordStatusListAction().then(d =>
this.setState({ statusList: d || [] })
);
}
paramsOnChange = (filter) => {
const { activeKey } = this.state;
if (activeKey === 'search'){
this.setState({ filter },this.fetchRetrieveData);
} else if (activeKey === 'message'){
this.setState({ filter },this.fetchMsgData);
} else if (activeKey === 'plan'){
this.setState({ filter },this.fetchPlanRecordData);
} else if (activeKey === 'record'){
this.setState({ filter },this.fetchRecordData);
} else if (activeKey === 'trajectory'){
this.setState({ filter },this.fetchTrajectoryData);
this.setState({ filter },this.fetchCheckRecordData);
}
}
......@@ -261,7 +299,6 @@ class SearchPane extends Component {
} else {
return;
}
}
closeModal(){
let args = {
......@@ -271,10 +308,18 @@ class SearchPane extends Component {
update3DViewData(args);
this.props.changeSearchPaneVisible();
this.setState({ activeKey: 'search' },()=>this.paramsOnChange([]));
}
render() {
const { dataList,activeKey,retrieveType,totalCount,msgDataList,recordDataList,trajectoryDataList } = this.state;
const {
dataList,
activeKey,
retrieveType,
totalCount,
msgDataList,
recordDataList,
planDataList,
statusList
} = this.state;
return (
<div>
{ this.props.visible && <div className="search-pane-bg" /> }
......@@ -288,13 +333,12 @@ class SearchPane extends Component {
// destroyContent
>
<TabList>
{tabs.map((item, i) => (
{tabs.map(item => (
<Tab key={item.key} activeKey={item.key} closable={item.closable}>{item.title}</Tab>)
)}
</TabList>
<ParamsHeader paramsOnChange={this.paramsOnChange} activeKey={activeKey} />
<ParamsHeader statusList={statusList} paramsOnChange={this.paramsOnChange} activeKey={activeKey} />
<TabPanel activeKey="search">
{/* <div className="search-pane-table"> */}
<AmosGridTable
rowKey="id"
columns={getColumns(this,retrieveType)}
......@@ -302,13 +346,11 @@ class SearchPane extends Component {
isPageable
setPageConfig={this.setPageConfig}
isChecked={false}
// getPanelHeight={this.getPanelHeight}
dataList={dataList}
totals={totalCount}
onRowDoubleClick={this.onRetrieveRowDoubleClick}
getTableDataAction={this.fetchRetrieveData}
/>
{/* </div> */}
</TabPanel>
<TabPanel activeKey="message">
<AmosGridTable
......@@ -322,28 +364,28 @@ class SearchPane extends Component {
getTableDataAction={this.fetchMsgData}
/>
</TabPanel>
<TabPanel activeKey="record">
<TabPanel activeKey="plan">
<AmosGridTable
columns={getRecordColumns()}
columns={getPlanColumns()}
callBack={this.reload}
isPageable
setPageConfig={this.setPageConfig}
isChecked={false}
dataList={recordDataList}
dataList={planDataList || []}
totals={totalCount}
getTableDataAction={this.fetchRecordData}
getTableDataAction={this.fetchPlanRecordData}
/>
</TabPanel>
<TabPanel activeKey="trajectory">
<TabPanel activeKey="record">
<AmosGridTable
columns={getTrajectoryColumns()}
columns={getRecordColumns(statusList)}
callBack={this.reload}
isPageable
setPageConfig={this.setPageConfig}
isChecked={false}
dataList={trajectoryDataList}
dataList={recordDataList}
totals={totalCount}
getTableDataAction={this.fetchTrajectoryData}
getTableDataAction={this.fetchCheckRecordData}
/>
</TabPanel>
</Tabs>
......
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Button, Input, Select, Group } from 'amos-framework';
import { Input, Select, Group } from 'amos-framework';
import { SingleQueryEnum } from 'amos-processor/lib/config/queryEnum';
import { trim } from 'amos-tool';
import { DatePicker } from 'amos-antd';
import moment from 'moment';
import imgStatic from './../../consts/imgStatic';
import {
getImpEquipmentAction,
recordStatusListAction
} from './../../services/3dService';
import { getImpEquipmentAction } from './../../services/3dService';
import { bizControlsTypes, riskSourceLevel } from './../conf';
const Option = Select.Option;
......@@ -25,14 +21,12 @@ const datePickerStyle = { width: '30%', minWidth: '20%', height: '28px', marginR
* @extends {Component}
*/
class paramsHeader extends Component {
static defaultProps = {
activeKey: 'search'
};
constructor(props) {
super(props);
this.state = {
value: '',
textValue: undefined,
......@@ -50,7 +44,6 @@ class paramsHeader extends Component {
componentDidMount() {
getImpEquipmentAction().then(d => this.setState({ impEquiList: d }));
recordStatusListAction().then(d => this.setState({ statusList: d || [] }));
}
componentWillReceiveProps(nextProps) {
......@@ -107,39 +100,9 @@ class paramsHeader extends Component {
}
}
paramsTypeonChange = (name,value,type,key) => {
let { recordFilter } = this.state;
if (name === 'checkTime'){
value = value == null ? '' : moment(value).format('YYYY-MM-DD');
}
if (value) {
const flag = recordFilter.some(e => {
if (e.name === name) {
e.value = value;
e.type = type;
return true;
}
});
!flag && recordFilter.push({ name, value , type });
} else {
recordFilter = recordFilter.filter(e => e.name !== name);
}
if (name === 'contingencyName'){
this.setState({ recordTextValue: value,recordFilter });
} else if (name === 'pointName'){
if (key === 'record'){
this.setState({ recordTextValue: value,recordFilter });
} else {
this.setState({ trajectoryTextValue: value,recordFilter });
}
} else {//不为input时直接查询
this.setState({ recordFilter }, this.props.paramsOnChange(recordFilter));
}
}
//检索
getSearchContent = () => {
const { showRiskLevel, showImpEquiList, impEquiList,filter } = this.state;
const { showRiskLevel, showImpEquiList, impEquiList,filter } = this.state;
let levelStyle = { width: '20%', minWidth: '15%', height: '28px', marginRight: '14px' };
let implStyle = { width: '35%', minWidth: '20%', height: '28px', marginRight: '14px' };
return (<Group style={groupStyle}>
......@@ -220,9 +183,9 @@ class paramsHeader extends Component {
}
//步骤
getRecordContent = () =>{
const { recordFilter,impEquiList } = this.state;
//预案执行记录
getPlanContent = () =>{
const { recordFilter,impEquiList } = this.state;
return (<Group style={groupStyle}>
<Select
key="recordImpl"
......@@ -252,9 +215,9 @@ class paramsHeader extends Component {
</Group>);
}
//轨迹
getTrajectoryContent = () => {
const { statusList,recordFilter } = this.state;
//巡检记录
getRecordContent = () => {
const { statusList = [] } = this.props;
return (<Group style={groupStyle}>
<Select
key="statusSel"
......@@ -264,15 +227,6 @@ class paramsHeader extends Component {
defaultOption={<Option className='modalSelectOption'>全部</Option>}
onChange={(v) => this.paramsTypeonChange('isOK', v , SingleQueryEnum.EQUAL)}
/>
<div className="params-input" style={inputStyle}>
<Input
key="trajectoryTextValue"
value={this.state.trajectoryTextValue}
onChange={(e) => this.paramsTypeonChange('pointName', e.target.value, SingleQueryEnum.LIKE)}
placeholder="输入关键字"
/>
<img className="params-input-img1" src={imgStatic.datapane.searchPane} alt="" onClick={()=>this.props.paramsOnChange(recordFilter)} />
</div>
<DatePicker
key="createTime"
className="params-datePicker"
......@@ -290,10 +244,40 @@ class paramsHeader extends Component {
return this.getSearchContent();
} else if (activeKey === 'message'){
return this.getMessageContent();
} else if (activeKey === 'record'){
} else if (activeKey === 'plan'){
return this.getPlanContent();
} else {
return this.getRecordContent();
}
}
paramsTypeonChange = (name,value,type,key) => {
let { recordFilter } = this.state;
if (name === 'checkTime'){
value = value == null ? '' : moment(value).format('YYYY-MM-DD');
}
if (value) {
const flag = recordFilter.some(e => {
if (e.name === name) {
e.value = value;
e.type = type;
return true;
}
});
!flag && recordFilter.push({ name, value , type });
} else {
return this.getTrajectoryContent();
recordFilter = recordFilter.filter(e => e.name !== name);
}
if (name === 'contingencyName'){
this.setState({ recordTextValue: value,recordFilter });
} else if (name === 'pointName'){
if (key === 'record'){
this.setState({ recordTextValue: value,recordFilter });
} else {
this.setState({ trajectoryTextValue: value,recordFilter });
}
} else {//不为input时直接查询
this.setState({ recordFilter }, this.props.paramsOnChange(recordFilter));
}
}
......@@ -313,7 +297,10 @@ paramsHeader.propTypes = {
onSearch: PropTypes.func,
retrieveOnChange: PropTypes.func,
dataList: PropTypes.array,
searchType: PropTypes.string
searchType: PropTypes.string,
activeKey: PropTypes.string,
paramsOnChange: PropTypes.func,
statusList: PropTypes.array
};
export default paramsHeader;
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