Commit 7a910d5c authored by alwayOnlie's avatar alwayOnlie

提交组建抽离

parent 69a7c913
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Button, Input, Form, Select, Radio, message, Modal } from 'antd' import { Button, Input, Form, Radio, message, Modal } from 'antd'
const { TextArea } = Input
const { Search, TextArea } = Input
import { StandardTable } from 'god';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
const Examine = (props: any) => { import { IAntdSchemaFormProps } from '@formily/antd'
const { ExamineFlag, getfetchData, applyId, type } = props;
const [isPass, setIsAllMember] = useState() export interface Iprops extends IAntdSchemaFormProps {
/* 显示隐藏 */
ExamineFlag: boolean,
/* 回调方法 */
getfetchData: Function,
/* id */
applyId: string,
/* 请求接口类型 */
type: string,
/* 同意 */
agreeText?: string,
/* 不同意 */
disagree?: string,
}
/* 合同审核组建 */
const Examine: React.FC<Iprops> = ({
ExamineFlag,
getfetchData,
applyId,
type,
agreeText,
disagree,
}) => {
const [isPass, setIsAllMember] = useState(1)
/* 设置选中值 */
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
const [form] = Form.useForm(); const [form] = Form.useForm();
/***
* @function fetchData 请求表格数据
**/
/* 提交表单 */ /* 提交表单 */
const onFinish = (values: any) => { const onFinish = (values: any) => {
values.applyId = applyId;
let fn; let fn;
switch (type) { switch (type) {
/* 待新增请款单审核接口 */
case 'submitExamine': case 'submitExamine':
fn = PublicApi.postContractApplyAmountSubmitExamine fn = PublicApi.postContractApplyAmountSubmitExamine
values.applyId = applyId;
break; break;
/* 待新增请款单一级审核接口 */
case 'PageToBeExamineOne': case 'PageToBeExamineOne':
fn = PublicApi.postContractApplyAmountExamineStepOne fn = PublicApi.postContractApplyAmountExamineStepOne
values.applyId = applyId;
break; break;
/* 待新增请款单二级审核接口 */
case 'ToBeExamineTwo': case 'ToBeExamineTwo':
fn = PublicApi.postContractApplyAmountExamineStepTwo fn = PublicApi.postContractApplyAmountExamineStepTwo
values.applyId = applyId;
break;
/* 待提交审核合同 */
case 'ManageSubmitExamine':
fn = PublicApi.postContractManageSubmitExamine
values.contractId = applyId;
break;
/* 待提交一级审核合同 */
case 'ManageExamineStepOne':
fn = PublicApi.postContractManageExamineStepOne
values.contractId = applyId;
break;
/* 待提交二级审核合同 */
case 'PageToBeExamineStepTwo':
fn = PublicApi.postContractManageExamineStepTwo
values.contractId = applyId;
break;
/* 合同协同 待提交审核合同 */
case 'pageToBeSubmitExamine':
fn = PublicApi.getContractCoordinationPageToBeSubmitExamine
values.contractId = applyId;
break;
/* 合同协同 一级待提交审核合同 */
case 'CoordinationPageToBeExamineOne':
fn = PublicApi.getContractCoordinationPageToBeExamineOne
values.contractId = applyId;
break;
/* 合同协同 二级待提交审核合同 */
case 'CoordinationExamineStepTwo':
fn = PublicApi.postContractCoordinationExamineStepTwo
values.contractId = applyId;
break;
/* 合同协同签订-签订合同 */
case 'Signacontract':
fn = PublicApi.postContractManageSign
values.contractId = applyId;
break; break;
} }
const msg = message.loading({ const msg = message.loading({
...@@ -31,7 +93,6 @@ const Examine = (props: any) => { ...@@ -31,7 +93,6 @@ const Examine = (props: any) => {
duration: 0, duration: 0,
}); });
fn(values).then(res => { fn(values).then(res => {
console.log(res);
if (res.code === 1000) { if (res.code === 1000) {
getfetchData({ getfetchData({
ExamineFlag: false, ExamineFlag: false,
...@@ -42,13 +103,9 @@ const Examine = (props: any) => { ...@@ -42,13 +103,9 @@ const Examine = (props: any) => {
msg(); msg();
}); });
}; };
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
const onFinishFailed = (errorInfo: any) => { const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo); console.log('Failed:', errorInfo);
}; };
/* 回调 */ /* 回调 */
const fetchData = (val) => { const fetchData = (val) => {
if (val == 'onCancel') { if (val == 'onCancel') {
...@@ -61,7 +118,6 @@ const Examine = (props: any) => { ...@@ -61,7 +118,6 @@ const Examine = (props: any) => {
} }
} }
return ( return (
<div> <div>
<Modal footer={null} title="提交审核" visible={ExamineFlag} onCancel={() => fetchData('onCancel')}> <Modal footer={null} title="提交审核" visible={ExamineFlag} onCancel={() => fetchData('onCancel')}>
<Form <Form
...@@ -71,15 +127,15 @@ const Examine = (props: any) => { ...@@ -71,15 +127,15 @@ const Examine = (props: any) => {
onFinish={onFinish} onFinish={onFinish}
onFinishFailed={onFinishFailed} onFinishFailed={onFinishFailed}
> >
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} > <Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择通过方式' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}> <Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>通过</Radio> <Radio value={1}>{agreeText}</Radio>
<Radio value={0}>不通过</Radio> <Radio value={0}>{disagree}</Radio>
</Radio.Group> </Radio.Group>
</Form.Item> </Form.Item>
<Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: true, message: '请选择作废日期' }]}> <Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: true, message: '请选择作废日期' }]}>
</Form.Item> </Form.Item>
<Form.Item label='' name="opinion" rules={[{ required: isPass ? true : false, message: '审核通过意见' }]}> <Form.Item label='' name="opinion" rules={[{ required: isPass ? false : true, message: '审核通过意见' }]}>
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} /> <TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Form.Item> </Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}> <div style={{ display: 'flex', justifyContent: 'flex-end' }}>
...@@ -91,4 +147,8 @@ const Examine = (props: any) => { ...@@ -91,4 +147,8 @@ const Examine = (props: any) => {
</div> </div>
) )
} }
Examine.defaultProps = {
agreeText: "通过",
disagree: "不通过",
}
export default Examine; export default Examine;
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Modal, Form, Radio, message, Input, Button } from 'antd'; import { Card } from 'antd';
import statuStyle from '../../common/colorTag' import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
...@@ -15,13 +15,13 @@ import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePicke ...@@ -15,13 +15,13 @@ import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePicke
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'; import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import moment from 'moment'; import moment from 'moment';
const { TextArea } = Input;
import { history } from 'umi'; import { history } from 'umi';
import ExamineFrom from '../../components/examine'
const pageToBeExamineOne = () => { const pageToBeExamineOne = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [form] = Form.useForm();
const [isPass, setIsAllMember] = useState(1)
const [Visible, setIsModalVisible] = useState<boolean>(false) const [Visible, setIsModalVisible] = useState<boolean>(false)
const [id, setid] = useState("") const [id, setid] = useState("")
//表头 //表头
...@@ -148,31 +148,17 @@ const pageToBeExamineOne = () => { ...@@ -148,31 +148,17 @@ const pageToBeExamineOne = () => {
setid(id) setid(id)
setIsModalVisible(!Visible) setIsModalVisible(!Visible)
} }
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
const onFinish = (values: any) => {
values.contractId = id;
const msg = message.loading({ /* 提交审核的回调 */
content: '正在操作', const getfetchData = (data) => {
duration: 0, console.log(data)
}); setIsModalVisible(data.ExamineFlag)
console.log('Success:', values); if (data.code === 1000) {
PublicApi.postContractCoordinationExamineStepOne(values).then(res => { ref.current.reload()
console.log(res); }
if (res.code === 1000) {
ref.current.reload();
setIsModalVisible(!Visible)
} }
}).finally(() => {
msg();
});
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -212,32 +198,13 @@ const pageToBeExamineOne = () => { ...@@ -212,32 +198,13 @@ const pageToBeExamineOne = () => {
}} }}
/> />
</Card> </Card>
<Modal footer={null} title="提交审核" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}> <ExamineFrom
<Form ExamineFlag={Visible}
name="basic" getfetchData={getfetchData}
form={form} applyId={id}
initialValues={{ remember: true }} type="ManageExamineStepOne"
onFinish={onFinish} />
onFinishFailed={onFinishFailed}
>
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>通过</Radio>
<Radio value={0}>不通过</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: true, message: '请选择作废日期' }]}>
</Form.Item>
<Form.Item label='' name="opinion" rules={[{ required: isPass ? false : true, message: '审核不通过意见' }]}>
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Button onClick={() => setIsModalVisible(!Visible)} style={{ marginRight: 10 }}>取消</Button>
<Button type="primary" htmlType="submit">保存</Button>
</div>
</Form>
</Modal>
</PageHeaderWrapper> </PageHeaderWrapper>
) )
} }
......
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Modal, Form, Radio, message, Input, Button } from 'antd'; import { Card } from 'antd';
import statuStyle from '../../common/colorTag' import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
...@@ -15,12 +15,12 @@ import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePicke ...@@ -15,12 +15,12 @@ import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePicke
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'; import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import moment from 'moment'; import moment from 'moment';
import ExamineFrom from '../../components/examine'
import { history } from 'umi'; import { history } from 'umi';
const { TextArea } = Input;
const pageToBeExamineTwo = () => { const pageToBeExamineTwo = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [form] = Form.useForm();
const [isPass, setIsAllMember] = useState(1)
const [Visible, setIsModalVisible] = useState<boolean>(false) const [Visible, setIsModalVisible] = useState<boolean>(false)
const [id, setid] = useState("") const [id, setid] = useState("")
const getdate = (time) => { const getdate = (time) => {
...@@ -141,36 +141,22 @@ const pageToBeExamineTwo = () => { ...@@ -141,36 +141,22 @@ const pageToBeExamineTwo = () => {
}) })
}) })
} }
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
/* 提交表单 */ /* 提交表单 */
const submitExamine = (id) => { const submitExamine = (id) => {
setid(id) setid(id)
setIsModalVisible(!Visible) setIsModalVisible(!Visible)
} }
const onFinish = (values: any) => {
values.contractId = id; /* 提交审核的回调 */
const msg = message.loading({ const getfetchData = (data) => {
content: '正在操作', console.log(data)
duration: 0, setIsModalVisible(data.ExamineFlag)
}); if (data.code === 1000) {
console.log('Success:', values); ref.current.reload()
PublicApi.postContractCoordinationExamineStepTwo(values).then(res => { }
console.log(res);
if (res.code === 1000) {
ref.current.reload();
setIsModalVisible(!Visible)
} }
}).finally(() => {
msg();
});
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -210,32 +196,12 @@ const pageToBeExamineTwo = () => { ...@@ -210,32 +196,12 @@ const pageToBeExamineTwo = () => {
}} }}
/> />
</Card> </Card>
<Modal footer={null} title="提交审核" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}> <ExamineFrom
<Form ExamineFlag={Visible}
name="basic" getfetchData={getfetchData}
form={form} applyId={id}
initialValues={{ remember: true }} type="CoordinationExamineStepTwo"
onFinish={onFinish} />
onFinishFailed={onFinishFailed}
>
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>通过</Radio>
<Radio value={0}>不通过</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: true, message: '请选择作废日期' }]}>
</Form.Item>
<Form.Item label='' name="opinion" rules={[{ required: isPass ? false : true, message: '审核不通过意见' }]}>
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Button onClick={() => setIsModalVisible(!Visible)} style={{ marginRight: 10 }}>取消</Button>
<Button type="primary" htmlType="submit">保存</Button>
</div>
</Form>
</Modal>
</PageHeaderWrapper> </PageHeaderWrapper>
) )
} }
......
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Modal, Form, Radio, message, Input, Button } from 'antd'; import { Card } from 'antd';
import statuStyle from '../../common/colorTag' import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
...@@ -16,11 +16,10 @@ import { PublicApi } from '@/services/api'; ...@@ -16,11 +16,10 @@ import { PublicApi } from '@/services/api';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'; import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import moment from 'moment'; import moment from 'moment';
import { history } from 'umi'; import { history } from 'umi';
const { TextArea } = Input; import ExamineFrom from '../../components/examine'
const pageToBeSubmitExamine = () => { const pageToBeSubmitExamine = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [form] = Form.useForm();
const [isPass, setIsAllMember] = useState(1)
const [Visible, setIsModalVisible] = useState<boolean>(false) const [Visible, setIsModalVisible] = useState<boolean>(false)
const [id, setid] = useState("") const [id, setid] = useState("")
//表头 //表头
...@@ -141,36 +140,22 @@ const pageToBeSubmitExamine = () => { ...@@ -141,36 +140,22 @@ const pageToBeSubmitExamine = () => {
}) })
}) })
} }
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
/* 提交表单 */ /* 提交表单 */
const submitExamine = (id) => { const submitExamine = (id) => {
setid(id) setid(id)
setIsModalVisible(!Visible) setIsModalVisible(!Visible)
} }
const onFinish = (values: any) => {
values.contractId = id; /* 提交审核的回调 */
const msg = message.loading({ const getfetchData = (data) => {
content: '正在操作', console.log(data)
duration: 0, setIsModalVisible(data.ExamineFlag)
}); if (data.code === 1000) {
console.log('Success:', values); ref.current.reload()
PublicApi.postContractCoordinationSubmitExamine(values).then(res => { }
console.log(res);
if (res.code === 1000) {
ref.current.reload();
setIsModalVisible(!Visible)
} }
}).finally(() => {
msg();
});
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -210,32 +195,13 @@ const pageToBeSubmitExamine = () => { ...@@ -210,32 +195,13 @@ const pageToBeSubmitExamine = () => {
}} }}
/> />
</Card> </Card>
<Modal footer={null} title="提交审核" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}> <ExamineFrom
<Form ExamineFlag={Visible}
name="basic" getfetchData={getfetchData}
form={form} applyId={id}
initialValues={{ remember: true }} type="ManageExamineStepOne"
onFinish={onFinish} />
onFinishFailed={onFinishFailed}
>
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>通过</Radio>
<Radio value={0}>不通过</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: true, message: '请输入原因' }]}>
</Form.Item>
<Form.Item label='' name="opinion" rules={[{ required: isPass ? false : true, message: '审核不通过意见' }]}>
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Button onClick={() => setIsModalVisible(!Visible)} style={{ marginRight: 10 }}>取消</Button>
<Button type="primary" htmlType="submit">保存</Button>
</div>
</Form>
</Modal>
</PageHeaderWrapper> </PageHeaderWrapper>
) )
} }
......
...@@ -18,10 +18,10 @@ import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'; ...@@ -18,10 +18,10 @@ import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const' import { FORM_FILTER_PATH } from '@/formSchema/const'
import { PlusCircleOutlined } from '@ant-design/icons' import { PlusCircleOutlined } from '@ant-design/icons'
import moment from 'moment'; import moment from 'moment';
import Examine from '../components/examine' import Examine from '../../components/examine'
import '../../constants/index.less' import '../../constants/index.less'
const Addbilldetails: React.FC<{}> = () => { const AddbillList: React.FC<{}> = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]) const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [ExamineFlag, setExamineFlag] = useState<boolean>(false); const [ExamineFlag, setExamineFlag] = useState<boolean>(false);
...@@ -242,4 +242,4 @@ const Addbilldetails: React.FC<{}> = () => { ...@@ -242,4 +242,4 @@ const Addbilldetails: React.FC<{}> = () => {
) )
} }
export default Addbilldetails export default AddbillList
...@@ -12,7 +12,7 @@ import Submit from '@/components/NiceForm/components/Submit' ...@@ -12,7 +12,7 @@ import Submit from '@/components/NiceForm/components/Submit'
import { FORM_FILTER_PATH } from '@/formSchema/const' import { FORM_FILTER_PATH } from '@/formSchema/const'
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import Examine from '../components/examine' import Examine from '../../components/examine'
import Materials from './components/materials' import Materials from './components/materials'
const { Link } = Anchor; const { Link } = Anchor;
......
...@@ -13,7 +13,7 @@ import Submit from '@/components/NiceForm/components/Submit' ...@@ -13,7 +13,7 @@ import Submit from '@/components/NiceForm/components/Submit'
import SearchSelect from '@/components/NiceForm/components/SearchSelect' import SearchSelect from '@/components/NiceForm/components/SearchSelect'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import moment from 'moment'; import moment from 'moment';
import Examine from '../components/examine' import Examine from '../../components/examine'
import "../../constants/index.less" import "../../constants/index.less"
......
...@@ -13,7 +13,7 @@ import Submit from '@/components/NiceForm/components/Submit' ...@@ -13,7 +13,7 @@ import Submit from '@/components/NiceForm/components/Submit'
import SearchSelect from '@/components/NiceForm/components/SearchSelect' import SearchSelect from '@/components/NiceForm/components/SearchSelect'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import moment from 'moment'; import moment from 'moment';
import Examine from '../components/examine' import Examine from '../../components/examine'
import "../../constants/index.less" import "../../constants/index.less"
......
...@@ -13,7 +13,7 @@ import Submit from '@/components/NiceForm/components/Submit' ...@@ -13,7 +13,7 @@ import Submit from '@/components/NiceForm/components/Submit'
import SearchSelect from '@/components/NiceForm/components/SearchSelect' import SearchSelect from '@/components/NiceForm/components/SearchSelect'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import moment from 'moment'; import moment from 'moment';
import Examine from '../components/examine' import Examine from '../../components/examine'
import "../../constants/index.less" import "../../constants/index.less"
const Submitpayment: React.FC<{}> = () => { const Submitpayment: React.FC<{}> = () => {
......
...@@ -223,7 +223,7 @@ const Details = (props: any) => { ...@@ -223,7 +223,7 @@ const Details = (props: any) => {
<p>商品名称:{record.associatedMaterielName}</p> <p>商品名称:{record.associatedMaterielName}</p>
</div> </div>
<div className={style.text}> <div className={style.text}>
<p>规格型号:{record.associatedGoods}</p> <p>规格型号:{record.associatedType}</p>
<p>品类:{record.associatedCategory}</p> <p>品类:{record.associatedCategory}</p>
</div> </div>
<div className={style.text}> <div className={style.text}>
......
...@@ -101,7 +101,7 @@ const Information = (props: any) => { ...@@ -101,7 +101,7 @@ const Information = (props: any) => {
]} ]}
> >
{/* disabled */} {/* disabled */}
<Input placeholder='请输入合同编号' disabled={oldContractId ? false : true} /> <Input placeholder='请输入合同编号' disabled />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
label="合同摘要" label="合同摘要"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Space, Button, Modal, Radio, Input, Form, message } from 'antd'; import { Card, Space, Button, Input, Form } from 'antd';
import statuStyle from '../../common/colorTag' import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
...@@ -15,13 +15,12 @@ import Submit from '@/components/NiceForm/components/Submit' ...@@ -15,13 +15,12 @@ import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons' import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
const { TextArea } = Input; import ExamineFrom from '../../components/examine'
const Examine = () => { const Examine = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]) const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据 const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
const [Visible, setIsModalVisible] = useState<boolean>(false) const [Visible, setIsModalVisible] = useState<boolean>(false)
const [isPass, setIsAllMember] = useState(1)
const [form] = Form.useForm(); const [form] = Form.useForm();
const [id, setid] = useState("") const [id, setid] = useState("")
const getdate = (time) => { const getdate = (time) => {
...@@ -130,42 +129,18 @@ const Examine = () => { ...@@ -130,42 +129,18 @@ const Examine = () => {
) )
} }
}] }]
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
/* 提交表单 */ /* 提交表单 */
const submitExamine = (id) => { const submitExamine = (id) => {
setid(id) setid(id)
setIsModalVisible(!Visible) setIsModalVisible(!Visible)
} }
const onFinish = (values: any) => {
values.contractId = id;
const msg = message.loading({
content: '正在操作',
duration: 0,
});
console.log('Success:', values);
PublicApi.postContractManageSubmitExamine(values).then(res => {
console.log(res);
if (res.code === 1000) {
ref.current.reload();
setIsModalVisible(!Visible)
}
}).finally(() => {
msg();
});
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
// /contract/manage / submitExamine
// 列表数据 // 列表数据
const fetchData = (params?: any) => { const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数 console.log(params)//可以直接打印参数
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// /contract/manage / submitExamine
PublicApi.getContractManagePageToBeSubmitExamine({ PublicApi.getContractManagePageToBeSubmitExamine({
...params, ...params,
}).then(res => { }).then(res => {
...@@ -182,6 +157,14 @@ const Examine = () => { ...@@ -182,6 +157,14 @@ const Examine = () => {
} }
}; };
/* 提交审核的回调 */
const getfetchData = (data) => {
console.log(data)
setIsModalVisible(data.ExamineFlag)
if (data.code === 1000) {
ref.current.reload()
}
}
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -225,32 +208,12 @@ const Examine = () => { ...@@ -225,32 +208,12 @@ const Examine = () => {
} }
}} }}
/> />
<Modal footer={null} title="提交审核" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}> <ExamineFrom
<Form ExamineFlag={Visible}
name="basic" getfetchData={getfetchData}
form={form} applyId={id}
initialValues={{ remember: true }} type="ManageSubmitExamine"
onFinish={onFinish} />
onFinishFailed={onFinishFailed}
>
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>通过</Radio>
<Radio value={0}>不通过</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: true, message: '请选择作废日期' }]}>
</Form.Item>
<Form.Item label='' name="opinion" rules={[{ required: isPass ? false : true, message: '审核不通过意见' }]}>
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Button onClick={() => setIsModalVisible(!Visible)} style={{ marginRight: 10 }}>取消</Button>
<Button type="primary" htmlType="submit">保存</Button>
</div>
</Form>
</Modal>
</Card> </Card>
</PageHeaderWrapper> </PageHeaderWrapper>
) )
......
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Space, Button, Modal, Radio, Input, Form, message } from 'antd'; import { Card, Space, Button } from 'antd';
import statuStyle from '../../common/colorTag' import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
...@@ -14,8 +14,8 @@ import Submit from '@/components/NiceForm/components/Submit' ...@@ -14,8 +14,8 @@ import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons' import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import ExamineFrom from '../../components/examine'
const { TextArea } = Input;
const Levelexamine = () => { const Levelexamine = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
...@@ -26,8 +26,7 @@ const Levelexamine = () => { ...@@ -26,8 +26,7 @@ const Levelexamine = () => {
const [Visible, setIsModalVisible] = useState<boolean>(false) const [Visible, setIsModalVisible] = useState<boolean>(false)
const [id, setid] = useState("") const [id, setid] = useState("")
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据 const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
const [isPass, setIsAllMember] = useState(1)
const [form] = Form.useForm();
//表头 //表头
const columns: ColumnType<any>[] = [{ const columns: ColumnType<any>[] = [{
title: '合同编号/摘要', title: '合同编号/摘要',
...@@ -136,30 +135,6 @@ const Levelexamine = () => { ...@@ -136,30 +135,6 @@ const Levelexamine = () => {
setid(id) setid(id)
setIsModalVisible(!Visible) setIsModalVisible(!Visible)
} }
const onFinish = (values: any) => {
values.contractId = id;
const msg = message.loading({
content: '正在操作',
duration: 0,
});
PublicApi.postContractManageExamineStepOne(values).then(res => {
console.log(res);
if (res.code === 1000) {
ref.current.reload();
setIsModalVisible(!Visible)
}
}).finally(() => {
msg();
});
};
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
// 列表数据 // 列表数据
const fetchData = (params?: any) => { const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数 console.log(params)//可以直接打印参数
...@@ -179,7 +154,14 @@ const Levelexamine = () => { ...@@ -179,7 +154,14 @@ const Levelexamine = () => {
setSelectRow(selectedRows) setSelectRow(selectedRows)
} }
}; };
/* 提交审核的回调 */
const getfetchData = (data) => {
console.log(data)
setIsModalVisible(data.ExamineFlag)
if (data.code === 1000) {
ref.current.reload()
}
}
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -224,32 +206,12 @@ const Levelexamine = () => { ...@@ -224,32 +206,12 @@ const Levelexamine = () => {
}} }}
/> />
</Card> </Card>
<Modal footer={null} title="提交审核" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}> <ExamineFrom
<Form ExamineFlag={Visible}
name="basic" getfetchData={getfetchData}
form={form} applyId={id}
initialValues={{ remember: true }} type="ManageExamineStepOne"
onFinish={onFinish} />
onFinishFailed={onFinishFailed}
>
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>通过</Radio>
<Radio value={0}>不通过</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: true, message: '请选择作废日期' }]}>
</Form.Item>
<Form.Item label='' name="opinion" rules={[{ required: isPass ? false : true, message: '审核不通过意见' }]}>
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Button onClick={() => setIsModalVisible(!Visible)} style={{ marginRight: 10 }}>取消</Button>
<Button type="primary" htmlType="submit">保存</Button>
</div>
</Form>
</Modal>
</PageHeaderWrapper> </PageHeaderWrapper>
) )
} }
......
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Card, Space, Button, Modal, Radio, Input, Form, message } from 'antd'; import { Card, Space, Button } from 'antd';
import statuStyle from '../../common/colorTag' import statuStyle from '../../common/colorTag'
import { ColumnType } from 'antd/lib/table/interface'; import { ColumnType } from 'antd/lib/table/interface';
import { StandardTable } from 'god'; import { StandardTable } from 'god';
...@@ -13,7 +13,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte ...@@ -13,7 +13,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import Submit from '@/components/NiceForm/components/Submit' import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
const { TextArea } = Input; import ExamineFrom from '../../components/examine'
const Secondaryexamine = () => { const Secondaryexamine = () => {
const ref = useRef<any>({}); const ref = useRef<any>({});
...@@ -21,8 +21,6 @@ const Secondaryexamine = () => { ...@@ -21,8 +21,6 @@ const Secondaryexamine = () => {
const [Visible, setIsModalVisible] = useState<boolean>(false) const [Visible, setIsModalVisible] = useState<boolean>(false)
const [id, setid] = useState("") const [id, setid] = useState("")
const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据 const [selectRow, setSelectRow] = useState<any[]>([]) // 模态框选择的行数据
const [isPass, setIsAllMember] = useState(1)
const [form] = Form.useForm();
//表头 //表头
const columns: ColumnType<any>[] = [{ const columns: ColumnType<any>[] = [{
title: '合同编号/摘要', title: '合同编号/摘要',
...@@ -72,11 +70,6 @@ const Secondaryexamine = () => { ...@@ -72,11 +70,6 @@ const Secondaryexamine = () => {
title: '对应单据/寻源类型', title: '对应单据/寻源类型',
dataIndex: 'sourceNo', dataIndex: 'sourceNo',
align: 'left', align: 'left',
filters: [
{ text: '采购询价', value: 1 },
{ text: '采购招标', value: 2 },
{ text: '采购竞价', value: 3 },
],
render: (text, record) => { render: (text, record) => {
let sourceTypeList = [ let sourceTypeList = [
"", "",
...@@ -100,7 +93,6 @@ const Secondaryexamine = () => { ...@@ -100,7 +93,6 @@ const Secondaryexamine = () => {
title: '外部状态', title: '外部状态',
dataIndex: 'outerStatus', dataIndex: 'outerStatus',
align: 'left', align: 'left',
render: (text, record) => { render: (text, record) => {
return ( return (
<StatusTag type="warning" title={record.outerStatusName} /> <StatusTag type="warning" title={record.outerStatusName} />
...@@ -111,9 +103,7 @@ const Secondaryexamine = () => { ...@@ -111,9 +103,7 @@ const Secondaryexamine = () => {
title: '内部状态', title: '内部状态',
dataIndex: 'innerStatus', dataIndex: 'innerStatus',
align: 'left', align: 'left',
render: (text, record) => { render: (text, record) => {
return ( return (
<div> <div>
<span style={statuStyle.point}> </span> <span style={statuStyle.point}> </span>
...@@ -140,30 +130,6 @@ const Secondaryexamine = () => { ...@@ -140,30 +130,6 @@ const Secondaryexamine = () => {
setid(id) setid(id)
setIsModalVisible(!Visible) setIsModalVisible(!Visible)
} }
const onFinish = (values: any) => {
values.contractId = id;
const msg = message.loading({
content: '正在操作',
duration: 0,
});
PublicApi.postContractManageExamineStepTwo(values).then(res => {
console.log(res);
if (res.code === 1000) {
ref.current.reload();
setIsModalVisible(!Visible)
}
}).finally(() => {
msg();
});
};
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
}
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
// 列表数据 // 列表数据
const fetchData = (params?: any) => { const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数 console.log(params)//可以直接打印参数
...@@ -183,7 +149,14 @@ const Secondaryexamine = () => { ...@@ -183,7 +149,14 @@ const Secondaryexamine = () => {
setSelectRow(selectedRows) setSelectRow(selectedRows)
} }
}; };
/* 提交审核的回调 */
const getfetchData = (data) => {
console.log(data)
setIsModalVisible(data.ExamineFlag)
if (data.code === 1000) {
ref.current.reload()
}
}
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -220,7 +193,6 @@ const Secondaryexamine = () => { ...@@ -220,7 +193,6 @@ const Secondaryexamine = () => {
formilyChilds={{ formilyChilds={{
children: <Space> children: <Space>
<Button >批量提交审核</Button> <Button >批量提交审核</Button>
</Space>, </Space>,
layouts: { layouts: {
span: 8 span: 8
...@@ -228,32 +200,12 @@ const Secondaryexamine = () => { ...@@ -228,32 +200,12 @@ const Secondaryexamine = () => {
}} }}
/> />
</Card> </Card>
<Modal footer={null} title="提交审核" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}> <ExamineFrom
<Form ExamineFlag={Visible}
name="basic" getfetchData={getfetchData}
form={form} applyId={id}
initialValues={{ remember: true }} type="PageToBeExamineStepTwo"
onFinish={onFinish} />
onFinishFailed={onFinishFailed}
>
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>通过</Radio>
<Radio value={0}>不通过</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label={isPass ? '审核通过原因' : '审不核通过原因'} rules={[{ required: isPass ? false : true, message: '审核不通过意见' }]}>
</Form.Item>
<Form.Item label='' name="opinion">
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} />
</Form.Item>
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Button onClick={() => setIsModalVisible(!Visible)} style={{ marginRight: 10 }}>取消</Button>
<Button type="primary" htmlType="submit">保存</Button>
</div>
</Form>
</Modal>
</PageHeaderWrapper > </PageHeaderWrapper >
) )
} }
......
...@@ -13,6 +13,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte ...@@ -13,6 +13,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import Submit from '@/components/NiceForm/components/Submit' import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix' import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import ExamineFrom from '../../components/examine'
const { TextArea } = Input; const { TextArea } = Input;
...@@ -108,10 +109,6 @@ const Signacontract = () => { ...@@ -108,10 +109,6 @@ const Signacontract = () => {
title: '内部状态', title: '内部状态',
dataIndex: 'innerStatus', dataIndex: 'innerStatus',
align: 'left', align: 'left',
// filters: [
// { text: 'Joe', value: 'Joe' },
// { text: 'Jim', value: 'Jim' },
// ],
render: (text, record) => { render: (text, record) => {
return ( return (
...@@ -129,13 +126,11 @@ const Signacontract = () => { ...@@ -129,13 +126,11 @@ const Signacontract = () => {
return ( return (
<div> <div>
<span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => submitExamine(record.id)}>签订合同</span> <span style={{ color: '#00B37A', cursor: 'pointer', marginRight: 10 }} onClick={() => submitExamine(record.id)}>签订合同</span>
{/* <span style={{ color: '#00B37A', cursor: 'pointer', }}></span> */}
</div> </div>
) )
} }
}] }]
// 列表数据 // 列表数据
const fetchData = (params?: any) => { const fetchData = (params?: any) => {
console.log(params)//可以直接打印参数 console.log(params)//可以直接打印参数
...@@ -147,7 +142,6 @@ const Signacontract = () => { ...@@ -147,7 +142,6 @@ const Signacontract = () => {
}) })
}) })
} }
const rowSelection: any = { const rowSelection: any = {
selectedRowKeys: selectedRowKeys, selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => { onChange: (selectedRowKeys: any, selectedRows: any) => {
...@@ -155,36 +149,20 @@ const Signacontract = () => { ...@@ -155,36 +149,20 @@ const Signacontract = () => {
setSelectRow(selectedRows) setSelectRow(selectedRows)
} }
}; };
/* 提交表单 */ /* 提交表单 */
const submitExamine = (id) => { const submitExamine = (id) => {
setid(id) setid(id)
setIsModalVisible(!Visible) setIsModalVisible(!Visible)
} }
const onFinish = (values: any) => {
values.contractId = id; /* 提交审核的回调 */
const msg = message.loading({ const getfetchData = (data) => {
content: '正在操作', console.log(data)
duration: 0, setIsModalVisible(data.ExamineFlag)
}); if (data.code === 1000) {
PublicApi.postContractManageSign(values).then(res => { ref.current.reload()
console.log(res);
if (res.code === 1000) {
ref.current.reload();
setIsModalVisible(!Visible)
} }
}).finally(() => {
msg();
});
};
const handleIsAllMemberChange = (v: any) => {
setIsAllMember(v.target.value)
} }
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
return ( return (
<PageHeaderWrapper> <PageHeaderWrapper>
<Card> <Card>
...@@ -229,32 +207,15 @@ const Signacontract = () => { ...@@ -229,32 +207,15 @@ const Signacontract = () => {
}} }}
/> />
</Card> </Card>
<Modal footer={null} title="提交审核" visible={Visible} onOk={() => setIsModalVisible(!Visible)} onCancel={() => setIsModalVisible(!Visible)}>
<Form
name="basic"
form={form}
initialValues={{ remember: true }}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<Form.Item name="isPass" label="" rules={[{ required: true, message: '请选择作废日期' }]} initialValue={isPass} >
<Radio.Group onChange={handleIsAllMemberChange}>
<Radio value={1}>同意签订</Radio>
<Radio value={0}>不同意签订</Radio>
</Radio.Group>
</Form.Item>
<Form.Item label={isPass ? '同意签订原因' : '不同意签订原因'} rules={[{ required: true, message: '请选择作废日期' }]}>
</Form.Item> <ExamineFrom
<Form.Item label='' name="opinion" rules={[{ required: true, message: '审核通过意见' }]}> ExamineFlag={Visible}
<TextArea placeholder="在此输入你的原因,最多60个汉字" maxLength={120} /> getfetchData={getfetchData}
</Form.Item> applyId={id}
<div style={{ display: 'flex', justifyContent: 'flex-end' }}> type="Signacontract"
<Button onClick={() => setIsModalVisible(!Visible)} style={{ marginRight: 10 }}>取消</Button> agreeText="同意签订"
<Button type="primary" htmlType="submit">保存</Button> disagree="不同意签订"
</div> />
</Form>
</Modal>
</PageHeaderWrapper> </PageHeaderWrapper>
) )
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment