Files
fe_service_ebtp_frontend/src/pages/Evaluation/BidDetailed/BidDetailedReview/index.tsx
2021-01-16 11:29:42 +08:00

931 lines
36 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { useEffect, useState } from 'react';
import { Button, Table, Tabs, Space, Progress, Radio, Input, Checkbox, Select, Modal, Pagination, Spin, Form, message, Upload } from 'antd';
import { getTabList, getProgress, getScoreDetail, getRegister, submitDetail, updateJudgesStatus, findPriceScoreList, getEval } from './service';
import '@/assets/ld_style.less'
import FirstTrialTableDetailed from '../BidDetailedManager/module/FirstTrialTableDetailed';
import { getSessionProjectData, getSessionUserData, getRoomId } from '@/utils/session';
import FileDown from '@/utils/Download';
import { getURLInformation } from '@/utils/CommonUtils';
import { Link } from 'umi';
const { TabPane } = Tabs;
const { Option } = Select;
const { TextArea } = Input;
const CheckboxGroup = Checkbox.Group;
let assessRoomId: any, reviewTurnId: any, reviewType: any, bidEvalId: any
const Index: React.FC<{}> = () => {
const [detailVisible, setDetailVisible] = useState<boolean>(false); // 详审记录表
const [tabList, setTabList] = useState<any>([]); // tab
const [typeId, setTypeId] = useState<any>(); // tabId
const [tabListName, setTabListName] = useState<any>(); // tab名称
const [typeCategory, setTypeCategory] = useState<any>(); // tab类型
const [process, setProcess] = useState<any>(); // 我的进度
const [totalSupplier, setTotalSupplier] = useState<any>([]); // 总供应商列头
const [dataSource, setDataSource] = useState<any>([]); // 初审项配置
const [supplierColumns, setSupplierColumns] = useState<any>([]); // 当前显示供应商列头
const [current, setCurrent] = useState<number>(1); // 当前页码
const [total, setTotal] = useState<number>(1); // 共多少数据
const [bidEvalDetailDTOList, setBidEvalDetailDTOList] = useState<any>([]); // 提交数组
const [subId, setSubId] = useState<any>(); // 提交id
const [spinVisible, setSpinVisible] = useState<boolean>(false); // 加载中
const [remarkVisible, setRemarkVisible] = useState<boolean>(false); // 备注弹窗
const [remarksVal, setRemarksVal] = useState<any>(); // 备注
const [remarkForm] = Form.useForm(); // 备注表单
const [isDisabled, setIsDisabled] = useState<boolean>(false); // 是否可编辑
const [offerSource, setOfferSource] = useState<any>([]); // 报价总数据
const [offerTotalSource, setOfferTotalSource] = useState<any>([]); // 报价数据
const [offerCurrent, setOfferCurrent] = useState<number>(1); // 当前页码
const [offerTotal, setOfferTotal] = useState<number>(1); // 共多少数据
const [isDisabledOffer, setIsDisabledOffer] = useState<boolean>(false); // 报价是否可编辑
let projectName = getSessionProjectData().projectName
//祥审记录表
const [firstTrialTableDetailedTable, setFirstTrialTableDetailedTable] = useState<any>();
const columns: any[] = [ // 详审表头
{
title: '详审项',
dataIndex: 'scoreItem',
},
{
title: '评分标准',
dataIndex: 'rvwStandard',
},
];
const offerColumns: any[] = [ // 报价表头
{
title: '排序',
render: (text: any, record: any, index: any) => `${index + 1}`
},
{
title: '投标人姓名',
dataIndex: 'supplierRegisterName',
},
{
title: '投标人报价',
dataIndex: 'bidContent',
},
{
title: '查看报价文件',
render: (text: any, record: any, index: any) => {
return (
<Button type="link" danger></Button>
)
}
},
{
title: '报价分录入',
render: (text: any, record: any, index: any) => {
if (record.judgesStatus == '2') {
disabledOffer = true
}
if (record.priceScore) {
return (
<Input
disabled={disabledOffer}
onFocus={e => offerValueChange(e, record)}
onChange={e => offerSourceChange(e, record)}
value={record.priceScore} style={{ width: 160 }} />
)
} else {
return (
<Input disabled={disabledOffer} onChange={e => offerSourceChange(e, record)} value={record.priceScore} style={{ width: 160 }} />
)
}
}
}
]
const saveSorce = () => { // 保存
console.log(bidEvalDetailDTOList)
if (bidEvalDetailDTOList.length > 0) {
setSpinVisible(true)
let date = {
id: subId,
bidEvalId: bidEvalId,
categoryId: typeId,
category: typeCategory,
judgesStatus: '1',
bidEvalDetailDTOList: bidEvalDetailDTOList
}
submitDetail({ ...date }).then((res) => {
if (res.code == 200) {
setSpinVisible(false)
setBidEvalDetailDTOList([])
if (tabListName == '报价') {
myProcess(typeId)
// changeOffer(offerCurrent, typeId, offerTotalSource)
} else {
// ratingData(typeId)
// changePagination(current, typeId, totalSupplier)
myProcess(typeId)
}
}
})
}
}
const submitApi = () => { // 提交接口
setSpinVisible(true)
let date = {
categoryId: typeId,
judgesStatus: '2',
}
updateJudgesStatus({ ...date }).then((res) => {
if (res.code == 200) {
message.success('提交成功!');
setSpinVisible(false)
if (tabListName != '报价') {
// ratingData(typeId)
setIsDisabled(true)
supplierTab(typeId) // 防止提交成功禁用按钮不生效
} else {
setIsDisabledOffer(true)
offerList(typeId)
}
}
})
}
const submit = () => { // 提交
if (bidEvalDetailDTOList.length > 0) {
let date = {
id: subId,
bidEvalId: bidEvalId,
categoryId: typeId,
category: typeCategory,
judgesStatus: '1',
bidEvalDetailDTOList: bidEvalDetailDTOList
}
submitDetail({ ...date }).then((res) => {
if (res.code == 200) {
setSpinVisible(false)
setBidEvalDetailDTOList([])
submitApi()
}
})
} else {
submitApi()
}
}
const getTabId = (key: any) => { // tab切换获取当前tab的key
setTypeId(tabList[key].id)
setTypeCategory(tabList[key].category)
setTabListName(tabList[key].name)
myProcess(tabList[key].id)
if (tabList[key].name == '报价') {
offerList(tabList[key].id)
} else {
changePagination(1, tabList[key].id, totalSupplier)
}
}
let disabledOffer: any = false
const offerList = (id: any) => { // 报价数据
let date = {
reviewType: reviewType,
reviewTurnId: reviewTurnId,
categoryId: id
}
findPriceScoreList({ ...date }).then((res) => {
if (res.code == 200) {
if (res.data.judgesStatus == '2') {
disabledOffer = true
setIsDisabledOffer(true)
} else {
disabledOffer = false
setIsDisabledOffer(false)
}
setSubId(res.data.id)
res.data.priceScoreMap.dataList.map((item: any) => {
item.judgesStatus = res.data.judgesStatus
})
setOfferTotalSource(res.data.priceScoreMap.dataList) // 报价总数据
setOfferTotal(res.data.priceScoreMap.dataList.length) // 分页
changeOffer(1, id, res.data.priceScoreMap.dataList) // 分页数据
}
})
}
const offerSourceChange = (e: any, val: any) => { // 报价分数修改
offerSource.map((item: any) => {
if (item.supplierRegisterId == val.supplierRegisterId && item.detailId == val.detailId) {
item.priceScore = e.target.value
}
})
let x = false;
bidEvalDetailDTOList.map((item: any) => {
if (item.supplierRegisterId == val.supplierRegisterId && item.detailId == val.detailId) {
item.resultValue = e.target.value
x = true
}
})
if (!x) {
if (val.id) {
bidEvalDetailDTOList.push({ 'resultValue': e.target.value, 'id': val.id, 'supplierRegisterId': val.supplierRegisterId, 'detailId': val.detailId });
} else {
bidEvalDetailDTOList.push({ 'resultValue': e.target.value, 'id': '', 'supplierRegisterId': val.supplierRegisterId, 'detailId': val.detailId });
}
}
setOfferSource([...offerSource])
console.log(bidEvalDetailDTOList)
}
const offerValueChange = (e: any, val: any) => { // 报价分数获取焦点
offerSource.map((item: any, index: any) => {
if (item.id && item.id == val.id) {
item.priceScore = ''
}
})
setOfferSource([...offerSource])
}
const changeOffer = (page: any, id: any, totalSource: any) => { // 报价数据分页
if (bidEvalDetailDTOList.length > 0) {
saveSorce() // 保存
}
setOfferCurrent(page)
let currentDate = (page - 1) * 3
setOfferSource(totalSource.slice(currentDate, currentDate + 3))
}
const myProcess = (id: any) => { // 我的进度
let date = {
bidEvalId: bidEvalId,
reviewTurnId: reviewTurnId,
categoryId: id
}
getProgress({ ...date }).then((res) => {
if (res.code == 200) {
setProcess(res.data)
}
})
}
const getRemark = (val: any, id: any) => { // 备注
if (val.remarks) {
remarkForm.setFieldsValue({ remarks: val.remarks })
} else {
remarkForm.setFieldsValue({ remarks: '' })
}
if (val.detailId) {
setRemarksVal({ 'id': val.id, 'supplierRegisterId': id, 'detailId': val.detailId, 'resultValue': val.resultValue, 'remarks': val.remarks })
} else {
setRemarksVal({ 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'resultValue': '', 'remarks': '' })
}
setRemarkVisible(true)
}
const closeRemarks = () => { // 关闭备注
if (!isDisabled) {
let x = false;
bidEvalDetailDTOList.map((item: any) => {
if (item.supplierRegisterId == remarksVal.supplierRegisterId && item.detailId == remarksVal.detailId) {
item.remarks = remarkForm.getFieldsValue().remarks
x = true
return
}
})
if (!x) {
if (remarksVal.resultValue != '') {
dataSource.map((item: any) => {
if (remarksVal.detailId) {
if (remarksVal.detailId == item.id && item.scoreMap[remarksVal.supplierRegisterId] && item.scoreMap[remarksVal.supplierRegisterId].remarks != remarkForm.getFieldsValue().remarks) {
bidEvalDetailDTOList.push({ 'id': remarksVal.id, 'supplierRegisterId': remarksVal.supplierRegisterId, 'detailId': remarksVal.detailId, 'resultValue': remarksVal.resultValue, 'remarks': remarkForm.getFieldsValue().remarks });
item.scoreMap[remarksVal.supplierRegisterId].remarks = remarkForm.getFieldsValue().remarks
}
} else {
if (remarkForm.getFieldsValue().remarks != '') {
bidEvalDetailDTOList.push({ 'id': '', 'supplierRegisterId': remarksVal.supplierRegisterId, 'detailId': remarksVal.detailId, 'resultValue': remarksVal.resultValue, 'remarks': remarkForm.getFieldsValue().remarks });
item.scoreMap[remarksVal.supplierRegisterId] = { 'remarks': remarkForm.getFieldsValue().remarks }
}
}
})
setDataSource([...dataSource])
}
}
}
setRemarkVisible(false)
}
const supplierTab = (id: any) => { // 供应商列头接口
let date = {
assessRoomId: assessRoomId,
reviewTurnId: reviewTurnId
}
getRegister({ ...date }).then((res) => {
if (res.code == 200) {
setTotal(res.data.length)
setTotalSupplier(res.data)
changePagination(1, id, res.data)
getFirstTrialTableDetailed(res.data, date);
}
})
}
let supplierId: any = [] // 供应商数组id
const changePagination = (page: any, id: any, totalSupplierColumns: any) => { // 供应商列头
if (bidEvalDetailDTOList.length > 0) {
saveSorce() // 保存
}
setCurrent(page)
let currentDate = (page - 1) * 3
let newColumns = [...columns];
totalSupplierColumns.slice(currentDate, currentDate + 3).map((item: any) => {
supplierId.push(item.supplierRegisterId)
newColumns.push({
title: item.supplierRegisterName,
dataIndex: item.supplierRegisterId,
editable: true,
render: (text: any, record: any) => {
if (record.scoreMethod == '0') { // 单选
const radioOptions: any[] = [];
record.standardList.map((item: any) => {
radioOptions.push({ label: item.standardName + '(' + item.standardDetailScore + '分)' + item.id, value: item.standardDetailScore + '-' + item.id })
})
if (record.scoreMap && record.scoreMap[item.supplierRegisterId]) {
return (
<div>
<Radio.Group
disabled={disabled}
value={record.scoreMap[item.supplierRegisterId].resultValue + '-' + record.scoreMap[item.supplierRegisterId].standardId}
options={radioOptions}
onChange={e => onChange(e, record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}
/><br />
<Button onClick={() => getRemark(record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)} type="link" danger></Button>
<Button type="link" danger>
<Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link>
</Button>
</div>
)
} else {
return (
<div>
<Radio.Group
value={''}
options={radioOptions}
onChange={e => onChange(e, record, item.supplierRegisterId)}
/><br />
<Button onClick={() => getRemark(record, item.supplierRegisterId)} type="link" danger></Button>
<Button type="link" danger>
<Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link>
</Button>
</div>
)
}
} else if (record.scoreMethod == '1') {// 多选
const checkboxOptions: any[] = [];
record.standardList.map((item: any) => {
checkboxOptions.push({ label: item.standardName + '(' + item.standardDetailScore + '分)' + item.id, value: item.standardDetailScore + '-' + item.id })
})
if (record.scoreMap && record.scoreMap[item.supplierRegisterId]) {
let defaultArr = record.scoreMap[item.supplierRegisterId].standardId.split(",")
let defaultValue: any = []
record.standardList.map((item: any) => {
defaultArr.map((val: any) => {
if (item.id == val) {
defaultValue.push(item.standardDetailScore + '-' + item.id)
}
})
})
return (
<div>
<CheckboxGroup
disabled={disabled}
options={checkboxOptions}
value={defaultValue}
onChange={e => checkChange(e, record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}
/><br />
<Button type="link" danger onClick={() => getRemark(record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}></Button>
<Button type="link" danger>
<Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link>
</Button>
</div>
)
} else {
return (
<div>
<CheckboxGroup
options={checkboxOptions}
value={[]}
onChange={e => checkChange(e, record, item.supplierRegisterId)}
/><br />
<Button type="link" danger onClick={() => getRemark(record, item.supplierRegisterId)}></Button>
<Button type="link" danger>
<Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link>
</Button>
</div>
)
}
} else if (record.scoreMethod == '2') { // 人工
if (record.scoreMap && record.scoreMap[item.supplierRegisterId]) {
return (
<div>
<Input
disabled={disabled}
value={record.scoreMap[item.supplierRegisterId].resultValue}
style={{ width: 160 }}
onChange={e => inputChange(e, record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}
onFocus={e => inputFocus(e, record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}
/>
<br />
<Button type="link" danger onClick={() => getRemark(record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}></Button>
<Button type="link" danger>
<Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link>
</Button>
</div>
)
} else {
return (
<div>
<Input onChange={e => inputChange(e, record, item.supplierRegisterId)} style={{ width: 160 }} /><br />
<Button type="link" danger onClick={() => getRemark(record, item.supplierRegisterId)}></Button>
<Button type="link" danger><Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link></Button>
</div>
)
}
} else if (record.scoreMethod == '4') { // 步长
let optionLength = record.highScore / record.lowScore
let optionArr: any = []
for (let i = 1; i <= optionLength; i++) {
optionArr.push(record.lowScore * i)
}
if (record.scoreMap && record.scoreMap[item.supplierRegisterId]) {
return (
<div>
<Select
disabled={disabled}
value={record.scoreMap[item.supplierRegisterId].resultValue}
style={{ width: 160 }}
onChange={e => handleChange(e, record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}
>
{
optionArr.map((item: any) => {
return (
<Option value={item}>{item}</Option>
)
})
}
</Select><br />
<Button type="link" danger onClick={() => getRemark(record.scoreMap[item.supplierRegisterId], item.supplierRegisterId)}></Button>
<Button type="link" danger><Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link></Button>
</div>
)
} else {
return (
<div>
<Select value="" style={{ width: 160 }} onChange={e => handleChange(e, record, item.supplierRegisterId)}>>
{
optionArr.map((item: any) => {
return (
<Option value={item}>{item}</Option>
)
})
}
</Select><br />
<Button type="link" danger onClick={() => getRemark(record, item.supplierRegisterId)}></Button>
<Button type="link" danger><Link to={`/viewOfTenderDocumentsSecond?id=${record.id}&supplierId=${item.supplierRegisterId}`}></Link></Button>
</div>
)
}
}
},
})
})
setSupplierColumns([...newColumns])
ratingData(id)
}
let disabled: any = false
let totalQualified: any = []
const ratingData = async (id: any) => { // 评分数据
let query = {
bidEvalId: bidEvalId,
categoryId: id,
supplierRegisterIds: supplierId
}
await getScoreDetail({ ...query }).then((res) => { // 评分数据
if (res.code == 200) {
if (res.data.judgesStatus == '2') {
disabled = true
setIsDisabled(true)
} else {
disabled = false
setIsDisabled(false)
}
setSubId(res.data.id)
setDataSource(res.data.detailList)
totalQualified = res.data.detailList
}
})
}
const onChange = (e: any, val: any, id: any) => { // 单选框操作
let detailValue = e.target.value.split("-")[0]
let standardId = e.target.value.split("-")[1]
totalQualified.map((item: any) => {
if (val.detailId) {
if (val.detailId == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
item.scoreMap[supplierId[i]].resultValue = detailValue
item.scoreMap[supplierId[i]].detailValue = detailValue
item.scoreMap[supplierId[i]].standardId = standardId
}
}
}
} else {
if (val.id == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
if (item.scoreMap == null) {
item.scoreMap = []
}
item.scoreMap[supplierId[i]] = { 'detailValue': detailValue, 'resultValue': detailValue, 'standardId': standardId, 'id': '', 'supplierRegisterId': supplierId[i], 'detailId': val.id, 'remarks': '' }
}
}
}
}
})
let x = false;
if (val.detailId) {
bidEvalDetailDTOList.map((item: any) => {
if (item.supplierRegisterId == id && item.detailId == val.detailId) {
item.resultValue = detailValue
item.detailValue = detailValue
item.standardId = standardId
x = true
}
})
}
if (!x) {
if (val.detailId) {
bidEvalDetailDTOList.push({ 'detailValue': detailValue, 'resultValue': detailValue, 'standardId': standardId, 'id': val.id, 'supplierRegisterId': val.supplierRegisterId, 'detailId': val.detailId, 'remarks': val.remarks });
} else {
bidEvalDetailDTOList.push({ 'detailValue': detailValue, 'resultValue': detailValue, 'standardId': standardId, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'remarks': '' });
}
}
setDataSource([...totalQualified])
console.log(bidEvalDetailDTOList)
}
const checkChange = (list: any, val: any, id: any) => { // 复选框操作
let detailValue: any, resultValue: any = 0, standardId: any
let detailValueArr: any = []
let standardIdArr: any = []
if (val.detailId) {
for (let i = 0; i < list.length; i++) {
detailValueArr.push(list[i].split("-")[0])
standardIdArr.push(list[i].split("-")[1])
resultValue += Number(list[i].split("-")[0])
}
detailValue = detailValueArr.toString()
standardId = standardIdArr.toString()
} else {
detailValue = list[0].split("-")[0]
resultValue = list[0].split("-")[0]
standardId = list[0].split("-")[1]
}
totalQualified.map((item: any) => { // 处理页面回显
if (val.detailId) {
if (val.detailId == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
item.scoreMap[supplierId[i]].resultValue = resultValue
item.scoreMap[supplierId[i]].detailValue = detailValue
item.scoreMap[supplierId[i]].standardId = standardId
}
}
}
} else {
if (val.id == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
if (item.scoreMap == null) {
item.scoreMap = []
}
item.scoreMap[supplierId[i]] = { 'detailValue': detailValue, 'resultValue': resultValue, 'standardId': standardId, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'remarks': '' }
}
}
}
}
})
let x = false;
if (val.detailId) { // 处理数据选中
bidEvalDetailDTOList.map((item: any) => {
if (item.supplierRegisterId == id && item.detailId == val.detailId) {
item.resultValue = resultValue
item.detailValue = detailValue
item.standardId = standardId
x = true
}
})
}
if (!x) { // 向保存数组添加数据
if (val.detailId) {
bidEvalDetailDTOList.push({ 'detailValue': detailValue, 'resultValue': resultValue, 'standardId': standardId, 'id': val.id, 'supplierRegisterId': val.supplierRegisterId, 'detailId': val.detailId, 'remarks': val.remarks });
} else {
bidEvalDetailDTOList.push({ 'detailValue': detailValue, 'resultValue': resultValue, 'standardId': standardId, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'remarks': '' });
}
}
setDataSource([...totalQualified])
console.log(bidEvalDetailDTOList)
}
const handleChange = (e: any, val: any, id: any) => { // 下拉框操作
totalQualified.map((item: any) => { // 处理页面回显
if (val.detailId) {
if (val.detailId == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
item.scoreMap[supplierId[i]].resultValue = e
item.scoreMap[supplierId[i]].detailValue = e
}
}
}
} else {
if (val.id == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
if (item.scoreMap == null) {
item.scoreMap = []
}
item.scoreMap[supplierId[i]] = { 'detailValue': e, 'resultValue': e, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'remarks': '' }
}
}
}
}
})
let x = false;
if (val.detailId) {
bidEvalDetailDTOList.map((item: any) => {
if (item.supplierRegisterId == id && item.detailId == val.detailId) {
item.resultValue = e
item.detailValue = e
x = true
}
})
}
if (!x) {
if (val.detailId) {
bidEvalDetailDTOList.push({ 'detailValue': e, 'resultValue': e, 'id': val.id, 'supplierRegisterId': val.supplierRegisterId, 'detailId': val.detailId, 'remarks': val.remarks });
} else {
bidEvalDetailDTOList.push({ 'detailValue': e, 'resultValue': e, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'remarks': '' });
}
}
setDataSource([...totalQualified])
console.log(bidEvalDetailDTOList)
}
const inputChange = (e: any, val: any, id: any) => { // 输入框操作
totalQualified.map((item: any) => { // 处理页面回显
if (val.detailId) {
if (val.detailId == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
item.scoreMap[supplierId[i]].resultValue = e.target.value
}
}
}
} else {
if (val.id == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
if (item.scoreMap == null) {
item.scoreMap = []
}
item.scoreMap[supplierId[i]] = { 'detailValue': e.target.value, 'resultValue': e.target.value, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'remarks': '' }
}
}
}
}
})
let x = false;
if (val.detailId) {
bidEvalDetailDTOList.map((item: any) => {
if (item.supplierRegisterId == id && item.detailId == val.detailId) {
item.resultValue = e.target.value
item.detailValue = e.target.value
x = true
}
})
}
if (!x) {
if (val.detailId) {
bidEvalDetailDTOList.push({ 'detailValue': e.target.value, 'resultValue': e.target.value, 'id': val.id, 'supplierRegisterId': val.supplierRegisterId, 'detailId': val.detailId, 'remarks': val.remarks });
} else {
bidEvalDetailDTOList.push({ 'detailValue': e.target.value, 'resultValue': e.target.value, 'id': '', 'supplierRegisterId': id, 'detailId': val.id, 'remarks': '' });
}
}
setDataSource([...totalQualified])
console.log(bidEvalDetailDTOList)
}
const inputFocus = (e: any, val: any, id: any) => { // 手动输入框获取焦点
totalQualified.map((item: any) => { // 处理页面回显
if (val.detailId == item.id) {
for (let i = 0; i < supplierId.length; i++) {
if (id == supplierId[i]) {
item.scoreMap[supplierId[i]].resultValue = ''
}
}
}
})
setDataSource([...totalQualified])
}
const gettabList = () => { // tab
let date = {
assessRoomId: assessRoomId,
reviewTurnId: reviewTurnId,
rvwType: reviewType
}
getTabList({ ...date }).then((res) => {
if (res.code == 200) {
if (res.data.length > 0) {
setTabList(res.data) // tab数据
myProcess(res.data[0].id) // 进度
setTypeId(res.data[0].id) // 设置类别id
setTypeCategory(res.data[0].category) // 设置类别
supplierTab(res.data[0].id) // 供应商列头
}
}
})
}
/**
* 获取祥审记录表数据
* @param defaultSupplierData
* @param findScoreRecordParams
*/
const getFirstTrialTableDetailed = (defaultSupplierData: any, findScoreRecordParams: any) => {
setFirstTrialTableDetailedTable(
<FirstTrialTableDetailed
defaultNumber={3}
defaultSupplierData={defaultSupplierData}
supplierParams={null}
findScoreRecordParams={{ ...findScoreRecordParams, reviewType: "2" }}
/>)
}
// const getWord = () => { // 初审摘录表导出
// let projectName = getSessionProjectData().projectName
// window.open('http://125.32.114.204:8760/api/biz-service-ebtp-rsms/v1/abstract/getJuryAbstracet?reviewTurnId=1331563852545916928&reviewType=2&projectName=' + projectName)
// }
let JwtToken = getSessionUserData().userId
const props = { // 初审摘录表导入
name: 'file',
data: {
// reviewTurnId: getURLInformation("turnId"),
assessRoomId: getRoomId(),
reviewType: '2'
},
showUploadList: false,
accept: 'application/vnd.ms-application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
action: 'http://125.32.114.204:8760/api/biz-service-ebtp-rsms/v1/abstract/upload',
headers: {
authorization: 'authorization-text',
JwtToken: JwtToken
},
onChange(info: any) {
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (info.file.status === 'done') {
message.success('初审摘录表导入成功');
myProcess(typeId)
changePagination(1, typeId, totalSupplier)
} else if (info.file.status === 'error') {
message.error('初审摘录表导入失败');
}
},
};
useEffect(() => {
let date = {
reviewTurnId: getURLInformation("turnId"),
reviewType: '2',
}
getEval({ ...date }).then((res) => {
if (res.code == 200) {
assessRoomId = res.data.assessRoomId
reviewTurnId = res.data.reviewTurnId
reviewType = res.data.reviewType
bidEvalId = res.data.id
gettabList()
}
})
}, []);
return (
<>
<Spin spinning={spinVisible}>
<div className="bidContent">
{/* <h3 className="name">项目名称:测试项目<span>标段名称标包1</span></h3> */}
<div>
<Space>
{/* <Button onClick={() => getWord()} type="primary" size="small">初审摘录表导出</Button> */}
<FileDown apiUrl={`/api/biz-service-ebtp-rsms/v1/abstract/getJuryAbstracet?reviewTurnId=${getURLInformation("turnId")}&reviewType=2&projectName=${projectName}`} fileName='详审摘录表' type='xlsx' method='GET' btnName='详审摘录表导出' />
<Upload {...props}>
<Button type="primary"></Button>
</Upload>
</Space>
</div>
<Tabs defaultActiveKey="0" onChange={getTabId}>
{
tabList.map((item: any, index: any) => {
if (item.name == '报价') {
return (
<TabPane tab={item.name} key={index}>
<div className="p10 mb20">
<div className="process"><Progress percent={process} /></div>
<div className="block">
<Space>
{
isDisabledOffer ? null : <Button onClick={() => saveSorce()} type="primary" danger></Button>
}
{
(process > 100 || process == 100) && !isDisabledOffer ? <Button onClick={() => submit()} type="primary" danger></Button> : null
}
</Space>
</div>
<Table className="labelTable" pagination={false} columns={offerColumns} dataSource={offerSource} />
<Pagination
defaultCurrent={offerCurrent}
total={offerTotal}
defaultPageSize={3}
showSizeChanger={false}
onChange={(e) => changeOffer(e, typeId, offerTotalSource)}
/>
</div>
</TabPane>
)
} else {
return (
<TabPane tab={item.name} key={index}>
<div className="p10">
<div className="mb20">
<div className="process"><Progress percent={process} /></div>
<div className="block">
<Space>
{
isDisabled ? null : <Button onClick={() => saveSorce()} type="primary" danger></Button>
}
{
(process > 100 || process == 100) && !isDisabled ? <Button onClick={() => submit()} type="primary" danger></Button> : null
}
{
isDisabled ? <Button onClick={() => setDetailVisible(true)} type="primary" danger></Button> : null
}
</Space>
</div>
</div>
<div>
<Pagination
defaultCurrent={current}
total={total}
defaultPageSize={3}
showSizeChanger={false}
onChange={(e) => changePagination(e, typeId, totalSupplier)}
/>
<Table className="labelTable" pagination={false} columns={supplierColumns} dataSource={dataSource} />
</div>
</div>
</TabPane>
)
}
})
}
</Tabs>
</div>
<Modal // 备注
title="备注"
width={600}
visible={remarkVisible}
onCancel={() => closeRemarks()}
onOk={() => closeRemarks()}
>
<Form form={remarkForm}>
<Form.Item name='remarks'>
<TextArea disabled={isDisabled} rows={4} />
</Form.Item>
</Form>
</Modal>
<Modal // 详审记录表
width={800}
title="详审记录表"
visible={detailVisible}
onCancel={() => setDetailVisible(false)}
footer={null}
>
{firstTrialTableDetailedTable}
</Modal>
</Spin>
</>
)
}
export default Index