Commit 91e763fb authored by 吴俊凯's avatar 吴俊凯

巡检增加业务报表导出功能

parent 8d497755
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
securityBaseURI: 'http://172.16.10.72:10005/', securityBaseURI: 'http://172.16.10.72:10005/',
//APP图片 //APP图片
picURI: 'http://172.16.11.20:8080', picURI: 'http://172.16.11.20:8080',
//业务表导出地址
ureportURI: ' http://172.16.11.41:8099/renren-admin/ureport/excel',
}, },
// websocket 地址 // websocket 地址
wsURI: { wsURI: {
......
This diff is collapsed.
...@@ -6,13 +6,13 @@ import { browserHistory } from 'amos-react-router'; ...@@ -6,13 +6,13 @@ import { browserHistory } from 'amos-react-router';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { pathMapping } from './../../../routes/customRoutes'; import { pathMapping } from './../../../routes/customRoutes';
import ToolBar from './../../component/toolbar'; import ToolBar from './../../component/toolbar';
import { batDelCatalogTreeAction,btnAuthAction } from '../../../services/checkService'; import { batDelCatalogTreeAction, btnAuthAction } from '../../../services/checkService';
const inputUrl = () => pathMapping.catalogTreeInput; const inputUrl = () => pathMapping.catalogTreeInput;
const dropnavs1 = { key: '1', text: '添加', icon: 'add', href: 'jacascript::void(0)', permissionCode: 'catalogtree', isWriteable: true }; const dropnavs1 = { key: '1', text: '添加', icon: 'add', href: 'jacascript::void(0)', permissionCode: 'catalogtree', isWriteable: true };
const dropnavs2 = { key: '2', text: '修改', icon: 'edit', href: 'jacascript::void(0)', permissionCode: 'catalogtree', isWriteable: true }; const dropnavs2 = { key: '2', text: '修改', icon: 'edit', href: 'jacascript::void(0)', permissionCode: 'catalogtree', isWriteable: true };
const dropnavs3 = { key: '3', text: '删除', icon: 'delete', href: 'jacascript::void(0)', permissionCode: 'catalogtree', isWriteable: true }; const dropnavs3 = { key: '3', text: '删除', icon: 'delete', href: 'jacascript::void(0)', permissionCode: 'catalogtree', isWriteable: true };
const getColumns = () => { const getColumns = () => {
return [ return [
...@@ -80,7 +80,7 @@ class CheckTable extends Component { ...@@ -80,7 +80,7 @@ class CheckTable extends Component {
selectedRows: [], selectedRows: [],
selectedRowKeys: [], selectedRowKeys: [],
data: [], data: [],
dropnavs:[] dropnavs: []
}; };
} }
...@@ -89,34 +89,26 @@ class CheckTable extends Component { ...@@ -89,34 +89,26 @@ class CheckTable extends Component {
*/ */
componentWillMount = () => { componentWillMount = () => {
this.reloadButtonAuth(); this.reloadButtonAuth();
}; };
reloadButtonAuth = () => { reloadButtonAuth = () => {
// const _path = this.calcRoutes(); // const _path = this.calcRoutes();
btnAuthAction('/main/patrol/catalogtree').then(data => { btnAuthAction('/main/patrol/catalogtree').then(data => {
let { dropnavs } = this.state; let { dropnavs } = this.state;
if(data){ if (data) {
if ('tj' in data && data.tj.hasPermission) {
if("tj" in data&&data.tj.hasPermission){ dropnavs.push(dropnavs1);
}
dropnavs.push( dropnavs1); if ('xg' in data && data.xg.hasPermission) {
} dropnavs.push(dropnavs2);
if("xg" in data&&data.xg.hasPermission){ }
dropnavs.push( dropnavs2); if ('sc' in data && data.sc.hasPermission) {
dropnavs.push(dropnavs3);
} }
if("sc" in data&&data.sc.hasPermission){
dropnavs.push( dropnavs3);
} }
this.setState({ dropnavs });
}
this.setState({ dropnavs});
}); });
} };
/** /**
* 分页设置参数 * 分页设置参数
*/ */
...@@ -182,8 +174,7 @@ class CheckTable extends Component { ...@@ -182,8 +174,7 @@ class CheckTable extends Component {
// 确定删除 // 确定删除
batDelCatalogTreeAction(ids).then( batDelCatalogTreeAction(ids).then(
data => { data => {
debugger if (data === null) {
if(data===null){
AmosAlert.success('提示', '删除成功'); AmosAlert.success('提示', '删除成功');
} else { } else {
AmosAlert.error('提示', '删除分类失败:请先删除子节点'); AmosAlert.error('提示', '删除分类失败:请先删除子节点');
...@@ -238,7 +229,7 @@ class CheckTable extends Component { ...@@ -238,7 +229,7 @@ class CheckTable extends Component {
}; };
render() { render() {
let { pagination, isChecked, modal, selectedRowKeys,dropnavs } = this.state; let { pagination, isChecked, modal, selectedRowKeys, dropnavs } = this.state;
let { dataList, fetchData, count } = this.props; let { dataList, fetchData, count } = this.props;
let defaultPageConfig = this.pageConfig; let defaultPageConfig = this.pageConfig;
return ( return (
......
...@@ -11,8 +11,6 @@ import { patrolUrls } from './../../../consts/urlConsts'; ...@@ -11,8 +11,6 @@ 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';
const ls = _amosTool.Store.lsTool; const ls = _amosTool.Store.lsTool;
const apiKey = SysConsts.api_key; const apiKey = SysConsts.api_key;
const token = SysConsts.token; const token = SysConsts.token;
...@@ -36,6 +34,7 @@ const dropnavs3 = { ...@@ -36,6 +34,7 @@ const dropnavs3 = {
{ 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 dropnavs4 = { key: '4', text: '业务报表', icon: 'file', href: 'jacascript::void(0)', permissionCode: 'check', isWriteable: true };
const getColumns = () => { const getColumns = () => {
return [ return [
...@@ -155,11 +154,11 @@ const getHeaders = () => { ...@@ -155,11 +154,11 @@ const getHeaders = () => {
'Content-Type': 'application/json; charset=utf-8', 'Content-Type': 'application/json; charset=utf-8',
'X-Api-Key': _amosTool.Store.getCookieByName(apiKey), 'X-Api-Key': _amosTool.Store.getCookieByName(apiKey),
'X-Access-Token': ls.read(token), 'X-Access-Token': ls.read(token),
'token': ls.read(token), token: ls.read(token),
'appKey': 'YH-PATROL', appKey: 'YH-PATROL',
'product': 'YH-PATROL_WEB' product: 'YH-PATROL_WEB'
} };
} };
/** /**
* 计划执行 * 计划执行
...@@ -202,7 +201,6 @@ class CheckTable extends Component { ...@@ -202,7 +201,6 @@ class CheckTable extends Component {
this.reloadButtonAuth(); this.reloadButtonAuth();
}; };
/****按钮权限 */ /****按钮权限 */
reloadButtonAuth = () => { reloadButtonAuth = () => {
...@@ -210,20 +208,23 @@ class CheckTable extends Component { ...@@ -210,20 +208,23 @@ class CheckTable extends Component {
btnAuthAction('/main/patrol/check').then(data => { btnAuthAction('/main/patrol/check').then(data => {
let { dropnavs } = this.state; let { dropnavs } = this.state;
if (data) { if (data) {
if ("jiancha" in data && data.jiancha.hasPermission) { if ('jiancha' in data && data.jiancha.hasPermission) {
dropnavs.push(dropnavs1); dropnavs.push(dropnavs1);
} }
if ("delete" in data && data.delete.hasPermission) { if ('delete' in data && data.delete.hasPermission) {
dropnavs.push(dropnavs2); dropnavs.push(dropnavs2);
} }
if ("user" in data && data.user.hasPermission) { if ('user' in data && data.user.hasPermission) {
dropnavs.push(dropnavs3); dropnavs.push(dropnavs3);
} }
if ('ureport' in data && data.ureport.hasPermission) {
dropnavs.push(dropnavs4);
}
} }
this.setState({ dropnavs }); this.setState({ dropnavs });
}); });
} };
/** /**
* 分页设置参数 * 分页设置参数
...@@ -316,6 +317,8 @@ class CheckTable extends Component { ...@@ -316,6 +317,8 @@ class CheckTable extends Component {
this.exportSelectImgs(); this.exportSelectImgs();
} else if (type === '3-4') { } else if (type === '3-4') {
this.exportAllDataImgs(); this.exportAllDataImgs();
} else if (type === '4') {
this.onClickIcon('check');
} }
window.setLoading && window.setLoading(false); window.setLoading && window.setLoading(false);
}; };
...@@ -331,18 +334,19 @@ class CheckTable extends Component { ...@@ -331,18 +334,19 @@ class CheckTable extends Component {
fetch(url, { fetch(url, {
method: 'get', method: 'get',
headers: getHeaders() 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);
});
}) })
.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);
});
})
.catch(e => { .catch(e => {
_amosTool.Log.error(e.message); _amosTool.Log.error(e.message);
}); });
...@@ -359,18 +363,19 @@ class CheckTable extends Component { ...@@ -359,18 +363,19 @@ class CheckTable extends Component {
fetch(url, { fetch(url, {
method: 'get', method: 'get',
headers: getHeaders() 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);
});
}) })
.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);
});
})
.catch(e => { .catch(e => {
_amosTool.Log.error(e.message); _amosTool.Log.error(e.message);
}); });
...@@ -476,12 +481,14 @@ class CheckTable extends Component { ...@@ -476,12 +481,14 @@ class CheckTable extends Component {
// }); // });
}; };
onClickIcon = (value) => { onClickIcon = value => {
const { showType } = this.state; const { showType } = this.state;
if (showType === value){ value = '';} if (showType === value) {
value = '';
}
this.props.setShowType(value); this.props.setShowType(value);
this.setState({ showType: value }); this.setState({ showType: value });
} };
render() { render() {
let { pagination, dropnavs, isChecked, selectedRowKeys } = this.state; let { pagination, dropnavs, isChecked, selectedRowKeys } = this.state;
...@@ -491,12 +498,18 @@ class CheckTable extends Component { ...@@ -491,12 +498,18 @@ class CheckTable extends Component {
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="right-btn">
{/* <div className="row-btn">
<img src="/src/assets/fsc/check/export.png" onClick={() => this.onClickIcon('check')} />
<span>&nbsp;&nbsp;业务报表</span>
</div> */}
<div className="row-btn"> <div className="row-btn">
<img src="/src/assets/fsc/check/export.png" onClick={() => this.onClickIcon('export')} /><span>&nbsp;&nbsp;报表生成</span> <img src="/src/assets/fsc/check/export.png" onClick={() => this.onClickIcon('export')} />
<span>&nbsp;&nbsp;报表生成</span>
</div> </div>
<div className="row-btn"> <div className="row-btn">
<img src="/src/assets/fsc/check/filter.png" onClick={() => this.onClickIcon('search')} /><span>&nbsp;&nbsp;筛选条件</span> <img src="/src/assets/fsc/check/filter.png" onClick={() => this.onClickIcon('search')} />
<span>&nbsp;&nbsp;筛选条件</span>
</div> </div>
</div> </div>
<AmosGridTable <AmosGridTable
...@@ -524,5 +537,4 @@ CheckTable.propTypes = { ...@@ -524,5 +537,4 @@ CheckTable.propTypes = {
setShowType: PropTypes.func setShowType: PropTypes.func
}; };
export default CheckTable; export default CheckTable;
...@@ -3,6 +3,8 @@ import moment from 'moment'; ...@@ -3,6 +3,8 @@ 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 ExportSearch from './ExportSearch';
import ExportCheckSearch from './ExportCheckSearch';
import { queryCheckInfoAction } from '../../../services/checkService'; import { queryCheckInfoAction } from '../../../services/checkService';
import SplitterLayout from './SplitLayout'; import SplitterLayout from './SplitLayout';
...@@ -37,7 +39,7 @@ class Check extends Component { ...@@ -37,7 +39,7 @@ class Check extends Component {
} }
if (pointNo) { if (pointNo) {
searchParam.push({ name: 'pointNo', value: pointNo }); searchParam.push({ name: 'pointNo', value: pointNo });
this.setState({ searchParam, pointNo }); this.setState({ searchParam, pointNo });
} }
}; };
...@@ -75,24 +77,38 @@ class Check extends Component { ...@@ -75,24 +77,38 @@ class Check extends Component {
}); });
} }
setShowType = (value) => { setShowType = value => {
this.setState({ showType: value }); this.setState({ showType: value });
} };
render() { render() {
let { statisticsData, totalCount, planId, pointNo, searchParam, showType } = this.state; let { statisticsData, totalCount, planId, pointNo, searchParam, showType } = this.state;
console.log(showType);
return ( return (
<div className="patrol-page-content"> <div className="patrol-page-content">
{showType === 'search' && {showType === 'search' && (
<SplitterLayout title='查询条件' > <SplitterLayout title="查询条件">
<CheckSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} /> <CheckSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} />
</SplitterLayout>} </SplitterLayout>
{showType === 'export' && )}
<SplitterLayout title='报表生成'> {showType === 'export' && (
<ExportSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} /> <SplitterLayout title="报表生成">
</SplitterLayout> <ExportSearch search={this.onSearchDataSyn} planId={planId} pointNo={pointNo} />
} </SplitterLayout>
<CheckTable count={totalCount} fetchData={this.questStatistiscData} searchParam={searchParam} dataList={statisticsData} planId={planId} setShowType={this.setShowType} /> )}
{showType === 'check' && (
<SplitterLayout title="业务报表">
<ExportCheckSearch />
</SplitterLayout>
)}
<CheckTable
count={totalCount}
fetchData={this.questStatistiscData}
searchParam={searchParam}
dataList={statisticsData}
planId={planId}
setShowType={this.setShowType}
/>
</div> </div>
); );
} }
......
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