Browse Source

注册病例逻辑基本完成

Your Name 1 year ago
parent
commit
eb88d849b9

+ 8 - 0
src/api.js

@@ -108,4 +108,12 @@ export default {
   getPatientProList: params => {
     return axios.get(`${baseURL}/api/doctor/patient/pro/list`, { params: params })
   },
+  // 获取病人待编辑病例
+  getPatientDoingCase: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/case/doing`,{params:params})
+  },
+  // 计算每次注射剂量
+  calc_mczsjl: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/case/calc/mczsjl`,{params:params})
+  }
 }

+ 86 - 58
src/components/DiagCalc.vue

@@ -1,11 +1,11 @@
 <template>
   <div class="container">
     <div class="bgimg"></div>
-    <div class="content">
+    <div class="content" v-if="!popupVisible">
       <div class="title">FVIII药代动力学检测</div>
       <div class="diagForm">
         <mt-field label="病例体重(kg)" placeholder="整数或1位小数" type="number" v-model="form.bltz"></mt-field>
-        <mt-field placeholder="请选择产品" class="inputDisable" disabled label="产品选择" v-model="form.mpro"
+        <mt-field label="注射产品" placeholder="请选择产品" class="inputDisable" disabled v-model="form.mpro"
           @click.native="mproFlag=true;mfreqFlag=false">
           <img src="../assets/images/down.png" alt="" width="16px">
         </mt-field>
@@ -87,17 +87,18 @@
       :startDate='startDate' v-model="now" @touchmove.native.stop.prevent>
     </mt-datetime-picker>
     <!-- 注射频次 -->
-    <mt-picker @change="onValuesChange1" v-if="mfreqFlag" :slots="slots1" ref="sexPicker1" class="sexPicker"
-    :showToolbar="true" @touchmove.native.stop.prevent>
-    <div class="pickerConfirm" @click="mfreqFlag=false">确认</div>
-  </mt-picker>
+    <!-- <mt-picker @change="onValuesChange1" v-if="mfreqFlag" :slots="slots1" ref="sexPicker1" class="sexPicker"
+      :showToolbar="true" @touchmove.native.stop.prevent>
+      <div class="pickerConfirm" @click="mfreqFlag=false">确认</div>
+    </mt-picker> -->
     <!-- 注射产品 -->
     <mt-picker @change="onValuesChange" v-if="mproFlag" :slots="slots" ref="sexPicker" class="sexPicker"
       :showToolbar="true">
       <div class="pickerConfirm" @click="mproFlag=false">确认</div>
     </mt-picker>
+
     <!-- 试算弹出框 -->
-    <mt-popup v-model="popupVisible">
+    <div class="content" v-if="popupVisible">
       <div class="popupContainer">
         <!-- 药代动力学参数 -->
         <div class="diagShowForm">
@@ -119,27 +120,28 @@
         <div class="diagShowForm">
           <div class="formTitle">血友病预防治疗剂量计算</div>
           <div class="popupDiagForm">
-            <mt-field label="预防谷活性" type="number" placeholder="请输入整数" v-model="form.yfghx"></mt-field>
+            <mt-field label="目标谷活性%" type="number" placeholder="请输入整数" v-model="form.yfghx" @input.native="mczsjl=''">
+            </mt-field>
             <mt-field class="inputDisable" disabled label="注射频次" placeholder="请选择" v-model="form.zspc"
               @click.native="mfreqFlag=true">
               <img src="../assets/images/down.png" alt="" width="16px">
             </mt-field>
-            <mt-field label="每次注射剂量" type="number" placeholder="请输入整数" v-model="form.yfghx"></mt-field>
+            <mt-field label="每次注射剂量(IU)" type="number" placeholder="" v-model="mczsjl" disabled></mt-field>
           </div>
         </div>
+        <div class="popupFooter">
+          <div class="jbbtn" @click="goback">返回</div>
+          <div class="jbbtn" @click="goSelect">确定</div>
+          <div class="jbbtn" @click="calc_mczsjl">计算</div>
+        </div>
       </div>
