This commit is contained in:
Your Name
2026-03-19 12:19:00 +08:00
parent 7832514f28
commit 7147c8e148
243 changed files with 1662 additions and 437 deletions
+5 -5
View File
@@ -193,7 +193,7 @@
size="small"
@click="handleViewCase(row)"
>
</el-button>
<template v-if="row.status === 1">
<el-button
@@ -911,7 +911,7 @@ const handleMiniProgramQRCode = async (row: any) => {
}
}
// 处方保存成功(刷新列表,并刷新编辑抽屉中的病列表)
// 处方保存成功(刷新列表,并刷新编辑抽屉中的病列表)
const onPrescriptionSuccess = () => {
loadData()
editRef.value?.refreshCaseList?.()
@@ -926,7 +926,7 @@ const handlePrescription = (row: any) => {
prescriptionRef.value?.open(row)
}
// 查看病(开方后显示)
// 查看病(开方后显示)
const handleViewCase = async (row: any) => {
if (!row.id) {
feedback.msgWarning('预约信息不完整')
@@ -937,10 +937,10 @@ const handleViewCase = async (row: any) => {
if (prescription?.id) {
prescriptionRef.value?.openById(prescription.id)
} else {
feedback.msgWarning('该预约暂无病记录,请先开方')
feedback.msgWarning('该预约暂无病记录,请先开方')
}
} catch (error: any) {
feedback.msgError(error?.msg || '获取病失败')
feedback.msgError(error?.msg || '获取病失败')
}
}
@@ -32,7 +32,7 @@
</template>
</el-table-column>
</el-table>
<el-empty v-if="!loading && caseList.length === 0" description="暂无病记录,开方后会自动显示" class="mt-4" />
<el-empty v-if="!loading && caseList.length === 0" description="暂无病记录,开方后会自动显示" class="mt-4" />
</div>
</template>
@@ -58,7 +58,7 @@ const getCases = async () => {
const data = await prescriptionListByDiagnosis({ diagnosis_id: props.diagnosisId })
caseList.value = Array.isArray(data) ? data : []
} catch (error) {
console.error('获取病记录失败:', error)
console.error('获取病记录失败:', error)
caseList.value = []
} finally {
loading.value = false
+20 -53
View File
@@ -11,7 +11,7 @@
>
<el-tabs v-model="activeTab" class="diagnosis-tabs">
<!-- 基本信息标签页 -->
<el-tab-pane label="基本信息" name="basic">
<el-tab-pane label="病历" name="basic">
<el-form
ref="formRef"
:model="formData"
@@ -103,7 +103,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="身高(cm)" prop="height">
<el-form-item label="就诊人身高(cm)" prop="height">
<el-input-number
v-model="formData.height"
:min="0"
@@ -137,23 +137,23 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收缩压(mmHg)" prop="systolic_pressure">
<el-form-item label="就诊人血压(高压mmHg)" prop="systolic_pressure">
<el-input-number
v-model="formData.systolic_pressure"
:min="0"
:max="250"
placeholder="请输入收缩压"
placeholder="请输入压"
class="w-full"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="舒张压(mmHg)" prop="diastolic_pressure">
<el-form-item label="就诊人血压(低压mmHg)" prop="diastolic_pressure">
<el-input-number
v-model="formData.diastolic_pressure"
:min="0"
:max="150"
placeholder="请输入舒张压"
placeholder="请输入压"
class="w-full"
/>
</el-form-item>
@@ -194,45 +194,11 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="证型" prop="syndrome_type">
<el-select
v-model="formData.syndrome_type"
placeholder="请选择证型"
class="w-full"
:popper-options="{ strategy: 'fixed' }"
popper-class="high-z-index"
>
<el-option
v-for="item in syndromeTypeOptions"
:key="item.value"
:label="item.name"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<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">
@@ -246,7 +212,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="线下诊断日期" prop="diagnosis_date">
<el-form-item label="当地医院诊断日期" prop="diagnosis_date">
<el-date-picker
v-model="formData.diagnosis_date"
type="date"
@@ -259,7 +225,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发现糖尿病患病史" prop="diabetes_discovery_year">
<el-form-item label="发现糖尿病患病史" prop="diabetes_discovery_year">
<el-input-number
v-model="formData.diabetes_discovery_year"
:min="0"
@@ -272,7 +238,7 @@
</el-col>
</el-row>
<el-form-item label="当地医院诊断结果" class="checkbox-form-item">
<el-form-item label="当地医院诊断结果" prop="local_hospital_diagnosis" 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>
@@ -573,8 +539,8 @@
/>
<el-empty v-else description="请先保存诊单后再添加血糖血压记录" />
</el-tab-pane>
<!-- 记录标签页开方后自动显示 -->
<el-tab-pane label="病例" name="bingli" :disabled="!formData.id">
<!-- 记录标签页开方后自动显示 -->
<el-tab-pane label="处方" name="bingli" :disabled="!formData.id">
<div v-if="formData.id" class="bingli-tab-content">
<!-- 诊断信息舌苔照片检查报告 -->
<div class="bingli-diagnosis-section">
@@ -610,18 +576,18 @@
</el-col>
</el-row>
</div>
<!-- 病记录列表 -->
<!-- 病记录列表 -->
<case-record-list
ref="caseRecordListRef"
:diagnosis-id="Number(formData.id)"
@view="handleViewCase"
/>
</div>
<el-empty v-else description="请先保存诊单开方后病将在此显示" />
<el-empty v-else description="请先保存诊单开方后病将在此显示" />
</el-tab-pane>
</el-tabs>
<!-- 处方详情(查看病 -->
<!-- 处方详情(查看病 -->
<tcm-prescription ref="prescriptionRef" @success="caseRecordListRef?.refresh?.()" />
<template #footer>
@@ -751,8 +717,9 @@ 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' }],
diabetes_type: [{ required: true, message: '请选择糖尿病期数', trigger: 'change' }]
diabetes_discovery_year: [{ required: true, message: '请输入发现糖尿病病患病史年数', trigger: 'blur' }],
local_hospital_diagnosis: [{ required: true, type: 'array', min: 1, message: '请选择当地医院诊断结果', trigger: 'change' }],
local_hospital_name: [{ required: true, message: '请输入当地就诊医院名称', trigger: 'blur' }]
}
// 获取字典选项
@@ -1114,7 +1081,7 @@ defineExpose({
line-height: 1.5;
}
/* 病 tab 诊断信息 */
/* 病 tab 诊断信息 */
.bingli-tab-content {
padding: 0 4px;
}
+4 -2
View File
@@ -160,7 +160,7 @@
<el-dropdown-menu>
<el-dropdown-item v-if="hasPermission(['tcm.diagnosis/assign'])" command="assign"><el-icon><User /></el-icon>指派</el-dropdown-item>
<el-dropdown-item v-if="row.has_appointment && hasPermission(['tcm.diagnosis/videoQr'])" command="videoQr"><el-icon><Picture /></el-icon>视频二维码</el-dropdown-item>
<el-dropdown-item v-if="hasPermission(['tcm.diagnosis/guahao'])" command="confirmQr"><el-icon><Picture /></el-icon>确认诊单二维码</el-dropdown-item>
<el-dropdown-item v-if="hasPermission(['tcm.diagnosis/guahao'])" command="confirmQr"><el-icon><Picture /></el-icon>二维码</el-dropdown-item>
<el-dropdown-item command="order" v-if="hasPermission(['tcm.diagnosis/order'])"><el-icon><Document /></el-icon>创建订单</el-dropdown-item>
<el-dropdown-item v-if="hasPermission(['tcm.diagnosis/delete'])" command="delete" divided><el-icon><Delete /></el-icon><span class="text-danger">删除</span></el-dropdown-item>
</el-dropdown-menu>
@@ -948,6 +948,7 @@ const handleVideoQRCode = async (row: any) => {
}
const result = await generateMiniProgramQrcode({
doctor_id: row.appointment_doctor_id,
diagnosis_id: row.appointment_doctor_id,
patient_id: row.patient_id,
share_user_id: userStore.userInfo?.id || '',
mini_program_path: 'pages/login/login'
@@ -975,7 +976,7 @@ const handleMiniProgramQRCode = async (row: any) => {
qrcodeDialogVisible.value = true
qrcodeLoading.value = true
qrcodeUrl.value = ''
qrcodeDialogTitle.value = '确认诊单二维码'
qrcodeDialogTitle.value = '诊单二维码'
try {
// 获取小程序配置
@@ -993,6 +994,7 @@ const handleMiniProgramQRCode = async (row: any) => {
// 调用生成二维码接口
const result = await generateMiniProgramQrcode({
diagnosis_id: row.id,
doctor_id: row.appointment_doctor_id,
patient_id: row.patient_id,
share_user_id: currentUser?.id || ''
})