This commit is contained in:
Your Name
2026-03-05 11:19:36 +08:00
parent ab77f5488d
commit 9a1b67ca18
17 changed files with 1736 additions and 89 deletions
+153 -42
View File
@@ -3,12 +3,13 @@
<el-drawer
v-model="visible"
:title="drawerTitle"
size="60%"
size="70%"
:before-close="handleClose"
:z-index="1500"
:modal="true"
class="diagnosis-drawer"
>
<el-tabs v-model="activeTab" class="px-4">
<el-tabs v-model="activeTab" class="diagnosis-tabs">
<!-- 基本信息标签页 -->
<el-tab-pane label="基本信息" name="basic">
<el-form
@@ -133,7 +134,25 @@
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-col :span="12">
<el-form-item label="糖尿病期数" prop="diabetes_type">
<el-select
v-model="formData.diabetes_type"
placeholder="请选择糖尿病期数"
class="w-full"
:popper-options="{ strategy: 'fixed' }"
popper-class="high-z-index"
>
<el-option
v-for="item in diabetesTypeOptions"
:key="item.value"
:label="item.name + (item.remark ? ' (' + item.remark + ')' : '')"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status">
<el-radio :label="1">启用</el-radio>
@@ -148,7 +167,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="口腔感觉">
<el-form-item label="口腔感觉" class="compact-form-item">
<el-radio-group v-model="formData.appetite">
<el-radio v-for="item in appetiteOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -157,7 +176,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="每日饮水量">
<el-form-item label="每日饮水量" class="compact-form-item">
<el-radio-group v-model="formData.water_intake">
<el-radio v-for="item in waterIntakeOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -167,7 +186,28 @@
</el-col>
</el-row>
<el-form-item label="饮食情况">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="体重变化" class="compact-form-item">
<el-radio-group v-model="formData.weight_change">
<el-radio v-for="item in weightChangeOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="脂肪肝程度" class="compact-form-item">
<el-radio-group v-model="formData.fatty_liver_degree">
<el-radio v-for="item in fattyLiverDegreeOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="饮食情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.diet_condition">
<el-checkbox v-for="item in dietConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -175,15 +215,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="体重变化">
<el-radio-group v-model="formData.weight_change">
<el-radio v-for="item in weightChangeOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="肢体感觉">
<el-form-item label="肢体感觉" class="checkbox-form-item">
<el-checkbox-group v-model="formData.body_feeling">
<el-checkbox v-for="item in bodyFeelingOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -191,7 +223,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="睡眠情况">
<el-form-item label="睡眠情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.sleep_condition">
<el-checkbox v-for="item in sleepConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -199,7 +231,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="眼睛情况">
<el-form-item label="眼睛情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.eye_condition">
<el-checkbox v-for="item in eyeConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -207,7 +239,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="头部感觉">
<el-form-item label="头部感觉" class="checkbox-form-item">
<el-checkbox-group v-model="formData.head_feeling">
<el-checkbox v-for="item in headFeelingOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -215,7 +247,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="出汗情况">
<el-form-item label="出汗情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.sweat_condition">
<el-checkbox v-for="item in sweatConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -223,7 +255,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="皮肤情况">
<el-form-item label="皮肤情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.skin_condition">
<el-checkbox v-for="item in skinConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -231,7 +263,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="小便情况">
<el-form-item label="小便情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.urine_condition">
<el-checkbox v-for="item in urineConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -239,7 +271,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="大便情况">
<el-form-item label="大便情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.stool_condition">
<el-checkbox v-for="item in stoolConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -247,7 +279,7 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="腰肾情况">
<el-form-item label="腰肾情况" class="checkbox-form-item">
<el-checkbox-group v-model="formData.kidney_condition">
<el-checkbox v-for="item in kidneyConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
@@ -255,14 +287,6 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="脂肪肝程度">
<el-radio-group v-model="formData.fatty_liver_degree">
<el-radio v-for="item in fattyLiverDegreeOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 既往史 -->
<el-divider content-position="left">既往史</el-divider>
@@ -469,6 +493,7 @@ const formData = ref({
diagnosis_date: '',
diagnosis_type: '',
syndrome_type: '',
diabetes_type: '',
// 现病史字段
appetite: '',
water_intake: '',
@@ -535,12 +560,14 @@ const formRules = {
age: [{ required: true, message: '请输入年龄', trigger: 'blur' }],
diagnosis_date: [{ required: true, message: '请选择诊断日期', trigger: 'change' }],
diagnosis_type: [{ required: true, message: '请选择诊断类型', trigger: 'change' }],
syndrome_type: [{ required: true, message: '请选择证型', trigger: 'change' }]
syndrome_type: [{ required: true, message: '请选择证型', trigger: 'change' }],
diabetes_type: [{ required: true, message: '请选择糖尿病期数', trigger: 'change' }]
}
// 获取字典选项
const diagnosisTypeOptions = ref<any[]>([])
const syndromeTypeOptions = ref<any[]>([])
const diabetesTypeOptions = ref<any[]>([])
const pastHistoryOptions = ref<any[]>([])
// 现病史字典选项
const appetiteOptions = ref<any[]>([])
@@ -562,7 +589,8 @@ const getDictOptions = async () => {
try {
const [
diagnosisType,
syndromeType,
syndromeType,
diabetesType,
pastHistory,
appetite,
waterIntake,
@@ -581,6 +609,7 @@ const getDictOptions = async () => {
] = await Promise.all([
getDictData({ type: 'diagnosis_type' }),
getDictData({ type: 'syndrome_type' }),
getDictData({ type: 'diabetes_type' }),
getDictData({ type: 'past_history' }),
getDictData({ type: 'appetite' }),
getDictData({ type: 'water_intake' }),
@@ -600,6 +629,7 @@ const getDictOptions = async () => {
diagnosisTypeOptions.value = diagnosisType?.diagnosis_type || []
syndromeTypeOptions.value = syndromeType?.syndrome_type || []
diabetesTypeOptions.value = diabetesType?.diabetes_type || []
pastHistoryOptions.value = pastHistory?.past_history || []
appetiteOptions.value = appetite?.appetite || []
waterIntakeOptions.value = waterIntake?.water_intake || []
@@ -720,6 +750,7 @@ const handleClose = () => {
diagnosis_date: '',
diagnosis_type: '',
syndrome_type: '',
diabetes_type: '',
appetite: '',
water_intake: '',
diet_condition: [],
@@ -761,24 +792,104 @@ defineExpose({
<style lang="scss" scoped>
.edit-drawer {
:deep(.el-checkbox-group) {
.el-checkbox {
margin-right: 20px;
margin-bottom: 10px;
:deep(.el-form) {
padding-bottom: 20px;
}
:deep(.el-divider) {
margin: 24px 0 20px;
.el-divider__text {
font-size: 15px;
font-weight: 600;
color: #303133;
background: #f5f7fa;
padding: 0 16px;
}
}
:deep(.el-form-item) {
margin-bottom: 18px;
}
:deep(.el-form-item__label) {
font-weight: 500;
color: #606266;
}
// 紧凑型表单项(单选框)
.compact-form-item {
:deep(.el-radio-group) {
display: flex;
flex-wrap: wrap;
gap: 12px;
.el-radio {
margin-right: 0;
margin-bottom: 0;
}
}
}
// 复选框表单项
.checkbox-form-item {
:deep(.el-checkbox-group) {
display: flex;
flex-wrap: wrap;
gap: 12px 16px;
.el-checkbox {
margin-right: 0;
margin-bottom: 0;
}
}
}
// 通用单选框样式
:deep(.el-radio-group) {
.el-radio {
margin-right: 20px;
margin-bottom: 10px;
margin-right: 16px;
margin-bottom: 8px;
&:last-child {
margin-right: 0;
}
}
}
// 通用复选框样式
:deep(.el-checkbox-group) {
.el-checkbox {
margin-right: 16px;
margin-bottom: 8px;
}
}
.form-tips {
font-size: 12px;
color: #999;
margin-top: 5px;
color: #909399;
margin-top: 4px;
line-height: 1.5;
}
// 输入框样式优化
:deep(.el-input__inner),
:deep(.el-textarea__inner) {
border-radius: 4px;
}
// 选择器样式优化
:deep(.el-select) {
.el-input__inner {
border-radius: 4px;
}
}
// 日期选择器样式优化
:deep(.el-date-editor) {
.el-input__inner {
border-radius: 4px;
}
}
}
</style>