123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS,
- REMOVE_ASSESS_ITEMS,CLEAR_INDEX_DATA,SET_CHRONIC_CALCU_RESULT,ADD_WHOLE_SCALE_ITEMS,SET_CALCU_VALUES,CLEAR_ASSESS_RESULT_VALUE} from '@types/assessResult';
- import config from "@config";
- const init = {
- data:{}, //评估模块数据
- indexData:{}, //评估图表数据
- indexNames:{},
- indexTimeTypes:{}, //单个图表选中的维度
- wholeAssess:[], //整体评估数据
- wholeIndexs:{}, //已加入的评估数据的index,加入按钮状态用
- wholeAssessText:{}, //整体评估补充说明
- chooseSelecteds:{}, //选项勾选状态
- wholeResults:{
- possible:{},
- radioVal:{}
- }, //可能结果
- calcuResult:{}, //计算公式结果
- calcuValues:{}, //计算公式填的值
- wholeScaleItems:{}, //全部量表中添加的整体评估项
- addedScaleIds:[]
- };
- export default (state=init,action)=>{
- const res = Object.assign({},state);
- const {data,range,index,rangeType,pindex,getNew} = action;
- switch (action.type){
- case SET_ASSESS_DATA:
- res.data[action.name] = action.data;
- res.update1 = Math.random();
- return res;
- case SET_INDEX_DATA:
- res.indexData[range[0]+range[1]] = data.obj;
- res.indexNames[range[0]+range[1]] = data.nameObj;
- Object.keys(data.obj||{}).map((i)=>{
- if(getNew){
- res.indexTimeTypes[pindex]=Object.assign({},res.indexTimeTypes[pindex],{[i]:config.chartDismen});
- }else{
- if(i===index){
- res.indexTimeTypes[pindex][i]=rangeType;
- }
- }
- });
- res.update = Math.random(); //对象更新
- return res;
- case CLEAR_INDEX_DATA: //删除图表数据,因为图表数据为记录,需实时更新
- res.indexData = {};
- res.indexTimeTypes = {};
- return res;
- case CLEAR_ASSESS_RESULT_VALUE:
- res.data = {};
- res.indexNames = {};
- res.addedScaleIds = [];
- res.calcuResult = {};
- res.calcuValues = {};
- res.wholeAssess = [];
- res.wholeIndexs = {};
- res.wholeResults = {};
- return res;
- case SET_INDEX_SUB_TYPE:
- if(!index){
- return res;
- }
- res.indexTimeTypes[index] = rangeType;
- res.update = Math.random(); //对象更新
- return res;
- case 'SAVE_POSSIBLE_RESULT':
- res.wholeResults = action.wholeResults||{};
- return res;
- case SET_SAVE_ASSESS_DATA:
- res.wholeIndexs = action.wholeAssessItems||{};
- res.addedScaleIds = action.addedScaleIds||[];
- res.wholeResults = action.wholeResults||{};
- res.wholeScaleItems = action.wholeScaleItems||{};
- res.wholeAssessText = action.wholeAssessText||{};
- res.chooseSelecteds = action.chooseSelecteds||{};
- res.calcuResult = action.calcuResult||{};
- res.calcuValues = action.calcuValues||{};
- return res;
- case ADD_ASSESS_ITEMS:
- res.wholeAssess[action.index] = action.data;
- let arr = res.wholeIndexs[action.index];
- res.wholeIndexs[action.index] = arr?[...arr,action.subIndex]:[action.subIndex];
- //已从全部量表中加入过,加入新的,删除原来的
- if(res.addedScaleIds.includes(action.id)){
- delete res.wholeScaleItems[action.id];
- }else{
- action.id?res.addedScaleIds.push(action.id):'';
- }
- res.update1 = Math.random(); //对象更新,与其他字段名不同因为绑定在pushItems,避免不必要的渲染
- return res;
- case ADD_WHOLE_SCALE_ITEMS: //从全部量表中加入量表
- res.wholeScaleItems[action.id] = action.data;
- //已从指标推送中添加过该量表,加入新的,删除原来的
- let inx = -1,subInx = -1;
- if(res.addedScaleIds.includes(action.id)){
- const inx = res.wholeAssess.findIndex((it)=>{
- subInx = it.details.findIndex((i)=>{
- return i.type==1&&i.content.conceptId==action.id;
- });
- return subInx!=-1;
- });
- if(inx!=-1){
- const trueInx = inx!=-1&&res.wholeIndexs[inx].findIndex((i)=>i==subInx);
- res.wholeIndexs[inx].splice(trueInx,1);
- }
- }else{
- res.addedScaleIds.push(action.id);
- }
- res.update1 = Math.random();
- return res;
- case REMOVE_ASSESS_ITEMS:
- const {index,pIndex} = action;
- const temp =[...res.wholeIndexs[pIndex]];
- res.wholeIndexs[pIndex].splice(temp.findIndex((i)=>i==index),1);
- return res;
- case SET_CHRONIC_CALCU_RESULT:
- if(action.id){
- res.calcuResult[action.id] = action.result;
- }else{
- res.calcuResult = action.data;
- }
- res.update1= Math.random();
- return res;
- case SET_CALCU_VALUES:
- if(action.id){
- res.calcuValues[action.id] = action.data;
- }else{
- res.calcuValues = action.data;
- }
- return res;
- default:
- return res;
- }
- }
|