sendMail.tsx 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { useAjax } from "@/Hook/useAjax"
  2. import { addOrUpdateEmailApi } from "@/services/gameData/roleOperate"
  3. import { DatePicker, Form, Modal, message } from "antd"
  4. import React, { useEffect } from "react"
  5. import moment from "moment"
  6. interface Props {
  7. data: any[]
  8. ids?: any[];
  9. visible?: boolean
  10. onClose?: () => void
  11. onChange?: () => void
  12. }
  13. /**
  14. * 发送Email
  15. * @returns
  16. */
  17. const SendMail: React.FC<Props> = ({ data = [], ids, visible, onClose, onChange }) => {
  18. /************************************/
  19. const [form] = Form.useForm()
  20. const addOrUpdateEmail = useAjax((params) => addOrUpdateEmailApi(params))
  21. /************************************/
  22. useEffect(() => {
  23. if (ids?.length === 1) {
  24. const { sendTime } = ids?.[0]
  25. form.setFieldsValue({ sendTime: sendTime ? moment(sendTime) : undefined })
  26. }
  27. }, [ids])
  28. const handleOk = async () => {
  29. let validate = await form.validateFields()
  30. const { sendTime, giftId } = validate
  31. let params: any = { giftId, sendTime: moment(sendTime).format('YYYY-MM-DD HH:mm:ss') }
  32. if (ids) {
  33. params.ids = ids.map(item => item.id)
  34. }
  35. let roleInfoList = data.map(item => {
  36. return {
  37. gameId: item.user_reg_game_id,
  38. roleId: item.role_id,
  39. serverId: item.server_id,
  40. userId: item.user_id
  41. }
  42. })
  43. params.roleInfoList = roleInfoList
  44. addOrUpdateEmail.run(params).then(res => {
  45. if (res) {
  46. message.success('成功')
  47. onChange?.()
  48. }
  49. })
  50. }
  51. return <Modal
  52. title={`${ids && ids?.length > 0 ? '修改' : '发送'}邮件记录`}
  53. visible={visible}
  54. onCancel={onClose}
  55. onOk={handleOk}
  56. confirmLoading={addOrUpdateEmail.loading}
  57. >
  58. <Form
  59. name="basicExportEmail"
  60. form={form}
  61. labelCol={{ span: 4 }}
  62. wrapperCol={{ span: 20 }}
  63. autoComplete="off"
  64. >
  65. <Form.Item
  66. label="发送时间"
  67. name="sendTime"
  68. rules={[{ required: true, message: '请选择发送时间' }]}
  69. >
  70. <DatePicker style={{ width: '100%' }} showTime/>
  71. </Form.Item>
  72. </Form>
  73. </Modal>
  74. }
  75. export default React.memo(SendMail)