sendPackTable.tsx 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import { useAjax } from "@/Hook/useAjax"
  2. import { delSendGiftLogApi, getSendGiftLogListApi, getSendGiftLogProps } from "@/services/gameData/roleOperate"
  3. import { Button, DatePicker, Input, Popconfirm, Space, Table, Tag, message } from "antd"
  4. import React, { useEffect, useState } from "react"
  5. import { columnsSendPackLog } from "./tableConfig"
  6. import './index.less'
  7. import moment from "moment"
  8. import SendPack from "./sendPack"
  9. interface Props {
  10. data: any
  11. onChange?: () => void
  12. }
  13. const SendPackTable: React.FC<Props> = ({ data, onChange }) => {
  14. /*********************************/
  15. const [queryForm, setQueryForm] = useState<getSendGiftLogProps>({ pageNum: 1, pageSize: 20 })
  16. const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([])
  17. const [sendPackvisible, setSendPackVisible] = useState<boolean>(false)
  18. const [ids, setIds] = useState<string[]>([])
  19. const getSendGiftLogList = useAjax((params) => getSendGiftLogListApi(params))
  20. const delSendGiftLog = useAjax((params) => delSendGiftLogApi(params))
  21. /*********************************/
  22. useEffect(() => {
  23. getSendGiftLogList.run({
  24. ...queryForm,
  25. gameId: data.user_reg_game_id,
  26. roleId: data.role_id,
  27. serverId: data.server_id,
  28. userId: data.user_id
  29. })
  30. }, [queryForm, data])
  31. const del = (ids: any[]) => {
  32. delSendGiftLog.run(ids.toString()).then(res => {
  33. if (res) {
  34. onChange?.()
  35. getSendGiftLogList.refresh()
  36. message.success('删除成功')
  37. }
  38. })
  39. }
  40. const update = (ids: any[]) => {
  41. setIds(ids)
  42. setSendPackVisible(true)
  43. }
  44. return <Space style={{ width: '100%' }} direction="vertical">
  45. <Space>
  46. <Input placeholder="礼包名称" style={{ width: 120 }} allowClear value={queryForm.giftName} size="small" onChange={(e) => setQueryForm({ ...queryForm, pageNum: 1, giftName: e.target.value })} />
  47. <DatePicker.RangePicker
  48. size="small"
  49. showTime
  50. allowClear
  51. placeholder={['发送开始时间', '发送结束时间']}
  52. value={queryForm?.startDateTime && queryForm?.endDateTime ? [moment(queryForm?.startDateTime), moment(queryForm?.endDateTime)] as any : undefined}
  53. onChange={(e) => {
  54. if (e && e.length === 2) {
  55. setQueryForm({ ...queryForm, pageNum: 1, startDateTime: moment(e[0]).format('YYYY-MM-DD HH:mm:ss'), endDateTime: moment(e[1]).format('YYYY-MM-DD HH:mm:ss') })
  56. } else {
  57. setQueryForm({ ...queryForm, startDateTime: undefined, endDateTime: undefined })
  58. }
  59. }}
  60. />
  61. <Button type="primary" onClick={() => { update(selectedRowKeys) }} disabled={selectedRowKeys.length === 0}>批量更新</Button>
  62. <Popconfirm
  63. title="确定删除?"
  64. disabled={selectedRowKeys.length === 0}
  65. onConfirm={() => { del(selectedRowKeys) }}
  66. >
  67. <Button danger onClick={() => { }} disabled={selectedRowKeys.length === 0}>批量删除</Button>
  68. </Popconfirm>
  69. </Space>
  70. <Table
  71. dataSource={getSendGiftLogList?.data?.records}
  72. columns={columnsSendPackLog(update, del)}
  73. loading={getSendGiftLogList.loading}
  74. scroll={{ x: 380, y: 300 }}
  75. className="uuTable"
  76. rowKey={'id'}
  77. pagination={
  78. {
  79. total: getSendGiftLogList?.data?.total || 0,//总共多少条数据,服务器给,设置后分页自动计算页数
  80. current: getSendGiftLogList?.data?.current || 1,//当前页数,需state控制配合翻页
  81. pageSize: getSendGiftLogList?.data?.size || 20,
  82. defaultCurrent: 1,//默认初始的当前页数
  83. pageSizeOptions: ['10', '20', '30', '40', '50', '60', '70', '80', '90', '100'],
  84. showTotal: (total) => <Tag color="cyan">总共{total}数据</Tag>,
  85. showSizeChanger: true, //手动开启条数筛选器,默认超过50条开启
  86. size: 'small',//设置分页尺寸
  87. onChange: (page: number, pageSize: number) => {
  88. setQueryForm({ ...queryForm, pageNum: page, pageSize })
  89. },
  90. showLessItems: true
  91. }
  92. }
  93. rowSelection={{
  94. selectedRowKeys,
  95. onChange: (selectedRowKeys: React.Key[]) => {
  96. setSelectedRowKeys(selectedRowKeys)
  97. },
  98. }}
  99. />
  100. {/* 发送礼包 */}
  101. {sendPackvisible && <SendPack
  102. visible={sendPackvisible}
  103. ids={ids as any}
  104. data={[data]}
  105. onClose={() => setSendPackVisible(false)}
  106. onChange={() => {
  107. setSendPackVisible(false);
  108. getSendGiftLogList?.refresh();
  109. setIds([])
  110. setSelectedRowKeys([])
  111. }}
  112. />}
  113. </Space>
  114. }
  115. export default React.memo(SendPackTable)