examine.jsx 9.8 KB

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