diff --git a/config/router.config.ts b/config/router.config.ts index d826d9d..377e129 100644 --- a/config/router.config.ts +++ b/config/router.config.ts @@ -160,7 +160,7 @@ export default [ icon: 'form', path: '/Project/EntrustAssign', routes: [ - {//管理员-代理 + {//管理员-代理 采购经理(查看委托记录) name: 'manager', path: '/Project/EntrustAssign/Manager', component: './Project/EntrustAssign/manager', diff --git a/config/router_transfer.ts b/config/router_transfer.ts index fe00262..8b49935 100644 --- a/config/router_transfer.ts +++ b/config/router_transfer.ts @@ -70,6 +70,16 @@ export default [ path: '/ToHomePage', component: './LoadingPage/MiddleLoading/ToHomePage', }, + //审批单跳转公共页 + { + path: '/CommonApproval', + component: './LoadingPage/MiddleLoading/CommonApproval', + }, + //2.0和3.0选择页 + { + path: '/ChoiceLogin', + component: './LoadingPage/MiddleLoading/ChoiceLogin', + }, //跨工程跳转中间页结束 { name: 'index_1', diff --git a/src/assets/choiceLogin/chionceLoginPic01.png b/src/assets/choiceLogin/chionceLoginPic01.png new file mode 100644 index 0000000..793e4e7 Binary files /dev/null and b/src/assets/choiceLogin/chionceLoginPic01.png differ diff --git a/src/assets/choiceLogin/chionceLoginPic02.png b/src/assets/choiceLogin/chionceLoginPic02.png new file mode 100644 index 0000000..8173789 Binary files /dev/null and b/src/assets/choiceLogin/chionceLoginPic02.png differ diff --git a/src/assets/choiceLogin/choiceLoginBg.jpg b/src/assets/choiceLogin/choiceLoginBg.jpg new file mode 100644 index 0000000..a28cf6d Binary files /dev/null and b/src/assets/choiceLogin/choiceLoginBg.jpg differ diff --git a/src/assets/zjl_style.less b/src/assets/zjl_style.less index 1c9b6b0..08166e2 100644 --- a/src/assets/zjl_style.less +++ b/src/assets/zjl_style.less @@ -264,5 +264,94 @@ /* CSS3属性 */ } } +} +.choiceLoginContent-common { + float: left; + width: 385px; + height: 400px; + background-color: rgba(255, 255, 255, 0.8); + text-align: center; + padding: 24px; + cursor: pointer; + transition: all .5s; + + &:hover { + box-shadow: 0 6px 16px -8px #ffffff14, 0 9px 28px #ffffff0d, 0 12px 48px 16px #ffffff08; + background-color: rgba(255, 255, 255, 0.9); + } +} + +.choiceLoginBody { + padding: 0; + margin: 0; + list-style: none; + border: 0; + text-decoration: none; + font-family: 'Microsoft YaHei UI'; + background-image: url("~@/assets/choiceLogin/choiceLoginBg.jpg"); + background-size: 100% 100%; + background-repeat: no-repeat; + height: 100%; + + .choiceLoginBlock { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + + .choiceLoginContent { + width: 778px; + height: 400px; + } + + .contentLeft { + .choiceLoginContent-common; + border-top-left-radius: 10px; + border-bottom-left-radius: 10px; + margin-right: 4px; + } + + .contentLeft img { + margin-bottom: 9px + } + + .contentRight { + .choiceLoginContent-common; + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; + margin-left: 4px; + } + + .contentLeft h4, + .contentRight h4 { + font-size: 22px; + color: #333; + line-height: 32px; + font-weight: normal; + } + + .loginMassage { + width: 778px; + margin-top: 16px; + + &>p:first-child { + text-indent: 0; + } + + &>p { + font-size: 18px; + color: #eaeaea; + line-height: 32px; + text-indent: 2em; + margin-top: 0; + margin-bottom: 0; + + &>span { + color: #ffde52; + font-weight: bold; + } + } + } + } } \ No newline at end of file diff --git a/src/pages/Bid/CostConfig/index.tsx b/src/pages/Bid/CostConfig/index.tsx index cc4adb5..c7aaf35 100644 --- a/src/pages/Bid/CostConfig/index.tsx +++ b/src/pages/Bid/CostConfig/index.tsx @@ -1,5 +1,5 @@ -import React, { useEffect, useState } from 'react'; -import ProTable, { ProColumns } from '@ant-design/pro-table'; +import React, { useEffect, useRef, useState } from 'react'; +import ProTable, { ActionType, ProColumns } from '@ant-design/pro-table'; import { Button, Descriptions, Form, Input, message, Radio, Spin } from 'antd'; import styles from './indexStyles.less'; import '@/assets/xsy_style.less' @@ -83,25 +83,40 @@ const costConfig: React.FC<{}> = () => { { title: '序号', valueType: 'index', width: 50 }, { title: showName.sec, dataIndex: 'sectionName', }, { - title: showName.bsf + '(元)', dataIndex: 'expenses1Amount', + title: showName.bsf + '(元)', dataIndex: 'expenses1Amount', width: '20%', render: (_, record) => { return (
- - record.expenses1Amount = event.target.value} - /> - + { + const value = event.target.value; + if (value != undefined) { + const data = [...costData]; + const now = data[data.findIndex(item => item.sectionId === record.sectionId)]; + now.expenses1Type = value; + record.expenses1Amount = 0; + setCostData(data); + } + }} value={parseInt(record.expenses1Type)}> + 免费 + 收费 + {parseInt(record.expenses1Type) == 2 ? <> + record.expenses1Amount = event.target.value} + /> + 元 : null} +
) } diff --git a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx index e58d594..d8c1b5c 100644 --- a/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx +++ b/src/pages/Evaluation/BidControl/BidControlManager/components/ViewJuryScoringAnalysisFormModal.tsx @@ -1,27 +1,27 @@ -import React, { useEffect,useState } from 'react'; -import { Tabs,Collapse,Form, Input, Modal,Col,Row,Divider, Table, message, Button, Empty } from 'antd'; +import React, { useEffect, useState } from 'react'; +import { Tabs, Collapse, Form, Input, Modal, Col, Row, Divider, Table, message, Button, Empty } from 'antd'; import ProTable, { ProColumns } from "@ant-design/pro-table"; -import { deviatedAnalysisListToRR, deviatedAnalysisRRYes, getDeviatedAnalysisList, getList} from '../service'; +import { deviatedAnalysisListToRR, deviatedAnalysisRRYes, getDeviatedAnalysisList, getList } from '../service'; import { getProMethod, getRoomId, getSessionRoleData, getSessionUserData } from '@/utils/session'; interface ViewJuryScoringAnalysisFormModalProps { modalVisible: boolean; values: any; - onCancel:any; + onCancel: any; } - + const ViewJuryScoringAnalysisFormModal: React.FC = (props) => { - + const [juryScoringAnalysisList, setJuryScoringAnalysisList] = useState([]); const [juryYesList, setJuryYesList] = useState([]); const [juryYesVis, setJuryYesVisSet] = useState(false);//专家确认页面 const [juryTableShow, setJuryTableShow] = useState(false);// var roleId = getSessionRoleData().roleCode; - let roomId=getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') - - var params={}; - params["assessRoomId"]=roomId; + let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') + + var params = {}; + params["assessRoomId"] = roomId; let name1 = "投标人"; let proDict = getProMethod(); @@ -33,131 +33,135 @@ const ViewJuryScoringAnalysisFormModal: React.FC { getWarningList(); - if(roleId==="ebtp-expert"){ - params["createBy"]= getSessionUserData().userId; + if (roleId === "ebtp-expert") { + params["createBy"] = getSessionUserData().userId; setJuryTableShow(false); - }else{ - setJuryTableShow(true); + } else { + setJuryTableShow(true); } - },[]) + }, []) function callback(list: any) { //getSessionUserData.roleIds; - + } - function categoryValue(key:any){ + function categoryValue(key: any) { let name = ""; //0:报价;1:商务;2:技术;5:服务 - if(key==="0"){ + if (key === "0") { name = "报价"; - }else if(key==="1"){ + } else if (key === "1") { name = "商务"; - }else if(key==="2"){ + } else if (key === "2") { name = "技术"; - }else if(key==="5"){ + } else if (key === "5") { name = "服务"; } return name; } const juryColumns: ProColumns[] = [ - { title: '序号',render: (text: any, record: any, index: any) => `${index + 1}`}, - { title: '专家名称', dataIndex:"memberName"}, - { title: '确认时间',dataIndex:"updateDate"} + { title: '序号', render: (text: any, record: any, index: any) => `${index + 1}` }, + { title: '专家名称', dataIndex: "memberName" }, + { title: '确认时间', dataIndex: "updateDate" } ]; - - function setDatZjList(dataZjList:any, - length:any, - confirmList:any, - reviewTurnId: any, - turnSort: any, - buttonStatus: undefined, - num:any){ + + function setDatZjList(dataZjList: any, + length: any, + confirmList: any, + reviewTurnId: any, + turnSort: any, + buttonStatus: undefined, + num: any) { const juryTitle: { title: any; dataIndex: string; key: string; children: never[]; }[] = []; dataZjList.map((item: any, index: any) => { - const tbpldzt = {title:item.name,dataIndex:'title',key:'title',children:[]}; - - item.categoryList.map((dfpld: any, index: any) => { - let value = categoryValue(dfpld); - tbpldzt.children.push({title:value,dataIndex:dfpld+item.userId,key:dfpld+item.userId,render: (text: any, record: any, index: any) => { - let a = ""; - - if(text>-30&&text<30){ - a =

{text}

- }else if(text>-50&&text<50){ - a =

{text}

- }else if(text<=-50||text>=50){ - a =

{text}

- }else{ - a = text; - } - return a; - } + const tbpldzt = { title: item.name, dataIndex: 'title', key: 'title', children: [] }; + + item.categoryList.map((dfpld: any, index: any) => { + let value = categoryValue(dfpld); + tbpldzt.children.push({ + title: value, dataIndex: dfpld + item.userId, key: dfpld + item.userId, render: (text: any, record: any, index: any) => { + let a = ""; + if (text > -10 && text < 10) { + a =

{text}

+ } else if (text > -30 && text < 30) { + a =

{text}

+ } else if (text > -50 && text < 50) { + a =

{text}

+ } else if (text <= -50 || text >= 50) { + a =

{text}

+ } else { + a = text; + } + return a; + } }); - }) + }) juryTitle.push(tbpldzt); }) const columns: ProColumns[] = [ - { title: name1, dataIndex: 'name', key:'name',className: 'column-money'}, - { title: '打分偏离度(%)', children:juryTitle,className: 'column-money' + { title: name1, dataIndex: 'name', key: 'name', className: 'column-money' }, + { + title: '打分偏离度(%)', children: juryTitle, className: 'column-money' }, - { title: '操作',render: (text: any, record: any, index: any) => { - const obj = { - children: '', - props: {}, - }; - if(index===0){ - let a = ""; - if(!buttonStatus){ - a = - }else if(buttonStatus){ - if(roleId==="ebtp-agency-project-manager"||roleId==="ebtp-purchase"){ - a = - }else if(roleId==="ebtp-expert"){ - if(confirmList[0].confirmStatus===0){ - a = - }else{ - a = "已确认"; + { + title: '操作', render: (text: any, record: any, index: any) => { + const obj = { + children: '', + props: {}, + }; + if (index === 0) { + let a = ""; + if (!buttonStatus) { + a = + } else if (buttonStatus) { + if (roleId === "ebtp-agency-project-manager" || roleId === "ebtp-purchase") { + a = + } else if (roleId === "ebtp-expert") { + if (confirmList[0].confirmStatus === 0) { + a = + } else { + a = "已确认"; + } + } - } + + obj.children = a; + obj.props.rowSpan = length; } - - obj.children=a; - obj.props.rowSpan = length; - } return obj - } - }, + } + }, ]; return columns; //setJuryScoringAnalysisColumns(columns); } - const getWarningList = async() => { + const getWarningList = async () => { await getDeviatedAnalysisList(params).then((res) => { - if (res.success ==true) { - if(res.data!==null&&res.data.length>0){ - + if (res.success == true) { + if (res.data !== null && res.data.length > 0) { + var list = res.data; - for(var i = 0 ; i < list.length ; i++){ + for (var i = 0; i < list.length; i++) { //获取表头 var zList = list[i].supplierlist; var columnsZ = setDatZjList(list[i].title, zList.length, list[i].confirmList, list[i].reviewTurnId, - list[i].turnSort,list[i].buttonStatus,i); - list[i]["columns"]=columnsZ; - list[i]["zjShow"] = true; - if(roleId==="ebtp-expert"&&!list[i].buttonStatus){ - list[i]["zjShow"] = false; - }else if(roleId==="ebtp-expert"&&list[i].buttonStatus){ - setJuryTableShow(true); - } + list[i].turnSort, list[i].buttonStatus, i); + list[i]["columns"] = columnsZ; + list[i]["zjShow"] = true; + if (roleId === "ebtp-expert" && !list[i].buttonStatus) { + list[i]["zjShow"] = false; + } else if (roleId === "ebtp-expert" && list[i].buttonStatus) { + setJuryTableShow(true); + } } setJuryScoringAnalysisList(list); } @@ -165,26 +169,26 @@ const ViewJuryScoringAnalysisFormModal: React.FC { - await deviatedAnalysisListToRR(assessRoomId,reviewTurnId,reviewTurnSort).then((res) => { - if (res.success ==true) { + const warningToRR = async (assessRoomId: any, reviewTurnId: any, reviewTurnSort: any) => { + await deviatedAnalysisListToRR(assessRoomId, reviewTurnId, reviewTurnSort).then((res) => { + if (res.success == true) { getWarningList(); } }) } - const deviatedRRYes = async(id: any,confirmStatus:any) => { - await deviatedAnalysisRRYes(id,confirmStatus).then((res) => { - if (res.success ==true) { + const deviatedRRYes = async (id: any, confirmStatus: any) => { + await deviatedAnalysisRRYes(id, confirmStatus).then((res) => { + if (res.success == true) { getWarningList(); } }) } - const selectJuryYes = async(num: any) => { + const selectJuryYes = async (num: any) => { await getDeviatedAnalysisList(params).then((res) => { - if (res.success ==true) { - if(res.data!==null&&res.data.length>0){ + if (res.success == true) { + if (res.data !== null && res.data.length > 0) { var juryYesList = res.data[num].confirmList; setJuryYesList(juryYesList); } @@ -195,78 +199,78 @@ const ViewJuryScoringAnalysisFormModal: React.FC {//返回成员modal foot return ( <> - + ) } - - //查看专家 - const selectjuryYes = () => { - return ( - <> - setJuryYesVisSet(false)} - footer={selectjuryYesButton()} + + //查看专家 + const selectjuryYes = () => { + return ( + <> + setJuryYesVisSet(false)} + footer={selectjuryYesButton()} + > + -
-
-
- - ) - } + +
+ + ) + } return ( - <> + <> {juryTableShow ? - - + + {juryScoringAnalysisList?.length == 0 - ? - : (proDict == "procurement_mode_5" || proDict == "procurement_mode_6") ? juryScoringAnalysisList?.map((item: any, index: any)=>{ - if(item.zjShow){ + ? + : (proDict == "procurement_mode_5" || proDict == "procurement_mode_6") ? juryScoringAnalysisList?.map((item: any, index: any) => { + if (item.zjShow) { return ( - - -

{item.turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

-
-
-
+ + +

{item.turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

+
+
+
); - } + } }) : ( <> -

{juryScoringAnalysisList[0].turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

-
+

{juryScoringAnalysisList[0].turnName}表格主要展示各专家对{name1}打分与所有专家对该{name1}打分平均值的差值百分比,无-表示该专家未参与此部分评分,该表信息仅供参考

+
) } {selectjuryYes()} -
-
- :null} - - ); +
+
+ : null} + + ); }; export default ViewJuryScoringAnalysisFormModal; diff --git a/src/pages/Evaluation/BidEnd/BidEndAdjust/index.tsx b/src/pages/Evaluation/BidEnd/BidEndAdjust/index.tsx index 0d3c781..4b9b0c5 100644 --- a/src/pages/Evaluation/BidEnd/BidEndAdjust/index.tsx +++ b/src/pages/Evaluation/BidEnd/BidEndAdjust/index.tsx @@ -3,7 +3,7 @@ import { Table, Button, Space, Form, Radio, Select, Input, InputNumber, Upload, import { TableListItem } from './data'; import ExtendUpload from "@/utils/ExtendUpload"; import '@/assets/ld_style.less'; -import { findArithmeticError, getList, getRoomType, savePrice } from './service'; +import { findArithmeticError, getList, getResponseTitle, getRoomType, savePrice } from './service'; import { getProMethod, getRoomId, getSessionRoleData, getSessionUserData } from '@/utils/session'; import ProTable from '@ant-design/pro-table'; @@ -45,6 +45,7 @@ const Index: React.FC<{}> = () => { let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') var roleId = getSessionUserData().roleIds;//操作员角色 const [dateList, setDateList] = useState([]); + const [dataListTitle, setDataListTitle] = useState(""); const [adjustForm] = Form.useForm(); const [whetherReadonly, setWhetherReadonly] = useState(false); const [editState, setEditState] = useState(false); @@ -66,7 +67,7 @@ const Index: React.FC<{}> = () => { } const columns: any[] = [ // 列表数据 { title: `${showNameT.tbr}名称`, dataIndex: 'tendererName', key: 'tendererName' }, - { title: '最新不含税总价', dataIndex: 'evaluatingContent', key: 'evaluatingContent' }, + { title: dataListTitle, dataIndex: 'evaluatingContent', key: 'evaluatingContent' }, { title: '调整类别', dataIndex: 'type', key: 'type', render: (text: any, record: any, index: any) => { let a = ""; @@ -142,7 +143,12 @@ const Index: React.FC<{}> = () => { } } }) - + await getResponseTitle(roomId).then(res => { + if (res.success == true) { + const data = res?.data; + setDataListTitle(data?.name); + } + }) } const setSelectChange = async (list: any) => { diff --git a/src/pages/Evaluation/BidEnd/BidEndAdjust/service.ts b/src/pages/Evaluation/BidEnd/BidEndAdjust/service.ts index 5846918..ace62af 100644 --- a/src/pages/Evaluation/BidEnd/BidEndAdjust/service.ts +++ b/src/pages/Evaluation/BidEnd/BidEndAdjust/service.ts @@ -3,18 +3,25 @@ import request from '@/utils/request'; export async function getList(assessRoomId: any) { // 算数错误报价调整 return request('/api/biz-service-ebtp-resps/v1/tfiletendererprice/getlist', { method: 'post', - data: {"assessRoomId": assessRoomId} + data: { "assessRoomId": assessRoomId } + }); +} + +export async function getResponseTitle(assessRoomId: any) { // 算数错误报价调整-获取应答格式报价项名称 + return request('/api/biz-service-ebtp-resps/v1/tfiletendererprice/getTitle', { + method: 'post', + data: { "assessRoomId": assessRoomId } }); } export async function getRoomType(assessRoomId: any) { // 查询评审室数据 - return request('/api/biz-service-ebtp-process/v1/bizassessroom/'+`${assessRoomId}`, { + return request('/api/biz-service-ebtp-process/v1/bizassessroom/' + `${assessRoomId}`, { method: 'get', }); } export async function findArithmeticError(assessRoomId: any) { // 查询评审室数据 - return request('/api/biz-service-ebtp-rsms/v1/review/config/findArithmeticError/'+`${assessRoomId}`, { + return request('/api/biz-service-ebtp-rsms/v1/review/config/findArithmeticError/' + `${assessRoomId}`, { method: 'get', }); } diff --git a/src/pages/Finance/Cost/components/Complete.tsx b/src/pages/Finance/Cost/components/Complete.tsx index cc489ed..3436be1 100644 --- a/src/pages/Finance/Cost/components/Complete.tsx +++ b/src/pages/Finance/Cost/components/Complete.tsx @@ -43,13 +43,15 @@ const Complete: React.FC<{}> = () => { { title: '费用内容描述', dataIndex: 'commodityDescribe', width: '25%' }, { title: '下单时间', dataIndex: 'createDate', width: '10%', valueType: 'dateTime' }, { title: '支付时间', dataIndex: 'paymentTime', width: '10%', valueType: 'dateTime' }, - { title: '金额(元)', dataIndex: 'amount', width: '4%' }, + { title: '金额(元)', dataIndex: 'amount', width: '6%', render: (_, record) => record.chargeType == "0" ? "免费" : record.amount }, { title: '操作', dataIndex: 'option', - width: '3%', valueType: 'option', render: (_, record) => { + if (record.chargeType == "0") {//免费无需申请发票 + return null; + } if (record.bidInvoice == null) { return