examine.jsx 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. import React from 'react';
  2. import ajax from 'jquery/src/ajax/xhr.js';
  3. import $ from 'jquery/src/ajax';
  4. import { Form,Button, Input, Spin, message, Modal, Upload } from 'antd';
  5. import {getNewOrderStatus,getLiquidationStatus,splitUrl} from '@/tools.js';
  6. const Examine=React.createClass({
  7. loadData(record) {
  8. this.state.data = [];
  9. this.setState({
  10. loading: true
  11. });
  12. $.ajax({
  13. method: "get",
  14. dataType: "json",
  15. crossDomain: false,
  16. url: globalConfig.context + '/api/admin/newOrder/orderRefundDetail',
  17. data: {
  18. id:record?record.id:this.props.data.id
  19. },
  20. success: function (data) {
  21. let theArr = [];
  22. if (!data.data) {
  23. if (data.error && data.error.length) {
  24. message.warning(data.error[0].message);
  25. };
  26. } else {
  27. let thisdata=data.data;
  28. this.setState({
  29. id:thisdata.id,
  30. data:thisdata,
  31. orderNo:thisdata.orderNo,
  32. orgCodeUrl: thisdata.contractUrl ? splitUrl(thisdata.contractUrl, ',', globalConfig.avatarHost + '/upload') : [],
  33. orgCodeUrlNo: thisdata.applicationUrl ? splitUrl(thisdata.applicationUrl, ',', globalConfig.avatarHost + '/upload') : [],
  34. });
  35. }
  36. }.bind(this),
  37. }).always(function () {
  38. this.setState({
  39. loading: false
  40. });
  41. }.bind(this));
  42. },
  43. getInitialState() {
  44. return {
  45. loading: false,
  46. visible:false,
  47. showDesc:false,
  48. };
  49. },
  50. //保存
  51. handleSubmit(e,index){
  52. e.preventDefault();
  53. if(index=='2'&&!this.state.remarks){
  54. message.warning('请填写拒绝退单的原因');
  55. return false;
  56. }
  57. this.setState({
  58. loading: true
  59. });
  60. $.ajax({
  61. method: "post",
  62. dataType: "json",
  63. async:true,
  64. url: globalConfig.context + '/api/admin/financial/changeRefund',
  65. data: index=='2'?{
  66. id: this.props.data.id,
  67. refundStatus:index,
  68. remarks:this.state.remarks
  69. }:{
  70. id: this.props.data.id,
  71. refundStatus:index,
  72. }
  73. }).done(function (data) {
  74. this.setState({
  75. loading: false
  76. });
  77. if (!data.error.length) {
  78. message.success('操作成功!');
  79. this.onShow(index);
  80. } else {
  81. message.warning(data.error[0].message);
  82. }
  83. }.bind(this));
  84. },
  85. onCancel(){
  86. this.setState({
  87. visible:false
  88. })
  89. this.props.closeDesc(false,false);
  90. },
  91. onShow(index) {
  92. this.setState({
  93. visible: false,
  94. });
  95. this.props.closeDesc(false, true,index);
  96. },
  97. componentWillMount() {
  98. this.setState({
  99. remarks:''
  100. })
  101. },
  102. componentWillReceiveProps(nextProps) {
  103. if(nextProps.data.orderNo){
  104. this.loadData(nextProps.data);
  105. }
  106. this.state.visible=nextProps.showDesc;
  107. this.setState({
  108. remarks:''
  109. })
  110. },
  111. render() {
  112. const theData = this.state.data || {};
  113. const FormItem = Form.Item;
  114. const formItemLayout = {
  115. labelCol: { span: 10 },
  116. wrapperCol: { span: 12 },
  117. };
  118. return (
  119. <div className="user-content" >
  120. <Modal maskClosable={false} visible={this.state.visible}
  121. onOk={this.onShow} onCancel={this.onCancel}
  122. width='800px'
  123. title='退单审核'
  124. footer=''
  125. className="admin-desc-content">
  126. <Form layout="horizontal" onSubmit={(e)=>{this.handleSubmit(e,1)}} >
  127. <Spin spinning={this.state.loading}>
  128. <div className="clearfix">
  129. <FormItem className="half-item" {...formItemLayout} label="退单编号">
  130. <span>{theData.id}</span>
  131. </FormItem>
  132. <FormItem className="half-item" {...formItemLayout} label="退单时间">
  133. <span>{theData.createDate}</span>
  134. </FormItem>
  135. <FormItem className="half-item" {...formItemLayout} label="订单编号">
  136. <span>{theData.orderNo}</span>
  137. </FormItem>
  138. <FormItem className="half-item" {...formItemLayout} label="订单状态">
  139. <span>{getNewOrderStatus(theData.orderStatus)}</span>
  140. </FormItem>
  141. <FormItem className="half-item" {...formItemLayout} label="结算状态">
  142. <span>{getLiquidationStatus(theData.liquidationStatus)}</span>
  143. </FormItem>
  144. <div className="clearfix">
  145. <FormItem labelCol={{ span:5 }} wrapperCol={{ span: 17 }} label="终止合同">
  146. <Upload className="demandDetailShow-upload"
  147. listType="picture-card"
  148. fileList={this.state.orgCodeUrl}
  149. onPreview={(file) => {
  150. this.setState({
  151. previewImage: file.url || file.thumbUrl,
  152. previewVisible: true,
  153. });
  154. }} >
  155. </Upload>
  156. <Modal maskClosable={false} footer={null}
  157. visible={this.state.previewVisible}
  158. onCancel={() => { this.setState({ previewVisible: false }) }}>
  159. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  160. </Modal>
  161. </FormItem>
  162. </div>
  163. <div className="clearfix">
  164. <FormItem labelCol={{ span:5 }} wrapperCol={{ span: 17 }} label="退单申请表">
  165. <Upload className="demandDetailShow-upload"
  166. listType="picture-card"
  167. fileList={this.state.orgCodeUrlNo}
  168. onPreview={(file) => {
  169. this.setState({
  170. previewImage: file.url || file.thumbUrl,
  171. previewVisible: true,
  172. });
  173. }} >
  174. </Upload>
  175. <Modal maskClosable={false} footer={null}
  176. visible={this.state.previewVisible}
  177. onCancel={() => { this.setState({ previewVisible: false }) }}>
  178. <img alt="" style={{ width: '100%' }} src={this.state.previewImage || ''} />
  179. </Modal>
  180. </FormItem>
  181. </div>
  182. <FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label="退单原因">
  183. <span>{theData.reason}</span>
  184. </FormItem>
  185. <FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label="拒绝原因">
  186. <Input
  187. type="textarea"
  188. rows={4}
  189. placeholder="若拒绝,请输入拒绝退单原因"
  190. value={this.state.remarks}
  191. onChange={(e) => {
  192. this.setState({ remarks: e.target.value });
  193. }}
  194. />
  195. </FormItem>
  196. <FormItem wrapperCol={{ span: 12, offset:5 }}>
  197. <Button type="primary" htmlType="submit" style={{marginRight:20}}>同意退单</Button>
  198. <Button type="primary" onClick={(e)=>{this.handleSubmit(e,2)}} style={{marginRight:20}}>拒绝退单</Button>
  199. <Button type="default" onClick={()=>{this.onCancel()}}>取消</Button>
  200. </FormItem>
  201. </div>
  202. </Spin>
  203. </Form>
  204. </Modal>
  205. </div>
  206. );
  207. }
  208. });
  209. export default Form.create()(Examine);