This commit is contained in:
ChenQiuYu 2025-05-12 12:56:32 +08:00
parent 99e7985ab9
commit 8b78c320b1
13 changed files with 197 additions and 120 deletions

View File

@ -18,7 +18,7 @@ $border-color-extra-light: #F2F6FC;
// 背景颜色 // 背景颜色
$background-color-base: #eee; $background-color-base: #eee;
$background-color-main: #5078c8; $background-color-main: #4D6DE4;
// 边框圆角 // 边框圆角
$border-radius-base: 4px; $border-radius-base: 4px;

View File

@ -70,7 +70,7 @@ import {CaretBottom} from "@element-plus/icons-vue";
import {apiConfig} from "@/assets/config/apiConfig.ts"; import {apiConfig} from "@/assets/config/apiConfig.ts";
const curItem = ref<any>({}); const curItem = ref<any>({});
const emit = defineEmits(['clickItem']) 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);
@ -141,6 +141,7 @@ const statusList = ref([
]) ])
const tab = (item: any) => { const tab = (item: any) => {
query.value.status = item.value query.value.status = item.value
emit('getStatus', item.value)
init() init()
} }
const getTipCount = () => { const getTipCount = () => {

View File

@ -11,7 +11,7 @@
<div class="avatar-info-wrapper"> <div class="avatar-info-wrapper">
<div class="avatar-info"> <div class="avatar-info">
<span class="avatar-info-name">{{ seeDockerInfo?.patientInfo?.name }}</span> <span class="avatar-info-name">{{ seeDockerInfo?.patientInfo?.name }}</span>
<span class="avatar-info-age">{{ seeDockerInfo?.patientInfo?.age}}</span> <span class="avatar-info-age">{{ seeDockerInfo?.patientInfo?.age||0}}</span>
</div> </div>
<div class="avatar-info-phone-num"> <div class="avatar-info-phone-num">
<span class="avatar-info-phone">{{ seeDockerInfo?.patientInfo?.phone }}</span> <span class="avatar-info-phone">{{ seeDockerInfo?.patientInfo?.phone }}</span>
@ -26,11 +26,11 @@
class="detail-doctor">{{ seeDockerInfo?.dockerName }}-{{ seeDockerInfo?.sectionName }}</span> class="detail-doctor">{{ seeDockerInfo?.dockerName }}-{{ seeDockerInfo?.sectionName }}</span>
</div> </div>
<div class="detail-middle"> <div class="detail-middle">
<div>费用类别:&nbsp;<span class="detail-doctor">医保</span></div> <div>费用类别:&nbsp;<span class="detail-doctor">{{seeDockerInfo?.feeTypeName||'-'}}</span></div>
<div>医保卡剩余金额:&nbsp;<span class="detail-balance">{{ seeDockerInfo?.socialBalance }}</span></div> <div>医保卡剩余金额:&nbsp;<span class="detail-balance">{{ seeDockerInfo?.socialBalance }}</span></div>
</div> </div>
<div>上次就诊时间:&nbsp;<span class="detail-doctor">{{ <div>上次就诊时间:&nbsp;<span class="detail-doctor">{{
formatDate(seeDockerInfo?.lastSeeDoctorTime) formatDate(seeDockerInfo?.lastSeeDoctorTime)||'-'
}}</span></div> }}</span></div>
</div> </div>
</div> </div>

View File

@ -6,16 +6,9 @@
<el-collapse-item :name="index" v-for="(item, index) in list" :key="index"> <el-collapse-item :name="index" v-for="(item, index) in list" :key="index">
<template #title> <template #title>
<div class="list-item-content"> <div class="list-item-content">
<el-tooltip
class="box-item"
effect="dark"
:content="item.diagnosisMedicalRecord?.diagnosisSummary"
placement="bottom-start"
>
<span class="disease-name">{{ item.diagnosisMedicalRecord?.diagnosisSummary }}</span> <span class="disease-name">{{ item.diagnosisMedicalRecord?.diagnosisSummary }}</span>
</el-tooltip> <span class="doctor">{{ item.doctorName }}</span>
<!-- <span class="doctor">{{ item.patientId }}</span>--> <span class="time">{{ formatListTime(item.createTime) }}</span>
<!-- <span class="time">{{ item.createDatetime }}</span>-->
</div> </div>
</template> </template>
<div> <div>
@ -32,9 +25,9 @@ import Panel from '@/components/common/Panel.vue';
import Detail from './RecordsLog/Detail.vue'; import Detail from './RecordsLog/Detail.vue';
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import {ref} from "vue"; import {ref} from "vue";
import {formatListTime} from "@/utils/dateUtils.ts";
const list = ref<any>([]) const list = ref<any>([])
const init = (patientId: any) => { const init = (patientId: any) => {
const query = { const query = {
patientId: patientId, patientId: patientId,
@ -42,6 +35,7 @@ const init = (patientId: any) => {
} }
post('charge/listDetail', {query}).then((res: any) => { post('charge/listDetail', {query}).then((res: any) => {
list.value = res.list list.value = res.list
console.log(list,'list')
}) })
} }
const clearList = () => { const clearList = () => {
@ -61,14 +55,19 @@ defineExpose({init,clearList})
justify-content: space-between; justify-content: space-between;
.disease-name { .disease-name {
width: 135px; width: 90px;
overflow: hidden; /* 隐藏溢出的内容 */ overflow: hidden; /* 隐藏溢出的内容 */
white-space: nowrap; /* 防止文本换行 */ white-space: nowrap; /* 防止文本换行 */
text-overflow: ellipsis; /* 显示省略号 */ text-overflow: ellipsis; /* 显示省略号 */
text-align: left;
} }
.doctor { .doctor {
width: 85px; width: 80px;
}
.time{
display: inline-block;
overflow: hidden;
} }
} }
} }

View File

@ -44,10 +44,10 @@
</div> </div>
<div class="content"> <div class="content">
<div class="content-middle"> <div class="content-middle">
<div class="item"> <div class="item" style="margin-top: 8px">
<div class="name">合计</div> <div class="name">合计</div>
<div class="price"> <div class="price">
<div class="price-right">{{ sumPrice }}</div> <div class="price-right sumPrice">{{ sumPrice }}</div>
</div> </div>
</div> </div>
</div> </div>
@ -143,6 +143,12 @@ onMounted(() => {
.price-left { .price-left {
margin-right: 38px; margin-right: 38px;
} }
.sumPrice{
font-weight: bold;
font-size: 16px;
color: #FF0000;
font-style: normal;
}
} }
} }
} }

