From 517ac773fe81731918a171e7adc46885a983af56 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 12 Jan 2023 22:56:59 +0800 Subject: [PATCH 1/9] 1.12 --- src/pages/ElecEvaluation/Monitor/Home/index.tsx | 3 +-- src/pages/ElecEvaluation/Monitor/style.less | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/ElecEvaluation/Monitor/Home/index.tsx b/src/pages/ElecEvaluation/Monitor/Home/index.tsx index 34dcbad..3e9af88 100644 --- a/src/pages/ElecEvaluation/Monitor/Home/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Home/index.tsx @@ -615,8 +615,7 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, {isEmpty(title) &&
- {/* 采购方式:{changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict)} */} - 采购方式:单一来源简化流程 + 采购方式:{changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict)}
} diff --git a/src/pages/ElecEvaluation/Monitor/style.less b/src/pages/ElecEvaluation/Monitor/style.less index e99cbca..4a08aca 100644 --- a/src/pages/ElecEvaluation/Monitor/style.less +++ b/src/pages/ElecEvaluation/Monitor/style.less @@ -1154,7 +1154,7 @@ line-height: 38px; letter-spacing: 0px; color: #FFFFFF; - width: calc(60vw - 294px); + width: calc(60vw - 300px); } &>img { From e004d843fdb904ad18f0d84e392ca28d4b9a97aa Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Tue, 17 Jan 2023 16:31:39 +0800 Subject: [PATCH 2/9] =?UTF-8?q?1.17=20=E4=BF=AE=E6=94=B9=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E5=92=8C=E4=BB=8A=E6=97=A5=E5=BC=80=E6=A0=87?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=BB=9A=E5=8A=A8=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Monitor/Exception/index.tsx | 12 ++-- .../ElecEvaluation/Monitor/Home/index.tsx | 67 ++++++++++++++++--- .../Monitor/OpenToday/index.tsx | 4 +- src/pages/ElecEvaluation/Monitor/style.less | 7 +- 4 files changed, 72 insertions(+), 18 deletions(-) diff --git a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx index 809b763..6e0dfc1 100644 --- a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx @@ -513,11 +513,11 @@ const MonitorException: React.FC<{}> = () => {
{ setExceptionType(null); setModalListData(noOpenListData); setModalListVisible(true); }}>more} />
- +
{ setExceptionType(null); setModalListData(noOpenAssessListData); setModalListVisible(true); }}>more} />
- +
@@ -525,11 +525,11 @@ const MonitorException: React.FC<{}> = () => {
{ setExceptionType("解密异常"); setModalListData(decryptData?.decryptExceptionList ? decryptData?.decryptExceptionList : []); setModalListVisible(true); }}>more} />
- +
{ setExceptionType("开启评审后3日未结束评标"); setModalListData(threeDayNoEndData); setModalListVisible(true); }}>more} />
- +
@@ -537,11 +537,11 @@ const MonitorException: React.FC<{}> = () => {
{ setExceptionType("MAC地址重复"); setModalListData(decryptData?.macSameList ? decryptData?.macSameList : []); setModalListVisible(true); }}>more} />
- +
{ setExceptionType("评标结束后3日内未发布公示"); setModalListData(threeDaysUnSendAnnoList); setModalListVisible(true); }}>more} />
- +
diff --git a/src/pages/ElecEvaluation/Monitor/Home/index.tsx b/src/pages/ElecEvaluation/Monitor/Home/index.tsx index 3e9af88..205a96e 100644 --- a/src/pages/ElecEvaluation/Monitor/Home/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Home/index.tsx @@ -460,10 +460,59 @@ export const StageCard = (props: { percentage: string | number, total: string | ) } //滚动列表 -export const ScrollTable = (props: { dataSource: any[], columns: any[], ynum?: number, rowKey?: string, selectKey?: number, onDoubleClick?: (record: any) => void }) => { - const { dataSource, columns, ynum = 300, rowKey = "id", selectKey = -1, onDoubleClick = () => { } } = props; +export const ScrollTable = (props: { dataSource: any[], columns: any[], ynum?: number, rowKey?: string, rowClassName?: string, tableKey?: number, rollNum?: number, isScroll?: boolean, onDoubleClick?: (record: any) => void }) => { + const { dataSource, columns, ynum = 300, rowKey = "id", rowClassName = "scroll-select-bg0", rollNum = 10, tableKey = 0, isScroll = false, onDoubleClick = () => { } } = props; + //selectKey + // const [selectKey, setSelectKey] = useState(-1); + const timer = useRef(); + const initScroll = (data: any[]) => { + // let count = selectKey != -1 ? selectKey : 0; + const length = isNotEmpty(data) ? data.length : 0; + // if (length > 1) {//至少2条才能滚动 + // timer.current = setInterval(() => { + // if (count < length) { + // setSelectKey(count); + // const v0 = document.getElementsByClassName(rowClassName)[0]; + // v0?.scrollIntoView({ block: 'center', behavior: 'smooth' }); + // count++; + // } else { + // count = 0; + // } + // }, 3000) + // } + if (isScroll && (length > rollNum)) { + // 只有当大于10条数据的时候 才会看起滚动 + const v = document.getElementsByClassName("ant-table-body")[tableKey]; + timer.current = setInterval(() => { + v.scrollTop += 0.5; + if ( + Math.ceil(v.scrollTop) >= parseFloat((v.scrollHeight - v.clientHeight).toString()) + ) { + setTimeout(() => { + v.scrollTop = 0; + }, 500); + } + }, 20); + } + } + useEffect(() => { + initScroll(dataSource); + return () => { + clearInterval(timer.current); + } + }, [dataSource]) + return ( -
+
{ + timer.current && clearInterval(timer.current); + }} + onMouseLeave={() => { + timer.current && clearInterval(timer.current); + initScroll(dataSource); + }} + > { - if (index == selectKey) { - return "scroll-select-bg"; //highlight样式需要自己定义 - } - return "scroll-select-default"; - }} + // rowClassName={(record, index) => { + // if (index == selectKey) { + // return rowClassName; //highlight样式需要自己定义 + // } + // return "scroll-select-default"; + // }} dataSource={dataSource} columns={columns} onRow={record => { diff --git a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx index cfbf2bc..09a6126 100644 --- a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx @@ -315,13 +315,13 @@ const OpenToday: React.FC<{}> = () => {
- { setModalTitle("今日开标明细"); setModalListData([record]); setModalListVisible(true); }} /> + { setModalTitle("今日开标明细"); setModalListData([record]); setModalListVisible(true); }} />
- { setModalTitle("重保项目明细"); setModalListData([record]); setModalListVisible(true); }} /> + { setModalTitle("重保项目明细"); setModalListData([record]); setModalListVisible(true); }} />
diff --git a/src/pages/ElecEvaluation/Monitor/style.less b/src/pages/ElecEvaluation/Monitor/style.less index 4a08aca..16a41fc 100644 --- a/src/pages/ElecEvaluation/Monitor/style.less +++ b/src/pages/ElecEvaluation/Monitor/style.less @@ -725,7 +725,12 @@ height: var(--monitor-table-height); } - .scroll-select-bg { + .scroll-select-bg0, + .scroll-select-bg1, + .scroll-select-bg2, + .scroll-select-bg3, + .scroll-select-bg4, + .scroll-select-bg5 { background: #66666666; } } From ae53c3977eb82ab66c0bad6d91f247f9f462b54c Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 19 Jan 2023 15:27:34 +0800 Subject: [PATCH 3/9] =?UTF-8?q?1.19=20=E8=AF=84=E6=A0=87=E5=AE=A4=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E5=88=97=E8=A1=A8=E9=A1=B5=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/router_elecEvaluation.ts | 4 + src/assets/monitor/arrow-left-circle-fill.png | Bin 0 -> 492 bytes .../monitor/arrow-right-circle-fill.png | Bin 0 -> 482 bytes src/assets/monitor/error-icon.png | Bin 0 -> 621 bytes src/assets/monitor/options-back.png | Bin 0 -> 3968 bytes src/assets/monitor/options-back2.png | Bin 0 -> 3409 bytes src/assets/monitor/options-home.png | Bin 0 -> 3985 bytes src/assets/monitor/options-home2.png | Bin 0 -> 3363 bytes src/assets/monitor/select-first.png | Bin 0 -> 1034 bytes src/assets/monitor/select-first2.png | Bin 0 -> 680 bytes src/assets/monitor/select-second.png | Bin 0 -> 1105 bytes src/assets/monitor/select-second2.png | Bin 0 -> 746 bytes src/assets/monitor/select-third.png | Bin 0 -> 818 bytes src/assets/monitor/select-third2.png | Bin 0 -> 521 bytes src/assets/screen/content_title.png | Bin 18171 -> 905 bytes .../ElecEvaluation/Monitor/Home/index.tsx | 2 +- .../ElecEvaluation/Monitor/Room/index.tsx | 347 +++++++++++++++ src/pages/ElecEvaluation/Monitor/service.ts | 11 + src/pages/ElecEvaluation/Monitor/style.less | 416 ++++++++++++++++++ 19 files changed, 779 insertions(+), 1 deletion(-) create mode 100644 src/assets/monitor/arrow-left-circle-fill.png create mode 100644 src/assets/monitor/arrow-right-circle-fill.png create mode 100644 src/assets/monitor/error-icon.png create mode 100644 src/assets/monitor/options-back.png create mode 100644 src/assets/monitor/options-back2.png create mode 100644 src/assets/monitor/options-home.png create mode 100644 src/assets/monitor/options-home2.png create mode 100644 src/assets/monitor/select-first.png create mode 100644 src/assets/monitor/select-first2.png create mode 100644 src/assets/monitor/select-second.png create mode 100644 src/assets/monitor/select-second2.png create mode 100644 src/assets/monitor/select-third.png create mode 100644 src/assets/monitor/select-third2.png create mode 100644 src/pages/ElecEvaluation/Monitor/Room/index.tsx diff --git a/config/router_elecEvaluation.ts b/config/router_elecEvaluation.ts index 9f3ac01..aac32ed 100644 --- a/config/router_elecEvaluation.ts +++ b/config/router_elecEvaluation.ts @@ -44,6 +44,10 @@ export const monitor = [ path: '/ElecMonitor/OpenToday', component: './ElecEvaluation/Monitor/OpenToday', }, + {//评标室监控-列表 + path: '/ElecMonitor/Room', + component: './ElecEvaluation/Monitor/Room', + }, ], }, ] diff --git a/src/assets/monitor/arrow-left-circle-fill.png b/src/assets/monitor/arrow-left-circle-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..a5424c0f8e6a8653f2e2858e6faf2d72e8db485a GIT binary patch literal 492 zcmVPx#1am@3R0s$N2z&@+hyVZqmPtfGR7i={mAz8JP!NT`jl|&*D8*->u%wa3LT8Mv zjy=qf&XV4797e4fX~h{WY_y@Y@EIfp1&_cO%vzW~LP!GIaH`Gb-g9>M?%fNU4$1mi z?`e6v#IeE=9yNp=02Bv<4}qtz8IQwrnXW9*xL3;)ZUib>K`2ZNrS*CygF*uJj+V?S z*9grl;uNJ@cZ5Cc$Sm$QlIzwY{|&Xdz02jIJBG%+S}HuOOdcmxPU7VX1?oL5m$n$? z)jSUhli4@b;NZg&nFdxaxzf!O5U7|2R`4C2fx%%O`P-Sa^8|dAgGB+Q_AlhW*b9tO z%(+v9{Owfc8e_k&nzAe8T4>WGL`WkjjCckPDOo7A8-3;VRBTupaS~2oL>UMl%U1g$ z*9C|Jyaz^lg6$`c#}hc;kir=rBx)rEQn&q z$M;+p`7`A15ByijvAxiy?kDZFM3k=k$wkur=LZKEi((gkaN?-fg&BqVJ1&XYZaXI?{0000Px#1am@3R0s$N2z&@+hyVZqj7da6R7i={l{-$uKoEw%F*eE(QYM^%g3<-hP=JJK zgXlp@I?D721q9Sl(h?*n(f~zD3eEs2Qsf8-2M-05k0w*?&aVD%W*;-K>?Uc8 zZc_`ZHv0;D1gs;J08si^yb9cZj=1X`$;Z@y?Us6ha3xSo3qoONDJPGI(#ZvI>uNh? z8VJW}!U?2n|D9T|E+f-zP41gX{3q1o)iuuIZo{@)>Zx!$wYVv$9GJ%y0o=oX# z&OFN$hNCaa;l)QsjFi`!VBl)JFwWz6XA13F0vp9J8^)ro(GTi_Nwo&`4O0v|`V6(Pn1QCn1ZiwyHS~Gumux^`GcNEx^n`c+DGC zhB&}W91!rZAaPK-F@PV?Q5a?cGR0xw2Sh(P0`!jL!%|MN0GRPx#1am@3R0s$N2z&@+hyVZr7fD1xR5*>TlQC#hVGzfE_Zib59Xd4NAZW3JLmV8O zOu{#$c>xzUmx4OgK~Nz9Asrmtic>7O2!$>Y92^9jHqcisI2dqo$ly@0Lk9;3!C0E_ z99{`Y-g~}Oz3qMX|NrjZaR(EImWz+IT>LPp-h=?wrqnB34=F{?Bb*Hvv^lNV3yEN+ zjx5L<_41XZuGHEY#BHPQULsgpyKR&Xm=(1)HAwX31*)|XamLkwX)w>nIjQl7pq#0p zuE7~*fdc?(`@12XBa5&qE&ofX!AS5>sI}8f^*vNB2Sxcx&$Pt%_y6P*trV9~mQkv* z`R?TqFhkna5vo8Y!ulGKhqB@C4LoI=L;4M%XK-c*WgnrbmEy`VbcVFsMp%x90_Y9Y zebmymJb-%n65>9ATtanqFbZ8LEW)X-Z22Aa3U5K8w&DjcJ@$5hF<1G?H`1=kp?N00 z|2;HgT_`MKWIY1f1J;1M5o1}C*3O;bm+&4NmLi~_JOzmx%WbuGHWnNtB_HA3atD literal 0 HcmV?d00001 diff --git a/src/assets/monitor/options-back.png b/src/assets/monitor/options-back.png new file mode 100644 index 0000000000000000000000000000000000000000..26dafa4bffe935f501f884a31c2ecb41cb038d68 GIT binary patch literal 3968 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 literal 0 HcmV?d00001 diff --git a/src/assets/monitor/options-home.png b/src/assets/monitor/options-home.png new file mode 100644 index 0000000000000000000000000000000000000000..ee8a00cfa5f2f63533b7af4f8bc3f1e5f1c2a865 GIT binary patch literal 3985 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 literal 0 HcmV?d00001 diff --git a/src/assets/monitor/select-first.png b/src/assets/monitor/select-first.png new file mode 100644 index 0000000000000000000000000000000000000000..a70f248712f62e336a7aa0285dea18027cf06458 GIT binary patch literal 1034 zcmV+l1oiugP)Px#1am@3R0s$N2z&@+hyVZsv`IukR9J=Wmd$G%br{D#&u?FYn{0?B4cNm5qTShE zaw}rN9wJ1j;31$ldx%I6fW11%Ux4jvSHsM)nB-GhfU zw8_qPX=Zme^LW^oq_eY`jXCI{-_y)I&+~nrectwgm-vq%`!zUbI}_VP76hFFqOH$W z75#2(Fn)enq_H2qXt>G_GLJRs;ocK8;}fMsWv=wB0dRIdoPin0t!s*8eO^^&fC&JF zMNzqp=sln)k@}l!sZ1MT{4ZNvtO+ zO=;5oK#^%tJp!O2e+jy@^)z-n$Zl;^ssZH!_Q-%g(x$BTA#ej^EI4c}0iWm7i97xB z_PqzPWoHiL>(=W7ly4P11d=iEK!s00CV}rQ+ZoHJli&2q-4&^CjyY;O)9vq;?R?e= z%C6tC?7F)XWbIr>uk1{P@j}291i@ey02I9x@XI<`EDR^EqWUF(O4BBsI|R9kdxGXN zdE#uuuZHPwZN{&FJQ2vYY!4QI!dtDUrFMtEzFD8lK6Bp=YR0CH-UsmDco=_p6DlbH z_4H4G+R{_>WQ>ARhd5>*#2tW)4zlB8P zH53p+7g-+}Fh3!R;!U4ajV_Bc3PZ`ez0^;tM*pt3QvibbIgCEE2evk&s~{y{V%@II zhUvF-G9abH>FDx-11OG*gX$LmD&|IZ!#UMUH@o4SYLB1bo$cp3>U$Mic6|}}2%5(U zMixEY`VGLyz%e{MEpVEq!p;0}e6}Cnef<|??b<~_=IPx#4bV&ZbmB_Cyxk>eb?(H| z=STdaLOOBL;906%M|cR7fil8FRIeF4E6DjSuC9^of>m)>ntR*59ID(WauxS0%dV?c zaews7x=T=Yr&@<6Aa~XCemRhLV~z_t4S>o!`Qg|L*HqwDY?bS?7#2{H2XemS#Zfp@ z7>X};i+Uhet&Y)%zwfE`I6nGBM2g1Lm)a-%OZ@Nf4^@-3dFNQyGXMYp07*qoM6N<$ Ef;jN+E&u=k literal 0 HcmV?d00001 diff --git a/src/assets/monitor/select-first2.png b/src/assets/monitor/select-first2.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf4ac1a342d2ef57a5d6bc330be7f2d02c77a4e GIT binary patch literal 680 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 literal 0 HcmV?d00001 diff --git a/src/assets/monitor/select-third.png b/src/assets/monitor/select-third.png new file mode 100644 index 0000000000000000000000000000000000000000..ba3b4b4a901593f17970fbec4e300fe65be1a093 GIT binary patch literal 818 zcmV-21I_%2P)Px#1am@3R0s$N2z&@+hyVZr+(|@1R9J=Wm%UFEVGzcDv)mqM!2yPdg#{ffQqU4j zToV)EFObec5-CX33KLDlNMQ#=6CuIEj{g8G$YEhZNr508g$V+NV~@hykK3_e7mttQ z?s8{hB2RN~=AM~(c5dF8Tln80@xfM2>>hfrRb?1xt5f`+AT#ah#H(eI;5Es9MmA%u+4_J<;mgDc0B_9zztyl6&;~Mo& zSS>CEB+3!2oS#9}t|*$w@8*9Dmz#JneS8x3RstIdJNpM+t`!@)GLcdTVkO zpd+g-mg7C{$ZAW>U2jdUN~nVfd4&;c-|eZW0vEw@ys5}<>V!S#k3|(5E9rCSO+t-5 zAkZHj=Zo!H2(J`>p287Vxd$~~!{e*wnrE&TfHcURuB%SH~?Btb88Y14Vf-&^m~An*#0X_zDtQ0prm4(8nOZqaY5LsS%AVP zpbJCp7Yo>Gl>^{S3Adrhc?oJALZHIFEoJ@~urkG}~u^lp4BFZV;&< z3qT5(jrT&)F7Wq2+d{&@&F0i%r6Qs|u&i(k$OAJ1^SI_$02=+9YRC|wjsPivFW1th z9q)rb0uI~>M4ngt_(gxeqJ1#MQF%))BVe{YZ9XYpMkij)b{ua4F&=`Je>GD+Z?q)s wVw1J+_Rt{10{!ufK-fZAqM&oa7l21#&e;h8gLp#T5?07*qoM6N<$g3L#3o&W#< literal 0 HcmV?d00001 diff --git a/src/assets/monitor/select-third2.png b/src/assets/monitor/select-third2.png new file mode 100644 index 0000000000000000000000000000000000000000..90655a9abc7a280ad34d8a7932052792eb5c4a1f GIT binary patch literal 521 zcmV+k0`~ohP)Px#1am@3R0s$N2z&@+hyVZqvq?ljR9J=Wmp@AbK@i2~B!YrP>@6%UuDC8K1T6&f zZ7kCY5wuGn2iA6e1iJ*1BE3Rd3&A3dU~xr+pT*6Q%ewbBD+uPnvM~E*_TAph?48IK z3ZMbp0t?(>0rY@I838?q8=JT;BOrP5j)MbDVs?^~C_@Io)#hd6?zrBtDz*X&1puQ8 z**$l3V2!B5bs{jaqJ}?J9bysIlfH=n3`1Pp*SaG;~Dwn#Y>tB5QCMj!Z5=fJ(Ly#qmx&_Fo=!zu!% zDFI_k(4{_Ikg_*{E1+rNN9wbl6LnsJ9xcGYuy@to&GG4rY+ePIIzJlrePd1|;a-T8 z=!6A0()lH0{fyPu(9H9^rxf?tg@7!4>3pt3MC3z64o%{w0^UUAL_~ZMnWgNZir7op zlJz9{Ue_XRn1uZrJ_B>1jsV|QhB=TiCb~ftRmuzr^Tujx73!j z;wc%e_=aj286rZ8FQd@9c`C>q<$uk_mKZ*9lBKWXXSL;D$Nv`J{#&Er>{`IM00000 LNkvXXu0mjfw@c$s literal 0 HcmV?d00001 diff --git a/src/assets/screen/content_title.png b/src/assets/screen/content_title.png index dfe3252a33c1389d16f855657bffd1831f7c28cd..e2e3c85c5a7acf93aa6bf762f15c973a012b60d7 100644 GIT binary patch literal 905 zcmV;419tq0P)Px#1am@3R0s$N2z&@+hyVZsGf6~2R7i=fmO*G7RT#&A-74(mn2}J5tcHW zdQ`|Ehb$KK&_fG)5Gocdcu}P2!GmC-h!ig#l=fD^mR#aNRH&%1V!=QWbC6_H0$H$! zZEZ8NA$Dih+4uD@vzo@)tqp#sH#7hDoB#KJZyqD;sp{Q(b2z!zK#u|kfjgkTsWF$Q z4~$%?i^O~93@Ygl7F2V$+J9XDJv~If(u;ZdMmgUA@V285u{xKjRQ*x<;8wf4DDYzX z#+xd#Bx=`HF=`E#W%5+7-Y6@*2Qa;nJ*yyI2$oT!e?u4UQ})EZ#b$RfQViL=vh4p|6ZUyP6Gft;&=cGH?y4Q05@^2$^JFw z5SpPB%Db+D{yYHG{wbK_o*!L8=y!wZyFg_efS&%6umWH$l`K0(d-`qSTu;sTzS}I7f}T(V z`5uT7HpKGE`b6O>fEx35+DUzNQg#4Dn9uBW#`oQ#jBNrg!q-!ejh+~Ee#~xlPO34V zC!O%px|?5`-RjJ%F+XKGZu!Dt zz#8*b78rINTvb2(7?Hj(Ms-<{4S_Pk0?B6&BFhqWPpnRkw~`ao`T3!6fNIda4*JX> zF@SVO53EkgP8#QR$X-lHw&L#E83qREFJe)~E(`-_!5^Vydgx=-FLV1vueqbOhiL{n zSK+Fvt)Y5mzXpcI(rT27bwyY93m+JZpcQYs`>H`bwf{35m3dK}&pIIgYdsK)TKfes f?)m8E?VMPg)E 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 S+!Q@UY-_#3D#v2|*8c)kS|&jN diff --git a/src/pages/ElecEvaluation/Monitor/Home/index.tsx b/src/pages/ElecEvaluation/Monitor/Home/index.tsx index 205a96e..1a74d47 100644 --- a/src/pages/ElecEvaluation/Monitor/Home/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Home/index.tsx @@ -1684,7 +1684,7 @@ const MonitorHome: React.FC<{}> = () => {
{mapChart}
-
{ window.open("/ElecMonitorScreen/MonitorRoom") }}> +
{ window.open("/ElecMonitor/Room") }}>
diff --git a/src/pages/ElecEvaluation/Monitor/Room/index.tsx b/src/pages/ElecEvaluation/Monitor/Room/index.tsx new file mode 100644 index 0000000..7c9a017 --- /dev/null +++ b/src/pages/ElecEvaluation/Monitor/Room/index.tsx @@ -0,0 +1,347 @@ +import { Button, Col, Input, List, message, PaginationProps, Row, Tag, Tooltip } from 'antd'; +import React, { useEffect, useRef, useState } from 'react'; +import '../style.less' +import { proviceEnum, ScreenTitle } from '../Home'; +import { isNotEmpty } from '@/utils/CommonUtils'; +import { history } from "umi"; +import { getMonitorList } from '../service'; +import content_title from '@/assets/screen/content_title.png' +import errorIcon from '@/assets/monitor/error-icon.png' +import arrowLeftCircleFill from '@/assets/monitor/arrow-left-circle-fill.png' +import arrowRightCircleFill from '@/assets/monitor/arrow-right-circle-fill.png' +import { LeftOutlined, RightOutlined } from '@ant-design/icons'; +export const bidStatusMap = ["准备评标", "正在评标", "评标结束"]; +const statusColorMap = ["bidding-text-order", "bidding-text-going", "bidding-text-ending"]; +const provinceList = [{ + "provincesRemark": "集团", + "provincesNumber": "001000", +}, { + "provincesNumber": "0011", + "provincesRemark": "北京", +}, +{ + "provincesNumber": "0012", + "provincesRemark": "天津", +}, +{ + "provincesNumber": "0013", + "provincesRemark": "河北", +}, +{ + "provincesNumber": "0014", + "provincesRemark": "山西", +}, +{ + "provincesNumber": "0015", + "provincesRemark": "内蒙古", +}, +{ + "provincesNumber": "0021", + "provincesRemark": "辽宁", +}, +{ + "provincesNumber": "0022", + "provincesRemark": "吉林", +}, +{ + "provincesNumber": "0023", + "provincesRemark": "黑龙江", +}, +{ + "provincesNumber": "0031", + "provincesRemark": "上海", +}, +{ + "provincesNumber": "0032", + "provincesRemark": "江苏", +}, +{ + "provincesNumber": "0033", + "provincesRemark": "浙江", +}, +{ + "provincesNumber": "0034", + "provincesRemark": "安徽", +}, +{ + "provincesNumber": "0035", + "provincesRemark": "福建", +}, +{ + "provincesNumber": "0036", + "provincesRemark": "江西", +}, +{ + "provincesNumber": "0037", + "provincesRemark": "山东", +}, +{ + "provincesNumber": "0041", + "provincesRemark": "河南", +}, +{ + "provincesNumber": "0042", + "provincesRemark": "湖北", +}, +{ + "provincesNumber": "0043", + "provincesRemark": "湖南", +}, +{ + "provincesNumber": "0044", + "provincesRemark": "广东", +}, +{ + "provincesNumber": "0045", + "provincesRemark": "广西", +}, +{ + "provincesNumber": "0046", + "provincesRemark": "海南", +}, +{ + "provincesNumber": "0050", + "provincesRemark": "重庆", +}, +{ + "provincesNumber": "0051", + "provincesRemark": "四川", +}, +{ + "provincesNumber": "0052", + "provincesRemark": "贵州", +}, +{ + "provincesNumber": "0053", + "provincesRemark": "云南", +}, +{ + "provincesNumber": "0054", + "provincesRemark": "西藏", +}, +{ + "provincesNumber": "0061", + "provincesRemark": "陕西", +}, +{ + "provincesNumber": "0062", + "provincesRemark": "甘肃", +}, +{ + "provincesNumber": "0063", + "provincesRemark": "青海", +}, +{ + "provincesNumber": "0064", + "provincesRemark": "宁夏", +}, +{ + "provincesNumber": "0065", + "provincesRemark": "新疆", +},]; + +export const homeClick = () => { + history.push("/ElecMonitor/Home"); +} +export const previousClick = () => { + history.goBack(); +} + +const MonitorException: React.FC<{}> = () => { + //状态选择 + const [selectBtn, setSelectBtn] = useState(""); + const selectStatus = useRef(""); + //当前选中的省分 + const [selectedTag, setSelectedTag] = useState(""); + const selectProvince = useRef(""); + //当前页码 + const pageNo = useRef(1); + //总数 + const [totalItem, setTotalItem] = useState(0); + //当前页数据 + const [listData, setListData] = useState([]); + //all expand 展开收起 + const [allExpand, setAllExpand] = useState(false); + //关键字搜索条件 + const search = useRef(""); + //定时刷新间隔 + const _time = 60000; + const { CheckableTag } = Tag; + const handleChange = (tag: string, checked: boolean) => { + const nextSelectedTag = checked ? tag : ''; + setSelectedTag(nextSelectedTag); + selectProvince.current = nextSelectedTag; + pageNo.current = 1; + getMonitorRoom(); + }; + const onPageChange = (page: number) => { + pageNo.current = page; + getMonitorRoom(); + } + const onSearchChange = (e: any) => { + search.current = e.target.value; + } + const onSearchClick = () => { + pageNo.current = 1; + getMonitorRoom(); + } + const onBtnSelect = (btnName: string, status: string) => { + if (btnName == selectBtn) { + setSelectBtn(""); + selectStatus.current = ""; + } else { + setSelectBtn(btnName); + selectStatus.current = status; + } + pageNo.current = 1; + getMonitorRoom(); + } + const onCardClick = (item: any) => { + if (item.status == "0") { + message.info("当前评标室未开启,请等待开启后查看"); + return; + } + history.push({ + pathname: "/ElecMonitorScreen/ProjectMonitorRoom", + state: { monitorId: item.id }, + }) + } + const onProvinceMap = (tag: any, index: any) => ( +
+ handleChange(tag.provincesNumber, checked)} + > + {tag.provincesRemark} + + + ) + const itemRender: PaginationProps['itemRender'] = (_, type, originalElement) => { + if (type === 'prev') { + return ; + } + if (type === 'next') { + return ; + } + return originalElement; + }; + //获取监控列表数据 + const getMonitorRoom = () => { + const params = { + pageNo: pageNo.current, + pageSize: 6, + } + isNotEmpty(selectProvince.current) && (params["provinceDictId"] = selectProvince.current); + isNotEmpty(selectStatus.current) && (params["status"] = selectStatus.current); + isNotEmpty(search.current) && (params["keyword"] = search.current); + getMonitorList(params).then(res => { + if (res?.code == 200) { + setTotalItem(res?.data.total); + setListData(res?.data.records); + } + }) + } + + useEffect(() => { + getMonitorRoom(); + }, []) + + //定时器 + useEffect(() => { + const interval = setInterval(function () { + getMonitorRoom(); + }, _time); + return () => { + clearInterval(interval) + }; + }, []) + return ( + +
+
+
+
+
+ +
+ 选择省分: +
+
+ +
+
+ + {provinceList.slice(0, 16).map(onProvinceMap)} + + {allExpand ? + {provinceList.slice(16, 32).map(onProvinceMap)} + : null} +
+ { setAllExpand(ite => !ite) }}>{allExpand ? "收起" : "展开"}{allExpand ? : } +
+
+ + +
+
+
onBtnSelect("order", "0")}> +
+ 已预约 +
+
onBtnSelect("going", "1")}> +
+ 开标中 +
+
onBtnSelect("ending", "2")}> +
+ 已结束 +
+
+
+ + + + + + `当前第 ${range[0]}-${range[1]} 条,共计 ${total} 条`, + itemRender, + hideOnSinglePage: true, + }} + className="monitor-list-global" + dataSource={listData} + renderItem={item => ( + +
onCardClick(item)}> +
+
+ + {item.areaName} +
+ {item.isAbnormal == "1" && 异常预警} +
+
+

项目名称:{item.projectName}

+

标段名称:{item.sectionName}

+

评标时间:{item.startDate} — {item.endDate}

+

专家数量:{item.expertNumber}

+

评标状态:{bidStatusMap[item.status]}所属省份:{proviceEnum[item.provinceDictId]}

+
+
+
+ )} + /> + + ); +}; + +export default MonitorException; diff --git a/src/pages/ElecEvaluation/Monitor/service.ts b/src/pages/ElecEvaluation/Monitor/service.ts index 55c6499..cdaf9c2 100644 --- a/src/pages/ElecEvaluation/Monitor/service.ts +++ b/src/pages/ElecEvaluation/Monitor/service.ts @@ -255,4 +255,15 @@ export async function getMonitorListAPI(data: any) { method: 'POST', data: data, }); +} +/** + * 评标室监控列表-获取评标室监控列表 + * @param data + * @returns + */ +export async function getMonitorList(data: any) { + return request('/api/biz-service-ebtp-evaluation/v1/screen/getReviewRoomList', { + method: 'POST', + data: data, + }); } \ No newline at end of file diff --git a/src/pages/ElecEvaluation/Monitor/style.less b/src/pages/ElecEvaluation/Monitor/style.less index 16a41fc..cf5bcfd 100644 --- a/src/pages/ElecEvaluation/Monitor/style.less +++ b/src/pages/ElecEvaluation/Monitor/style.less @@ -502,6 +502,422 @@ .monitor-extra-pointer-select { color: #1B7EF2; } + + .monitor-center-menu { + .flex-center; + justify-content: space-around; + + .monitor-center-menu-options { + width: 72px; + height: 72px; + cursor: pointer; + background-size: cover; + } + + .monitor-center-menu-home { + background: url("~@/assets/monitor/options-home.png") left top no-repeat; + + &:hover { + background: url("~@/assets/monitor/options-home2.png") left top no-repeat; + } + } + + .monitor-center-menu-back { + background: url("~@/assets/monitor/options-back.png") left top no-repeat; + + &:hover { + background: url("~@/assets/monitor/options-back2.png") left top no-repeat; + } + } + + .monitor-center-menu-select { + width: 121.29px; + height: 75px; + opacity: 1; + background: #00000A; + box-sizing: border-box; + border: 1px solid #1B7EF2; + box-shadow: inset 0px 0px 87px 0px rgba(27, 126, 242, 0.4); + text-align: center; + padding-top: 8px; + cursor: pointer; + + &>div { + height: 32px; + width: 32px; + background-size: cover; + display: inline-block; + } + + .monitor-center-menu-select-first { + background: url("~@/assets/monitor/select-first.png") left top no-repeat; + } + + .monitor-center-menu-select-second { + background: url("~@/assets/monitor/select-second.png") left top no-repeat; + } + + .monitor-center-menu-select-third { + background: url("~@/assets/monitor/select-third.png") left top no-repeat; + } + + &>span { + font-size: 18px; + font-weight: normal; + line-height: 18px; + text-align: center; + letter-spacing: 0px; + color: #29F1FA; + display: block; + } + } + + .monitor-center-menu-select:hover, + .monitor-center-menu-checked { + background: #1B7EF2; + box-sizing: border-box; + border: 1px solid #1B7EF2; + + &>span { + color: #FFFFFF; + } + + .monitor-center-menu-select-first { + background: url("~@/assets/monitor/select-first2.png") left top no-repeat; + } + + .monitor-center-menu-select-second { + background: url("~@/assets/monitor/select-second2.png") left top no-repeat; + } + + .monitor-center-menu-select-third { + background: url("~@/assets/monitor/select-third2.png") left top no-repeat; + } + } + } + + .monitor-top-search { + position: absolute; + top: 15px; + left: 5%; + display: flex; + justify-content: flex-end; + + &>div:last-child { + padding-left: 8px; + } + + .ant-input { + width: 200px; + color: #FFFFFF; + background-color: transparent; + border: 1px solid #1B7DF2; + + &:hover { + border-color: #1B7DF2; + } + + &:focus { + border-color: #1B7DF2; + box-shadow: 0 0 0 2px #1B7DF2; + } + + &::-webkit-input-placeholder { + color: #29F1FA; + } + + &:-ms-input-placeholder { + color: #29F1FA; + } + } + + .ant-btn-primary { + background: #1B7EF2; + border-color: #1B7EF2; + + &:hover &:focus &:active { + background: #1B7EF2; + border-color: #1B7EF2; + } + } + } + + .monitor-list-global { + + .ant-list-item { + margin-bottom: 24px !important; + } + + .list-card { + background: rgba(27, 126, 242, 0.14); + border-radius: 4px; + border: 1px solid rgba(27, 126, 242, 0.14); + cursor: pointer; + height: 368px; + padding: 36px 32px; + position: relative; + transition: all .3s; + + &:hover { + background: rgba(27, 127, 242, 0.281); + } + + .list-card-title { + color: #29F0F9; + font-size: 20px; + font-weight: normal; + line-height: 34px; + letter-spacing: 0px; + color: #29F0F9; + margin-bottom: 38px; + + &>img { + vertical-align: bottom; + height: 24px; + width: 23px; + } + + &>span { + margin-left: 0.625rem; + } + } + + .list-error-text { + margin-top: 2px; + + &>img { + height: 22px; + width: 22px; + vertical-align: baseline; + } + + &>span { + font-size: 16px; + font-weight: normal; + letter-spacing: 0em; + color: #FF473E; + margin-left: 8px; + } + } + + .space-between { + display: flex; + justify-content: space-between; + } + + &>div>p { + margin-bottom: 26px; + color: #fff; + width: 100%; + font-size: 14px; + font-weight: normal; + line-height: 17px; + letter-spacing: 0.6px; + z-index: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + + &:last-child { + margin-bottom: 0; + } + + .blue-text { + color: #45A2FF; + } + + .yellow-text { + color: #ffd502; + } + + .bidding-text-going { + color: #29F0F9; + } + + .bidding-text-ending { + color: #ee6766; + } + + .bidding-text-order { + color: #72c1dd; + } + } + } + + .ant-list-pagination { + margin-top: 0; + text-align: center; + } + + .ant-pagination-item { + // border: none; + background: none; + border: 0; + // margin-right: 0.5rem; + margin: 0 0.5rem 0 0; + + &>a { + color: #45a2ff; + } + + &:hover>a { + color: #ffd502; + } + + + } + + .ant-pagination-item:hover { + border-color: #ffd502; + } + + .ant-pagination-item:focus-visible { + border-color: #ffd502; + } + + .ant-pagination-item-active { + border-color: #ffd502; + + a { + color: #ffd502; + } + + &:hover &:focus-visible { + border-color: #ffd502; + } + } + + .ant-pagination-prev:focus-visible .ant-pagination-item-link, + .ant-pagination-next:focus-visible .ant-pagination-item-link, + .ant-pagination-prev:hover .ant-pagination-item-link, + .ant-pagination-next:hover .ant-pagination-item-link { + border-color: #45a2ff; + color: #45a2ff; + } + + .ant-pagination-prev .ant-pagination-item-link, + .ant-pagination-next .ant-pagination-item-link { + background: none; + border-color: #45a2ff; + color: #45a2ff; + } + + .pagination-icon { + font-size: 20px; + vertical-align: middle; + color: #45a2ff; + height: 24px; + } + + .ant-pagination-total-text { + color: #45a2ff; + } + + .ant-pagination-prev { + margin-right: 0.5rem; + + &>a>img { + position: relative; + top: -2px; + } + } + + .ant-pagination-next { + &>a>img { + position: relative; + top: -2px; + } + } + + .ant-pagination-item-ellipsis { + color: #45a2ff; + } + + .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, + .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { + color: #45a2ff; + } + + .ant-pagination-jump-prev .ant-pagination-item-container, + .ant-pagination-jump-next .ant-pagination-item-container { + position: relative; + top: -2px; + } + + .ant-empty-image { + color: #FFFFFF; + } + + .ant-empty-description { + color: #FFFFFF; + } + + .ant-empty-normal { + margin: 100px 0; + } + } + + + + .top-province-label { + height: 26px; + padding-left: 10px; + + &>span { + font-size: 14px; + color: #fff; + } + } + + .list-content-col { + display: flex; + align-items: center; + + .top-province { + display: flex; + align-items: baseline; + justify-content: flex-start; + } + + .top-province-expand { + width: 76px; + text-align: center; + position: relative; + top: 28px; + + .top-province-all { + font-size: 0.875rem; + color: #29F1FA; + cursor: pointer; + + &:hover { + text-decoration: underline; + } + } + } + + .top-province-tag { + font-size: 0.875rem; + padding: 0 0.5625rem; + line-height: 1.6875rem; + margin-right: 0; + color: #fff; + } + + .ant-tag-checkable:not(.ant-tag-checkable-checked):hover { + color: #1b7ef2; + } + + .ant-tag-checkable:active { + background-color: transparent; + } + + .ant-tag-checkable-checked { + background-color: #1b7ef2; + } + + } + } } From 3b2f6804725e7f192d41d235b5a1cad04f3be667 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Wed, 1 Feb 2023 16:56:28 +0800 Subject: [PATCH 4/9] =?UTF-8?q?2.1=20=E5=A4=A7=E5=B1=8F=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/router_elecEvaluation.ts | 38 +- src/assets/monitor/number-icon.png | Bin 0 -> 2142 bytes src/assets/monitor/stranger-icon.png | Bin 0 -> 1454 bytes .../ElecBidEvaluation/ScreenVideoPlay.tsx | 29 +- .../Monitor/Exception/index.tsx | 2 +- .../ElecEvaluation/Monitor/Home/index.tsx | 55 +- .../Monitor/OpenToday/index.tsx | 2 +- .../ElecEvaluation/Monitor/Room/index.tsx | 81 ++- .../Monitor/RoomDetail/index.tsx | 495 ++++++++++++++++ .../ElecEvaluation/Monitor/Supplier/index.tsx | 2 +- .../Monitor/TenderAgent/index.tsx | 2 +- src/pages/ElecEvaluation/Monitor/service.ts | 80 +++ src/pages/ElecEvaluation/Monitor/style.less | 539 ++++++++++++++++-- .../Online/components/OnlineSupervision.tsx | 2 +- .../VideoMonitor/Post/index.tsx | 2 +- 15 files changed, 1223 insertions(+), 106 deletions(-) create mode 100644 src/assets/monitor/number-icon.png create mode 100644 src/assets/monitor/stranger-icon.png create mode 100644 src/pages/ElecEvaluation/Monitor/RoomDetail/index.tsx diff --git a/config/router_elecEvaluation.ts b/config/router_elecEvaluation.ts index aac32ed..f5f8f5c 100644 --- a/config/router_elecEvaluation.ts +++ b/config/router_elecEvaluation.ts @@ -1,22 +1,22 @@ export const monitorScreen = [ //监控大屏 - { - path: '/ElecMonitorScreen', - routes: [ - {//监控大屏-首页 - path: '/ElecMonitorScreen/Home', - component: './ElecEvaluation/MonitorScreen/Home', - }, - {//监控大屏-评标室列表页 - path: '/ElecMonitorScreen/MonitorRoom', - component: './ElecEvaluation/MonitorScreen/MonitorRoom', - }, - {//监控大屏-评标室详情 - path: '/ElecMonitorScreen/ProjectMonitorRoom', - component: './ElecEvaluation/MonitorScreen/ProjectMonitorRoom', - }, - ], - }, + // { + // path: '/ElecMonitorScreen', + // routes: [ + // {//监控大屏-首页 + // path: '/ElecMonitorScreen/Home', + // component: './ElecEvaluation/MonitorScreen/Home', + // }, + // {//监控大屏-评标室列表页 + // path: '/ElecMonitorScreen/MonitorRoom', + // component: './ElecEvaluation/MonitorScreen/MonitorRoom', + // }, + // {//监控大屏-评标室详情 + // path: '/ElecMonitorScreen/ProjectMonitorRoom', + // component: './ElecEvaluation/MonitorScreen/ProjectMonitorRoom', + // }, + // ], + // }, ] export const monitor = [ @@ -48,6 +48,10 @@ export const monitor = [ path: '/ElecMonitor/Room', component: './ElecEvaluation/Monitor/Room', }, + {//评标室监控-详情 + path: '/ElecMonitor/RoomDetail', + component: './ElecEvaluation/Monitor/RoomDetail', + }, ], }, ] diff --git a/src/assets/monitor/number-icon.png b/src/assets/monitor/number-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6a1655572e0d6d21e0d3b9ff844568aa7e557f GIT binary patch literal 2142 zcmV-k2%-0hP)Px#1am@3R0s$N2z&@+hyVZx2uVaiRA_mr zof$EW5NK-Ah@|?^YMJ5#YF`bBeQOBR#H7U7hSZn7_+Wgqs6~jznzT*YDiL*pT7xry zlw!k_DWt%B@Zr7poU@k?=MHn{ZQ8fejZgw#2z* zn`7rTVTKOGH_zWiW_O$BxyDDnK4@uX}AMt z-vG8kNl@+NfupFr?7QH|Kig$A4f`4vdjGXT9}!OjI}sMAVAB-FP2dndFPyp~JJ?85 zbqig4Dc==j<$ytdBL-B9z~Qi9d*12HovX8cZFHMuGh@YPOxQ#H)3aXkVjL*8XMT8A zq)&FUvt0}#p(4Nu4vjWdGZdh{=c&=x(@N5<3Dzkp9 zu=jQrS&qTJ)9u;kEB#(kXzzGoS2A7GW3n?#v(YkC_~uYs_TYSdPb2ZJdOXcF=>rdV z!YUPxMUD@fqE;qM-KM#`@vJr4ZI(^8kaQhStH9SX9^cJ*^mv+H>^Ti<6(@(g&9XCp znI$wcR(ysgY#~00*cO3B%~3f?UrEC>rU_kpDc@C!c&bK##U%j?QSEH?fHp}UPCb~g zXYHkYSNV6-ga%nTK#gJDGJ(B0kEgO8%VmDG)eNKpUkH>REb{qspm?yH zatf&@K+lQL=P5ff9uEgXP@iG9xKo91Wt1(xvRbA3&}{|={r6uh+**QD?IcI7n)%Qf zuY@taz>dIUwaz_mdEk9#TySuu!W_;5+XJP?Q_eZZA3{f1k5QA9X;MfI&A`rj+A08V zg~o}Qs5)T88UKonn{(Ko6L=(0)_B6(k>j<<5!GwZB*NlI!yPc` z*plmyx`}|_hmH-Nuuhe1na)YCyh?>-A}k`A#uuD1;*5yI8!He1@5aW@i!qm7BNmmB zX#1&bxOlN8%q_W03Ww-U5!w}oW1|QxSK;%%@Sv~Uqe4q*%ZN$V>D!Ux&B!qn8wG<- z6O2d4 zC8K;N>v7jS+k*gEfmM<`kku;uC?E5F$pHz;R9>#aY8BS0aHqnbBIA$IY-ctfv2&Y! zJo>7w)v3bc8D+T$*D=No&d0{_$ni?(7&qAD3%g5(R~zYNfG-BhRcE|dh`Da?Sx#$(k2 zB3 zh;Xk8Ydj$a&cu!fd}WhAe>7tx>(Uvlm=RojT7~U_@{ibfEsXiV8N+708z&xm!V*VT zt5AcLe(5zqEtR-waNdkzXB>-?twDi@vqH-P@$RS@zb!hp`bsC$<6j|}va3pK@h?$K zMD5OJCSokrTkk^Zz)1GcBG93**3)@o-6HUMX#6cUmdM;eeuoNcN>jf`<01hNa`nc{ zvsi>M>$F>j0VgBl7sVJcDvrDWpOX56`AR4$?ajW-f2DZI83&6o7o4$Dg^VQP=UQ(8 zDZc#zF!E}`)im3ji#+gp=y)@9I7>ppb8)i9^Ub;`E5n4VDln2-gB89z5gETMI&PAz zyH~^H6!YiEh|}tP9t1|zgtN`+z<>{2vMxu>ZpFDH&S)25lP^_W!8B}#a8`+F=)L27 zIFf0*Jy4#?d31S+H@!=RC$q}kHAGJh5i_Ws>OiyFSKuBM9to7sd5V(U0De8AZ1U^A z52_hYbwIuRl>tceR5XQUwJIhdAFjJ$$R-L16oRqINHpf47h5^x_mOD zEU$2{)Fh6cSh3+lkK9K& zn8r=t1xKJHw3Om1mCC0w z@MW5A2|aa3c2MAOt!)W#w+c_BMIX5=$Qo$m**x;vuy39e3zef2D?Zq|J1sbv(Your0H3X2R7hKX_K8U~2s!6SWxA ztWRyogsJt}Q)u&+`^3M`ON zb-F$Kycqk_H!EGl*gs#65mf0%Zs)|Rg%YVIsoG&C30Css+b17TCRA+qeA9JW=~|lp zpGaec#2bfgnT@4&+myrl0_4TmAGT#S)*=%ApK4w`pZGry%;XdQcaXWb9sl6-U$g5; UHp65J*8l(j07*qoM6N<$g8!)+(*OVf literal 0 HcmV?d00001 diff --git a/src/assets/monitor/stranger-icon.png b/src/assets/monitor/stranger-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..30336c1b854f88beb9290980f05a1b135f173950 GIT binary patch literal 1454 zcmV;f1yTBmP)Px#1am@3R0s$N2z&@+hyVZuSV=@dRA_!;nI?1Cdsg zW(-LHJhBLXpgM`j1Ri4;Z-g8p(#y1KP2$RtjnX6bf7xQ7K{uc(jP@Yo*t4O zZiF!p9H@?yV8$E)4iUb2h9wIOQty2tTX`77Fi@cSBhR8{2qhIro@<0L#Os%BT(8u` zR9aBevHhsI^4Nm}P*SM5qUqTFN=+&XRMX}|(32>u!>eo}p zuXVfq zJV3k`OO3{h`lybR@LwVSt{}km|IpX{k(zFX&Pe8{t=(=zJIOg9K~Sa@?7W!k7g7MYA!tovbIDcEQu%MDy{>YcPE-vJ{jIp4TQl z+_O(K9^30|(Y)Hh@^sBx(R~024R+UKuIYOF+;|2WcGQNCIc#iVH?quKT#dF}_rWwp z^WpskKdo^h2gs81)*IsVvGO|wD@l?#eFo3;Idz-6QyV@C@l2n=IG*lh&ew*ILJTQ` zYKK#&_rHwpW6JUBP_@G#((2Ud^f|~3hquoRN3$=5NUK3dtOJ*kE*6YE7%}-gInF;4|FeEG9?hH)kBHZk&tQls8{jwLUCP#G4Ogld_DW>67 zSbMzzmfvg8;s(#y2X8E`<`DM)lh_mk+dzFZ)BL3)|?Ck*Cv zWQS|tcDotfxYPQKjE&6(n#-T{6C=VQao8~6KvWSM27>kTVw4QI{8{h=^;2BVgm&1p z8|tbs=csG5zQc27HhpLQ>oVRk)P!p*h4065H0*#41^-t<({A|l>ky)_G5IV!dl{3j zLZ#C@GYX0BaAKC@VH$q!32vu4Bq@Dk_T$3Ui>HSO^Qx(TCb*DFsoNCBD(lBG$AX?N zJ>1YVgTP0D+}`~xjF@UNSe$sZ=)_ycN$|*gR}*PAVGzcs^R^c!TrFC7%T^vDUO&Qv zl~d;kd$iwQDyyvI4ufptIw}XNugozj2banwTXHMK&+a%}HBs(4yi`UCER#^>=j~Ks z%Hy1Yaydp&VbWubCsvhBq?)DT>`qO`_9Oa5&7|cB4^TN+uDLEO9)SNu8Y}ptah = (props) => { const { videoRef, cameraParams, status } = props; const playWnd = useRef(null); let oWebControl: any = null; + let scale = window.innerHeight / 1080; let initCount = 0; let pubKey = ''; @@ -42,7 +43,7 @@ const ScreenVideoPlay: React.FC = (props) => { // cbIntegrationCallBack: cbIntegrationCallBack // }); - oWebControl.JS_CreateWnd("playWnd", playWnd.current.clientWidth, playWnd.current.clientHeight).then(function () { //JS_CreateWnd创建视频播放窗口,宽高可设定 + oWebControl.JS_CreateWnd("playWnd", playWnd.current.clientWidth * scale, playWnd.current.clientHeight * scale).then(function () { //JS_CreateWnd创建视频播放窗口,宽高可设定 init(); // 创建播放实例成功后初始化 }); }, function () { // 启动插件服务失败 @@ -108,7 +109,7 @@ const ScreenVideoPlay: React.FC = (props) => { buttonIDs: buttonIDs //自定义工具条按钮 }) }).then(function (oData: any) { - oWebControl.JS_Resize(playWnd.current.clientWidth, playWnd.current.clientHeight); // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题 + oWebControl.JS_Resize(playWnd.current.clientWidth * scale, playWnd.current.clientHeight * scale); // 初始化后resize一次,规避firefox下首次显示窗口后插件窗口未与DIV窗口重合问题 }); }); } @@ -147,23 +148,23 @@ const ScreenVideoPlay: React.FC = (props) => { var iCoverRight = (oDivRect.right - iWidth > 0) ? Math.round(oDivRect.right - iWidth) : 0; var iCoverBottom = (oDivRect.bottom - iHeight > 0) ? Math.round(oDivRect.bottom - iHeight) : 0; - iCoverLeft = (iCoverLeft > playWnd.current.clientWidth) ? playWnd.current.clientWidth : iCoverLeft; - iCoverTop = (iCoverTop > playWnd.current.clientHeight) ? playWnd.current.clientHeight : iCoverTop; - iCoverRight = (iCoverRight > playWnd.current.clientWidth) ? playWnd.current.clientWidth : iCoverRight; - iCoverBottom = (iCoverBottom > playWnd.current.clientHeight) ? playWnd.current.clientHeight : iCoverBottom; + iCoverLeft = (iCoverLeft > playWnd.current.clientWidth * scale) ? playWnd.current.clientWidth * scale : iCoverLeft; + iCoverTop = (iCoverTop > playWnd.current.clientHeight * scale) ? playWnd.current.clientHeight * scale : iCoverTop; + iCoverRight = (iCoverRight > playWnd.current.clientWidth * scale) ? playWnd.current.clientWidth * scale : iCoverRight; + iCoverBottom = (iCoverBottom > playWnd.current.clientHeight * scale) ? playWnd.current.clientHeight * scale : iCoverBottom; - oWebControl.JS_RepairPartWindow(0, 0, playWnd.current.clientWidth + 1, playWnd.current.clientHeight); // 多1个像素点防止还原后边界缺失一个像素条 + oWebControl.JS_RepairPartWindow(0, 0, playWnd.current.clientWidth * scale + 1, playWnd.current.clientHeight * scale); // 多1个像素点防止还原后边界缺失一个像素条 if (iCoverLeft != 0) { - oWebControl.JS_CuttingPartWindow(0, 0, iCoverLeft, playWnd.current.clientHeight); + oWebControl.JS_CuttingPartWindow(0, 0, iCoverLeft, playWnd.current.clientHeight * scale); } if (iCoverTop != 0) { - oWebControl.JS_CuttingPartWindow(0, 0, playWnd.current.clientWidth + 1, iCoverTop); // 多剪掉一个像素条,防止出现剪掉一部分窗口后出现一个像素条 + oWebControl.JS_CuttingPartWindow(0, 0, playWnd.current.clientWidth * scale + 1, iCoverTop); // 多剪掉一个像素条,防止出现剪掉一部分窗口后出现一个像素条 } if (iCoverRight != 0) { - oWebControl.JS_CuttingPartWindow(playWnd.current.clientWidth - iCoverRight, 0, iCoverRight, playWnd.current.clientHeight); + oWebControl.JS_CuttingPartWindow(playWnd.current.clientWidth * scale - iCoverRight, 0, iCoverRight, playWnd.current.clientHeight * scale); } if (iCoverBottom != 0) { - oWebControl.JS_CuttingPartWindow(0, playWnd.current.clientHeight - iCoverBottom, playWnd.current.clientWidth, iCoverBottom); + oWebControl.JS_CuttingPartWindow(0, playWnd.current.clientHeight * scale - iCoverBottom, playWnd.current.clientWidth * scale, iCoverBottom); } } @@ -175,8 +176,8 @@ const ScreenVideoPlay: React.FC = (props) => { var gpuMode = 0; //是否启用GPU硬解,0-不启用,1-启用 var wndId = -1; //播放窗口序号(在2x2以上布局下可指定播放窗口) - cameraIndexCode = cameraIndexCode.replace(/(^\s*)/g, ""); - cameraIndexCode = cameraIndexCode.replace(/(\s*$)/g, ""); + cameraIndexCode = cameraIndexCode?.replace(/(^\s*)/g, ""); + cameraIndexCode = cameraIndexCode?.replace(/(\s*$)/g, ""); if (oWebControl != null) { oWebControl?.JS_RequestInterface({ funcName: "startPreview", @@ -221,7 +222,7 @@ const ScreenVideoPlay: React.FC = (props) => { // 监听滚动条scroll事件,使插件窗口跟随浏览器滚动而移动 const resize = () => { if (oWebControl != null) { - oWebControl.JS_Resize(playWnd.current.clientWidth, playWnd.current.clientHeight); + oWebControl.JS_Resize(playWnd.current.clientWidth * scale, playWnd.current.clientHeight * scale); setWndCover(); } }; diff --git a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx index 6e0dfc1..7bbef03 100644 --- a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx @@ -34,7 +34,7 @@ const MonitorException: React.FC<{}> = () => { //selectKey const [selectKey, setSelectKey] = useState(-1); //权限校验 - const auth = useRef(authCheck()); + const auth = useRef(authCheck(["ebtp-watcher"])); //超过1小时未开标数量 const getNoOpenNumber = () => { getNoOpenNumberAPI({ "timeLimit": "1", "dayNumber": "30" }).then(res => { diff --git a/src/pages/ElecEvaluation/Monitor/Home/index.tsx b/src/pages/ElecEvaluation/Monitor/Home/index.tsx index 1a74d47..54eb67f 100644 --- a/src/pages/ElecEvaluation/Monitor/Home/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Home/index.tsx @@ -58,6 +58,7 @@ export const proviceEnum = { "0065": "新疆", "001000": "集团" } +const weekMap = { 1: "星期一", 2: "星期二", 3: "星期三", 4: "星期四", 5: "星期五", 6: "星期六", 7: "星期日", } function getYearMap() { const year: number = moment().year();//当前年份 const data: { label: string, value: string }[] = []; @@ -583,6 +584,43 @@ export const ScreenLabel = (props: { title: string, extra?: JSX.Element | string ) } +/** + * 当前年月日 星期 时分秒 + * @returns + */ +export const LocalTimer = () => { + const [timeData, setTimeData] = useState<{ date: string, week: string }>(); + const [time, setTime] = useState(""); + useEffect(() => { + const interval = setInterval(function () { + setTimeData(() => ({ date: moment().format("YYYY-MM-DD"), week: weekMap[moment().format("E")] })); + setTime(() => moment().format("HH:mm:ss")); + }, 1000); + return () => { + clearInterval(interval) + }; + }, []) + return ( +
+ {timeData?.date} + {timeData?.week} + {time} +
+ ) +} + +//异常预警 +export const EarlyWarnItem = ({ img, name, num }: { img: string, name: string, num: string | number }) => { + return ( +
+ +
+
{num}
+
{name}
+
+
+ ) +} //大标题和布局 export const ScreenTitle = (props: { title: string, children: any }) => { @@ -612,7 +650,13 @@ export const ScreenTitle = (props: { title: string, children: any }) => {
- {title} +
+
+ {title} +
+
+ +
{children} @@ -1450,14 +1494,15 @@ export const GraphChart = (props: { type: string, chartData: any[], chartColor?: ) } //角色校验 -export const authCheck = () => { +export const authCheck = (authority: string[]) => { //获取角色列表 const authorityList: any[] | undefined = getSessionUserData()?.authorityList; if (isEmpty(authorityList)) { history.replace({ pathname: "/404" }); return false; } - if (authorityList?.findIndex(item => item.roleCode == "ebtp-watcher") == -1) {//监看人员校验 + // if (authorityList?.findIndex(item => authority.includes(item.roleCode)item.roleCode == "ebtp-watcher") == -1) {//监看人员校验 + if (authority.findIndex(item => authorityList?.findIndex(ite => ite.roleCode == item) != -1) == -1) {//角色权限校验 history.replace({ pathname: "/401", query: { code: "405" } }); return false; } @@ -1486,7 +1531,7 @@ const MonitorHome: React.FC<{}> = () => { //今日开标-评标阶段,评标及时率 const [todayInfoData, setTodayInfoData] = useState(); //权限校验 - const auth = useRef(authCheck()); + const auth = useRef(authCheck(["ebtp-watcher"])); //定时器秒数 const _time = 20000; const bidStatusMap = ["准备评标", "正在评标", "评标结束", ""]; @@ -1603,7 +1648,7 @@ const MonitorHome: React.FC<{}> = () => { return; } history.push({ - pathname: "/ElecMonitorScreen/ProjectMonitorRoom", + pathname: "/ElecMonitor/RoomDetail", state: { monitorId: item.id }, }) } diff --git a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx index 09a6126..ac646a1 100644 --- a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx @@ -38,7 +38,7 @@ const OpenToday: React.FC<{}> = () => { //modal title const [modalTitle, setModalTitle] = useState(null); //权限校验 - const auth = useRef(authCheck()); + const auth = useRef(authCheck(["ebtp-watcher"])); //定时器描述 const _time = 60000; //初始化字典 diff --git a/src/pages/ElecEvaluation/Monitor/Room/index.tsx b/src/pages/ElecEvaluation/Monitor/Room/index.tsx index 7c9a017..a24d0bf 100644 --- a/src/pages/ElecEvaluation/Monitor/Room/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Room/index.tsx @@ -1,7 +1,7 @@ import { Button, Col, Input, List, message, PaginationProps, Row, Tag, Tooltip } from 'antd'; import React, { useEffect, useRef, useState } from 'react'; import '../style.less' -import { proviceEnum, ScreenTitle } from '../Home'; +import { authCheck, proviceEnum, ScreenTitle } from '../Home'; import { isNotEmpty } from '@/utils/CommonUtils'; import { history } from "umi"; import { getMonitorList } from '../service'; @@ -19,6 +19,18 @@ const provinceList = [{ "provincesNumber": "0011", "provincesRemark": "北京", }, +{ + "provincesNumber": "0022", + "provincesRemark": "吉林", +}, +{ + "provincesNumber": "0021", + "provincesRemark": "辽宁", +}, +{ + "provincesNumber": "0015", + "provincesRemark": "内蒙古", +}, { "provincesNumber": "0012", "provincesRemark": "天津", @@ -31,18 +43,6 @@ const provinceList = [{ "provincesNumber": "0014", "provincesRemark": "山西", }, -{ - "provincesNumber": "0015", - "provincesRemark": "内蒙古", -}, -{ - "provincesNumber": "0021", - "provincesRemark": "辽宁", -}, -{ - "provincesNumber": "0022", - "provincesRemark": "吉林", -}, { "provincesNumber": "0023", "provincesRemark": "黑龙江", @@ -147,7 +147,7 @@ export const previousClick = () => { history.goBack(); } -const MonitorException: React.FC<{}> = () => { +const MonitorRoom: React.FC<{}> = () => { //状态选择 const [selectBtn, setSelectBtn] = useState(""); const selectStatus = useRef(""); @@ -160,10 +160,10 @@ const MonitorException: React.FC<{}> = () => { const [totalItem, setTotalItem] = useState(0); //当前页数据 const [listData, setListData] = useState([]); - //all expand 展开收起 - const [allExpand, setAllExpand] = useState(false); //关键字搜索条件 const search = useRef(""); + //权限校验 + const auth = useRef(authCheck(["ebtp-watcher"])); //定时刷新间隔 const _time = 60000; const { CheckableTag } = Tag; @@ -202,14 +202,15 @@ const MonitorException: React.FC<{}> = () => { return; } history.push({ - pathname: "/ElecMonitorScreen/ProjectMonitorRoom", + // pathname: "/ElecMonitorScreen/ProjectMonitorRoom", + pathname: "/ElecMonitor/RoomDetail", state: { monitorId: item.id }, }) } const onProvinceMap = (tag: any, index: any) => ( -
+ handleChange(tag.provincesNumber, checked)} @@ -244,15 +245,15 @@ const MonitorException: React.FC<{}> = () => { }) } - useEffect(() => { - getMonitorRoom(); - }, []) - //定时器 useEffect(() => { - const interval = setInterval(function () { + let interval: any; + if (auth) { getMonitorRoom(); - }, _time); + interval = setInterval(function () { + getMonitorRoom(); + }, _time); + } return () => { clearInterval(interval) }; @@ -265,13 +266,12 @@ const MonitorException: React.FC<{}> = () => {
-
- 选择省分: +
-
-
+
+ {/*
{provinceList.slice(0, 16).map(onProvinceMap)} @@ -281,6 +281,27 @@ const MonitorException: React.FC<{}> = () => {
{ setAllExpand(ite => !ite) }}>{allExpand ? "收起" : "展开"}{allExpand ? : }
+
*/} +
+
+ 省分: +
+ + {provinceList.map(onProvinceMap)} + + } > + + {provinceList.slice(0, 11).map(onProvinceMap)} +
+ 全部 + + + @@ -344,4 +365,4 @@ const MonitorException: React.FC<{}> = () => { ); }; -export default MonitorException; +export default MonitorRoom; diff --git a/src/pages/ElecEvaluation/Monitor/RoomDetail/index.tsx b/src/pages/ElecEvaluation/Monitor/RoomDetail/index.tsx new file mode 100644 index 0000000..5771c97 --- /dev/null +++ b/src/pages/ElecEvaluation/Monitor/RoomDetail/index.tsx @@ -0,0 +1,495 @@ +import { Image, Col, Row, Empty, Drawer } from 'antd'; +import React, { useEffect, useRef, useState } from 'react'; +import '../style.less' +import { authCheck, EarlyWarnItem, onCell, onHeaderCell, ScreenLabel, ScreenTitle, ScrollTable } from '../Home'; +import { history } from "umi"; +import { getAllStranger, getBidRoomData, getCameraList, getExpertReports, getLookBackList, getWarnData } from "../service"; +import ScreenVideoPlay from "@/components/ElecBidEvaluation/ScreenVideoPlay"; +import { pictureDisplayPath } from "@/utils/DownloadUtils"; +import { getURLInformation } from "@/utils/CommonUtils"; +import { getDicData, getSessionRoleData } from "@/utils/session"; +import strangerIcon from '@/assets/monitor/stranger-icon.png'; +import numberIcon from '@/assets/monitor/number-icon.png'; +import { bidStatusMap } from '../Room'; +const statusMap = ["未报道", "已报道"]; +const peopleNumColumns: any[] = [ + { + title: '时间', + dataIndex: 'eventTime', + key: 'eventTime', + align: 'center', + width: "40%", + onCell, + onHeaderCell, + }, + { + title: '阈值', + dataIndex: 'thresholdOfPeople', + key: 'thresholdOfPeople', + align: 'center', + ellipsis: true, + onCell, + onHeaderCell, + render: (_: any, record: any) => `${_}人`, + }, + { + title: '实际人数', + dataIndex: 'realOfPeople', + key: 'realOfPeople', + align: 'center', + onCell, + onHeaderCell, + render: (_: any, record: any) => `${_}人`, + }, +]; + +const backPeopleNumColumns: any[] = [ + { + title: '时间', + dataIndex: 'createDate', + key: 'createDate', + align: 'center', + width: "40%", + onCell, + onHeaderCell, + }, + { + title: '阈值', + dataIndex: 'thresholdOfPeople', + key: 'thresholdOfPeople', + align: 'center', + ellipsis: true, + onCell, + onHeaderCell, + render: (_: any, record: any) => `${record.details?.[0].thresholdOfPeople}人`, + }, + { + title: '实际人数', + dataIndex: 'realOfPeople', + key: 'realOfPeople', + align: 'center', + onCell, + onHeaderCell, + render: (_: any, record: any) => `${record.details?.[0].realOfPeople}人`, + }, +]; + +const staffReportColumns: any[] = [ + { + title: '人员', + dataIndex: 'userName', + key: 'userName', + align: 'center', + ellipsis: true, + onCell, + onHeaderCell, + }, + { + title: '报道状态', + dataIndex: 'status', + key: 'status', + align: 'center', + onCell, + onHeaderCell, + render: (_: any, record: any) => statusMap[_], + }, + { + title: '报道时间', + dataIndex: 'signDate', + key: 'signDate', + align: 'center', + width: "40%", + onCell, + onHeaderCell, + render: (_: any, record: any) => record.signDate || '-', + }, +]; + +export const homeClick = () => { + history.push("/ElecMonitor/Home"); +} +export const previousClick = () => { + history.goBack(); +} + +const MonitorRoomDetail: React.FC<{}> = (props: any) => { + //tooltip visible + // const [visible, setVisible] = useState(false); + //camera select + const [cameraSelect, setCameraSelect] = useState("1"); + //选中的设备参数 + const [cameraParams, setCameraParams] = useState(); + //right btn select + const [btnSelect, setBtnSelect] = useState("0"); + //props state + const monitorId = props.location.state?.monitorId ? props.location.state?.monitorId : getURLInformation("monitorId"); + //基本信息数据 + const [basicInfo, setBasicInfo] = useState({}); + //异常预警数据 + const [earlyWarnData, setEarlyWarnData] = useState(); + //设备列表 + const [caremaList, setCaremaList] = useState([]); + //报道列表 + const [expertList, setExpertList] = useState([]); + //陌生人预警-进行中 + const [strangerList, setStrangerList] = useState([]); + //陌生人预警-回看 + const [backStrangerList, setBackStrangerList] = useState([]); + //人数预警-回看 + const [backNumberList, setBackNumberList] = useState([]); + //采购方式字典 + const [bidMethodObj, setBidMethodObj] = useState(); + //图片查看抽屉显隐 + const [drawerVisible, setDrawerVisible] = useState(false); + //图片查看URL + const [drawerUrl, setDrawerUrl] = useState(''); + //监控视频Ref + const videoRef = useRef(); + //图片展示ref + const zoomImg = useRef(null); + //定时刷新间隔 + const _time = 10000; + //当前登录人角色 + const roleCode = getSessionRoleData()?.roleCode; + //权限校验 + const auth = useRef(authCheck(["ebtp-watcher", "ebtp-site-supervision", "ebtp-after-supervision"])); + + const onCaremaPlay = (item: any) => { + setCameraSelect(item.id); + setCameraParams(item.platform); + if (basicInfo?.status == "2") {//回看 + videoRef.current?.back(item.deviceCode, basicInfo?.startDate, basicInfo?.endDate); + } else { + videoRef.current?.play(item.deviceCode); + } + } + //获取基本信息数据 + const getRoomData = () => { + getBidRoomData(monitorId).then(res => {//获取基本信息 + if (res?.code == 200) { + const data = res?.data; + for (const ite of data.userNumberList) { + if (ite.userType == "manager") {//项目经理 + data["manager"] = ite.userNumber; + } else if (ite.userType == "purchaseExpert") {//专家-招标人代表 + data["purchaseExpert"] = ite.userNumber; + } else if (ite.userType == "expert") {//专家 + data["expert"] = ite.userNumber; + } + } + if (data.sectionPayerList?.length > 0) { + let length = 0 + for (const ite of data.sectionPayerList) { + length += Number(ite.payerNumber); + } + data["supplierLength"] = length; + } else { + data["supplierLength"] = 0; + } + setBasicInfo(data); + getCaremaData(data);//获取监控点列表 + if (data.status == "2") {//评标结束-回看 + getBackList("2");//数量预警 + ((roleCode != "ebtp-site-supervision") && (roleCode != "ebtp-after-supervision")) && getBackList("3");//陌生人预警 + } + } + }) + } + //获取异常预警数据 + const getWarnInfo = () => { + getWarnData({ reserveId: monitorId }).then(res => { + if (res?.code == 200) { + const data = res?.data; + setEarlyWarnData(data); + (((roleCode != "ebtp-site-supervision") && (roleCode != "ebtp-after-supervision")) && data?.strangerDetails) && setStrangerList(data.strangerDetails.slice(0, 5)); + } + }) + } + //获取设备 + const getCaremaData = (baseData: any) => { + getCameraList({ areaId: baseData.placeId }).then(res => { + if (res?.code == 200) { + const data = res?.data; + setCaremaList(data); + if (data?.length > 0) { + setCameraSelect(data[0].id); + setCameraParams(data[0].platform); + setTimeout(() => { + if (baseData.status == "2") {//回看 + videoRef.current?.back(data[0].deviceCode, baseData.startDate, baseData.endDate); + } else { + videoRef.current?.play(data[0].deviceCode); + } + }, 4000); + } + } + }) + } + //获取专家报道列表 + const getExpertList = () => { + getExpertReports({ reserveId: monitorId, pageNo: 1, pageSize: 20 }).then(res => { + if (res?.code == 200) { + const data = res?.data.records; + setExpertList(data); + } + }) + } + //获取告警-回看数据 + const getBackList = (type: string) => { + getLookBackList({ reserveId: monitorId, type, pageNo: 1, pageSize: type == "3" ? 1 : 5 }).then(res => { + if (res?.code == 200) { + const data = res?.data.records; + if (type == "2") {//2-人数预警 + setBackNumberList(data); + } else if (type == "3") {//3-陌生人预警 + data.length > 0 && setBackStrangerList(data[0].details.slice(0, 5)); + } + } + }) + } + //获取陌生人告警-全部告警 + const getAllStrangerList = () => { + getAllStranger({ reserveId: monitorId }).then(res => { + if (res?.code == 200) { + const data = res?.data; + if (data && data.length > 0) { + setStrangerList(data); + setBackStrangerList(data); + } + } + }) + } + //初始化字典 + const initDict = () => { + //采购方式字典 + const getDict: any = getDicData(); + const dictData = JSON.parse(getDict); + const bidMethodArray = dictData["procurement_mode=entrust"] as any[]; + let obj = {}; + for (let i = 0, length = bidMethodArray.length; i < length; i++) { + obj[bidMethodArray[i].code] = bidMethodArray[i].dicName; + } + setBidMethodObj(obj); + } + //图片放大抽屉显示 + const drawerClick = (filePath: string) => { + setDrawerUrl(filePath); + setDrawerVisible(true); + } + //图片放大抽屉关闭 + const drawerClose = () => { + setDrawerVisible(false); + setDrawerUrl(""); + } + const handleImgZoom = (e: { nativeEvent: { deltaY: number; }; }) => { + const { clientWidth, clientHeight, style, height, width } = zoomImg.current + const value = height / width + const num = 50 + const bool = height > width ? clientWidth < 2000 : clientHeight < 1500 + if (e.nativeEvent.deltaY <= 0 && bool) { + style.maxWidth = "none" + style.maxHeight = "none" + style.width = width + num + "px" + style.height = height + (num * value) + "px" + style.left = style.left - 1 % +"px" + style.top = style.top - 1 % +"px" + } else if (e.nativeEvent.deltaY > 0) { + if (width > 200 && height > 100) { + style.width = width - num + "px" + style.height = height - (num * value) + "px" + style.left = style.left + 1 % + "px" + style.top = style.top + 1 % + "px" + } + } + } + + useEffect(() => { + if (auth) { + initDict(); + getRoomData(); + getWarnInfo(); + getExpertList(); + if (roleCode == "ebtp-site-supervision" || roleCode == "ebtp-after-supervision") { getAllStrangerList(); } + } + }, []) + //定时器 + useEffect(() => { + let interval: any + if (auth) { + if (basicInfo?.status && basicInfo?.status != "2") { + interval = setInterval(function () { + getWarnInfo(); + getExpertList(); + if (roleCode == "ebtp-site-supervision" || roleCode == "ebtp-after-supervision") { getAllStrangerList(); } + }, _time); + } + } + return () => { + clearInterval(interval) + }; + }, [basicInfo]) + + return ( + +
+ +
+
+ + {/*
*/} +
+

项目名称:{basicInfo?.projectName}

+

项目编号:{basicInfo?.projectNum}

+

标段名称:{basicInfo?.sectionName}

+

评标时间:{basicInfo?.startDate} — {basicInfo?.endDate}

+

代理机构业务经理:{basicInfo?.appManagerName}

+

评标室人数:{basicInfo?.peopleNumber}人  业务经理:{basicInfo?.manager}人  招标人代表:{basicInfo?.purchaseExpert}人  专家:{basicInfo?.expert}

+
+
+ +
+ {/*
*/} +
+
+
+
+
+
+ {basicInfo?.areaName} +
+
+
+
+
+ {basicInfo?.status && {bidStatusMap[basicInfo?.status]}} +
+
+
+ + +
+ + {/*
*/} +
+ + +
+
+ + +
+ + +
+
+
+
监控画面
+
+ {caremaList.map((item, index) =>
onCaremaPlay(item)} key={index}>{item.deviceName}
)} +
+
+
+ {cameraParams && } +
+
+
+ + +
+
{ setBtnSelect("0") }}> + 陌生人预警 +
+
{ setBtnSelect("1") }}> + 人数预警 +
+
{ setBtnSelect("2") }}> + 人员报道信息 +
+ {basicInfo?.status == "2" ? ( +
{ setBtnSelect("3") }}> + 供应商信息 +
+ ) : null} +
+
+ {btnSelect == "0" ? ( +
+ {basicInfo?.status == "2" + ? backStrangerList.length > 0 ? backStrangerList.map((item: any, index: any) => ( +
+
+

时间:{item.eventTime}

+
+
+ drawerClick(item.filePath)} /> +
+
+ )) : ( +
+ +
+ ) + : strangerList.length > 0 ? strangerList.map((item: any, index: any) => ( +
+
+

时间:{item.eventTime}

+

描述:{item.describeStranger}

+
+
+ drawerClick(item.filePath)} /> +
+
+ )) : ( +
+ +
+ )} +
+ ) : btnSelect == "1" ? ( + + ) : btnSelect == "2" ? ( + + ) : ( +
+
+ {basicInfo?.sectionPayerList?.[0]?.sectionName}({basicInfo?.sectionPayerList?.[0]?.payerNumber}) +
+
+ + {basicInfo?.sectionPayerList?.[0]?.payerNames.map((item: any) => ( +
+
+ {item} +
+ + ))} + {basicInfo?.sectionPayerList?.[0]?.payerNames.length % 2 != 0 ? ( + +
+
+ + ) : null} + + + + )} + {drawerVisible && +
+ (localYear); diff --git a/src/pages/ElecEvaluation/Monitor/TenderAgent/index.tsx b/src/pages/ElecEvaluation/Monitor/TenderAgent/index.tsx index 260f1f8..7ee2d24 100644 --- a/src/pages/ElecEvaluation/Monitor/TenderAgent/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/TenderAgent/index.tsx @@ -78,7 +78,7 @@ const TenderAgent: React.FC<{}> = () => { //存一份 const selectAgency = useRef(""); //权限校验 - const auth = useRef(authCheck()); + const auth = useRef(authCheck(["ebtp-watcher"])); // const gaugeChartData = [{ value: 20 }] // const gaugeGreenChart = useMemo(() => { // return gaugeChartData && diff --git a/src/pages/ElecEvaluation/Monitor/service.ts b/src/pages/ElecEvaluation/Monitor/service.ts index cdaf9c2..aea2ead 100644 --- a/src/pages/ElecEvaluation/Monitor/service.ts +++ b/src/pages/ElecEvaluation/Monitor/service.ts @@ -266,4 +266,84 @@ export async function getMonitorList(data: any) { method: 'POST', data: data, }); +} +/** + * 评标室监控详情-获取评标室内容数据 + * @param id + * @returns + */ +export async function getBidRoomData(id: any) { + return request('/api/biz-service-ebtp-evaluation/v1/screen/getReviewRoom/' + id, { + method: 'GET', + }); +} + +/** + * 评标室监控详情-设备列表 + * @param params + * @returns + */ +export async function getCameraList(params: any) { + return request('/api/biz-service-ebtp-evaluation/v1/screen/queryAreaCamera', { + method: 'GET', + params: params, + }); +} + +/** + * 评标室监控详情-专家报道列表 + * @param data + * @returns + */ +export async function getExpertReports(data: any) { + return request('/api/biz-service-ebtp-evaluation/v1/screen/queryReportUser', { + method: 'POST', + data: data, + }); +} + +/** + * 评标室监控详情-回看列表 + * @param params + * @returns + */ +export async function getLookBackList(params: any) { + return request('/api/biz-service-ebtp-evaluation/v1/eval/room/alarm/screamOfAlarm/back', { + method: 'POST', + params: params + }); +} + +// /** +// * 评标室监控详情-设备列表(回看) +// * @param id +// * @returns +// */ +// export async function getCaremaBackList(id: any) { +// return request('/api/biz-service-ebtp-evaluation/v1/eval/room/reserve/' + id, { +// method: 'GET', +// }); +// } + +/** + * 评标室监控详情-陌生人预警-查询全部 + * @param params + * @returns + */ +export async function getAllStranger(params: any) { + return request('/api/biz-service-ebtp-evaluation/v1/eval/room/alarm/screamOfAlarm/strangerImg', { + method: 'GET', + params: params + }); +} +/** + * 评标室监控详情-异常预警 + * @param params + * @returns + */ +export async function getWarnData(params?: any) { + return request('/api/biz-service-ebtp-evaluation/v1/eval/room/alarm/screamOfAlarm', { + method: 'GET', + params: { ...params }, + }); } \ No newline at end of file diff --git a/src/pages/ElecEvaluation/Monitor/style.less b/src/pages/ElecEvaluation/Monitor/style.less index cf5bcfd..b527b4d 100644 --- a/src/pages/ElecEvaluation/Monitor/style.less +++ b/src/pages/ElecEvaluation/Monitor/style.less @@ -32,6 +32,25 @@ // left: 50%; } + .screen-global-timep { + margin: 16px 84px 0 0; + text-align: right; + + &>span { + font-size: 22px; + font-weight: normal; + line-height: 34px; + letter-spacing: 0px; + color: #45A2FF; + z-index: 0; + margin-left: 16px; + } + + &>span:last-child { + color: #FFFFFF; + } + } + } @@ -60,8 +79,13 @@ height: 114px; width: 100%; text-align: center; + display: flex; - &>span { + &>div { + flex: 1; + } + + &>div>span { font-size: 38px; font-weight: bold; line-height: 72px; @@ -141,6 +165,391 @@ .monitor-top-flex-space { justify-content: space-around; } + + .monitor-detail-proj-d { + padding: 14px 20px 8px 20px; + + &>p { + margin-bottom: 5px; + color: #FFFFFF; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + } + + .monitor-detail-room-d { + padding: 14px 20px 8px 20px; + margin-top: 8px; + + &>p { + margin-bottom: 5px; + color: #FFFFFF; + } + } + + .monitor-detail-exception { + height: 184px; + display: flex; + justify-content: space-evenly; + align-items: center; + + .screen-warn-content-item { + display: flex; + justify-content: flex-start; + align-items: flex-end; + color: #fff; + position: relative; + top: -8px; + + .screen-warn-img { + height: 58px; + width: 58px; + } + + .screen-warn-content { + display: flex; + flex-direction: column; + justify-content: space-between; + margin-left: 16px; + } + + .screen-warn-num { + font-size: 36px; + font-weight: normal; + line-height: 44px; + letter-spacing: 0px; + color: #FFD502; + } + + .screen-warn-name { + font-size: 16px; + font-weight: normal; + line-height: 22px; + letter-spacing: 0.8px; + color: #FFFFFF; + } + } + } + + .monitor-detail-bluec { + color: #45a2ff; + } + + .monitor-detail-yellowc { + color: #ffd502; + } + + .monitor-center-global { + height: 100%; + position: relative; + background: rgba(27, 126, 242, 0.12); + + .monitor-center-absolute-center { + width: 100%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + } + + .monitor-detail-bg-card { + background: rgba(27, 126, 242, 0.12); + } + + .monitor-detail-title-bg .screen-label-main .right-rect-2 { + background: rgba(27, 126, 242, 0.12); + } + + .monitor-warning-list { + height: 670px; + + .stranger-list { + // height: calc(100% - 76px); + height: 100%; + overflow-y: auto; + overflow-x: hidden; + + .stranger-list-card { + margin-top: 20px; + padding: 16px; + height: calc(20% - 16px); + background: rgba(27, 126, 242, 0.12); + color: #FFFFFF; + display: flex; + justify-content: space-between; + text-align: left; + + &>div>p { + margin-bottom: 0; + } + + &>div>p>span { + font-size: 16px; + font-weight: normal; + line-height: 40px; + letter-spacing: 0px; + color: #FFFFFF; + } + } + + .stranger-list-card:first-child { + margin-top: 0; + } + + /*设置宽度,轨道颜色*/ + &::-webkit-scrollbar { + width: 6px; + height: 6px; + // padding-right: 3px; + } + + /*滚动条*/ + &::-webkit-scrollbar-thumb { + background: #b9bfd7; + border-radius: 10px; + } + + /*增加悬停样式*/ + &::-webkit-scrollbar-thumb:hover { + background: #dcdfeb; + } + + /*滚动轨道样式*/ + &::-webkit-scrollbar-track-piece { + background: #505e9a; + border-radius: 3px; + } + } + + .ant-drawer-close { + color: #fff; + + &:focus, + &:hover { + color: #fff; + } + } + + .ant-drawer-content { + background-color: rgba(0, 0, 0, 0.35); + } + + .ant-drawer-body { + text-align: center; + padding: 0; + + &>div { + height: 100%; + } + + &>div>img { + position: relative; + top: 50%; + transform: translateY(-50%); + -moz-user-select: 'none'; + /* Firefox私有属性 */ + -webkit-user-select: 'none'; + /* WebKit内核私有属性 */ + -ms-user-select: 'none'; + /* IE私有属性(IE10及以后) */ + user-select: 'none'; + /* CSS3属性 */ + } + } + + .ant-empty-normal { + color: #FFFFFF; + } + + .monitor-supplier-title-global { + height: 54px; + width: 100%; + padding: 10px 0 10px 20px; + overflow-y: auto; + overflow-x: hidden; + + &>span { + font-size: 16px; + font-weight: normal; + line-height: 34px; + letter-spacing: 0px; + color: #29f0f9; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .orange-color { + color: #ffd502; + } + + /*设置宽度,轨道颜色*/ + &::-webkit-scrollbar { + width: 6px; + height: 6px; + // padding-right: 3px; + } + + /*滚动条*/ + &::-webkit-scrollbar-thumb { + background: #b9bfd7; + border-radius: 10px; + } + + /*增加悬停样式*/ + &::-webkit-scrollbar-thumb:hover { + background: #dcdfeb; + } + + /*滚动轨道样式*/ + &::-webkit-scrollbar-track-piece { + background: #505e9a; + border-radius: 3px; + } + } + + .monitor-supplier-list-global { + margin-top: 16px; + height: 600px; + + .monitor-supplier-list { + height: 40px; + padding: 4px 4px 4px 20px; + border-bottom: 1px solid #2384DD; + width: 100%; + + &>span { + font-size: 14px; + font-weight: normal; + line-height: 32px; + letter-spacing: 0px; + color: #FFFFFF; + z-index: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + } + } + } + + .monitor-btn-global { + height: 36px; + display: flex; + justify-content: flex-start; + align-items: center; + + &>div { + background: #1b7ff224; + line-height: 1.5715; + position: relative; + display: inline-block; + font-weight: 400; + white-space: nowrap; + text-align: center; + border: 1px solid transparent; + cursor: pointer; + transition: all .3s cubic-bezier(.645, .045, .355, 1); + user-select: none; + touch-action: manipulation; + height: 36px; + padding: 0px 14px; + margin-left: 2px; + + // border-radius: 2px; + &>span { + font-size: 18px; + font-weight: normal; + line-height: 34px; + letter-spacing: 0px; + /* text/1 */ + color: rgba(255, 255, 255, 0.87); + text-shadow: 0px 2px 24px 0px rgba(27, 126, 242, 0.91); + } + + &:not(.monitor-btn-selected):hover { + background: #1b7ff236; + } + } + + &>div:first-child { + margin-left: 0; + } + + .monitor-btn-selected { + background: #1B7EF2; + } + } + + .monitor-video-global { + // margin-right: 20px; + height: 726px; + + .left-monitor-content { + padding: 12px 12px 12px 20px; + display: flex; + justify-content: flex-start; + height: 100%; + + .left-menu { + width: 12%; + + .left-menu-content { + .left-menu-btn { + height: 44px; + width: 100%; + text-align: center; + cursor: pointer; + background: rgba(27, 126, 242, 0.17); + border: none; + margin-bottom: 16px; + transition: color 0.3s, background 0.3s, border-color 0.3s, box-shadow 0.3s; + font-size: 16px; + font-weight: bold; + line-height: 44px; + letter-spacing: 0px; + color: #29F0F9; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: 0 2px; + } + + .left-menu-btn:not(.left-menu-btn-select):hover { + background: rgba(27, 126, 242, 0.26); + } + + .left-menu-btn-select { + background: #1B7EF2; + color: #fff; + } + } + + .left-monitor-title { + margin-bottom: 16px; + + &>span { + font-size: 20px; + font-weight: normal; + line-height: 34px; + letter-spacing: 0px; + color: rgba(255, 255, 255, 0.87); + } + } + } + + .right-content-c { + width: 100%; + height: 100%; + position: relative; + left: -1px; + top: -1px; + } + } } .top-main-bottom { @@ -594,12 +1003,51 @@ background: url("~@/assets/monitor/select-third2.png") left top no-repeat; } } + + .monitor-center-room-title { + text-align: center; + width: 388px; + + &>div>span { + font-size: 32px; + font-weight: bold; + line-height: 40px; + letter-spacing: 3.2px; + color: #29F1FA; + } + } + } + + .monitor-center-status { + text-align: center; + margin-top: 12px; + + &>span { + font-size: 18px; + font-weight: normal; + line-height: 26px; + letter-spacing: 0px; + display: inline-block; + padding: 2px 16px; + } + + .blue-status { + color: #0AA7FF; + border: 1px solid #0AA7FF; + background: #0aa7ff2b; + } + + .red-status { + color: #ee6766; + border: 1px solid #ee6766; + background: #ee67661a; + } } .monitor-top-search { position: absolute; - top: 15px; - left: 5%; + top: 16px; + left: 84px; display: flex; justify-content: flex-end; @@ -651,7 +1099,7 @@ .list-card { background: rgba(27, 126, 242, 0.14); border-radius: 4px; - border: 1px solid rgba(27, 126, 242, 0.14); + border: 1px solid #1b7ef2; cursor: pointer; height: 368px; padding: 36px 32px; @@ -859,19 +1307,14 @@ - .top-province-label { + .top-province-label-h { height: 26px; - padding-left: 10px; - - &>span { - font-size: 14px; - color: #fff; - } } .list-content-col { display: flex; align-items: center; + padding: 0 16px; .top-province { display: flex; @@ -879,23 +1322,26 @@ justify-content: flex-start; } - .top-province-expand { - width: 76px; - text-align: center; - position: relative; - top: 28px; + .top-province-label { + width: 5.625rem; - .top-province-all { + &>span { font-size: 0.875rem; - color: #29F1FA; - cursor: pointer; - - &:hover { - text-decoration: underline; - } + color: #fff; } } + .top-province-all { + font-size: 0.875rem; + color: #29F1FA; + padding-left: 10px; + } + + .top-province-col { + display: flex; + align-items: center; + } + .top-province-tag { font-size: 0.875rem; padding: 0 0.5625rem; @@ -904,17 +1350,7 @@ color: #fff; } - .ant-tag-checkable:not(.ant-tag-checkable-checked):hover { - color: #1b7ef2; - } - - .ant-tag-checkable:active { - background-color: transparent; - } - - .ant-tag-checkable-checked { - background-color: #1b7ef2; - } + .monitor-screen-tag-color; } @@ -1623,4 +2059,39 @@ .ant-empty-description { color: #fff; } +} + +.monitor-screen-tag-color { + .ant-tag-checkable:not(.ant-tag-checkable-checked):hover { + color: #1b7ef2; + } + + .ant-tag-checkable:active { + background-color: transparent; + } + + .ant-tag-checkable-checked { + background-color: #1b7ef2; + } +} + +.monitor-screen-tag { + .monitor-screen-tag-color; + padding-top: 0; + + .ant-tooltip-arrow { + display: none; + } + + &>.ant-tooltip-content>.ant-tooltip-inner>p { + margin-bottom: 0; + } +} + +.monitor-top-province-tag { + font-size: 0.875rem; + padding: 0 0.5625rem; + line-height: 1.6875rem; + margin-right: 0; + color: #fff; } \ No newline at end of file diff --git a/src/pages/ElecEvaluation/VideoMonitor/Online/components/OnlineSupervision.tsx b/src/pages/ElecEvaluation/VideoMonitor/Online/components/OnlineSupervision.tsx index 210d64b..0c4430e 100644 --- a/src/pages/ElecEvaluation/VideoMonitor/Online/components/OnlineSupervision.tsx +++ b/src/pages/ElecEvaluation/VideoMonitor/Online/components/OnlineSupervision.tsx @@ -33,7 +33,7 @@ const OnlineSupervision: React.FC<{}> = () => { //在线监督 function supervision(record: any): void { - window.open("/ElecMonitorScreen/ProjectMonitorRoom?monitorId=" + record.id); + window.open("/ElecMonitor/RoomDetail?monitorId=" + record.id); } const columns: ProColumns[] = [ diff --git a/src/pages/ElecEvaluation/VideoMonitor/Post/index.tsx b/src/pages/ElecEvaluation/VideoMonitor/Post/index.tsx index f114adb..7ec7f08 100644 --- a/src/pages/ElecEvaluation/VideoMonitor/Post/index.tsx +++ b/src/pages/ElecEvaluation/VideoMonitor/Post/index.tsx @@ -35,7 +35,7 @@ const PostSupervision: React.FC<{}> = () => { //评标监控回看 function reviewMonitor(record: any): void { - window.open("/ElecMonitorScreen/ProjectMonitorRoom?monitorId=" + record.id); + window.open("/ElecMonitor/RoomDetail?monitorId=" + record.id); } const columns: ProColumns[] = [ From e58d05bbcaee210827901bbc8e31ab6667db2d68 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Mon, 6 Feb 2023 08:58:35 +0800 Subject: [PATCH 5/9] 2.6 --- .../Monitor/Exception/index.tsx | 217 +++++++++++------- .../ElecEvaluation/Monitor/Home/index.tsx | 125 +++++++--- .../Monitor/OpenToday/index.tsx | 44 ++-- src/pages/ElecEvaluation/Monitor/service.ts | 29 ++- src/pages/ElecEvaluation/Monitor/style.less | 156 +++++++++++++ 5 files changed, 423 insertions(+), 148 deletions(-) diff --git a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx index 7bbef03..55444d5 100644 --- a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx @@ -3,14 +3,14 @@ import React, { useEffect, useRef, useState } from 'react'; import '../style.less' import { authCheck, ModalList, onCell, onHeaderCell, OverviewItem, ScreenLabel, ScreenTitle, ScrollTable } from '../Home'; import Circle3199 from '@/assets/monitor/circle-3199.png'; -import { getDecryptDataAPI, getNoOpenAssessListAPI, getNoOpenAssessNumberAPI, getNoOpenListAPI, getNoOpenNumberAPI, getThreeDayNoEndAPI, getThreeDayNoEndCountAPI, getThreeDaysUnSendAnnoCountAPI, getThreeDaysUnSendAnnoListAPI } from '../service'; +import { getMacSameListAPI, getDecryptExceptionListAPI, getNoOpenAssessListAPI, getNoOpenAssessNumberAPI, getNoOpenListAPI, getNoOpenNumberAPI, getThreeDayNoEndAPI, getThreeDayNoEndCountAPI, getThreeDaysUnSendAnnoCountAPI, getThreeDaysUnSendAnnoListAPI } from '../service'; import { isNotEmpty } from '@/utils/CommonUtils'; const MonitorException: React.FC<{}> = () => { //超过1小时未开标数量 const [noOpenNumberData, setNoOpenNumberData] = useState(""); //开启评审后3日未结束评标-列表 - const [threeDayNoEndData, setThreeDayNoEndData] = useState([]); + const [threeDayNoEndData, setThreeDayNoEndData] = useState(); //开启评审后3日未结束评标-数量 const [threeDayNoEndCount, setThreeDayNoEndCount] = useState(0); //超过1小时未开标数量-列表 @@ -19,20 +19,24 @@ const MonitorException: React.FC<{}> = () => { const [noOpenAssessListData, setNoOpenAssessListData] = useState([]); //开标后超过6小时未开启评审室-数量 const [noOpenAssessNumber, setNoOpenAssessNumber] = useState(0); - //异常监控-解密异常、mac地址相同及相关项目列表 - const [decryptData, setDecryptData] = useState(); + //异常监控-解密异常 + const [decryptExceptionList, setDecryptExceptionList] = useState(); + //异常监控-mac地址相同 + const [macSameList, setMacSameList] = useState(); //评审室关闭3日内未发布公示数 const [threeDaysUnSendAnnoCount, setThreeDaysUnSendAnnoCount] = useState(""); //评审室关闭3日内未发布公示列表 - const [threeDaysUnSendAnnoList, setThreeDaysUnSendAnnoList] = useState([]); + const [threeDaysUnSendAnnoList, setThreeDaysUnSendAnnoList] = useState(); //ModalList visible const [modalListVisible, setModalListVisible] = useState(false); //ModalList Data - const [modalListData, setModalListData] = useState([]); + const [modalListData, setModalListData] = useState(); //ModalList Type const [exceptionType, setExceptionType] = useState(); //selectKey - const [selectKey, setSelectKey] = useState(-1); + // const [selectKey, setSelectKey] = useState(-1); + //modal弹窗数据类型 + const dataType = useRef(""); //权限校验 const auth = useRef(authCheck(["ebtp-watcher"])); //超过1小时未开标数量 @@ -44,10 +48,14 @@ const MonitorException: React.FC<{}> = () => { }) } //开启评审后3日未结束评标 - const getThreeDayNoEnd = () => { - getThreeDayNoEndAPI().then(res => { + const getThreeDayNoEnd = (params: any, type: number) => { + getThreeDayNoEndAPI({ ...params }).then(res => { if (res?.code == 200) { - setThreeDayNoEndData(res?.data); + if (type == 0) { + setThreeDayNoEndData(res?.data); + } else { + setModalListData(res?.data); + } } }) } @@ -76,37 +84,54 @@ const MonitorException: React.FC<{}> = () => { } }) } - //异常监控-解密异常、mac地址相同及相关项目列表jectRecord? - const getDecryptData = () => { - getDecryptDataAPI().then(res => { + //异常监控-解密异常 + const getDecryptExceptionList = (params: any, type: number) => { + getDecryptExceptionListAPI({ ...params }).then(res => { if (res?.code == 200) { const data = res?.data; - if (data?.decryptExceptionList?.length > 0) { - for (let i = 0, length = data.decryptExceptionList.length; i < length; i++) { - data.decryptExceptionList[i]["regionDictName"] = data.decryptExceptionList[i].projectRecord?.regionDictName; - data.decryptExceptionList[i]["projectName"] = data.decryptExceptionList[i].projectRecord?.projectName; - data.decryptExceptionList[i]["ownerContactName"] = data.decryptExceptionList[i].projectRecord?.ownerContactName; - data.decryptExceptionList[i]["ownerContactTel"] = data.decryptExceptionList[i].projectRecord?.ownerContactTel; - data.decryptExceptionList[i]["appManagerName"] = data.decryptExceptionList[i].projectRecord?.appManagerName; - data.decryptExceptionList[i]["appManagerTel"] = data.decryptExceptionList[i].projectRecord?.appManagerTel; - data.decryptExceptionList[i]["recruitStartTime"] = data.decryptExceptionList[i].projectRecord?.recruitStartTime; - data.decryptExceptionList[i]["bidMethodDict"] = data.decryptExceptionList[i].projectRecord?.bidMethodDict; + if (data?.decryptExceptionList?.records?.length > 0) { + for (let i = 0, length = data.decryptExceptionList.records.length; i < length; i++) { + data.decryptExceptionList.records[i]["regionDictName"] = data.decryptExceptionList.records[i].projectRecord?.regionDictName; + data.decryptExceptionList.records[i]["projectName"] = data.decryptExceptionList.records[i].projectRecord?.projectName; + data.decryptExceptionList.records[i]["ownerContactName"] = data.decryptExceptionList.records[i].projectRecord?.ownerContactName; + data.decryptExceptionList.records[i]["ownerContactTel"] = data.decryptExceptionList.records[i].projectRecord?.ownerContactTel; + data.decryptExceptionList.records[i]["appManagerName"] = data.decryptExceptionList.records[i].projectRecord?.appManagerName; + data.decryptExceptionList.records[i]["appManagerTel"] = data.decryptExceptionList.records[i].projectRecord?.appManagerTel; + data.decryptExceptionList.records[i]["recruitStartTime"] = data.decryptExceptionList.records[i].projectRecord?.recruitStartTime; + data.decryptExceptionList.records[i]["bidMethodDict"] = data.decryptExceptionList.records[i].projectRecord?.bidMethodDict; } } - if (data?.macSameList?.length > 0) { - for (let i = 0, length = data.macSameList.length; i < length; i++) { - data.macSameList[i]["regionDictName"] = data.macSameList[i].projectRecord?.regionDictName; - data.macSameList[i]["projectName"] = data.macSameList[i].projectRecord?.projectName; - data.macSameList[i]["ownerContactName"] = data.macSameList[i].projectRecord?.ownerContactName; - data.macSameList[i]["ownerContactTel"] = data.macSameList[i].projectRecord?.ownerContactTel; - data.macSameList[i]["appManagerName"] = data.macSameList[i].projectRecord?.appManagerName; - data.macSameList[i]["appManagerTel"] = data.macSameList[i].projectRecord?.appManagerTel; - data.macSameList[i]["recruitStartTime"] = data.macSameList[i].projectRecord?.recruitStartTime; - data.macSameList[i]["bidMethodDict"] = data.macSameList[i].projectRecord?.bidMethodDict; + if (type == 0) { + setDecryptExceptionList(data); + } else { + setModalListData(data?.decryptExceptionList); + } + } + }) + } + //异常监控-mac地址相同 + const getMacSameList = (params: any, type: number) => { + getMacSameListAPI({ ...params }).then(res => { + if (res?.code == 200) { + const data = res?.data; + if (data?.macSameList?.records?.length > 0) { + for (let i = 0, length = data.macSameList.records.length; i < length; i++) { + data.macSameList.records[i]["regionDictName"] = data.macSameList.records[i].projectRecord?.regionDictName; + data.macSameList.records[i]["projectName"] = data.macSameList.records[i].projectRecord?.projectName; + data.macSameList.records[i]["ownerContactName"] = data.macSameList.records[i].projectRecord?.ownerContactName; + data.macSameList.records[i]["ownerContactTel"] = data.macSameList.records[i].projectRecord?.ownerContactTel; + data.macSameList.records[i]["appManagerName"] = data.macSameList.records[i].projectRecord?.appManagerName; + data.macSameList.records[i]["appManagerTel"] = data.macSameList.records[i].projectRecord?.appManagerTel; + data.macSameList.records[i]["recruitStartTime"] = data.macSameList.records[i].projectRecord?.recruitStartTime; + data.macSameList.records[i]["bidMethodDict"] = data.macSameList.records[i].projectRecord?.bidMethodDict; } } - setDecryptData(data); + if (type == 0) { + setMacSameList(data); + } else { + setModalListData(data?.macSameList); + } } }) } @@ -121,10 +146,14 @@ const MonitorException: React.FC<{}> = () => { } //异常监控-评审室关闭3日内未发布公示列表 - const getThreeDaysUnSendAnnoList = () => { - getThreeDaysUnSendAnnoListAPI().then(res => { + const getThreeDaysUnSendAnnoList = (params: any, type: number) => { + getThreeDaysUnSendAnnoListAPI({ ...params }).then(res => { if (res?.code == 200) { - setThreeDaysUnSendAnnoList(res?.data); + if (type == 0) { + setThreeDaysUnSendAnnoList(res?.data); + } else { + setModalListData(res?.data); + } } }) } @@ -139,47 +168,49 @@ const MonitorException: React.FC<{}> = () => { } useEffect(() => { if (auth.current) { + const params = { pageNo: 1, pageSize: 10 }; getNoOpenNumber(); - getThreeDayNoEnd(); + getThreeDayNoEnd(params, 0); getNoOpenList(); getNoOpenAssessList(); getNoOpenAssessNumber(); - getDecryptData(); + getDecryptExceptionList(params, 0); + getMacSameList(params, 0); getThreeDaysUnSendAnnoCount(); - getThreeDaysUnSendAnnoList(); + getThreeDaysUnSendAnnoList(params, 0); getThreeDayNoEndCount(); } }, []) - useEffect(() => { - let interval: any = null; - let count = 0; - let lengthMap = [noOpenListData.length, noOpenAssessListData.length, isNotEmpty(decryptData?.decryptExceptionList) ? decryptData?.decryptExceptionList.length : 0, threeDayNoEndData.length, isNotEmpty(decryptData?.macSameList) ? decryptData?.macSameList.length : 0, threeDaysUnSendAnnoList.length].sort((a, b) => b - a); - if (lengthMap[0] > 1) {//至少2条才能滚动 - interval = setInterval(() => { - if (count < lengthMap[0]) { - setSelectKey(count); - const v0 = document.getElementsByClassName("scroll-select-bg")[0]; - const v1 = document.getElementsByClassName("scroll-select-bg")[1]; - const v2 = document.getElementsByClassName("scroll-select-bg")[2]; - const v3 = document.getElementsByClassName("scroll-select-bg")[3]; - const v4 = document.getElementsByClassName("scroll-select-bg")[4]; - const v5 = document.getElementsByClassName("scroll-select-bg")[5]; - v0?.scrollIntoView(false); - v1?.scrollIntoView(false); - v2?.scrollIntoView(false); - v3?.scrollIntoView(false); - v4?.scrollIntoView(false); - v5?.scrollIntoView(false); - count++; - } else { - count = 0; - } - }, 3000) - } - return () => { - clearInterval(interval); - } - }, [noOpenListData, noOpenAssessListData, decryptData?.decryptExceptionList, threeDayNoEndData, decryptData?.macSameList, threeDaysUnSendAnnoList]) + // useEffect(() => { + // let interval: any = null; + // let count = 0; + // let lengthMap = [noOpenListData.length, noOpenAssessListData.length, isNotEmpty(decryptData?.decryptExceptionList) ? decryptData?.decryptExceptionList.length : 0, threeDayNoEndData.length, isNotEmpty(decryptData?.macSameList) ? decryptData?.macSameList.length : 0, threeDaysUnSendAnnoList.length].sort((a, b) => b - a); + // if (lengthMap[0] > 1) {//至少2条才能滚动 + // interval = setInterval(() => { + // if (count < lengthMap[0]) { + // setSelectKey(count); + // const v0 = document.getElementsByClassName("scroll-select-bg")[0]; + // const v1 = document.getElementsByClassName("scroll-select-bg")[1]; + // const v2 = document.getElementsByClassName("scroll-select-bg")[2]; + // const v3 = document.getElementsByClassName("scroll-select-bg")[3]; + // const v4 = document.getElementsByClassName("scroll-select-bg")[4]; + // const v5 = document.getElementsByClassName("scroll-select-bg")[5]; + // v0?.scrollIntoView(false); + // v1?.scrollIntoView(false); + // v2?.scrollIntoView(false); + // v3?.scrollIntoView(false); + // v4?.scrollIntoView(false); + // v5?.scrollIntoView(false); + // count++; + // } else { + // count = 0; + // } + // }, 3000) + // } + // return () => { + // clearInterval(interval); + // } + // }, [noOpenListData, noOpenAssessListData, decryptData?.decryptExceptionList, threeDayNoEndData, decryptData?.macSameList, threeDaysUnSendAnnoList]) const columns: any[] = [ { @@ -500,8 +531,8 @@ const MonitorException: React.FC<{}> = () => {
- - + + @@ -511,11 +542,11 @@ const MonitorException: React.FC<{}> = () => {
- { setExceptionType(null); setModalListData(noOpenListData); setModalListVisible(true); }}>more} /> + { setExceptionType(null); setModalListData(noOpenListData); dataType.current = "1"; setModalListVisible(true); }}>more} />
- { setExceptionType(null); setModalListData(noOpenAssessListData); setModalListVisible(true); }}>more} /> + { setExceptionType(null); setModalListData(noOpenAssessListData); dataType.current = "4"; setModalListVisible(true); }}>more} />
@@ -523,30 +554,50 @@ const MonitorException: React.FC<{}> = () => {
- { setExceptionType("解密异常"); setModalListData(decryptData?.decryptExceptionList ? decryptData?.decryptExceptionList : []); setModalListVisible(true); }}>more} /> + { setExceptionType("解密异常"); setModalListData(decryptExceptionList?.decryptExceptionList); dataType.current = "2"; setModalListVisible(true); }}>more} />
- +
- { setExceptionType("开启评审后3日未结束评标"); setModalListData(threeDayNoEndData); setModalListVisible(true); }}>more} /> + { setExceptionType("开启评审后3日未结束评标"); setModalListData(threeDayNoEndData); dataType.current = "5"; setModalListVisible(true); }}>more} />
- +
- { setExceptionType("MAC地址重复"); setModalListData(decryptData?.macSameList ? decryptData?.macSameList : []); setModalListVisible(true); }}>more} /> + { setExceptionType("MAC地址重复"); setModalListData(macSameList?.macSameList); dataType.current = "3"; setModalListVisible(true); }}>more} />
- +
- { setExceptionType("评标结束后3日内未发布公示"); setModalListData(threeDaysUnSendAnnoList); setModalListVisible(true); }}>more} /> + { setExceptionType("评标结束后3日内未发布公示"); setModalListData(threeDaysUnSendAnnoList); dataType.current = "6"; setModalListVisible(true); }}>more} />
- +
- { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} /> + { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} onCallBack={(current, projectName, ownerContactName) => { + const params = { + pageNo: current, + pageSize: 10, + } + projectName != "" ? params["projectName"] = projectName : null; + ownerContactName != "" ? params["ownerContactName"] = ownerContactName : null; + if (dataType.current == "1") { + + } else if (dataType.current == "2") { + getDecryptExceptionList(params, 1); + } else if (dataType.current == "3") { + getMacSameList(params, 1); + } else if (dataType.current == "4") { + + } else if (dataType.current == "5") { + getThreeDayNoEnd(params, 1); + } else if (dataType.current == "6") { + getThreeDaysUnSendAnnoList(params, 1); + } + }} /> ); }; diff --git a/src/pages/ElecEvaluation/Monitor/Home/index.tsx b/src/pages/ElecEvaluation/Monitor/Home/index.tsx index 54eb67f..bff3c07 100644 --- a/src/pages/ElecEvaluation/Monitor/Home/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Home/index.tsx @@ -1,4 +1,4 @@ -import { Button, Col, Descriptions, Divider, Dropdown, Empty, Input, Menu, MenuProps, message, Modal, Progress, Row, Space, Table, Typography } from 'antd'; +import { Button, Col, Descriptions, Divider, Dropdown, Empty, Input, Menu, MenuProps, message, Modal, Pagination, PaginationProps, Progress, Row, Space, Table, Typography } from 'antd'; import { debounce } from 'lodash'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import '../style.less' @@ -12,6 +12,8 @@ import Frame10121 from '@/assets/monitor/Frame-10121.png'; import titleIcon from '@/assets/monitor/title-icon.png'; import left from '@/assets/monitor/left.png'; import right from '@/assets/monitor/right.png'; +import arrowLeftCircleFill from '@/assets/monitor/arrow-left-circle-fill.png' +import arrowRightCircleFill from '@/assets/monitor/arrow-right-circle-fill.png' import { CaretRightOutlined, DownOutlined } from '@ant-design/icons'; import './china'; import * as echarts from 'echarts'; @@ -675,9 +677,9 @@ export const ScreenTitle = (props: { title: string, children: any }) => { } //modal大弹窗 -export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, exceptionType?: string, exceptionData: any[], title?: string | null }) => { - const { modalVisible, onCancel, exceptionType, exceptionData, title } = props; - const modalHeight = window.innerHeight * 96 / 100; +export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, exceptionType?: string, exceptionData: any, title?: string | null, onCallBack?: (current: number, projectName: string, ownerContactName: string) => void }) => { + const { modalVisible, onCancel, exceptionType, exceptionData, title, onCallBack = () => { } } = props; + // const modalHeight = window.innerHeight * 96 / 100; const labelStyle = { color: "#29F0F9", fontWeight: "bold", width: "100px" }; const contentStyle = { color: "#fff", paddingLeft: "14px" }; const titleStyle = { color: "#01C2FF", fontWeight: 700, marginBottom: 0 }; @@ -685,49 +687,102 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, //初始化字典 let dic: any = getDicData(); let dicData: any = JSON.parse(dic); + const [current, setCurrent] = useState(1); + const [total, setTotal] = useState(0); + const project = useRef(""); + const owner = useRef(""); + const onChange: PaginationProps['onChange'] = page => { + setCurrent(page); + onCallBack(page, project.current, owner.current); + }; + const itemRender: PaginationProps['itemRender'] = (_, type, originalElement) => { + if (type === 'prev') { + return ; + } + if (type === 'next') { + return ; + } + return originalElement; + }; + const onProjectChange = (e: any) => { + project.current = e.target.value; + } + const onOwnerChange = (e: any) => { + owner.current = e.target.value; + } + const onSearchClick = () => { + setCurrent(1); + onCallBack(1, project.current, owner.current); + } + + useEffect(() => { + setTotal(exceptionData?.total || 0); + setCurrent(exceptionData?.currnet || 1); + }, [exceptionData]) return ( onCancel()} + onCancel={() => { + project.current = ""; + owner.current = ""; + onCancel() + }} width={"60%"} - style={{ maxHeight: modalHeight }} - bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto', padding: "20px 24px 24px" }} + // style={{ maxHeight: modalHeight }} + // bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto', padding: "20px 24px 24px" }} + bodyStyle={{ padding: "20px 24px 24px" }} centered footer={null} >

