Finance-orderQuery.jsx 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. import React from 'react';
  2. import { Button, Table, Select, Input, DatePicker, Space, Modal ,message } from 'antd';
  3. import 'moment/locale/zh-cn';
  4. import locale from 'antd/es/date-picker/locale/zh_CN';
  5. import { $Axios, format } from '../../common/publish';
  6. import '../Finance-orderQuery/Finance-orderQuery.scss'
  7. import select_data from '../../common/ssq';
  8. const { Column, ColumnGroup } = Table;
  9. export default class FinanceoRderQuery extends React.Component {
  10. constructor(props) {
  11. super(props)
  12. this.state = {
  13. headTxt: '财务管理 > 订单查询',
  14. select_data: select_data,
  15. data: [],
  16. columns: [
  17. {
  18. title: '序号',
  19. dataIndex: 'num',
  20. key: 'num',
  21. },
  22. {
  23. title: '订单号',
  24. dataIndex: 'orderNo',
  25. key: 'orderNo',
  26. },
  27. {
  28. title: '订单金额',
  29. dataIndex: 'totalAmount',
  30. key: 'totalAmount',
  31. },
  32. {
  33. title: '订单状态',
  34. dataIndex: 'orderStatus',
  35. key: 'orderStatus',
  36. },
  37. {
  38. title: '支付金额',
  39. dataIndex: 'cash',
  40. key: 'cash',
  41. },
  42. {
  43. title: '本金金额',
  44. dataIndex: 'stbPrice',
  45. key: 'stbPrice',
  46. },
  47. {
  48. title: '积分币金额',
  49. dataIndex: 'benbiPrice',
  50. key: 'benbiPrice',
  51. },
  52. {
  53. title: '已退款金额',
  54. dataIndex: 'refundAmount',
  55. key: 'refundAmount',
  56. },
  57. {
  58. title: '下单时间',
  59. dataIndex: 'createTime',
  60. key: 'createTime',
  61. },
  62. {
  63. title: '完成时间',
  64. dataIndex: 'finishTime',
  65. key: 'finishTime',
  66. },
  67. {
  68. title: '支付方式',
  69. dataIndex: 'payType',
  70. key: 'payType',
  71. },
  72. {
  73. title: '操作',
  74. dataIndex: 'cz',
  75. key: 'cz',
  76. render: (text, record, index) => <a onClick={() => this.xqClick(text, record, index)}>查看订单金额流向</a>,
  77. },
  78. ],
  79. params: {
  80. action: "payOrderList",//查询订单列表
  81. appName: JSON.parse(localStorage.getItem('userData')).appName,//当前商户的appName,
  82. pSize: 10, //每页条数
  83. pNo: 1, //第几页,起始值从1开始
  84. orderStatus: '', //订单状态:1:未付款2:已付待入账3:已付已入账4:支付失败
  85. orderNo: '', //商城订单号
  86. userName: '', //发起人
  87. payType: '', //支付方式:1支付宝2微信5微包//0初始1处理中2支付成功3支付失败4退单中5退单成功6退单失败10完成(所有转账分账均完成的,不能再做任何操作)
  88. timeType: '', //为0或不提供此字段,表示不限制,1创建时间,2完成时间
  89. begTime: '',//时间戳
  90. endTime: '',//时间戳 format(item.createTime),
  91. },
  92. timeType: null,
  93. starTime: '',
  94. endTime: '',
  95. total: null,
  96. current: 1,
  97. paginationProps: {
  98. showSizeChanger: false,//设置每页显示数据条数
  99. showQuickJumper: false,
  100. showTotal: () => `共${this.state.total}条`,
  101. pageSize: 10,
  102. total: null, //数据的总的条数
  103. onChange: (current) => this.changePage(current), //点击当前页码
  104. },
  105. isModalVisible: false,
  106. columns_tk : [
  107. {
  108. title: '分账对象',
  109. dataIndex: 'ownerName',
  110. key: 'ownerName',
  111. },
  112. {
  113. title: '分账金额',
  114. dataIndex: 'amount',
  115. key: 'amount',
  116. },
  117. {
  118. title: '分账状态',
  119. dataIndex: 'status',
  120. key: 'status',
  121. },
  122. {
  123. title: '分账原因',
  124. dataIndex: 'remark',
  125. key: 'remark',
  126. }
  127. ],
  128. payOrderInfo : null,
  129. orderSplitInfo : null,
  130. orderNo : null,
  131. lodings : null,
  132. spinning : true,
  133. keys : 1,
  134. keye : 2,
  135. }
  136. }
  137. componentDidMount() {
  138. this.initData();
  139. }
  140. xqClick = (text, record, index) => {
  141. this.setState({
  142. isModalVisible: true
  143. });
  144. this.initData_tk(record)
  145. }
  146. initData_tk(e){
  147. let that_ = this;
  148. let url = '/payment/merchant.order.query.groovy';
  149. let params = {
  150. action : "payOrderDetail",//查询订单金额流向
  151. orderNo : e.orderNo,//商城订单号
  152. }
  153. $Axios('get', url, params, (res) => {
  154. let status = res.data.head.status;
  155. if (status == 200) {
  156. let orderSplitInfo = res.data.body.orderSplitInfo;
  157. let payOrderInfo = res.data.body.payOrderInfo;
  158. that_.setState({
  159. payOrderInfo : payOrderInfo,
  160. orderSplitInfo : orderSplitInfo,
  161. orderNo : e.orderNo
  162. })
  163. }
  164. })
  165. }
  166. handleOk(){
  167. this.setState({
  168. isModalVisible: false
  169. })
  170. }
  171. changePage(e) {
  172. this.state.params.pNo = e
  173. this.setState({
  174. current: e
  175. });
  176. this.initData();
  177. }
  178. starTime = (value,dateString)=>{
  179. if(dateString !== ''){
  180. dateString = new Date(value).formats('yyyy-MM-dd 00:00:00')
  181. let time = new Date(dateString).getTime()/1000;
  182. this.setState({
  183. starTime: time
  184. })
  185. }else{
  186. this.setState({
  187. starTime: ''
  188. })
  189. }
  190. }
  191. endTime = (value,dateString)=>{
  192. if(dateString !== ''){
  193. dateString = new Date(value).formats('yyyy-MM-dd 00:00:00')
  194. let time = new Date(dateString).getTime()/1000;
  195. this.setState({
  196. endTime: time
  197. })
  198. }else{
  199. this.setState({
  200. endTime: ''
  201. })
  202. }
  203. }
  204. handleChange_1(e) { //订单状态
  205. this.state.params.orderStatus = e
  206. }
  207. handleChange_2(e) { //支付方式
  208. this.state.params.payType = e
  209. }
  210. handleChange_3(e) { //时间类型
  211. this.state.params.timeType = e
  212. this.setState({
  213. timeType : e
  214. });
  215. if(e == 0){
  216. this.setState({
  217. starTime: '',
  218. endTime: '',
  219. keys : new Date().getTime(),
  220. keye : new Date().getTime() * 1000,
  221. });
  222. }
  223. }
  224. queryClick() {
  225. if(this.state.timeType !== 0 && this.state.timeType !== null){
  226. if(this.state.endTime <= this.state.starTime && (this.state.starTime !== '' && this.state.endTime !== '')){
  227. message.error('结束时间不可小于或者等于开始时间!');
  228. }else{
  229. if(this.state.starTime == '' && this.state.endTime == ''){
  230. this.initData()
  231. }else if(this.state.starTime !== '' && this.state.endTime !== ''){
  232. this.initData()
  233. }else{
  234. if(this.state.starTime == ''){
  235. message.error('请选择开始时间!');
  236. }else if(this.state.endTime == ''){
  237. message.error('请选择结束时间!');
  238. }
  239. }
  240. }
  241. }else{
  242. this.initData()
  243. }
  244. }
  245. TableToExcel(){
  246. message.error('暂不支持导出功能!');
  247. }
  248. initData() {
  249. this.setState({
  250. lodings : true
  251. })
  252. let orderNo = document.getElementById("orderNo").value //商城订单号
  253. let userName = document.getElementById("userName").value //发起人
  254. let that_ = this;
  255. let url = '/payment/merchant.order.query.groovy';
  256. let params = this.state.params;
  257. this.state.params.orderNo = orderNo;
  258. this.state.params.userName = userName;
  259. this.state.params.begTime = this.state.starTime
  260. this.state.params.endTime = this.state.endTime
  261. $Axios('get', url, params, (res) => {
  262. let status = res.data.head.status;
  263. if (status == 200) {
  264. let data = res.data.body.list;
  265. let arr = [];
  266. data.map((item, index) => {
  267. let obj = {
  268. num: index + 1,
  269. id: item.id, // 记录标识
  270. orderNo: item.orderNo, //商城订单号
  271. tradeNo: item.tradeNo,//交易流水号
  272. totalAmount: item.totalAmount, //订单总额
  273. cash: item.cash,//订单支付现金
  274. stbPrice: item.stbPrice,//订单支付联盟币抵扣的现金价格
  275. benbiPrice: item.benbiPrice, //订单支付本币抵扣的现金价格
  276. spareAmount: item.spareAmount, //分账金额
  277. refundAmount: item.refundAmount,//退款金额
  278. payType: that_.payTypeList(item.payType),//支付方式:1支付宝2微信5微包
  279. orderStatus: that_.orderStatus(item.orderStatus),//订单状态:1:未付款2:已付待入账3:已付已入账4:支付失败
  280. createTime: item.createTime == '' ? '--' : format(Number(item.createTime)), //:创建时间
  281. finishTime: item.finishTime == '' ? '--' : format(Number(item.finishTime)) //:完成时间
  282. };
  283. arr.push(obj)
  284. });
  285. let total = res.data.body.totalCount;
  286. that_.state.paginationProps.total = total
  287. that_.setState({
  288. data: arr,
  289. total: total, //数据的总的条数
  290. lodings : false
  291. })
  292. }
  293. })
  294. }
  295. payTypeList(e) {
  296. let txt;
  297. if (e == 1) {
  298. txt = '支付宝'
  299. } else if (e == 2) {
  300. txt = '微信'
  301. } else if (e == 5) {
  302. txt = '余额'
  303. }
  304. return txt
  305. }
  306. orderStatus(e) {
  307. let txt;
  308. if (e == 1) {
  309. txt = '未付款'
  310. } else if (e == 2) {
  311. txt = '已付待入账'
  312. } else if (e == 3) {
  313. txt = '已付已入账'
  314. } else if (e == 4) {
  315. txt = '支付失败'
  316. } else if (e == 0) {
  317. txt = '--'
  318. }
  319. return txt
  320. }
  321. render() {
  322. const { data, columns, headTxt, keys,keye, select_data, timeType, paginationProps , isModalVisible , columns_tk , payOrderInfo , orderSplitInfo ,orderNo , lodings} = this.state;
  323. const { Option } = Select;
  324. return (
  325. <div className='wrap_table'>
  326. <div className='header_center'>
  327. {headTxt}
  328. </div>
  329. <div className='query_table'>
  330. <div className='top_div'>
  331. <div style={{ display: 'inline-block', }}> 订单状态 : </div>
  332. <Select size='default' placeholder="请选择" onChange={this.handleChange_1.bind(this)} style={{ width: 200, marginRight: '20px' }}>
  333. {select_data.OrderType.map((item, index) => (
  334. <Option key={index} value={item.value}>{item.label}</Option>
  335. ))}
  336. </Select>
  337. <div style={{ display: 'inline-block', }}> 商户订单号 : </div>
  338. <div style={{ width: '200px', display: 'inline-block', marginLeft: '20px' }}><Input id='orderNo' placeholder="请输入订单号" /></div>
  339. </div>
  340. <div className='btm_div'>
  341. <div style={{ display: 'inline-block', }}> 发起人 : </div>
  342. <div style={{ width: '200px', display: 'inline-block', marginLeft: '20px', marginRight: '20px' }}><Input id='userName' placeholder="请输入用户名" /></div>
  343. <div style={{ display: 'inline-block', }}> 支付方式 : </div>
  344. <Select size='default' placeholder="请选择" onChange={this.handleChange_2.bind(this)} style={{ width: 200, marginRight: '20px' }}>
  345. <Option key={1} value={2}>微信</Option>
  346. <Option key={2} value={1}>支付宝</Option>
  347. <Option key={3} value={5}>钱包余额</Option>
  348. </Select>
  349. <Select size='default' placeholder="请选择时间类型" onChange={this.handleChange_3.bind(this)} style={{ width: 200, marginRight: '20px' }}>
  350. <Option key={0} value={0}>不限时间类型</Option>
  351. <Option key={1} value={1}>完成时间</Option>
  352. <Option key={2} value={2}>下单时间</Option>
  353. </Select>
  354. <Space direction="vertical">
  355. <DatePicker key={keys} onChange={this.starTime} locale={locale} disabled={timeType == null ? true : false || timeType == 0 ? true : false} placeholder='请选择开始时间' />
  356. </Space>
  357. <div style={{ display: 'inline-block', margin: '0px 10px', color: '#d9d9d9' }}>-</div>
  358. <Space direction="vertical">
  359. <DatePicker key={keye} onChange={this.endTime} locale={locale} disabled={timeType == null ? true : false || timeType == 0 ? true : false} placeholder='请选择结束时间' />
  360. </Space>
  361. <Button type="primary" style={{
  362. float: 'right', display: 'inline-block', margin: '0px 10px', marginRight: '20px'
  363. }} onClick={this.TableToExcel.bind(this)}>导出</Button>
  364. <Button type="primary" style={{
  365. float: 'right', display: 'inline-block', margin: '0px 10px',
  366. }} onClick={this.queryClick.bind(this)}>搜索</Button>
  367. </div>
  368. </div>
  369. <div className='tables'>
  370. <Table
  371. columns={columns}
  372. dataSource={data}
  373. pagination={paginationProps}
  374. loading = {lodings}
  375. />
  376. </div>
  377. <Modal title="订单金额流向"
  378. footer={[
  379. <Button key="submit" type="primary" onClick={this.handleOk.bind(this)}>
  380. 确定
  381. </Button>,
  382. ]}
  383. visible={isModalVisible}
  384. closable={false}
  385. // onOk={this.handleOk}
  386. >
  387. {
  388. (payOrderInfo !== {} && payOrderInfo !== null) &&
  389. <div>
  390. <p style={{fontSize : '16px',fontWeight : '600'}}>订单信息</p>
  391. <p>商户订单号 : {orderNo}</p>
  392. <p>订单金额 : {payOrderInfo.totalAmount}</p>
  393. <p>支付金额 : {payOrderInfo.cash}</p>
  394. <p>本金金额 : {payOrderInfo.stbPrice}</p>
  395. <p>积分币金额 : {payOrderInfo.benbiPrice}</p>
  396. </div>
  397. }
  398. { (orderSplitInfo !== [] && orderSplitInfo !== null) &&
  399. <div>
  400. <p style={{fontSize : '16px',fontWeight : '600'}}>订单金额流向信息</p>
  401. <Table
  402. columns={columns_tk}
  403. dataSource={orderSplitInfo}
  404. />
  405. </div>
  406. }
  407. </Modal>
  408. </div>
  409. )
  410. }
  411. }