sendPack.tsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import { useAjax } from "@/Hook/useAjax"
  2. import { getPackListApi } from "@/services/gameData"
  3. import { addOrUpdateGiftApi } from "@/services/gameData/roleOperate"
  4. import { DatePicker, Form, Modal, Select, message } from "antd"
  5. import React, { useEffect } from "react"
  6. import moment from "moment"
  7. interface Props {
  8. data: any[]
  9. ids?: any[];
  10. visible?: boolean
  11. onClose?: () => void
  12. onChange?: () => void
  13. }
  14. /**
  15. * 发送Email
  16. * @returns
  17. */
  18. const SendPack: React.FC<Props> = ({ data = [], ids, visible, onClose, onChange }) => {
  19. /************************************/
  20. const [form] = Form.useForm()
  21. const getPackList = useAjax((params) => getPackListApi(params))
  22. const addOrUpdateGift = useAjax((params) => addOrUpdateGiftApi(params))
  23. /************************************/
  24. useEffect(() => {
  25. if (ids?.length === 1) {
  26. const { sendTime, giftId } = ids?.[0]
  27. form.setFieldsValue({ sendTime: sendTime ? moment(sendTime) : undefined, giftId })
  28. }
  29. }, [ids])
  30. useEffect(() => {
  31. getPackList.run({})
  32. }, [data])
  33. const handleOk = async () => {
  34. let validate = await form.validateFields()
  35. const { sendTime, giftId } = validate
  36. let params: any = { giftId, sendTime: moment(sendTime).format('YYYY-MM-DD HH:mm:ss') }
  37. if (ids) {
  38. params.ids = ids.map((item: any) => item.id)
  39. }
  40. let roleInfoList = data.map(item => {
  41. return {
  42. gameId: item.user_reg_game_id,
  43. roleId: item.role_id,
  44. serverId: item.server_id,
  45. userId: item.user_id
  46. }
  47. })
  48. params.roleInfoList = roleInfoList
  49. addOrUpdateGift.run(params).then(res => {
  50. if (res) {
  51. message.success('成功')
  52. onChange?.()
  53. }
  54. })
  55. }
  56. return <Modal
  57. title={`${ids && ids?.length > 0 ? '修改' : '发送'}礼包记录`}
  58. visible={visible}
  59. onCancel={onClose}
  60. onOk={handleOk}
  61. confirmLoading={addOrUpdateGift.loading}
  62. >
  63. <Form
  64. name="basicExportPack"
  65. form={form}
  66. labelCol={{ span: 4 }}
  67. wrapperCol={{ span: 20 }}
  68. autoComplete="off"
  69. >
  70. <Form.Item
  71. label="发送时间"
  72. name="sendTime"
  73. rules={[{ required: true, message: '请选择发送时间' }]}
  74. >
  75. <DatePicker style={{ width: '100%' }} showTime />
  76. </Form.Item>
  77. <Form.Item
  78. label="礼包"
  79. name="giftId"
  80. rules={[{ required: true, message: '请选择礼包' }]}
  81. >
  82. <Select
  83. maxTagCount={1}
  84. showSearch
  85. style={{ minWidth: 140 }}
  86. allowClear
  87. placeholder={'请选择礼包'}
  88. filterOption={(input, option) =>
  89. (option?.children as any)?.toLowerCase().indexOf(input.toLowerCase()) >= 0
  90. }
  91. >
  92. {getPackList?.data?.map((item: { id: React.Key | null | undefined; giftName: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined }) => <Select.Option value={item.id} key={item.id}>{item.giftName}</Select.Option>)}
  93. </Select>
  94. </Form.Item>
  95. </Form>
  96. </Modal>
  97. }
  98. export default React.memo(SendPack)