{isNotEmpty(title) ? title : "重点监测异常明细单"}

- {exceptionData.length > 0 ? exceptionData.map((item, index) => { - return ( -
1 ? 'modal-list-block' : 'modal-list-block modal-list-block-border0'}> -
-
- {item?.projectName} -
{item?.bidSectName || item?.sectionName}
-
- {isEmpty(title) &&
-
- 采购方式:{changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict)} +
+
+ 项目名称: +
+
+ 采购经理: +
+
+ +
+
+
+ {exceptionData?.records?.length > 0 ? exceptionData?.records?.map((item: any, index: any) => { + return ( +
1 ? 'modal-list-block' : 'modal-list-block modal-list-block-border0'}> +
+
+ {item?.projectName} +
{item?.bidSectName || item?.sectionName}
-
} + {isEmpty(title) &&
+
+ 采购方式:{changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict)} +
+
} +
+
+ + {isNotEmpty(title) ? changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict) : isNotEmpty(exceptionType) ? exceptionType : item?.exType} + {item?.openTime || item?.recruitStartTime || item?.openingTime} + {isNotEmpty(item?.budgetAmount) ? Number(item?.budgetAmount).toFixed(2) : isNotEmpty(item?.bidSectContractPrice) ? typeof item?.bidSectContractPrice == "number" ? Number(item?.bidSectContractPrice).toFixed(2) : item?.bidSectContractPrice : "0"}元 + {item?.provinceName || item?.regionDictName || item?.province} + {item?.ownerContactName} + {item?.ownerContactTel} + {(item?.sectionState || item?.sectionStatus || item?.state) == 9 ? "异常处理" : changeDict(item?.bidMethodDict ? dicData[`business_module=${item?.bidMethodDict}`] : [], item?.businessModule)} + {item?.appManagerName} + {item?.appManagerTel} + +
-
- - {isNotEmpty(title) ? changeDict(dicData['procurement_mode=entrust'], item?.bidMethodDict) : isNotEmpty(exceptionType) ? exceptionType : item?.exType} - {item?.openTime || item?.recruitStartTime || item?.openingTime} - {isNotEmpty(item?.budgetAmount) ? Number(item?.budgetAmount).toFixed(2) : isNotEmpty(item?.bidSectContractPrice) ? typeof item?.bidSectContractPrice == "number" ? Number(item?.bidSectContractPrice).toFixed(2) : item?.bidSectContractPrice : "0"}元 - {item?.provinceName || item?.regionDictName || item?.province} - {item?.ownerContactName} - {item?.ownerContactTel} - {(item?.sectionState || item?.sectionStatus || item?.state) == 9 ? "异常处理" : changeDict(item?.bidMethodDict ? dicData[`business_module=${item?.bidMethodDict}`] : [], item?.businessModule)} - {item?.appManagerName} - {item?.appManagerTel} - -
-
- ) - }) : } + ) + }) : } +
+
+ +
{/*
onCancel()}> 确 定 diff --git a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx index ac646a1..a307f09 100644 --- a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx @@ -250,28 +250,28 @@ const OpenToday: React.FC<{}> = () => { clearInterval(interval); } }, []) - useEffect(() => { - let interval: any = null; - let count = 0; - let lengthMap = [isNotEmpty(todayOpeningData?.todayList) ? todayOpeningData?.todayList.length : 0, isNotEmpty(todayOpeningData?.importantList) ? todayOpeningData?.importantList.length : 0].sort((a, b) => b - a); - if (lengthMap[0] > 1) {//至少2条才能滚动 - interval = setInterval(() => { - if (count < lengthMap[0]) { - setSelectKey(count); - const v0 = document.getElementsByClassName("scroll-select-bg")[0]; - const v1 = document.getElementsByClassName("scroll-select-bg")[1]; - v0?.scrollIntoView(false); - v1?.scrollIntoView(false); - count++; - } else { - count = 0; - } - }, 3000) - } - return () => { - clearInterval(interval); - } - }, [todayOpeningData?.todayList, todayOpeningData?.importantList]) + // useEffect(() => { + // let interval: any = null; + // let count = 0; + // let lengthMap = [isNotEmpty(todayOpeningData?.todayList) ? todayOpeningData?.todayList.length : 0, isNotEmpty(todayOpeningData?.importantList) ? todayOpeningData?.importantList.length : 0].sort((a, b) => b - a); + // if (lengthMap[0] > 1) {//至少2条才能滚动 + // interval = setInterval(() => { + // if (count < lengthMap[0]) { + // setSelectKey(count); + // const v0 = document.getElementsByClassName("scroll-select-bg")[0]; + // const v1 = document.getElementsByClassName("scroll-select-bg")[1]; + // v0?.scrollIntoView(false); + // v1?.scrollIntoView(false); + // count++; + // } else { + // count = 0; + // } + // }, 3000) + // } + // return () => { + // clearInterval(interval); + // } + // }, [todayOpeningData?.todayList, todayOpeningData?.importantList]) return (
diff --git a/src/pages/ElecEvaluation/Monitor/service.ts b/src/pages/ElecEvaluation/Monitor/service.ts index aea2ead..542c119 100644 --- a/src/pages/ElecEvaluation/Monitor/service.ts +++ b/src/pages/ElecEvaluation/Monitor/service.ts @@ -93,9 +93,10 @@ export async function getNoOpenNumberAPI(data: any) { /** * 异常监控-开启评审后3日未结束评标 */ -export async function getThreeDayNoEndAPI() { +export async function getThreeDayNoEndAPI(data: any) { return request('/api/biz-service-ebtp-statistics/api/evaluation/exception/threedaynoend', { - method: 'GET', + method: 'POST', + data: { ...data }, }); } @@ -142,11 +143,22 @@ export async function getNoOpenAssessNumberAPI(data: any) { } /** - * 异常监控-解密异常、mac地址相同及相关项目列表 + * 异常监控-解密异常列表、解密异常数量 */ -export async function getDecryptDataAPI() { - return request('/api/biz-service-ebtp-statistics/exceptionMonitor/getDecryptDataNow', { - method: 'GET', +export async function getDecryptExceptionListAPI(data: any) { + return request('/api/biz-service-ebtp-statistics/exceptionMonitor/getDecryptExceptionList', { + method: 'POST', + data: { ...data } + }); +} + +/** + * 异常监控-mac地址相同列表,mac地址相同数量 + */ +export async function getMacSameListAPI(data: any) { + return request('/api/biz-service-ebtp-statistics/exceptionMonitor/getMacSameList', { + method: 'POST', + data: { ...data } }); } @@ -162,9 +174,10 @@ export async function getThreeDaysUnSendAnnoCountAPI() { /** * 异常监控-评审室关闭3日内未发布公示列表 */ -export async function getThreeDaysUnSendAnnoListAPI() { +export async function getThreeDaysUnSendAnnoListAPI(data: any) { return request('/api/biz-service-ebtp-statistics/exceptionMonitor/threeDaysUnSendAnnoList', { - method: 'GET', + method: 'POST', + data: { ...data } }); } diff --git a/src/pages/ElecEvaluation/Monitor/style.less b/src/pages/ElecEvaluation/Monitor/style.less index b527b4d..6f1e767 100644 --- a/src/pages/ElecEvaluation/Monitor/style.less +++ b/src/pages/ElecEvaluation/Monitor/style.less @@ -1987,6 +1987,162 @@ justify-content: flex-end; } + .modal-list-content-g { + max-height: calc(84vh - 130px); + overflow-y: auto; + + &::-webkit-scrollbar { + display: none; + } + } + + .modal-list-search { + display: flex; + justify-content: flex-start; + margin-top: 16px; + + &>div { + color: #FFFFFF; + } + + &>div:not(:last-child) { + padding-right: 16px; + } + + .ant-input { + width: 200px; + color: #FFFFFF; + background-color: transparent; + border: 1px solid #1B7DF2; + + &:hover { + border-color: #1B7DF2; + } + + &:focus { + border-color: #1B7DF2; + box-shadow: 0 0 0 2px #1B7DF2; + } + + &::-webkit-input-placeholder { + color: #29F1FA; + } + + &:-ms-input-placeholder { + color: #29F1FA; + } + } + + .ant-btn-primary { + background: #1B7EF2; + border-color: #1B7EF2; + + &:hover &:focus &:active { + background: #1B7EF2; + border-color: #1B7EF2; + } + } + } + + .modal-list-pagination { + text-align: center; + + .ant-pagination-item { + // border: none; + background: none; + border: 0; + // margin-right: 0.5rem; + margin: 0 0.5rem 0 0; + + &>a { + color: #45a2ff; + } + + &:hover>a { + color: #ffd502; + } + + + } + + .ant-pagination-item:hover { + border-color: #ffd502; + } + + .ant-pagination-item:focus-visible { + border-color: #ffd502; + } + + .ant-pagination-item-active { + border-color: #ffd502; + + a { + color: #ffd502; + } + + &:hover &:focus-visible { + border-color: #ffd502; + } + } + + .ant-pagination-prev:focus-visible .ant-pagination-item-link, + .ant-pagination-next:focus-visible .ant-pagination-item-link, + .ant-pagination-prev:hover .ant-pagination-item-link, + .ant-pagination-next:hover .ant-pagination-item-link { + border-color: #45a2ff; + color: #45a2ff; + } + + .ant-pagination-prev .ant-pagination-item-link, + .ant-pagination-next .ant-pagination-item-link { + background: none; + border-color: #45a2ff; + color: #45a2ff; + } + + .pagination-icon { + font-size: 20px; + vertical-align: middle; + color: #45a2ff; + height: 24px; + } + + .ant-pagination-total-text { + color: #45a2ff; + } + + .ant-pagination-prev { + margin-right: 0.5rem; + + &>a>img { + position: relative; + top: -2px; + } + } + + .ant-pagination-next { + &>a>img { + position: relative; + top: -2px; + } + } + + .ant-pagination-item-ellipsis { + color: #45a2ff; + } + + .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, + .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { + color: #45a2ff; + } + + .ant-pagination-jump-prev .ant-pagination-item-container, + .ant-pagination-jump-next .ant-pagination-item-container { + position: relative; + top: -2px; + } + } + .modal-list-block { padding: 20px 0 16px; box-sizing: border-box; From 585471d9a141ffc102ac4685ada226da4a84eccf Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Tue, 7 Feb 2023 15:34:20 +0800 Subject: [PATCH 6/9] =?UTF-8?q?2.7=20=E4=BF=AE=E6=94=B9=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Monitor/Exception/index.tsx | 48 ++++--- .../ElecEvaluation/Monitor/Home/index.tsx | 22 +-- .../Monitor/OpenToday/index.tsx | 134 +++++++++++++----- src/pages/ElecEvaluation/Monitor/service.ts | 15 +- src/pages/ElecEvaluation/Monitor/style.less | 49 +++---- 5 files changed, 172 insertions(+), 96 deletions(-) diff --git a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx index 55444d5..70ae7d8 100644 --- a/src/pages/ElecEvaluation/Monitor/Exception/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Exception/index.tsx @@ -14,9 +14,9 @@ const MonitorException: React.FC<{}> = () => { //开启评审后3日未结束评标-数量 const [threeDayNoEndCount, setThreeDayNoEndCount] = useState(0); //超过1小时未开标数量-列表 - const [noOpenListData, setNoOpenListData] = useState([]); + const [noOpenListData, setNoOpenListData] = useState(); //开标后超过6小时未开启评审室-列表 - const [noOpenAssessListData, setNoOpenAssessListData] = useState([]); + const [noOpenAssessListData, setNoOpenAssessListData] = useState(); //开标后超过6小时未开启评审室-数量 const [noOpenAssessNumber, setNoOpenAssessNumber] = useState(0); //异常监控-解密异常 @@ -60,18 +60,26 @@ const MonitorException: React.FC<{}> = () => { }) } //超过1小时未开标数量-列表 - const getNoOpenList = () => { - getNoOpenListAPI({ "timeLimit": "1", "dayNumber": "30" }).then(res => { + const getNoOpenList = (params: any, type: number) => { + getNoOpenListAPI({ "timeLimit": "1", "dayNumber": "30", ...params }).then(res => { if (res?.code == 200) { - setNoOpenListData(res?.data?.records); + if (type == 0) { + setNoOpenListData(res?.data); + } else { + setModalListData(res?.data); + } } }) } //开标后超过6小时未开启评审室-列表 - const getNoOpenAssessList = () => { - getNoOpenAssessListAPI({ "timeLimit": "6", "dayNumber": "30" }).then(res => { + const getNoOpenAssessList = (params: any, type: number) => { + getNoOpenAssessListAPI({ "timeLimit": "6", "dayNumber": "30", ...params }).then(res => { if (res?.code == 200) { - setNoOpenAssessListData(res?.data); + if (type == 0) { + setNoOpenAssessListData(res?.data); + } else { + setModalListData(res?.data); + } } }) } @@ -171,8 +179,8 @@ const MonitorException: React.FC<{}> = () => { const params = { pageNo: 1, pageSize: 10 }; getNoOpenNumber(); getThreeDayNoEnd(params, 0); - getNoOpenList(); - getNoOpenAssessList(); + getNoOpenList(params, 0); + getNoOpenAssessList(params, 0); getNoOpenAssessNumber(); getDecryptExceptionList(params, 0); getMacSameList(params, 0); @@ -269,7 +277,7 @@ const MonitorException: React.FC<{}> = () => { onHeaderCell, render: (_: any, record: any) => { return ( - { setExceptionType(null); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 + { setExceptionType(null); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 ) }, }, @@ -332,7 +340,7 @@ const MonitorException: React.FC<{}> = () => { onHeaderCell, render: (_: any, record: any) => { return ( - { setExceptionType("解密异常"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 + { setExceptionType("解密异常"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 ) }, }, @@ -395,7 +403,7 @@ const MonitorException: React.FC<{}> = () => { onHeaderCell, render: (_: any, record: any) => { return ( - { setExceptionType("评标结束后3日内未发布公示"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 + { setExceptionType("评标结束后3日内未发布公示"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 ) }, }, @@ -458,7 +466,7 @@ const MonitorException: React.FC<{}> = () => { onHeaderCell, render: (_: any, record: any) => { return ( - { setExceptionType("开启评审后3日未结束评标"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 + { setExceptionType("开启评审后3日未结束评标"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 ) }, }, @@ -521,7 +529,7 @@ const MonitorException: React.FC<{}> = () => { onHeaderCell, render: (_: any, record: any) => { return ( - { setExceptionType("MAC地址重复"); setModalListData([record]); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 + { setExceptionType("MAC地址重复"); setModalListData({ records: [record] }); setModalListVisible(true); }} className='monitor-extra-pointer' style={{ color: "#1b7ef2" }}>查看 ) }, }, @@ -544,11 +552,11 @@ const MonitorException: React.FC<{}> = () => {
{ setExceptionType(null); setModalListData(noOpenListData); dataType.current = "1"; setModalListVisible(true); }}>more} />
- +
{ setExceptionType(null); setModalListData(noOpenAssessListData); dataType.current = "4"; setModalListVisible(true); }}>more} />
- +
@@ -577,7 +585,7 @@ const MonitorException: React.FC<{}> = () => {
- { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} onCallBack={(current, projectName, ownerContactName) => { + { setModalListVisible(false); setModalListData({}); }} exceptionData={modalListData} exceptionType={exceptionType} onCallBack={(current, projectName, ownerContactName) => { const params = { pageNo: current, pageSize: 10, @@ -585,13 +593,13 @@ const MonitorException: React.FC<{}> = () => { projectName != "" ? params["projectName"] = projectName : null; ownerContactName != "" ? params["ownerContactName"] = ownerContactName : null; if (dataType.current == "1") { - + getNoOpenList(params, 1); } else if (dataType.current == "2") { getDecryptExceptionList(params, 1); } else if (dataType.current == "3") { getMacSameList(params, 1); } else if (dataType.current == "4") { - + getNoOpenAssessList(params, 1); } else if (dataType.current == "5") { getThreeDayNoEnd(params, 1); } else if (dataType.current == "6") { diff --git a/src/pages/ElecEvaluation/Monitor/Home/index.tsx b/src/pages/ElecEvaluation/Monitor/Home/index.tsx index bff3c07..a270371 100644 --- a/src/pages/ElecEvaluation/Monitor/Home/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Home/index.tsx @@ -14,7 +14,7 @@ import left from '@/assets/monitor/left.png'; import right from '@/assets/monitor/right.png'; import arrowLeftCircleFill from '@/assets/monitor/arrow-left-circle-fill.png' import arrowRightCircleFill from '@/assets/monitor/arrow-right-circle-fill.png' -import { CaretRightOutlined, DownOutlined } from '@ant-design/icons'; +import { CaretRightOutlined, DownOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons'; import './china'; import * as echarts from 'echarts'; import { getActiveSupplierAPI, getAnnoCountAPI, getAnnualAndTenderAgentAPI, getExpertNumberAPI, getMonitorListAPI, getOpeningListAPI, getReviewDistributionAPI, getSupplierCountAPI, getTodayInfoAPI, getTodayOpeningAPI } from '../service'; @@ -696,11 +696,17 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, onCallBack(page, project.current, owner.current); }; const itemRender: PaginationProps['itemRender'] = (_, type, originalElement) => { + // if (type === 'prev') { + // return ; + // } + // if (type === 'next') { + // return ; + // } if (type === 'prev') { - return ; + return ; } if (type === 'next') { - return ; + return ; } return originalElement; }; @@ -737,7 +743,7 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, footer={null} >

{isNotEmpty(title) ? title : "重点监测异常明细单"}

-
+ {exceptionData?.total &&
项目名称:
@@ -747,7 +753,7 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void,
-
+
}
{exceptionData?.records?.length > 0 ? exceptionData?.records?.map((item: any, index: any) => { return ( @@ -780,9 +786,9 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, ) }) : }
-
- -
+ {exceptionData?.total &&
+ `共 ${total} 条`} /> +
} {/*
onCancel()}> 确 定 diff --git a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx index a307f09..a7000ed 100644 --- a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx @@ -24,13 +24,13 @@ const OpenToday: React.FC<{}> = () => { //超过5小时未开标数量 const [noOpenNumberFive, setNoOpenNumberFive] = useState("0"); //超过2小时未开标列表 - const [noOpenListTwo, setNoOpenListTwo] = useState([]); + const [noOpenListTwo, setNoOpenListTwo] = useState(); //超过5小时未开标列表 - const [noOpenListFive, setNoOpenListFive] = useState([]); + const [noOpenListFive, setNoOpenListFive] = useState(); //ModalList visible const [modalListVisible, setModalListVisible] = useState(false); //ModalList Data - const [modalListData, setModalListData] = useState([]); + const [modalListData, setModalListData] = useState(); //ModalList Type const [exceptionType, setExceptionType] = useState(); //selectKey @@ -41,6 +41,10 @@ const OpenToday: React.FC<{}> = () => { const auth = useRef(authCheck(["ebtp-watcher"])); //定时器描述 const _time = 60000; + //modal弹窗数据类型 + const dataType = useRef(""); + // + const isInterval = useRef(true); //初始化字典 let dic: any = getDicData(); let dicData: any = JSON.parse(dic); @@ -157,23 +161,27 @@ const OpenToday: React.FC<{}> = () => { }) } //今日开标-解密成功率 - const getDecryptSuccessRateToday = () => { - getDecryptSuccessRateTodayAPI().then(res => { + const getDecryptSuccessRateToday = (params: any, type: number) => { + getDecryptSuccessRateTodayAPI({ ...params }).then(res => { if (res?.code == 200) { const data = res?.data; - if (data?.decryptFailProjectList?.length > 0) { - for (let i = 0, length = data.decryptFailProjectList.length; i < length; i++) { - data.decryptFailProjectList[i]["regionDictName"] = data.decryptFailProjectList[i].projectRecord?.regionDictName; - data.decryptFailProjectList[i]["projectName"] = data.decryptFailProjectList[i].projectRecord?.projectName; - data.decryptFailProjectList[i]["ownerContactName"] = data.decryptFailProjectList[i].projectRecord?.ownerContactName; - data.decryptFailProjectList[i]["ownerContactTel"] = data.decryptFailProjectList[i].projectRecord?.ownerContactTel; - data.decryptFailProjectList[i]["appManagerName"] = data.decryptFailProjectList[i].projectRecord?.appManagerName; - data.decryptFailProjectList[i]["appManagerTel"] = data.decryptFailProjectList[i].projectRecord?.appManagerTel; - data.decryptFailProjectList[i]["recruitStartTime"] = data.decryptFailProjectList[i].projectRecord?.recruitStartTime; - data.decryptFailProjectList[i]["bidMethodDict"] = data.decryptFailProjectList[i].projectRecord?.bidMethodDict; + if (data?.decryptFailProjectList?.records?.length > 0) { + for (let i = 0, length = data.decryptFailProjectList.records.length; i < length; i++) { + data.decryptFailProjectList.records[i]["regionDictName"] = data.decryptFailProjectList.records[i].projectRecord?.regionDictName; + data.decryptFailProjectList.records[i]["projectName"] = data.decryptFailProjectList.records[i].projectRecord?.projectName; + data.decryptFailProjectList.records[i]["ownerContactName"] = data.decryptFailProjectList.records[i].projectRecord?.ownerContactName; + data.decryptFailProjectList.records[i]["ownerContactTel"] = data.decryptFailProjectList.records[i].projectRecord?.ownerContactTel; + data.decryptFailProjectList.records[i]["appManagerName"] = data.decryptFailProjectList.records[i].projectRecord?.appManagerName; + data.decryptFailProjectList.records[i]["appManagerTel"] = data.decryptFailProjectList.records[i].projectRecord?.appManagerTel; + data.decryptFailProjectList.records[i]["recruitStartTime"] = data.decryptFailProjectList.records[i].projectRecord?.recruitStartTime; + data.decryptFailProjectList.records[i]["bidMethodDict"] = data.decryptFailProjectList.records[i].projectRecord?.bidMethodDict; } } - setDecryptSuccessRateTodayData(data); + if (type == 0) { + setDecryptSuccessRateTodayData(data); + } else { + setModalListData(data?.decryptFailProjectList); + } } }) } @@ -186,18 +194,26 @@ const OpenToday: React.FC<{}> = () => { }) } //评标阶段6小时未评标 - const getUnopenSix = () => { - getUnopenSixAPI().then(res => { + const getUnopenSix = (params: any, type: number) => { + getUnopenSixAPI({ ...params }).then(res => { if (res?.code == 200) { - setUnopenSixData(res?.data); + if (type == 0) { + setUnopenSixData(res?.data); + } else { + setModalListData(res?.data); + } } }) } //评标阶段10小时未评标 - const getUnopenTen = () => { - getUnopenTenAPI().then(res => { + const getUnopenTen = (params: any, type: number) => { + getUnopenTenAPI({ ...params }).then(res => { if (res?.code == 200) { - setUnopenTenData(res?.data); + if (type == 0) { + setUnopenTenData(res?.data); + } else { + setModalListData(res?.data); + } } }) } @@ -215,35 +231,59 @@ const OpenToday: React.FC<{}> = () => { }) } //超n小时未开标列表 - const getNoOpenList = () => { - getNoOpenListAPI({ "timeLimit": "2", "dayNumber": "1" }).then(res => { + const getNoOpenListTwo = (params: any, type: number) => { + getNoOpenListAPI({ "timeLimit": "2", "dayNumber": "1", ...params }).then(res => { if (res?.code == 200) { - setNoOpenListTwo(res?.data?.records); + if (type == 0) { + setNoOpenListTwo(res?.data); + } else { + setModalListData(res?.data); + } + } }) - getNoOpenListAPI({ "timeLimit": "5", "dayNumber": "1" }).then(res => { + } + //超n小时未开标列表 + const getNoOpenListFive = (params: any, type: number) => { + getNoOpenListAPI({ "timeLimit": "5", "dayNumber": "1", ...params }).then(res => { if (res?.code == 200) { - setNoOpenListFive(res?.data?.records); + if (type == 0) { + setNoOpenListFive(res?.data); + } else { + setModalListData(res?.data); + } + } }) } //页面数据获取 const getPageData = () => { getTodayInfo(); - getDecryptSuccessRateToday(); getTodayOpening(); - getUnopenSix(); - getUnopenTen(); + getNoOpenNumber(); - getNoOpenList(); + + } + //分页数据 + const getCurrentData = () => { + const params = { pageSize: 10, pageNo: 1 }; + getDecryptSuccessRateToday(params, 0); + getNoOpenListTwo(params, 0); + getNoOpenListFive(params, 0); + getUnopenSix(params, 0); + getUnopenTen(params, 0); } useEffect(() => { let interval: any; if (auth.current) { getPageData(); + getCurrentData(); interval = setInterval(() => { - getPageData(); + if (isInterval.current) { + getPageData(); + getCurrentData(); + } }, _time); } return () => { @@ -296,9 +336,9 @@ const OpenToday: React.FC<{}> = () => {
- { }} rightClick={() => { setExceptionType("解密异常"); setModalTitle(null); setModalListData(isNotEmpty(decryptSuccessRateTodayData?.decryptFailProjectList) ? decryptSuccessRateTodayData?.decryptFailProjectList : []); setModalListVisible(true); }} /> - { setExceptionType("2小时未开标"); setModalTitle(null); setModalListData(noOpenListTwo); setModalListVisible(true); }} rightClick={() => { setExceptionType("5小时未开标"); setModalTitle(null); setModalListData(noOpenListFive); setModalListVisible(true); }} /> - { setExceptionType("6小时未评标"); setModalTitle(null); setModalListData(unopenSixData); setModalListVisible(true); }} rightClick={() => { setExceptionType("10小时未评标"); setModalTitle(null); setModalListData(unopenTenData); setModalListVisible(true); }} /> + { }} rightClick={() => { setExceptionType("解密异常"); setModalTitle(null); setModalListData(decryptSuccessRateTodayData?.decryptFailProjectList); dataType.current = "1"; isInterval.current = false; setModalListVisible(true); }} /> + { setExceptionType("2小时未开标"); setModalTitle(null); setModalListData(noOpenListTwo?.records); dataType.current = "2"; isInterval.current = false; setModalListVisible(true); }} rightClick={() => { setExceptionType("5小时未开标"); setModalTitle(null); setModalListData(noOpenListFive?.records); dataType.current = "3"; isInterval.current = false; setModalListVisible(true); }} /> + { setExceptionType("6小时未评标"); setModalTitle(null); setModalListData(unopenSixData); dataType.current = "4"; isInterval.current = false; setModalListVisible(true); }} rightClick={() => { setExceptionType("10小时未评标"); setModalTitle(null); setModalListData(unopenTenData); dataType.current = "5"; isInterval.current = false; setModalListVisible(true); }} />
@@ -315,17 +355,35 @@ const OpenToday: React.FC<{}> = () => {
- { setModalTitle("今日开标明细"); setModalListData([record]); setModalListVisible(true); }} /> + { setModalTitle("今日开标明细"); setModalListData({ records: [record] }); setModalListVisible(true); }} />
- { setModalTitle("重保项目明细"); setModalListData([record]); setModalListVisible(true); }} /> + { setModalTitle("重保项目明细"); setModalListData({ records: [record] }); setModalListVisible(true); }} />
- { setModalListVisible(false); setModalListData([]); }} exceptionData={modalListData} exceptionType={exceptionType} title={modalTitle} /> + { setModalListVisible(false); setModalListData({}); isInterval.current = true; }} exceptionData={modalListData} exceptionType={exceptionType} title={modalTitle} onCallBack={(current, projectName, ownerContactName) => { + const params = { + pageNo: current, + pageSize: 10, + } + projectName != "" ? params["projectName"] = projectName : null; + ownerContactName != "" ? params["ownerContactName"] = ownerContactName : null; + if (dataType.current == "1") { + getDecryptSuccessRateToday(params, 1); + } else if (dataType.current == "2") { + getNoOpenListTwo(params, 1); + } else if (dataType.current == "3") { + getNoOpenListFive(params, 1); + } else if (dataType.current == "4") { + getUnopenSix(params, 1); + } else if (dataType.current == "5") { + getUnopenTen(params, 1); + } + }} /> ); }; diff --git a/src/pages/ElecEvaluation/Monitor/service.ts b/src/pages/ElecEvaluation/Monitor/service.ts index 542c119..195e617 100644 --- a/src/pages/ElecEvaluation/Monitor/service.ts +++ b/src/pages/ElecEvaluation/Monitor/service.ts @@ -193,25 +193,28 @@ export async function getTodayInfoAPI() { /** * 今日开标-评标阶段10小时未评标 */ -export async function getUnopenTenAPI() { +export async function getUnopenTenAPI(data: any) { return request('/api/biz-service-ebtp-statistics/api/evaluation/today/unopen/ten', { - method: 'GET', + method: 'POST', + data: { ...data }, }); } /** * 今日开标-评标阶段6小时未评标 */ -export async function getUnopenSixAPI() { +export async function getUnopenSixAPI(data: any) { return request('/api/biz-service-ebtp-statistics/api/evaluation/today/unopen/six', { - method: 'GET', + method: 'POST', + data: { ...data }, }); } /** * 今日开标-解密成功率 */ -export async function getDecryptSuccessRateTodayAPI() { +export async function getDecryptSuccessRateTodayAPI(data: any) { return request('/api/biz-service-ebtp-statistics/exceptionMonitor/getDecryptSuccessRateToday', { - method: 'GET', + method: 'POST', + data: { ...data } }); } diff --git a/src/pages/ElecEvaluation/Monitor/style.less b/src/pages/ElecEvaluation/Monitor/style.less index 6f1e767..054a985 100644 --- a/src/pages/ElecEvaluation/Monitor/style.less +++ b/src/pages/ElecEvaluation/Monitor/style.less @@ -2013,15 +2013,15 @@ width: 200px; color: #FFFFFF; background-color: transparent; - border: 1px solid #1B7DF2; + border: 1px solid #01C2FF; &:hover { - border-color: #1B7DF2; + border-color: #01C2FF; } &:focus { - border-color: #1B7DF2; - box-shadow: 0 0 0 2px #1B7DF2; + border-color: #01C2FF; + box-shadow: 0 0 0 2px #01C2FF; } &::-webkit-input-placeholder { @@ -2034,18 +2034,19 @@ } .ant-btn-primary { - background: #1B7EF2; - border-color: #1B7EF2; + background: #01C2FF; + border-color: #01C2FF; &:hover &:focus &:active { - background: #1B7EF2; - border-color: #1B7EF2; + background: #01C2FF; + border-color: #01C2FF; } } } .modal-list-pagination { - text-align: center; + text-align: right; + margin-top: 16px; .ant-pagination-item { // border: none; @@ -2055,33 +2056,33 @@ margin: 0 0.5rem 0 0; &>a { - color: #45a2ff; + color: #FFFFFF; } &:hover>a { - color: #ffd502; + color: #45a2ff; } } .ant-pagination-item:hover { - border-color: #ffd502; + border-color: #45a2ff; } .ant-pagination-item:focus-visible { - border-color: #ffd502; + border-color: #45a2ff; } .ant-pagination-item-active { - border-color: #ffd502; + border-color: #45a2ff; a { - color: #ffd502; + color: #45a2ff; } &:hover &:focus-visible { - border-color: #ffd502; + border-color: #45a2ff; } } @@ -2089,26 +2090,26 @@ .ant-pagination-next:focus-visible .ant-pagination-item-link, .ant-pagination-prev:hover .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link { - border-color: #45a2ff; - color: #45a2ff; + border-color: #FFFFFF; + color: #FFFFFF; } .ant-pagination-prev .ant-pagination-item-link, .ant-pagination-next .ant-pagination-item-link { background: none; - border-color: #45a2ff; - color: #45a2ff; + border-color: #FFFFFF; + color: #FFFFFF; } .pagination-icon { font-size: 20px; vertical-align: middle; - color: #45a2ff; + color: #FFFFFF; height: 24px; } .ant-pagination-total-text { - color: #45a2ff; + color: #FFFFFF; } .ant-pagination-prev { @@ -2128,12 +2129,12 @@ } .ant-pagination-item-ellipsis { - color: #45a2ff; + color: #FFFFFF; } .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { - color: #45a2ff; + color: #FFFFFF; } .ant-pagination-jump-prev .ant-pagination-item-container, From 691c72286ab55c755f0eec402cf1c963958d17a1 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Wed, 8 Feb 2023 13:51:54 +0800 Subject: [PATCH 7/9] =?UTF-8?q?2.8=20=E8=A7=A3=E5=86=B3=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E5=B1=8F=E5=B9=95=E9=80=82=E9=85=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ElecBidEvaluation/ScreenVideoPlay.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/ElecBidEvaluation/ScreenVideoPlay.tsx b/src/components/ElecBidEvaluation/ScreenVideoPlay.tsx index c241f1d..3105720 100644 --- a/src/components/ElecBidEvaluation/ScreenVideoPlay.tsx +++ b/src/components/ElecBidEvaluation/ScreenVideoPlay.tsx @@ -141,6 +141,7 @@ const ScreenVideoPlay: React.FC = (props) => { function setWndCover() { var iWidth = window.innerWidth; var iHeight = window.innerHeight; + let scale = window.innerHeight / 1080; var oDivRect = playWnd.current.getBoundingClientRect(); var iCoverLeft = (oDivRect.left < 0) ? Math.abs(oDivRect.left) : 0; @@ -222,15 +223,16 @@ const ScreenVideoPlay: React.FC = (props) => { // 监听滚动条scroll事件,使插件窗口跟随浏览器滚动而移动 const resize = () => { if (oWebControl != null) { + let scale = window.innerHeight / 1080; oWebControl.JS_Resize(playWnd.current.clientWidth * scale, playWnd.current.clientHeight * scale); setWndCover(); } }; - window.addEventListener("resize", debounce(() => resize(), 100)); - window.addEventListener("scroll", debounce(() => resize(), 100)); + window.addEventListener("resize", debounce(() => resize(), 1000)); + window.addEventListener("scroll", debounce(() => resize(), 1000)); return () => { - window.removeEventListener("resize", debounce(() => resize(), 100)); - window.removeEventListener("scroll", debounce(() => resize(), 100)); + window.removeEventListener("resize", debounce(() => resize(), 1000)); + window.removeEventListener("scroll", debounce(() => resize(), 1000)); if (oWebControl != null) { oWebControl.JS_HideWnd(); // 先让窗口隐藏,规避可能的插件窗口滞后于浏览器消失问题 oWebControl.JS_Disconnect().then(function () { // 断开与插件服务连接成功 From 58573e08181a92925b2a8c7e9ee9152197080b5e Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 9 Feb 2023 14:36:38 +0800 Subject: [PATCH 8/9] =?UTF-8?q?2.9=20bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx index a7000ed..de62804 100644 --- a/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/OpenToday/index.tsx @@ -16,9 +16,9 @@ const OpenToday: React.FC<{}> = () => { //今日开标-首页开标数据 const [todayOpeningData, setTodayOpeningData] = useState(); //今日开标-评标阶段10小时未评标 - const [unopenTenData, setUnopenTenData] = useState([]); + const [unopenTenData, setUnopenTenData] = useState(); //今日开标-评标阶段6小时未评标 - const [unopenSixData, setUnopenSixData] = useState([]); + const [unopenSixData, setUnopenSixData] = useState(); //超过2小时未开标数量 const [noOpenNumberTwo, setNoOpenNumberTwo] = useState("0"); //超过5小时未开标数量 @@ -337,7 +337,7 @@ const OpenToday: React.FC<{}> = () => {
{ }} rightClick={() => { setExceptionType("解密异常"); setModalTitle(null); setModalListData(decryptSuccessRateTodayData?.decryptFailProjectList); dataType.current = "1"; isInterval.current = false; setModalListVisible(true); }} /> - { setExceptionType("2小时未开标"); setModalTitle(null); setModalListData(noOpenListTwo?.records); dataType.current = "2"; isInterval.current = false; setModalListVisible(true); }} rightClick={() => { setExceptionType("5小时未开标"); setModalTitle(null); setModalListData(noOpenListFive?.records); dataType.current = "3"; isInterval.current = false; setModalListVisible(true); }} /> + { setExceptionType("2小时未开标"); setModalTitle(null); setModalListData(noOpenListTwo); dataType.current = "2"; isInterval.current = false; setModalListVisible(true); }} rightClick={() => { setExceptionType("5小时未开标"); setModalTitle(null); setModalListData(noOpenListFive); dataType.current = "3"; isInterval.current = false; setModalListVisible(true); }} /> { setExceptionType("6小时未评标"); setModalTitle(null); setModalListData(unopenSixData); dataType.current = "4"; isInterval.current = false; setModalListVisible(true); }} rightClick={() => { setExceptionType("10小时未评标"); setModalTitle(null); setModalListData(unopenTenData); dataType.current = "5"; isInterval.current = false; setModalListVisible(true); }} />
From 811d2c0b32b6706ba304e01cad68a3f786be9b4a Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 9 Feb 2023 16:24:48 +0800 Subject: [PATCH 9/9] =?UTF-8?q?2.9=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/ElecEvaluation/Monitor/Home/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/ElecEvaluation/Monitor/Home/index.tsx b/src/pages/ElecEvaluation/Monitor/Home/index.tsx index a270371..ae89a3d 100644 --- a/src/pages/ElecEvaluation/Monitor/Home/index.tsx +++ b/src/pages/ElecEvaluation/Monitor/Home/index.tsx @@ -743,7 +743,7 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, footer={null} >

{isNotEmpty(title) ? title : "重点监测异常明细单"}

- {exceptionData?.total &&
+ {exceptionData?.total != undefined &&
项目名称:
@@ -786,7 +786,7 @@ export const ModalList = (props: { modalVisible: boolean, onCancel: () => void, ) }) : }
- {exceptionData?.total &&
+ {exceptionData?.total != undefined &&
`共 ${total} 条`} />
} {/*