From cf7212a13a7d011dda9fcc85d5a895af805ec699 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B8=B8=E6=97=AD?= <2868304641@qq.com>
Date: Sat, 5 Jul 2025 15:59:42 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E6=9B=BE=E5=9C=A8=E5=8A=9E=20?=
=?UTF-8?q?-=20=E5=B7=B2=E5=8A=9E=20-=20=E6=96=B0=E5=A2=9E=E6=9F=A5?=
=?UTF-8?q?=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
config/routes.js | 12 +-
src/pages/JDCX/TableList/index.jsx | 343 +++++++++++++++
src/pages/JDCX/TopSearch/README.md | 1 +
src/pages/JDCX/TopSearch/index.jsx | 412 +++++++++++++++++++
src/pages/JDCX/TopSearch/index.less | 12 +
src/pages/JDCX/index.jsx | 153 +++++++
src/pages/YBSX/TableList/index.jsx | 300 ++++++++++++++
src/pages/YBSX/TopSearch/README.md | 1 +
src/pages/YBSX/TopSearch/index.jsx | 293 +++++++++++++
src/pages/YBSX/TopSearch/index.less | 12 +
src/pages/YBSX/index.jsx | 107 +++++
src/pages/{GZT => ZBSX}/HCBGBtn/index.jsx | 0
src/pages/{GZT => ZBSX}/README.md | 0
src/pages/{GZT => ZBSX}/TableList/README.md | 0
src/pages/{GZT => ZBSX}/TableList/index.jsx | 0
src/pages/{GZT => ZBSX}/TopSearch/README.md | 0
src/pages/{GZT => ZBSX}/TopSearch/index.jsx | 0
src/pages/{GZT => ZBSX}/TopSearch/index.less | 0
src/pages/{GZT => ZBSX}/index.jsx | 0
19 files changed, 1644 insertions(+), 2 deletions(-)
create mode 100644 src/pages/JDCX/TableList/index.jsx
create mode 100644 src/pages/JDCX/TopSearch/README.md
create mode 100644 src/pages/JDCX/TopSearch/index.jsx
create mode 100644 src/pages/JDCX/TopSearch/index.less
create mode 100644 src/pages/JDCX/index.jsx
create mode 100644 src/pages/YBSX/TableList/index.jsx
create mode 100644 src/pages/YBSX/TopSearch/README.md
create mode 100644 src/pages/YBSX/TopSearch/index.jsx
create mode 100644 src/pages/YBSX/TopSearch/index.less
create mode 100644 src/pages/YBSX/index.jsx
rename src/pages/{GZT => ZBSX}/HCBGBtn/index.jsx (100%)
rename src/pages/{GZT => ZBSX}/README.md (100%)
rename src/pages/{GZT => ZBSX}/TableList/README.md (100%)
rename src/pages/{GZT => ZBSX}/TableList/index.jsx (100%)
rename src/pages/{GZT => ZBSX}/TopSearch/README.md (100%)
rename src/pages/{GZT => ZBSX}/TopSearch/index.jsx (100%)
rename src/pages/{GZT => ZBSX}/TopSearch/index.less (100%)
rename src/pages/{GZT => ZBSX}/index.jsx (100%)
diff --git a/config/routes.js b/config/routes.js
index 937cdb2..f7a9bc2 100644
--- a/config/routes.js
+++ b/config/routes.js
@@ -24,8 +24,16 @@ export default [
component: './ResultData',
},
{
- path:"/GZT",
- component:"./GZT"
+ path:"/ZBSX",
+ component:"./ZBSX"
+ },
+ {
+ path:"/YBSX",
+ component:"./YBSX"
+ },
+ {
+ path:"/JDCX",
+ component:"./JDCX"
},
{
path: '/',
diff --git a/src/pages/JDCX/TableList/index.jsx b/src/pages/JDCX/TableList/index.jsx
new file mode 100644
index 0000000..5c1caa7
--- /dev/null
+++ b/src/pages/JDCX/TableList/index.jsx
@@ -0,0 +1,343 @@
+import React, { useState, useEffect } from 'react';
+import { Table, Modal, Button, Pagination, Tooltip } from 'antd';
+import { connect } from 'umi';
+import moment from 'moment';
+
+import TopSearch from '../TopSearch';
+import CK from '@/components/Tabs-CK';
+import { getDicsName } from '@/utils/utils';
+import { AJZT, UserLevel } from '@/utils/constants';
+import { getHGIcons, ExampleBar, getTimeLine } from '@/components/MyIcons';
+
+const initDateType = 'sevenDays';
+const initSearchParams = {
+ page: 1,
+ size: 10,
+ startTime: moment().add(-7, 'days'),
+ endTime: moment(),
+};
+
+const TableList = (props) => {
+ const { msg, sysToken, refesh, isLocationInBu, locationType, type, global } = props;
+ const [searchParams, setSearchParams] = useState(initSearchParams);
+ const [tableData, setTableData] = useState(null);
+ // const [selectedRowKeys, setSelectedRowKeys] = useState([]);
+ const [nowModalComponent, setNowModalComponent] = useState(null);
+ const [categoryList, setCategoryList] = useState([]);
+
+ const getList = (params) => {
+ const newParams = isLocationInBu && type === 'sheng' ? { ...params, sign: 1 } : params; // 部里发布 并且查询省里的列表加额外参数
+ const newSysToken = (locationType === UserLevel.Province.value && type === 'sheng')|| (locationType === UserLevel.City.value && type === 'shi') ? '' : sysToken;
+ props.fetchDoneList({ params: newParams, sysToken: newSysToken }).then((data) => setTableData(data));
+ // console.log(sysToken);
+ };
+ // debugger;
+ const getCategoryList = () => {
+ let newSysToken = sysToken;
+ let isNotGateway = false;
+ if (isLocationInBu) { // 在部級環境下
+ if (type === 'sheng') isNotGateway = true; // systoken需要加到url最後面
+ }
+ // else if (locationType === UserLevel.Province.value) { // 在省級環境下
+ // newSysToken = type === 'sheng' ? 'sheng' : type === 'shi' ? 'shi' : sysToken;
+ // } else if (locationType === UserLevel.City.value) { // 在市級環境下
+ // newSysToken = type;
+ // }
+ props
+ .fetchCategoryList({
+ params: {},
+ sysToken: newSysToken,
+ isNotGateway
+ })
+ .then((res) => {
+ setCategoryList(res);
+ });
+ };
+ // debugger;
+ // const getDict = (params) => {
+ // props.fetchDict({ params, sysToken });
+ // }
+
+ useEffect(() => {
+ if (!msg) {
+ getList(searchParams);
+ }
+ }, [refesh]);
+
+ useEffect(() => {
+ // 点击模型详情跳转过来的,参数由跳转带过来,
+ if (msg) {
+ setSearchParams(msg);
+ getList({ ...msg, searchType: 1 }); // 给接口添加参数,此时接口模型名称不是绝对匹配查询,不是模糊查询
+ }
+ }, [msg]);
+
+ useEffect(() => {
+ getCategoryList(); // 专项类别
+ }, [type]);
+
+ // 点击查询
+ const onSearch = (params) => {
+ setSearchParams({ ...searchParams, ...params, page: 1 });
+ getList({ ...searchParams, ...params, page: 1 });
+ };
+
+ const handleReset = () => {
+ setSearchParams(initSearchParams);
+ getList(initSearchParams);
+ };
+
+ const changePage = (page) => {
+ setSearchParams({ ...searchParams, page });
+ getList({ ...searchParams, page });
+ };
+
+ // const rowSelection = {
+ // selectedRowKeys,
+ // onChange: selectedRowKeys,
+ // getCheckboxProps: record => ({
+ // disabled: selectAbleType === 'folder' ? record.isDir !== 1 : record.isDir === 1,
+ // }),
+ // };
+
+ const columns = [
+ {
+ title: '序号',
+ dataIndex: 'id',
+ key: 'id',
+ render: (text, record, index) => index + 1,
+ width: '5%',
+ },
+ {
+ title: '预警编号',
+ dataIndex: 'yjBh',
+ width: '22%',
+ render: (text, record) => {
+ return (
+
+ {getHGIcons(record?.ccjg)}
+ {text}
+
+ );
+ },
+ },
+ {
+ title: '模型名称',
+ dataIndex: 'mxMc',
+ width: '7%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '问题类型',
+ dataIndex: 'cjwtLx',
+ width: '7%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '承办督察部门',
+ dataIndex: 'sadwMc',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '问题简述',
+ dataIndex: 'wtjs',
+ width: '7%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '当前办理单位',
+ dataIndex: 'dqbldwMc',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '当前办理人',
+ dataIndex: 'dqblrMc',
+ width: '8%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '预警流向',
+ dataIndex: 'blfsMc',
+ width: '7%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '最新状态',
+ dataIndex: 'dqZt',
+ width: '7%',
+ render: (text) => (
+
+ {getDicsName(AJZT, text)}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '最新更新时间',
+ dataIndex: 'updateTime',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '最迟反馈时间',
+ dataIndex: 'zcfkSj',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '时限',
+ key: 'id',
+ dataIndex: 'fkyj',
+ width: '5%',
+ render: (text) => getTimeLine(text),
+ // fixed: 'right',
+ },
+ {
+ title: '操作',
+ key: 'id',
+ dataIndex: 'id',
+ width: '6%',
+ render: (text, record) => {
+ return (
+
+ );
+ },
+ fixed: 'right',
+ },
+ ];
+
+ return (
+
+
+
changePage(page),
+ // showSizeChanger: true,
+ // onShowSizeChange: () => this.onShowSizeChange,
+ // pageSizeOptions: ['10', '20', '50', '100', '500', '1000'],
+ />
+
+
+
changePage(page)}
+ showTotal={(total) => `共 ${total} 条`}
+ />
+
+ {nowModalComponent && (
+ setNowModalComponent(null)}
+ // style={{ background: '#fff', paddingBottom: 0, minHeight: 560 }}
+ maskClosable={false}
+ width={1000}
+ >
+ {nowModalComponent}
+
+ )}
+
+ );
+};
+
+const mapStateToProps = ({ user, global, doing, loading }) => ({
+ user: user.currentUser,
+ global,
+ doing,
+ loading: loading.effects['doing/fetchProgressList'] || false,
+});
+const mapDispatchToProps = (dispatch) => ({
+ // 列表
+ fetchDoneList({ params, sysToken }) {
+ const chooseTime = {};
+ if (params.startTime)
+ chooseTime.startTime = `${params.startTime.format('YYYY-MM-DD')} 00:00:00`;
+ if (params.endTime) chooseTime.endTime = `${params.endTime.format('YYYY-MM-DD')} 23:59:59`;
+ return dispatch({
+ type: 'doing/fetchProgressList',
+ payload: { params: { ...params, ...chooseTime }, sysToken },
+ });
+ },
+ fetchDict(params) {
+ return dispatch({ type: 'global/fetchDict', payload: params });
+ },
+ // 专项类别
+ fetchCategoryList({ params, sysToken, isNotGateway }) {
+ return dispatch({
+ type: 'doing/fetchCategoryList',
+ payload: { params: { ...params }, sysToken, isNotGateway },
+ });
+ },
+});
+export default connect(mapStateToProps, mapDispatchToProps)(TableList);
diff --git a/src/pages/JDCX/TopSearch/README.md b/src/pages/JDCX/TopSearch/README.md
new file mode 100644
index 0000000..573c93e
--- /dev/null
+++ b/src/pages/JDCX/TopSearch/README.md
@@ -0,0 +1 @@
+在办 /已办 /进度查询 /列表上部查询
diff --git a/src/pages/JDCX/TopSearch/index.jsx b/src/pages/JDCX/TopSearch/index.jsx
new file mode 100644
index 0000000..17e27b9
--- /dev/null
+++ b/src/pages/JDCX/TopSearch/index.jsx
@@ -0,0 +1,412 @@
+import React, { useState, useEffect } from 'react';
+import { Row, Col, Form, Input, Radio, Button, DatePicker, Select, Checkbox, message } from 'antd';
+import moment from 'moment';
+
+import NextOrg from '@/components/NextOrg';
+import { AJZT, YJLX, BLFS, SLFS, CCQK, YQQK, CSQK } from '@/utils/constants';
+
+import styles from './index.less';
+
+const { Item } = Form;
+const { Option } = Select;
+
+const upGrid = { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 8 };
+const bottomGrid = { xs: 12, sm: 12, md: 12, lg: 6, xl: 6, xxl: 4 };
+
+const layout = {
+ labelCol: { span: 5 },
+ wrapperCol: { span: 19 },
+};
+
+const latterLayout = {
+ labelCol: { span: 10 },
+ wrapperCol: { span: 14 },
+};
+
+const dateTypeCounts = [
+ {
+ key: 'threeDays',
+ label: '近3天',
+ start: moment().add(-3, 'days'),
+ end: moment(),
+ },
+ {
+ key: 'sevenDays',
+ label: '近7天',
+ start: moment().add(-7, 'days'),
+ end: moment(),
+ },
+ {
+ key: 'months',
+ label: '近一个月',
+ start: moment().add(-1, 'months'),
+ end: moment(),
+ },
+ {
+ key: 'quarters',
+ label: '近三个月',
+ start: moment().add(-1, 'quarters'),
+ end: moment(),
+ },
+ {
+ key: 'years',
+ label: '近一年',
+ start: moment().add(-1, 'years'),
+ end: moment(),
+ },
+];
+
+const TopSearch = (props) => {
+ const { categoryList } = props;
+ const [form] = Form.useForm();
+ const { initDateType } = props;
+ const [dateType, setDateType] = useState(initDateType);
+ const [boxHidden, setBoxHidden] = useState();
+
+ useEffect(() => {
+ if (props.changeParams) {
+ setDateType('custom'); // 点击消息跳转,时间改成自定义
+ form.setFieldsValue({ ...props.changeParams, xfsj: 'custom', zxZbId: '' });
+ }
+ }, [props.changeParams]);
+
+ const handleReset = () => {
+ form.resetFields();
+ setDateType(initDateType);
+ props.handleReset();
+ };
+
+ const handleDateTypeChange = (e) => {
+ setDateType(e.target.value);
+ };
+
+ const renderRange = () => (
+
+
+
+
+ ~
+
+
+
+
+ );
+
+ const onFinish = (value) => {
+ const copyValue = { ...value };
+ if (value.xfsj !== 'custom') {
+ const c = dateTypeCounts?.find((e) => e.key === value.xfsj);
+ copyValue.startTime = c?.start;
+ copyValue.endTime = c?.end;
+ }
+ if (value.startTime && value.endTime && value.startTime.valueOf() > value.endTime.valueOf()) {
+ message.warning('查询条件投诉开始时间不能大于投诉结束时间');
+ return;
+ }
+ delete copyValue.xfsj;
+ delete copyValue.sadwMc;
+ delete copyValue.dqbldwMc;
+ // Object.keys(copyValue).forEach(key => {
+ // if (key !== 'startTime' && key !== 'endTime' && copyValue[key]) {
+ // copyValue[key] = JSON.stringify(copyValue[key]);
+ // }
+ // })
+ props.onSearch(copyValue);
+ };
+
+ const onFinishFailed = () => {};
+
+ const onChangeOrg = (params) => {
+ const { bm } = params;
+ form.setFieldsValue({ xjdwBm: bm });
+ };
+
+ // 专项类别更改
+ const handleChange = (keyField, evt, options) => {
+ // const value = evt.target ? evt.target.value : evt;
+ if (keyField === 'zxZbId') {
+ form.setFieldsValue({ zxLb: options.children });
+ }
+ };
+ // 跨级派发checkbox变化
+ const kjpfBoxChange = (e) => {
+ console.log('checked = ', e.target.checked);
+ if (e.target.checked) {
+ setBoxHidden(e.target.checked);
+ } else {
+ setBoxHidden(e.target.checked);
+ }
+ };
+ // select可搜索
+ const filterOption = (inputValue, option) => {
+ return option.children.indexOf(inputValue) > -1;
+ };
+
+ const renderDw = () => {
+ return (
+
+ -
+
+
+
+ );
+ // if (blfs === BLFS.DB.value) {
+ // return (
+ //
+ // {/* 办理方式是督办 */}
+ //
+ //
+ // )
+ // }
+ // if (blfs === BLFS.ZB.value) {
+ // return (
+ //
+ // -
+ // {/* 办理方式是转办 */}
+ //
+ //
+ //
+ // )
+ // }
+ };
+
+ return (
+
+ );
+};
+
+export default TopSearch;
diff --git a/src/pages/JDCX/TopSearch/index.less b/src/pages/JDCX/TopSearch/index.less
new file mode 100644
index 0000000..990a381
--- /dev/null
+++ b/src/pages/JDCX/TopSearch/index.less
@@ -0,0 +1,12 @@
+.TopSearch {
+ padding: 15px;
+ background-color: #fff;
+}
+
+.radioBox {
+ :global {
+ .ant-radio-button-wrapper {
+ padding: 0 9px;
+ }
+ }
+}
diff --git a/src/pages/JDCX/index.jsx b/src/pages/JDCX/index.jsx
new file mode 100644
index 0000000..acad0a7
--- /dev/null
+++ b/src/pages/JDCX/index.jsx
@@ -0,0 +1,153 @@
+import React, { useState } from 'react';
+import { Tabs } from 'antd';
+import { connect, history } from 'umi';
+
+import ProvinceSelect from '@/components/ProvinceSelect';
+
+import { secondTabName } from '@/utils/utils';
+import { UserLevel, processTab } from '@/utils/constants';
+
+import TableList from './TableList';
+
+const { TabPane } = Tabs;
+
+const Progress = (props) => {
+ const { user, isLocationInBu, locationType } = props;
+ const tabList = processTab(locationType);
+ const [activeKey, setActiveKey] = useState('department');
+ const [selectdProvince, setSelectdProvince] = useState('');
+ const [selectdCity, setSelectdCity] = useState('');
+ const [showProvinceSelect, setShowProvinceSelect] = useState(isLocationInBu);
+ const [departmentMsg, setDepartmentMsg] = useState(null);
+ const [provinceMsg, setProvinceMsg] = useState(null);
+ const [cityMsg, setCityMsg] = useState(null);
+ const [ifReload, setIfReload] = useState(null); // 页面是否要重新加载 为从待办跳转过来准备
+
+ const changeTab = (key) => {
+ setActiveKey(key);
+ setShowProvinceSelect(isLocationInBu);
+ setDepartmentMsg(null);
+ setProvinceMsg(null);
+ setCityMsg(null);
+ };
+
+ if (props.location.params) {
+ // 监控路由参数 点击消息跳转过来的会带params参数
+ const { type, msg, reload } = props.location.params; // type: 展示tab类型 msg: 消息带过来的查询条件
+ if (reload === ifReload) {
+ // 防止不断循环
+ return false;
+ }
+ setIfReload(reload);
+ if (type === 'department') {
+ // 跳转到部级下发
+ setActiveKey(type);
+ setDepartmentMsg(msg);
+ } else if (type === 'province') {
+ // 跳转到省级下发
+ setShowProvinceSelect(false);
+ setActiveKey(type);
+ setProvinceMsg(msg);
+ } else if (type === 'city') { // 跳转到市级下发
+ setShowProvinceSelect(false);
+ setActiveKey(type);
+ setCityMsg(msg);
+ }
+ history.push('/progresssearch'); // 清空参数 防止误判
+ }
+
+ const onSelectProvince = (key) => {
+ setSelectdProvince(key);
+ setActiveKey('province');
+ setShowProvinceSelect(false);
+ };
+
+ const onSelectCity = (key) => {
+ setSelectdCity(key);
+ setActiveKey('city');
+ setShowProvinceSelect(false);
+ }
+
+ const renderContent = () => {
+ console.log(props.dispatch);
+ if (activeKey === 'department') {
+ return (
+
+ );
+ }
+ if (activeKey === 'province') {
+ if (showProvinceSelect) {
+ return (
+
+ );
+ } else {
+ return (
+
+ );
+ }
+ }
+ if (activeKey === 'city'){
+ return
+ }
+
+ // return (
+ //
+ // );
+ };
+
+ return (
+
+
+ {/*
+
+
+ */}
+ {
+ tabList.map((item) => {
+ return (
+
+ );
+ })
+ }
+
+ {renderContent()}
+
+ );
+};
+
+export default connect(({ user }) => ({
+ user: user.currentUser,
+ isLocationInBu: user.isLocationInBu,
+ locationType: user.locationType
+}))(Progress);
diff --git a/src/pages/YBSX/TableList/index.jsx b/src/pages/YBSX/TableList/index.jsx
new file mode 100644
index 0000000..086e97b
--- /dev/null
+++ b/src/pages/YBSX/TableList/index.jsx
@@ -0,0 +1,300 @@
+import React, { useState, useEffect } from 'react';
+import { Table, Modal, Button, Tooltip, Pagination } from 'antd';
+import { connect } from 'umi';
+import moment from 'moment';
+
+import TopSearch from '../TopSearch';
+import CK from '@/components/Tabs-CK';
+import { getDicsName } from '@/utils/utils';
+import { AJZT, UserLevel } from '@/utils/constants';
+import { getHGIcons, ExampleBar } from '@/components/MyIcons';
+
+const initDateType = 'sevenDays';
+const initSearchParams = {
+ page: 1,
+ size: 10,
+ startTime: moment().add(-7, 'days'),
+ endTime: moment(),
+};
+
+const TableList = (props) => {
+ const { sysToken, refesh, isLocationInBu, type, locationType } = props;
+ const [searchParams, setSearchParams] = useState(initSearchParams);
+ const [tableData, setTableData] = useState(null);
+ // const [selectedRowKeys, setSelectedRowKeys] = useState([]);
+ const [nowModalComponent, setNowModalComponent] = useState(null);
+
+ const getList = (params) => {
+ const newParams = isLocationInBu && type === 'sheng' ? { ...params, sign: 1 } : params; // 部里发布 并且查询省里的列表加额外参数
+ const newSysToken = (locationType === UserLevel.Province.value && type === 'sheng')|| (locationType === UserLevel.City.value && type === 'shi') ? '' : sysToken;
+ props.fetchDoneList({ params: newParams, sysToken:newSysToken }).then((data) => setTableData(data));
+ };
+
+ const hideModal = (flag) => {
+ if (flag) {
+ getList(searchParams);
+ }
+ setNowModalComponent(null);
+ };
+
+ useEffect(() => {
+ getList(searchParams);
+ }, [refesh]);
+
+ // 点击查询
+ const onSearch = (params) => {
+ setSearchParams({ ...searchParams, ...params, page: 1 });
+ getList({ ...searchParams, ...params, page: 1 });
+ };
+
+ const handleReset = () => {
+ setSearchParams(initSearchParams);
+ getList(initSearchParams);
+ };
+
+ const changePage = (page) => {
+ setSearchParams({ ...searchParams, page });
+ getList({ ...searchParams, page });
+ };
+
+ // const rowSelection = {
+ // selectedRowKeys,
+ // onChange: selectedRowKeys,
+ // getCheckboxProps: record => ({
+ // disabled: selectAbleType === 'folder' ? record.isDir !== 1 : record.isDir === 1,
+ // }),
+ // };
+
+ const columns = [
+ {
+ title: '序号',
+ dataIndex: 'id',
+ key: 'id',
+ render: (text, record, index) => index + 1,
+ width: '5%',
+ },
+ {
+ title: '预警编号',
+ dataIndex: 'yjBh',
+ width: '22%',
+ render: (text, record) => {
+ return (
+
+ {getHGIcons(record?.ccjg)}
+ {text}
+
+ );
+ },
+ },
+ {
+ title: '模型名称',
+ dataIndex: 'mxMc',
+ width: '8%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '问题类型',
+ dataIndex: 'cjwtLx',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '承办督察部门',
+ dataIndex: 'sadwMc',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '问题简述',
+ dataIndex: 'wtjs',
+ width: '7%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '当前办理单位',
+ dataIndex: 'dqbldwMc',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '当前办理人',
+ dataIndex: 'dqblrMc',
+ width: '8%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '预警流向',
+ dataIndex: 'blfsMc',
+ width: '7%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '最新状态',
+ dataIndex: 'dqZt',
+ width: '7%',
+ render: (text) => (
+
+ {getDicsName(AJZT, text)}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '最新更新时间',
+ dataIndex: 'updateTime',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '最迟反馈时间',
+ dataIndex: 'zcfkSj',
+ width: '9%',
+ render: (text) => (
+
+ {text}
+
+ ),
+ ellipsis: { showTitle: false },
+ },
+ {
+ title: '操作',
+ key: 'id',
+ dataIndex: 'id',
+ width: '5%',
+ render: (text, record) => {
+ return (
+ // 部级用户 没有抽查省级源数据的权限
+
+ );
+ },
+ fixed: 'right',
+ },
+ ];
+
+ return (
+
+
+
changePage(page),
+ // showSizeChanger: true,
+ // onShowSizeChange: () => this.onShowSizeChange,
+ // pageSizeOptions: ['10', '20', '50', '100', '500', '1000'],
+ />
+
+
+
changePage(page)}
+ showTotal={(total) => `共 ${total} 条`}
+ />
+
+
+ {nowModalComponent && (
+ setNowModalComponent(null)}
+ // style={{ background: '#fff', paddingBottom: 0, minHeight: 560 }}
+ maskClosable={false}
+ width={1000}
+ >
+ {nowModalComponent}
+
+ )}
+
+ );
+};
+
+const mapStateToProps = ({ user, doing, loading }) => ({
+ user: user.currentUser,
+ doing,
+ loading: loading.effects['doing/fetchDoneList'] || false,
+});
+const mapDispatchToProps = (dispatch) => ({
+ // 列表
+ fetchDoneList({ params, sysToken }) {
+ const chooseTime = {};
+ if (params.startTime)
+ chooseTime.startTime = `${params.startTime.format('YYYY-MM-DD')} 00:00:00`;
+ if (params.endTime) chooseTime.endTime = `${params.endTime.format('YYYY-MM-DD')} 23:59:59`;
+ return dispatch({
+ type: 'doing/fetchDoneList',
+ payload: { params: { ...params, ...chooseTime }, sysToken },
+ });
+ },
+ fetchReBJCheck(params) {
+ return dispatch({ type: 'doing/fetchReBJCheck', payload: params });
+ },
+});
+export default connect(mapStateToProps, mapDispatchToProps)(TableList);
diff --git a/src/pages/YBSX/TopSearch/README.md b/src/pages/YBSX/TopSearch/README.md
new file mode 100644
index 0000000..0d8eb6b
--- /dev/null
+++ b/src/pages/YBSX/TopSearch/README.md
@@ -0,0 +1 @@
+已办列表上部查询
diff --git a/src/pages/YBSX/TopSearch/index.jsx b/src/pages/YBSX/TopSearch/index.jsx
new file mode 100644
index 0000000..64291ad
--- /dev/null
+++ b/src/pages/YBSX/TopSearch/index.jsx
@@ -0,0 +1,293 @@
+import React, { useState } from 'react';
+import { Row, Col, Form, Input, Radio, Button, DatePicker, Select, Checkbox, message } from 'antd';
+import moment from 'moment';
+
+import NextOrg from '@/components/NextOrg';
+import { YJLX, BLFS, SLFS, CCQK } from '@/utils/constants';
+
+import styles from './index.less';
+
+const { Item } = Form;
+const { Option } = Select;
+
+const upGrid = { xs: 12, sm: 12, md: 12, lg: 12, xl: 12, xxl: 8 };
+const bottomGrid = { xs: 12, sm: 12, md: 12, lg: 6, xl: 6, xxl: 4 };
+
+const layout = {
+ labelCol: { span: 5 },
+ wrapperCol: { span: 19 },
+};
+
+const latterLayout = {
+ labelCol: { span: 10 },
+ wrapperCol: { span: 14 },
+};
+
+const dateTypeCounts = [
+ {
+ key: 'threeDays',
+ label: '近3天',
+ start: moment().add(-3, 'days'),
+ end: moment(),
+ },
+ {
+ key: 'sevenDays',
+ label: '近7天',
+ start: moment().add(-7, 'days'),
+ end: moment(),
+ },
+ {
+ key: 'months',
+ label: '近一个月',
+ start: moment().add(-1, 'months'),
+ end: moment(),
+ },
+ {
+ key: 'quarters',
+ label: '近三个月',
+ start: moment().add(-1, 'quarters'),
+ end: moment(),
+ },
+ {
+ key: 'years',
+ label: '近一年',
+ start: moment().add(-1, 'years'),
+ end: moment(),
+ },
+];
+
+const TopSearch = props => {
+ const [form] = Form.useForm();
+ const { initParams, initDateType } = props;
+ const [dateType, setDateType] = useState(initDateType);
+
+ const handleReset = () => {
+ form.resetFields();
+ setDateType(initDateType);
+ props.handleReset();
+ };
+
+ const handleDateTypeChange = e => {
+ setDateType(e.target.value);
+ };
+
+ const renderRange = () => (
+
+
+
+
+ ~
+
+
+
+
+ );
+
+ const onFinish = (value) => {
+ const copyValue = { ...value };
+ if (value.xfsj !== 'custom') {
+ const c = dateTypeCounts?.find(e => e.key === value.xfsj);
+ copyValue.startTime = c?.start;
+ copyValue.endTime = c?.end;
+ }
+ if (value.startTime && value.endTime && (value.startTime.valueOf() > value.endTime.valueOf())) {
+ message.warning('查询条件投诉开始时间不能大于投诉结束时间');
+ return;
+ }
+ delete copyValue.xfsj;
+ delete copyValue.sadwMc;
+ delete copyValue.dqbldwMc;
+ // Object.keys(copyValue).forEach(key => {
+ // if (key !== 'startTime' && key !== 'endTime' && copyValue[key]) {
+ // copyValue[key] = JSON.stringify(copyValue[key]);
+ // }
+ // })
+ props.onSearch(copyValue);
+ };
+
+ const onFinishFailed = () => {
+
+ };
+
+ const onChangeOrg = params => {
+ const { bm } = params;
+ form.setFieldsValue({ xjdwBm: bm });
+ }
+
+ const renderDw = () => {
+ return (
+
+ -
+
+
+
+ )
+ // if (blfs === BLFS.DB.value) {
+ // return (
+ //
+ // {/* 办理方式是督办 */}
+ //
+ //
+ // )
+ // }
+ // if (blfs === BLFS.ZB.value) {
+ // return (
+ //
+ // -
+ // {/* 办理方式是转办 */}
+ //
+ //
+ //
+ // )
+ // }
+ }
+
+ return (
+
+ );
+};
+
+export default TopSearch;
diff --git a/src/pages/YBSX/TopSearch/index.less b/src/pages/YBSX/TopSearch/index.less
new file mode 100644
index 0000000..990a381
--- /dev/null
+++ b/src/pages/YBSX/TopSearch/index.less
@@ -0,0 +1,12 @@
+.TopSearch {
+ padding: 15px;
+ background-color: #fff;
+}
+
+.radioBox {
+ :global {
+ .ant-radio-button-wrapper {
+ padding: 0 9px;
+ }
+ }
+}
diff --git a/src/pages/YBSX/index.jsx b/src/pages/YBSX/index.jsx
new file mode 100644
index 0000000..fbae96a
--- /dev/null
+++ b/src/pages/YBSX/index.jsx
@@ -0,0 +1,107 @@
+import React, { useState } from 'react';
+import { Tabs } from 'antd';
+import { connect } from 'umi';
+
+import ProvinceSelect from '@/components/ProvinceSelect';
+import { UserLevel, processTab } from '@/utils/constants';
+import TableList from './TableList';
+
+import { secondTabName } from '@/utils/utils';
+
+const { TabPane } = Tabs
+
+const Done = (props) => {
+ const { user, isLocationInBu, locationType } = props;
+ const tabList = processTab(locationType);
+ const [activeKey, setActiveKey] = useState('department');
+ const [selectdProvince, setSelectdProvince] = useState('');
+ const [showProvinceSelect, setShowProvinceSelect] = useState(isLocationInBu);
+
+ const changeTab = (key) => {
+ setActiveKey(key);
+ setShowProvinceSelect(isLocationInBu);
+ }
+
+ const onSelectProvince = (key) => {
+ setSelectdProvince(key);
+ setActiveKey('province');
+ setShowProvinceSelect(false);
+ }
+
+ const renderContent = () => {
+ if (activeKey === 'department') {
+ return (
+
+ )
+ }
+ if (activeKey === 'province' ) {
+ if(showProvinceSelect){
+ return
+ }else{
+ return(
+
+ )
+ }
+ }
+ if (activeKey === 'city'){
+ return
+ }
+ // return (
+ // )
+ }
+
+ return (
+
+
+ {/*
+ */}
+ {/*
+
+ */}
+ {
+ tabList.map((item) => {
+ return (
+
+ );
+ })
+ }
+
+ {
+ renderContent()
+ }
+
+
+ )
+}
+
+
+export default connect(({ user }) => ({
+ user: user.currentUser,
+ isLocationInBu: user.isLocationInBu,
+ locationType: user.locationType
+}))(Done);
diff --git a/src/pages/GZT/HCBGBtn/index.jsx b/src/pages/ZBSX/HCBGBtn/index.jsx
similarity index 100%
rename from src/pages/GZT/HCBGBtn/index.jsx
rename to src/pages/ZBSX/HCBGBtn/index.jsx
diff --git a/src/pages/GZT/README.md b/src/pages/ZBSX/README.md
similarity index 100%
rename from src/pages/GZT/README.md
rename to src/pages/ZBSX/README.md
diff --git a/src/pages/GZT/TableList/README.md b/src/pages/ZBSX/TableList/README.md
similarity index 100%
rename from src/pages/GZT/TableList/README.md
rename to src/pages/ZBSX/TableList/README.md
diff --git a/src/pages/GZT/TableList/index.jsx b/src/pages/ZBSX/TableList/index.jsx
similarity index 100%
rename from src/pages/GZT/TableList/index.jsx
rename to src/pages/ZBSX/TableList/index.jsx
diff --git a/src/pages/GZT/TopSearch/README.md b/src/pages/ZBSX/TopSearch/README.md
similarity index 100%
rename from src/pages/GZT/TopSearch/README.md
rename to src/pages/ZBSX/TopSearch/README.md
diff --git a/src/pages/GZT/TopSearch/index.jsx b/src/pages/ZBSX/TopSearch/index.jsx
similarity index 100%
rename from src/pages/GZT/TopSearch/index.jsx
rename to src/pages/ZBSX/TopSearch/index.jsx
diff --git a/src/pages/GZT/TopSearch/index.less b/src/pages/ZBSX/TopSearch/index.less
similarity index 100%
rename from src/pages/GZT/TopSearch/index.less
rename to src/pages/ZBSX/TopSearch/index.less
diff --git a/src/pages/GZT/index.jsx b/src/pages/ZBSX/index.jsx
similarity index 100%
rename from src/pages/GZT/index.jsx
rename to src/pages/ZBSX/index.jsx