From 48b39daad1f452c01aeb1b9a9fa062d1417d2784 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Wed, 5 Jul 2023 14:42:50 +0800 Subject: [PATCH 1/4] =?UTF-8?q?7.5=20=E4=B8=93=E5=AE=B6=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E7=BB=84=E7=85=A7=E7=89=87=E7=BB=B4=E6=8A=A4=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E9=80=89=E6=8B=A9=E7=94=B5=E5=AD=90=E8=AF=84?= =?UTF-8?q?=E6=A0=87=E5=AE=A4=E7=9A=84=E6=A0=87=E6=AE=B5=EF=BC=8C=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4=E7=85=A7=E7=89=87=E6=97=B6=E4=B8=BA=E5=BF=85=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ElecBidEvaluation/ExpertPhotoUpload.tsx | 2 +- .../JudgingPanel/List/OutsourcingManage.tsx | 13 +++++----- .../JudgingPanel/List/index.tsx | 24 +++++++++++-------- src/pages/ZZhaoMu/JudgingPanel/index.tsx | 24 +++++++++++-------- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/src/components/ElecBidEvaluation/ExpertPhotoUpload.tsx b/src/components/ElecBidEvaluation/ExpertPhotoUpload.tsx index 911922f..40e2fed 100644 --- a/src/components/ElecBidEvaluation/ExpertPhotoUpload.tsx +++ b/src/components/ElecBidEvaluation/ExpertPhotoUpload.tsx @@ -144,7 +144,7 @@ const ExpertPhotoUpload: React.FC = (props) => { > {uploadProps?.disabled || fileList.length >= 1 ? null : uploadButton} - + example diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx index 424d23b..6a4de8a 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx @@ -252,18 +252,19 @@ const OutsourcingManage: React.FC = (props) => { > - + 若预约了电子评标室,请提前维护外协人员照片,避免无法进入电子评标室。} + style={{ display: 'inline-block', width: '80%' }} + rules={[{ required: true, message: "请上传照片" }]} + extra={要求本人清晰、免冠、正面彩色2寸(413*579px)头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} > - + - - + */} @@ -1204,6 +1206,7 @@ const JudgingPanel: React.FC<{}> = () => { checkBoxsSet([]); changeMemberIdSet(''); setCheckedList([]); + setReserveStatus(false); form.resetFields(); } const columnsMember: ProColumns[] = [//成员管理页面表格 @@ -1616,19 +1619,20 @@ const JudgingPanel: React.FC<{}> = () => { > - + 评审专家照片为专家进入电子评标室报道及人脸识别认证使用,若预约了电子评标室,请维护专家照片。} + style={{ display: 'inline-block', width: '80%' }} + rules={[{ required: reserveStatus, message: "请上传照片" }]} + extra={要求本人清晰、免冠、正面彩色2寸(413*579px)头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} > - - - - {/* */} + + {/* */} + {/* */} + {/* */} {/* = () => { centered destroyOnClose title="评审小组成员管理" - bodyStyle={{ maxHeight: modalHeight - 140, overflow: 'auto', minHeight: '300px', padding: '16px 0px 0px 0px' }} + bodyStyle={{ maxHeight: modalHeight - 140, overflow: 'auto', minHeight: '350px', padding: '16px 0px 0px 0px' }} footer={returnFooterMem()} onCancel={() => { setMemberVis(false); diff --git a/src/pages/ZZhaoMu/JudgingPanel/index.tsx b/src/pages/ZZhaoMu/JudgingPanel/index.tsx index 471e357..ecec0b4 100644 --- a/src/pages/ZZhaoMu/JudgingPanel/index.tsx +++ b/src/pages/ZZhaoMu/JudgingPanel/index.tsx @@ -56,6 +56,7 @@ const JudgingPanel: React.FC<{}> = (props: any) => { const [isReserve, setIsReserve] = useState("0");//电子评标室-是否预约电子评标室 2022.9.23 zhoujianlong 0-不预约 1-预约 const userData = getSessionUserData();//当前登录人用户信息 const [assistVisible, setAssistVisible] = useState(false);//协办管理visible 2022.10.10 zhoujianlong + const [reserveStatus, setReserveStatus] = useState(false);//成员管理-当前行是否预约了评标室 true-预约了 false-没预约 //外协管理 const [assistList, setAssistList] = useState([]);//外协人员数据 assistList const [assistNumber, setAssistNumber] = useState("");//外协人员数量 assistNumber @@ -155,6 +156,7 @@ const JudgingPanel: React.FC<{}> = (props: any) => { await queryOpenStatus(record.id); categorySet(record.juryCategoryVOList); juryIdSet(record.id); + setReserveStatus(record.reserveStatus === 1); memberCountSet(memberCount + 1); setMemberVis(true); }}>成员管理 @@ -1072,6 +1074,7 @@ const JudgingPanel: React.FC<{}> = (props: any) => { updateKeyMemSet(-1); checkBoxsSet([]); changeMemberIdSet(''); + setReserveStatus(false); form.resetFields(); } const columnsMember: ProColumns[] = [//成员管理页面表格 @@ -1484,19 +1487,20 @@ const JudgingPanel: React.FC<{}> = (props: any) => { > - + 评审专家照片为专家进入电子评标室报道及人脸识别认证使用,若预约了电子评标室,请维护专家照片。} + style={{ display: 'inline-block', width: '80%' }} + rules={[{ required: reserveStatus, message: "请上传照片" }]} + extra={要求本人清晰、免冠、正面彩色2寸(413*579px)头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} > - - - - {/* */} + + {/* */} + {/* */} + {/* */} {/* = (props: any) => { centered destroyOnClose title="评审小组成员管理" - bodyStyle={{ maxHeight: modalHeight - 140, overflow: 'auto', minHeight: '300px', padding: '16px 0px 0px 0px' }} + bodyStyle={{ maxHeight: modalHeight - 140, overflow: 'auto', minHeight: '350px', padding: '16px 0px 0px 0px' }} footer={returnFooterMem()} onCancel={() => { setMemberVis(false); From dce6a1514c748aa9dc8208625345f049488f11e1 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 6 Jul 2023 13:36:40 +0800 Subject: [PATCH 2/4] =?UTF-8?q?7.6=20=E4=BF=9D=E5=AD=98=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=B8=93=E5=AE=B6=E7=85=A7=E7=89=87=E6=98=AF=E5=90=A6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JudgingPanel/List/OutsourcingManage.tsx | 12 ++++++++++++ .../ProjectManager/JudgingPanel/List/index.tsx | 14 +++++++++++++- src/pages/ZZhaoMu/JudgingPanel/index.tsx | 13 +++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx index 6a4de8a..753b9de 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx @@ -7,6 +7,7 @@ import React, { useEffect, useState } from "react"; import './judgList.less'; import '@/assets/xsy_style.less'; import { saveAssistPeople } from "./service"; +import { isEmpty } from "@/utils/CommonUtils"; interface OutsourcingManageProps { modalVisible: boolean, @@ -124,6 +125,17 @@ const OutsourcingManage: React.FC = (props) => { // }} onOk={() => { if (Number(assistNumber) == dataSource.length) { + let count = 0 + for (let i = 0, length = dataSource.length; i < length; i++) { + const item = dataSource[i]; + if (isEmpty(item.faceId)) { + count += 1; + } + } + if (count > 0) { + message.error(`请上传专家照片`); + return; + } const params = { juryId, assistList: [...dataSource], diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx index 6183d1f..1f70ff0 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx @@ -4,7 +4,7 @@ import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table'; import { getList, getSecs, saveGroup, delOne, saveMember, changeEx, queryVoList, changeMember, applyFor, roomStatus, juryTem, rePassWord, getUserPhoto, unlockAccount } from './service'; import moment from 'moment'; import { getDefId, getProId, getProMethod, getSessionProjectData, getSessionUserData } from '@/utils/session'; -import { getURLInformation } from '@/utils/CommonUtils'; +import { getURLInformation, isEmpty } from '@/utils/CommonUtils'; import './judgList.less'; import '@/assets/xsy_style.less'; import FileDown from '@/utils/Download'; @@ -1824,6 +1824,18 @@ const JudgingPanel: React.FC<{}> = () => { // qita != undefined && qita.extractNumber==qita.juryMemberList.length ? params.push(...qita.juryMemberList) : null; if (chackNum) { + let count = 0 + for (let i = 0, length = params.length; i < length; i++) { + const item = params[i]; + if (isEmpty(item.faceId)) { + count += 1; + } + } + if (count > 0) { + message.error(`请上传专家照片`); + loadingSet(false); + return; + } const success = await saveMember({ juryMemberDTOList: params }).then((res) => { return res.success }); diff --git a/src/pages/ZZhaoMu/JudgingPanel/index.tsx b/src/pages/ZZhaoMu/JudgingPanel/index.tsx index ecec0b4..81fd9aa 100644 --- a/src/pages/ZZhaoMu/JudgingPanel/index.tsx +++ b/src/pages/ZZhaoMu/JudgingPanel/index.tsx @@ -17,6 +17,7 @@ import { getUserPhoto, unlockAccount } from '@/pages/Tender/ProjectManager/Judgi import BidEvalAppointment from '@/components/ElecBidEvaluation/BidEvalAppointment'; import OutsourcingManage from '@/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage'; import { dateTimeFormatter } from '@/utils/DateUtils'; +import { isEmpty } from '@/utils/CommonUtils'; const JudgingPanel: React.FC<{}> = (props: any) => { const modalHeight = window.innerHeight * 96 / 100; @@ -1692,6 +1693,18 @@ const JudgingPanel: React.FC<{}> = (props: any) => { // qita != undefined && qita.extractNumber==qita.juryMemberList.length ? params.push(...qita.juryMemberList) : null; if (chackNum) { + let count = 0 + for (let i = 0, length = params.length; i < length; i++) { + const item = params[i]; + if (isEmpty(item.faceId)) { + count += 1; + } + } + if (count > 0) { + message.error(`请上传专家照片`); + loadingSet(false); + return; + } const success = await saveMember({ juryMemberDTOList: params, roomId: roomId }).then((res) => { return res.success }); From 1fe71d9e4fbc027b1109c9cc155ad0c103f43c29 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Thu, 13 Jul 2023 14:22:54 +0800 Subject: [PATCH 3/4] =?UTF-8?q?7.13=20=E4=BA=BA=E8=84=B8=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=89=93=E5=BC=80=E5=B9=B6=E5=A2=9E=E5=8A=A0=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E4=BF=AE=E6=94=B9=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E4=BA=BA=E8=84=B8=E7=85=A7=E7=89=87=E6=8F=90=E7=A4=BA=E6=96=87?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JudgingPanel/List/OutsourcingManage.tsx | 2 +- .../JudgingPanel/List/index.tsx | 2 +- src/pages/ZZhaoMu/JudgingPanel/index.tsx | 2 +- src/pages/userformal/login/index.tsx | 95 ++++++++++--------- src/pages/userformal/login/service.ts | 12 ++- 5 files changed, 65 insertions(+), 48 deletions(-) diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx index 753b9de..e5f5982 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx @@ -269,7 +269,7 @@ const OutsourcingManage: React.FC = (props) => { name="faceId" style={{ display: 'inline-block', width: '80%' }} rules={[{ required: true, message: "请上传照片" }]} - extra={要求本人清晰、免冠、正面彩色2寸(413*579px)头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} + extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} > diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx index 1f70ff0..a4979e5 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx @@ -1624,7 +1624,7 @@ const JudgingPanel: React.FC<{}> = () => { name="faceId" style={{ display: 'inline-block', width: '80%' }} rules={[{ required: reserveStatus, message: "请上传照片" }]} - extra={要求本人清晰、免冠、正面彩色2寸(413*579px)头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} + extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} > diff --git a/src/pages/ZZhaoMu/JudgingPanel/index.tsx b/src/pages/ZZhaoMu/JudgingPanel/index.tsx index 81fd9aa..7ff5aad 100644 --- a/src/pages/ZZhaoMu/JudgingPanel/index.tsx +++ b/src/pages/ZZhaoMu/JudgingPanel/index.tsx @@ -1493,7 +1493,7 @@ const JudgingPanel: React.FC<{}> = (props: any) => { name="faceId" style={{ display: 'inline-block', width: '80%' }} rules={[{ required: reserveStatus, message: "请上传照片" }]} - extra={要求本人清晰、免冠、正面彩色2寸(413*579px)头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} + extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} > diff --git a/src/pages/userformal/login/index.tsx b/src/pages/userformal/login/index.tsx index 6f4ed66..4ba4663 100644 --- a/src/pages/userformal/login/index.tsx +++ b/src/pages/userformal/login/index.tsx @@ -2,7 +2,7 @@ import React, { useEffect, useState, useRef } from 'react'; import { Form, Button, Input, Row, Col, Modal, Spin, message, Tabs } from 'antd'; import { UserOutlined, LockOutlined, SafetyCertificateOutlined } from '@ant-design/icons'; import './style.less'; -import { changePass } from './service'; +import { changePass, showFaceTab } from './service'; import logo from '@/images/login/logoPic.png'; import { refreshTokenApi, ZjfakeAccountLogin, ZjfakeFaceLogin } from '@/services/login'; import { history } from 'umi'; @@ -40,6 +40,7 @@ const Index: React.FC<{}> = () => { const { TabPane } = Tabs; const [submitLoading, setSubmitLoading] = useState(false); const [faceLoginDisable, setFaceLoginDisable] = useState(false); + const [faceLoginShow, setFaceLoginShow] = useState(false); const lv = useRef(); const [timerShow, setTimeShow] = useState(false); const [itemShow, setItemShow] = useState(false); @@ -496,6 +497,11 @@ const Index: React.FC<{}> = () => { } return false; } + //是否显示人脸登录 + const showFaceLogin = async () => { + const res = await showFaceTab(); + setFaceLoginShow(res?.data === 1); + } useEffect(() => { @@ -505,6 +511,7 @@ const Index: React.FC<{}> = () => { if (!allowedToFaceLogin()) { setFaceLoginDisable(true); } + showFaceLogin(); }, []); useEffect(() => { @@ -592,49 +599,51 @@ const Index: React.FC<{}> = () => { - {/* -
- + + - - } - placeholder="请输入用户名" - /> - - - - {!whetherIE.current ? () : ()} - - - - - -
-
*/} - {/* 加载摄像头 */} - {/* */} - {/* */} - {/* onClick={() => {hanleFaceSubmit(null, null);}} */} + + + } + placeholder="请输入用户名" + /> + + + + {!whetherIE.current ? () : ()} + + + + + + + + {/* 加载摄像头 */} + + + {/* onClick={() => {hanleFaceSubmit(null, null);}} */} + } diff --git a/src/pages/userformal/login/service.ts b/src/pages/userformal/login/service.ts index 48828ed..88f7353 100644 --- a/src/pages/userformal/login/service.ts +++ b/src/pages/userformal/login/service.ts @@ -17,11 +17,19 @@ export async function changePass(params: any) { */ export async function rgbToBase64(params: any) { const _body = JSON.stringify({//post请求参数 - type: 'pixel', + type: 'pixel', rgb: params.image }); return request('/api/core-service-ebtp-userinfo/outer/v1/ebtp/face/rgbArray2Base64', { method: 'post', - body:_body, + body: _body, }); +} + +/** + * 是否显示人脸识别tab + * @param params + */ +export async function showFaceTab() { + return request('/api/biz-service-ebtp-extend//v1/BizFuncSwitchConfig/bizfuncswitchconfig/getFaceRecognitionFlag'); } \ No newline at end of file From 133f159450a487d147e57cad938cbe1f30409ef3 Mon Sep 17 00:00:00 2001 From: jl-zhoujl2 Date: Fri, 14 Jul 2023 10:03:37 +0800 Subject: [PATCH 4/4] 7.14 --- .../ProjectManager/JudgingPanel/List/OutsourcingManage.tsx | 4 ++-- src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx | 4 ++-- src/pages/ZZhaoMu/JudgingPanel/index.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx index e5f5982..4308ec5 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage.tsx @@ -269,9 +269,9 @@ const OutsourcingManage: React.FC = (props) => { name="faceId" style={{ display: 'inline-block', width: '80%' }} rules={[{ required: true, message: "请上传照片" }]} - extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} + extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小400k以下} > - + {/* = () => { name="faceId" style={{ display: 'inline-block', width: '80%' }} rules={[{ required: reserveStatus, message: "请上传照片" }]} - extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} + extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小400k以下} > - + {/* = (props: any) => { name="faceId" style={{ display: 'inline-block', width: '80%' }} rules={[{ required: reserveStatus, message: "请上传照片" }]} - extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小200k以下} + extra={要求本人清晰、免冠、正面彩色2寸头像照片,无逆光、无ps、无美颜,面部五官无遮挡,头像部约占照片高度的三分之二,照片保存格式为JPG格式,大小400k以下} > - + {/*