|
@@ -1,6 +1,7 @@
|
|
|
import React,{Component} from 'react';
|
|
|
-import {Button, Form, Input, message, Modal, Spin} from "antd";
|
|
|
+import {Button, DatePicker, Form, Input, message, Modal, Spin} from "antd";
|
|
|
import $ from "jquery/src/ajax";
|
|
|
+import moment from "moment";
|
|
|
|
|
|
const layout = {
|
|
|
labelCol: {
|
|
@@ -138,6 +139,7 @@ class PayRecord extends Component{
|
|
|
}
|
|
|
|
|
|
handleSubmit(e,status = 0){
|
|
|
+ //0审核 1待支付 2驳回 3已支付 4取消(0重新发起,1通过审核,2驳回)
|
|
|
e.preventDefault();
|
|
|
this.props.form.validateFieldsAndScroll((err, values) => {
|
|
|
if (err) {
|
|
@@ -150,7 +152,7 @@ class PayRecord extends Component{
|
|
|
let data = {
|
|
|
id: this.props.payId,
|
|
|
paymentAmount: paymentDetails.paymentAmount,
|
|
|
- paymentStatus: paymentDetails.paymentStatus,
|
|
|
+ // paymentStatus: paymentDetails.paymentStatus, //支付状态 0半款 1全款
|
|
|
status: status,//0 发起 1通过 2驳回(0重新发起,1通过审核,2驳回)
|
|
|
}
|
|
|
Object.assign(data,values)
|
|
@@ -163,7 +165,14 @@ class PayRecord extends Component{
|
|
|
if (res.error && res.error.length) {
|
|
|
message.error(res.error[0].message);
|
|
|
} else {
|
|
|
- message.success("重新申请成功");
|
|
|
+ message.success(
|
|
|
+ status === 0 ? "重新申请成功" :
|
|
|
+ status === 1 ? "通过审核操作成功" :
|
|
|
+ status === 2 ? "驳回操作成功" :
|
|
|
+ status === 3 ? "支付操作成功" :
|
|
|
+ status === 4 ? "取消操作成功" :''
|
|
|
+ );
|
|
|
+ this.props.changeVisible();
|
|
|
}
|
|
|
}).always(() => {
|
|
|
this.setState({
|
|
@@ -174,47 +183,102 @@ class PayRecord extends Component{
|
|
|
}
|
|
|
|
|
|
//新增财务付款
|
|
|
- addfinancialPayment(e) {
|
|
|
+ addfinancialPayment(e,index) {
|
|
|
e.preventDefault();
|
|
|
- this.props.form.validateFieldsAndScroll((err, values) => {
|
|
|
- if (err) {
|
|
|
- return;
|
|
|
+ let financialPaymentList = this.state.financialPaymentList.concat();
|
|
|
+ if(!financialPaymentList[index].partyAmount){
|
|
|
+ message.error('请填写正确的付款金额 ');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!financialPaymentList[index].paymentTimes){
|
|
|
+ message.error('请选择时间 ');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let time = moment(financialPaymentList[index].paymentTimes).format('YYYY-MM-DD HH:mm:ss');
|
|
|
+ this.setState({
|
|
|
+ loading: true
|
|
|
+ })
|
|
|
+ let data = {
|
|
|
+ pid: this.props.payId,
|
|
|
+ partyAmount: financialPaymentList[index]['partyAmount'],
|
|
|
+ paymentTimes: time,
|
|
|
+ }
|
|
|
+ $.ajax({
|
|
|
+ type: 'post',
|
|
|
+ url: globalConfig.context + "/api/admin/company/addfinancialPayment",
|
|
|
+ dataType: "json",
|
|
|
+ data: data,
|
|
|
+ }).done((res) => {
|
|
|
+ if (res.error && res.error.length) {
|
|
|
+ message.error(res.error[0].message);
|
|
|
+ } else {
|
|
|
+ message.success("新增成功");
|
|
|
+ let arr = this.state.financialPaymentList.concat();
|
|
|
+ arr[index].isSave= true;
|
|
|
+ arr[index].id= res.data;
|
|
|
+ this.setState({
|
|
|
+ financialPaymentList: arr
|
|
|
+ });
|
|
|
+ // this.getSelectfinancialPayment();
|
|
|
}
|
|
|
- const { paymentDetails } = this.state;
|
|
|
+ }).always(() => {
|
|
|
this.setState({
|
|
|
- loading: true
|
|
|
+ loading: false
|
|
|
})
|
|
|
- let data = {
|
|
|
- pid: this.props.payId,
|
|
|
- partyAmount: values.partyAmount,
|
|
|
- paymentTimes: values.paymentTimes
|
|
|
- }
|
|
|
- $.ajax({
|
|
|
- type: 'post',
|
|
|
- url: globalConfig.context + "/api/admin/company/addfinancialPayment",
|
|
|
- dataType: "json",
|
|
|
- data: data,
|
|
|
- }).done((res) => {
|
|
|
- if (res.error && res.error.length) {
|
|
|
- message.error(res.error[0].message);
|
|
|
- } else {
|
|
|
- message.success("新增成功");
|
|
|
- }
|
|
|
- }).always(() => {
|
|
|
- this.setState({
|
|
|
- loading: false
|
|
|
- })
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除财务付款
|
|
|
+ deleteFinancialPayment(e,index){
|
|
|
+ e.preventDefault();
|
|
|
+ if(!this.state.financialPaymentList[index]['id']){
|
|
|
+ let arr = this.state.financialPaymentList.concat();
|
|
|
+ arr.splice(index,1);
|
|
|
+ this.setState({
|
|
|
+ financialPaymentList: arr
|
|
|
});
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setState({
|
|
|
+ loading: true
|
|
|
})
|
|
|
+ $.ajax({
|
|
|
+ type: 'post',
|
|
|
+ url: globalConfig.context + "/api/admin/company/deleteFinancialPayment",
|
|
|
+ dataType: "json",
|
|
|
+ data: {
|
|
|
+ id: this.state.financialPaymentList[index]['id']
|
|
|
+ },
|
|
|
+ }).done((res) => {
|
|
|
+ if (res.error && res.error.length) {
|
|
|
+ message.error(res.error[0].message);
|
|
|
+ } else {
|
|
|
+ let arr = this.state.financialPaymentList.concat();
|
|
|
+ arr.splice(index,1);
|
|
|
+ this.setState({
|
|
|
+ financialPaymentList: arr
|
|
|
+ });
|
|
|
+ message.success("删除成功");
|
|
|
+ }
|
|
|
+ }).always(() => {
|
|
|
+ this.setState({
|
|
|
+ loading: false
|
|
|
+ })
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
//0审核 1驳回 2待支付 3已支付 4取消
|
|
|
noExamineOperation(){
|
|
|
return (
|
|
|
- this.state.paymentDetails.status === 1 ? <Form.Item>
|
|
|
+ this.state.paymentDetails.status === 2 ? <Form.Item>
|
|
|
<Button type="primary" htmlType="submit">
|
|
|
重新发起申请
|
|
|
</Button>
|
|
|
+ <Button type="danger" style={{float:'right'}} onClick={(e)=>{
|
|
|
+ this.handleSubmit(e,4);
|
|
|
+ }}>
|
|
|
+ 删除
|
|
|
+ </Button>
|
|
|
</Form.Item> : <div/>
|
|
|
)
|
|
|
}
|
|
@@ -223,45 +287,71 @@ class PayRecord extends Component{
|
|
|
const { getFieldDecorator } = this.props.form;
|
|
|
return (
|
|
|
this.state.paymentDetails.status === 0 ? <Form.Item>
|
|
|
- {getFieldDecorator('remarks', {
|
|
|
+ {getFieldDecorator('auditNotes', {
|
|
|
rules: [{ required: true, message: '请输入备注!' }],
|
|
|
})(
|
|
|
<Input style={{ width: '200px' }} placeholder="请输入备注" type={'textarea'}/>
|
|
|
)}
|
|
|
- <Button type="primary" onClick={(e)=>{
|
|
|
+ <Button type="primary" style={{marginLeft:'15px'}} onClick={(e)=>{
|
|
|
this.handleSubmit(e,2);
|
|
|
}}>
|
|
|
驳回
|
|
|
</Button>
|
|
|
- <Button type="primary" onClick={(e)=>{
|
|
|
+ <Button type="primary" style={{marginLeft:'15px'}} onClick={(e)=>{
|
|
|
this.handleSubmit(e,1);
|
|
|
}}>
|
|
|
通过
|
|
|
</Button>
|
|
|
- </Form.Item> : this.state.paymentDetails.status === 2 ?
|
|
|
- <div>
|
|
|
- <Form.Item label="付款时间:">
|
|
|
- {getFieldDecorator('remarks', {
|
|
|
- rules: [{ required: true, message: '请输入付款时间!' }],
|
|
|
- })(
|
|
|
- <Input style={{ width: '100px' }} placeholder="请输入付款时间" type={'number'}/>
|
|
|
- )}
|
|
|
-
|
|
|
- </Form.Item>
|
|
|
- <Form.Item label="付款金额(万元):">
|
|
|
- {getFieldDecorator('remarks', {
|
|
|
- rules: [{ required: true, message: '请输入付款金额!' }],
|
|
|
- })(
|
|
|
- <Input style={{ width: '100px' }} placeholder="请输入付款金额" type={'time'}/>
|
|
|
- )}
|
|
|
-
|
|
|
- </Form.Item>
|
|
|
- <Button type="primary" onClick={(e)=>{
|
|
|
- this.addfinancialPayment(e)
|
|
|
- }}>
|
|
|
- 保存
|
|
|
- </Button>
|
|
|
- </div> : <div/>
|
|
|
+ </Form.Item> : this.state.paymentDetails.status === 1 ?
|
|
|
+ this.state.financialPaymentList.map((value,index)=>(
|
|
|
+ <div key={index} style={{display:'flex',flexFlow:'row nowrap',alignItems:'center',paddingTop:'15px'}}>
|
|
|
+ <Form.Item label="付款时间:" style={{marginBottom:'0px !important',display:'flex',flexFlow:'row nowrap',alignItems:'center'}}>
|
|
|
+ <DatePicker
|
|
|
+ showTime
|
|
|
+ disabled={value.isSave || value.id}
|
|
|
+ format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ style={{ width: '200px' }}
|
|
|
+ placeholder="请选择付款时间"
|
|
|
+ value={value.paymentTimes && moment(value.paymentTimes, 'YYYY-MM-DD HH:mm:ss')}
|
|
|
+ defaultValue={value.paymentTimes && moment(value.paymentTimes, 'YYYY-MM-DD HH:mm:ss')}
|
|
|
+ onChange={(value)=>{
|
|
|
+ let arr = this.state.financialPaymentList.concat();
|
|
|
+ arr[index].paymentTimes = value;
|
|
|
+ this.setState({
|
|
|
+ financialPaymentList:arr
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item label="付款金额(万元):" style={{paddingLeft:'20px',marginBottom:'0px !important',display:'flex',flexFlow:'row nowrap',alignItems:'center'}}>
|
|
|
+ <Input
|
|
|
+ disabled={value.isSave || value.id}
|
|
|
+ style={{ width: '100px' }}
|
|
|
+ placeholder="请输入付款金额"
|
|
|
+ type={'number'}
|
|
|
+ value={value.partyAmount && value.partyAmount}
|
|
|
+ defaultValue={value.partyAmount && value.partyAmount}
|
|
|
+ onChange={(e)=>{
|
|
|
+ let arr = this.state.financialPaymentList.concat();
|
|
|
+ arr[index].partyAmount = e.target.value;
|
|
|
+ this.setState({
|
|
|
+ financialPaymentList:arr
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ {value.id ? false : !value.isSave ? <Button style={{marginLeft:'20px',}} type="primary" onClick={(e)=>{
|
|
|
+ this.addfinancialPayment(e,index)
|
|
|
+ }}>
|
|
|
+ 保存
|
|
|
+ </Button> : <div/>}
|
|
|
+ <Button type="primary" style={{marginLeft:'20px',}} onClick={(e)=>{
|
|
|
+ this.deleteFinancialPayment(e,index);
|
|
|
+ }}>
|
|
|
+ 删除
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ )) : <div/>
|
|
|
)
|
|
|
}
|
|
|
|
|
@@ -270,6 +360,7 @@ class PayRecord extends Component{
|
|
|
const { paymentLogs,paymentDetails,financialPaymentList } = this.state;
|
|
|
return(
|
|
|
<Modal
|
|
|
+ width={700}
|
|
|
maskClosable={false}
|
|
|
footer={null}
|
|
|
visible={this.props.visible}
|
|
@@ -319,7 +410,7 @@ class PayRecord extends Component{
|
|
|
initialValue: parseInt(paymentDetails.quantity),
|
|
|
rules: [{ required: false, message: '请输入數量!' }],
|
|
|
})(
|
|
|
- <Input disabled={paymentDetails.quantity <= 1 || this.state.paymentDetails.status > 1} style={{ width: '200px' }} placeholder="请输入數量" type={'number'}/>
|
|
|
+ <Input disabled={true} style={{ width: '200px' }} placeholder="请输入數量" type={'number'}/>
|
|
|
)}
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
@@ -351,7 +442,11 @@ class PayRecord extends Component{
|
|
|
initialValue: paymentDetails.applicationAmount,
|
|
|
rules: [{ required: true, message: '请输入本次申请支付金额!' }],
|
|
|
})(
|
|
|
- <Input disabled={this.state.paymentDetails.status > 1} style={{ width: '200px' }} placeholder="请输入本次申请支付金额" type={'number'}/>
|
|
|
+ <Input
|
|
|
+ type={'number'}
|
|
|
+ style={{ width: '200px' }}
|
|
|
+ disabled={ this.props.isAuditPayment ? this.state.paymentDetails.status !== 0 : this.state.paymentDetails.status !== 2}
|
|
|
+ placeholder="请输入本次申请支付金额"/>
|
|
|
)}
|
|
|
</Form.Item>
|
|
|
<Form.Item
|
|
@@ -361,21 +456,41 @@ class PayRecord extends Component{
|
|
|
}}
|
|
|
label="备注:"
|
|
|
>
|
|
|
- <div>{paymentDetails.remarks}</div>
|
|
|
+ {
|
|
|
+ (!this.props.isAuditPayment && this.state.paymentDetails.status === 2) ?
|
|
|
+ getFieldDecorator('remarks', {
|
|
|
+ initialValue: paymentDetails.remarks,
|
|
|
+ rules: [{ required: true, message: '请输入备注!' }],
|
|
|
+ })(
|
|
|
+ <Input style={{ width: '200px' }} placeholder="请输入备注" type={'textarea'}/>
|
|
|
+ ) : <div>{paymentDetails.remarks}</div>
|
|
|
+ }
|
|
|
</Form.Item>
|
|
|
<div className='payStateList'>
|
|
|
- <div className='listTitle'>
|
|
|
- 支付状态
|
|
|
+ <div className='listTitle' style={{color:'#F00'}}>
|
|
|
+ 支付状态:
|
|
|
+ <span style={{paddingLeft:'20px'}}>
|
|
|
+ {
|
|
|
+ //0审核 1待支付 2驳回 3已支付 4取消
|
|
|
+ paymentDetails.status === 0 ? '待'+paymentDetails.financeName+'审核' :
|
|
|
+ paymentDetails.status === 1 ? '待'+paymentDetails.financeName+'支付' :
|
|
|
+ paymentDetails.status === 2 ? '待重新提交' :
|
|
|
+ paymentDetails.status === 3 ? '待'+paymentDetails.financeName+'审核' : '已取消'
|
|
|
+ }
|
|
|
+ </span>
|
|
|
</div>
|
|
|
<div className='payList'>
|
|
|
{
|
|
|
paymentLogs.map((value,key)=>(
|
|
|
- <div key={key} className='payitem' style={{color:key === 0 ? '#f00' : '#000'}}>
|
|
|
+ <div key={key} className='payitem'>
|
|
|
{value.aname+':'}
|
|
|
- {
|
|
|
- value.status === 0 ? '(发起)'+value.remarks :
|
|
|
- value.status === 1 ? '(通过)'+value.remarks : '(驳回)'+value.remarks
|
|
|
- }
|
|
|
+ <span style={{paddingLeft:'15px',paddingRight:'15px'}}>
|
|
|
+ {
|
|
|
+ value.status === 0 ? '(发起)' :
|
|
|
+ value.status === 1 ? '(通过)': '(驳回)'
|
|
|
+ }
|
|
|
+ {value.remarks}
|
|
|
+ </span>
|
|
|
{
|
|
|
value.createTimes
|
|
|
}
|
|
@@ -384,25 +499,41 @@ class PayRecord extends Component{
|
|
|
}
|
|
|
</div>
|
|
|
</div>
|
|
|
- {paymentDetails.status === 2 || paymentDetails.status === 3 || paymentDetails.status === 4 ?<div className='payStateList'>
|
|
|
+ {paymentDetails.status === 1 || paymentDetails.status === 3 || paymentDetails.status === 4 ?<div style={{ borderTop: '1px #000 dashed'}}>
|
|
|
<div className='listTitle' style={{display:'block',fontSize:'15px'}}>
|
|
|
上传付费凭证-财务
|
|
|
<span style={{fontSize:'10px',paddingLeft:'10px'}}>实际付款(万元): {paymentDetails.paymentAmount}</span>
|
|
|
+ {paymentDetails.status === 1 && this.props.isAuditPayment ?
|
|
|
+ <Button style={{marginLeft:'20px'}} type="primary" onClick={()=>{
|
|
|
+ let arr = this.state.financialPaymentList.concat();
|
|
|
+ arr.push({});
|
|
|
+ this.setState({
|
|
|
+ financialPaymentList: arr
|
|
|
+ })
|
|
|
+ }}>
|
|
|
+ 增加付款凭证
|
|
|
+ </Button> : <div/>
|
|
|
+ }
|
|
|
</div>
|
|
|
- <div className='payList'>
|
|
|
+ {!(paymentDetails.status === 1 && this.props.isAuditPayment) ? <div className='payList'>
|
|
|
{
|
|
|
financialPaymentList.map((value,key)=>(
|
|
|
- <div key={key} className='payitem' style={{color:key === 0 ? '#f00' : '#000'}}>
|
|
|
+ <div key={key} className='payitem'>
|
|
|
付款时间: {value.paymentTimes}
|
|
|
<span style={{paddingLeft:'25px'}}>付款金额(万元): {value.partyAmount}</span>
|
|
|
</div>
|
|
|
))
|
|
|
}
|
|
|
- </div>
|
|
|
+ </div> : <div/>}
|
|
|
</div> : <div/>}
|
|
|
{
|
|
|
this.props.isAuditPayment ? this.examineOperation() : this.noExamineOperation()
|
|
|
}
|
|
|
+ {this.props.isAuditPayment && paymentDetails.status === 1 ? <Button style={{marginLeft:'20px'}} type="primary" onClick={(e)=>{
|
|
|
+ this.handleSubmit(e,3);
|
|
|
+ }}>
|
|
|
+ 确定提交
|
|
|
+ </Button> : <div/>}
|
|
|
</Form>
|
|
|
</div>
|
|
|
</Spin>
|