瀏覽代碼

优化代码以及查询医嘱费用

xiaochan 2 年之前
父節點
當前提交
8f13d2ca64

+ 7 - 31
src/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru.js

@@ -140,21 +140,6 @@ export function huoQuZhuYuanPinLv(code) {
     })
 }
 
-export function huoQuGeiYaoFangShi(code) {
-    return request({
-        url: url + '/huoQuGeiYaoFangShi',
-        method: 'get',
-        params: {code},
-    })
-}
-
-export function getCostFreeDosing(code) {
-    return request({
-        url: url + '/getCostFreeDosing',
-        method: 'get',
-        params: {code},
-    })
-}
 
 export function huoQuZhiXinKeShi(code) {
     return request({
@@ -164,14 +149,6 @@ export function huoQuZhiXinKeShi(code) {
     })
 }
 
-export function shangChuanYiZhu(data) {
-    return request({
-        url: url + '/shangChuanYiZhu',
-        method: 'post',
-        data,
-    })
-}
-
 export function huoQuYiZhuMuBan(code, deptCode, muBanLeiXing, currentPage, total) {
     return request({
         url: url + '/huoQuYiZhuMuBan',
@@ -220,14 +197,6 @@ export function muBanCaoZuo(patternCode, patternName, deptCode, sortNo, flag) {
     })
 }
 
-export function expensesForGettingADoctorSOrder(patNo, times) {
-    return request({
-        url: url + '/expensesForGettingADoctorSOrder',
-        method: 'get',
-        params: {patNo, times},
-    })
-}
-
 export function singleDataCheck(data) {
     return request({
         url: url + '/singleDataCheck',
@@ -286,3 +255,10 @@ export function copyOrder(data) {
     })
 }
 
+export function queryFeeByOrderNoApi(actOrderNo) {
+    return request({
+        url: url + '/queryFeeByOrderNo',
+        method: 'get',
+        params: {actOrderNo}
+    })
+}

+ 116 - 114
src/components/med-tec-mod/RefundForProjectEntry.vue

@@ -1,83 +1,85 @@
 <template>
-  <xc-dialog-v2 title="退费详细"
-                v-model="modelValue"
-                width="100%"
-                @closed="emit('update:modelValue',false)">
-    <page-layer>
-      <template #header>
-        数量:{{ chargeAmount }} 金额: {{
-          chargeFee.toLocaleString('zh', {
-            style: 'currency',
-            currency: 'cny',
-            currencyDisplay: 'name'
-          })
-        }}
-        <div v-if="isDrug">
-          药房:
-          <el-select v-model="groupNo">
-            <el-option value="71" label="门诊"/>
-            <el-option value="73" label="住院"/>
-          </el-select>
-        </div>
-        <el-button @click="confirmRefund('drugWithdrawal')" icon="Delete" type="danger"
-                   title="项目可直接退费,只有对应的执行科室可以退费,药品会产生药单,在药房确认退药后会产生退费数据,口服药无法退费。如药房拒绝可再次退费。">
-          {{ isDrug ? '退药且退费' : '退费' }}
-        </el-button>
-        <el-button v-if="isDrug"
-                   @click="confirmRefund('refundOnly')"
-                   icon="Delete"
-                   type="warning"
-                   title="只会生成退费的费用,不会产生药单到药房。">
-          仅退费不退药
-        </el-button>
-      </template>
-
-      <template #mainMaxContentHeight>
-        <div style="color: red">
-          请注意如果点击了【退费且退药】那么需要提交一次药单。
-        </div>
-        <xc-table :local-data="props.list" :height="400">
-          <el-table-column fixed="left" label="操作">
-            <template #default="scope">
-              <el-button @click="deleteData(scope.row,scope.row.$index)" icon="Delete" type="danger">删除</el-button>
-            </template>
-          </el-table-column>
-          <el-table-column label="流水号" prop="detailSn" width="70px"></el-table-column>
-          <el-table-column label="医嘱号" prop="orderNo" width="70px"></el-table-column>
-          <el-table-column label="录入日期" prop="chargeDate" width="70px"></el-table-column>
-          <el-table-column label="项目编码" prop="chargeCodeMx"></el-table-column>
-          <el-table-column label="项目名称" prop="chargeName"></el-table-column>
-          <el-table-column label="规格" prop="specification"></el-table-column>
-          <el-table-column label="药品名称" prop="drugname"></el-table-column>
-          <el-table-column label="执行科室" prop="execDept"></el-table-column>
-          <el-table-column label="申请科室" prop="deptCode"></el-table-column>
-          <el-table-column label="金额" prop="chargeFee"></el-table-column>
-          <el-table-column label="数量" prop="chargeAmount"></el-table-column>
-          <el-table-column label="状态" prop="chargeStatus">
-            <template #default="scope">
-              {{ costState(scope.row.chargeStatus) }}
+    <xc-dialog-v2 title="退费详细"
+                  v-model="modelValue"
+                  width="100%"
+                  @closed="emit('update:modelValue',false)">
+        <page-layer>
+            <template #header>
+                数量:{{ chargeAmount }} 金额: {{
+                chargeFee.toLocaleString('zh', {
+                  style: 'currency',
+                  currency: 'cny',
+                  currencyDisplay: 'name'
+                })
+                }}
+                <div v-if="isDrug">
+                    药房:
+                    <el-select v-model="groupNo">
+                        <el-option value="71" label="门诊"/>
+                        <el-option value="73" label="住院"/>
+                    </el-select>
+                </div>
+                <el-button @click="confirmRefund('drugWithdrawal')" icon="Delete" type="danger"
+                           title="项目可直接退费,只有对应的执行科室可以退费,药品会产生药单,在药房确认退药后会产生退费数据,口服药无法退费。如药房拒绝可再次退费。">
+                    {{ isDrug ? '退药且退费' : '退费' }}
+                </el-button>
+                <el-button v-if="isDrug"
+                           @click="confirmRefund('refundOnly')"
+                           icon="Delete"
+                           type="warning"
+                           title="只会生成退费的费用,不会产生药单到药房。">
+                    仅退费不退药
+                </el-button>
             </template>
-          </el-table-column>
-          <el-table-column label="录入人" prop="opName"></el-table-column>
-          <el-table-column label="账单码" prop="billItemName"></el-table-column>
-          <el-table-column label="是否退费" prop="tuiFeiFlag">
-            <template #default="scope">
-              <span v-html="conversionRefundFlag(scope.row.oriDetailSn)" style="color:red;"></span>
-              <br>
-              <span v-if="scope.row.oriDetailSn > 0">
+
+            <template #mainMaxContentHeight>
+                <div style="color: red">
+                    请注意如果点击了【退费且退药】那么需要提交一次药单。
+                </div>
+                <xc-table :local-data="props.list" :height="400">
+                    <el-table-column fixed="left" label="操作">
+                        <template #default="scope">
+                            <el-button @click="deleteData(scope.row,scope.row.$index)" icon="Delete" type="danger">
+                                删除
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="流水号" prop="detailSn" width="70px"></el-table-column>
+                    <el-table-column label="医嘱号" prop="orderNo" width="70px"></el-table-column>
+                    <el-table-column label="录入日期" prop="chargeDate" width="70px"></el-table-column>
+                    <el-table-column label="项目编码" prop="chargeCodeMx"></el-table-column>
+                    <el-table-column label="项目名称" prop="chargeName"></el-table-column>
+                    <el-table-column label="规格" prop="specification"></el-table-column>
+                    <el-table-column label="药品名称" prop="drugname"></el-table-column>
+                    <el-table-column label="执行科室" prop="execDept"></el-table-column>
+                    <el-table-column label="申请科室" prop="deptCode"></el-table-column>
+                    <el-table-column label="金额" prop="chargeFee"></el-table-column>
+                    <el-table-column label="数量" prop="chargeAmount"></el-table-column>
+                    <el-table-column label="状态" prop="chargeStatus">
+                        <template #default="scope">
+                            {{ costState(scope.row.chargeStatus) }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="录入人" prop="opName"></el-table-column>
+                    <el-table-column label="账单码" prop="billItemName"></el-table-column>
+                    <el-table-column label="是否退费" prop="tuiFeiFlag">
+                        <template #default="scope">
+                            <span v-html="conversionRefundFlag(scope.row.oriDetailSn)" style="color:red;"></span>
+                            <br>
+                            <span v-if="scope.row.oriDetailSn > 0">
                     <span style="color: #e6a23c">退费数据</span> <br/>
                     <span style="color: teal">
                       原流水号为 <br/>
                       【 {{ scope.row.oriDetailSn }} 】
                     </span>
                   </span>
-            </template>
-          </el-table-column>
-        </xc-table>
+                        </template>
+                    </el-table-column>
+                </xc-table>
 
-      </template>
-    </page-layer>
-  </xc-dialog-v2>
+            </template>
+        </page-layer>
+    </xc-dialog-v2>
 </template>
 
 <script setup name='RefundForProjectEntry'>
@@ -89,19 +91,19 @@ import {xiangMuTuiFei} from "@/api/inpatient/xiang-mu-lu-ru";
 import PageLayer from "@/layout/PageLayer";
 
 const props = defineProps({
-  modelValue: {
-    type: Boolean
-  },
-  list: {
-    type: Array,
-    default: []
-  },
-  isDrug: {
-    type: Boolean
-  },
-  patient: {
-    type: Object
-  }
+    modelValue: {
+        type: Boolean
+    },
+    list: {
+        type: Array,
+        default: []
+    },
+    isDrug: {
+        type: Boolean
+    },
+    patient: {
+        type: Object
+    }
 })
 
 const emit = defineEmits(['uncheck', 'update:modelValue', 'refreshFee'])
@@ -112,46 +114,46 @@ let groupNo = $ref('73')
 
 
 const confirmRefund = (flag) => {
-  let pharmacyName = groupNo === '71' ? '门诊' : '住院'
-  // 是否是药品退药 true
-  let isDrugWithdrawal = props.isDrug && flag === 'drugWithdrawal'
-  let title = isDrugWithdrawal ? `药品是否要退到 【${pharmacyName}】 药房` : '请确认数据'
-  ElMessageBox.confirm(title, '请您仔细确认', {
-    type: 'warning',
-    confirmButtonText: '我已确认',
-    cancelButtonText: '再看看',
-  }).then(() => {
-    props.patient.groupNo = groupNo
-    props.patient.refundFlag = flag
-    xiangMuTuiFei(props.patient).then((res) => {
-      emit('refreshFee')
-      emit('update:modelValue', false)
-    })
-  }).catch(() => {
+    let pharmacyName = groupNo === '71' ? '门诊' : '住院'
+    // 是否是药品退药 true
+    let isDrugWithdrawal = props.isDrug && flag === 'drugWithdrawal'
+    let title = isDrugWithdrawal ? `药品是否要退到 【${pharmacyName}】 药房` : '请确认数据'
+    ElMessageBox.confirm(title, '请您仔细确认', {
+        type: 'warning',
+        confirmButtonText: '我已确认',
+        cancelButtonText: '再看看',
+    }).then(() => {
+        props.patient.groupNo = groupNo
+        props.patient.refundFlag = flag
+        xiangMuTuiFei(props.patient).then((res) => {
+            emit('refreshFee')
+            emit('update:modelValue', false)
+        })
+    }).catch(() => {
 
-  });
+    });
 }
 
 const deleteData = async (data, index) => {
-  await emit('uncheck', data)
-  props.list.splice(index, 1)
-  if (props.list.length === 0) {
-    emit('update:modelValue', false)
-  }
-  calculatedAmount()
+    await emit('uncheck', data)
+    props.list.splice(index, 1)
+    if (props.list.length === 0) {
+        emit('update:modelValue', false)
+    }
+    calculatedAmount()
 }
 
 const calculatedAmount = () => {
-  chargeAmount = 0
-  chargeFee = 0
-  props.list.forEach(item => {
-    chargeAmount += item.chargeAmount
-    chargeFee += item.chargeFee
-  })
+    chargeAmount = 0
+    chargeFee = 0
+    props.list.forEach(item => {
+        chargeAmount += item.chargeAmount
+        chargeFee += item.chargeFee
+    })
 }
 
 onMounted(() => {
-  calculatedAmount()
+    calculatedAmount()
 })
 
 </script>

+ 15 - 15
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrOrderList.vue

@@ -25,29 +25,29 @@
                            :row-config="{isHover : true, isCurrent: true,height: 24,useKey :  'actOrderNo'}"
                            show-overflow
                            ref="tableRef">
-                    <vxe-column type="checkbox" width="30"/>
-                    <vxe-column type="seq" width="40"/>
-                    <vxe-column title="开始时间" field="startTime" width="150"/>
-                    <vxe-column title="医嘱号" field="actOrderNo" width="90"/>
+                    <vxe-column type="checkbox" min-width="25"/>
+                    <vxe-column type="seq" min-width="30"/>
+                    <vxe-column title="开始时间" field="startTime" min-width="150"/>
+                    <vxe-column title="医嘱号" field="actOrderNo" min-width="90"/>
                     <vxe-column title="组" field="orderGroup" width="35">
                         <template #default="{row}">
                             <span style="color: red">{{ row.orderGroup }}</span>
                         </template>
                     </vxe-column>
-                    <vxe-column title="医嘱名称" field="orderName" width="220"/>
-                    <vxe-column title="嘱托" field="instruction" width="90"/>
-                    <vxe-column title="频率" field="frequCode" width="90"/>
-                    <vxe-column title="给药方式" field="supplyCodeName" width="90"/>
-                    <vxe-column title="申请科室" field="deptName" width="90"/>
-                    <vxe-column title="执行科室" field="execUnitName" width="90"/>
+                    <vxe-column title="医嘱名称" field="orderName" min-width="220"/>
+                    <vxe-column title="嘱托" field="instruction" min-width="90"/>
+                    <vxe-column title="频率" field="frequCode" min-width="90"/>
+                    <vxe-column title="给药方式" field="supplyCodeName" min-width="90"/>
+                    <vxe-column title="申请科室" field="deptName" min-width="90"/>
+                    <vxe-column title="执行科室" field="execUnitName" min-width="90"/>
                     <vxe-colgroup title="确认">
-                        <vxe-column title="确认医生" field="signerName" width="120"/>
-                        <vxe-column title="确认护士" field="executer1" width="120"/>
+                        <vxe-column title="医生" field="signerName" min-width="60"/>
+                        <vxe-column title="护士" field="executer1" min-width="60"/>
                     </vxe-colgroup>
                     <vxe-colgroup title="停止">
-                        <vxe-column title="停止时间" field="endTime" width="120"/>
-                        <vxe-column title="停止医生" field="modifierName" width="120"/>
-                        <vxe-column title="停止护士" field="executer1" width="120"/>
+                        <vxe-column title="时间" field="endTime" min-width="60"/>
+                        <vxe-column title="医生" field="modifierName" min-width="60"/>
+                        <vxe-column title="护士" field="executer1" min-width="60"/>
                     </vxe-colgroup>
                 </vxe-table>
             </template>

+ 14 - 14
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrYzTemperature.vue

@@ -16,20 +16,20 @@
                            border
                            class="hl-style"
                            header-row-class-name="padding_zero"
+                           show-overflow
                            :column-config="{resizable: true}"
                            :row-config="{ height: 24}"
-                           show-overflow
                            :row-class-name="rowClassName"
                            @cell-click="rowClick"
                            :data="listRef">
-                    <vxe-column field="recDateStr" title="日期" width="94">
+                    <vxe-column field="recDateStr" title="日期" width="80">
                         <template #default="{row,rowIndex}">
                             <component :is="dateDisplay(row,row.recDateStr,rowIndex)"/>
                         </template>
                     </vxe-column>
-                    <vxe-column title="时间" width="94">
+                    <vxe-column title="时间" width="40">
                         <template #default="{row,rowIndex}">
-                            <component :is="timePlsy(row,row.recDateStr,rowIndex)"/>
+                            <component :is="timePlsy(row,row.recTimeStr,rowIndex)"/>
                         </template>
                     </vxe-column>
                     <vxe-column field="patientState" title="病情" width="50"/>
@@ -50,7 +50,7 @@
                     </vxe-colgroup>
 
                     <vxe-column field="breathe1" title="呼吸" width="40"/>
-                    <vxe-column field="pressure1AmAndPm" title="血压" width="55"/>
+                    <vxe-column field="pressure1AmAndPm" title="血压" width="60"/>
                     <vxe-column field="spo2" title="Sp02%" width="50"/>
                     <vxe-column field="mind" title="意识" width="40"/>
 
@@ -75,7 +75,7 @@
                     </vxe-colgroup>
 
                     <vxe-column field="glu" title="血糖" width="40"/>
-                    <vxe-column field="otherInfo" title="护理措施及效果" width="240"/>
+                    <vxe-column field="otherInfo" title="护理措施及效果" min-width="250"/>
 
                     <vxe-column field="userid" title="护士" width="70">
                         <template #default="{row,rowIndex}">
@@ -101,7 +101,6 @@ import {stringIsBlank} from '@/utils/blank-utils'
 import {stringNotBlank} from "@/utils/blank-utils";
 
 const dateDisplay = (row, cellData, index) => {
-    console.log(cellData)
     let temp = listRef.value[index - 1]
     if (temp === null || typeof temp === 'undefined') {
         return <span>{cellData}</span>
@@ -375,11 +374,10 @@ const query = () => {
 }
 
 const rowClassName = ({row}) => {
-    console.log(row)
     if (key.value === row.tempDate) {
-        return 'current'
+        return 'current row_padding_zero'
     }
-    return ''
+    return 'row_padding_zero'
 }
 
 onMounted(() => {
@@ -388,10 +386,12 @@ onMounted(() => {
 </script>
 
 <style lang="scss">
-.padding_zero {
-  th {
-    padding: 0 !important;
-  }
+.padding_zero th .vxe-cell {
+  padding: 0 !important;
+}
+
+.row_padding_zero td .vxe-cell {
+  padding: 0 !important;
 }
 
 .hl-style .current {

+ 5 - 0
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/table/YzTableV2.vue

@@ -275,6 +275,11 @@ const scrollToEnd = () => {
 
 const mousePosition = ref()
 const opt = [
+    {
+        name: '医嘱费用', click: (data) => {
+            yzMitt.emit('queryFeeByOrderNo', data)
+        }
+    },
     {
         name: '复制', click: (data) => {
             yzMitt.emit('copy', data.actOrderNo, data.frequCode)

+ 3 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/YiZhuLuRu.vue

@@ -72,6 +72,8 @@
         <!--  合理用药窗口  -->
         <rational-drug-use-window ref="reasonableRef" @submit="confirmOrder"/>
 
+        <fee-table/>
+
     </div>
 
 </template>
@@ -117,6 +119,7 @@ import ReportOfInfectiousDiseases
 import YzTableV2 from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/table/YzTableV2.vue";
 import {clone} from "@/utils/clone";
 import BloodSugar from "@/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/components/BloodSugar.vue";
+import FeeTable from "@/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/components/FeeTable.vue";
 
 const windowSize = computed(() => {
     return store.state.app.windowSize

+ 89 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/components/FeeTable.vue

@@ -0,0 +1,89 @@
+<script setup lang="jsx">
+import {yzMitt} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {queryFeeByOrderNoApi} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
+import {getWindowSize} from "@/utils/window-size";
+
+const dialog = ref(false)
+const feeList = ref([])
+const tableRef = ref(null)
+
+
+const orderData = ref()
+
+const queryFeeByOrderNo = (data) => {
+    orderData.value = data
+    queryFeeByOrderNoApi(data.actOrderNo).then(res => {
+        dialog.value = true
+        feeList.value = res
+    })
+}
+
+
+const refundStatus = (val) => {
+    if (val === -1) {
+        return <span style="color: red">退费数据</span>
+    } else if (val > 0) {
+        return <span style="color: black">原流水 {val}</span>
+    }
+}
+
+const filterRoleMethod = ({value, row}) => {
+    if (value === 1 && row.oriDetailSn === 0) {
+        return true
+    }
+    if (value === 2 && row.oriDetailSn > 0) {
+        return true
+    }
+    if (value === 3 && row.oriDetailSn === -1) {
+        return true
+    }
+}
+
+const tableCheckboxConfig = ref({
+    checkMethod: ({row}) => {
+        return row.oriDetailSn === 0
+    }
+})
+
+
+onMounted(() => {
+    yzMitt.on('queryFeeByOrderNo', queryFeeByOrderNo)
+})
+
+</script>
+
+<template>
+    <el-dialog v-model="dialog" title="费用详情" width="80%" top="3%">
+        <vxe-table :data="feeList"
+                   border
+                   ref="tableRef"
+                   :checkbox-config="tableCheckboxConfig"
+                   :row-config="{isHover : true, isCurrent: true,height: 24,useKey :  'rowId'}"
+                   :height="getWindowSize.h / 1.2">
+            <vxe-column type="seq" width="50"/>
+            <vxe-column type="checkbox" width="35"/>
+            <vxe-column field="chargeDate" title="收费时间" width="150" sortable/>
+            <vxe-column field="genTime" title="执行时间" width="150"/>
+            <vxe-column field="chargeCodeName" title="项目名称" min-width="120"/>
+            <vxe-column field="chargeCodeMx" title="项目编码" min-width="80"/>
+            <vxe-column field="chargeFee" title="金额" min-width="40"/>
+            <vxe-column field="execDept" title="执行" min-width="60"/>
+            <vxe-column field="chargeAmount" title="数量" min-width="40" sortable/>
+            <vxe-column title="退费"
+                        :filters="[{ label: '未退', value: 1 }, { label: '退费', value: 2 },{ label: '被退', value: 3 }]"
+                        :filter-method="filterRoleMethod">
+                <template #default="{row}">
+                    <component :is="refundStatus(row.oriDetailSn)"/>
+                </template>
+            </vxe-column>
+        </vxe-table>
+    </el-dialog>
+</template>
+
+<style scoped lang="scss">
+.my-select {
+  margin: 10px;
+  width: 100px;
+  height: 32px;
+}
+</style>