Merge branch 'main' of ssh://git.jizhiweb.cn:2222/clinic-v2/web

This commit is contained in:
LiJianZhao 2025-05-09 15:00:53 +08:00
commit 1eb7d76288
11 changed files with 344 additions and 155 deletions

View File

@ -11,6 +11,7 @@ export enum apiConfig{
*/ */
"RegistrationDetail" ="medical/record/getDetailByRegisId",//详情 "RegistrationDetail" ="medical/record/getDetailByRegisId",//详情
"RegistrationList" ="registration/getListByType",//患者列表 "RegistrationList" ="registration/getListByType",//患者列表
"RegistrationChangeStatus"="registration/changeStatus",
/** /**
* *
@ -25,5 +26,6 @@ export enum apiConfig{
* *
*/ */
"ChargeListChargeLog"="charge/listChargeLog"//查询收费记录 "ChargeListChargeLog"="charge/listChargeLog",//查询收费记录
"recordGetChargeQueue"="medical/record/getChargeQueue"//查询收费记录
} }

View File

@ -1,7 +1,21 @@
<template> <template>
<Panel title="收费队列"> <Panel title="收费队列">
<template #tools> <template #tools>
<el-button type="primary" size="small">新增患者</el-button> <el-button type="primary" plain size="small">新增患者</el-button>
<el-button type="primary" size="small" plain @click="setDate">
{{ selectedDateStr }}
<el-icon class="el-icon--right">
<CaretBottom/>
</el-icon>
</el-button>
<el-date-picker
v-model="selectedDate"
type="date"
placeholder="选择日期"
ref="datePickerRef"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</template> </template>
<template #default> <template #default>
<div class="container"> <div class="container">
@ -16,7 +30,7 @@
</div> </div>
<div class="list"> <div class="list">
<el-scrollbar> <el-scrollbar>
<ul> <ul v-loading="loading">
<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)">
@ -44,10 +58,12 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, ref} 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, getToday} from "@/utils/dateUtils.ts"; import {formatListTime, getCurrentDate, getEndOfDay, getToday} from "@/utils/dateUtils.ts";
import {CaretBottom} from "@element-plus/icons-vue";
import {apiConfig} from "@/assets/config/apiConfig.ts";
const curItem = ref<any>({}); const curItem = ref<any>({});
const emit = defineEmits(['clickItem']) const emit = defineEmits(['clickItem'])
@ -55,16 +71,9 @@ const clickItem = (item: any) => {
curItem.value = item curItem.value = item
emit('clickItem', item, query.value.status); emit('clickItem', item, query.value.status);
} }
const data = ref<any>(getToday()) const loading= ref(false)
const ChargeQueueList = ref<any>([]); const ChargeQueueList = ref<any>([]);
const query = ref({
pageSize: 20,
pageNum: 1,
keyword: "",
status: 0,
beginTime: data.value.start,
endTime: data.value.end
})
const addChargeOrder = () => { const addChargeOrder = () => {
const newOrder = { const newOrder = {
id: -1, id: -1,
@ -80,21 +89,39 @@ const addChargeOrder = () => {
const clickFirst = () => { const clickFirst = () => {
clickItem(ChargeQueueList.value[0]) clickItem(ChargeQueueList.value[0])
} }
const getOrderList = () => { const selectedDate: any = ref('')
post("medical/record/getChargeQueue", {query: query.value}).then( const query = ref({
(res: any) => { pageSize: 20,
ChargeQueueList.value = res.list pageNum: 1,
clickFirst() keyword: "",
} status: 0,
) beginTime: selectedDate.value,
endTime: getEndOfDay(selectedDate.value)
})
const init = async () => {
selectedDateStr.value = setDateTip()
query.value.beginTime = selectedDate.value
query.value.endTime = getEndOfDay(selectedDate.value)
loading.value = true
try {
let data:any = await post(apiConfig.recordGetChargeQueue, {query: query.value}, {catch_error: true})
ChargeQueueList.value = data.list
}
catch {
}
finally {
loading.value = false
}
getTipCount()
} }
const delDraft = () => { const delDraft = () => {
ChargeQueueList.value.shift(); ChargeQueueList.value.shift();
clickFirst() clickFirst()
} }
defineExpose({delDraft, getOrderList}) defineExpose({delDraft, init})
onMounted(() => { onMounted(() => {
getOrderList() selectedDate.value = getCurrentDate()
init() init()
}) })
const statusList = ref([ const statusList = ref([
@ -111,14 +138,51 @@ const statusList = ref([
]) ])
const tab = (item: any) => { const tab = (item: any) => {
query.value.status = item.value query.value.status = item.value
getOrderList() init()
} }
const init = () => { const getTipCount = () => {
post('statistics/getTipCount', {beginTime: data.value.start, endTime: data.value.end}).then((res: any) => { post('statistics/getTipCount', {
beginTime: selectedDate.value,
endTime: getEndOfDay(selectedDate.value)
}).then((res: any) => {
statusList.value[0].num = res.unchargedCount statusList.value[0].num = res.unchargedCount
statusList.value[1].num = res.chargedCount statusList.value[1].num = res.chargedCount
}) })
} }
const selectedDateStr: any = ref('')
const datePickerRef = ref()
const setDate = function () {
if (datePickerRef.value) {
datePickerRef.value.handleOpen()
}
}
const setDateTip = () => {
const seletctedDateObj = new Date(selectedDate.value);
//
if (seletctedDateObj.getFullYear() == new Date().getFullYear() && seletctedDateObj.getMonth() == new Date().getMonth() && seletctedDateObj.getDate() == new Date().getDate()) {
return '今天'
}
if (seletctedDateObj.getFullYear() == new Date().getFullYear() && seletctedDateObj.getMonth() == new Date().getMonth() && seletctedDateObj.getDate() == new Date().getDate() - 1) {
return '昨天'
}
//
if (seletctedDateObj.getFullYear() == new Date().getFullYear()) {
return `${seletctedDateObj.getMonth() + 1}-${seletctedDateObj.getDate()}`
}
return seletctedDateObj.getFullYear();
}
watch(() => selectedDate.value, (newValue, oldValue) => {
if (newValue == oldValue) {
return;
}
if (newValue == null) {
return;
}
init()
})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.container { .container {
@ -247,4 +311,13 @@ const init = () => {
padding-bottom: 10px; padding-bottom: 10px;
} }
} }
:deep(.el-input--prefix) {
visibility: hidden;
width: 0;
height: 0;
position: absolute;
right: 0;
top: 50px;
}
</style> </style>

View File

@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {onMounted, ref} from "vue"; import {onMounted, ref} from "vue";
import {getThisWeek} from "@/utils/dateUtils.ts"; import {formatDateArray, getThisMonth, getThisWeek, getToday, getYesterday} from "@/utils/dateUtils.ts";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
onMounted(() => { onMounted(() => {
@ -36,18 +36,73 @@ const background = ref<any>([
'#FFEEEE', '#FFEEEE',
'#E5F9FF' '#E5F9FF'
]); ]);
const getDateRange = () => {
let beginTime = ''
let endTime = ''
if (curDate.value == null) {
let dateArray = selectDate.value
beginTime = dateArray[0]
endTime = dateArray[1]
} else {
const date = curDate.value?.func
beginTime = date.start
endTime = date.end
}
return {begin: beginTime, end: endTime}
}
const getRevenueOverview = () => { const getRevenueOverview = () => {
const thisWeek = getThisWeek(); let date=getDateRange()
post("statistics/getRevenueOverview", {beginTime: thisWeek.start, endTime: thisWeek.end}).then((res: any) => { post("statistics/getRevenueOverview", {
beginTime: date.begin,
endTime: date.end}).then((res: any) => {
if (res.payTypeRevenue.length === 0) return if (res.payTypeRevenue.length === 0) return
payTypeRevenue.value = res.payTypeRevenue payTypeRevenue.value = res.payTypeRevenue
}) })
} }
const dataSelector = [
{name: '今天', func: getToday()},
{name: '昨天', func: getYesterday()},
{name: '本周', func: getThisWeek()},
{name: '本月', func: getThisMonth()},
]
const selectDate = ref();
const curDate = ref<any>(dataSelector[0])
const changeCheckDate = (dateItem: any) => {
curDate.value = dateItem
selectDate.value = null
getRevenueOverview()
}
const changeDate = (date: any) => {
curDate.value = null
selectDate.value = formatDateArray(date)
getRevenueOverview()
}
</script> </script>
<template> <template>
<Panel title="支付明细" class="detail-price"> <Panel title="支付明细" class="detail-price">
<template #tools>
<div class="time">
<div class="time_box"
v-for="(item,index) in dataSelector"
:key="index"
:class="{active:curDate?.name==item.name}"
@click="changeCheckDate(item)"
>
<span>{{ item.name }}</span>
</div>
<el-date-picker
v-model="selectDate"
type="daterange"
@change="changeDate"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="margin-left: 24px"
/>
</div>
</template>
<div class="detail-price-content"> <div class="detail-price-content">
<div class="detail-price-content-item" v-for="(item,index) in payTypeRevenue" <div class="detail-price-content-item" v-for="(item,index) in payTypeRevenue"
:style="`background:${background[index]}`"> :style="`background:${background[index]}`">
@ -63,6 +118,30 @@ const getRevenueOverview = () => {
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.time {
display: flex;
align-items: center;
.time_box {
padding: 0 5px;
height: 30px;
border: 1px solid #d7d9da;
color: #000;
font-size: 15px;
display: flex;
align-items: center;
cursor: pointer;
&:hover {
color: #fff;
background: #409EFF;
}
}
}
.active{
color: #fff !important;
background: #409EFF;
}
.detail-price { .detail-price {
height: 194px; height: 194px;

View File

@ -35,8 +35,9 @@ const isExpire = (item: any) => {
</template> </template>
<div style="padding: 0 24px 24px"> <div style="padding: 0 24px 24px">
<div class="box"> <div class="box">
<div class="item" style="margin-right: 8px" v-for="(item,index) in expireDateWarningList" :class="isExpire(item) ? 'item__danger' : 'item__warn'"> <div class="item" style="margin-right: 8px" v-for="(item,index) in expireDateWarningList"
<div class="image" /> :class="isExpire(item) ? 'item__danger' : 'item__warn'">
<div class="image"/>
<div class="item-content"> <div class="item-content">
<el-tooltip <el-tooltip
effect="dark" effect="dark"
@ -53,9 +54,12 @@ const isExpire = (item: any) => {
</div> </div>
</div> </div>
<div class="item-right" style="margin-right: 10px"> <div class="item-right" style="margin-right: 10px">
<div v-if="item.remaining_days<0">已过期<span class="item-right-num">{{ <div v-if="item.remaining_days<0">
Math.abs(item.remaining_days) 已过期
}}</span> <span class="item-right-num">{{
Math.abs(item.remaining_days) > 99 ? '99+' : Math.abs(item.remaining_days)
}}</span>
</div> </div>
<div v-else>剩余<span class="item-right-num">{{ Math.abs(item.remaining_days) }}</span> <div v-else>剩余<span class="item-right-num">{{ Math.abs(item.remaining_days) }}</span>
</div> </div>
@ -74,27 +78,30 @@ const isExpire = (item: any) => {
flex-direction: column; flex-direction: column;
.box { .box {
.item__danger{ .item__danger {
.image{ .image {
background-image: url("/static/images/home/danger.png") ; background-image: url("/static/images/home/danger.png");
}
.item-right{
color: #FF282E;
}
}
.item__warn{
.image{
background-image: url("/static/images/home/warn.png") ;
}
.item-right{
color: #F69C51;
}
} }
.item-right {
color: #FF282E;
}
}
.item__warn {
.image {
background-image: url("/static/images/home/warn.png");
}
.item-right {
color: #F69C51;
}
}
.item { .item {
float: left; float: left;
width: 48%; width: 48%;
@ -116,6 +123,7 @@ const isExpire = (item: any) => {
flex: 1; flex: 1;
.item-name { .item-name {
width: 80px;
font-weight: 400; font-weight: 400;
font-size: 14px; font-size: 14px;
color: #333333; color: #333333;
@ -137,7 +145,8 @@ const isExpire = (item: any) => {
} }
.item-right { .item-right {
width: 100px; width: 120px;
display: flex;
.item-right-num { .item-right-num {
font-size: 28px; font-size: 28px;
font-weight: bold; font-weight: bold;

View File

@ -1,6 +1,21 @@
<template> <template>
<Panel :title="'就诊队列'" style="height: 100%"> <Panel :title="'就诊队列'" style="height: 100%">
<template #tools>
<el-button type="primary" plain @click="setDate">
{{selectedDateStr}}
<el-icon class="el-icon--right"><CaretBottom /></el-icon>
</el-button>
<el-date-picker
v-model="selectedDate"
type="date"
placeholder="选择日期"
ref="datePickerRef"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</template>
<div class="panel-content" style="display: flex;flex-direction: column;height: 100%"> <div class="panel-content" style="display: flex;flex-direction: column;height: 100%">
<div class="tabs"> <div class="tabs">
<span v-for="(item,index) in statusList" :class="curStatus == item.status ? 'tabs-item' : ''" <span v-for="(item,index) in statusList" :class="curStatus == item.status ? 'tabs-item' : ''"
@click="clickTab(item)">{{ item.label }}&nbsp;{{ item.num }}</span> @click="clickTab(item)">{{ item.label }}&nbsp;{{ item.num }}</span>
@ -33,22 +48,32 @@
</Panel> </Panel>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {nextTick, onMounted, ref, watch} from "vue"; import {nextTick, onMounted, ref, watch} from "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 {formatListTime, getToday, getThisMonth} 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 {CaretBottom} from '@element-plus/icons-vue'
const curStatus = ref(1) const curStatus = ref(1)
const search = ref('') const search = ref('')
const curItem = ref<any>('') const curItem = ref<any>('')
const selectedDate:any = ref('')
const selectedDateStr:any = ref('')
const emit = defineEmits(['clickItem', 'changeTab']) const emit = defineEmits(['clickItem', 'changeTab'])
const datePickerRef = ref()
const clickTab = (item: any) => { const clickTab = (item: any) => {
curStatus.value = item.status curStatus.value = item.status
emit('changeTab') emit('changeTab')
curItem.value = {} curItem.value = {}
} }
const setDate=function (){
if (datePickerRef.value) {
datePickerRef.value.handleOpen()
}
}
const list = ref<any>([]) const list = ref<any>([])
const statusList = ref<any>([ const statusList = ref<any>([
{ {
@ -69,6 +94,7 @@ const statusList = ref<any>([
]) ])
const itemId = defineModel() const itemId = defineModel()
onMounted(() => { onMounted(() => {
selectedDate.value=getCurrentDate()
initStatusList() initStatusList()
curItem.value = itemId curItem.value = itemId
if(curStatus.value==1){ if(curStatus.value==1){
@ -76,23 +102,31 @@ onMounted(() => {
} }
}) })
const loading = ref(true) const loading = ref(true)
const init = () => { const init = async () => {
selectedDateStr.value=setDateTip()
loading.value = true loading.value = true
post(apiConfig.RegistrationList, { try{
query: { let data:any=await post(apiConfig.RegistrationList, {
status: curStatus.value, query: {
beginTime: '2024-05-07 23:59:59', status: curStatus.value,
endTime: data.value.end beginTime: selectedDate.value,
} endTime: getEndOfDay(new Date(selectedDate.value))
}).then((res: any) => { }
}, {catch_error:true});
list.value=data.list
}
catch (e){
}finally {
loading.value = false loading.value = false
list.value = res.list }
initStatusList() initStatusList()
})
} }
const data = ref<any>(getToday())
const initStatusList = () => { const initStatusList = () => {
post('statistics/getTipCount', {beginTime: '2024-05-07 23:59:59', endTime: data.value.end}).then((res: any) => { post('statistics/getTipCount', {
beginTime: selectedDate.value,
endTime: getEndOfDay(new Date(selectedDate.value))}).then((res: any) => {
statusList.value[0].num = res.waitDiagnosisCount statusList.value[0].num = res.waitDiagnosisCount
statusList.value[1].num = res.diagnosingCount statusList.value[1].num = res.diagnosingCount
statusList.value[2].num = res.completeDiaCount statusList.value[2].num = res.completeDiaCount
@ -129,14 +163,37 @@ const changeCurItemOrStatus = (item:any, status:any) => {
if (curStatus != null){ if (curStatus != null){
curStatus.value = status curStatus.value = status
} }
} }
defineExpose({changeCurItemOrStatus}) defineExpose({changeCurItemOrStatus})
watch(() => curStatus.value, () => { watch(() => curStatus.value, () => {
console.log('status', curStatus.value)
init() // init() //
}) })
const setDateTip=()=>{
const seletctedDateObj = new Date(selectedDate.value);
//
if(seletctedDateObj.getFullYear()==new Date().getFullYear() && seletctedDateObj.getMonth()==new Date().getMonth() && seletctedDateObj.getDate()==new Date().getDate()){
return '今天'
}
if(seletctedDateObj.getFullYear()==new Date().getFullYear() && seletctedDateObj.getMonth()==new Date().getMonth() && seletctedDateObj.getDate()==new Date().getDate()-1){
return '昨天'
}
//
if(seletctedDateObj.getFullYear()==new Date().getFullYear()){
return `${seletctedDateObj.getMonth()+1}-${seletctedDateObj.getDate()}`
}
return seletctedDateObj.getFullYear();
}
watch(() => selectedDate.value, (newValue, oldValue) => {
if(newValue==oldValue){
return;
}
if(newValue==null){
return;
}
init()
})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.tabs { .tabs {
@ -275,5 +332,13 @@ watch(() => curStatus.value, () => {
} }
}
:deep(.el-input){
visibility: hidden;
width: 0;
height: 0;
position: absolute;
right: 0;
top: 50px;
} }
</style> </style>

View File

@ -21,12 +21,12 @@
<el-descriptions-item label="姓名"> <el-descriptions-item label="姓名">
<el-form-item prop="name" style="margin-bottom: 2px"> <el-form-item prop="name" style="margin-bottom: 2px">
<el-input v-model="edit_data.name" placeholder="请输入姓名" clearable <el-input v-model="edit_data.name" placeholder="请输入姓名" clearable
:disabled="edit_data.status==1||edit_data.status==3"></el-input> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="性别"> <el-descriptions-item label="性别">
<el-form-item prop="gender"> <el-form-item prop="gender">
<el-radio-group v-model="edit_data.gender" :disabled="edit_data.status==1||edit_data.status==3"> <el-radio-group v-model="edit_data.gender" :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0">
<el-radio :value="1"></el-radio> <el-radio :value="1"></el-radio>
<el-radio :value="2"></el-radio> <el-radio :value="2"></el-radio>
</el-radio-group> </el-radio-group>
@ -35,12 +35,12 @@
<el-descriptions-item label="年龄"> <el-descriptions-item label="年龄">
<el-form-item prop="age"> <el-form-item prop="age">
<el-input v-model.number="edit_data.age" placeholder="请输入年龄" <el-input v-model.number="edit_data.age" placeholder="请输入年龄"
:disabled="edit_data.status==1||edit_data.status==3"></el-input> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="手机号"> <el-descriptions-item label="手机号">
<el-form-item prop="phone"> <el-form-item prop="phone">
<el-input v-model="edit_data.phone" placeholder="手机号" :disabled="edit_data.status==3"></el-input> <el-input v-model="edit_data.phone" placeholder="手机号" :disabled="edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="医生"> <el-descriptions-item label="医生">
@ -49,7 +49,7 @@
v-model="edit_data.organizationDoctorId" v-model="edit_data.organizationDoctorId"
placeholder="请选择医生" placeholder="请选择医生"
@change="getSectionList" @change="getSectionList"
:disabled="edit_data.status==3" :disabled="edit_data.status==3||edit_data.status==0"
> >
<el-option <el-option
v-for="item in doctorList" v-for="item in doctorList"
@ -66,7 +66,7 @@
<el-select <el-select
v-model="edit_data.organizationSectionId" v-model="edit_data.organizationSectionId"
placeholder="选择科室" placeholder="选择科室"
:disabled="edit_data.status==3" :disabled="edit_data.status==3||edit_data.status==0"
> >
<el-option <el-option
v-for="item in sectionList" v-for="item in sectionList"
@ -82,7 +82,7 @@
<el-descriptions-item label="证件类型"> <el-descriptions-item label="证件类型">
<el-form-item prop="certType"> <el-form-item prop="certType">
<el-select v-model="edit_data.certType" placeholder="证件类型" <el-select v-model="edit_data.certType" placeholder="证件类型"
:disabled="edit_data.status==1||edit_data.status==3"> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0">
<el-option <el-option
v-for="item in certTypeList" v-for="item in certTypeList"
:key="item.id" :key="item.id"
@ -95,14 +95,14 @@
<el-descriptions-item label="证件码"> <el-descriptions-item label="证件码">
<el-form-item prop="certNo"> <el-form-item prop="certNo">
<el-input v-model="edit_data.certNo" placeholder="请输入证件码" <el-input v-model="edit_data.certNo" placeholder="请输入证件码"
:disabled="edit_data.status==1||edit_data.status==3"></el-input> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="初/复诊"> <el-descriptions-item label="初/复诊">
<el-form-item prop="visitType"> <el-form-item prop="visitType">
<el-select v-model="edit_data.visitType" placeholder="就诊类型"> <el-select v-model="edit_data.visitType" placeholder="就诊类型" :disabled="edit_data.status==0">
<el-option label="初诊" :value="0"></el-option> <el-option label="初诊" :value="0"></el-option>
<el-option label="复诊" :value="1"></el-option> <el-option label="复诊" :value="1"></el-option>
</el-select> </el-select>
@ -111,7 +111,7 @@
<el-descriptions-item <el-descriptions-item
label="备注"> label="备注">
<el-form-item> <el-form-item>
<el-input v-model="edit_data.memo" placeholder="备注"></el-input> <el-input v-model="edit_data.memo" placeholder="备注" :disabled="edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
@ -143,10 +143,10 @@
<template #footer> <template #footer>
<div class="bottom"> <div class="bottom">
<el-dropdown v-if="isShowCard" placement="top-start" @show="showCardBtn" @hide="hide"> <el-dropdown v-if="isShowCard" placement="top-start" @show="showCardBtn" @hide="hide" :disabled="edit_data.status==0">
<div class="left" style="outline: none;"> <div class="left" style="outline: none;">
<span class="btnCard" type="primary"> <span class="btnCard" type="primary">
<img class="image" src="/static/images/registration/card.png" alt="" srcset="">进行读卡 <img class="image" src="/static/images/registration/card.png" alt="" srcset="">{{edit_data.status==0?'不能读卡':'进行读卡'}}
<img class="image1" :src="'/static/images/registration/'+(showBtn?2:1)+'.png'" alt="" srcset=""> <img class="image1" :src="'/static/images/registration/'+(showBtn?2:1)+'.png'" alt="" srcset="">
</span> </span>
</div> </div>
@ -160,9 +160,9 @@
退出医保 退出医保
</div> </div>
<div class="bottom-right"> <div class="bottom-right">
<el-button type="primary" @click="save">保存</el-button> <el-button type="primary" @click="save" :disabled="edit_data.status==0">保存</el-button>
<el-button @click="close">取消</el-button> <el-button @click="close">取消</el-button>
<el-button v-if="edit_data.status==1" type="danger" @click="deleteDetail">退号</el-button> <el-button v-if="edit_data.status==1" type="danger" @click="registrationCancel">退号</el-button>
</div> </div>
</div> </div>
</template> </template>
@ -181,7 +181,6 @@ import insutypes from "@/assets/config/directory/insutypes.json"
import depts from "@/assets/config/directory/depts.json"; import depts from "@/assets/config/directory/depts.json";
import {apiConfig} from "@/assets/config/apiConfig.ts"; import {apiConfig} from "@/assets/config/apiConfig.ts";
const height = ref(470) const height = ref(470)
const certTypeList = ref<any>( const certTypeList = ref<any>(
Object.entries(psnCertTypes) Object.entries(psnCertTypes)
@ -256,7 +255,7 @@ const save = () => {
mdtrtCertNo: socialCard.value?.mdtrtCertNo, mdtrtCertNo: socialCard.value?.mdtrtCertNo,
mdtrtCertType: socialCard.value?.mdtrtCertType mdtrtCertType: socialCard.value?.mdtrtCertType
}).then(() => { }).then(() => {
ElMessage.success('新建成功') ElMessage.success('挂号成功')
close() close()
}) })
} }
@ -264,9 +263,10 @@ const save = () => {
}) })
} }
const deleteDetail = () => { //退
post('registration/delete', {id: edit_data.value.id}).then(() => { const registrationCancel = () => {
ElMessage.success('删除成功') post(apiConfig.RegistrationChangeStatus, {id: edit_data.value.id, status: 0}).then(() => {
ElMessage.success('退号成功')
close() close()
}) })
} }

View File

@ -22,7 +22,7 @@
:type="scope.row.status === 1 ? 'warning' : scope.row.status === 2 ? 'success' : scope.row.status === 3 ? 'info' : 'danger'" :type="scope.row.status === 1 ? 'warning' : scope.row.status === 2 ? 'success' : scope.row.status === 3 ? 'info' : 'danger'"
> >
{{ {{
scope.row.status === 1 ? '待诊' : scope.row.status === 2 ? '在诊' : scope.row.status === 3 ? '已诊' : '-' scope.row.status === 1 ? '待诊' : scope.row.status === 2 ? '在诊' : scope.row.status === 3 ? '已诊' : scope.row.status ===0 ? '已取消' : '-'
}} }}
</el-tag> </el-tag>
</template> </template>

View File

@ -10,7 +10,7 @@
:class="{active:curDate?.name==item.name}" :class="{active:curDate?.name==item.name}"
@click="changeCheckDate(item)" @click="changeCheckDate(item)"
> >
<span :style="{color:curDate?.name==item.name?'#000':''}">{{ item.name }}</span> <span>{{ item.name }}</span>
</div> </div>
<el-date-picker <el-date-picker
v-model="selectDate" v-model="selectDate"
@ -120,48 +120,6 @@ const dataSelector = [
{name: '本周', func: getThisWeek()}, {name: '本周', func: getThisWeek()},
{name: '本月', func: getThisMonth()}, {name: '本月', func: getThisMonth()},
] ]
const changeCheck = (index: number) => {
changeNum.value = index
timeList.value = []
const now = new Date();
const year = now.getFullYear();
let month = String(now.getMonth() + 1).padStart(2, '0'); // 01
const day = String(now.getDate()).padStart(2, '0'); //
if (index == 0) {
const day1 = String(now.getDate() + 1).padStart(2, '0'); //
beginTime.value = `${year}-${month}-${day}`;
endTime.value = `${year}-${month}-${day1}`
}
if (index == 1) {
const yesterday = new Date(now);
yesterday.setDate(now.getDate() - 1);//
const yesterday_year = yesterday.getFullYear();
const yesterday_month = String(yesterday.getMonth() + 1).padStart(2, '0'); // 0 1
const yesterday_day = String(yesterday.getDate()).padStart(2, '0');
beginTime.value = `${yesterday_year}-${yesterday_month}-${yesterday_day}`;
endTime.value = `${year}-${month}-${day}`
}
if (index == 2) {
const dayOfWeek = now.getDay(); // 0 1
const diff = now.getDate() - dayOfWeek + (dayOfWeek === 0 ? -6 : 1); //
const startOfWeek = new Date(now.setDate(diff));//
const beginYear = startOfWeek.getFullYear();
const beginMonth = String(startOfWeek.getMonth() + 1).padStart(2, '0'); // 01
const beginDay = String(startOfWeek.getDate()).padStart(2, '0'); //
beginTime.value = `${beginYear}-${beginMonth}-${beginDay}`;
endTime.value = `${year}-${month}-${day}`;
}
if (index == 3) {
//
let startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
const startYear = startOfMonth.getFullYear();
const startMonth = String(startOfMonth.getMonth() + 1).padStart(2, '0'); // 01
const startDay = String(startOfMonth.getDate()).padStart(2, '0');
beginTime.value = `${startYear}-${startMonth}-${startDay}`;
endTime.value = `${year}-${month}-${day}`;
}
initChart();
}
const formatDate = (dateString: any) => { const formatDate = (dateString: any) => {
const date = new Date(dateString); const date = new Date(dateString);
const year = date.getFullYear(); const year = date.getFullYear();
@ -169,11 +127,6 @@ const formatDate = (dateString: any) => {
const day = String(date.getDate()).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`; return `${year}-${month}-${day}`;
}; };
const changeTime = () => {
beginTime.value = formatDate(timeList.value[0])
endTime.value = formatDate(timeList.value[1])
initChart()
}
// ref // ref
const centerRef = ref<HTMLElement | null>(null) const centerRef = ref<HTMLElement | null>(null)
const centerItemRef = ref<HTMLElement | null>(null) const centerItemRef = ref<HTMLElement | null>(null)
@ -396,12 +349,22 @@ const changeCheckDate = (dateItem: any) => {
padding: 0 5px; padding: 0 5px;
height: 30px; height: 30px;
border: 1px solid #d7d9da; border: 1px solid #d7d9da;
color: #d7d9da; color: #000;
font-size: 15px; font-size: 15px;
display: flex; display: flex;
align-items: center; align-items: center;
cursor: pointer;
&:hover {
color: #fff;
background: #409EFF;
}
} }
} }
.active{
color: #fff !important;
background: #409EFF;
}
.container { .container {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -498,11 +461,13 @@ const changeCheckDate = (dateItem: any) => {
.statistics-chart { .statistics-chart {
height: 382px; height: 382px;
display: flex; display: flex;
.business-map{
.business-map {
flex: 1; flex: 1;
margin-right: 24px; margin-right: 24px;
} }
.consumption-map{
.consumption-map {
flex: 1; flex: 1;
} }
} }

View File

@ -121,3 +121,11 @@ export const getEndOfDay = (date: Date | string): string => {
dateDetail.setHours(23, 59, 59, 0); // 设置为当天 23:59:00 dateDetail.setHours(23, 59, 59, 0); // 设置为当天 23:59:00
return formatDate(dateDetail).slice(0, 19); // return formatDate(dateDetail).slice(0, 19); //
}; };
export const getCurrentDate=()=> {
const date = new Date();
const year = date.getFullYear();
// 月份从0开始所以要加1
const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始需要+1并补0
const day = String(date.getDate()).padStart(2, '0'); // 补0操作
return `${year}-${month}-${day}`;
}

View File

@ -139,8 +139,7 @@ const clickItem = (item: any) => {
} }
const medicalQueueRef =ref(); const medicalQueueRef =ref();
const cancelReception = () => { const cancelReception = () => {
post('registration/changeStatus', {id: registerId.value, status: 1}).then((res: any) => { post(apiConfig.RegistrationChangeStatus, {id: registerId.value, status: 1}).then((res: any) => {
debugger
medicalQueueRef.value?.changeCurItemOrStatus(res,1); medicalQueueRef.value?.changeCurItemOrStatus(res,1);
}) })
} }

View File

@ -1,11 +0,0 @@
<script setup lang="ts">
</script>
<template>
</template>
<style scoped lang="scss">
</style>