|
@@ -1,67 +1,258 @@
|
|
|
<template>
|
|
|
-
|
|
|
<div class="layout_container">
|
|
|
<header>
|
|
|
+ <!-- :shortcuts="shortcuts"
|
|
|
+ size="small"
|
|
|
+ style="width: 300px"
|
|
|
+ -->
|
|
|
<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>
|
|
|
+ v-model="dateRange"
|
|
|
+ type="datetimerange"
|
|
|
+ range-separator="至"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ :clearable="false"
|
|
|
+ @change="formatDateRange"
|
|
|
+ ></el-date-picker
|
|
|
+ >
|
|
|
<el-select v-model="medicineType" style="width: 80px">
|
|
|
<el-option value="1" label="全部" key="med-type-1"></el-option>
|
|
|
<el-option value="2" label="毒麻" key="med-type-2"></el-option>
|
|
|
- <el-option value="3" label="非毒麻" key="med-type-3"></el-option>
|
|
|
- </el-select>
|
|
|
- <el-button type="primary" icon="Search" @click="getMedicinePages">检索</el-button>
|
|
|
- <el-button type="success" icon="Upload" @click="uploadMedicinePages">提交药单</el-button>
|
|
|
+ <el-option
|
|
|
+ value="3"
|
|
|
+ label="非毒麻"
|
|
|
+ key="med-type-3"
|
|
|
+ ></el-option> </el-select
|
|
|
+ >
|
|
|
+ <el-button type="primary" icon="Search" @click="getMedicinePages"
|
|
|
+ >检索</el-button
|
|
|
+ >
|
|
|
+ <el-button type="success" icon="Upload" @click="uploadMedicinePages"
|
|
|
+ >提交药单</el-button
|
|
|
+ >
|
|
|
<el-divider direction="vertical"></el-divider>
|
|
|
- <el-button type="primary" icon="FirstAidKit" @click="getUsedMedicines">药品查询</el-button>
|
|
|
- <el-button type="danger" icon="DataLine" @click="getPoisonousAnesthetics">麻、精药品使用查询</el-button>
|
|
|
+ <el-button type="primary" icon="FirstAidKit" @click="getUsedMedicines"
|
|
|
+ >药品查询</el-button
|
|
|
+ >
|
|
|
+ <el-button type="danger" icon="DataLine" @click="getPoisonousAnesthetics"
|
|
|
+ >麻、精药品使用查询</el-button
|
|
|
+ >
|
|
|
</header>
|
|
|
<div class="layout_main">
|
|
|
<div id="normalMedicinePagesArea" style="position: relative">
|
|
|
- <div style="width: 100%; text-align: center; font-size: 18px; font-weight: bold">医技科室领药单</div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 医技科室领药单
|
|
|
+ </div>
|
|
|
<div style="display: flex; margin-top: 12px">
|
|
|
- <div style="width: 50%; text-align: center">统计基准:{{dateRange[0]}} 至 {{dateRange[1]}}</div>
|
|
|
- <div style="width: 30%">领药科室:{{userInfo.deptName}}</div>
|
|
|
+ <div style="width: 50%; text-align: center">
|
|
|
+ 统计基准:{{ dateRange[0] }} 至 {{ dateRange[1] }}
|
|
|
+ </div>
|
|
|
+ <div style="width: 30%">领药科室:{{ userInfo.deptName }}</div>
|
|
|
<div style="width: 30%">药品库房:住院药房</div>
|
|
|
</div>
|
|
|
<div style="position: absolute; top: 55px; left: 2%">
|
|
|
- <el-button plain type="primary" icon="Switch" circle title="反选" @click="switchCheck"></el-button>
|
|
|
+ <el-button
|
|
|
+ plain
|
|
|
+ type="primary"
|
|
|
+ icon="Switch"
|
|
|
+ circle
|
|
|
+ title="反选"
|
|
|
+ @click="switchCheck"
|
|
|
+ ></el-button>
|
|
|
</div>
|
|
|
- <div style="margin-top: 8px; width: 90%; margin-left: 5%; color: black; font-size: 14px">
|
|
|
- <div style="display: flex; width: 100%; height: 28px; overflow-y: scroll">
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">提交标志</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">药品编码</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 30%; text-align: center; border: 1px solid #333">药品名</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 30%; text-align: center; border: 1px solid #333">规格</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">数量</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">单价</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">金额</div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ margin-top: 8px;
|
|
|
+ width: 90%;
|
|
|
+ margin-left: 5%;
|
|
|
+ color: black;
|
|
|
+ font-size: 14px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ style="display: flex; width: 100%; height: 28px; overflow-y: scroll"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 提交标志
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 药品编码
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 30%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 药品名
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 30%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 规格
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 数量
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 单价
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 金额
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div style="height: 530px; overflow-y: scroll; border-bottom: 1px solid #333">
|
|
|
- <div v-for="item in cptMedicines" style="display: flex; width: 100%; text-align: center" :key="item.chargeCode">
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">
|
|
|
- <input type="checkbox" v-model="item.checked">
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 530px;
|
|
|
+ overflow-y: scroll;
|
|
|
+ border-bottom: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ v-for="item in cptMedicines"
|
|
|
+ style="display: flex; width: 100%; text-align: center"
|
|
|
+ :key="item.chargeCode"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <input type="checkbox" v-model="item.checked" />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{ item.chargeCode }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 30%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{ item.drugName }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 30%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{ item.spec }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{ item.amount }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{ item.price }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 26px;
|
|
|
+ line-height: 26px;
|
|
|
+ width: 10%;
|
|
|
+ text-align: center;
|
|
|
+ border: 1px solid #333;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{ item.chargeFee }}
|
|
|
</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">{{item.chargeCode}}</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 30%; text-align: center; border: 1px solid #333">{{item.drugName}}</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 30%; text-align: center; border: 1px solid #333">{{item.spec}}</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">{{item.amount}}</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">{{item.price}}</div>
|
|
|
- <div style="height: 26px; line-height: 26px; width: 10%; text-align: center; border: 1px solid #333">{{item.chargeFee}}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div style="display: flex; margin-top: 10px">
|
|
|
- <div style="width: 50%">总行数:{{cptMedicines.length}}</div>
|
|
|
- <div style="width: 50%; text-align: right">合计金额:{{cptTotalCharge}}</div>
|
|
|
+ <div style="width: 50%">总行数:{{ cptMedicines.length }}</div>
|
|
|
+ <div style="width: 50%; text-align: right">
|
|
|
+ 合计金额:{{ cptTotalCharge }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -69,94 +260,137 @@
|
|
|
</div>
|
|
|
<el-dialog v-model="showUsedMedicines" width="820px" title="药品查询">
|
|
|
<el-table :data="usedMedicines" stripe height="500">
|
|
|
- <el-table-column prop="chargeCode" label="药品编码" width="80"></el-table-column>
|
|
|
- <el-table-column prop="drugName" label="药品名" width="120"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="chargeCode"
|
|
|
+ label="药品编码"
|
|
|
+ width="80"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="drugName"
|
|
|
+ label="药品名"
|
|
|
+ width="120"
|
|
|
+ ></el-table-column>
|
|
|
<el-table-column prop="spec" label="规格" width="100"></el-table-column>
|
|
|
<el-table-column prop="amount" label="数量" width="60"></el-table-column>
|
|
|
<el-table-column prop="price" label="单价" width="60"></el-table-column>
|
|
|
- <el-table-column prop="chargeFee" label="金额" width="60"></el-table-column>
|
|
|
- <el-table-column prop="patName" label="患者姓名" width="80"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="chargeFee"
|
|
|
+ label="金额"
|
|
|
+ width="60"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="patName"
|
|
|
+ label="患者姓名"
|
|
|
+ width="80"
|
|
|
+ ></el-table-column>
|
|
|
<el-table-column prop="patNo" label="住院号" width="80"></el-table-column>
|
|
|
- <el-table-column prop="chargeDate" label="录入时间" width="130"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="chargeDate"
|
|
|
+ label="录入时间"
|
|
|
+ width="130"
|
|
|
+ ></el-table-column>
|
|
|
</el-table>
|
|
|
</el-dialog>
|
|
|
<div class="dialog-no-header">
|
|
|
<el-dialog fullscreen v-model="showUsedPoisonousAnesthetics">
|
|
|
- <div style="position: fixed; top: 10px; right: 60px;">
|
|
|
- <el-button type="primary" icon="Printer" @click="printUsedPoisonousAnesthetics">打印</el-button>
|
|
|
- <el-button type="danger" icon="Close" @click="showUsedPoisonousAnesthetics = false">关闭</el-button>
|
|
|
+ <div style="position: fixed; top: 10px; right: 60px">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="Printer"
|
|
|
+ @click="printUsedPoisonousAnesthetics"
|
|
|
+ >打印</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ icon="Close"
|
|
|
+ @click="showUsedPoisonousAnesthetics = false"
|
|
|
+ >关闭</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
<div id="poisonousAnestheticsArea">
|
|
|
<table id="jmtable" style="width: 100%; color: black">
|
|
|
<thead>
|
|
|
- <tr>
|
|
|
- <td colspan="14" style="border: none;text-align: center; font-size: 18px; font-weight: bold">
|
|
|
- {{userInfo.deptName}}精、麻药品使用登记表
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td colspan="7" style="border: none;text-align: left">
|
|
|
- 统计基准:{{dateRange[0]}} 至 {{dateRange[1]}}
|
|
|
- </td>
|
|
|
- <td colspan="7" style="border: none;text-align: right">
|
|
|
- 打印日期:{{ today }}
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td>时间</td>
|
|
|
- <td>药品名称</td>
|
|
|
- <td>患者姓名</td>
|
|
|
- <td>性别</td>
|
|
|
- <td>身份证号</td>
|
|
|
- <td>住院号</td>
|
|
|
- <td>住院诊断</td>
|
|
|
- <td>药品规格</td>
|
|
|
- <td>数量</td>
|
|
|
- <td>实际用量</td>
|
|
|
- <td>余量处理</td>
|
|
|
- <td>发药人</td>
|
|
|
- <td>复核人</td>
|
|
|
- <td>药品批号</td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td style="border: none"></td>
|
|
|
- </tr>
|
|
|
+ <tr>
|
|
|
+ <td
|
|
|
+ colspan="14"
|
|
|
+ style="
|
|
|
+ border: none;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{ userInfo.deptName }}精、麻药品使用登记表
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td colspan="7" style="border: none; text-align: left">
|
|
|
+ 统计基准:{{ dateRange[0] }} 至 {{ dateRange[1] }}
|
|
|
+ </td>
|
|
|
+ <td colspan="7" style="border: none; text-align: right">
|
|
|
+ 打印日期:{{ today }}
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>时间</td>
|
|
|
+ <td>药品名称</td>
|
|
|
+ <td>患者姓名</td>
|
|
|
+ <td>性别</td>
|
|
|
+ <td>身份证号</td>
|
|
|
+ <td>住院号</td>
|
|
|
+ <td>住院诊断</td>
|
|
|
+ <td>药品规格</td>
|
|
|
+ <td>数量</td>
|
|
|
+ <td>实际用量</td>
|
|
|
+ <td>余量处理</td>
|
|
|
+ <td>发药人</td>
|
|
|
+ <td>复核人</td>
|
|
|
+ <td>药品批号</td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td style="border: none"></td>
|
|
|
+ </tr>
|
|
|
</thead>
|
|
|
<tbody v-for="(val, key) in usedPoisonousAnesthetics">
|
|
|
- <tr v-for="(item, index) in val" :key="'usedPoisonousAnesthetics-' + key + '-' + index">
|
|
|
- <td>{{item.chargeDate}}</td>
|
|
|
- <td>{{item.chargeName}}</td>
|
|
|
- <td>{{item.patName}}</td>
|
|
|
- <td>{{item.patGender}}</td>
|
|
|
- <td>{{item.socialNo}}</td>
|
|
|
- <td>{{item.patNo}}</td>
|
|
|
- <td>{{item.admdiag}}</td>
|
|
|
- <td>{{item.spec}}</td>
|
|
|
- <td>{{item.chargeAmount}}</td>
|
|
|
- <td></td>
|
|
|
- <td></td>
|
|
|
- <td></td>
|
|
|
- <td></td>
|
|
|
- <td>
|
|
|
- <span v-if="index === 0">
|
|
|
- <span v-if="printMode">
|
|
|
- {{medBatchNos[key]}}
|
|
|
- </span>
|
|
|
- <input
|
|
|
+ <tr
|
|
|
+ v-for="(item, index) in val"
|
|
|
+ :key="'usedPoisonousAnesthetics-' + key + '-' + index"
|
|
|
+ >
|
|
|
+ <td>{{ item.chargeDate }}</td>
|
|
|
+ <td>{{ item.chargeName }}</td>
|
|
|
+ <td>{{ item.patName }}</td>
|
|
|
+ <td>{{ item.patGender }}</td>
|
|
|
+ <td>{{ item.socialNo }}</td>
|
|
|
+ <td>{{ item.patNo }}</td>
|
|
|
+ <td>{{ item.admdiag }}</td>
|
|
|
+ <td>{{ item.spec }}</td>
|
|
|
+ <td>{{ item.chargeAmount }}</td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td></td>
|
|
|
+ <td>
|
|
|
+ <span v-if="index === 0">
|
|
|
+ <span v-if="printMode">
|
|
|
+ {{ medBatchNos[key] }}
|
|
|
+ </span>
|
|
|
+ <input
|
|
|
v-else
|
|
|
type="text"
|
|
|
v-model="medBatchNos[key]"
|
|
|
- style="border: none;text-align: center"
|
|
|
- />
|
|
|
- </span>
|
|
|
- <span v-else>{{medBatchNos[key]}}</span>
|
|
|
- </td>
|
|
|
- </tr>
|
|
|
- <tr>
|
|
|
- <td style="border: none" colspan="8"></td>
|
|
|
- <td style="border: none;color: #0a84fd">总计:{{poisonousAnestheticsCounts[key]}}</td>
|
|
|
- <td style="border: none" colspan="5"></td>
|
|
|
- </tr>
|
|
|
+ style="border: none; text-align: center"
|
|
|
+ />
|
|
|
+ </span>
|
|
|
+ <span v-else>{{ medBatchNos[key] }}</span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td style="border: none" colspan="8"></td>
|
|
|
+ <td style="border: none; color: #0a84fd">
|
|
|
+ 总计:{{ poisonousAnestheticsCounts[key] }}
|
|
|
+ </td>
|
|
|
+ <td style="border: none" colspan="5"></td>
|
|
|
+ </tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
@@ -164,148 +398,167 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup>
|
|
|
-import {shortcuts} from '@/data/shortcuts'
|
|
|
-import {getFormatDatetime} from "@/utils/date";
|
|
|
-import {computed} from "vue";
|
|
|
-import {fetchMedicinePages,submitMedicinePages,fetchUsedMedicines,fetchPoisonousAnesthetics} from '@/api/medicine-management/index.js'
|
|
|
-import {ElMessage} from "element-plus";
|
|
|
-import { initLodop, getLodop } from '@/utils/c-lodop'
|
|
|
-import {useUserStore} from "@/pinia/user-store";
|
|
|
+import { shortcuts } from "@/data/shortcuts";
|
|
|
+import { getFormatDatetime } from "@/utils/date";
|
|
|
+import { computed } from "vue";
|
|
|
+import {
|
|
|
+ fetchMedicinePages,
|
|
|
+ submitMedicinePages,
|
|
|
+ fetchUsedMedicines,
|
|
|
+ fetchPoisonousAnesthetics,
|
|
|
+} from "@/api/medicine-management/index.js";
|
|
|
+import { ElMessage } from "element-plus";
|
|
|
+import { initLodop, getLodop } from "@/utils/c-lodop";
|
|
|
+import { useUserStore } from "@/pinia/user-store";
|
|
|
|
|
|
-const poisonousAnestheticsFlag = ['3','4']
|
|
|
+const poisonousAnestheticsFlag = ["3", "4"];
|
|
|
|
|
|
-const dateRange = ref([])
|
|
|
-const medicineType = ref('1')
|
|
|
+const dateRange = ref([]);
|
|
|
+const medicineType = ref("1");
|
|
|
const cptMedicines = computed(() => {
|
|
|
return allMedicines.value.filter(item => {
|
|
|
- if (medicineType.value === '1') {
|
|
|
+ if (medicineType.value === "1") {
|
|
|
return true;
|
|
|
}
|
|
|
- if (medicineType.value === '2') {
|
|
|
- return poisonousAnestheticsFlag.indexOf(item.drugFlag) !== -1
|
|
|
+ if (medicineType.value === "2") {
|
|
|
+ return poisonousAnestheticsFlag.indexOf(item.drugFlag) !== -1;
|
|
|
}
|
|
|
- return poisonousAnestheticsFlag.indexOf(item.drugFlag) === -1
|
|
|
- })
|
|
|
-})
|
|
|
+ return poisonousAnestheticsFlag.indexOf(item.drugFlag) === -1;
|
|
|
+ });
|
|
|
+});
|
|
|
const cptTotalCharge = computed(() => {
|
|
|
- let sum = 0
|
|
|
+ let sum = 0;
|
|
|
cptMedicines.value.forEach(item => {
|
|
|
- sum += item.chargeFee
|
|
|
- })
|
|
|
+ sum += item.chargeFee;
|
|
|
+ });
|
|
|
return sum;
|
|
|
-})
|
|
|
-const allMedicines = ref([])
|
|
|
-const usedMedicines = ref([])
|
|
|
-const showUsedMedicines = ref(false)
|
|
|
-const usedPoisonousAnesthetics = ref({})
|
|
|
-const poisonousAnestheticsCounts = ref({})
|
|
|
-const showUsedPoisonousAnesthetics = ref(false)
|
|
|
-const medBatchNos = ref({})
|
|
|
+});
|
|
|
+const allMedicines = ref([]);
|
|
|
+const usedMedicines = ref([]);
|
|
|
+const showUsedMedicines = ref(false);
|
|
|
+const usedPoisonousAnesthetics = ref({});
|
|
|
+const poisonousAnestheticsCounts = ref({});
|
|
|
+const showUsedPoisonousAnesthetics = ref(false);
|
|
|
+const medBatchNos = ref({});
|
|
|
|
|
|
-const today = getFormatDatetime(new Date(), 'YYYY-MM-DD')
|
|
|
+const today = getFormatDatetime(new Date(), "YYYY-MM-DD HH:MM:SS");
|
|
|
const formatDateRange = () => {
|
|
|
- dateRange.value[0] = getFormatDatetime(dateRange.value[0], 'YYYY-MM-DD')
|
|
|
- dateRange.value[1] = getFormatDatetime(dateRange.value[1], 'YYYY-MM-DD')
|
|
|
-}
|
|
|
-const userInfo = useUserStore().userInfo
|
|
|
+ console.log("dateRange.value1", dateRange.value);
|
|
|
+ dateRange.value[0] = getFormatDatetime(
|
|
|
+ dateRange.value[0],
|
|
|
+ "YYYY-MM-DD HH:MM:SS"
|
|
|
+ );
|
|
|
+ dateRange.value[1] = getFormatDatetime(
|
|
|
+ dateRange.value[1],
|
|
|
+ "YYYY-MM-DD HH:MM:SS"
|
|
|
+ );
|
|
|
+ console.log("dateRange.value2", dateRange.value);
|
|
|
+};
|
|
|
+const userInfo = useUserStore().userInfo;
|
|
|
|
|
|
const getMedicinePages = () => {
|
|
|
const params = {
|
|
|
start: dateRange.value[0],
|
|
|
end: dateRange.value[1],
|
|
|
- dept: userInfo.deptCode
|
|
|
- }
|
|
|
+ dept: userInfo.deptCode,
|
|
|
+ };
|
|
|
+ console.log("getMedicinePages", params);
|
|
|
fetchMedicinePages(params).then(res => {
|
|
|
- allMedicines.value = res
|
|
|
- })
|
|
|
-}
|
|
|
+ allMedicines.value = res;
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
const switchCheck = () => {
|
|
|
cptMedicines.value.forEach(item => {
|
|
|
- item.checked = !item.checked
|
|
|
- })
|
|
|
-}
|
|
|
+ item.checked = !item.checked;
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
const uploadMedicinePages = () => {
|
|
|
const params = {
|
|
|
start: dateRange.value[0],
|
|
|
end: dateRange.value[1],
|
|
|
dept: userInfo.deptCode,
|
|
|
- chargeList: pickedCheckedItem()
|
|
|
- }
|
|
|
+ chargeList: pickedCheckedItem(),
|
|
|
+ };
|
|
|
submitMedicinePages(params).then(res => {
|
|
|
- allMedicines.value = res
|
|
|
+ allMedicines.value = res;
|
|
|
ElMessage({
|
|
|
- message: '提交成功',
|
|
|
- type: 'success',
|
|
|
+ message: "提交成功",
|
|
|
+ type: "success",
|
|
|
duration: 2500,
|
|
|
- showClose: true
|
|
|
- })
|
|
|
- })
|
|
|
-}
|
|
|
+ showClose: true,
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
const pickedCheckedItem = () => {
|
|
|
- let arr = []
|
|
|
- cptMedicines.value.forEach(item => {
|
|
|
- if (item.checked) {
|
|
|
- arr.push(item)
|
|
|
- }
|
|
|
- })
|
|
|
- return arr
|
|
|
-}
|
|
|
+ let arr = [];
|
|
|
+ cptMedicines.value.forEach(item => {
|
|
|
+ if (item.checked) {
|
|
|
+ arr.push(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return arr;
|
|
|
+};
|
|
|
|
|
|
const getUsedMedicines = () => {
|
|
|
const params = {
|
|
|
start: dateRange.value[0],
|
|
|
end: dateRange.value[1],
|
|
|
- dept: userInfo.deptCode
|
|
|
- }
|
|
|
+ dept: userInfo.deptCode,
|
|
|
+ };
|
|
|
fetchUsedMedicines(params).then(res => {
|
|
|
- usedMedicines.value = res
|
|
|
- showUsedMedicines.value = true
|
|
|
- })
|
|
|
-}
|
|
|
+ usedMedicines.value = res;
|
|
|
+ showUsedMedicines.value = true;
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
const getPoisonousAnesthetics = () => {
|
|
|
- printMode.value = false
|
|
|
- medBatchNos.value = {}
|
|
|
+ printMode.value = false;
|
|
|
+ medBatchNos.value = {};
|
|
|
const params = {
|
|
|
start: dateRange.value[0],
|
|
|
end: dateRange.value[1],
|
|
|
- dept: userInfo.deptCode
|
|
|
- }
|
|
|
+ dept: userInfo.deptCode,
|
|
|
+ };
|
|
|
fetchPoisonousAnesthetics(params).then(res => {
|
|
|
- usedPoisonousAnesthetics.value = res.medicines
|
|
|
- poisonousAnestheticsCounts.value = res.amounts
|
|
|
- showUsedPoisonousAnesthetics.value = true
|
|
|
- })
|
|
|
-}
|
|
|
+ usedPoisonousAnesthetics.value = res.medicines;
|
|
|
+ poisonousAnestheticsCounts.value = res.amounts;
|
|
|
+ showUsedPoisonousAnesthetics.value = true;
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
-const printMode = ref(false)
|
|
|
+const printMode = ref(false);
|
|
|
const printUsedPoisonousAnesthetics = () => {
|
|
|
- printMode.value = true
|
|
|
+ printMode.value = true;
|
|
|
setTimeout(() => {
|
|
|
- const styleContent = '<style>#jmtable tr td, #jmtable tr th {border: 1px solid black;text-align: center;font-size: 12px} #jmtable {border-collapse: collapse;}</style>'
|
|
|
- const strFormHtml = styleContent + '<body>' + document.getElementById('poisonousAnestheticsArea').innerHTML + '</body>'
|
|
|
- let LODOP = getLodop()
|
|
|
- LODOP.PRINT_INIT('poisonousAnestheticsArea')
|
|
|
- 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()
|
|
|
- printMode.value = false
|
|
|
- }, 300)
|
|
|
-}
|
|
|
+ const styleContent =
|
|
|
+ "<style>#jmtable tr td, #jmtable tr th {border: 1px solid black;text-align: center;font-size: 12px} #jmtable {border-collapse: collapse;}</style>";
|
|
|
+ const strFormHtml =
|
|
|
+ styleContent +
|
|
|
+ "<body>" +
|
|
|
+ document.getElementById("poisonousAnestheticsArea").innerHTML +
|
|
|
+ "</body>";
|
|
|
+ let LODOP = getLodop();
|
|
|
+ LODOP.PRINT_INIT("poisonousAnestheticsArea");
|
|
|
+ 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();
|
|
|
+ printMode.value = false;
|
|
|
+ }, 300);
|
|
|
+};
|
|
|
|
|
|
onMounted(() => {
|
|
|
- dateRange.value[0] = today
|
|
|
- dateRange.value[1] = today
|
|
|
- initLodop()
|
|
|
-})
|
|
|
+ dateRange.value[0] = today;
|
|
|
+ dateRange.value[1] = today;
|
|
|
+ initLodop();
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
@@ -313,7 +566,8 @@ onMounted(() => {
|
|
|
display: none;
|
|
|
}
|
|
|
|
|
|
-#jmtable tr td, #jmtable tr th {
|
|
|
+#jmtable tr td,
|
|
|
+#jmtable tr th {
|
|
|
border: 1px solid black;
|
|
|
text-align: center;
|
|
|
font-size: 12px;
|