Merge remote-tracking branch 'origin/main'

This commit is contained in:
牛子源 2025-05-23 10:25:30 +08:00
commit 937b597a2e
4 changed files with 103 additions and 46 deletions

View File

@ -5,7 +5,7 @@
<div class="btns"> <div class="btns">
<div <div
class="btn" class="btn"
style="cursor: pointer" :class="[!props.disabled && item.type == 1?'disabled':'']"
:style="{ :style="{
backgroundColor: backgroundColor:
selectedIndex === index selectedIndex === index
@ -72,7 +72,7 @@ const socialCard = ref<any>({
const loading = ref(false); 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<any>(null);
const retailOrder = ref<any>(null); const retailOrder = ref<any>(null);
const close = () => { const close = () => {
show.value = false; show.value = false;
@ -80,7 +80,16 @@ const close = () => {
selectedIndex.value = null selectedIndex.value = null
loading.value = false loading.value = false
} }
const props = defineProps({
disabled: {
type: Boolean,
default: false
},
})
const init = async (code: any, psnNo: any) => { const init = async (code: any, psnNo: any) => {
if (props.disabled) {
selectedIndex.value = 0
}
retailOrder.value = await post("charge/getByCode", {code: code}); retailOrder.value = await post("charge/getByCode", {code: code});
if (psnNo != null) { if (psnNo != null) {
let result: any = await post("social/person/getSocialInfoByPsnNo", {psnNo: psnNo}); let result: any = await post("social/person/getSocialInfoByPsnNo", {psnNo: psnNo});
@ -95,6 +104,9 @@ const init = async (code: any, psnNo: any) => {
} }
defineExpose({init}) defineExpose({init})
const changePriceType = (type: any, index: any) => { const changePriceType = (type: any, index: any) => {
if (!props.disabled && type == 1) {
return
}
payType.value = type; payType.value = type;
selectedIndex.value = index selectedIndex.value = index
} }
@ -113,10 +125,13 @@ const completeSettlement = () => {
} else { } else {
// //
loading.value = true; loading.value = true;
post('charge/completeOrder', {id: retailOrder.value.id, payType: payType.value}, {catch_error:true}).then((res: any) => { post('charge/completeOrder', {
id: retailOrder.value.id,
payType: payType.value
}, {catch_error: true}).then((res: any) => {
orderCompleted() orderCompleted()
loading.value = false loading.value = false
}).catch((e)=>{ }).catch((e) => {
loading.value = false loading.value = false
ElMessage.error(e) ElMessage.error(e)
}) })
@ -305,6 +320,8 @@ const btnsList = [
font-size: 16px; font-size: 16px;
color: #333333; color: #333333;
font-style: normal; font-style: normal;
cursor: pointer;
.img { .img {
width: 24px; width: 24px;
@ -316,6 +333,13 @@ const btnsList = [
color: #fff; color: #fff;
} }
} }
.disabled {
cursor: not-allowed;
opacity: 0.6;
background-color: #eee;
color: #999;
}
} }
.pay { .pay {
@ -404,4 +428,6 @@ const btnsList = [
padding: 0 24px; padding: 0 24px;
align-items: center; align-items: center;
} }
</style> </style>

View File

@ -107,8 +107,8 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="费用类型"> <el-descriptions-item label="费用类型">
<el-form-item prop="type"> <el-form-item prop="type">
<el-select v-model="edit_data.type" :disabled="edit_data.status==0"> <el-select v-model="edit_data.type" :disabled="edit_data.status==0||isShowCard">
<el-option label="普通" :value="1"></el-option> <el-option label="自费" :value="1"></el-option>
<el-option label="医保" :value="2"></el-option> <el-option label="医保" :value="2"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -116,30 +116,37 @@
<el-descriptions-item <el-descriptions-item
:span="2" :span="2"
label="时间"> label="时间">
<el-form-item v-if="props.dateName!='预约'" style="width: 100%">
<div>{{ getToday().start }}</div>
</el-form-item> <div style=" display: flex;justify-content: space-between">
<div v-else style="display: flex;width: 100%"> <el-form-item style="flex: 1;min-width: 0" v-if="!isBtnShow&&dateName!='预约'">
<el-form-item style="width: 100%" prop="date"> <div style="width: 100%">现在</div>
<el-date-picker
v-model="edit_data.date"
type="date"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
placeholder="选择日期"
style="width: 50%"
:disabledDate="disabledDate"
/>
<el-time-select
v-model="time"
start="00:00"
step="00:15"
end="23:45"
:min-time="getCurrentTime()"
placeholder="选择时间"
style="width: 50%"
/>
</el-form-item> </el-form-item>
<el-form-item v-else style="flex: 1;min-width: 0" prop="date">
<div style="display: flex">
<el-date-picker
v-model="edit_data.date"
type="date"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
placeholder="选择日期"
style="width: 50%"
:disabledDate="disabledDate"
/>
<el-time-select
v-model="time"
start="00:00"
step="00:15"
end="23:45"
:min-time="getCurrentTime()"
placeholder="选择时间"
style="width: 50%"
/>
</div>
</el-form-item>
<span v-if="dateName!='预约'" class="small-btn" @click="changeBtn">{{
isBtnShow ? '挂号' : '预约'
}}</span>
</div> </div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item <el-descriptions-item
@ -156,6 +163,9 @@
:data="tableData" :data="tableData"
style="width: 100%;flex: 1" style="width: 100%;flex: 1"
v-if="!isShowCard" v-if="!isShowCard"
highlight-current-row
ref="multipleTable"
@current-change="handleCurrentChange"
> >
<el-table-column label="险种类型" prop="insutype"> <el-table-column label="险种类型" prop="insutype">
<template #default="scope"> <template #default="scope">
@ -172,7 +182,6 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</template> </template>
<template #footer> <template #footer>
<div class="bottom"> <div class="bottom">
@ -195,7 +204,7 @@
退出医保 退出医保
</div> </div>
<div class="bottom-right"> <div class="bottom-right">
<span class="default-btn" type="primary" @click="save" :disabled="edit_data.status==0">保存</span> <span class="default-btn" type="primary" @click="save">保存</span>
<span class="default-btn" @click="close" style="margin: 0 24px">取消</span> <span class="default-btn" @click="close" style="margin: 0 24px">取消</span>
<span class="default-btn" v-if="edit_data.status==1" @click="registrationCancel">退号</span> <span class="default-btn" v-if="edit_data.status==1" @click="registrationCancel">退号</span>
</div> </div>
@ -266,9 +275,12 @@ const isShow = ref(false)
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const close = () => { const close = () => {
isShow.value = false isShow.value = false
isBtnShow.value = true
time.value = '' time.value = ''
edit_data.value = { edit_data.value = {
timeList: [], timeList: [],
insutype: '',
appointmentTime: ''
} }
isShowCard.value = true isShowCard.value = true
nextTick(() => { nextTick(() => {
@ -285,22 +297,19 @@ const disabledDate = (date: Date) => {
today.setHours(0, 0, 0, 0); // 00:00:00 today.setHours(0, 0, 0, 0); // 00:00:00
return date < today; // return date < today; //
}; };
const props = defineProps({ const dateName = defineModel()
dateName: {
type: String,
default: '现在'
},
})
const save = () => { const save = () => {
if (props.dateName == '现在') { if (dateName.value == '现在') {
edit_data.value.timeList = [] edit_data.value.timeList = ''
edit_data.value.appointmentTime = ''
} else { } else {
edit_data.value.timeList.push(new Date(edit_data.value.date), time.value) edit_data.value.timeList.push(edit_data.value.date, time.value)
edit_data.value.appointmentTime = edit_data.value.timeList.join(' ')
} }
let data = { let data = {
...edit_data.value, ...edit_data.value,
psnNo: socialCard.value?.data?.baseinfo.psn_no, psnNo: socialCard.value?.data?.baseinfo.psn_no,
insutype: socialCard.value?.data?.insuinfo[0].insutype, insutype: edit_data.value.insutype || socialCard.value?.data?.insuinfo[0].insutype,
insuBalance: socialCard.value?.data?.insuinfo[0].balc, insuBalance: socialCard.value?.data?.insuinfo[0].balc,
} }
@ -362,6 +371,8 @@ const init = (doctorId: any = "", id: any = null, show: any = false) => {
isShow.value = true isShow.value = true
quickShow.value = show quickShow.value = show
edit_data.value.organizationDoctorId = doctorId || "" edit_data.value.organizationDoctorId = doctorId || ""
edit_data.value.type = 1
isBtnShow.value = dateName.value == '现在';
if (id) { if (id) {
post('registration/getById', {id: id}).then((res: any) => { post('registration/getById', {id: id}).then((res: any) => {
edit_data.value = res edit_data.value = res
@ -374,6 +385,7 @@ const init = (doctorId: any = "", id: any = null, show: any = false) => {
} }
const isShowCard = ref<any>(true) const isShowCard = ref<any>(true)
const tableData = ref<any>([]) const tableData = ref<any>([])
const multipleTable = ref<any>()
const socialCardUpdate = (e: any) => { const socialCardUpdate = (e: any) => {
isShowCard.value = false isShowCard.value = false
if (e) { if (e) {
@ -384,6 +396,7 @@ const socialCardUpdate = (e: any) => {
edit_data.value.certNo = e.data.baseinfo.certno edit_data.value.certNo = e.data.baseinfo.certno
edit_data.value.age = Math.floor(e.data.baseinfo.age) edit_data.value.age = Math.floor(e.data.baseinfo.age)
tableData.value = e.data.insuinfo tableData.value = e.data.insuinfo
edit_data.value.type = 2
if (edit_data.value.certNo) { if (edit_data.value.certNo) {
post('vip/vip/list', { post('vip/vip/list', {
keyword: edit_data.value.certNo, keyword: edit_data.value.certNo,
@ -402,7 +415,8 @@ const socialCardUpdate = (e: any) => {
} }
nextTick(() => { nextTick(() => {
if (tableData.value.length > 0) { if (tableData.value.length > 0) {
height.value = 870 height.value = 820
multipleTable.value?.setCurrentRow(tableData.value[0])
} else { } else {
height.value = 570 height.value = 570
} }
@ -448,6 +462,13 @@ const loading = ref(false)
const changeLoading = (e: any) => { const changeLoading = (e: any) => {
loading.value = e loading.value = e
} }
const isBtnShow = ref(true)
const changeBtn = () => {
isBtnShow.value = !isBtnShow.value
}
const handleCurrentChange = (val: any) => {
edit_data.value.insutype = val.insutype
}
defineExpose({init}) defineExpose({init})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@ -534,4 +555,11 @@ defineExpose({init})
:deep(.el-form-item) { :deep(.el-form-item) {
margin-bottom: 2px !important; margin-bottom: 2px !important;
} }
.small-btn {
width: 51px;
height: 32px;
line-height: 32px;
margin-left: 5px;
}
</style> </style>

View File

@ -77,6 +77,7 @@
</div> </div>
<CheckoutDetail ref="checkoutDetailRef" @confirm="saveAndCharge"></CheckoutDetail> <CheckoutDetail ref="checkoutDetailRef" @confirm="saveAndCharge"></CheckoutDetail>
<Settlement <Settlement
:disabled="disabled"
ref="settlementRef" ref="settlementRef"
@orderCompleted="orderCompleted" @orderCompleted="orderCompleted"
@orderCanceled="orderCanceled" @orderCanceled="orderCanceled"
@ -200,6 +201,7 @@ const diagnosisSelect = (list: any) => {
} }
const recordsConsumptionRef = ref<any>("") const recordsConsumptionRef = ref<any>("")
const patientCardRef = ref() const patientCardRef = ref()
const disabled = ref(false)
const clickItem = async (item: any, status: any) => { const clickItem = async (item: any, status: any) => {
statusDisabled.value = status statusDisabled.value = status
formData.value = await post('medical/record/getByDiagnosisCode', {diagnosisCode: item.code}) formData.value = await post('medical/record/getByDiagnosisCode', {diagnosisCode: item.code})
@ -213,7 +215,7 @@ const clickItem = async (item: any, status: any) => {
} }
goodsItem.idCode = goodsItem.idCode ? goodsItem.idCode == "" ? null : goodsItem.idCode.split(",") : null goodsItem.idCode = goodsItem.idCode ? goodsItem.idCode == "" ? null : goodsItem.idCode.split(",") : null
} }
disabled.value = formData.value.patientRegistration.type == 2
getOrderTotalPrice() getOrderTotalPrice()
nextTick(() => { nextTick(() => {
let list = JSON.parse(formData.value.diagnosisMedicalRecord.diagnosisDetail) let list = JSON.parse(formData.value.diagnosisMedicalRecord.diagnosisDetail)
@ -246,7 +248,7 @@ const orderCompleted = (printReceipt: any) => {
type MedTypeKey = keyof typeof medTypeJson; type MedTypeKey = keyof typeof medTypeJson;
const wsStore = useWsStore() const wsStore = useWsStore()
const printReceiptDo = async () => { const printReceiptDo = async () => {
let chargeOrder:any = await post("charge/getOrderByDiagnosisCode", { let chargeOrder: any = await post("charge/getOrderByDiagnosisCode", {
diagnosisCode: formData.value.code, diagnosisCode: formData.value.code,
}) })
if (!chargeOrder) { if (!chargeOrder) {
@ -350,7 +352,7 @@ const refund = async () => {
ElMessage.error("请先选择要退费的订单") ElMessage.error("请先选择要退费的订单")
return return
} }
let chargeOrder:any = await post("charge/getOrderByDiagnosisCode", { let chargeOrder: any = await post("charge/getOrderByDiagnosisCode", {
diagnosisCode: formData.value.code, diagnosisCode: formData.value.code,
}) })
if (!chargeOrder) { if (!chargeOrder) {

View File

@ -18,6 +18,7 @@
<div class="content_list" style="padding: 0 24px"> <div class="content_list" style="padding: 0 24px">
<ul class="role_list"> <ul class="role_list">
<el-scrollbar style="height: 100%"> <el-scrollbar style="height: 100%">
<li :class="{active:isShowNum==-1}" @click="changeRole(null,-1)">全部</li>
<li v-for="(item, index) in roleList" :key="index" <li v-for="(item, index) in roleList" :key="index"
:class="{active:isShowNum==index}" @click="changeRole(item,index)"> :class="{active:isShowNum==index}" @click="changeRole(item,index)">
<span class="name">{{ item.name }}</span> <span class="name">{{ item.name }}</span>
@ -74,7 +75,7 @@
</Panel> </Panel>
</div> </div>
</div> </div>
<Edit :dateName="dateName" ref="editRef" @close="getPatientList"></Edit> <Edit v-model="dateName" ref="editRef" @close="getPatientList"></Edit>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">