You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
5.1 KiB
226 lines
5.1 KiB
<template>
|
|
<!-- 查看pdf -->
|
|
<div class="viewpdf-container">
|
|
<!-- 筛选 -->
|
|
<div class="formData-box">
|
|
<el-select
|
|
v-model="formData.dcCh"
|
|
size="mini"
|
|
placeholder="请选择船号"
|
|
@change="dcChChange"
|
|
>
|
|
<el-option
|
|
v-for="(item, index) in dcChOptions"
|
|
:key="index"
|
|
:label="item.dcCh"
|
|
:value="item.dcCh"
|
|
>
|
|
</el-option>
|
|
</el-select>
|
|
<el-select v-model="formData.dcPl" size="mini" placeholder="请选择批次">
|
|
<el-option
|
|
v-for="(item, index) in dcPlOptions"
|
|
:key="index"
|
|
:label="item.dcPl"
|
|
:value="item.dcPl"
|
|
>
|
|
</el-option>
|
|
</el-select>
|
|
<div class="query-btn" @click="queryBtn">确定</div>
|
|
</div>
|
|
<div class="viewpdf-box">
|
|
<div class="border-out">
|
|
<div class="border-inner">
|
|
<el-row :gutter="20">
|
|
<el-col :span="6" v-for="(item, index) in pdfDataList" :key="index">
|
|
<dv-border-box-12>
|
|
<div class="viewpdf-flex" @click="pdfChange(item)">
|
|
<img src="@/assets/image/KHCFDC_PDF.png" alt="" />
|
|
<div class="pdf-title">{{ item }}</div>
|
|
</div>
|
|
</dv-border-box-12>
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- pdf预览 -->
|
|
<el-dialog
|
|
title="预览"
|
|
:visible.sync="dialogVisible"
|
|
:modal="false"
|
|
width="60%"
|
|
:before-close="handleClose"
|
|
>
|
|
<div v-if="dialogVisible">
|
|
<pdf v-for="i in numPages" :key="i" :page="i" :src="pdfUrl"></pdf>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import { getProject, pdfList } from "@/api/viewPDF";
|
|
import pdf from "vue-pdf";
|
|
export default {
|
|
name: "ViewPDF",
|
|
components: {
|
|
pdf,
|
|
},
|
|
data() {
|
|
return {
|
|
formData: {
|
|
dcCh: "",
|
|
dcPl: "",
|
|
},
|
|
sumOptions: [],
|
|
dcChOptions: [],
|
|
dcPlOptions: [],
|
|
pdfDataList: [],
|
|
dialogVisible: false,
|
|
pdfUrl: "", //pdf文件地址
|
|
pageCount: 0, //当前页
|
|
numPages: 0, //总页数
|
|
};
|
|
},
|
|
mounted() {
|
|
this.getProject();
|
|
},
|
|
methods: {
|
|
queryBtn() {
|
|
this.pdfList();
|
|
},
|
|
getProject() {
|
|
getProject().then((res) => {
|
|
this.sumOptions = res.data;
|
|
const uniqueArr = res.data.reduce((accumulator, current) => {
|
|
const duplicate = accumulator.find(
|
|
(item) => item.dcCh === current.dcCh
|
|
);
|
|
if (!duplicate) {
|
|
return accumulator.concat([current]);
|
|
}
|
|
return accumulator;
|
|
}, []);
|
|
this.dcChOptions = uniqueArr;
|
|
});
|
|
},
|
|
pdfList() {
|
|
pdfList({
|
|
dcCh: this.formData.dcCh,
|
|
dcPl: this.formData.dcPl,
|
|
}).then((res) => {
|
|
this.pdfDataList = res.data;
|
|
});
|
|
},
|
|
dcChChange(value) {
|
|
this.formData.dcPl = "";
|
|
this.dcPlOptions = this.sumOptions.filter((item) => {
|
|
return item.dcCh == value;
|
|
});
|
|
},
|
|
pdfChange(item) {
|
|
this.pdfUrl = pdf.createLoadingTask(
|
|
`http://kban.runpengsoft.com/upload/${this.formData.dcCh}/${this.formData.dcPl}/PDF/${item}.pdf`
|
|
);
|
|
this.pdfUrl.promise
|
|
.then((pdf) => {
|
|
this.numPages = pdf.numPages;
|
|
});
|
|
this.dialogVisible = true;
|
|
},
|
|
handleClose() {
|
|
this.dialogVisible = false;
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.viewpdf-container {
|
|
margin-top: 10px;
|
|
padding-left: 5px;
|
|
padding-right: 5px;
|
|
.formData-box {
|
|
width: 300px !important;
|
|
margin-bottom: 18px;
|
|
}
|
|
.viewpdf-box {
|
|
display: flex;
|
|
align-items: stretch;
|
|
height: calc(100vh - 105px);
|
|
.viewpdf-flex {
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 20px;
|
|
color: #fff;
|
|
margin-top: 4%;
|
|
padding: 20px;
|
|
cursor: pointer;
|
|
img {
|
|
width: 50px;
|
|
}
|
|
.pdf-title {
|
|
margin-left: 10px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.box-top {
|
|
margin-top: 5px;
|
|
}
|
|
|
|
.border-out {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 10px;
|
|
border: 1px #0174f5 solid;
|
|
padding: 1px;
|
|
box-sizing: border-box;
|
|
}
|
|
.border-inner {
|
|
width: 100%;
|
|
height: 100%;
|
|
box-sizing: border-box;
|
|
border: 2px solid #016ae0;
|
|
border-radius: 10px;
|
|
padding: 0 1%;
|
|
}
|
|
.border-inner {
|
|
background-color: rgba(2, 8, 23, 0.1);
|
|
}
|
|
}
|
|
::v-deep {
|
|
.el-dialog {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin: 0 !important;
|
|
position: fixed;
|
|
top: 50% !important;
|
|
left: 50% !important;
|
|
transform: translate(-50%, -50%) !important;
|
|
max-height: calc(100% - 30px) !important;
|
|
max-width: calc(100% - 30px) !important;
|
|
background-color: #134094 !important;
|
|
border: 1px solid #016ae0;
|
|
padding-bottom: 20px;
|
|
}
|
|
.el-dialog__title {
|
|
display: flex;
|
|
align-items: center;
|
|
font-weight: bold;
|
|
color: #fff !important;
|
|
}
|
|
.el-dialog__body {
|
|
overflow-y: auto;
|
|
padding-top: 0 !important;
|
|
.el-select,
|
|
.el-date-editor.el-input {
|
|
width: 100% !important;
|
|
}
|
|
}
|
|
.el-dialog__headerbtn .el-dialog__close {
|
|
color: #fff !important;
|
|
}
|
|
}
|
|
</style>
|