病历首页 登录拦截

完成后效果

http://null_688_6639.gitee.io/his/#/docHome

image.png

image.png

框架

doc/Index

<template>
  <div>
    <el-row>
      <el-col :span="8">
        <div class="grid-content bg-purple">
          <!--左侧显示挂号信息(当日未诊和已诊患者) -->
          <patient></patient>
        </div>
      </el-col>
      <el-col :span="16">
        <div class="grid-content bg-purple-light">
          <!--右侧显示病历首页(必选)、检查申请(可选)、检验申请(可选) -->
          <medical></medical>
        </div>
       </el-col>
</el-row>
  </div>
</template>

<script>
  import patient from '@/components/doc/Patient'
   import medical from '@/components/doc/MedicalRecord'
  export default{
    data(){
      return {

      }
    },
    components:{
      patient,medical
    }

  }

</script>

<style>
</style>

doc/Patient

<template>
  <el-card class="box-card">
    <div slot="header" class="clearfix">
      <span>卡片名称</span>
      <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
    </div>
    <div >
     111111
    </div>
  </el-card>

</template>

<script>
</script>

<style>
  .text {
    font-size: 14px;
  }

  .item {
    margin-bottom: 18px;
  }

  .clearfix:before,
  .clearfix:after {
    display: table;
    content: "";
  }
  .clearfix:after {
    clear: both
  }

  /* .box-card {
    width: 480px;
  } */
</style>

doc/MedicalRecord

<template>
  <el-card class="box-card">
    <div slot="header" class="clearfix">
      <span>卡片名称</span>
      <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
    </div>
    <div >
     111111
    </div>
  </el-card>

</template>

<script>
</script>

<style>
  .text {
    font-size: 14px;
  }

  .item {
    margin-bottom: 18px;
  }

  .clearfix:before,
  .clearfix:after {
    display: table;
    content: "";
  }
  .clearfix:after {
    clear: both
  }

  /* .box-card {
    width: 600px;
  } */
</style>

通过父子组件交互技术,将左侧组件数据传到右侧

index.vue

<template>
  <div>

    <el-row>
      <el-col :span="8">
        <div class="grid-content bg-purple">
          <!--左侧显示挂号信息(当日未诊和已诊患者) -->
          <patient @getPatient="readPatient"></patient>
        </div>
      </el-col>
      <el-col :span="16">
        <div class="grid-content bg-purple-light">
          <!--右侧显示病历首页(必选)、检查申请(可选)、检验申请(可选) -->
      <medical :patient="patient" ></medical>

        </div>
       </el-col>
</el-row>
  </div>
</template>

<script>
  import patient from '@/components/doc/Patient'
   import medical from '@/components/doc/MedicalRecord'
  export default{
    data(){
      return {
          //定义一个对象来临时存储用户选中的那条挂号信息详细
          patient:{
            id:'',//挂号id
            caseNumber:'',//病历号
            realName:'',//患者姓名
            constantName:''//性别
          }
      }
    },
    components:{
      patient,medical
    },
    methods:{
      readPatient(row){
        //console.log("当前行的数据:",row);
        //把这行数据的数据赋到患者对象
        this.patient=row;
      }
    }

  }

</script>

<style>
</style>

Patient.vue

<template>
  <el-card class="box-card-child">
    <div slot="header" class="clearfix">
      <span style="float: left;font-size: 10px;">患者选择</span>
      <el-button style="float: right; padding: 3px 0;font-size: 10px;" type="text">刷新</el-button>
    </div>


      <el-form ref="form" label-width="70px">
        <el-row>
          <el-col :span="16">
            <el-form-item prop="realName" label="患者名">
              <el-input v-model="form.realName" size="mini" ></el-input>
            </el-form-item>

           </el-col>
          <el-col :span="8">
             <el-form-item>
            <el-button type="primary" icon="el-icon-search" size="small" @click="getPatient"></el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>


   <el-row>
      <el-col :span="24" style="align:left;" ><el-tag size="medium">未诊患者</el-tag></el-col>


    <el-table
       ref="singleTable"
       :data="tableData"
       highlight-current-row
      @current-change="handleCurrentChange"
       style="width: 100%">
       <el-table-column
         type="index"
         width="30">
       </el-table-column>
       <el-table-column
         property="caseNumber"
         label="病历号"
         width="120">
       </el-table-column>
       <el-table-column
         property="realName"
         label="姓名"
         width="70">
       </el-table-column>
       <el-table-column
         property="constantName"
         label="性别">
       </el-table-column>
     </el-table>



      </el-row>
  <el-row>
      <el-col :span="24" style="align:left;" ><el-tag>已诊患者</el-tag></el-col>
     <el-table
        ref="singleTable"
        :data="tableData1"
        highlight-current-row
       @current-change="handleCurrentChange"
        style="width: 100%">
        <el-table-column
          type="index"
          width="30">
        </el-table-column>
        <el-table-column
          property="caseNumber"
          label="病历号"
          width="120">
        </el-table-column>
        <el-table-column
          property="realName"
          label="姓名"
          width="70">
        </el-table-column>
        <el-table-column
          property="constantName"
          label="性别">
        </el-table-column>
      </el-table>
      </el-row>

  </el-card>
</template>

