Compare commits

..

No commits in common. "2bc30d18334fc73a83a600f9aa1ae49dd9437f85" and "8f4576f503d23a3e0e8a6b5b468a5f4ad2e0fffd" have entirely different histories.

8 changed files with 151 additions and 265 deletions

View File

@ -64,24 +64,4 @@ defineExpose({getImageUrl})
height: 178px; height: 178px;
display: block; display: block;
} }
.avatar-uploader .el-upload {
border: 1px dashed var(--el-border-color);
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
transition: var(--el-transition-duration-fast);
}
.avatar-uploader .el-upload:hover {
border-color: var(--el-color-primary);
}
.el-icon.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
text-align: center;
}
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<Panel title="收费队列"> <Panel title="收费队列">
<template #tools> <template #tools>
<el-button type="primary" plain size="small" @click="addChargeOrder">新增患者</el-button> <el-button type="primary" plain size="small">新增患者</el-button>
<el-button type="primary" size="small" plain @click="setDate"> <el-button type="primary" size="small" plain @click="setDate">
{{ selectedDateStr }} {{ selectedDateStr }}
<el-icon class="el-icon--right"> <el-icon class="el-icon--right">
@ -59,16 +59,15 @@
</div> </div>
</template> </template>
</Panel> </Panel>
<Edit ref="editRef" @close="init"></Edit>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {nextTick, onMounted, ref, watch} from "vue"; import {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, getToday} from "@/utils/dateUtils.ts";
import {CaretBottom} from "@element-plus/icons-vue"; import {CaretBottom} 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";
const curItem = ref<any>({}); const curItem = ref<any>({});
const emit = defineEmits(['clickItem','getStatus']) const emit = defineEmits(['clickItem','getStatus'])
@ -79,11 +78,17 @@ const clickItem = (item: any) => {
const loading = ref(false) const loading = ref(false)
const ChargeQueueList = ref<any>([]); const ChargeQueueList = ref<any>([]);
const editRef = ref()
const addChargeOrder = () => { const addChargeOrder = () => {
nextTick(() => { const newOrder = {
editRef.value?.init(null, null) id: -1,
}) patientName: "匿名患者",
payType: -1,
}
if (ChargeQueueList.value[0]?.id == -1) {
return
}
ChargeQueueList.value.unshift(newOrder)
clickFirst()
} }
const clickFirst = () => { const clickFirst = () => {
clickItem(ChargeQueueList.value[0]) clickItem(ChargeQueueList.value[0])
@ -184,6 +189,7 @@ watch(() => selectedDate.value, (newValue, oldValue) => {
init() init()
}) })
const search = (v: any) => { const search = (v: any) => {
console.log(v)
query.value.keyword = v query.value.keyword = v
init() init()
} }

View File

@ -1,75 +1,41 @@
<template> <template>
<Mask v-if="!socialPayInfo?.setlinfo.psn_cash_pay" :is-show="show" :width="348" :height="377" title="结算信息" <Mask :is-show="show" :width=500 :height="500" title="个人现金部分" @close="show=false" :show-footer="true">
@close="close" :show-footer="true"> <div class="container-wrapper">
<div class="container" style="padding: 24px;height: 100%"> <div class="container">
<div <div>
style="background: #F9FAFC;height: 100%;padding: 24px;display: flex;flex-direction: column;justify-content: space-between"> 总金额{{ socialPayInfo.setlinfo.medfee_sumamt }}<br>
<div>总金额{{ socialPayInfo.setlinfo.medfee_sumamt }}</div> 基金支付金额{{ socialPayInfo.setlinfo.fund_pay_sumamt }}<br>
<div>基金支付金额{{ socialPayInfo.setlinfo.fund_pay_sumamt }}</div> 个人医保支付金额{{ socialPayInfo.setlinfo.acct_pay }}<br>
<div> 个人医保支付金额{{ socialPayInfo.setlinfo.acct_pay }}</div> 个人现金支付金额{{ socialPayInfo.setlinfo.psn_cash_pay }}<br>
<div style="color: #ff0000"> 个人现金支付金额{{ socialPayInfo.setlinfo.psn_cash_pay }}</div>
</div>
</div>
<template #footer>
<div class="bottom">
<div class="btn">
<span @click="cecalOrder">取消支付</span>
<span @click="completeSettlement">完成订单</span>
</div> </div>
</div>
</template>
</Mask>
<Mask v-else :is-show="show" :width="633" :height="401" title="结算信息" @close="show=false" :show-footer="true">
<div class="container" style="width:100%;height: 100%;display: flex;padding: 24px">
<div
style="width:300px;background: #F9FAFC;height: 100%;padding: 24px;margin-right:24px;display: flex;flex-direction: column;justify-content: space-between">
<div>总金额{{ socialPayInfo.setlinfo.medfee_sumamt }}</div>
<div>基金支付金额{{ socialPayInfo.setlinfo.fund_pay_sumamt }}</div>
<div> 个人医保支付金额{{ socialPayInfo.setlinfo.acct_pay }}</div>
<div style="color: #ff0000"> 个人现金支付金额{{ socialPayInfo.setlinfo.psn_cash_pay }}</div>
</div>
<div style="flex:1;height: 100%">
<div class="price-type" v-if="socialPayInfo.setlinfo.psn_cash_pay>0"> <div class="price-type" v-if="socialPayInfo.setlinfo.psn_cash_pay>0">
<div <div
class="btn" class="price-type-item"
:style="{ :class="['btn',payType==item.type?'active':'']"
backgroundColor: v-for="(item,index) in priceBtnListNoSocial"
selectedIndex == index @click="changePriceType(item.type)"
? item.activeBackgroundColor
: hoverIndex == index
? item.activeBackgroundColor
: item.backgrountColor,
}"
v-for="(item, index) in btnsList"
:key="index"
@click="changePriceType(item.type,index)"
@mouseover="hoverIndex = index"
@mouseleave="hoverIndex = null"
> >
<img <div class="image" :style="{'background-color':item.color}">
class="image" <img style="width: 16px;height: 16px;" :src="item.img" alt=""/>
:src="selectedIndex == index || hoverIndex == index ? item.imgActive : item.img" </div>
alt="" <span>{{ item.name }}</span>
srcset=""
style="margin-right: 4px"
/>
<span class="pay-left-text" :style="{color: selectedIndex==index?'#fff':''}">{{ item.name }}</span>
</div> </div>
<el-input v-model="cash" placeholder="请输入收到现金的数量" style="height: 100%"></el-input> <el-input v-model="cash" placeholder="请输入收到现金的数量"></el-input>
</div> </div>
</div> </div>
</div> </div>
<template #footer> <template #footer>
<div class="bottom"> <div class="bottom">
<div class="btn"> <el-button type="primary" @click="completeSettlement">完成订单</el-button>
<span @click="cecalOrder">取消支付</span> <el-button @click="cecalOrder">取消订单</el-button>
<span @click="completeSettlement">完成订单</span>
</div>
</div> </div>
</template> </template>
</Mask> </Mask>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import Mask from "@/components/common/Mask.vue"; import Mask from "@/components/common/Mask.vue";
import {nextTick, ref} from "vue"; import {nextTick, ref} from "vue";
import {priceBtnListNoSocial} from "@/assets/config/constants.ts"; import {priceBtnListNoSocial} from "@/assets/config/constants.ts";
@ -80,9 +46,7 @@ import {ElMessage, ElMessageBox} from "element-plus";
const socialPayInfo = ref<any>(null) const socialPayInfo = ref<any>(null)
const payType = ref(null) const payType = ref(null)
const selectedIndex = ref(null) const changePriceType = (type: any) => {
const changePriceType = (type: any, index: any) => {
selectedIndex.value = index
payType.value = type; payType.value = type;
} }
const orderInfo = ref<any>(null) const orderInfo = ref<any>(null)
@ -117,25 +81,22 @@ const completeSettlement = () => {
const cecalOrder = () => { const cecalOrder = () => {
// ElMessageBox.confirm( ElMessageBox.confirm(
// ``, `取消后不能恢复,是否确定取消当前订单?`,
// 'Warning', 'Warning',
// { {
// confirmButtonText: '', confirmButtonText: '确认取消',
// cancelButtonText: '', cancelButtonText: '取消',
// type: 'warning', type: 'warning',
// } }
// ).then(() => { ).then(() => {
// post("retail/cancelOrder", {orderId: orderInfo.value.orderId}).then((res: any) => { post("retail/cancelOrder", {orderId: orderInfo.value.orderId}).then((res: any) => {
// show.value = false; show.value = false;
// emit('orderCancel') emit('orderCancel')
// }) })
// }) })
close()
}
const close=() => {
show.value = false
cash.value =0
} }
defineExpose({open}) defineExpose({open})
@ -152,71 +113,44 @@ const orderCompleted = () => {
const orderCanceled = () => { const orderCanceled = () => {
show.value = false; show.value = false;
} }
const hoverIndex = ref<any>(null)
const btnsList = [
{
type: 1,
name: '微信支付',
backgrountColor: '#ecf8fe',
activeBackgroundColor: '#80cfdb',
img: '/static/images/slices/2.png',
imgActive: '/static/images/slices/2-active.png',
},
{
type: 2,
name: '支付宝',
backgrountColor: '#fff5ec',
activeBackgroundColor: '#fdb376',
img: '/static/images/slices/3.png',
imgActive: '/static/images/slices/3-active.png',
},
{
type: 3,
name: '现金支付',
backgrountColor: '#ffeeee',
activeBackgroundColor: '#ff8686',
img: '/static/images/slices/4.png',
imgActive: '/static/images/slices/4-active.png',
},
{
type: 4,
name: '其他支付',
backgrountColor: '#e5f9ff',
activeBackgroundColor: '#30e3ca',
img: '/static/images/slices/5.png',
imgActive: '/static/images/slices/5-active.png',
},
]
</script>
</script>
<style scoped lang="scss"> <style scoped lang="scss">
.price-type { .price-type {
display: flex; display: flex;
margin-top: 20px;
justify-content: space-between; justify-content: space-between;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
.btn { .btn {
width: 124px; height: 45px;
height: 46px; width: 95px;
background: #ECF8FE; font-size: 14px;
border-radius: 8px; border-radius: 10px;
display: flex; display: flex;
align-items: center; background: #efecec;
margin-bottom: 10px;
justify-content: center; justify-content: center;
align-items: center;
padding: 10px;
cursor: pointer; cursor: pointer;
&:nth-child(3) {
margin: 17px 0;
}
&:nth-child(4) {
margin: 17px 0;
}
.image { .image {
width: 24px; width: 16px;
height: 24px; height: 16px;
margin-right: 3px;
border-radius: 23px;
background-color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
}
&:hover {
//color: #fff;
//background-color: #409EFF;
border: 1px solid #409EFF;
} }
} }
@ -226,36 +160,11 @@ const btnsList = [
} }
} }
.bottom{
.bottom {
height: 100%; height: 100%;
display: flex; display: flex;
justify-content: flex-end; justify-content: space-between;
align-items: center; align-items: center;
padding: 0 24px; padding: 0 24px;
.btn {
span {
display: inline-block;
width: 120px;
height: 48px;
text-align: center;
line-height: 48px;
border-radius: 8px;
border: 1px solid #D8D8D8;
margin-left: 21px;
cursor: pointer;
&:nth-child(2) {
background: #4D6DE4;
color: #fff;
}
}
}
}
:deep(.el-input__inner) {
height: 68px;
font-size: 22px;
} }
</style> </style>

View File

@ -118,6 +118,7 @@
size="small" size="small"
@change="checkProductionDate(scope.row)" @change="checkProductionDate(scope.row)"
style="width: 100px;" style="width: 100px;"
@input="inputProductionDate(scope.row)"
/> />
</template> </template>
</el-table-column> </el-table-column>
@ -213,6 +214,12 @@ const checkProductionDate = (row: any) => {
} }
return true; return true;
}; };
const inputProductionDate= (row: any) => {
console.log(row)
if (row.productionDate && row.expiryDate) {
checkExpiryDate(row);
}
}
const checkExpiryDate = (row: any) => { const checkExpiryDate = (row: any) => {
if (!row.expiryDate) { if (!row.expiryDate) {
ElMessage.error('有效期不能为空'); ElMessage.error('有效期不能为空');

View File

@ -1,12 +1,12 @@
<template> <template>
<Panel :title="'就诊队列'" style="height: 100%"> <Panel :title="'就诊队列'" style="height: 100%">
<template #tools> <template #tools>
<div @click="setDate" class="date-btn"> <el-button type="primary" plain @click="setDate">
<span>{{ selectedDateStr }}</span> {{ selectedDateStr }}
<el-icon style="margin-left: 24px"> <el-icon class="el-icon--right">
<Calendar/> <CaretBottom/>
</el-icon> </el-icon>
</div> </el-button>
<el-date-picker <el-date-picker
v-model="selectedDate" v-model="selectedDate"
type="date" type="date"
@ -23,7 +23,7 @@
</div> </div>
<div class="search"> <div class="search">
<img src="/static/images/outpatient/search.png" class="search-icon" alt="搜索图标"> <img src="/static/images/outpatient/search.png" class="search-icon" alt="搜索图标">
<input class="search-input" v-model="search" placeholder="搜索门诊单" style="font-size: 16px"> <input class="search-input" v-model="search" placeholder="搜索门诊单" style="font-size: 16px" >
</div> </div>
<div class="list"> <div class="list">
<ul style="height: 100%"> <ul style="height: 100%">
@ -57,7 +57,7 @@ import {post} from "@/utils/request.ts";
import {formatListTime, getToday, getThisMonth, getCurrentDate, getEndOfDay} from "@/utils/dateUtils.ts"; import {formatListTime, getToday, getThisMonth, getCurrentDate, getEndOfDay} from "@/utils/dateUtils.ts";
import {apiConfig} from "@/assets/config/apiConfig.ts"; import {apiConfig} from "@/assets/config/apiConfig.ts";
import {ElMessageBox} from "element-plus"; import {ElMessageBox} from "element-plus";
import {Calendar} from '@element-plus/icons-vue' import {CaretBottom} from '@element-plus/icons-vue'
const curStatus = ref(1) const curStatus = ref(1)
const search = ref('') const search = ref('')
@ -118,7 +118,7 @@ const init = async () => {
list.value = data.list list.value = data.list
if (itemId.value != null) { if (itemId.value != null) {
list.value.forEach((item: any, index: any) => { list.value.forEach((item: any, index: any) => {
if (item.id == itemId.value && curStatus.value == 2) { if (item.id == itemId.value&&curStatus.value == 2) {
clickLi(item, false) clickLi(item, false)
} }
}) })
@ -205,7 +205,6 @@ watch(() => selectedDate.value, (newValue, oldValue) => {
}) })
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.tabs { .tabs {
height: 27px; height: 27px;
border-bottom: 1px solid #EAEAEC; border-bottom: 1px solid #EAEAEC;
@ -322,16 +321,6 @@ watch(() => selectedDate.value, (newValue, oldValue) => {
} }
.date-btn {
width: 98px;
height: 33px;
display: flex;
justify-content: center;
align-items: center;
border-radius: 4px;
border: 1px solid #ececee;
}
:deep(.el-input) { :deep(.el-input) {
visibility: hidden; visibility: hidden;
width: 0; width: 0;
@ -340,5 +329,4 @@ watch(() => selectedDate.value, (newValue, oldValue) => {
right: 0; right: 0;
top: 50px; top: 50px;
} }
</style> </style>

View File

@ -49,6 +49,10 @@
end-placeholder="结束时间" end-placeholder="结束时间"
/> />
</div> </div>
<div class="btn">
<el-button @click="reset">重置</el-button>
<el-button type="primary" @click="getPatientList">搜索</el-button>
</div>
</div> </div>
<div class="middle"> <div class="middle">
<List :patientList="patientList" @rowClick="rowClick"></List> <List :patientList="patientList" @rowClick="rowClick"></List>

View File

@ -3,66 +3,57 @@
<Panel title="基础信息"> <Panel title="基础信息">
<div class="form"> <div class="form">
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="auto" <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="auto"
class="demo-ruleForm" status-icon label-position="top"> class="demo-ruleForm" status-icon>
<el-descriptions <el-row>
direction="vertical" <el-col :span="8">
:column="3" <el-form-item label="机构名称" prop="common_name">
:label-width="100"
:label-position="'top'"
:border="false"
style="width: 100%"
>
<el-descriptions-item label="机构名称">
<el-form-item prop="common_name">
<el-input v-model="ruleForm.common_name"/> <el-input v-model="ruleForm.common_name"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="机构简称"> <el-col :span="8">
<el-form-item> <el-form-item label="机构简称" prop="common_sortName">
<el-input v-model="ruleForm.common_sortName" style="margin: 0 24px"/> <el-input v-model="ruleForm.common_sortName"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="定点机构编码"> <el-col :span="8">
<el-form-item prop="social_fixmedinsCode"> <el-form-item label="定点机构编码" prop="social_fixmedinsCode">
<el-input v-model="ruleForm.social_fixmedinsCode"/> <el-input v-model="ruleForm.social_fixmedinsCode"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="定点机构名称"> </el-row>
<el-form-item prop="social_fixmedinsName"> <el-row>
<el-col :span="8">
<el-form-item label="定点机构名称" prop="social_fixmedinsName">
<el-input v-model="ruleForm.social_fixmedinsName"/> <el-input v-model="ruleForm.social_fixmedinsName"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="就医区域划分"> <el-col :span="8">
<el-form-item prop="social_mdtrtareaAdmvs"> <el-form-item label="就医区域划分" prop="social_mdtrtareaAdmvs">
<el-input v-model="ruleForm.social_mdtrtareaAdmvs" style="margin: 0 24px"/> <el-input v-model="ruleForm.social_mdtrtareaAdmvs"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="医保接口"> <el-col :span="8">
<el-form-item prop="social_url"> <el-form-item label="医保接口" prop="social_url">
<el-input v-model="ruleForm.social_url"/> <el-input v-model="ruleForm.social_url"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="电子凭证接口"> </el-row>
<el-form-item prop="social_certUrl"> <el-row>
<el-col :span="8">
<el-form-item label="电子凭证接口" prop="social_certUrl">
<el-input v-model="ruleForm.social_certUrl"/> <el-input v-model="ruleForm.social_certUrl"/>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item <el-col :span="8">
:rowspan="2" <el-form-item label="上传logo">
label="logo上传"> <UpLoad v-model="uploadURL" ref="uploadRef" @uploadSuccess="(url)=>{ruleForm.logourl=url}"></UpLoad>
<el-form-item>
<UpLoad v-model="uploadURL" ref="uploadRef" @uploadSuccess="(url)=>{ruleForm.logourl=url}" style="margin-left: 24px"></UpLoad>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="数字签名"> </el-row>
<el-form-item prop="social_cainfo">
<el-input v-model="ruleForm.social_cainfo" style="margin:0 24px"/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-row> <el-row>
<el-form-item label="数字签名" prop="social_cainfo">
<el-input v-model="ruleForm.social_cainfo" type="textarea" :rows="5"/>
</el-form-item>
</el-row> </el-row>
</el-form> </el-form>
</div> </div>
@ -152,8 +143,4 @@ const uploadURL = ref<any>()
width: 100%; width: 100%;
padding: 0 24px; padding: 0 24px;
} }
:deep(.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label) {
padding-left: 24px;
}
</style> </style>

View File

@ -26,23 +26,28 @@
<div class="table"> <div class="table">
<el-table :data="tableData" style="width: 100%" @row-click="rowClick"> <el-table :data="tableData" style="width: 100%" @row-click="rowClick">
<el-table-column prop="bedCnt" label="病床数量" width="80"/> <el-table-column prop="bedCnt" label="病床数量" width="80"/>
<el-table-column prop="beginDate" label="开始日期" width="100" show-overflow-tooltip/> <el-table-column prop="beginDate" label="开始日期" width="100"/>
<el-table-column prop="caty" label="类别" show-overflow-tooltip></el-table-column> <el-table-column prop="caty" label="类别"></el-table-column>
<el-table-column prop="code" label="编码" width="180" show-overflow-tooltip/> <el-table-column prop="code" label="编码" width="180"/>
<el-table-column prop="creationDate" label="创建日期" width="120" show-overflow-tooltip/> <el-table-column prop="createDatetime" label="创建日期时间" width="120">
<template #default="scope">
{{ scope.row.createDatetime ? formatDate(scope.row.createDatetime) : '-' }}
</template>
</el-table-column>
<el-table-column prop="creationDate" label="创建日期" width="120"/>
<el-table-column prop="delFlag" label="删除标志"/> <el-table-column prop="delFlag" label="删除标志"/>
<el-table-column prop="drPsncnt" label="医生人数"/> <el-table-column prop="drPsncnt" label="医生人数"/>
<el-table-column prop="endDate" label="结束日期" width="120" show-overflow-tooltip/> <el-table-column prop="endDate" label="结束日期" width="120"/>
<el-table-column prop="info" label="信息"/> <el-table-column prop="info" label="信息"/>
<el-table-column prop="medServScp" label="医疗服务范围" width="150"/> <el-table-column prop="medServScp" label="医疗服务范围"/>
<el-table-column prop="memo" label="备注"/> <el-table-column prop="memo" label="备注"/>
<el-table-column prop="name" label="内科"/> <el-table-column prop="name" label="内科"/>
<el-table-column prop="nursPsncnt" label="护士人数"/> <el-table-column prop="nursPsncnt" label="护士人数"/>
<el-table-column prop="pharPsncnt" label="药剂师人数" width="100"/> <el-table-column prop="pharPsncnt" label="药剂师人数"/>
<el-table-column prop="resperName" label="负责人姓名" width="100"/> <el-table-column prop="resperName" label="负责人姓名"/>
<el-table-column prop="resperTel" label="负责人电话" width="100" show-overflow-tooltip/> <el-table-column prop="resperTel" label="负责人电话"/>
<el-table-column prop="socialBedCnt" label="社会病床数量" width="200"/> <el-table-column prop="socialBedCnt" label="社会病床数量"/>
<el-table-column prop="tecnPsncnt" label="技术人员人数" width="200"/> <el-table-column prop="tecnPsncnt" label="技术人员人数"/>
</el-table> </el-table>
</div> </div>
<div class="bottom"> <div class="bottom">