Selaa lähdekoodia

完成会诊申请以及初步完成检查申请

xiaochan 3 vuotta sitten
vanhempi
commit
f6f8ba36d7

+ 1 - 1
src/api/public-api.js

@@ -38,7 +38,7 @@ export function maZuiFangShi() {
 }
 
 export async function getServerDateApi() {
-    return await request({
+    return request({
         url: '/publicApi/getDate',
         method: 'get',
     });

+ 70 - 0
src/api/zhu-yuan-yi-sheng/jian-cha-shen-qing.js

@@ -0,0 +1,70 @@
+import request from "@/utils/request";
+
+let url = '/jianChaShenQing/'
+
+export function huoQuJianChaShenQing(data) {
+    return request({
+        url: url + 'huoQuJianChaShenQing',
+        method: 'post',
+        data
+    })
+}
+
+export function huoQuHuanZheJianChaMing(name, patNo, times, bedNo) {
+    return request({
+        url: url + 'huoQuHuanZheJianChaMing',
+        method: 'get',
+        params: {name, patNo, times, bedNo}
+    })
+}
+
+
+export function huoQuJianChaMing(total, currentPage, leiXing) {
+    return request({
+        url: url + 'huoQuJianChaMing',
+        method: 'get',
+        params: {total, currentPage, leiXing}
+    })
+}
+
+export function huoQuShengQingXiangQing(reqNo) {
+    return request({
+        url: url + 'huoQuShengQingXiangQing',
+        method: 'get',
+        params: {reqNo}
+    })
+}
+
+export function chaKanFenLeiXiangQing(code, bwCode) {
+    return request({
+        url: url + 'chaKanFenLeiXiangQing',
+        method: 'get',
+        params: {code, bwCode}
+    })
+}
+
+export function huoMuShuoMingMuBan(name, fenLei, total, currentPage) {
+    return request({
+        url: url + 'huoMuShuoMingMuBan',
+        method: 'get',
+        params: {name, fenLei, total, currentPage}
+    })
+}
+
+export function shouMingMuBanChaoZuo(data) {
+    return request({
+        url: url + 'shouMingMuBanChaoZuo',
+        method: 'post',
+        data
+    })
+}
+
+
+
+
+
+
+
+
+
+

+ 1 - 1
src/components/huiZhenDaYing/DaYingHuiZhen.vue

@@ -4,7 +4,7 @@
          style="padding: 0 20px;overflow: hidden">
       <div id="huiZhenXinXiDaYin">
         <h1 style="text-align: center; font-size: 30px">湖南泰和医院</h1>
-        <h4 style="text-align: center; font-size: 17px; margin-top: 0px">会 诊 记 录 单</h4>
+        <h4 style="text-align: center; font-size: 17px; margin-top: 0">会 诊 记 录 单</h4>
         <div class="divHuanZheXinXi">
           <div class="huanZheXinXi" style="margin-left: 20px">住院号:{{ huanZheXinXi.inpatientNo }}</div>
           <div class="huanZheXinXi" style="margin-left: 25px">姓名:{{ huanZheXinXi.name }}</div>

+ 129 - 0
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/BianJiJianChaShenQing.vue

@@ -0,0 +1,129 @@
+<template>
+  <el-dialog v-model="dialog" title="编辑检查">
+    <el-form label-width="100px" size="mini">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="检查项目编码:">
+            {{ bianJiJianChaShuJu.orderCode }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="检查项目名称:">
+            {{ bianJiJianChaShuJu.orderName }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="检查时间:">
+            <el-date-picker v-model="bianJiJianChaShuJu.startTime"
+                            format="YYYY-MM-DD HH:mm:ss" style="width: 180px" type="datetime"
+                            value-format="YYYY-MM-DD HH:mm:ss"></el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="执行科室:">
+            {{ bianJiJianChaShuJu.execDeptName }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="急诊:">
+            <el-switch
+                v-model="bianJiJianChaShuJu.jzFlag"
+                :active-value="1"
+                :inactive-value="null"
+                active-color="#13ce66"
+                active-text="急诊"
+                inactive-color="#ff4949"
+                inactive-text="普通">
+            </el-switch>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="病室摘要:">
+            <el-input v-model="bianJiJianChaShuJu.reqComment" maxlength="125" show-word-limit
+                      type="textarea"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-button @click="daKaiShuoMingMuBan">说明模板</el-button>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="体征信息:">
+            <el-input v-model="bianJiJianChaShuJu.reqTzComment" maxlength="125" show-word-limit
+                      type="textarea"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="相关辅检结果:">
+            <el-input v-model="bianJiJianChaShuJu.reqOtherResult" maxlength="125" show-word-limit
+                      type="textarea"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="临床诊断:">
+            <el-input v-model="bianJiJianChaShuJu.diagText" :fetch-suggestions="querySearchAsync"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+  </el-dialog>
+  <shuo-ming-mu-ban ref="shouMingMuBan" @huoQuXuanZhongShuJu="xuanZhongMuBan"></shuo-ming-mu-ban>
+</template>
+
+<script>
+import {computed, ref} from "vue";
+import store from "@/store";
+import ShuoMingMuBan from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/ShuoMingMuBan.vue";
+
+export default {
+  name: "BianJiJianChaShenQing",
+  components: {ShuoMingMuBan},
+  setup() {
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+
+    const dialog = ref(true)
+    const bianJiJianChaShuJu = ref({})
+    const shouMingMuBan = ref(null)
+
+    const shuoMingMuBan = ref({
+      dialog: true,
+      data: [],
+      currentPage: 1,
+      total: 0,
+      leiXing: 2,
+      name: ''
+    })
+
+
+    const querySearchAsync = () => {
+
+    }
+
+    const daKaiShuoMingMuBan = () => {
+      shouMingMuBan.value.dialog = true
+      shouMingMuBan.value.huoQuShuoMingMuBan(0)
+    }
+
+    const xuanZhongMuBan = (val) => {
+      console.log(val)
+    }
+
+
+    return {
+      dialog,
+      bianJiJianChaShuJu,
+      shuoMingMuBan,
+      windowSize,
+      querySearchAsync,
+      daKaiShuoMingMuBan,
+      shouMingMuBan,
+      xuanZhongMuBan
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 222 - 0
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/ShuoMingMuBan.vue

@@ -0,0 +1,222 @@
+<template>
+  <el-dialog v-model="dialog" destroy-on-close title="说明模板">
+    <el-radio-group v-model="leiXing" @change="huoQuShuoMingMuBan(0)">
+      <el-radio-button :label="1">个人</el-radio-button>
+      <el-radio-button :label="2">科室</el-radio-button>
+      <el-radio-button :label="3">全院</el-radio-button>
+    </el-radio-group>
+    <el-input v-model="name" style="width: 120px" @keyup.enter="huoQuShuoMingMuBan(0)"></el-input>
+    <el-button @click="huoQuShuoMingMuBan(0)">查询</el-button>
+    <el-button @click="xinZengMuBan">新建</el-button>
+    <el-table :data="shuoMingMuBan.data" :height="windowSize.h / 2">
+      <el-table-column type="expand">
+        <template #default="scope">
+          <pre>
+            {{ scope.row.jcText }}
+          </pre>
+        </template>
+      </el-table-column>
+      <el-table-column label="名称" prop="name"></el-table-column>
+      <el-table-column label="说明" prop="jcText" show-overflow-tooltip></el-table-column>
+      <el-table-column fixed="right" label="操作">
+        <template #default="scope">
+          <el-dropdown size="small" split-button type="primary" @click="handleClick('选中',scope.row)">
+            添加
+            <template #dropdown>
+              <el-dropdown-menu>
+                <el-dropdown-item icon="el-icon-edit" @click="handleClick('修改',scope.row)">修改</el-dropdown-item>
+                <br>
+                <el-dropdown-item icon="el-icon-delete" @click="handleClick('删除',scope.row)">删除</el-dropdown-item>
+              </el-dropdown-menu>
+            </template>
+          </el-dropdown>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+        :current-page="shuoMingMuBan.currentPage"
+        :page-size="20"
+        :pager-count="7"
+        :total="shuoMingMuBan.total"
+        layout="total,  prev, pager, next, jumper"
+        @current-change="handleCurrentChange">
+    </el-pagination>
+  </el-dialog>
+
+  <el-dialog v-model="bianJiMuBan.dialog" title="编辑说明模板">
+    <el-form ref="bianJiBiaoGeRef" :label-width="80" :model="bianJiMuBan.data" :rules="bianJiRules">
+      <el-row>
+        <el-col v-if="bianJiMuBan.leiXing === '新增'" :span="24">
+          <el-form-item label="模板类型" prop="whFlag">
+            <el-radio-group v-model="bianJiMuBan.data.whFlag">
+              <el-radio-button :label="1">个人</el-radio-button>
+              <el-radio-button :label="2">科室</el-radio-button>
+              <el-radio-button :label="3">全院</el-radio-button>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="名称:" prop="name">
+            <el-input v-model="bianJiMuBan.data.name"
+                      @blur="bianJiMuBan.data.name=$event.target.value.trim()"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="内容:" prop="jcText">
+            <el-input v-model="bianJiMuBan.data.jcText" :rows="8" type="textarea"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="提交:">
+            <el-button @click="queDingBiaoGeShuJu(bianJiBiaoGeRef)">确认</el-button>
+            <el-button @click="bianJiMuBan.dialog = false">关闭</el-button>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script>
+import {computed, ref} from "vue";
+import {huoMuShuoMingMuBan, shouMingMuBanChaoZuo} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
+import store from "@/store";
+import {clone} from "@/utils/clone";
+import {ElMessageBox} from "element-plus";
+
+export default {
+  props: {
+    title: {
+      type: String,
+      default: '获取说明模板'
+    },
+  },
+  emits: ['huo-qu-xuan-zhong-shu-ju'],
+  name: "ShuoMingMuBan",
+  setup(props, ctx) {
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+
+    const dialog = ref(true)
+    const leiXing = ref(3)
+    const name = ref('')
+
+    const deptName = computed(() => {
+      return store.state.user.info.deptName
+    })
+
+
+    const bianJiMuBan = ref({
+      dialog: false,
+      data: {},
+      leiXing: '修改',
+    })
+
+    const shuoMingMuBan = ref({
+      data: [],
+      currentPage: 1,
+      total: 0,
+    })
+
+    const huoQuShuoMingMuBan = (total) => {
+      dialog.value = true
+      if (total === 0) {
+        shuoMingMuBan.value.currentPage = 1
+      }
+      huoMuShuoMingMuBan(name.value, leiXing.value, shuoMingMuBan.value.total, shuoMingMuBan.value.currentPage).then((res) => {
+        if (total === 0) {
+          shuoMingMuBan.value.total = res.total
+        }
+        shuoMingMuBan.value.data = res.records
+      })
+    }
+
+    const handleCurrentChange = (val) => {
+      shuoMingMuBan.value.currentPage = val
+      huoQuShuoMingMuBan(shuoMingMuBan.value.total)
+    }
+
+    const handleClick = (chaoZuo, row) => {
+      switch (chaoZuo) {
+        case '选中':
+          ctx.emit('huo-qu-xuan-zhong-shu-ju', row.jcText)
+          break;
+        case '修改':
+          bianJiMuBan.value.dialog = true
+          bianJiMuBan.value.data = clone(row)
+          break;
+        case '删除':
+          ElMessageBox.confirm('您确定要删除该模板吗?', '提示', {
+            type: 'warning'
+          }).then(() => {
+            row.leiXing = '删除'
+            shouMingMuBanChaoZuo(row)
+          }).catch(() => {
+          })
+          break;
+      }
+    }
+
+    const bianJiBiaoGeRef = ref()
+
+    const bianJiRules = ref({
+      name: [{required: true, message: '名称不能为空', trigger: 'blur',}],
+      jcText: [{required: true, message: '内容不能为空', trigger: 'blur',}],
+    })
+
+    const queDingBiaoGeShuJu = async (form) => {
+      if (bianJiMuBan.value.leiXing === '新增' && bianJiMuBan.value.data.whFlag === 2) {
+        bianJiMuBan.value.data.name += `(${deptName.value})`
+      }
+      if (!form) return
+      try {
+        await form.validate()
+        await ElMessageBox.confirm(`您确定要${bianJiMuBan.value.leiXing}该模板吗?`, '提示', {
+          type: 'warning'
+        }).then(() => {
+          bianJiMuBan.value.data.leiXing = bianJiMuBan.value.leiXing
+          shouMingMuBanChaoZuo(bianJiMuBan.value.data)
+        }).catch(e => {
+        })
+      } catch (e) {
+      }
+    }
+
+    const xinZengMuBan = () => {
+      bianJiMuBan.value.leiXing = '新增'
+      bianJiMuBan.value.dialog = true
+      bianJiMuBan.value.data = {}
+      bianJiMuBan.value.data.whFlag = 1
+    }
+
+
+    return {
+      dialog,
+      name,
+      leiXing,
+      shuoMingMuBan,
+      huoQuShuoMingMuBan,
+      windowSize,
+      handleCurrentChange,
+      handleClick,
+      bianJiMuBan,
+      bianJiRules,
+      bianJiBiaoGeRef,
+      queDingBiaoGeShuJu,
+      xinZengMuBan,
+      deptName
+    }
+  }
+}
+</script>
+
+<style scoped>
+:deep(.el-table .children-row) {
+  background: rgba(145, 247, 145, 0.5);
+}
+
+:deep(.el-table) {
+  --el-table-row-hover-background-color: #85dbfd7a;
+}
+</style>

+ 170 - 0
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianCha.vue

@@ -0,0 +1,170 @@
+<template>
+  <el-dialog v-model="tianJiaJianChaHuiHua" :close-on-click-modal="false" :close-on-press-escape="false"
+             :show-close="false"
+             title="添加检查"
+             top="15%" width="100%">
+    <el-container>
+      <el-aside>
+        <el-radio-group v-model="chaZhaoLeiXing" @change="dianJiLeiXingChaXun">
+          <el-radio-button :label="1">新申请</el-radio-button>
+          <el-radio-button :label="2">个人模板</el-radio-button>
+          <el-radio-button :label="3">科室模板</el-radio-button>
+        </el-radio-group>
+        <el-table :data="jianChaFenLeiShuJu.data" :height="windowSize.h / 1.6" highlight-current-row stripe
+                  @row-click="dianJiaChaKanFenLei">
+          <el-table-column label="名称" prop="name"></el-table-column>
+        </el-table>
+        <el-pagination
+            :current-page="jianChaFenLeiShuJu.currentPage"
+            :page-size="20"
+            :pager-count="5"
+            :total="jianChaFenLeiShuJu.total"
+            layout="prev,pager,next,total"
+            small
+            @current-change="jianChaFenLeiFenYe">
+        </el-pagination>
+      </el-aside>
+      <el-main>
+        <el-button @click="closeDialog">关闭</el-button>
+        <el-table :data="xuanZhongJianCha.data" :height="windowSize.h / 1.9">
+          <el-table-column label="项目编码" prop="orderCode"></el-table-column>
+          <el-table-column label="项目名称" prop="orderName"></el-table-column>
+          <el-table-column label="检查时间" prop="startTime"></el-table-column>
+          <el-table-column label="执行科室" prop="execDeptName"></el-table-column>
+          <el-table-column label="急诊标识" prop="jzFlag"></el-table-column>
+          <el-table-column label="编辑">
+            <template #default="scope">
+              <el-button icon="el-icon-edit" @click="dianJiBianJi(scope.row)">编辑</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-main>
+    </el-container>
+    <el-dialog v-model="xiangXiShuJu.dialog">
+      <el-button @click="dianJiQueRenXuanZhong">确定</el-button>
+      <el-button @click="xiangXiShuJu.dialog = false">取消</el-button>
+      <el-table :data="xiangXiShuJu.data" :height="windowSize.h / 2" @selection-change="xuanZhong">
+        <el-table-column type="selection"></el-table-column>
+        <el-table-column label="项目名称" prop="orderName"></el-table-column>
+        <el-table-column label="说明" prop="ybComment"></el-table-column>
+      </el-table>
+    </el-dialog>
+  </el-dialog>
+  <bian-ji-jian-cha-shen-qing ref="bianJiRef"></bian-ji-jian-cha-shen-qing>
+</template>
+
+<script>
+import {computed, onMounted, ref} from "vue";
+import {chaKanFenLeiXiangQing, huoQuJianChaMing} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
+import store from "@/store";
+import {clone} from "@/utils/clone";
+import {ElMessage} from "element-plus";
+import {listNotBlank} from "@/utils/blank-utils";
+import BianJiJianChaShenQing from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/BianJiJianChaShenQing.vue";
+
+export default {
+  name: "TianJiaJianCha",
+  components: {BianJiJianChaShenQing},
+  setup() {
+    const tianJiaJianChaHuiHua = ref(true)
+    const chaZhaoLeiXing = ref(2)
+    const xuanZhongJianCha = ref({
+      data: [],
+      weiBianMa: [],
+      daiXuanZhong: []
+    })
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+    const xiangXiShuJu = ref({
+      dialog: false,
+      data: [],
+    })
+    const jianChaFenLeiShuJu = ref({
+      currentPage: 1,
+      total: 0,
+      data: []
+    })
+    const bianJiRef = ref(null)
+
+    const dianJiLeiXingChaXun = () => {
+      huoQuJianChaMing(0, 1, chaZhaoLeiXing.value).then((res) => {
+        jianChaFenLeiShuJu.value.data = res.records
+        jianChaFenLeiShuJu.value.total = res.total
+      })
+    }
+
+    const jianChaFenLeiFenYe = (val) => {
+      jianChaFenLeiShuJu.value.currentPage = val
+      huoQuJianChaMing(jianChaFenLeiShuJu.value.total, val, chaZhaoLeiXing.value).then((res) => {
+        jianChaFenLeiShuJu.value.data = res.records
+      })
+    }
+
+    const dianJiaChaKanFenLei = ({code, bwCode}) => {
+      chaKanFenLeiXiangQing(code, chaZhaoLeiXing.value === 1 ? bwCode : 'mb').then((res) => {
+        if (listNotBlank(res)) {
+          xiangXiShuJu.value.data = res
+          xiangXiShuJu.value.dialog = true
+        } else {
+          ElMessage.error('没有找到对应的数据')
+        }
+      })
+    }
+
+    const xuanZhong = (val) => {
+      xuanZhongJianCha.value.daiXuanZhong = val
+    }
+
+    const dianJiQueRenXuanZhong = () => {
+      let tiShi = false
+      xuanZhongJianCha.value.daiXuanZhong.forEach((item) => {
+        if (xuanZhongJianCha.value.weiBianMa.indexOf(item.orderCode) > -1) {
+          tiShi = true
+        } else {
+          xuanZhongJianCha.value.data.push(clone(item))
+          xuanZhongJianCha.value.weiBianMa.push(clone(item.orderCode))
+        }
+      })
+      if (tiShi) {
+        ElMessage.error('请勿重复添加。')
+      }
+      xiangXiShuJu.value.dialog = false
+    }
+
+    const closeDialog = () => {
+      tianJiaJianChaHuiHua.value = false
+    }
+
+    const dianJiBianJi = (row) => {
+      bianJiRef.value.dialog = true
+      bianJiRef.value.bianJiJianChaShuJu = row
+    }
+
+    onMounted(() => {
+      dianJiLeiXingChaXun()
+    })
+
+    return {
+      tianJiaJianChaHuiHua,
+      jianChaFenLeiShuJu,
+      jianChaFenLeiFenYe,
+      windowSize,
+      dianJiaChaKanFenLei,
+      xiangXiShuJu,
+      xuanZhong,
+      dianJiQueRenXuanZhong,
+      xuanZhongJianCha,
+      closeDialog,
+      chaZhaoLeiXing,
+      dianJiLeiXingChaXun,
+      dianJiBianJi,
+      bianJiRef
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 341 - 0
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/DaYingJianCha.vue

@@ -0,0 +1,341 @@
+<template>
+  <el-container>
+    <el-main :style="zuJianDaXiao">
+      纸张:
+      <el-radio v-model="zhiZhang" :label="1" size="large">A4</el-radio>
+      <el-radio v-model="zhiZhang" :label="2" size="large">A5</el-radio>
+      <div id="daYing">
+        <div style="width:394.875pt;height:760px;background-color: white;font-size: 13px">
+          <svg id="barcode"></svg>
+          <div style="text-align: center;font-size: 25px;width:100%;height: 50px;margin-top: 3.75pt ">湖南泰和医院</div>
+          <div style="text-align: center;font-size: 16px;margin-top: 7px;">{{ biaoTi }}</div>
+          <div class="tanXingHeZiHeng" style="width: 520px;margin:1px auto">
+            <div class="wen-zi">
+              <div>病人身份:</div>
+              <div>{{ huanZheXinXi.responceTypeName }}</div>
+            </div>
+
+            <div class="wen-zi">
+              <div>单号:</div>
+              <div>{{ huanZheXinXi.reqNo }}</div>
+            </div>
+
+            <div class="wen-zi">
+              <div>
+                急诊:
+              </div>
+              <div>
+                <div style="border: 1px solid #000;width: 20px;height: 20px;margin: -10px 10px auto auto">
+                  <span v-if="jzFlag" style="font-size: 27px;">√</span>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div style="border: 1px solid #000;border-bottom: 0;margin: 0 3.75pt 0 3.75pt;">
+            <div class="tanXingHeZiShu">
+              <div class="tanXingHeZiHeng">
+                <div class="wen-zi">
+                  <div>住院号:</div>
+                  <div>{{ huanZheXinXi.inpatientNo }}</div>
+                </div>
+                <div class="wen-zi">
+                  <div>姓名:</div>
+                  <div>{{ huanZheXinXi.pname }}</div>
+                </div>
+                <div class="wen-zi">
+                  <div>性别:</div>
+                  <div>{{ cptSex(huanZheXinXi.sex) }}</div>
+                </div>
+                <div class="wen-zi">
+                  <div>年龄:</div>
+                  <div>{{ huanZheXinXi.page }}</div>
+                </div>
+                <div class="wen-zi">
+                  <div>床号:</div>
+                  <div>{{ huanZheXinXi.bedNo }}</div>
+                </div>
+              </div>
+              <div class="tanXingHeZiHeng" style="margin-bottom: 3.75pt">
+                <div class="wen-zi">
+                  <div>病人住址:</div>
+                  <div>{{ huanZheXinXi.homeStreet }}</div>
+                </div>
+                <div class="wen-zi">
+                  <div>联系电话:</div>
+                  <div>{{ huanZheXinXi.homeTel }}</div>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="zhu-yao-ge-zi">
+            <div class="zuo-ge-zi">
+            <span>
+            病室摘要<br>
+            申请检查
+            要求:
+            </span>
+            </div>
+            <div class="you-ge-zi">
+              {{ huanZheXinXi.reqComment }}
+            </div>
+          </div>
+          <div class="zhu-yao-ge-zi">
+            <div class="zuo-ge-zi">
+              <span>体征</span>
+            </div>
+            <div class="you-ge-zi">
+              {{ huanZheXinXi.reqTzComment }}
+            </div>
+          </div>
+          <div class="zhu-yao-ge-zi">
+            <div class="zuo-ge-zi">
+            <span>
+              相关辅检<br>
+              结果
+            </span>
+            </div>
+            <div class="you-ge-zi">
+              {{ huanZheXinXi.reqOtherResult }}
+            </div>
+          </div>
+          <div class="zhu-yao-ge-zi">
+            <div class="zuo-ge-zi">
+            <span>
+              临床诊断
+            </span>
+            </div>
+            <div class="you-ge-zi">
+              {{ huanZheXinXi.diagText }}
+            </div>
+          </div>
+          <div class="zhu-yao-ge-zi">
+            <div class="zuo-ge-zi">
+            <span>
+              检查部位<br>
+              及项目
+            </span>
+            </div>
+            <div class="you-ge-zi">
+              {{ huanZheXinXi.orderName }}
+            </div>
+          </div>
+          <div class="zhu-yao-ge-zi" style="border-bottom: 1px solid #000000">
+            <div class="zuo-ge-zi" style="height: 50px">
+            </div>
+            <div class="you-ge-zi">
+              <div class="tanXingHeZiShu">
+                <div class="tanXingHeZiHeng">
+                  <div class="wen-zi">
+                    <div>申请科室:</div>
+                    <div>{{ huanZheXinXi.reqDeptName }}</div>
+                  </div>
+                  <div class="wen-zi">
+                    <div>申请医生:</div>
+                    <div style="width: 100px;">{{ huanZheXinXi.reqDoctorName }}</div>
+                  </div>
+                </div>
+                <div class="tanXingHeZiHeng">
+                  <div class="wen-zi">
+                    <div>申请日期:</div>
+                    <div>{{ huanZheXinXi.reqDate }}</div>
+                  </div>
+                  <div class="wen-zi">
+                    <div>医师签字:</div>
+                    <div style="width: 100px;"></div>
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div style="margin: 1px  auto auto 20px">
+            注意事项:
+            <pre>{{ zhuYiShiXiang }}</pre>
+          </div>
+        </div>
+      </div>
+    </el-main>
+  </el-container>
+</template>
+
+<script>
+import {computed, onMounted, ref} from "vue";
+import JsBarcode from "jsbarcode";
+import {stringIsBlank, stringNotBlank} from "@/utils/blank-utils";
+import {cptSex} from "@/utils/computed";
+import {getLodop, initLodop} from "@/utils/c-lodop";
+import {ElMessage} from "element-plus";
+
+export default {
+  name: "DaYingJianCha",
+  props: {
+    width: {
+      type: Number,
+      default: 560,
+    },
+    height: {
+      type: Number,
+      default: 500,
+    }
+  },
+  setup(props, cxt) {
+    const css = `*{font-size:9pt}.tanXingHeZiHeng{display:flex;justify-content:space-between;margin-top:3pt;padding:0 3.75pt}.tanXingHeZiShu{display:flex;flex-direction:column}.wen-zi{display:flex;margin-top:3pt}.wen-zi div:first-child{display:flex;flex-direction:row;justify-content:center}.wen-zi div:nth-child(2){margin-left:3pt;display:table}.zhu-yao-ge-zi{border:1px solid #000;border-bottom:0;margin:0 3.75pt 0 3.75pt;display:flex}.you-ge-zi{width:100%;word-wrap:break-word;padding:5px}.zuo-ge-zi span{margin:5px auto}.zuo-ge-zi{width:82.5pt;height:70px;border-right:1px solid #000;text-align:center;display:flex;padding:0 5px}pre{white-space:pre-wrap;word-wrap:break-word;margin:0;padding:0}#daYing{position:relative}#barcode{width:150px;position:absolute;z-index:222}`
+    const huanZheXinXi = ref({})
+    const biaoTi = ref('检查申请单')
+    // 主要事项
+    const zhuYiShiXiang = ref('')
+    const jzFlag = ref(false)
+
+    const zhiZhang = ref(2)
+
+    const jieShouShuJu = (val) => {
+      huanZheXinXi.value = val.shuJu
+      biaoTi.value = val.biaoTi
+      zhuYiShiXiang.value = val.zhuYiShiXiang
+      jzFlag.value = false
+      if (stringNotBlank(val.shuJu.jzFlag)) {
+        if (val.shuJu.jzFlag === '1') {
+          jzFlag.value = true
+        }
+      }
+      JsBarcode('#barcode', val.shuJu.inpatientNo, {
+        lineColor: '#333', //线条颜色
+        width: 2, //线宽
+        height: 25, //条码高度
+        displayValue: true, //是否显示文字信息
+      })
+    }
+
+    const zuJianDaXiao = computed(() => {
+      return {
+        width: props.width + 'px',
+        height: props.height + 'px',
+      }
+    })
+
+    const daYing = () => {
+      if (!huanZheXinXi) {
+        return ElMessage.error('请先选择患者')
+      }
+      let LODOP = getLodop()
+      // A5: 148毫米 × 210毫米 = 559.37px * 793.70px
+      const strFormHtml = '<style>' + css + '</style>' + '<body>' + document.getElementById('daYing').innerHTML + '</body>';
+      LODOP.PRINT_INIT(0, 0, 522, 333, '检查申请') // 初始化打印机 名字
+      // LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "Full-Width");
+      // 整宽不变形
+      if (zhiZhang.value === 1) {
+        LODOP.SET_PRINT_PAGESIZE(2, 0, 0, 'A4')   // 设置纸张大小  A
+      } else {
+        LODOP.SET_PRINT_PAGESIZE(1, 0, 0, 'A5')
+      }
+      LODOP.ADD_PRINT_HTM(0, 0, '100%', '100%', strFormHtml) //  参数分别为顶边距,左边距,宽,高,打印项内容。
+      // LODOP.PRINT_DESIGN()
+      LODOP.PREVIEW() // 关闭
+    }
+
+    onMounted(() => {
+      initLodop()
+      JsBarcode('#barcode', '000000', {
+        lineColor: '#333', //线条颜色
+        width: 2, //线宽
+        height: 25, //条码高度
+        displayValue: true, //是否显示文字信息
+      })
+    })
+
+    return {
+      huanZheXinXi,
+      jieShouShuJu,
+      biaoTi,
+      zhuYiShiXiang,
+      zuJianDaXiao,
+      stringIsBlank,
+      cptSex,
+      daYing,
+      jzFlag,
+      zhiZhang
+    }
+  }
+}
+
+
+</script>
+
+<style scoped>
+* {
+  font-size: 9pt;
+}
+
+.tanXingHeZiHeng {
+  display: flex;
+  justify-content: space-between;
+  margin-top: 3pt;
+  padding: 0 3.75pt;
+}
+
+.tanXingHeZiShu {
+  display: flex;
+  flex-direction: column;
+}
+
+.wen-zi {
+  display: flex;
+  margin-top: 3pt;
+}
+
+.wen-zi div:first-child {
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+}
+
+.wen-zi div:nth-child(2) {
+  margin-left: 3pt;
+  display: table;
+}
+
+.zhu-yao-ge-zi {
+  border: 1px solid #000;
+  border-bottom: 0;
+  margin: 0 3.75pt 0 3.75pt;
+  display: flex;
+}
+
+.you-ge-zi {
+  width: 100%;
+  word-wrap: break-word;
+  padding: 5px;
+}
+
+.zuo-ge-zi span {
+  margin: 5px auto;
+}
+
+.zuo-ge-zi {
+  width: 82.5pt;
+  height: 70px;
+  border-right: 1px solid #000;
+  text-align: center;
+  display: flex;
+  padding: 0 5px
+}
+
+pre {
+  white-space: pre-wrap;
+  word-wrap: break-word;
+  margin: 0;
+  padding: 0;
+}
+
+#daYing {
+  position: relative;
+}
+
+#barcode {
+  width: 150px;
+  position: absolute;
+  z-index: 222;
+}
+
+</style>

+ 3 - 8
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuoQuMuBan.vue

@@ -15,17 +15,12 @@
         <el-table :data="fuJiMuBanShuJu.data"
                   :height="windowSize.h / 1.6"
                   highlight-current-row stripe style="width: 300px;">
-          <el-table-column label="名称" prop="patternName" width="70">
-            <template #default="scope">
-              <span class="pointer" style="cursor: pointer;" type="text"
-                    @click="dianJiMuBanMing(scope.row)">{{ scope.row.patternName }}</span>
-            </template>
-          </el-table-column>
+          <el-table-column label="名称" prop="patternName" width="70"></el-table-column>
           <el-table-column label="排序" prop="sortNo"></el-table-column>
           <el-table-column label="操作" width="120">
             <template #default="scope">
-              <el-dropdown size="small" split-button type="primary">
-                操作
+              <el-dropdown size="small" split-button type="primary" @click="dianJiMuBanMing(scope.row)">
+                选中
                 <template #dropdown>
                   <el-dropdown-menu>
                     <el-dropdown-item icon="el-icon-edit" @click="xiuGaiMuBan(scope.row)">修改</el-dropdown-item>

+ 7 - 3
src/icons/iconfont.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 2473230 */
-  src: url('iconfont.woff2?t=1644393231480') format('woff2'),
-       url('iconfont.woff?t=1644393231480') format('woff'),
-       url('iconfont.ttf?t=1644393231480') format('truetype');
+  src: url('iconfont.woff2?t=1644820488091') format('woff2'),
+       url('iconfont.woff?t=1644820488091') format('woff'),
+       url('iconfont.ttf?t=1644820488091') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,10 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-dayin:before {
+  content: "\e61f";
+}
+
 .icon-jianyanshenqingdan:before {
   content: "\e61c";
 }

BIN
src/icons/iconfont.ttf


BIN
src/icons/iconfont.woff


BIN
src/icons/iconfont.woff2


+ 1 - 1
src/store/modules/user.js

@@ -1,4 +1,4 @@
-import {loginApi, getWardsApi, fetchMenusApi} from '@/api/login'
+import {fetchMenusApi, getWardsApi, loginApi} from '@/api/login'
 import router from '@/router'
 
 const state = () => ({

+ 10 - 4
src/utils/date.js

@@ -1,5 +1,3 @@
-import {getServerDateApi} from "../api/public-api";
-
 export function getDate() {
     const date = new Date()
     const year = date.getFullYear()
@@ -30,8 +28,16 @@ export function getDatetime() {
     return clock
 }
 
-export async function getServerDateTime() {
-    return await getServerDateApi()
+
+export function compareDate(date1, date2) {
+    const oDate1 = new Date(date1);
+    const oDate2 = new Date(date2);
+    return oDate1.getTime() > oDate2.getTime();
+}
+
+export function huanHangXianShi(date) {
+    let clock = date.split(" ")
+    return clock[0] + '<br />' + clock[1]
 }
 
 

+ 42 - 36
src/views/clinic/TransferInOfExpenses.vue

@@ -2,33 +2,33 @@
   <el-container style="margin-right: 10px">
     <el-header height="36px" style="margin-top: 8px">
       <el-input
-          size="small"
-          placeholder="在此输入住院号"
+          v-model="inpatientNo"
           clearable
+          placeholder="在此输入住院号"
           prefix-icon="el-icon-search"
+          size="small"
           style="width: 300px"
-          @keyup.enter="queryClick"
           @blur="inpatientNo = $event.target.value.trim()"
-          v-model="inpatientNo"
+          @keyup.enter="queryClick"
       >
         <template #prepend>住院号</template>
       </el-input>
       <el-button style="margin-left: 10px" type="primary" @click="queryClick">查询患者信息</el-button>
       <el-divider direction="vertical"></el-divider>
       <el-input
-          size="small"
-          placeholder="在此输入机制号"
+          v-model="serialNo"
           clearable
-          @keyup.enter="querySerialNo"
+          onkeyup="this.value=this.value.replace(/[^\d]/g,'') "
+          placeholder="在此输入机制号"
           prefix-icon="el-icon-search"
+          size="small"
           style="width: 300px"
-          v-model="serialNo"
-          onkeyup="this.value=this.value.replace(/[^\d]/g,'') "
           @blur="serialNo = $event.target.value.trim()"
+          @keyup.enter="querySerialNo"
       >
         <template #prepend>机制号</template>
       </el-input>
-      <el-select size="small" v-model="liShiFlag">
+      <el-select v-model="liShiFlag" size="small">
         <el-option v-for="item in chaKanLiShi" :key="item.code" :label="item.name" :value="item.code"></el-option>
       </el-select>
       <el-button style="margin-left: 10px" type="primary" @click="querySerialNo">查询机制号信息</el-button>
@@ -104,29 +104,29 @@
         </el-descriptions>
       </div>
       收费日期:
-      <el-date-picker type="datetime" v-model="chargeDate"></el-date-picker>
+      <el-date-picker v-model="chargeDate" type="datetime"></el-date-picker>
       <div style="width: 100%">
         <div style="float: left; width: 45%">
-          <el-table :height="windowHeight / 1.4" highlight-current-row :data="mzXinXiList"
-                    @selection-change="mzSelectChecked"
-                    ref="multipleTable">
+          <el-table ref="multipleTable" :data="mzXinXiList" :height="windowHeight / 1.4"
+                    highlight-current-row
+                    @selection-change="mzSelectChecked">
             <el-table-column label="门诊发票信息">
               <el-table-column label="项目名称" prop="itemName"></el-table-column>
               <el-table-column label="收费编码" prop="chargeCodeMx"></el-table-column>
               <el-table-column label="数量" prop="chargeAmount"></el-table-column>
               <el-table-column label="单价" prop="price"></el-table-column>
               <el-table-column label="金额" prop="chargeFee"></el-table-column>
-              <el-table-column label="选择" width="60" type="selection"></el-table-column>
+              <el-table-column label="选择" type="selection" width="60"></el-table-column>
             </el-table-column>
           </el-table>
           <el-tag>合计:{{ mzSum }}</el-tag>
         </div>
-        <div style="width: 9%; float: left; margin-left: 4px; text-align: center"
-             :style="{ lineHeight: windowHeight / 1.4 + 'px' }">
+        <div :style="{ lineHeight: windowHeight / 1.4 + 'px' }"
+             style="width: 9%; float: left; margin-left: 4px; text-align: center">
           <el-button icon="el-icon-right" type="primary"></el-button>
         </div>
         <div style="float: right; width: 45%">
-          <el-table :height="windowHeight / 1.4" stripe :data="zyXinXiList">
+          <el-table :data="zyXinXiList" :height="windowHeight / 1.4" stripe>
             <el-table-column label="住院收费项目">
               <el-table-column label="项目名称" prop="itemName"></el-table-column>
               <el-table-column label="收费编码" prop="chargeCodeMx"></el-table-column>
@@ -138,22 +138,23 @@
           <el-tag>合计:{{ zySum }}</el-tag>
         </div>
       </div>
-      <el-drawer title="查看患者通过急门诊转入的费用" v-model="huanZheFeiYongDrawer" size="50%">
+      <el-drawer v-model="huanZheFeiYongDrawer" size="50%" title="查看患者通过急门诊转入的费用">
         <div style="margin-left: 20px">
           <el-input
-              placeholder="住院号"
+              v-model="inpatientNo"
               clearable
+              placeholder="住院号"
               style="width: 200px"
-              @keyup.enter="getZyJiMenZhenZhuangRuFeiYongClick"
-              v-model="inpatientNo"
               @blur="inpatientNo = $event.target.value.trim()"
+              @keyup.enter="getZyJiMenZhenZhuangRuFeiYongClick"
           >
             <template #prepend>住院号</template>
           </el-input>
           <el-divider direction="vertical"></el-divider>
           项目名称:
-          <el-select v-model="chargeCodeMX" placeholder="根据拼音首字母查找" filterable clearable remote
-                     :remote-method="remoteMethodEntryName">
+          <el-select v-model="chargeCodeMX" :remote-method="remoteMethodEntryName" clearable filterable
+                     placeholder="根据拼音首字母查找"
+                     remote>
             <el-option v-for="item in entryNameList" :key="item.code" :label="item.name" :value="item.code">
               <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
               <el-divider direction="vertical"></el-divider>
@@ -161,11 +162,11 @@
             </el-option>
           </el-select>
           <el-divider direction="vertical"></el-divider>
-          <el-button @click="getZyJiMenZhenZhuangRuFeiYongClick" type="primary">查询</el-button>
+          <el-button type="primary" @click="getZyJiMenZhenZhuangRuFeiYongClick">查询</el-button>
           <el-table :data="zyDetailChargeList" :height="windowHeight / 1.1">
             <el-table-column label="住院号" prop="inpatientNo"></el-table-column>
             <el-table-column label="流水号" prop="detailSn"></el-table-column>
-            <el-table-column label="收费日期" width="80" prop="chargeDate"></el-table-column>
+            <el-table-column label="收费日期" prop="chargeDate" width="80"></el-table-column>
             <el-table-column label="收费代码" prop="chargeCode"></el-table-column>
             <el-table-column label="项目名称" prop="chargeCodeName" show-overflow-tooltip></el-table-column>
             <el-table-column label="费用录入日期" prop="genTime" width="80"></el-table-column>
@@ -174,8 +175,8 @@
             <el-table-column label="操作">
               <template #default="scope">
                 <el-popconfirm
-                    confirm-button-text="删除"
                     cancel-button-text="取消"
+                    confirm-button-text="删除"
                     icon="el-icon-info"
                     iconColor="red"
                     title="是否删除该费用"
@@ -189,11 +190,11 @@
             </el-table-column>
           </el-table>
           <el-pagination
-              layout="prev, pager, next, total"
-              @current-change="huanZheFeiYongCurrentChange"
-              :total="huanZheFeiYongTotal"
               :page-size="huanZheFeiYongPageSize"
+              :total="huanZheFeiYongTotal"
               background
+              layout="prev, pager, next, total"
+              @current-change="huanZheFeiYongCurrentChange"
           ></el-pagination>
           <el-tag style="margin-left: 7px">合计:{{ huanZheFeiYongZongHe }}</el-tag>
         </div>
@@ -216,7 +217,9 @@ import {cptSex} from '@/utils/computed'
 import store from '@/store'
 import {computed} from 'vue'
 import {ElMessage, ElMessageBox} from 'element-plus'
-import {formatDatetime} from '../../utils/date'
+import {compareDate, formatDatetime} from '@/utils/date'
+import {getServerDateApi} from "@/api/public-api";
+import {stringNotBlank} from "@/utils/blank-utils";
 
 export default {
   name: 'TransferInOfExpenses',
@@ -242,7 +245,7 @@ export default {
     const zyXinXiList = ref([])
 
     //查询患者信息
-    const queryClick = () => {
+    const queryClick = async () => {
       if (!inpatientNo.value) {
         ElMessage({
           type: 'warning',
@@ -252,8 +255,10 @@ export default {
         })
         return
       }
+      chargeDate.value = await getServerDateApi()
       queryHuanZhe(inpatientNo.value).then((res) => {
         huanZheXinXi.value = res
+        console.log(res)
         admissTimes.value = res.admissTimes
       })
     }
@@ -354,8 +359,11 @@ export default {
     }
     //点击保存触发的事件
     const baoCunClick = () => {
-      if (chargeDate.value === null) {
-        chargeDate.value = new Date()
+      if (compareDate(huanZheXinXi.value.admissDate, chargeDate.value)) {
+        return ElMessage.error('费用发生时间不能在入院时间之前。')
+      }
+      if (stringNotBlank(huanZheXinXi.value.disDate) && compareDate(chargeDate.value, huanZheXinXi.value.disDate)) {
+        return ElMessage.error('费用发生时间不能在出院时间之后。')
       }
       huanZheXinXi.value.chargeDate = formatDatetime(chargeDate.value)
       if (typeof huanZheXinXi.value.inpatientNo === 'undefined') {
@@ -367,7 +375,6 @@ export default {
         })
         return
       }
-
       if (zyXinXiList.value.length === 0) {
         ElMessage({
           type: 'warning',
@@ -378,7 +385,6 @@ export default {
         return
       }
       huanZheXinXi.value.list = zyXinXiList.value
-
       if (huanZheXinXi.value.chargeDate === '') {
         return ElMessage.error({
           message: '请选择日期',

+ 14 - 2
src/views/dashboard/index.vue

@@ -3,11 +3,23 @@
 </template>
 
 <script>
-import { defineComponent } from 'vue'
-import { useStore } from 'vuex'
+import {defineComponent, onMounted} from 'vue'
+import {useStore} from 'vuex'
+import {ElMessage} from "element-plus";
+
 export default defineComponent({
   setup() {
     const store = useStore()
+
+    onMounted(() => {
+      ElMessage.success({
+        message: '登录成功',
+        type: 'success',
+        showClose: true,
+        duration: 1000,
+      })
+    })
+
   },
 })
 </script>

+ 1 - 2
src/views/examination/CovidExamResult.vue

@@ -118,8 +118,7 @@ export default {
       fetchCovidExamData(param).then((res) => {
         res.list.forEach((item) => {
           if (stringNotBlank(item.ordrCreateDate)) {
-            let date = item.ordrCreateDate.split(" ")
-            item.ordrCreateDate = date[0]
+            item.ordrCreateDate = item.ordrCreateDate.substring(0, 16)
           }
         })
         const titName = type.value === 1 ? '新冠核酸检测' : '新冠抗体检测'

+ 156 - 2
src/views/hospitalization/zhu-yuan-yi-sheng/JianChaShenQing.vue

@@ -1,13 +1,167 @@
 <template>
-
+  <el-container>
+    <el-header style="height: 30px">
+      检查名称:
+      <el-autocomplete v-model="orderName" :fetch-suggestions="querySearchAsync" clearable
+                       style="width: 120px" @keyup.enter="dianJiChaXunHuanZheJianCha(0)"></el-autocomplete>
+      申请时间:
+      <el-date-picker
+          v-model="dateRange"
+          :shortcuts="shortcuts"
+          end-placeholder="结束日期"
+          placeholder="选择日期"
+          range-separator="至"
+          size="mini"
+          start-placeholder="开始日期"
+          style="width: 280px"
+          type="daterange"
+      ></el-date-picker>
+      <el-button icon="el-icon-search" type="primary" @click="dianJiChaXunHuanZheJianCha(0)">查询</el-button>
+      <el-divider direction="vertical"></el-divider>
+      <tian-jia-jian-cha ref="tianJiaJianCha"></tian-jia-jian-cha>
+      <el-button icon="el-icon-plus" type="success" @click="daKaiTianJiaJianCha">添加</el-button>
+    </el-header>
+    <el-container>
+      <el-aside style="width: 330px;">
+        <el-table :data="jianChaShuJu.data" :height="windowSize.h / 1.4" highlight-current-row>
+          <el-table-column label="项目名称" prop="orderName" show-overflow-tooltip></el-table-column>
+          <el-table-column label="时间" prop="startTime">
+            <template #default="scope">
+              <span v-html="huanHangXianShi(scope.row.startTime)"></span>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" width="80">
+            <template #default="scope">
+              <el-button circle icon="el-icon-view" title="查看" @click="dianJiaJianChaXiangQing(scope.row)"></el-button>
+              <el-button circle icon="iconfont icon-dayin" title="打印"
+                         @click="dianJiDaYingJianCha(scope.row)"></el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+            :current-page="jianChaShuJu.currentPage"
+            :page-size="jianChaShuJu.pageSize"
+            :pager-count="7"
+            :total="jianChaShuJu.total"
+            layout="total,  prev, pager, next"
+            @current-change="handleCurrentChange"
+        >
+        </el-pagination>
+      </el-aside>
+      <el-main>
+        <da-ying-jian-cha ref="daYingJianChaRef" :height="windowSize.h / 1.4"></da-ying-jian-cha>
+      </el-main>
+    </el-container>
+  </el-container>
 </template>
 
 <script>
+import {huanZheXinXi, youWuXuanZheHuanZhe} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {computed, ref, watch} from "vue";
+import {
+  huoQuHuanZheJianChaMing,
+  huoQuJianChaShenQing,
+  huoQuShengQingXiangQing
+} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
+import store from "@/store";
+import DaYingJianCha from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/DaYingJianCha.vue";
+import {getDateRangeFormatDate, huanHangXianShi} from "@/utils/date";
+import {shortcuts} from '@/data/shortcuts'
+import TianJiaJianCha from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianCha.vue";
+
 export default {
   name: "JianChaShenQing",
+  components: {TianJiaJianCha, DaYingJianCha},
   setup() {
-    return {}
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+
+    const orderName = ref('')
+    const dateRange = ref(null)
+    const jianChaShuJu = ref({
+      currentPage: 1,
+      total: 0,
+      pageSize: 20,
+      data: []
+    })
+
+    const daYingJianChaRef = ref()
+    const tianJiaJianCha = ref()
+
+    const dianJiChaXunHuanZheJianCha = (total) => {
+      let dateS = getDateRangeFormatDate(dateRange.value)
+      let param = {
+        patNo: huanZheXinXi.value.inpatientNo,
+        times: huanZheXinXi.value.admissTimes,
+        orderName: orderName.value,
+        total: total,
+        currentPage: jianChaShuJu.value.currentPage,
+        pageSize: jianChaShuJu.value.pageSize,
+        startTime: dateS.startTime,
+        endTime: dateS.endTime
+      }
+      huoQuJianChaShenQing(param).then((res) => {
+        if (total === 0) {
+          jianChaShuJu.value.total = res.total
+        }
+        jianChaShuJu.value.data = res.records
+      })
+    }
+
+    const handleCurrentChange = (val) => {
+      jianChaShuJu.value.currentPage = val
+      dianJiChaXunHuanZheJianCha(jianChaShuJu.value.total)
+    }
+
+    const dianJiaJianChaXiangQing = ({reqNo}) => {
+      huoQuShengQingXiangQing(reqNo).then((res) => {
+        daYingJianChaRef.value.jieShouShuJu(res)
+      })
+    }
+
+    const dianJiDaYingJianCha = ({reqNo}) => {
+      huoQuShengQingXiangQing(reqNo).then((res) => {
+        daYingJianChaRef.value.jieShouShuJu(res)
+        setTimeout(() => {
+          daYingJianChaRef.value.daYing()
+        }, 200)
+      })
+    }
+
+    const querySearchAsync = (val, cb) => {
+      if (youWuXuanZheHuanZhe()) return
+      huoQuHuanZheJianChaMing(val, huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, huanZheXinXi.value.bedNo).then(res => {
+        cb(res)
+      })
+    }
+
+    const daKaiTianJiaJianCha = () => {
+      if (youWuXuanZheHuanZhe()) return
+      tianJiaJianCha.value.tianJiaJianChaHuiHua = true
+    }
+    watch(() => huanZheXinXi.value, () => {
+      dianJiChaXunHuanZheJianCha(0)
+    })
+
+    return {
+      dianJiChaXunHuanZheJianCha,
+      dateRange,
+      orderName,
+      jianChaShuJu,
+      windowSize,
+      handleCurrentChange,
+      dianJiaJianChaXiangQing,
+      daYingJianChaRef,
+      dianJiDaYingJianCha,
+      huanHangXianShi,
+      querySearchAsync,
+      shortcuts,
+      tianJiaJianCha,
+      daKaiTianJiaJianCha
+    }
   }
+
 }
 </script>
 

+ 27 - 24
src/views/system/login.vue

@@ -3,42 +3,43 @@
     <div class="box">
       <h1>{{ systemTitle }}</h1>
       <el-form class="form">
-        <el-input size="large" v-model="form.codeRs" placeholder="工号" @keyup.enter="submit" type="text" maxlength="50">
+        <el-input v-model="form.codeRs" maxlength="50" placeholder="工号" size="large" type="text" @keyup.enter="submit">
           <template #prepend>
             <i class="sfont system-xingmingyonghumingnicheng"></i>
           </template>
         </el-input>
         <el-input
-          size="large"
-          ref="password"
-          v-model="form.password"
-          @keyup.enter="submit"
-          :type="passwordType"
-          placeholder="密码(默认密码为:123456)"
-          codeRs="password"
-          maxlength="50"
+            ref="password"
+            v-model="form.password"
+            :type="passwordType"
+            codeRs="password"
+            maxlength="50"
+            placeholder="密码(默认密码为:123456)"
+            size="large"
+            @keyup.enter="submit"
         >
           <template #prepend>
             <i class="sfont system-mima"></i>
           </template>
           <template #append>
-            <i class="sfont password-icon" :class="passwordType ? 'system-yanjing-guan' : 'system-yanjing'" @click="passwordTypeChange"></i>
+            <i :class="passwordType ? 'system-yanjing-guan' : 'system-yanjing'" class="sfont password-icon"
+               @click="passwordTypeChange"></i>
           </template>
         </el-input>
-        <el-button type="primary" @click="submit" style="width: 100%" size="medium">登录</el-button>
+        <el-button size="medium" style="width: 100%" type="primary" @click="submit">登录</el-button>
       </el-form>
     </div>
   </div>
 </template>
 
 <script>
-import { systemTitle } from '@/config'
-import { defineComponent, ref, reactive, onActivated, onMounted } from 'vue'
-import { useStore } from 'vuex'
-import { useRouter, useRoute } from 'vue-router'
-import { addRoutes } from '@/router'
-import { ElMessage } from 'element-plus'
-import { closeWebSocket } from '../../utils/websocket'
+import {systemTitle} from '@/config'
+import {defineComponent, onActivated, onMounted, reactive, ref} from 'vue'
+import {useStore} from 'vuex'
+import {useRoute, useRouter} from 'vue-router'
+import {addRoutes} from '@/router'
+import {ElMessage} from 'element-plus'
+import {closeWebSocket} from '@/utils/websocket'
 
 export default defineComponent({
   setup() {
@@ -79,14 +80,11 @@ export default defineComponent({
           password: form.password,
         }
         store.dispatch('user/login', params).then(() => {
-          ElMessage.success({
-            message: '登录成功',
-            type: 'success',
-            showClose: true,
-            duration: 1000,
-          })
           addRoutes()
           router.push(route.query.redirect || '/')
+          setTimeout(() => {
+            location.reload();
+          }, 200)
         })
       })
     }
@@ -96,6 +94,11 @@ export default defineComponent({
       localStorage.clear()
     })
 
+    onActivated(() => {
+      closeWebSocket()
+      localStorage.clear()
+    })
+
     return {
       systemTitle,
       form,