zhouna 6 éve
szülő
commit
c28f288c4c

src/common/images/已加入@2x.png → src/common/images/added.png


+ 6 - 19
src/components/AssessResult/ChartItem/index.jsx

@@ -12,9 +12,6 @@ import config from "@config";
 class ChartItem extends Component {
   constructor(props) {
     super(props);
-    this.state={
-      timeDismen:props.timeTypes
-    };
     this.getContainers = this.getContainers.bind(this);
     this.rangChange = this.rangChange.bind(this);
     this.getXAxisArr = this.getXAxisArr.bind(this);
@@ -74,15 +71,12 @@ class ChartItem extends Component {
     const {initFn,handleChange} = this.props;
     const times = this.getXAxisArr(type);
     const range = [times[0],times[times.length-1]];
-    const temp=this.state.timeDismen;
-    this.setState({
-      timeDismen:Object.assign(temp,{[index]:type})
-    });
+    const temp=this.props.timeTypes;
     initFn&&initFn({range,rangeType:type,index});
     handleChange(Object.assign(temp,{[index]:type}));
   }
   getContainers(){
-    const timeTypes = this.state.timeDismen;
+    const timeTypes = this.props.timeTypes;
     const range = this.getXAxisArr(config.chartDismen);
     const obj = this.props.data[range[0]+range[range.length-1]];
     let arr = [];
@@ -128,12 +122,8 @@ class Chart extends Component{
     const xAxis = getXAxisArr(type);
     const id = 'chart'+index;
     let series = [],names=[],inx=-1;
-    let myChart = echarts.init(document.getElementById(id));//this.state['chartObj'+index];
-    /*if(!myChart){
-      this.setState({
-        ['chartObj'+index]:echarts.init(document.getElementById(id))
-      });
-    }*/
+    let myChart = echarts.init(document.getElementById(id));
+
     const interval = {
       week:24,
       month:4,
@@ -143,7 +133,6 @@ class Chart extends Component{
     data&&data.map((it)=>{
       let values=new Array();
       let name='';
-      //values[24]=10;
       it&&it.creatTime.map((x,i)=>{
         inx=xAxis.findIndex((a)=>{
           name=type=='week'?x.substr(0,13):x.substr(0,10);
@@ -209,11 +198,9 @@ class Chart extends Component{
   }
   timeSwitch(type){
     const {handleRangeChange,index} = this.props;
-    /*this.setState({
-      timeRange:type
-    });*/
+
     handleRangeChange&&handleRangeChange(type,index);
-    //
+
     const that=this;
     setTimeout(()=>{
       that.drawChart();

+ 2 - 15
src/components/AssessResult/ChooseItem/index.jsx

@@ -13,15 +13,8 @@ class ChooseItem extends Component {
       saveData:null,
       selecteds:{},
     };
-    //this.setInitState = this.setInitState.bind(this);
   }
-  /*setInitState(){
-    if(this.state.saveData){
-      this.setState({
-        saveData:this.props.data
-      });
-    }
-  }*/
+
   handleRadio(name,value){
     const {selecteds} = this.state;
     const {handleChange} = this.props;
@@ -29,13 +22,7 @@ class ChooseItem extends Component {
       selecteds:Object.assign({},selecteds,{[name]:value})
     });
     handleChange&&handleChange(Object.assign({},selecteds,{[name]:value}));     //不能用this.state.selecteds,因为state更新不是即时的
-    /*const list = item.details.map((it)=>{
-      if(it.detailName==value){
-        return Object.assign(it,{isSelected:true});
-      }else{
-        return Object.assign(it,{isSelected:false});
-      }
-    });*/
+
   }
   handleCheckbox(name,value){
     let {selecteds} = this.state;

+ 21 - 20
src/components/AssessResult/ScaleItem/index.jsx

@@ -8,42 +8,43 @@ import deleteIcon from '@common/images/delete.png';
 class ScaleItem extends Component {
   constructor(props) {
     super(props);
+    this.state={
+      supplement:''
+    };
     this.getItems = this.getItems.bind(this);
     this.getDetailItems = this.getDetailItems.bind(this);
   }
-  getDetailItems(item){
+  getDetailItems(item,i){
     let arr = [],temp='';
-    item.details.map((it)=>{
-      if(it.add){
+    const {indexs} = this.props;
+    item.details.map((it,j)=>{
+      if(indexs[i]&&indexs[i].includes(j)){
         if(it.type==1){     //量表
-          temp = <span>【{it.content.name}】</span>;
+          temp =<span className={style['scale']}>【{it.content.name}】</span>;
         }else if(it.type==2){      //计算公式
           temp = <span>计算公式</span>
         }else if(it.type==3){
           temp = <span>可能结果</span>
         }
+        arr.push(<li>
+          <span>{item.name}:</span>
+          <div className={style['row']}>{temp}</div>
+          <div className={style["recommend"]} onClick={()=>this.props.handleRemove(i,j)}>
+            <img src={deleteIcon} />
+          </div>
+        </li>);
       }
-    })
+    });
+    return arr;
   }
   getItems(){
     const { data } = this.props;
-    let $li='';
-    data.map((it)=>{
-      return <li>
-                <span>{it.name}:</span>
-                <div className={style['row']}>
-                  {
-                    this.getDetailItems(it)
-                  }
-                </div>
-                <div className={style["recommend"]}>
-                  <img src={deleteIcon} />
-                </div>
-              </li>
+    return data.map((it,i)=>{
+      return this.getDetailItems(it,i);
     });
   }
   render() {
-    const {title,data  } = this.props;
+    const {title,handleInp} = this.props;
     return <div className={style['assess-item']}>
       <h2>{title}</h2>
       <div className={style['item-content']}>
@@ -52,7 +53,7 @@ class ScaleItem extends Component {
             this.getItems()
           }
           <li>
-            <textarea className={style['edit-row']} name="supplement" id="" rows="6" placeholder='评估描述'></textarea>
+            <textarea className={style['edit-row']} name="supplement" rows="6" placeholder='评估描述' onInput={(e)=>handleInp(e.target.value)}></textarea>
           </li>
         </ul>
       </div>

+ 30 - 13
src/components/AssessResult/index.jsx

@@ -10,41 +10,58 @@ class AssessResult extends Component {
   constructor(props) {
     super(props);
     this.state={
-      chooseSelecteds:{}
+      chooseSelecteds:{},     //大数据选择模块
+      chartTimeTypes:{},      //图表模块
+      wholeAssessItems:props.wholeIndexs,     //整体评估模块
+      wholeAssessText:props.wholeText||''     //整体评估补充说明
     }
-    //this.handleChooseChange = this.handleChooseChange.bind(this);
+    this.handleChooseChange = this.handleChooseChange.bind(this);
+    this.handleScaleDel = this.handleScaleDel.bind(this);
+    this.handleScaleText = this.handleScaleText.bind(this);
   }
   componentWillMount(){
     //获取评估
     this.props.getAssess();
   }
-  handleScaleDel(){
-
+  handleScaleText(text){
+      this.setState({
+        wholeAssessText:text
+      })
+  }
+  handleScaleDel(i,j){
+    const items = Object.assign({},this.state.wholeAssessItems);
+    const inx = items[i].findIndex(x=>x==j);
+    items[i].splice(inx,1);
+    this.setState({
+      wholeAssessItems: items
+    });
   }
   handleChooseChange(i,selects){
     const {chooseSelecteds} = this.state;
-    const {handleChange} = this.props;
     this.setState({
       chooseSelecteds: Object.assign(chooseSelecteds,{[i]:selects})
     });
-    /*for(let x in selects){
-      handleChange(x,selects[x]);
-    }*/
-    handleChange(i,selects);
   }
   handleChartChange(i,selects){
-    const {handleChange}=this.props;
-    handleChange(i,selects);
+    const {chartTimeTypes} = this.state;
+    this.setState({
+      chartTimeTypes:Object.assign(chartTimeTypes,{[i]:selects})
+    });
+  }
+  componentWillUnmount(){
+    //点确定关闭弹窗时把参数传到父组件去
+    const {handleSave,isAssessConfirm} = this.props;
+    isAssessConfirm&&handleSave(this.state);
   }
   handoutTypes(item,i){
-    const {getIndexData,indexData,timeTypes,wholeAssessData} =this.props;console.log(wholeAssessData)
+    const {getIndexData,indexData,timeTypes,wholeAssessData,wholeIndexs} =this.props;
     //console.log(indexData)
     const chartData = indexData;
     const name = item.regionName+":";
     const list = item.data&&item.data.rows;
     switch (+item.regionType){
       case 0:     //数据来源与右侧手动添加
-        return <ScaleItem title={name} data={wholeAssessData} handleChange={this.handleScaleDel}></ScaleItem>;
+        return <ScaleItem title={name} data={wholeAssessData} handleRemove={this.handleScaleDel} handleInp={this.handleScaleText} indexs={this.state.wholeAssessItems}></ScaleItem>;
       case 1:     //数据来源于大数据
         return <ChooseItem title={name} data={list} handleChange={this.handleChooseChange.bind(this,i)}></ChooseItem>;
       case 10:    //数据来源于后台

+ 5 - 0
src/components/AssessResult/index.less

@@ -37,10 +37,15 @@
     .row{
       display: inline-block;
     }
+    .scale{
+      color: @blue;
+      cursor: pointer;
+    }
     .recommend{
       max-width: 200px;
       float: right;
       color: #929292;
+      cursor: pointer;
     }
   }
   .edit-row{

+ 41 - 25
src/components/ChronicInfo/index.jsx

@@ -10,6 +10,7 @@ import allIcon from '@common/images/all-table.png';
 import tableIcon from '@common/images/table.png';
 import allTableIcon from '@common/images/all-table.png';
 import add from '@common/images/add-result.png';
+import added from '@common/images/first.png';
 import checkIcon from '@common/images/check.png';
 import {ComplexModal,ConfirmModal} from '@commonComp';
 import AssessResult from '@containers/AssessResult';
@@ -34,7 +35,7 @@ class ChronicInfo extends React.Component{
       infoId:null,  //静态知识
       formulaId:null, //计算公式
       optionId:null,  //可能结果,
-      assessInfos:{},    //评估内容
+      isAssessConfirm:false,    //是否点击评估弹窗确定按钮
     };
     this.showInfo = this.showInfo.bind(this);
     this.closeInfo = this.closeInfo.bind(this);
@@ -47,7 +48,7 @@ class ChronicInfo extends React.Component{
     this.showFormula = this.showFormula.bind(this); //打开计算公式
     this.closeFormula = this.closeFormula.bind(this); //关闭计算公式
     this.handleAddAssessItem = this.handleAddAssessItem.bind(this);   //加入病例记录
-    this.handleAssessChange = this.handleAssessChange.bind(this);
+    this.handleSaveAssess = this.handleSaveAssess.bind(this);       //评估弹窗确定
   }
   showTableList(id){//量表
     const {getTableList,questionId} = this.props;
@@ -94,7 +95,8 @@ class ChronicInfo extends React.Component{
   }
   showAssessFn(){
     this.setState({
-      showAssess:!this.state.showAssess
+      showAssess:!this.state.showAssess,
+      isAssessConfirm:false
     });
   }
   close(){
@@ -111,20 +113,22 @@ class ChronicInfo extends React.Component{
       formulaId:null
     })
   }
-  handleAssessChange(i,infos){     //整体评估操作内容变动
-    console.log(i,infos)
-    let obj = this.state.assessInfos;
-    obj[i]=infos;
-    this.setState({
-      assessInfos:obj
-    })
-  }
   handleAddAssessItem(v,pIndex,i){
     const {addAssessItem} = this.props;
     addAssessItem(v,pIndex,i);
   }
+  handleSaveAssess(){
+    this.setState({
+      isAssessConfirm:true
+    });
+    const that=this;
+    setTimeout(()=>{
+      that.showAssessFn();
+    });
+
+  }
   getDetail(){
-    const {data} = this.props;
+    const {data,indexs} = this.props;
     const {showInfo,showOption,infoId,formulaId,optionId} = this.state;
     let list = data&&data.map((v,i)=>{
                     return <div className={style["list"]}>
@@ -147,20 +151,28 @@ class ChronicInfo extends React.Component{
                         if(it.type==1){
                           return <p>
                                 <span className={style["listName"]} onClick={this.showTable.bind(this,it.content)}>{'【'+it.content.name+'】'}</span>
-                                <span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,j,i)}>
+                                {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
+                                  <img src={added} />
+                                  已加入
+                                </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
                                   <img src={add} />
                                   加入病历记录
                                 </span>
+                                }
                               </p>
                         }else if(it.type==2){
                           return <div className={style["marTop"]}>
                             <span>计算公式结果:</span>
                             <span className={style["blue"]} onClick={this.showFormula.bind(this,v.id)}>请选择</span>
                             <img src={level1} />
-                            <span className={style["listResult"]}>
-                              <img src={add} />
-                              加入病历记录
-                            </span>
+                            {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
+                                  <img src={added} />
+                                  已加入
+                                </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
+                                  <img src={add} />
+                                  加入病历记录
+                                </span>
+                            }
                             <div className={style["infoBox"]} style={{display:formulaId&&formulaId==v.id?'block':'none'}}>
                               <p className={style["infoTitle"]}>
                                 <img src={allTableIcon} />
@@ -205,10 +217,14 @@ class ChronicInfo extends React.Component{
                             <span>可能结果:</span>
                             <span onClick={this.showOption.bind(this,v.id)} className={style["blue"]}>请选择</span>
                             <img src={level1} />
-                            <span className={style["listResult"]}>
-                              <img src={add} />
-                              加入病历记录
-                            </span>
+                            {indexs[i]&&indexs[i].includes(j)?<span className={style["addResult"]}>
+                                  <img src={added} />
+                                  已加入
+                                </span>:<span className={style["listResult"]} onClick={()=>this.handleAddAssessItem(v,i,j)}>
+                                  <img src={add} />
+                                  加入病历记录
+                                </span>
+                            }
                             <div className={`${style["infoBox"]} ${style["mainBox"]}`} style={{display:optionId&&optionId==v.id?'block':'none'}}>
                               <p className={style["infoTitle"]}>
                                 <img src={checkIcon} />
@@ -240,11 +256,11 @@ class ChronicInfo extends React.Component{
     return list;
   }
   render(){
-    const {chronicMagItem,showList,tableList,scaleInfo,data,saveAssessInfos} = this.props;
-    const {showInfo,showOption,showTable,showAssess,assessInfos} = this.state;
+    const {chronicMagItem,showList,tableList,scaleInfo,saveAssessInfos} = this.props;
+    const {showInfo,showOption,showTable,showAssess,isAssessConfirm} = this.state;
     const footer = <div className={style['footer']}>
       <span className={style['print']}><img src={printIcon} alt=""/>打印</span>
-      <span className={style['okBtn']} onClick={()=>saveAssessInfos(assessInfos)}>确定</span>
+      <span className={style['okBtn']} onClick={()=>this.handleSaveAssess()}>确定</span>
     </div>;
     return <div className={style["tips"]} style={{marginBottom:'15px'}}>
               <div className={`${style["tips-title"]} ${style["chronic"]}`}>
@@ -295,7 +311,7 @@ class ChronicInfo extends React.Component{
                       top={20}
                       bottom={20}
                       width={820}>
-                <AssessResult handleChange={this.handleAssessChange}></AssessResult>
+                <AssessResult handleSave={saveAssessInfos} isAssessConfirm={isAssessConfirm}></AssessResult>
               </ComplexModal>:''}
       </div>
   }

+ 7 - 1
src/components/ChronicInfo/index.less

@@ -69,7 +69,7 @@
           color:#3B9ED0;
           cursor: pointer;
         }
-        .listResult{
+        .listResult,.addResult{
           float: right;
           cursor: pointer;
           display: inline-block;
@@ -86,6 +86,12 @@
             margin:-3px 3px 0 0;
           }
         }
+        .addResult{
+          color: #3B9ED0;
+          text-align: left;
+          padding-left: 5px;
+          cursor: default;
+        }
         .infoBox{
           position: absolute;
           top:27px;

+ 2 - 2
src/components/PushItems/index.jsx

@@ -160,7 +160,7 @@ class PushItems extends Component {
       tips,
       tmpFlg,
     } = this.props.pushMessage;
-    const { tipsDiscalimer,chronicPushItems} = this.props;
+    const { tipsDiscalimer,chronicPushItems,wholeIndexs} = this.props;
     const { moreAssay, moreCheck ,show} = this.state;
     const {
       showMore,
@@ -422,7 +422,7 @@ class PushItems extends Component {
                 )}
               </div>
             </div>
-            {chronicPushItems&&chronicPushItems.length>0?<ChronicInfo data={chronicPushItems}></ChronicInfo>:''}
+            {chronicPushItems&&chronicPushItems.length>0?<ChronicInfo data={chronicPushItems} indexs={wholeIndexs}></ChronicInfo>:''}
             <div className={style["tips"]}>
               <h1>
                 <img src={tipsImg} />

+ 11 - 3
src/containers/AssessResult.js

@@ -4,7 +4,7 @@ import AssessResult from '@components/AssessResult';
 import {ISREAD} from '@store/types/homePage.js';
 import {billing} from '@store/async-actions/pushMessage';
 import {getAssessData,getIndexData} from '@store/async-actions/fetchModules';
-import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_INDEX_SUB_TYPE} from '@types/assessResult';
+import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_INDEX_SUB_TYPE,REMOVE_ASSESS_ITEMS} from '@types/assessResult';
 import store from '@store';
 
 /***
@@ -17,8 +17,7 @@ import store from '@store';
  *
  * ***/
 
-function mapStateToProps(state) {
-  console.log(state)
+function mapStateToProps(state) {console.log(state)
   const {assessResult} = state;
   return {
     data:assessResult.data,
@@ -26,8 +25,10 @@ function mapStateToProps(state) {
     saveIndexData:assessResult.saveIndexData,
     saveData:assessResult.saveData,
     update:assessResult.update,
+    update1:assessResult.update1,
     timeTypes:assessResult.indexTimeTypes,
     wholeAssessData:assessResult.wholeAssess,
+    wholeIndexs:assessResult.wholeIndexs
   }
 }
 
@@ -74,6 +75,13 @@ function mapDispatchToProps(dispatch) {
         console.log(error);
       });
     },
+    /*removeAssessResult(pIndex,i){
+      dispatch({
+        type:REMOVE_ASSESS_ITEMS,
+        pIndex,
+        index:i
+      });
+    }*/
   }
 }
 

+ 6 - 4
src/containers/ChronicInfo.js

@@ -2,7 +2,7 @@ import {connect} from 'react-redux';
 import ChronicInfo from '../components/ChronicInfo';
 import {SHOW_TABLE_LIST,HIDE_TABLE_LIST} from '@store/types/pushMessage';
 import {getTableList,getScaleInfo} from '../store/async-actions/pushMessage';
-import {ADD_ASSESS_ITEMS} from "@types/assessResult";
+import {ADD_ASSESS_ITEMS,SET_SAVE_ASSESS_DATA} from "@types/assessResult";
 
 function mapStateToProps(state){
   return{
@@ -11,6 +11,7 @@ function mapStateToProps(state){
     tableList: state.pushMessage.tableList,
     showList: state.pushMessage.showList,
     scaleInfo: state.pushMessage.scaleInfo,//量表明细
+    update:state.assessResult.update1
   }
 }
 
@@ -28,16 +29,17 @@ function mapDispatchToProps(dispatch){
     },
     addAssessItem(row,pIndex,i){         //加入评估记录
       let obj = Object.assign({},row);
-      obj.details[i].add=true;
+      //obj.details[i].add=true;
       dispatch({
         type:ADD_ASSESS_ITEMS,
         data:obj,
-        index:pIndex
+        index:pIndex,
+        subIndex:i
       })
     },
     //保存管理评估
     saveAssessInfos(obj){
-      console.log(222,obj);
+      dispatch(Object.assign({},obj,{type:SET_SAVE_ASSESS_DATA}));
     }
   }
 }

+ 9 - 6
src/containers/PushItemsContainer.js

@@ -7,14 +7,17 @@ import {billing, getTips, getTipsDetails,getTableList} from '../store/async-acti
 import { isAddMainSuit } from '@store/async-actions/diagnosticList';
 
 function mapStateToProps(state) {
+  const {pushMessage,diagnosticList} = state;
         return {
-        pushMessage: state.pushMessage,
+        pushMessage: pushMessage,
         tipsDiscalimer:  state.copyRight.disContent,
-        chronicMagItem: state.diagnosticList.chronicMagItem,
-        questionId: state.diagnosticList.clickDiag,
-        tableList: state.pushMessage.tableList,
-        showList: state.pushMessage.showList,
-        chronicPushItems: state.pushMessage.chronicPushItems,
+        chronicMagItem: diagnosticList.chronicMagItem,
+        questionId: diagnosticList.clickDiag,
+        tableList: pushMessage.tableList,
+        showList: pushMessage.showList,
+        chronicPushItems: pushMessage.chronicPushItems,
+        wholeIndexs:state.assessResult.wholeIndexs,
+        update:state.assessResult.update1
     }
 }
 

+ 17 - 5
src/store/reducers/assessResult.js

@@ -1,13 +1,14 @@
-import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS} from '@types/assessResult';
+import {SET_ASSESS_DATA,SET_INDEX_DATA,SET_SAVE_ASSESS_DATA,SET_INDEX_SUB_TYPE,ADD_ASSESS_ITEMS,REMOVE_ASSESS_ITEMS} from '@types/assessResult';
 import config from "@config";
 
 const init = {
   data:[],        //评估模块数据
   indexData:{},     //评估图表数据
-  saveData:[],      //保存的评估数据-点确定时保存
-  saveIndexData:{},    //保存的评估图表数据-点确定时保存
   indexTimeTypes:{},    //单个图表选中的维度
   wholeAssess:[],     //整体评估数据
+  wholeIndexs:{},     //已加入的评估数据的index,加入按钮状态用
+  wholeAssessText:'',   //整体评估补充说明
+  chooseSelecteds:{},   //选项勾选状态
 };
 export default (state=init,action)=>{
   const res = Object.assign({},state);
@@ -35,12 +36,23 @@ export default (state=init,action)=>{
       res.update = Math.random();   //对象更新
       return res;
     case SET_SAVE_ASSESS_DATA:
-      res.saveData = action.data;
-      res.saveIndexData = action.indexData;
+      res.wholeIndexs = action.wholeAssessItems;
+      //res.indexTimeTypes = action.chartTimeTypes;
+      res.wholeAssessText = action.wholeAssessText;
+      res.chooseSelecteds = action.chooseSelecteds;
       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];
+      res.update1 = Math.random();   //对象更新,与其他字段名不同因为绑定在pushItems,避免不必要的渲染
+      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;
     default:
       return res;

+ 2 - 1
src/store/types/assessResult.js

@@ -2,4 +2,5 @@ export const SET_ASSESS_DATA = 'SET_ASSESS_DATA';     //推送的评估弹窗内
 export const SET_INDEX_DATA = 'SET_INDEX_DATA';       //评估图表数据
 export const SET_SAVE_ASSESS_DATA = 'SET_SAVE_ASSESS_DATA';  //保存的评估弹窗数据
 export const SET_INDEX_SUB_TYPE = 'SET_INDEX_SUB_TYPE';   //保存单个图表时间维度
-export const ADD_ASSESS_ITEMS = 'ADD_ASSESS_ITEMS';     //加入评估
+export const ADD_ASSESS_ITEMS = 'ADD_ASSESS_ITEMS';     //加入评估
+export const REMOVE_ASSESS_ITEMS = 'REMOVE_ASSESS_ITEMS';  //整体评估删除