From dacf49b4095f6e79e1bf1f41a44ef81a28bbe077 Mon Sep 17 00:00:00 2001 From: wangyue Date: Wed, 20 Jul 2022 17:14:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/client/assets/color.less | 18 +- web/client/src/app.js | 7 +- .../src/layout/containers/layout/index.js | 14 +- .../src/sections/auth/containers/login.js | 2 +- .../src/sections/example/actions/example.js | 15 + .../src/sections/example/actions/index.js | 7 + .../sections/example/containers/example.js | 43 ++ .../src/sections/example/containers/index.js | 5 + web/client/src/sections/example/index.js | 15 + web/client/src/sections/example/nav-item.js | 16 + .../src/sections/example/reducers/index.js | 5 + web/client/src/sections/example/routes.js | 18 + web/client/src/sections/example/style.less | 3 + .../sections/fillion/components/inforTable.js | 405 ++++++------------ .../src/sections/fillion/containers/index.js | 10 +- .../src/sections/fillion/containers/infor.js | 29 +- web/client/src/sections/fillion/nav-item.js | 21 +- web/client/src/sections/fillion/routes.js | 59 +-- .../src/sections/middleground/actions/data.js | 30 ++ .../sections/middleground/actions/index.js | 7 + .../middleground/components/dateModal.js | 118 +++++ .../sections/middleground/components/index.js | 5 + .../sections/middleground/containers/data.js | 157 +++++++ .../sections/middleground/containers/index.js | 5 + web/client/src/sections/middleground/index.js | 15 + .../src/sections/middleground/nav-item.js | 18 + .../sections/middleground/reducers/index.js | 5 + .../src/sections/middleground/routes.js | 14 + .../src/sections/middleground/style.less | 86 ++++ .../sections/organization/containers/index.js | 5 +- .../src/sections/organization/nav-item.js | 11 +- .../src/sections/organization/routes.js | 10 +- .../src/sections/quanju/actions/example.js | 15 + .../src/sections/quanju/actions/index.js | 7 + .../src/sections/quanju/containers/example.js | 53 +++ .../quanju/containers/footer/build/index.js | 8 + .../quanju/containers/footer/build/left.js | 0 .../quanju/containers/footer/build/right.js | 0 .../containers/footer/conserve/index.js | 8 + .../quanju/containers/footer/guanli/index.js | 8 + .../quanju/containers/footer/index.js | 29 ++ .../footer/leadership/centerLeft.js | 2 +- .../footer/leadership/centerRight.js | 19 + .../centerRight/center-right-bottom.js | 14 + .../centerRight/center-right-center.js | 14 + .../centerRight/center-right-centertop.js | 14 + .../centerRight/center-right-top.js | 15 + .../centerleft/center-left-bottom.js | 14 + .../centerleft/center-left-center.js | 16 + .../centerleft/center-left-centertop.js | 14 + .../leadership/centerleft/center-left-top.js | 15 + .../containers/footer/leadership/index.js | 18 + .../containers/footer/leadership/left.js | 2 +- .../footer/leadership/left/left-bottom.js | 2 +- .../footer/leadership/left/left-center.js | 2 +- .../footer/leadership/left/left-top.js | 14 + .../containers/footer/leadership/right.js | 2 +- .../footer/leadership/right/right-bottom.js | 14 + .../footer/leadership/right/right-center.js | 9 + .../footer/leadership/right/right-top.js | 13 + .../containers/footer/operation/index.js | 8 + .../sections/quanju/containers/heand/index.js | 3 +- .../quanju/containers/heand/style.less | 12 +- .../src/sections/quanju/containers/index.js | 6 + .../quanju/containers/public/font.css | 4 + .../quanju/containers/public/module.js | 6 +- web/client/src/sections/quanju/index.js | 15 + web/client/src/sections/quanju/nav-item.js | 16 + .../src/sections/quanju/reducers/index.js | 5 + web/client/src/sections/quanju/routes.js | 21 + web/client/src/sections/quanju/style.less | 3 + .../src/sections/report/actions/compile.js | 37 ++ .../src/sections/report/actions/config.js | 59 +++ .../src/sections/report/actions/download.js | 26 ++ .../src/sections/report/actions/index.js | 11 + .../report/components/compileDrawer.js | 118 +++++ .../sections/report/components/configModal.js | 124 ++++++ .../src/sections/report/containers/compile.js | 111 +++++ .../src/sections/report/containers/config.js | 157 +++++++ .../sections/report/containers/download.js | 129 ++++++ .../src/sections/report/containers/index.js | 7 + web/client/src/sections/report/index.js | 15 + web/client/src/sections/report/nav-item.js | 35 ++ .../src/sections/report/reducers/index.js | 5 + web/client/src/sections/report/routes.js | 33 ++ web/client/src/sections/report/style.less | 3 + 86 files changed, 2069 insertions(+), 419 deletions(-) create mode 100644 web/client/src/sections/example/actions/example.js create mode 100644 web/client/src/sections/example/actions/index.js create mode 100644 web/client/src/sections/example/containers/example.js create mode 100644 web/client/src/sections/example/containers/index.js create mode 100644 web/client/src/sections/example/index.js create mode 100644 web/client/src/sections/example/nav-item.js create mode 100644 web/client/src/sections/example/reducers/index.js create mode 100644 web/client/src/sections/example/routes.js create mode 100644 web/client/src/sections/example/style.less create mode 100644 web/client/src/sections/middleground/actions/data.js create mode 100644 web/client/src/sections/middleground/actions/index.js create mode 100644 web/client/src/sections/middleground/components/dateModal.js create mode 100644 web/client/src/sections/middleground/components/index.js create mode 100644 web/client/src/sections/middleground/containers/data.js create mode 100644 web/client/src/sections/middleground/containers/index.js create mode 100644 web/client/src/sections/middleground/index.js create mode 100644 web/client/src/sections/middleground/nav-item.js create mode 100644 web/client/src/sections/middleground/reducers/index.js create mode 100644 web/client/src/sections/middleground/routes.js create mode 100644 web/client/src/sections/middleground/style.less create mode 100644 web/client/src/sections/quanju/actions/example.js create mode 100644 web/client/src/sections/quanju/actions/index.js create mode 100644 web/client/src/sections/quanju/containers/example.js create mode 100644 web/client/src/sections/quanju/containers/footer/build/index.js create mode 100644 web/client/src/sections/quanju/containers/footer/build/left.js create mode 100644 web/client/src/sections/quanju/containers/footer/build/right.js create mode 100644 web/client/src/sections/quanju/containers/footer/conserve/index.js create mode 100644 web/client/src/sections/quanju/containers/footer/guanli/index.js create mode 100644 web/client/src/sections/quanju/containers/footer/index.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerRight.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-bottom.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-center.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-centertop.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-top.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-center.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-centertop.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-top.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/index.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/right/right-center.js create mode 100644 web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js create mode 100644 web/client/src/sections/quanju/containers/footer/operation/index.js create mode 100644 web/client/src/sections/quanju/containers/index.js create mode 100644 web/client/src/sections/quanju/containers/public/font.css create mode 100644 web/client/src/sections/quanju/index.js create mode 100644 web/client/src/sections/quanju/nav-item.js create mode 100644 web/client/src/sections/quanju/reducers/index.js create mode 100644 web/client/src/sections/quanju/routes.js create mode 100644 web/client/src/sections/quanju/style.less create mode 100644 web/client/src/sections/report/actions/compile.js create mode 100644 web/client/src/sections/report/actions/config.js create mode 100644 web/client/src/sections/report/actions/download.js create mode 100644 web/client/src/sections/report/actions/index.js create mode 100644 web/client/src/sections/report/components/compileDrawer.js create mode 100644 web/client/src/sections/report/components/configModal.js create mode 100644 web/client/src/sections/report/containers/compile.js create mode 100644 web/client/src/sections/report/containers/config.js create mode 100644 web/client/src/sections/report/containers/download.js create mode 100644 web/client/src/sections/report/containers/index.js create mode 100644 web/client/src/sections/report/index.js create mode 100644 web/client/src/sections/report/nav-item.js create mode 100644 web/client/src/sections/report/reducers/index.js create mode 100644 web/client/src/sections/report/routes.js create mode 100644 web/client/src/sections/report/style.less diff --git a/web/client/assets/color.less b/web/client/assets/color.less index 7c103107..ff4253c6 100644 --- a/web/client/assets/color.less +++ b/web/client/assets/color.less @@ -174,7 +174,7 @@ button::-moz-focus-inner, [type='submit']::-moz-focus-inner {border-style: none;} fieldset {border: 0;} legend {color: inherit;} -mark {background-color: #feffe6;} +mark {background-color: color(~`colorPalette("@{skeleton-to-color}", 1)`);} ::selection {color: #fff;background: @primary-color;} .anticon {color: inherit;} .ant-fade-enter, .ant-fade-appear {animation-fill-mode: both;} @@ -1710,23 +1710,23 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;} .ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;} .ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;} -.ant-tag-orange {color: #d46b08;background: #fff7e6;border-color: #ffd591;} +.ant-tag-orange {color: #d46b08;background: color(~`colorPalette("@{select-background}", 3)`);border-color: #ffd591;} .ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;} -.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;} +.ant-tag-yellow {color: #d4b106;background: color(~`colorPalette("@{skeleton-to-color}", 1)`);border-color: #fffb8f;} .ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;} .ant-tag-gold {color: #d48806;background: #fffbe6;border-color: #ffe58f;} .ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;} -.ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;} +.ant-tag-cyan {color: #08979c;background: color(~`colorPalette("@{comment-author-time-color}", 3)`);border-color: #87e8de;} .ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;} -.ant-tag-lime {color: #7cb305;background: #fcffe6;border-color: #eaff8f;} +.ant-tag-lime {color: #7cb305;background: color(~`colorPalette("@{item-active-bg}", 1)`);border-color: #eaff8f;} .ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;} .ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;} .ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;} -.ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{cascader-bg}", 1)`);border-color: #91d5ff;} +.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;} .ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;} -.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{select-background}", 2)`);border-color: #adc6ff;} +.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{modal-content-bg}", 1)`);border-color: #adc6ff;} .ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;} -.ant-tag-purple {color: #531dab;background: #f9f0ff;border-color: #d3adf7;} +.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{disabled-color}", 2)`);border-color: #d3adf7;} .ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;} .ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;} .ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;} @@ -1963,7 +1963,7 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography .ant-upload-list-picture .ant-upload-list-item-error, .ant-upload-list-picture-card .ant-upload-list-item-error {border-color: #ff4d4f;} .ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;} .ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;} -.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{cascader-bg}", 1)`)'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{cascader-bg}", 1)`)'] {fill: @error-color-deprecated-bg;} +.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;} .ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] {fill: #ff4d4f;} .ant-upload-list-picture-card .ant-upload-list-item-info::before {background-color: rgba(0, 0, 0, 0.5);} .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {color: rgba(255, 255, 255, 0.85);} diff --git a/web/client/src/app.js b/web/client/src/app.js index 8be356bd..bae8fe06 100644 --- a/web/client/src/app.js +++ b/web/client/src/app.js @@ -3,8 +3,11 @@ import React, { useEffect } from 'react'; import Layout from './layout'; import Auth from './sections/auth'; - +import Report from './sections/report'; +import Example from './sections/example'; +import Quanju from './sections/quanju'; import Organization from './sections/organization' +import Middleground from './sections/middleground'; import Fillion from './sections/fillion' @@ -18,7 +21,7 @@ const App = props => { return ( ) } diff --git a/web/client/src/layout/containers/layout/index.js b/web/client/src/layout/containers/layout/index.js index e445b15e..4b85bb3f 100644 --- a/web/client/src/layout/containers/layout/index.js +++ b/web/client/src/layout/containers/layout/index.js @@ -8,7 +8,7 @@ import { connect } from 'react-redux'; import { message, Layout, Breadcrumb, Badge } from 'antd'; import Sider from '../../components/sider'; import { getDepMessage } from "../../../sections/organization/actions/user" -// import { getFundamental } from "../../../sections/middleground/actions/data" +import { getFundamental } from "../../../sections/middleground/actions/data" import Header from '../../components/header'; import Footer from '../../components/footer'; import Breadcrumbs from './breadcrumb'; @@ -60,12 +60,12 @@ const LayoutContainer = props => { }); scrollbar = new PerfectScrollbar('#page-content', { suppressScrollX: true }); }, []) - // useEffect(() => { - // // 获取数据 - // dispatch(getFundamental()).then(res => { - // setDatas(res) - // }) - // }, [true]) + useEffect(() => { + // 获取数据 + dispatch(getFundamental()).then(res => { + setDatas(res) + }) + }, [true]) useEffect(() => { NProgress.done(); if (!user || !user.authorized) { diff --git a/web/client/src/sections/auth/containers/login.js b/web/client/src/sections/auth/containers/login.js index 7b4a98bb..13a01a91 100644 --- a/web/client/src/sections/auth/containers/login.js +++ b/web/client/src/sections/auth/containers/login.js @@ -59,7 +59,7 @@ const Login = props => {
-

四好公路

+

智慧应急

diff --git a/web/client/src/sections/example/actions/example.js b/web/client/src/sections/example/actions/example.js new file mode 100644 index 00000000..b9b2ffbd --- /dev/null +++ b/web/client/src/sections/example/actions/example.js @@ -0,0 +1,15 @@ +'use strict'; + +import { basicAction } from '@peace/utils' +import { ApiTable } from '$utils' + +export function getMembers(orgId) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + actionType: 'GET_MEMBERS', + url: `${ApiTable.getEnterprisesMembers.replace('{enterpriseId}', orgId)}`, + msg: { error: '获取用户列表失败' }, + reducer: { name: 'members' } + }); +} diff --git a/web/client/src/sections/example/actions/index.js b/web/client/src/sections/example/actions/index.js new file mode 100644 index 00000000..090c73f2 --- /dev/null +++ b/web/client/src/sections/example/actions/index.js @@ -0,0 +1,7 @@ +'use strict'; + +import * as example from './example' + +export default { + ...example +} \ No newline at end of file diff --git a/web/client/src/sections/example/containers/example.js b/web/client/src/sections/example/containers/example.js new file mode 100644 index 00000000..483cb1da --- /dev/null +++ b/web/client/src/sections/example/containers/example.js @@ -0,0 +1,43 @@ +import React, { useEffect } from 'react'; +import { connect } from 'react-redux'; +import { Spin, Card } from 'antd'; +import '../style.less'; +import ProTable, { TableDropdown } from '@ant-design/pro-table'; + +const Example = (props) => { + const { dispatch, actions, user, loading } = props + + useEffect(() => { + dispatch(actions.example.getMembers(user.orgId)) + }, []) + + return ( + +
+

STYLE EXAMPLE

+
+ + + +
+ ) +} + +function mapStateToProps(state) { + const { auth, global, members } = state; + return { + loading: members.isRequesting, + user: auth.user, + actions: global.actions, + members: members.data + }; +} + +export default connect(mapStateToProps)(Example); diff --git a/web/client/src/sections/example/containers/index.js b/web/client/src/sections/example/containers/index.js new file mode 100644 index 00000000..19e6695d --- /dev/null +++ b/web/client/src/sections/example/containers/index.js @@ -0,0 +1,5 @@ +'use strict'; + +import Example from './example'; + +export { Example }; \ No newline at end of file diff --git a/web/client/src/sections/example/index.js b/web/client/src/sections/example/index.js new file mode 100644 index 00000000..92c4b452 --- /dev/null +++ b/web/client/src/sections/example/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: 'example', + name: '书写示例', + reducers: reducers, + routes: routes, + actions: actions, + getNavItem: getNavItem +}; \ No newline at end of file diff --git a/web/client/src/sections/example/nav-item.js b/web/client/src/sections/example/nav-item.js new file mode 100644 index 00000000..845c1aa1 --- /dev/null +++ b/web/client/src/sections/example/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={'举个栗子'}> + + 举个棒子 + + + ); +} \ No newline at end of file diff --git a/web/client/src/sections/example/reducers/index.js b/web/client/src/sections/example/reducers/index.js new file mode 100644 index 00000000..7ed10886 --- /dev/null +++ b/web/client/src/sections/example/reducers/index.js @@ -0,0 +1,5 @@ +'use strict'; + +export default { + +} \ No newline at end of file diff --git a/web/client/src/sections/example/routes.js b/web/client/src/sections/example/routes.js new file mode 100644 index 00000000..591e4ce8 --- /dev/null +++ b/web/client/src/sections/example/routes.js @@ -0,0 +1,18 @@ +'use strict'; +import { Example, } from './containers'; + +export default [{ + type: 'inner', + route: { + path: '/example', + key: 'example', + breadcrumb: '栗子', + // 不设置 component 则面包屑禁止跳转 + childRoutes: [{ + path: '/e1', + key: 'e1', + component: Example, + breadcrumb: '棒子', + }] + } +}]; \ No newline at end of file diff --git a/web/client/src/sections/example/style.less b/web/client/src/sections/example/style.less new file mode 100644 index 00000000..33234528 --- /dev/null +++ b/web/client/src/sections/example/style.less @@ -0,0 +1,3 @@ +#example:hover { + font-size: larger; +} \ No newline at end of file diff --git a/web/client/src/sections/fillion/components/inforTable.js b/web/client/src/sections/fillion/components/inforTable.js index 58dc18bf..d7c55160 100644 --- a/web/client/src/sections/fillion/components/inforTable.js +++ b/web/client/src/sections/fillion/components/inforTable.js @@ -1,8 +1,8 @@ import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; -import { Spin, Button, Popconfirm, Badge } from 'antd'; +import { Spin, Button, Popconfirm, TreeSelect } from 'antd'; import ProTable from '@ant-design/pro-table'; -import './protable.less' + import moment from 'moment'; import { getReportStatistic } from "../actions/infor" const InForTable = (props) => { @@ -16,295 +16,137 @@ const InForTable = (props) => { useEffect(() => { setRegionId(user.departmentId) }, [user]) - - const columns = - [ - { - title: '检测点名称', - dataIndex: 'placeName', - fixed: 'left', - width: 120, - options: 1, - backgroundColor: "#ffffff", - fieldProps: { - onChange: (value, cs) => { - setSitename(value.currentTarget.value) - }, - placeholder: '请输入检测点名称进行搜索', - getPopupContainer: (triggerNode) => triggerNode.parentNode, - }, + useEffect(() => { + setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]) + }, [depData]) + const onChange = (value) => { + // setRegionName(value) + setRegionId(value) + } + const columns = [ + { + title: '场所名称', + dataIndex: 'placeName', + formItemProps: { + label: '场所名称', }, - { - title: '车牌号', - // search: false, - dataIndex: 'containers1', - - fixed: 'left', - width: 120, - render: (dom, record) => { - return record.address + fieldProps: { + onChange: (value, cs) => { + setSitename(value.currentTarget.value) }, - fieldProps: { - placeholder: '请输入车牌号进行搜索', - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } + placeholder: '请输入场所名称进行搜索', + getPopupContainer: (triggerNode) => triggerNode.parentNode, }, - { - title: '车轴数', - // search: false, - dataIndex: 'containers2', - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - placeholder: '请输入车轴数进行搜索', - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } + }, + { + title: '场所地址', + search: false, + dataIndex: 'time', + valueType: 'dateRange', + initialValue: day, + order: 4, + render: (dom, record) => { + return record.address }, - { - title: '超限率(%)', - // search: false, - dataIndex: 'containers3', - // valueType: 'dateRange', - // initialValue: day, - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - placeholder: '请输入超限率进行搜索', - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - - }, { - title: '超限重量(kg)', - search: false, - dataIndex: 'containers4', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '车货总重(kg)', - search: false, - dataIndex: 'containers5', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '车货限重(kg)', - search: false, - dataIndex: 'containers6', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '检测时间', - // search: false, - key: 'since', - dataIndex: 'createdAt', - valueType: 'dateTime', - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '经营业户名称', - search: false, - dataIndex: 'containers8', - valueType: 'dateRange', - initialValue: day, - - width: 120, - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '经营业户地址', - search: false, - dataIndex: 'containers9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '通知人', - search: false, - dataIndex: 'containers10', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '通知方式', - search: false, - dataIndex: 'containers11', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '通知结果(打不通、表示不来、不是当事人)', - search: false, - dataIndex: 'containers12', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '处理时间', - search: false, - dataIndex: 'time9', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '扣分', - search: false, - dataIndex: 'containers13', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } - }, { - title: '罚款', - search: false, - dataIndex: 'containers14', - valueType: 'dateRange', - initialValue: day, - - width: 140, - - render: (dom, record) => { - return record.address - }, - fieldProps: { - getPopupContainer: (triggerNode) => triggerNode.parentNode, - } + fieldProps: { + getPopupContainer: (triggerNode) => triggerNode.parentNode, + } + }, + { + title: '隐患场所', + dataIndex: 'regionName', + valueType: 'select', + initialValue: -1, + fieldProps: { + label: null, + onChange: (value, cs) => { + setPlaceType(value); + }, + options: [{ + + label: '全部', + value: -1 + }, + { + label: '隐患场所', + value: 0 + }, { + label: '非隐患场所', + value: 1 + }, { + label: '非合用场所', + value: 2 + },], + getPopupContainer: (triggerNode) => triggerNode.parentNode, }, - { - title: '操作', - dataIndex: 'creatTime', - valueType: 'dateTimeRange', - hideInSearch: true, - width: 120, - fixed: 'right', - render: (dom, record) => { - return
- + order: 5, + render: (dom, record) => { + let flag = "是" + if (record.hiddenDangerItem12 == null) { + flag = / } + if (record.hiddenDangerItem12 && record.correctiveAction == null && record.punishment == null) { + flag = + } + return flag + } + }, + { + title: '排查日期', + dataIndex: 'time', + valueType: 'dateRange', + initialValue: day, + order: 4, + fieldProps: { + onChange: (value, cs) => { + setDay(cs) + }, + getPopupContainer: (triggerNode) => triggerNode.parentNode, }, - { - key: "direction", - hideInTable: true, - dataIndex: "direction", - order: 6, - renderFormItem: (item, { type, defaultRender, ...rest }, form) => { - return ( -
- -
- - - ); - }, - }, - ] + render: (dom, record) => { + return [moment(record.time).format('YYYY-MM-DD HH:mm:ss'),] + } + }, + { + title: '操作', + dataIndex: 'creatTime', + valueType: 'dateTimeRange', + hideInSearch: true, + render: (dom, record) => { + return + } + }, + ] return ( -
+

区域:

+ { + return depData + }} + expandedKeys={["title"]} + notFoundContent={ + depLoading ? +

+ +

: +

暂无数据

+ } + getPopupContainer={(triggerNode) => triggerNode.parentNode} + /> +
{ finishedProductTable = c; }} style={{ width: "100% ", overflow: "auto", height: '760px' }} - rowKey='id' + rowKey="id" onReset={(v) => { const { id } = depMessage[0] console.log(id) @@ -320,7 +162,7 @@ const InForTable = (props) => { }, }} columns={columns} - + options={false} dataSource={(counts || {}).rows || []} request={async (params) => { const query = { @@ -352,7 +194,6 @@ const InForTable = (props) => { ], }} - >
diff --git a/web/client/src/sections/fillion/containers/index.js b/web/client/src/sections/fillion/containers/index.js index 98920698..3cfa6ecf 100644 --- a/web/client/src/sections/fillion/containers/index.js +++ b/web/client/src/sections/fillion/containers/index.js @@ -1,12 +1,6 @@ 'use strict'; -import Infor from './infor'; -import transportation from './transportation'; -import BridgeTable from './bridge'; -import HigHways from './highways'; -import OperaTional from './operational'; -import Enforce from './enforce'; -import Public from './public'; +import infor from './infor'; -export { Infor,transportation,BridgeTable,HigHways,OperaTional,Enforce,Public }; \ No newline at end of file +export { infor }; \ No newline at end of file diff --git a/web/client/src/sections/fillion/containers/infor.js b/web/client/src/sections/fillion/containers/infor.js index eb72fbcd..4e2c3b21 100644 --- a/web/client/src/sections/fillion/containers/infor.js +++ b/web/client/src/sections/fillion/containers/infor.js @@ -3,6 +3,7 @@ import { connect } from 'react-redux'; import '../style.less'; import { getDepMessage, getReportStatistic } from "../actions/infor" import InForTable from '../components/inforTable'; +import UserModal from '../components/infor/details'; const superagent = require('superagent'); const infor = (props) => { const { dispatch, user} = props @@ -14,16 +15,16 @@ const infor = (props) => { dispatch(getReportStatistic()) setData(props) }, []); - // //打开弹窗 - // const openModal = (type, record) => { - // setModalVisible(true); - // // setModalType(type); - // if (type == 'edit') { - // setModalRecord(record); - // } else { - // setModalRecord(null); - // } - // } + //打开弹窗 + const openModal = (type, record) => { + setModalVisible(true); + // setModalType(type); + if (type == 'edit') { + setModalRecord(record); + } else { + setModalRecord(null); + } + } //批量导出 const exports = (ids,counts) => { // console.log(user); @@ -41,8 +42,12 @@ const infor = (props) => { }) } return ( - <> - + <> + ) } function mapStateToProps(state) { diff --git a/web/client/src/sections/fillion/nav-item.js b/web/client/src/sections/fillion/nav-item.js index 243adffd..70b55fd6 100644 --- a/web/client/src/sections/fillion/nav-item.js +++ b/web/client/src/sections/fillion/nav-item.js @@ -5,26 +5,9 @@ import { ReadOutlined } from '@ant-design/icons'; const SubMenu = Menu.SubMenu; export function getNavItem(user, dispatch) { return ( - } title={'数据管理'}> + } title={'填报管理'}> - 治超管理 - - - 道路管理 - - 桥梁管理 - - - 路政管理 - - - 运政管理 - - - 执法管理 - - - 公交管理 + 填报信息 ); diff --git a/web/client/src/sections/fillion/routes.js b/web/client/src/sections/fillion/routes.js index e81b4f1d..693ca601 100644 --- a/web/client/src/sections/fillion/routes.js +++ b/web/client/src/sections/fillion/routes.js @@ -1,64 +1,19 @@ 'use strict'; -import { Infor } from './containers'; -import { transportation } from './containers'; -import { BridgeTable } from './containers'; -import { HigHways } from './containers'; -import { OperaTional } from './containers'; -import { Enforce } from './containers'; -import { Public } from './containers'; +import { infor } from './containers'; export default [{ type: 'inner', route: { path: '/fillion', key: 'fillion', - breadcrumb: '数据管理', + breadcrumb: '填报管理', menuSelectKeys: ['fillion'], menuOpenKeys: ['fillion'], - childRoutes: [{ + childRoutes: [ { path: '/infor', key: 'fillioninfor', - menuSelectKeys: ['fillioninfor'], - component: Infor, - breadcrumb: '治超管理', - }, { - path: '/transportation', - key: 'filliontransportation', - menuSelectKeys: ['filliontransportation'], - component: transportation, - breadcrumb: '道路管理', - } - , { - path: '/bridge', - key: 'fillionbridge', - menuSelectKeys: ['fillionbridge'], - component: BridgeTable, - breadcrumb: '桥梁管理', - } - , { - path: '/highways', - key: 'fillionhighways', - menuSelectKeys: ['fillionhighways'], - component: HigHways, - breadcrumb: '路政管理', - }, { - path: '/operational', - key: 'fillionoperational', - menuSelectKeys: ['fillionoperational'], - component: OperaTional, - breadcrumb: '运政管理', - }, { - path: '/enforce', - key: 'fillionenforce', - menuSelectKeys: ['fillionenforce'], - component: Enforce, - breadcrumb: '执法管理', - }, { - path: '/public', - key: 'fillionpublic', - menuSelectKeys: ['fillionpublic'], - component: Public, - breadcrumb: '公交管理', - } - ] + menuSelectKeys:['fillioninfor'], + component: infor, + breadcrumb: '填报信息', + }] } }]; \ No newline at end of file diff --git a/web/client/src/sections/middleground/actions/data.js b/web/client/src/sections/middleground/actions/data.js new file mode 100644 index 00000000..73080b05 --- /dev/null +++ b/web/client/src/sections/middleground/actions/data.js @@ -0,0 +1,30 @@ +'use strict'; + +import { basicAction } from '@peace/utils' +import { ApiTable } from '$utils' +export function getFundamental() { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + actionType: 'GET_DATA', + url: ApiTable.getFundamental, + msg: { error: '获取数据失败' }, + reducer: { name: 'datas' } + }); +} + + +export function getsortord(zuo, day) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + actionType: 'GET_PATIENTIA', + url: ApiTable.getsortord.replace('{zuo}', zuo).replace('{day}', day), + msg: { error: '日期更新失败' }, + reducer: { name: 'Patientia' } + }); +} +export default { + getFundamental, + getsortord +} \ No newline at end of file diff --git a/web/client/src/sections/middleground/actions/index.js b/web/client/src/sections/middleground/actions/index.js new file mode 100644 index 00000000..077a957b --- /dev/null +++ b/web/client/src/sections/middleground/actions/index.js @@ -0,0 +1,7 @@ +'use strict'; + +import * as date from "./data" + +export default { + ...date +} \ No newline at end of file diff --git a/web/client/src/sections/middleground/components/dateModal.js b/web/client/src/sections/middleground/components/dateModal.js new file mode 100644 index 00000000..5b83cbed --- /dev/null +++ b/web/client/src/sections/middleground/components/dateModal.js @@ -0,0 +1,118 @@ +import React, { useState, useEffect } from 'react' +import { connect } from 'react-redux'; +import { getFundamental } from '../actions/data'; +import * as echarts from "echarts" +import "../style.less" + +const DateModal = (props) => { + const { dispatch } = props + const [lists, setLists] = useState([]) + const [keys, setKeys] = useState([]) + const [days, setDays] = useState() + const [unkeys, setUnkeys] = useState([]) + const [num, setNum] = useState(1) + useEffect(() => { + // 获取数据 + dispatch(getFundamental()).then(res => { + setDays(res.payload.data.date) + + }) + }, [true]) + + const op = () => { + // 把获取的数据进行加工 + if (days && num == 1) { + + var daysValues = Object.values(days) + var daysKeys = Object.keys(days) + var list = [] + var arr = [] + var months = [] + for (let index = 6; index >= 0; index--) { + list.push(daysValues[index]) + } + setLists(list) + for (let index = 6; index >= 0; index--) { + arr.push(daysKeys[index].substring(8)) + } + for (let index = 6; index >= 0; index--) { + months.push(daysKeys[index].charAt(5) + "" + daysKeys[index].charAt(6)) + } + setUnkeys(months) + setKeys(arr) + setNum(2) + } + } + op() + useEffect(() => { + let a = ([...keys]) + let list = [] + for (let index = 0; index < 7; index++) { + list.push(a[index]) + } + for (let index = 0; index < 7; index++) { + list[index] = list[index] + "日" + } + var myChart = echarts.init(document.getElementById('echarts')); + // window.onresize在重复使用过程中会被覆盖 + // window.onresize = myChart.resize; + // addEventListener来添加监听resize的事件,将能避免onresize的覆盖问题,并能实现对窗口的监听操作 + window.addEventListener("resize", function () { + myChart.resize() + }) + var option = { + title: { + text: '近七日填报数量', + left: "7%" + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + tooltip: { + trigger: 'item', + formatter: function (params) { + var htmlStr = `填报数量:${params.value}条
${unkeys[params.dataIndex] + "月" + params.name}
` + return htmlStr; + } + }, + xAxis: { + type: 'category', + data: list, + axisTick: { + alignWithLabel: true + } + }, + yAxis: { + type: "value", + }, + series: [ + { + name: '填报数量', + type: 'bar', + data: lists, + barWidth: 40 + } + ] + }; + + // 使用刚指定的配置项和数据显示图表。 + myChart.setOption(option); + }, [lists]) + return ( +
+ ) +} +function mapStateToProps(state) { + const { auth, depMessage, depUser, global } = state; + return { + user: auth.user, + clientHeight: global.clientHeight, + loading: depMessage.isRequesting, + depMessage: depMessage.data || [], + depUser: depUser.data || [] + }; +} +export default connect(mapStateToProps)(DateModal) \ No newline at end of file diff --git a/web/client/src/sections/middleground/components/index.js b/web/client/src/sections/middleground/components/index.js new file mode 100644 index 00000000..70405b5b --- /dev/null +++ b/web/client/src/sections/middleground/components/index.js @@ -0,0 +1,5 @@ +'use strict'; + +import DateModal from './dateModal'; + +export { DateModal }; \ No newline at end of file diff --git a/web/client/src/sections/middleground/containers/data.js b/web/client/src/sections/middleground/containers/data.js new file mode 100644 index 00000000..72a46915 --- /dev/null +++ b/web/client/src/sections/middleground/containers/data.js @@ -0,0 +1,157 @@ +import React, { useEffect, useState } from "react"; +import { connect } from "react-redux"; +import { Space, Row, Col, DatePicker, Spin } from "antd"; +import { getFundamental, getsortord } from "../actions/data"; +import { DateModal } from "../components"; +import moment from "moment"; +import "../style.less"; +const { RangePicker } = DatePicker; +const UserManage = (props) => { + const { dispatch, loading, datas, Patientias } = props; + const dateFormat = "YYYY/MM/DD"; + const [data, setData] = useState(); + const [Patientia, setPatientia] = useState(); + useEffect(() => { + // 获取数据 + dispatch(getFundamental()).then((res) => { + setData(res); + }); + }, [true]); + useEffect(() => { + // 根据接口获取规定时间内获取到的数据 + var customField = [ + moment().add(-6, "day").format("YYYY-MM-DD"), + moment(new Date(), dateFormat).format("YYYY-MM-DD"), + ]; + dispatch(getsortord(customField[0], customField[1])).then((res) => { + setPatientia(res.payload.data); + }); + }, [true]); + // useEffect(() => { + /* Patientia ? setPatientia(Patientia */ /* .sort(sortByKey("count")) */ /* ) : null */ + // }, [Patientia]) + // 根据数组里面对象的key值进行排序 + // const sortByKey = (key) => { + // return function (a, b) { + // var value1 = a[key]; + // var value2 = b[key]; + // return value2 - value1; + // } + // } + const disabledDate = (current) => { + return ( + (current && current < moment("2022/03/01").subtract("day")) || + current > moment(new Date()).subtract("days") + ); + }; + const getTime = (date) => { + // 根据时间框时间获取数据进行展示 + if (date) { + var ao = []; + ao.push(date[0].format("YYYY/MM/DD")); + ao.push(date[1].format("YYYY/MM/DD")); + } + dispatch(getsortord(ao[0], ao[1])).then((res) => { + setPatientia(res.payload.data /* .sort(sortByKey("count")) */); + }); + }; + + return ( +
+ {/* 此处进行了loding的效果 */} + + {/* 页面上部分代码 */} +
+ + + 今日新增填报 +

{datas.data ? datas.data.added : null}

+ + + 今日已审填报 +

+ {datas.data ? datas.data.checked : null} + /{datas.data ? datas.data.unChecked : null} +

+ + + 隐患场所总数 +

{datas.data ? datas.data.danger_place : null}

+ + + 历史填报 +

{datas.data ? datas.data.history : null}

+ +
+
+ {/* 页面下部分代码 */} +
+ {/* echarts柱状图 */} +
{datas ? : null}
+ {/* 根据时间进行的排序 */} +
+

各区县合用场所填报数量

+ + + +
+ {Patientias + ? Patientias.map((item, index) => { + return ( +
  • + {index >= 3 ? ( +
    {index + 1}
    + ) : ( +
    {index + 1}
    + )} + {item.name} + {item.count} +
  • + ); + }) + : null} +
    +
    +
    +
    +
    + ); +}; +function mapStateToProps(state) { + // console.log(state); + const { auth, depMessage, depUser, global, datas, Patientia } = state; + // 在reducer中进行数据处理 + const sortByKey = (key) => { + return function (a, b) { + var value1 = a[key]; + var value2 = b[key]; + return value2 - value1; + }; + }; + return { + user: auth.user, + clientHeight: global.clientHeight, + loading: datas.isRequesting && Patientia.isRequesting, + depMessage: depMessage.data || [], + depUser: depUser.data || [], + datas: datas || [], + Patientias: Patientia.data + ? Patientia.data.sort(sortByKey("count")) + : null || [], + }; +} + +export default connect(mapStateToProps)(UserManage); diff --git a/web/client/src/sections/middleground/containers/index.js b/web/client/src/sections/middleground/containers/index.js new file mode 100644 index 00000000..fb6c0ef3 --- /dev/null +++ b/web/client/src/sections/middleground/containers/index.js @@ -0,0 +1,5 @@ +'use strict'; + +import UserManage from './data'; + +export { UserManage }; \ No newline at end of file diff --git a/web/client/src/sections/middleground/index.js b/web/client/src/sections/middleground/index.js new file mode 100644 index 00000000..fe3e7793 --- /dev/null +++ b/web/client/src/sections/middleground/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: 'middleground', + name: '', + reducers: reducers, + routes: routes, + actions: actions, + getNavItem: getNavItem +}; \ No newline at end of file diff --git a/web/client/src/sections/middleground/nav-item.js b/web/client/src/sections/middleground/nav-item.js new file mode 100644 index 00000000..51ca9557 --- /dev/null +++ b/web/client/src/sections/middleground/nav-item.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { Link } from 'react-router-dom'; +import { Menu } from 'antd'; +import { BarChartOutlined } from '@ant-design/icons'; +import { push } from 'react-router-redux'; + + +export function getNavItem(user, dispatch) { + if (user.type != 1) { + dispatch(push('/fillion/infor')); + return null + } + return ( + }> + 数据中心 + + ); +} \ No newline at end of file diff --git a/web/client/src/sections/middleground/reducers/index.js b/web/client/src/sections/middleground/reducers/index.js new file mode 100644 index 00000000..0203d01b --- /dev/null +++ b/web/client/src/sections/middleground/reducers/index.js @@ -0,0 +1,5 @@ +'use strict'; + +export default { + +}; \ No newline at end of file diff --git a/web/client/src/sections/middleground/routes.js b/web/client/src/sections/middleground/routes.js new file mode 100644 index 00000000..0d75430b --- /dev/null +++ b/web/client/src/sections/middleground/routes.js @@ -0,0 +1,14 @@ +'use strict'; +import { UserManage } from './containers'; + +export default [{ + type: 'inner', + route: { + path: '/middleground', + key: 'middleground', + breadcrumb: '数据中心', + menuSelectKeys: ['userManage'], + component: UserManage, + menuOpenKeys: ['middleground'], + } +}]; \ No newline at end of file diff --git a/web/client/src/sections/middleground/style.less b/web/client/src/sections/middleground/style.less new file mode 100644 index 00000000..659824ed --- /dev/null +++ b/web/client/src/sections/middleground/style.less @@ -0,0 +1,86 @@ +.shuju-top{ + width: 100%; + min-Width: 1110px; + height: 20vh; + border: 1px solid #F2F2F2; + border-Right: 0; + margin-top: 5vh; + overflow: auto; + .wrap{ + min-Height: 100%; + span{ + color: #959595; + font-Size: 18px; + } + p{ + font-Size: 34px; + } + } +} +.shuju-floer{ + width: 100%; + height: 500px; + float: left; + margin-Top: 50px; + min-Width: 1110px; + .shuju-floer-left{ + height: 500px; + float: left; + #echarts{ + width: calc(75vw - 200px ); + min-Width: 810px; + height: 500px; + } + } + .shuju-floer-reght{ + width: calc(32vw - 200px ); + min-Width: 290px; + height: 100%; + float: left; + p{ + color: #464646; + font-Size: 18px; + font-Weight: 600; + } + .dataDisplay{ + width: 340px; + height: 75%; + overflow-y: auto; + .traverse{ + width: 300px; + height: 30px; + list-style: none; + .topThree{ + width: 20px; + height: 20px; + background-Color: #f0f2f5; + float: left; + color: rgba(0, 0, 0, 0.6470588235294118); + border-Radius: 50%; + text-align: center; + line-Height: 20px; + font-Size: 12px; + } + .untopThree{ + width: 20px; + height: 20px; + background-Color: #314559; + float: left; + color: #FFFFFF; + border-radius: 50%; + text-align: center; + line-height: 20px; + font-size: 12px; + } + .siteName{ + margin-left: 20px; + } + .sitePeople{ + float: right; + margin-right: 10px; + } + } + } + + } +} \ No newline at end of file diff --git a/web/client/src/sections/organization/containers/index.js b/web/client/src/sections/organization/containers/index.js index fc0f4348..e1a69b05 100644 --- a/web/client/src/sections/organization/containers/index.js +++ b/web/client/src/sections/organization/containers/index.js @@ -1,7 +1,6 @@ 'use strict'; - +import Authority from './authority'; import UserManage from './user'; - -export { UserManage}; \ No newline at end of file +export { Authority, UserManage }; \ No newline at end of file diff --git a/web/client/src/sections/organization/nav-item.js b/web/client/src/sections/organization/nav-item.js index 8970b8ee..19a8d2c5 100644 --- a/web/client/src/sections/organization/nav-item.js +++ b/web/client/src/sections/organization/nav-item.js @@ -18,15 +18,14 @@ export function getNavItem(user, dispatch) { return null } return ( - } title={'授权管理'}> - + } title={'组织管理'}> {Func.isAuthorized("ORG_MEMBER") && 用户管理 - } - - - + } + {Func.isAuthorized("ORG_AUTH") && + 权限配置 + } ); } \ No newline at end of file diff --git a/web/client/src/sections/organization/routes.js b/web/client/src/sections/organization/routes.js index 2b4d1571..67d59793 100644 --- a/web/client/src/sections/organization/routes.js +++ b/web/client/src/sections/organization/routes.js @@ -1,12 +1,12 @@ 'use strict'; -import { UserManage, Authority,AdminiSter } from './containers'; +import { UserManage, Authority } from './containers'; export default [{ type: 'inner', route: { path: '/organization', key: 'organization', - breadcrumb: '授权管理', + breadcrumb: '组织管理', menuSelectKeys: ['userManage'], menuOpenKeys: ['organization'], childRoutes: [{ @@ -15,6 +15,12 @@ export default [{ menuSelectKeys: ['userManage'], component: UserManage, breadcrumb: '用户管理', + }, { + path: '/authority', + key: 'authority', + component: Authority, + menuSelectKeys: ['authority'], + breadcrumb: '权限配置', }] } }]; \ No newline at end of file diff --git a/web/client/src/sections/quanju/actions/example.js b/web/client/src/sections/quanju/actions/example.js new file mode 100644 index 00000000..b9b2ffbd --- /dev/null +++ b/web/client/src/sections/quanju/actions/example.js @@ -0,0 +1,15 @@ +'use strict'; + +import { basicAction } from '@peace/utils' +import { ApiTable } from '$utils' + +export function getMembers(orgId) { + return dispatch => basicAction({ + type: 'get', + dispatch: dispatch, + actionType: 'GET_MEMBERS', + url: `${ApiTable.getEnterprisesMembers.replace('{enterpriseId}', orgId)}`, + msg: { error: '获取用户列表失败' }, + reducer: { name: 'members' } + }); +} diff --git a/web/client/src/sections/quanju/actions/index.js b/web/client/src/sections/quanju/actions/index.js new file mode 100644 index 00000000..090c73f2 --- /dev/null +++ b/web/client/src/sections/quanju/actions/index.js @@ -0,0 +1,7 @@ +'use strict'; + +import * as example from './example' + +export default { + ...example +} \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/example.js b/web/client/src/sections/quanju/containers/example.js new file mode 100644 index 00000000..d38abe45 --- /dev/null +++ b/web/client/src/sections/quanju/containers/example.js @@ -0,0 +1,53 @@ +import React, { useEffect, useState } from 'react'; +import { connect } from 'react-redux'; +import { Spin, Card } from 'antd'; +import Build from './footer/build' +import '../style.less'; +import Header from './heand'; +import Footer from './footer'; +import ProTable, { TableDropdown } from '@ant-design/pro-table'; + +const Example = (props) => { + const { dispatch, actions, user, loading } = props + const [tabKey, setTabKey] = useState('leadership') + + useEffect(() => { + dispatch(actions.example.getMembers(user.orgId)) + }, []) + const tabChange = (tab) => { + //leader 领导驾驶舱 site 工地 toilet 公厕 light 照明 water水质 encomic经济 environment 生态环境 security 智慧安监 + // setCurrentTab(tab); + setTabKey(tab) + // dispatch({ type: 'TAB-CHANGE', data: tab }) + } + + return ( + +
    +
    +
    +
    +
    +
    +
    +
    +
    + ) +} + +function mapStateToProps(state) { + const { auth, global, members } = state; + return { + loading: members.isRequesting, + user: auth.user, + actions: global.actions, + members: members.data + }; +} + +export default connect(mapStateToProps)(Example); diff --git a/web/client/src/sections/quanju/containers/footer/build/index.js b/web/client/src/sections/quanju/containers/footer/build/index.js new file mode 100644 index 00000000..1b0f3f0f --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/build/index.js @@ -0,0 +1,8 @@ +import React from 'react' + +const Build = () => { + return ( + <>Build + ) +} +export default Build diff --git a/web/client/src/sections/quanju/containers/footer/build/left.js b/web/client/src/sections/quanju/containers/footer/build/left.js new file mode 100644 index 00000000..e69de29b diff --git a/web/client/src/sections/quanju/containers/footer/build/right.js b/web/client/src/sections/quanju/containers/footer/build/right.js new file mode 100644 index 00000000..e69de29b diff --git a/web/client/src/sections/quanju/containers/footer/conserve/index.js b/web/client/src/sections/quanju/containers/footer/conserve/index.js new file mode 100644 index 00000000..e48f40cb --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/conserve/index.js @@ -0,0 +1,8 @@ +import React from 'react' + +const Conserve = () => { + return ( + <>1212121 + ) +} +export default Conserve \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/guanli/index.js b/web/client/src/sections/quanju/containers/footer/guanli/index.js new file mode 100644 index 00000000..d20e2d29 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/guanli/index.js @@ -0,0 +1,8 @@ +import React from 'react' + +const Guanli = () => { + return ( + <>管理 + ) +} +export default Guanli \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/index.js b/web/client/src/sections/quanju/containers/footer/index.js new file mode 100644 index 00000000..485c6839 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/index.js @@ -0,0 +1,29 @@ +import React from 'react' +import Build from './build' +import Conserve from './conserve' +import Guanli from './guanli' +import Leadership from './leadership' +import Operation from './operation' +const Footer = ({ tabKey }) => { + return ( + <> + { + (() => { + switch (tabKey) { + case 'build': + return + case 'conserve': + return + case "leadership": + return + case "guanli": + return + case "operation": + return + } + })() + } + + ) +} +export default Footer diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerLeft.js b/web/client/src/sections/quanju/containers/footer/leadership/centerLeft.js index 49e2c97b..f5745538 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/centerLeft.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerLeft.js @@ -7,7 +7,7 @@ import Centerleftbottom from "./centerleft/center-left-bottom" const CenterLeft = () => { return ( <> -
    +
    diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerRight.js b/web/client/src/sections/quanju/containers/footer/leadership/centerRight.js new file mode 100644 index 00000000..4fb8cce5 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerRight.js @@ -0,0 +1,19 @@ +import React from 'react' +import Centerrighttop from "./centerRight/center-right-top" +import Centerrightcenter from "./centerRight/center-right-center" +import CenterRightcentertop from "./centerRight/center-right-centertop" +import Centerrightbottom from "./centerRight/center-right-bottom" + +const CenterLeft = () => { + return ( + <> +
    + + + + +
    + + ) +} +export default CenterLeft \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-bottom.js b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-bottom.js new file mode 100644 index 00000000..5a75b55b --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-bottom.js @@ -0,0 +1,14 @@ +import React from 'react' +import Module from '../../../public/module' + +const Rightbottom = () => { + const style = { height: "33%" } + return ( + <> + +
    +
    + + ) +} +export default Rightbottom \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-center.js b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-center.js new file mode 100644 index 00000000..604b5330 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-center.js @@ -0,0 +1,14 @@ +import React from 'react' +import Module from '../../../public/module' + +const Rightcenter = () => { + const style = { height: "17%" } + return ( + <> + +
    +
    + + ) +} +export default Rightcenter \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-centertop.js b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-centertop.js new file mode 100644 index 00000000..71e56878 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-centertop.js @@ -0,0 +1,14 @@ +import React from 'react' +import Module from '../../../public/module' + +const Rightcentertop = () => { + const style = { height: "23%" } + return ( + <> + +
    +
    + + ) +} +export default Rightcentertop \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-top.js b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-top.js new file mode 100644 index 00000000..722a855d --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerRight/center-right-top.js @@ -0,0 +1,15 @@ +import React from 'react' +import Module from '../../../public/module' + +const Righttop = (props) => { + const { } = props + const style = { height: "17%" } + return ( + <> + +
    +
    + + ) +} +export default Righttop \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js new file mode 100644 index 00000000..cd33b97d --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js @@ -0,0 +1,14 @@ +import React from 'react' +import Module from '../../../public/module' + +const Leftbottom = () => { + const style = { height: "23%", marginTop: "5%" } + return ( + <> + +
    +
    + + ) +} +export default Leftbottom \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-center.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-center.js new file mode 100644 index 00000000..08ff5043 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-center.js @@ -0,0 +1,16 @@ +import React from 'react' +import Module from '../../../public/module' + +const Leftcenter = () => { + const style = { + height: "23%" + } + return ( + <> + +
    +
    + + ) +} +export default Leftcenter \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-centertop.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-centertop.js new file mode 100644 index 00000000..393e3164 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-centertop.js @@ -0,0 +1,14 @@ +import React from 'react' +import Module from '../../../public/module' + +const Leftcentertop = () => { + const style = { height: "23%" } + return ( + <> + +
    +
    + + ) +} +export default Leftcentertop \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-top.js b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-top.js new file mode 100644 index 00000000..9c7e922c --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-top.js @@ -0,0 +1,15 @@ +import React from 'react' +import Module from '../../../public/module' + +const Lefttop = (props) => { + const { } = props + const style = { height: "23%" } + return ( + <> + +
    +
    + + ) +} +export default Lefttop \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/index.js b/web/client/src/sections/quanju/containers/footer/leadership/index.js new file mode 100644 index 00000000..cbd1980a --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/index.js @@ -0,0 +1,18 @@ +import React from 'react' +import Left from './left' +import Right from './right' +import CenterLeft from "./centerLeft" +import Centerright from "./centerRight" + +const Leadership = () => { + return ( + <> + + + + {/* */} + + + ) +} +export default Leadership \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left.js b/web/client/src/sections/quanju/containers/footer/leadership/left.js index 5b6c1649..5461c2fc 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left.js @@ -6,7 +6,7 @@ import Leftbottom from './left/left-bottom' const Left = () => { return ( <> -
    +
    diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js b/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js index a4147d4a..bd992c86 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js @@ -5,7 +5,7 @@ const Leftbottom = () => { const style = { height: "25%", marginTop: "5%" } return ( <> - + diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js b/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js index 70b2d6da..767e2d38 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js @@ -5,7 +5,7 @@ const Leftcenter = () => { const style = { height: "30%", marginTop: "5%" } return ( <> - +
    diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js b/web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js new file mode 100644 index 00000000..14af9db5 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js @@ -0,0 +1,14 @@ +import React from 'react' +import Module from '../../../public/module' + +const Lefttop = () => { + const style = { height: "25%" } + return ( + <> + + {/*
    */} +
    + + ) +} +export default Lefttop \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right.js b/web/client/src/sections/quanju/containers/footer/leadership/right.js index 58172bba..d690515f 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/right.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/right.js @@ -6,7 +6,7 @@ import Rightbottom from './right/right-bottom' const Right = () => { return ( <> -
    +
    diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js b/web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js new file mode 100644 index 00000000..f6a8aa24 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js @@ -0,0 +1,14 @@ +import React from 'react' +import Module from '../../../public/module' + +const Rightbottom = () => { + const style = { height: "45%", marginTop: "5%" } + return ( + <> + +
    +
    + + ) +} +export default Rightbottom \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right/right-center.js b/web/client/src/sections/quanju/containers/footer/leadership/right/right-center.js new file mode 100644 index 00000000..609facf8 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/right/right-center.js @@ -0,0 +1,9 @@ +import React from 'react' + +const Rightcenter = () => { + return ( + <>
    +
    + ) +} +export default Rightcenter \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js b/web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js new file mode 100644 index 00000000..d1955b88 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js @@ -0,0 +1,13 @@ +import React from 'react' +import Module from '../../../public/module' + +const Righttop = () => { + const style = { height: "45%" } + return ( + <> + + + + ) +} +export default Righttop \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/footer/operation/index.js b/web/client/src/sections/quanju/containers/footer/operation/index.js new file mode 100644 index 00000000..c8b81208 --- /dev/null +++ b/web/client/src/sections/quanju/containers/footer/operation/index.js @@ -0,0 +1,8 @@ +import React from 'react' + +const Operation = () => { + return ( + <>运营 + ) +} +export default Operation \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/heand/index.js b/web/client/src/sections/quanju/containers/heand/index.js index 8d944a85..339ff20a 100644 --- a/web/client/src/sections/quanju/containers/heand/index.js +++ b/web/client/src/sections/quanju/containers/heand/index.js @@ -27,14 +27,13 @@ const Header = (props) => {
    { onClick("leadership") }}>领导驾驶舱
    -
    南昌县智慧交通监管系统
    { onClick("guanli") }}>管理
    { onClick("operation") }}>运营
    -
    dianji()}>南昌县运输交通总局
    +
    dianji()}>南昌县运输交通总局
    ) } diff --git a/web/client/src/sections/quanju/containers/heand/style.less b/web/client/src/sections/quanju/containers/heand/style.less index 931b4d46..7beaadfe 100644 --- a/web/client/src/sections/quanju/containers/heand/style.less +++ b/web/client/src/sections/quanju/containers/heand/style.less @@ -1,23 +1,23 @@ .tabKey-map{ width: 12%; - height: 4.7vh; + height: 45px; text-align: center; position: absolute; - top: 3vh; + top: 30px; a{ color: #c3d4f5; - line-height: 4.7vh; + line-height: 45px; } } .notabKey{ width:12%; - height: 4.7vh; + height: 45px; position: absolute; - top: 3vh; + top: 30px; text-align: center; a{ color: #6593c6; - line-height: 4.7vh; + line-height: 45px; } } \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/index.js b/web/client/src/sections/quanju/containers/index.js new file mode 100644 index 00000000..a4321ad0 --- /dev/null +++ b/web/client/src/sections/quanju/containers/index.js @@ -0,0 +1,6 @@ +'use strict'; + +import Example from './example'; +import Build from './footer/build' + +export { Example, Build }; \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/public/font.css b/web/client/src/sections/quanju/containers/public/font.css new file mode 100644 index 00000000..5a30fb99 --- /dev/null +++ b/web/client/src/sections/quanju/containers/public/font.css @@ -0,0 +1,4 @@ +@font-face { + font-family: "YouSheBiaoTiHei"; + src: url("/assets/fontziti/YouSheBiaoTiHei-2.ttf") format("truetype"); + } \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/public/module.js b/web/client/src/sections/quanju/containers/public/module.js index 53c833f1..29682c4e 100644 --- a/web/client/src/sections/quanju/containers/public/module.js +++ b/web/client/src/sections/quanju/containers/public/module.js @@ -5,11 +5,11 @@ const Module = (props) => { const { style, children, title } = props return ( <> -
    +
    {/*

    {title || []}

    */} - - {title || []} + + {title || []}
    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 From 68c13e99e776ecfc2e44bcdca67699d42c8aa245 Mon Sep 17 00:00:00 2001 From: wangyue Date: Wed, 20 Jul 2022 17:19:18 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/sections/quanju/containers/heand/index.js | 3 ++- .../src/sections/quanju/containers/heand/style.less | 12 ++++++------ .../src/sections/quanju/containers/public/module.js | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/web/client/src/sections/quanju/containers/heand/index.js b/web/client/src/sections/quanju/containers/heand/index.js index 339ff20a..8d944a85 100644 --- a/web/client/src/sections/quanju/containers/heand/index.js +++ b/web/client/src/sections/quanju/containers/heand/index.js @@ -27,13 +27,14 @@ const Header = (props) => {
    { onClick("leadership") }}>领导驾驶舱
    +
    南昌县智慧交通监管系统
    { onClick("guanli") }}>管理
    { onClick("operation") }}>运营
    -
    dianji()}>南昌县运输交通总局
    +
    dianji()}>南昌县运输交通总局
    ) } diff --git a/web/client/src/sections/quanju/containers/heand/style.less b/web/client/src/sections/quanju/containers/heand/style.less index 7beaadfe..931b4d46 100644 --- a/web/client/src/sections/quanju/containers/heand/style.less +++ b/web/client/src/sections/quanju/containers/heand/style.less @@ -1,23 +1,23 @@ .tabKey-map{ width: 12%; - height: 45px; + height: 4.7vh; text-align: center; position: absolute; - top: 30px; + top: 3vh; a{ color: #c3d4f5; - line-height: 45px; + line-height: 4.7vh; } } .notabKey{ width:12%; - height: 45px; + height: 4.7vh; position: absolute; - top: 30px; + top: 3vh; text-align: center; a{ color: #6593c6; - line-height: 45px; + line-height: 4.7vh; } } \ No newline at end of file diff --git a/web/client/src/sections/quanju/containers/public/module.js b/web/client/src/sections/quanju/containers/public/module.js index 29682c4e..53c833f1 100644 --- a/web/client/src/sections/quanju/containers/public/module.js +++ b/web/client/src/sections/quanju/containers/public/module.js @@ -5,11 +5,11 @@ const Module = (props) => { const { style, children, title } = props return ( <> -
    +
    {/*

    {title || []}

    */} - - {title || []} + + {title || []}
    From a74afb8f1dee5e7c0d92b157651f60de5b530cf0 Mon Sep 17 00:00:00 2001 From: wangyue Date: Wed, 20 Jul 2022 17:21:04 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/sections/quanju/containers/footer/leadership/left.js | 2 +- .../src/sections/quanju/containers/footer/leadership/right.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/client/src/sections/quanju/containers/footer/leadership/left.js b/web/client/src/sections/quanju/containers/footer/leadership/left.js index 5461c2fc..5b6c1649 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/left.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/left.js @@ -6,7 +6,7 @@ import Leftbottom from './left/left-bottom' const Left = () => { return ( <> -
    +
    diff --git a/web/client/src/sections/quanju/containers/footer/leadership/right.js b/web/client/src/sections/quanju/containers/footer/leadership/right.js index d690515f..58172bba 100644 --- a/web/client/src/sections/quanju/containers/footer/leadership/right.js +++ b/web/client/src/sections/quanju/containers/footer/leadership/right.js @@ -6,7 +6,7 @@ import Rightbottom from './right/right-bottom' const Right = () => { return ( <> -
    +