Przeglądaj źródła

量表不可重复加入

zhouna 6 lat temu
rodzic
commit
8ca661a038

+ 2 - 1
src/components/AssessResult/ScaleItem/index.jsx

@@ -269,13 +269,14 @@ class ScaleItem extends Component {
                     </MiniToast>
                   </div>;
         }
+        const passId = item.details[j].type==1?item.details[j].content.id:undefined;
         const li = disabled?<li>
             <span>{item.name}:</span>
             <div className={style['row']}>{temp}</div>
           </li>:<li>
           <span>{item.name}:</span>
           <div className={style['row']}>{temp}</div>
-          <div className={style["recommend"]} onClick={()=>this.props.handleRemove(false,i,j)}>
+          <div className={style["recommend"]} onClick={()=>this.props.handleRemove(false,i,j,passId)}>
             <img className={style["deleteIcon"]} src={deleteIcon} />
           </div>
         </li>;

+ 12 - 4
src/components/AssessResult/index.jsx

@@ -28,6 +28,7 @@ class AssessResult extends Component {
       },
       calcuResult:props.calcuResult,     //计算公式结果
       calcuValues:props.calcuValues,    //计算公式填的值
+      addedScaleIds:props.addedScaleIds,    //已加入量表的id
     };
     this.handleChooseChange = this.handleChooseChange.bind(this);
     this.handleScaleDel = this.handleScaleDel.bind(this);
@@ -47,22 +48,29 @@ class AssessResult extends Component {
         wholeAssessText:obj
       })
   }
