details.tsx 6.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { useAjax } from "@/Hook/useAjax"
  2. import { PayStatus, PayType, gameClassifyEnum } from "@/components/QueryForm/const"
  3. import Tables from "@/components/Tables"
  4. import WidthEllipsis from "@/components/widthEllipsis"
  5. import { CpLogListProps, getOrderCpNoticeApi } from "@/services/gameData/order"
  6. import { Badge, Descriptions, Divider, Drawer, Statistic } from "antd"
  7. import React, { useEffect, useState } from "react"
  8. import columns from "./tableConfigRole"
  9. interface Props {
  10. visible?: boolean
  11. onClose?: () => void
  12. initialValues?: any
  13. }
  14. const Details: React.FC<Props> = ({ visible, onClose, initialValues = {} }) => {
  15. /********************************/
  16. const [queryFrom, setQueryForm] = useState<CpLogListProps>({ pageNum: 1, pageSize: 20, orderId: initialValues?.orderId })
  17. const [logList, setLogList] = useState<any>()
  18. const getOrderCpNotice = useAjax((params) => getOrderCpNoticeApi(params))
  19. /********************************/
  20. useEffect(() => {
  21. if (initialValues?.orderStatus && initialValues?.orderStatus > 0) {
  22. getList()
  23. }
  24. }, [queryFrom])
  25. const getList = () => {
  26. getOrderCpNotice.run(queryFrom).then(res => {
  27. setLogList(res?.data)
  28. })
  29. }
  30. /** 分页 */
  31. let pageChange = (page: number, pageSize?: number) => {
  32. setQueryForm({ ...queryFrom, pageNum: page, pageSize: pageSize || queryFrom.pageSize })
  33. }
  34. return <Drawer title={'订单详情'} width={1180} placement="right" onClose={onClose} visible={visible}>
  35. <Divider orientation="left" style={{ marginTop: 0 }}>订单详情</Divider>
  36. <Descriptions title="" bordered column={3} size="small">
  37. <Descriptions.Item label="商户订单号" contentStyle={{ width: 240 }}>{initialValues?.orderId || '<空>'}</Descriptions.Item>
  38. <Descriptions.Item label="CP订单号" contentStyle={{ width: 240 }}>{<WidthEllipsis value={initialValues?.cpOrderId || '<空>'}/>}</Descriptions.Item>
  39. <Descriptions.Item label="第三方支付订单号" contentStyle={{ width: 240 }}>{<WidthEllipsis value={initialValues?.merchantOrderNo || '<空>'} />}</Descriptions.Item>
  40. <Descriptions.Item label="CP名称" contentStyle={{ width: 240 }}>{initialValues?.cpName || '<空>'}</Descriptions.Item>
  41. <Descriptions.Item label="游戏名称" contentStyle={{ width: 240 }}>{initialValues?.gameName || '<空>'}</Descriptions.Item>
  42. <Descriptions.Item label="游戏应用类型" contentStyle={{ width: 240 }}>{gameClassifyEnum[initialValues?.classify] || '<空>'}</Descriptions.Item>
  43. <Descriptions.Item label="产品ID" contentStyle={{ width: 240 }}>{initialValues?.productId || '<空>'}</Descriptions.Item>
  44. <Descriptions.Item label="产品名称" contentStyle={{ width: 240 }}>{initialValues?.productName || '<空>'}</Descriptions.Item>
  45. <Descriptions.Item label="渠道" contentStyle={{ width: 240 }}>{initialValues?.agentName || '<空>'}</Descriptions.Item>
  46. <Descriptions.Item label="支付方式" contentStyle={{ width: 240 }}>{PayType[initialValues?.payway] || '<空>'}</Descriptions.Item>
  47. <Descriptions.Item label="支付场景" contentStyle={{ width: 240 }}>{initialValues?.payScene || '<空>'}</Descriptions.Item>
  48. <Descriptions.Item label="收款商户" contentStyle={{ width: 240 }}>{initialValues?.merchantName || '<空>'}</Descriptions.Item>
  49. <Descriptions.Item label="订单金额" contentStyle={{ width: 240 }}><Statistic value={initialValues?.amount || 0} precision={2} /></Descriptions.Item>
  50. <Descriptions.Item label="订单实付金额" contentStyle={{ width: 240 }}><Statistic value={initialValues?.realAmount || 0} precision={2} /></Descriptions.Item>
  51. <Descriptions.Item label="支付状态" contentStyle={{ width: 240 }}>{PayStatus[initialValues?.orderStatus]}</Descriptions.Item>
  52. <Descriptions.Item label="创建时间" contentStyle={{ width: 240 }}>{initialValues?.orderCreateTime || '<空>'}</Descriptions.Item>
  53. <Descriptions.Item label="支付时间" contentStyle={{ width: 240 }}>{initialValues?.payTime || '<空>'}</Descriptions.Item>
  54. <Descriptions.Item label="最后通知时间" contentStyle={{ width: 240 }}>{initialValues?.lastCpNotifyTime || '<空>'}</Descriptions.Item>
  55. <Descriptions.Item label="CP通知状态" contentStyle={{ width: 240 }}>{{ '1': <Badge status="processing" text="待处理" />, '2': <Badge status="success" text="成功" />, '-1': <Badge status="error" text="失败" /> }[initialValues?.cpStatus]}</Descriptions.Item>
  56. <Descriptions.Item label="操作系统" contentStyle={{ width: 240 }}>{initialValues?.os || '<空>'}</Descriptions.Item>
  57. <Descriptions.Item label="是否首充" contentStyle={{ width: 240 }}>{{ '1': '是', '0': '否' }[initialValues?.isFirstRecharge]}</Descriptions.Item>
  58. </Descriptions>
  59. <Divider orientation="left">玩家信息</Divider>
  60. <Descriptions title="" bordered column={3} size="small">
  61. <Descriptions.Item label="玩家ID" contentStyle={{ width: 240 }}>{initialValues?.gameUserId || '<空>'}</Descriptions.Item>
  62. <Descriptions.Item label="玩家账号" contentStyle={{ width: 240 }}><WidthEllipsis value={initialValues?.username || '<空>'}/></Descriptions.Item>
  63. <Descriptions.Item label="玩家注册时间" contentStyle={{ width: 240 }}>{initialValues?.regTime || '<空>'}</Descriptions.Item>
  64. <Descriptions.Item label="CP名称" contentStyle={{ width: 240 }}>{initialValues?.cpName || '<空>'}</Descriptions.Item>
  65. <Descriptions.Item label="归因投放人员" contentStyle={{ width: 240 }}>{initialValues?.zxPitcherName || '<空>'}</Descriptions.Item>
  66. <Descriptions.Item label="游戏区服" contentStyle={{ width: 240 }}>{initialValues?.serverName || '<空>'}</Descriptions.Item>
  67. <Descriptions.Item label="游戏角色" contentStyle={{ width: 240 }}>{initialValues?.roleName || '<空>'}</Descriptions.Item>
  68. <Descriptions.Item label="角色等级" contentStyle={{ width: 240 }}>{initialValues?.roleLevel || '<空>'}</Descriptions.Item>
  69. <Descriptions.Item label="角色VIP" contentStyle={{ width: 240 }}>{initialValues?.roleVip}</Descriptions.Item>
  70. </Descriptions>
  71. <Divider orientation="left">CP通知记录</Divider>
  72. <Tables
  73. columns={columns()}
  74. dataSource={logList?.records}
  75. total={logList?.total}
  76. loading={getOrderCpNotice.loading}
  77. current={queryFrom.pageNum}
  78. pageChange={pageChange}
  79. sizeChange={pageChange}
  80. size="small"
  81. scroll={{ x: 1000 }}
  82. bordered
  83. />
  84. </Drawer>
  85. }
  86. export default React.memo(Details)