EventEditor.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <template>
  2. <el-row style="margin: 0" :gutter="5">
  3. <el-col :span="12">
  4. <el-tag>事件信息</el-tag>
  5. <el-row :gutter="5" style="margin-top: 5px">
  6. <el-col :span="8">
  7. <el-tag type="info">事件类型</el-tag>
  8. <el-select v-model="report.category" placeholder="请选择" filterable style="width: 100%">
  9. <el-option-group v-for="group in dict.categories" :key="group.id" :label="group.name">
  10. <el-option v-for="item in group.children" :key="item.id" :label="item.name" :value="group.name + ' - ' + item.name"> </el-option>
  11. </el-option-group>
  12. </el-select>
  13. </el-col>
  14. <el-col :span="9">
  15. <el-tag type="info">发生日期:</el-tag>
  16. <el-date-picker v-model="report.occurDatetime" type="datetime" placeholder="选择日期时间" style="width: 100%"> </el-date-picker>
  17. </el-col>
  18. <el-col :span="7">
  19. <el-tag type="info">发生科室:</el-tag>
  20. <el-select v-model="report.deptCode" placeholder="请选择" filterable style="width: 100%">
  21. <el-option v-for="item in deptList" :key="item.code" :label="item.name" :value="item.code"></el-option>
  22. </el-select>
  23. </el-col>
  24. </el-row>
  25. </el-col>
  26. <el-col :span="12">
  27. <el-tag>提交人信息</el-tag>
  28. <el-row :gutter="5">
  29. <el-col :span="8">
  30. <el-tag type="info">姓名:</el-tag>
  31. <el-input v-model="report.userName" style="width: 100%" readonly></el-input>
  32. </el-col>
  33. <el-col :span="8">
  34. <el-tag type="info">职称:</el-tag>
  35. <el-select v-model="report.userLevel" placeholder="请选择" filterable style="width: 100%">
  36. <el-option v-for="item in dict.positions" :key="item.id" :label="item.name" :value="item.name"></el-option>
  37. </el-select>
  38. </el-col>
  39. <el-col :span="8">
  40. <el-tag type="info">工作年限:</el-tag>
  41. <el-input-number v-model="report.workYear" :min="0" :max="10" style="width: 100%"></el-input-number>
  42. </el-col>
  43. </el-row>
  44. </el-col>
  45. </el-row>
  46. <el-row style="margin: 5px 0 0 0" :gutter="5">
  47. <el-col :span="12">
  48. <el-row :gutter="5">
  49. <el-col :span="24">
  50. <el-tag type="info">损害程度:</el-tag>
  51. <el-select v-model="report.eventResult" placeholder="请选择" style="width: 100%">
  52. <el-option
  53. v-for="item in dict.eventResult"
  54. :key="item.id"
  55. :label="item.name"
  56. :value="item.id"
  57. ></el-option>
  58. </el-select>
  59. </el-col>
  60. </el-row>
  61. </el-col>
  62. </el-row>
  63. <el-row style="margin:30px 0 0 0" :gutter="5" >
  64. <el-col :span="12">
  65. <el-tag>事件经过</el-tag>
  66. <el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="report.course" maxlength="200" show-word-limit style="width: 100%"> </el-input>
  67. </el-col>
  68. <el-col :span="12">
  69. <el-tag>事件结果与补救措施</el-tag>
  70. <el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="report.result" maxlength="100" show-word-limit style="width: 100%"> </el-input>
  71. </el-col>
  72. </el-row>
  73. <el-tag style="margin-top:30px">原因分析</el-tag>
  74. <el-row style="margin: 0" :gutter="5">
  75. <el-col :span="6">
  76. <el-tag type="info">工作人员因素:</el-tag>
  77. <div></div>
  78. <el-select v-model="report.nurseReasonArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  79. <el-option v-for="item in dict.nurseReasons" :key="item.id" :label="item.name" :value="item.name">
  80. <span style="overflow: auto">{{ item.name }}</span>
  81. </el-option>
  82. </el-select>
  83. <el-input v-model="report.nurseReasonElse" placeholder="其他工作人员因素" style="width: 100%"></el-input>
  84. </el-col>
  85. <el-col :span="6">
  86. <el-tag type="info">病人因素:</el-tag>
  87. <div></div>
  88. <el-select v-model="report.patientReasonArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  89. <el-option v-for="item in dict.patientReasons" :key="item.id" :label="item.name" :value="item.name">
  90. <span style="overflow: auto">{{ item.name }}</span>
  91. </el-option>
  92. </el-select>
  93. <el-input v-model="report.patientReasonElse" placeholder="其他病人因素" style="width: 100%"></el-input>
  94. </el-col>
  95. <el-col :span="6">
  96. <el-tag type="info">环境因素:</el-tag>
  97. <div></div>
  98. <el-select v-model="report.environReasonArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  99. <el-option v-for="item in dict.environReasons" :key="item.id" :label="item.name" :value="item.name">
  100. <span style="overflow: auto">{{ item.name }}</span>
  101. </el-option>
  102. </el-select>
  103. <el-input v-model="report.environReasonElse" placeholder="其他环境因素" style="width: 100%"></el-input>
  104. </el-col>
  105. <el-col :span="6">
  106. <el-tag type="info">管理因素:</el-tag>
  107. <div></div>
  108. <el-select v-model="report.manageReasonArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  109. <el-option v-for="item in dict.manageReasons" :key="item.id" :label="item.name" :value="item.name">
  110. <span style="overflow: auto">{{ item.name }}</span>
  111. </el-option>
  112. </el-select>
  113. <el-input v-model="report.manageReasonElse" placeholder="其他管理因素" style="width: 100%"></el-input>
  114. </el-col>
  115. </el-row>
  116. <el-tag style="margin-top:30px">改进措施</el-tag>
  117. <el-row style="margin: 0" :gutter="5">
  118. <el-col :span="6">
  119. <el-tag type="info">工作人员因素:</el-tag>
  120. <div></div>
  121. <el-select v-model="report.proNurseArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  122. <el-option v-for="item in dict.nursePros" :key="item.id" :label="item.name" :value="item.name">
  123. <span style="overflow: auto">{{ item.name }}</span>
  124. </el-option>
  125. </el-select>
  126. <el-input v-model="report.proNurseElse" placeholder="其他工作人员因素改进措施" style="width: 100%"></el-input>
  127. </el-col>
  128. <el-col :span="6">
  129. <el-tag type="info">病人因素:</el-tag>
  130. <div></div>
  131. <el-select v-model="report.proPatientArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  132. <el-option v-for="item in dict.patientPros" :key="item.id" :label="item.name" :value="item.name">
  133. <span style="overflow: auto">{{ item.name }}</span>
  134. </el-option>
  135. </el-select>
  136. <el-input v-model="report.proPatientElse" placeholder="其他病人因素改进措施" style="width: 100%"></el-input>
  137. </el-col>
  138. <el-col :span="6">
  139. <el-tag type="info">环境因素:</el-tag>
  140. <div></div>
  141. <el-select v-model="report.proEnvironArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  142. <el-option v-for="item in dict.environPros" :key="item.id" :label="item.name" :value="item.name">
  143. <span style="overflow: auto">{{ item.name }}</span>
  144. </el-option>
  145. </el-select>
  146. <el-input v-model="report.proEnvironElse" placeholder="其他环境因素改进措施" style="width: 100%"></el-input>
  147. </el-col>
  148. <el-col :span="6">
  149. <el-tag type="info">管理因素:</el-tag>
  150. <el-select v-model="report.proManageArr" multiple collapse-tags placeholder="请选择" style="width: 100%">
  151. <el-option v-for="item in dict.managePros" :key="item.id" :label="item.name" :value="item.name">
  152. <span style="overflow: auto">{{ item.name }}</span>
  153. </el-option>
  154. </el-select>
  155. <el-input v-model="report.proManageElse" placeholder="其他管理因素改进措施" style="width: 100%"></el-input>
  156. </el-col>
  157. </el-row>
  158. </template>
  159. <script setup>
  160. import { dict } from '@/data/adverse-event'
  161. import {getAllDepts} from '@/api/adverse-event'
  162. const props = defineProps({
  163. report: {
  164. type: Object,
  165. required: false,
  166. default: {}
  167. }
  168. })
  169. const deptList = ref([])
  170. onMounted(() => {
  171. getAllDepts().then(res => {
  172. deptList.value = res
  173. })
  174. })
  175. </script>