View File

@ -75,6 +75,7 @@ console.log(calendarData);
<template> <template>
<div class="calendar-wrapper"> <div class="calendar-wrapper">
<span class="current">{{ currentYear }}{{ currentMonth + 1 }}</span>
<div class="row"> <div class="row">
<div class="item"> <div class="item">
<span class="tip"></span> <span class="tip"></span>
@ -97,15 +98,13 @@ console.log(calendarData);
<div class="item"> <div class="item">
<span class="tip"></span> <span class="tip"></span>
</div> </div>
</div> </div>
<div v-for="item in calendarData" class="row"> <div v-for="item in calendarData" class="row">
<div class="item" v-for="subItem in item"> <div class="item" v-for="subItem in item">
<span :class="subItem.isCurrentDay ? 'currentDay' : subItem.isCurrentMonth ? '' : 'otherMonth'"> <span :class="subItem.isCurrentDay ? 'currentDay' : subItem.isCurrentMonth ? '' : 'otherMonth'">
{{ subItem.day }} {{ subItem.isCurrentDay ? "今" : subItem.day }}
</span> </span>
</div> </div>
</div> </div>
</div> </div>
@ -114,31 +113,51 @@ console.log(calendarData);
<style scoped lang="scss"> <style scoped lang="scss">
.calendar-wrapper { .calendar-wrapper {
width: 100%; width: 100%;
height: 320px; height: 100%;
box-sizing: border-box; box-sizing: border-box;
padding: 20px; padding:0 20px 20px;
background-color: #FFF; background-color: #FFF;
border-radius: 0 0 8px 8px;
.row { display: flex;
width: 100%; flex-direction: column;
height: 45px; .current{
font-weight: 500;
.item { font-size: 18px;
color: #333333;
float: left; font-style: normal;
width: 14.2%; margin-bottom: 8px;
height: 45px; }
.row {
span { flex: 1;
display: block; width: 100%;
margin: auto; background: #F9FAFC ;
width: 30px; padding: 0 20px;
height: 30px; display: flex;
text-align: center; justify-content: space-between;
line-height: 30px; align-items: center;
border-radius: 15px; font-weight: 500;
font-size: 14px;
color: #999999;
font-style: normal;
.item {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
span {
margin: auto;
height: 34px;
width: 34px;
display: flex;
justify-content: center;
align-items: center;
font-weight: bold;
font-size: 16px;
color: #666666;
font-style: normal;
border-radius:17px;
} }
.currentDay { .currentDay {
background: #1677FE; background: #1677FE;
color: #fff; color: #fff;

View File

@ -1,6 +1,10 @@
<template> <template>
<header> <header>
<div class="center-wrapper"> <div class="center-wrapper">
<div class="logo">
<img style="width: 62px;height: 46px;" src="/favicon.ico" alt=""/>
<span>药慧精灵</span>
</div>
<div class="menu"> <div class="menu">
<router-link to="/home" class="menu-item" active-class="active active1">首页</router-link> <router-link to="/home" class="menu-item" active-class="active active1">首页</router-link>
<router-link to="/registration" class="menu-item" active-class="active active2">挂号</router-link> <router-link to="/registration" class="menu-item" active-class="active active2">挂号</router-link>
@ -11,25 +15,28 @@
<router-link to="/social" class="menu-item" active-class="active active7">医保</router-link> <router-link to="/social" class="menu-item" active-class="active active7">医保</router-link>
<router-link to="/statistics" class="menu-item" active-class="active active8">统计</router-link> <router-link to="/statistics" class="menu-item" active-class="active active8">统计</router-link>
<router-link to="/settings" class="menu-item" active-class="active active9">设置</router-link> <router-link to="/settings" class="menu-item" active-class="active active9">设置</router-link>
</div>
<div class="info"> <div class="info">
<span class="username">{{username}}</span> <span class="username">{{ username }}</span>
<el-button class="hover" :icon="Right" style="color: #fff" @click="logout" text>退出登录</el-button> <el-button class="hover" :icon="Right" style="color: #fff" @click="logout" text>退出登录</el-button>
</div> </div>
</div> </div>
</div>
</header> </header>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
@use "@/assets/scss/base"; @use "@/assets/scss/base";
.center-wrapper{
display: flex;
justify-content: space-between;
align-items: center;
}
.menu { .menu {
position: relative; position: relative;
display: flex;
align-items: center;
text-align: center; text-align: center;
line-height: 50px;
.menu-item { .menu-item {
display: inline-block; display: inline-block;
color: #FFF; color: #FFF;
@ -142,7 +149,6 @@ header {
position: relative; position: relative;
width: 100%; width: 100%;
height: 80px; height: 80px;
background-color: base.$background-color-main; background-color: base.$background-color-main;
padding: 15px 0; padding: 15px 0;
} }
@ -153,19 +159,30 @@ header {
float: right; float: right;
display: flex; display: flex;
align-items: center; // align-items: center; //
.username{ .username {
display: inline-block; display: inline-block;
height: 50px; height: 50px;
line-height: 50px; line-height: 50px;
} }
.hover{
.hover {
margin-left: 10px; margin-left: 10px;
cursor: pointer; cursor: pointer;
&:hover{
&:hover {
color: #4d6de4 !important; color: #4d6de4 !important;
} }
} }
} }
.logo{
margin-left: 30px;
display: flex;
align-items: center;
font-weight: 400;
font-size: 28px;
color: #FFFFFF;
font-style: normal;
}
</style> </style>
<script setup lang="ts"> <script setup lang="ts">
import {useRouter} from 'vue-router' import {useRouter} from 'vue-router'
@ -173,7 +190,7 @@ import {type Action, ElMessage, ElMessageBox} from 'element-plus'
import {apiConfig} from "@/assets/config/apiConfig.ts"; import {apiConfig} from "@/assets/config/apiConfig.ts";
import {post} from "@/utils/request"; import {post} from "@/utils/request";
import {Right} from "@element-plus/icons-vue"; import {Right} from "@element-plus/icons-vue";
import {onMounted,ref} from "vue"; import {onMounted, ref} from "vue";
let logout = function () { let logout = function () {
@ -200,13 +217,13 @@ let logout = function () {
useRouter().push("/") useRouter().push("/")
}) })
} }
onMounted(()=>{ onMounted(() => {
getInfo() getInfo()
}) })
const username=ref<any>('') const username = ref<any>('')
const getInfo=()=>{ const getInfo = () => {
post(apiConfig.managerUserVerify).then((res: any) => { post(apiConfig.managerUserVerify).then((res: any) => {
username.value=res.username username.value = res.username
}) })
} }
</script> </script>

View File

@ -32,7 +32,8 @@
<PopoverInput :disabled="props.disabled" v-model="formDate.nowMedicalHistory" :list="nowMedicalHistoryList"/> <PopoverInput :disabled="props.disabled" v-model="formDate.nowMedicalHistory" :list="nowMedicalHistoryList"/>
</el-form-item> </el-form-item>
<el-form-item label="既往史:" v-if="!props.isShowFrom"> <el-form-item label="既往史:" v-if="!props.isShowFrom">
<PopoverInput :disabled="props.disabled" v-model="formDate.beforeMedicalHistory" :list="beforeMedicalHistoryList"/> <PopoverInput :disabled="props.disabled" v-model="formDate.beforeMedicalHistory"
:list="beforeMedicalHistoryList"/>
</el-form-item> </el-form-item>
<el-form-item label="过敏史:" v-if="!props.isShowFrom"> <el-form-item label="过敏史:" v-if="!props.isShowFrom">
<PopoverInput :disabled="props.disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/> <PopoverInput :disabled="props.disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
@ -50,7 +51,8 @@
<el-input :disabled="props.disabled" v-model="formDate.mouthCheck"></el-input> <el-input :disabled="props.disabled" v-model="formDate.mouthCheck"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="辅助检查:" v-if="(modelType==2 || modelType ==0)&&!props.isShowFrom"> <el-form-item label="辅助检查:" v-if="(modelType==2 || modelType ==0)&&!props.isShowFrom">
<el-input style="height: 100%;width: 100%" :disabled="props.disabled" v-model="formDate.adjunctCheck"></el-input> <el-input style="height: 100%;width: 100%" :disabled="props.disabled"
v-model="formDate.adjunctCheck"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="处置:" v-if="(modelType==0 || modelType ==2)&&!props.isShowFrom"> <el-form-item label="处置:" v-if="(modelType==0 || modelType ==2)&&!props.isShowFrom">
<el-input style="height: 100%;width: 100%" :disabled="props.disabled" v-model="formDate.deal"></el-input> <el-input style="height: 100%;width: 100%" :disabled="props.disabled" v-model="formDate.deal"></el-input>
@ -61,7 +63,7 @@
</Panel> </Panel>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {computed, nextTick, ref,defineEmits} from "vue"; import {computed, nextTick, ref, defineEmits} from "vue";
import { import {
mainAppealList, mainAppealList,
nowMedicalHistoryList, nowMedicalHistoryList,
@ -79,7 +81,7 @@ const props = defineProps({
type: Boolean, type: Boolean,
default: 0 default: 0
}, },
isShowFrom:{ isShowFrom: {
type: Boolean, type: Boolean,
default: false default: false
} }
@ -108,49 +110,53 @@ const diagnosisSelect = (list: any) => {
formDate.value.diagnosisDetail = JSON.stringify(list) formDate.value.diagnosisDetail = JSON.stringify(list)
formDate.value.diagnosisSummary = diagnosisNames formDate.value.diagnosisSummary = diagnosisNames
} }
const diagnosisSearchRef= ref() const diagnosisSearchRef = ref()
const initDiagnosisSearch = (list:any,nList:any)=>{ const initDiagnosisSearch = (list: any, nList: any) => {
nextTick(()=>{ nextTick(() => {
diagnosisSearchRef.value?.init(list,nList); diagnosisSearchRef.value?.init(list, nList);
}) })
} }
const emit = defineEmits(['focus']) const emit = defineEmits(['focus'])
const focus = (e:any)=>{ const focus = (e: any) => {
emit('focus',e) emit('focus', e)
} }
const clearDiagnosis = ()=>{ const clearDiagnosis = () => {
diagnosisSearchRef.value?.clear() diagnosisSearchRef.value?.clear()
} }
defineExpose({initDiagnosisSearch,clearDiagnosis}) defineExpose({initDiagnosisSearch, clearDiagnosis})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.content { .content {
display: flex; display: flex;
.model-selector { .model-selector {
width: 100px; width: 100px;
} }
} }
.container { .container {
margin:0 24px; margin: 0 24px;
} }
:deep(.el-form-item){
:deep(.el-form-item) {
margin-bottom: 0; margin-bottom: 0;
} }
:deep(.el-form-item__label){
:deep(.el-form-item__label) {
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
} }
:deep(.el-input__wrapper){
:deep(.el-input__wrapper) {
border-radius: 0; border-radius: 0;
height: 42px; height: 42px;
background: #FFFFFF; background: #FFFFFF;
&:nth-child(2n){ border: 1px solid #EAEAEC;
border-top: none; box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
border-bottom: none; }
} :deep(.is-disabled .el-input__wrapper){
box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
} }
</style> </style>

View File

@ -25,7 +25,7 @@ import Panel from '@/components/common/Panel.vue';
import DiseaseDetails from './DiseaseDetails.vue'; import DiseaseDetails from './DiseaseDetails.vue';
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import {ref} from "vue"; import {ref} from "vue";
import {formatListTime} from "../../utils/dateUtils.ts"; import {formatListTime} from "@/utils/dateUtils.ts";
const list = ref<any>([]) const list = ref<any>([])
const init = (patientId: any) => { const init = (patientId: any) => {
post("medical/record/listByPatient",{patientId:patientId}).then((res: any) => { post("medical/record/listByPatient",{patientId:patientId}).then((res: any) => {

View File

@ -30,11 +30,9 @@ export const formatListTime = (date: any) => {
} else if (typeof date === 'string') { } else if (typeof date === 'string') {
dateDetail = new Date(date); dateDetail = new Date(date);
if (isNaN(dateDetail.getTime())) { if (isNaN(dateDetail.getTime())) {
console.error(`Invalid date string: ${date}`);
return '-'; return '-';
} }
} else { } else {
console.error(`Invalid date type: ${typeof date}`);
return '-'; return '-';
} }
const year = dateDetail.getFullYear(); const year = dateDetail.getFullYear();

View File

@ -1,7 +1,7 @@
<template xmlns="http://www.w3.org/1999/html"> <template xmlns="http://www.w3.org/1999/html">
<div class="container"> <div class="container">
<div class="left"> <div class="left">
<chargeQueue @clickItem="clickItem" ref="chargeQueueRef"></ChargeQueue> <chargeQueue @clickItem="clickItem" @getStatus="getStatus" ref="chargeQueueRef"></ChargeQueue>
</div> </div>
<div class="middle"> <div class="middle">
<el-scrollbar> <el-scrollbar>
@ -30,6 +30,7 @@
@change="handleChange" @change="handleChange"
clearable clearable
style="width: 100%" style="width: 100%"
:disabled="statusDisabled == 1"
> >
<el-option <el-option
v-for="item in doctorList" v-for="item in doctorList"
@ -45,15 +46,15 @@
</Panel> </Panel>
</div> </div>
<div style="margin-top: 24px"> <div style="margin-top: 24px">
<ServiceDetail v-model="formData.itemDetail" :status="formData.status == 0" <ServiceDetail v-model="formData.itemDetail" :status="statusDisabled == 0"
@totalPriceChange="getOrderTotalPrice"></ServiceDetail> @totalPriceChange="getOrderTotalPrice"></ServiceDetail>
</div> </div>
<div style="margin-top: 24px"> <div style="margin-top: 24px">
<GoodsDetail v-model="formData.goodsDetail" :status="formData.status == 0" <GoodsDetail v-model="formData.goodsDetail" :status="statusDisabled == 0"
@totalPriceChange="getOrderTotalPrice"></GoodsDetail> @totalPriceChange="getOrderTotalPrice"></GoodsDetail>
</div> </div>
<div class="bottom"> <div class="bottom">
<TotalPrice v-model="formData.totalPrice" @edit="saveAndCharge" :status="formData.status"></TotalPrice> <TotalPrice v-model="formData.totalPrice" @edit="saveAndCharge" :status="statusDisabled==1"></TotalPrice>
</div> </div>
</el-scrollbar> </el-scrollbar>
</div> </div>
@ -98,6 +99,7 @@ const formData = ref<any>({
diagnosisMedicalRecord: {}, diagnosisMedicalRecord: {},
goodsDetail: [], goodsDetail: [],
itemDetail: [], itemDetail: [],
patientRegistration: {}
}) })
const statusDisabled = ref(0) const statusDisabled = ref(0)
const diagnosisKeyword = ref("") const diagnosisKeyword = ref("")
@ -138,6 +140,7 @@ const patientCardRef = ref()
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})
formData.value.doctorId = formData.value.patientRegistration.organizationDoctorId
getOrderTotalPrice() getOrderTotalPrice()
nextTick(() => { nextTick(() => {
let list = JSON.parse(formData.value.diagnosisMedicalRecord.diagnosisDetail) let list = JSON.parse(formData.value.diagnosisMedicalRecord.diagnosisDetail)
@ -203,6 +206,9 @@ const list = () => {
doctorList.value = res doctorList.value = res
}) })
} }
const getStatus=(status:any)=>{
statusDisabled.value = status
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@ -235,6 +241,7 @@ const list = () => {
margin-right: 24px; margin-right: 24px;
} }
.doctor { .doctor {
width: 200px; width: 200px;
} }

View File

@ -6,8 +6,8 @@
<div class="middle"> <div class="middle">
<el-scrollbar> <el-scrollbar>
<div class="case"> <div class="case">
<CaseDetail v-if="patientRegistration.status==3" v-model="formData"></CaseDetail> <!-- <CaseDetail v-if="patientRegistration.status==3" v-model="formData"></CaseDetail>-->
<Case ref="caseRef" v-else v-model="formData" :disabled="curRegister?.status !=2" :isShowFrom="isShowFrom" <Case ref="caseRef" v-model="formData" :disabled="curRegister?.status !=2" :isShowFrom="isShowFrom"
@focus="focus"></Case> @focus="focus"></Case>
</div> </div>
<div class="service-items"> <div class="service-items">
@ -133,6 +133,7 @@ const clickItem = (item: any) => {
formData.value = res.diagnosisMedicalRecord formData.value = res.diagnosisMedicalRecord
formData.value.goodsDetail = res.goodsDetail formData.value.goodsDetail = res.goodsDetail
formData.value.itemDetail = res.itemDetail formData.value.itemDetail = res.itemDetail
formData.value.diagType = Number(formData.value.diagType)
patientRegistration.value = res.patientRegistration patientRegistration.value = res.patientRegistration
}) })

View File

@ -9,18 +9,24 @@
</div> </div>
<div class="left-bottom"> <div class="left-bottom">
<Panel title="医生列表"> <Panel title="医生列表">
<div class="search" style="padding: 0 24px"> <div class="search" style="padding: 0 24px ;height: 42px">
<el-input v-model="keyword" placeholder="搜索医生" <el-input style="height: 100%" v-model="keyword" placeholder="搜索医生姓名"
@keydown.enter="initDoctor"></el-input> @keydown.enter="initDoctor" :prefix-icon="Search"></el-input>
</div> </div>
<div class="content_list" style="padding: 0 24px"> <div class="content_list" style="padding: 0 24px">
<div class="role_list"> <div class="role_list">
<ul> <ul>
<li v-for="(item, index) in roleList" :key="index" <li v-for="(item, index) in roleList" :key="index"
@click="openDialog(item,index)" :class="{active:isShowNum==index}" > :class="{active:isShowNum==index}">
<span class="name">{{ item.name }}</span> <span class="name">{{ item.name }}</span>
<span class="section_name">{{ item.sectionNames }}</span> <span class="section_name">{{ item.sectionNames }}</span>
<span class="btn">挂号</span> <span class="btn" @click="openDialog(item,index)"
@mouseover="isShowNum = index"
@mouseleave="isShowNum = -1">
<img v-if="isShowNum==index" src="/static/images/registration/3-active.png" style="width: 15px;height: 14px;margin-right: 8px" alt="">
<img v-else src="/static/images/registration/3.png" alt="" style="width: 15px;height: 14px;margin-right: 8px">
挂号
</span>
</li> </li>
</ul> </ul>
</div> </div>
@ -43,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>
@ -77,6 +87,7 @@ import {getEndOfDay, getToday, formatDateArray} from "@/utils/dateUtils.ts";
import Calendar from "@/components/common/Calendar.vue"; import Calendar from "@/components/common/Calendar.vue";
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {apiConfig} from "@/assets/config/apiConfig.ts"; import {apiConfig} from "@/assets/config/apiConfig.ts";
import {Search} from "@element-plus/icons-vue";
const isShowNum = ref(-1) const isShowNum = ref(-1)
const roleList = ref<any>([]) const roleList = ref<any>([])
@ -100,12 +111,13 @@ const patientList = ref<any>([])
const selectedDate = ref<any>([getToday().start, getToday().end]) const selectedDate = ref<any>([getToday().start, getToday().end])
const handleDateChange = (date: any[]) => { const handleDateChange = (date: any[]) => {
selectedDate.value = formatDateArray(date) selectedDate.value = formatDateArray(date)
if(selectedDate.value[0]==selectedDate.value[1]){ if (selectedDate.value[0] == selectedDate.value[1]) {
selectedDate.value[1] =getEndOfDay(selectedDate.value[1]); // 23:59 selectedDate.value[1] = getEndOfDay(selectedDate.value[1]); // 23:59
} }
getPatientList() getPatientList()
} }
const getPatientList = () => { const getPatientList = () => {
isShowNum.value = -1
id.value = null id.value = null
post('registration/list', { post('registration/list', {
page: page.value, page: page.value,
@ -128,20 +140,24 @@ const id = ref<any>('')
const rowClick = (row: any) => { const rowClick = (row: any) => {
id.value = row.id id.value = row.id
nextTick(() => { nextTick(() => {
editRef.value?.init(row.organizationDoctorId,row.id) editRef.value?.init(row.organizationDoctorId, row.id)
}) })
} }
const editRef = ref<any>('') const editRef = ref<any>('')
const openDialog = (item: any,index: any) => { const openDialog = (item: any, index: any) => {
isShowNum.value=index isShowNum.value = index
nextTick(() => { nextTick(() => {
editRef.value?.init(item.id,null) editRef.value?.init(item.id, null)
}) })
} }
const close = () => { const close = () => {
id.value = null id.value = null
getPatientList() getPatientList()
} }
const reset=() =>{
keyword.value=''
getPatientList()
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.container-wrapper { .container-wrapper {
@ -156,12 +172,14 @@ const close = () => {
.left { .left {
height: 100%; height: 100%;
width: 319px; width: 382px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.left-top { .left-top {
height: 380px; height: 399px;
background: #FFFFFF;
border-radius: 8px;
} }
.left-bottom { .left-bottom {
@ -177,22 +195,9 @@ const close = () => {
padding: 0 10px; padding: 0 10px;
border-radius: 5px; border-radius: 5px;
align-items: center; align-items: center;
cursor: pointer;
&:hover { &:hover {
background: #4D6DE4; background: rgba(#4D6DE4, 0.3);
.name {
color: #fff;
}
.section_name {
color: #fff;
}
.btn {
color: #fff;
}
} }
.name { .name {
@ -206,10 +211,24 @@ const close = () => {
} }
.btn { .btn {
width: 50px; cursor: pointer;
color: #b9b9ba;
padding: 5px; padding: 5px;
border-radius: 3px; width: 78px;
height: 32px;
border-radius: 6px;
background: #FFFFFF;
border: 1px solid #4D6DE4;
font-weight: bold;
font-size: 14px;
color: #4D6DE4;
font-style: normal;
display: flex;
align-items: center;
justify-content: center;
&:hover {
background: #4D6DE4;
color: #FFF;
}
} }
@ -245,6 +264,7 @@ const close = () => {
flex: 1; flex: 1;
height: 100%; height: 100%;
min-width: 0; min-width: 0;
.right-content { .right-content {
padding-left: 20px; padding-left: 20px;
display: flex; display: flex;
@ -252,7 +272,10 @@ const close = () => {
height: 100%; height: 100%;
.top { .top {
padding-right: 24px;
height: 40px; height: 40px;
display: flex;
justify-content: space-between;
} }
.middle { .middle {