-      <div class="popupFooter">
-        <div class="jbbtn" @click="goback">返回</div>
-        <div class="jbbtn" @click="goSelect">确定</div>
-        <div class="jbbtn" @click="submit">计算</div>
 
-      </div>
       <!-- 注射频次 -->
       <mt-picker @change="onValuesChange1" v-if="mfreqFlag" :slots="slots1" ref="sexPicker1" class="sexPicker"
         :showToolbar="true" @touchmove.native.stop.prevent>
         <div class="pickerConfirm" @click="mfreqFlag=false">确认</div>
       </mt-picker>
-    </mt-popup>
+    </div>
   </div>
 </template>
 
@@ -168,8 +170,10 @@
           zssjt0: '',
           cxsjt1: '',
           cxsjt2: '',
-          cxsjt3: ''
+          cxsjt3: '',
+          mczsjl: null
         },
+        mczsjl: null,
         slots1: [{
           flex: 1,
           values: this.$const.zspc,
@@ -186,16 +190,17 @@
           className: 'slot1',
           textAlign: 'center'
         }],
-        popupVisible: this.$route.query.edit?true:false,
+        popupVisible: this.$route.query.edit ? true : false,
+        patient_id: this.$route.query.patid
       }
     },
     methods: {
-      goback(){
-        if(this.$route.query && this.$route.query.edit && this.$route.query.back){
+      goback() {
+        if (this.$route.query && this.$route.query.edit && this.$route.query.back) {
           this.$router.push({
-            path:this.$route.query.back
+            path: this.$route.query.back
           });
-        }else{
+        } else {
           this.popupVisible = false;
         }
       },
@@ -227,14 +232,27 @@
         } else {
           this.form.zspc = this.$const.zspc[0]
         }
+        this.form.mczsjl = ""
       },
-      goSelect(){
-        this.$router.push({
-                path: 'pretraitcase',
-                query: {
-                  id: 74
-                }
-              })
+      goSelect() {
+        let params = this.form
+        params.patient_id = this.patient_id
+        let that = this
+        this.$api.regPatientCase(params).then(res => {
+          if (!res.data.code) {
+            this.$router.push({
+              path: 'pretraitcase',
+              query: {
+                id: res.data.data.id
+              }
+            })
+
+          } else {
+            Toast(res.data.message)
+          }
+        })
+
+
       },
       submit() {
         if (!this.form.bltz) {
@@ -384,40 +402,46 @@
         //   })
         //   return
         // }
-        this.popupVisible = true;
-
-        MessageBox.confirm('请您再次确认录入信息是否有误?').then(action => {
-          let params = this.form
-          let patientCase = localStorage.getItem("patientCase")
-          if (patientCase) {
-            patientCase = JSON.parse(patientCase)
-            Object.keys(patientCase).forEach(function (item) {
-              console.log(item)
-              params[item] = patientCase[item]
-            })
+
+        let params = this.form
+        params.patient_id = this.patient_id
+        let that = this
+        this.$api.regPatientCase(params).then(res => {
+          if (!res.data.code) {
+            that.form = res.data.data;
+            this.popupVisible = true;
+
           } else {
-            patientCase = params
-            this.goPage("/regpatinfo")
+            Toast(res.data.message)
           }
-          this.$api.regPatientCase(params).then(res => {
-            if (!res.data.code) {
-              let id = res.data.data.id
-              localStorage.removeItem("patientCase")
-              this.$router.push({
-                path: 'solutionpkline',
-                query: {
-                  id: id
-                }
-              })
-            } else {
-              Toast(res.data.message)
-            }
-          })
-        });
-
+        })
+      },
+      calc_mczsjl() {
+        let that = this;
+        this.$api.calc_mczsjl(this.form).then(res => {
+          if (res.data.code == 0) {
+            this.$set(this.form, "mczsjl", res.data.data)
+            this.mczsjl = res.data.data
+            console.log(this.form, 3333333333)
+          }
+        })
+      }
 
+    },
+    created() {
+      let patid = this.$route.query.patid;
+      if (!patid) {
+        this.$router.push("regpatinfo")
+      } else {
+        this.$api.getPatientDoingCase({
+          patid: patid
+        }).then(res => {
+          if (res.data.code == 0 && res.data.data.id) {
+            this.form = res.data.data
+          }
+        })
       }
-    }
+    },
   }
 
 </script>
@@ -519,12 +543,16 @@
   .popupContainer {
     background: #EFEFEF;
     padding: 2px;
+    height: 100vh;
+    width: 84%;
+    margin: auto;
   }
 
   .popupFooter {
     display: flex;
     /* padding: 2rem; */
     background: #EFEFEF;
+    margin-top: 2rem;
 
 
     .jbbtn {

+ 40 - 1
src/components/DocIndex.vue

@@ -9,7 +9,8 @@
     </div>
     <div class="content">
       <div class="footer">
-        <div class="csbtn" @click="goPage('/regpatinfo')">新病例信息录入</div>
+        <!-- <div class="csbtn" @click="goPage('/regpatinfo')">新病例信息录入</div> -->
+        <div class="csbtn" @click="regNew">新病例信息录入</div>
         <div class="jbbtn" @click="goPage('patcaselist')">历史病例管理</div>
         <div class="jbbtn" @click="logout">退出登录</div>
         <div class="usageInfo">使用说明</div>
@@ -19,8 +20,21 @@
 </template>
 
 <script>
+  import {
+    Field,
+    MessageBox,
+    Toast,
+    Popup
+  } from 'mint-ui'
+
   export default {
     name: 'Index',
+    components: {
+      Field,
+      MessageBox,
+      Toast,
+      Popup
+    },
     data() {
       return {
         doctorInfo: {}
@@ -41,6 +55,31 @@
             this.doctorInfo = res.data.data
           }
         })
+      },
+      regNew(){
+        this.$api.getPatientDoingCase({doctor_id:this.doctorInfo.id}).then(res=>{
+          if(res.data.code==0 && res.data.data.id){
+            MessageBox({
+              title: '提示',
+              message: '您有一个病例未完成',
+              showCancelButton: true,
+              confirmButtonText:"继续录入",
+              cancelButtonText:"重新录入"
+            },action=>{
+              console.log(action)
+              if(action=="confirm"){
+                this.$router.push({
+                  path:"/diagcalc",
+                  query:{id:res.data.data.id,patid:res.data.data.patient_id}
+                })
+              }else{
+                this.$router.push("regpatinfo")
+              }
+            });
+          }else{
+            this.$router.push("regpatinfo")
+          }
+        })
       }
     },
     created() {

+ 33 - 25
src/components/PreTraitCase.vue

@@ -4,18 +4,21 @@
     <div class="content">
       <div class="title">预防治疗参考方案</div>
       <div class="loginForm">
-        <mt-field placeholder="请选择产品" class="inputDisable" disabled label="产品选择" v-model="form.ckmpro" @click.native="mproFlag=true;mfreqFlag=false;ckzsjlFlag=false">
-          <img v-if="!show" src="../assets/images/down.png" alt="" width="16px">
+        <mt-field placeholder="请选择产品" class="inputDisable" :disabled="true" label="注射产品" v-model="form.ckmpro"
+          >
+          <!-- <img v-if="!show" src="../assets/images/down.png" alt="" width="16px"> -->
         </mt-field>
-        <mt-field placeholder="请选择注射频次" class="inputDisable" disabled label="注射频次" v-model="form.ckmfreq" @click.native="mfreqFlag=true;mproFlag=false;ckzsjlFlag=false">
+        <mt-field placeholder="请选择注射频次" class="inputDisable" disabled label="注射频次" v-model="form.ckmfreq"
+          @click.native="mfreqFlag=true;mproFlag=false;ckzsjlFlag=false">
           <img v-if="!show" src="../assets/images/down.png" alt="" width="16px">
         </mt-field>
-        <mt-field placeholder="请选择" class="inputDisable" disabled label="每次注射剂量(IU)" v-model="form.ckzsjl" @click.native="ckzsjlFlag=true;mproFlag=false;mfreqFlag=false">
+        <mt-field placeholder="请选择" class="inputDisable" disabled label="每次注射剂量(IU)" v-model="form.ckzsjl"
+          @click.native="ckzsjlFlag=true;mproFlag=false;mfreqFlag=false">
           <img v-if="!show" src="../assets/images/down.png" alt="" width="16px">
         </mt-field>
       </div>
       <div class="footer">
-          <div class="jbbtn" @click="goPage(-1)">返回</div>
+        <div class="jbbtn" @click="goPage(-1)">返回</div>
         <div class="jbbtn" @click="submit">确定</div>
       </div>
     </div>
@@ -50,12 +53,14 @@
     },
     data() {
       return {
-        form: {},
+        form: {
+          mckpro:''
+        },
         mproFlag: false,
         mfreqFlag: false,
         ckzsjlFlag: false,
-        caseInfo:{},
-        show:this.$route.query.show,
+        caseInfo: {},
+        show: this.$route.query.show,
         slots: [{
           flex: 1,
           values: this.$const.mprolist,
@@ -105,14 +110,6 @@
         }
       },
       submit() {
-        this.$router.push({
-                path: '/solutionpkline',
-                query: {
-                  id: 74
-                }
-              })
-        return
-
         if (!this.form.ckmpro) {
           MessageBox({
             title: '提示',
@@ -138,20 +135,29 @@
         let role = this.$route.query.role
         let params = this.form
         params.id = id
-        this.$api.editPatientCase(params).then(res=>{
-          if(!res.data.code){
-            this.$router.push({'path':'/solutionpkline',query:{id:id,role:role}})
+        this.$api.editPatientCase(params).then(res => {
+          if (!res.data.code) {
+            this.$router.push({
+              'path': '/solutionpkline',
+              query: {
+                id: id,
+                role: role
+              }
+            })
           }
         })
       }
     },
     created() {
       let id = this.$route.query.id
-        this.$api.getPatientCaseInfo({id:id}).then(res=>{
-          if(!res.data.code){
-            this.form = res.data.data
-          }
-        })
+      this.$api.getPatientCaseInfo({
+        id: id
+      }).then(res => {
+        if (!res.data.code) {
+          this.form = res.data.data
+          this.form.ckmpro = res.data.data.mpro
+        }
+      })
     },
   }
 
@@ -161,7 +167,9 @@
   .footer {
     display: flex;
   }
-.jbbtn {
+
+  .jbbtn {
     width: 42%;
   }
+
 </style>

+ 4 - 1
src/components/RegPatinfo.vue

@@ -140,7 +140,10 @@
         localStorage.setItem("patientCase", JSON.stringify(params))
         this.$api.regPatient(params).then(res => {
           if (!res.data.code) {
-            this.goPage("/diagcalc")
+            this.$router.push({
+              path:"diagcalc",
+              query:{patid:res.data.data}
+            })
           }
         })
       }

+ 55 - 45
src/components/ShowAndSaveCase.vue

@@ -2,29 +2,50 @@
   <div class="container">
     <div class="bgimg"></div>
     <div class="content">
+      <div class="title">病例治疗方案存档</div>
       <div class="diagShowForm">
-        <div class="formTitle">FVIII药代动力学检测</div>
+        <!-- <div class="formTitle">FVIII药代动力学检测</div> -->
         <div style="display:flex;">
-          <div class="rowfont" style="width:50%;">姓名</div>
-          <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.name}}</div>
+          <div class="rowfont" style="width:40%;">姓名</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.name}}</div>
         </div>
         <div style="display:flex;">
-          <div class="rowfont" style="width:50%;">年龄</div>
-          <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.age}}</div>
+          <div class="rowfont" style="width:40%;">ID</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.code}}</div>
         </div>
         <div style="display:flex;">
