This commit is contained in:
ChenQiuYu 2025-05-22 13:32:13 +08:00
parent c7914d555a
commit 6696fed2e8
5 changed files with 150 additions and 72 deletions

View File

@ -3,9 +3,10 @@
<div class="panel-content" style="padding: 0 24px 24px"> <div class="panel-content" style="padding: 0 24px 24px">
<el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="300" style="width: 100%" <el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="300" style="width: 100%"
:header-cell-style="{ backgroundColor: '#F5FAFF' }"> :header-cell-style="{ backgroundColor: '#F5FAFF' }">
<el-table-column prop="name" label="名称" width="400"> <el-table-column prop="name" label="名称" width="400" :show-overflow-tooltip="showTooltip">
<template #default="scope"> <template #default="scope">
<el-popover <el-popover
v-if="!showTooltip"
placement="top-start" placement="top-start"
trigger="hover" trigger="hover"
width="600" width="600"
@ -39,6 +40,7 @@
</div> </div>
</div> </div>
</el-popover> </el-popover>
<span v-else>{{ scope.row.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="selectedPrice" label="单价" width="200"> <el-table-column prop="selectedPrice" label="单价" width="200">
@ -55,7 +57,9 @@
<span style="line-height: 30px;margin-left: 10px;cursor: pointer">{{ scope.row.selectedUnit }}</span> <span style="line-height: 30px;margin-left: 10px;cursor: pointer">{{ scope.row.selectedUnit }}</span>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="selectUnit(scope.row,scope.row.packagingUnit)">{{ scope.row.packagingUnit }} <el-dropdown-item @click="selectUnit(scope.row,scope.row.packagingUnit)">{{
scope.row.packagingUnit
}}
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item @click="selectUnit(scope.row,scope.row.minPackagingUnit)"> <el-dropdown-item @click="selectUnit(scope.row,scope.row.minPackagingUnit)">
{{ scope.row.minPackagingUnit }} {{ scope.row.minPackagingUnit }}
@ -72,13 +76,15 @@
</el-table-column> </el-table-column>
<el-table-column label="小计"> <el-table-column label="小计">
<template #default="scope"> <template #default="scope">
{{ Math.round(scope.row.selectedNum * scope.row.selectedPrice * 100) / 100 }} {{ Math.round(scope.row.selectedNum * scope.row.selectedPrice * 100) / 100 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" v-if="props.status"> <el-table-column label="操作" v-if="props.status">
<template #default="scope"> <template #default="scope">
<el-button type="danger" link @click="delGoods(scope.row)"> <el-button type="danger" link @click="delGoods(scope.row)">
<el-icon style="margin-right: 3px"><Delete /></el-icon> <el-icon style="margin-right: 3px">
<Delete/>
</el-icon>
删除 删除
</el-button> </el-button>
</template> </template>
@ -105,7 +111,7 @@
<script setup lang="ts"> <script setup lang="ts">
import SearchInput from "@/components/SearchInput.vue"; import SearchInput from "@/components/SearchInput.vue";
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {ref} from "vue"; import {onMounted, ref} from "vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import {Delete} from "@element-plus/icons-vue"; import {Delete} from "@element-plus/icons-vue";
@ -120,6 +126,7 @@ const props = defineProps({
default: false default: false
} }
}) })
const showTooltip = ref(false);
const goodsDetail = defineModel<any>(); const goodsDetail = defineModel<any>();
const delGoods = (item: any) => { const delGoods = (item: any) => {
goodsDetail.value = goodsDetail.value.filter((i: any) => i.id != item.id) goodsDetail.value = goodsDetail.value.filter((i: any) => i.id != item.id)
@ -165,7 +172,7 @@ const goodsSelect = (row: any) => {
row.selectedUnit = row.packagingUnit row.selectedUnit = row.packagingUnit
row.selectedPrice = row.unitPrice row.selectedPrice = row.unitPrice
row.shouldNumber = 1; row.shouldNumber = 1;
row.idCode = row.idCode?row.idCode==""?null:row.idCode.split(","):null row.idCode = row.idCode ? row.idCode == "" ? null : row.idCode.split(",") : null
if (goodsDetail.value.find((i: any) => i.id == row.id)) { if (goodsDetail.value.find((i: any) => i.id == row.id)) {
@ -206,7 +213,7 @@ const getTotalPrice = () => {
if (goodsDetail.value) { if (goodsDetail.value) {
goodsDetail.value.forEach((item: any) => { goodsDetail.value.forEach((item: any) => {
totalPrice += item.selectedNum * item.selectedPrice totalPrice += item.selectedNum * item.selectedPrice
totalPrice = Math.round(totalPrice * 100) / 100 totalPrice = Math.round(totalPrice * 100) / 100
}) })
} }
@ -217,7 +224,8 @@ const focus = (e: any) => {
} }
const hilistInfo = ref<any>({}) const hilistInfo = ref<any>({})
const getHilistInfo = (item: any) => { const getHilistInfo = (item: any) => {
if (item.hilistCode) { console.log("item", item)
if (item.hilistCode != null) {
post("social/directory/getByCode", {code: item.hilistCode}).then((res: any) => { post("social/directory/getByCode", {code: item.hilistCode}).then((res: any) => {
hilistInfo.value = res hilistInfo.value = res
}) })

View File

@ -157,9 +157,11 @@ const focus = (e: any) => {
} }
const itemInfo = ref<any>({}); const itemInfo = ref<any>({});
const show = (item: any) => { const show = (item: any) => {
post('social/directory/getItemByCode', {code: item.itemSocialCode}).then((res: any) => { if(item.itemSocialCode){
itemInfo.value = res post('social/directory/getItemByCode', {code: item.itemSocialCode}).then((res: any) => {
}) itemInfo.value = res
})
}
} }
const hide = () => { const hide = () => {
itemInfo.value = {} itemInfo.value = {}

View File

@ -2,51 +2,48 @@
<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:0 24px;height: 100%;display: flex;flex-direction: column"> <div style="padding:24px;height: 100%;width: 100%;display: flex;flex-direction: column">
<el-form <el-form
v-loading="loading" v-loading="loading"
:model="edit_data" :model="edit_data"
label-width="auto" :inline=true
:rules="rules" :rules="rules"
ref="form" ref="form"
style="flex: 1;width: 100%" style="flex: 1;width: 100%;"
label-position="top"
> >
<el-descriptions <el-row :gutter="24" style="width: 100%">
border <el-col :span="8">
direction="vertical" <el-form-item prop="name" style="margin-bottom: 2px" label="姓名">
label-width="100"
:column="4"
style="margin-top: 20px"
>
<el-descriptions-item label="姓名">
<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-descriptions-item> </el-col>
<el-descriptions-item label="性别"> <el-col :span="8">
<el-form-item prop="gender"> <el-form-item prop="gender" label="性别">
<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-descriptions-item> </el-col>
<el-descriptions-item label="年龄"> <el-col :span="8">
<el-form-item prop="age"> <el-form-item prop="age" label="年龄">
<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-descriptions-item> </el-col>
<el-descriptions-item label="手机号"> </el-row>
<el-form-item prop="phone"> <el-row :gutter="24" style="width: 100%">
<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-descriptions-item> </el-col>
<el-descriptions-item label="医生"> <el-col :span="8">
<el-form-item prop="organizationDoctorId"> <el-form-item label="医生" prop="organizationDoctorId">
<el-select <el-select
v-model="edit_data.organizationDoctorId" v-model="edit_data.organizationDoctorId"
placeholder="请选择医生" placeholder="请选择医生"
@ -62,9 +59,9 @@
</el-option> </el-option>
</el-select> </el-select>
</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="科室">
<el-select <el-select
v-model="edit_data.organizationSectionId" v-model="edit_data.organizationSectionId"
placeholder="选择科室" placeholder="选择科室"
@ -78,11 +75,11 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
</el-row>
<el-row :gutter="24" style="width: 100%">
<el-descriptions-item label="证件类型"> <el-col :span="8">
<el-form-item prop="certType"> <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
@ -93,38 +90,59 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-col>
<el-descriptions-item label="证件码"> <el-col :span="8">
<el-form-item prop="certNo"> <el-form-item label="证件码" 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-descriptions-item> </el-col>
<el-col :span="8">
<el-form-item label="初/复诊" prop="visitType">
<el-descriptions-item label="初/复诊">
<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-descriptions-item> </el-col>
<el-descriptions-item label="费用类型"> </el-row>
<el-form-item prop="type"> <el-row :gutter="24" style="width: 100%">
<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-descriptions-item> </el-col>
<el-descriptions-item <el-col :span="16">
label="备注"> <el-form-item label="备注">
<el-form-item>
<el-input v-model="edit_data.memo" placeholder="备注" :disabled="edit_data.status==0"></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-col>
</el-descriptions> </el-row>
<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
v-model="edit_data.date"
type="date"
placeholder="选择日期"
style="width: 100%"
:disabledDate="disabledDate"
/>
<el-time-select
v-model="edit_data.dateTime"
start="08:30"
step="00:15"
end="18:30"
placeholder="选择时间"
/>
</div>
</el-form-item>
</el-col>
</el-row>
</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
@ -191,12 +209,23 @@ 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";
const height = ref(470) const height = ref(600)
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 today = new Date();
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 edit_data = ref<any>({})
const rules = ref<any>({ const rules = ref<any>({
name: [ name: [
@ -239,13 +268,16 @@ const close = () => {
isShowCard.value = true isShowCard.value = true
nextTick(() => { nextTick(() => {
cardDefaultRef.value?.close() cardDefaultRef.value?.close()
height.value = 470 height.value = 600
}) })
emit('close') emit('close')
} }
const form = ref() const form = ref()
const quickRef = ref() const quickRef = ref()
const save = () => { const save = () => {
if (props.dateName != '预约') {
edit_data.value.time = '现在'
}
let data = { let data = {
...edit_data.value, ...edit_data.value,
psnNo: socialCard.value?.data?.baseinfo.psn_no, psnNo: socialCard.value?.data?.baseinfo.psn_no,
@ -351,9 +383,9 @@ const socialCardUpdate = (e: any) => {
} }
nextTick(() => { nextTick(() => {
if (tableData.value.length > 0) { if (tableData.value.length > 0) {
height.value = 700 height.value = 830
} else { } else {
height.value = 470 height.value = 600
} }
}) })
loading.value = false loading.value = false

View File

@ -127,3 +127,14 @@ export const getCurrentDate=()=> {
const day = String(date.getDate()).padStart(2, '0'); // 补0操作 const day = String(date.getDate()).padStart(2, '0'); // 补0操作
return `${year}-${month}-${day}`; return `${year}-${month}-${day}`;
} }
//帮我写个方法获取前30天日期并返回
export const getPrevious30Days=()=> {
const dates = [];
const currentDate = new Date();
for (let i = 0; i < 31; i++) {
const date = new Date(currentDate);
date.setDate(currentDate.getDate() - i);
dates.push(date.toISOString().slice(0, 10));
}
return dates[dates.length-1];
}

View File

@ -21,14 +21,15 @@
: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" @click="openDialog(item,index)" <span v-if="dateName" class="btn" @click="openDialog(item,index)"
@mouseover="isShowNum = index" @mouseover="isShowNum = index"
@mouseleave="isShowNum = -1"> @mouseleave="isShowNum = -1">
<img v-if="isShowNum==index" src="/static/images/registration/3-active.png" <img v-if="isShowNum==index" src="/static/images/registration/3-active.png"
style="width: 15px;height: 14px;margin-right: 8px" alt=""> style="width: 15px;height: 14px;margin-right: 8px" alt="">
<img v-else src="/static/images/registration/3.png" alt="" <img v-else src="/static/images/registration/3.png" alt=""
style="width: 15px;height: 14px;margin-right: 8px"> style="width: 15px;height: 14px;margin-right: 8px">
挂号
{{ dateName ? dateName : '挂号' }}
</span> </span>
</li> </li>
</el-scrollbar> </el-scrollbar>
@ -72,7 +73,7 @@
</Panel> </Panel>
</div> </div>
</div> </div>
<Edit ref="editRef" @close="getPatientList"></Edit> <Edit :dateName="dateName" ref="editRef" @close="getPatientList"></Edit>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -82,19 +83,43 @@ import Mask from "@/components/common/Mask.vue";
import Edit from "@/components/registration/Edit.vue"; import Edit from "@/components/registration/Edit.vue";
import List from "@/components/registration/List.vue"; import List from "@/components/registration/List.vue";
import {post} from "@/utils/request"; import {post} from "@/utils/request";
import {getEndOfDay, getToday, formatDateArray} from "@/utils/dateUtils.ts"; import {getEndOfDay, getToday, formatDateArray, getPrevious30Days} 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"; import {Search} from "@element-plus/icons-vue";
const selectDate = (date: any)=>{
console.log(date) const dateName = ref<any>('挂号')
const selectDate = (date: any) => {
console.log(date, 'date')
dateName.value = getActionText(date)
} }
const getActionText = (date: string) => {
const today = new Date();
const selectedDate = new Date(date);
//,
if (
selectedDate.getFullYear() < today.getFullYear() ||
selectedDate.getMonth() < today.getMonth() ||
selectedDate.getDate() < today.getDate()
)
{
return ''
} else if (
selectedDate.getFullYear() === today.getFullYear() &&
selectedDate.getMonth() === today.getMonth() &&
selectedDate.getDate() === today.getDate()
) {
return '挂号'; //
} else {
return '预约'; //
}
};
const isShowNum = ref(-1) const isShowNum = ref(-1)
const roleList = ref<any>([]) const roleList = ref<any>([])
onMounted(() => { onMounted(() => {
selectedDate.value = [getToday().start, getToday().end] selectedDate.value = [getPrevious30Days(), getToday().end]
initDoctor() initDoctor()
getPatientList() getPatientList()
}) })