123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436 |
- <template>
- <el-container style="margin-right: 10px">
- <el-header height="36px" style="margin-top: 8px">
- <el-input
- size="small"
- placeholder="在此输入住院号"
- clearable
- prefix-icon="el-icon-search"
- style="width: 300px"
- @keyup.enter="queryClick"
- @blur="inpatientNo = $event.target.value.trim()"
- v-model="inpatientNo"
- >
- <template #prepend>住院号</template>
- </el-input>
- <el-button style="margin-left: 10px" size="mini" type="primary" @click="queryClick">查询患者信息</el-button>
- <el-divider direction="vertical"></el-divider>
- <el-input
- size="small"
- placeholder="在此输入机制号"
- clearable
- @keyup.enter="querySerialNo"
- prefix-icon="el-icon-search"
- style="width: 300px"
- v-model="serialNo"
- onkeyup="this.value=this.value.replace(/[^\d]/g,'') "
- @blur="serialNo = $event.target.value.trim()"
- >
- <template #prepend>机制号</template>
- </el-input>
- <el-select size="small" v-model="liShiFlag">
- <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" size="mini" type="primary" @click="querySerialNo">查询机制号信息</el-button>
- <el-button style="margin-left: 10px" size="mini" type="warning" @click="huanZheFeiYongDrawer = true">查看患者费用</el-button>
- <el-button style="margin-left: 10px" size="mini" type="success" @click="baoCunClick">保存</el-button>
- </el-header>
- <el-main>
- <div>
- <el-descriptions border title="基本信息">
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-user"></i>
- 患者姓名
- </template>
- {{ huanZheXinXi.name }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-user"></i>
- 住院次数
- </template>
- {{ huanZheXinXi.admissTimes }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-user-solid"></i>
- 性别
- </template>
- {{ cptSex(huanZheXinXi.sex) }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-house"></i>
- 床号
- </template>
- {{ huanZheXinXi.bedNo }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-s-home"></i>
- 病房
- </template>
- {{ huanZheXinXi.wardName }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-date"></i>
- 入院日期
- </template>
- {{ huanZheXinXi.admissDate }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-tickets"></i>
- 身份
- </template>
- {{ huanZheXinXi.responceTypeName }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-coin"></i>
- 总费用
- </template>
- {{ huanZheXinXi.totalCharge }}
- </el-descriptions-item>
- <el-descriptions-item>
- <template #label>
- <i class="el-icon-coin"></i>
- 余额
- </template>
- <span style="color: red">{{ huanZheXinXi.balance }}</span>
- </el-descriptions-item>
- </el-descriptions>
- </div>
- <el-divider></el-divider>
- <div style="width: 100%">
- <div style="float: left; width: 45%">
- <el-table :height="windowHeight" highlight-current-row :data="mzXinXiList" @selection-change="mzSelectChecked" ref="multipleTable">
- <el-table-column label="门诊发票信息">
- <el-table-column label="项目名称" prop="itemName"></el-table-column>
- <el-table-column label="收费编码" prop="chargeCode"></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>
- </el-table>
- <el-tag>合计:{{ mzSum }}</el-tag>
- </div>
- <div style="width: 9%; float: left; margin-left: 4px; text-align: center" :style="{ lineHeight: windowHeight + 'px' }">
- <el-button size="mini" icon="el-icon-right" type="primary"></el-button>
- </div>
- <div style="float: right; width: 45%">
- <el-table :height="windowHeight" stripe :data="zyXinXiList">
- <el-table-column label="住院收费项目">
- <el-table-column label="项目名称" prop="itemName"></el-table-column>
- <el-table-column label="收费编码" prop="chargeCode"></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>
- </el-table>
- <el-tag>合计:{{ zySum }}</el-tag>
- </div>
- </div>
- <el-drawer title="查看患者通过急门诊转入的费用" v-model="huanZheFeiYongDrawer" size="50%">
- <div style="margin-left: 20px">
- <el-input
- size="mini"
- placeholder="住院号"
- clearable
- style="width: 200px"
- @keyup.enter="getZyJiMenZhenZhuangRuFeiYongClick"
- v-model="inpatientNo"
- @blur="inpatientNo = $event.target.value.trim()"
- >
- <template #prepend>住院号</template>
- </el-input>
- <el-divider direction="vertical"></el-divider>
- 项目名称:
- <el-select v-model="chargeCodeMX" placeholder="根据拼音首字母查找" filterable clearable remote size="mini" :remote-method="remoteMethodEntryName">
- <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>
- <span>{{ item.name }}</span>
- </el-option>
- </el-select>
- <el-divider direction="vertical"></el-divider>
- <el-button @click="getZyJiMenZhenZhuangRuFeiYongClick" size="mini" type="primary">查询</el-button>
- <el-table :data="zyDetailChargeList" :height="windowHeight + 140">
- <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="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>
- <el-table-column label="金额" prop="chargeFee"></el-table-column>
- <el-table-column label="数量" prop="chargeAmount"></el-table-column>
- <el-table-column label="操作">
- <template #default="scope">
- <el-popconfirm
- confirm-button-text="删除"
- cancel-button-text="取消"
- icon="el-icon-info"
- iconColor="red"
- title="是否删除该费用"
- @confirm="shanChuFeiYongClick(scope.$index, scope.row)"
- >
- <template #reference>
- <el-button size="mini" type="danger">删除</el-button>
- </template>
- </el-popconfirm>
- </template>
- </el-table-column>
- </el-table>
- <el-pagination
- layout="prev, pager, next, total"
- @current-change="huanZheFeiYongCurrentChange"
- :total="huanZheFeiYongTotal"
- :page-size="huanZheFeiYongPageSize"
- background
- ></el-pagination>
- <el-tag style="margin-left: 7px">合计:{{ huanZheFeiYongZongHe }}</el-tag>
- </div>
- </el-drawer>
- </el-main>
- </el-container>
- </template>
- <script>
- import { ref } from '@vue/reactivity'
- import { baoCunHuanZheZhuYuanFeiYong, getSerialNo, getZyJiMenZhenZhuangRuFeiYong, queryEntryName, queryHuanZhe, shanChuFeiYong } from '@/api/yibao/transfer-in-of-expenses'
- import { cptSex } from '@/utils/computed'
- import store from '@/store'
- import { computed } from 'vue'
- import { ElMessage, ElMessageBox } from 'element-plus'
- import jsCookie from 'js-cookie'
- export default {
- name: 'TransferInOfExpenses',
- setup() {
- const windowSize = store.state.app.windowSize
- const windowHeight = windowSize.h - 280
- //查询条件
- //住院号
- const inpatientNo = ref('')
- //机制号
- const serialNo = ref('')
- //是否查看历史记录
- const liShiFlag = ref(0)
- //收费代码
- const chargeCodeMX = ref('')
- // 住院次数
- const admissTimes = ref('')
- const huanZheXinXi = ref({})
- const mzXinXiList = ref([])
- const zyXinXiList = ref([])
- //查询患者信息
- const queryClick = () => {
- if (!inpatientNo.value) {
- ElMessage({
- type: 'warning',
- message: '请先输入患者住院号',
- showClose: true,
- duration: 2500,
- })
- return
- }
- queryHuanZhe(inpatientNo.value).then((res) => {
- huanZheXinXi.value = res
- admissTimes.value = res.admissTimes
- })
- }
- //查询机制号
- 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
- }
- //门诊发票信息 金额总和
- 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 huanZheFeiYongDrawer = ref(false)
- const HuanZheFeiYongCurrentPage = ref(1)
- const huanZheFeiYongPageSize = ref(10)
- const huanZheFeiYongTotal = ref(0)
- const huanZheFeiYongZongHe = ref(0)
- //住院患者的费用信息
- const zyDetailChargeList = ref([])
- let resInpatientNo = null
- let resChargeCodeMx = null
- //点击查询患者 门急诊转入的费用 在定义两个字段,用来分页的时候就算输入框没值了 也能拿到数据
- 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 (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
- for (let i = 0; mzXinXiList.value.length; i++) {
- if (huanZheXinXi.value.name !== mzXinXiList.value[i].patientName) {
- return ElMessageBox.confirm('', '提示', {
- cancelButtonText: '取消',
- confirmButtonText: '确定',
- type: 'warning',
- message: '门诊病人姓名【' + mzXinXiList.value[i].patientName + '】住院病人姓名【' + huanZheXinXi.value.name + '】不一致,是否继续?',
- })
- .then(() => {
- huanZheXinXi.value.reqExecUnit = jsCookie.get('dept')
- baoCunHuanZheZhuYuanFeiYong(huanZheXinXi.value).then((res) => {
- zyXinXiList.value = []
- mzXinXiList.value = []
- })
- })
- .catch(() => {})
- }
- }
- }
- //项目名称 数组
- const entryNameList = ref([])
- //远程搜索项目名称
- const remoteMethodEntryName = (val) => {
- if (val.length >= 2) {
- queryEntryName(val).then((res) => {
- entryNameList.value = res
- })
- }
- }
- //门诊合计
- 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,
- }
- },
- }
- let chaKanLiShi = [
- { code: 0, name: '不查看历史记录' },
- { code: 1, name: '查看历史记录' },
- ]
- </script>
- <style></style>
|