checkProjectDetailReport.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <script>
  2. import CheckReportItem from "./checkReportItem.vue";
  3. export default {
  4. name: "checkDetailReport",
  5. components: { CheckReportItem },
  6. props: {
  7. obr: {
  8. type: Object,
  9. required: true,
  10. default: function () {
  11. return {
  12. medTechProCode: "医疗技术单号",
  13. };
  14. },
  15. },
  16. },
  17. methods: {
  18. // generateReportItem() {
  19. // // 获取prop报告表单的数据obr的所有键值,同时把形如id, cardId, reportEntryId等键值过滤掉
  20. // return Object.keys(this.$props.obr).filter(
  21. // (key) => !key.match(/[a-z]Id|id/),
  22. // );
  23. // },
  24. /**
  25. * 填充报告单项
  26. */
  27. fillReportItem(reportItemLabelList) {
  28. const filledList = [...reportItemLabelList];
  29. const remainder = filledList.length % 3
  30. const num = 3 - remainder;
  31. for (let i = num; i >0; i--) {
  32. filledList.push({key: `filled${i}`, label: "null"})
  33. }
  34. return filledList;
  35. }
  36. },
  37. data() {
  38. return {
  39. // itemLabels: {
  40. // label: "content",
  41. // },
  42. reportItemLabelList: [
  43. { key: "reportNo", label: "报告单号" },
  44. // { key: "medTechProCode", label: "医技号" },
  45. { key: "medTechProName", label: "医技项目名称" },
  46. { key: "reportClass", label: "报告单类别名称" },
  47. { key: "reportCompleteTime", label: "报告完成时间" },
  48. { key: "signs", label: "危机标志" },
  49. { key: "sampleReceivedDate", label: "样本收到日期" },
  50. { key: "checkpoint", label: "检查部位或样本" },
  51. { key: "executeDepartmentName", label: "执行科室名称" },
  52. // { key: "applyDoctorName", label: "申请医生" },
  53. // { key: "testingDoctorName", label: "检验医生信息名称" },
  54. { key: "reviewDoctorName", label: "审核医生" },
  55. { key: "reportDate", label: "报告单日期" },
  56. ],
  57. /*
  58. {
  59. "id": 27,
  60. "orcId": 27,
  61. "medTechProCode": null,
  62. "medTechProName": "丙型肝炎抗体测定(Anti-HCV),人免疫缺陷病毒抗体测定(Anti-HIV),梅毒螺旋体特异抗体测定",
  63. "reportClass": "3",
  64. "reportCompleteTime": "2024-07-23 11:43:50",
  65. "signs": "0",
  66. "sampleReceivedDate": "2024-07-22 09:50:34",
  67. "checkpoint": "血清",
  68. "executeDepartmentCode": "313",
  69. "executeDepartmentName": "检验科",
  70. "isFlag": "0",
  71. "reviewDoctorCode": "1356",
  72. "reviewDoctorName": "梁静",
  73. "reportDate": "2024-07-23 11:43:50",
  74. "reportNo": "3455018"
  75. }
  76. */
  77. };
  78. },
  79. created() {
  80. // this.$data.itemLabels = this.generateReportItem();
  81. },
  82. };
  83. </script>
  84. <template>
  85. <div id="check-report">
  86. <check-report-item
  87. item-width="30%"
  88. v-for="item in fillReportItem(reportItemLabelList)"
  89. :key="item.key"
  90. :report-label="item.label"
  91. :report-content="obr[item.key] || ''"
  92. :item-hide = "item.label === 'null'"
  93. />
  94. </div>
  95. </template>
  96. <style scoped>
  97. #check-report {
  98. padding: 1% 5%;
  99. width: 100%;
  100. display: flex;
  101. justify-content: space-evenly;
  102. flex-wrap: wrap;
  103. overflow: scroll;
  104. }
  105. </style>