فهرست منبع

门急诊转入

xiaochan 2 سال پیش
والد
کامیت
d3c6ffa0f0
2فایلهای تغییر یافته به همراه260 افزوده شده و 242 حذف شده
  1. 8 0
      src/api/public-api.js
  2. 252 242
      src/views/clinic/TransferInOfExpenses.vue

+ 8 - 0
src/api/public-api.js

@@ -30,6 +30,14 @@ export function getDept() {
     })
 }
 
+export function queryDept(code) {
+    return request({
+        url: '/publicApi/queryDept',
+        method: 'get',
+        params: {code}
+    })
+}
+
 export function maZuiFangShi() {
     return request({
         url: '/publicApi/maZuiFangShi',

+ 252 - 242
src/views/clinic/TransferInOfExpenses.vue

@@ -105,9 +105,28 @@
       </div>
       收费日期:
       <el-date-picker v-model="chargeDate" type="datetime"></el-date-picker>
+      执行科室:
+      <el-select
+          v-model="huanZheXinXi.execUnit"
+          :remote-method="remoteMethodHuiZhenKeShi"
+          clearable
+          filterable
+          placeholder="根据拼音首字母查找"
+          remote
+          value-key="code">
+        <el-option v-for="item in deptList"
+                   :key="item.code"
+                   :value="item.code"
+                   :label="item.name">
+          <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+          <el-divider direction="vertical"></el-divider>
+          <span>{{ item.name }}</span>
+        </el-option>
+      </el-select>
       <div style="width: 100%">
         <div style="float: left; width: 45%">
-          <el-table ref="multipleTable" :data="mzXinXiList" :height="windowHeight / 1.4" highlight-current-row @selection-change="mzSelectChecked">
+          <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>
@@ -119,7 +138,8 @@
           </el-table>
           <el-tag>合计:{{ mzSum }}</el-tag>
         </div>
-        <div :style="{ lineHeight: windowHeight / 1.4 + 'px' }" style="width: 9%; float: left; margin-left: 4px; text-align: center">
+        <div :style="{ lineHeight: windowHeight / 1.4 + 'px' }"
+             style="width: 9%; float: left; margin-left: 4px; text-align: center">
           <el-button icon="Right" type="primary"></el-button>
         </div>
         <div style="float: right; width: 45%">
@@ -149,7 +169,8 @@
           </el-input>
           <el-divider direction="vertical"></el-divider>
           项目名称:
-          <el-select v-model="chargeCodeMX" :remote-method="remoteMethodEntryName" clearable filterable placeholder="根据拼音首字母查找" remote>
+          <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>
@@ -198,273 +219,262 @@
   </page-layer>
 </template>
 
-<script>
-import { ref } from '@vue/reactivity'
-import { baoCunHuanZheZhuYuanFeiYong, getSerialNo, getZyJiMenZhenZhuangRuFeiYong, queryEntryName, queryHuanZhe, shanChuFeiYong } from '@/api/inpatient/transfer-in-of-expenses'
-import { cptSex } from '@/utils/computed'
+<script setup name="TransferInOfExpenses">
+import {ref} from '@vue/reactivity'
+import {
+  baoCunHuanZheZhuYuanFeiYong,
+  getSerialNo,
+  getZyJiMenZhenZhuangRuFeiYong,
+  queryEntryName,
+  queryHuanZhe,
+  shanChuFeiYong
+} from '@/api/inpatient/transfer-in-of-expenses'
+import {cptSex} from '@/utils/computed'
 import store from '@/store'
-import { computed } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
-import { compareDate, formatDatetime } from '@/utils/date'
-import { getServerDateApi } from '@/api/public-api'
-import { stringNotBlank } from '@/utils/blank-utils'
+import {computed} from 'vue'
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {compareDate, formatDatetime} from '@/utils/date'
+import {getServerDateApi, queryDept} from '@/api/public-api'
+import {stringNotBlank} from '@/utils/blank-utils'
 import PageLayer from "@/layout/PageLayer";
 
-export default {
-  name: 'TransferInOfExpenses',
-  components: {PageLayer},
-  setup() {
-    const windowSize = store.state.app.windowSize
-    const windowHeight = windowSize.h
-
-    //查询条件
-    //住院号
-    const inpatientNo = ref('') // 016868
-    //机制号
-    const serialNo = ref('') // 11516328
-    //是否查看历史记录
-    const liShiFlag = ref(0)
-    //收费代码
-    const chargeCodeMX = ref('')
-    // 住院次数
-    const admissTimes = ref('')
+const windowSize = store.state.app.windowSize
+const windowHeight = windowSize.h
 
-    const huanZheXinXi = ref({})
+//查询条件
+//住院号
+const inpatientNo = ref('') // 016868
+//机制号
+const serialNo = ref('') // 11516328
+//是否查看历史记录
+const liShiFlag = ref(0)
+//收费代码
+const chargeCodeMX = ref('')
+// 住院次数
+const admissTimes = ref('')
 
-    const mzXinXiList = ref([])
-    const zyXinXiList = ref([])
+const huanZheXinXi = ref({})
 
-    //查询患者信息
-    const queryClick = async () => {
-      if (!inpatientNo.value) {
-        ElMessage({
-          type: 'warning',
-          message: '请先输入患者住院号',
-          showClose: true,
-          duration: 2500,
-        })
-        return
-      }
-      chargeDate.value = await getServerDateApi()
-      queryHuanZhe(inpatientNo.value).then((res) => {
-        huanZheXinXi.value = res
-        admissTimes.value = res.admissTimes
-      })
-    }
+const mzXinXiList = ref([])
+const zyXinXiList = ref([])
 
-    //查询机制号
-    const querySerialNo = () => {
-      if (!serialNo.value) {
-        ElMessage({
-          type: 'warning',
-          message: '请先输入机制号',
-          showClose: true,
-          duration: 2500,
-        })
-        return
-      }
-      getSerialNo(serialNo.value, liShiFlag.value)
-        .then((res) => {
-          mzXinXiList.value = res
-        })
-        .catch(() => {
-          mzXinXiList.value = []
-        })
-    }
-
-    //定义用来删除 多选框的选中状态 以及点击选中多选框
-    const multipleTable = ref(null)
-    //点击多选框,把里面的内容添加进去
-    const mzSelectChecked = (selection, row) => {
-      zyXinXiList.value = selection
-    }
+//查询患者信息
+const queryClick = async () => {
+  if (!inpatientNo.value) {
+    ElMessage({
+      type: 'warning',
+      message: '请先输入患者住院号',
+      showClose: true,
+      duration: 2500,
+    })
+    return
+  }
+  chargeDate.value = await getServerDateApi()
+  deptList.value = [{code: '1070000', name: '急诊科'}]
+  queryHuanZhe(inpatientNo.value).then((res) => {
+    huanZheXinXi.value = res
+    admissTimes.value = res.admissTimes
+    huanZheXinXi.value.execUnit = '1070000'
+  })
+}
 
-    //门诊发票信息 金额总和
-    let mzSum = computed(() => {
-      let sum = 0
-      mzXinXiList.value.forEach((item) => {
-        sum += item.price * item.chargeAmount
-      })
-      return sum.toFixed(2)
+//查询机制号
+const querySerialNo = () => {
+  if (!serialNo.value) {
+    ElMessage({
+      type: 'warning',
+      message: '请先输入机制号',
+      showClose: true,
+      duration: 2500,
     })
-    //住院收费项目 金额总和
-    let zySum = computed(() => {
-      let he = 0
-      zyXinXiList.value.forEach((item) => {
-        he += item.price * item.chargeAmount
+    return
+  }
+  getSerialNo(serialNo.value, liShiFlag.value)
+      .then((res) => {
+        mzXinXiList.value = res
       })
-      return he.toFixed(2)
-    })
+      .catch(() => {
+        mzXinXiList.value = []
+      })
+}
 
-    const huanZheFeiYongDrawer = ref(false)
+//定义用来删除 多选框的选中状态 以及点击选中多选框
+const multipleTable = ref(null)
+//点击多选框,把里面的内容添加进去
+const mzSelectChecked = (selection, row) => {
+  zyXinXiList.value = selection
+}
 
-    const HuanZheFeiYongCurrentPage = ref(1)
-    const huanZheFeiYongPageSize = ref(10)
-    const huanZheFeiYongTotal = ref(0)
-    const huanZheFeiYongZongHe = ref(0)
+//门诊发票信息 金额总和
+let mzSum = computed(() => {
+  let sum = 0
+  mzXinXiList.value.forEach((item) => {
+    sum += item.price * item.chargeAmount
+  })
+  return sum.toFixed(2)
+})
+//住院收费项目 金额总和
+let zySum = computed(() => {
+  let he = 0
+  zyXinXiList.value.forEach((item) => {
+    he += item.price * item.chargeAmount
+  })
+  return he.toFixed(2)
+})
 
-    //住院患者的费用信息
-    const zyDetailChargeList = ref([])
+const huanZheFeiYongDrawer = ref(false)
 
-    let resInpatientNo = null
-    let resChargeCodeMx = null
+const HuanZheFeiYongCurrentPage = ref(1)
+const huanZheFeiYongPageSize = ref(10)
+const huanZheFeiYongTotal = ref(0)
+const huanZheFeiYongZongHe = ref(0)
 
-    //点击查询患者 门急诊转入的费用 在定义两个字段,用来分页的时候就算输入框没值了 也能拿到数据
-    const getZyJiMenZhenZhuangRuFeiYongClick = () => {
-      if (!admissTimes.value) {
-        ElMessage.warning({
-          message: '请先查询出患者信息',
-          showClose: true,
-          duration: 2500,
-        })
-        return
-      }
-      //通过住院号和项目编码 获取住院门诊装入费用
-      getZyJiMenZhenZhuangRuFeiYong(inpatientNo.value, chargeCodeMX.value, admissTimes.value, HuanZheFeiYongCurrentPage.value, huanZheFeiYongPageSize.value).then((res) => {
-        resInpatientNo = inpatientNo.value
-        resChargeCodeMx = chargeCodeMX.value
-        zyDetailChargeList.value = res.data
-        huanZheFeiYongTotal.value = res.total
-        huanZheFeiYongZongHe.value = res.sum
-      })
-    }
+//住院患者的费用信息
+const zyDetailChargeList = ref([])
 
-    //点击上下分页触发的事件
-    const huanZheFeiYongCurrentChange = (val) => {
-      HuanZheFeiYongCurrentPage.value = val
-      if (zyDetailChargeList.value) {
-        getZyJiMenZhenZhuangRuFeiYong(resInpatientNo, resChargeCodeMx, admissTimes.value, HuanZheFeiYongCurrentPage.value, huanZheFeiYongPageSize.value).then((res) => {
-          zyDetailChargeList.value = res.data
-          huanZheFeiYongTotal.value = res.total
-        })
-      }
-    }
+let resInpatientNo = null
+let resChargeCodeMx = null
 
-    //删除住院收费项目 前端删除 后端也删除 只是不执行一个查找的动作了
-    const shanChuFeiYongClick = (index, val) => {
-      shanChuFeiYong(val).then((res) => {
-        zyDetailChargeList.value.splice(index, 1)
+//点击查询患者 门急诊转入的费用 在定义两个字段,用来分页的时候就算输入框没值了 也能拿到数据
+const getZyJiMenZhenZhuangRuFeiYongClick = () => {
+  if (!admissTimes.value) {
+    ElMessage.warning({
+      message: '请先查询出患者信息',
+      showClose: true,
+      duration: 2500,
+    })
+    return
+  }
+  //通过住院号和项目编码 获取住院门诊装入费用
+  getZyJiMenZhenZhuangRuFeiYong(inpatientNo.value, chargeCodeMX.value, admissTimes.value, HuanZheFeiYongCurrentPage.value, huanZheFeiYongPageSize.value).then((res) => {
+    resInpatientNo = inpatientNo.value
+    resChargeCodeMx = chargeCodeMX.value
+    zyDetailChargeList.value = res.data
+    huanZheFeiYongTotal.value = res.total
+    huanZheFeiYongZongHe.value = res.sum
+  })
+}
+
+//点击上下分页触发的事件
+const huanZheFeiYongCurrentChange = (val) => {
+  HuanZheFeiYongCurrentPage.value = val
+  if (zyDetailChargeList.value) {
+    getZyJiMenZhenZhuangRuFeiYong(resInpatientNo, resChargeCodeMx, admissTimes.value, HuanZheFeiYongCurrentPage.value, huanZheFeiYongPageSize.value).then((res) => {
+      zyDetailChargeList.value = res.data
+      huanZheFeiYongTotal.value = res.total
+    })
+  }
+}
+
+//删除住院收费项目 前端删除 后端也删除 只是不执行一个查找的动作了
+const shanChuFeiYongClick = (index, val) => {
+  shanChuFeiYong(val).then((res) => {
+    zyDetailChargeList.value.splice(index, 1)
+  })
+}
+//点击保存触发的事件
+const baoCunClick = () => {
+  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') {
+    ElMessage({
+      type: 'warning',
+      message: '请先选择患者',
+      showClose: true,
+      duration: 2500,
+    })
+    return
+  }
+  if (zyXinXiList.value.length === 0) {
+    ElMessage({
+      type: 'warning',
+      message: '请先选择要添加的费用',
+      showClose: true,
+      duration: 2500,
+    })
+    return
+  }
+  huanZheXinXi.value.list = zyXinXiList.value
+  if (huanZheXinXi.value.chargeDate === '') {
+    return ElMessage.error({
+      message: '请选择日期',
+    })
+  }
+  console.log(huanZheXinXi.value);
+  for (let i = 0; mzXinXiList.value.length; i++) {
+    if (huanZheXinXi.value.name !== mzXinXiList.value[i].patientName && typeof mzXinXiList.value[i].patientName !== 'undefined') {
+      return ElMessageBox.confirm('', '提示', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        dangerouslyUseHTMLString: true,
+        type: 'warning',
+        message: `门诊病人姓名【'${mzXinXiList.value[i].patientName}  '】住院病人姓名【'  ${huanZheXinXi.value.name}  '】不一致,是否继续?<br>收费日期:${huanZheXinXi.value.chargeDate}`,
       })
-    }
-    //点击保存触发的事件
-    const baoCunClick = () => {
-      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') {
-        ElMessage({
-          type: 'warning',
-          message: '请先选择患者',
-          showClose: true,
-          duration: 2500,
-        })
-        return
-      }
-      if (zyXinXiList.value.length === 0) {
-        ElMessage({
-          type: 'warning',
-          message: '请先选择要添加的费用',
-          showClose: true,
-          duration: 2500,
-        })
-        return
-      }
-      huanZheXinXi.value.list = zyXinXiList.value
-      if (huanZheXinXi.value.chargeDate === '') {
-        return ElMessage.error({
-          message: '请选择日期',
-        })
-      }
-      for (let i = 0; mzXinXiList.value.length; i++) {
-        if (huanZheXinXi.value.name !== mzXinXiList.value[i].patientName && typeof mzXinXiList.value[i].patientName !== 'undefined') {
-          return ElMessageBox.confirm('', '提示', {
-            cancelButtonText: '取消',
-            confirmButtonText: '确定',
-            dangerouslyUseHTMLString: true,
-            type: 'warning',
-            message: `门诊病人姓名【'${mzXinXiList.value[i].patientName}  '】住院病人姓名【'  ${huanZheXinXi.value.name}  '】不一致,是否继续?<br>收费日期:${huanZheXinXi.value.chargeDate}`,
-          })
-            .then(() => {
-              baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then((res) => {
-                zyXinXiList.value = []
-                mzXinXiList.value = []
-              })
+          .then(() => {
+            baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then((res) => {
+              zyXinXiList.value = []
+              mzXinXiList.value = []
             })
-            .catch(() => {})
-        } else if (huanZheXinXi.value.name === mzXinXiList.value[i].patientName && typeof mzXinXiList.value[i].patientName !== 'undefined') {
-          return ElMessageBox.confirm('', '提示', {
-            cancelButtonText: '取消',
-            confirmButtonText: '确定',
-            dangerouslyUseHTMLString: true,
-            type: 'warning',
-            message: `收费日期:${huanZheXinXi.value.chargeDate}`,
           })
-            .then(() => {
-              baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then((res) => {
-                zyXinXiList.value = []
-                mzXinXiList.value = []
-              })
+          .catch(() => {
+          })
+    } else if (huanZheXinXi.value.name === mzXinXiList.value[i].patientName && typeof mzXinXiList.value[i].patientName !== 'undefined') {
+      return ElMessageBox.confirm('', '提示', {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        dangerouslyUseHTMLString: true,
+        type: 'warning',
+        message: `收费日期:${huanZheXinXi.value.chargeDate}`,
+      })
+          .then(() => {
+            baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then((res) => {
+              zyXinXiList.value = []
+              mzXinXiList.value = []
             })
-            .catch(() => {})
-        }
-      }
+          })
+          .catch(() => {
+          })
     }
-    //项目名称 数组
-    const entryNameList = ref([])
+  }
+}
+//项目名称 数组
+const entryNameList = ref([])
 
-    //远程搜索项目名称
-    const remoteMethodEntryName = (val) => {
-      if (val.length >= 2) {
-        queryEntryName(val).then((res) => {
-          entryNameList.value = res
-        })
-      }
-    }
+//远程搜索项目名称
+const remoteMethodEntryName = (val) => {
+  if (val.length >= 2) {
+    queryEntryName(val).then((res) => {
+      entryNameList.value = res
+    })
+  }
+}
 
-    const chargeDate = ref(new Date())
+const chargeDate = ref(new Date())
 
-    //门诊合计
-    return {
-      inpatientNo,
-      serialNo,
-      liShiFlag,
-      queryClick,
-      querySerialNo,
-      huanZheXinXi,
-      cptSex,
-      windowHeight,
-      chaKanLiShi,
-      mzXinXiList,
-      mzSelectChecked,
-      zyXinXiList,
-      mzSum,
-      zySum,
-      huanZheFeiYongDrawer,
-      HuanZheFeiYongCurrentPage,
-      huanZheFeiYongPageSize,
-      huanZheFeiYongCurrentChange,
-      huanZheFeiYongTotal,
-      getZyJiMenZhenZhuangRuFeiYongClick,
-      zyDetailChargeList,
-      shanChuFeiYongClick,
-      chargeCodeMX,
-      baoCunClick,
-      multipleTable,
-      remoteMethodEntryName,
-      entryNameList,
-      huanZheFeiYongZongHe,
-      chargeDate,
-    }
-  },
+// 科室
+const deptList = ref([])
+//远程搜索会诊科室
+const remoteMethodHuiZhenKeShi = (val) => {
+  if (val !== '' && val.length > 1) {
+    queryDept(val)
+        .then((res) => {
+          deptList.value = res
+        })
+        .catch(() => {
+          deptList.value = []
+        })
+  }
 }
 
+
 let chaKanLiShi = [
-  { code: 0, name: '不查看历史记录' },
-  { code: 1, name: '查看历史记录' },
+  {code: 0, name: '不查看历史记录'},
+  {code: 1, name: '查看历史记录'},
 ]
 </script>