reducer.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. import React from 'react';
  2. import * as constants from './constants';
  3. import { fromJS } from 'immutable';
  4. const defaultState = fromJS({
  5. companyList: [],
  6. pagination: {
  7. current: 1,
  8. pageSize: 10,
  9. showSizeChanger: false
  10. },
  11. loading: false,
  12. columns: [
  13. {
  14. title: '客户名称',
  15. dataIndex: 'clientname',
  16. key: 'clientname',
  17. visible: true
  18. },
  19. {
  20. title: '地区',
  21. dataIndex: 'companyname',
  22. key: 'companyname',
  23. },
  24. {
  25. title: '标签',
  26. dataIndex: 'telephone',
  27. key: 'telephone',
  28. },
  29. {
  30. title: '单位性质',
  31. dataIndex: 'telephone',
  32. key: 'telephone',
  33. },
  34. {
  35. title: '公司地址',
  36. dataIndex: 'telephone',
  37. key: 'telephone',
  38. },
  39. {
  40. title: '公司传真',
  41. dataIndex: 'telephone',
  42. key: 'telephone',
  43. },
  44. {
  45. title: '网址',
  46. dataIndex: 'telephone',
  47. key: 'telephone',
  48. },
  49. {
  50. title: '乘车路线',
  51. dataIndex: 'telephone',
  52. key: 'telephone',
  53. },
  54. {
  55. title: '地标建筑',
  56. dataIndex: 'telephone',
  57. key: 'telephone',
  58. },
  59. {
  60. title: '参考住宿',
  61. dataIndex: 'telephone',
  62. key: 'telephone',
  63. },
  64. {
  65. title: '备注',
  66. dataIndex: 'telephone',
  67. key: 'telephone',
  68. },
  69. ],
  70. companyPopupsDetail: {
  71. companyDetail: {},
  72. },
  73. columnsVisible: [
  74. // { columnsName: '客户名称', columnsValue: true, dataKey: "clientname" },
  75. { columnsName: '地区', columnsValue: true, dataKey: "companyname" },
  76. { columnsName: '标签', columnsValue: true, dataKey: "telephone" },
  77. { columnsName: '单位性质', columnsValue: true, dataKey: "telephone" },
  78. { columnsName: '公司地址', columnsValue: true, dataKey: "telephone" },
  79. { columnsName: '公司传真', columnsValue: true, dataKey: "telephone" },
  80. { columnsName: '网址', columnsValue: true, dataKey: "telephone" },
  81. { columnsName: '乘车路线', columnsValue: true, dataKey: "telephone" },
  82. { columnsName: '地标建筑', columnsValue: true, dataKey: "telephone" },
  83. { columnsName: '参考住宿', columnsValue: true, dataKey: "telephone" },
  84. { columnsName: '备注', columnsValue: true, dataKey: "telephone" },
  85. ],
  86. });
  87. export default (state = defaultState, action) => {
  88. let columns = state.get('columns').toJS();
  89. let columnsVisible = state.get('columnsVisible').toJS();
  90. switch (action.type) {
  91. //显示隐藏列
  92. case constants.TOGGLE_COLUMNS:
  93. columnsVisible[action.data].columnsValue = !columnsVisible[action.data].columnsValue;
  94. //存储
  95. localStorage.setItem('contact_company_Column_' + action.data, columnsVisible[action.data].columnsValue);
  96. var columnsBak=refreshColumns(columnsVisible,columns);
  97. return state.merge({
  98. columnsVisible: fromJS(columnsVisible),
  99. columns: fromJS(columnsBak)
  100. });
  101. case constants.TOGGLE_COLUMNS_ALL:
  102. for (var i = 0,ci=1; i <= columnsVisible.length; i++,ci++) {
  103. var isAccept = localStorage.getItem("contact_company_Column_" + i);
  104. if (isAccept === 'false') {
  105. columnsVisible[i].columnsValue = false;
  106. }
  107. }
  108. var columnsBak=refreshColumns(columnsVisible,columns);
  109. return state.merge({
  110. columnsVisible: fromJS(columnsVisible),
  111. columns: fromJS(columnsBak)
  112. });
  113. //读取锁定-获得客户data
  114. case constants.CHANGE_COMPANY_LOADING:
  115. return state.set('loading', action.data);
  116. case constants.CHANGE_COMPANY_DATA:
  117. let columnsDetail = {
  118. ...columns[0],
  119. render: (text, record) => <a href="#detail" data-toggle="modal" data-target="#detail" onClick={() => action.props.handleCompanyPopups(record.key)} >{text}</a>,
  120. }
  121. columns[0] = columnsDetail;
  122. let pagination = {
  123. ...action.pagination,
  124. total: action.data.recordsTotal,
  125. }
  126. return state.merge({
  127. pagination: fromJS(pagination),
  128. companyList: fromJS(action.data.data),
  129. loading: false,
  130. columns: fromJS(columns)
  131. });
  132. default:
  133. return state;
  134. }
  135. }
  136. function refreshColumns(columnsVisible,columns){
  137. let columnsBak=[];
  138. columnsBak.push(columns[1]);
  139. for (var i = 0; i < columnsVisible.length; i++) {
  140. if(columnsVisible[i].columnsValue){
  141. columnsBak.push({
  142. title: columnsVisible[i].columnsName,
  143. dataIndex: columnsVisible[i].dataKey,
  144. key: columnsVisible[i].dataKey,
  145. });
  146. }
  147. }
  148. return columnsBak;
  149. };