chartDesigner.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. import { routerRedux } from 'dva/router'
  2. import * as service from '../services/index'
  3. import { delay } from '../utils/baseUtils'
  4. import URLS from '../constants/url'
  5. export default {
  6. namespace: 'chartDesigner',
  7. state: {
  8. columns: [{
  9. label: '编号',
  10. name: 'ID',
  11. type: 'index'
  12. }, {
  13. label: '姓名',
  14. name: 'name',
  15. type: 'string'
  16. }, {
  17. label: '出生日期',
  18. name: 'BIRTH',
  19. type: 'time'
  20. }, {
  21. label: '性别',
  22. name: 'GENDER',
  23. type: 'categorical',
  24. selection: ['男', '女']
  25. }, {
  26. label: '部门',
  27. name: 'DEPARTMENT',
  28. type: 'categorical',
  29. selection: ['开发部', '测试部', '实施部']
  30. }, {
  31. label: '入职日期',
  32. name: 'ENTRYDATE',
  33. type: 'time'
  34. }, {
  35. label: '当月工作时数',
  36. name: 'WORKHOURS',
  37. type: 'scale'
  38. }, {
  39. label: '基本薪资',
  40. name: 'BASICSALARY',
  41. type: 'scale'
  42. }, {
  43. label: '绩效薪资',
  44. name: 'PERFORMANCE',
  45. type: 'scale'
  46. }, {
  47. label: '实发薪资',
  48. name: 'SALARY',
  49. type: 'scale'
  50. }],
  51. allPermission: [
  52. { value: 'owner', name: '创建人' },
  53. { value: 'anyone', name: '所有人' }
  54. ],
  55. header: {
  56. label: '标题'
  57. },
  58. baseConfig: {
  59. dataSource: {
  60. key: '',
  61. label: ''
  62. },
  63. viewType: {
  64. key: '',
  65. label: ''
  66. }
  67. },
  68. preparing: {
  69. groupBy: []
  70. },
  71. barConfig: {
  72. xAxis: {
  73. column: {},
  74. granularity: {}
  75. },
  76. yAxis: {
  77. column: {},
  78. gauge: {}
  79. }
  80. },
  81. aggregateTable: {
  82. },
  83. dataView: {
  84. },
  85. style: {
  86. },
  87. filters: [],
  88. chartOption: {}
  89. },
  90. reducers: {
  91. setModel(state, action) {
  92. const { name, value } = action;
  93. let obj = {};
  94. obj[name] = value;
  95. let newState = Object.assign({}, state, obj);
  96. return newState;
  97. },
  98. setChartOption(state, action) {
  99. const { option } = action;
  100. let obj = {};
  101. obj['chartOption'] = option;
  102. let newState = Object.assign({}, state, obj);
  103. return newState;
  104. }
  105. },
  106. effects: {
  107. *['fetchChartData'](action, { select, call, put }) {
  108. try {
  109. const chartDesigner = yield select(state => state.present.chartDesigner);
  110. const { barConfig, preparing } = chartDesigner;
  111. const res = yield call(service.fetch, {
  112. url: URLS.CHART_BAR_OPTION,
  113. body: {
  114. "tableName": "TEST_BI_DATA",
  115. "groups": preparing.groupBy.map(g => g.key),
  116. "xAxis": {
  117. "columnRename": barConfig.xAxis.column.value,
  118. "columnType": barConfig.xAxis.column.type,
  119. "dataType": barConfig.xAxis.granularity.value
  120. },
  121. "yAxis": {
  122. "columnRename": barConfig.yAxis.column.value,
  123. "dataType": barConfig.yAxis.gauge.value
  124. }
  125. }
  126. });
  127. console.log({
  128. "tableName": "TEST_BI_DATA",
  129. "groups": preparing.groupBy.map(g => g.key),
  130. "xAxis": {
  131. "columnRename": barConfig.xAxis.column.value,
  132. "columnType": barConfig.xAxis.column.type,
  133. "dataType": barConfig.xAxis.granularity.value
  134. },
  135. "yAxis": {
  136. "columnRename": barConfig.yAxis.column.value,
  137. "dataType": barConfig.yAxis.gauge.value
  138. }
  139. })
  140. res.viewType = 'bar';
  141. res.data.data.xTitle = barConfig.xAxis?`${barConfig.xAxis.column.label}${barConfig.xAxis.granularity.value?'('+barConfig.xAxis.granularity.label+')':''}`:null
  142. res.data.data.yTitle = barConfig.yAxis?barConfig.yAxis.column.label:null;
  143. res.data.data.gauge = barConfig.yAxis?barConfig.yAxis.gauge.label:null;
  144. yield put({ type: 'setChartOption', option: res });
  145. }catch(e) {
  146. yield put({ type: 'setChartOption', option: {} });
  147. }
  148. // if(!res.err && res.data.code > 0) {
  149. // res.viewType = 'bar';
  150. // res.data.data.xTitle = barConfig.xAxis?`${barConfig.xAxis.column.label}${barConfig.xAxis.granularity.value?'('+barConfig.xAxis.granularity.label+')':''}`:null
  151. // res.data.data.yTitle = barConfig.yAxis?barConfig.yAxis.column.label:null;
  152. // res.data.data.gauge = barConfig.yAxis?barConfig.yAxis.gauge.label:null;
  153. // yield put({ type: 'setChartOption', option: res });
  154. // }else {
  155. // yield put({ type: 'setChartOption', option: {} });
  156. // // 弹出错误提示
  157. // }
  158. }
  159. },
  160. subscriptions: {
  161. setup({ dispatch, history }) {
  162. return history.listen(({ pathname, query }) => {
  163. if (pathname === '/home') {
  164. console.log(111);
  165. dispatch({ type: 'redirect'});
  166. }
  167. });
  168. },
  169. },
  170. };