-          <div class="rowfont" style="width:50%;">体重(kg)</div>
-          <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.bltz}}</div>
+          <div class="rowfont" style="width:40%;">年龄</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.age}}</div>
         </div>
         <div style="display:flex;">
-          <div class="rowfont" style="width:50%;">注射产品</div>
-          <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.mpro}}</div>
+            <div class="rowfont" style="width:40%;">性别</div>
+            <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.sex}}</div>
+          </div>
+        <div style="display:flex;">
+          <div class="rowfont" style="width:40%;">体重(kg)</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.bltz}}</div>
+        </div>
+        <div style="display:flex;">
+          <div class="rowfont" style="width:40%;">产品</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.mpro}}</div>
+        </div>
+        <div style="display:flex;">
+          <div class="rowfont" style="width:40%;">剂量(IU/kg)</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.zsjl}}</div>
+        </div>
+        <div style="display:flex;">
+          <div class="rowfont" style="width:40%;">频次</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.zspc}}</div>
         </div>
         <div style="display:flex;">
-          <div class="rowfont" style="width:50%;">注射剂量(IU/kg)</div>
-          <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.zsjl}}</div>
+          <div class="rowfont" style="width:40%;">方案时间</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.ctime}}</div>
         </div>
         <div style="display:flex;">
+          <div class="rowfont" style="width:40%;">录入医生</div>
+          <div class="rowfont" style="width:60%;color:#888;">{{caseInfo.doctor_name}}</div>
+        </div>
+        <!-- <div style="display:flex;">
           <div class="rowfont" style="width:50%;">注射时间t<sub>0</sub></div>
           <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.zssjt0}}</div>
         </div>
