更新版本库

This commit is contained in:
ajaxfan
2021-01-16 11:29:42 +08:00
parent b42e0c1ddd
commit ff889c3db4
352 changed files with 39993 additions and 15507 deletions

View File

@ -0,0 +1,331 @@
import React, { useEffect, useState } from 'react';
import { Modal, Table, Checkbox, message, Spin, Button } from 'antd';
import { getDevidedData, getJuryData, saveDevidedData } from './service';
interface ReviewDivisionProps {
modalVisible: boolean;
onCancel: () => void;
title: any;
values: any;
}
/**
* 保存评审分工
* @param fields
*/
export const handleSave = async (fields: any) => {
try {
await saveDevidedData(fields);
message.success('保存成功');
return true;
} catch (error) {
message.error('保存失败');
return false;
}
};
/**
* 评审分工
* @param props
*/
const ReviewDevided: React.FC<ReviewDivisionProps> = (props) => {
const { modalVisible, onCancel, title, values } = props;
//存储评委数据
const [juryData, setJuryData] = useState<any[]>([]);
//存储表数据
const [totalTableData, setTotalTableData] = useState<any[]>([]);
//存储表头
const [totalTableColumns, setTotalTableColumns] = useState<any[]>([]);
//表格loading
const [tableLoading, setTableLoadings] = useState<boolean>(false);
//modal loading
const [modalLoading, setModalLoading] = useState<boolean>(false);
//评审分工查看状态
const [viewStatus, setViewStatus] = useState<boolean>(false);
//全部参数
// const juryParams = '1331563852445253632';
const juryParams = values == undefined ? '' : values.id;
useEffect(() => {
setTableLoadings(true);
const status = values == undefined ? false : (values.status == 1 || values.status == 0 ? false : true)
console.log(status)
setViewStatus(status)
if (juryParams == '') {
} else {
//获取评委
getJuryData(juryParams).then((res) => {
if (res.code == 200) {
setJuryData(res.data);
//获取分工数据
if (juryParams == null) {
} else {
getDevidedData(juryParams).then((response) => {
if (response.code == 200) {
//调用数据处理方法并初始化表格
InitializeTable(res.data, response.data);
setTableLoadings(false);
}
});
}
}
});
}
}, [modalVisible, values]);
//初始化表格方法
const InitializeTable = (columns: any, data: any) => {
//处理数据
let totalData: any[] = [];
let count = 0;
data.forEach((ele: any) => {
if (ele.hasOwnProperty('subCategoryList')) {
ele.subCategoryList.forEach((element: any, index: any) => {
let inner = element;
count = count + 1;
inner.key = count;
inner.rvwName = ele.rvwName;
inner.rowSpan = index == 0 ? ele.subCategoryList.length : 0;
if (inner.divideMap == null) {
let obj = {};
columns.forEach((e: any) => {
obj[e.id] = {
checked: false,
actType: inner.category,
rvwType: ele.rvwType,
juryMemberId: e.id,
roomId: juryParams,
};
});
inner.divideMap = obj;
} else {
let obj = { ...inner.divideMap };
columns.forEach((e: any) => {
if (obj.hasOwnProperty(e.id)) {
obj[e.id].checked = true;
} else {
obj[e.id] = {
checked: false,
actType: inner.category,
rvwType: ele.rvwType,
juryMemberId: e.id,
roomId: juryParams,
};
}
});
inner.divideMap = obj;
}
Object.assign(inner, inner.divideMap);
totalData.push(inner);
});
}
});
//处理表头
const tcolumns: any[] = [
{
title: '',
dataIndex: 'rvwName',
key: 'rvwName',
align: 'center',
render: (value: any, record: any, index: any) => {
if (!record.name) {
return {
children: value,
props: {
colSpan: 2,
style: { textAlign: 'center' },
},
};
}
return {
children: value,
props: {
rowSpan: record.rowSpan,
},
};
},
},
{
title: '评审项类别',
dataIndex: 'name',
key: 'name',
align: 'center',
render: (value: any, record: any, index: any) => {
if (!record.name) {
return {
children: '',
props: {
colSpan: 0,
},
};
}
return value;
},
},
];
columns.forEach((ele: any) => {
tcolumns.push({
title: ele.name,
dataIndex: ele.id,
key: ele.id,
align: 'center',
render: (value: any, record: any, index: any) => (
<Checkbox
disabled={values == undefined ? false : (values.status == 1 || values.status == 0 ? false : true)}
onChange={(event) => {
const data = [...totalData];
const jury = data.findIndex((item: any) => item.key == record.key);
const isView = data.length - 1;
if (data[jury][value.juryMemberId].rvwType == 2 && data[jury][value.juryMemberId].actType == 0) {
columns.forEach((ele: any) => {
if (ele.id == value.juryMemberId) {
if (event.target.checked == true) {
data[jury][value.juryMemberId].checked = event.target.checked;
data[isView][value.juryMemberId].checked = event.target.checked;
} else {
data[jury][value.juryMemberId].checked = event.target.checked;
}
} else {
data[jury][ele.id].checked = false;
}
});
} else {
data[jury][value.juryMemberId].checked = event.target.checked;
}
setTotalTableData(data);
}}
defaultChecked={value.checked}
checked={value.checked}
/>
),
});
});
console.log(totalData);
setTotalTableColumns(tcolumns);
setTotalTableData(totalData);
};
const onSubmit = async () => {
setModalLoading(true);
console.log(totalTableData);
let data: any[] = [];
let count = 0;
let e = 0;
let a = 0;
let j = totalTableData.length - 1;
totalTableData.forEach((element: any) => {
let num = 0;
let b = 0;
juryData.forEach((ele: any) => {
if(element[ele.id].rvwType == 1) {
b = b + 1
}
if (element[ele.id].checked == true) {
data.push(element[ele.id]);
if (
element[ele.id].rvwType == 2 &&
element[ele.id].actType == 0 &&
totalTableData[j][ele.id].checked
) {
e = e + 1;
}
} else if (element[ele.id].checked == false) {
num = num + 1;
}
});
if (num == juryData.length) {
count = count + 1;
}
if (b == juryData.length) {
a = a + 1;
}
});
if (count > 0) {
message.info('存在评审项未分配评委,请重新勾选');
setModalLoading(false);
return;
}
if(a == totalTableData.length - 1) {} else {
if (e == 0) {
message.info('请允许报价评审专家查看报价');
setModalLoading(false);
return;
}
}
const success = await handleSave({ divideList: data });
if (success) {
setModalLoading(false);
setTotalTableData([])
onCancel();
}
};
const onSelect = (record: any, selected: any) => {
setTableLoadings(true);
let select = totalTableData;
select.forEach((ele: any) => {
if (ele.key == record.key) {
juryData.forEach((element) => {
ele[element.id].checked = selected;
});
}
});
setTotalTableData(select);
};
return (
<>
<Spin spinning={modalLoading} delay={300}>
<Modal
destroyOnClose
title={title}
visible={modalVisible}
onCancel={() => {
onCancel()
setTotalTableData([])
}}
width={800}
footer={viewStatus ? false : [
<Button key="back" onClick={() => {
onCancel()
setTotalTableData([])
}}>
</Button>,
<Button key="submit" type="primary" loading={modalLoading} onClick={() => onSubmit()}>
</Button>,
]}
>
<Table
bordered
pagination={false}
columns={totalTableColumns}
dataSource={totalTableData}
size="middle"
key="1"
rowKey="key"
loading={tableLoading}
rowSelection={{
hideSelectAll: true,
onSelect: (record: any, selected: any) => {
onSelect(record, selected);
setTableLoadings(false);
},
getCheckboxProps: (record) => ({
disabled: viewStatus == true ? true : record.rvwName == '详审' && record.category == 0,
}),
}}
/>
</Modal>
</Spin>
</>
);
};
export default ReviewDevided;