This commit is contained in:
Your Name
2026-03-18 14:53:09 +08:00
parent 338b104d50
commit 7832514f28
315 changed files with 7071 additions and 1136 deletions
@@ -0,0 +1,95 @@
<template>
<div class="case-record-list">
<el-table :data="caseList" border v-loading="loading">
<el-table-column prop="prescription_date" label="就诊日期" width="120" />
<el-table-column prop="visit_no" label="门诊号" width="120" />
<el-table-column prop="clinical_diagnosis" label="临床诊断" min-width="160" show-overflow-tooltip />
<el-table-column label="处方摘要" min-width="180">
<template #default="{ row }">
<span v-if="row.herbs && row.herbs.length">
{{ row.herbs.slice(0, 3).map((h: any) => `${h.name}${h.dosage}`).join('、') }}{{ row.herbs.length > 3 ? '...' : '' }}
</span>
<span v-else class="text-gray-400"></span>
</template>
</el-table-column>
<el-table-column prop="doctor_name" label="医师" width="90" show-overflow-tooltip />
<el-table-column label="状态" width="140" align="center">
<template #default="{ row }">
<template v-if="row.void_status === 1">
<el-tag type="danger" size="small">已作废</el-tag>
<div class="void-detail text-xs text-gray-500 mt-1">
{{ row.void_by_name || '—' }} {{ formatVoidTime(row.void_time) }}
</div>
</template>
<el-tag v-else type="success" size="small">正常</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button link type="primary" size="small" @click="handleView(row)">
查看
</el-button>
</template>
</el-table-column>
</el-table>
<el-empty v-if="!loading && caseList.length === 0" description="暂无病例记录,开方后会自动显示" class="mt-4" />
</div>
</template>
<script setup lang="ts">
import { prescriptionListByDiagnosis } from '@/api/tcm'
const props = defineProps({
diagnosisId: {
type: Number,
default: 0
}
})
const emit = defineEmits(['view'])
const caseList = ref<any[]>([])
const loading = ref(false)
const getCases = async () => {
if (!props.diagnosisId) return
loading.value = true
try {
const data = await prescriptionListByDiagnosis({ diagnosis_id: props.diagnosisId })
caseList.value = Array.isArray(data) ? data : []
} catch (error) {
console.error('获取病例记录失败:', error)
caseList.value = []
} finally {
loading.value = false
}
}
const formatVoidTime = (ts: number | null | undefined) => {
if (!ts) return ''
const d = new Date(ts * 1000)
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')} ${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`
}
const handleView = (row: any) => {
emit('view', row)
}
onMounted(() => {
getCases()
})
watch(() => props.diagnosisId, () => {
getCases()
})
defineExpose({
refresh: getCases
})
</script>
<style lang="scss" scoped>
.case-record-list {
padding: 20px;
}
</style>