billing.jsx 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. import React from 'react';
  2. import ReactDom from 'react-dom';
  3. import ajax from 'jquery/src/ajax/xhr.js';
  4. import $ from 'jquery/src/ajax';
  5. import { Form,Radio, Icon, Button, Input, Select, Spin, Table, Switch, message, DatePicker, Checkbox ,Modal, Upload ,Popconfirm} from 'antd';
  6. import NewService from "./addService.jsx";
  7. import moment from 'moment';
  8. import '../userMangagement.less';
  9. import {intentProgress,transactionProgress,contractProgress,projectProgress,orderType, orderStage, orderState,paymentState,specially,specialBatchState, projectState,orderChannel, approvedState, lock,paymentMethod,transactionChannel} from '../../../dataDic.js';
  10. import {getIntentProgress,getTransactionProgress,getProjectState,getContractProgress,getProjectProgress,splitUrl,getOrderType,getOrderStage,getOrderState,getOrderChannel,getApprovedState,getLock,getPaymentMethod,getTransactionChannel,getProcessStatus,getLiquidationStatus} from '../../../tools.js';
  11. const MyService=Form.create()(React.createClass({
  12. loadData(pageNo) {
  13. this.state.data = [];
  14. this.setState({
  15. loading: true
  16. });
  17. $.ajax({
  18. method: "get",
  19. dataType: "json",
  20. crossDomain: false,
  21. url: globalConfig.context + '/open/api/admin/newOrder/orderNewList',
  22. data: {
  23. pageNo: pageNo || 1,
  24. pageSize: this.state.pagination.pageSize,
  25. name:this.state.customerName,
  26. orderNo:this.state.orderNo,
  27. starTime: this.state.releaseDate[0],
  28. endTime: this.state.releaseDate[1],
  29. },
  30. success: function (data) {
  31. let theArr = [];
  32. if (!data.data) {
  33. if (data.error && data.error.length) {
  34. message.warning(data.error[0].message);
  35. };
  36. } else {
  37. for (let i = 0; i < data.data.list.length; i++) {
  38. let thisdata = data.data.list[i];
  39. theArr.push({
  40. key: i,
  41. id: thisdata.id,
  42. orderNo: thisdata.orderNo,//订单编号
  43. totalAmount:thisdata.totalAmount,//签单金额
  44. processStatus:thisdata.processStatus,//流程状态
  45. liquidationStatus:thisdata.liquidationStatus,//结算状态
  46. approval:thisdata.approval,//特批状态
  47. signDate:thisdata.signDate,//签单时间
  48. userName:thisdata.userName,//客户名称
  49. salesmanName:thisdata.salesmanName,//营销员名称
  50. financeName:thisdata.financeName,//财务名称
  51. createDate:thisdata.createDate,//下单时间
  52. });
  53. };
  54. this.state.pagination.current = data.data.pageNo;
  55. this.state.pagination.total = data.data.totalCount;
  56. };
  57. if(!data.data.list.length){
  58. this.state.pagination.current=0
  59. this.state.pagination.total=0
  60. }
  61. this.setState({
  62. pageNo:pageNo,
  63. dataSource: theArr,
  64. pagination: this.state.pagination,
  65. selectedRowKeys:[],
  66. });
  67. }.bind(this),
  68. }).always(function () {
  69. this.setState({
  70. loading: false
  71. });
  72. }.bind(this));
  73. },
  74. getInitialState() {
  75. return {
  76. datauser:{},
  77. selectedRowKeys: [],
  78. releaseDate: [],
  79. signBillState:false,
  80. signBillVisible:false,
  81. selectedRows: [],
  82. searchMore: true,
  83. loading: false,
  84. intentOrder:true,
  85. formalOrder:true,
  86. pagination: {
  87. defaultCurrent: 1,
  88. defaultPageSize: 10,
  89. showQuickJumper: true,
  90. pageSize: 10,
  91. onChange: function (page) {
  92. this.loadData(page);
  93. }.bind(this),
  94. showTotal: function (total) {
  95. return '共' + total + '条数据';
  96. }
  97. },
  98. columns: [
  99. {
  100. title: '订单编号',
  101. dataIndex: 'orderNo',
  102. key: 'orderNo'
  103. }, {
  104. title: '下单时间',
  105. dataIndex: 'createDate',
  106. key: 'createTime'
  107. },{
  108. title: '合同签订时间',
  109. dataIndex: 'signDate',
  110. key: 'signDate'
  111. },{
  112. title: '客户名称',
  113. dataIndex: 'userName',
  114. key: 'userName',
  115. render:(text)=>{
  116. return (text&&text.length>9?text.substr(0,9)+'...':text)
  117. }
  118. }, {
  119. title: '流程状态',
  120. dataIndex: 'processStatus',
  121. key: 'processStatus',
  122. render:text=>{return getProcessStatus(text)}
  123. }, {
  124. title: '签单金额(万元)',
  125. dataIndex: 'totalAmount',
  126. key: 'totalAmount'
  127. },{
  128. title: '结算状态',
  129. dataIndex: 'liquidationStatus',
  130. key: 'liquidationStatus',
  131. render:text=>{return getLiquidationStatus(text)}
  132. }, {
  133. title: '是否特批',
  134. dataIndex: 'approval',
  135. key: 'approval',
  136. render:text=>{return getApprovedState(text)}
  137. },{
  138. title: '订单负责人',
  139. dataIndex: 'salesmanName',
  140. key: 'salesmanName'
  141. },{
  142. title: '财务负责人',
  143. dataIndex: 'financeName',
  144. key: 'financeName'
  145. }
  146. ],
  147. dataSource: [],
  148. };
  149. },
  150. //是否退款
  151. refundCancel(record){
  152. this.refund(record,0)
  153. },
  154. refundOk(record){
  155. this.refund(record,1)
  156. },
  157. refund(record,index){
  158. this.setState({
  159. signBillVisible:false,
  160. selectedRowKeys: [],
  161. loading: true,
  162. userDetaile:false
  163. });
  164. $.ajax({
  165. method: "get",
  166. dataType: "json",
  167. crossDomain: false,
  168. url: globalConfig.context + '/api/admin/order/confirmRefund',
  169. data: {
  170. orderNo:record.orderNo,
  171. confirm:index
  172. }
  173. }).done(function (data) {
  174. if (!data.error.length) {
  175. message.success('操作成功!');
  176. this.setState({
  177. loading: false,
  178. showDesc:false
  179. });
  180. }
  181. this.loadData(this.state.pageNo);
  182. }.bind(this));
  183. },
  184. //受理订单
  185. admissibleOrderOk(e){
  186. this.admissibleOrder(e,true)
  187. },
  188. admissibleOrderCancel(e){
  189. this.admissibleOrder(e,false)
  190. },
  191. admissibleOrder(record,index) {
  192. this.setState({
  193. signBillVisible:false,
  194. selectedRowKeys: [],
  195. loading: true,
  196. userDetaile:false
  197. });
  198. $.ajax({
  199. method: "POST",
  200. dataType: "json",
  201. crossDomain: false,
  202. url: globalConfig.context + '/api/admin/order/confirmIntention',
  203. data: {
  204. orderNo:record.orderNo,
  205. confirm:index
  206. }
  207. }).done(function (data) {
  208. if (!data.error.length) {
  209. message.success('操作成功!');
  210. this.setState({
  211. loading: false,
  212. showDesc:false
  213. });
  214. } else {
  215. message.warning(data.error[0].message);
  216. this.setState({
  217. showDesc:true
  218. })
  219. };
  220. this.loadData(this.state.pageNo);
  221. }.bind(this));
  222. },
  223. //取消订单
  224. cancelOrder(e){
  225. this.operation(e,3)
  226. },
  227. //作废订单
  228. scrapOrder(e){
  229. this.operation(e,2)
  230. },
  231. //锁定订单
  232. lockOrder(e){
  233. this.operation(e,0)
  234. },
  235. //解锁订单
  236. unlockOrder(e){
  237. this.operation(e,1)
  238. },
  239. //签单
  240. signBill(ids){
  241. this.setState({
  242. uid:ids,
  243. signBillVisible:true
  244. })
  245. },
  246. componentWillMount() {
  247. this.loadData();
  248. let data=localStorage.getItem('newData');
  249. if(data!='{}'&&data){
  250. var newData = JSON.parse(data);
  251. this.tableRowClick(newData);
  252. };
  253. },
  254. tableRowClick(record, index) {
  255. this.state.userDetaile=true;
  256. this.state.datauser = record;
  257. this.setState({
  258. signBillVisible:false,
  259. signBillState:true,
  260. showDesc: true
  261. });
  262. localStorage.setItem('newData','{}');
  263. },
  264. //列表各种骚操作
  265. operation(record,index) {
  266. this.setState({
  267. selectedRowKeys: [],
  268. loading: true,
  269. showDesc:false
  270. });
  271. $.ajax({
  272. method: "get",
  273. dataType: "json",
  274. crossDomain: false,
  275. url: globalConfig.context + '/api/admin/order/lockOrRevokeOrder',
  276. data: {
  277. orderNo:record.orderNo,
  278. operatorType:index
  279. }
  280. }).done(function (data) {
  281. if (!data.error.length) {
  282. message.success('操作成功!');
  283. this.setState({
  284. loading: false,
  285. });
  286. } else {
  287. message.warning(data.error[0].message);
  288. };
  289. this.loadData(this.state.pageNo);
  290. }.bind(this));
  291. },
  292. addClick() {
  293. this.state.userDetaile=false;
  294. this.setState({
  295. signBillVisible:false,
  296. showDesc: true
  297. });
  298. },
  299. closeDesc(e, s) {
  300. this.state.userDetaile=false;
  301. this.state.signBillVisible=false;
  302. this.state.showDesc = e;
  303. if (s) {
  304. this.loadData(this.state.pageNo);
  305. };
  306. },
  307. searchSwitch() {
  308. this.setState({
  309. signBillVisible:false,
  310. searchMore: !this.state.searchMore
  311. });
  312. },
  313. search() {
  314. this.setState({
  315. signBillVisible:false
  316. })
  317. this.loadData();
  318. },
  319. reset() {
  320. this.setState({
  321. signBillVisible:false
  322. })
  323. this.state.orderNo='';
  324. this.state.customerName='';
  325. this.state.releaseDate[0] = undefined;
  326. this.state.releaseDate[1] = undefined;
  327. this.state.projectProgress = undefined;
  328. this.state.settlementState = undefined;
  329. this.state.orderStatusSearch = undefined;
  330. this.state.orderChannelSearch = undefined;
  331. this.state.approval= undefined;
  332. this.state.formalOrder=true;
  333. this.state.intentOrder=true;
  334. this.loadData();
  335. },
  336. render() {
  337. const FormItem = Form.Item;
  338. const formItemLayout = {
  339. labelCol: { span: 8 },
  340. wrapperCol: { span: 14 },
  341. };
  342. const rowSelection = {
  343. selectedRowKeys: this.state.selectedRowKeys,
  344. onChange: (selectedRowKeys, selectedRows) => {
  345. this.setState({
  346. selectedRows: selectedRows.slice(-1),
  347. selectedRowKeys: selectedRowKeys.slice(-1)
  348. });
  349. },
  350. onSelectAll: (selected, selectedRows, changeRows) => {
  351. this.setState({
  352. selectedRowKeys:[]
  353. })
  354. },
  355. };
  356. const hasSelected = this.state.selectedRowKeys.length > 0;
  357. const { RangePicker } = DatePicker;
  358. return (
  359. <div className="user-content" >
  360. <div className="content-title">
  361. <span style={{fontSize:'16px'}}>开单与签单</span>
  362. <div className="user-search">
  363. <Input placeholder="客户名称" style={{width:'150px'}}
  364. value={this.state.customerName}
  365. onChange={(e) => { this.setState({ customerName: e.target.value }); }} />
  366. <Input placeholder="订单编号" style={{width:'150px'}}
  367. value={this.state.orderNo}
  368. onChange={(e) => { this.setState({ orderNo: e.target.value }); }} />
  369. <span style={{marginRight:"10px"}}>合同签订时间 :</span>
  370. <RangePicker
  371. value={[this.state.releaseDate[0] ? moment(this.state.releaseDate[0]) : null,
  372. this.state.releaseDate[1] ? moment(this.state.releaseDate[1]) : null]}
  373. onChange={(data, dataString) => { this.setState({ releaseDate: dataString }); }} />
  374. <Button type="primary" onClick={this.search} style={{marginLeft:'10px'}}>搜索<Icon type="search" /></Button>
  375. <Button onClick={this.reset}>重置 <Icon type="reload" /></Button>
  376. <Button type="primary" className="addButton" onClick={this.addClick} >开单<Icon type="plus" /></Button>
  377. </div>
  378. <div className="patent-table">
  379. <Spin spinning={this.state.loading}>
  380. <Table columns={this.state.columns}
  381. dataSource={this.state.dataSource}
  382. rowSelection={rowSelection}
  383. pagination={this.state.pagination}
  384. onRowClick={this.tableRowClick} />
  385. </Spin>
  386. </div>
  387. <NewService
  388. uid={this.state.uid}
  389. signBillVisible={this.state.signBillVisible}
  390. signBillState={this.state.signBillState}
  391. operation={this.operation}
  392. admissibleOrder={this.admissibleOrder}
  393. userDetaile={this.state.userDetaile}
  394. datauser={this.state.datauser}
  395. showDesc={this.state.showDesc}
  396. closeDesc={this.closeDesc} />
  397. </div >
  398. </div>
  399. );
  400. }
  401. }));
  402. export default MyService;