applyPaymentModal.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. import React,{Component} from 'react';
  2. import {Button, Form, Input, message, Modal, Radio, Spin} from "antd";
  3. import propType from 'prop-types';
  4. import $ from "jquery";
  5. const layout = {
  6. labelCol: {
  7. span: 8,
  8. },
  9. wrapperCol: {
  10. span: 16,
  11. },
  12. };
  13. const formItemLayout = {
  14. labelCol: { span: 8 },
  15. wrapperCol: { span: 14 },
  16. };
  17. class ApplyPaymentModal extends Component{
  18. // static propTypes = {
  19. // visible: PropTypes.bool.isRequired,
  20. // changeVisible: PropTypes.func.isRequired,
  21. // }
  22. //
  23. // static defaultProps = {
  24. // visible: false,
  25. // changeVisible: ()=>{},
  26. // }
  27. constructor(props) {
  28. super(props);
  29. this.state={
  30. loading: false
  31. }
  32. }
  33. //申请付款
  34. handleSubmit(e){
  35. e.preventDefault();
  36. console.log(this.props.previewPayInfor)
  37. this.props.form.validateFieldsAndScroll((err, values) => {
  38. if (err) {
  39. return;
  40. }
  41. this.setState({
  42. loading: true
  43. })
  44. values.tid = this.props.tid;
  45. if(this.props.previewPayInfor.nodeId){ //催款
  46. values.nodeId = this.props.previewPayInfor.nodeId;
  47. values.chooseType = 1; //支付选择 0第三方 1催款
  48. values.tcpid = this.props.previewPayInfor.cid; //第三方机构id
  49. }else{
  50. values.chooseType = 0 //支付选择 0第三方 1催款
  51. values.tcpid = this.props.previewPayInfor.id; //第三方机构id
  52. }
  53. if(this.props.type === 2){
  54. values.paymentType = 1; //支付类型 0第三方 1官费(用来做判断发起区别)
  55. }else{
  56. values.paymentType = 0; //支付类型 0第三方 1官费(用来做判断发起区别)
  57. }
  58. values.companyName = values.companyName.split('-')[0];
  59. $.ajax({
  60. method: 'POST',
  61. dataType: 'json',
  62. crossDomain: false,
  63. url: globalConfig.context + '/api/admin/company/addOrderPayment',
  64. data: values,
  65. }).done(
  66. function (data) {
  67. this.setState({
  68. loading: false,
  69. })
  70. if (!data.error.length) {
  71. this.props.changeVisible();
  72. this.props.onRefresh();
  73. message.success('申请成功!')
  74. } else {
  75. message.warning(data.error[0].message)
  76. }
  77. }.bind(this)
  78. )
  79. })
  80. }
  81. render() {
  82. const { getFieldDecorator } = this.props.form;
  83. const { previewPayInfor } = this.props;
  84. if(!previewPayInfor){
  85. return;
  86. }
  87. return(
  88. <Modal
  89. maskClosable={false}
  90. footer={null}
  91. visible={this.props.visible}
  92. onCancel={() => {
  93. this.props.changeVisible();
  94. }}
  95. >
  96. <Spin spinning={this.state.loading}>
  97. <div>
  98. <div>
  99. {
  100. this.props.type === 2 ? "支付供应商官费" : "支付供应商费用"
  101. }
  102. </div>
  103. <Form
  104. {...layout}
  105. name="basic"
  106. initialValues={{
  107. remember: true,
  108. }}
  109. onSubmit={(e)=>{
  110. this.handleSubmit(e)
  111. }}
  112. >
  113. <Form.Item
  114. {...formItemLayout}
  115. style={{
  116. display:'flex'
  117. }}
  118. label="付款单位/个人:"
  119. >
  120. {getFieldDecorator('companyName', {
  121. initialValue: previewPayInfor.companyName,
  122. rules: [{
  123. required: false,
  124. message: '请输入付款单位/个人!',
  125. }],
  126. })(
  127. <Input
  128. style={{ width: '200px' }}
  129. placeholder="请输入付款单位/个人"
  130. />
  131. )}
  132. </Form.Item>
  133. {/*<Form.Item*/}
  134. {/* {...formItemLayout}*/}
  135. {/* style={{*/}
  136. {/* display:'flex'*/}
  137. {/* }}*/}
  138. {/* label="单价(万元):"*/}
  139. {/*>*/}
  140. {/* {getFieldDecorator('unitPrice', {*/}
  141. {/* rules: [{ required: true, message: '请输入单价!' }],*/}
  142. {/* })(*/}
  143. {/* <Input style={{ width: '200px' }} placeholder="请输入单价" type={'number'}/>*/}
  144. {/* )}*/}
  145. {/*</Form.Item>*/}
  146. {/*//TODO 官费暂未确定*/}
  147. {
  148. this.props.type === 2 ?
  149. <Form.Item
  150. {...formItemLayout}
  151. style={{
  152. display:'flex'
  153. }}
  154. label="官费(万元):"
  155. >
  156. <div>***</div>
  157. </Form.Item> : <div/>
  158. }
  159. <Form.Item
  160. {...formItemLayout}
  161. style={{
  162. display:'flex'
  163. }}
  164. label="数量(个):"
  165. >
  166. {getFieldDecorator('quantity', {
  167. initialValue: parseInt(previewPayInfor.quantity),
  168. rules: [{ required: false, message: '请输入數量!' }],
  169. })(
  170. <Input disabled={previewPayInfor.quantity <= 1} style={{ width: '200px' }} placeholder="请输入數量" type={'number'}/>
  171. )}
  172. </Form.Item>
  173. <Form.Item
  174. {...formItemLayout}
  175. style={{
  176. display:'flex'
  177. }}
  178. label="总价(万元):"
  179. >
  180. <div>{previewPayInfor.totalAmount}</div>
  181. {/*{getFieldDecorator('totalPrice', {*/}
  182. {/* rules: [{ required: false, message: '请输入总价!' }],*/}
  183. {/*})(*/}
  184. {/* <Input disabled={true} style={{ width: '200px' }} placeholder="请输入总价" type={'number'}/>*/}
  185. {/*)}*/}
  186. </Form.Item>
  187. {/*<Form.Item*/}
  188. {/* {...formItemLayout}*/}
  189. {/* style={{*/}
  190. {/* display:'flex'*/}
  191. {/* }}*/}
  192. {/* label="已付(万元):"*/}
  193. {/*>*/}
  194. {/* {getFieldDecorator('totalPrice', {*/}
  195. {/* initialValue: previewPayInfor.partyAmount ? parseFloat(previewPayInfor.partyAmount) : 0,*/}
  196. {/* rules: [{ required: false, message: '请输入已付金额!' }],*/}
  197. {/* })(*/}
  198. {/* <Input disabled={true} style={{ width: '200px' }} placeholder="请输入已付金额" type={'number'}/>*/}
  199. {/* )}*/}
  200. {/*</Form.Item>*/}
  201. <Form.Item
  202. {...formItemLayout}
  203. style={{
  204. display:'flex'
  205. }}
  206. label="本次申请支付金额(万元):"
  207. >
  208. {getFieldDecorator('applicationAmount', {
  209. initialValue:
  210. previewPayInfor.partyAmount ?
  211. parseFloat(previewPayInfor.totalAmount) - parseFloat(previewPayInfor.partyAmount) :
  212. parseFloat(previewPayInfor.totalAmount),
  213. rules: [{ required: true, message: '请输入本次申请支付金额!' }],
  214. })(
  215. <Input style={{ width: '200px' }} placeholder="请输入本次申请支付金额" type={'number'}/>
  216. )}
  217. </Form.Item>
  218. <Form.Item
  219. {...formItemLayout}
  220. style={{
  221. display:'flex'
  222. }}
  223. label="备注:"
  224. >
  225. {getFieldDecorator('remarks', {
  226. rules: [{ required: true, message: '请输入备注!' }],
  227. })(
  228. <Input style={{ width: '200px' }} placeholder="请输入备注" type={'textarea'}/>
  229. )}
  230. </Form.Item>
  231. {/* 0正常 1专利 2软著 3审计 */}
  232. {
  233. this.props.projectType === 3 && this.props.patentType === 3 ?
  234. <Form.Item
  235. {...formItemLayout}
  236. style={{
  237. display:'flex'
  238. }}
  239. label="支付状态:"
  240. >
  241. {getFieldDecorator('paymentStatus', {
  242. rules: [{ required: true, message: '请选择支付状态!' }],
  243. })(
  244. <Radio.Group>
  245. <Radio value={0}>半款</Radio>
  246. <Radio value={1}>全款</Radio>
  247. </Radio.Group>
  248. )}
  249. </Form.Item> : <div/>
  250. }
  251. <Form.Item>
  252. <Button type="primary" htmlType="submit">
  253. 确定申请支付
  254. </Button>
  255. </Form.Item>
  256. </Form>
  257. </div>
  258. </Spin>
  259. </Modal>
  260. )
  261. }
  262. }
  263. const WrappedNormalLoginForm = Form.create()(ApplyPaymentModal);
  264. export default WrappedNormalLoginForm