diff --git a/web/client/src/sections/quanju/index.js b/web/client/src/sections/quanju/index.js
new file mode 100644
index 00000000..c7296b0c
--- /dev/null
+++ b/web/client/src/sections/quanju/index.js
@@ -0,0 +1,15 @@
+'use strict';
+
+import reducers from './reducers';
+import routes from './routes';
+import actions from './actions';
+import { getNavItem } from './nav-item';
+
+export default {
+ key: 'example2',
+ name: '书写示例',
+ reducers: reducers,
+ routes: routes,
+ actions: actions,
+ getNavItem: getNavItem
+};
\ No newline at end of file
diff --git a/web/client/src/sections/quanju/nav-item.js b/web/client/src/sections/quanju/nav-item.js
new file mode 100644
index 00000000..74bdd2a2
--- /dev/null
+++ b/web/client/src/sections/quanju/nav-item.js
@@ -0,0 +1,16 @@
+import React from 'react';
+import { Link } from 'react-router-dom';
+import { Menu } from 'antd';
+import { SettingOutlined } from '@ant-design/icons';
+
+const SubMenu = Menu.SubMenu;
+
+export function getNavItem(user, dispatch) {
+ return (
+
} title={'举个栗子'}>
+
+ 举个棒子2
+
+
+ );
+}
\ No newline at end of file
diff --git a/web/client/src/sections/quanju/reducers/index.js b/web/client/src/sections/quanju/reducers/index.js
new file mode 100644
index 00000000..7ed10886
--- /dev/null
+++ b/web/client/src/sections/quanju/reducers/index.js
@@ -0,0 +1,5 @@
+'use strict';
+
+export default {
+
+}
\ No newline at end of file
diff --git a/web/client/src/sections/quanju/routes.js b/web/client/src/sections/quanju/routes.js
new file mode 100644
index 00000000..cb7dd73a
--- /dev/null
+++ b/web/client/src/sections/quanju/routes.js
@@ -0,0 +1,21 @@
+'use strict';
+import { Example, Build } from './containers';
+
+export default [{
+ type: 'outer',
+ route: {
+ path: '/quanju',
+ key: 'quanju',
+ breadcrumb: '栗子222',
+ exact: false,
+ component: Example,
+ // 不设置 component 则面包屑禁止跳转
+ // childRoutes: [{
+ // path: '/e2',
+ // key: 'e2',
+ // exact: false,
+ // component: Build,
+ // breadcrumb: '棒子',
+ // }]
+ }
+}];
\ No newline at end of file
diff --git a/web/client/src/sections/quanju/style.less b/web/client/src/sections/quanju/style.less
new file mode 100644
index 00000000..33234528
--- /dev/null
+++ b/web/client/src/sections/quanju/style.less
@@ -0,0 +1,3 @@
+#example:hover {
+ font-size: larger;
+}
\ No newline at end of file
diff --git a/web/client/src/sections/report/actions/compile.js b/web/client/src/sections/report/actions/compile.js
new file mode 100644
index 00000000..339bca22
--- /dev/null
+++ b/web/client/src/sections/report/actions/compile.js
@@ -0,0 +1,37 @@
+'use strict';
+
+import { basicAction } from '@peace/utils'
+import { ApiTable } from '$utils'
+
+export function reportRectify (timeRange) {
+ return dispatch => basicAction({
+ type: 'get',
+ dispatch: dispatch,
+ actionType: 'GET_REPORT_RECTIFY',
+ url: `${ApiTable.getReportRectify}?startTime=${timeRange ? timeRange[0] : ''}&endTime=${timeRange ? timeRange[1] : ''}`,
+ msg: {},
+ reducer: { name: 'reportRectify' }
+ });
+}
+
+export function reportRectifyDetail (day, depId) {
+ return dispatch => basicAction({
+ type: 'get',
+ dispatch: dispatch,
+ actionType: 'GET_REPORT_RECTIFY_DETAIL',
+ url: `${ApiTable.getReportRectifyDetail}?day=${day}&depId=${depId}`,
+ msg: {},
+ reducer: { name: 'reportRectifyDetail' }
+ });
+}
+
+export function compileReportRectifyDetail (data) {
+ return dispatch => basicAction({
+ type: 'post',
+ dispatch: dispatch,
+ data,
+ actionType: 'COMPILE_REPORT_RECTIFY_DETAIL',
+ url: `${ApiTable.compileReportRectifyDetail}`,
+ msg: { option: '保存信息' },
+ });
+}
\ No newline at end of file
diff --git a/web/client/src/sections/report/actions/config.js b/web/client/src/sections/report/actions/config.js
new file mode 100644
index 00000000..d8a66a79
--- /dev/null
+++ b/web/client/src/sections/report/actions/config.js
@@ -0,0 +1,59 @@
+'use strict';
+
+import { basicAction } from '@peace/utils'
+import { ApiTable } from '$utils'
+
+export function allAreas (orgId) {
+ return dispatch => basicAction({
+ type: 'get',
+ dispatch: dispatch,
+ actionType: 'GET_ALL_AREAS',
+ url: `${ApiTable.allAreas}`,
+ msg: {},
+ reducer: { name: 'allAreas' }
+ });
+}
+
+export function addReportConfig (data) {
+ return dispatch => basicAction({
+ type: 'post',
+ dispatch: dispatch,
+ data: data,
+ actionType: 'POST_REPORT_CONFIGS',
+ url: `${ApiTable.addReportConfig}`,
+ msg: { option: '添加报表配置' },
+ });
+}
+
+export function getReportConfig () {
+ return dispatch => basicAction({
+ type: 'get',
+ dispatch: dispatch,
+ actionType: 'GET_REPORT_CONFIGS',
+ url: `${ApiTable.getReportConfig}`,
+ msg: { error: '获取报表配置失败' },
+ reducer: { name: 'reportConfig' }
+ });
+}
+
+export function editReportConfig (data, configId) {
+ return dispatch => basicAction({
+ type: 'put',
+ dispatch: dispatch,
+ data: data,
+ actionType: 'EDIT_REPORT_CONFIGS',
+ url: `${ApiTable.editReportConfig.replace('{reportId}', configId)}`,
+ msg: { option: '编辑报表配置' },
+ });
+}
+
+export function delReportConfig (configId) {
+ return dispatch => basicAction({
+ type: 'del',
+ dispatch: dispatch,
+ actionType: 'DEL_REPORT_CONFIGS',
+ url: `${ApiTable.delReportConfig.replace('{reportId}', configId)}`,
+ msg: { option: '删除报表配置' },
+ });
+}
+
diff --git a/web/client/src/sections/report/actions/download.js b/web/client/src/sections/report/actions/download.js
new file mode 100644
index 00000000..3879fae4
--- /dev/null
+++ b/web/client/src/sections/report/actions/download.js
@@ -0,0 +1,26 @@
+import { basicAction } from '@peace/utils'
+import { ApiTable } from '$utils'
+
+export function getReportList(query) {
+ return dispatch => basicAction({
+ type: 'get',
+ dispatch: dispatch,
+ query: query,
+ actionType: 'GET_REPORT_LIST',
+ url: ApiTable.getReportList,
+ msg: { error: '获取报表数据失败' },
+ reducer: { name: 'reportList' }
+ });
+}
+
+export function getRegionList(query) {
+ return dispatch => basicAction({
+ type: 'get',
+ dispatch: dispatch,
+ query: query,
+ actionType: 'GET_REGION_LIST',
+ url: ApiTable.allAreas,
+ msg: { error: '获取区域数据失败' },
+ reducer: { name: 'regionList' }
+ });
+}
\ No newline at end of file
diff --git a/web/client/src/sections/report/actions/index.js b/web/client/src/sections/report/actions/index.js
new file mode 100644
index 00000000..01665ba2
--- /dev/null
+++ b/web/client/src/sections/report/actions/index.js
@@ -0,0 +1,11 @@
+'use strict';
+
+import * as config from './config'
+import * as download from './download'
+import * as compile from './compile'
+
+export default {
+ ...config,
+ ...download,
+ ...compile,
+}
\ No newline at end of file
diff --git a/web/client/src/sections/report/components/compileDrawer.js b/web/client/src/sections/report/components/compileDrawer.js
new file mode 100644
index 00000000..2b2cb107
--- /dev/null
+++ b/web/client/src/sections/report/components/compileDrawer.js
@@ -0,0 +1,118 @@
+import React, { useEffect, useState } from 'react';
+import { connect } from 'react-redux';
+import { Spin, Drawer, Button } from 'antd';
+import '../style.less';
+import { EditableProTable } from '@ant-design/pro-table';
+
+const CompileDrawer = (props) => {
+ const { dispatch, actions, user, loading, visible, checkRow, close, reportRectifyDetail, checkAction } = props
+ const [requesting, setRequesting] = useState(false)
+ const [dataSource, setDataSource] = useState([])
+ const { report } = actions
+ const isCheck = checkAction == 'check'
+
+ useEffect(() => {
+ if (checkRow.day) {
+ dispatch(report.reportRectifyDetail(checkRow.day, checkRow.depId))
+ }
+ }, [checkRow])
+
+ useEffect(() => {
+ let data = reportRectifyDetail
+ let i = 1
+ for (let d of data) {
+ d.index_ = i++
+ }
+ setDataSource(data)
+ }, [reportRectifyDetail])
+
+ return (
+
{
+ close()
+ }}
+ visible={visible}
+ width={'82%'}
+ >
+
+ r.id)
+ }}
+ toolBarRender={() => [
+ isCheck ? '' :
+
+ ]}
+ >
+
+
+
+
+ )
+}
+
+function mapStateToProps (state) {
+ const { auth, global, members, reportRectifyDetail } = state;
+ return {
+ loading: reportRectifyDetail.isRequesting,
+ user: auth.user,
+ actions: global.actions,
+ members: members.data,
+ reportRectifyDetail: reportRectifyDetail.data || []
+ };
+}
+
+export default connect(mapStateToProps)(CompileDrawer);
diff --git a/web/client/src/sections/report/components/configModal.js b/web/client/src/sections/report/components/configModal.js
new file mode 100644
index 00000000..aa5d344f
--- /dev/null
+++ b/web/client/src/sections/report/components/configModal.js
@@ -0,0 +1,124 @@
+import React, { useEffect, useRef } from 'react';
+import { connect } from 'react-redux';
+import { Spin, Button, Modal, Form, Switch } from 'antd';
+import ProForm, { ProFormText, ProFormSelect } from '@ant-design/pro-form';
+import { useState } from 'react';
+
+const ConfigModal = (props) => {
+ const { dispatch, actions, user, loading, visible, close, editData, allAreas, reportType } = props
+ const [excuteTimeOptions, setExcuteTimeOptions] = useState([])
+ const formRef = useRef()
+ const { report } = actions
+
+ useEffect(() => {
+ let excuteTimeOptions = []
+ for (let i = 0; i < 24; i++) {
+ let curT = i
+ if (curT < 10) {
+ curT = '0' + curT
+ }
+ excuteTimeOptions.push({
+ value: curT + ':00',
+ label: curT + ':00',
+ })
+ excuteTimeOptions.push({
+ value: curT + ':30',
+ label: curT + ':30',
+ })
+ }
+ setExcuteTimeOptions(excuteTimeOptions);
+ }, [])
+
+ return (
+
{
+ formRef.current.validateFields().then(v => {
+ v.excuteTime = String(v.excuteTime)
+ console.log(v);
+ dispatch(editData ? report.editReportConfig(v, editData.id) : report.addReportConfig(v)).then(res => {
+ if (res.success) {
+ dispatch(report.getReportConfig())
+ close()
+ }
+ })
+ })
+ }}
+ onCancel={() => {
+ close()
+ }}
+ >
+
+
+
+ {
+ return {
+ value: a.id,
+ label: a.name,
+ }
+ })}
+ cacheForSwr
+ name="regionId"
+ label="区域"
+ required
+ rules={[{ required: true, message: '请选择区域' }]}
+ />
+
+
+
+
+
+
+ )
+}
+
+function mapStateToProps (state) {
+ const { auth, global, allAreas } = state;
+ console.log(allAreas);
+ return {
+ user: auth.user,
+ actions: global.actions,
+ allAreas: allAreas.data || []
+ };
+}
+
+export default connect(mapStateToProps)(ConfigModal);
diff --git a/web/client/src/sections/report/containers/compile.js b/web/client/src/sections/report/containers/compile.js
new file mode 100644
index 00000000..def77e7b
--- /dev/null
+++ b/web/client/src/sections/report/containers/compile.js
@@ -0,0 +1,111 @@
+// 报表编辑
+
+import React, { useEffect, useState } from 'react';
+import { connect } from 'react-redux';
+import moment from 'moment'
+import CompileDrawer from '../components/compileDrawer'
+import { Spin, Button, DatePicker, Space, Switch } from 'antd';
+import ProTable from '@ant-design/pro-table';
+import { Func } from '$utils';
+
+const { RangePicker } = DatePicker;
+
+const Compile = (props) => {
+ const { dispatch, actions, user, loading, reportRectify } = props
+ const [searchTime, setSearchTime] = useState([moment(), moment()])
+ const [compileDrawerVis, setCompileDrawerVis] = useState(false)
+ const [checkRow, setCheckRow] = useState({})
+ const [checkAction, setCheckAction] = useState('')
+ const { report } = actions
+
+ const getReportRectify = (searchTime) => {
+ dispatch(report.reportRectify([moment(searchTime[0]).format('YYYY-MM-DD'), moment(searchTime[1]).format('YYYY-MM-DD')]))
+ }
+
+ useEffect(() => {
+ getReportRectify(searchTime)
+ }, [])
+
+ const showCompileDrawerVis = (row, action) => {
+ setCompileDrawerVis(true)
+ setCheckRow(row)
+ setCheckAction(action)
+ }
+
+ return (
+
+ {
+ return
+ }
+ }, {
+ title: '操作',
+ dataIndex: 'option',
+ render: (_, r) => {
+ return [
+
+ {/* {Func.isAuthorized("REPORT_EDIT") &&
+
+ } */}
+
+
+ ]
+ }
+ },]}
+ dataSource={reportRectify}
+ rowKey="index"
+ search={false}
+ options={false}
+ headerTitle="合用场所安全隐患排查整治汇总表"
+ toolBarRender={() => [
+ {
+ setSearchTime(date)
+ getReportRectify(dateString)
+ }}
+ />,
+ ]}
+ >
+
+
+ {
+ setCompileDrawerVis(false)
+ setCheckRow({})
+ setCheckAction('')
+
+ getReportRectify(searchTime)
+ }}
+ checkRow={checkRow}
+ checkAction={checkAction}
+ />
+
+ )
+}
+
+function mapStateToProps(state) {
+ const { auth, global, reportRectify } = state;
+ console.log(reportRectify);
+ return {
+ user: auth.user,
+ actions: global.actions,
+ loading: reportRectify.isRequesting,
+ reportRectify: reportRectify.data || []
+ };
+}
+
+export default connect(mapStateToProps)(Compile);
diff --git a/web/client/src/sections/report/containers/config.js b/web/client/src/sections/report/containers/config.js
new file mode 100644
index 00000000..40fa411b
--- /dev/null
+++ b/web/client/src/sections/report/containers/config.js
@@ -0,0 +1,157 @@
+import React, { useEffect, useState } from 'react';
+import { connect } from 'react-redux';
+import ConfigModal from '../components/configModal'
+import { Spin, Button, Space, Popconfirm, Switch } from 'antd';
+import ProTable from '@ant-design/pro-table';
+import '../style.less';
+import Pinyin from '../../../utils/pinyin'
+const reportType = [{
+ value: 1,
+ label: '县区排查整治汇总表',
+}, {
+ value: 2,
+ label: '各县区每日汇总表',
+}, {
+ value: 3,
+ label: '隐患场所汇总表',
+},]
+var pinyin = null
+var as = null
+var bs = null
+const Config = (props) => {
+ const { dispatch, actions, loading, reportConfig, allAreas } = props
+ const [configModalVis, setConfigModalVis] = useState(false)
+ const [editData, setEditData] = useState(null)
+ const { report } = actions
+ useEffect(() => {
+ dispatch(report.getReportConfig())
+ dispatch(report.allAreas())
+
+ }, [])
+ useEffect(()=>{
+ pinyin=new Pinyin()
+ })
+ return (
+
+ {
+ let regionOne = allAreas.find(item => item.id == a.regionId)
+ let regionTwo = allAreas.find(item => item.id == b.regionId)
+
+ if (regionOne) {
+ as = pinyin.getCamelChars(regionOne.name).toLowerCase()
+
+ } if (regionTwo) {
+ bs = pinyin.getCamelChars(regionTwo.name).toLowerCase()
+
+ } else {
+ return ''
+ }
+ let codeOne=as.substr(0,1).charCodeAt()
+ let codeTwo=bs.substr(0,1).charCodeAt()
+ return codeOne-codeTwo
+ },
+ render: (_, row, index, action) => {
+ let curRegion = allAreas.find(a => a.id == row.regionId)
+ return curRegion ? curRegion.name : ''
+ },
+ }, {
+ title: '类型',
+ dataIndex: 'reportType',
+
+ render: (_, r) => {
+ let curType = reportType.find(t => t.value == r.reportTypeId)
+ return curType ? curType.label : ''
+ },
+
+ }, {
+ title: '生成时间',
+ dataIndex: 'index',
+ render: (_, row) => {
+ return `每日 ${row.excuteTime.indexOf(':') > -1 ? row.excuteTime : row.excuteTime + ':00'}`
+ }
+ }, {
+ title: '启用状态',
+ dataIndex: 'isEnable',
+ render: (_, row) => {
+ return
+
+ }
+ }, {
+ title: '操作',
+ dataIndex: 'option',
+ render: (_, row) => {
+ return [
+
+
+ {
+ dispatch(report.delReportConfig(row.id)).then(res => {
+ if (res.success) {
+ dispatch(report.getReportConfig())
+ }
+ })
+ }}
+ >
+
+
+
+ ]
+ }
+ },]}
+ dataSource={reportConfig}
+ rowKey="id"
+ search={false}
+ options={false}
+ toolBarRender={() => [
+ ,
+ ]}
+ >
+
+
+ {
+ configModalVis ?
+ {
+ setConfigModalVis(false)
+ setEditData(null)
+ }}
+ reportType={reportType}
+ editData={editData}
+ /> : ''
+ }
+
+ )
+}
+
+function mapStateToProps(state) {
+ const { auth, global, reportConfig, allAreas } = state;
+ return {
+ loading: reportConfig.isRequesting,
+ user: auth.user,
+ actions: global.actions,
+ reportConfig: reportConfig.data || [],
+ allAreas: allAreas.data || []
+ };
+}
+
+export default connect(mapStateToProps)(Config);
diff --git a/web/client/src/sections/report/containers/download.js b/web/client/src/sections/report/containers/download.js
new file mode 100644
index 00000000..ff379d21
--- /dev/null
+++ b/web/client/src/sections/report/containers/download.js
@@ -0,0 +1,129 @@
+import React, { useEffect } from 'react';
+import { connect } from 'react-redux';
+import { Spin, Button } from 'antd';
+import ProTable from '@ant-design/pro-table';
+import '../style.less';
+import moment from 'moment';
+import { Func } from '$utils';
+
+const Download = (props) => {
+ const { dispatch, actions, reportList, regionList, user } = props
+
+ useEffect(() => {
+ dispatch(actions.report.getRegionList());
+ }, []);
+
+ const columns = [{
+ title: '报表名称',
+ dataIndex: 'reportName',
+ formItemProps: {
+ label: null,
+ },
+ fieldProps: {
+ placeholder: '输入报表名称'
+ }
+ }, {
+ title: '区域名称',
+ dataIndex: 'regionName',
+ valueType: 'select',
+ initialValue: -1,
+ fieldProps: {
+ label: null,
+ options: [{
+ label: '全部',
+ value: -1
+ }].concat(regionList)
+ },
+ order: 5,
+ render: (dom, record) => {
+ return record.department ? record.department.name : null
+ }
+ }, {
+ title: '类型',
+ dataIndex: 'reportType',
+ hideInSearch: true,
+ render: (dom, record) => {
+ return record.reportType ? record.reportType.name : null
+ }
+ }, {
+ title: '生成时间',
+ dataIndex: 'creatTime',
+ valueType: 'dateTimeRange',
+ order: 4,
+ render: (dom, record) => {
+ return moment(record.creatTime).format('YYYY-MM-DD HH:mm')
+ }
+ }]
+ if (Func.isAuthorized("REPORT_DOWN")) {
+ columns.push({
+ title: '操作',
+ key: 'option',
+ hideInSearch: true,
+ render: (dom, record) => {
+ // const ApiRoot = localStorage.getItem('tyApiRoot');
+ const filePathArr = record.filePath.split('/')
+
+ const fileName = filePathArr.pop()
+ // console.log(fileName);
+ return [
+ //
下载
+
+ 下载
+
+ ]
+ }
+ })
+ }
+
+ return (
+
+ {
+ const query = {
+ limit: params.pageSize,
+ offset: params.pageSize * (params.current - 1),
+ creatTime: params.creatTime,
+ reportName: params.reportName,
+ regionName: params.regionName
+ }
+ const res = await dispatch(actions.report.getReportList(query));
+ return {
+ ...res,
+ total: res.payload.data ? res.payload.data.count : 0
+ }
+ }}
+ >
+
+
+ )
+}
+
+function mapStateToProps (state) {
+ const { auth, global, reportList, regionList } = state;
+ const { count, rows } = reportList.data || {};
+ let regions = [];
+ if (regionList.data && regionList.data.length > 0) {
+ regions = regionList.data.map(v => {
+ return {
+ label: v.name,
+ value: v.id,
+ }
+ });
+ }
+ return {
+ user: auth.user,
+ actions: global.actions,
+ reportList: rows || [],
+ regionList: regions
+ };
+}
+
+export default connect(mapStateToProps)(Download);
\ No newline at end of file
diff --git a/web/client/src/sections/report/containers/index.js b/web/client/src/sections/report/containers/index.js
new file mode 100644
index 00000000..0b3cead7
--- /dev/null
+++ b/web/client/src/sections/report/containers/index.js
@@ -0,0 +1,7 @@
+'use strict';
+
+import Config from './config';
+import Download from './download';
+import Compile from './compile'
+
+export { Config, Download, Compile };
\ No newline at end of file
diff --git a/web/client/src/sections/report/index.js b/web/client/src/sections/report/index.js
new file mode 100644
index 00000000..68dac209
--- /dev/null
+++ b/web/client/src/sections/report/index.js
@@ -0,0 +1,15 @@
+'use strict';
+
+import reducers from './reducers';
+import routes from './routes';
+import actions from './actions';
+import { getNavItem } from './nav-item';
+
+export default {
+ key: 'report',
+ name: '报表管理',
+ reducers: reducers,
+ routes: routes,
+ actions: actions,
+ getNavItem: getNavItem
+};
\ No newline at end of file
diff --git a/web/client/src/sections/report/nav-item.js b/web/client/src/sections/report/nav-item.js
new file mode 100644
index 00000000..29c57396
--- /dev/null
+++ b/web/client/src/sections/report/nav-item.js
@@ -0,0 +1,35 @@
+import React from 'react';
+import { Link } from 'react-router-dom';
+import { Menu } from 'antd';
+import { FileTextOutlined } from '@ant-design/icons';
+import { Func } from '$utils';
+import { push } from 'react-router-redux';
+
+
+const SubMenu = Menu.SubMenu;
+
+export function getNavItem(user, dispatch) {
+ if (user.type != 1 && user.type != 2) {
+ dispatch(push('/fillion/infor'));
+ return null
+ }
+ if (!Func.isAuthorized("REPORT_MANAGE")) {
+ return null
+ }
+ return (
+
} title={'报表管理'}>
+ {Func.isAuthorized("REPROT_CONFIG") &&
+ 报表配置
+ }
+ {Func.isAuthorized("REPORT_DOWN") &&
+ 报表下载
+ }
+ {Func.isAuthorized("REPORT_LIST") &&
+
+ 整治汇总表
+
+ }
+
+
+ );
+}
\ No newline at end of file
diff --git a/web/client/src/sections/report/reducers/index.js b/web/client/src/sections/report/reducers/index.js
new file mode 100644
index 00000000..7ed10886
--- /dev/null
+++ b/web/client/src/sections/report/reducers/index.js
@@ -0,0 +1,5 @@
+'use strict';
+
+export default {
+
+}
\ No newline at end of file
diff --git a/web/client/src/sections/report/routes.js b/web/client/src/sections/report/routes.js
new file mode 100644
index 00000000..1d55966d
--- /dev/null
+++ b/web/client/src/sections/report/routes.js
@@ -0,0 +1,33 @@
+'use strict';
+import { Config, Download, Compile } from './containers';
+
+export default [{
+ type: 'inner',
+ route: {
+ path: '/report',
+ key: 'report',
+ breadcrumb: '报表管理',
+ menuSelectKeys: ['config'],
+ menuOpenKeys: ['report'],
+ // 不设置 component 则面包屑禁止跳转
+ childRoutes: [{
+ path: '/config',
+ key: 'reportConfig',
+ component: Config,
+ menuSelectKeys:['reportConfig'],
+ breadcrumb: '报表配置',
+ }, {
+ path: '/download',
+ key: 'reportDownload',
+ menuSelectKeys:['reportDownload'],
+ component: Download,
+ breadcrumb: '报表下载',
+ }, {
+ path: '/compile',
+ key: 'reportCompile',
+ menuSelectKeys:['reportCompile'],
+ component: Compile,
+ breadcrumb: '整治汇总表',
+ }]
+ }
+}];
\ No newline at end of file
diff --git a/web/client/src/sections/report/style.less b/web/client/src/sections/report/style.less
new file mode 100644
index 00000000..33234528
--- /dev/null
+++ b/web/client/src/sections/report/style.less
@@ -0,0 +1,3 @@
+#example:hover {
+ font-size: larger;
+}
\ No newline at end of file