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"
|
2023-01-28 09:46:47 +08:00
|
|
|
showSizeChanger={false}
|
2021-01-16 11:29:42 +08:00
|
|
|
/>
|
|
|
|
</Spin>
|
|
|
|
</>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export default BPR;
|