|  | @ -1,50 +1,405 @@ | 
		
	
		
			
				|  |  | <template> |  |  | <template> | 
		
	
		
			
				|  |  |   <div class="preview-wrapper"> |  |  |   <div class="preview-wrapper"> | 
		
	
		
			
				|  |  |     <div class="collect-header" style="justify-content: flex-start; border-top: none; "> |  |  |  | 
		
	
		
			
				|  |  |       <h4 class="is-file" style="flex:none;">四性检测报告</h4> |  |  |  | 
		
	
		
			
				|  |  |       <span style="font-size: 12px; flex: 1; line-height: 42px;">所属文件:{{ parentArchiveNo }}</span> |  |  |  | 
		
	
		
			
				|  |  |  |  |  |     <div class="collect-header" style="display: flex; justify-content: space-between;"> | 
		
	
		
			
				|  |  |  |  |  |       <h4 class="is-file">四性检测详情</h4> | 
		
	
		
			
				|  |  |  |  |  |       <div class="preview-btn" style="margin-right: 20px;"> | 
		
	
		
			
				|  |  |  |  |  |         <el-button class="iconfont icon-xiazai" @click="downloadFile(fileCurrent)">导出</el-button> | 
		
	
		
			
				|  |  |  |  |  |         <el-button v-print="printObj" class="iconfont icon-dayin">打印</el-button> | 
		
	
		
			
				|  |  |  |  |  |       </div> | 
		
	
		
			
				|  |  |     </div> |  |  |     </div> | 
		
	
		
			
				|  |  |     <div class="main-content"> |  |  |     <div class="main-content"> | 
		
	
		
			
				|  |  |       <div class="content-list"> |  |  |       <div class="content-list"> | 
		
	
		
			
				|  |  |         <h4 class="arc-title">原文列表</h4> |  |  |  | 
		
	
		
			
				|  |  |         <ul v-if="allFileTables.length!==0" class="file-list"> |  |  |  | 
		
	
		
			
				|  |  |  |  |  |         <h4 class="arc-title">文件名称</h4> | 
		
	
		
			
				|  |  |  |  |  |         <!-- <ul v-if="allFileTables.length!==0" class="file-list"> | 
		
	
		
			
				|  |  |           <li v-for="(item,index) in allFileTables" :key="index" :class="{'active-file': item.id == fileCurrent.id}" @click="selectFile(item)"> |  |  |           <li v-for="(item,index) in allFileTables" :key="index" :class="{'active-file': item.id == fileCurrent.id}" @click="selectFile(item)"> | 
		
	
		
			
				|  |  |             <span>{{ item.file_name }}</span> |  |  |             <span>{{ item.file_name }}</span> | 
		
	
		
			
				|  |  |             <i class="iconfont icon-attachment" /> |  |  |             <i class="iconfont icon-attachment" /> | 
		
	
		
			
				|  |  |           </li> |  |  |           </li> | 
		
	
		
			
				|  |  |         </ul> |  |  |  | 
		
	
		
			
				|  |  |  |  |  |         </ul> --> | 
		
	
		
			
				|  |  |  |  |  |         <el-tree | 
		
	
		
			
				|  |  |  |  |  |           v-if="allFileTables.length!==0" | 
		
	
		
			
				|  |  |  |  |  |           ref="tree" | 
		
	
		
			
				|  |  |  |  |  |           node-key="archivesId" | 
		
	
		
			
				|  |  |  |  |  |           :data="allFileTables" | 
		
	
		
			
				|  |  |  |  |  |           :props="defaultProps" | 
		
	
		
			
				|  |  |  |  |  |           :highlight-current="true" | 
		
	
		
			
				|  |  |  |  |  |           :default-expand-all="true" | 
		
	
		
			
				|  |  |  |  |  |           :expand-on-click-node="false" | 
		
	
		
			
				|  |  |  |  |  |           @node-click="handleNodeClick" | 
		
	
		
			
				|  |  |  |  |  |         /> | 
		
	
		
			
				|  |  |         <el-empty v-else :image-size="100" /> |  |  |         <el-empty v-else :image-size="100" /> | 
		
	
		
			
				|  |  |       </div> |  |  |       </div> | 
		
	
		
			
				|  |  |  |  |  |       <div id="printArea" ref="output" v-loading="loading" class="content-right"> | 
		
	
		
			
				|  |  |  |  |  |         <div class="report-header"> | 
		
	
		
			
				|  |  |  |  |  |           <h5>四性检测报告</h5> | 
		
	
		
			
				|  |  |  |  |  |           <p>报告编号:{{ currentReportInfo && currentReportInfo.reportNo }}</p> | 
		
	
		
			
				|  |  |  |  |  |         </div> | 
		
	
		
			
				|  |  |  |  |  |         <div v-if="reportData" class="report-baseInfo"> | 
		
	
		
			
				|  |  |  |  |  |           <div class="report-title"><span>基础信息</span></div> | 
		
	
		
			
				|  |  |  |  |  |           <ul class="baseInfo-txt"> | 
		
	
		
			
				|  |  |  |  |  |             <li><span>检测范围:</span>真实性、完整性、可用性、安全性</li> | 
		
	
		
			
				|  |  |  |  |  |             <li><span>检测结论:</span> | 
		
	
		
			
				|  |  |  |  |  |               <span v-if="reportData.current.failNum === 0 || (reportData.current.checkNum === reportData.current.passNum)" class="row-state end-state">通过</span> | 
		
	
		
			
				|  |  |  |  |  |               <span v-else class="row-state cancel-state">未通过</span> | 
		
	
		
			
				|  |  |  |  |  |             </li> | 
		
	
		
			
				|  |  |  |  |  |             <li><span>检测耗时:</span>{{ reportData.current.checkTime }} ms</li> | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |             <li v-if="currentReportInfo.categoryLevel === 2"><span>检测总数:</span>{{ reportData.current.checkNum }} 条</li> | 
		
	
		
			
				|  |  |  |  |  |             <li v-else><span>检测总数:</span>{{ reportData.current.checkNum }} 项</li> | 
		
	
		
			
				|  |  |  |  |  |             <li><span>所属门类:</span>{{ reportData.parent.categoryName }}</li> | 
		
	
		
			
				|  |  |  |  |  |             <li><span>所在级别:</span>{{ currentReportInfo.categoryLevel === 2 ? '案卷级' : (currentReportInfo.categoryLevel === 3 && reportData.subset.length === 0 ? '文件级' : '卷内级') }}</li> | 
		
	
		
			
				|  |  |  |  |  |             <li> | 
		
	
		
			
				|  |  |  |  |  |               <span>档案档号:</span> | 
		
	
		
			
				|  |  |  |  |  |               {{ | 
		
	
		
			
				|  |  |  |  |  |                 (currentReportInfo.categoryLevel === 2 || (currentReportInfo.categoryLevel === 3 && reportData.subset.length === 0)) | 
		
	
		
			
				|  |  |  |  |  |                   ? reportData.parent?.archivesNo ?? '' | 
		
	
		
			
				|  |  |  |  |  |                   : (currentReportInfo.categoryLevel === 3 && reportData.subset.length !== 0) | 
		
	
		
			
				|  |  |  |  |  |                     ? getArchivesSubet(currentReportInfo.archivesId)?.archivesNo ?? '' | 
		
	
		
			
				|  |  |  |  |  |                     : '' | 
		
	
		
			
				|  |  |  |  |  |               }} | 
		
	
		
			
				|  |  |  |  |  |             </li> | 
		
	
		
			
				|  |  |  |  |  |             <li><span>档案题名:</span> | 
		
	
		
			
				|  |  |  |  |  |               {{ | 
		
	
		
			
				|  |  |  |  |  |                 (currentReportInfo.categoryLevel === 2 || (currentReportInfo.categoryLevel === 3 && reportData.subset.length === 0)) | 
		
	
		
			
				|  |  |  |  |  |                   ? reportData.parent?.archivesName ?? '' | 
		
	
		
			
				|  |  |  |  |  |                   : (currentReportInfo.categoryLevel === 3 && reportData.subset.length !== 0) | 
		
	
		
			
				|  |  |  |  |  |                     ? getArchivesSubet(currentReportInfo.archivesId)?.archivesName ?? '' | 
		
	
		
			
				|  |  |  |  |  |                     : '' | 
		
	
		
			
				|  |  |  |  |  |               }} | 
		
	
		
			
				|  |  |  |  |  |             </li> | 
		
	
		
			
				|  |  |  |  |  |             <li v-if="currentReportInfo.categoryLevel === 2"> | 
		
	
		
			
				|  |  |  |  |  |               <span>检测详情:</span>总共检测 {{ checkDetails.total }} 条卷内;通过 <span style="color: #12C37A;">{{ checkDetails.pass }}</span> 条;未通过 <span style="color: #ED4A41;">{{ checkDetails.fail }}</span> 条 | 
		
	
		
			
				|  |  |  |  |  |             </li> | 
		
	
		
			
				|  |  |  |  |  |             <li v-if="currentReportInfo.categoryLevel === 3 && reportData.subset.length === 0"> | 
		
	
		
			
				|  |  |  |  |  |               <span>检测详情:</span>总共检测 {{ checkDetails.total }} 项;通过 <span style="color: #12C37A;">{{ checkDetails.pass }}</span> 项;未通过 <span style="color: #ED4A41;">{{ checkDetails.fail }}</span> 项 | 
		
	
		
			
				|  |  |  |  |  |             </li> | 
		
	
		
			
				|  |  |  |  |  |             <li v-if="currentReportInfo.categoryLevel === 3 && reportData.subset.length !== 0"> | 
		
	
		
			
				|  |  |  |  |  |               <span>检测详情:</span>总共检测 {{ subsetCheckDetails.total }} 项;通过 <span style="color: #12C37A;">{{ subsetCheckDetails.pass }}</span> 项;未通过 <span style="color: #ED4A41;">{{ subsetCheckDetails.fail }}</span> 项 | 
		
	
		
			
				|  |  |  |  |  |             </li> | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |           </ul> | 
		
	
		
			
				|  |  |  |  |  |         </div> | 
		
	
		
			
				|  |  |  |  |  |         <div v-if="currentReportInfo && currentReportInfo.categoryLevel === 3"> | 
		
	
		
			
				|  |  |  |  |  |           <div class="report-checkItem"> | 
		
	
		
			
				|  |  |  |  |  |             <div class="report-title"><span>真实性检测</span></div> | 
		
	
		
			
				|  |  |  |  |  |             <el-table ref="table" class="fixed-table" :data="checkItemAllData.authenticity"> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column type="index" label="序号" width="55" align="center" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="secondaryClassId" label="分类" min-width="150" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionCode" label="检测编号" min-width="100" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionProject" label="检测项目" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObjective" label="检测目的" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObject" label="检测对象" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionAccording" label="检测依据和方法" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column prop="checkDetails" label="检测详情" min-width="140"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <el-popover | 
		
	
		
			
				|  |  |  |  |  |                     popper-class="myPopover" | 
		
	
		
			
				|  |  |  |  |  |                     placement="top" | 
		
	
		
			
				|  |  |  |  |  |                     width="300" | 
		
	
		
			
				|  |  |  |  |  |                     trigger="hover" | 
		
	
		
			
				|  |  |  |  |  |                   > | 
		
	
		
			
				|  |  |  |  |  |                     <div slot="reference">{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                     <div>{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                   </el-popover> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="checkResult" label="检测结论" min-width="80"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-if="scope.row.checkResult==='成功'" class="row-state end-state">通过</span> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-else class="row-state cancel-state">未通过</span> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |             </el-table> | 
		
	
		
			
				|  |  |  |  |  |           </div> | 
		
	
		
			
				|  |  |  |  |  |           <div class="report-checkItem"> | 
		
	
		
			
				|  |  |  |  |  |             <div class="report-title"><span>完整性检测</span></div> | 
		
	
		
			
				|  |  |  |  |  |             <el-table ref="table" class="fixed-table" :data="checkItemAllData.integrity"> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column type="index" label="序号" width="55" align="center" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="secondaryClassId" label="分类" min-width="150" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionCode" label="检测编号" min-width="100" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionProject" label="检测项目" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObjective" label="检测目的" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObject" label="检测对象" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionAccording" label="检测依据和方法" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column prop="checkDetails" label="检测详情" min-width="140"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <el-popover | 
		
	
		
			
				|  |  |  |  |  |                     popper-class="myPopover" | 
		
	
		
			
				|  |  |  |  |  |                     placement="top" | 
		
	
		
			
				|  |  |  |  |  |                     width="300" | 
		
	
		
			
				|  |  |  |  |  |                     trigger="hover" | 
		
	
		
			
				|  |  |  |  |  |                   > | 
		
	
		
			
				|  |  |  |  |  |                     <div slot="reference">{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                     <div>{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                   </el-popover> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="checkResult" label="检测结论" min-width="80"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-if="scope.row.checkResult==='成功'" class="row-state end-state">通过</span> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-else class="row-state cancel-state">未通过</span> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |             </el-table> | 
		
	
		
			
				|  |  |  |  |  |           </div> | 
		
	
		
			
				|  |  |  |  |  |           <div class="report-checkItem"> | 
		
	
		
			
				|  |  |  |  |  |             <div class="report-title"><span>可用性检测</span></div> | 
		
	
		
			
				|  |  |  |  |  |             <el-table ref="table" class="fixed-table" :data="checkItemAllData.usability"> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column type="index" label="序号" width="55" align="center" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="secondaryClassId" label="分类" min-width="150" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionCode" label="检测编号" min-width="100" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionProject" label="检测项目" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObjective" label="检测目的" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObject" label="检测对象" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionAccording" label="检测依据和方法" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column prop="checkDetails" label="检测详情" min-width="140"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <el-popover | 
		
	
		
			
				|  |  |  |  |  |                     popper-class="myPopover" | 
		
	
		
			
				|  |  |  |  |  |                     placement="top" | 
		
	
		
			
				|  |  |  |  |  |                     width="300" | 
		
	
		
			
				|  |  |  |  |  |                     trigger="hover" | 
		
	
		
			
				|  |  |  |  |  |                   > | 
		
	
		
			
				|  |  |  |  |  |                     <div slot="reference">{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                     <div>{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                   </el-popover> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="checkResult" label="检测结论" min-width="80"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-if="scope.row.checkResult==='成功'" class="row-state end-state">通过</span> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-else class="row-state cancel-state">未通过</span> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |             </el-table> | 
		
	
		
			
				|  |  |  |  |  |           </div> | 
		
	
		
			
				|  |  |  |  |  |           <div class="report-checkItem"> | 
		
	
		
			
				|  |  |  |  |  |             <div class="report-title"><span>安全性检测</span></div> | 
		
	
		
			
				|  |  |  |  |  |             <el-table ref="table" class="fixed-table" :data="checkItemAllData.safety"> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column type="index" label="序号" width="55" align="center" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="secondaryClassId" label="分类" min-width="150" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionCode" label="检测编号" min-width="100" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionProject" label="检测项目" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObjective" label="检测目的" min-width="200" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionObject" label="检测对象" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="detectionAccording" label="检测依据和方法" min-width="140" /> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column prop="checkDetails" label="检测详情" min-width="140"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <el-popover | 
		
	
		
			
				|  |  |  |  |  |                     popper-class="myPopover" | 
		
	
		
			
				|  |  |  |  |  |                     placement="top" | 
		
	
		
			
				|  |  |  |  |  |                     width="300" | 
		
	
		
			
				|  |  |  |  |  |                     trigger="hover" | 
		
	
		
			
				|  |  |  |  |  |                   > | 
		
	
		
			
				|  |  |  |  |  |                     <div slot="reference">{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                     <div>{{ scope.row.checkDetails }}</div> | 
		
	
		
			
				|  |  |  |  |  |                   </el-popover> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |               <el-table-column :show-overflow-tooltip="true" prop="checkResult" label="检测结论" min-width="80"> | 
		
	
		
			
				|  |  |  |  |  |                 <template slot-scope="scope"> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-if="scope.row.checkResult==='成功'" class="row-state end-state">通过</span> | 
		
	
		
			
				|  |  |  |  |  |                   <span v-else class="row-state cancel-state">未通过</span> | 
		
	
		
			
				|  |  |  |  |  |                 </template> | 
		
	
		
			
				|  |  |  |  |  |               </el-table-column> | 
		
	
		
			
				|  |  |  |  |  |             </el-table> | 
		
	
		
			
				|  |  |  |  |  |           </div> | 
		
	
		
			
				|  |  |  |  |  |         </div> | 
		
	
		
			
				|  |  |  |  |  |       </div> | 
		
	
		
			
				|  |  |     </div> |  |  |     </div> | 
		
	
		
			
				|  |  |   </div> |  |  |   </div> | 
		
	
		
			
				|  |  | </template> |  |  | </template> | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  | <script> |  |  | <script> | 
		
	
		
			
				|  |  |  |  |  | import { FetchFourCheckRecordTreeByReportId } from '@/api/collect/collect' | 
		
	
		
			
				|  |  |  |  |  | import { downloadFile } from '@/utils/index' | 
		
	
		
			
				|  |  |  |  |  | import { mapGetters } from 'vuex' | 
		
	
		
			
				|  |  |  |  |  | // import html2canvas from 'html2canvas' // 转图片打印需要先安装html2Canvas和print-js | 
		
	
		
			
				|  |  |  |  |  | // import printJS from 'print-js' | 
		
	
		
			
				|  |  | export default { |  |  | export default { | 
		
	
		
			
				|  |  |   name: 'FourTestReport', |  |  |   name: 'FourTestReport', | 
		
	
		
			
				|  |  |   components: { |  |  |   components: { | 
		
	
		
			
				|  |  |   }, |  |  |   }, | 
		
	
		
			
				|  |  |   data() { |  |  |   data() { | 
		
	
		
			
				|  |  |     return { |  |  |     return { | 
		
	
		
			
				|  |  |       parentArchiveNo: null, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |       loading: false, | 
		
	
		
			
				|  |  |  |  |  |       currentReportInfo: null, | 
		
	
		
			
				|  |  |       allFileTables: [], |  |  |       allFileTables: [], | 
		
	
		
			
				|  |  |       fileCurrent: null |  |  |  | 
		
	
		
			
				|  |  |  |  |  |       defaultProps: { | 
		
	
		
			
				|  |  |  |  |  |         children: 'children', | 
		
	
		
			
				|  |  |  |  |  |         label: 'label' | 
		
	
		
			
				|  |  |  |  |  |       }, | 
		
	
		
			
				|  |  |  |  |  |       reportData: null, | 
		
	
		
			
				|  |  |  |  |  |       checkItemAllData: { | 
		
	
		
			
				|  |  |  |  |  |         authenticity: [], | 
		
	
		
			
				|  |  |  |  |  |         integrity: [], | 
		
	
		
			
				|  |  |  |  |  |         usability: [], | 
		
	
		
			
				|  |  |  |  |  |         safety: [] | 
		
	
		
			
				|  |  |  |  |  |       }, | 
		
	
		
			
				|  |  |  |  |  |       printObj: { | 
		
	
		
			
				|  |  |  |  |  |         id: 'printArea', | 
		
	
		
			
				|  |  |  |  |  |         preview: true, // 是否启动预览模式,默认是false | 
		
	
		
			
				|  |  |  |  |  |         previewTitle: '四性检测报告', // 打印预览的标题 | 
		
	
		
			
				|  |  |  |  |  |         previewPrintBtnLabel: '预览结束,开始打印', | 
		
	
		
			
				|  |  |  |  |  |         zIndex: 20002, // 预览窗口的z-index,默认是20002,最好比默认值更高 | 
		
	
		
			
				|  |  |  |  |  |         extraCss: '', // 打印可引入外部的一个css文件 | 
		
	
		
			
				|  |  |  |  |  |         extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>,<style> #printArea { height: auto !important; } <style>', // 打印头部文字 | 
		
	
		
			
				|  |  |  |  |  |         previewBeforeOpenCallback() { console.log('正在加载预览窗口!') }, // 预览窗口打开之前的callback | 
		
	
		
			
				|  |  |  |  |  |         previewOpenCallback() { console.log('已经加载完预览窗口,预览打开了!') }, // 预览窗口打开时的callback | 
		
	
		
			
				|  |  |  |  |  |         beforeOpenCallback() { console.log('开始打印之前!') }, // 开始打印之前的callback | 
		
	
		
			
				|  |  |  |  |  |         openCallback() { console.log('执行打印了!') }, // 调用打印时的callback | 
		
	
		
			
				|  |  |  |  |  |         closeCallback() { console.log('关闭了打印工具!') }, // 关闭打印的callback(无法区分确认or取消) | 
		
	
		
			
				|  |  |  |  |  |         clickMounted() { console.log('点击v-print绑定的按钮了!') }, | 
		
	
		
			
				|  |  |  |  |  |         // url: 'http://192.168.99.67:11100/downloadFile/category/AE8B188F0C0314F9BE31B8/82FBCAE96CBC9F50809838/7f3df862-f36d-4061-9c3e-e81556420742.pdf', // 打印指定的URL,确保同源策略相同 | 
		
	
		
			
				|  |  |  |  |  |         // asyncUrl (reslove) { | 
		
	
		
			
				|  |  |  |  |  |         //   setTimeout(() => { | 
		
	
		
			
				|  |  |  |  |  |         //     reslove('http://localhost:8080/') | 
		
	
		
			
				|  |  |  |  |  |         //   }, 2000) | 
		
	
		
			
				|  |  |  |  |  |         // }, | 
		
	
		
			
				|  |  |  |  |  |         standard: '', | 
		
	
		
			
				|  |  |  |  |  |         extarCss: '' | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  |   }, | 
		
	
		
			
				|  |  |  |  |  |   computed: { | 
		
	
		
			
				|  |  |  |  |  |     ...mapGetters([ | 
		
	
		
			
				|  |  |  |  |  |       'baseApi' | 
		
	
		
			
				|  |  |  |  |  |     ]), | 
		
	
		
			
				|  |  |  |  |  |     checkDetails() { | 
		
	
		
			
				|  |  |  |  |  |       return { | 
		
	
		
			
				|  |  |  |  |  |         total: this.reportData.current.checkNum, | 
		
	
		
			
				|  |  |  |  |  |         pass: this.reportData.current.passNum, | 
		
	
		
			
				|  |  |  |  |  |         fail: this.reportData.current.failNum | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |     }, | 
		
	
		
			
				|  |  |  |  |  |     subsetCheckDetails() { | 
		
	
		
			
				|  |  |  |  |  |       return { | 
		
	
		
			
				|  |  |  |  |  |         total: this.getArchivesSubet(this.currentReportInfo.archivesId).checkNum, | 
		
	
		
			
				|  |  |  |  |  |         pass: this.getArchivesSubet(this.currentReportInfo.archivesId).passNum, | 
		
	
		
			
				|  |  |  |  |  |         fail: this.getArchivesSubet(this.currentReportInfo.archivesId).failNum | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |     } |  |  |     } | 
		
	
		
			
				|  |  |   }, |  |  |   }, | 
		
	
		
			
				|  |  |   created() { |  |  |   created() { | 
		
	
		
			
				|  |  |  |  |  |     if (localStorage.getItem('fourTestStorage')) { | 
		
	
		
			
				|  |  |  |  |  |       this.currentReportInfo = JSON.parse(localStorage.getItem('fourTestStorage')) | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |   }, |  |  |   }, | 
		
	
		
			
				|  |  |   mounted() { |  |  |   mounted() { | 
		
	
		
			
				|  |  |     if (this.$route.query.archiveNo) { |  |  |  | 
		
	
		
			
				|  |  |       this.parentArchiveNo = this.$route.query.archiveNo |  |  |  | 
		
	
		
			
				|  |  |     } |  |  |  | 
		
	
		
			
				|  |  |  |  |  |     this.getFourCheckRecordTreeByReportId() | 
		
	
		
			
				|  |  |   }, |  |  |   }, | 
		
	
		
			
				|  |  |   methods: { |  |  |   methods: { | 
		
	
		
			
				|  |  |  |  |  |     handleNodeClick(data) { | 
		
	
		
			
				|  |  |  |  |  |       this.loading = true | 
		
	
		
			
				|  |  |  |  |  |       this.currentReportInfo = data | 
		
	
		
			
				|  |  |  |  |  |       this.getFourCheckRecordTreeByReportId() | 
		
	
		
			
				|  |  |  |  |  |     }, | 
		
	
		
			
				|  |  |  |  |  |     getFourCheckRecordTreeByReportId() { | 
		
	
		
			
				|  |  |  |  |  |       this.loading = true | 
		
	
		
			
				|  |  |  |  |  |       const params = { | 
		
	
		
			
				|  |  |  |  |  |         'reportId': this.currentReportInfo.id | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |       FetchFourCheckRecordTreeByReportId(params).then((res) => { | 
		
	
		
			
				|  |  |  |  |  |         this.reportData = res | 
		
	
		
			
				|  |  |  |  |  |         // 左侧列表数据 | 
		
	
		
			
				|  |  |  |  |  |         const parent = { | 
		
	
		
			
				|  |  |  |  |  |           archivesId: res.parent.archivesId, | 
		
	
		
			
				|  |  |  |  |  |           categoryLevel: res.parent.categoryLevel, | 
		
	
		
			
				|  |  |  |  |  |           id: res.parent.id, | 
		
	
		
			
				|  |  |  |  |  |           label: res.parent.archivesName ?? '', | 
		
	
		
			
				|  |  |  |  |  |           reportNo: res.parent.reportNo, | 
		
	
		
			
				|  |  |  |  |  |           children: [] | 
		
	
		
			
				|  |  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |  |         const children = res.subset.map(subsetItem => ({ | 
		
	
		
			
				|  |  |  |  |  |           archivesId: subsetItem.archivesId, | 
		
	
		
			
				|  |  |  |  |  |           categoryLevel: subsetItem.categoryLevel, | 
		
	
		
			
				|  |  |  |  |  |           id: subsetItem.id, | 
		
	
		
			
				|  |  |  |  |  |           reportNo: subsetItem.reportNo, | 
		
	
		
			
				|  |  |  |  |  |           label: subsetItem.archivesName | 
		
	
		
			
				|  |  |  |  |  |         })) | 
		
	
		
			
				|  |  |  |  |  |         parent.children = children | 
		
	
		
			
				|  |  |  |  |  |         const treeData = [parent] | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |         this.allFileTables = treeData | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |         this.$nextTick(() => { | 
		
	
		
			
				|  |  |  |  |  |           this.setCurrentKey(this.currentReportInfo.archivesId) | 
		
	
		
			
				|  |  |  |  |  |         }) | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |         // 右侧检测项 | 
		
	
		
			
				|  |  |  |  |  |         res.details.forEach(item => { | 
		
	
		
			
				|  |  |  |  |  |           switch (item.primaryClassId) { | 
		
	
		
			
				|  |  |  |  |  |             case '真实性检测': | 
		
	
		
			
				|  |  |  |  |  |               this.checkItemAllData.authenticity.push(item) | 
		
	
		
			
				|  |  |  |  |  |               break | 
		
	
		
			
				|  |  |  |  |  |             case '完整性检测': | 
		
	
		
			
				|  |  |  |  |  |               this.checkItemAllData.integrity.push(item) | 
		
	
		
			
				|  |  |  |  |  |               break | 
		
	
		
			
				|  |  |  |  |  |             case '可用性检测': | 
		
	
		
			
				|  |  |  |  |  |               this.checkItemAllData.usability.push(item) | 
		
	
		
			
				|  |  |  |  |  |               break | 
		
	
		
			
				|  |  |  |  |  |             case '安全性检测': | 
		
	
		
			
				|  |  |  |  |  |               this.checkItemAllData.safety.push(item) | 
		
	
		
			
				|  |  |  |  |  |               break | 
		
	
		
			
				|  |  |  |  |  |             default: | 
		
	
		
			
				|  |  |  |  |  |               console.log('暂无分类') | 
		
	
		
			
				|  |  |  |  |  |           } | 
		
	
		
			
				|  |  |  |  |  |         }) | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |         this.loading = false | 
		
	
		
			
				|  |  |  |  |  |       }) | 
		
	
		
			
				|  |  |  |  |  |     }, | 
		
	
		
			
				|  |  |  |  |  |     getArchivesSubet(archivesId) { | 
		
	
		
			
				|  |  |  |  |  |       if (this.currentReportInfo.categoryLevel !== 2) { | 
		
	
		
			
				|  |  |  |  |  |         const matchedSubset = this.reportData.subset.find(subsetItem => subsetItem.archivesId === archivesId) | 
		
	
		
			
				|  |  |  |  |  |         console.log('matchedSubset', matchedSubset) | 
		
	
		
			
				|  |  |  |  |  |         return matchedSubset || null | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |     }, | 
		
	
		
			
				|  |  |  |  |  |     setCurrentKey(key) { | 
		
	
		
			
				|  |  |  |  |  |       if (this.$refs.tree) { | 
		
	
		
			
				|  |  |  |  |  |         this.$refs.tree.setCurrentKey(key) | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |     }, | 
		
	
		
			
				|  |  |  |  |  |     downloadFile(row) { | 
		
	
		
			
				|  |  |  |  |  |       const url = this.baseApi + '/downloadFile' + row.file_path | 
		
	
		
			
				|  |  |  |  |  |       fetch(url).then(res => res.blob()).then(blob => { | 
		
	
		
			
				|  |  |  |  |  |         downloadFile(blob, row.file_name.split('.')[0], row.file_type) | 
		
	
		
			
				|  |  |  |  |  |       }).catch(() => { | 
		
	
		
			
				|  |  |  |  |  |         this.$message({ message: '下载文件失败!', type: 'error', offset: 8 }) | 
		
	
		
			
				|  |  |  |  |  |       }) | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |   } |  |  |   } | 
		
	
		
			
				|  |  | } |  |  | } | 
		
	
		
			
				|  |  | </script> |  |  | </script> | 
		
	
		
			
				|  |  |  |  |  | <style lang="scss"> | 
		
	
		
			
				|  |  |  |  |  | .print-content { | 
		
	
		
			
				|  |  |  |  |  |   background-color: red; | 
		
	
		
			
				|  |  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | .el-tooltip__popper { | 
		
	
		
			
				|  |  |  |  |  |   max-width: 300px; | 
		
	
		
			
				|  |  |  |  |  |   line-height: 20px !important; | 
		
	
		
			
				|  |  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | .el-popover { | 
		
	
		
			
				|  |  |  |  |  |   font-size: 12px; | 
		
	
		
			
				|  |  |  |  |  |   background: #303133; | 
		
	
		
			
				|  |  |  |  |  |   border: 1px solid #303133; | 
		
	
		
			
				|  |  |  |  |  |   line-height: 20px !important; | 
		
	
		
			
				|  |  |  |  |  |   color: #fff; | 
		
	
		
			
				|  |  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | .el-popover[x-placement^=top] .popper__arrow{ | 
		
	
		
			
				|  |  |  |  |  |   border-top-color: #303133; | 
		
	
		
			
				|  |  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | .el-popover[x-placement^=top] .popper__arrow::after{ | 
		
	
		
			
				|  |  |  |  |  |   border-top-color: #303133; | 
		
	
		
			
				|  |  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | </style> | 
		
	
		
			
				|  |  | <style lang="scss" scoped> |  |  | <style lang="scss" scoped> | 
		
	
		
			
				|  |  |  |  |  | @import "~@/assets/styles/mixin.scss"; | 
		
	
		
			
				|  |  | .preview-wrapper{ |  |  | .preview-wrapper{ | 
		
	
		
			
				|  |  |  |  |  |   width: 100%; | 
		
	
		
			
				|  |  |  |  |  |   height: 100%; | 
		
	
		
			
				|  |  |  |  |  |   overflow: hidden; | 
		
	
		
			
				|  |  |   background-color: #f6f8fc; |  |  |   background-color: #f6f8fc; | 
		
	
		
			
				|  |  |   .collect-header{ |  |  |   .collect-header{ | 
		
	
		
			
				|  |  |     background-color: #fff; |  |  |     background-color: #fff; | 
		
	
	
		
			
				|  | @ -54,12 +409,13 @@ export default { | 
		
	
		
			
				|  |  | .main-content{ |  |  | .main-content{ | 
		
	
		
			
				|  |  |   display: flex; |  |  |   display: flex; | 
		
	
		
			
				|  |  |   justify-content: space-between; |  |  |   justify-content: space-between; | 
		
	
		
			
				|  |  | 	width: calc(100%); |  |  |  | 
		
	
		
			
				|  |  |  |  |  | 	width: 100%; | 
		
	
		
			
				|  |  | 	height: calc(100vh - 75px); |  |  | 	height: calc(100vh - 75px); | 
		
	
		
			
				|  |  |   background-color: #fff; |  |  |  | 
		
	
		
			
				|  |  |  |  |  |   overflow: hidden; | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |   .content-list{ |  |  |   .content-list{ | 
		
	
		
			
				|  |  |     width: 300px; |  |  |     width: 300px; | 
		
	
		
			
				|  |  |  |  |  |     background-color: #fff; | 
		
	
		
			
				|  |  |     .arc-title{ |  |  |     .arc-title{ | 
		
	
		
			
				|  |  |       height: 48px; |  |  |       height: 48px; | 
		
	
		
			
				|  |  |       line-height: 48px; |  |  |       line-height: 48px; | 
		
	
	
		
			
				|  | @ -96,5 +452,70 @@ export default { | 
		
	
		
			
				|  |  |       } |  |  |       } | 
		
	
		
			
				|  |  |     } |  |  |     } | 
		
	
		
			
				|  |  |   } |  |  |   } | 
		
	
		
			
				|  |  |  |  |  |   .content-right{ | 
		
	
		
			
				|  |  |  |  |  |     width: calc(100% - 300px); | 
		
	
		
			
				|  |  |  |  |  |     // background-color: yellow; | 
		
	
		
			
				|  |  |  |  |  |     padding-bottom: 20px; | 
		
	
		
			
				|  |  |  |  |  |     overflow: hidden; | 
		
	
		
			
				|  |  |  |  |  |     overflow-y: scroll; | 
		
	
		
			
				|  |  |  |  |  |     .report-header{ | 
		
	
		
			
				|  |  |  |  |  |       padding: 10px 20px; | 
		
	
		
			
				|  |  |  |  |  |       height: 200px; | 
		
	
		
			
				|  |  |  |  |  |       background-color: #1890ff; | 
		
	
		
			
				|  |  |  |  |  |       color: #fff; | 
		
	
		
			
				|  |  |  |  |  |       h5{ | 
		
	
		
			
				|  |  |  |  |  |         font-size: 24px; | 
		
	
		
			
				|  |  |  |  |  |         line-height: 48px; | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  |     .report-baseInfo{ | 
		
	
		
			
				|  |  |  |  |  |       margin: -100px 20px 0 20px; | 
		
	
		
			
				|  |  |  |  |  |       background-color: #fff; | 
		
	
		
			
				|  |  |  |  |  |       padding: 20px; | 
		
	
		
			
				|  |  |  |  |  |       border-radius: 10px; | 
		
	
		
			
				|  |  |  |  |  |       overflow: hidden; | 
		
	
		
			
				|  |  |  |  |  |       .baseInfo-txt{ | 
		
	
		
			
				|  |  |  |  |  |         display: flex; | 
		
	
		
			
				|  |  |  |  |  |         justify-content: flex-start; | 
		
	
		
			
				|  |  |  |  |  |         flex-wrap: wrap; | 
		
	
		
			
				|  |  |  |  |  |         li{ | 
		
	
		
			
				|  |  |  |  |  |           width: 40%; | 
		
	
		
			
				|  |  |  |  |  |           font-size: 14px; | 
		
	
		
			
				|  |  |  |  |  |           line-height: 28px; | 
		
	
		
			
				|  |  |  |  |  |           color:#606266; | 
		
	
		
			
				|  |  |  |  |  |           span{ | 
		
	
		
			
				|  |  |  |  |  |             color: #0c0e1e; | 
		
	
		
			
				|  |  |  |  |  |           } | 
		
	
		
			
				|  |  |  |  |  |           .row-state{ | 
		
	
		
			
				|  |  |  |  |  |             @include process-status-style; | 
		
	
		
			
				|  |  |  |  |  |           } | 
		
	
		
			
				|  |  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  |     .report-title{ | 
		
	
		
			
				|  |  |  |  |  |       margin-bottom: 20px; | 
		
	
		
			
				|  |  |  |  |  |       border-bottom: 1px solid #edeff3; | 
		
	
		
			
				|  |  |  |  |  |       span{ | 
		
	
		
			
				|  |  |  |  |  |         display: inline-block; | 
		
	
		
			
				|  |  |  |  |  |         padding-bottom: 10px; | 
		
	
		
			
				|  |  |  |  |  |         font-weight: 600; | 
		
	
		
			
				|  |  |  |  |  |         border-bottom: 3px solid #0348f3; | 
		
	
		
			
				|  |  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  |     .report-checkItem{ | 
		
	
		
			
				|  |  |  |  |  |       background-color: #fff; | 
		
	
		
			
				|  |  |  |  |  |       padding: 20px; | 
		
	
		
			
				|  |  |  |  |  |       border-radius: 10px; | 
		
	
		
			
				|  |  |  |  |  |       margin: 20px 20px 0 20px; | 
		
	
		
			
				|  |  |  |  |  |       overflow: hidden; | 
		
	
		
			
				|  |  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  | ::v-deep .el-popover__reference{ | 
		
	
		
			
				|  |  |  |  |  |   max-width: 200px; | 
		
	
		
			
				|  |  |  |  |  |   white-space: nowrap; | 
		
	
		
			
				|  |  |  |  |  |   overflow: hidden; | 
		
	
		
			
				|  |  |  |  |  |   text-overflow: ellipsis; | 
		
	
		
			
				|  |  | } |  |  | } | 
		
	
		
			
				|  |  | </style> |  |  | </style> |