Commit 6f7b5f66 authored by xinglei's avatar xinglei

*)增加月度巡检情况列表

parent 9c6487e8
......@@ -32,10 +32,10 @@ export const secExtUrl = {
allRoleUrl: completePrefix(securityBaseURI,'role/all-roles'),//所有角色
// 新权限接口
//systemMenusUrl: completePrefix(securityBaseURI, `${secExVerson}/permission/tree/menu?code={code}&userId={userId}`), // 获取当前系统所有菜单
systemMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree`), // 获取当前系统所有菜单(新)
loginUrl: completePrefix(securityBaseURI, `${secExVerson}/system/login`), // 登陆获取accessToken
// 获取指定菜单下授权的按钮权限 get
......@@ -45,7 +45,7 @@ export const secExtUrl = {
// permissionsMenusUrl: completePrefix(securityBaseURI, `${secExVerson}/permission/tree/curruser`), // 登陆用户系统权限菜单
//permissionsMenusUrl: completePrefix(securityUrlWithVersion, '/permission/tree/{roleSeq}'), // 登陆用户系统权限菜单---TODO新版待修改
permissionsMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree/role?roleSeq={roleSeq}`), // 登陆用户系统权限菜单---TODO新版待修改(新)
loginOutUrl: completePrefix(securityBaseURI, `${secExVerson}/system/loginOutr`), // 登陆用户系统权限菜单
curUserMenusUrl: completePrefix(securityBaseURI,'privilege/v1/permission/tree/me'),//查询当前用户菜单
......@@ -94,9 +94,9 @@ export const patrolUrls = {
taskHandleUrl: completePrefix(baseURI, 'api/task/handleTask?taskIds={ids}&status={status}'),
taskDetailUrl: completePrefix(baseURI, 'api/task/queryTask?taskID={id}'),
taskAddUrl: completePrefix(baseURI, 'api/task/addTask'),
deptUserTreeUrl: completePrefix(baseURI, 'api/user/queryDeptUserTree'),
deptUserTreeUrl: completePrefix(baseURI, 'api/user/queryDeptUserTree'),
deptUserTreeUrl2: completePrefix(baseURI, 'api/user/queryDeptUserTree1'),
deptUserTreeUrl2: completePrefix(baseURI, 'api/user/queryDeptUserTree1'),
taskFeedbackTaskUrl: completePrefix(baseURI, 'api/task/feedbackTask'),
routePageUrl: completePrefix(baseURI, 'api/route/list?pageNumber={page}&pageSize={size}'),
routeBatchDelUrl: completePrefix(baseURI, 'api/route/deleteRoute?routeIds={ids}'),
......@@ -178,6 +178,9 @@ export const patrolUrls = {
taskCaliberListUrl: completePrefix(baseURI, 'api/common/taskgetStatisticsType'),//任务安排统计分析-获取任务统计口径集合
personStatisticsUrl: completePrefix(baseURI, 'api/task/report/comprehensive/user?startTime={startTime}&endTime={endTime}'),//人员综合统计分析-表格
personStatisticsExportUrl: completePrefix(baseURI, 'api/excel/comprehensive/user?startTime={startTime}&endTime={endTime}'),//人员综合统计分析-表格导出
monthSituationUrl: completePrefix(baseURI, 'api/check/statisticalByMonth'),//月度巡检情况-表格
monthSituationExportUrl: completePrefix(baseURI, 'api/check/exportStatisticalByMonth'),//月度巡检情况-表格导出
daySituationExportUrl: completePrefix(baseURI, 'api/check/exportByDept'),//每日巡检情况-表格导出
homeNumberUrl: completePrefix(baseURI, 'api/home/overviewData'),//巡检首页-获取公司名、巡检点数、完成/计划、累计巡检次数、未完/已完任务数和巡检点数
homeChartUrl: completePrefix(baseURI, 'api/home/getCheckData'),//巡检首页-获取12日内 实际巡检、计划巡检和漏检次数每天的数值
......
......@@ -36,6 +36,7 @@ import CompletionSituation from './../view/patrol/statistics/completionSituation
import InspectionSituation from './../view/patrol/statistics/inspectionSituation';
import TaskArrangement from './../view/patrol/statistics/taskArrangement';
import PersonStatistics from './../view/patrol/statistics/personstatistics';
import MonthSituation from './../view/patrol/statistics/monthSituation';
import CheckDetail from './../view/patrol/check/checkDetail';
/**
......@@ -74,6 +75,7 @@ const customRoutes = [
{ path: 'inspectionSituation', parent: 'patrol', component: InspectionSituation },
{ path: 'taskArrangement', parent: 'patrol', component: TaskArrangement },
{ path: 'personStatistics', parent: 'patrol', component: PersonStatistics },
{ path: 'monthSituation', parent: 'patrol', component: MonthSituation },
{ path: '/main/patrol/checkDetail', parent: 'patrol', component: CheckDetail }
];
......@@ -129,6 +131,7 @@ export const pathMapping = {
inspectionSituation: '/main/patrol/inspectionSituation',
taskArrangement: '/main/patrol/taskArrangement',
personStatistics: '/main/patrol/personStatistics',
monthSituation: '/main/patrol/monthSituation',
checkDetail: '/main/patrol/checkDetail'
};
/**
......
......@@ -62,6 +62,13 @@ export const personStatisticsAction = (data) => {
};
/**
* 月度巡检情况-表格
*/
export const monthSituationAction = (body) => {
return commonPost(patrolUrls.monthSituationUrl, body);
};
/**
* 巡检首页-获取公司名、巡检点数、完成/计划、累计巡检次数、未完/已完任务数和巡检点数
*/
export const homeNumberAction = () => {
......
......@@ -55,6 +55,22 @@
height: 100%;
overflow: auto;
.right-btn {
position: absolute;
z-index: 1;
right: 320px;
margin-top: -30px;
display: flex;
.row-btn {
padding-left: 25px;
img {
cursor: pointer;
}
}
}
.grid-content {
height: calc(100% - 40px);
......
......@@ -2,7 +2,6 @@ export default function(data, delRequest){
window.setLoading && window.setLoading(false);
return new Promise((resolve, reject) => {
if (data) {
debugger
if (data.dataList || data.dataList === null){
if(data.result==='SUCCESS'){
resolve(data.dataList);
......
......@@ -240,10 +240,8 @@ export const exportExcel = ({ url, method, body }, fileName) => {
'Content-Type': 'application/json; charset=utf-8',
'X-Access-Token': window.localStorage.getItem(token),
'token': window.localStorage.getItem(token),
'appKey': 'YH-PATROL',
'product': 'YH-PATROL_WEB'
'appKey': 'YH-PATROL',
'product': 'YH-PATROL_WEB'
},
body: body ? JSON.stringify(body) : undefined
}).then((e) => {
......
......@@ -9,20 +9,19 @@ import { seachPermissionAction } from './../../../services/checkService';
* @class ToolBar
* @extends {Component}
*/
class ToolBar extends Component{
class ToolBar extends Component {
constructor(props) {
super(props);
this.state = {
navs: [],
isWriteable: false,
dropnavs:[]
dropnavs: []
};
}
componentWillReceiveProps(nextProps) {
const { dropnavs } = nextProps;
if(dropnavs&&dropnavs.length>0){
const { dropnavs } = nextProps;
if (dropnavs && dropnavs.length > 0) {
this.setState({ dropnavs: dropnavs });
const permissionsMenus = window.localStorage.getItem('permissionsMenus');
let data = [];
......@@ -32,26 +31,20 @@ class ToolBar extends Component{
let children = [];
if (data && dropnavs) {
data.find(item => {
if(item.permissionName === '巡检业务'){
if (item.permissionName === '巡检业务') {
children = item.children;
let menu = children.find(item => {
if(dropnavs&&dropnavs.length>0){
if (dropnavs && dropnavs.length > 0) {
if (void 0 === dropnavs[0].frontComponent) {
return true;
}
return dropnavs[0].frontComponent === item.permissionCode;
}
}
});
if (!menu) {
this.setState({ navs: [], isWriteable: false });
return;
}
let navs = dropnavs.filter(item => {
if (!item.isWriteable) {
return true;
......@@ -64,14 +57,9 @@ class ToolBar extends Component{
}
});
}
}
}
componentWillMount() {
const { dropnavs } = this.state;
const permissionsMenus = window.localStorage.getItem('permissionsMenus');
......@@ -82,26 +70,20 @@ class ToolBar extends Component{
let children = [];
if (data && dropnavs) {
data.find(item => {
if(item.permissionName === '巡检业务'){
if (item.permissionName === '巡检业务') {
children = item.children;
let menu = children.find(item => {
if(dropnavs&&dropnavs.length>0){
if (dropnavs && dropnavs.length > 0) {
if (void 0 === dropnavs[0].frontComponent) {
return true;
}
return dropnavs[0].frontComponent === item.permissionCode;
}
}
});
if (!menu) {
this.setState({ navs: [], isWriteable: false });
return;
}
let navs = dropnavs.filter(item => {
if (!item.isWriteable) {
return true;
......@@ -146,7 +128,7 @@ class ToolBar extends Component{
getMenuItems = (subSys) => {
let { callBack } = this.props;
let items = new Array();
for ( let i = 0; i < subSys.length; i++) {
for (let i = 0; i < subSys.length; i++) {
let sub = subSys[i];
items.push(<Menu.Item onClick={() => callBack(sub.key)}>{sub.text}</Menu.Item>);
}
......@@ -156,15 +138,15 @@ class ToolBar extends Component{
getDropnav = (record) => {
let arr = new Array();
arr.push(record);
return (<DropNav navs={arr} theme="light" />);
return (<DropNav navs={arr} theme="light" />);
}
handlerOnClick = (navItem, e) =>{
handlerOnClick = (navItem, e) => {
let { callBack } = this.props;
if (!navItem.href.startsWith('jacascript::void(0)')) {
return true;
}
callBack(navItem.key,navItem.href);
callBack(navItem.key, navItem.href);
return false;
}
......@@ -178,7 +160,7 @@ class ToolBar extends Component{
render() {
const { navs } = this.state;
let context = navs.map( item => {
let context = navs.map(item => {
if (item.subSys) {
return this.getNavMenu(item);
} else if (!item.href.startsWith('jacascript::void(0)')) {
......
......@@ -9,7 +9,7 @@ import { pathMapping } from './../../../routes/customRoutes';
import AmosGridTable from '../../component/table/table/AmosGridTable';
import { patrolUrls } from './../../../consts/urlConsts';
import ToolBar from './../../component/toolbar';
import { batchDeCheckAction, queryCheckDetailAction ,btnAuthAction} from '../../../services/checkService';
import { batchDeCheckAction, queryCheckDetailAction, btnAuthAction } from '../../../services/checkService';
......@@ -22,21 +22,20 @@ const checkDetail = pathMapping.checkDetail;
const okStatusEnum = { '1': '正常', '2': '异常', '3': '漏检' };
const statusDataEnum = { '0': '计划外完成', '1': '按时完成', '2': '未执行' };
const dropnavs1={ key: '1', text: '查看明细', icon: 'jiancha', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false };
const dropnavs2={ key: '2', text: '删除记录', icon: 'delete', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: true };
const dropnavs3= {
key: '3',
text: '导出记录',
icon: 'user',
href: 'jacascript::void(0)',
subSys: [
{ key: '3-1', text: '导出选中数据', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false },
{ key: '3-2', text: '导出全部数据', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false },
{ key: '3-3', text: '导出选中图片', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false },
{ key: '3-4', text: '导出全部图片', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false }
]
};
const dropnavs1 = { key: '1', text: '查看明细', icon: 'jiancha', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false };
const dropnavs2 = { key: '2', text: '删除记录', icon: 'delete', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: true };
const dropnavs3 = {
key: '3',
text: '导出记录',
icon: 'user',
href: 'jacascript::void(0)',
subSys: [
{ key: '3-1', text: '导出选中数据', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false },
{ key: '3-2', text: '导出全部数据', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false },
{ key: '3-3', text: '导出选中图片', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false },
{ key: '3-4', text: '导出全部图片', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false }
]
};
const getColumns = () => {
return [
......@@ -187,7 +186,8 @@ class CheckTable extends Component {
selectedRows: [],
selectedRowKeys: [],
data: [],
dropnavs:[]
dropnavs: [],
showType: ''
};
}
......@@ -203,40 +203,27 @@ class CheckTable extends Component {
};
/****按钮权限 */
reloadButtonAuth = () => {
// const _path = this.calcRoutes();
btnAuthAction('/main/patrol/check').then(data => {
let { dropnavs } = this.state;
if(data){
if("jiancha" in data&&data.jiancha.hasPermission){
dropnavs.push( dropnavs1);
}
if("delete" in data&&data.delete.hasPermission){
dropnavs.push( dropnavs2);
}
if("user" in data&&data.user.hasPermission){
dropnavs.push( dropnavs3);
}
}
this.setState({ dropnavs});
});
}
/****按钮权限 */
reloadButtonAuth = () => {
// const _path = this.calcRoutes();
btnAuthAction('/main/patrol/check').then(data => {
let { dropnavs } = this.state;
if (data) {
if ("jiancha" in data && data.jiancha.hasPermission) {
dropnavs.push(dropnavs1);
}
if ("delete" in data && data.delete.hasPermission) {
dropnavs.push(dropnavs2);
}
if ("user" in data && data.user.hasPermission) {
dropnavs.push(dropnavs3);
}
}
this.setState({ dropnavs });
});
}
/**
* 分页设置参数
......@@ -345,17 +332,17 @@ reloadButtonAuth = () => {
method: 'get',
headers: getHeaders()
}).then(e => {
e.blob().then(blob => {
const a = window.document.createElement('a');
const downUrl = window.URL.createObjectURL(blob);
let currDate = new Date();
const filename = [currDate.getTime(), 'xls'];
a.href = downUrl;
a.download = `${decodeURI(filename[0])}.${filename[1]}`;
a.click();
window.URL.revokeObjectURL(downUrl);
});
})
e.blob().then(blob => {
const a = window.document.createElement('a');
const downUrl = window.URL.createObjectURL(blob);
let currDate = new Date();
const filename = [currDate.getTime(), 'xls'];
a.href = downUrl;
a.download = `${decodeURI(filename[0])}.${filename[1]}`;
a.click();
window.URL.revokeObjectURL(downUrl);
});
})
.catch(e => {
_amosTool.Log.error(e.message);
});
......@@ -373,17 +360,17 @@ reloadButtonAuth = () => {
method: 'get',
headers: getHeaders()
}).then(e => {
e.blob().then(blob => {
const a = window.document.createElement('a');
const downUrl = window.URL.createObjectURL(blob);
let currDate = new Date();
const filename = [currDate.getTime(), 'zip'];
a.href = downUrl;
a.download = `${decodeURI(filename[0])}.${filename[1]}`;
a.click();
window.URL.revokeObjectURL(downUrl);
});
})
e.blob().then(blob => {
const a = window.document.createElement('a');
const downUrl = window.URL.createObjectURL(blob);
let currDate = new Date();
const filename = [currDate.getTime(), 'zip'];
a.href = downUrl;
a.download = `${decodeURI(filename[0])}.${filename[1]}`;
a.click();
window.URL.revokeObjectURL(downUrl);
});
})
.catch(e => {
_amosTool.Log.error(e.message);
});
......@@ -447,8 +434,6 @@ reloadButtonAuth = () => {
});
};
getDetCheckInfo = () => {
let { selectedRows } = this.state;
if (selectedRows === undefined || selectedRows.length <= 0) {
......@@ -459,16 +444,16 @@ reloadButtonAuth = () => {
AmosAlert.warning('提示', '至多可以选择一条巡检记录');
return;
}
// for (let i = 0; i < selectedRows.length; i++) {
// for (let i = 0; i < selectedRows.length; i++) {
let id = selectedRows[0].id;
let path = {
pathname: checkDetail,
state: { checkID: id }
};
browserHistory.push(path);
// queryCheckDetailAction(id).then(data => {
// this.showCheckDetail(data);
// });
// queryCheckDetailAction(id).then(data => {
// this.showCheckDetail(data);
// });
// }
};
......@@ -491,14 +476,29 @@ reloadButtonAuth = () => {
// });
};
onClickIcon = (value) => {
const { showType } = this.state;
if (showType === value){ value = '';}
this.props.setShowType(value);
this.setState({ showType: value });
}
render() {
let { pagination,dropnavs, isChecked, selectedRowKeys } = this.state;
let { pagination, dropnavs, isChecked, selectedRowKeys } = this.state;
let { dataList, fetchData, count } = this.props;
let defaultPageConfig = this.pageConfig;
return (
<div className="patrol-page-table">
<ToolBar dropnavs={dropnavs} callBack={this.onClickBootBar} />
<div className='right-btn'>
<div className="row-btn">
<img src="/src/assets/fsc/check/export.png" onClick={() => this.onClickIcon('export')} /><span>&nbsp;&nbsp;报表生成</span>
</div>
<div className="row-btn">
<img src="/src/assets/fsc/check/filter.png" onClick={() => this.onClickIcon('search')} /><span>&nbsp;&nbsp;筛选条件</span>
</div>
</div>
<AmosGridTable
rowKey="id"
columns={getColumns()}
......@@ -520,6 +520,9 @@ reloadButtonAuth = () => {
}
}
CheckTable.propTypes = {};
CheckTable.propTypes = {
setShowType: PropTypes.func
};
export default CheckTable;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { DatePicker } from 'amos-antd';
import moment from 'moment';
import { Form, Button, Select } from 'amos-framework';
import { queryDeptByOrgCodeAction1 } from '../../../services/checkService';
import { exportExcel } from 'UTILS/tools';
import { patrolUrls } from 'CONSTS/urlConsts';
const FormItem = Form.Item;
const Option = Select.Option;
/**
* 生成报表条件
*
* @class ExportSearch
* @extends {Component}
*/
class ExportSearch extends Component {
constructor(props) {
super(props);
this.state = {
form: {
deptId: {
name: 'deptId',
value: ''
},
beginDate: {
name: 'beginDate',
value: moment()
.startOf('day')
.format('YYYY-MM-DD HH:mm:ss')
},
endDate: {
name: 'endDate',
value: moment()
.endOf('day')
.format('YYYY-MM-DD HH:mm:ss')
},
statement: { name: 'statement', value: 'technology' }
},
rules: {
deptId: [
{ required: true, message: '巡检部门不能为空!' }
],
statement: [
{ required: true, message: '报表模板不能为空!' }
],
beginDate: [
{ required: true, message: '开始时间不能为空!' }
],
endDate: [
{ required: true, message: '结束时间不能为空!' }
]
},
deptData: [],
statementList: [
{ name: '技术', value: 'technology' },
{ name: '业务', value: 'business' }
]
};
}
componentWillMount = () => {
this.queryDeptByOrgCode(); // 查询部门
};
queryDeptByOrgCode = () => {
queryDeptByOrgCodeAction1().then(data => {
this.setState({ deptData: data });
});
};
onExportExcel = () => {
let { form } = this.state;
let quest = [];
if (form) {
for (let key in form) {
let obj = form[key];
quest.push(obj);
}
}
exportExcel({ url: patrolUrls.daySituationExportUrl, method: 'post', body: quest }, '每日巡检情况报表');
}
onChange = (key, e) => {
let { form } = this.state;
form[key].value = e.target.value;
this.setState(form);
};
onDateChange = (key, date) => {
const { form } = this.state;
form[key].value = moment(date).format('YYYY-MM-DD HH:mm:ss');
this.setState({ form });
};
onSelectChange = (key, value) => {
let { form } = this.state;
form[key].value = value;
this.setState(form);
};
onDeptChange = (key, value) => {
const { form } = this.state;
form[key].value = value;
this.setState({ form });
};
render() {
const { form, rules, deptData, statementList } = this.state;
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 4 },
className: 'colspanlab'
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 14 },
className: 'colspan'
}
};
return (
<Form style={{ padding: '30px 0 0 0' }} className="basic-demo" model={form} rules={rules}>
<FormItem label="巡检部门" field="deptId" {...formItemLayout} >
<Select
className="search_Input"
data={deptData ? deptData : []}
style={{ height: 30 }}
renderOption={item => item && <Option value={item.sequenceNbr}>{item.departmentName}</Option>}
defaultOption={<Option>全部</Option>}
value={form.deptId.value}
onChange={(e) => this.onDeptChange('deptId', e)}
/>
</FormItem>
<FormItem label={<span>报表模板</span>} field="statement" {...formItemLayout}>
<Select
data={statementList}
renderOption={item => <Option value={item.value}>{item.name}</Option>}
value={form.statement.value}
className="search_Input"
onChange={e => this.onSelectChange('statement', e)}
/>
</FormItem>
<FormItem label={<span>开始日期</span>} field="beginDate" {...formItemLayout}>
<DatePicker
style={{ width: 178 }}
className="search_Input"
value={moment(form.beginDate.value)}
allowClear={false}
format="YYYY-MM-DD HH:mm:ss"
onChange={e => this.onDateChange('beginDate', e)}
//允许选择时间
showTime={{ defaultValue: moment('00:00:00', 'HH:mm:ss') }}
/>
</FormItem>
<FormItem label={<span>结束日期</span>} field="endDate" {...formItemLayout}>
<DatePicker
style={{ width: 178 }}
className="search_Input"
value={moment(form.endDate.value)}
allowClear={false}
format="YYYY-MM-DD HH:mm:ss"
onChange={e => this.onDateChange('endDate', e)}
showTime={{ defaultValue: moment('00:00:00', 'HH:mm:ss') }}
/>
</FormItem>
<FormItem className="search-btn">
<Button onClick={this.onExportExcel}>生成报表</Button>
<Button onClick={this.onResetFields}>重置</Button>
</FormItem>
</Form>
);
}
}
ExportSearch.propTypes = {
};
export default ExportSearch;
import { Icon, Button } from 'amos-framework';
import React, { Component } from 'react';
import '../../../styles/view/component/drawer.scss';
import PropTypes from 'prop-types';
/**
* 巡检项
*
* @class InputItemSearch
* @extends {Component}
*/
class SplitLayout extends Component{
state = {
content: {
right: '0px',
display: 'block'
},
client: {
right: '300px',
display: 'none'
}
};
changeStatus = (e) => {
const { content } = this.state;
if (content.right !== '0px') {
let ClientContent = {
right: '0px',
display: 'block'
};
let newClient = {
right: '300px',
display: 'none'
};
this.setState({ content: ClientContent, client: newClient });
} else {
let ClientContent = {
right: '-250px',
opacity: 'block'
};
let newClient = {
right: '0px',
opacity: 'show',
display: 'block'
};
this.setState({ content: ClientContent, client: newClient });
}
}
render() {
const { content, client } = this.state;
const { title } = this.props;
return (
<div className="qq-client-body">
<div style={client} className="qq-client">
<a onClick={this.changeStatus} className="qq-client-open" style={client} >
<Icon size="1x" prefix="amosicon" icon="gengduo2" />
</a>
</div>
<div className="qq-client-content" style={content}>
<h2>
{title}
</h2>
<div className="qq-client-open-content">
{this.props.children}
</div>
</div>
</div>
);
}
}
SplitLayout.propTypes = {
children: PropTypes.node,
title: PropTypes.string
};
export default SplitLayout;
......@@ -2,8 +2,9 @@ import React, { Component } from 'react';
import moment from 'moment';
import CheckTable from './CheckTable';
import CheckSearch from './CheckSearch';
import ExportSearch from './ExportSearch';
import { queryCheckInfoAction } from '../../../services/checkService';
import SplitterLayout from '../../component/SplitLayout';
import SplitterLayout from './SplitLayout';
/**
* 巡检记录
......@@ -19,7 +20,8 @@ class Check extends Component {
statisticsData: [],
totalCount: 0,
planId: '',
pointNo: ''
pointNo: '',
showType: ''
};
}
componentWillMount = () => {
......@@ -73,14 +75,24 @@ class Check extends Component {
});
}
setShowType = (value) => {
this.setState({ showType: value });
}
render() {
let { statisticsData, totalCount, planId, pointNo, searchParam } = this.state;
let { statisticsData, totalCount, planId, pointNo, searchParam, showType } = this.state;
return (
<div className="patrol-page-content">
<SplitterLayout>
{showType === 'search' &&
<SplitterLayout title='查询条件' >
<CheckSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} />
</SplitterLayout>}
{showType === 'export' &&
<SplitterLayout title='报表生成'>
<ExportSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} />
</SplitterLayout>
<CheckTable count={totalCount} fetchData={this.questStatistiscData} searchParam={searchParam} dataList={statisticsData} planId={planId} />
}
<CheckTable count={totalCount} fetchData={this.questStatistiscData} searchParam={searchParam} dataList={statisticsData} planId={planId} setShowType={this.setShowType} />
</div>
);
}
......
......@@ -52,7 +52,7 @@ class PointBasicInfo extends Component {
chargePersonId: '',
remark: '',
riskSourceId: 0
},
riskLevelList: [],
inputItemTableData: [],
......@@ -109,12 +109,12 @@ class PointBasicInfo extends Component {
}
onPointInfoInit(pointId) {
// 根据ID查询点信息
pointId &&
queryPointByIdAction(pointId).then(data => {
let deptId = data.chargeDeptId;
deptId && this.queryUserByDept(deptId);
this.setState({
form: data
......@@ -206,34 +206,31 @@ class PointBasicInfo extends Component {
}
onSelectChange = (key, value) => {
let { form } = this.state;
if('chargePersonId' == key){
if ('chargePersonId' == key) {
let str;
for(var i=0;i<value.length;i++){
if(i === 0 ){
str=value[i];
}else{
str=str+','+value[i];
for (var i = 0; i < value.length; i++) {
if (i === 0) {
str = value[i];
} else {
str = str + ',' + value[i];
}
}
form[key] = str;
console.log('chargePersonId',str);
}else{
console.log('chargePersonId', str);
} else {
form[key] = value;
}
console.log('chargePersonId',value);
console.log('chargePersonId', value);
this.setState(form);
};
onTreeExpand = expandedKeys => {
console.log('onExpand', arguments);
// if not set autoExpandParent to false, if children expanded, parent can not collapse.
// or, you can remove all expanded children keys.
this.setState({
treeConfig: {
expandedKeys,
......@@ -345,8 +342,8 @@ class PointBasicInfo extends Component {
queryUserByDept = deptId => {
queryUserByDeptIdAction(deptId).then(data => {
console.log('pointInfo queryUserByDept',data);
console.log('pointInfo queryUserByDept', data);
this.setState({ userData: data });
});
};
......@@ -400,28 +397,28 @@ class PointBasicInfo extends Component {
/**
* 查询风险等级
*/
querryRiskLevel=()=>{
gerRiskLevel().then(res=>{
console.log('pointBasicInfos',res);
const riskLevelList=res;
this.setState({riskLevelList});
querryRiskLevel = () => {
gerRiskLevel().then(res => {
console.log('pointBasicInfos', res);
const riskLevelList = res;
this.setState({ riskLevelList });
})
}
/**
* 渲染风险等级
*/
rendRiskLevel = () => {
const {riskLevelList}=this.state;
console.log('pointBasicInfos pointBasicInfos',riskLevelList);
const { riskLevelList } = this.state;
console.log('pointBasicInfos pointBasicInfos', riskLevelList);
if (!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) {
return (<div>
{
riskLevelList.map(e => {
return <Option key={e.orderNum} value={e.orderNum}>{e.dictDataValue}</Option>
})
})
}
</div>)
}
......@@ -429,26 +426,26 @@ class PointBasicInfo extends Component {
/**
* 渲染默认责任人
*/
renderCurrentPersonData=(data)=>{
console.log('arrayData1',data)
if(!utils.isEmpty(data) ){
let array=[];
let arrayData=data.split(',');
arrayData.map(e=>{
renderCurrentPersonData = (data) => {
console.log('arrayData1', data)
if (!utils.isEmpty(data)) {
let array = [];
let arrayData = data.split(',');
arrayData.map(e => {
array.push(e)
})
console.log('arrayData',arrayData)
console.log('array',array)
console.log('arrayData', arrayData)
console.log('array', array)
return array;
}else{
} else {
return [];
}
}
render() {
const { form, rules, catalogData, deptData, userData, riskLevelList,currentPersonData } = this.state;
console.log('form.chargePersonId',form.chargePersonId);
console.log('form.userData',userData);
const { form, rules, catalogData, deptData, userData, riskLevelList, currentPersonData } = this.state;
console.log('form.chargePersonId', form.chargePersonId);
console.log('form.userData', userData);
const formItemLayout = {
labelCol: {
xs: { span: 24 },
......@@ -560,11 +557,11 @@ class PointBasicInfo extends Component {
<Option value="3">3级</Option>
<Option value="4">4级</Option> */}
{
(!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) ? riskLevelList.map(e => (
(!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) ? riskLevelList.map(e => (
<Option key={e.dictDataKey} value={e.dictDataKey}>{e.dictDataValue}</Option>
)) : null
)) : null
}
</Select>
</FormItem>
<FormItem label={<span>归属区域/部门</span>} field="chargeDeptId" {...formItemLayout}>
......@@ -586,16 +583,16 @@ class PointBasicInfo extends Component {
value={form.chargePersonId}
onChange={e => this.onSelectChange('chargePersonId', e)}
/> */}
<MultiSelect
className="point-info-input"
//defaultValues={this.renderCurrentPersonData(form.chargePersonId)}
//defaultValues={["1569413","1533588","1559667"]}
data={userData}
renderOption={item => <Option key={item.id} value={item.id}>{item.name }</Option>}
onChange={e => this.onSelectChange('chargePersonId', e)}
values={this.renderCurrentPersonData(form.chargePersonId)}
/>
<MultiSelect
className="point-info-input"
//defaultValues={this.renderCurrentPersonData(form.chargePersonId)}
//defaultValues={["1569413","1533588","1559667"]}
data={userData}
renderOption={item => <Option key={item.id} value={item.id}>{item.name}</Option>}
onChange={e => this.onSelectChange('chargePersonId', e)}
values={this.renderCurrentPersonData(form.chargePersonId)}
/>
</FormItem>
<FormItem label={<span>所属分类目录</span>} field="catalogId" {...formItemLayout}>
......
......@@ -52,7 +52,7 @@ class PointBasicInfoxq extends Component {
chargePersonId: '',
remark: '',
riskSourceId: 0
},
riskLevelList: [],
inputItemTableData: [],
......@@ -109,12 +109,12 @@ class PointBasicInfoxq extends Component {
}
onPointInfoInit(pointId) {
// 根据ID查询点信息
pointId &&
queryPointByIdAction(pointId).then(data => {
let deptId = data.chargeDeptId;
deptId && this.queryUserByDept(deptId);
this.setState({
form: data
......@@ -206,34 +206,31 @@ class PointBasicInfoxq extends Component {
}
onSelectChange = (key, value) => {
let { form } = this.state;
if('chargePersonId' == key){
if ('chargePersonId' == key) {
let str;
for(var i=0;i<value.length;i++){
if(i === 0 ){
str=value[i];
}else{
str=str+','+value[i];
for (var i = 0; i < value.length; i++) {
if (i === 0) {
str = value[i];
} else {
str = str + ',' + value[i];
}
}
form[key] = str;
console.log('chargePersonId',str);
}else{
console.log('chargePersonId', str);
} else {
form[key] = value;
}
console.log('chargePersonId',value);
console.log('chargePersonId', value);
this.setState(form);
};
onTreeExpand = expandedKeys => {
console.log('onExpand', arguments);
// if not set autoExpandParent to false, if children expanded, parent can not collapse.
// or, you can remove all expanded children keys.
this.setState({
treeConfig: {
expandedKeys,
......@@ -345,8 +342,8 @@ class PointBasicInfoxq extends Component {
queryUserByDept = deptId => {
queryUserByDeptIdAction(deptId).then(data => {
console.log('pointInfo queryUserByDept',data);
console.log('pointInfo queryUserByDept', data);
this.setState({ userData: data });
});
};
......@@ -400,28 +397,28 @@ class PointBasicInfoxq extends Component {
/**
* 查询风险等级
*/
querryRiskLevel=()=>{
gerRiskLevel().then(res=>{
console.log('pointBasicInfos',res);
const riskLevelList=res;
this.setState({riskLevelList});
querryRiskLevel = () => {
gerRiskLevel().then(res => {
console.log('pointBasicInfos', res);
const riskLevelList = res;
this.setState({ riskLevelList });
})
}
/**
* 渲染风险等级
*/
rendRiskLevel = () => {
const {riskLevelList}=this.state;
console.log('pointBasicInfos pointBasicInfos',riskLevelList);
const { riskLevelList } = this.state;
console.log('pointBasicInfos pointBasicInfos', riskLevelList);
if (!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) {
return (<div>
{
riskLevelList.map(e => {
return <Option key={e.orderNum} value={e.orderNum}>{e.dictDataValue}</Option>
})
})
}
</div>)
}
......@@ -429,26 +426,26 @@ class PointBasicInfoxq extends Component {
/**
* 渲染默认责任人
*/
renderCurrentPersonData=(data)=>{
console.log('arrayData1',data)
if(!utils.isEmpty(data) ){
let array=[];
let arrayData=data.split(',');
arrayData.map(e=>{
renderCurrentPersonData = (data) => {
console.log('arrayData1', data)
if (!utils.isEmpty(data)) {
let array = [];
let arrayData = data.split(',');
arrayData.map(e => {
array.push(e)
})
console.log('arrayData',arrayData)
console.log('array',array)
console.log('arrayData', arrayData)
console.log('array', array)
return array;
}else{
} else {
return [];
}
}
render() {
const { form, rules, catalogData, deptData, userData, riskLevelList,currentPersonData } = this.state;
console.log('form.chargePersonId',form.chargePersonId);
console.log('form.userData',userData);
const { form, rules, catalogData, deptData, userData, riskLevelList, currentPersonData } = this.state;
console.log('form.chargePersonId', form.chargePersonId);
console.log('form.userData', userData);
const formItemLayout = {
labelCol: {
xs: { span: 24 },
......@@ -470,7 +467,7 @@ class PointBasicInfoxq extends Component {
<Input className="point-info-input" disabled value={form.pointNo} maxLength="50" placeholder="" onChange={e => this.onChange('pointNo', e)} />
</FormItem>
<FormItem label={<span>点名称</span>} field="name" {...formItemLayout}>
<Input className="point-info-input" disabled value={form.name} maxLength="50" placeholder="" onChange={e => this.onChange('name', e)} />
<Input className="point-info-input" disabled value={form.name} maxLength="50" placeholder="" onChange={e => this.onChange('name', e)} />
</FormItem>
<FormItem label={<span>点类型</span>} field="isFixed" {...formItemLayout}>
<RadioGroup defaultValue="1" value={form.isFixed} onChange={e => this.onRadioChange('isFixed', e)}>
......@@ -514,14 +511,14 @@ class PointBasicInfoxq extends Component {
{/* />
</FormItem>:''} */}
<FormItem label={<span>参考位置</span>} field="address" {...formItemLayout}>
<Input value={form.address} disabled className="point-info-input" placeholder="" onChange={e => this.onChange('address', e)} />
<Input value={form.address} disabled className="point-info-input" placeholder="" onChange={e => this.onChange('address', e)} />
</FormItem>
<FormItem label={<span>3维地图坐标</span>} field="coordinates" {...formItemLayout}>
<Input value={form.coordinates} disabled className="point-info-input" placeholder="" onChange={e => this.onChange('coordinates', e)} />
<Input value={form.coordinates} disabled className="point-info-input" placeholder="" onChange={e => this.onChange('coordinates', e)} />
<span>(x,y,z)</span>
</FormItem>
<FormItem label={<span>3维地图楼层</span>} field="floor" {...formItemLayout}>
<InputNumber disabled
<InputNumber disabled
value={form.floor}
className="point-info-input"
placeholder="1"
......@@ -536,7 +533,7 @@ class PointBasicInfoxq extends Component {
</FormItem>
<FormItem label={<span>最少拍照数量</span>} field="shotMinNumber" {...formItemLayout}>
<InputNumber disabled
<InputNumber disabled
min={0}
value={form.shotMinNumber}
className="point-info-input"
......@@ -545,7 +542,7 @@ class PointBasicInfoxq extends Component {
/>
</FormItem>
<FormItem label={<span>最多拍照数量</span>} field="shotMaxNumber" {...formItemLayout}>
<InputNumber disabled
<InputNumber disabled
min={0}
value={form.shotMaxNumber}
className="point-info-input"
......@@ -554,21 +551,21 @@ class PointBasicInfoxq extends Component {
/>
</FormItem>
<FormItem label={<span>风险等级</span>} field="level" {...formItemLayout}>
<Select prefixCls="" className="point-info-input" disabled value={form.level} onChange={e => this.onSelectChange('level', e)}>
<Select prefixCls="" className="point-info-input" disabled value={form.level} onChange={e => this.onSelectChange('level', e)}>
{/* <Option value="1">1级</Option>
<Option value="2">2级</Option>
<Option value="3">3级</Option>
<Option value="4">4级</Option> */}
{
(!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) ? riskLevelList.map(e => (
(!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) ? riskLevelList.map(e => (
<Option key={e.dictDataKey} value={e.dictDataKey}>{e.dictDataValue}</Option>
)) : null
)) : null
}
</Select>
</FormItem>
<FormItem label={<span>归属区域/部门</span>} field="chargeDeptId" {...formItemLayout}>
<Select disabled
<Select disabled
className="point-info-input"
searchable
data={deptData ? deptData : []}
......@@ -586,20 +583,20 @@ class PointBasicInfoxq extends Component {
value={form.chargePersonId}
onChange={e => this.onSelectChange('chargePersonId', e)}
/> */}
<MultiSelect disabled
className="point-info-input"
//defaultValues={this.renderCurrentPersonData(form.chargePersonId)}
//defaultValues={["1569413","1533588","1559667"]}
data={userData}
renderOption={item => <Option key={item.id} value={item.id}>{item.name }</Option>}
onChange={e => this.onSelectChange('chargePersonId', e)}
values={this.renderCurrentPersonData(form.chargePersonId)}
/>
<MultiSelect disabled
className="point-info-input"
//defaultValues={this.renderCurrentPersonData(form.chargePersonId)}
//defaultValues={["1569413","1533588","1559667"]}
data={userData}
renderOption={item => <Option key={item.id} value={item.id}>{item.name}</Option>}
onChange={e => this.onSelectChange('chargePersonId', e)}
values={this.renderCurrentPersonData(form.chargePersonId)}
/>
</FormItem>
<FormItem label={<span>所属分类目录</span>} field="catalogId" {...formItemLayout}>
<TreeSelect disabled
<TreeSelect disabled
value={form.catalogId}
allowClear
className="point-info-input"
......@@ -611,7 +608,7 @@ class PointBasicInfoxq extends Component {
/>
</FormItem>
<FormItem label={<span>备注说明</span>} field="remark" {...formItemLayout}>
<TextArea disabled className="input_item_Input" rows={6} value={form.remark} disableResize onChange={e => this.onChange('remark', e)} />
<TextArea disabled className="input_item_Input" rows={6} value={form.remark} disableResize onChange={e => this.onChange('remark', e)} />
</FormItem>
</Form>
</div>
......
......@@ -87,7 +87,6 @@ class TableContent extends Component {
return col;
});
const columns = [titleCol, ...cols];
console.log(columns, JSON.stringify(columns));
return columns;
}
......
......@@ -9,7 +9,7 @@ import Table from './Table';
const ten = 10;
const mouth = 12;
/**
* 巡检完成情况月报表
* 年度巡检情况报表
*
* @class CompletionSituation
* @extends {Component}
......
......@@ -16,9 +16,10 @@ class Statistics extends Component {
{ key: '2', name: '任务安排统计分析', href: pathMapping.taskArrangement },
// { key: '3', name: '检查项目查询', href: '' },
// { key: '4', name: '检查项目统计分析', href: '' },
{ key: '5', name: '巡检完成情况月报表', href: pathMapping.completionsituation },
{ key: '5', name: '年度巡检情况报表', href: pathMapping.completionsituation },
// { key: '6', name: '巡检评分情况月报表', href: '' },
{ key: '7', name: '人员综合统计分析', href: pathMapping.personStatistics }
{ key: '7', name: '人员综合统计分析', href: pathMapping.personStatistics },
{ key: '8', name: '月度巡检情况报表', href: pathMapping.monthSituation }
// { key: '8', name: '计划执行情况查询', href: '' },
// { key: '9', name: '数字检查项日报表', href: '' },
// { key: '10', name: '数字检查项统计分析', href: '' }
......
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { DatePicker } from 'amos-antd';
import moment from 'moment';
import { Form, Button, Select, Input } from 'amos-framework';
import {
planListAction,
lineListAction,
executeStateListAction
} from './../../../../services/statisticsService';
const { MonthPicker } = DatePicker;
const FormItem = Form.Item;
const Option = Select.Option;
const FORMAT = 'YYYY-MM-DD HH:mm:ss';
/**
* 巡检情况统计分析-查询
*
* @class NewsSearch
* @extends {Component}
*/
class NewsSearch extends Component {
constructor(props) {
super(props);
this.state = {
form: {
startTime: {
name: 'startTime',
value: moment()
.startOf('month')
.format(FORMAT)
},
queryMonth: {
name: 'queryMonth',
value: moment()
.endOf('month')
.format('YYYY-MM')
},
endTime: {
name: 'endTime',
value: moment()
.endOf('month')
.format(FORMAT)
},
statisticsTyle: { name: 'statisticsTyle', value: '2' }
},
caliberList: [
{ name: '巡检计划', value: '0' },
{ name: '巡检点', value: '2' }
]
};
}
componentWillMount() {
this.handleSubmit();
}
onChange = (key, e) => {
let { form } = this.state;
form[key].value = e.target.value;
this.setState(form);
}
onDateChange = (key, date) => {
const { form } = this.state;
form[key].value = moment(date).format(FORMAT);
if (key === 'queryMonth'){
form.startTime.value = moment(date).startOf('month').format(FORMAT);
form.endTime.value = moment(date).endOf('month').format(FORMAT);
}
this.setState({ form });
}
onSelectChange = (key, value) => {
let { form } = this.state;
form[key].value = value;
this.setState(form);
}
handleSubmit = () => {
let { form } = this.state;
const obj = {};
Object.keys(form).map(e => {
obj[e] = form[e].value;
});
this.props.search(obj);
}
onResetFields = () => {
let { form } = this.state;
form.queryMonth.value = moment().format(FORMAT);
form.startTime.value = moment().startOf('month').format(FORMAT);
form.endTime.value = moment().endOf('month').format(FORMAT);
const obj = {};
Object.keys(form).map(e => {
obj[e] = form[e].value;
});
this.props.search(obj);
}
render() {
const { form, caliberList } = this.state;
const formItemLayout = {
labelCol: {
xs: { span: 24 },
sm: { span: 4 },
className: 'colspanlab'
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 14 },
className: 'colspan'
}
};
return (
<Form style={{ padding: '30px 0 0 0' }} className="basic-demo" model={form}>
<FormItem label={<span>统计口径</span>} field="statisticsTyle" {...formItemLayout}>
<Select
data={caliberList}
renderOption={item => <Option value={item.value}>{item.name}</Option>}
value={form.statisticsTyle.value}
className="search_Input"
onChange={e => this.onSelectChange('statisticsTyle', e)}
/>
</FormItem>
<FormItem label={<span>月份</span>} field="queryMonth" {...formItemLayout}>
<MonthPicker
className="search_Input"
value={moment(form.queryMonth.value)}
allowClear={false}
format="YYYY-MM"
onChange={e => this.onDateChange('queryMonth', e)}
/>
</FormItem>
<FormItem label={<span>开始日期</span>} field="startTime" {...formItemLayout}>
<DatePicker
className="search_Input"
value={moment(form.startTime.value)}
allowClear={false}
format="YYYY-MM-DD"
onChange={e => this.onDateChange('startTime', e)}
/>
</FormItem>
<FormItem label={<span>结束日期</span>} field="endTime" {...formItemLayout}>
<DatePicker
className="search_Input"
value={moment(form.endTime.value)}
allowClear={false}
format="YYYY-MM-DD"
onChange={e => this.onDateChange('endTime', e)}
/>
</FormItem>
<FormItem className="search-btn">
<Button icon="search" onClick={this.handleSubmit}>查询</Button>
<Button onClick={this.onResetFields}>重置</Button>
</FormItem>
</Form>
);
}
}
NewsSearch.propTypes = {
search: PropTypes.func
};
export default NewsSearch;
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import formatUrl from 'amos-processor/lib/utils/urlFormat';
import { Table } from 'amos-antd';
import { exportExcel } from 'UTILS/tools';
import { patrolUrls } from 'CONSTS/urlConsts';
import ToolBar from './../../../component/toolbar';
import './../../../../styles/view/patrol/statistics.scss';
import { utils } from 'amos-tool';
const dropnavs = [
{
key: '1',
text: '导出Excel',
icon: 'user',
href: 'jacascript::void(0)'
}
];
/**
* 月度巡检情况报表-表格
*
* @class TableContent
* @extends {Component}
*/
class MonthSituationTable extends Component {
constructor(props) {
super(props);
this.state = {
};
}
onExportExcel = () => {
const { searchParam } = this.props;
exportExcel({ url: patrolUrls.monthSituationExportUrl, method: 'post', body: searchParam }, '月度巡检情况报表');
}
onClickBootBar = type => {
if (type === '1') {
this.onExportExcel();
}
};
renderTitle = (titles) => {
let titleCol = {
title: '巡检日期',
dataIndex: '0',
key: 'month',
className: 'uant-table-thead',
width: 25,
render: (text, record)=><strong>{record.month}</strong>
};
let index = 0;
let cols = titles && titles.map( e => {
let children = new Array();
index = index + 1;
children.push({
title: '计划巡检次数',
dataIndex: index,
key: `planTaskCount${e.key}`,
width: 20,
render: (text, record) => {
let num = utils.isEmpty(record[`planTaskCount${e.key}`]) ? 0 : record[`planTaskCount${e.key}`];
return <strong>{num}</strong>;
}
});
index = index + 1;
children.push({
title: '实际巡检次数',
dataIndex: index,
key: `checkCount${e.key}`,
width: 20,
render: (text, record) => {
let num = utils.isEmpty(record[`checkCount${e.key}`]) ? 0 : record[`checkCount${e.key}`];
return <strong>{num}</strong>;
}
});
index = index + 1;
children.push({
title: '漏检次数',
dataIndex: index,
key: `missed${e.key}`,
width: 20,
render: (text, record) => {
let num = utils.isEmpty(record[`missed${e.key}`]) ? 0 : record[`missed${e.key}`];
return <strong>{num}</strong>;
}
});
index = index + 1;
children.push({
title: '异常次数',
dataIndex: index,
key: `faild${e.key}`,
width: 20,
render: (text, record) => {
let num = utils.isEmpty(record[`faild${e.key}`]) ? 0 : record[`faild${e.key}`];
return <strong>{num}</strong>;
}
});
let col = {
title: `${e.label}`,
children
};
return col;
});
const columns = [titleCol, ...cols];
return columns;
}
render() {
const { data, titles } = this.props;
const _pagination_ = false;
return (
<div className="patrol-page-table">
<ToolBar dropnavs={dropnavs} callBack={this.onClickBootBar} />
<div className="completion-situation-table">
<Table
rowKey={(record, index) => record.index}
columns={this.renderTitle(titles)}
pagination={_pagination_}
bordered
dataSource={data}
scroll={{ x: true, y: 500 }}
/>
</div>
</div>
);
}
}
MonthSituationTable.propTypes = {
searchParam: PropTypes.array,
data: PropTypes.any,
titles: PropTypes.array
};
export default MonthSituationTable;
import React, { Component } from 'react';
import SplitterLayout from './../../../component/SplitLayout';
import {
monthSituationAction
} from './../../../../services/statisticsService';
import Search from './Search';
import Table from './Table';
/**
* 巡检情况统计分析
*
* @class InspectionSituation
* @extends {Component}
*/
class MonthSituation extends Component {
constructor(props) {
super(props);
this.state = {
tableData: [],
searchParam: [],
titles: []
};
}
onQueryTableData = () => {
const { searchParam } = this.state;
monthSituationAction(searchParam).then(d => {
this.setState({ tableData: d.content, titles: d.titles });
});
}
onSearchDataSyn = (searchParam) => {
this.setState({ searchParam }, this.onQueryTableData);
};
render() {
const { tableData, searchParam, titles } = this.state;
return (
<div className="patrol-page-content">
<SplitterLayout>
<Search search={this.onSearchDataSyn} />
</SplitterLayout>
<Table data={tableData} searchParam={searchParam} titles={titles} />
</div>
);
}
}
export default MonthSituation;
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