<!-- src/views/statistics/components/OrganDetail.vue -->
|
<template>
|
<div class="organ-detail">
|
<el-table
|
v-loading="loading"
|
:data="organList"
|
style="width: 100%"
|
border
|
stripe
|
>
|
<el-table-column label="案例编号" prop="caseNo" align="center" />
|
<el-table-column label="器官名称" prop="organName" align="center" />
|
<el-table-column label="捐献者" prop="name" align="center" />
|
<el-table-column label="地区" prop="registerCountyName" align="center" />
|
<el-table-column label="年份" prop="donateYear" align="center" />
|
<el-table-column label="器官状态" align="center">
|
<template slot-scope="{ row }">
|
<el-tag :type="getStatusTag(row.transplantstate)" size="small">
|
{{ getStatusText(row.transplantstate) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column label="获取时间" align="center">
|
<template slot-scope="{ row }">
|
{{ fmtTime(row.organGetTime || row.OrganGetTime) || '-' }}
|
</template>
|
</el-table-column>
|
<el-table-column label="移植时间" align="center">
|
<template slot-scope="{ row }">
|
{{ fmtTime(row.transplantTime || row.TransplantTime) || '-' }}
|
</template>
|
</el-table-column>
|
<el-table-column label="弃用原因" align="center">
|
<template slot-scope="{ row }">
|
{{ row.notgetreason || '-' }}
|
</template>
|
</el-table-column>
|
<el-table-column label="受体姓名" align="center">
|
<template slot-scope="{ row }">
|
{{ row.transplantName || '-' }}
|
</template>
|
</el-table-column>
|
<el-table-column label="移植医院" prop="hospitalName" align="center" />
|
<el-table-column label="操作医生" prop="transplantDoct" align="center" />
|
</el-table>
|
|
<div style="text-align: center; margin-top: 20px;">
|
<el-button @click="$emit('close')">关闭</el-button>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import { organList as getOrganList } from '@/api/businessApi';
|
import { toTotalsList } from '@/utils/totals';
|
import statisticsMode from '@/utils/statisticsMode';
|
|
export default {
|
name: 'OrganDetail',
|
props: {
|
// 传入 opo统计 查询对象:{ area, startTime, endTime, organName },时间范围精确到天(yyyy-MM-dd)
|
query: {
|
type: Object,
|
default: () => ({})
|
}
|
},
|
data() {
|
return {
|
loading: false,
|
organList: []
|
};
|
},
|
watch: {
|
query: {
|
immediate: true,
|
deep: true,
|
handler() {
|
this.load();
|
}
|
}
|
},
|
created() {
|
// 数据源(mock/真实接口)切换时重新加载
|
this.$watch(() => statisticsMode.useMock, () => this.load());
|
},
|
methods: {
|
load() {
|
this.loading = true;
|
getOrganList(this.query || {})
|
.then((res) => {
|
this.organList = toTotalsList(res);
|
})
|
.catch(() => {
|
this.organList = [];
|
})
|
.finally(() => {
|
this.loading = false;
|
});
|
},
|
|
// 器官状态:1已移植 2库存 3弃用
|
getStatusTag(status) {
|
const map = { 1: 'success', 2: 'warning', 3: 'danger' };
|
return map[status] || 'info';
|
},
|
getStatusText(status) {
|
const map = { 1: '已移植', 2: '库存', 3: '弃用' };
|
return map[status] || '未知';
|
},
|
|
// 时间字符串统一成 yyyy-MM-dd HH:mm
|
fmtTime(value) {
|
if (!value) return '';
|
const s = String(value).replace('T', ' ');
|
return s.length > 16 ? s.substring(0, 16) : s.substring(0, 10);
|
}
|
}
|
};
|
</script>
|
|
<style scoped>
|
.organ-detail {
|
padding: 0;
|
}
|
</style>
|