Browse Source

血压类型子标签无值不显示在预览中197,单选带输入组件处理函数提取

zhouna 5 years ago
parent
commit
2ab8e318eb

+ 11 - 78
src/store/actions/checkBody.js

@@ -89,10 +89,10 @@ export function setNumberValue(state,action){
   // const subInx = ikey.substr(ikey.length-1);
   const subInx = ikey.split("-")[2];
   let item = res.data[labelInx];
-  if(+item.tagType===1){
+  if(+item.tagType===1){      //独立数字键盘组件
     item.value = param.text;
     res.saveText[labelInx] = param.text?item.labelPrefix+param.text+item.labelSuffix:'';
-  }else{
+  }else{            //内嵌血压类型组件的数字键盘组件
     item.questionMapping[subInx].value = param.text;
     let hasValue = false;
     const sub = item.questionMapping.map((it)=>{
@@ -102,6 +102,9 @@ export function setNumberValue(state,action){
       if(it.tagType===8){
         return it.name;
       }else{
+        if(!it.value){
+          return '';
+        }
         return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
       }
       
@@ -118,7 +121,7 @@ export function setRadioValue(state,action){
   let res = Object.assign({},state);
   const {ikey,id,text} = action;
   let labelInx = getLabelIndex(ikey);
-  const subInx = ikey.substr(ikey.length-1);
+  const subInx = ikey.split("-")[2];
   let item = res.data[labelInx];
   if(typeof text != 'string'){    //需要展开项--有无治疗类型
     const len = +item.copyType === 0?1:0;
@@ -139,7 +142,7 @@ export function setRadioValue(state,action){
         its.selected = false;
       }
     });
-    res.saveText[labelInx] = item.labelPrefix+text+item.labelSuffix;
+    res.saveText[labelInx] = text;       //单选没有前后缀
   }else{      //组合组件中的单选组件
     item.questionMapping[subInx].value = text;
     let hasValue = false;
@@ -158,6 +161,9 @@ export function setRadioValue(state,action){
       if(it.tagType===8){
         return it.name;
       }else {
+        if(!it.value){
+          return '';
+        }
         return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
       }
       
@@ -168,80 +174,7 @@ export function setRadioValue(state,action){
   res.update = Math.random();
   return res;
 }
-//单选带输入值保存
-export const setRadioInputValue = (state,action)=>{
-  const res = Object.assign({},state);
-  const {ikey,values,id} = action.data;
-  let index = getLabelIndex(ikey);
-  let innerInx = ikey.substr(ikey.length-1);
-  let item = res.data[index];
-  if(item.tagType!=1){      //在组合项中
-    item = res.data[index].questionMapping[innerInx];
-  }
-  let str='',temp='',obj=item.questionDetailList;
-  if(!values){    //清空
-    let sld=obj.find((item)=>{
-      return item.selected==true;
-    });
-    sld?sld.selected=false:'';
-    item.vals = null;
-    item.value = '';
-    if(res.data[index].tagType==3){
-      let hasValue = false;
-      const sub = res.data[index].questionMapping.map((it)=>{
-        if(it.value){     //至少有一个子值才黑显
-          hasValue = true;
-        }
-        if(it.tagType===8){
-          return it.name;
-        }else {
-          return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-        }
-      });
-      res.saveText[index] = hasValue?sub.join(''):'';
-    }else{
-      res.saveText[index] = '';
-    }
-    res.update = Math.random();
-    return res;
-  }
-  for(let i in values){
-    temp = values[i];
-    if(typeof temp=='object'){
-      str+=temp.value;
-    }else{
-      str+=temp;
-    }
-  }
-  //选中状态
-  if(id){
-    obj.map((its)=>{
-      if(its.id === id){
-        its.selected = true;
-      }else{
-        its.selected = false;
-      }
-    });
-  }
-  item.vals = values;
-  item.value = str;
-  if(res.data[index].tagType!=1){
-    let hasValue = false;
-    const sub = res.data[index].questionMapping.map((it)=>{
-      if(it.tagType===8){
-        return it.name;
-      }else {
-        return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-      }
-      
-    });
-    res.saveText[index] = sub.join('');
-  }else {
-    res.saveText[ikey] = str;
-  }
-  res.update = Math.random();
-  return res;
-}
+
 //复制标签(如血压)事件
 export function addLabelItem(state,action){
   let res = Object.assign({},state);

+ 0 - 70
src/store/actions/currentIll.js

@@ -448,11 +448,6 @@ export function setRadioValue(state,action){
   let labelInx = getLabelIndex(ikey);
   const subInx = ikey.split("-")[2];
   let item = res.data[labelInx];
-  if(typeof text != 'string'){    //需要展开项--有无治疗类型
-    const len = +item.copyType === 0?1:0;
-    res.data.splice(labelInx,len,text);
-    return res;
-  }
   if(+item.tagType===1){
     item.value = text;
     res.saveText[labelInx] = item.labelPrefix+text+item.labelSuffix;
@@ -496,71 +491,6 @@ export function setRadioValue(state,action){
   res.update = Math.random();
   return res;
 }
-//单选带输入值保存
-export const setRadioInputValue = (state,action)=>{
-  const res = Object.assign({},state);
-  const {ikey,values,id} = action.data;
-  let index = getLabelIndex(ikey);
-  let innerInx = ikey.split("-")[2];
-  let item = res.data[index];
-  if(item.tagType!=1){      //在组合项中
-    item = res.data[index].questionMapping[innerInx];
-  }
-  let str='',temp='',obj=item.questionDetailList;
-  if(!values){    //清空
-    let sld=obj.find((item)=>{
-      return item.selected==true;
-    });
-    sld?sld.selected=false:'';
-    item.vals = null;
-    item.value = '';
-    if(res.data[index].tagType!=1){
-      let hasValue = false;
-      const sub = res.data[index].questionMapping.map((it)=>{
-        if(it.value){     //至少有一个子值才黑显
-          hasValue = true;
-        }
-        return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-      });
-      res.saveText[index] = hasValue?sub.join(''):'';
-    }else{
-      res.saveText[index] = '';
-    }
-    res.update = Math.random();
-    return res;
-  }
-  for(let i in values){
-    temp = values[i];
-    if(typeof temp=='object'){
-      str+=temp.value;
-    }else{
-      str+=temp;
-    }
-  }
-  //选中状态
-  if(id){
-    obj.map((its)=>{
-      if(its.id === id){
-        its.selected = true;
-      }else{
-        its.selected = false;
-      }
-    });
-  }
-  item.vals = values;
-  item.value = str;
-  if(res.data[index].tagType!=1){
-    let hasValue = false;
-    const sub = res.data[index].questionMapping.map((it)=>{
-      return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-    });
-    res.saveText[index] = sub.join('');
-  }else {
-    res.saveText[index] = str;
-  }
-  res.update = Math.random();
-  return res;
-}
 
 //双击标签输入改变值
 export const changeLabelVal = (state,action)=>{

+ 18 - 79
src/store/actions/mainSuit.js

@@ -579,9 +579,8 @@ export function setNumberValue(state,action){
   const param = action.params;
   const index = param.ikey;
   let labelInx = getLabelIndex(index);
-  const subInx = index.split("-")[2];//index.substr(index.length-1);
+  const subInx = index.split("-")[2];
   let item = res.data[labelInx];
-  // if(param.text.trim()){
     if(+item.tagType===1){
       item.value = param.text;
       res.saveText[labelInx] = param.text?item.labelPrefix+param.text+item.labelSuffix:'';
@@ -592,16 +591,19 @@ export function setNumberValue(state,action){
         if(it.value){     //至少有一个子值才黑显
           hasValue = true;
         }
-        return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
+        if(it.tagType===8){
+          return it.name;
+        }else{
+          if(!it.value){
+            return '';
+          }
+          return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
+        }
       });
       // res.saveText[labelInx] = sub.join(',');
       res.saveText[labelInx] = hasValue?sub.join(''):'';
       item.value = sub.join('');
     }
-  /*}else{//删除完标签内容则删除该标签
-    res.data.splice(labelInx,1);
-    res.saveText = fullfillText(res.data).saveText;
-  }*/
   res.update = Math.random();
   return res;
 }
@@ -611,13 +613,8 @@ export function setRadioValue(state,action){
   let res = Object.assign({},state);
   const {ikey,id,text} = action;
   let labelInx = getLabelIndex(ikey);
-  const subInx = ikey.split("-")[2]//ikey.substr(ikey.length-1);
+  const subInx = ikey.split("-")[2];
   let item = res.data[labelInx];
-  if(typeof text != 'string'){    //需要展开项--有无治疗类型
-    const len = +item.copyType === 0?1:0;
-    res.data.splice(labelInx,len,text);
-    return res;
-  }
   if(+item.tagType===1){
     item.value = text;
     res.saveText[labelInx] = item.labelPrefix+text+item.labelSuffix;
@@ -644,7 +641,14 @@ export function setRadioValue(state,action){
       if(it.value){     //至少有一个子值才黑显
         hasValue = true;
       }
-      return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
+      if(it.tagType===8){
+        return it.name;
+      }else{
+        if(!it.value){
+          return '';
+        }
+        return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
+      }
     });
     // res.saveText[labelInx] = sub.join(',');
     res.saveText[labelInx] = hasValue?sub.join(''):'';
@@ -654,71 +658,6 @@ export function setRadioValue(state,action){
   return res;
 }
 
-//单选带输入值保存
-export const setRadioInputValue = (state,action)=>{
-  const res = Object.assign({},state);
-  const {ikey,values,id} = action.data;
-  let index = getLabelIndex(ikey);
-  let innerInx = ikey.split("-")[2];//ikey.substr(ikey.length-1);
-  let item = res.data[index];
-  if(item.tagType!=1){      //在组合项中
-    item = res.data[index].questionMapping[innerInx];
-  }
-  let str='',temp='',obj=item.questionDetailList;
-  if(!values){    //清空
-    let sld=obj.find((item)=>{
-      return item.selected==true;
-    });
-    sld?sld.selected=false:'';
-    item.vals = null;
-    item.value = '';
-    if(res.data[index].tagType!=1){
-      let hasValue = false;
-      const sub = res.data[index].questionMapping.map((it)=>{
-        if(it.value){     //至少有一个子值才黑显
-          hasValue = true;
-        }
-        return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-      });
-      res.saveText[index] = hasValue?sub.join(''):'';
-    }else{
-      res.saveText[index] = '';
-    }
-    res.update = Math.random();
-    return res;
-  }
-  for(let i in values){
-    temp = values[i];
-    if(typeof temp=='object'){
-      str+=temp.value;
-    }else{
-      str+=temp;
-    }
-  }
-  //选中状态
-  if(id){
-    obj.map((its)=>{
-      if(its.id === id){
-        its.selected = true;
-      }else{
-        its.selected = false;
-      }
-    });
-  }
-  item.vals = values;
-  item.value = str;
-  if(res.data[index].tagType!=1){
-    let hasValue = false;
-    const sub = res.data[index].questionMapping.map((it)=>{
-      return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-    });
-    res.saveText[index] = sub.join('');
-  }else {
-    res.saveText[index] = str;
-  }
-  res.update = Math.random();
-  return res;
-}
 //双击标签输入改变值
 export const changeLabelVal = (state,action)=>{
   const res = Object.assign({},state);

+ 1 - 71
src/store/actions/otherHistory.js

@@ -56,13 +56,8 @@ export function setRadioValue(state,action){
   let res = Object.assign({},state);
   const {ikey,id,text} = action;
   let labelInx = getLabelIndex(ikey);
-  const subInx = ikey.substr(ikey.length-1);
+  const subInx = ikey.split("-")[2];
   let item = res.data[labelInx];
-  if(typeof text != 'string'){    //需要展开项--有无治疗类型
-    const len = +item.copyType === 0?1:0;
-    res.data.splice(labelInx,len,text);
-    return res;
-  }
   if(+item.tagType===1){
     item.value = text;
     res.saveText[labelInx] = item.labelPrefix+text+item.labelSuffix;
@@ -102,71 +97,6 @@ export function setRadioValue(state,action){
   return res;
 }
 
-//单选带输入值保存
-export const setRadioInputValue = (state,action)=>{
-  const res = Object.assign({},state);
-  const {ikey,values,id} = action.data;
-  let index = getLabelIndex(ikey);
-  let innerInx = ikey.substr(ikey.length-1);
-  let item = res.data[index];
-  if(item.tagType!=1){      //在组合项中
-    item = res.data[index].questionMapping[innerInx];
-  }
-  let str='',temp='',obj=item.questionDetailList;
-  if(!values){    //清空
-    let sld=obj.find((item)=>{
-      return item.selected==true;
-    });
-    sld?sld.selected=false:'';
-    item.vals = null;
-    item.value = '';
-    if(res.data[index].tagType!=1){
-      let hasValue = false;
-      const sub = res.data[index].questionMapping.map((it)=>{
-        if(it.value){     //至少有一个子值才黑显
-          hasValue = true;
-        }
-        return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-      });
-      res.saveText[index] = hasValue?sub.join(''):'';
-    }else{
-      res.saveText[index] = '';
-    }
-    res.update = Math.random();
-    return res;
-  }
-  for(let i in values){
-    temp = values[i];
-    if(typeof temp=='object'){
-      str+=temp.value;
-    }else{
-      str+=temp;
-    }
-  }
-  //选中状态
-  if(id){
-    obj.map((its)=>{
-      if(its.id === id){
-        its.selected = true;
-      }else{
-        its.selected = false;
-      }
-    });
-  }
-  item.vals = values;
-  item.value = str;
-  if(res.data[index].tagType!=1){
-    let hasValue = false;
-    const sub = res.data[index].questionMapping.map((it)=>{
-      return (it.labelPrefix||'')+(it.value||'')+(it.labelSuffix||'');
-    });
-    res.saveText[index] = sub.join('');
-  }else {
-    res.saveText[ikey] = str;
-  }
-  res.update = Math.random();
-  return res;
-}
 //数字键盘选中事件
 export function setNumberValue(state,action){
   let res = Object.assign({},state);

+ 2 - 1
src/store/reducers/checkBody.js

@@ -4,7 +4,8 @@ import {RECOVER_TAG_CHECK,SET,SETNUMBER4,SETSELECTED4,SETCHECKBOX,ADDLABELITEM,S
   CHECKBODY_MUL,DEL_CHECKBODY_LABLE,SET_CK_RADIO_INPUT_VAL,SET_IMPORT_CHECKBODY_LABEL,PRESET} from '../types/checkBody.js';
 import {recoveTag,set,setNumberValue,setRadioValue,setCheckBoxValue,addLabelItem,setCheckText,
   setSearchData,insertLabelData,changeLabelVal,clearCheckBody,setInputLabel,backspaceText,
-  changeNumLabelVal,confirm,multipleComfirn,delSingleLable,setRadioInputValue,setImportCheckbodyLabel,preSetCheckbody} from '../actions/checkBody.js';
+  changeNumLabelVal,confirm,multipleComfirn,delSingleLable,setImportCheckbodyLabel,preSetCheckbody} from '../actions/checkBody.js';
+import {setRadioInputValue} from '@utils/utils';
 import config from '@config/index.js';
 
 const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签

+ 3 - 1
src/store/reducers/currentIll.js

@@ -5,7 +5,9 @@ import {RECOVER_TAG_CURRENT,SET_CURRENT,CURRENT_CONFIRM,INSERT_PROCESS,SET_CURRE
   SETCURRENTINPUT,DEL_CURRENT,CURRENT_TEXT_LABEL_NUMBER,REMOVE_CURR_ID,CURRENT_MUL,DEL_CURRENT_LABLE,SET_RADIO_INPUT_VALUE,CURRENT_CHRONIC,SAVE_CURR_FREE} from '../types/currentIll';
 import {recoveTag,confirm,insertProcess,setData,setCheckBox,setRadioValue,setNumberValue,changeLabelVal,clearCurrentIll,
   setTextModeValue,setModule,bigDataSymptom,setCheckText,insertLabelData,clearCurrentEdit,addLabelItem,setInputLabel,
-  backspaceText,changeNumLabelVal,removeId,multipleComfirn,delSingleLable,setRadioInputValue,fillChronicModule} from '../actions/currentIll';
+  backspaceText,changeNumLabelVal,removeId,multipleComfirn,delSingleLable,fillChronicModule} from '../actions/currentIll';
+
+import {setRadioInputValue} from '@utils/utils';
 
 const initState = {
   moduleData:[],

+ 2 - 2
src/store/reducers/mainSuit.js

@@ -6,8 +6,8 @@ import {RECOVER_TAG_MAIN,COMM_SYMPTOMS,CLEAR_COMSYMPTOMS,SHOW_TAIL,INSERT_MAIN,
 import {recoveTag,getCommSymptoms,handleTailClick,insertMain,setSearch,getBigSymptom,setMainMoudle,confirm,
   setNumberValue,setRadioValue,commConfirm,changeLabelVal,saveFreeVal,clearMainSuit,insertSearch,setTextModeValue,setCheckText,
   addLabelItem,setInputLabel,backspaceText,changeNumLabelVal,removeId,multipleComfirn,delSingleLable,
-  getSymptomFeature,setRadioInputValue,chooseSearch} from '../actions/mainSuit'
-
+  getSymptomFeature} from '../actions/mainSuit'
+import {setRadioInputValue} from '@utils/utils';
 
 const initState = {
   showDrop:false,

+ 2 - 1
src/store/reducers/otherHistory.js

@@ -3,7 +3,8 @@ import {RECOVER_TAG_OTHER,SETDATA,CONFIRMSELECTED,SETRADIO,SETNUMBER,SETOTHERCHE
   OTHERADDLABELITEM,OTHEREDICLEAR,DEL_OTHERHIS,CHANGEOTHERTEXTLABEL_NUMBER,OTHERHIS_MUL,REMOVE_OTHER_ID,DEL_OTHERHIS_LABLE,SET_OT_RADIO_INPUT_VAL} from '../types/otherHistory';
 import {recoveTag,confirm,setRadioValue,setNumberValue,setCheckBoxValue,setCheckText,setSearchData,insertLabelData,clearOtherHistory,
   changeTextLabel,setOtherInput,setTextModeValue,addLabelItem,otherEditClear,backspaceText,changeNumLabelVal,multipleComfirn,
-  removeId,delSingleLable,setRadioInputValue} from '../actions/otherHistory';
+  removeId,delSingleLable} from '../actions/otherHistory';
+import {setRadioInputValue} from '@utils/utils';
 import config from '@config/index';
 
 const block = Object.assign(JSON.parse(config.textLabel),{full:true});//空白时保留一个自由文本标签

+ 51 - 0
src/utils/utils.js

@@ -0,0 +1,51 @@
+import config from '@config/index.js';
+import {getLabelIndex} from './tools';
+/**
+ * 各类标签统一的处理函数
+ *
+ * */
+
+
+//单选带输入值保存,该类型不可加入血压类型中
+export const setRadioInputValue = (state,action)=>{
+  const res = Object.assign({},state);
+  const {ikey,values,id} = action.data;
+  let index = getLabelIndex(ikey);
+  let item = res.data[index];
+  let str='',temp='',obj=item.questionDetailList;
+  if(!values){    //清空
+    let sld=obj.find((item)=>{
+      return item.selected==true;
+    });
+    sld?sld.selected=false:'';
+    item.vals = null;
+    item.value = '';
+    res.saveText[index] = '';
+    res.update = Math.random();
+    return res;
+  }
+  //存值
+  for(let i in values){
+    temp = values[i];
+    if(typeof temp=='object'){
+      str+=temp.value;
+    }else{
+      str+=temp;
+    }
+  }
+  //选中状态
+  if(id){
+    obj.map((its)=>{
+      if(its.id === id){
+        its.selected = true;
+      }else{
+        its.selected = false;
+      }
+    });
+  }
+  item.vals = values;
+  item.value = str;
+  res.saveText[index] = str;
+  res.update = Math.random();
+  return res;
+}