Przeglądaj źródła

增加出血打卡和出血记录

tanyanfei 1 rok temu
rodzic
commit
8fdd549e1c

BIN
node_modules.zip


Plik diff jest za duży
+ 3319 - 3199
package-lock.json


+ 1 - 1
package.json

@@ -14,7 +14,7 @@
     "build": "node build/build.js"
   },
   "dependencies": {
-    "axios": "^1.4.0",
+    "axios": "^1.6.7",
     "echarts": "^5.4.2",
     "mint-ui": "^2.2.13",
     "vue": "^2.5.2",

+ 30 - 1
src/api.js

@@ -15,7 +15,7 @@ axios.interceptors.request.use(
   });
 axios.interceptors.response.use(function (response) {
   // console.log(response.headers)
-  // IE 8-9 
+  // IE 8-9
   if (response.data == null && response.config.responseType === 'json' && response.request.responseText != null) {
     try {
       // eslint-disable-next-line no-param-reassign
@@ -132,4 +132,33 @@ export default {
   deleteCaseInfo: params => {
     return axios.delete(`${baseURL}/api/doctor/patient/case/info`,{params:params})
   },
+
+  // 获取病人最新打卡记录
+  get_patient_latest: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/record/latest`,{params:params})
+  },
+  // 获取距离目标谷活性剩余时间
+  get_patient_timecalc: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/mbghx/timecalc`,{params:params})
+  },
+  // 获取出血打卡选项
+  get_patient_bleed_options: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/bleed/options`,{params:params})
+  },
+  // 出血打卡
+  regPatientClockBleed: params => {
+    return axios.post(`${baseURL}/api/doctor/patient/bleed/records`, params)
+  },
+  // 获取出血记录
+  get_patient_bleed_list: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/bleed/records/list`,{params:params})
+  },
+  // 获取出血次数
+  get_patient_bleed_statistics: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/bleed/records/statistic`,{params:params})
+  },
+  // 获取消息列表
+  get_patient_doctor_notice_list: params => {
+    return axios.get(`${baseURL}/api/doctor/patient/doctor/notice/list`,{params:params})
+  },
 }

BIN
src/assets/images/msg.png


+ 16 - 1
src/components/DocIndex.vue

@@ -1,6 +1,7 @@
 <template>
   <div class="docContainer">
     <div style="position:relative;">
+      <img @click="goPage('notice')" width="30" src="../assets/images/msg.png" class="msg">
       <img src="../assets/images/infobg.png" alt="" width="100%" style="">
       <div class="docinfo">
         <img class="docavatar" src="../assets/images/doch1.jpg" width="60rem" height="60rem" />
@@ -56,6 +57,14 @@
           }
         })
       },
+      getNotice(){
+          this.$api.get_patient_doctor_notice_list().then(res=>{
+            console.log(res.data.data)
+            if (!res.data.code) {
+              this.doctorInfo = res.data.data
+            }
+          })
+      },
       regNew() {
         this.$api.getPatientDoingCase({
           doctor_id: this.doctorInfo.id
@@ -91,6 +100,7 @@
     },
     created() {
       this.getData()
+      this.getNotice()
     }
   }
 
@@ -106,7 +116,12 @@
       /* z-index:-1; */
       background: #016AFA;
     }
-
+    .msg{
+      position: absolute;
+      right: 10px;
+      top: 10px;
+      z-index: 9;
+    }
     .bgimg {
       width: 100%;
       height: 24.8rem;

+ 126 - 0
src/components/Notice.vue

@@ -0,0 +1,126 @@
+<template>
+  <div class="container">
+    <div class="bgimg"></div>
+    <div class="content">
+      <div class="injectionListForm baseInfo">
+        <div class="title">消息通知</div>
+        <ul class="notice_list">
+          <li @click="goPage('/patbleedlist?id='+item.send_user)" v-for="(item,index) in list">
+              {{item.msg_content}}
+              <p>{{item.ctime}}</p>
+          </li>
+        </ul>
+      </div>
+      <div class="footer">
+        <div class="jbbtn" @click="goPage(-1)">返回</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {
+    Field,
+    Picker,
+    Search,
+    Button
+  } from 'mint-ui'
+
+  export default {
+    name: 'Index',
+    components: {
+      Field,
+      Picker,
+      Search,
+      Button
+    },
+    data() {
+      return {
+        list: []
+      }
+    },
+    methods: {
+      goPage(path) {
+        if(path==-1){
+          this.$router.go(-1)
+        }else{
+          this.$router.push(path)
+        }
+      },
+      getData() {
+        this.$api.get_patient_doctor_notice_list().then(res=>{
+          console.log(res.data.data)
+          if (!res.data.code) {
+            this.list = res.data.data.list
+          }
+        })
+      }
+    },
+    created() {
+      this.getData()
+    }
+  }
+
+</script>
+
+<style scoped lang="scss">
+  .injectionListForm {
+    width: 95%;
+    margin: auto;
+    margin-top: 1rem;
+    background: #fff;
+    padding: 1rem 0;
+    border-radius: 8px;
+    position: relative;
+    .title{
+      color: #333;
+      margin-bottom: 1rem;
+    }
+    .notice_list{
+      margin: 0;
+      padding: 0 10px;
+      min-height: 55vh;
+      overflow: auto;
+      li{
+        list-style: none;
+        padding: 10px 0;
+        text-align: left;
+        border-bottom: 1px solid #4472C4;
+        font-size: 14px;
+        p{
+          color: #E3E3E3;
+        }
+        &:last-child{
+          border: none;
+        }
+      }
+    }
+  }
+
+  .footer {
+    display: flex;
+    flex-wrap: wrap;
+    // margin-top:2rem;
+    .jbbtn {
+      width: 42%;
+    }
+  }
+
+  .listItemContainer {
+    display: flex;
+    .listItem {
+      width: 33%;
+      /* height: 3.2rem; */
+      line-height: 3.2rem;
+      flex-direction: row;
+      justify-content: space-between;
+      border-bottom: 1px solid #ccc;
+      font-size:1.1rem;
+    }
+
+    .listHeader{
+      font-size:1.2rem;
+    }
+  }
+
+</style>

+ 198 - 0
src/components/PatBleedCount.vue

@@ -0,0 +1,198 @@
+<template>
+  <div class="container">
+    <div class="bgimg"></div>
+    <div class="content">
+      <div class="title">出血次数统计</div>
+      <div v-if='id && name' class="title" style="font-size: 1rem;">姓名:{{name}}</div>
+      <div class="injectionListForm baseInfo">
+        <p>年化出血率:</p>
+        <p>年化关节出血率:</p>
+        <ul class="tabs">
+          <li @click="tabChange(1)" :class="tab==1?'act':''">近1个月</li>
+          <li @click="tabChange(3)" :class="tab==3?'act':''">近3个月</li>
+          <li @click="tabChange(6)" :class="tab==6?'act':''">近6个月</li>
+          <li @click="tabChange(12)" :class="tab==12?'act':''">近12个月</li>
+        </ul>
+        <v-chart :option="barOption" style="height: 350px">
+        </v-chart>
+      </div>
+      <div class="footer">
+        <div class="jbbtn" @click="goPage(-1)">返回</div>
+        <!-- <div class="jbbtn" @click="goPage('/patclockbleed')">出血打卡</div><br> -->
+        <div v-if='!id' style="font-size: 1rem;" class="jbbtn" @click="goPage('/patgjbleedcount')">关节出血次数统计</div>
+        <div v-else style="font-size: 1rem;" class="jbbtn" @click="goPage('/patgjbleedcount?id='+id)">关节出血次数统计</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {
+    Field,
+    Picker,
+    Search,
+    Button
+  } from 'mint-ui'
+
+  export default {
+    name: 'Index',
+    components: {
+      Field,
+      Picker,
+      Search,
+      Button
+    },
+    data() {
+      return {
+        tab:12,
+        id:'',
+        form: {},
+        patinfo:{},
+        recordsList: [],
+        barOption:{},
+        name:''
+      }
+    },
+    methods: {
+      goPage(path) {
+        if(path==-1){
+          this.$router.go(-1)
+        }else{
+          this.$router.push(path)
+        }
+      },
+      tabChange(tab){
+        this.tab=tab
+        this.barOption={}
+        this.getData()
+      },
+      getData() {
+        let query_form={time_range:this.tab}
+        let id = this.$route.query.id
+        if(id){
+          query_form.patient_id=id
+          this.id=id
+          this.$api.get_patient_info({id:id}).then(res=>{
+            this.name=res.data.data.name
+          })
+        }
+        this.$api.get_patient_bleed_statistics(query_form).then(res => {
+            if (!res.data.code) {
+              let data=res.data.data
+              this.barOption={
+                    tooltip: {
+                      trigger: 'axis',
+                      axisPointer: {
+                        type: 'shadow'
+                      }
+                    },
+                    legend: {
+                       itemWidth:5,
+                       itemHeight:5,
+                       textStyle:{
+                         fontSize:10
+                       }
+                    },
+                    xAxis: {
+                      type: 'category',
+                      data: ['总出血次数', '关节出血', '其他部位出现']
+                    },
+                    yAxis: {
+                      type: 'value',
+                      name:'(次)'
+                    },
+                    series: [
+                      {
+                        name:'自发性出血',
+                        data: [data.gj_zfx_bleed_cnt+data.zfx_bleed_cnt, data.gj_zfx_bleed_cnt, data.zfx_bleed_cnt],
+                        itemStyle:{
+                          color:'#DEEBF7'
+                        },
+                        type: 'bar',
+                        stack: '1',
+                        barWidth:30,
+                        label:{
+                          show:true,
+                          position:'inside'
+                        }
+                      },
+                      {
+                        name:'外伤性出血',
+                        data: [data.gj_wsx_bleed_cnt+data.wsx_bleed_cnt, data.gj_wsx_bleed_cnt, data.wsx_bleed_cnt],
+                        itemStyle:{
+                          color:'#F8CBAD'
+                        },
+                        type: 'bar',
+                        stack: '1',
+                        label:{
+                          show:true,
+                          position:'inside'
+                        }
+                      }
+                    ]
+              }
+            }
+        })
+
+      }
+    },
+    created() {
+      this.getData()
+    }
+  }
+
+</script>
+
+<style scoped lang="scss">
+  .injectionListForm {
+    width: 95%;
+    margin: auto;
+    margin-top: 1rem;
+    background: #fff;
+    padding: 1rem 0;
+    border-radius: 8px;
+    position: relative;
+    .tabs{
+      display: flex;
+      padding: 0;
+      li{
+        width: 25%;
+        text-align:center;
+        list-style: none;
+        font-size: 13px;
+        line-height: 28px;
+        &.act{
+          background-color: #4472C4;
+          color: #fff;
+        }
+      }
+    }
+  }
+
+  .footer {
+    display: flex;
+    flex-wrap: wrap;
+    // margin-top:2rem;
+    .jbbtn {
+      width: 42%;
+    }
+  }
+
+  .listItemContainer {
+    display: flex;
+    .listItem {
+      width: 33%;
+      /* height: 3.2rem; */
+      line-height: 3.2rem;
+      flex-direction: row;
+      justify-content: space-between;
+      border-bottom: 1px solid #ccc;
+      font-size:1.1rem;
+    }
+
+    .listHeader{
+      font-size:1.2rem;
+    }
+  }
+
+</style>

+ 151 - 0
src/components/PatBleedList.vue

@@ -0,0 +1,151 @@
+<template>
+  <div class="container">
+    <div class="bgimg"></div>
+    <div class="content">
+
+      <div class="title">出血记录</div>
+      <div v-if='id && recordsList.length>0' class="title" style="font-size: 1rem;">姓名:{{recordsList[0].name}}</div>
+      <div class="injectionListForm baseInfo">
+        <table class="bleed_table">
+          <tr class="thead">
+            <td>出血时间</td>
+            <td>出血部位</td>
+            <td>原因</td>
+            <td>程度</td>
+          </tr>
+          <tr v-for="(item,index) in recordsList">
+            <td>{{item.bleed_time}}</td>
+            <td>{{item.bleed_part_detail?item.bleed_part_detail:item.bleed_part}}</td>
+            <td>{{item.bleed_reason}}</td>
+            <td>{{item.bleed_level}}</td>
+          </tr>
+        </table>
+      </div>
+      <div class="footer">
+        <div v-if='id' class="jbbtn" @click="goPage(-1)">返回</div>
+        <div v-else class="jbbtn" @click="goPage('/patindex')">返回</div>
+        <div v-if='!id' class="jbbtn" @click="goPage('/patclockbleed')">出血打卡</div><br>
+        <div v-if='!id' class="jbbtn" @click="goPage('/patbleedcount')">出血次数统计</div>
+        <div v-else class="jbbtn" @click="goPage('/patbleedcount?id='+id)">出血次数统计</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {
+    Field,
+    Picker,
+    Search,
+    Button
+  } from 'mint-ui'
+
+  export default {
+    name: 'Index',
+    components: {
+      Field,
+      Picker,
+      Search,
+      Button
+    },
+    data() {
+      return {
+        form: {},
+        patinfo:{},
+        recordsList: [],
+        id:''
+      }
+    },
+    methods: {
+      goPage(path) {
+        if(path==-1){
+          this.$router.go(-1)
+        }else{
+          this.$router.push(path)
+        }
+      },
+      getData() {
+        let query_form={}
+        let id = this.$route.query.id
+        if(id){
+          query_form.patient_id=id
+          this.id=id
+        }
+        this.$api.get_patient_bleed_list(query_form).then(res => {
+          console.log(res.data.data)
+          if (!res.data.code) {
+            this.recordsList = res.data.data.list
+          }
+        })
+        this.$api.getAccountInfo().then(res => {
+          if (!res.data.code) {
+            this.patinfo = res.data.data
+          }
+        })
+      }
+    },
+    created() {
+      this.getData()
+    }
+  }
+
+</script>
+
+<style scoped lang="scss">
+  .injectionListForm {
+    width: 95%;
+    margin: auto;
+    margin-top: 1rem;
+    background: #fff;
+    padding: 1rem 0;
+    border-radius: 8px;
+    position: relative;
+    .bleed_table{
+      width: 100%;
+      tr:nth-child(odd){
+        background-color: #E9EBF5;
+      }
+      tr:nth-child(even){
+        background-color: #CFD5EA;
+      }
+      td{
+        padding: 10px;
+        text-align: left;
+        font-size: 14px;
+      }
+      .thead td{
+        background-color: #4472C4;
+        padding: 5px 10px;
+        width: 25%;
+        color: #fff;
+      }
+    }
+  }
+
+  .footer {
+    display: flex;
+    flex-wrap: wrap;
+    // margin-top:2rem;
+    .jbbtn {
+      width: 42%;
+    }
+  }
+
+  .listItemContainer {
+    display: flex;
+    .listItem {
+      width: 33%;
+      /* height: 3.2rem; */
+      line-height: 3.2rem;
+      flex-direction: row;
+      justify-content: space-between;
+      border-bottom: 1px solid #ccc;
+      font-size:1.1rem;
+    }
+
+    .listHeader{
+      font-size:1.2rem;
+    }
+  }
+
+</style>

+ 5 - 0
src/components/PatCaseList.vue

@@ -58,7 +58,12 @@
       <div class="patCaseForm baseInfo" v-if="selected=='3' && caseList.length>0" style="padding-bottom:1rem;">
         <mt-cell :title="'姓名:'+caseList[0].name" :value="'ID:'+caseList[0].code"></mt-cell>
         <mt-cell :title="'年龄:'+caseList[0].age" :value="'性别:'+caseList[0].sex"></mt-cell>
+        <div class="footer">
+          <div class="jbbtn" @click="goPage('/patinjectionlist?id='+queryForm.patient_id)">打卡记录</div>
+          <div class="jbbtn" @click="goPage('/patbleedlist?id='+queryForm.patient_id)">出血记录</div>
+        </div>
       </div>
+
       <!-- 方案 -->
       <div class="patCaseForm baseInfo" v-for="(item,index) in caseList" v-if="selected=='3'">
         <!-- <mt-cell :title="'姓名:'+item.name" :value="'ID:'+item.code"></mt-cell>

+ 246 - 0
src/components/PatClockBleed.vue

@@ -0,0 +1,246 @@
+<template>
+  <div class="container">
+    <div class="bgimg"></div>
+    <div class="content">
+      <div class="title">出血打卡</div>
+      <div class="loginForm">
+        <div class="numSubTitle">
+            <mt-field class="inputDisable" disabled placeholder="请选择时间" v-model="form.bleed_time"
+              @click.native="flag=0">
+              <img src="../assets/images/down.png" alt="" width="16px">
+            </mt-field>
+            <span>出血时间</span>
+        </div>
+        <mt-field class="inputDisable" disabled label="出血部位" v-model="form.bleed_part"
+          @click.native="flag=1" placeholder="请选择">
+          <img src="../assets/images/down.png" alt="" width="16px">
+        </mt-field>
+        <mt-field v-if='form.bleed_part == "关节出血"' class="inputDisable" disabled label="关节" v-model="form.bleed_part_detail"
+          @click.native="flag=2" placeholder="请选择">
+          <img src="../assets/images/down.png" alt="" width="16px">
+        </mt-field>
+        <mt-field class="inputDisable" disabled label="出血原因" v-model="form.bleed_reason"
+          @click.native="flag=3" placeholder="请选择">
+          <img src="../assets/images/down.png" alt="" width="16px">
+        </mt-field>
+        <mt-field class="inputDisable" disabled label="出血程度" v-model="form.bleed_level"
+          @click.native="flag=4" placeholder="请选择">
+          <img src="../assets/images/down.png" alt="" width="16px">
+        </mt-field>
+      </div>
+      <div class="footer">
+        <div class="jbbtn" @click="$router.go(-1)">返回</div>
+        <button :disabled="lock ? 'disabled':false" class="jbbtn" @click="submit">确认</button>
+      </div>
+    </div>
+    <!-- 注射时间t0 -->
+    <mt-datetime-picker ref="t0Picker" type="datetime" year-format="{value} 年" month-format="{value} 月"
+      date-format="{value} 日" hourFormat="{value}时" minuteFormat="{value}分" @confirm='changeTime0' :endDate='endDate'
+      :startDate='startDate' v-model="now" @touchmove.native.stop.prevent>
+    </mt-datetime-picker>
+    <vue-hash-calendar
+      :visible="flag==0"
+      ref="zssjt0"
+      model="dialog"
+      :is-show-action="true"
+      picker-type="datetime"
+      format="YY-MM-DD hh:mm"
+      @confirm="dateConfirmZssjt0"
+      :change-year-fast="true"
+    ></vue-hash-calendar>
+    <!-- 出血部位 -->
+    <mt-picker  v-if="flag == 1" :slots="options.chux_parts"  ref="Picker1" class="sexPicker"
+      :showToolbar="true" @change="(picker,values)=>onValuesChange(picker,values,'bleed_part')">
+      <div class="pickerConfirm" @click="flag=-1">确认</div>
+    </mt-picker>
+    <!-- 关节 -->
+    <mt-picker  v-if="flag == 2" :slots="options.guanjie" ref="sexPicker" class="sexPicker"
+      :showToolbar="true" @change="(picker,values)=>onValuesChange(picker,values,'bleed_part_detail')">
+      <div class="pickerConfirm" @click="flag=-1">确认</div>
+    </mt-picker>
+    <!-- 出血原因-->
+    <mt-picker  v-if="flag == 3" :slots="options.chux_reason" ref="sexPicker" class="sexPicker"
+      :showToolbar="true" @change="(picker,values)=>onValuesChange(picker,values,'bleed_reason')">
+      <div class="pickerConfirm" @click="flag=-1">确认</div>
+    </mt-picker>
+    <!-- 出血程度 -->
+    <mt-picker  v-if="flag == 4" :slots="options.chux_level" ref="sexPicker" class="sexPicker"
+      :showToolbar="true" @change="(picker,values)=>onValuesChange(picker,values,'bleed_level')">
+      <div class="pickerConfirm" @click="flag=-1">确认</div>
+    </mt-picker>
+  </div>
+</template>
+
+<script>
+  import {
+    Field,
+    Picker,
+    MessageBox
+  } from 'mint-ui'
+
+  export default {
+    name: 'Index',
+    components: {
+      Field,
+      Picker,
+      MessageBox
+    },
+    data() {
+      return {
+        lock:false,
+        form: {
+          bleed_time:'',
+          bleed_part:''
+        },
+        flag:-1,
+        startDate: new Date(this.$datetime.formatDateTime(new Date("2023/01/01 00:00:00"))),
+        endDate: new Date(this.$datetime.formatDateTime(new Date("2024/01/01 00:00:00"))),
+        now: new Date(),
+        options:{
+
+        }
+      }
+    },
+    methods: {
+      goPage(path) {
+        this.$router.push(path)
+      },
+      changeTime0(value) {
+        this.form.bleed_time = this.$datetime.formatDateTime(value).replaceAll("/", "-")
+      },
+      dateConfirmZssjt0(value){
+        this.form.bleed_time = value
+        this.flag = -1
+      },
+      onValuesChange(picker, values, item) {
+        this.$set(this.form,item,values[0])
+      },
+      submit() {      
+        if (!this.form.bleed_part) {
+          MessageBox({
+            title: '提示',
+            message: '请选择出血部位'
+          })
+          return
+        }else if(this.form.bleed_part == "关节出血" && !this.form.bleed_part_detail){
+          MessageBox({
+            title: '提示',
+            message: '请选择出血关节'
+          })
+          return
+        }
+        if (!this.form.bleed_reason) {
+          MessageBox({
+            title: '提示',
+            message: '请输入出血原因'
+          })
+          return
+        }
+        if (!this.form.bleed_level) {
+          MessageBox({
+            title: '提示',
+            message: '请选择出血程度'
+          })
+          return
+        }
+        this.lock=true
+        let params = this.form
+        this.$api.regPatientClockBleed(params).then(res => {
+          if (!res.data.code) {
+            this.goPage("/patclockbleedsuc")
+          }else{
+            this.lock=false
+          }
+        })
+      }
+    },
+    created() {
+      this.form.bleed_time=this.$datetime.formatDateTime(new Date()).replaceAll("/", "-")
+      this.$api.get_patient_bleed_options().then(res=>{
+        const data=res.data.data
+        const opt={
+            flex: 1,
+            values: [],
+            className: 'slot1',
+            textAlign: 'center'
+          }
+        const options={
+          chux_parts:[{...opt}],
+          guanjie:[{...opt}],
+          chux_reason:[{...opt}],
+          chux_level:[{...opt}]
+        }
+        options.chux_parts[0].values=data.chux_parts
+        options.guanjie[0].values=data['关节出血']
+        options.chux_reason[0].values=data.chux_reason
+        options.chux_level[0].values=data.chux_level
+        this.options=options
+      })
+    },
+  }
+
+</script>
+
+<style scoped lang="scss">
+  .loginForm {
+    width: 84%;
+    margin: auto;
+    margin-top: 4rem;
+    background: #fff;
+    padding: 1rem;
+    border-radius: 5px;
+    // height: 12rem;
+
+    .mint-field {
+      border: 1px solid #ccc;
+      border-radius: 50px;
+      margin-top: 1rem;
+    }
+
+    .mint-cell {
+      min-height: 2.12rem;
+    }
+  }
+
+  .numSubTitle {
+    position: relative;
+
+    span {
+      position: absolute;
+      left: 15px;
+      top: 10px;
+      font-size:1.2rem;
+    }
+  }
+
+  /deep/ .numSubTitle .mint-field-core {
+    margin-left: 105px;
+  }
+
+  /deep/ .mint-cell .mint-cell-title {
+    /* width: 60%; */
+    /* text-align: left; */
+    font-size:1.2rem;
+  }
+
+  /deep/ .mint-cell .mint-cell-value {
+    /* width: 40%; */
+    /* text-align: right; */
+    font-size:1.2rem;
+  }
+
+  .footer {
+    display: flex;
+    margin-top:2rem;
+    .jbbtn {
+      width: 42%;
+      margin-top: 1rem;
+      margin-bottom: 1rem;
+      border: none;
+      &:disabled{
+        background: #d9d9d9;
+      }
+    }
+  }
+
+</style>

+ 22 - 3
src/components/PatClockIn.vue

@@ -29,7 +29,8 @@
       </div>
       <div class="footer">
         <div class="jbbtn" @click="$router.go(-1)">返回</div>
-        <div class="jbbtn" @click="submit">确认</div>
+        <!-- <div class="jbbtn" @click="submit">确认</div> -->
+        <button :disabled="lock ? 'disabled':false" class="jbbtn" @click="submit">确认</button>
       </div>
     </div>
     <mt-picker @change="onValuesChange" v-if="mproFlag" :slots="slots" ref="sexPicker" class="sexPicker"
@@ -46,9 +47,9 @@
       :startDate='startDate' v-model="now" @touchmove.native.stop.prevent>
     </mt-datetime-picker>
 
-    <vue-hash-calendar 
+    <vue-hash-calendar
       :visible="zssjt0Flag"
-      ref="zssjt0" 
+      ref="zssjt0"
       model="dialog"
       :is-show-action="true"
       picker-type="datetime"
@@ -75,6 +76,7 @@
     },
     data() {
       return {
+        lock:false,
         form: {
           zssjt0: ''
         },
@@ -125,6 +127,7 @@
         }
       },
       submit() {
+        
         if (!this.form.mpro) {
           MessageBox({
             title: '提示',
@@ -154,10 +157,13 @@
           })
           return
         }
+        this.lock=true
         let params = this.form
         this.$api.regPatientRecords(params).then(res => {
           if (!res.data.code) {
             this.goPage("/patclockinsuc")
+          }else{
+            this.lock=false
           }
         })
       }
@@ -166,6 +172,15 @@
       let _this = this
       this.$api.getPatientProList().then(res => {
         _this.slots[0].values = res.data.data
+        console.log(this.slots)
+      })
+      //获取最新打卡记录
+      this.$api.get_patient_latest().then(res=>{
+        let form=this.form,data=res.data.data
+        form.mpro=data.mpro
+        form.mdose=data.mdose
+        form.zssjt0=this.$datetime.formatDateTime(new Date()).replaceAll("/", "-")
+        this.form=form
       })
     },
   }
@@ -227,6 +242,10 @@
       width: 42%;
       margin-top: 1rem;
       margin-bottom: 1rem;
+      border: none;
+      &:disabled{
+        background: #d9d9d9;
+      }
     }
   }
 

+ 111 - 0
src/components/PatClockInBleedSuc.vue

@@ -0,0 +1,111 @@
+<template>
+  <div class="container">
+    <div class="bgimg"></div>
+    <div class="content">
+      <!-- <div class="title">注射打卡</div> -->
+      <div class="loginForm">
+        <div class="clocksucbg">
+          <img src="../assets/images/clockinbg.png" width="100%" alt="">
+          <div class="clocksucmsg" >您已打卡成功</div>
+        </div>
+        <!-- <div class="clockintime">距离【目标谷活性{{timeinfo.mbghx}}%】还有{{timeinfo.remain_time}}小时</div> -->
+      </div>
+      <div class="footer">
+        <div class="jbbtn" @click="goPage('/patindex')">返回</div>
+        <div class="jbbtn" @click="goPage('/patbleedlist')">出血记录</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {
+    Field,
+    Picker
+  } from 'mint-ui'
+
+  export default {
+    name: 'Index',
+    components: {
+      Field,
+      Picker
+    },
+    data() {
+      return {
+        form: {},
+        nowDatetime:this.$datetime.formatDateTimeFull(new Date()),
+        timeinfo:{}
+      }
+    },
+    methods: {
+      goPage(path) {
+        if(path==-1){
+          this.$router.go(-1)
+        }else{
+          this.$router.push(path)
+        }
+      }
+    },
+    created(){
+      //获取时间
+      this.$api.get_patient_timecalc().then(res=>{
+        this.timeinfo=res.data.data
+      })
+    }
+  }
+
+</script>
+
+<style scoped lang="scss">
+  .loginForm {
+    width: 84%;
+    margin: auto;
+    margin-top: 4rem;
+    background: #fff;
+    padding: 1rem;
+    border-radius: 5px;
+
+    .mint-field {
+      border: 1px solid #ccc;
+      border-radius: 50px;
+      margin-top: 1rem;
+    }
+
+    .mint-cell {
+      min-height: 2.12rem;
+    }
+    .clocksucbg{
+      width:80%;
+      margin:auto;
+      position: relative;
+      /* padding-top:4rem; */
+      /* height: 16rem; */
+      // height: 19rem;
+    }
+    .clocksucmsg{
+      width:100%;
+      position:absolute;
+      text-align: center;
+      top:calc(50% - 1rem);
+      font-size:1.4rem;
+      color:#fff;
+      font-weight: bold;
+      height: 2rem;
+    }
+    .clockintime {
+      // width: 60%;
+      font-size: 1rem;
+      color: #ccc;
+      margin: auto;
+      margin-top: 2rem;
+      margin-bottom: 4rem;
+    }
+  }
+  .footer{
+    display: flex;
+    margin-top:2rem;
+    .jbbtn{
+      width: 42%;
+    }
+  }
+</style>

+ 13 - 7
src/components/PatClockInSuc.vue

@@ -8,7 +8,7 @@
           <img src="../assets/images/clockinbg.png" width="100%" alt="">
           <div class="clocksucmsg" >您已打卡成功</div>
         </div>
-        <!-- <div class="clockintime">打卡时间:{{nowDatetime}}</div> -->
+        <div class="clockintime">距离【目标谷活性{{timeinfo.mbghx}}%】还有{{timeinfo.remain_time}}小时</div>
       </div>
       <div class="footer">
         <div class="jbbtn" @click="goPage('/patindex')">返回</div>
@@ -33,7 +33,8 @@
     data() {
       return {
         form: {},
-        nowDatetime:this.$datetime.formatDateTimeFull(new Date())
+        nowDatetime:this.$datetime.formatDateTimeFull(new Date()),
+        timeinfo:{}
       }
     },
     methods: {
@@ -44,6 +45,12 @@
           this.$router.push(path)
         }
       }
+    },
+    created(){
+      //获取时间
+      this.$api.get_patient_timecalc().then(res=>{
+        this.timeinfo=res.data.data
+      })
     }
   }
 
@@ -73,21 +80,20 @@
       position: relative;
       /* padding-top:4rem; */
       /* height: 16rem; */
-      height: 19rem;
+      // height: 19rem;
     }
     .clocksucmsg{
       width:100%;
       position:absolute;
       text-align: center;
-      top:0px;
-      bottom:0px;
+      top:calc(50% - 1rem);
       font-size:1.4rem;
       color:#fff;
       font-weight: bold;
-      line-height: 19rem;
+      height: 2rem;
     }
     .clockintime {
-      width: 60%;
+      // width: 60%;
       font-size: 1rem;
       color: #ccc;
       margin: auto;

+ 207 - 0
src/components/PatGjBleedCount.vue

@@ -0,0 +1,207 @@
+<template>
+  <div class="container">
+    <div class="bgimg"></div>
+    <div class="content">
+      <div class="title">关节出血次数统计</div>
+      <div v-if='id && name' class="title" style="font-size: 1rem;">姓名:{{name}}</div>
+      <div class="injectionListForm baseInfo">
+        <p>年化出血率:</p>
+        <p>年化关节出血率:</p>
+        <ul class="tabs">
+          <li @click="tabChange(1)" :class="tab==1?'act':''">近1个月</li>
+          <li @click="tabChange(3)" :class="tab==3?'act':''">近3个月</li>
+          <li @click="tabChange(6)" :class="tab==6?'act':''">近6个月</li>
+          <li @click="tabChange(12)" :class="tab==12?'act':''">近12个月</li>
+        </ul>
+        <v-chart :option="barOption" style="height: 350px">
+        </v-chart>
+      </div>
+      <div class="footer">
+        <div class="jbbtn" @click="goPage(-1)">返回</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {
+    Field,
+    Picker,
+    Search,
+    Button
+  } from 'mint-ui'
+
+  export default {
+    name: 'Index',
+    components: {
+      Field,
+      Picker,
+      Search,
+      Button
+    },
+    data() {
+      return {
+        tab:12,
+        form: {},
+        patinfo:{},
+        recordsList: [],
+        barOption:{},
+        id:'',
+        name:''
+      }
+    },
+    methods: {
+      goPage(path) {
+        if(path==-1){
+          this.$router.go(-1)
+        }else{
+          this.$router.push(path)
+        }
+      },
+      tabChange(tab){
+        this.tab=tab
+        this.barOption={}
+        this.getData()
+      },
+      getData() {
+        let query_form={time_range:this.tab}
+        let id = this.$route.query.id
+        if(id){
+          query_form.patient_id=id
+          this.id=id
+          this.$api.get_patient_info({id:id}).then(res=>{
+            this.name=res.data.data.name
+          })
+        }
+        this.$api.get_patient_bleed_statistics(query_form).then(res => {
+            if (!res.data.code) {
+              let data=res.data.data
+              let x_data=[],y_data_zfx=[],y_data_wsx=[]
+              data.gj_bleed_list.forEach(item=>{
+                x_data.push(item.gj_name)
+                y_data_zfx.push(item.gj_bleed_cnt_zfx)
+                y_data_wsx.push(item.gj_bleed_cnt_wsx)
+              })
+              this.barOption={
+                    tooltip: {
+                      trigger: 'axis',
+                      axisPointer: {
+                        type: 'shadow'
+                      }
+                    },
+                    legend: {
+                       itemWidth:5,
+                       itemHeight:5,
+                       textStyle:{
+                         fontSize:10
+                       }
+                    },
+                    grid:{
+                      right:'5%'
+                    },
+                    xAxis: {
+                      type: 'category',
+                      data: x_data,
+                      axisLabel:{
+                        rotate:45,
+                        fontSize:8
+                      }
+
+                    },
+                    yAxis: {
+                      type: 'value',
+                      name:'(次)'
+                    },
+                    series: [
+                      {
+                        name:'自发性出血',
+                        data: y_data_zfx,
+                        itemStyle:{
+                          color:'#DEEBF7'
+                        },
+                        type: 'bar',
+                        stack: '1',
+                        label:{
+                          show:true,
+                          position:'inside'
+                        }
+                      },
+                      {
+                        name:'外伤性出血',
+                        data: y_data_wsx,
+                        itemStyle:{
+                          color:'#F8CBAD'
+                        },
+                        type: 'bar',
+                        stack: '1',
+                        label:{
+                          show:true,
+                          position:'inside'
+                        }
+                      }
+                    ]
+              }
+            }
+        })
+      }
+    },
+    created() {
+      this.getData()
+    }
+  }
+
+</script>
+
+<style scoped lang="scss">
+  .injectionListForm {
+    width: 95%;
+    margin: auto;
+    margin-top: 1rem;
+    background: #fff;
+    padding: 1rem 0;
+    border-radius: 8px;
+    position: relative;
+    .tabs{
+      display: flex;
+      padding: 0;
+      li{
+        width: 25%;
+        text-align:center;
+        list-style: none;
+        font-size: 13px;
+        line-height: 28px;
+        &.act{
+          background-color: #4472C4;
+          color: #fff;
+        }
+      }
+    }
+  }
+
+  .footer {
+    display: flex;
+    flex-wrap: wrap;
+    // margin-top:2rem;
+    .jbbtn {
+      width: 42%;
+    }
+  }
+
+  .listItemContainer {
+    display: flex;
+    .listItem {
+      width: 33%;
+      /* height: 3.2rem; */
+      line-height: 3.2rem;
+      flex-direction: row;
+      justify-content: space-between;
+      border-bottom: 1px solid #ccc;
+      font-size:1.1rem;
+    }
+
+    .listHeader{
+      font-size:1.2rem;
+    }
+  }
+
+</style>

+ 14 - 5
src/components/PatIndex.vue

@@ -20,7 +20,7 @@
                 <img class="ratioBg2" src="../assets/images/personbg1.png" width="80" height="216"></img>
               </div> -->
               <div class="lritem left">
-                <img height="100%" v-if="latestCase.FVIII<1" class="ratioBg3" src="../assets/images/_1.png" 
+                <img height="100%" v-if="latestCase.FVIII<1" class="ratioBg3" src="../assets/images/_1.png"
                   ></img>
                 <img v-if="latestCase.FVIII>=1 && latestCase.FVIII<=3" class="ratioBg3" src="../assets/images/1-3.png"
                   width="100%"></img>
@@ -48,7 +48,7 @@
                 <div class="rowfont">具体治疗方案请遵医嘱执行</div> -->
                 <div v-if="latestCase.FVIII < 1">
                   <div class="rowfont" style="font-weight:bold;font-size:1.4rem;color:#3B4070;margin-bottom:5px;">
-                    < 1% 
+                    < 1%
                   </div>
                   <div class="rowfont" style="font-weight:bold;font-size:1.4rem;color:#3B4070;">建议咨询医生</div>
                 </div>
@@ -83,9 +83,12 @@
               </div>
             </div>
           </div>
+          <div v-if='timeinfo.remain_time'>距离【目标谷活性{{timeinfo.mbghx}}%】还有{{timeinfo.remain_time}}小时</div>
           <div class="footer">
             <div class="jbbtn" @click="goPage('/patclockin')">注射打卡</div>
             <div class="jbbtn" @click="goPage('/patinjectionlist')">注射记录</div>
+            <div class="jbbtn" @click="goPage('/patclockbleed')">出血打卡</div>
+            <div class="jbbtn" @click="goPage('/patbleedlist')">出血记录</div>
             <div class="jbbtn" @click="goPage('/procaselist')">PK及方案</div>
             <div class="jbbtn" @click="logout">退出登录</div>
             <div class="usageInfo" @click="goPage('agreedoc?type=2')">使用说明</div>
@@ -126,7 +129,7 @@
             <img src="../assets/images/desc.png" alt="" width="100%">
         </div>
       </div>
-      
+
     </div>
     <!-- <div class="desc">
         <span>1、本结果仅供参考,具体治疗方案请遵医嘱执行</span><br>
@@ -135,7 +138,7 @@
         <span>3、Optimising prophylaxis in haemophilia A: The ups and downs of treatment,Erik Berntorp,et al. Blood
           Rev, 2021 Nov</span>
     </div> -->
-    
+
   </div>
 </template>
 
@@ -154,7 +157,8 @@
         inflag: 0,
         patinfo: {},
         latestCase: {},
-        ratioHeight: 0
+        ratioHeight: 0,
+        timeinfo:{}
       }
     },
     methods: {
@@ -180,10 +184,15 @@
             })
           }
         })
+        //获取时间
+        this.$api.get_patient_timecalc().then(res=>{
+          this.timeinfo=res.data.data
+        })
       }
     },
     created() {
       this.getData()
+
     }
   }
 

+ 11 - 5
src/components/PatInjectionList.vue

@@ -3,8 +3,8 @@
     <div class="bgimg"></div>
     <div class="content">
       <div class="title">注射记录</div>
+      <div v-if='id && patinfo.name' class="title" style="font-size: 1rem;">姓名:{{patinfo.name}}</div>
       <div class="injectionListForm baseInfo">
-        <div style="width:90%;font-size:1.4rem;text-align: center;margin:1rem auto;font-weight: bold;">姓名:{{patinfo.name}}</div>
         <div class="listItemContainer">
           <div class="listItem listHeader" style="width:80%;background:#6DA2FE;color:#fff;">打卡时间</div>
           <div class="listItem listHeader" style="background:#6DA2FE;color:#fff;">产品</div>
@@ -17,8 +17,8 @@
         </div>
       </div>
       <div class="footer">
-        <div class="jbbtn" @click="goPage('/patindex')">返回</div>
-        <div class="jbbtn" @click="goPage('/patclockin')">注射打卡</div>
+        <div class="jbbtn" @click="goPage(-1)">返回</div>
+        <div v-if='!id' class="jbbtn" @click="goPage('/patclockin')">注射打卡</div>
       </div>
     </div>
   </div>
@@ -44,7 +44,8 @@
       return {
         form: {},
         patinfo:{},
-        recordsList: []
+        recordsList: [],
+        id:''
       }
     },
     methods: {
@@ -57,7 +58,12 @@
       },
       getData() {
         let id = this.$route.query.id
-        this.$api.getPatientRecordsList(this.queryForm).then(res => {
+        let queryForm={}
+        if(id){
+          this.id=id
+          queryForm.patient_id=id
+        }
+        this.$api.getPatientRecordsList(queryForm).then(res => {
           if (!res.data.code) {
             this.recordsList = res.data.data.list
           }

+ 36 - 0
src/router/index.js

@@ -19,6 +19,12 @@ import PatRegister from '@/components/PatRegister'
 import PatCxsjLine from '@/components/PatCxsjLine'
 import PreTraitCase from '@/components/PreTraitCase'
 import ShowAndSaveCase from '@/components/ShowAndSaveCase'
+import PatClockBleed from '@/components/PatClockBleed'
+import PatClockInBleedSuc from '@/components/PatClockInBleedSuc'
+import PatBleedList from '@/components/PatBleedList'
+import PatBleedCount from '@/components/PatBleedCount'
+import PatGjBleedCount from '@/components/PatGjBleedCount'
+import Notice from '@/components/Notice'
 
 Vue.use(Router)
 
@@ -45,6 +51,11 @@ export default new Router({
       component: DocIndex
     },
     {
+      path: '/notice',
+      name: '消息列表',
+      component: Notice
+    },
+    {
       path: '/regpatinfo',
       name: '录入患者信息',
       component: RegPatinfo
@@ -90,6 +101,31 @@ export default new Router({
       component: PatClockInSuc
     },
     {
+      path: '/patclockbleed',
+      name: '患者出血打卡',
+      component: PatClockBleed
+    },
+    {
+      path: '/patclockbleedsuc',
+      name: '患者出血打卡成功',
+      component: PatClockInBleedSuc
+    },
+    {
+      path: '/patbleedlist',
+      name: '出血记录',
+      component: PatBleedList
+    },
+    {
+      path: '/patbleedcount',
+      name: '出血次数统计',
+      component: PatBleedCount
+    },
+    {
+      path: '/patgjbleedcount',
+      name: '关节出血次数统计',
+      component: PatGjBleedCount
+    },
+    {
       path: '/patcaselist',
       name: '病例管理',
       component: PatCaseList

+ 0 - 0
static/.gitkeep


+ 0 - 27
test/e2e/custom-assertions/elementCount.js

@@ -1,27 +0,0 @@
-// A custom Nightwatch assertion.
-// The assertion name is the filename.
-// Example usage:
-//
-//   browser.assert.elementCount(selector, count)
-//
-// For more information on custom assertions see:
-// http://nightwatchjs.org/guide#writing-custom-assertions
-
-exports.assertion = function (selector, count) {
-  this.message = 'Testing if element <' + selector + '> has count: ' + count
-  this.expected = count
-  this.pass = function (val) {
-    return val === this.expected
-  }
-  this.value = function (res) {
-    return res.value
-  }
-  this.command = function (cb) {
-    var self = this
-    return this.api.execute(function (selector) {
-      return document.querySelectorAll(selector).length
-    }, [selector], function (res) {
-      cb.call(self, res)
-    })
-  }
-}

+ 0 - 46
test/e2e/nightwatch.conf.js

@@ -1,46 +0,0 @@
-require('babel-register')
-var config = require('../../config')
-
-// http://nightwatchjs.org/gettingstarted#settings-file
-module.exports = {
-  src_folders: ['test/e2e/specs'],
-  output_folder: 'test/e2e/reports',
-  custom_assertions_path: ['test/e2e/custom-assertions'],
-
-  selenium: {
-    start_process: true,
-    server_path: require('selenium-server').path,
-    host: '127.0.0.1',
-    port: 4444,
-    cli_args: {
-      'webdriver.chrome.driver': require('chromedriver').path
-    }
-  },
-
-  test_settings: {
-    default: {
-      selenium_port: 4444,
-      selenium_host: 'localhost',
-      silent: true,
-      globals: {
-        devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
-      }
-    },
-
-    chrome: {
-      desiredCapabilities: {
-        browserName: 'chrome',
-        javascriptEnabled: true,
-        acceptSslCerts: true
-      }
-    },
-
-    firefox: {
-      desiredCapabilities: {
-        browserName: 'firefox',
-        javascriptEnabled: true,
-        acceptSslCerts: true
-      }
-    }
-  }
-}

+ 0 - 48
test/e2e/runner.js

@@ -1,48 +0,0 @@
-// 1. start the dev server using production config
-process.env.NODE_ENV = 'testing'
-
-const webpack = require('webpack')
-const DevServer = require('webpack-dev-server')
-
-const webpackConfig = require('../../build/webpack.prod.conf')
-const devConfigPromise = require('../../build/webpack.dev.conf')
-
-let server
-
-devConfigPromise.then(devConfig => {
-  const devServerOptions = devConfig.devServer
-  const compiler = webpack(webpackConfig)
-  server = new DevServer(compiler, devServerOptions)
-  const port = devServerOptions.port
-  const host = devServerOptions.host
-  return server.listen(port, host)
-})
-.then(() => {
-  // 2. run the nightwatch test suite against it
-  // to run in additional browsers:
-  //    1. add an entry in test/e2e/nightwatch.conf.js under "test_settings"
-  //    2. add it to the --env flag below
-  // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
-  // For more information on Nightwatch's config file, see
-  // http://nightwatchjs.org/guide#settings-file
-  let opts = process.argv.slice(2)
-  if (opts.indexOf('--config') === -1) {
-    opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js'])
-  }
-  if (opts.indexOf('--env') === -1) {
-    opts = opts.concat(['--env', 'chrome'])
-  }
-
-  const spawn = require('cross-spawn')
-  const runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' })
-
-  runner.on('exit', function (code) {
-    server.close()
-    process.exit(code)
-  })
-
-  runner.on('error', function (err) {
-    server.close()
-    throw err
-  })
-})

+ 0 - 19
test/e2e/specs/test.js

@@ -1,19 +0,0 @@
-// For authoring Nightwatch tests, see
-// http://nightwatchjs.org/guide#usage
-
-module.exports = {
-  'default e2e tests': function (browser) {
-    // automatically uses dev Server port from /config.index.js
-    // default: http://localhost:8080
-    // see nightwatch.conf.js
-    const devServer = browser.globals.devServerURL
-
-    browser
-      .url(devServer)
-      .waitForElementVisible('#app', 5000)
-      .assert.elementPresent('.hello')
-      .assert.containsText('h1', 'Welcome to Your Vue.js App')
-      .assert.elementCount('img', 1)
-      .end()
-  }
-}

+ 0 - 7
test/unit/.eslintrc

@@ -1,7 +0,0 @@
-{
-  "env": { 
-    "jest": true
-  },
-  "globals": { 
-  }
-}

+ 0 - 30
test/unit/jest.conf.js

@@ -1,30 +0,0 @@
-const path = require('path')
-
-module.exports = {
-  rootDir: path.resolve(__dirname, '../../'),
-  moduleFileExtensions: [
-    'js',
-    'json',
-    'vue'
-  ],
-  moduleNameMapper: {
-    '^@/(.*)$': '<rootDir>/src/$1'
-  },
-  transform: {
-    '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
-    '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest'
-  },
-  testPathIgnorePatterns: [
-    '<rootDir>/test/e2e'
-  ],
-  snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
-  setupFiles: ['<rootDir>/test/unit/setup'],
-  mapCoverage: true,
-  coverageDirectory: '<rootDir>/test/unit/coverage',
-  collectCoverageFrom: [
-    'src/**/*.{js,vue}',
-    '!src/main.js',
-    '!src/router/index.js',
-    '!**/node_modules/**'
-  ]
-}

+ 0 - 3
test/unit/setup.js

@@ -1,3 +0,0 @@
-import Vue from 'vue'
-
-Vue.config.productionTip = false

+ 0 - 11
test/unit/specs/HelloWorld.spec.js

@@ -1,11 +0,0 @@
-import Vue from 'vue'
-import HelloWorld from '@/components/HelloWorld'
-
-describe('HelloWorld.vue', () => {
-  it('should render correct contents', () => {
-    const Constructor = Vue.extend(HelloWorld)
-    const vm = new Constructor().$mount()
-    expect(vm.$el.querySelector('.hello h1').textContent)
-      .toEqual('Welcome to Your Vue.js App')
-  })
-})

+ 3 - 2
vue.config.js

@@ -3,7 +3,7 @@ module.exports = {
         proxy: {
             '/api': {
                 // target: 'http://118.190.145.217:8090',
-                target: 'xjctest.baianxi.com',
+                target: 'http://xjctest.baianxi.com',
                 changeOrigin: true
             }
         },
@@ -14,4 +14,5 @@ module.exports = {
     },
     publicPath: '/',
     lintOnSave: false
-}
+}
+

BIN
xybpkmweb.zip