copyBox.jsx 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import React from 'react'
  2. import { connect } from 'dva'
  3. import { Modal, Form, Select } from 'antd'
  4. const { Item: FormItem } = Form
  5. const { Option: SelectOption } = Select
  6. class CopyBox extends React.Component {
  7. constructor(props) {
  8. super(props);
  9. this.state = {
  10. currentDataConnectCode: props.currentDataConnect ? props.currentDataConnect.code : null
  11. }
  12. }
  13. componentDidMount() {
  14. const { dispatch } = this.props;
  15. dispatch({ type: 'dataConnect/fetchList' });
  16. }
  17. generateOption() {
  18. const { dataConnect } = this.props;
  19. const { currentDataConnectCode } = this.state;
  20. const { list } = dataConnect;
  21. return list.filter((l) => l.code !== currentDataConnectCode).map((l) => <SelectOption key={l.code} value={l.code}>{l.name}</SelectOption>);
  22. }
  23. render() {
  24. const { visibleBox, hideBox, dispatch, currentDashboardCode } = this.props;
  25. const { currentDataConnectCode } = this.state;
  26. const formItemLayout = {
  27. labelCol: { span: 4 },
  28. wrapperCol: { span: 8 },
  29. }
  30. return <Modal
  31. className='copy-box'
  32. title={'复制报表'}
  33. visible={visibleBox}
  34. onCancel={hideBox}
  35. onOk={() => {
  36. dispatch({ type: 'dashboard/copy', dashboardCode: currentDashboardCode, dataConnectCode: currentDataConnectCode }).then(() => {
  37. hideBox();
  38. });
  39. }}
  40. maskClosable={true}
  41. destroyOnClose={true}
  42. >
  43. <div>复制对象包括报表和报表包含的图表</div>
  44. <Form>
  45. <FormItem
  46. label='切换数据链接'
  47. {...formItemLayout}
  48. >
  49. <Select
  50. disabled={!currentDataConnectCode}
  51. placeholder={currentDataConnectCode ? '不切换...' : '无需选择数据链接'}
  52. onChange={(value) => {
  53. this.setState({
  54. currentDataConnectCode: value
  55. })
  56. }}
  57. >
  58. { this.generateOption() }
  59. </Select>
  60. </FormItem>
  61. </Form>
  62. </Modal>
  63. }
  64. }
  65. export default connect(({ present: { dataConnect } }) => ({ dataConnect }))(CopyBox)