applyPaymentModal.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. import React,{Component} from 'react';
  2. import {Button, Form, Input, message, Modal, Radio, Spin, InputNumber} from "antd";
  3. import $ from "jquery";
  4. const layout = {
  5. labelCol: {
  6. span: 8,
  7. },
  8. wrapperCol: {
  9. span: 16,
  10. },
  11. };
  12. const formItemLayout = {
  13. labelCol: { span: 8 },
  14. wrapperCol: { span: 14 },
  15. };
  16. class ApplyPaymentModal extends Component{
  17. constructor(props) {
  18. super(props);
  19. this.state={
  20. loading: false,
  21. paymentStatus: 0,
  22. }
  23. }
  24. //申请付款
  25. handleSubmit(e){
  26. e.preventDefault();
  27. this.props.form.validateFieldsAndScroll((err, values) => {
  28. if (err) {
  29. return;
  30. }
  31. this.setState({
  32. loading: true
  33. })
  34. values.tid = this.props.tid;
  35. if(this.props.type === 2){
  36. values.chooseType = 2; //支付类型 0第三方 1催款 2官费
  37. }else{
  38. if(this.props.previewPayInfor.nodeId){ //催款
  39. values.nodeId = this.props.previewPayInfor.nodeId;
  40. values.chooseType = 1; //支付选择 0第三方 1催款 2官费
  41. values.tpcId = this.props.previewPayInfor.cid; //第三方机构id
  42. }else{
  43. values.chooseType = 0 //支付选择 0第三方 1催款 2官费
  44. values.tpcId = this.props.previewPayInfor.id; //第三方机构id
  45. }
  46. }
  47. values.companyName = values.companyName.split('-')[0];
  48. $.ajax({
  49. method: 'POST',
  50. dataType: 'json',
  51. crossDomain: false,
  52. url: globalConfig.context + '/api/admin/company/addOrderPayment',
  53. data: values,
  54. }).done(
  55. function (data) {
  56. this.setState({
  57. loading: false,
  58. })
  59. if (!data.error.length) {
  60. this.props.changeVisible();
  61. this.props.onRefresh();
  62. message.success('申请成功!')
  63. } else {
  64. message.warning(data.error[0].message)
  65. }
  66. }.bind(this)
  67. )
  68. })
  69. }
  70. render() {
  71. const { getFieldDecorator,setFieldsValue } = this.props.form;
  72. const { previewPayInfor } = this.props;
  73. if(this.props.type !== 2 && !previewPayInfor){return;}
  74. return(
  75. <Modal
  76. maskClosable={false}
  77. footer={null}
  78. visible={this.props.visible}
  79. onCancel={() => {
  80. this.props.changeVisible();
  81. }}
  82. >
  83. <Spin spinning={this.state.loading}>
  84. <div>
  85. <div>
  86. {
  87. this.props.type === 2 ? "支付供应商官费" : "支付供应商费用"
  88. }
  89. </div>
  90. <Form
  91. {...layout}
  92. name="basic"
  93. initialValues={{
  94. remember: true,
  95. }}
  96. onSubmit={(e)=>{
  97. this.handleSubmit(e)
  98. }}
  99. >
  100. <Form.Item
  101. {...formItemLayout}
  102. style={{
  103. display:'flex'
  104. }}
  105. label="付款单位/个人:"
  106. >
  107. {getFieldDecorator('companyName', {
  108. initialValue: this.props.type === 2 ? '国家知识产权局' : previewPayInfor.companyName,
  109. rules: [{
  110. required: true,
  111. message: '请输入付款单位/个人!',
  112. }],
  113. })(
  114. <Input
  115. style={{ width: '200px' }}
  116. placeholder="请输入付款单位/个人"
  117. />
  118. )}
  119. </Form.Item>
  120. {/* 0正常 1专利 2软著 3审计 */}
  121. {/*{this.props.projectType === 1 && this.props.patentType === 1 ?<Form.Item*/}
  122. {/* {...formItemLayout}*/}
  123. {/* style={{*/}
  124. {/* display:'flex'*/}
  125. {/* }}*/}
  126. {/* label="支付状态:"*/}
  127. {/* >*/}
  128. {/* {getFieldDecorator('paymentStatus', {*/}
  129. {/* constructor: this.state.paymentStatus,*/}
  130. {/* rules: [{ required: false, message: '请选择支付状态!' }],*/}
  131. {/* })(*/}
  132. {/* <Radio.Group onChange={(e)=>{*/}
  133. {/* this.setState({*/}
  134. {/* paymentStatus: e.target.value*/}
  135. {/* })*/}
  136. {/* if(e.target.value === 1){*/}
  137. {/* setFieldsValue({*/}
  138. {/* quantity:parseInt(previewPayInfor.quantity),*/}
  139. {/* applicationAmount:(previewPayInfor.partyAmount ?*/}
  140. {/* ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :*/}
  141. {/* parseFloat(previewPayInfor.totalAmount))/2*/}
  142. {/* });*/}
  143. {/* } else if(e.target.value === 2){*/}
  144. {/* setFieldsValue({*/}
  145. {/* quantity:parseInt(previewPayInfor.quantity),*/}
  146. {/* applicationAmount:(previewPayInfor.partyAmount ?*/}
  147. {/* ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :*/}
  148. {/* parseFloat(previewPayInfor.totalAmount))*/}
  149. {/* });*/}
  150. {/* }*/}
  151. {/* }}>*/}
  152. {/* <Radio value={0}>自定义</Radio>*/}
  153. {/* <Radio value={1}>半款</Radio>*/}
  154. {/* <Radio value={2}>全款</Radio>*/}
  155. {/* </Radio.Group>*/}
  156. {/* )}*/}
  157. {/* </Form.Item> : <div/>}*/}
  158. {this.props.type !== 2 ? <Form.Item
  159. {...formItemLayout}
  160. style={{
  161. display:'flex'
  162. }}
  163. label="单价(万元):"
  164. >
  165. {/*可以查看单价 正常 审计 专利买卖
  166. 软著 专利申请 打星号 */}
  167. {
  168. isNaN(parseFloat(previewPayInfor.unitPrice)) ? previewPayInfor.unitPrice :
  169. getFieldDecorator('unitPrice', {
  170. initialValue:previewPayInfor.unitPrice,
  171. rules: [{ required: true, message: '请输入单价!' }],
  172. })(
  173. <Input disabled={true} style={{ width: '200px' }} placeholder="请输入单价" type={'number'}/>
  174. )
  175. }
  176. </Form.Item> : <div/>}
  177. {/*{*/}
  178. {/* this.props.type === 2 ?*/}
  179. {/* <Form.Item*/}
  180. {/* {...formItemLayout}*/}
  181. {/* style={{*/}
  182. {/* display:'flex'*/}
  183. {/* }}*/}
  184. {/* label="官费(万元):"*/}
  185. {/* >*/}
  186. {/* /!*costReduction 费减 0否 1 是*!/*/}
  187. {/* /!*reductionAmount 费减金额*!/*/}
  188. {/* /!*officialUnitPrice 官费单价*!/*/}
  189. {/* <div>*/}
  190. {/* {*/}
  191. {/* previewPayInfor.costReduction === 1 ?*/}
  192. {/* (isNaN(parseFloat(previewPayInfor.reductionAmount)) ? previewPayInfor.reductionAmount : parseFloat(previewPayInfor.reductionAmount)):*/}
  193. {/* (isNaN(parseFloat(previewPayInfor.officialUnitPrice)) ? previewPayInfor.officialUnitPrice : parseFloat(previewPayInfor.officialUnitPrice))*/}
  194. {/* }*/}
  195. {/* </div>*/}
  196. {/* </Form.Item> : <div/>*/}
  197. {/*}*/}
  198. <Form.Item
  199. {...formItemLayout}
  200. style={{
  201. display:'flex'
  202. }}
  203. label="数量(个):"
  204. >
  205. {this.props.type === 2 ? this.props.commodityQuantity : previewPayInfor.quantity}
  206. </Form.Item>
  207. {this.props.type !== 2 ? <Form.Item
  208. {...formItemLayout}
  209. style={{
  210. display:'flex'
  211. }}
  212. label="总价(万元):"
  213. >
  214. <div>
  215. {
  216. previewPayInfor.totalAmount
  217. }
  218. </div>
  219. </Form.Item> : null}
  220. <Form.Item
  221. {...formItemLayout}
  222. style={{
  223. display:'flex'
  224. }}
  225. label="本次申请支付数量:"
  226. >
  227. {getFieldDecorator('quantity', {
  228. initialValue: previewPayInfor.quantity,
  229. rules: [{ required: false, message: '请输入本次申请支付数量!' }],
  230. })(
  231. <InputNumber
  232. // disabled={previewPayInfor.quantity <= 1 || this.state.paymentStatus !== 0}
  233. disabled={this.props.type !== 2}
  234. style={{ width: '200px' }}
  235. precision={0}
  236. placeholder="请输入本次申请支付数量"
  237. min={1}
  238. onChange={(e)=>{
  239. //0正常 1专利 2软著 3审计
  240. //软著 专利申请不需要计算,因为单价未知
  241. // if(!(this.props.projectType === 2 || (this.props.projectType === 1 && this.props.patentType === 0))){
  242. // //官费
  243. // if(this.props.type === 2){
  244. // this.props.form.setFieldsValue({
  245. // applicationAmount: (previewPayInfor.costReduction === 1 ?
  246. // previewPayInfor.reductionAmount :
  247. // previewPayInfor.officialUnitPrice) * 1000000 * e / 1000000,
  248. // });
  249. // }else {
  250. // let num = previewPayInfor.unitPrice * 1000000 * e / 1000000;
  251. // this.props.form.setFieldsValue({
  252. // applicationAmount: num,
  253. // });
  254. // }
  255. // }
  256. }}
  257. />
  258. )}
  259. </Form.Item>
  260. {/* 0正常 1专利 2软著 3审计 */}
  261. {this.props.type !== 2 ? <Form.Item
  262. {...formItemLayout}
  263. style={{
  264. display:'flex'
  265. }}
  266. label="本次申请支付金额(万元):"
  267. >
  268. {getFieldDecorator('applicationAmount', {
  269. initialValue:this.props.type === 2 ?(
  270. ((previewPayInfor.costReduction === 1 ? previewPayInfor.reductionAmount : previewPayInfor.officialUnitPrice) * 1000000 * parseInt(previewPayInfor.quantity)) / 1000000
  271. ): (
  272. !isNaN(parseFloat(previewPayInfor.totalAmount)) && !isNaN(parseFloat(previewPayInfor.partyAmount))?
  273. (
  274. this.state.paymentStatus === 1 ?
  275. (previewPayInfor.partyAmount ?
  276. ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :
  277. parseFloat(previewPayInfor.totalAmount)) / 2 :
  278. previewPayInfor.partyAmount ?
  279. ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :
  280. parseFloat(previewPayInfor.totalAmount)
  281. ) : null
  282. ),
  283. rules: [{ required: true, message: '请输入本次申请支付金额!' }],
  284. })(
  285. <InputNumber
  286. min={0}
  287. disabled={this.state.paymentStatus !== 0}
  288. style={{ width: '200px' }}
  289. placeholder="请输入本次申请支付金额"/>
  290. )}
  291. </Form.Item> : null}
  292. <Form.Item
  293. {...formItemLayout}
  294. style={{
  295. display:'flex'
  296. }}
  297. label="备注:"
  298. >
  299. {getFieldDecorator('remarks', {
  300. rules: [{ required: true, message: '请输入备注!' }],
  301. })(
  302. <Input style={{ width: '200px' }} placeholder="请输入备注" type={'textarea'}/>
  303. )}
  304. </Form.Item>
  305. <Form.Item>
  306. <div style={{
  307. display: 'flex',
  308. justifyContent: 'center',
  309. }}>
  310. <Button type="primary" htmlType="submit" style={{width:'60%',height:'40px'}}>
  311. {this.props.type === 2 ? "确定申请付官费" : "确定申请支付"}
  312. </Button>
  313. </div>
  314. </Form.Item>
  315. </Form>
  316. </div>
  317. </Spin>
  318. </Modal>
  319. )
  320. }
  321. }
  322. const WrappedNormalLoginForm = Form.create()(ApplyPaymentModal);
  323. export default WrappedNormalLoginForm