customer.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import {createAction} from '../utils';
  2. import * as customer from '../services/customer';
  3. import ResponseError from '../components/ResponseError';
  4. import TurnPage from '../components/TurnPage';
  5. import {REFRESH_STATE} from 'react-native-refresh-flatlist';
  6. let reportCustomerData = [], reviewTodayData = [], reviewRecordData = [];
  7. export default {
  8. namespace: 'customer',
  9. state: {
  10. loading: false,
  11. reportCustomerDataRState: REFRESH_STATE.Ready,
  12. reportCustomerData: [],
  13. reviewTodayRState: REFRESH_STATE.Ready,
  14. reviewTodayData: [],
  15. reviewRecordRState: REFRESH_STATE.Ready,
  16. reviewRecordData: [],
  17. projectDict: [],
  18. customerDetail: {},
  19. },
  20. reducers: {
  21. updateState(state, {payload}) {
  22. return {...state, ...payload};
  23. },
  24. queryList(state, {payload}) {
  25. return {...state, ...payload};
  26. },
  27. },
  28. effects: {
  29. * fetchReportCustomerData({payload}, {call, put}) {
  30. if (payload.page > 1) {
  31. yield put(createAction('queryList')({reportCustomerDataRState: REFRESH_STATE.FooterRefreshing}));
  32. } else {
  33. yield put(createAction('queryList')({reportCustomerDataRState: REFRESH_STATE.HeaderRefreshing}));
  34. }
  35. const response = yield call(customer.queryReportCustomerData, payload);
  36. if (!response.code) {
  37. const result = TurnPage(response, payload, reportCustomerData);
  38. reportCustomerData = result.data;
  39. yield put(createAction('queryList')({
  40. reportCustomerData: reportCustomerData, reportCustomerDataRState: result.state,
  41. total: response.totalResult, page: payload.page,
  42. }));
  43. } else {
  44. ResponseError(response);
  45. yield put(createAction('queryList')({reportCustomerDataRState: REFRESH_STATE.Ready}));
  46. }
  47. },
  48. * fetchReportDict({payload, callback}, {call, put}) {
  49. const response = yield call(customer.queryReportDict);
  50. if (!response.code) {
  51. if (callback) {
  52. callback(response.data);
  53. }
  54. yield put(createAction('queryList')({projectDict: response.data.project}));
  55. } else {
  56. ResponseError(response);
  57. }
  58. },
  59. * saveReportCustomer({payload, callback}, {call, put}) {
  60. const response = yield call(customer.saveReportCustomer, payload);
  61. if (!response.code) {
  62. if (callback) {
  63. callback();
  64. }
  65. } else {
  66. ResponseError(response);
  67. }
  68. },
  69. * signRepeat({payload, callback}, {call, put}) {
  70. const response = yield call(customer.signRepeat, payload);
  71. if (!response.code) {
  72. if (callback) {
  73. callback();
  74. }
  75. } else {
  76. ResponseError(response);
  77. }
  78. },
  79. * getUser({payload, callback}, {call, put}) {
  80. const response = yield call(customer.getUser, payload);
  81. if (!response.code) {
  82. if (callback) {
  83. callback(response.data);
  84. }
  85. } else {
  86. ResponseError(response);
  87. }
  88. },
  89. * dispatchUser({payload, callback}, {call, put}) {
  90. const response = yield call(customer.dispatchUser, payload);
  91. if (!response.code) {
  92. if (callback) {
  93. callback(response.data);
  94. }
  95. } else {
  96. ResponseError(response);
  97. }
  98. },
  99. * againDispatchUser({payload, callback}, {call, put}) {
  100. const response = yield call(customer.againDispatchUser, payload);
  101. if (!response.code) {
  102. if (callback) {
  103. callback(response.data);
  104. }
  105. } else {
  106. ResponseError(response);
  107. }
  108. },
  109. * fetchReviewToday({payload}, {call, put}) {
  110. if (payload.page > 1) {
  111. yield put(createAction('queryList')({reviewTodayRState: REFRESH_STATE.FooterRefreshing}));
  112. } else {
  113. yield put(createAction('queryList')({reviewTodayRState: REFRESH_STATE.HeaderRefreshing}));
  114. }
  115. const response = yield call(customer.queryReviewToday, payload);
  116. if (!response.code) {
  117. const result = TurnPage(response, payload, reviewTodayData);
  118. reviewTodayData = result.data;
  119. yield put(createAction('queryList')({
  120. reviewTodayData: reviewTodayData, reviewTodayRState: result.state,
  121. total: response.totalResult, page: payload.page,
  122. }));
  123. } else {
  124. ResponseError(response);
  125. yield put(createAction('queryList')({reviewTodayRState: REFRESH_STATE.Ready}));
  126. }
  127. },
  128. * fetchReviewRecord({payload}, {call, put}) {
  129. if (payload.page > 1) {
  130. yield put(createAction('queryList')({reviewRecordRState: REFRESH_STATE.FooterRefreshing}));
  131. } else {
  132. yield put(createAction('queryList')({reviewRecordRState: REFRESH_STATE.HeaderRefreshing}));
  133. }
  134. const response = yield call(customer.queryReviewRecord, payload);
  135. if (!response.code) {
  136. const result = TurnPage(response, payload, reviewRecordData);
  137. reviewRecordData = result.data;
  138. yield put(createAction('queryList')({
  139. reviewRecordData: reviewRecordData, reviewRecordRState: result.state,
  140. total: response.totalResult, page: payload.page,
  141. }));
  142. } else {
  143. ResponseError(response);
  144. yield put(createAction('queryList')({reviewRecordRState: REFRESH_STATE.Ready}));
  145. }
  146. },
  147. * addReview({payload, callback}, {call, put}) {
  148. const response = yield call(customer.addReview, payload);
  149. if (!response.code) {
  150. if (callback) {
  151. callback();
  152. }
  153. } else {
  154. ResponseError(response);
  155. }
  156. },
  157. * addInternalReview({payload, callback}, {call, put}) {
  158. const response = yield call(customer.addInternalReview, payload);
  159. if (!response.code) {
  160. if (callback) {
  161. callback();
  162. }
  163. } else {
  164. ResponseError(response);
  165. }
  166. },
  167. * editCustomerInfo({payload, callback}, {call, put}) {
  168. const response = yield call(customer.editCustomerInfo, payload);
  169. if (!response.code) {
  170. if (callback) {
  171. callback();
  172. }
  173. } else {
  174. ResponseError(response);
  175. }
  176. },
  177. * fetchCustomerDetail({payload, callback}, {call, put}) {
  178. const response = yield call(customer.queryCustomerDetail, payload);
  179. if (response.id) {
  180. yield put(createAction('queryList')({customerDetail: response}));
  181. } else {
  182. ResponseError(response);
  183. }
  184. },
  185. * addCustomerProject({payload, callback}, {call, put}) {
  186. const response = yield call(customer.addCustomerProject, payload);
  187. if (!response.code) {
  188. callback()
  189. } else {
  190. ResponseError(response);
  191. }
  192. },
  193. },
  194. subscriptions: {
  195. setup({dispatch}) {
  196. //dispatch({ type: 'loadStorage' })
  197. },
  198. },
  199. };