瀏覽代碼

药单情况查询

lighter 2 年之前
父節點
當前提交
99d908081c

+ 16 - 0
src/api/zhu-yuan-yi-ji/medicine-management.js → src/api/medicine-management/index.js

@@ -31,3 +31,19 @@ export function fetchPoisonousAnesthetics(data) {
         data,
     })
 }
+
+export function fetchSubmittedPageNos(data) {
+    return request({
+        url: '/medicineManagement/fetchSubmittedPageNos',
+        method: 'post',
+        data,
+    })
+}
+
+export function fetchMedicinePageDetail(data) {
+    return request({
+        url: '/medicineManagement/fetchMedicinePageDetail',
+        method: 'post',
+        data,
+    })
+}

+ 17 - 2
src/router/modules/dashboard.js

@@ -707,7 +707,6 @@ const route = [
             },
         ],
     },
-
     {
         path: '/shouShuGuanLi',
         component: Layout,
@@ -725,7 +724,23 @@ const route = [
             },
         ],
     },
-
+    {
+        path: '/medicineManagement',
+        component: Layout,
+        meta: {title: '药品管理'},
+        children: [
+            {
+                path: 'pageSubmit',
+                component: createNameComponent(() => import('@/views/medicine-management/MedicinePageSubmit.vue')),
+                meta: {title: '提交药品单'}
+            },
+            {
+                path: 'pageInquiry',
+                component: createNameComponent(() => import('@/views/medicine-management/MedicinePageInquiry.vue')),
+                meta: {title: '药单情况查询'}
+            }
+        ],
+    },
     {
         path: '/utilities',
         component: Layout,

+ 172 - 0
src/views/medicine-management/MedicinePageInquiry.vue

@@ -0,0 +1,172 @@
+<template>
+    <page-layer>
+        <template #header>
+            <el-date-picker
+                    v-model="dateRange"
+                    type="daterange"
+                    :shortcuts="shortcuts"
+                    range-separator="至"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+                    :clearable="false"
+                    size="small"
+                    @change="formatDateRange"
+                    style="width: 200px"
+            ></el-date-picker>&nbsp;&nbsp;
+            <el-input v-model="pageNo" placeholder="药单号" style="width: 145px" clearable></el-input>
+            <el-divider direction="vertical"></el-divider>
+            <el-button type="primary" icon="Search" @click="beginInquiry">查询</el-button>
+            <el-button type="danger" icon="Printer" @click="printPage">打印</el-button>
+        </template>
+        <template #aside>
+            <el-table :data="pageNos" stripe highlight-current-row @row-click="handlePageRowClick">
+                <el-table-column prop="pageNo" label="药单号" width="100"></el-table-column>
+                <el-table-column prop="confirmDate" label="确认时间" width="135"></el-table-column>
+            </el-table>
+        </template>
+        <template #main>
+            <div id="printArea">
+                <table id="pageTable" style="width: 100%">
+                    <thead>
+                    <tr>
+                        <td colspan="7"
+                            style="width: 100%; text-align: center; padding: 16px 0; border: none">
+                            <div style="position: relative">
+                                <span style="font-size: 18px; font-weight: bold">
+                                    医技科室领药单查询
+                                </span>
+                                <div style="position: absolute; top: 0; right: 200px">打印日期:{{today}}</div>
+                            </div>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td colspan="7" style="border: none">
+                            <div style="display: flex; height: 26px">
+                                <div style="width: 23%">确认时间:{{currentPageNo.confirmDate}}</div>
+                                <div style="width: 23%">领药科室:{{userInfo.deptName}}</div>
+                                <div style="width: 23%">药品库房:住院药房</div>
+                                <div style="width: 23%">单号:{{currentPageNo.pageNo}}</div>
+                            </div>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>药品编码</td>
+                        <td>药品名称</td>
+                        <td>规格</td>
+                        <td>请领数量</td>
+                        <td>单价</td>
+                        <td>金额</td>
+                        <td>发药数量</td>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <tr v-for="(item, index) in pageDetails" :key="index">
+                        <td>{{ item.chargeCode }}</td>
+                        <td>{{ item.drugName }}</td>
+                        <td>{{ item.spec }}</td>
+                        <td>{{ item.amount }}</td>
+                        <td>{{ item.price }}</td>
+                        <td>{{ item.chargeFee }}</td>
+                        <td style="color: red">{{ item.amountFy }}</td>
+                    </tr>
+                    <tr>
+                        <td colspan="4" style="border: none">
+                            确认人:{{currentPageNo.confirmId}}
+                        </td>
+                        <td colspan="3" style="border: none">
+                            合计金额:{{currentPageNo.totalCharge || '0.00'}}
+                        </td>
+                    </tr>
+                    </tbody>
+                </table>
+            </div>
+        </template>
+    </page-layer>
+</template>
+
+<script setup>
+import PageLayer from "@/layout/PageLayer.vue";
+import {shortcuts} from "@/data/shortcuts";
+import {getFormatDatetime} from "@/utils/date";
+import {computed} from "vue";
+import store from "@/store";
+import {initLodop, getLodop} from '@/utils/c-lodop'
+import {fetchSubmittedPageNos, fetchMedicinePageDetail} from "@/api/medicine-management/index.js"
+
+const dateRange = $ref([])
+const today = getFormatDatetime(new Date(), 'YYYY-MM-DD')
+const formatDateRange = () => {
+    dateRange[0] = getFormatDatetime(dateRange[0], 'YYYY-MM-DD')
+    dateRange[1] = getFormatDatetime(dateRange[1], 'YYYY-MM-DD')
+}
+
+const userInfo = computed(() => {
+    return store.getters['user/info']
+})
+
+const pageNo = $ref(null)
+const pageNos = ref([])
+const currentPageNo = ref({})
+const pageDetails = ref([])
+
+const beginInquiry = () => {
+    const params = {
+        start: dateRange[0],
+        end: dateRange[1],
+        dept: userInfo.value.deptCode,
+        pageNo: pageNo
+    }
+    fetchSubmittedPageNos(params).then(res => {
+        pageNos.value = res
+    })
+}
+
+const calculatePageTotalCharge = (res) => {
+    let sum = 0.00
+    for (let i = 0; i < res.length; i++) {
+        sum += res[i].chargeFee
+    }
+    currentPageNo.value.totalCharge = sum.toFixed(2)
+}
+
+const handlePageRowClick = (page) => {
+    currentPageNo.value = page
+    fetchMedicinePageDetail(page).then(res => {
+        pageDetails.value = res
+        calculatePageTotalCharge(res)
+    })
+}
+
+const printPage = () => {
+    const styleContent = '<style>#pageTable tr td, #pageTable tr th {border: 1px solid black;text-align: center;font-size: 12px} #pageTable {border-collapse: collapse;}</style>'
+    const strFormHtml = styleContent + '<body>' + document.getElementById('printArea').innerHTML + '</body>'
+    let LODOP = getLodop()
+    LODOP.PRINT_INIT('pagedetail')
+    LODOP.SET_PRINT_PAGESIZE(2, '210mm', '297mm', '')
+    LODOP.SET_PRINT_MODE('RESELECT_PRINTER', true)
+    LODOP.SET_PRINT_MODE('PRINT_PAGE_PERCENT', 'Full-Width')
+    LODOP.ADD_PRINT_TABLE('2mm', '2mm', '292mm', '195mm', strFormHtml)
+    LODOP.SET_SHOW_MODE("LANDSCAPE_DEFROTATED", 1)
+    LODOP.SET_PRINT_STYLE('ItemType', 3)
+    LODOP.ADD_PRINT_TEXT('4mm', '267mm', '20mm', '7mm', '第#页/共&页')
+    LODOP.PREVIEW()
+}
+
+onMounted(() => {
+    dateRange[0] = today
+    dateRange[1] = today
+    initLodop()
+})
+</script>
+
+<style scoped>
+#pageTable tr td, #pageTable tr th {
+    border: 1px solid black;
+    text-align: center;
+    font-size: 12px;
+    padding: 4px 0;
+}
+#pageTable {
+    border-collapse: collapse;
+}
+</style>

+ 1 - 1
src/views/med-tec-mod/MedicineManagement.vue → src/views/medicine-management/MedicinePageSubmit.vue

@@ -155,7 +155,7 @@ import {shortcuts} from '@/data/shortcuts'
 import {getFormatDatetime} from "@/utils/date";
 import {computed} from "vue";
 import store from "@/store";
-import {fetchMedicinePages,submitMedicinePages,fetchUsedMedicines,fetchPoisonousAnesthetics} from '@/api/zhu-yuan-yi-ji/medicine-management.js'
+import {fetchMedicinePages,submitMedicinePages,fetchUsedMedicines,fetchPoisonousAnesthetics} from '@/api/medicine-management/index.js'
 import {ElMessage} from "element-plus";
 import { initLodop, getLodop } from '@/utils/c-lodop'