|
|
@@ -1,8 +1,113 @@
|
|
|
<template>
|
|
|
- <el-empty :image-size="300" description=" " />
|
|
|
- <div style="text-align: center; font-size: 40px; color: #666">
|
|
|
- 船舶安检正在建设中
|
|
|
- </div>
|
|
|
+ <el-card class="pl30 pt20 mt30" style="width: 1000px">
|
|
|
+ <div class="df aic mb20">
|
|
|
+ <div class="c6 mr30">请选择安检模板:</div>
|
|
|
+ <el-select
|
|
|
+ v-model="templateId"
|
|
|
+ @change="getSecurityTemplateDetail"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in templateSelect"
|
|
|
+ :key="item.key"
|
|
|
+ :label="item.value"
|
|
|
+ :value="item.key"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div v-if="templateDetail.id">
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c6 mr30">安检名称:</div>
|
|
|
+ <div class="c6 mr30">{{ templateDetail.securityCheckName }}</div>
|
|
|
+ <div class="c6 mr30">适用船型:</div>
|
|
|
+ <div class="c6 mr30">
|
|
|
+ {{ templateDetail.minShipLen }} - {{ templateDetail.maxShipLen }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="mt40 fs16 c6">安检项目</div>
|
|
|
+ <div
|
|
|
+ class="mb20 mt20 df aic fs14 c6"
|
|
|
+ v-for="item in templateDetail.items"
|
|
|
+ >
|
|
|
+ <div class="ml20 mr10 item-title">检查项目名称:</div>
|
|
|
+ <div class="mr30 item-text">{{ item.checkItemName }}</div>
|
|
|
+ <div class="mr10 item-title">检查项目类型:</div>
|
|
|
+ <div class="mr30 item-text">{{ item.checkItemTypeName }}</div>
|
|
|
+ <div class="mr10 item-title">检查项目备注:</div>
|
|
|
+ <div class="mr10 item-text">{{ item.checkItemRemark }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-divider />
|
|
|
+ <div class="df aic mb20">
|
|
|
+ <div class="c6 mr30">请选择适用船舶:</div>
|
|
|
+ <el-select
|
|
|
+ v-model="ships"
|
|
|
+ value-key="value"
|
|
|
+ multiple
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 400px"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in shipSelect"
|
|
|
+ :key="item.key"
|
|
|
+ :label="item.value"
|
|
|
+ :value="item"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <el-button-group class="mb20" v-show="ships.length > 1">
|
|
|
+ <el-button
|
|
|
+ v-for="(item, index) in ships"
|
|
|
+ @click="shipIndex = index"
|
|
|
+ :type="shipIndex == index ? 'primary' : ''"
|
|
|
+ >
|
|
|
+ {{ item.shipname }}
|
|
|
+ </el-button>
|
|
|
+ </el-button-group>
|
|
|
+ <div v-show="ships[shipIndex]?.shipname">
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c3 mr20">船名</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.shipname }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c3 mr20">MMSI</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.mmsi }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c3 mr20">IMO</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.imo }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c3 mr20">船长</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.length }}</div>
|
|
|
+ <div class="unit c7">米</div>
|
|
|
+ </div>
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c3 mr20">船宽</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.breadth }}</div>
|
|
|
+ <div class="unit c7">米</div>
|
|
|
+ </div>
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c3 mr20">吨位</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.loadTons }}</div>
|
|
|
+ <div class="unit c7">吨</div>
|
|
|
+ </div>
|
|
|
+ <div class="df aic">
|
|
|
+ <div class="c3 mr20">满载吃水</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.draught }}</div>
|
|
|
+ <div class="unit c7">米</div>
|
|
|
+ </div>
|
|
|
+ <div class="df aic c5">
|
|
|
+ <div class="c3 mr20">船龄</div>
|
|
|
+ <div class="c7 fs14">{{ ships[shipIndex]?.age }}</div>
|
|
|
+ <div class="unit c7">年</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-divider />
|
|
|
+ <div class="df aic jcfe">
|
|
|
+ <el-button type="primary" @click="addSecurityCheck">发起审核</el-button>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
</template>
|
|
|
<script setup>
|
|
|
import { ref, h, reactive, toRefs, onMounted } from "vue";
|
|
|
@@ -16,7 +121,87 @@ import _ from "lodash";
|
|
|
import { subTimeStr } from "../../utils/utils";
|
|
|
|
|
|
const route = useRoute();
|
|
|
-onMounted(() => {});
|
|
|
+let templateSelect = ref([]);
|
|
|
+async function getAddTemplateSelect() {
|
|
|
+ let { data } = await api.getAddTemplateSelect({});
|
|
|
+ if (data.status == 0) {
|
|
|
+ templateSelect.value = data.result;
|
|
|
+ } else {
|
|
|
+ templateSelect.value = [];
|
|
|
+ }
|
|
|
+}
|
|
|
+let templateId = ref("");
|
|
|
+let templateDetail = ref({
|
|
|
+ items: [],
|
|
|
+});
|
|
|
+async function getSecurityTemplateDetail(id) {
|
|
|
+ let { data } = await api.getSecurityTemplateDetail({
|
|
|
+ id,
|
|
|
+ });
|
|
|
+ if (data.status == 0) {
|
|
|
+ templateDetail.value = data.result;
|
|
|
+ getAddTemplateShipSelect(templateDetail.value.id);
|
|
|
+ } else {
|
|
|
+ templateDetail.value = {
|
|
|
+ items: [],
|
|
|
+ };
|
|
|
+ }
|
|
|
+}
|
|
|
+let shipSelect = ref([]);
|
|
|
+let ships = ref([]);
|
|
|
+let shipIndex = ref(0);
|
|
|
+async function getAddTemplateShipSelect(templateId) {
|
|
|
+ let { data } = await api.getAddTemplateShipSelect({
|
|
|
+ templateId,
|
|
|
+ });
|
|
|
+ if (data.status == 0) {
|
|
|
+ shipSelect.value = data.result;
|
|
|
+ } else {
|
|
|
+ shipSelect.value = [];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function addSecurityCheck() {
|
|
|
+ if (!templateId.value) {
|
|
|
+ ElMessage({
|
|
|
+ message: "请选择安检模板",
|
|
|
+ type: "warning",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!ships.value.length) {
|
|
|
+ ElMessage({
|
|
|
+ message: "请选择适用船舶",
|
|
|
+ type: "warning",
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let shipCodes = [];
|
|
|
+ for (let i of ships.value) {
|
|
|
+ shipCodes.push(i.key);
|
|
|
+ }
|
|
|
+ let postData = {
|
|
|
+ templateId: templateId.value,
|
|
|
+ shipCodes,
|
|
|
+ };
|
|
|
+ console.log(postData);
|
|
|
+ return;
|
|
|
+ let { data } = await api.addSecurityCheck(postData);
|
|
|
+ if (data.status == 0) {
|
|
|
+ router.replace("/shipSecurityManage/checkShipList");
|
|
|
+ }
|
|
|
+}
|
|
|
+onMounted(() => {
|
|
|
+ getAddTemplateSelect();
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
-<style scoped></style>
|
|
|
+<style scoped>
|
|
|
+.item-title {
|
|
|
+ width: 100px;
|
|
|
+}
|
|
|
+
|
|
|
+.item-text {
|
|
|
+ width: 100px;
|
|
|
+}
|
|
|
+</style>
|