Files
fe_service_ebtp_frontend/src/pages/Evaluation/BidDetailed/BidDetailedManager/BPR.js

307 lines
8.2 KiB
JavaScript
Raw Normal View History

2021-01-16 11:29:42 +08:00
import React, {PureComponent} from 'react';
import {Divider,Button,Form,Card,Tabs,Table,Tooltip,Input,Select,Row,Col,message,Modal,Pagination,Spin} from 'antd';
// import './index.less';
import { connect } from "dva";
import { getRoomId } from '@/utils/session';
import { getURLInformation } from '@/utils/CommonUtils';
@connect(({ bidev,loading }) => ({
...bidev
// preListLoading:loading.effects['bidev/fetchpreList'],
}))
class BPR extends PureComponent {
state={
tableloading:false,
preListLoading:false,
total:"",//供应商数量
page:"",//总页数
pageList:[],//供应商分页对应列表
currentPage:"",
dataSource:"",//当前页面数据源
ret:[],
supplierlist:[],
2022-03-10 14:24:13 +08:00
columns:[]
2021-01-16 11:29:42 +08:00
}
componentDidMount(){
this.setState({
tableloading:true
})
const paramst={
assessRoomId:getRoomId(),
2022-03-10 14:24:13 +08:00
reviewTurnId:getURLInformation('turnId'),
reviewType: "2"
2021-01-16 11:29:42 +08:00
}
this.props.dispatch({
type:"bidev/fetchPreSupplierList",
payload:{...paramst},
callback:(response,txt)=>{
// let response=this.preSupplierList;
// let txt="success"
if(txt="success"){
if(response.data.length>0){
let rt=response.data.length;
// 生成供应商分页对应列表
let pageList=[];
let z=1; //供应商数量计算器
let itemt=[];
let key=1; //页数计算器
let page=Math.ceil(rt/3); //页数
for(let t of response.data){
itemt.push(t.supplierRegisterId)
if(z==rt || z%3==0){
let item2={
key:key,
value:itemt
}
pageList.push(item2)
itemt=[];
key++;
}
z++;
}
// 专家分页初始化
this.setState({
total:rt, //供应商数量
page:page, //页数
currentPage:1,//当前页数
pageList:pageList, //供应商分页对应列表
supplierlist:response.data
})
// 初始化完成
this.fetchColumns(response.data,pageList,1)
}
}
}
})
}
2022-03-10 14:24:13 +08:00
//截取字符串方法
getCaption(obj){
var index=obj.lastIndexOf("\-");
obj=obj.substring(index+1,obj.length);
return obj;
}
2021-01-16 11:29:42 +08:00
async fetchColumns(supplierlist,pageList,currentPage){
// 推入专家columns
// 表columns初始化
const { columns }=this.state;
2022-03-10 14:24:13 +08:00
const { getCaption }=this
let columnst=[{
title: '序号',
dataIndex: 'no',
key: 'no',
rowSpan :2,
render:(text,record,index)=>{
return (index+1)
}
},
{
title: '详审类型',
dataIndex: 'categoryName',
rowSpan :2,
render(text, record, index) {
let rowSpan = getCaption(record.key)
if(record.colLength){
return { children: <>{text}</>, props: { colSpan: record.colLength }}
}else{
return { children: <>{text}</>, props: { rowSpan: rowSpan == '0' ? record.length : 0 }}
}
},
},
{
title: '类型名称',
dataIndex: 'preType',
rowSpan :2,
render: (text, record, index) => {
if(record.colLength){
return { children: <>{text}</>, props: { colSpan: 0 }}
}else{
return { children: <>{text}</>, props: { rowSpan: record.rowLength }}
}
}
},
{
title: '评审因素',
dataIndex: 'rate',
rowSpan :2,
render: (text, record, index) => {
if(record.colLength){
return { children: <>{text}</>, props: { colSpan: 0 }}
}else{
return { children: <>{text}</> }
}
}
}];
2021-01-16 11:29:42 +08:00
let newList=[];
let prepageList=[];
for(let t of pageList){
if(t.key==currentPage){
prepageList=t.value;
}
}
// 第一页
for(let res of supplierlist){
if(res.supplierRegisterId==prepageList[0] || res.supplierRegisterId==prepageList[1] || res.supplierRegisterId==prepageList[2]){
newList.push(res)
}
}
for(let t of newList){
const dataIndex=t.supplierRegisterId;
let childrenlist=[]
// 遍历子级columns
2022-03-10 14:24:13 +08:00
if(t?.members?.length>0){
for(let k of t?.members){
2021-01-16 11:29:42 +08:00
const dataIndex2=k.userId;
let item2={
key:k.userId,
title:k.name,
dataIndex: dataIndex+"#"+dataIndex2,
2022-03-10 14:24:13 +08:00
align:"center",
2021-01-16 11:29:42 +08:00
render:(text,record,index)=>{
2022-03-10 14:24:13 +08:00
if(record.rate == undefined) {
if(text == undefined) {
return {children: <>-</>,props: {colSpan: 0}}
} else {
return {children: <>{text}</>,props: {colSpan: t?.members?.length}}
}
}
2021-01-16 11:29:42 +08:00
return <>{text==undefined?"-":text}</>
}
}
childrenlist.push(item2)
}
}
const item={
2022-03-10 14:24:13 +08:00
title: t?.supplierRegisterName,
2021-01-16 11:29:42 +08:00
dataIndex: dataIndex,
key: dataIndex,
2022-03-10 14:24:13 +08:00
colSpan :t?.members?.length, //被合并个数
2021-01-16 11:29:42 +08:00
children:childrenlist
}
columnst.push(item)
}
await this.props.dispatch({
type:"bidev/save",
payload:{
columns:columnst
}
})
this.setState({
tableloading:false
})
this.fetchDataSource(prepageList)
}
async fetchDataSource(prepageList){
this.setState({
preListLoading:true
})
// const params={
// assessRoomId:"1331563852445253632",
// reviewTurnId:1,
// supplierRegisterIds:prepageList
// }
const params={
reviewTurnId:getURLInformation('turnId'),
reviewType:2,
supplierRegisterIds:prepageList
}
this.props.dispatch({
type:"bidev/fetchPreListt",
payload:{...params},
callback:(response,txt)=>{
// let txt="success";
// response=this.preList;
if(txt=="success"){
this.handleDataSource(response)
this.setState({
preListLoading:false
})
}
}
})
}
handleDataSource(response){
2022-03-10 14:24:13 +08:00
const {supplierlist} = this.state
2021-01-16 11:29:42 +08:00
let preList=response.data;
let row=0;
// 获取行数
for(let t of preList){
2022-03-10 14:24:13 +08:00
if(t?.detailList?.length>0){
row=row+t?.detailList?.length;
2021-01-16 11:29:42 +08:00
}
}
let dataSource=[];
let zk=1;
2022-03-10 14:24:13 +08:00
let count = 0
2021-01-16 11:29:42 +08:00
// 生成数据
for(let t of preList){
2022-03-10 14:24:13 +08:00
for(let [index,k] of t?.detailList?.entries()){
2021-01-16 11:29:42 +08:00
let tk={...k.earlyExpertMap}
2022-03-10 14:24:13 +08:00
tk.preType=t?.weights == undefined || t?.weights == null ? t.name : `${t.name}(${t.weights}%)`;
tk.categoryName=t.categoryName
tk.rowLength=index == 0 ? t?.detailList?.length : 0;
tk.key1=zk;
tk.key = t.category + '-' + count
tk.length = preList.reduce((pre,item) => {
if(item.category == t.category) {
return pre + item.detailList?.length
} else {
return pre
}
}, 0)
if(count == tk.length - 1) {
count = 0
} else {
count = count + 1
2021-01-16 11:29:42 +08:00
}
tk.rate=k.scoreItem;
2022-03-10 14:24:13 +08:00
if(tk.key1==row){
tk.categoryName="综合得分";
tk.colLength=3;
2021-01-16 11:29:42 +08:00
}
dataSource.push(tk);
zk++;
}
}
this.setState({
dataSource:dataSource,
row:row
})
}
render(){
const { tableloading,preListLoading,dataSource,currentPage,total,pageList,supplierlist }=this.state;
const { columns,preList }=this.props;
const onChange=(page, pageSize)=>{
this.setState({
currentPage:page
});
this.fetchColumns(supplierlist,pageList,page)
}
return <>
<Spin spinning={tableloading}>
<Table
loading={preListLoading}
columns={columns}
dataSource={dataSource!="" && dataSource}
pagination={false}
bordered
2022-03-10 14:24:13 +08:00
style={{marginTop:"40px"}}
2021-01-16 11:29:42 +08:00
/>
<Pagination
style={{float:"right",marginTop:"10px"}}
current={currentPage}
total={total!="" && total}
defaultPageSize={3}
onChange={onChange}
2022-03-10 14:24:13 +08:00
size="small"
showSizeChanger={false}
2021-01-16 11:29:42 +08:00
/>
</Spin>
</>
}
}
export default BPR;