| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- import { message } from 'antd'
- import * as service from '../services/index'
- import URLS from '../constants/url'
- export default {
- namespace: 'userGroup',
- state: {
- originData: {
- list: [],
- selectedGroup: null,
- filterLabel: '',
- newOne: {}
- }
- },
- reducers: {
- list(state, action) {
- const { list } = action;
- return { ...state, list };
- },
- add(state, action) {
- const { group } = action;
- let list = state.list;
- list.push(group);
- return Object.assign({}, state, {list});
- },
- modify(state, action) {
- const { group } = action;
- let list = state.list;
- list = list.map(l => {
- if(l.code === group.code) {
- l.name = group.name;
- l.description = group.description;
- }
- return l;
- });
- return Object.assign({}, state, {list});
- },
- delete(state, action) {
- const { group } = action;
- let list = state.list;
- for(let i = 0; i < list.length; i ++) {
- if(list[i].code === group.code) {
- list.splice(i, 1);
- break;
- }
- }
- return Object.assign({}, state, {list});
- },
- setMemberList(state, action) {
- const { groupCode, memberList } = action;
- let list = state.list;
- list = list.map(l => {
- if(l.code === groupCode) {
- l.member = memberList
- }
- return l;
- });
- return Object.assign({}, state, {list});
- },
- setFilterLabel(state, action) {
- const { label } = action;
- return { ...state, filterLabel: label};
- },
- setNewModelField(state, action) {
- const { name, value } = action;
- let newOne = state.newOne;
- newOne[name] = value;
- return Object.assign({}, state, { newOne });
- },
- setNewModelFields(state, action) {
- const { fields } = action;
- let newOne = state.newOne;
- for(let i = 0; i < fields.length; i++) {
- newOne[fields[i]['name']] = fields[i]['value'];
- }
- return Object.assign({}, state, {newOne});
- },
- setNewModel(state, action) {
- const { model } = action;
- let newOne = Object.assign({}, model);
- return Object.assign({}, state, {newOne});
- },
- resetNewModel(state, action) {
- return { ...state, newOne: {} };
- },
- setSelectedGroup(state, action) {
- const { group } = action;
- return { ...state, selectedGroup: group };
- },
- reset(state, action) {
- let newState = Object.assign({}, state, state.originData);
- return Object.assign({}, newState);
- },
- },
- effects: {
- *fetchList(action, { put, call, select }) {
- const userGroup = yield select(state => state.present.userGroup);
- const { mandatory, autoSelect } = action;
- try {
- if(!mandatory && userGroup.list.length > 0) {
- return;
- }
- const res = yield call(service.fetch, {
- url: URLS.USERGROUP_LIST,
- });
- console.log('请求用户组列表', res);
- if(!res.err && res.data.code > 0) {
- const list = res.data.data.map(d => ({
- code: d.id + '',
- name: d.userGroupName,
- description: d.userGroupNote,
- createTime: new Date(d.createDate),
- member: []
- }));
- yield put({ type: 'list', list: list.sort((a, b) => a.createTime - b.createTime) });
- yield autoSelect && put({ type: 'changeSelectedGroup', group: list[0] });
- }else {
- console.log(res.err || res.data.msg);
- message.error('请求用户组列表失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(e);
- message.error('请求用户组列表失败: ' + e);
- }
- },
- *remoteAdd(action, { put, call, select }) {
- try {
- const userGroup = yield select(state => state.present.userGroup);
- const { newOne } = userGroup;
- let body = {
- userGroupName: newOne.name,
- userGroupNote: newOne.description
- };
- const res = yield call(service.fetch, {
- url: URLS.USERGROUP_ADD,
- body: body
- });
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'add', group: {
- code: res.data.data + '',
- name: newOne.name,
- description: newOne.description,
- member: []
- } });
- yield put({ type: 'setNewModelField', name: 'visibleDetailBox', value: false });
- yield put({ type: 'resetNewModel' });
- message.success('新增成功');
- }else {
- message.error('新增失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(e);
- message.error('新增失败: ' + e);
- }
- },
- *remoteModify(action, { put, call, select }) {
- const userGroup = yield select(state => state.present.userGroup);
- const { newOne } = userGroup;
- const body = {
- id: newOne.code,
- userGroupName: newOne.name,
- userGroupNote: newOne.description
- };
- try {
- const res = yield call(service.fetch, {
- url: URLS.USERGROUP_UPDATE,
- body
- });
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'modify', group: newOne });
- yield put({ type: 'setNewModelField', name: 'visibleDetailBox', value: false });
- message.success('修改成功');
- }else {
- message.error('修改失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(body, e);
- message.error('修改失败: ' + e);
- }
- },
- *remoteDelete(action, { put, call, select }) {
- const { group } = action;
- try {
- const res = yield call(service.fetch, {
- url: URLS.USERGROUP_DELETE,
- body: [group.code]
- });
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'delete', group });
- const userGroup = yield select(state => state.present.userGroup);
- const { list } = userGroup;
- yield put({ type: 'changeSelectedGroup', group: list[0] });
- message.success('删除成功');
- }else {
- message.error('删除失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log([group.code], e);
- message.error('删除失败: ' + e);
- }
- },
- *changeSelectedGroup(action, { put, call, select }) {
- const { group } = action;
- if(!group) {
- yield put({ type: 'setSelectedGroup', group: null });
- return
- }
- yield put({ type: 'remoteMemberList', groupCode: group.code });
- const userGroup = yield select(state => state.present.userGroup);
- const { list } = userGroup;
- yield put({ type: 'setSelectedGroup', group: list.filter(l => l.code === group.code)[0] });
- },
- *remoteMemberList(action, { put, call, select }) {
- const { groupCode, mandatory } = action;
- const userGroup = yield select(state => state.present.userGroup);
- const { list } = userGroup;
- const group = list.filter(l => l.code === groupCode)[0];
- if(!mandatory && group && group.member.length > 0) {
- return;
- }
- try {
- const res = yield call(service.fetch, {
- url: URLS.USERGROUP_MEMBER_LIST,
- body: groupCode
- });
- console.log('请求用户组成员列表', groupCode, res);
- if(!res.err && res.data.code > 0) {
- const memberList = res.data.data.map(d => ({
- code: d.id + '',
- name: d.name,
- role: d.role
- }));
- yield put({ type: 'setMemberList', groupCode, memberList });
- }else {
- message.error('请求用户组成员列表失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(groupCode, e);
- message.error('请求用户组成员列表失败: ' + e);
- }
- },
- *remoteMemberAdd(action, { put, call, select }) {
- const { userList, group } = action;
- const body = {
- userList: userList.map(u => u.code),
- userGroupId: group.code
- };
- try {
- const res = yield call(service.fetch, {
- url: URLS.USERGROUP_MEMBER_ADD,
- body
- });
- console.log('添加用户组成员', body, res);
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'remoteMemberList', groupCode: group.code, mandatory: true });
- yield put({ type: 'setNewModelField', name: 'visibleAddMemberBox', value: false });
- }else {
- message.error('添加失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(body, e);
- message.error('添加失败: ' + e);
- }
- },
- *remoteMemberDelete(action, { put, call, select }) {
- const { userCode, groupCode } = action;
- const body = {
- userList: [userCode],
- userGroupId: groupCode
- };
- try {
- const res = yield call(service.fetch, {
- url: URLS.USERGROUP_MEMBER_DELETE,
- body
- });
- console.log('删除用户组成员', body, res);
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'remoteMemberList', groupCode, mandatory: true });
- }else {
- message.error('删除失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(body, e);
- message.error('删除失败: ' + e);
- }
- },
- },
- subscriptions: {
- setup({ dispatch, history }) {
- dispatch({ type: 'reset' });
- }
- }
- };
|