-  handleScaleDel(isList,i,j){
+  handleScaleDel(isList,i,j,id){
+    let ids = [],idIndex='';
+    if(id){
+      ids = [...this.state.addedScaleIds||[]];
+      idIndex = ids.findIndex((ii)=>id==ii);
+      ids.splice(idIndex,1);
+    }
     if(isList){         //删除全部量表中的项目
       const items = [...this.state.wholeScaleItems];
       items.splice(i,1);
       this.setState({
-        wholeScaleItems: items
+        wholeScaleItems: items,
+        addedScaleIds:ids
       });
     }else{
       const items = Object.assign({},this.state.wholeAssessItems);
       const inx = items[i].findIndex(x=>x==j);
       items[i].splice(inx,1);
       this.setState({
-        wholeAssessItems: items
+        wholeAssessItems: items,
+        addedScaleIds:ids
       });
     }
-
   }
   handleResult(opt){
     const {wholeResults} = this.state.wholeResults;

+ 6 - 4
src/components/ChronicInfo/index.jsx

@@ -253,15 +253,16 @@ class ChronicInfo extends React.Component{
     }
   }
   getAddBtnState(flag,v,i,j){
-    const {indexs,wholeScaleItems,addScaleItems,chronicMagItem,chronicDesease} = this.props;
-    let btn = '';
+    const {indexs,wholeScaleItems,addScaleItems,chronicMagItem,chronicDesease,addedScaleIds} = this.props;
+    let btn = '',reCheck=false;
     let show = chronicMagItem&&chronicMagItem.name||chronicDesease&&chronicDesease.name;
     if(!show){
       return '';
     }
     if(flag){     //有结果
       if(j!==undefined){
-        btn = indexs[i]&&indexs[i].includes(j)?<span className={style["add-record"]}>
+        reCheck = addedScaleIds.includes(v.details[j].content.id);      //列表中是否加入同一量表
+        btn = indexs[i]&&indexs[i].includes(j)||reCheck?<span className={style["add-record"]}>
                    <img src={added} />
                    已加入
                  </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
@@ -269,7 +270,8 @@ class ChronicInfo extends React.Component{
                    加入病历记录
                  </span>;
       }else{
-        btn = wholeScaleItems&&wholeScaleItems[i]?<span className={style["add-record"]}>
+        reCheck = addedScaleIds.includes(v.id);         //推送中是否加入同一量表
+        btn = wholeScaleItems&&wholeScaleItems[i]||reCheck?<span className={style["add-record"]}>
                    <img src={added} />
                    已加入
                  </span>:<span className={style["listResult"]} onClick={()=>addScaleItems(v,i)}>

+ 1 - 1
src/components/DiagnosticList/index.jsx

@@ -234,7 +234,7 @@ class DiagnosticList extends Component {
         </div>;
         return(
                 <div className={style['diaglist-wrap']}>
-                    {list && (list.length > 0) && list.map((item, index) => {console.log(item)
+                    {list && (list.length > 0) && list.map((item, index) => {
                         const hasTreat = item.treat && (item.treat.commonTreatment.content || item.treat.surgeryTreatment.content || item.treat.treatment.length>0 ||(item.adverseReactions&&item.adverseReactions.length > 0)
                            || (item.drugHistory && item.drugHistory['慢病用药内容'] &&  item.drugHistory['慢病用药内容'].length > 0) || (item.drugHistory &&item.drugHistory['普通病用药内容'] &&  item.drugHistory['普通病用药内容'].length > 0) ||item.follow)
                         isChronic = chronicLine&&item.type==2&&chronicList.findIndex((it)=>it.id==item.id)!=-1;

+ 1 - 0
src/containers/AssessResult.js

@@ -32,6 +32,7 @@ function mapStateToProps(state) {
     timeTypes:assessResult.indexTimeTypes,    //图表切换的维度
     //wholeAssessData:assessResult.wholeAssess,   //评估内容
     wholeIndexs:assessResult.wholeIndexs||{},      //已加入评估记录的推送项
+    addedScaleIds:assessResult.addedScaleIds,      //已进入量表的id
     wholeResults:assessResult.wholeResults,     //整体评估可能结果
     chooseSelecteds:assessResult.chooseSelecteds,    //已选中的选项
     wholeAssessText:assessResult.wholeAssessText,     //整体评估补充说明

+ 4 - 1
src/containers/ChronicInfo.js

@@ -26,6 +26,7 @@ function mapStateToProps(state){
     calcuResult:assessResult.calcuResult,      //计算公式结果
     calcuValues:assessResult.calcuValues,      //计算公式填的值
     wholeScaleItems:assessResult.wholeScaleItems,     //全部量表中已加入病例的量表
+    addedScaleIds:assessResult.addedScaleIds,      //已加入的量表id
   }
 }
 
@@ -48,11 +49,13 @@ function mapDispatchToProps(dispatch){
     },
     addAssessItem(row,pIndex,i){         //加入评估记录
       let obj = Object.assign({},row);
+      const it = obj.details[i];
       dispatch({
         type:ADD_ASSESS_ITEMS,
         data:obj,
         index:pIndex,
-        subIndex:i
+        subIndex:i,
+        id:it.type==1?it.content.id:undefined,      //只有量表需要记录id,去重用
       })
     },
     addScaleItems(obj,i){

+ 4 - 2
src/store/reducers/assessResult.js

@@ -18,6 +18,7 @@ const init = {
   calcuResult:{},       //计算公式结果
   calcuValues:{},       //计算公式填的值
   wholeScaleItems:[],   //全部量表中添加的整体评估项
+  addedScaleIds:[]
 };
 export default (state=init,action)=>{
   const res = Object.assign({},state);
@@ -57,6 +58,7 @@ export default (state=init,action)=>{
       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||{};
@@ -64,22 +66,22 @@ export default (state=init,action)=>{
       res.calcuResult = action.calcuResult||{};
       res.calcuValues = action.calcuValues||{};
       return res;
-    //case CLEAR_ASSESS_DATA:
     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];
+      action.id?res.addedScaleIds.push(action.id):'';
       res.update1 = Math.random();   //对象更新,与其他字段名不同因为绑定在pushItems,避免不必要的渲染
       return res;
     case ADD_WHOLE_SCALE_ITEMS:
       res.wholeScaleItems[action.index] = action.data;
+      res.addedScaleIds.push(action.data.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);
-      //res.wholeAssess[pIndex].details[index].add=false;
       return res;
     case SET_CHRONIC_CALCU_RESULT:
       if(action.id){