<template> <div class="eibs-tab"> <c-col c-col :span="17" style="padding-right: 20px"> <c-col :span="24"> <c-button @click="open" size="small" type="primary">上传影像</c-button> <c-button @click="getInvImg" style="margin-left:20px" :disabled="!model.imgInvmod.imgnum || model.imgInvmod.downLoadFlg" size="small" type="primary"> <span style="position: relative">获取影像 <div v-if="model.imgInvmod.imgnum != '' && !model.imgInvmod.downLoadFlg" style="position:absolute; top:24px; left:-12px; color:red;"> 请点击获取影像 </div> </span> </c-button> <c-button @click="ruleShow" style="margin-left:20px" :disabled="!model.imgInvmod.imgnum" size="small" type="primary"> <span style="position: relative">刷新列表 <div v-if="(model.imgInvmod.imgnum != '' && model.imgInvmod.imguseList.length == 0 && model.imgInvmod.downLoadFlg) " style="position:absolute; top:24px; left:-13px; color:red;"> 请点击刷新列表 </div> </span> </c-button> <c-button @click="deleteImg" :disabled="model.imgInvmod.imgnum == '' || model.imgInvmod.imguseList.length == 0 " style="margin-left:20px" size="small" type="primary">删除影像</c-button> </c-col> </c-col> <c-col :span="24" style="margin-top:20px"> <el-table max-height="350px" style="text-align: center;" highlight-current-row :data="model.imgInvmod.imguseList" :row-class-name="tableRowClassName" @row-click="handleRowClick" :paginationShow="false" :border="true"> <el-table-column label="影像种类" sortable min-width="130px" prop="imgflg"> <template slot-scope="scope"> {{getLabel(dbCodes.imgflg,scope.row.imgflg)}} </template> </el-table-column> <el-table-column label="有效标识" sortable min-width="110px" prop="valflg"> <template slot-scope="scope"> {{getLabel(dbCodes.valflg,scope.row.valflg)}} </template> </el-table-column> <el-table-column label="文件名" sortable min-width="120px" prop="filnam"> </el-table-column> <el-table-column label="影像类型" sortable min-width="110px" prop="imgtyp"> <template slot-scope="scope"> <c-select v-model="scope.row.imgtyp" :disabled="scope.row.imgflg == 'JDFP'"> <el-option v-for="item in imgdbCode(scope.row.imgflg)" :value='item.value' :label='item.label' :key='item.value'></el-option> </c-select> </template> </el-table-column> <el-table-column label="影像描述" sortable min-width="110px" prop="imgdsp"> <template slot-scope="scope"> <c-input v-model="scope.row.imgdsp"></c-input> </template> </el-table-column> <el-table-column label="影像ID" sortable min-width="200px" prop="imagid"> </el-table-column> <el-table-column label="影像批次号" sortable min-width="200px" prop="imgnum"></el-table-column> </el-table> </c-col> <el-dialog :visible.sync="newScanVisible" :title="toolTitle" center destroy-on-close :before-close="beforeClose" width='80%' style="min-height: 800px;"> <iframe :src="JumpUrl" frameborder="0" width="100%" height="100%" style="display: block;"></iframe> </el-dialog> <el-dialog :visible.sync="showImgList" title="影像批次列表" center destroy-on-close :before-close="beforeCloseImgList" width='50%'> <el-table :data="imgList"> <el-table-column label="影像批次号" sortable min-width="110px"> <template slot-scope="scope"> <span>{{scope.row}}</span> </template> </el-table-column> <el-table-column fixed="right" label="操作" width="260"> <template slot-scope="scope"> <c-button @click="deleteRow(scope.row)" type="text">删除</c-button> </template> </el-table-column> </el-table> </el-dialog> </div> </template> <script> import event from "../event"; import { getIpAndPort } from "~/service/business/common"; export default { props: ["model", "codes"], mixins: [event], data() { return { imgCurrentZcinvlstIndex: -1, imgtypList1: [ { label: "合同影像ID", value: "CTID" }, { label: "贸易背景审查ID", value: "TRID" }, { label: "开证申请书影像ID", value: "LCID" }, { label: "其他影像ID", value: "OTID" } ], imgtypList2: [ { label: "货物收据ID", value: "GRID" }, { label: "出库单ID", value: "OSID" }, { label: "装箱单ID", value: "LBID" }, { label: "入库单ID", value: "WHID" }, { label: "运输单ID", value: "THID" }, { label: "保险单ID", value: "ISID" }, { label: "其他单据影像ID", value: "OTID" } ], dbCodes: { imgflg: [], valflg: [] }, newScanVisible: false, ip: "", port: "", toolTitle: "", JumpUrl: "", imgList:[], showImgList: false }; }, mounted() { this.getdbCode("imgflg", "imgflg"); this.getdbCode("vldflg", "valflg"); window.addEventListener("message", this.messageEvent); }, methods: { messageEvent(e) { if (e.data.invoiceLotNumber) { if(!this.model.imgInvmod.imgnum.includes(e.data.invoiceLotNumber)){ this.model.imgInvmod.imgnum = this.model.imgInvmod.imgnum == '' ? e.data.invoiceLotNumber : this.model.imgInvmod.imgnum + '\n' + e.data.invoiceLotNumber; } } }, open(){ this.$alert('上传到寄单索款发票影像下才可以使用OCR功能!', '提示', { confirmButtonText: '确定', callback: action => { this.uploadImg() } }); }, // 打开新的影像控件 async uploadImg() { this.toolTitle = "影像批扫"; let isGet = await this.queryIpPort(); if (!isGet) return; let token = sessionStorage.getItem("j_session_id"); let s = "separator"; let orgId = JSON.parse(window.sessionStorage.currentOrg).id; let userName = window.sessionStorage.userName; let branch = JSON.parse(window.sessionStorage.currentOrg) .departmentNumber; this.JumpUrl = `http://${ window.location.host }/webscan?mode=scan&scanType=new&token=${token}&orgId=${orgId}&userName=${userName}&ip=${ this.ip }&port=${this.port}&org=${branch}`; console.log(this.JumpUrl); this.newScanVisible = true; }, async queryIpPort() { let data = { appid: "GJ01" }; let ret = false; await getIpAndPort(data).then(res => { if (res.data.ERRMSG == "SUCCESS") { this.ip = res.data.ip; this.port = res.data.port + ""; ret = true; } else { this.$alert("端口获取失败!"); } }); return ret; }, beforeClose(done) { this.dialogVisible = false; done(); }, beforeCloseImgList(done){ this.showImgList = false done(); }, }, watch: { "model.imgInvmod.imgnum": { handler(val, oldval) { if (val != oldval && val.length > oldval.length) { this.model.imgInvmod.downLoadFlg = false; } } } }, computed: { imgdbCode() { return function(val) { switch (val) { case "FFHT": return this.imgtypList1; break; case "JDDJ": return this.imgtypList2; break; default: return []; } }; } }, created() {} }; </script> <style scoped lang="less"> ::v-deep .el-dialog { height: 90vh; margin: 5vh auto !important; .el-dialog__body { position: relative; height: calc(100% - 54px); } } </style>