diff --git a/src/service/apiurl.js b/src/service/apiurl.js
index 5ed937bca..908cc16c4 100644
--- a/src/service/apiurl.js
+++ b/src/service/apiurl.js
@@ -226,6 +226,17 @@ const apiurl = {
},
+ sy: {
+ yjxx: {
+ page: service_fxdd + "/warningRule/info/page",
+ },
+ yjxxpz: {
+ page: service_fxdd + "/warningRule/page",
+ edit: service_fxdd + '/warningRule/update',
+ save: service_fxdd + '/warningRule/insert',
+ del: service_fxdd + "/warningRule/del/",
+ }
+ },
// 防汛准备
fxzb1: {
ddgc: {
diff --git a/src/views/AppRouters.tsx b/src/views/AppRouters.tsx
index 704192ef1..c8b32ff25 100644
--- a/src/views/AppRouters.tsx
+++ b/src/views/AppRouters.tsx
@@ -21,6 +21,8 @@ import Fxya from './fxzb/fxya'
import Hsybjs from './fxzb/hsybjs'
import Ybfagl from './fxzb/ybfagl'
import Csgl from './fxzb/csgl'
+import Yjxx from './fxzb/yjxx'
+import Gzpz from './fxzb/gzpz'
import Qxdw_Gc from './fxzb/qxdw/gc/index.js'
import Qxwl_Gc from './fxzb/qxwl/gc'
@@ -162,6 +164,10 @@ const AppRouters: React.FC = () => {
{ path: 'sy/hsyb/ybfagl', element: },
{ path: 'sy/hsyb/csgl', element: },
+ // 四预-洪水预警
+ { path: 'sy/hsyj/yjxx', element: },
+ { path: 'sy/hsyj/gzpz', element: },
+
// 调度规程
{ path: 'sy/ddgc', element: },
diff --git a/src/views/fxzb/gzpz/form.js b/src/views/fxzb/gzpz/form.js
new file mode 100644
index 000000000..e59560b71
--- /dev/null
+++ b/src/views/fxzb/gzpz/form.js
@@ -0,0 +1,175 @@
+import React, { useEffect, useState, useMemo, useRef } from 'react';
+import { Form, Button, Input, Row, Upload, Col, Table, DatePicker, InputNumber, message, Image, Modal, Radio, Popconfirm } from 'antd';
+import { DeleteOutlined, VideoCameraOutlined } from '@ant-design/icons';
+import { formItemLayout, btnItemLayout } from '../../../components/crud/FormLayoutProps';
+import apiurl from '../../../service/apiurl';
+import NormalSelect from '../../../components/Form/NormalSelect';
+import moment from 'moment';
+const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
+ const [form] = Form.useForm();
+ const onfinish = (values) => {
+ const userId = localStorage.getItem('userId')
+ values.userId = userId
+ if (mode === 'edit') {
+ onEdit(apiurl.sy.yjxxpz.edit, { ...record, ...values })
+ }
+ if (mode === 'save') {
+ onSave(apiurl.sy.yjxxpz.save, values)
+ }
+ }
+
+ useEffect(() => {
+ if (mode == "save") {
+ const name = localStorage.getItem('userName')
+ form.setFieldValue("createName", name)
+ form.setFieldValue("createTime", moment())
+ }
+ }, [mode])
+
+ return (
+ <>
+
+
+
+ >
+ )
+ }
+
+ >
+ );
+}
+
+export default ModalForm;
diff --git a/src/views/fxzb/gzpz/index.js b/src/views/fxzb/gzpz/index.js
new file mode 100644
index 000000000..566922e13
--- /dev/null
+++ b/src/views/fxzb/gzpz/index.js
@@ -0,0 +1,105 @@
+import React, { Fragment, useRef, useMemo,useEffect,useState } from 'react';
+import BasicCrudModal from '../../../components/crud/BasicCrudModal';
+import { Table, Card, Modal, Form, Input, Button, Row,Col, Timeline, message, Tabs,Image } from 'antd';
+import {FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons';
+import { useSelector } from 'react-redux';
+import ToolBar from './toolbar';
+import ModalForm from './form';
+import apiurl from '../../../service/apiurl';
+import usePageTable from '../../../components/crud/usePageTable2';
+import { createCrudService } from '../../../components/crud/_';
+import {CrudOpRender_text} from '../../../components/crud/CrudOpRender';
+import moment from 'moment';
+const url = "http://223.75.53.141:9100/gs-tsg"
+const Page = () => {
+ const role = useSelector(state => state.auth.role);
+ const editBtn = role?.rule?.find(item => item.menuName == "编辑")|| true;
+ const viewBtn = role?.rule?.find(item => item.menuName == "查看")|| true;
+ const delBtn = role?.rule?.find(item => item.menuName == "删除")|| true;
+ const levelObj = {
+ 0: "蓝色",
+ 1: "黄色",
+ 2: "橙色",
+ 3: "红色",
+ }
+ const refModal = useRef();
+ const [searchVal, setSearchVal] = useState(false)
+ const columns = [
+ { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" },
+ { title: '预警时间', key: 'createTime', dataIndex: 'createTime', width: 140, align: "center", },
+ { title: '规则名称', key: 'ruleName', dataIndex: 'ruleName', width: 140, align: "center", },
+ { title: '预警等级', key: 'warningLevel', dataIndex: 'warningLevel', width: 100, align: "center", render: (v) => {levelObj[v]} },
+ { title: '预警信息', key: 'ruleInfo', dataIndex: 'ruleInfo', width: 300, align: "center", },
+ {
+ title: '操作', key: 'operation', width: 100, fixed: 'right', align: 'center',
+ render: (value, row, index) => ( () => command(cmd)(row)} />)
+ },
+ ];
+
+
+ const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]);
+
+ const command = (type) => (params) => {
+ if (type === 'save') {
+ refModal.current.showSave();
+ } else if (type === 'edit') {
+ refModal.current.showEdit({ ...params });
+ } else if (type === 'view') {
+ refModal.current.showView(params);
+ } else if (type === 'del') {
+ refModal.current.onDeleteGet(apiurl.sy.yjxxpz.delete + `${params.id}`);
+ }
+ }
+
+
+
+ const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.sy.yjxxpz.page).find_noCode);
+
+ /**
+ * @description 处理成功的回调
+ */
+ const successCallback = () => {
+ refresh()
+ }
+ useEffect(() => {
+ if (searchVal) {
+ const params = {
+ search: {
+ ...searchVal,
+ }
+ };
+ search(params)
+ }
+ }, [searchVal])
+
+
+ return (
+ <>
+
+
+
+
{refresh({addvcd:localStorage.getItem('ADCD6')})}}
+ />
+
+ >
+ );
+}
+
+export default Page;
diff --git a/src/views/fxzb/gzpz/toolbar.js b/src/views/fxzb/gzpz/toolbar.js
new file mode 100644
index 000000000..635bd9726
--- /dev/null
+++ b/src/views/fxzb/gzpz/toolbar.js
@@ -0,0 +1,57 @@
+import React, { useEffect,useState } from 'react';
+import { Form, Input, Button, DatePicker } from 'antd';
+
+import moment from 'moment';
+import NormalSelect from '../../../components/Form/NormalSelect';
+const { RangePicker } = DatePicker;
+const ToolBar = ({ setSearchVal, onSave, storeData, role }) => {
+ const addBtn = role?.rule?.find(item => item.menuName == "新增")|| true;
+ const searchBtn = role?.rule?.find(item => item.menuName == "查询")|| true;
+
+
+ const [form] = Form.useForm();
+
+ const onFinish = (values) => {
+ setSearchVal({...values})
+ }
+
+ return (
+ <>
+
+
+
+
+
+
+
+ {searchBtn ?
+
+ : null }
+
+
+
+
+ {
+ (onSave && addBtn) ?
+
+
+
+ :null
+ }
+
+
+ >
+ );
+}
+
+export default ToolBar;
\ No newline at end of file
diff --git a/src/views/fxzb/yjxx/form.js b/src/views/fxzb/yjxx/form.js
new file mode 100644
index 000000000..bd92a75b5
--- /dev/null
+++ b/src/views/fxzb/yjxx/form.js
@@ -0,0 +1,90 @@
+import React,{useEffect,useState,useMemo,useRef} from 'react';
+import { Form, Button, Input, Row,Upload, Col, Table, DatePicker, InputNumber,message,Image,Modal,Radio ,Popconfirm } from 'antd';
+import { DeleteOutlined,VideoCameraOutlined } from '@ant-design/icons';
+import { formItemLayout, btnItemLayout } from '../../../components/crud/FormLayoutProps';
+import apiurl from '../../../service/apiurl';
+import NormalSelect from '../../../components/Form/NormalSelect';
+import moment from 'moment';
+const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
+ const [form] = Form.useForm();
+ const onfinish = (values) => {
+ const userId = localStorage.getItem('userId')
+ values.userId = userId
+ if (mode === 'edit') {
+ onEdit(apiurl.rcgl.wxyh.edit,{...record,...values})
+ }
+ if (mode === 'save') {
+ onSave(apiurl.rcgl.wxyh.save,values)
+ }
+ }
+
+
+
+ return (
+ <>
+
+
+
+ >
+ )
+ }
+
+ >
+ );
+}
+
+export default ModalForm;
diff --git a/src/views/fxzb/yjxx/index.js b/src/views/fxzb/yjxx/index.js
new file mode 100644
index 000000000..566922e13
--- /dev/null
+++ b/src/views/fxzb/yjxx/index.js
@@ -0,0 +1,105 @@
+import React, { Fragment, useRef, useMemo,useEffect,useState } from 'react';
+import BasicCrudModal from '../../../components/crud/BasicCrudModal';
+import { Table, Card, Modal, Form, Input, Button, Row,Col, Timeline, message, Tabs,Image } from 'antd';
+import {FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons';
+import { useSelector } from 'react-redux';
+import ToolBar from './toolbar';
+import ModalForm from './form';
+import apiurl from '../../../service/apiurl';
+import usePageTable from '../../../components/crud/usePageTable2';
+import { createCrudService } from '../../../components/crud/_';
+import {CrudOpRender_text} from '../../../components/crud/CrudOpRender';
+import moment from 'moment';
+const url = "http://223.75.53.141:9100/gs-tsg"
+const Page = () => {
+ const role = useSelector(state => state.auth.role);
+ const editBtn = role?.rule?.find(item => item.menuName == "编辑")|| true;
+ const viewBtn = role?.rule?.find(item => item.menuName == "查看")|| true;
+ const delBtn = role?.rule?.find(item => item.menuName == "删除")|| true;
+ const levelObj = {
+ 0: "蓝色",
+ 1: "黄色",
+ 2: "橙色",
+ 3: "红色",
+ }
+ const refModal = useRef();
+ const [searchVal, setSearchVal] = useState(false)
+ const columns = [
+ { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align: "center" },
+ { title: '预警时间', key: 'createTime', dataIndex: 'createTime', width: 140, align: "center", },
+ { title: '规则名称', key: 'ruleName', dataIndex: 'ruleName', width: 140, align: "center", },
+ { title: '预警等级', key: 'warningLevel', dataIndex: 'warningLevel', width: 100, align: "center", render: (v) => {levelObj[v]} },
+ { title: '预警信息', key: 'ruleInfo', dataIndex: 'ruleInfo', width: 300, align: "center", },
+ {
+ title: '操作', key: 'operation', width: 100, fixed: 'right', align: 'center',
+ render: (value, row, index) => ( () => command(cmd)(row)} />)
+ },
+ ];
+
+
+ const width = useMemo(() => columns.reduce((total, cur) => total + (cur.width), 0), [columns]);
+
+ const command = (type) => (params) => {
+ if (type === 'save') {
+ refModal.current.showSave();
+ } else if (type === 'edit') {
+ refModal.current.showEdit({ ...params });
+ } else if (type === 'view') {
+ refModal.current.showView(params);
+ } else if (type === 'del') {
+ refModal.current.onDeleteGet(apiurl.sy.yjxxpz.delete + `${params.id}`);
+ }
+ }
+
+
+
+ const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.sy.yjxxpz.page).find_noCode);
+
+ /**
+ * @description 处理成功的回调
+ */
+ const successCallback = () => {
+ refresh()
+ }
+ useEffect(() => {
+ if (searchVal) {
+ const params = {
+ search: {
+ ...searchVal,
+ }
+ };
+ search(params)
+ }
+ }, [searchVal])
+
+
+ return (
+ <>
+
+
+
+
{refresh({addvcd:localStorage.getItem('ADCD6')})}}
+ />
+
+ >
+ );
+}
+
+export default Page;
diff --git a/src/views/fxzb/yjxx/toolbar.js b/src/views/fxzb/yjxx/toolbar.js
new file mode 100644
index 000000000..ec5d600ea
--- /dev/null
+++ b/src/views/fxzb/yjxx/toolbar.js
@@ -0,0 +1,78 @@
+import React, { useEffect,useState } from 'react';
+import { Form, Input, Button, DatePicker } from 'antd';
+
+import moment from 'moment';
+import NormalSelect from '../../../components/Form/NormalSelect';
+const { RangePicker } = DatePicker;
+const ToolBar = ({ setSearchVal, onSave, storeData, role }) => {
+ const addBtn = role?.rule?.find(item => item.menuName == "新增")|| true;
+ const searchBtn = role?.rule?.find(item => item.menuName == "查询")|| true;
+
+
+ const [form] = Form.useForm();
+
+ const onFinish = (values) => {
+ let dateTimeRangeSo;
+ if (values.tm) {
+ dateTimeRangeSo = {
+ start: moment(values.tm[0]).format('YYYY-MM-DD 00:00:00'),
+ end: moment(values.tm[1]).format('YYYY-MM-DD 23:59:59')
+ }
+ }
+ delete values.tm
+ setSearchVal({...values, dateTimeRangeSo});
+ }
+
+ useEffect(() => {
+ let dateTimeRangeSo = {
+ start: moment().subtract(1,"months").format('YYYY-MM-DD 00:00:00'),
+ end: moment().format('YYYY-MM-DD 23:59:59')
+ }
+ form.setFieldValue("tm", [moment(dateTimeRangeSo.start), moment(dateTimeRangeSo.end)])
+ setSearchVal({ dateTimeRangeSo })
+ }, [])
+
+ return (
+ <>
+
+
+
+
+
+
+
+ {searchBtn ?
+
+ : null }
+
+
+
+
+ {
+ (onSave && addBtn) ?
+
+
+
+ :null
+ }
+
+
+ >
+ );
+}
+
+export default ToolBar;
\ No newline at end of file