dataConnectBox.jsx 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. import React from 'react'
  2. import { Modal, Form, Row, Col, Input, InputNumber, Select, Icon, Menu, Dropdown } from 'antd'
  3. const FormItem = Form.Item
  4. const SelectOption = Select.Option
  5. const OptionGroup = Select.OptGroup
  6. const InputGroup = Input.Group
  7. const SubMenu = Menu.SubMenu
  8. const MenuItem = Menu.Item
  9. const MenuItemGroup = Menu.ItemGroup;
  10. import { connect } from 'dva'
  11. import dataConnect from '../../models/dataConnect'
  12. const DataConnectBox = ({operation, dispatch, dataConnect, visibleBox, hideBox, form}) => {
  13. const formItemLayout = {
  14. labelCol: { span: 4 },
  15. wrapperCol: { span: 20 },
  16. };
  17. const okHandler = (model) => {
  18. if(operation == 'create') {
  19. dispatch({ type: 'dataConnect/remoteAdd' });
  20. }else if(operation == 'modify') {
  21. dispatch({ type: 'dataConnect/remoteModify', code: model.code });
  22. }
  23. hideBox();
  24. }
  25. return (
  26. <Modal
  27. className='newdataconnect-box'
  28. title={`${operation=='create'?'新增':'修改'}数据库连接配置`}
  29. visible={visibleBox}
  30. onOk={() => {okHandler(dataConnect.newOne)}}
  31. onCancel={hideBox}
  32. maskClosable={false}
  33. destroyOnClose={true}
  34. >
  35. <Form size='small'>
  36. <FormItem label='连接配置名' {...formItemLayout}>
  37. <Input
  38. value={dataConnect.newOne.name}
  39. onChange={(e) => { dispatch({ type: 'dataConnect/setNewModelField', name: 'name', value: e.target.value }) }}>
  40. </Input>
  41. </FormItem>
  42. <FormItem label='数据库类型' {...formItemLayout}>
  43. <Select
  44. value={dataConnect.newOne.dbType}
  45. onChange={(value) => {
  46. dispatch({ type: 'dataConnect/setNewModelField', name: 'dbType', value: value} );
  47. }}
  48. >
  49. <SelectOption value='oracle'>
  50. ORACLE
  51. </SelectOption>
  52. <SelectOption value='mysql'>
  53. MYSQL
  54. </SelectOption>
  55. <SelectOption value='sqlserver'>
  56. SQLSERVER
  57. </SelectOption>
  58. <SelectOption value='sqlite'>
  59. SQLITE
  60. </SelectOption>
  61. </Select>
  62. </FormItem>
  63. <Row>
  64. <Col span={19}>
  65. <FormItem label='数据库地址' {...{
  66. labelCol: { span: 5 },
  67. wrapperCol: { span: 19 }
  68. }}>
  69. <Input
  70. value={dataConnect.newOne.address}
  71. onChange={(e) => {
  72. dispatch({ type: 'dataConnect/setNewModelField', name: 'address', value: e.target.value });
  73. }}
  74. />
  75. </FormItem>
  76. </Col>
  77. <Col span={5}>
  78. <FormItem className='input-port' label='端口' {...{
  79. labelCol: { span: 12 },
  80. wrapperCol: { span: 12 }
  81. }}>
  82. <InputNumber
  83. value={dataConnect.newOne.port}
  84. onChange={(value) => {
  85. dispatch({ type: 'dataConnect/setNewModelField', name: 'port', value: value });
  86. }}
  87. />
  88. </FormItem>
  89. </Col>
  90. </Row>
  91. <FormItem label='数据库名' {...formItemLayout}>
  92. <Input
  93. value={dataConnect.newOne.dbName}
  94. onChange={(e) => {
  95. dispatch({ type: 'dataConnect/setNewModelField', name: 'dbName', value: e.target.value });
  96. }}
  97. />
  98. </FormItem>
  99. <Row>
  100. <Col span={12}>
  101. <FormItem label='用户名' {...{
  102. labelCol: { span: 8 },
  103. wrapperCol: { span: 16 }
  104. }}>
  105. <Input
  106. value={dataConnect.newOne.userName}
  107. onChange={(e) => {
  108. dispatch({ type: 'dataConnect/setNewModelField', name: 'userName', value: e.target.value });
  109. }}
  110. />
  111. </FormItem>
  112. </Col>
  113. <Col span={12}>
  114. <FormItem label='密码' {...{
  115. labelCol: { span: 8 },
  116. wrapperCol: { span: 16 }
  117. }}>
  118. <Input
  119. type='password'
  120. value={dataConnect.newOne.password}
  121. onChange={(e) => {
  122. dispatch({ type: 'dataConnect/setNewModelField', name: 'password', value: e.target.value });
  123. }}
  124. />
  125. </FormItem>
  126. </Col>
  127. </Row>
  128. <FormItem className='textarea-desc' label='说明' {...formItemLayout}>
  129. <Input.TextArea
  130. autosize={{ minRows: 2 }}
  131. value={dataConnect.newOne.description}
  132. onChange={(e) => {
  133. dispatch({ type: 'dataConnect/setNewModelField', name: 'description', value: e.target.value });
  134. }}
  135. />
  136. </FormItem>
  137. </Form>
  138. </Modal>
  139. )
  140. }
  141. function mapStateToProps({ present: { dataConnect } }) {
  142. return { dataConnect: dataConnect };
  143. }
  144. export default connect(mapStateToProps)(DataConnectBox)