dataConnect.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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. if(!res.err && res.data.code > 0) {
  85. let data = res.data.data.map((r, i) => {
  86. return {
  87. key: i,
  88. code: r.id,
  89. name: r.name,
  90. dbName: r.dataName,
  91. dbType: r.databaseType,
  92. address: r.addrass,
  93. port: r.port,
  94. userName: r.userName,
  95. password: r.passWord,
  96. description: r.note
  97. }
  98. });
  99. console.log(data);
  100. yield put({ type: 'list', data });
  101. }else {
  102. message.error('读取数据连接配置列表错误');
  103. }
  104. }catch(e) {
  105. message.error('读取数据连接配置列表错误');
  106. console.log(e);
  107. }
  108. },
  109. *remoteAdd(action, { select, call, put, takeEvery, takeLatest }) {
  110. const dataConnect = yield select(state => state.present.dataConnect);
  111. const model = dataConnect.newOne;
  112. try {
  113. const res = yield call(service.fetch, {
  114. url: URLS.DATACONNECT_ADD,
  115. body: {
  116. "name": model.name,
  117. "addrass": model.address,
  118. "port": model.port,
  119. "databaseType": model.dbType,
  120. "dataName": model.dbName,
  121. "userName": model.userName,
  122. "passWord": model.password,
  123. "note": model.description
  124. }
  125. });
  126. yield put({ type: 'add' });
  127. message.success('新增成功');
  128. }catch(e) {
  129. message.error('新增失败');
  130. //yield takeLatest({ type: 'loadList', data: [] });
  131. }
  132. },
  133. *remoteModify(action, { select, call, put }) {
  134. try{
  135. const dataConnect = yield select(state => state.present.dataConnect);
  136. let model = dataConnect.newOne;
  137. const code = action.code;
  138. let list = dataConnect.list;
  139. let data = {
  140. id: code,
  141. name: model.name,
  142. addrass: model.address,
  143. port: model.port,
  144. databaseType: model.dbType,
  145. dataName: model.dbName,
  146. userName: model.userName,
  147. passWord: model.password,
  148. note: model.description
  149. };
  150. console.log(data);
  151. const res = yield call(service.fetch, {
  152. url: URLS.DATACONNECT_UPDATE,
  153. body: data
  154. });
  155. if(!res.err && res.data.code > 0) {
  156. list = list.map(l => {
  157. if(l.code == action.code) {
  158. l = model;
  159. }
  160. return l;
  161. });
  162. yield put({ type: 'list', data: list });
  163. message.success('修改成功');
  164. }else {
  165. message.error('修改失败');
  166. }
  167. }catch(e) {
  168. message.error('修改失败');
  169. }
  170. },
  171. *remoteDelete(action, { select, call, put, takeEvery, takeLatest }) {
  172. const dataConnect = yield select(state => state.present.dataConnect);
  173. const code = action.code;
  174. let list = dataConnect.list;
  175. try {
  176. const res = yield call(service.fetch, {
  177. url: URLS.DATACONNECT_DELETE,
  178. body: [code]
  179. });
  180. if(!res.err && res.data.code > 0) {
  181. for(let i = 0; i < list.length; i++) {
  182. if(list[i].code == code) {
  183. list.splice(i, 1);
  184. break;
  185. }
  186. }
  187. yield put({ type: 'list', data: list });
  188. message.success('删除成功');
  189. }else {
  190. message.error('删除失败');
  191. }
  192. }catch(e) {
  193. message.error('删除失败');
  194. console.log(e);
  195. }
  196. }
  197. },
  198. subscriptions: {
  199. setup({ dispatch, history }) {
  200. dispatch({ type: 'fetchList' })
  201. return history.listen(({ pathname, query }) => {
  202. })
  203. }
  204. }
  205. };