user.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { message } from 'antd'
  2. import * as service from '../services/index'
  3. import URLS from '../constants/url'
  4. export default {
  5. namespace: 'user',
  6. state: {
  7. originData: {
  8. list: [],
  9. newOne: {},
  10. filterLabel: ''
  11. },
  12. newOne: {}
  13. },
  14. reducers: {
  15. list(state, action) {
  16. const { list } = action;
  17. return { ...state, list }
  18. },
  19. setFilterLabel(state, action) {
  20. const { label } = action;
  21. return { ...state, filterLabel: label}
  22. },
  23. setNewModelFields(state, action) {
  24. const { fields } = action;
  25. let newOne = state.newOne;
  26. for(let i = 0; i < fields.length; i++) {
  27. newOne[fields[i]['name']] = fields[i]['value'];
  28. }
  29. delete newOne.invalid;
  30. return Object.assign({}, state, {newOne});
  31. },
  32. reset(state, action) {
  33. let newState = Object.assign({}, state, state.originData);
  34. return Object.assign({}, newState);
  35. },
  36. },
  37. effects: {
  38. *fetchList(action, { put, call, select }) {
  39. const user = yield select(state => state.present.user);
  40. try {
  41. if(!action.mandatory && user.list.length > 0) {
  42. return;
  43. }
  44. const res = yield call(service.fetch, {
  45. url: URLS.USER_LIST
  46. });
  47. console.log('请求用户列表', res);
  48. if(!res.err && res.data.code > 0) {
  49. const list = res.data.data.map(d => ({
  50. code: d.id+'',
  51. userName: d.userName,
  52. fullName: d.name,
  53. role: d.role === 'admin' ? '管理员' : '普通用户'
  54. }));
  55. yield put({ type: 'list', list });
  56. }else {
  57. message.error('请求用户列表失败: ' + (res.err || res.data.msg));
  58. }
  59. }catch(e) {
  60. console.log(e);
  61. message.error('请求用户列表失败: ' + e);
  62. }
  63. },
  64. *remoteModify(action, { put, call, select }) {
  65. const user = yield select(state => state.present.user);
  66. const { newOne } = user;
  67. const { fields } = action;
  68. const body = {
  69. id: newOne.code
  70. };
  71. for(let k in fields) {
  72. if(k !== 'id') {
  73. body[k] = fields[k]
  74. }
  75. }
  76. try {
  77. const res = yield call(service.fetch({
  78. url: URLS.USER_UPDATE,
  79. body
  80. }));
  81. console.log('修改用户信息', body, res);
  82. if(!res.err && res.data.code > 0) {
  83. message.success('修改成功');
  84. }else {
  85. console.log(body, (res.err || res.data.msg));
  86. message.error('修改失败: ' + (res.err || res.data.msg));
  87. }
  88. }catch(e) {
  89. console.log(body, e);
  90. message.error('修改失败: ' + e);
  91. }
  92. }
  93. },
  94. subscriptions: {
  95. setup({ dispatch, history }) {
  96. dispatch({ type: 'reset' });
  97. }
  98. }
  99. };