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

This commit is contained in:
LiJianZhao 2025-05-13 12:09:29 +08:00
commit 842b0e7624
10 changed files with 211 additions and 41 deletions

View File

@ -93,5 +93,5 @@ body {
.el-popper.is-light.type-popper, .el-popper.is-light>.el-popper__arrow:before{ .el-popper.is-light.type-popper, .el-popper.is-light>.el-popper__arrow:before{
background:#F5FAFF !important; background:#F5FAFF !important;
padding: 0 !important; padding: 0 !important;
border: 1px solid #4D6DE4 !important; //border: 1px solid #4D6DE4 !important;
} }

View File

@ -69,7 +69,6 @@ const generateCalendarData = (
// 使 // 使
const calendarData = generateCalendarData(currentYear, currentMonth); const calendarData = generateCalendarData(currentYear, currentMonth);
console.log(calendarData);
</script> </script>

View File

@ -0,0 +1,70 @@
<script setup lang="ts">
import { ref, defineProps, defineEmits } from 'vue';
const props = defineProps({
modelValue: {
type: Number,
default: 0
},
minValue: {
type: Number,
default: 0
},
maxValue: {
type: Number,
default: 100
}
});
const emit = defineEmits(['update:modelValue']);
const currentValue = ref(props.modelValue);
//
const increment = () => {
if (currentValue.value < props.maxValue) {
currentValue.value++;
emit('update:modelValue', currentValue.value);
}
};
//
const decrement = () => {
if (currentValue.value > props.minValue) {
currentValue.value--;
emit('update:modelValue', currentValue.value);
}
};
const change = () => {
emit('update:modelValue', currentValue.value);
};
</script>
<template>
<div class="number-input">
<button @click="decrement" :disabled="currentValue <= minValue">-</button>
<el-input style="width: 100px" v-model.number="currentValue" :min="minValue" :max="maxValue" @input="change"/>
<button @click="increment" :disabled="currentValue >= maxValue">+</button>
</div>
</template>
<style scoped lang="scss">
.number-input {
display: flex;
align-items: center;
}
button {
width: 30px;
height: 30px;
font-size: 18px;
cursor: pointer;
}
input {
width: 60px;
text-align: center;
margin: 0 5px;
}
</style>

View File

@ -1,7 +1,8 @@
<template> <template>
<panel title="药品耗材"> <panel title="药品耗材">
<el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="150" style="width: 100%"> <el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="300" style="width: 100%"
<el-table-column prop="name" label="名称"> :header-cell-style="{ backgroundColor: '#F5FAFF' }">
<el-table-column prop="name" label="名称" width="400">
<template #default="scope"> <template #default="scope">
<el-popover <el-popover
placement="top-start" placement="top-start"
@ -39,20 +40,20 @@
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="selectedPrice" label="单价"> <el-table-column prop="selectedPrice" label="单价" width="200">
<template #default="scope"> <template #default="scope">
{{ scope.row.selectedPrice }} {{ scope.row.selectedPrice }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="number" label="数量"> <el-table-column prop="number" label="数量" width="250">
<template #default="scope"> <template #default="scope">
<div v-if="props.status"> <div v-if="props.status">
<el-input-number v-model="scope.row.selectedNum" :min="0" @change="handleNumChange(scope.row)" <el-input-number v-model="scope.row.selectedNum" :min="0" @change="handleNumChange(scope.row)"
size="small"></el-input-number> style="margin-right: 5px"></el-input-number>
<el-dropdown> <el-dropdown v-if="scope.row.trdnFlag == 1">
<span style="line-height: 30px;margin-left: 10px">{{ 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 v-if="scope.row.trdnFlag == 1"> <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)">
@ -61,6 +62,7 @@
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<span v-else style="line-height: 30px;margin-left: 10px">{{ scope.row.selectedUnit }}</span>
</div> </div>
<div v-else> <div v-else>
<div>{{ scope.row.selectedNum }} {{ scope.row.selectedUnit }}</div> <div>{{ scope.row.selectedNum }} {{ scope.row.selectedUnit }}</div>
@ -91,7 +93,7 @@
:width="1000" :width="1000"
></SearchInput> ></SearchInput>
</div> </div>
<span v-if="status">合计{{ getTotalPrice() }}</span> <span v-if="status" style="padding: 10px">合计{{ getTotalPrice() }}</span>
</div> </div>
</panel> </panel>
</template> </template>
@ -163,7 +165,6 @@ const goodsSelect = (row: any) => {
if (goodsDetail.value.find((i: any) => i.id == row.id)) { if (goodsDetail.value.find((i: any) => i.id == row.id)) {
ElMessage.warning("数据已存在,只能加数量") ElMessage.warning("数据已存在,只能加数量")
goodsDetail.value.find((i: any) => i.id == row.id).selectedNum += 1 goodsDetail.value.find((i: any) => i.id == row.id).selectedNum += 1
goodsDetail.value.find((i: any) => i.id == row.id).selectedUnit = row.packagingUnit
goodsDetail.value.find((i: any) => i.id == row.id).selectedPrice = row.unitPrice goodsDetail.value.find((i: any) => i.id == row.id).selectedPrice = row.unitPrice
emit('totalPriceChange') emit('totalPriceChange')
return return
@ -220,8 +221,11 @@ const colosInfo = () => {
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-table__cell) { :deep(.el-table tr) {
padding: 0 4px; font-size: 16px;
font-weight: 500;
color: #333333;
height: 60px;
} }
.bottom { .bottom {

View File

@ -1,7 +1,7 @@
<template> <template>
<Panel title="服务项目"> <Panel title="服务项目">
<el-table v-if="itemDetail.length>0" :data="itemDetail"> <el-table v-if="itemDetail.length>0" :data="itemDetail" max-height="300" :header-cell-style="{ backgroundColor: '#F5FAFF' }">
<el-table-column prop="itemName" label="项目名称" show-overflow-tooltip width="200"> <el-table-column prop="itemName" label="项目名称" show-overflow-tooltip width="400">
<template #default="scope"> <template #default="scope">
<el-popover <el-popover
width="485" width="485"
@ -27,15 +27,15 @@
</el-popover> </el-popover>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单价"> <el-table-column label="单价" width="200">
<template #default="scope"> <template #default="scope">
{{ scope.row.selectedPrice }} {{ scope.row.selectedPrice }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量" width="180"> <el-table-column label="数量" width="250">
<template #default="scope"> <template #default="scope">
<el-input-number v-if="props.status" v-model="scope.row.selectedNum" :min="0" <el-input-number v-if="props.status" v-model="scope.row.selectedNum" :min="0"
@change="handleNumChange" size="small"></el-input-number> @change="handleNumChange" style="margin-right: 5px"></el-input-number>
<span v-else>{{ scope.row.selectedNum }}</span> <span v-else>{{ scope.row.selectedNum }}</span>
{{ scope.row.selectedUnit }} {{ scope.row.selectedUnit }}
</template> </template>
@ -61,7 +61,7 @@
:show-config="serviceShowConfig" :show-config="serviceShowConfig"
@selectedCallBack="serviceSelect" :disabled="!props.status"></SearchInput> @selectedCallBack="serviceSelect" :disabled="!props.status"></SearchInput>
</div> </div>
<span v-if="status">合计{{ getTotalPrice() || 0 }}</span> <span v-if="status" style="padding: 10px">合计{{ getTotalPrice() || 0 }}</span>
</div> </div>
</Panel> </Panel>
</template> </template>
@ -121,7 +121,6 @@ const serviceSelect = (row: any) => {
if (itemDetail.value.find((i: any) => i.id == row.id)) { if (itemDetail.value.find((i: any) => i.id == row.id)) {
ElMessage.warning("数据已存在,只能加数量") ElMessage.warning("数据已存在,只能加数量")
itemDetail.value.find((i: any) => i.id == row.id).selectedNum += 1 itemDetail.value.find((i: any) => i.id == row.id).selectedNum += 1
itemDetail.value.find((i: any) => i.id == row.id).selectedUnit = row.packagingUnit
itemDetail.value.find((i: any) => i.id == row.id).selectedPrice = row.unitPrice itemDetail.value.find((i: any) => i.id == row.id).selectedPrice = row.unitPrice
emit('totalPriceChange') emit('totalPriceChange')
return return
@ -157,8 +156,11 @@ const hide = () => {
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-table__cell) { :deep(.el-table tr) {
padding: 0 4px; font-size: 16px;
font-weight: 500;
color: #333333;
height: 60px;
} }
.bottom { .bottom {

View File

@ -1,17 +1,46 @@
<template> <template>
<el-popover placement="bottom-start" :visible="isVisible" :width="props.width" ref="popoverRef" <el-popover placement="bottom-start" :visible="isVisible" :width="props.width" ref="popoverRef"
@before-enter="beforeShow" @hide="afterShow"> @before-enter="beforeShow" @hide="afterShow" popper-class="type-popper">
<template #reference> <template #reference>
<el-input v-model="keyword" style="width: 100%;height: 100%" @input="changeInput" :disabled="disabled" @click="changeInput" <el-input v-model="keyword" style="width: 100%;height: 100%" @input="changeInput" :disabled="disabled" @click="changeInput"
placeholder="诊断选择" ref="inputRef" @focus="focus" @blur="handleBlur"></el-input> placeholder="诊断选择" ref="inputRef" @focus="focus" @blur="handleBlur"></el-input>
</template> </template>
<div class="container"> <div class="container" style="height: 300px">
<el-table :data="searchList" style="width: 100%" @row-click="clickRow" :show-header="props.showHeader" <el-scrollbar style="height: 300px">
size="small" <table class="table" style="width: 100%; border-collapse: collapse;max-height: 50px">
max-height="250px"> <!-- 表头 -->
<el-table-column v-for="item in showConfig" :prop="item.prop" :label="item.label" <thead>
show-overflow-tooltip></el-table-column> <tr class="table-title">
</el-table> <th
v-for="item in showConfig"
:key="item.prop"
style="background-color: #f5f7fa; padding: 8px;"
>
{{ item.label }}
</th>
</tr>
</thead>
<!-- 表体 -->
<tbody>
<tr class="table-body"
v-for="(item, index) in searchList"
:key="index"
@click="clickRow(item)"
style="cursor: pointer; transition: background-color 0.2s;"
>
<td
v-for="showItem in showConfig"
:key="showItem.prop"
style="vertical-align: middle; padding: 8px;"
>
{{ item[showItem.prop] }}
</td>
</tr>
</tbody>
</table>
</el-scrollbar>
</div> </div>
</el-popover> </el-popover>
</template> </template>
@ -146,4 +175,55 @@ defineExpose({init,clear})
:deep(.el-table--small .el-table__cell) { :deep(.el-table--small .el-table__cell) {
padding: 0; padding: 0;
} }
.table {
th {
background: none !important;
}
.table-title {
height: 52px;
font-weight: 500;
font-size: 14px;
color: #333333;
font-style: normal;
th {
text-align: left;
&:nth-child(1) {
text-align: left;
border-radius: 8px 8px 0 0;
padding-left: 24px !important;
}
}
}
.table-body {
height: 52px;
font-weight: 500;
font-size: 14px;
color: #666666;
font-style: normal;
td {
&:nth-child(1) {
text-align: left;
padding-left: 30px !important;
white-space: nowrap; /* 防止文本换行 */
overflow: hidden; /* 隐藏溢出的文本 */
text-overflow: ellipsis; /* 显示省略号 */
}
}
&:last-child {
border-radius: 0 0 8px 8px;
}
&:hover {
background-color: #4D6DE4;
color: #fff;
}
}
}
</style> </style>

View File

@ -20,8 +20,8 @@ const editItem= () => {
<div class="footer"> <div class="footer">
<div>总金额<span class="text icon"></span><span class="text">{{ totalAmount || '0' }}</span></div> <div>总金额<span class="text icon"></span><span class="text">{{ totalAmount || '0' }}</span></div>
<div class="btn-group"> <div class="btn-group">
<el-button v-if="status" @click="deleteItem">取消接诊</el-button> <span v-if="status" @click="deleteItem">取消接诊</span>
<el-button v-if="status" type="primary" @click="save">完成接诊</el-button> <span v-if="status" @click="save">完成接诊</span>
<!-- <el-button v-if="status == 3" type="primary" @click="editItem">修改</el-button>--> <!-- <el-button v-if="status == 3" type="primary" @click="editItem">修改</el-button>-->
</div> </div>
</div> </div>
@ -45,5 +45,22 @@ const editItem= () => {
.text { .text {
color: #FF282E color: #FF282E
} }
.btn-group{
display: flex;
span{
width: 119px;
height: 48px;
text-align: center;
line-height: 48px;
border-radius: 8px;
border: 1px solid #D8D8D8;
margin-left: 24px;
cursor: pointer;
&:hover{
background: #4D6DE4 ;
color: #fff;
}
}
}
} }
</style> </style>

View File

@ -82,8 +82,7 @@ const getInfoFor1101 = (params: any) => {
duration: 1000, duration: 1000,
}); });
emit('socialCardUpdate', socialCard.value) emit('socialCardUpdate', socialCard.value)
}).catch((err:any) => {
}).catch(() => {
isReading.value = false; isReading.value = false;
emit('changeLoading', false) emit('changeLoading', false)
ElMessage({ ElMessage({
@ -105,7 +104,7 @@ onUnmounted(() => {
}) })
const close = () => { const close = () => {
socialCard.value = null socialCard.value = {}
} }
defineExpose({close}) defineExpose({close})
</script> </script>

View File

@ -2,7 +2,6 @@
<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"> <div style="padding:0 24px">
<el-form <el-form
v-loading="loading" v-loading="loading"

View File

@ -93,6 +93,7 @@ const isShowNum = ref(-1)
const roleList = ref<any>([]) const roleList = ref<any>([])
onMounted(() => { onMounted(() => {
selectedDate.value = [getToday().start, getToday().end]
initDoctor() initDoctor()
getPatientList() getPatientList()
}) })
@ -119,7 +120,6 @@ const handleDateChange = (date: any[]) => {
const getPatientList = () => { const getPatientList = () => {
isShowNum.value = -1 isShowNum.value = -1
id.value = null id.value = null
selectedDate.value = [getToday().start, getToday().end]
post('registration/list', { post('registration/list', {
page: page.value, page: page.value,
size: size.value, size: size.value,