<template> <div class="eibs-tab"> <!-- =================左边====================== --> <c-col :span="12"> <el-form-item label="不符点"> <c-col :span="21"> <c-input type="textarea" v-model="model.bddgrp.blk.docdis" :disabled="!model.bddgrp.blk.docdisflg" maxlength="50" show-word-limit placeholder="请输入不符点" ></c-input> </c-col> <c-col :span="3" style="text-align: right"> <!-- <el-form-item label-width="0"> --> <c-button size="small" type="primary" icon="el-icon-search" style="margin-left: 0" @click="onDocdisButtxmsel" disabled ></c-button> <!-- </el-form-item> --> </c-col> </el-form-item> <c-col :span="24"> <el-form-item label="注释和结论"> <c-input type="textarea" v-model="model.bddgrp.blk.comcon" maxlength="65" show-word-limit placeholder="请输入注释和结论" ></c-input> </el-form-item> </c-col> <c-col :span="24"> <el-form-item label="到期付款确认备注"> <c-input type="textarea" v-model="model.bddgrp.blk.accrmk" maxlength="65" show-word-limit placeholder="请输入到期付款确认备注" ></c-input> </el-form-item> </c-col> </c-col> <!-- =================右边====================== --> <c-col :span="12"> <c-col :span="24"> <el-form-item label="" prop="bddgrp.rec.igndisflg"> <c-checkbox v-model="model.bddgrp.rec.igndisflg" >忽略不符点</c-checkbox > <c-checkbox v-model="model.bddgrp.blk.docdisflg" >录入不符点</c-checkbox > </el-form-item> </c-col> <!-- <c-col :span="24"> <el-form-item label="" prop="bddgrp.blk.docdisflg"> </el-form-item> </c-col> --> <c-col :span="24"> <el-form-item label="收到的通知类型" prop="bddgrp.rec.advtyp"> <c-select v-model="model.bddgrp.rec.advtyp" style="width: 100%" placeholder="请选择收到的通知类型" > </c-select> </el-form-item> </c-col> <c-col :span="24"> <el-form-item label="付款日期" prop="bddgrp.rec.totdat"> <c-date-picker type="date" v-model="model.bddgrp.rec.totdat" style="width: 100%" placeholder="请选择付款日期" ></c-date-picker> </el-form-item> </c-col> <c-col :span="24"> <el-form-item label="不符点通知日期" prop="bddgrp.rec.disdat"> <c-date-picker type="date" v-model="model.bddgrp.rec.disdat" style="width: 100%" placeholder="请选择不符点通知日期" ></c-date-picker> </el-form-item> </c-col> <c-col :span="24"> <el-form-item label="" prop="bddgrp.rec.approvcod"> <c-checkbox v-model="model.bddgrp.rec.approvcod" >议付行担保协议</c-checkbox > <c-checkbox v-model="model.bdtp.cre732flg">Create MT 732</c-checkbox> </el-form-item> </c-col> <!-- <c-col :span="8"> <c-checkbox v-model="model.bdtp.cre752flg">Create MT 752</c-checkbox> </c-col> <c-col :span="16"> <el-form-item label="Further Identification" prop="bdtp.furide"> <c-select v-model="model.bdtp.furide" style="width:100%" placeholder="请选择Further Identification"> </c-select> </el-form-item> </c-col> --> <!-- <c-col :span="24"> <el-form-item label="" prop="bdtp.cre732flg"> </el-form-item> </c-col> --> </c-col> <!-- =================已交单据====================== --> <c-col :span="24"> <c-button style="margin-bottom:5px;float:right" @click="addDocgrdDataStore" type="primary">新增单据</c-button> </c-col> <c-col :span="24"> <!-- :list="model.bdtp.docgrdm.docgrd" --> <c-table :border="true" :paginationShow="false" :list="docgrdData" :span-method="arraySpanMethod" style="width:80%,text-align:center" > <el-table-column prop="cmail1" label="1st" width="auto"> <template slot-scope="scope"> <div v-if="!scope.row.states"> {{scope.row.cmail1}} </div> <div v-else> <c-col :span="20"> <div v-for="(item, idx) in scope.row.list" :key="idx" > <c-col :span="6" :offset="2" > <div style="border:1px solid #eaeaea;padding:8px 8px 8px 15px;margin:5px;background:#f5ffff;height:75px"> <div style="height:20px"> <span>{{item.discribe}}</span> <el-button type="text" class="button" icon="el-icon-delete" @click="DeleteError(scope.$index, idx)" style="float:right"></el-button> </div> <br> <div style="height:20px;float:right;"> <el-radio v-model="item.state" :label="true">接受</el-radio> <el-radio v-model="item.state" :label="false">忽略</el-radio> </div> </div> </c-col> </div> <c-col :span="6" :offset="2" > <div class="addCss" style="border:1px dashed;padding:8px;margin:5px;height:75px;display: flex;justify-content: center;align-items: center;"> <el-button type="text" class="button" icon="el-icon-plus" @click="InsertErrorDialog(scope.$index)" style="text-align:center"></el-button><br> </div> </c-col> </c-col> </div> </template> </el-table-column> <el-table-column prop="cmail2" label="2st" width="auto"> </el-table-column> <el-table-column prop="docnam" label="Document" width="auto"> </el-table-column> <!-- <el-table-column prop="state" label="状态" width="auto"> </el-table-column> --> <el-table-column label="操作" prop="det" width="170px" fixed="right"> <!-- <template slot="header"> <span>操作</span> <el-button circle style="padding: 4px; " class="el-icon-plus" size="mini" @click="addDialogVisible = true" > </el-button> </template> --> <template slot-scope="scope"> <el-popover placement="right" width="400px" trigger="click"> <el-table :data="gridPDFData"> <el-table-column width="300px" property="name" label="name"></el-table-column> <el-table-column label="操作" width="80px"> <template slot-scope="scoped"> <el-button style="margin-left:0" size="small" type="primary" @click="openPdfDialog(scoped.row.id, scoped.$index)" >选择</el-button > </template> </el-table-column> </el-table> <div class="file-add" title="导入文件" @click="importFile"> <i class="el-icon-plus"></i> </div> <c-button slot="reference" @click="addPDF(scope.row.id)" type="primary">添加</c-button> <c-button v-if="scope.row.state != '缺失'" slot="reference" @click="detailPDF(scope.row.id)">详情</c-button> </el-popover> </template> </el-table-column> </c-table> </c-col> <!-- 不符点 --> <c-col> <el-dialog :visible.sync="InsertErrorDialogVisibal" center width="500px"> <c-col :span="24"> <c-col :span="20"> <el-form-item label="不符点" label-width="100px"> <c-input v-model="newInsertError"></c-input> </el-form-item> </c-col> </c-col> <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="InsertError()">确定</el-button> <el-button @click="InsertErrorDialogVisibal = false;newInsertError= ''">取消</el-button> </span> </el-dialog> </c-col> <!-- 新加单据 --> <c-col> <el-dialog :visible.sync="InsertGridDataDialogVisibal" center width="500px"> <c-col :span="24"> <c-col :span="20"> <el-form-item label="单据名称" label-width="100px"> <c-input v-model="newInsertGridData"></c-input> </el-form-item> </c-col> </c-col> <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="InsertGridData()">确定</el-button> <el-button @click="InsertGridDataDialogVisibal = false;newInsertGridData = ''">取消</el-button> </span> </el-dialog> </c-col> <OcrRecognition ref="ocrRecognition" v-on:confirm="selectGridPDF"></OcrRecognition> </div> </template> <script> import Api from "~/service/Api"; import commonProcess from "~/mixin/commonProcess"; import CodeTable from "~/config/CodeTable"; import Event from "~/model/Ditdck/Event"; import OcrRecognition from "./OcrRecognition.vue"; export default { inject: ["root"], props: ["model", "codes"], mixins: [commonProcess], components: { OcrRecognition }, data() { return { addDialogVisible: false, InsertErrorDialogVisibal: false, InsertGridDataDialogVisibal: false, newInsertError:"", newInsertErrorIndex: -1, newInsertGridData:"", dialog: { cmail1: "", cmail2: "", docnam:"", state:"", }, liData:["增值税发票","发票","装箱单","空运单","海运提单","铁路运单","货物收据","邮政收据","出库单","保险单","质检证","受益人证明"], docgrdDataStore:[ { id:"invoice", cmail1:"1", cmail2:"", docnam:"发票", state:"缺失", }, { id:"receipt", cmail1:"1", cmail2:"", docnam:"货物收据", state:"缺失", }, { id:"oceanShipping", cmail1:"1", cmail2:"", docnam:"海运提单", state:"缺失", }, ], docgrdData:[], gridData:[ { id:"invoice", data:[ { name:"KZ3500220597AA-001.pdf", errorData:[ { discribe:"发票金额不符", state:true }, { discribe:"发票非原始正本", state:true }, { discribe:"未批注交单情况", state:true }, ] } ], }, { id:"receipt", data:[ { name:"KZ3500220597AA-002.pdf", errorData:[ { discribe:"货物收据金额不符", state:true }, { discribe:"货物收据缺失", state:true }, ] }, // { // name:"KZ3500220597AA-003.pdf", // errorData:[ // { // discribe:"货物数量有误", // state:true // }, // ] // }, ], }, { id:"oceanShipping", data:[ { name:"KZ3500220597AA-003.pdf", errorData:[ ] }, ] } ], gridPDFData:[], selectPDFData:"", selectedPdf: { id: '', index: null } }; }, methods: { ...Event, importFile() { this.root.setDraggableContent('cms', '影像信息'); }, addRow(){ this.addDialogVisible=false; let newRow = {...this.dialog}; this.model.bdtp.docgrdm.docgrd.push(newRow); }, removeRow(idx){ this.model.bdtp.docgrdm.docgrd.pop(idx); }, addPDF(idx){ this.selectPDFData = idx; }, detailPDF(id){ this.openPdfDialog(id, 0); }, openPdfDialog(id, idx) { this.$refs.ocrRecognition.show = true var tempId = 0; for(let i = 0; i < this.docgrdDataStore.length; i++){ if(id == this.docgrdDataStore[i].id){ tempId = i; break; } } this.$refs.ocrRecognition.formData.type = this.$refs.ocrRecognition.fileType[tempId].value; this.selectedPdf.id = id; this.selectedPdf.index = idx; this.$nextTick(() => { this.$refs.ocrRecognition.fileUrl = require(`~/assets/demo-files/${this.$refs.ocrRecognition.formData.type}.jpg`) }) }, selectGridPDF(){ const id = this.selectedPdf.id; // const idx = this.selectedPdf.index; const idx = 0; //PDF全部展示,就不存在idx var tempData = []; var list = []; var flag = false; for(let i = 0; i < this.gridData.length; i++){ if(this.gridData[i].id == this.selectPDFData){ list = [...this.gridData[i].data[idx].errorData] break; } } for (let i = 0; i < this.docgrdData.length; i++) { if (this.docgrdData[i].id == id && id == this.selectPDFData){ if(list.length > 0){ this.docgrdData[i].state = "内容不符" }else{ this.docgrdData[i].state = "符合" } } if(flag){ let tempListData = this.docgrdData[i]; tempListData.list.push(...list); tempData.push(tempListData); flag = false; }else{ tempData.push(this.docgrdData[i]); if (this.docgrdData[i].id == id && id == this.selectPDFData && list.length > 0){ if(i < this.docgrdData.length - 1 && this.docgrdData[i + 1].hasOwnProperty("list")){ flag = true; }else{ tempData.push({ list, states: true, }); } } } } this.docgrdData = tempData; sessionStorage.setItem('docgrdData', JSON.stringify(this.docgrdData)); }, arraySpanMethod({ row, column, rowIndex, columnIndex }) { if (this.docgrdData[rowIndex].states) { return [1, 5]; } }, DeleteError(index, idx){ this.docgrdData[index].list.splice(idx, 1); if(this.docgrdData[index].list.length == 0){ this.docgrdData.splice(index, 1); this.docgrdData[index - 1].state = "符合" } sessionStorage.setItem('docgrdData', JSON.stringify(this.docgrdData)); }, InsertErrorDialog(index){ this.InsertErrorDialogVisibal = true; this.newInsertErrorIndex = index; }, InsertError(){ var temp = { discribe:this.newInsertError, state:true }; this.docgrdData[this.newInsertErrorIndex].list.push(temp); this.newInsertError = ""; this.InsertErrorDialogVisibal = false; sessionStorage.setItem('docgrdData', JSON.stringify(this.docgrdData)); }, addDocgrdDataStore(){ this.InsertGridDataDialogVisibal = true; }, InsertGridData(){ var index = this.docgrdData.length; var tempData = this.dialog; tempData.cmail1 = this.newInsertGridData; tempData.id = "tempId" + index; tempData.state = "符合"; this.docgrdData.push(this.dialog); this.InsertGridDataDialogVisibal = false; this.newInsertGridData = ""; sessionStorage.setItem('docgrdData', JSON.stringify(this.docgrdData)); } }, created: function () { //docgrdData, gridPDFData var temp_docgrdData = JSON.parse(sessionStorage.getItem("docgrdData")); if(temp_docgrdData != null){ var temp_gridPDFData = JSON.parse(sessionStorage.getItem("gridPDFData")); this.docgrdData = temp_docgrdData; this.gridPDFData = temp_gridPDFData; }else{ var IconList = JSON.parse(sessionStorage.getItem("IconList")); if(IconList == null){ IconList = ["invoice","receipt"]; } var list = []; for(let i = 0; i < IconList.length; i++){ for(let j = 0; j < this.docgrdDataStore.length; j++){ if(IconList[i] == this.docgrdDataStore[j].id){ list.push(this.docgrdDataStore[j]); break; } } } this.docgrdData = list; } }, computed:{ }, watch:{ selectPDFData(){ if(this.selectPDFData.length > 0){ const arr = [] for(let i = 0; i < this.gridData.length; i++){ // if(this.gridData[i].id == this.selectPDFData){ // arr.push({"id" : this.gridData[i].id}); for(let j = 0; j < this.gridData[i].data.length; j++){ arr.push({"name" : this.gridData[i].data[j].name, "id": this.gridData[i].id }); } // break; // } } this.gridPDFData = arr; sessionStorage.setItem('gridPDFData', JSON.stringify(this.gridPDFData)); } } } }; </script> <style scoped> .addCss { } /* 如果要增加竖线上方加上.el-table td */ /* 鼠标滑过td上作用的样式,ie6不支持:hover伪类属性,如果是ie6要写成tr.over样式 */ /* 如果td没有颜色,可以去掉,这里加上保险 */ /* .el-table{ background-color: transparent; color:white; } .el-table th, .el-table tr{ border: 0; background-color: transparent; } .el-table tbody tr:hover>td { background-color:transparent!important; } .el-table__body tr.hover-row>td { background-color: transparent; } */ /* .el-table tbody tr:hover>td { background-color:#ffffff!important } */ .file-add { margin-top: 16px; text-align: center; font-size: 16px; cursor: pointer; border: 1px solid #EBEEF5; } .file-add:hover { color: #5cb6ff; border: 1px solid #5cb6ff; } </style>