This commit is contained in:
ChenQiuYu 2025-05-14 11:42:42 +08:00
parent 2bc30d1833
commit eeb3c909e3
8 changed files with 84 additions and 32 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,13 +1,12 @@
<template> <template>
<Panel title="收费队列"> <Panel title="收费队列">
<template #tools> <template #tools>
<el-button type="primary" plain size="small" @click="addChargeOrder">新增患者</el-button> <div @click="setDate" class="date-btn">
<el-button type="primary" size="small" plain @click="setDate"> <span>{{ selectedDateStr }}</span>
{{ selectedDateStr }} <el-icon style="margin-left: 21px">
<el-icon class="el-icon--right"> <Calendar/>
<CaretBottom/>
</el-icon> </el-icon>
</el-button> </div>
<el-date-picker <el-date-picker
v-model="selectedDate" v-model="selectedDate"
type="date" type="date"
@ -25,17 +24,20 @@
</span> </span>
</div> </div>
<div class="search"> <div class="search">
<el-input <div class="search-input">
v-model="query.keyword" <el-input
style="height: 100%;width: 100%" v-model="query.keyword"
placeholder="根据姓名搜索" style="height: 100%;width: 100%"
@input="search" placeholder="根据姓名搜索"
/> @input="search"
/>
</div>
<div class="add" @click="addChargeOrder">新增患者</div>
<!-- <el-button type="success" @click="addChargeOrder" size="small">+收费</el-button>--> <!-- <el-button type="success" @click="addChargeOrder" size="small">+收费</el-button>-->
</div> </div>
<div class="list" v-loading="loading"> <div class="list" v-loading="loading">
<el-scrollbar> <el-scrollbar>
<ul > <ul>
<li class="list-item" :class="curItem.id == item.id ? 'active' : ''" <li class="list-item" :class="curItem.id == item.id ? 'active' : ''"
v-for="(item, index) in ChargeQueueList" v-for="(item, index) in ChargeQueueList"
:key="index" @click="clickItem(item)"> :key="index" @click="clickItem(item)">
@ -65,13 +67,13 @@
import {nextTick, onMounted, ref, watch} from "vue"; import {nextTick, onMounted, ref, watch} from "vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {formatListTime, getCurrentDate, getEndOfDay, getToday} from "@/utils/dateUtils.ts"; import {formatListTime, getCurrentDate, getEndOfDay} from "@/utils/dateUtils.ts";
import {CaretBottom} from "@element-plus/icons-vue"; import {Calendar} from "@element-plus/icons-vue";
import {apiConfig} from "@/assets/config/apiConfig.ts"; import {apiConfig} from "@/assets/config/apiConfig.ts";
import Edit from "@/components/registration/Edit.vue"; import Edit from "@/components/registration/Edit.vue";
const curItem = ref<any>({}); const curItem = ref<any>({});
const emit = defineEmits(['clickItem','getStatus']) const emit = defineEmits(['clickItem', 'getStatus'])
const clickItem = (item: any) => { const clickItem = (item: any) => {
curItem.value = item curItem.value = item
emit('clickItem', item, query.value.status); emit('clickItem', item, query.value.status);
@ -105,8 +107,7 @@ const init = async () => {
try { try {
let data: any = await post(apiConfig.RecordGetChargeQueue, {query: query.value}, {catch_error: true}) let data: any = await post(apiConfig.RecordGetChargeQueue, {query: query.value}, {catch_error: true})
ChargeQueueList.value = data.list ChargeQueueList.value = data.list
} } catch {
catch {
ChargeQueueList.value = [] ChargeQueueList.value = []
} finally { } finally {
loading.value = false loading.value = false
@ -136,7 +137,7 @@ const statusList = ref([
]) ])
const tab = (item: any) => { const tab = (item: any) => {
query.value.status = item.value query.value.status = item.value
curItem.value={} curItem.value = {}
emit('getStatus', item.value) emit('getStatus', item.value)
init() init()
} }
@ -199,7 +200,21 @@ const search = (v: any) => {
height: 74px; height: 74px;
width: 100%; width: 100%;
display: flex; display: flex;
margin: 0; .search-input {
flex: 1;
min-width: 0;
}
.add{
width: 128px;
height: 42px;
display: flex;
justify-content: center;
align-items: center;
background: #FFFFFF;
border-radius: 6px;
border: 1px solid #979797;
margin-left: 16px;
}
} }
.list { .list {
@ -315,6 +330,16 @@ const search = (v: any) => {
padding-bottom: 10px; padding-bottom: 10px;
} }
} }
.date-btn {
width: 98px;
height: 32px;
background: #FFFFFF;
border-radius: 6px;
border: 1px solid #EAEAEC;
display: flex;
justify-content: center;
align-items: center;
}
:deep(.el-input--prefix) { :deep(.el-input--prefix) {
visibility: hidden; visibility: hidden;

View File

@ -1,7 +1,7 @@
<template> <template>
<Mask :width="696" :height="409" title="收费" :is-show="show" @close="close" :show-footer="true"> <Mask :width="696" :height="409" title="收费" :is-show="show" @close="close" :show-footer="true">
<template #default> <template #default>
<div class="content"> <div class="content" v-loading="loading">
<div class="btns"> <div class="btns">
<div <div
class="btn" class="btn"
@ -68,7 +68,7 @@ const socialCard = ref<any>({
mdtrtCertNo: null, mdtrtCertNo: null,
payInfo: {} payInfo: {}
}); });
const loading = ref(false);
const show = ref(false) const show = ref(false)
const printReceipt = ref(false); const printReceipt = ref(false);
const payType = ref(null); const payType = ref(null);
@ -110,6 +110,7 @@ const completeSettlement = () => {
socialSettlement(); socialSettlement();
} else { } else {
// //
loading.value = true;
post('charge/completeOrder', {id: retailOrder.value.id, payType: payType.value}).then((res: any) => { post('charge/completeOrder', {id: retailOrder.value.id, payType: payType.value}).then((res: any) => {
orderCompleted() orderCompleted()
}) })
@ -119,6 +120,7 @@ const completeSettlement = () => {
const orderCompleted = () => { const orderCompleted = () => {
loading.value = false;
show.value = false; show.value = false;
ElMessage.success("保存成功") ElMessage.success("保存成功")
emit('orderCompleted', printReceipt.value) emit('orderCompleted', printReceipt.value)
@ -144,6 +146,7 @@ const socialSettlement = () => {
ElMessage.warning("请刷卡") ElMessage.warning("请刷卡")
return; return;
} }
loading.value = true;
const params = { const params = {
mdtrtCertType: socialCard.value.mdtrtCertType, mdtrtCertType: socialCard.value.mdtrtCertType,
mdtrtCertNo: socialCard.value.mdtrtCertNo, mdtrtCertNo: socialCard.value.mdtrtCertNo,
@ -161,6 +164,7 @@ const socialSettlement = () => {
} }
const psnPaymentRef = ref(); const psnPaymentRef = ref();
const openPsnPayment = (payInfo: any, orderInfo: any) => { const openPsnPayment = (payInfo: any, orderInfo: any) => {
loading.value = false;
nextTick(() => { nextTick(() => {
psnPaymentRef.value?.open(payInfo, orderInfo); psnPaymentRef.value?.open(payInfo, orderInfo);
}) })

View File

@ -24,8 +24,8 @@ const openSettlement =()=>{
<div class="footer"> <div class="footer">
<div>总金额<span class="text icon"></span><span class="text">{{ totalAmount || '0' }}</span></div> <div>总金额<span class="text icon"></span><span class="text">{{ totalAmount || '0' }}</span></div>
<div class="btn-group" v-if="status"> <div class="btn-group" v-if="status">
<el-button type="primary" @click="openCheckOut">追溯码</el-button> <span type="primary" @click="openCheckOut">追溯码</span>
<el-button type="primary" @click="openSettlement">收费</el-button> <span type="primary" @click="openSettlement">收费</span>
</div> </div>
</div> </div>
</Panel> </Panel>
@ -49,4 +49,18 @@ const openSettlement =()=>{
color: #FF282E color: #FF282E
} }
} }
.btn-group{
span{
display: inline-block;
width: 119px;
height: 48px;
background: #4D6DE4;
border-radius: 8px;
margin-left: 24px;
color: #fff;
line-height: 48px;
text-align: center;
cursor: pointer;
}
}
</style> </style>

View File

@ -76,7 +76,10 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" v-if="props.status"> <el-table-column label="操作" v-if="props.status">
<template #default="scope"> <template #default="scope">
<el-button type="danger" link @click="delGoods(scope.row)">X</el-button> <el-button type="danger" link @click="delGoods(scope.row)">
<el-icon style="margin-right: 3px"><Delete /></el-icon>
删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -103,6 +106,7 @@ import Panel from "@/components/common/Panel.vue";
import {ref} from "vue"; import {ref} from "vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import {Delete} from "@element-plus/icons-vue";
const props = defineProps({ const props = defineProps({
status: { status: {

View File

@ -47,7 +47,10 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" v-if="props.status"> <el-table-column label="操作" v-if="props.status">
<template #default="scope"> <template #default="scope">
<el-button type="danger" link @click="delService(scope.row)">X</el-button> <el-button type="danger" link @click="delService(scope.row)">
<el-icon style="margin-right: 3px"><Delete /></el-icon>
删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -66,12 +69,13 @@
</Panel> </Panel>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {defineProps, watchEffect, ref} from "vue"; import {defineProps, ref} from "vue";
import SearchInput from "@/components/SearchInput.vue"; import SearchInput from "@/components/SearchInput.vue";
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import chrgitm_lv from "@/assets/config/directory/chrgitmLv.json" import chrgitm_lv from "@/assets/config/directory/chrgitmLv.json"
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus"
import {Delete} from "@element-plus/icons-vue";
const props = defineProps({ const props = defineProps({
status: { status: {

View File

@ -3,7 +3,7 @@
<template #tools> <template #tools>
<div @click="setDate" class="date-btn"> <div @click="setDate" class="date-btn">
<span>{{ selectedDateStr }}</span> <span>{{ selectedDateStr }}</span>
<el-icon style="margin-left: 24px"> <el-icon style="margin-left: 21px">
<Calendar/> <Calendar/>
</el-icon> </el-icon>
</div> </div>
@ -324,12 +324,13 @@ watch(() => selectedDate.value, (newValue, oldValue) => {
.date-btn { .date-btn {
width: 98px; width: 98px;
height: 33px; height: 32px;
background: #FFFFFF;
border-radius: 6px;
border: 1px solid #EAEAEC;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border-radius: 4px;
border: 1px solid #ececee;
} }
:deep(.el-input) { :deep(.el-input) {