4.17 标段信息增加布局,固钉,锚点跳转
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
import { Form, Input, InputNumber, Button, Card } from 'antd';
|
||||
import React from 'react';
|
||||
import { scrollToAnchor } from '@/utils/CommonUtils';
|
||||
import ProCard from '@ant-design/pro-card';
|
||||
import { Form, Input, InputNumber, Button, Card, Row, Col, Typography, Tooltip, Space, Radio, Affix, List, Tag } from 'antd';
|
||||
import React, { useState } from 'react';
|
||||
|
||||
interface PublicPlatformProps {
|
||||
modalVisible: boolean;
|
||||
@ -11,9 +13,44 @@ const layout = {
|
||||
span: 6,
|
||||
},
|
||||
wrapperCol: {
|
||||
span: 16,
|
||||
span: 17,
|
||||
},
|
||||
};
|
||||
const bidLayout = {
|
||||
labelCol: {
|
||||
span: 4,
|
||||
},
|
||||
wrapperCol: {
|
||||
span: 20,
|
||||
},
|
||||
};
|
||||
const candidateLayout = {
|
||||
labelCol: {
|
||||
span: 7,
|
||||
},
|
||||
wrapperCol: {
|
||||
span: 17,
|
||||
},
|
||||
};
|
||||
|
||||
const data = [
|
||||
{
|
||||
title: '标段一',
|
||||
description: 'XY92632011202',
|
||||
},
|
||||
{
|
||||
title: '标段二',
|
||||
description: 'XY92632011202',
|
||||
},
|
||||
{
|
||||
title: '标段三',
|
||||
description: 'XY92632011202',
|
||||
},
|
||||
{
|
||||
title: '标段四',
|
||||
description: 'XY92632011202',
|
||||
},
|
||||
];
|
||||
/* eslint-disable no-template-curly-in-string */
|
||||
|
||||
const validateMessages = {
|
||||
@ -30,57 +67,144 @@ const validateMessages = {
|
||||
|
||||
const PublicPlatform: React.FC<PublicPlatformProps> = (props) => {
|
||||
// const { modalVisible, onCancel } = props;
|
||||
const { Text } = Typography;
|
||||
const { TextArea } = Input;
|
||||
const [container, setContainer] = useState<HTMLDivElement | null>(null);
|
||||
|
||||
const onFinish = (values: any) => {
|
||||
console.log(values);
|
||||
};
|
||||
|
||||
return (
|
||||
<Card>
|
||||
<Form {...layout} name="nest-messages" onFinish={onFinish} validateMessages={validateMessages}>
|
||||
<div ref={setContainer} className="zjl-entrust" style={{ height: '100%', overflowY: 'auto', padding: '24px' }}>
|
||||
<Form {...layout} name="public-platform" onFinish={onFinish} validateMessages={validateMessages}>
|
||||
<h3 className="first-title">项目信息</h3>
|
||||
<Form.Item name={['user', 'Projectsize']} label="项目规模">
|
||||
<Input.TextArea />
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'introduction']} label="招标内容与范围及招标方案说明">
|
||||
<Input.TextArea />
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<h3 className="first-title">公告信息</h3>
|
||||
<h3 className="first-title">公示信息</h3>
|
||||
<h3 className="first-title">标段信息</h3>
|
||||
<Form.Item name={['user', 'website']} label="标段(包)内容">
|
||||
<Input.TextArea />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="投标人资格条件">
|
||||
<Input.TextArea />
|
||||
</Form.Item>
|
||||
<h3 className="first-title">中标候选人信息</h3>
|
||||
<Form.Item name={['user', 'website']} label="质量">
|
||||
<Input.TextArea />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="评标情况">
|
||||
<Input.TextArea />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="中标候选人响应招标文件的资格能力条件">
|
||||
<Input.TextArea />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'age']} label="工期/交货期/服务期" rules={[{ type: 'number', min: 0, max: 99 }]}>
|
||||
<InputNumber />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人姓名">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人证件号码">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人相关证书和编号">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<ProCard split="vertical">
|
||||
<ProCard colSpan="15%" bodyStyle={{ padding: 0 }}>
|
||||
<Affix target={() => container}>
|
||||
<div style={{ height: innerHeight - 240, overflow: 'auto', }}>
|
||||
<List
|
||||
itemLayout="horizontal"
|
||||
dataSource={data}
|
||||
renderItem={item => (
|
||||
<List.Item>
|
||||
<List.Item.Meta
|
||||
title={
|
||||
<Space>
|
||||
<a onClick={() => scrollToAnchor("name1")}>{item.title}</a>
|
||||
<Tag color="success">已完成</Tag>
|
||||
</Space>
|
||||
}
|
||||
description={item.description}
|
||||
/>
|
||||
</List.Item>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
</Affix>
|
||||
</ProCard>
|
||||
<ProCard bodyStyle={{ padding: 8 }}>
|
||||
<Space direction="vertical" style={{ display: 'flex' }}>
|
||||
<Card
|
||||
title={
|
||||
<Space>
|
||||
<Tooltip title="标段标段标段标段标段标段标段标段标段标段标段标段标段标段标段标段标段标段标段标段标段1">
|
||||
<span>XY92632011202</span>
|
||||
</Tooltip>
|
||||
<Text>标段一</Text>
|
||||
<Tag color="success">已完成</Tag>
|
||||
</Space>
|
||||
}
|
||||
id="name1"
|
||||
>
|
||||
<Form {...bidLayout}>
|
||||
<Form.Item name={['user', 'website']} label="标段(包)名称">
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="标段(包)编号">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="标段(包)内容">
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="投标人资格条件">
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item label="中标候选人信息">
|
||||
<Space direction="vertical" style={{ display: 'flex' }}>
|
||||
<Card type="inner" title="中国邮政速递物流股份有限公司大连市分公司">
|
||||
<Form {...candidateLayout}>
|
||||
<Form.Item name={['user', 'website']} label="质量">
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="评标情况">
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="中标候选人响应招标文件的资格能力条件">
|
||||
<TextArea rows={2} />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'age']} label="工期/交货期/服务期" rules={[{ type: 'number', min: 0, max: 99 }]}>
|
||||
<InputNumber />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人姓名">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人证件号码">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人相关证书和编号">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Card>
|
||||
<Card type="inner" title="北京人大金仓信息技术股份有限公司">
|
||||
<Form {...candidateLayout}>
|
||||
<Form.Item name={['user', 'website']} label="质量">
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="评标情况">
|
||||
<TextArea autoSize />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="中标候选人响应招标文件的资格能力条件">
|
||||
<TextArea rows={2} />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'age']} label="工期/交货期/服务期" rules={[{ type: 'number', min: 0, max: 99 }]}>
|
||||
<InputNumber />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人姓名">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人证件号码">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
<Form.Item name={['user', 'website']} label="项目负责人相关证书和编号">
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Card>
|
||||
</Space>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Card>
|
||||
</Space>
|
||||
</ProCard>
|
||||
</ProCard>
|
||||
{/* <Form.Item wrapperCol={{ ...layout.wrapperCol, offset: 8 }}>
|
||||
<Button type="primary" htmlType="submit">
|
||||
Submit
|
||||
</Button>
|
||||
</Form.Item> */}
|
||||
</Form>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
* 判断是否等于空
|
||||
* @param value
|
||||
*/
|
||||
export function isEmpty(value: any) {
|
||||
export function isEmpty(value: any) {
|
||||
return value === null || value === void 0 || value === '';
|
||||
}
|
||||
/**
|
||||
@ -223,7 +223,7 @@ projectTypeCodeMaps.set("/Comparison", ["procurement_mode_3"]);
|
||||
//招募
|
||||
projectTypeCodeMaps.set("/Recruit", ["procurement_mode_4"]);
|
||||
//谈判
|
||||
projectTypeCodeMaps.set("/Negotiation", ["procurement_mode_5", "procurement_mode_6", ]);
|
||||
projectTypeCodeMaps.set("/Negotiation", ["procurement_mode_5", "procurement_mode_6",]);
|
||||
//询价
|
||||
projectTypeCodeMaps.set("/Inquiry", ["procurement_mode_7"]);
|
||||
|
||||
@ -265,40 +265,52 @@ export const numberToChinese = (num: any) => {
|
||||
var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十");
|
||||
var BB = new Array("", "十", "百", "仟", "萬", "億", "点", "");
|
||||
var a = ("" + num).replace(/(^0*)/g, "").split("."),
|
||||
k = 0,
|
||||
re = "";
|
||||
k = 0,
|
||||
re = "";
|
||||
for (var i = a[0].length - 1; i >= 0; i--) {
|
||||
switch (k) {
|
||||
case 0:
|
||||
re = BB[7] + re;
|
||||
break;
|
||||
case 4:
|
||||
if (!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$")
|
||||
.test(a[0]))
|
||||
re = BB[4] + re;
|
||||
break;
|
||||
case 8:
|
||||
re = BB[5] + re;
|
||||
BB[7] = BB[5];
|
||||
k = 0;
|
||||
break;
|
||||
}
|
||||
if (k % 4 == 2 && a[0].charAt(i + 2) != '0' && a[0].charAt(i + 1) == '0')
|
||||
re = AA[0] + re;
|
||||
if (a[0].charAt(i) != '0')
|
||||
re = AA[a[0].charAt(i)] + BB[k % 4] + re;
|
||||
k++;
|
||||
switch (k) {
|
||||
case 0:
|
||||
re = BB[7] + re;
|
||||
break;
|
||||
case 4:
|
||||
if (!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$")
|
||||
.test(a[0]))
|
||||
re = BB[4] + re;
|
||||
break;
|
||||
case 8:
|
||||
re = BB[5] + re;
|
||||
BB[7] = BB[5];
|
||||
k = 0;
|
||||
break;
|
||||
}
|
||||
if (k % 4 == 2 && a[0].charAt(i + 2) != '0' && a[0].charAt(i + 1) == '0')
|
||||
re = AA[0] + re;
|
||||
if (a[0].charAt(i) != '0')
|
||||
re = AA[a[0].charAt(i)] + BB[k % 4] + re;
|
||||
k++;
|
||||
}
|
||||
|
||||
if (a.length > 1) // 加上小数部分(如果有小数部分)
|
||||
{
|
||||
re += BB[6];
|
||||
for (var i = 0; i < a[1].length; i++)
|
||||
re += AA[a[1].charAt(i)];
|
||||
re += BB[6];
|
||||
for (var i = 0; i < a[1].length; i++)
|
||||
re += AA[a[1].charAt(i)];
|
||||
}
|
||||
if (re == '一十')
|
||||
re = "十";
|
||||
re = "十";
|
||||
if (re.match(/^一/) && re.length == 3)
|
||||
re = re.replace("一", "");
|
||||
re = re.replace("一", "");
|
||||
return re;
|
||||
}
|
||||
/**
|
||||
* 页面内锚点滚动方法
|
||||
* @param anchorName
|
||||
*/
|
||||
export const scrollToAnchor = (anchorName: string) => {
|
||||
if (anchorName) {
|
||||
// 找到锚点
|
||||
let anchorElement = document.getElementById(anchorName);
|
||||
// 如果对应id的锚点存在,就跳转到锚点
|
||||
if (anchorElement) { anchorElement.scrollIntoView({ block: 'start', behavior: 'smooth' }); }
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user