9.7 专家算数价格修正提示系统异常

This commit is contained in:
jl-zhoujl2
2022-09-07 13:31:29 +08:00
parent 53940f64ce
commit b70292882a

View File

@ -3,7 +3,7 @@ import { Table, Button, Space, Form, Radio, Select, Input, InputNumber, Upload,
import { TableListItem } from './data'; import { TableListItem } from './data';
import ExtendUpload from "@/utils/ExtendUpload"; import ExtendUpload from "@/utils/ExtendUpload";
import '@/assets/ld_style.less'; import '@/assets/ld_style.less';
import {findArithmeticError, getList,getRoomType,savePrice} from './service'; import { findArithmeticError, getList, getRoomType, savePrice } from './service';
import { getProMethod, getRoomId, getSessionRoleData, getSessionUserData } from '@/utils/session'; import { getProMethod, getRoomId, getSessionRoleData, getSessionUserData } from '@/utils/session';
import ProTable from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table';
@ -15,36 +15,36 @@ const formItemLayout = {
wrapperCol: { span: 14 }, wrapperCol: { span: 14 },
}; };
function wayValue(key:any){ function wayValue(key: any) {
let name = ""; let name = "";
//0-调整价 1-最终价格 //0-调整价 1-最终价格
if(key==="0"){ if (key === "0") {
name = "调整价"; name = "调整价";
}else if(key==="1"){ } else if (key === "1") {
name = "最终价格"; name = "最终价格";
} }
return name; return name;
} }
function typeValue(key:any){ function typeValue(key: any) {
let name = ""; let name = "";
//0-小微、1-缺项、2-单价和总价不一致、3-手动输入 //0-小微、1-缺项、2-单价和总价不一致、3-手动输入
if(key===0){ if (key === 0) {
name = "小微"; name = "小微";
}else if(key===1){ } else if (key === 1) {
name = "缺项"; name = "缺项";
}else if(key===2){ } else if (key === 2) {
name = "单价和总价不一致"; name = "单价和总价不一致";
}else if(key===3){ } else if (key === 3) {
name = "手动输入"; name = "手动输入";
} }
return name; return name;
} }
const Index: React.FC<{}> = () => { const Index: React.FC<{}> = () => {
let roomId=getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId') let roomId = getRoomId();//sessionStorage.getItem('roomId');//sessionStorage.getItem('roomId')
var roleId = getSessionUserData().roleIds;//操作员角色 var roleId = getSessionUserData().roleIds;//操作员角色
const [dateList,setDateList] = useState([]); const [dateList, setDateList] = useState([]);
const [adjustForm] = Form.useForm(); const [adjustForm] = Form.useForm();
const [whetherReadonly, setWhetherReadonly] = useState<boolean>(false); const [whetherReadonly, setWhetherReadonly] = useState<boolean>(false);
const [editState, setEditState] = useState<boolean>(false); const [editState, setEditState] = useState<boolean>(false);
@ -54,116 +54,119 @@ const Index: React.FC<{}> = () => {
const [spin, setSpin] = useState<boolean>(true); const [spin, setSpin] = useState<boolean>(true);
//附件bid //附件bid
const [bid, setBid] = useState<string>(''); const [bid, setBid] = useState<string>('');
var roleId = getSessionRoleData().roleCode; var roleId = getSessionRoleData().roleCode;
//采购方式 //采购方式
const proMethod = getProMethod(); const proMethod = getProMethod();
let showNameT: any = { tbr: '', pb: '', tb: '' }//投标人供应商 let showNameT: any = { tbr: '', pb: '', tb: '' }//投标人供应商
if (proMethod === 'procurement_mode_1' || proMethod === 'procurement_mode_2') {//招标 if (proMethod === 'procurement_mode_1' || proMethod === 'procurement_mode_2') {//招标
showNameT = { tbr: '投标人', pb: '评标', tb: '投标' }; showNameT = { tbr: '投标人', pb: '评标', tb: '投标' };
} else { } else {
showNameT = { tbr: '供应商', pb: '评审', tb: '应答' } showNameT = { tbr: '供应商', pb: '评审', tb: '应答' }
} }
const columns: any[] = [ // 列表数据 const columns: any[] = [ // 列表数据
{ title: `${showNameT.tbr}名称`, dataIndex: 'tendererName', key: 'tendererName' }, { title: `${showNameT.tbr}名称`, dataIndex: 'tendererName', key: 'tendererName' },
{ title: '最新不含税总价', dataIndex: 'evaluatingContent', key: 'evaluatingContent' }, { title: '最新不含税总价', dataIndex: 'evaluatingContent', key: 'evaluatingContent' },
{ title: '调整类别', dataIndex: 'type', key: 'type' ,render: (text: any, record: any, index: any) => { {
let a = ""; title: '调整类别', dataIndex: 'type', key: 'type', render: (text: any, record: any, index: any) => {
if(record.tfileTendererprice!==null){ let a = "";
a = typeValue(record.tfileTendererprice.type); if (record.tfileTendererprice !== null) {
} a = typeValue(record.tfileTendererprice.type);
return a; }
return a;
} }
}, },
{ title: '调价说明', dataIndex: 'memo', key: 'memo',render: (text: any, record: any, index: any) => { {
var memo = ""; title: '调价说明', dataIndex: 'memo', key: 'memo', render: (text: any, record: any, index: any) => {
if(record.tfileTendererprice!==null){ var memo = "";
memo = record.tfileTendererprice.memo; if (record.tfileTendererprice !== null) {
memo = record.tfileTendererprice.memo;
}
return memo;
} }
return memo;
}
}, },
{ title: '调价附件', dataIndex: 'fileId', key: 'fileId' ,render: (text: any, record: any, index: any) => { {
var dev = ""; title: '调价附件', dataIndex: 'fileId', key: 'fileId', render: (text: any, record: any, index: any) => {
if(record.tfileTendererprice!==null){ var dev = "";
dev = <ExtendUpload bid={record.tfileTendererprice.fileId} uploadProps={{name:"file",disabled:true,uploadProps:true}}></ExtendUpload> if (record.tfileTendererprice !== null) {
dev = <ExtendUpload bid={record.tfileTendererprice.fileId} uploadProps={{ name: "file", disabled: true, uploadProps: true }}></ExtendUpload>
}
return dev;
} }
return dev;
}
}, },
]; ];
useEffect(() => { useEffect(() => {
getWarningList(); getWarningList();
setSpin(false); setSpin(false);
if(roleId!=="ebtp-expert"){ if (roleId !== "ebtp-expert") {
setEditState(false); setEditState(false);
setHaveData(false); setHaveData(false);
} }
},[]); }, []);
const getWarningList = async() => { const getWarningList = async () => {
setSaveButtonState(false); setSaveButtonState(false);
let radioBoolean = false; let radioBoolean = false;
await findArithmeticError(roomId).then((res) => { await findArithmeticError(roomId).then((res) => {
if (res.success ==true) { if (res.success == true) {
if(res.data!==1){ if (res.data !== 1) {
radioBoolean = false; radioBoolean = false;
setIsRadio(false) setIsRadio(false)
}else{ } else {
radioBoolean = true; radioBoolean = true;
}
} }
}) }
})
await getList(roomId).then((res) => { await getList(roomId).then((res) => {
if (res.success ==true) { if (res.success == true) {
var list = res.data; var list = res.data;
for(var i = 0 ; i < list.length ; i++){ for (var i = 0; i < list.length; i++) {
list[i]["key"] = i; list[i]["key"] = i;
} }
setDateList(list); setDateList(list);
setSelectChange(list); setSelectChange(list);
if(list===null||list.length===0){// if (list === null || list.length === 0) {//
setEditState(false);
setHaveData(false);
setIsRadio(false)
} else {
if (radioBoolean) {
setEditState(true);
setIsRadio(true)
} else {
setEditState(false); setEditState(false);
setHaveData(false);
setIsRadio(false) setIsRadio(false)
}else{
if(radioBoolean){
setEditState(true);
setIsRadio(true)
}else{
setEditState(false);
setIsRadio(false)
}
} }
} }
}) }
})
} }
const setSelectChange = async (list: any) => { const setSelectChange = async (list: any) => {
const fieldsValue = await adjustForm.validateFields(); const fieldsValue = await adjustForm.validateFields();
if(fieldsValue!==null){ if (fieldsValue !== null) {
for(var i = 0 ; i < list.length ; i ++){ for (var i = 0; i < list.length; i++) {
var data = list[i]; var data = list[i];
if(data.id===fieldsValue.contentDataId){ if (data.id === fieldsValue.contentDataId) {
adjustForm.setFieldsValue({ adjustForm.setFieldsValue({
id:data.tfileTendererprice!==null id: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?data.tfileTendererprice.id:null, && data.tfileTendererprice !== undefined ? data.tfileTendererprice.id : null,
contentDataId:data.id, contentDataId: data.id,
way: data.tfileTendererprice!==null way: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?parseInt(data.tfileTendererprice.way):1, && data.tfileTendererprice !== undefined ? parseInt(data.tfileTendererprice.way) : 1,
type: data.tfileTendererprice!==null type: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?parseInt(data.tfileTendererprice.type):0, && data.tfileTendererprice !== undefined ? parseInt(data.tfileTendererprice.type) : 0,
price: data.evaluating, price: data.evaluating,
newPrice: '', newPrice: '',
memo:data.tfileTendererprice!==null memo: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?data.tfileTendererprice.memo:null, && data.tfileTendererprice !== undefined ? data.tfileTendererprice.memo : null,
fileId:data.tfileTendererprice!==null fileId: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?data.tfileTendererprice.fileId:null && data.tfileTendererprice !== undefined ? data.tfileTendererprice.fileId : null
}); });
} }
} }
@ -174,27 +177,27 @@ const Index: React.FC<{}> = () => {
setEditState(true); setEditState(true);
var data = direction[0]; var data = direction[0];
//data.tfileTendererprice.id; //data.tfileTendererprice.id;
adjustForm.setFieldsValue({ adjustForm.setFieldsValue({
id:data.tfileTendererprice!==null id: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?data.tfileTendererprice.id:null, && data.tfileTendererprice !== undefined ? data.tfileTendererprice.id : null,
contentDataId:data.id, contentDataId: data.id,
way: data.tfileTendererprice!==null way: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?parseInt(data.tfileTendererprice.way):1, && data.tfileTendererprice !== undefined ? parseInt(data.tfileTendererprice.way) : 1,
type: data.tfileTendererprice!==null type: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?parseInt(data.tfileTendererprice.type):0, && data.tfileTendererprice !== undefined ? parseInt(data.tfileTendererprice.type) : 0,
price: data.evaluating, price: data.evaluating,
newPrice: '', newPrice: '',
memo:data.tfileTendererprice!==null memo: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?data.tfileTendererprice.memo:null, && data.tfileTendererprice !== undefined ? data.tfileTendererprice.memo : null,
fileId:data.tfileTendererprice!==null fileId: data.tfileTendererprice !== null
&&data.tfileTendererprice!==undefined?data.tfileTendererprice.fileId:null && data.tfileTendererprice !== undefined ? data.tfileTendererprice.fileId : null
}); });
setBid(data.tfileTendererprice !== null
&& data.tfileTendererprice !== undefined
&& data.tfileTendererprice.fileId !== null
? data.tfileTendererprice.fileId : "-1");
setBid(data.tfileTendererprice!==null
&&data.tfileTendererprice!==undefined
&&data.tfileTendererprice.fileId!==null
?data.tfileTendererprice.fileId:"-1");
} }
const formOnFinish = (data: any) => { const formOnFinish = (data: any) => {
@ -208,23 +211,23 @@ const Index: React.FC<{}> = () => {
} }
const saveUpdate = async () => { const saveUpdate = async () => {
const fieldsValue = await adjustForm.validateFields(); const fieldsValue = await adjustForm.validateFields();
if(fieldsValue.contentDataId===null||fieldsValue.contentDataId===""||fieldsValue.contentDataId===undefined){ if (fieldsValue.contentDataId === null || fieldsValue.contentDataId === "" || fieldsValue.contentDataId === undefined) {
message.error(`请选择需要调整的供应商`); message.error(`请选择需要调整的供应商`);
return; return;
} }
var params = { var params = {
"id":fieldsValue.id, "id": fieldsValue.id,
"contentDataId":fieldsValue.contentDataId, "contentDataId": fieldsValue.contentDataId,
"newPrice":fieldsValue.newPrice, "newPrice": fieldsValue.newPrice,
"way":fieldsValue.way, "way": fieldsValue.way,
"type":fieldsValue.type, "type": fieldsValue.type,
"memo":fieldsValue.memo, "memo": fieldsValue.memo,
"fileId":fieldsValue.fileId "fileId": fieldsValue.fileId
} }
setSaveButtonState(true); setSaveButtonState(true);
//保存 //保存
savePrice(params).then((res) => { savePrice(params).then((res) => {
if (res.success ==true) { if (res.success == true) {
message.success(`保存成功`); message.success(`保存成功`);
getWarningList();//刷新 getWarningList();//刷新
} }
@ -233,94 +236,94 @@ const Index: React.FC<{}> = () => {
return ( return (
<> <>
<div className="bidContent"> <div className="bidContent">
<Spin spinning={spin}> <Spin spinning={spin}>
<div className="titName"> <div className="titName">
<span className="f16">{showNameT.tbr}</span> <span className="f16">{showNameT.tbr}</span>
{!haveData?<span className="f16"></span>:null} {!haveData ? <span className="f16"></span> : null}
<Space className="fr"> <Space className="fr">
</Space> </Space>
</div> </div>
{isRadio? {isRadio ?
<Table <Table
rowSelection={{ rowSelection={{
type: 'radio', type: 'radio',
onChange: onSelectChange, onChange: onSelectChange,
}} }}
bordered bordered
pagination={false} pagination={false}
columns={columns} columns={columns}
dataSource={dateList} dataSource={dateList}
/>:<Table /> : <Table
bordered bordered
pagination={false} pagination={false}
columns={columns} columns={columns}
dataSource={dateList} dataSource={dateList}
/>} />}
{editState? {editState ?
<div className="titName mt20"> <div className="titName mt20">
<span className="f16"></span> <span className="f16"></span>
</div>:null </div> : null
} }
{editState? {editState ?
<Form <Form
name="validate_other" name="validate_other"
form={adjustForm} form={adjustForm}
{...formItemLayout} {...formItemLayout}
onFinish={formOnFinish} onFinish={formOnFinish}
> >
<Form.Item name="contentDataId" hidden={true}> <Form.Item name="contentDataId" hidden={true}>
<Input hidden /> <Input hidden />
</Form.Item> </Form.Item>
<Form.Item name="id" hidden={true}> <Form.Item name="id" hidden={true}>
<Input hidden /> <Input hidden />
</Form.Item> </Form.Item>
<Form.Item name="way" label="调价方式:" rules={[{ required: true, message: '请选择调价方式!' }]}> <Form.Item name="way" label="调价方式:" rules={[{ required: true, message: '请选择调价方式!' }]}>
<Radio.Group> <Radio.Group>
<Radio value={1}></Radio> <Radio value={1}></Radio>
<Radio value={0}></Radio> <Radio value={0}></Radio>
</Radio.Group> </Radio.Group>
</Form.Item> </Form.Item>
<Form.Item rules={[{ required: true, message: '请选择调整类别!' }]} <Form.Item rules={[{ required: true, message: '请选择调整类别!' }]}
name="type" name="type"
label="调整类别:" label="调整类别:"
hasFeedback hasFeedback
> >
<Select style={{ width: 120 }}> <Select style={{ width: 120 }}>
<Option value={0}></Option> <Option value={0}></Option>
<Option value={1}></Option> <Option value={1}></Option>
<Option value={2}></Option> <Option value={2}></Option>
<Option value={3}></Option> <Option value={3}></Option>
</Select > </Select >
</Form.Item> </Form.Item>
<Form.Item name="price" label="原价:"> <Form.Item name="price" label="原价:">
<Input disabled /> <Input disabled />
</Form.Item> </Form.Item>
<Form.Item name="newPrice" label="调整价:" rules={[{ required: true, message: '请输入调整价!' }]}> <Form.Item name="newPrice" label="调整价:" rules={[{ required: true, message: '请输入调整价!' }]}>
<Input placeholder="人民币" /> <Input placeholder="人民币" type="number" />
</Form.Item> </Form.Item>
<Form.Item name="memo" label="调价说明:" rules={[{ required: true, message: '请输入调价说明!' }]}> <Form.Item name="memo" label="调价说明:" rules={[{ required: true, message: '请输入调价说明!' }]}>
<TextArea rows={4} /> <TextArea rows={4} />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
label="附件" label="附件"
name="fileId"> name="fileId">
<ExtendUpload bid={bid} btnName="上传附件" uploadProps={{name:"file",disabled: whetherReadonly}}> <ExtendUpload bid={bid} btnName="上传附件" uploadProps={{ name: "file", disabled: whetherReadonly }}>
</ExtendUpload> </ExtendUpload>
</Form.Item> </Form.Item>
<Form.Item> <Form.Item>
<div style={{textAlign: "center"}}> <div style={{ textAlign: "center" }}>
<Button type="primary" disabled={saveButtonState} onClick={async () => { <Button type="primary" disabled={saveButtonState} onClick={async () => {
saveUpdate(); saveUpdate();
}}></Button> }}></Button>
</div> </div>
</Form.Item> </Form.Item>
</Form> </Form>
:null} : null}
</Spin> </Spin>
</div> </div>
</> </>