checkShipExamine.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <el-card class="pl30 pt20 mt30" style="width: 1000px">
  3. <div class="df aic jcsb" v-if="templateDetail.id">
  4. <div class="df aic">
  5. <div class="c6 mr30">安检名称:</div>
  6. <div class="c6 mr30">{{ templateDetail.securityCheckName }}</div>
  7. </div>
  8. <div class="c6 mr30">
  9. <span class="mr20">通过项目:</span>
  10. {{ templateDetail.finishCheckItem }} /
  11. {{ templateDetail.totalCheckItem }}
  12. </div>
  13. </div>
  14. <el-divider />
  15. <div>
  16. <div class="c6 mb20">船舶信息</div>
  17. <div class="df aic mb20">
  18. <div class="ship-label">船名</div>
  19. <div class="ship-text">{{ shipDetail.shipname }}</div>
  20. <div class="ship-label">船东姓名</div>
  21. <div class="ship-text">{{ shipDetail.shipOwnerName }}</div>
  22. <div class="ship-label">船东手机号</div>
  23. <div class="ship-text">{{ shipDetail.shipOwnerPhone }}</div>
  24. <div class="ship-label">MMSI</div>
  25. <div class="ship-text">{{ shipDetail.mmsi }}</div>
  26. <div class="ship-label">IMO</div>
  27. <div class="ship-text">{{ shipDetail.imo }}</div>
  28. </div>
  29. <div class="df aic mb20">
  30. <div class="ship-label">船龄</div>
  31. <div class="ship-text">
  32. {{ shipDetail.age }}
  33. <span class="unit">年</span>
  34. </div>
  35. <div class="ship-label">船长</div>
  36. <div class="ship-text">
  37. {{ shipDetail.length }}
  38. <span class="unit">米</span>
  39. </div>
  40. <div class="ship-label">船宽</div>
  41. <div class="ship-text">
  42. {{ shipDetail.breadth }}
  43. <span class="unit">米</span>
  44. </div>
  45. <div class="ship-label">吨位</div>
  46. <div class="ship-text">
  47. {{ shipDetail.loadTons }}
  48. <span class="unit">吨</span>
  49. </div>
  50. <div class="ship-label">满载吃水</div>
  51. <div class="ship-text">
  52. {{ shipDetail.draught }}
  53. <span class="unit">米</span>
  54. </div>
  55. </div>
  56. </div>
  57. <el-divider />
  58. <div class="mt40 fs16 c6">安检项目</div>
  59. <div class="mb20 mt30 fs14 c6" v-for="item in templateDetail.items">
  60. <div class="df aic">
  61. <div class="ml20 mr10 item-title">检查项目名称:</div>
  62. <div class="mr30 item-text">{{ item.checkItemName }}</div>
  63. <div class="mr10 item-title">检查项目类型:</div>
  64. <div class="mr30 item-text">{{ item.checkItemTypeName }}</div>
  65. <div class="mr10 item-title">检查项目备注:</div>
  66. <div class="mr10 item-text">{{ item.checkItemRemark }}</div>
  67. </div>
  68. <div v-if="item.viewUrl">
  69. <el-image
  70. style="width: 200px; height: 200px"
  71. class="ml20 mt10"
  72. :src="item.viewUrl"
  73. :preview-src-list="[item.viewUrl]"
  74. fit="cover"
  75. ></el-image>
  76. <div
  77. class="df aic jcsa ml20 mt10"
  78. style="width: 200px"
  79. v-if="item.auditStatus == 0"
  80. >
  81. <el-button
  82. @click="checkSecurityItem(item.id, 1)"
  83. class="mr30"
  84. size="small"
  85. type="primary"
  86. >
  87. 通过
  88. </el-button>
  89. <el-button
  90. @click="checkSecurityItem(item.id, 2)"
  91. size="small"
  92. type="danger"
  93. >
  94. 不通过
  95. </el-button>
  96. </div>
  97. </div>
  98. </div>
  99. </el-card>
  100. </template>
  101. <script setup>
  102. import { ref, h, reactive, toRefs, onMounted } from "vue";
  103. import { ElNotification, ElMessageBox, ElMessage } from "element-plus";
  104. import store from "../../store";
  105. import router from "../../router";
  106. import md5 from "md5";
  107. import api from "../../apis/fetch";
  108. import { useRoute } from "vue-router";
  109. import _ from "lodash";
  110. import { subTimeStr } from "../../utils/utils";
  111. const route = useRoute();
  112. let status = ref(0);
  113. let templateDetail = ref({
  114. items: [],
  115. });
  116. let shipDetail = ref({});
  117. async function getSecurityCheckDetail(shipSecurityCheckId) {
  118. let { data } = await api.getSecurityCheckDetail({
  119. shipSecurityCheckId,
  120. });
  121. if (data.status == 0) {
  122. status.value = data.result.status;
  123. templateDetail.value = data.result;
  124. shipDetail.value = data.result.ship;
  125. }
  126. }
  127. async function checkSecurityItem(shipSecurityCheckItemId, auditStatus) {
  128. let shipSecurityCheckId = route.query.id;
  129. let { data } = await api.checkSecurityItem({
  130. shipSecurityCheckId,
  131. shipSecurityCheckItemId,
  132. auditStatus,
  133. });
  134. if (data.status == 0) {
  135. ElNotification({
  136. title: "成功",
  137. message: data.msg,
  138. type: "success",
  139. duration: 1500,
  140. });
  141. getSecurityCheckDetail(shipSecurityCheckId);
  142. }
  143. }
  144. onMounted(() => {
  145. getSecurityCheckDetail(route.query.id);
  146. });
  147. </script>
  148. <style scoped>
  149. .ship-label {
  150. width: 80px;
  151. color: #666;
  152. font-size: 14px;
  153. text-align: right;
  154. margin-right: 10px;
  155. }
  156. .ship-text {
  157. width: 100px;
  158. color: #333;
  159. font-size: 14px;
  160. }
  161. .item-title {
  162. width: 100px;
  163. }
  164. .item-text {
  165. width: 100px;
  166. }
  167. </style>