|
|
@@ -1,13 +1,12 @@
|
|
|
<template>
|
|
|
<page-layer>
|
|
|
<template #header>
|
|
|
- <el-input v-model="patientId" style="width: 200px; margin-left: 2px" clearable placeholder="请输入">
|
|
|
- <template #prepend>门诊id</template>
|
|
|
+ <el-input v-model="patientId" style="width: 100px" clearable placeholder="门诊ID">
|
|
|
</el-input>
|
|
|
<el-select v-model="medType" style="width: 120px" placeholder="医疗类别">
|
|
|
<el-option v-for="item in medTypes" :key="item.code" :value="item.code" :label="item.name"></el-option>
|
|
|
</el-select>
|
|
|
- <el-select v-model="admdvs" clearable filterable placeholder="参保地区" style="width: 180px">
|
|
|
+ <el-select v-model="admdvs" clearable filterable placeholder="参保地区" style="width: 160px">
|
|
|
<el-option v-for="item in admdvses" :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>
|
|
|
@@ -67,9 +66,7 @@
|
|
|
<div style="display: flex">
|
|
|
<div style="width: 40px">
|
|
|
<el-table ref="timesTable" :data="unPaidReceipts" highlight-current-row @row-click="clickTimes" empty-text="无">
|
|
|
- <el-table-column label="次数" prop="times">
|
|
|
-<!-- <template #default="scope"> 第 {{ scope.row.times }} 次 </template>-->
|
|
|
- </el-table-column>
|
|
|
+ <el-table-column label="次数" prop="times"></el-table-column>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
<div style="width: 260px">
|
|
|
@@ -191,11 +188,47 @@
|
|
|
<el-dialog title="普门诊断补录" v-model="showInputDiags" width="60%" :close-on-click-modal="false" :close-on-press-escape="false">
|
|
|
<outpatient-diagnose-supply :med-type="medType" :mz-visit="mzVisit" @close="showInputDiags = false"></outpatient-diagnose-supply>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog v-model="showMdtrtGrpType" title="跨省患者请选择" width="360px">
|
|
|
+ <div>
|
|
|
+ 就诊人群类型:
|
|
|
+ <el-select v-model="expContent.mdtrtGrpType" style="width: 160px">
|
|
|
+ <el-option v-for="item in mdtrtGrpTypes" :label="item.name" :value="item.code"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 12px">
|
|
|
+ 外伤标志:
|
|
|
+ <el-select v-model="expContent.trumFlag" style="width: 160px">
|
|
|
+ <el-option label="无" value=""></el-option>
|
|
|
+ <el-option label="非外伤" value="0"></el-option>
|
|
|
+ <el-option label="外伤" value="1"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 12px">
|
|
|
+ 涉及第三方标志:
|
|
|
+ <el-select v-model="expContent.relTtpFlag" style="width: 160px">
|
|
|
+ <el-option label="无" value=""></el-option>
|
|
|
+ <el-option label="涉及" value="0"></el-option>
|
|
|
+ <el-option label="不涉及" value="1"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 12px">
|
|
|
+ 门急诊转诊标志:
|
|
|
+ <el-select v-model="expContent.optErReflFlag" style="width: 160px">
|
|
|
+ <el-option label="无" value=""></el-option>
|
|
|
+ <el-option label="急诊" value="1"></el-option>
|
|
|
+ <el-option label="转诊" value="2"></el-option>
|
|
|
+ <el-option label="转诊合并急诊" value="3"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 20px; width: 100%; text-align: right">
|
|
|
+ <el-button @click="afterChooseMdtrtGrpType" type="primary" size="default">确定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</template>
|
|
|
</page-layer>
|
|
|
</template>
|
|
|
|
|
|
-<script>
|
|
|
+<script setup>
|
|
|
import { onMounted, reactive, ref } from 'vue'
|
|
|
import { admdvses } from '@/data'
|
|
|
import {
|
|
|
@@ -211,8 +244,7 @@ import {
|
|
|
outpatientSettlement,
|
|
|
revokeOutpatientSettlement,
|
|
|
} from '@/api/medical-insurance/si-outpatient'
|
|
|
-import { cptInsutype } from '@/utils/computed'
|
|
|
-import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
+import {ElMessage, ElMessageBox, ElSelect} from 'element-plus'
|
|
|
import store from '@/store'
|
|
|
import { obtainBasicPersonInfo, querySpecialChronicDiseasesAccreditation, queryMzMatnDises } from '@/api/medical-insurance/si-query'
|
|
|
import { getMedTypesByFlag } from '@/api/medical-insurance/si-dict'
|
|
|
@@ -221,474 +253,447 @@ import mzSettled from '@/assets/mz-settled.png'
|
|
|
import OutpatientDiagnoseSupply from '@/components/medical-insurance/outpatient-diagnose-supply/Index.vue'
|
|
|
import PageLayer from "@/layout/PageLayer";
|
|
|
|
|
|
-export default {
|
|
|
- components: {
|
|
|
- PageLayer,
|
|
|
- ReadCard,
|
|
|
- OutpatientDiagnoseSupply,
|
|
|
- },
|
|
|
- setup() {
|
|
|
- //todo 完成业务后清除原读卡数据
|
|
|
- const medType = ref(null)
|
|
|
- const admdvs = ref(null)
|
|
|
- const medTypes = ref([])
|
|
|
- const patientId = ref('')
|
|
|
- const readCardBizType = ref('')
|
|
|
- const times = ref(null)
|
|
|
- const windowSize = store.state.app.windowSize
|
|
|
- const receiptBoxStyle = {
|
|
|
- height: windowSize.h - 335 + 'px',
|
|
|
- overflowY: 'auto',
|
|
|
- }
|
|
|
- const unPaidReceipts = ref([])
|
|
|
- const showInsuinfo = ref(false)
|
|
|
- const psnBaseinfo = ref({})
|
|
|
- const mzVisit = ref({})
|
|
|
- const receipts = ref({})
|
|
|
- const orderNos = ref([])
|
|
|
- const currentReceipts = ref([])
|
|
|
- const totalFee = ref(null)
|
|
|
- const timesTable = ref(null)
|
|
|
- const ordersTable = ref(null)
|
|
|
- const currentOrder = ref({})
|
|
|
- const spcChrDiseAccts = ref([])
|
|
|
- const showSpcChrAccts = ref(false)
|
|
|
- const matnDises = ref([])
|
|
|
- const showMatnDises = ref(false)
|
|
|
- const showInputDiags = ref(false)
|
|
|
+const medType = ref(null)
|
|
|
+const admdvs = ref(null)
|
|
|
+const certainAdmdvs = ref('')
|
|
|
+const medTypes = ref([])
|
|
|
+const patientId = ref('')
|
|
|
+const times = ref(null)
|
|
|
+const windowSize = store.state.app.windowSize
|
|
|
+const receiptBoxStyle = {
|
|
|
+ height: windowSize.h - 335 + 'px',
|
|
|
+ overflowY: 'auto',
|
|
|
+}
|
|
|
+const unPaidReceipts = ref([])
|
|
|
+const showInsuinfo = ref(false)
|
|
|
+const psnBaseinfo = ref({})
|
|
|
+const mzVisit = ref({})
|
|
|
+const receipts = ref({})
|
|
|
+const orderNos = ref([])
|
|
|
+const currentReceipts = ref([])
|
|
|
+const totalFee = ref(null)
|
|
|
+const timesTable = ref(null)
|
|
|
+const ordersTable = ref(null)
|
|
|
+const currentOrder = ref({})
|
|
|
+const spcChrDiseAccts = ref([])
|
|
|
+const showSpcChrAccts = ref(false)
|
|
|
+const matnDises = ref([])
|
|
|
+const showMatnDises = ref(false)
|
|
|
+const showInputDiags = ref(false)
|
|
|
|
|
|
- const nullPatientId = () => {
|
|
|
- if (!patientId.value) {
|
|
|
- ElMessage({
|
|
|
- message: '请输入门诊id号!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- return true
|
|
|
- }
|
|
|
- return false
|
|
|
- }
|
|
|
+const showMdtrtGrpType = ref(false)
|
|
|
+const expContent = reactive({
|
|
|
+ mdtrtGrpType: '',
|
|
|
+ trumFlag: '',
|
|
|
+ relTtpFlag: '',
|
|
|
+ optErReflFlag: ''
|
|
|
+})
|
|
|
+const mdtrtGrpTypes = [
|
|
|
+ {code: '', name: '普通患者'},
|
|
|
+ {code: '1', name: '新冠肺炎确诊患者'},
|
|
|
+ {code: '2', name: '其他国家突发公共事件'},
|
|
|
+ {code: '3', name: '新冠肺炎疑似患者'},
|
|
|
+ {code: '4', name: '无症状感染者'},
|
|
|
+]
|
|
|
|
|
|
- const registor = (command) => {
|
|
|
- if (nullPatientId()) {
|
|
|
- return
|
|
|
- }
|
|
|
- if (nullTimes()) {
|
|
|
- return
|
|
|
- }
|
|
|
- const param = {
|
|
|
- patNo: patientId.value,
|
|
|
- medType: medType.value,
|
|
|
- admdvs: admdvs.value,
|
|
|
- times: times.value,
|
|
|
- needSaving: 1,
|
|
|
- }
|
|
|
- if (command === 'execute') {
|
|
|
- if (!medType.value) {
|
|
|
- ElMessage({
|
|
|
- message: '请先选择医疗类别!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- obtainBasicPersonInfo(param).then((res) => {
|
|
|
- times.value = res.times
|
|
|
- psnBaseinfo.value = res
|
|
|
- showInsuinfo.value = true
|
|
|
- })
|
|
|
- } else {
|
|
|
- revokeOutpatientRegistration(param).then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
+const nullPatientId = () => {
|
|
|
+ if (!patientId.value) {
|
|
|
+ ElMessage({
|
|
|
+ message: '请输入门诊id号!',
|
|
|
+ type: 'warning',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|
|
|
|
|
|
- const nullTimes = () => {
|
|
|
- if (!times.value) {
|
|
|
- ElMessage({
|
|
|
- message: '请先获取门诊处方!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- return true
|
|
|
- }
|
|
|
- return false
|
|
|
+const registor = (command) => {
|
|
|
+ if (nullPatientId()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (nullTimes()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const param = {
|
|
|
+ patNo: patientId.value,
|
|
|
+ medType: medType.value,
|
|
|
+ admdvs: admdvs.value,
|
|
|
+ times: times.value,
|
|
|
+ needSaving: 1,
|
|
|
+ }
|
|
|
+ if (command === 'execute') {
|
|
|
+ if (!medType.value) {
|
|
|
+ ElMessage({
|
|
|
+ message: '请先选择医疗类别!',
|
|
|
+ type: 'warning',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ return
|
|
|
}
|
|
|
+ obtainBasicPersonInfo(param).then((res) => {
|
|
|
+ times.value = res.times
|
|
|
+ psnBaseinfo.value = res
|
|
|
+ showInsuinfo.value = true
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ revokeOutpatientRegistration(param).then((res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: res,
|
|
|
+ type: 'success',
|
|
|
+ duration: 2000,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- const receiptsOpts = (command) => {
|
|
|
- if (nullPatientId()) {
|
|
|
- return
|
|
|
- }
|
|
|
- if (command !== 'require') {
|
|
|
- if (nullTimes()) {
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
- const param = {
|
|
|
- patNo: patientId.value,
|
|
|
- times: times.value,
|
|
|
- }
|
|
|
- switch (command) {
|
|
|
- case 'require':
|
|
|
- fetchReceipts(param)
|
|
|
- break
|
|
|
- case 'delete':
|
|
|
- deleteAllMzReceipts(param).then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- fetchReceipts(param)
|
|
|
- })
|
|
|
- break
|
|
|
- case 'upload':
|
|
|
- qrySpcChrDiseAcct(param)
|
|
|
- break
|
|
|
- case 'retract':
|
|
|
- revokeOutpatientFeeDetails(param).then((res) => {
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
- break
|
|
|
- case 'diags':
|
|
|
- showInputDiags.value = true
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
+const nullTimes = () => {
|
|
|
+ if (!times.value) {
|
|
|
+ ElMessage({
|
|
|
+ message: '请先获取门诊处方!',
|
|
|
+ type: 'warning',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|
|
|
|
|
|
- const fetchReceipts = (param) => {
|
|
|
- clearReadCardData()
|
|
|
- getMzReceipts(param)
|
|
|
- .then((res) => {
|
|
|
- unPaidReceipts.value = res
|
|
|
- setTimeout(() => {
|
|
|
- timesTable.value.setCurrentRow(res[0])
|
|
|
- clickTimes(res[0])
|
|
|
- }, 100)
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- unPaidReceipts.value = []
|
|
|
- orderNos.value = []
|
|
|
- currentReceipts.value = []
|
|
|
- })
|
|
|
+const receiptsOpts = (command) => {
|
|
|
+ if (nullPatientId()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (command !== 'require') {
|
|
|
+ if (nullTimes()) {
|
|
|
+ return
|
|
|
}
|
|
|
-
|
|
|
- const markMzFees = () => {
|
|
|
- if (currentReceipts.value.length === 0) {
|
|
|
+ }
|
|
|
+ const param = {
|
|
|
+ patNo: patientId.value,
|
|
|
+ times: times.value,
|
|
|
+ }
|
|
|
+ switch (command) {
|
|
|
+ case 'require':
|
|
|
+ fetchReceipts(param)
|
|
|
+ break
|
|
|
+ case 'delete':
|
|
|
+ deleteAllMzReceipts(param).then((res) => {
|
|
|
ElMessage({
|
|
|
- message: '请先选择要保存的处方!',
|
|
|
- type: 'warning',
|
|
|
- duration: 2500,
|
|
|
+ message: res,
|
|
|
+ type: 'success',
|
|
|
+ duration: 2000,
|
|
|
showClose: true,
|
|
|
})
|
|
|
- return
|
|
|
- }
|
|
|
- ElMessageBox.confirm('是否将选中处方生成医保处方?', '提示', {
|
|
|
- type: 'warning',
|
|
|
- confirmButtonText: '生成',
|
|
|
- cancelButtonText: '取消',
|
|
|
+ fetchReceipts(param)
|
|
|
})
|
|
|
- .then(() => {
|
|
|
- insertSiMzFees(currentReceipts.value).then(() => {
|
|
|
- currentOrder.value.status = true
|
|
|
- ElMessage({
|
|
|
- message: '已成功生成医保处方。',
|
|
|
- type: 'success',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
+ break
|
|
|
+ case 'upload':
|
|
|
+ qrySpcChrDiseAcct(param)
|
|
|
+ break
|
|
|
+ case 'retract':
|
|
|
+ revokeOutpatientFeeDetails(param).then((res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: res,
|
|
|
+ type: 'success',
|
|
|
+ duration: 2000,
|
|
|
+ showClose: true,
|
|
|
})
|
|
|
- .catch(() => {})
|
|
|
- }
|
|
|
+ })
|
|
|
+ break
|
|
|
+ case 'diags':
|
|
|
+ showInputDiags.value = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- const qrySpcChrDiseAcct = (param) => {
|
|
|
- if (medType.value === '51') {
|
|
|
- queryMzMatnDises().then((res) => {
|
|
|
- matnDises.value = res
|
|
|
- showMatnDises.value = true
|
|
|
- })
|
|
|
- } else if (medType.value === '14') {
|
|
|
- querySpecialChronicDiseasesAccreditation(param).then((res) => {
|
|
|
- spcChrDiseAccts.value = res
|
|
|
- showSpcChrAccts.value = true
|
|
|
- })
|
|
|
- } else {
|
|
|
- uploadFees(param)
|
|
|
- }
|
|
|
- }
|
|
|
+const fetchReceipts = (param) => {
|
|
|
+ clearReadCardData()
|
|
|
+ getMzReceipts(param)
|
|
|
+ .then((res) => {
|
|
|
+ unPaidReceipts.value = res
|
|
|
+ setTimeout(() => {
|
|
|
+ timesTable.value.setCurrentRow(res[0])
|
|
|
+ clickTimes(res[0])
|
|
|
+ }, 100)
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ unPaidReceipts.value = []
|
|
|
+ orderNos.value = []
|
|
|
+ currentReceipts.value = []
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- const uploadFees = (row) => {
|
|
|
- if (medType.value === '51') {
|
|
|
- row.patNo = patientId.value
|
|
|
- row.times = times.value
|
|
|
- row.opspDiseCode = row.code
|
|
|
- row.opspDiseName = row.name
|
|
|
- }
|
|
|
- uploadOutpatientFeeDetails(row).then((res) => {
|
|
|
- times.value = res.times
|
|
|
- showSpcChrAccts.value = false
|
|
|
- showMatnDises.value = false
|
|
|
- mzPreSetl()
|
|
|
+const markMzFees = () => {
|
|
|
+ if (currentReceipts.value.length === 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '请先选择要保存的处方!',
|
|
|
+ type: 'warning',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ElMessageBox.confirm('是否将选中处方生成医保处方?', '提示', {
|
|
|
+ type: 'warning',
|
|
|
+ confirmButtonText: '生成',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ insertSiMzFees(currentReceipts.value).then(() => {
|
|
|
+ currentOrder.value.status = true
|
|
|
+ ElMessage({
|
|
|
+ message: '已成功生成医保处方。',
|
|
|
+ type: 'success',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ })
|
|
|
})
|
|
|
- }
|
|
|
+ .catch(() => {})
|
|
|
+}
|
|
|
|
|
|
- const readCardData = reactive({
|
|
|
- mdtrtCertType: null,
|
|
|
- readCardResult: null,
|
|
|
- readCardBizType: null,
|
|
|
+const qrySpcChrDiseAcct = (param) => {
|
|
|
+ if (medType.value === '51') {
|
|
|
+ queryMzMatnDises().then((res) => {
|
|
|
+ matnDises.value = res
|
|
|
+ showMatnDises.value = true
|
|
|
})
|
|
|
+ } else if (medType.value === '14') {
|
|
|
+ querySpecialChronicDiseasesAccreditation(param).then((res) => {
|
|
|
+ spcChrDiseAccts.value = res
|
|
|
+ showSpcChrAccts.value = true
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ uploadFees(param)
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- const clearReadCardData = () => {
|
|
|
- readCardData.mdtrtCertType = null
|
|
|
- readCardData.readCardResult = null
|
|
|
- readCardData.readCardBizType = null
|
|
|
- }
|
|
|
+const uploadFees = (row) => {
|
|
|
+ if (medType.value === '51') {
|
|
|
+ row.patNo = patientId.value
|
|
|
+ row.times = times.value
|
|
|
+ row.opspDiseCode = row.code
|
|
|
+ row.opspDiseName = row.name
|
|
|
+ }
|
|
|
+ uploadOutpatientFeeDetails(row).then((res) => {
|
|
|
+ times.value = res.times
|
|
|
+ showSpcChrAccts.value = false
|
|
|
+ showMatnDises.value = false
|
|
|
+ mzPreSetl()
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- const afterReadCard = (result) => {
|
|
|
- readCardData.mdtrtCertType = result.mdtrtCertType
|
|
|
- readCardData.readCardResult = result.readCardResult
|
|
|
- readCardData.readCardBizType = result.readCardBizType
|
|
|
- }
|
|
|
+const readCardData = reactive({
|
|
|
+ mdtrtCertType: null,
|
|
|
+ readCardResult: null,
|
|
|
+ readCardBizType: null,
|
|
|
+})
|
|
|
|
|
|
- const handleClickInsuinfo = (row) => {
|
|
|
- const param = {
|
|
|
- patNo: patientId.value,
|
|
|
- times: times.value,
|
|
|
- name: mzVisit.value.name,
|
|
|
- insutype: row.insutype,
|
|
|
- medType: medType.value,
|
|
|
- psnType: row.psnType,
|
|
|
- insuplcAdmdvs: row.insuplcAdmdvs,
|
|
|
- empName: row.empName,
|
|
|
- balc: row.balc,
|
|
|
- mdtrtCertType: readCardData.mdtrtCertType,
|
|
|
- readCardResult: readCardData.readCardResult,
|
|
|
- readCardBizType: readCardData.readCardBizType,
|
|
|
- }
|
|
|
- outpatientRegistration(param).then((res) => {
|
|
|
- showInsuinfo.value = false
|
|
|
- clearReadCardData()
|
|
|
- ElMessage({
|
|
|
- message: res,
|
|
|
- type: 'success',
|
|
|
- duration: 2000,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
+const clearReadCardData = () => {
|
|
|
+ readCardData.mdtrtCertType = null
|
|
|
+ readCardData.readCardResult = null
|
|
|
+ readCardData.readCardBizType = null
|
|
|
+}
|
|
|
|
|
|
- const clickOrderNo = (row) => {
|
|
|
- currentOrder.value = row
|
|
|
- currentReceipts.value = receipts.value[row.orderNo]
|
|
|
- totalFee.value = row.totalFee.toFixed(2)
|
|
|
- }
|
|
|
+const afterReadCard = (result) => {
|
|
|
+ readCardData.mdtrtCertType = result.mdtrtCertType
|
|
|
+ readCardData.readCardResult = result.readCardResult
|
|
|
+ readCardData.readCardBizType = result.readCardBizType
|
|
|
+}
|
|
|
|
|
|
- const clickTimes = (row) => {
|
|
|
- mzVisit.value = row.mzVisit
|
|
|
- receipts.value = row.mzReceipts
|
|
|
- orderNos.value = row.orderNos
|
|
|
- times.value = row.times
|
|
|
- currentReceipts.value = []
|
|
|
- setTimeout(() => {
|
|
|
- ordersTable.value.setCurrentRow(orderNos.value[0])
|
|
|
- clickOrderNo(orderNos.value[0])
|
|
|
- }, 100)
|
|
|
- }
|
|
|
+const handleClickInsuinfo = (row) => {
|
|
|
+ certainAdmdvs.value = row.insuplcAdmdvs
|
|
|
+ const param = {
|
|
|
+ patNo: patientId.value,
|
|
|
+ times: times.value,
|
|
|
+ name: mzVisit.value.name,
|
|
|
+ insutype: row.insutype,
|
|
|
+ medType: medType.value,
|
|
|
+ psnType: row.psnType,
|
|
|
+ insuplcAdmdvs: row.insuplcAdmdvs,
|
|
|
+ empName: row.empName,
|
|
|
+ balc: row.balc,
|
|
|
+ mdtrtCertType: readCardData.mdtrtCertType,
|
|
|
+ readCardResult: readCardData.readCardResult,
|
|
|
+ readCardBizType: readCardData.readCardBizType,
|
|
|
+ }
|
|
|
+ outpatientRegistration(param).then((res) => {
|
|
|
+ showInsuinfo.value = false
|
|
|
+ clearReadCardData()
|
|
|
+ ElMessage({
|
|
|
+ message: res,
|
|
|
+ type: 'success',
|
|
|
+ duration: 2000,
|
|
|
+ showClose: true,
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- const colorStatus = (row) => {
|
|
|
- return row.status ? `<span style="color: green">第${row.orderNo}张</span>` : `<span style="color: red">第${row.orderNo}张</span>`
|
|
|
- }
|
|
|
+const clickOrderNo = (row) => {
|
|
|
+ currentOrder.value = row
|
|
|
+ currentReceipts.value = receipts.value[row.orderNo]
|
|
|
+ totalFee.value = row.totalFee.toFixed(2)
|
|
|
+}
|
|
|
|
|
|
- const unmarkMzFees = (row) => {
|
|
|
- ElMessageBox.confirm('是否将选中处方从医保处方中删除?', '提示', {
|
|
|
- type: 'warning',
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- deleteMzReceipt(row).then(() => {
|
|
|
- currentOrder.value.status = false
|
|
|
- ElMessage({
|
|
|
- message: '已成功删除医保处方。',
|
|
|
- type: 'success',
|
|
|
- duration: 2500,
|
|
|
- showClose: true,
|
|
|
- })
|
|
|
- })
|
|
|
- })
|
|
|
- .catch(() => {})
|
|
|
- }
|
|
|
+const clickTimes = (row) => {
|
|
|
+ mzVisit.value = row.mzVisit
|
|
|
+ receipts.value = row.mzReceipts
|
|
|
+ orderNos.value = row.orderNos
|
|
|
+ times.value = row.times
|
|
|
+ currentReceipts.value = []
|
|
|
+ setTimeout(() => {
|
|
|
+ ordersTable.value.setCurrentRow(orderNos.value[0])
|
|
|
+ clickOrderNo(orderNos.value[0])
|
|
|
+ }, 100)
|
|
|
+}
|
|
|
|
|
|
- const settlement = (command) => {
|
|
|
- if (nullPatientId() || nullTimes()) {
|
|
|
- return
|
|
|
- }
|
|
|
- switch (command) {
|
|
|
- case 'preSettlement':
|
|
|
- mzPreSetl()
|
|
|
- break
|
|
|
- case 'realSettlement':
|
|
|
- chooseWhetherUseAcctFlag()
|
|
|
- break
|
|
|
- case 'cancelSettlement':
|
|
|
- revokeMzSettle()
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
+const colorStatus = (row) => {
|
|
|
+ return row.status ? `<span style="color: green">第${row.orderNo}张</span>` : `<span style="color: red">第${row.orderNo}张</span>`
|
|
|
+}
|
|
|
|
|
|
- const mzPreSetl = () => {
|
|
|
- const param = {
|
|
|
- staffId: store.state.user.info.code,
|
|
|
- patNo: patientId.value,
|
|
|
- times: times.value,
|
|
|
- mdtrtCertType: readCardData.mdtrtCertType,
|
|
|
- readCardResult: readCardData.readCardResult,
|
|
|
- readCardBizType: readCardData.readCardBizType,
|
|
|
- }
|
|
|
- outpatientPreSettlement(param).then((res) => {
|
|
|
- const message = '医保处方总费用:' + res.totalCost + ',医保报销金额:' + res.fundPay + '。'
|
|
|
- ElMessageBox.alert(message, '试算成功', {
|
|
|
- type: 'success',
|
|
|
- showCancelButton: false,
|
|
|
- }).then(() => {})
|
|
|
+const unmarkMzFees = (row) => {
|
|
|
+ ElMessageBox.confirm('是否将选中处方从医保处方中删除?', '提示', {
|
|
|
+ type: 'warning',
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ }).then(() => {
|
|
|
+ deleteMzReceipt(row).then(() => {
|
|
|
+ currentOrder.value.status = false
|
|
|
+ ElMessage({
|
|
|
+ message: '已成功删除医保处方。',
|
|
|
+ type: 'success',
|
|
|
+ duration: 2500,
|
|
|
+ showClose: true,
|
|
|
})
|
|
|
- }
|
|
|
+ })
|
|
|
+ }).catch(() => {})
|
|
|
+}
|
|
|
|
|
|
- const chooseWhetherUseAcctFlag = () => {
|
|
|
- ElMessageBox.confirm('是否使用个人账户?', '提示', {
|
|
|
- type: 'warning',
|
|
|
- confirmButtonText: '不使用',
|
|
|
- cancelButtonText: '使用',
|
|
|
- distinguishCancelAndClose: true,
|
|
|
- closeOnClickModal: false,
|
|
|
- closeOnPressEscape: false,
|
|
|
- }).then(() => {
|
|
|
- mzSettle('0')
|
|
|
- }).catch((action) => {
|
|
|
- if (action === 'cancel') {
|
|
|
- mzSettle('1')
|
|
|
- }
|
|
|
- })
|
|
|
+const currentCommand = ref(null)
|
|
|
+const settlement = (command) => {
|
|
|
+ if (nullPatientId() || nullTimes()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (command === 'cancelSettlement') {
|
|
|
+ revokeMzSettle()
|
|
|
+ } else {
|
|
|
+ if (certainAdmdvs.value.startsWith('43')) {
|
|
|
+ command === 'preSettlement' ? mzPreSetl() : chooseWhetherUseAcctFlag()
|
|
|
+ } else {
|
|
|
+ currentCommand.value = command
|
|
|
+ showMdtrtGrpType.value = true
|
|
|
}
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- const mzSettle = (useAcctFlag) => {
|
|
|
- const param = {
|
|
|
- patNo: patientId.value,
|
|
|
- times: times.value,
|
|
|
- acctUsedFlag: useAcctFlag,
|
|
|
- mdtrtCertType: readCardData.mdtrtCertType,
|
|
|
- readCardResult: readCardData.readCardResult,
|
|
|
- readCardBizType: readCardData.readCardBizType,
|
|
|
- }
|
|
|
- outpatientSettlement(param).then((res) => {
|
|
|
- clearReadCardData()
|
|
|
- const message = '医保处方总费用:' + res.totalCost + ',医保报销金额:' + res.fundPay + '。'
|
|
|
- ElMessageBox.alert(message, '结算成功', {
|
|
|
- type: 'success',
|
|
|
- showCancelButton: false,
|
|
|
- }).then(() => {})
|
|
|
- })
|
|
|
- }
|
|
|
+const afterChooseMdtrtGrpType = () => {
|
|
|
+ if (currentCommand.value) {
|
|
|
+ currentCommand.value === 'preSettlement' ? mzPreSetl() : chooseWhetherUseAcctFlag()
|
|
|
+ }
|
|
|
+ showMdtrtGrpType.value = false
|
|
|
+}
|
|
|
|
|
|
- const revokeMzSettle = () => {
|
|
|
- const param = {
|
|
|
- patNo: patientId.value,
|
|
|
- times: times.value,
|
|
|
- }
|
|
|
- revokeOutpatientSettlement(param).then((res) => {
|
|
|
- ElMessageBox.alert('撤销门诊结算成功', '提示', {
|
|
|
- type: 'success',
|
|
|
- showCancelButton: false,
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
+const mzPreSetl = () => {
|
|
|
+ const param = {
|
|
|
+ staffId: store.state.user.info.code,
|
|
|
+ patNo: patientId.value,
|
|
|
+ times: times.value,
|
|
|
+ mdtrtCertType: readCardData.mdtrtCertType,
|
|
|
+ readCardResult: readCardData.readCardResult,
|
|
|
+ readCardBizType: readCardData.readCardBizType,
|
|
|
+ expContent: JSON.stringify(expContent)
|
|
|
+ }
|
|
|
+ outpatientPreSettlement(param).then((res) => {
|
|
|
+ const message = '医保处方总费用:' + res.totalCost + ',医保报销金额:' + res.fundPay + '。'
|
|
|
+ ElMessageBox.alert(message, '试算成功', {
|
|
|
+ type: 'success',
|
|
|
+ showCancelButton: false,
|
|
|
+ }).then(() => {})
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- const clearinfo = () => {
|
|
|
- patientId.value = ''
|
|
|
- times.value = null
|
|
|
- unPaidReceipts.value = []
|
|
|
- psnBaseinfo.value = {}
|
|
|
- mzVisit.value = {}
|
|
|
- receipts.value = {}
|
|
|
- orderNos.value = []
|
|
|
- currentReceipts.value = []
|
|
|
- totalFee.value = null
|
|
|
- timesTable.value = null
|
|
|
- ordersTable.value = null
|
|
|
- currentOrder.value = {}
|
|
|
- spcChrDiseAccts.value = []
|
|
|
+const chooseWhetherUseAcctFlag = () => {
|
|
|
+ ElMessageBox.confirm('是否使用个人账户?', '提示', {
|
|
|
+ type: 'warning',
|
|
|
+ confirmButtonText: '不使用',
|
|
|
+ cancelButtonText: '使用',
|
|
|
+ distinguishCancelAndClose: true,
|
|
|
+ closeOnClickModal: false,
|
|
|
+ closeOnPressEscape: false,
|
|
|
+ }).then(() => {
|
|
|
+ mzSettle('0')
|
|
|
+ }).catch((action) => {
|
|
|
+ if (action === 'cancel') {
|
|
|
+ mzSettle('1')
|
|
|
}
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- const highlightYbCode = (hisCode, ybCode) => {
|
|
|
- if (!hisCode) {
|
|
|
- return ''
|
|
|
- }
|
|
|
- return ybCode ? `<span>${ybCode}</span>` : '<span style="color: red">医师无医保编码</span>'
|
|
|
- }
|
|
|
+const mzSettle = (useAcctFlag) => {
|
|
|
+ const param = {
|
|
|
+ patNo: patientId.value,
|
|
|
+ times: times.value,
|
|
|
+ acctUsedFlag: useAcctFlag,
|
|
|
+ mdtrtCertType: readCardData.mdtrtCertType,
|
|
|
+ readCardResult: readCardData.readCardResult,
|
|
|
+ readCardBizType: readCardData.readCardBizType,
|
|
|
+ expContent: JSON.stringify(expContent)
|
|
|
+ }
|
|
|
+ outpatientSettlement(param).then((res) => {
|
|
|
+ clearReadCardData()
|
|
|
+ const message = '医保处方总费用:' + res.totalCost + ',医保报销金额:' + res.fundPay + '。'
|
|
|
+ ElMessageBox.alert(message, '结算成功', {
|
|
|
+ type: 'success',
|
|
|
+ showCancelButton: false,
|
|
|
+ }).then(() => {})
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- onMounted(() => {
|
|
|
- getMedTypesByFlag('clinic').then((res) => {
|
|
|
- medTypes.value = res
|
|
|
- })
|
|
|
+const revokeMzSettle = () => {
|
|
|
+ const param = {
|
|
|
+ patNo: patientId.value,
|
|
|
+ times: times.value,
|
|
|
+ }
|
|
|
+ revokeOutpatientSettlement(param).then((res) => {
|
|
|
+ ElMessageBox.alert('撤销门诊结算成功', '提示', {
|
|
|
+ type: 'success',
|
|
|
+ showCancelButton: false,
|
|
|
})
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
- return {
|
|
|
- medType,
|
|
|
- medTypes,
|
|
|
- admdvs,
|
|
|
- admdvses,
|
|
|
- patientId,
|
|
|
- readCardBizType,
|
|
|
- cptInsutype,
|
|
|
- receiptBoxStyle,
|
|
|
- showInsuinfo,
|
|
|
- psnBaseinfo,
|
|
|
- mzVisit,
|
|
|
- receipts,
|
|
|
- orderNos,
|
|
|
- currentReceipts,
|
|
|
- totalFee,
|
|
|
- ordersTable,
|
|
|
- timesTable,
|
|
|
- unPaidReceipts,
|
|
|
- spcChrDiseAccts,
|
|
|
- showSpcChrAccts,
|
|
|
- matnDises,
|
|
|
- showMatnDises,
|
|
|
- showInputDiags,
|
|
|
- mzSettled,
|
|
|
- afterReadCard,
|
|
|
- clickTimes,
|
|
|
- colorStatus,
|
|
|
- clickOrderNo,
|
|
|
- handleClickInsuinfo,
|
|
|
- uploadFees,
|
|
|
- clearinfo,
|
|
|
- markMzFees,
|
|
|
- unmarkMzFees,
|
|
|
- registor,
|
|
|
- receiptsOpts,
|
|
|
- settlement,
|
|
|
- highlightYbCode,
|
|
|
- }
|
|
|
- },
|
|
|
+const clearinfo = () => {
|
|
|
+ patientId.value = ''
|
|
|
+ times.value = null
|
|
|
+ unPaidReceipts.value = []
|
|
|
+ psnBaseinfo.value = {}
|
|
|
+ mzVisit.value = {}
|
|
|
+ receipts.value = {}
|
|
|
+ orderNos.value = []
|
|
|
+ currentReceipts.value = []
|
|
|
+ totalFee.value = null
|
|
|
+ timesTable.value = null
|
|
|
+ ordersTable.value = null
|
|
|
+ currentOrder.value = {}
|
|
|
+ spcChrDiseAccts.value = []
|
|
|
}
|
|
|
+
|
|
|
+const highlightYbCode = (hisCode, ybCode) => {
|
|
|
+ if (!hisCode) {
|
|
|
+ return ''
|
|
|
+ }
|
|
|
+ return ybCode ? `<span>${ybCode}</span>` : '<span style="color: red">医师无医保编码</span>'
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ getMedTypesByFlag('clinic').then((res) => {
|
|
|
+ medTypes.value = res
|
|
|
+ })
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|