| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758 |
- import { message } from 'antd'
- import * as service from '../services/index'
- import URLS from '../constants/url'
- import CHART_TYPE from './chartType.json'
- export default {
- namespace: 'chart',
- state: {
- originData: {
- list: [],
- filterLabel: '',
- groupList: [],
- currentGroup: [{
- code: 'all',
- label: '全部分组'
- }],
- groupDirty: false
- },
- },
- reducers: {
- add(state, action) {
- const { data } = action;
- let list = state.list;
- list.push(data);
- return Object.assign({}, state, {list});
- },
- list(state, action) {
- let list = action.list;
- return Object.assign({}, state, {list: list});
- },
- setFilterLabel(state, action) {
- const { label } = action;
- return Object.assign({}, state, {filterLabel: label});
- },
- groupList(state, action) {
- let data = action.data;
- return Object.assign({}, state, {groupList: data});
- },
- /**
- * 设置数据源过滤用分组
- */
- setCurrentGroup(state, action) {
- const { group1, group2 } = action;
- let g = [group1];
- group2 && g.push(group2);
- return Object.assign({}, state, {currentGroup: g});
- },
- addGroup(state, action) {
- const { group } = action;
- let list = state.groupList;
- list.push(group);
- return Object.assign({}, state, {groupList: list});
- },
- modifyGroup(state, action) {
- const { group } = action;
- let list = state.groupList;
- let dirty = false;
- for(let i = 0; i < list.length; i++) {
- let l = list[i];
- if(l.code === group.code) {
- for(let k in l) {
- if(group[k] !== undefined && l[k] !== group[k]) {
- l[k] = group[k];
- dirty = true;
- }
- }
- break;
- }
- }
- return Object.assign({}, state, {groupDirty: dirty, groupList: list});
- },
- modifyGroups(state, action) {
- const { groups } = action;
- let list = state.groupList;
- const modifyGroupCodes = groups.map(g => g.code);
- list = list.filter(l => modifyGroupCodes.indexOf(l.code) === -1);
- list = list.concat(groups);
- return Object.assign({}, state, {groupList: list});
- },
- deleteGroup(state, action) {
- const { group } = action;
- let list = state.groupList;
- for(let i = 0; i < list.length; i++) {
- let l = list[i];
- if(l.code === group.code) {
- list.splice(i, 1);
- break;
- }
- }
- return Object.assign({}, state, {groupList: list});
- },
- setGroupDirty(state, action) {
- let dirty = action.dirty;
- return Object.assign({}, state, {groupDirty: dirty});
- },
- /**
- * 设置图表所属分组
- */
- setChartGroup(state, action) {
- const { chartCode, groupCode } = action;
- let list = state.list;
- for(let i = 0; i < list.length; i++) {
- let l = list[i];
- if(l.code === chartCode) {
- l.groupCode = groupCode;
- break;
- }
- }
- return Object.assign({}, state, {list: list});
- },
- reset(state, action) {
- let newState = Object.assign({}, state, state.originData);
- return Object.assign({}, newState);
- },
- },
- effects: {
- *fetchList(action, { select, call, put }) {
- const { pageNum, pageSize } = action;
- const body = {
- pageNum: pageNum || 1,
- pageSize: pageSize || 999
- }
- try{
- const chart = yield select(state => state.present.chart);
- if(!action.mandatory && chart.list.length > 0) {
- return;
- }
- const res = yield call(service.fetch, {
- url: URLS.CHART_LIST,
- method: 'GET',
- body
- });
- if(!res.err && res.data.code > 0) {
- let list = res.data.data.list.map(d => {
- let chartOption = d.chartOption ? JSON.parse(d.chartOption) : {};
- return {
- code: d.chartId+'',
- name: d.chartName,
- dataSourceCode: d.dataId + '',
- dataSourceName: d.dataName,
- dataConnectCode: d.dataConnectionId,
- dataConnectName: d.dataConnectionName,
- access: d.authority === '1', // 权限
- database: d.dbStatus === '0', // 数据源是否还存在
- type: CHART_TYPE[d.chartType],
- creatorCode: d.createId + '',
- creatorName: d.createBy,
- createTime: d.createDate,
- description: d.describes || '',
- groupCode: d.chartsGroup + '',
- chartOption: chartOption,
- demo: d.demo
- }
- })
- yield put({ type: 'list', list: list });
- }else {
- message.error('请求图表列表失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- message.error('请求图表列表失败: ' + e);
- }
- },
- *remoteDetail(action, { select, call, put }) {
- const code = action.code;
- if(!code){
- return
- }
- try {
- const res = yield call(service.fetch, {
- url: URLS.CHART_DETAIL,
- method: 'GET',
- body: {
- id: code
- }
- });
- if(!res.err && res.data.code > 0) {
- let resData = res.data.data;
- let chartConfig = JSON.parse(resData.chartConfig || '{ "xAxis": { "column": {}, "granularity": {} }, "yAxis": { "column": {}, "gauge": {} } }');
- let styleConfig = JSON.parse(resData.style || '{}');
- let otherConfig = JSON.parse(resData.otherConfig || '{}');
- let viewType = CHART_TYPE[resData.chartType];
- let filters = JSON.parse(resData.filters || '[]');
- let chartOption = JSON.parse(resData.chartOption || '{}');
- let data = {
- code: resData.chartId + '',
- creatorCode: resData.createId+'',
- creatorName: resData.createBy,
- dataSourceCode: resData.dataId + '',
- dataSourceName: resData.dataName,
- dataConnectCode: resData.dataConnectionId,
- dataConnectName: resData.dataConnectionName,
- header: {
- label: resData.chartName
- },
- baseConfig: {
- dataSource: {
- code: resData.dataId + '',
- name: resData.dataName,
- },
- viewType: viewType
- },
- styleConfig: styleConfig,
- otherConfig: otherConfig,
- description: resData.describes,
- group: resData.chartsGroup+'',
- filters: filters,
- chartOption: chartOption,
- demo: resData.demo
- }
- if(viewType === 'bar') {
- data.barConfig = chartConfig;
- }else if(viewType === 'pie') {
- data.pieConfig = chartConfig;
- }else if(viewType === 'line') {
- data.lineConfig = chartConfig;
- }else if(viewType === 'scatter') {
- data.scatterConfig = chartConfig;
- }else if(viewType === 'aggregateTable') {
- data.aggregateTableConfig = chartConfig;
- }else if(viewType === 'dataView') {
- data.dataViewConfig = chartConfig;
- }
- let fields = [];
- for(let key in data) {
- fields.push({
- name: key,
- value: data[key]
- })
- }
- yield put({ type: 'chartDesigner/defaultChangeFields', fields: fields });
-
- yield put({ type: 'chartDesigner/changeDataSource', dataSource: data.baseConfig.dataSource });
- }else {
- message.error('解析图表错误: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- message.error('解析图表错误: ' + e);
- }
- },
- *remoteAdd(action, { select, call, put }) {
- try{
- const chartDesigner = yield select(state => state.present.chartDesigner);
- const { header, baseConfig, pieConfig, lineConfig, aggregateTableConfig, dataViewConfig,
- barConfig, scatterConfig, otherConfig, description, group, filters, chartOption } = chartDesigner;
- let body = {
- chartName: header.label,
- dataId: baseConfig.dataSource.code,
- describes: description,
- style: '{}',
- otherConfig: JSON.stringify(otherConfig),
- chartsGroup: group ? group : '-1',
- filters: JSON.stringify(filters),
- chartOption: JSON.stringify(chartOption),
- }; // 基本属性
- if(baseConfig.viewType === 'bar') {
- body.chartType = 'Histogram';
- body.chartConfig = JSON.stringify(barConfig);
- }else if(baseConfig.viewType === 'pie') {
- body.chartType = 'Pie';
- body.chartConfig = JSON.stringify(pieConfig);
- }else if(baseConfig.viewType === 'line') {
- body.chartType = 'Line';
- body.chartConfig = JSON.stringify(lineConfig);
- }else if(baseConfig.viewType === 'scatter') {
- body.chartType = 'scatter';
- body.chartConfig = JSON.stringify(scatterConfig);
- }else if(baseConfig.viewType === 'aggregateTable') {
- body.chartType = 'population';
- body.chartConfig = JSON.stringify(aggregateTableConfig);
- }else if(baseConfig.viewType === 'dataView') {
- body.chartType = 'individual';
- body.chartConfig = JSON.stringify(dataViewConfig);
- }else {
- body.chartType = '';
- body.chartConfig = JSON.stringify({});
- }
- const res = yield call(service.fetch, {
- url: URLS.CHART_ADD,
- body: body
- })
- console.log('新增图表', body, res);
- if(!res.err && res.data.code > 0) {
- message.success('新增成功');
- yield put({ type: 'fetchList', mandatory: true });
- }else {
- message.error('新增失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.error(e);
- message.error('新增失败: ' + e);
- }
- },
- *remoteModify(action, { select, call, put }) {
- try{
- const chartDesigner = yield select(state => state.present.chartDesigner);
- const { filters, code, header, baseConfig, pieConfig, lineConfig, aggregateTableConfig, dataViewConfig,
- barConfig, scatterConfig, otherConfig, description, group, chartOption, fetchConfig, styleConfig } = chartDesigner;
- let body = {
- chartId: code,
- filters: JSON.stringify(filters),
- chartName: header.label,
- dataId: baseConfig.dataSource.code,
- describes: description || '',
- style: JSON.stringify(styleConfig),
- otherConfig: JSON.stringify(otherConfig),
- chartsGroup: group+'' ? group : '-1',
- chartOption: JSON.stringify(chartOption),
- fetchConfig: JSON.stringify(fetchConfig),
- }; // 基本属性
- if(baseConfig.viewType === 'bar') {
- body.chartType = 'Histogram';
- body.chartConfig = JSON.stringify(barConfig);
- }else if(baseConfig.viewType === 'pie') {
- body.chartType = 'Pie';
- body.chartConfig = JSON.stringify(pieConfig);
- }else if(baseConfig.viewType === 'line') {
- body.chartType = 'Line';
- body.chartConfig = JSON.stringify(lineConfig);
- }else if(baseConfig.viewType === 'scatter') {
- body.chartType = 'scatter';
- body.chartConfig = JSON.stringify(scatterConfig);
- }else if(baseConfig.viewType === 'aggregateTable') {
- body.chartType = 'population';
- body.chartConfig = JSON.stringify(aggregateTableConfig);
- }else if(baseConfig.viewType === 'dataView') {
- body.chartType = 'individual';
- body.chartConfig = JSON.stringify(dataViewConfig);
- }
- console.log('body', body)
- const res = yield call(service.fetch, {
- url: URLS.CHART_UPDATE,
- body: body
- })
- console.log('修改图表', body, res);
- if(!res.err && res.data.code > 0) {
- message.success('修改成功');
- yield put({ type: 'fetchList', mandatory: true });
- }else {
- message.error('修改失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.error(e);
- message.error('修改失败: ' + e);
- }
- },
- *remoteDelete(action, { select, call, put, takeEvery, takeLatest }) {
- const chart = yield select(state => state.present.chart);
- const code = action.code;
- let list = chart.list;
- try {
- const res = yield call(service.fetch, {
- url: URLS.CHART_DELETE,
- body: code
- });
- console.log('删除图表', code, res);
- if(!res.err && res.data.code > 0) {
- for(let i = 0; i < list.length; i++) {
- if(list[i].code === code) {
- list.splice(i, 1);
- break;
- }
- }
- yield put({ type: 'list', list: list });
- message.success('删除成功');
- }else {
- message.error('删除失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(e);
- message.error('删除失败: ' + e);
- }
- },
-
- *remoteGroupList(action, { select, call, put }) {
- try {
- const chart = yield select(state => state.present.chart);
- if(!action.mandatory && chart.groupList.length > 0) {
- return;
- }
- const res = yield call(service.fetch, {
- url: URLS.GROUP_CHART_LIST,
- });
-
- console.log('请求图表分组列表', res);
- if(!res.err && res.data.code > 0) {
- const resData = res.data.data;
- let data = resData.map(d => {
- return {
- code: d.id+'',
- pcode: d.fatherId+'',
- index: +d.groupIndex,
- label: d.groupName+'',
- }
- });
- yield put({ type: 'groupList', data });
- }else {
- message.error('读取图表分组列表错误: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(e);
- message.error('读取图表分组列表错误: ' + e);
- }
- },
- /**
- * 新增分组/子分组,需要传入父节点code
- */
- *remoteAddGroup(action, { select, call, put }) {
- try {
- const chart = yield select((state) => state.present.chart);
- const group = chart.groupList;
- const pgroups = group.filter(g => g.pcode === '-1');
- const cgroups = group.filter(g => g.pcode !== '-1');
- const { pgroup } = action;
- let body = {};
- if(pgroup) {
- body = {
- fatherId: pgroup.code,
- groupName: '新子分组',
- groupIndex: cgroups.filter(c => c.pcode === pgroup.code).length,
- }
- }else {
- body = {
- fatherId: '-1',
- groupName: '新分组',
- groupIndex: pgroups.length,
- }
- }
- console.log('新增图表分组', body);
- const res = yield call(service.fetch, {
- url: URLS.GROUP_CHART_ADD,
- body: body
- });
- console.log('新增图表分组', body, res);
- if(!res.err && res.data.code > 0) {
- let group = {
- code: res.data.data + '',
- pcode: body.fatherId + '',
- index: body.groupIndex,
- label: body.groupName+'',
- }
- yield put({ type: 'addGroup', group });
- }else {
- message.error('添加分组失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(e);
- message.error('添加分组失败: ' + e);
- }
- },
- /**
- * 修改单个分组信息(因为不涉及顺序号的修改,所以一般只用于label的修改)
- */
- *remoteModifyGroup(action, { select, call, put }) {
- try {
- const chart = yield select((state) => state.present.chart);
- const groupDirty = chart.groupDirty;
- const group = action.group;
- if(!groupDirty) { // 如果属性无改动则取消修改请求
- return;
- }
- let body = {
- id: group.code,
- fatherId: group.pcode,
- groupName: group.label,
- groupIndex: group.index,
- }
- const res = yield call(service.fetch, {
- url: URLS.GROUP_CHART_UPDATE,
- body: body
- });
- console.log('修改图表分组', body, res);
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'setGroupDirty', dirty: false });
- }else {
- message.error('修改分组失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(e);
- message.error('修改分组失败: ' + e);
- }
- },
- /**
- * 批量修改多个分组信息(在移动位置时用)
- */
- *remoteModifyGroups(action, { select, call, put }) {
- try {
- const groups = action.groups;
- let body = groups.map(g => {
- return {
- id: g.code,
- groupName: g.label,
- groupIndex: g.index,
- fatherId: g.pcode,
- }
- });
- const res = yield call(service.fetch, {
- url: URLS.GROUP_CHART_LIST_UPDATE,
- body: body
- });
- console.log('批量修改图表分组', body, res);
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'modifyGroups', groups: groups });
- }else {
- message.error('修改分组失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(e);
- message.error('修改分组失败: ' + e);
- }
- },
- *remoteDeleteGroup(action, { select, call, put }) {
- try {
- const chart = yield select((state) => state.present.chart);
- const groupList = chart.groupList;
- const { group } = action;
- let bgroups = groupList.filter(l => l.pcode === group.pcode);
- bgroups.splice(group.index, 1);
- bgroups = bgroups.map((b, i) => {
- return { ...b, index: i }
- });
- yield put({ type: 'remoteModifyGroups', groups: bgroups });
- const res = yield call(service.fetch, {
- url: URLS.GROUP_CHART_DELETE,
- body: group.code
- });
-
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'deleteGroup', group});
- }else {
- message.error('删除分组失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- message.error('删除分组失败: ' + e);
- }
- },
- *remoteMoveGroup(action, { select, call, put }) {
- try {
- const { dragCode, dropCode, dropPosition } = action;
- const chart = yield select((state) => state.present.chart);
- let group = chart.groupList;
- const dragGroup = group.filter(g => g.code === dragCode)[0];
- const dropGroup = group.filter(g => g.code === dropCode)[0];
- let modifyGroups = [];
- if((dragGroup.pcode === '-1' || dropGroup.pcode === '-1') && (dragGroup.pcode !== dropGroup.pcode)) { // 跨级
- console.log('跨级');
- if(dropGroup.pcode !== '-1') { // 从父级到子级
- console.log('error');
- return; // 不允许
- }else { // 从子级到父级
- if(dragGroup.pcode === dropGroup.code) { // 不跨组
- if(dropPosition === -1) { // 目标前
- console.log('before');
- let dragGroups = group.filter(g => g.pcode === dragGroup.pcode).sort((a, b) => a.index - b.index);
- let dropGroups = group.filter(g => g.pcode === dropGroup.pcode).sort((a, b) => a.index - b.index);
- dragGroups.splice(dragGroup.index, 1);
- dragGroups = dragGroups.map((g, i) => {
- return { ...g, index: i }
- });
- dropGroups.splice(dropGroup.index, 0, dragGroup);
- dropGroups = dropGroups.map((g, i) => {
- return { ...g, index: i, pcode: dropGroup.pcode }
- });
- modifyGroups = modifyGroups.concat(dragGroups, dropGroups);
- }else if(dropPosition === 0) { // 目标内
- console.log('nothing');
- return; // 无变化
- }else if(dropPosition === 1) { // 目标后
- console.log('after');
- let dragGroups = group.filter(g => g.pcode === dragGroup.pcode).sort((a, b) => a.index - b.index);
- let dropGroups = group.filter(g => g.pcode === dropGroup.pcode).sort((a, b) => a.index - b.index);
- dragGroups.splice(dragGroup.index, 1);
- dragGroups = dragGroups.map((g, i) => {
- return { ...g, index: i }
- });
- dropGroups.splice(dropGroup.index + 1, 0, dragGroup);
- dropGroups = dropGroups.map((g, i) => {
- return { ...g, index: i, pcode: dropGroup.pcode }
- });
- modifyGroups = modifyGroups.concat(dragGroups, dropGroups);
- }
- }else { // 跨组
- let dragGroups = group.filter(g => g.pcode === dragGroup.pcode).sort((a, b) => a.index - b.index);
- let dropGroups = group.filter(g => g.pcode === dropGroup.pcode).sort((a, b) => a.index - b.index);
- let dropChildrenGroups = group.filter(g => g.pcode === dropGroup.code).sort((a, b) => a.index - b.index);
-
- dragGroups.splice(dragGroup.index, 1);
- dragGroups = dragGroups.map((g, i) => {
- return { ...g, index: i }
- });
- if(dropPosition === -1) { // 目标前
- console.log('before');
- dropGroups.splice(dropGroup.index, 0, dragGroup);
- dropGroups = dropGroups.map((g, i) => {
- return { ...g, index: i, pcode: dropGroup.pcode }
- });
- modifyGroups = modifyGroups.concat(dragGroups, dropGroups);
- }else if(dropPosition === 0) { // 目标内
- console.log('in');
- dropChildrenGroups.push({
- ...dragGroup,
- index: dropChildrenGroups.length,
- pcode: dropGroup.code
- });
- modifyGroups = modifyGroups.concat(dragGroups, dropChildrenGroups);
- }else if(dropPosition === 1) { // 目标后
- console.log('after');
- dropGroups.splice(dropGroup.index + 1, 0, dragGroup);
- dropGroups = dropGroups.map((g, i) => {
- return { ...g, index: i, pcode: dropGroup.pcode }
- });
- modifyGroups = modifyGroups.concat(dragGroups, dropGroups);
- }
- }
- }
- }else { // 不跨级
- console.log('不跨级');
- if(dragGroup.pcode === dropGroup.pcode) { // 不跨组
- console.log('不跨组');
- let dGroups = group.filter(g => g.pcode === dragGroup.pcode).sort((a, b) => a.index - b.index);
- dGroups.splice(dragGroup.index, 1, {code: 'temp', index: dragGroup.index});
- if(dropPosition === -1) { // 目标前
- console.log('before');
- dGroups.splice(dropGroup.index, 0, dragGroup);
- dGroups = dGroups.filter(g => g.code !== 'temp').map((g, i) => {
- return { ...g, index: i }
- });
- modifyGroups = modifyGroups.concat(dGroups);
- }else if(dropPosition === 0) { // 目标内
- console.log('in');
- return;
- }else if(dropPosition === 1) { // 目标后
- console.log('after');
- dGroups.splice(dropGroup.index + 1, 0, dragGroup);
- dGroups = dGroups.filter(g => g.code !== 'temp').map((g, i) => {
- return { ...g, index: i }
- });
- modifyGroups = modifyGroups.concat(dGroups);
- }
- }else { // 跨组
- console.log('跨组');
- let dragGroups = group.filter(g => g.pcode === dragGroup.pcode).sort((a, b) => a.index - b.index);
- let dropGroups = group.filter(g => g.pcode === dropGroup.pcode).sort((a, b) => a.index - b.index);
-
- dragGroups.splice(dragGroup.index, 1);
- dragGroups = dragGroups.map((g, i) => {
- return { ...g, index: i }
- });
- for(let i = 0; i < dropGroups.length; i++) {
- if(dropGroups[i].code === dropGroup.code) {
- if(dropPosition === -1) { // 目标前
- console.log('before');
- dropGroups.splice(i, 0, dragGroup);
- dropGroups = dropGroups.map((g, i) => {
- return { ...g, index: i, pcode: dropGroup.pcode }
- });
- modifyGroups = modifyGroups.concat(dragGroups, dropGroups);
- }else if(dropPosition === 0) { // 目标内
- console.log('in');
- return; // 不允许
- }else if(dropPosition === 1) { // 目标后
- console.log('after');
- dropGroups.splice(i + 1, 0, dragGroup);
- dropGroups = dropGroups.map((g, i) => {
- return { ...g, index: i, pcode: dropGroup.pcode }
- });
- modifyGroups = modifyGroups.concat(dragGroups, dropGroups);
- }
- break;
- }
- }
- }
- }
- console.log(dragGroup, dropGroup, modifyGroups);
- yield put({ type: 'remoteModifyGroups', groups: modifyGroups });
- }catch(e) {
- console.log(e);
- message.error('位置调整失败: ' + e);
- }
- },
- /**
- * 设置图表所属分组
- */
- *remoteSetChartGroup(action, { select, call, put }) {
- const { chart, group } = action;
- const chartCode = chart.code;
- const groupCode = group.code;
- try {
- let body = {
- id: chartCode,
- groupId: groupCode
- }
- let res = yield call(service.fetch, {
- url: URLS.GROUP_CHART_SET_GROUP,
- body: body
- });
- console.log('设置图表所属分组', body, res);
- if(!res.err && res.data.code > 0) {
- yield put({ type: 'setChartGroup', chartCode, groupCode });
- }else {
- message.error('设置分组失败: ' + (res.err || res.data.msg));
- }
- } catch(e) {
- console.log(e);
- message.error('设置分组失败: ' + e);
- }
- },
- *transfer(action, { put, call, select }) {
- const { userCode, chartCode } = action;
- const body = {
- userId: userCode,
- id: chartCode
- };
- try {
- const res = yield call(service.fetch, {
- url: URLS.CHART_TRANSFER,
- body
- });
- console.log('图表移交', body, res);
- if(!res.err && res.data.code > 0) {
- const chart = yield select(state => state.present.chart);
- const list = chart.list;
- for(let i = 0; i < list.length; i++) {
- if(list[i].code === chartCode) {
- list.splice(i, 1);
- break;
- }
- }
- yield put({ type: 'list', list });
- message.success('移交成功');
- }else {
- console.log(body, (res.err || res.data.msg));
- message.error('移交失败: ' + (res.err || res.data.msg));
- }
- }catch(e) {
- console.log(body, e);
- message.error('移交失败: ' + e);
- }
- },
- },
- subscriptions: {
- setup({ dispatch, history }) {
- dispatch({ type: 'reset' });
- }
- }
- }
|