@@ -63,11 +84,11 @@
         <div style="display:flex;">
           <div class="rowfont" style="width:50%;">预期峰值活性%</div>
           <div class="rowfont" style="width:50%;color:#888;">{{caseInfo.yqfzhx}}</div>
-        </div>
+        </div> -->
       </div>
       <div class="footer">
         <div class="jbbtn" @click="goPage(-1)">返回</div>
-        <div class="jbbtn" @click="goPage('/docindex')">存储</div>
+        <div class="jbbtn" @click="submit">存储</div>
       </div>
     </div>
   </div>
@@ -76,13 +97,15 @@
 <script>
   import {
     Field,
-    Cell
+    Cell,
+    Toast
   } from 'mint-ui'
   export default {
     name: 'Index',
     components: {
       Field,
-      Cell
+      Cell,
+      Toast
     },
     data() {
       return {
@@ -91,36 +114,11 @@
       }
     },
     methods: {
-      goPage() {
-        this.$router.push({
-            'path': '/docindex',
-            query: {}
-          })
-        return 
-        let id = this.$route.query.id
-        let role = this.$route.query.role
-        let show = this.$route.query.show
-        if (role == 2) {
-          // this.$router.push({'path':'/patcxsjline',query:{id:id}})
-          // this.$router.push({'path':'/solutionpkline',query:{id:id}})
-          this.$router.push({
-            'path': '/pretraitcase',
-            query: {
-              id: id,
-              show: show,
-              role: role
-            }
-          })
-        } else {
-          // this.$router.push({'path':'/solutionpkline',query:{id:id}})
-          this.$router.push({
-            'path': '/pretraitcase',
-            query: {
-              id: id,
-              show: show,
-              role: role
-            }
-          })
+      goPage(path) {
+        if(path==-1){
+          this.$router.go(-1)
+        }else{
+          this.$router.push(path)
         }
       },
       getData() {
@@ -132,6 +130,18 @@
             this.caseInfo = res.data.data
           }
         })
+      },
+      submit(){
+        let params = this.caseInfo
+        params.action = "finish"
+        this.$api.regPatientCase(params).then(res => {
+          if (!res.data.code) {
+            Toast("成功!")
+            this.$router.push("/docindex")
+          } else {
+            Toast(res.data.message)
+          }
+        })
       }
     },
     created() {

+ 1 - 1
src/components/SolutionPkLine.vue

@@ -124,7 +124,7 @@
         if(this.$route.query && this.$route.query.show){
           this.goPage('/patcaselist')
         }else{
-          this.goPage('/showandsavecase?id=74')
+          this.goPage('/showandsavecase?id='+this.$route.query.id)
         }
       },
       goPage(path) {