Procházet zdrojové kódy

Merge remote-tracking branch 'origin/Chronic_lcf' into ChronicMag

# Conflicts:
#	src/common/components/ComplexModal/index.jsx
#	src/common/components/ComplexModal/index.less
#	src/components/DiagnosticList/index.jsx
#	src/components/PushItems/index.jsx
#	src/components/PushItems/index.less
zhouna před 6 roky
rodič
revize
5e5ee9afca

+ 1 - 0
package.json

@@ -63,6 +63,7 @@
     "anujs": "1.4.8",
     "axios": "^0.18.0",
     "babel-polyfill": "6.26.0",
+    "echarts": "^4.2.1",
     "jquery": "1.12.4",
     "koa-body": "^4.0.4",
     "koa-router": "^7.4.0",

+ 11 - 6
src/common/components/ComplexModal/index.jsx

@@ -9,7 +9,9 @@ import close from '@common/images/icon_close.png';
  * onClose:弹窗关闭事件
  * shadeClose:点蒙层关闭,默认true
  *footer:固定在弹窗底部的内容如确定按钮
- *
+ *icon:标题前的图标
+ *width:弹窗的宽度
+ *height:弹窗的高度
  * **/
 
 class ComplexModal extends Component {
@@ -17,17 +19,20 @@ class ComplexModal extends Component {
     super(props)
   }
   render() {
-    const { onclose,title,children,footer,shadeClose} = this.props;
+    const { onclose,title,children,footer,shadeClose,icon,width,height} = this.props;
+    const marginLeft = width? -parseInt(width)/2 : '';
+    const marginTop = height? -parseInt(height)/2: '';
     const domNode = document.getElementById('root');
     return ReactDom.createPortal(<div className={style['container']}>
       <div className={style['shade']} onClick={shadeClose===false?'':onclose}></div>
-      <div className={style['modal']}>
+      <div className={style['modal']} style = {{width: width?width:'auto', marginLeft:marginLeft, height:height?height:'auto', marginTop:marginTop}}>
         <div className={style['close']}>
+          {icon?<img src={icon} />:''}
           {title}
-          <img src={close} onClick={onclose} />
+          <img src={close} onClick={onclose} className={style['closeIcon']} />
         </div>
-        <div className={style["content"]}>{children}</div>
-        <div className={style['footer']}>{footer}</div>
+        <div className={style["content"]} style = {{width: width?width:'auto'}}>{children}</div>
+        <div className={style['footer']} style = {{width: width?width:'auto'}}>{footer}</div>
       </div>
     </div>,domNode);
   }

+ 13 - 8
src/common/components/ComplexModal/index.less

@@ -4,12 +4,12 @@
   .content{
     overflow: auto;
     position: fixed;
-    bottom: 130px;
-    top: 110px;
-    width: 820px;
+    // bottom: 130px;
+    // top: 110px;
+    // width: 820px;
   }
   .footer{
-    width: 820px;
+    // width: 820px;
     position: fixed;
     bottom:80px;
     text-align: right;
@@ -26,18 +26,23 @@
     -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=60);";
   }
   .modal {
-    width: 820px;
+    // width: 820px;
     background: #fff;
     position: fixed;
     left: 50%;
-    margin-left: -410px;
-    top: 65px;
-    bottom: 65px;
+    top: 50%;
+    // margin-left: -410px;
+    // top: 65px;
+    // bottom: 65px;
   }
   .close {
     padding:  15px 15px 15px 20px;
     border-bottom: 1px solid #EAEDF1;
+    background: #e5eefe;
     img{
+      vertical-align: text-top;
+    }
+    .closeIcon{
       float:right;
       cursor: pointer;
       margin-top: -5px;

binární
src/common/images/all-table.png


binární
src/common/images/check.png


binární
src/common/images/manage.png


binární
src/common/images/table.png


binární
src/common/images/筛选表.png


+ 41 - 41
src/components/AddAssistCheck/index.jsx

@@ -1,55 +1,55 @@
 import React from 'react';
-import { SearchOption, Calendar ,ConfirmModal,Notify,Add} from '@commonComp';
+import { SearchOption, Calendar, ConfirmModal, Notify, Add } from '@commonComp';
 import styles from './index.less';
 import $ from 'jquery';
 import Textarea from './Textarea';
 import close from './img/close.png';
 
 class AddAssistCheck extends React.Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            show: false,
-            date: false,
-            dateTime:"",
-            active:'',
-            visible:false,
-            id:null
-        }
-        this.handleShowDate = this.handleShowDate.bind(this)
-        this.getCurrentDate = this.getCurrentDate.bind(this)
-        this.getSearchList = this.getSearchList.bind(this)
-        this.getAssistLabel = this.getAssistLabel.bind(this)
-        this.handleDelClick = this.handleDelClick.bind(this)
-        this.delConfirm = this.delConfirm.bind(this)
-        this.handleCancel = this.handleCancel.bind(this)
+  constructor(props) {
+    super(props);
+    this.state = {
+      show: false,
+      date: false,
+      dateTime: "",
+      active: '',
+      visible: false,
+      id: null
     }
+    this.handleShowDate = this.handleShowDate.bind(this)
+    this.getCurrentDate = this.getCurrentDate.bind(this)
+    this.getSearchList = this.getSearchList.bind(this)
+    this.getAssistLabel = this.getAssistLabel.bind(this)
+    this.handleDelClick = this.handleDelClick.bind(this)
+    this.delConfirm = this.delConfirm.bind(this)
+    this.handleCancel = this.handleCancel.bind(this)
+  }
 
-    handleDelClick(id){
-        this.setState({
-            visible:true,
-            id:id
-        })
-    }
+  handleDelClick(id) {
+    this.setState({
+      visible: true,
+      id: id
+    })
+  }
 
-    delConfirm(){
-        const {handleDelAssist,handlePush} = this.props;
-        const {id} = this.state;
-        handleDelAssist&&handleDelAssist(id);
-        handlePush&&handlePush();           //右侧推送
-        this.setState({
-            visible:false,
-            id:null
-        })
-        Notify.success("删除成功");
-    }
+  delConfirm() {
+    const { handleDelAssist, handlePush } = this.props;
+    const { id } = this.state;
+    handleDelAssist && handleDelAssist(id);
+    handlePush && handlePush();           //右侧推送
+    this.setState({
+      visible: false,
+      id: null
+    })
+    Notify.success("删除成功");
+  }
 
-    handleCancel(){
-        this.setState({
-            visible:false,
-            id:null
-        })
-    }
+  handleCancel() {
+    this.setState({
+      visible: false,
+      id: null
+    })
+  }
 
   componentDidMount() {
     $(document).click((event) => {

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

@@ -1,5 +1,5 @@
 import React from 'react';
-import { SearchOption, InspectCommon, Calendar ,Notify,ConfirmModal,Add} from '@commonComp';
+import { SearchOption, InspectCommon, Calendar, Notify, ConfirmModal, Add } from '@commonComp';
 import SlideExcel from './SlideExcel';
 import SlideSelect from './SlideSelect';
 import { deepClone } from '@utils/tools';

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 211 - 0
src/components/ChronicInfo/index.jsx


+ 205 - 0
src/components/ChronicInfo/index.less

@@ -0,0 +1,205 @@
+.tips{
+  border:1px solid #EAEDF1;
+  .tips-title,h1{
+    font-size: 14px;
+    color: #000;
+    padding: 8px 15px;
+    background: #EAF7FA;
+    font-weight: bold;
+    img {
+      float:left;
+      margin-top: 0px;
+      margin-right: 5px;
+    }
+  }
+  .tips-title{
+    .tips-name{
+      width: 255px;
+      display: inline-block;
+    }
+    h2{
+      display: inline-block;
+    }
+    .tips-btn{
+      display: inline-block;
+      float: right;
+    }
+    .redTips{
+      display: inline-block;
+      font-size: 12px;
+      -webkit-transform:scale(0.9);
+      color: red;
+      font-weight: normal;
+      white-space: nowrap;
+    }
+    .tipsDetails {
+      display: inline-block;
+      font-weight: normal;
+      width: 42px;
+      height: 20px;
+      border: 1px solid #262626;
+      border-radius: 4px;
+      text-align: center;
+      font-size: 12px;
+      // color: #3B9ED0;
+      color: #262626;
+      line-height: 18px;
+      margin: 0 0 -2px 10px;
+      cursor: pointer;
+      }
+    }
+    .chronic{
+      background: rgba(242,150,91,0.1);
+    }
+    .content{
+      font-size: 14px;
+      padding:6px 15px;
+      .list{
+        border-bottom: 1px solid #EAEDF1;
+        padding-bottom: 10px;
+        position: relative;
+        .infoPic{
+          vertical-align: middle;
+          margin: 0 5px;
+        }
+        >p{
+          margin-top: 10px;
+        }
+        .listName{
+          color:#3B9ED0;
+        }
+        .listResult{
+          float: right;
+          color: #000012;
+          i{
+            color: #F98F24;
+          }
+          img{
+            vertical-align: middle;
+          }
+        }
+        .infoBox{
+          position: absolute;
+          top:27px;
+          width: 388px;
+          background: #fff;
+          z-index: 66;
+          border: 1px solid #EAEDF1;
+          box-shadow: 0 5px 10px 0 rgba(0,0,0,0.10);
+          .infoTitle{
+            height: 40px;
+            line-height: 40px;
+            padding-left: 18px;
+            // border-bottom: 1px solid #EAEDF1;
+            background: #DFEAFE;
+            img{
+              vertical-align: text-top;
+            }
+            .closeIcon{
+              // vertical-align: middle;
+              float: right;
+            }
+          }
+          .infoCon{
+            padding: 15px 26px 25px;
+          }
+        }
+      }
+      .mainList{
+        .listBtn{
+          display: inline-block;
+          width: 96px;
+          height: 26px;
+          line-height: 26px;
+          text-align: center;
+          border: 1px solid #EAEDF1;
+          border-radius: 4px;
+        }
+        .listResult{
+          line-height: 26px;
+          i{
+            cursor: pointer;
+          }
+        }
+        .mainBox{
+          top: 65px;
+          .infoOption{
+            padding: 20px 0;
+          }
+          .infoConBtn{
+            text-align: right;
+            border-top: 1px solid #EAEDF1;
+            padding-top: 10px;
+            span{
+              color:#3B9ED0;
+              display: inline-block;
+              width: 66px;
+              height: 32px;
+              line-height: 32px;
+              text-align: center;
+              border: 1px solid #3B9ED0;
+              border-radius: 4px;
+            }
+          }
+        }
+      }
+      .list:last-child{
+        border-bottom:none;
+      }
+    }
+  }
+  .toast-title{
+    position: absolute;
+    top: 17px;
+    font-size: 16px;
+      // border-bottom: 1px solid #666;
+      width: 87%;
+      height: 25px;
+    }
+    .toast-cont{
+      line-height: 24px;
+      font-size: 14px;
+      // margin-top: 15px;
+      height: 222px;
+      overflow-y: auto;
+      padding: 10px 0 0 10px;
+      li{
+        margin-top: 10px;
+        cursor: pointer;
+      }
+    }
+    .footer{
+      .print{
+        width: 111px;
+        height: 34px;
+        line-height: 34px;
+        outline: none;
+        border-radius: 4px;
+        /*color: #3B9ED0;*/
+        border: 0 none;
+        cursor: pointer;
+        background: #fff;
+        margin-right: 20px;
+        img{
+          width: 20px;
+          vertical-align: middle;
+          margin-right: 4px;
+        }
+      }
+      .okBtn{
+        width: 80px;
+        height: 34px;
+        line-height: 32px;
+        text-align: center;
+        outline: none;
+        border-radius: 4px;
+        cursor: pointer;
+        border: 1px solid #3B9ED0;
+        box-sizing: border-box;
+        margin-left: 20px;
+        background: #3B9ED0;
+        color: #fff;
+        float: right;
+        margin-right: 20px;
+      }
+    }

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

@@ -109,6 +109,7 @@ class DiagnosticList extends Component {
   
         // store.dispatch({type: CONFIRM_TYPE, confirmType: baseObj.sign});
         pushAllDataList(baseObj.sign,'push',baseObj,'history')       //引用
+        // store.dispatch(billing())
         this.props.getBilling();
         this.setState({
             activeHistory: -1

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 5 - 233
src/components/PushItems/index.jsx


+ 6 - 43
src/components/PushItems/index.less

@@ -304,9 +304,13 @@
             height: 40px;
             line-height: 40px;
             padding-left: 18px;
-            border-bottom: 1px solid #EAEDF1;
+            // border-bottom: 1px solid #EAEDF1;
+            background: #DFEAFE;
             img{
-              vertical-align: middle;
+              vertical-align: text-top;
+            }
+            .closeIcon{
+              // vertical-align: middle;
               float: right;
             }
           }
@@ -495,53 +499,12 @@
   // margin-top: 15px;
   height: 222px;
   overflow-y: auto;
-  border-top: 1px solid #979797;
   padding: 10px 0 0 10px;
   li{
     margin-top: 10px;
     cursor: pointer;
   }
 }
-.tableBox{
-  // max-height: 700px;
-  height: 690px;
-  border-top: 1px solid #979797;
-  overflow-y: auto;
-  h1{
-    font-size: 16px;
-    font-weight: bold;
-    margin: 20px 0;
-    text-align: center;
-  }
-}
-.table{
-  width: 100%;
-  margin: 10px 0 10px;
-  tr{
-    border-bottom: 1px solid #979797;
-    td{
-      vertical-align: middle;
-      padding: 7px 0;
-    }
-  }
-}
-.tableBtn{
-    // position: absolute;
-    text-align: right;
-    color:#000;
-    padding: 15px 10px 0 0;
-    .confirmBtn{
-      display: inline-block;
-      color:#fff;
-      width: 80px;
-      height: 32px;
-      line-height: 32px;
-      border-radius: 4px;
-      background: #3B9ED0;
-      margin-left: 25px;
-      text-align: center;
-    }
-  }
 .footer{
   .print{
     width: 111px;

+ 54 - 0
src/components/ScaleTable/index.jsx

@@ -0,0 +1,54 @@
+import React from 'react';
+import style from './index.less';
+import mocks from '../../mock/chronicTable.js'
+
+// 量表 具体信息页面
+class ScaleTable extends React.Component{
+  constructor(props){
+    super(props);
+  }
+
+  render(){
+    return <div className={style['tableBox']}>
+            <h1>密西根糖尿病神经筛查表(MDNS)</h1>
+            <p>MDNS可与MNSI联合应用以确定是否存在周围神经病变,在一段时间内对患者进行评分可以评估疾病的进展情况。</p>
+            <table className={style['table']}>
+              <thead>
+                <tr>
+                  {mocks.data.title.map((v,i)=>{
+                    return <td>{v.name}</td>
+                  })}  
+                </tr>
+              </thead>
+              <tbody>
+                {mocks.data.details.map((v,i)=>{
+                    return <tr>
+                    <td>{v.name}</td>
+                    <td>
+                      {v.details.map((it,index)=>{
+                        return <td style={{display:'block'}}>{it.detailName}</td>
+                      })}
+                    </td>
+                    <td></td>
+                    <td></td>
+                    </tr>
+                  })} 
+              </tbody>
+            </table>
+            <div>
+              <p>
+                1. 计算方法:<br/>
+              感觉损伤得分=左右两侧感觉检查项目的分数之和
+              肌力得分=左右两侧肌力检查项目的分数之和
+              反射得分=左右两侧反射检查项目的分数之和
+              体格检查得分=感觉损伤得分+肌力得分+反射得分
+              </p>
+              <p>
+                2. 临床体格检查部分:<br/>
+              最低得分0  最高得分46, 分数越高,周围神经病越重
+              </p>
+            </div>
+          </div>
+  }
+}
+export default ScaleTable;

+ 40 - 0
src/components/ScaleTable/index.less

@@ -0,0 +1,40 @@
+.tableBox{
+  // max-height: 700px;
+  height: 690px;
+  overflow-y: auto;
+  padding: 15px;
+  h1{
+    font-size: 16px;
+    font-weight: bold;
+    margin: 20px 0;
+    text-align: center;
+  }
+}
+.table{
+  width: 100%;
+  margin: 10px 0 10px;
+  tr{
+    border-bottom: 1px solid #979797;
+    td{
+      vertical-align: middle;
+      padding: 7px 0;
+    }
+  }
+}
+/* .tableBtn{
+  // position: absolute;
+  text-align: right;
+  color:#000;
+  padding: 15px 10px 0 0;
+  .confirmBtn{
+    display: inline-block;
+    color:#fff;
+    width: 80px;
+    height: 32px;
+    line-height: 32px;
+    border-radius: 4px;
+    background: #3B9ED0;
+    margin-left: 25px;
+    text-align: center;
+  }
+} */

+ 28 - 0
src/containers/ChronicInfo.js

@@ -0,0 +1,28 @@
+import {connect} from 'react-redux';
+import ChronicInfo from '../components/ChronicInfo';
+import {SHOW_TABLE_LIST,HIDE_TABLE_LIST} from '@store/types/pushMessage';
+import {getTableList} from '../store/async-actions/pushMessage';
+
+function mapStateToProps(state){
+  return{
+    chronicMagItem: state.diagnosticList.chronicMagItem,
+    questionId: state.diagnosticList.clickDiag,
+    tableList: state.pushMessage.tableList,
+    showList: state.pushMessage.showList,
+  }
+}
+
+function mapDispatchToProps(dispatch){
+  return {
+    getTableList(id){
+      dispatch(getTableList(id))
+      dispatch({type:SHOW_TABLE_LIST})
+    },
+    hideList(){
+      dispatch({type:HIDE_TABLE_LIST})
+    }
+  }
+}
+
+const ChronicInfoContainer = connect(mapStateToProps,mapDispatchToProps)(ChronicInfo);
+export default ChronicInfoContainer;