This commit is contained in:
Your Name
2026-03-13 14:08:52 +08:00
parent 08dd9cd307
commit eb283f008b
667 changed files with 8425 additions and 27053 deletions
+228 -67
View File
@@ -16,7 +16,7 @@
ref="formRef"
:model="formData"
:rules="formRules"
label-width="120px"
label-width="160px"
>
<!-- 基本信息 -->
<el-divider content-position="left">基本信息</el-divider>
@@ -94,6 +94,98 @@
</el-col>
</el-row>
<!-- 生命体征 -->
<el-divider content-position="left">生命体征</el-divider>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="婚姻状态" prop="marital_status">
<el-select
v-model="formData.marital_status"
placeholder="请选择婚姻状态"
class="w-full"
:popper-options="{ strategy: 'fixed' }"
popper-class="high-z-index"
>
<el-option label="未婚" :value="0" />
<el-option label="已婚" :value="1" />
<el-option label="离异" :value="2" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="身高(cm)" prop="height">
<el-input-number
v-model="formData.height"
:min="0"
:max="300"
placeholder="请输入身高"
class="w-full"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="体重(kg)" prop="weight">
<el-input-number
v-model="formData.weight"
:min="0"
:max="500"
:step="0.1"
placeholder="请输入体重"
class="w-full"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="地区" prop="region">
<el-input
v-model="formData.region"
placeholder="请输入地区"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收缩压(mmHg)" prop="systolic_pressure">
<el-input-number
v-model="formData.systolic_pressure"
:min="0"
:max="250"
placeholder="请输入收缩压"
class="w-full"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="舒张压(mmHg)" prop="diastolic_pressure">
<el-input-number
v-model="formData.diastolic_pressure"
:min="0"
:max="150"
placeholder="请输入舒张压"
class="w-full"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="空腹血糖(mmol/L)" prop="fasting_blood_sugar">
<el-input-number
v-model="formData.fasting_blood_sugar"
:min="0"
:max="50"
:step="0.1"
placeholder="请输入空腹血糖"
class="w-full"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="诊断类型" prop="diagnosis_type">
@@ -161,144 +253,186 @@
</el-form-item>
</el-col>
</el-row>
<el-divider content-position="left">主诉</el-divider>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="发现糖尿病就患病史" prop="diabetes_discovery_year">
<el-input-number
v-model="formData.diabetes_discovery_year"
:min="0"
:max="100"
placeholder="请输入年数"
class="w-full"
/>
<template #append></template>
</el-form-item>
</el-col>
</el-row>
<!-- 现病史 -->
<el-form-item label="当地医院诊断结果" class="checkbox-form-item">
<el-checkbox-group v-model="formData.local_hospital_diagnosis">
<el-checkbox-button label="糖尿病">糖尿病</el-checkbox-button>
<el-checkbox-button label="高血压">高血压</el-checkbox-button>
<el-checkbox-button label="糖尿病高血压">糖尿病高血压</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<el-form-item label="当地就诊医院名称" prop="local_hospital_name">
<el-input
v-model="formData.local_hospital_name"
placeholder="请输入当地就诊医院名称(不能填写当地、本地、互联网等关键词)"
/>
</el-form-item>
<el-divider content-position="left">现病史</el-divider>
<el-row :gutter="20">
<el-col :span="12">
<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">
<el-radio-button v-for="item in appetiteOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
</el-row>
<el-row :gutter="20">
<el-col :span="20">
<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">
<el-radio-button v-for="item in waterIntakeOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="体重变化" class="compact-form-item">
<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">
<el-radio-button v-for="item in weightChangeOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<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">
<el-radio-button v-for="item in fattyLiverDegreeOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-radio>
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</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">
<el-checkbox-button v-for="item in dietConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in bodyFeelingOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in sleepConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in eyeConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in headFeelingOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in sweatConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in skinConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in urineConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in stoolConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<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">
<el-checkbox-button v-for="item in kidneyConditionOptions" :key="item.value" :label="item.value">
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
<el-form-item label="病逝补充" prop="symptoms">
<el-input
v-model="formData.symptoms"
type="textarea"
:rows="3"
placeholder="请输入症状"
/>
</el-form-item>
<!-- 既往史 -->
<el-divider content-position="left">既往史</el-divider>
<el-form-item label="既往史" prop="past_history">
<el-form-item label="" prop="past_history" class="checkbox-form-item">
<el-checkbox-group v-model="formData.past_history">
<el-checkbox
<el-checkbox-button
v-for="item in pastHistoryOptions"
:key="item.value"
:label="item.value"
>
{{ item.name }}
</el-checkbox>
</el-checkbox-button>
</el-checkbox-group>
</el-form-item>
@@ -309,24 +443,24 @@
<el-col :span="8">
<el-form-item label="外伤史">
<el-radio-group v-model="formData.trauma_history">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
<el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="0"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="手术史">
<el-radio-group v-model="formData.surgery_history">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
<el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="0"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="过敏史">
<el-radio-group v-model="formData.allergy_history">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
<el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="0"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
@@ -336,16 +470,16 @@
<el-col :span="12">
<el-form-item label="家族病史">
<el-radio-group v-model="formData.family_history">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
<el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="0"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="妊娠哺乳史">
<el-radio-group v-model="formData.pregnancy_history">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
<el-radio-button :label="1"></el-radio-button>
<el-radio-button :label="0"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
@@ -372,14 +506,6 @@
<div class="form-tips">支持上传检查报告病历彩超等影像科检查图片最多10个文件</div>
</el-form-item>
<el-form-item label="症状" prop="symptoms">
<el-input
v-model="formData.symptoms"
type="textarea"
:rows="3"
placeholder="请输入症状"
/>
</el-form-item>
<el-row :gutter="20">
<el-col :span="12">
@@ -494,7 +620,16 @@ const formData = ref({
diagnosis_type: '',
syndrome_type: '',
diabetes_type: '',
// 现病史字段
diabetes_discovery_year: undefined as number | undefined,
local_hospital_diagnosis: [],
local_hospital_name: '',
marital_status: undefined as number | undefined,
height: undefined as number | undefined,
weight: undefined as number | undefined,
region: '',
systolic_pressure: undefined as number | undefined,
diastolic_pressure: undefined as number | undefined,
fasting_blood_sugar: undefined as number | undefined,
appetite: '',
water_intake: '',
diet_condition: [],
@@ -509,18 +644,14 @@ const formData = ref({
stool_condition: [],
kidney_condition: [],
fatty_liver_degree: '',
// 既往史
past_history: [],
// 其他病史
trauma_history: 0,
surgery_history: 0,
allergy_history: 0,
family_history: 0,
pregnancy_history: 0,
// 文件上传
tongue_images: [],
report_files: [],
// 诊断信息
symptoms: '',
tongue_coating: '',
pulse: '',
@@ -746,11 +877,17 @@ const handleClose = () => {
id_card: '',
phone: '',
gender: 1,
age: undefined as number | undefined,
diagnosis_date: '',
diagnosis_type: '',
syndrome_type: '',
diabetes_type: '',
marital_status: undefined as number | undefined,
height: undefined as number | undefined,
weight: undefined as number | undefined,
region: '',
systolic_pressure: undefined as number | undefined,
diastolic_pressure: undefined as number | undefined,
fasting_blood_sugar: undefined as number | undefined,
diabetes_discovery_year: undefined as number | undefined,
local_hospital_diagnosis: [],
local_hospital_name: '',
appetite: '',
water_intake: '',
diet_condition: [],
@@ -792,15 +929,18 @@ defineExpose({
<style lang="scss" scoped>
.edit-drawer {
font-size: 12px;
:deep(.el-form) {
padding-bottom: 20px;
font-size: 12px;
}
:deep(.el-divider) {
margin: 24px 0 20px;
.el-divider__text {
font-size: 15px;
font-size: 13px;
font-weight: 600;
color: #303133;
background: #f5f7fa;
@@ -813,9 +953,30 @@ defineExpose({
}
:deep(.el-form-item__label) {
font-size: 12px;
font-weight: 500;
color: #606266;
}
:deep(.el-input__inner) {
font-size: 12px;
}
:deep(.el-textarea__inner) {
font-size: 12px;
}
:deep(.el-radio-button__inner) {
font-size: 12px;
}
:deep(.el-checkbox-button__inner) {
font-size: 12px;
}
:deep(.el-button) {
font-size: 12px;
}
// 紧凑型表单项(单选框)
.compact-form-item {