Commit 6f7b5f66 authored by xinglei's avatar xinglei

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

parent 9c6487e8
...@@ -32,10 +32,10 @@ export const secExtUrl = { ...@@ -32,10 +32,10 @@ export const secExtUrl = {
allRoleUrl: completePrefix(securityBaseURI,'role/all-roles'),//所有角色 allRoleUrl: completePrefix(securityBaseURI,'role/all-roles'),//所有角色
// 新权限接口 // 新权限接口
//systemMenusUrl: completePrefix(securityBaseURI, `${secExVerson}/permission/tree/menu?code={code}&userId={userId}`), // 获取当前系统所有菜单 //systemMenusUrl: completePrefix(securityBaseURI, `${secExVerson}/permission/tree/menu?code={code}&userId={userId}`), // 获取当前系统所有菜单
systemMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree`), // 获取当前系统所有菜单(新) systemMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree`), // 获取当前系统所有菜单(新)
loginUrl: completePrefix(securityBaseURI, `${secExVerson}/system/login`), // 登陆获取accessToken loginUrl: completePrefix(securityBaseURI, `${secExVerson}/system/login`), // 登陆获取accessToken
// 获取指定菜单下授权的按钮权限 get // 获取指定菜单下授权的按钮权限 get
...@@ -45,7 +45,7 @@ export const secExtUrl = { ...@@ -45,7 +45,7 @@ export const secExtUrl = {
// permissionsMenusUrl: completePrefix(securityBaseURI, `${secExVerson}/permission/tree/curruser`), // 登陆用户系统权限菜单 // permissionsMenusUrl: completePrefix(securityBaseURI, `${secExVerson}/permission/tree/curruser`), // 登陆用户系统权限菜单
//permissionsMenusUrl: completePrefix(securityUrlWithVersion, '/permission/tree/{roleSeq}'), // 登陆用户系统权限菜单---TODO新版待修改 //permissionsMenusUrl: completePrefix(securityUrlWithVersion, '/permission/tree/{roleSeq}'), // 登陆用户系统权限菜单---TODO新版待修改
permissionsMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree/role?roleSeq={roleSeq}`), // 登陆用户系统权限菜单---TODO新版待修改(新) permissionsMenusUrl: completePrefix(securityBaseURI, `privilege/${secExVerson}/permission/tree/role?roleSeq={roleSeq}`), // 登陆用户系统权限菜单---TODO新版待修改(新)
loginOutUrl: completePrefix(securityBaseURI, `${secExVerson}/system/loginOutr`), // 登陆用户系统权限菜单 loginOutUrl: completePrefix(securityBaseURI, `${secExVerson}/system/loginOutr`), // 登陆用户系统权限菜单
curUserMenusUrl: completePrefix(securityBaseURI,'privilege/v1/permission/tree/me'),//查询当前用户菜单 curUserMenusUrl: completePrefix(securityBaseURI,'privilege/v1/permission/tree/me'),//查询当前用户菜单
...@@ -94,9 +94,9 @@ export const patrolUrls = { ...@@ -94,9 +94,9 @@ export const patrolUrls = {
taskHandleUrl: completePrefix(baseURI, 'api/task/handleTask?taskIds={ids}&status={status}'), taskHandleUrl: completePrefix(baseURI, 'api/task/handleTask?taskIds={ids}&status={status}'),
taskDetailUrl: completePrefix(baseURI, 'api/task/queryTask?taskID={id}'), taskDetailUrl: completePrefix(baseURI, 'api/task/queryTask?taskID={id}'),
taskAddUrl: completePrefix(baseURI, 'api/task/addTask'), 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'), taskFeedbackTaskUrl: completePrefix(baseURI, 'api/task/feedbackTask'),
routePageUrl: completePrefix(baseURI, 'api/route/list?pageNumber={page}&pageSize={size}'), routePageUrl: completePrefix(baseURI, 'api/route/list?pageNumber={page}&pageSize={size}'),
routeBatchDelUrl: completePrefix(baseURI, 'api/route/deleteRoute?routeIds={ids}'), routeBatchDelUrl: completePrefix(baseURI, 'api/route/deleteRoute?routeIds={ids}'),
...@@ -178,6 +178,9 @@ export const patrolUrls = { ...@@ -178,6 +178,9 @@ export const patrolUrls = {
taskCaliberListUrl: completePrefix(baseURI, 'api/common/taskgetStatisticsType'),//任务安排统计分析-获取任务统计口径集合 taskCaliberListUrl: completePrefix(baseURI, 'api/common/taskgetStatisticsType'),//任务安排统计分析-获取任务统计口径集合
personStatisticsUrl: completePrefix(baseURI, 'api/task/report/comprehensive/user?startTime={startTime}&endTime={endTime}'),//人员综合统计分析-表格 personStatisticsUrl: completePrefix(baseURI, 'api/task/report/comprehensive/user?startTime={startTime}&endTime={endTime}'),//人员综合统计分析-表格
personStatisticsExportUrl: completePrefix(baseURI, 'api/excel/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'),//巡检首页-获取公司名、巡检点数、完成/计划、累计巡检次数、未完/已完任务数和巡检点数 homeNumberUrl: completePrefix(baseURI, 'api/home/overviewData'),//巡检首页-获取公司名、巡检点数、完成/计划、累计巡检次数、未完/已完任务数和巡检点数
homeChartUrl: completePrefix(baseURI, 'api/home/getCheckData'),//巡检首页-获取12日内 实际巡检、计划巡检和漏检次数每天的数值 homeChartUrl: completePrefix(baseURI, 'api/home/getCheckData'),//巡检首页-获取12日内 实际巡检、计划巡检和漏检次数每天的数值
......
...@@ -36,6 +36,7 @@ import CompletionSituation from './../view/patrol/statistics/completionSituation ...@@ -36,6 +36,7 @@ import CompletionSituation from './../view/patrol/statistics/completionSituation
import InspectionSituation from './../view/patrol/statistics/inspectionSituation'; import InspectionSituation from './../view/patrol/statistics/inspectionSituation';
import TaskArrangement from './../view/patrol/statistics/taskArrangement'; import TaskArrangement from './../view/patrol/statistics/taskArrangement';
import PersonStatistics from './../view/patrol/statistics/personstatistics'; import PersonStatistics from './../view/patrol/statistics/personstatistics';
import MonthSituation from './../view/patrol/statistics/monthSituation';
import CheckDetail from './../view/patrol/check/checkDetail'; import CheckDetail from './../view/patrol/check/checkDetail';
/** /**
...@@ -74,6 +75,7 @@ const customRoutes = [ ...@@ -74,6 +75,7 @@ const customRoutes = [
{ path: 'inspectionSituation', parent: 'patrol', component: InspectionSituation }, { path: 'inspectionSituation', parent: 'patrol', component: InspectionSituation },
{ path: 'taskArrangement', parent: 'patrol', component: TaskArrangement }, { path: 'taskArrangement', parent: 'patrol', component: TaskArrangement },
{ path: 'personStatistics', parent: 'patrol', component: PersonStatistics }, { path: 'personStatistics', parent: 'patrol', component: PersonStatistics },
{ path: 'monthSituation', parent: 'patrol', component: MonthSituation },
{ path: '/main/patrol/checkDetail', parent: 'patrol', component: CheckDetail } { path: '/main/patrol/checkDetail', parent: 'patrol', component: CheckDetail }
]; ];
...@@ -129,6 +131,7 @@ export const pathMapping = { ...@@ -129,6 +131,7 @@ export const pathMapping = {
inspectionSituation: '/main/patrol/inspectionSituation', inspectionSituation: '/main/patrol/inspectionSituation',
taskArrangement: '/main/patrol/taskArrangement', taskArrangement: '/main/patrol/taskArrangement',
personStatistics: '/main/patrol/personStatistics', personStatistics: '/main/patrol/personStatistics',
monthSituation: '/main/patrol/monthSituation',
checkDetail: '/main/patrol/checkDetail' checkDetail: '/main/patrol/checkDetail'
}; };
/** /**
......
...@@ -62,6 +62,13 @@ export const personStatisticsAction = (data) => { ...@@ -62,6 +62,13 @@ export const personStatisticsAction = (data) => {
}; };
/** /**
* 月度巡检情况-表格
*/
export const monthSituationAction = (body) => {
return commonPost(patrolUrls.monthSituationUrl, body);
};
/**
* 巡检首页-获取公司名、巡检点数、完成/计划、累计巡检次数、未完/已完任务数和巡检点数 * 巡检首页-获取公司名、巡检点数、完成/计划、累计巡检次数、未完/已完任务数和巡检点数
*/ */
export const homeNumberAction = () => { export const homeNumberAction = () => {
......
...@@ -55,6 +55,22 @@ ...@@ -55,6 +55,22 @@
height: 100%; height: 100%;
overflow: auto; 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 { .grid-content {
height: calc(100% - 40px); height: calc(100% - 40px);
......
...@@ -2,7 +2,6 @@ export default function(data, delRequest){ ...@@ -2,7 +2,6 @@ export default function(data, delRequest){
window.setLoading && window.setLoading(false); window.setLoading && window.setLoading(false);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (data) { if (data) {
debugger
if (data.dataList || data.dataList === null){ if (data.dataList || data.dataList === null){
if(data.result==='SUCCESS'){ if(data.result==='SUCCESS'){
resolve(data.dataList); resolve(data.dataList);
......
...@@ -240,10 +240,8 @@ export const exportExcel = ({ url, method, body }, fileName) => { ...@@ -240,10 +240,8 @@ export const exportExcel = ({ url, method, body }, fileName) => {
'Content-Type': 'application/json; charset=utf-8', 'Content-Type': 'application/json; charset=utf-8',
'X-Access-Token': window.localStorage.getItem(token), 'X-Access-Token': window.localStorage.getItem(token),
'token': window.localStorage.getItem(token), 'token': window.localStorage.getItem(token),
'appKey': 'YH-PATROL', 'appKey': 'YH-PATROL',
'product': 'YH-PATROL_WEB' 'product': 'YH-PATROL_WEB'
}, },
body: body ? JSON.stringify(body) : undefined body: body ? JSON.stringify(body) : undefined
}).then((e) => { }).then((e) => {
......
...@@ -9,20 +9,19 @@ import { seachPermissionAction } from './../../../services/checkService'; ...@@ -9,20 +9,19 @@ import { seachPermissionAction } from './../../../services/checkService';
* @class ToolBar * @class ToolBar
* @extends {Component} * @extends {Component}
*/ */
class ToolBar extends Component{ class ToolBar extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
navs: [], navs: [],
isWriteable: false, isWriteable: false,
dropnavs:[] dropnavs: []
}; };
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
const { dropnavs } = nextProps; const { dropnavs } = nextProps;
if (dropnavs && dropnavs.length > 0) {
if(dropnavs&&dropnavs.length>0){
this.setState({ dropnavs: dropnavs }); this.setState({ dropnavs: dropnavs });
const permissionsMenus = window.localStorage.getItem('permissionsMenus'); const permissionsMenus = window.localStorage.getItem('permissionsMenus');
let data = []; let data = [];
...@@ -32,26 +31,20 @@ class ToolBar extends Component{ ...@@ -32,26 +31,20 @@ class ToolBar extends Component{
let children = []; let children = [];
if (data && dropnavs) { if (data && dropnavs) {
data.find(item => { data.find(item => {
if(item.permissionName === '巡检业务'){ if (item.permissionName === '巡检业务') {
children = item.children; children = item.children;
let menu = children.find(item => { let menu = children.find(item => {
if(dropnavs&&dropnavs.length>0){ if (dropnavs && dropnavs.length > 0) {
if (void 0 === dropnavs[0].frontComponent) { if (void 0 === dropnavs[0].frontComponent) {
return true; return true;
} }
return dropnavs[0].frontComponent === item.permissionCode; return dropnavs[0].frontComponent === item.permissionCode;
} }
}); });
if (!menu) { if (!menu) {
this.setState({ navs: [], isWriteable: false }); this.setState({ navs: [], isWriteable: false });
return; return;
} }
let navs = dropnavs.filter(item => { let navs = dropnavs.filter(item => {
if (!item.isWriteable) { if (!item.isWriteable) {
return true; return true;
...@@ -64,14 +57,9 @@ class ToolBar extends Component{ ...@@ -64,14 +57,9 @@ class ToolBar extends Component{
} }
}); });
} }
} }
} }
componentWillMount() { componentWillMount() {
const { dropnavs } = this.state; const { dropnavs } = this.state;
const permissionsMenus = window.localStorage.getItem('permissionsMenus'); const permissionsMenus = window.localStorage.getItem('permissionsMenus');
...@@ -82,26 +70,20 @@ class ToolBar extends Component{ ...@@ -82,26 +70,20 @@ class ToolBar extends Component{
let children = []; let children = [];
if (data && dropnavs) { if (data && dropnavs) {
data.find(item => { data.find(item => {
if(item.permissionName === '巡检业务'){ if (item.permissionName === '巡检业务') {
children = item.children; children = item.children;
let menu = children.find(item => { let menu = children.find(item => {
if(dropnavs&&dropnavs.length>0){ if (dropnavs && dropnavs.length > 0) {
if (void 0 === dropnavs[0].frontComponent) { if (void 0 === dropnavs[0].frontComponent) {
return true; return true;
} }
return dropnavs[0].frontComponent === item.permissionCode; return dropnavs[0].frontComponent === item.permissionCode;
} }
}); });
if (!menu) { if (!menu) {
this.setState({ navs: [], isWriteable: false }); this.setState({ navs: [], isWriteable: false });
return; return;
} }
let navs = dropnavs.filter(item => { let navs = dropnavs.filter(item => {
if (!item.isWriteable) { if (!item.isWriteable) {
return true; return true;
...@@ -146,7 +128,7 @@ class ToolBar extends Component{ ...@@ -146,7 +128,7 @@ class ToolBar extends Component{
getMenuItems = (subSys) => { getMenuItems = (subSys) => {
let { callBack } = this.props; let { callBack } = this.props;
let items = new Array(); let items = new Array();
for ( let i = 0; i < subSys.length; i++) { for (let i = 0; i < subSys.length; i++) {
let sub = subSys[i]; let sub = subSys[i];
items.push(<Menu.Item onClick={() => callBack(sub.key)}>{sub.text}</Menu.Item>); items.push(<Menu.Item onClick={() => callBack(sub.key)}>{sub.text}</Menu.Item>);
} }
...@@ -156,15 +138,15 @@ class ToolBar extends Component{ ...@@ -156,15 +138,15 @@ class ToolBar extends Component{
getDropnav = (record) => { getDropnav = (record) => {
let arr = new Array(); let arr = new Array();
arr.push(record); 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; let { callBack } = this.props;
if (!navItem.href.startsWith('jacascript::void(0)')) { if (!navItem.href.startsWith('jacascript::void(0)')) {
return true; return true;
} }
callBack(navItem.key,navItem.href); callBack(navItem.key, navItem.href);
return false; return false;
} }
...@@ -178,7 +160,7 @@ class ToolBar extends Component{ ...@@ -178,7 +160,7 @@ class ToolBar extends Component{
render() { render() {
const { navs } = this.state; const { navs } = this.state;
let context = navs.map( item => { let context = navs.map(item => {
if (item.subSys) { if (item.subSys) {
return this.getNavMenu(item); return this.getNavMenu(item);
} else if (!item.href.startsWith('jacascript::void(0)')) { } else if (!item.href.startsWith('jacascript::void(0)')) {
......
...@@ -9,7 +9,7 @@ import { pathMapping } from './../../../routes/customRoutes'; ...@@ -9,7 +9,7 @@ import { pathMapping } from './../../../routes/customRoutes';
import AmosGridTable from '../../component/table/table/AmosGridTable'; import AmosGridTable from '../../component/table/table/AmosGridTable';
import { patrolUrls } from './../../../consts/urlConsts'; import { patrolUrls } from './../../../consts/urlConsts';
import ToolBar from './../../component/toolbar'; 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; ...@@ -22,21 +22,20 @@ const checkDetail = pathMapping.checkDetail;
const okStatusEnum = { '1': '正常', '2': '异常', '3': '漏检' }; const okStatusEnum = { '1': '正常', '2': '异常', '3': '漏检' };
const statusDataEnum = { '0': '计划外完成', '1': '按时完成', '2': '未执行' }; const statusDataEnum = { '0': '计划外完成', '1': '按时完成', '2': '未执行' };
const dropnavs1={ key: '1', text: '查看明细', icon: 'jiancha', 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 dropnavs2 = { key: '2', text: '删除记录', icon: 'delete', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: true };
const dropnavs3= { const dropnavs3 = {
key: '3', key: '3',
text: '导出记录', text: '导出记录',
icon: 'user', icon: 'user',
href: 'jacascript::void(0)', href: 'jacascript::void(0)',
subSys: [ subSys: [
{ key: '3-1', text: '导出选中数据', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false }, { 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-2', text: '导出全部数据', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false },
{ key: '3-3', 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 } { key: '3-4', text: '导出全部图片', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: false }
] ]
}; };
const getColumns = () => { const getColumns = () => {
return [ return [
...@@ -187,7 +186,8 @@ class CheckTable extends Component { ...@@ -187,7 +186,8 @@ class CheckTable extends Component {
selectedRows: [], selectedRows: [],
selectedRowKeys: [], selectedRowKeys: [],
data: [], data: [],
dropnavs:[] dropnavs: [],
showType: ''
}; };
} }
...@@ -203,40 +203,27 @@ class CheckTable extends Component { ...@@ -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 = () => { ...@@ -345,17 +332,17 @@ reloadButtonAuth = () => {
method: 'get', method: 'get',
headers: getHeaders() headers: getHeaders()
}).then(e => { }).then(e => {
e.blob().then(blob => { e.blob().then(blob => {
const a = window.document.createElement('a'); const a = window.document.createElement('a');
const downUrl = window.URL.createObjectURL(blob); const downUrl = window.URL.createObjectURL(blob);
let currDate = new Date(); let currDate = new Date();
const filename = [currDate.getTime(), 'xls']; const filename = [currDate.getTime(), 'xls'];
a.href = downUrl; a.href = downUrl;
a.download = `${decodeURI(filename[0])}.${filename[1]}`; a.download = `${decodeURI(filename[0])}.${filename[1]}`;
a.click(); a.click();
window.URL.revokeObjectURL(downUrl); window.URL.revokeObjectURL(downUrl);
}); });
}) })
.catch(e => { .catch(e => {
_amosTool.Log.error(e.message); _amosTool.Log.error(e.message);
}); });
...@@ -373,17 +360,17 @@ reloadButtonAuth = () => { ...@@ -373,17 +360,17 @@ reloadButtonAuth = () => {
method: 'get', method: 'get',
headers: getHeaders() headers: getHeaders()
}).then(e => { }).then(e => {
e.blob().then(blob => { e.blob().then(blob => {
const a = window.document.createElement('a'); const a = window.document.createElement('a');
const downUrl = window.URL.createObjectURL(blob); const downUrl = window.URL.createObjectURL(blob);
let currDate = new Date(); let currDate = new Date();
const filename = [currDate.getTime(), 'zip']; const filename = [currDate.getTime(), 'zip'];
a.href = downUrl; a.href = downUrl;
a.download = `${decodeURI(filename[0])}.${filename[1]}`; a.download = `${decodeURI(filename[0])}.${filename[1]}`;
a.click(); a.click();
window.URL.revokeObjectURL(downUrl); window.URL.revokeObjectURL(downUrl);
}); });
}) })
.catch(e => { .catch(e => {
_amosTool.Log.error(e.message); _amosTool.Log.error(e.message);
}); });
...@@ -447,8 +434,6 @@ reloadButtonAuth = () => { ...@@ -447,8 +434,6 @@ reloadButtonAuth = () => {
}); });
}; };
getDetCheckInfo = () => { getDetCheckInfo = () => {
let { selectedRows } = this.state; let { selectedRows } = this.state;
if (selectedRows === undefined || selectedRows.length <= 0) { if (selectedRows === undefined || selectedRows.length <= 0) {
...@@ -459,16 +444,16 @@ reloadButtonAuth = () => { ...@@ -459,16 +444,16 @@ reloadButtonAuth = () => {
AmosAlert.warning('提示', '至多可以选择一条巡检记录'); AmosAlert.warning('提示', '至多可以选择一条巡检记录');
return; return;
} }
// for (let i = 0; i < selectedRows.length; i++) { // for (let i = 0; i < selectedRows.length; i++) {
let id = selectedRows[0].id; let id = selectedRows[0].id;
let path = { let path = {
pathname: checkDetail, pathname: checkDetail,
state: { checkID: id } state: { checkID: id }
}; };
browserHistory.push(path); browserHistory.push(path);
// queryCheckDetailAction(id).then(data => { // queryCheckDetailAction(id).then(data => {
// this.showCheckDetail(data); // this.showCheckDetail(data);
// }); // });
// } // }
}; };
...@@ -491,14 +476,29 @@ reloadButtonAuth = () => { ...@@ -491,14 +476,29 @@ reloadButtonAuth = () => {
// }); // });
}; };
onClickIcon = (value) => {
const { showType } = this.state;
if (showType === value){ value = '';}
this.props.setShowType(value);
this.setState({ showType: value });
}
render() { render() {
let { pagination,dropnavs, isChecked, selectedRowKeys } = this.state; let { pagination, dropnavs, isChecked, selectedRowKeys } = this.state;
let { dataList, fetchData, count } = this.props; let { dataList, fetchData, count } = this.props;
let defaultPageConfig = this.pageConfig; let defaultPageConfig = this.pageConfig;
return ( return (
<div className="patrol-page-table"> <div className="patrol-page-table">
<ToolBar dropnavs={dropnavs} callBack={this.onClickBootBar} /> <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 <AmosGridTable
rowKey="id" rowKey="id"
columns={getColumns()} columns={getColumns()}
...@@ -520,6 +520,9 @@ reloadButtonAuth = () => { ...@@ -520,6 +520,9 @@ reloadButtonAuth = () => {
} }
} }
CheckTable.propTypes = {}; CheckTable.propTypes = {
setShowType: PropTypes.func
};
export default CheckTable; 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'; ...@@ -2,8 +2,9 @@ import React, { Component } from 'react';
import moment from 'moment'; import moment from 'moment';
import CheckTable from './CheckTable'; import CheckTable from './CheckTable';
import CheckSearch from './CheckSearch'; import CheckSearch from './CheckSearch';
import ExportSearch from './ExportSearch';
import { queryCheckInfoAction } from '../../../services/checkService'; import { queryCheckInfoAction } from '../../../services/checkService';
import SplitterLayout from '../../component/SplitLayout'; import SplitterLayout from './SplitLayout';
/** /**
* 巡检记录 * 巡检记录
...@@ -19,7 +20,8 @@ class Check extends Component { ...@@ -19,7 +20,8 @@ class Check extends Component {
statisticsData: [], statisticsData: [],
totalCount: 0, totalCount: 0,
planId: '', planId: '',
pointNo: '' pointNo: '',
showType: ''
}; };
} }
componentWillMount = () => { componentWillMount = () => {
...@@ -73,14 +75,24 @@ class Check extends Component { ...@@ -73,14 +75,24 @@ class Check extends Component {
}); });
} }
setShowType = (value) => {
this.setState({ showType: value });
}
render() { render() {
let { statisticsData, totalCount, planId, pointNo, searchParam } = this.state; let { statisticsData, totalCount, planId, pointNo, searchParam, showType } = this.state;
return ( return (
<div className="patrol-page-content"> <div className="patrol-page-content">
<SplitterLayout> {showType === 'search' &&
<SplitterLayout title='查询条件' >
<CheckSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} /> <CheckSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} />
</SplitterLayout>}
{showType === 'export' &&
<SplitterLayout title='报表生成'>
<ExportSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} />
</SplitterLayout> </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> </div>
); );
} }
......
...@@ -52,7 +52,7 @@ class PointBasicInfo extends Component { ...@@ -52,7 +52,7 @@ class PointBasicInfo extends Component {
chargePersonId: '', chargePersonId: '',
remark: '', remark: '',
riskSourceId: 0 riskSourceId: 0
}, },
riskLevelList: [], riskLevelList: [],
inputItemTableData: [], inputItemTableData: [],
...@@ -109,12 +109,12 @@ class PointBasicInfo extends Component { ...@@ -109,12 +109,12 @@ class PointBasicInfo extends Component {
} }
onPointInfoInit(pointId) { onPointInfoInit(pointId) {
// 根据ID查询点信息 // 根据ID查询点信息
pointId && pointId &&
queryPointByIdAction(pointId).then(data => { queryPointByIdAction(pointId).then(data => {
let deptId = data.chargeDeptId; let deptId = data.chargeDeptId;
deptId && this.queryUserByDept(deptId); deptId && this.queryUserByDept(deptId);
this.setState({ this.setState({
form: data form: data
...@@ -206,34 +206,31 @@ class PointBasicInfo extends Component { ...@@ -206,34 +206,31 @@ class PointBasicInfo extends Component {
} }
onSelectChange = (key, value) => { onSelectChange = (key, value) => {
let { form } = this.state; let { form } = this.state;
if('chargePersonId' == key){ if ('chargePersonId' == key) {
let str; let str;
for(var i=0;i<value.length;i++){ for (var i = 0; i < value.length; i++) {
if(i === 0 ){ if (i === 0) {
str=value[i]; str = value[i];
}else{ } else {
str=str+','+value[i]; str = str + ',' + value[i];
} }
} }
form[key] = str; form[key] = str;
console.log('chargePersonId',str); console.log('chargePersonId', str);
}else{ } else {
form[key] = value; form[key] = value;
} }
console.log('chargePersonId',value); console.log('chargePersonId', value);
this.setState(form); this.setState(form);
}; };
onTreeExpand = expandedKeys => { 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({ this.setState({
treeConfig: { treeConfig: {
expandedKeys, expandedKeys,
...@@ -345,8 +342,8 @@ class PointBasicInfo extends Component { ...@@ -345,8 +342,8 @@ class PointBasicInfo extends Component {
queryUserByDept = deptId => { queryUserByDept = deptId => {
queryUserByDeptIdAction(deptId).then(data => { queryUserByDeptIdAction(deptId).then(data => {
console.log('pointInfo queryUserByDept',data); console.log('pointInfo queryUserByDept', data);
this.setState({ userData: data }); this.setState({ userData: data });
}); });
}; };
...@@ -400,28 +397,28 @@ class PointBasicInfo extends Component { ...@@ -400,28 +397,28 @@ class PointBasicInfo extends Component {
/** /**
* 查询风险等级 * 查询风险等级
*/ */
querryRiskLevel=()=>{ querryRiskLevel = () => {
gerRiskLevel().then(res=>{ gerRiskLevel().then(res => {
console.log('pointBasicInfos',res); console.log('pointBasicInfos', res);
const riskLevelList=res; const riskLevelList = res;
this.setState({riskLevelList}); this.setState({ riskLevelList });
}) })
} }
/** /**
* 渲染风险等级 * 渲染风险等级
*/ */
rendRiskLevel = () => { rendRiskLevel = () => {
const {riskLevelList}=this.state; const { riskLevelList } = this.state;
console.log('pointBasicInfos pointBasicInfos',riskLevelList); console.log('pointBasicInfos pointBasicInfos', riskLevelList);
if (!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) { if (!utils.isEmpty(riskLevelList) && utils.isArray(riskLevelList)) {
return (<div> return (<div>
{ {
riskLevelList.map(e => { riskLevelList.map(e => {
return <Option key={e.orderNum} value={e.orderNum}>{e.dictDataValue}</Option> return <Option key={e.orderNum} value={e.orderNum}>{e.dictDataValue}</Option>
}) })
} }
</div>) </div>)
} }
...@@ -429,26 +426,26 @@ class PointBasicInfo extends Component { ...@@ -429,26 +426,26 @@ class PointBasicInfo extends Component {
/** /**
* 渲染默认责任人 * 渲染默认责任人
*/ */
renderCurrentPersonData=(data)=>{ renderCurrentPersonData = (data) => {
console.log('arrayData1',data) console.log('arrayData1', data)
if(!utils.isEmpty(data) ){ if (!utils.isEmpty(data)) {
let array=[]; let array = [];
let arrayData=data.split(','); let arrayData = data.split(',');
arrayData.map(e=>{ arrayData.map(e => {
array.push(e) array.push(e)
}) })
console.log('arrayData',arrayData) console.log('arrayData', arrayData)
console.log('array',array) console.log('array', array)
return array; return array;
}else{ } else {
return []; return [];
} }
} }
render() { render() {
const { form, rules, catalogData, deptData, userData, riskLevelList,currentPersonData } = this.state; const { form, rules, catalogData, deptData, userData, riskLevelList, currentPersonData } = this.state;
console.log('form.chargePersonId',form.chargePersonId); console.log('form.chargePersonId', form.chargePersonId);
console.log('form.userData',userData); console.log('form.userData', userData);
const formItemLayout = { const formItemLayout = {
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
...@@ -560,11 +557,11 @@ class PointBasicInfo extends Component { ...@@ -560,11 +557,11 @@ class PointBasicInfo extends Component {
<Option value="3">3级</Option> <Option value="3">3级</Option>
<Option value="4">4级</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> <Option key={e.dictDataKey} value={e.dictDataKey}>{e.dictDataValue}</Option>
)) : null )) : null
} }
</Select> </Select>
</FormItem> </FormItem>
<FormItem label={<span>归属区域/部门</span>} field="chargeDeptId" {...formItemLayout}> <FormItem label={<span>归属区域/部门</span>} field="chargeDeptId" {...formItemLayout}>
...@@ -586,16 +583,16 @@ class PointBasicInfo extends Component { ...@@ -586,16 +583,16 @@ class PointBasicInfo extends Component {
value={form.chargePersonId} value={form.chargePersonId}
onChange={e => this.onSelectChange('chargePersonId', e)} onChange={e => this.onSelectChange('chargePersonId', e)}
/> */} /> */}
<MultiSelect <MultiSelect
className="point-info-input" className="point-info-input"
//defaultValues={this.renderCurrentPersonData(form.chargePersonId)} //defaultValues={this.renderCurrentPersonData(form.chargePersonId)}
//defaultValues={["1569413","1533588","1559667"]} //defaultValues={["1569413","1533588","1559667"]}
data={userData} data={userData}
renderOption={item => <Option key={item.id} value={item.id}>{item.name }</Option>} renderOption={item => <Option key={item.id} value={item.id}>{item.name}</Option>}
onChange={e => this.onSelectChange('chargePersonId', e)} onChange={e => this.onSelectChange('chargePersonId', e)}
values={this.renderCurrentPersonData(form.chargePersonId)} values={this.renderCurrentPersonData(form.chargePersonId)}
/> />
</FormItem> </FormItem>
<FormItem label={<span>所属分类目录</span>} field="catalogId" {...formItemLayout}> <FormItem label={<span>所属分类目录</span>} field="catalogId" {...formItemLayout}>
......
This diff is collapsed.
...@@ -87,7 +87,6 @@ class TableContent extends Component { ...@@ -87,7 +87,6 @@ class TableContent extends Component {
return col; return col;
}); });
const columns = [titleCol, ...cols]; const columns = [titleCol, ...cols];
console.log(columns, JSON.stringify(columns));
return columns; return columns;
} }
......
...@@ -9,7 +9,7 @@ import Table from './Table'; ...@@ -9,7 +9,7 @@ import Table from './Table';
const ten = 10; const ten = 10;
const mouth = 12; const mouth = 12;
/** /**
* 巡检完成情况月报表 * 年度巡检情况报表
* *
* @class CompletionSituation * @class CompletionSituation
* @extends {Component} * @extends {Component}
......
...@@ -16,9 +16,10 @@ class Statistics extends Component { ...@@ -16,9 +16,10 @@ class Statistics extends Component {
{ key: '2', name: '任务安排统计分析', href: pathMapping.taskArrangement }, { key: '2', name: '任务安排统计分析', href: pathMapping.taskArrangement },
// { key: '3', name: '检查项目查询', href: '' }, // { key: '3', name: '检查项目查询', href: '' },
// { key: '4', name: '检查项目统计分析', href: '' }, // { key: '4', name: '检查项目统计分析', href: '' },
{ key: '5', name: '巡检完成情况月报表', href: pathMapping.completionsituation }, { key: '5', name: '年度巡检情况报表', href: pathMapping.completionsituation },
// { key: '6', name: '巡检评分情况月报表', href: '' }, // { 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: '8', name: '计划执行情况查询', href: '' },
// { key: '9', name: '数字检查项日报表', href: '' }, // { key: '9', name: '数字检查项日报表', href: '' },
// { key: '10', 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