changeRecord.tsx 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import Tables from "@/components/Tables";
  2. import { DatePicker, Drawer, Form, Input, Modal, Select } from "antd";
  3. import moment from "moment";
  4. import React, { useCallback, useEffect, useState } from "react";
  5. import { useModel } from "umi";
  6. import { columnsCrGdt } from "./tablesConfig"
  7. type Props = {
  8. data?: { name: number, id: number } | null,
  9. visible?: boolean,
  10. onChange?: () => void,
  11. onClose?: () => void
  12. }
  13. function ChangeRecord(props: Props) {
  14. const { data, visible, onClose } = props
  15. const { getGdtChangeRecord, editAccountChangeRecord, editGdtChangeRecord, getResource } = useModel('useOperating.useAccountyyb')
  16. const [accountQueryForm, setAccountQueryForm] = useState<{ quickAppAccountId: number, pageNum: number, pageSize: number }>({ quickAppAccountId: data?.id as number, pageNum: 1, pageSize: 20 })
  17. const [gdtQueryForm, setGdtQueryForm] = useState<{ gdtAccountId: number, pageNum: number, pageSize: number }>({ gdtAccountId: data?.name as number, pageNum: 1, pageSize: 20 })
  18. const [editTitle, setEditTitle] = useState<string>('编辑')
  19. const [form] = Form.useForm()
  20. const [editData, setEditData] = useState<{ recordId: number, putResourceId: number | undefined, resourceNames: string, beginTime: any, endTime: any } | null>(null)
  21. const [editVisible, setEditVisible] = useState<boolean>(false)
  22. useEffect(() => {
  23. getList()
  24. }, [accountQueryForm, gdtQueryForm])
  25. const getList = () => {
  26. getGdtChangeRecord.run(gdtQueryForm)
  27. }
  28. // 分页
  29. const pageChange = useCallback((page: string | number, pageSize?: string | number) => {
  30. setGdtQueryForm({ ...gdtQueryForm, pageNum: page as number, pageSize: pageSize as number })
  31. }, [accountQueryForm, gdtQueryForm])
  32. // 编辑
  33. const editHandle = useCallback((data: any) => {
  34. const { beginTime, endTime, id, putResourceName } = data
  35. setEditData({ beginTime: moment(beginTime), endTime: endTime ? moment(endTime) : null, recordId: id, putResourceId: undefined, resourceNames: putResourceName })
  36. setEditTitle('编辑 ' + putResourceName)
  37. setEditVisible(true)
  38. setTimeout(() => {
  39. form.resetFields()
  40. }, 100)
  41. }, [editData, editTitle, editVisible, form])
  42. // 搜索资源
  43. const handleSearch = (value: string) => {
  44. getResource.run({ resourceName: value, resourceType: 0 })
  45. }
  46. const handleOk = async () => {
  47. form.submit()
  48. let { resourceNames, ...data1 } = await form.validateFields()
  49. let proms = { ...data1, beginTime: moment(data1.beginTime).format('YYYY-MM-DD') }
  50. if (data1.endTime) {
  51. proms.endTime = moment(data1.endTime).format('YYYY-MM-DD')
  52. }
  53. editGdtChangeRecord.run({ ...proms, recordId: editData?.recordId }).then(res => {
  54. if(res) {
  55. setEditData(null);
  56. setEditVisible(false);
  57. getGdtChangeRecord.refresh()
  58. }
  59. })
  60. }
  61. return <div>
  62. <Drawer title={data?.name + ' 变更记录'} placement="right" width={1200} onClose={() => { onClose && onClose() }} open={visible}>
  63. <Tables
  64. columns={columnsCrGdt(editHandle)}
  65. dataSource={getGdtChangeRecord?.data?.records}
  66. total={getGdtChangeRecord?.data?.total}
  67. loading={getGdtChangeRecord?.loading}
  68. pageChange={pageChange}
  69. sizeChange={pageChange}
  70. current={getGdtChangeRecord?.data?.current}
  71. pageSize={getGdtChangeRecord?.data?.size}
  72. size={'small'}
  73. scroll={{ x: 1100 }}
  74. />
  75. </Drawer>
  76. {editVisible && <Modal title={editTitle} open={editVisible} onOk={handleOk} onCancel={() => { setEditData(null); form.resetFields(); setEditVisible(false); }} confirmLoading={editAccountChangeRecord.loading || editGdtChangeRecord.loading}>
  77. <Form
  78. name="basic"
  79. form={form}
  80. labelCol={{ span: 5 }}
  81. wrapperCol={{ span: 19 }}
  82. autoComplete="off"
  83. initialValues={{ ...editData }}
  84. >
  85. <Form.Item label="开始时间" name="beginTime" rules={[{ type: 'object' as const, required: true, message: '请选择时间!' }]}>
  86. <DatePicker />
  87. </Form.Item>
  88. <Form.Item label="结束时间" name="endTime">
  89. <DatePicker />
  90. </Form.Item>
  91. <Form.Item label="当前投放信息" name="resourceNames">
  92. <Input.TextArea autoSize disabled />
  93. </Form.Item>
  94. <Form.Item label="投放信息" name="putResourceId" rules={[{ type: 'number', required: true, message: '请选择投放信息!' }]}>
  95. <Select
  96. showSearch
  97. placeholder="选择投放信息"
  98. defaultActiveFirstOption={false}
  99. showArrow={false}
  100. filterOption={false}
  101. onSearch={handleSearch}
  102. notFoundContent={null}
  103. >
  104. {getResource?.data?.map((item: { id: number, resourceName: string }) => <Select.Option key={item.id} value={item.id}>{item.resourceName}</Select.Option>)}
  105. </Select>
  106. </Form.Item>
  107. </Form>
  108. </Modal>}
  109. </div>
  110. }
  111. export default React.memo(ChangeRecord)