|
@@ -8,7 +8,7 @@
|
|
|
<el-button type="primary" @click="weiGuiTuiFeiFenXiDialogOpen(true)">违规费用分析</el-button>
|
|
|
<el-popover placement="left" width="730" trigger="click">
|
|
|
<template #reference>
|
|
|
- <el-button type="warning" icon="CircleClose" plain>错误信息 ({{ errorMessages.length }}) </el-button>
|
|
|
+ <el-button type="warning" icon="CircleClose" plain>错误信息 ({{ errorMessages.length }})</el-button>
|
|
|
</template>
|
|
|
<el-tag type="info">错误信息</el-tag>
|
|
|
<el-divider direction="vertical"></el-divider>
|
|
@@ -26,7 +26,8 @@
|
|
|
</el-tag>
|
|
|
</el-header>
|
|
|
<el-main>
|
|
|
- <el-tag type="info">治疗明细</el-tag><el-tag>合计:¥ {{ fees.xmSum }}</el-tag>
|
|
|
+ <el-tag type="info">治疗明细</el-tag>
|
|
|
+ <el-tag>合计:¥ {{ fees.xmSum }}</el-tag>
|
|
|
<el-table :data="fees.xm" stripe :height="feeTableHeight">
|
|
|
<el-table-column prop="detailSn" label="流水号" width="80"></el-table-column>
|
|
|
<el-table-column prop="chargeCodeMx" label="院内码" width="100"></el-table-column>
|
|
@@ -38,17 +39,18 @@
|
|
|
<el-table-column prop="ybSelfFlag" label="是否报销" width="80"></el-table-column>
|
|
|
</el-table>
|
|
|
<el-pagination
|
|
|
- @size-change="handleXmSizeChange"
|
|
|
- @current-change="handleCurrentXmChange"
|
|
|
- :current-page="page.xmPage"
|
|
|
- :page-sizes="[10, 30, 50, 70, 100, 300]"
|
|
|
- :page-size="page.xmPageSize"
|
|
|
- layout="total, sizes, prev, pager, next"
|
|
|
- :total="fees.xmTotal"
|
|
|
+ @size-change="handleXmSizeChange"
|
|
|
+ @current-change="handleCurrentXmChange"
|
|
|
+ :current-page="page.xmPage"
|
|
|
+ :page-sizes="[10, 30, 50, 70, 100, 300]"
|
|
|
+ :page-size="page.xmPageSize"
|
|
|
+ layout="total, sizes, prev, pager, next"
|
|
|
+ :total="fees.xmTotal"
|
|
|
>
|
|
|
</el-pagination>
|
|
|
<div style="height: 5px"></div>
|
|
|
- <el-tag type="info">药品明细</el-tag><el-tag>合计:¥ {{ fees.ypSum }}</el-tag>
|
|
|
+ <el-tag type="info">药品明细</el-tag>
|
|
|
+ <el-tag>合计:¥ {{ fees.ypSum }}</el-tag>
|
|
|
<el-table :data="fees.yp" stripe :height="feeTableHeight">
|
|
|
<el-table-column prop="detailSn" label="流水号" width="80"></el-table-column>
|
|
|
<el-table-column prop="chargeCodeMx" label="院内码" width="100"></el-table-column>
|
|
@@ -60,13 +62,13 @@
|
|
|
<el-table-column prop="ybSelfFlag" label="是否报销" width="80"></el-table-column>
|
|
|
</el-table>
|
|
|
<el-pagination
|
|
|
- @size-change="handleYpSizeChange"
|
|
|
- @current-change="handleCurrentYpChange"
|
|
|
- :current-page="page.ypPage"
|
|
|
- :page-sizes="[10, 30, 50, 70, 100, 300]"
|
|
|
- :page-size="page.ypPageSize"
|
|
|
- layout="total, sizes, prev, pager, next"
|
|
|
- :total="fees.ypTotal"
|
|
|
+ @size-change="handleYpSizeChange"
|
|
|
+ @current-change="handleCurrentYpChange"
|
|
|
+ :current-page="page.ypPage"
|
|
|
+ :page-sizes="[10, 30, 50, 70, 100, 300]"
|
|
|
+ :page-size="page.ypPageSize"
|
|
|
+ layout="total, sizes, prev, pager, next"
|
|
|
+ :total="fees.ypTotal"
|
|
|
>
|
|
|
</el-pagination>
|
|
|
<div class="m-wrapper" v-show="showProgress">
|
|
@@ -79,7 +81,8 @@
|
|
|
<div style="padding: 10px">
|
|
|
<div style="margin-bottom: 10px">{{ uploadIndexText }} ...</div>
|
|
|
<div style="margin-bottom: 10px" v-show="percentage === 100">上传结束,正在进行费用计算 ...</div>
|
|
|
- <el-progress :text-inside="true" :stroke-width="22" :percentage="percentage" status="success"></el-progress>
|
|
|
+ <el-progress :text-inside="true" :stroke-width="22" :percentage="percentage"
|
|
|
+ status="success"></el-progress>
|
|
|
<div style="height: 5px"></div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -87,28 +90,30 @@
|
|
|
</div>
|
|
|
</el-main>
|
|
|
<el-dialog v-model="weiGuiTuiFeiFenXiDialog" title="违规费用分析" :fullscreen="true">
|
|
|
- <wei-gui-fei-yong-fen-xi :init="weiGuiTuiFeiInit" @open="weiGuiTuiFeiOpenDialog" ref="weiGui" :patient="weiGuiJiBenXinXi"></wei-gui-fei-yong-fen-xi>
|
|
|
+ <wei-gui-fei-yong-fen-xi :init="weiGuiTuiFeiInit" @open="weiGuiTuiFeiOpenDialog" ref="weiGui"
|
|
|
+ :patient="weiGuiJiBenXinXi"></wei-gui-fei-yong-fen-xi>
|
|
|
</el-dialog>
|
|
|
- <MedfeeAnalyse v-if="showFeeDetl" type="unsettled" :mdtrt-id="patient.mdtrtId" @close="showFeeDetl = false" />
|
|
|
+ <MedfeeAnalyse v-if="showFeeDetl" type="unsettled" :mdtrt-id="patient.mdtrtId" @close="showFeeDetl = false"/>
|
|
|
</el-container>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import store from '@/store'
|
|
|
-import { computed, onActivated, onDeactivated, onMounted, reactive, ref, watch } from 'vue'
|
|
|
-import { fetchNotUploadedFees } from '@/api/inpatient/patient'
|
|
|
-import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
|
|
|
-import { nullPatient } from '@/utils/validate'
|
|
|
-import { multipleUpload } from '@/api/inpatient/yibao'
|
|
|
-import { hospitalizationPreSettlement, uploadFeeDetail, revokeUploadFees } from '@/api/medical-insurance/si-inpatient'
|
|
|
-import { uploadInjuryFees, cancelInjuryFee, injuryPrecal } from '@/api/medical-insurance/si-injury'
|
|
|
-import { setCallback } from '@/utils/websocket'
|
|
|
-import { getGreatestRole } from '@/utils/permission'
|
|
|
-import { baseinfo } from '@/data/inpatient'
|
|
|
+import {computed, onActivated, onDeactivated, onMounted, reactive, ref, watch} from 'vue'
|
|
|
+import {fetchNotUploadedFees} from '@/api/inpatient/patient'
|
|
|
+import {ElMessage, ElMessageBox, ElNotification} from 'element-plus'
|
|
|
+import {nullPatient} from '@/utils/validate'
|
|
|
+import {multipleUpload} from '@/api/inpatient/yibao'
|
|
|
+import {hospitalizationPreSettlement, uploadFeeDetail, revokeUploadFees} from '@/api/medical-insurance/si-inpatient'
|
|
|
+import {uploadInjuryFees, cancelInjuryFee, injuryPrecal} from '@/api/medical-insurance/si-injury'
|
|
|
+import {setCallback} from '@/utils/websocket'
|
|
|
+import {getGreatestRole} from '@/utils/permission'
|
|
|
+import {baseinfo} from '@/data/inpatient'
|
|
|
import WeiGuiFeiYongFenXi from '@/components/inpatient/WeiGuiFeiYongFenXi.vue'
|
|
|
import MedfeeAnalyse from '../../../components/medical-insurance/medfee-analyse/Index.vue'
|
|
|
+
|
|
|
export default {
|
|
|
- components: { WeiGuiFeiYongFenXi, MedfeeAnalyse },
|
|
|
+ components: {WeiGuiFeiYongFenXi, MedfeeAnalyse},
|
|
|
setup() {
|
|
|
const feeTableHeight = (store.state.app.windowSize.h - 200) / 2
|
|
|
const injuryMode = computed(() => {
|
|
@@ -166,7 +171,7 @@ export default {
|
|
|
onActivated(() => {
|
|
|
actived.value = true
|
|
|
store.commit('app/setCurrentPageName', 'inHospFeeUpload')
|
|
|
- setCallback(socketCallback)
|
|
|
+ setCallback('feeUpdated', socketCallback)
|
|
|
})
|
|
|
|
|
|
onDeactivated(() => {
|
|
@@ -175,18 +180,18 @@ export default {
|
|
|
})
|
|
|
|
|
|
watch(
|
|
|
- () => patient.value.inpatientNo,
|
|
|
- () => {
|
|
|
- if (actived.value) {
|
|
|
- if (patient.value.inpatientNo) {
|
|
|
- fetchProjectFees()
|
|
|
- fetchMedicineFees()
|
|
|
- weiGuiTuiFeiFenXiDialogOpen(false)
|
|
|
- } else {
|
|
|
- clearFees()
|
|
|
+ () => patient.value.inpatientNo,
|
|
|
+ () => {
|
|
|
+ if (actived.value) {
|
|
|
+ if (patient.value.inpatientNo) {
|
|
|
+ fetchProjectFees()
|
|
|
+ fetchMedicineFees()
|
|
|
+ weiGuiTuiFeiFenXiDialogOpen(false)
|
|
|
+ } else {
|
|
|
+ clearFees()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
)
|
|
|
|
|
|
const errorMessages = ref([])
|
|
@@ -247,23 +252,23 @@ export default {
|
|
|
const sid = store.getters['user/sid']
|
|
|
patient.value.sid = sid
|
|
|
uploadInjuryFees(patient.value)
|
|
|
- .then((res) => {
|
|
|
- fetchProjectFees()
|
|
|
- fetchMedicineFees()
|
|
|
- showProgress.value = false
|
|
|
- percentage.value = 0
|
|
|
- patient.value.chargeYb = res.fundPay
|
|
|
- ElMessageBox.alert(res, '成功', {
|
|
|
- type: 'success',
|
|
|
- confirmButtonText: '确定',
|
|
|
+ .then((res) => {
|
|
|
+ fetchProjectFees()
|
|
|
+ fetchMedicineFees()
|
|
|
+ showProgress.value = false
|
|
|
+ percentage.value = 0
|
|
|
+ patient.value.chargeYb = res.fundPay
|
|
|
+ ElMessageBox.alert(res, '成功', {
|
|
|
+ type: 'success',
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ showProgress.value = false
|
|
|
+ percentage.value = 0
|
|
|
+ fetchProjectFees()
|
|
|
+ fetchMedicineFees()
|
|
|
})
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- showProgress.value = false
|
|
|
- percentage.value = 0
|
|
|
- fetchProjectFees()
|
|
|
- fetchMedicineFees()
|
|
|
- })
|
|
|
} else {
|
|
|
doSingleUpload()
|
|
|
}
|
|
@@ -274,20 +279,20 @@ export default {
|
|
|
item.sid = store.getters['user/sid']
|
|
|
})
|
|
|
multipleUpload(selections.value)
|
|
|
- .then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: '处理完成。',
|
|
|
- type: 'success',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
+ .then((res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: '处理完成。',
|
|
|
+ type: 'success',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ showProgress.value = false
|
|
|
+ percentage.value = 0
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ showProgress.value = false
|
|
|
+ percentage.value = 0
|
|
|
})
|
|
|
- showProgress.value = false
|
|
|
- percentage.value = 0
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- showProgress.value = false
|
|
|
- percentage.value = 0
|
|
|
- })
|
|
|
}
|
|
|
|
|
|
const doSingleUpload = () => {
|
|
@@ -298,23 +303,23 @@ export default {
|
|
|
sid: store.getters['user/sid'],
|
|
|
}
|
|
|
uploadFeeDetail(param)
|
|
|
- .then((res) => {
|
|
|
- fetchProjectFees()
|
|
|
- fetchMedicineFees()
|
|
|
- showProgress.value = false
|
|
|
- percentage.value = 0
|
|
|
- ElMessageBox.alert(res, '成功', {
|
|
|
- type: 'success',
|
|
|
- confirmButtonText: '确定',
|
|
|
+ .then((res) => {
|
|
|
+ fetchProjectFees()
|
|
|
+ fetchMedicineFees()
|
|
|
+ showProgress.value = false
|
|
|
+ percentage.value = 0
|
|
|
+ ElMessageBox.alert(res, '成功', {
|
|
|
+ type: 'success',
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ })
|
|
|
+ store.commit('app/closeJdt')
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ fetchProjectFees()
|
|
|
+ fetchMedicineFees()
|
|
|
+ showProgress.value = false
|
|
|
+ percentage.value = 0
|
|
|
})
|
|
|
- store.commit('app/closeJdt')
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- fetchProjectFees()
|
|
|
- fetchMedicineFees()
|
|
|
- showProgress.value = false
|
|
|
- percentage.value = 0
|
|
|
- })
|
|
|
}
|
|
|
|
|
|
const socketCallback = (data) => {
|
|
@@ -347,32 +352,33 @@ export default {
|
|
|
confirmButtonText: '确定',
|
|
|
cancelButtonText: '放弃',
|
|
|
})
|
|
|
- .then(() => {
|
|
|
- if (injuryMode.value) {
|
|
|
- cancelInjuryFee(patient.value).then(() => {
|
|
|
- ElMessage({
|
|
|
- message: '操作成功。',
|
|
|
- type: 'success',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
+ .then(() => {
|
|
|
+ if (injuryMode.value) {
|
|
|
+ cancelInjuryFee(patient.value).then(() => {
|
|
|
+ ElMessage({
|
|
|
+ message: '操作成功。',
|
|
|
+ type: 'success',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ fetchProjectFees()
|
|
|
+ fetchMedicineFees()
|
|
|
})
|
|
|
- fetchProjectFees()
|
|
|
- fetchMedicineFees()
|
|
|
- })
|
|
|
- } else {
|
|
|
- revokeUploadFees(patient.value).then(() => {
|
|
|
- ElMessage({
|
|
|
- message: '操作成功。',
|
|
|
- type: 'success',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
+ } else {
|
|
|
+ revokeUploadFees(patient.value).then(() => {
|
|
|
+ ElMessage({
|
|
|
+ message: '操作成功。',
|
|
|
+ type: 'success',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ fetchProjectFees()
|
|
|
+ fetchMedicineFees()
|
|
|
})
|
|
|
- fetchProjectFees()
|
|
|
- fetchMedicineFees()
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- .catch(() => {})
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
const showFeeDetl = ref(false)
|
|
@@ -411,8 +417,8 @@ export default {
|
|
|
title: '提示',
|
|
|
dangerouslyUseHTMLString: true,
|
|
|
type: 'success',
|
|
|
- message: `
|
|
|
- 1、如果上传不成功或者费用不一致,那么请医保科取消上传,重新上传费用。<br>
|
|
|
+ message: `
|
|
|
+ 1、如果上传不成功或者费用不一致,那么请医保科取消上传,重新上传费用。<br>
|
|
|
2、退药品的话(长期医嘱撤销就可以了,如果不能撤销提单子)(临嘱的话使用医保入院登记里面的【医嘱退费】,然后护士执行这个条医嘱就可以了)。<br>
|
|
|
3、全部的项目都要用本系统来退费。<br>你们终于可以不用向信息科打电话了 ヾ(✿゚▽゚)ノ`,
|
|
|
})
|
|
@@ -481,11 +487,13 @@ function initPage() {
|
|
|
z-index: 8888;
|
|
|
background-color: rgba(0, 0, 0, 0.6);
|
|
|
}
|
|
|
+
|
|
|
.dj-center-box-wrapper {
|
|
|
position: fixed;
|
|
|
inset: 0px;
|
|
|
text-align: center;
|
|
|
}
|
|
|
+
|
|
|
.dj-center-box-wrapper::after {
|
|
|
content: '';
|
|
|
display: inline-block;
|