detail.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <div class="app-container">
  3. <el-descriptions title="检查任务" border>
  4. <el-descriptions-item label="任务名称">{{
  5. taskInfo.taskName
  6. }}</el-descriptions-item>
  7. <el-descriptions-item label="任务进度"
  8. >{{ getLabel(dict.type.safety_check_status, taskInfo.status) }}
  9. </el-descriptions-item>
  10. <el-descriptions-item label="任务时间"
  11. >{{ dayjs(taskInfo.planStartTime).format("YYYY-MM-DD") }}
  12. </el-descriptions-item>
  13. <el-descriptions-item label="截止日期"
  14. >{{ dayjs(taskInfo.planEndTime).format("YYYY-MM-DD") }}
  15. </el-descriptions-item>
  16. <el-descriptions-item label="检查主体">{{
  17. taskInfo.checkOrgName
  18. }}</el-descriptions-item>
  19. <el-descriptions-item label="受检机构">{{
  20. taskInfo.beCheckedOrgName
  21. }}</el-descriptions-item>
  22. <el-descriptions-item label="检查人员"
  23. >{{
  24. taskInfo.checkRoles
  25. ? taskInfo.checkRoles.map((r) => r.name).join(",")
  26. : ""
  27. }}
  28. </el-descriptions-item>
  29. <el-descriptions-item label="检查组成员"
  30. >{{ taskInfo.checkTeam }}
  31. </el-descriptions-item>
  32. <el-descriptions-item label="登记人"
  33. >{{ taskInfo.submitBy }}
  34. </el-descriptions-item>
  35. <el-descriptions-item label="隐患问题数"
  36. >{{ taskInfo.exceptionCount }}
  37. </el-descriptions-item>
  38. <el-descriptions-item label="检查时间"
  39. >{{
  40. taskInfo.submitTime
  41. ? dayjs(taskInfo.submitTime).format("YYYY-MM-DD")
  42. : ""
  43. }}
  44. </el-descriptions-item>
  45. </el-descriptions>
  46. <div class="itemDetail">
  47. <el-collapse v-model="itemIds">
  48. <el-collapse-item
  49. v-for="item in taskInfo.checkList"
  50. :title="item.itemName"
  51. :value="item.itemId"
  52. :name="item.itemId"
  53. >
  54. <el-table :data="item.pointList" size="small">
  55. <el-table-column
  56. header-align="center"
  57. prop="pointName"
  58. label="检查内容"
  59. >
  60. </el-table-column>
  61. <el-table-column align="center" prop="areaName" label="检查区域">
  62. </el-table-column>
  63. <el-table-column align="center" prop="status" label="检查结果">
  64. <template slot-scope="r">
  65. {{
  66. r.row.status == null
  67. ? "-"
  68. : r.row.status == 0
  69. ? "正常"
  70. : "异常"
  71. }}
  72. </template>
  73. </el-table-column>
  74. <el-table-column align="center" prop="remark" label="问题描述">
  75. <template slot-scope="r">
  76. {{ r.row.remark ? r.row.remark : "-" }}
  77. </template>
  78. </el-table-column>
  79. <el-table-column
  80. header-align="center"
  81. prop="imgData"
  82. label="异常图片"
  83. >
  84. <template slot-scope="r">
  85. <div v-if="r.row.imgData && r.row.imgData.length > 0">
  86. <el-image
  87. style="width: 30px; height: 30px; margin: 0 10px"
  88. v-for="img in r.row.imgData"
  89. :src="img.imgPath"
  90. :preview-src-list="
  91. r.row.imgData ? r.row.imgData.map((r) => r.imgPath) : []
  92. "
  93. ></el-image>
  94. </div>
  95. <span v-else>-</span>
  96. </template>
  97. </el-table-column>
  98. </el-table>
  99. </el-collapse-item>
  100. </el-collapse>
  101. </div>
  102. <div class="dialog-footer">
  103. <el-button @click="onClose">关闭</el-button>
  104. </div>
  105. </div>
  106. </template>
  107. <script>
  108. import { mapGetters } from "vuex";
  109. import * as api from "@/api/safetycheck/register.js";
  110. import dayjs from "dayjs";
  111. import { getLabel } from "@/views/commonOption.js";
  112. import { checkPermi } from "@/utils/permission.js";
  113. export default {
  114. name: "safetyCheckRegister",
  115. data() {
  116. return {
  117. taskInfo: {},
  118. itemIds:[]
  119. };
  120. },
  121. dicts: ["safety_check_status"],
  122. components: {},
  123. computed: {},
  124. mounted() {
  125. let id = this.$route.params.taskId;
  126. let mode = this.$route.query.mode;
  127. let request = api.appinfo;
  128. request(id).then((r) => {
  129. this.taskInfo = r.data;
  130. this.itemIds=r.data.checkList.map(c=>c.itemId);
  131. });
  132. },
  133. methods: {
  134. dayjs,
  135. getLabel,
  136. onClose() {
  137. this.$tab.closePageAndPushPrev();
  138. },
  139. },
  140. };
  141. </script>
  142. <style lang="scss" scoped>
  143. .el-row-button {
  144. margin-top: 20px;
  145. }
  146. .itemDetail {
  147. max-height: calc(100% - 300px);
  148. overflow-y: auto;
  149. margin-top: 20px;
  150. }
  151. .dialog-footer {
  152. width: 100%;
  153. text-align: right;
  154. border-top: #b8bdc0 1px solid;
  155. padding-top: 10px;
  156. padding-right: 30px;
  157. position: absolute;
  158. bottom: 30px;
  159. right: 0px;
  160. }
  161. .el-descriptions {
  162. ::v-deep .el-descriptions__body {
  163. background-color: transparent !important;
  164. }
  165. }
  166. </style>