This commit is contained in:
ChenQiuYu 2025-05-22 14:49:02 +08:00
parent deee350d04
commit df82f8d26d
4 changed files with 109 additions and 82 deletions

View File

@ -158,11 +158,8 @@ const focus = (e: any) => {
const popoverRef = ref<any>(null); const popoverRef = ref<any>(null);
const itemInfo = ref<any>({}); const itemInfo = ref<any>({});
const show = (item: any) => { const show = (item: any) => {
if (!item.itemSocialCode) return
post('social/directory/getItemByCode', {code: item.itemSocialCode}).then((res: any) => { post('social/directory/getItemByCode', {code: item.itemSocialCode}).then((res: any) => {
if (!res){
itemInfo.value = {}
return
}
itemInfo.value = res itemInfo.value = res
}) })
} }

View File

@ -2,48 +2,50 @@
<Mask :is-show="isShow" width="800" :height="height" title="挂号" @close="close" <Mask :is-show="isShow" width="800" :height="height" title="挂号" @close="close"
:show-footer="true"> :show-footer="true">
<template #default> <template #default>
<div style="padding:24px;height: 100%;width: 100%;display: flex;flex-direction: column"> <div style="padding:0 24px;height: 100%;display: flex;flex-direction: column">
<el-form <el-form
v-loading="loading" v-loading="loading"
:model="edit_data" :model="edit_data"
:inline=true label-width="auto"
:rules="rules" :rules="rules"
ref="form" ref="form"
style="flex: 1;width: 100%;" style="flex: 1;width: 100%"
label-position="top"
> >
<el-row :gutter="24" style="width: 100%"> <el-descriptions
<el-col :span="8"> border
<el-form-item prop="name" style="margin-bottom: 2px" label="姓名"> direction="vertical"
:column="4"
style="margin-top: 20px"
>
<el-descriptions-item label="姓名" width="200">
<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||edit_data.status==0"></el-input> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
<el-col :span="8"> <el-descriptions-item label="性别" width="200">
<el-form-item prop="gender" label="性别"> <el-form-item prop="gender">
<el-radio-group v-model="edit_data.gender" <el-radio-group v-model="edit_data.gender"
:disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"> :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>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
<el-col :span="8"> <el-descriptions-item label="年龄" width="200">
<el-form-item prop="age" label="年龄"> <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||edit_data.status==0"></el-input> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
</el-row> <el-descriptions-item label="手机号" width="200">
<el-row :gutter="24" style="width: 100%"> <el-form-item prop="phone">
<el-col :span="8">
<el-form-item label="手机号" prop="phone">
<el-input v-model="edit_data.phone" placeholder="手机号" <el-input v-model="edit_data.phone" placeholder="手机号"
:disabled="edit_data.status==3||edit_data.status==0"></el-input> :disabled="edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
<el-col :span="8"> <el-descriptions-item label="医生">
<el-form-item label="医生" prop="organizationDoctorId"> <el-form-item prop="organizationDoctorId">
<el-select <el-select
v-model="edit_data.organizationDoctorId" v-model="edit_data.organizationDoctorId"
placeholder="请选择医生" placeholder="请选择医生"
@ -59,9 +61,9 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
<el-col :span="8"> <el-descriptions-item label="科室">
<el-form-item label="科室"> <el-form-item>
<el-select <el-select
v-model="edit_data.organizationSectionId" v-model="edit_data.organizationSectionId"
placeholder="选择科室" placeholder="选择科室"
@ -75,11 +77,9 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
</el-row> <el-descriptions-item label="证件类型">
<el-row :gutter="24" style="width: 100%"> <el-form-item prop="certType">
<el-col :span="8">
<el-form-item prop="certType" label="证件类型">
<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||edit_data.status==0"> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0">
<el-option <el-option
@ -90,59 +90,66 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
<el-col :span="8"> <el-descriptions-item label="证件码">
<el-form-item label="证件码" 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||edit_data.status==0"></el-input> :disabled="edit_data.status==1||edit_data.status==3||edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
<el-col :span="8"> <el-descriptions-item label="初/复诊">
<el-form-item label="初/复诊" prop="visitType"> <el-form-item prop="visitType">
<el-select v-model="edit_data.visitType" placeholder="就诊类型" :disabled="edit_data.status==0"> <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>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
</el-row> <el-descriptions-item label="费用类型">
<el-row :gutter="24" style="width: 100%"> <el-form-item prop="type">
<el-col :span="8">
<el-form-item label="费用类型" 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">
<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>
</el-col> </el-descriptions-item>
<el-col :span="16"> <el-descriptions-item
<el-form-item label="备注"> :span="2"
<el-input v-model="edit_data.memo" placeholder="备注" :disabled="edit_data.status==0"></el-input> label="时间">
<el-form-item v-if="props.dateName!='预约'" style="width: 100%">
<div>{{ getToday().start }}</div>
</el-form-item> </el-form-item>
</el-col> <div v-else style="display: flex;width: 100%">
</el-row> <el-form-item style="width: 100%" prop="date">
<el-row style="width: 100%" v-if="props.dateName=='预约'">
<el-col :span="24">
<el-form-item label="时间">
<div style="display: flex;width: 100%">
<el-date-picker <el-date-picker
v-model="edit_data.date" v-model="edit_data.date"
type="date" type="date"
format="YYYY/MM/DD"
value-format="YYYY-MM-DD"
placeholder="选择日期" placeholder="选择日期"
style="width: 100%" style="width: 50%"
:disabledDate="disabledDate" :disabledDate="disabledDate"
/> />
<el-time-select <el-time-select
v-model="edit_data.dateTime" v-model="time"
start="08:30" start="00:00"
step="00:15" step="00:15"
end="18:30" end="23:45"
:min-time="getCurrentTime()"
placeholder="选择时间" placeholder="选择时间"
style="width: 50%"
/> />
</div> </el-form-item>
</div>
</el-descriptions-item>
<el-descriptions-item
:span="4"
label="备注">
<el-form-item>
<el-input v-model="edit_data.memo" placeholder="备注" :disabled="edit_data.status==0"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-descriptions-item>
</el-row> </el-descriptions>
</el-form> </el-form>
<h5 v-if="!isShowCard" style="margin:24px 0;font-size: 16px">险种列表</h5> <h5 v-if="!isShowCard" style="margin:24px 0;font-size: 16px">险种列表</h5>
<el-table <el-table
@ -208,25 +215,17 @@ import {getKey} from "@/utils/discrotyUtil.ts";
import insutypes from "@/assets/config/directory/insutypes.json" import insutypes from "@/assets/config/directory/insutypes.json"
import {apiConfig} from "@/assets/config/apiConfig.ts"; import {apiConfig} from "@/assets/config/apiConfig.ts";
import Quick from "@/components/charge/RecordsLog/Quick.vue"; import Quick from "@/components/charge/RecordsLog/Quick.vue";
import {getCurrentTime, getToday} from "@/utils/dateUtils.ts";
const height = ref(600) const height = ref(570)
const certTypeList = ref<any>( const certTypeList = ref<any>(
Object.entries(psnCertTypes) Object.entries(psnCertTypes)
.map(([id, name]) => ({id: Number(id), name})) .map(([id, name]) => ({id: Number(id), name}))
.sort((a, b) => a.id - b.id) .sort((a, b) => a.id - b.id)
) )
const disabledDate = (date: Date) => { const edit_data = ref<any>({
const today = new Date(); timeList: []
today.setHours(0, 0, 0, 0); // 00:00:00
return date < today; //
};
const props = defineProps({
dateName: {
type: String,
default: '现在'
},
}) })
const edit_data = ref<any>({})
const rules = ref<any>({ const rules = ref<any>({
name: [ name: [
{required: true, message: '请输入名称', trigger: 'blur'}, {required: true, message: '请输入名称', trigger: 'blur'},
@ -259,24 +258,44 @@ const rules = ref<any>({
type: [ type: [
{required: true, message: '请选择费用类型', trigger: 'change'}, {required: true, message: '请选择费用类型', trigger: 'change'},
], ],
date: [
{required: true, message: '请选择就诊时间', trigger: 'change'},
]
}) })
const isShow = ref(false) const isShow = ref(false)
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const close = () => { const close = () => {
isShow.value = false isShow.value = false
edit_data.value = {} time.value = ''
edit_data.value = {
timeList: [],
}
isShowCard.value = true isShowCard.value = true
nextTick(() => { nextTick(() => {
cardDefaultRef.value?.close() cardDefaultRef.value?.close()
height.value = 600 height.value = 570
}) })
emit('close') emit('close')
} }
const form = ref() const form = ref()
const quickRef = ref() const quickRef = ref()
const time = ref()
const disabledDate = (date: Date) => {
const today = new Date();
today.setHours(0, 0, 0, 0); // 00:00:00
return date < today; //
};
const props = defineProps({
dateName: {
type: String,
default: '现在'
},
})
const save = () => { const save = () => {
if (props.dateName != '预约') { if (props.dateName == '现在') {
edit_data.value.time = '现在' edit_data.value.timeList = []
} else {
edit_data.value.timeList.push(new Date(edit_data.value.date), time.value)
} }
let data = { let data = {
...edit_data.value, ...edit_data.value,
@ -342,12 +361,12 @@ const quickShow = ref<any>(false)
const init = (doctorId: any = "", id: any = null, show: any = false) => { const init = (doctorId: any = "", id: any = null, show: any = false) => {
isShow.value = true isShow.value = true
quickShow.value = show quickShow.value = show
console.log("doctorId", quickShow.value)
edit_data.value.organizationDoctorId = doctorId || "" edit_data.value.organizationDoctorId = doctorId || ""
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
edit_data.value.certType = Number(edit_data.value.certType) edit_data.value.certType = Number(edit_data.value.certType)
time.value = edit_data.value.timeList[edit_data.value.timeList.length - 1]
}) })
} }
getSectionList() getSectionList()
@ -383,9 +402,9 @@ const socialCardUpdate = (e: any) => {
} }
nextTick(() => { nextTick(() => {
if (tableData.value.length > 0) { if (tableData.value.length > 0) {
height.value = 830 height.value = 870
} else { } else {
height.value = 600 height.value = 570
} }
}) })
loading.value = false loading.value = false
@ -402,7 +421,7 @@ const deleteCard = () => {
tableData.value = [] tableData.value = []
nextTick(() => { nextTick(() => {
cardDefaultRef.value?.close() cardDefaultRef.value?.close()
height.value = 470 height.value = 570
}) })
} }
}, },

View File

@ -138,3 +138,11 @@ export const getPrevious30Days=()=> {
} }
return dates[dates.length-1]; return dates[dates.length-1];
} }
//获取当前时间的时分
export const getCurrentTime=()=> {
const currentDate = new Date();
const hours = currentDate.getHours();
const minutes = currentDate.getMinutes();
return `${hours}:${minutes}`;
}

View File

@ -18,7 +18,7 @@
<ul class="role_list"> <ul class="role_list">
<el-scrollbar style="height: 100%"> <el-scrollbar style="height: 100%">
<li v-for="(item, index) in roleList" :key="index" <li v-for="(item, index) in roleList" :key="index"
:class="{active:isShowNum==index}"> :class="{active:isShowNum==index}" @click="changeRole(item,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 v-if="dateName" class="btn" @click="openDialog(item,index)" <span v-if="dateName" class="btn" @click="openDialog(item,index)"
@ -185,6 +185,9 @@ const reset = () => {
keyword.value = '' keyword.value = ''
getPatientList() getPatientList()
} }
const changeRole=(item: any) => {
getPatientList()
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.container-wrapper { .container-wrapper {