<script>
  export default {
    data() {
      return {
        form: {
          realName: ''
        },
        tableData: [],
        tableData1:[],
        currentRow: null
      }
    },
    methods:{
      getPatient(){
        alert("开始搜索");
      },
       handleCurrentChange(val) {
        this.currentRow = val;
        console.log("选中的行:",this.currentRow);
        //this.$emit("eventName",params....)
        this.$emit("getPatient",this.currentRow);
      }
    },
    mounted() {
      //页面加载时显示未诊患者
      this.$axios.get("http://localhost:8080/reg/findRegisterByParams?visitState=1&userId=1&currentDate=2021-01-14&noon=上午")
      .then(response=>{
        this.tableData=response.data;
      })
       //页面加载时显示已诊患者
      this.$axios.get("http://localhost:8080/reg/findRegisterByParams?visitState=2&userId=1&currentDate=2021-01-14&noon=上午")
      .then(response=>{
        this.tableData1=response.data;
      })
    }
  }
</script>

<style>
  .text {
    font-size: 12px;
  }

  .clearfix:before,
  .clearfix:after {
    display: table;
    content: "";
  }

  .clearfix:after {
    clear: both
  }

  .box-card-child {
    width: 100%;
  }
</style>

MedicalRecorde.vue

<template>
  <el-card class="box-card">
    <div slot="header" class="clearfix">
      <span>患者信息:姓名:{{patient.realName}}性别{{patient.constantName}}</span>
      <el-button style="float: right; padding: 3px 0" type="text">操作按钮</el-button>
    </div>
    <div >
      <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
             <el-tab-pane label="病历首页" name="one">病历首页<br>
             挂号id:{{patient.id}}<br>
             病历号:{{patient.caseNumber}}</el-tab-pane>
             <el-tab-pane label="检查申请" name="two">检查申请</el-tab-pane>
             <el-tab-pane label="检验申请" name="three">检验申请</el-tab-pane>
             <el-tab-pane label="处置申请" name="foure">处置申请</el-tab-pane>
             <el-tab-pane label="门诊确诊" name="five">门诊确诊</el-tab-pane>
             <el-tab-pane label="成药处方" name="six">成药处方</el-tab-pane>
             <el-tab-pane label="草药处方" name="seven">草药处方</el-tab-pane>
             <el-tab-pane label="费用查询" name="eight">费用查询</el-tab-pane>
          </el-tabs>
    </div>
  </el-card>

</template>

<script>

  export default{
    data(){
      return {
        activeName: 'one'
      }
    },
     methods:{
          handleClick(tab, event) {
            //alert("切换到:"+tab.name);
            console.log("tab:",tab);
            console.log(tab, event);
            alert(this.patient.caseNumber);
             }
        },
     props:['patient']
  }
</script>

<style>
  .text {
    font-size: 14px;
  }

  .item {
    margin-bottom: 18px;
  }

  .clearfix:before,
  .clearfix:after {
    display: table;
    content: "";
  }
  .clearfix:after {
    clear: both
  }

  /* .box-card {
    width: 600px;
  } */
</style>

后台

@RequestMapping("/findRegisterByParams")
public List<Map<String,Object>> findRegisterByParams(int visitState,int userId,String currentDate,String noon){
Map map=new HashMap();
map.put("visitState", visitState);
map.put("userId", userId);
map.put("currentDate", currentDate);
map.put("noon", noon);
List<Map<String,Object>> res = service.findRegisterByParams(map);
return res;
}

@Select(" SELECT a.*,b.constantName "+
        " from register a,constantitem b,constanttype c "+
        " where a.gender=b.id and b.constantTypeID=c.id "+
        " and c.constantTypeName='性别类型' "+
        " and userId=#{userId} "+
        " and visitDate=#{currentDate} "+
        " and noon=#{noon} "+
        " and visitState=#{visitState}")
List<Map<String, Object>> findRegisterByParams(Map map);

此时效果图

image.png

病历存库

学生完成

全局导航守卫实现登录拦截

详见:
https://www.jianshu.com/p/214f3dd90812

左侧菜单权限控制

<template>
  <el-menu
  class="el-menu-vertical-demo"
  background-color="#D3DCE6"
   active-text-color="#ffd04b"

  @open="handleOpen"
  @close="handleClose"
  :default-active="$router.path"
        router
  >
    <el-submenu index="1" v-if="userType==1||userType==0">
      <template slot="title">
        <i class="el-icon-setting"></i>
        <span>系统管理</span>
      </template>
      <el-menu-item-group>
        <el-menu-item index="/sys/constantTypeAdd">常数项分类管理</el-menu-item>
        <el-menu-item index="/sys/constantItemAdd">常数项管理</el-menu-item>
      </el-menu-item-group>
    </el-submenu>


    <el-submenu index="2" v-if="userType==2||userType==0">
      <template slot="title">
        <i class="el-icon-location"></i>
        <span>挂号收费</span>
      </template>
      <el-menu-item-group>
        <el-menu-item index="/reg/register">挂号</el-menu-item>
        <el-menu-item index="1-2">收费</el-menu-item>
      </el-menu-item-group>
    </el-submenu>

    <el-submenu index="3" v-if="userType==3||userType==0">
      <template slot="title">
        <i class="el-icon-location"></i>
        <span>门诊医生</span>
      </template>
      <el-menu-item-group>
        <el-menu-item index="/doc/index">门诊病历</el-menu-item>
        <el-menu-item index="1-2">收费</el-menu-item>
      </el-menu-item-group>
    </el-submenu>

  </el-menu>


</template>

<script>
  export default {
    data(){
      return{
        userType:''
      }
    },
    methods: {
      handleOpen(key, keyPath) {
        console.log(key, keyPath);
      },
      handleClose(key, keyPath) {
        console.log(key, keyPath);
      }
    },
    mounted() {
      //取出sessionStorage里的用户角色
      //存储到本地变量里
      this.userType=sessionStorage.getItem("useType");
      //alert(this.userType);
    }
  }
</script>

<style>
</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容