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 { routerRedux } from 'dva/router'; 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:[], columns:[] } componentDidMount(){ this.setState({ tableloading:true }) const paramst={ assessRoomId:getRoomId(), reviewTurnId:getURLInformation('turnId'), reviewType: "2" } 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) } } } }) } //截取字符串方法 getCaption(obj){ var index=obj.lastIndexOf("\-"); obj=obj.substring(index+1,obj.length); return obj; } async fetchColumns(supplierlist,pageList,currentPage){ // 推入专家columns // 表columns初始化 const { columns }=this.state; 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} } } } }]; 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 if(t?.members?.length>0){ for(let k of t?.members){ const dataIndex2=k.userId; let item2={ key:k.userId, title:k.name, dataIndex: dataIndex+"#"+dataIndex2, align:"center", render:(text,record,index)=>{ if(record.rate == undefined) { if(text == undefined) { return {children: <>-,props: {colSpan: 0}} } else { return {children: <>{text},props: {colSpan: t?.members?.length}} } } return <>{text==undefined?"-":text} } } childrenlist.push(item2) } } const item={ title: t?.supplierRegisterName, dataIndex: dataIndex, key: dataIndex, colSpan :t?.members?.length, //被合并个数 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){ const {supplierlist} = this.state let preList=response.data; let row=0; // 获取行数 for(let t of preList){ if(t?.detailList?.length>0){ row=row+t?.detailList?.length; } } let dataSource=[]; let zk=1; let count = 0 // 生成数据 for(let t of preList){ for(let [index,k] of t?.detailList?.entries()){ let tk={...k.earlyExpertMap} 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 } tk.rate=k.scoreItem; if(tk.key1==row){ tk.categoryName="综合得分"; tk.colLength=3; } 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 <> } } export default BPR;