From 2dccbd2b45825d9d7f0c98df362fdeda34a5b996 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Wed, 9 Oct 2024 17:03:44 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E6=B0=B4=E8=B5=84=E6=BA=90=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/images/ggll.jpg | Bin 0 -> 1718 bytes public/assets/images/gsl.jpg | Bin 0 -> 1800 bytes public/assets/images/gsts.jpg | Bin 0 -> 1479 bytes public/assets/images/ksw.jpg | Bin 0 -> 1375 bytes public/assets/images/scll.jpg | Bin 0 -> 1739 bytes public/assets/images/yclsl.jpg | Bin 0 -> 1715 bytes src/models/auth/_.ts | 15 +- src/service/apiurl.js | 2 + src/views/AppRouters.tsx | 8 +- src/views/fxzb/ddgc/form.js | 2 +- src/views/fxzb/fxya/form.js | 2 +- src/views/gcaqjc/sjtjcx/ndsltjb/index.js | 1 + src/views/gcaqjc/sjtjcx/ndsytjb/index.js | 3 +- src/views/gxsl/dxnjyzl/index.js | 6 +- src/views/gxsl/dxnjyzl/toolbar.js | 4 +- src/views/gxsl/gsnlfx/KrLine.js | 100 ++++++++++ src/views/gxsl/gsnlfx/drpOption.js | 130 +++++++++++++ src/views/gxsl/gsnlfx/index.js | 236 +++++++++++++++++++++++ src/views/gxsl/gsnlfx/index.less | 83 ++++++++ src/views/rcgl/byfz/bypc/form.js | 4 +- src/views/zbgl/zbb/index.js | 1 + src/views/zbgl/zbb/toolbar.js | 4 +- 22 files changed, 585 insertions(+), 16 deletions(-) create mode 100644 public/assets/images/ggll.jpg create mode 100644 public/assets/images/gsl.jpg create mode 100644 public/assets/images/gsts.jpg create mode 100644 public/assets/images/ksw.jpg create mode 100644 public/assets/images/scll.jpg create mode 100644 public/assets/images/yclsl.jpg create mode 100644 src/views/gxsl/gsnlfx/KrLine.js create mode 100644 src/views/gxsl/gsnlfx/drpOption.js create mode 100644 src/views/gxsl/gsnlfx/index.js create mode 100644 src/views/gxsl/gsnlfx/index.less diff --git a/public/assets/images/ggll.jpg b/public/assets/images/ggll.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5351031dee0c9ec518f836b865959037bef7446e GIT binary patch literal 1718 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/gsts.jpg b/public/assets/images/gsts.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f26110f74a408348ede9b9c7ef49f36d2cecabf7 GIT binary patch literal 1479 zcmbW!doQ* z2n0M1k0)ACNJI;=1s+ebB$25!I-O1!H=bchV^C;xn&}bPBt!5WU=09-HX2NfuK^*9J(^*#<~Y3ZKsgB@AS4ojLYlfZo=!0C z0~8rev6;g)qw+&AwmWG~`;X;gCoe9&MfYj$pW?h(m~4)-9M72W19R#$yXp3GSuU<_ z^W2ws@I03;TfV|~&00VIb?XB{w+O$uL_g-DSqTx|XYujUGdq=10g}O)c@>Or&>jCZH z$DvQdI{k>r1p(w=tnadaxX4Bq0);}NFeVp-5F00wj6&PYF{5z#n2?=RTc`b4+TvsR zrMJu{JNxw0Hw&9_mQ&`cm;)x-7ummqCI2tkci7*qPC!6H#?M2N0SAn+ZseS=+|+<3 z*!iOBh9mE`EZUtfQZOb?FX74DTkTaEMZj!_rga}3bw!NILDkE`3b|O>;~gnxmd;Uhi(ReX^uQn%2JV-|Ft931tbE=e zTZlbzU)QA~e#%pQIH-M{Il7=?psh##q@sO~AahwL$)onAws5}Cdmb$8^yN|59+0EcSKIf?@qA4`}I}NNv)EG*fVt@FHU>c z?4wCM+V)YO>ZHWM;H6AW8AN3?yZP)n&xmEo@Ua%5IxQXNTKZeX`RFrWI0z=+H1 zt>#R!64f^)aCixla-ZIgqNFFgkbFC}Pw& zaUqAY)5e3MK^H%$7$+4qadL@?OGrwos;O&eYMGdtnOj&|IlH*JxqEne1&4%&g-1k2 zC8wmOrDtSj6_=Ejl~+_&HMg|3wRd!OO`1Gq>a^)IX3ko)c*)Xb%U7&iwQ2K~t=qQm z*tzS_;UhlG{sQ@nk%1ZF zEx6Cn{3QtV7ZVE$GYdP&UyMxUK+G)2!m4P(ZXWYowZ;xuvL#)F*7#z7xM zlZq~KiK&=8RQ(9@8rWyVd8~;npTRwb@YgK{9%e>h1CV^-?x9;W!;pWdv8B^B|NXjMer@Tc!{O^@FZDfjcXIv2)8WES&0cG+M8CWA=iGghv;~{@ zZoiV7ymRY3>)DlTPo|0Utg&^Jk(#yhR_4vQoXggAn{7XzJHam1wpTQ&tDR$Sl&24KZV~%s4Cf_wx{o~oX zwf!eIo}ZeK_34mil;(~<@3!YxZ~nA~t+*lPyuA0UqP$O;-cQpvMMugW3Hu(;_@_2G zU-Za!IiYJQH=mxm`6*sO_-jmG_4*y_E7tee_&$Cw_{VMc)@@hxTK+TaW#Z0Q91>dg zAemWxeNpzCCoCE)?-Yt^v!8ALqw8an;V*D`waS%Qud^e6-Mslr-g`pQ%15ek5+zqP zwmh2eeed<9SFf)`X)N03@S6#1xMg+x(a0~W5I^SM_*J?#}&qS++gqQ(<52 zqb}{|8-M(|*_)pm`TAms_laLJY)pNz?l&$*mFAcIIn<@G-r`GdtkZ#0$3hh39$b~* zxPR3}*W$~QpPEhz=Ld1VnSYJaSetip6N0zsjZXKrs)S=dJrdj*0$oKQ literal 0 HcmV?d00001 diff --git a/public/assets/images/scll.jpg b/public/assets/images/scll.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f9e0c1658af55b0fe226b00bc4dbb2b8d1c1823 GIT binary patch literal 1739 zcmbW#eK^xw902g&Y-1R0Hq)EyU0!;*D1>XFso^GXc`F_aNz~>gCZkf~sjF5}vg9ph zA~Hf*<~3z3gwhZVDVJRDv)#G3+kKw<*S+_9zUO()dCvEo=X{=XME#;+0AXi~w*^2T z5b#{w0Fe+tyPOJ&JmW_SG*fj64>|1@5g90Y2iO2$35oR-2Sl7u7!(SDKxL$)Bw=tF zI9ygnR#r}40U;-kl$Vu7U=T;R*^je5a1d|j;_7z9-NVx>fDjlId_3etL}XO-nV4Aeg`|s@k}s#EQg7T$ zzm;+OPG)Xie!+vnB6@Mf<4R^#^^=-fc4Jd>OKaPU_SfA#y>I&Z2i}f+7#;h_AD@`~ zH2Zb#xA}#|rR9}%7YG3V$@(t)hYKloNkAZAh}60ZBymRE!AJ;H%|KGY%1O$Ph*CE^ z2SZz5&na(^)-ZCOQS>KqWiXn%N3>?wX@AK69qj!7l6{B$?RpEq!65PDfsp_fSTlK6 zNA(;GS92W(POxr^0NyDMjVP>lTuhrQn&PJ7w}#dIGN-cIvCQRT7w^uMnJ%Tx=Go6! z__;~e2OpstWbY%UUJbSduKRSNspyBCjvAku?8aG=@9LQ01*(& zGW$@kB5>o@t9t9bYu^#2T0>dRrg>Y+}WQT_8hRQj3v|>_2*nJNO@4q z&Dibh>Q%*}4yjT<#i3rOGH@hQ+$Zkqe6CjO$}*OR+2f3N$+VgOLyxv zt?_<#tF?37?SxBXaU_j~*BN5+#vNxE!v%#&7-e^N*|^f|EW)%sDQ*{oT>bG=yhEZD zgs^#-qIcG#aw(SZh)s_z;TXx$Ep&vdqgiD6!a0rPUTg^T*-Vn|1240fdt=Mmh>KLz za~_Mwp}5U+$PwM!F~N74saf96(T=%3H1#@R;cjA0(BXRu3i#$@r4Lu;Z+uxn3GA2l z9Pf-Mjj?tLWDI0mhU&)}v@KU8lCBQQCs&y-BuEM=RnvnC#r>KXK$LHi!|SYr{Qe9vR;mm7A*np_8fk zL+=Qzq&OYoA|5G__se3ug(``Wn;ml|9X_)dq^0w`CapPY1AeXNB)Ou@KY`w& z&tb9>y{ePvZRjy79--QrA|S6rUqeSYL8LVfu#E7EX)P}kckrgSL~`KMVYTtDsFk4l z)W`tOy?zFCD~1<|7?QAqS$lxPt}J?M`VVA(ZBn$l*N zDOOf*r49}Gt#u_>rgu_0DI1=2Sr`zDhcvXNOFkSuXz7RGyr$$oj)xWV6qe*ZhJrn3 z!}Fuo_9?Tqw{wHb{Rf{YUjkP8$|B3mQN9~4vY%owM>#+5eM$II;bUJjF;e7j;8Ae3 zxiuZP2R7Zic&cMTMklvEW<_0?LkPImmLC?7Mc!QSXw?Z9C^_gvI^riDuFsAiJZae@ fPN#iJC6yzF8P^1b_t8!`B8S8$-)+%r6%G6jsbd^* literal 0 HcmV?d00001 diff --git a/public/assets/images/yclsl.jpg b/public/assets/images/yclsl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e3ad7eb8f06967201455e9200c41cae80933acd GIT binary patch literal 1715 zcmbW!c{tQ*902h5H;2I>!*9?jcWNumK@=X@nXpTdBPw6=InX&PVm=K$lJEFq&G4{uXAl<+bpi!uWR0KwmSY<30gTboea7xN*s%mO@ zRXko@LrYU#gP?)OYwBncv|%EVsJ2K~PY2f1f{F0LB@kM127^_>VpU*uygK}!1GxhT z%D@s>q9H?oB0y*YgouDX01#GTSYUh&2&H(V5>8n~6|dMJ)C4F9jYeV63$Iq}PEf1^ z3<0ZUu)#q|+ns?kWWl7w^a5q0Eme1k9?w1)lLKRpsi^Ac>MdSkVrsU^d^Lq?X|>VX z#_@X^eXEnR%MMR3Z=apMenG(@%)Oyu;rnCb4#Xd1bCP~ZKA!Sx>WPfZtaInHFI?nZ zDlFm`mz0*3S6{0U{$6{%uD-EJbnpHHvE*UP^VSz_?H!$61A{}-;gQi-ve)AilOI2Q zo|>MSU2s7F{TJ(->>nY(gRY_}amfUe`fE+-bcKin!>+S##%%if%q_t572X2@T-#G}H*jdx>juD2kJ z)>`^D{g#ul$1oZ-lu;-3QIB}JXPYQ#%x>L_y%!pcoSzqmt_{@h4J@Lh^zce_n-G9; z9*j6m*lbtTb2mJj8Jpg2a4{Q7iV}CvwsV@E`nVNFhR+1WP1Vs6z`8R|?d26`aMp$S z&OId6_Hn4hJH4U)1|K$9@rc8ZZxx%7L#HNYGLql@lr@=VpL{K^XRy9sWBOS0y(P5U z{1VB?t{+Jx3-O@}4bci^!RmpTmF11QpS|z=98oCOr$3SfT1#bao2$oq+eB*WmG&&FM;fly|SqM4IQk6q5J4;Qu zVQplWMC^MsFGN5ewMlMn=bbL_tDSul88~50Zq2v2YW7;sho5rzI_KJ%+4Y&6dFR7V ztTgMY;DWV6E~Q4^J+u5W>p;)ppoSIo%ghj9B-z7{=^9PU_Zrvz{HR!%P}G~_RTEt; z2qxi}i~CA$967hqw{aaSrh1ox7(At)^>b}qRh&bqAw>`-FDp+ zP#YmS6}zictQ9mjy!t_pSHtv{IPUCn>e(+-(FnNzhB?`^FW_~TWg+D`wJm#u{j+MK z>Bo-l`*ta(V%GRYdUcEChh$mfffdeA@8^)RzXT{&?7n}E5Y?Yp}j+0n+j z1mmYpe1B`0bk)`YS9;|)YKXJYsn6MAK^;d&WbrU;uEj# zrXP1S7aO&mzs^-)D%D2k39byoYs;==mRGn&<%wUucNi02UTS`mVVYTnZ;muv?zHu! zX)TYQnvcuwsROL%m9}eq83j?{aoYYIdmi_6jz5zndMp>3*T{tdrVaQa`SI|6?VGj* z(??~x?Zqms>o1ZGCIXqm?){fCl-Of^W%o)YgVCw(e7?lSJ2hg&g^?-cu~Wn)%Pe+I z^m`L42F_wTU)i8#Q&8OEsGZFTwv9?(JTFgOOdNZ)39KGXxw)2q(4#9N!Bp~H0dEJn zC^&8BQL<#?OAQ>VHqIi;^BmlBIk;EwzA#})%V)p$w^M9NP6`I!Pzn##RK`Vmy!|BX z%kk^t)wt8xTLodgvgD$@r;n<|ID9HcKxZ`q*!JXk*nRi2%qqd9EBfDNxXk7`sr<>b vJ1u}rO#3#P%UM5_IcYyYgZEohukDgCNG)liGeAazeJK1j?;>FV7wP;1uI~Mo literal 0 HcmV?d00001 diff --git a/src/models/auth/_.ts b/src/models/auth/_.ts index 1447caaad..88b4d90b6 100644 --- a/src/models/auth/_.ts +++ b/src/models/auth/_.ts @@ -418,7 +418,20 @@ export async function loadMenu(): Promise { }, ], }, - + { + id: id(), title: '水资源调度', redirect: '/mgr/szydd/gsnlfx', icon: 'fxzb', + children: [ + { + id: id(), title: '供水能力分析', path: '/mgr/szydd/gsnlfx', + }, + { + id: id(), title: '供水统计分析', path: '/mgr/szydd/gstjfx', + }, + { + id: id(), title: '典型年降雨资料', path: '/mgr/szydd/dxnjyzl', + }, + ] + }, // { id: id(), title: '基本情况', path: '/mgr/home', icon: 'jbqk' }, diff --git a/src/service/apiurl.js b/src/service/apiurl.js index 0d2564764..37e313e8e 100644 --- a/src/service/apiurl.js +++ b/src/service/apiurl.js @@ -434,6 +434,7 @@ const apiurl = { }, // 供水兴利 gsxl: { + gsWater:service_fxdd + "/gateValveReal/predict/water", dxnjyzl: { page: service_fxdd + '/tyYearRainfall/page', edit: service_fxdd + '/tyYearRainfall/update', @@ -921,6 +922,7 @@ const apiurl = { // 水库弹框详情 reservoirmonitor: service_fxdd + '/reservoir/water/monitor/data', //图像监测-列表 + reservoirmonitor1: service_fxdd + '/reservoir/water/data/page', //图像监测-列表 // 水库基础信息 attResBase: service_fxdd + '/attResBase/attResBase', //基本信息 diff --git a/src/views/AppRouters.tsx b/src/views/AppRouters.tsx index 346936b12..10f646cce 100644 --- a/src/views/AppRouters.tsx +++ b/src/views/AppRouters.tsx @@ -110,7 +110,7 @@ import Ajtj from './sz/szzf/ajtj' import Clyj from './sz/szzf/clyj' import Krgl from './KrLine' - +import Gsnlfx from './gxsl/gsnlfx' const HomePage = lazy(() => import('./Home')) @@ -222,8 +222,10 @@ const AppRouters: React.FC = () => { // 供水兴利 { path: 'gsxl/zfzl', element: }, { path: 'gsxl/zfjk', element: }, - { path: 'gsxl/gstjfx', element: }, - { path: 'gsxl/dxnjyzl', element: }, + + { path: 'szydd/gsnlfx', element: }, + { path: 'szydd/gstjfx', element: }, + { path: 'szydd/dxnjyzl', element: }, { path: 'fxzb/jczw/yqz', element: }, { path: 'fxzb/jczw/sqz', element: }, diff --git a/src/views/fxzb/ddgc/form.js b/src/views/fxzb/ddgc/form.js index e758f6b48..f4aa6d72e 100644 --- a/src/views/fxzb/ddgc/form.js +++ b/src/views/fxzb/ddgc/form.js @@ -203,7 +203,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onCrudSuccess }) => { {mode == "view" ? null : } diff --git a/src/views/fxzb/fxya/form.js b/src/views/fxzb/fxya/form.js index 7e7b1428e..e74746326 100644 --- a/src/views/fxzb/fxya/form.js +++ b/src/views/fxzb/fxya/form.js @@ -203,7 +203,7 @@ const ModalForm = ({ mode, record,onEdit,onSave,onCrudSuccess }) => { {mode == "view" ? null : } diff --git a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js index 1988f34e6..203758521 100644 --- a/src/views/gcaqjc/sjtjcx/ndsltjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndsltjb/index.js @@ -74,6 +74,7 @@ const Page = () => { tm:c.tm }))) return { + drp:s.drp, tm: s.tm, rz: s.rz, inx:i+1 diff --git a/src/views/gcaqjc/sjtjcx/ndsytjb/index.js b/src/views/gcaqjc/sjtjcx/ndsytjb/index.js index 213262d1e..8c9d13f32 100644 --- a/src/views/gcaqjc/sjtjcx/ndsytjb/index.js +++ b/src/views/gcaqjc/sjtjcx/ndsytjb/index.js @@ -34,7 +34,7 @@ const Page = () => { const columns4 = [ { title: '降雨量(mm)', key: 'drp', dataIndex: 'drp', width: 120, align: "center", - render: (rec, record) => { rec ?? "-"} + render: (rec, record) => { record?.drp ?? "-"} }, ]; const getDmTree = async() => { @@ -76,6 +76,7 @@ const Page = () => { tm:c.tm }))) return { + drp:s.drp, tm: s.tm, rz: s.rz, inx:i+1 diff --git a/src/views/gxsl/dxnjyzl/index.js b/src/views/gxsl/dxnjyzl/index.js index 0faf74759..d4c77b930 100644 --- a/src/views/gxsl/dxnjyzl/index.js +++ b/src/views/gxsl/dxnjyzl/index.js @@ -11,9 +11,9 @@ import {CrudOpRender_text} from '../../../components/crud/CrudOpRender'; const Page = () => { const role = useSelector(state => state.auth.role); - const editBtn = role?.rule?.find(item => item.menuName == "编辑"); - const viewBtn = role?.rule?.find(item => item.menuName == "查看"); - const delBtn = role?.rule?.find(item => item.menuName == "删除"); + 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 expandedRowRender = (record) => { const columns = [ { diff --git a/src/views/gxsl/dxnjyzl/toolbar.js b/src/views/gxsl/dxnjyzl/toolbar.js index 8eaee7e60..ebac9848b 100644 --- a/src/views/gxsl/dxnjyzl/toolbar.js +++ b/src/views/gxsl/dxnjyzl/toolbar.js @@ -4,8 +4,8 @@ import NormalSelect from '../../../components/Form/NormalSelect'; import moment from 'moment'; const { RangePicker } = DatePicker; const ToolBar = ({ setSearchVal, onSave, storeData, role }) => { - const addBtn = role?.rule?.find(item => item.menuName == "新增"); - const searchBtn = role?.rule?.find(item => item.menuName == "查询"); + const addBtn = role?.rule?.find(item => item.menuName == "新增") || true; + const searchBtn = role?.rule?.find(item => item.menuName == "查询") || true; const [form] = Form.useForm(); const types = [ { diff --git a/src/views/gxsl/gsnlfx/KrLine.js b/src/views/gxsl/gsnlfx/KrLine.js new file mode 100644 index 000000000..dd6588b93 --- /dev/null +++ b/src/views/gxsl/gsnlfx/KrLine.js @@ -0,0 +1,100 @@ +import React,{useEffect,useMemo,useState} from 'react' +import { Button, DatePicker, Table } from 'antd'; +import { createCrudService } from '../../../components/crud/_'; +import usePageTable from '../../../components/crud/usePageTable2'; +import moment from 'moment'; +import apiurl from '../../../service/apiurl'; +import {reservoirmonitor} from '../../../service/sssq' +import ReactEcharts from 'echarts-for-react'; +import drpOption from './drpOption'; +const {RangePicker} = DatePicker; +export default function KrLine({ record }) { + const columns = [ + {title: '时间', key: '', dataIndex: '', align: 'center',render:(rec)=>moment(rec.tm).format('MM-DD HH:mm')}, + { + title: '水位(m)', key: 'rz', dataIndex: 'rz', align: 'center', + render: (rec) => {rec ? rec.toFixed(2) : "-"}}, + { + title: '库容(万m³)', key: 'w', dataIndex: 'w', align: 'center', + render: (rec) => {rec ??"-"}, + }, + ]; + const [data, setData] = useState([]); + const [params, setParams] = useState({}) + const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.sssq.reservoirmonitor1).find_noCode); + const option = useMemo(() => { + return drpOption({data}); + }, [data]) + const searchTm = (e) => { + setParams({ + ...params, + stm: e[0].format("YYYY-MM-DD HH:mm:ss"), + etm: e[1].format("YYYY-MM-DD HH:mm:ss"), + tm:e, + }) + }; + + const doSearch = () => { + search({ search: params }) + getData(params) + } + + + const getData = async (params) => { + setData(await reservoirmonitor(params)); + } + useEffect(() => { + const stm = moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm:ss"); + const etm = moment().add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm:ss"); + const tm = [ + moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }), + moment().add(1, 'hour').set({ minute: 0, second: 0 }), + ]; + const params = { + search: { + stm, + etm + } + } + if (record?.stcd) { + search(params) + getData({stcd:record.stcd,...params.search}) + setParams({tm,stcd:record.stcd}) + } + }, [record]) + return ( +
+
+ + + +
+
+ + +
+ { + data.length > 0 ? + :
+ +
+ } +
+ + + + ) +} diff --git a/src/views/gxsl/gsnlfx/drpOption.js b/src/views/gxsl/gsnlfx/drpOption.js new file mode 100644 index 000000000..36685d530 --- /dev/null +++ b/src/views/gxsl/gsnlfx/drpOption.js @@ -0,0 +1,130 @@ +import echarts from 'echarts/lib/echarts' + +export default function drpOption ({ + data, +}) { + const maxVal = Math.max(...data.map(obj => obj.drp)) + // const minVal = Math.min(...data.map(obj => obj.drp)) + const maxSw = Math.ceil(Math.max(...data.map(obj => obj.rz))) + const minSw = Math.floor(Math.min(...data.map(obj => obj.rz))) + const maxKr = Math.max(...data.map(obj => obj.w)) + const minKr = Math.min(...data.map(obj => obj.w)) + return { + tooltip: { + trigger: 'axis' + }, + grid: { + top: '18%', + left: '5%', + right: '5%', + width: '90%', + height: '70%' + }, + legend: { + // 显示图例 + show: true, + left:60 + }, + xAxis: [ + { + type: 'category', + data: data.map(o => o.tm), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + formatter: val => val.substr('2020-'.length, 11) + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + name: '水位(m)', + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minSw, + max: maxSw + }, + { + type: 'value', + position: 'right', + name: '库容(万m³)', + splitLine: { + show: false, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minKr - 0.1, + max: maxKr + 0.1 + } + ], + series: [ + { + yAxisIndex:0, + name: '水位', + type: 'line', + symbol: 'none', + color: '#0AE0B5', + label: { + show: false + }, + data: data.map(o => o.rz ? o.rz.toFixed(2):null ) + }, + { + yAxisIndex:1, + name: '库容', + type: 'line', + color: '#007AFD', + symbol: 'none', + showSymbol: false, + label: { + show: false + }, + data: data.map(o => o.w) + } + ] + } +} diff --git a/src/views/gxsl/gsnlfx/index.js b/src/views/gxsl/gsnlfx/index.js new file mode 100644 index 000000000..98bef60be --- /dev/null +++ b/src/views/gxsl/gsnlfx/index.js @@ -0,0 +1,236 @@ + +import React, { useEffect, useState,useMemo } from 'react' +import { Button ,Modal,Form,Row,Col} from "antd" +import { reservoirlist, } from "../../../service/sssq"; +import apiurl from '../../../service/apiurl'; +import MyImg from '../../Home/MapCtrl/components/Skssjc/myImg' +import { httppost2, httpget2, httppost5 } from '../../../utils/request'; +import NormalSelect from '../../../components/Form/NormalSelect'; +import moment from 'moment'; +import KrLine from './KrLine'; +import "./index.less" +export default function Gsnlfx() { + const month = moment().month() + 1; + const optionsType = Array(12 - month + 1).fill(0).map((item,i) => ({label: (i + month) + "月",value: i + month})) + const typeObj = { + 1: "枯 ", + 2: "偏枯 ", + 3: "平", + 4: "偏丰", + 5:"丰" + } + const [form] = Form.useForm() + const [tableData, setTableData] = useState([]) + const [ssgData, setSsGData] = useState({}) //输水管数据 + const [gsDays, setGsDays] = useState() + const [lslOpen, setLslOpen] = useState(false) + const [simailarData, setSimailarData] = useState([]) + const [lslData, setlslData] = useState(null) + + const getData = async (params) => { + setTableData(await reservoirlist(params)); + } + // 相似年下拉 + const getSimilarData = async() => { + try { + const res = await httppost2(apiurl.gsxl.zfzl.similar) + setSimailarData(res.data.map(item => ({ + label: item.year + "年" + `(${typeObj[item.status]},${item.drp}mm)`, + value:item.year + }))) + } catch (error) { + console.log(error); + } + } + // 输水管流量数据 + const getInputData = async() => { + try { + const res = await httppost2(apiurl.gsxl.zfzl.input) + const ssg = res.data.find(item => item.sttp == "PQ"); + const fsg = res.data.find(item => item.sttp == "QQ"); + setSsGData({ssg,fsg}) + } catch (error) { + console.log(error); + } + } + + // 获取可供水时间 + const getWaterTimeData = async(params={}) => { + try { + const res = await httpget2(apiurl.gsxl.zfzl.kyTime,params) + let r = { + type: "可供水天数", + value: Object.keys(res.data)[0], + tm: Object.values(res.data)[0] + } + setGsDays(r) + } catch (error) { + console.log(error); + } + } + const providerWater = useMemo(() => { + if (tableData[0]?.nowCap && tableData[0]?.deadCap) { + let num = ((tableData[0]?.nowCap - tableData[0]?.deadCap) / 10000).toFixed(2) + return num + } else { + return "--" + } + }, [tableData]) + + const generate = () => { + setLslOpen(true) + } + + const computerResult = async() => { + const values = form.getFieldsValue(); + try { + const res = await httpget2(apiurl.gsxl.gsWater, values) + if (res.code == 200) { + setLslOpen(false); + setlslData((res.data / 10000).toFixed(2)) + getWaterTimeData(values) + } + } catch (error) { + console.log(error); + + } + } + useEffect(() => { + let option = { + sources: ["SW", "SK"], + args: "", + }; + getData(option) + getInputData() + getWaterTimeData() + getSimilarData() + }, []) + return ( +
+
+
+
+ + 供水能力分析 +
+
+
+
+ + 当前库水位(m) +
+
+ {tableData[0]?.rz ?? "-"} + ({tableData[0]?.drpTm ?? "--"}) +
+
+
+
+ + 可供水量(万m³) +
+
+ {providerWater} + ({tableData[0]?.drpTm ?? "--"}) +
+
+
+
+ + 灌溉流量(m³/s) +
+
+ {ssgData?.ssg?.v ?? "--"} + ({ssgData?.ssg?.tm ?? "--"}) +
+
+
+
+ + 水厂流量(m³/s) +
+
+ {ssgData?.fsg?.v ?? "--"} + ({ssgData?.fsg?.tm ?? "--"}) +
+
+
+
+ + 预测来水量(万m³) +
+
+ {lslData ?? "预测生成"} + +
+
+
+
+ + 计算可供水天数(天) +
+
+ {gsDays?.value ?? "--"} + ({gsDays?.tm ?? "--"}) +
+
+ +
+
+ +
+
+
+
+ + 库容过程线 +
+ +
+
+ + setLslOpen(false)} + width={500} + okText="计算" + destroyOnClose + onOk={computerResult} + > +
+ +
+ + + + + + + + + + + + + + + + ) +} diff --git a/src/views/gxsl/gsnlfx/index.less b/src/views/gxsl/gsnlfx/index.less new file mode 100644 index 000000000..c4218716c --- /dev/null +++ b/src/views/gxsl/gsnlfx/index.less @@ -0,0 +1,83 @@ +.gb-top-title{ + display: flex; + align-items: center; + column-gap: 10px; + margin-bottom: 10px; + .gb-top-icon{ + width: 5px; + height: 20px; + background-color: #0079fe; + } +} +.gsnl-content{ + display: flex; + column-gap: 10px; + padding-right:10px; + .content-left{ + width: 700px; + padding: 10px; + border: 1px solid #dfdfdf; + border-radius: 5px; + overflow-y: auto; + height: calc( 100vh - 100px); + .content-card{ + display: flex; + flex-wrap: wrap; + column-gap: 20px; + padding-top: 10px; + .card-item{ + width: 325px; + border: 1px solid #dfdfdf; + border-radius: 5px; + margin-bottom: 20px; + padding: 10px; + padding-bottom: 0; + box-shadow: 5px 5px 5px 0px rgba(0, 0, 0, 0.4); + .card-title{ + display: flex; + align-items: center; + column-gap: 10px; + font-size: 18px; + margin-bottom: 10px; + } + .card-value{ + display: flex; + align-items: baseline; + flex-wrap: nowrap; + .nl-value{ + font-size: 36px; + font-weight: 700; + color:#02a7f0; + } + .nl-time{ + font-size: 14px; + font-weight: bold; + } + } + img{ + width: 40px; + } + } + + .yc-content{ + display: flex; + flex-direction: column; + .yc-input{ + display: inline-block; + width: 80%; + height: 40px; + padding: 10px; + border-radius: 5px; + background-color: #f0f6ff; + margin-bottom: 15px; + } + } + } + } + .content-right{ + flex: 1; + border: 1px solid #dfdfdf; + padding: 10px; + border-radius: 5px; + } +} \ No newline at end of file diff --git a/src/views/rcgl/byfz/bypc/form.js b/src/views/rcgl/byfz/bypc/form.js index ec3a45ae2..0d345a7c0 100644 --- a/src/views/rcgl/byfz/bypc/form.js +++ b/src/views/rcgl/byfz/bypc/form.js @@ -86,8 +86,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const surveyType = [ {label:"日常检查排查",value:1}, - {label:"定期普查",value:1}, - {label:"专项调查",value:1}, + {label:"定期普查",value:2}, + {label:"专项调查",value:3}, ] const surveyWay = [ {label:"人工排查法",value:1}, diff --git a/src/views/zbgl/zbb/index.js b/src/views/zbgl/zbb/index.js index 473d4a978..b6f0da335 100644 --- a/src/views/zbgl/zbb/index.js +++ b/src/views/zbgl/zbb/index.js @@ -148,6 +148,7 @@ const Page = () => {
}//doUpload={this.canOp ? this.doUpload : null} dateCellRender={dateCellRender} diff --git a/src/views/zbgl/zbb/toolbar.js b/src/views/zbgl/zbb/toolbar.js index 5a1dd77df..a600532c9 100644 --- a/src/views/zbgl/zbb/toolbar.js +++ b/src/views/zbgl/zbb/toolbar.js @@ -114,7 +114,7 @@ const ToolBar = ({ value, onChange, tm, callback,role }) => { @@ -152,7 +152,7 @@ const ToolBar = ({ value, onChange, tm, callback,role }) => {