| | |
| | | border |
| | | stripe |
| | | > |
| | | <el-table-column label="器官编号" prop="organNo" align="center" /> |
| | | <el-table-column label="器官名称" prop="organName" align="center" /> |
| | | <el-table-column label="捐献者" prop="donorName" align="center" /> |
| | | <el-table-column label="地区" prop="region" align="center" /> |
| | | <el-table-column label="年份" prop="year" align="center" /> |
| | | <el-table-column label="器官状态" prop="status" align="center" > |
| | | <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.status)" size="small"> |
| | | {{ getStatusText(row.status) }} |
| | | <el-tag :type="getStatusTag(row.transplantstate)" size="small"> |
| | | {{ getStatusText(row.transplantstate) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="获取时间" prop="acquisitionTime" align="center" /> |
| | | <el-table-column label="移植时间" prop="transplantTime" align="center" > |
| | | <el-table-column label="获取时间" align="center"> |
| | | <template slot-scope="{ row }"> |
| | | {{ row.transplantTime || '-' }} |
| | | {{ fmtTime(row.organGetTime || row.OrganGetTime) || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="弃用原因" prop="abandonReason" align="center" > |
| | | <el-table-column label="移植时间" align="center"> |
| | | <template slot-scope="{ row }"> |
| | | {{ row.abandonReason || '-' }} |
| | | {{ fmtTime(row.transplantTime || row.TransplantTime) || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="受体姓名" prop="recipientName" align="center" > |
| | | <el-table-column label="弃用原因" align="center"> |
| | | <template slot-scope="{ row }"> |
| | | {{ row.recipientName || '-' }} |
| | | {{ row.notgetreason || '-' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="移植医院" prop="hospital" align="center" /> |
| | | <el-table-column label="操作医生" prop="doctor" align="center" /> |
| | | <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;"> |
| | |
| | | </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: [ |
| | | { organNo: 'O202401001', organName: '全肝', donorName: '张三', region: '青岛地区', year: '2024', status: 'transplanted', acquisitionTime: '2024-01-15 10:30', transplantTime: '2024-01-15 12:45', abandonReason: '', recipientName: '王明', hospital: '青岛大学附属医院', doctor: '李医生' }, |
| | | { organNo: 'O202401002', organName: '左肾', donorName: '张三', region: '青岛地区', year: '2024', status: 'transplanted', acquisitionTime: '2024-01-15 10:30', transplantTime: '2024-01-15 13:20', abandonReason: '', recipientName: '陈强', hospital: '青岛市立医院', doctor: '张医生' }, |
| | | { organNo: 'O202401003', organName: '右肾', donorName: '张三', region: '青岛地区', year: '2024', status: 'transplanted', acquisitionTime: '2024-01-15 10:30', transplantTime: '2024-01-15 13:50', abandonReason: '', recipientName: '刘伟', hospital: '青岛市中心医院', doctor: '王医生' }, |
| | | { organNo: 'O202401004', organName: '全肝', donorName: '李四', region: '青岛地区', year: '2024', status: 'abandoned', acquisitionTime: '2024-01-20 14:20', transplantTime: null, abandonReason: '器官质量不合格', recipientName: '', hospital: '青岛市立医院', doctor: '张医生' }, |
| | | { organNo: 'O202401005', organName: '心脏', donorName: '李四', region: '青岛地区', year: '2024', status: 'transplanted', acquisitionTime: '2024-01-20 14:20', transplantTime: '2024-01-20 15:30', abandonReason: '', recipientName: '赵刚', hospital: '青岛市立医院', doctor: '张医生' } |
| | | ] |
| | | 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 = { transplanted: 'success', abandoned: 'danger', pending: 'warning' }; |
| | | const map = { 1: 'success', 2: 'warning', 3: 'danger' }; |
| | | return map[status] || 'info'; |
| | | }, |
| | | getStatusText(status) { |
| | | const map = { transplanted: '已移植', abandoned: '已弃用', pending: '待移植' }; |
| | | 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); |
| | | } |
| | | } |
| | | }; |