dataConnect.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import { message } from 'antd'
  2. import * as service from '../services/index'
  3. import URLS from '../constants/url'
  4. export default {
  5. namespace: 'dataConnect',
  6. state: {
  7. list: [],
  8. newOne: {}
  9. },
  10. reducers: {
  11. testData(state, action) {
  12. let list = state.list;
  13. for(let i = 0; i < 4; i++) {
  14. let newOne = {
  15. name: 'tttttt'+i,
  16. type: 'oracle',
  17. address: '2',
  18. port: '3',
  19. userName: '2222',
  20. password: 'aaaww',
  21. description: ' dddddddddddddddddddddd'
  22. };
  23. newOne.key = new Date().getMilliseconds()+(Math.random()*100).toFixed(0)+i;
  24. newOne.code = new Date().getMilliseconds()+(Math.random()*100).toFixed(0)+i;
  25. list.push(newOne);
  26. }
  27. return Object.assign({}, state, {list});
  28. },
  29. list(state, action) {
  30. const data = action.data;
  31. return Object.assign({}, state, {list: data});
  32. },
  33. add(state, action) {
  34. let newOne = Object.assign({}, state.newOne);
  35. let list = state.list;
  36. newOne.key = new Date().getMilliseconds()+(Math.random()*100).toFixed(0);
  37. newOne.code = new Date().getMilliseconds()+(Math.random()*100).toFixed(0);
  38. list.push(newOne);
  39. return Object.assign({}, state, {list});
  40. },
  41. modify(state, action) {
  42. const { newOne } = state;
  43. let list = state.list;
  44. for(let i = 0; i < list.length; i++) {
  45. if(list[i].code == newOne.code) {
  46. list[i] = Object.assign({}, newOne);
  47. break;
  48. }
  49. }
  50. return Object.assign({}, state, {list});
  51. },
  52. delete(state, action) {
  53. const { model } = action;
  54. let { list } = state;
  55. for(let i = 0; i < list.length; i++) {
  56. if(list[i].code == model.code) {
  57. list.splice(i, 1);
  58. }
  59. }
  60. return Object.assign({}, state, {list});
  61. },
  62. setNewModelField(state, action) {
  63. const { name, value } = action;
  64. let newOne = state.newOne;
  65. newOne[name] = value;
  66. return Object.assign({}, state, {newOne});
  67. },
  68. setNewModel(state, action) {
  69. const { model } = action;
  70. let newOne = Object.assign({}, model);
  71. return Object.assign({}, state, {newOne});
  72. },
  73. resetNewModel(state, action) {
  74. return Object.assign({}, state, {newOne: {}});
  75. }
  76. },
  77. effects: {
  78. *fetchList(action, { select, call, put, takeEvery, takeLatest }) {
  79. try {
  80. const res = yield call(service.fetch, {
  81. url: URLS.DATACONNECT_LIST,
  82. body: {}
  83. });
  84. let data = res.data.data.map((r, i) => {
  85. return {
  86. key: i,
  87. id: r.id,
  88. name: r.name,
  89. dbName: r.dataName,
  90. dbType: r.databaseType,
  91. address: r.addrass,
  92. port: r.port,
  93. userName: r.userName,
  94. password: r.passWord,
  95. description: r.note
  96. }
  97. });
  98. console.log(data);
  99. yield put({ type: 'list', data });
  100. }catch(e) {
  101. message.error(e);
  102. //yield takeLatest({ type: 'loadList', data: [] });
  103. }
  104. },
  105. *fetchAdd(action, { select, call, put, takeEvery, takeLatest }) {
  106. const dataConnect = yield select(state => state.present.dataConnect);
  107. const model = dataConnect.newOne;
  108. try {
  109. const res = yield call(service.fetch, {
  110. url: URLS.DATACONNECT_ADD,
  111. body: {
  112. "name": model.name,
  113. "addrass": model.address,
  114. "port": model.port,
  115. "databaseType": model.dbType,
  116. "dataName": model.dbName,
  117. "userName": model.userName,
  118. "passWord": model.password,
  119. "note": model.description
  120. }
  121. });
  122. yield put({ type: 'add' });
  123. message.success('新增成功');
  124. }catch(e) {
  125. message.error('新增失败');
  126. //yield takeLatest({ type: 'loadList', data: [] });
  127. }
  128. },
  129. *fetchDelete(action, { select, call, put, takeEvery, takeLatest }) {
  130. const model = action.model;
  131. try {
  132. const res = yield call(service.fetch, {
  133. url: URLS.DATACONNECT_ADD,
  134. body: {
  135. }
  136. });
  137. // yield put({ type: 'add' });
  138. message.success('删除成功');
  139. }catch(e) {
  140. message.error('删除失败');
  141. }
  142. }
  143. },
  144. subscriptions: {
  145. setup({ dispatch, history }) {
  146. return history.listen(({ pathname, query }) => {
  147. if (pathname.startsWith('/datasource')) {
  148. dispatch({ type: 'fetchList' })
  149. }
  150. })
  151. }
  152. }
  153. };