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.
320 lines
11 KiB
320 lines
11 KiB
<template>
|
|
<el-dialog class="detail-dialog" :title="detailTitle" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="archivesInfoVisible" :before-close="handleClose">
|
|
<!-- <span class="dialog-right-top" />
|
|
<span class="dialog-left-bottom" /> -->
|
|
<div class="setting-dialog">
|
|
<div class="detail-tab tab-content">
|
|
<!-- tab -->
|
|
<ul class="tab-nav">
|
|
<li :class="{'active-tab-nav': archivesTabIndex == 0}" @click="changeActiveTab(0)">基本信息</li>
|
|
<li v-if="isHasFile" :class="{'active-tab-nav': archivesTabIndex == 1}" @click="changeActiveTab(1)">原文列表</li>
|
|
<li v-if="!isHasFile && isTitleType === 3" :class="{'active-tab-nav': archivesTabIndex == 5}" @click="changeActiveTab(5)">文件列表</li>
|
|
<li v-if="!isHasFile && isTitleType === 2" :class="{'active-tab-nav': archivesTabIndex == 5}" @click="changeActiveTab(5)">案卷列表</li>
|
|
<li :class="{'active-tab-nav': archivesTabIndex == 2}" @click="changeActiveTab(2)">元数据</li>
|
|
<li v-if="isFourTest" :class="{'active-tab-nav': archivesTabIndex == 3}" @click="changeActiveTab(3)">四性检测</li>
|
|
<li v-if="isFourTest && isHasFile" :class="{'active-tab-nav': archivesTabIndex == 4}" @click="changeActiveTab(4)">操作记录</li>
|
|
<li v-if="isFourTest && isHasFile" :class="{'active-tab-nav': archivesTabIndex == 6}" @click="changeActiveTab(6)">标注信息</li>
|
|
</ul>
|
|
<!-- 基本信息 -->
|
|
<div v-if="archivesTabIndex==0" class="base-info item-content">
|
|
<el-row>
|
|
<el-col v-for="(item,index) in filteredArray" :key="index" :span="item.isLine ? 24 : 12" class="base-info-item">
|
|
<span>{{ item.fieldCnName }}:</span>
|
|
<p :style="{ width: ( item.editLength ? item.editLength+'px' : '' ), flex: ( !item.editLength ? 1 : '' )}">{{ item.context }}</p>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row v-for="(item,index) in archivesDetailsData" :key="index">
|
|
<el-col v-if="item.fieldName === 'is_entity'" :span="24" class="base-info-item">
|
|
<span>有无实体:</span>
|
|
<p style="flex:1">{{ item.context === 1 ? '有' : '无' }}</p>
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
<!-- 附件 -->
|
|
<UploadFile v-if="archivesTabIndex==1" ref="uploadFile" class="item-content" :is-upload-detail="false" :selected-category="selectedCategory" :arc-id="arcId" />
|
|
<!-- 元数据 -->
|
|
<div v-if="archivesTabIndex==2" class="metadata-cont item-content">
|
|
<pre v-highlightjs="xml_show">
|
|
<code class="highlight_s">
|
|
{[xml_show]}
|
|
</code>
|
|
</pre>
|
|
</div>
|
|
<FourTestInfo v-show="archivesTabIndex===3" ref="fourTestInfoRefs" />
|
|
<HandleInfo v-show="archivesTabIndex===4" ref="handleInfoRefs" />
|
|
<ArchivesListModule v-show="archivesTabIndex===5" ref="archivesListModuleRef" :selected-category="selectedCategory" :is-title-type="isTitleType" :is-collect="isCollect" />
|
|
<MarkInfo v-show="archivesTabIndex===6" ref="markInfoRefs" :selected-category="selectedCategory" />
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</template>
|
|
|
|
<script>
|
|
import { form } from '@crud/crud'
|
|
import { FetchDetailsById, FetchArchivesMetadata } from '@/api/collect/collect'
|
|
import { FetchIsAuthByLookType } from '@/api/archivesManage/library'
|
|
import UploadFile from '../uploadFile/index'
|
|
import FourTestInfo from '../fourTestInfo/index'
|
|
import HandleInfo from '../handleInfo/index'
|
|
import MarkInfo from '../markInfo/index'
|
|
export default {
|
|
name: 'ArchivesInfo',
|
|
components: { UploadFile, FourTestInfo, HandleInfo, MarkInfo },
|
|
mixins: [
|
|
form({})
|
|
],
|
|
props: {
|
|
selectedCategory: {
|
|
type: Object,
|
|
default: function() {
|
|
return {}
|
|
}
|
|
},
|
|
arcId: {
|
|
type: String,
|
|
default: function() {
|
|
return ''
|
|
}
|
|
},
|
|
isTitleType: {
|
|
type: Number,
|
|
default: 2
|
|
},
|
|
isCollect: {
|
|
type: Boolean,
|
|
default: true
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
detailTitle: '',
|
|
isHasFile: false, // 卷内/文件才有附件
|
|
isFourTest: false,
|
|
isDetailsInfo: false, // 项目不显示最下面5行基本信息
|
|
archivesInfoVisible: false,
|
|
archivesTabIndex: 0,
|
|
archivesDetailsData: [],
|
|
archivesDetailsMetadata: [],
|
|
xml_show: null,
|
|
authArcId: null
|
|
}
|
|
},
|
|
computed: {
|
|
filteredArray() {
|
|
const lastIndex = this.archivesDetailsData.length - 1
|
|
return this.archivesDetailsData
|
|
.filter((item, index) => index !== lastIndex || item.fieldName !== 'is_entity')
|
|
}
|
|
},
|
|
created() {
|
|
},
|
|
mounted() {
|
|
},
|
|
methods: {
|
|
getDetial(collectLevel, rowId) {
|
|
this.authArcId = rowId
|
|
const params = {
|
|
'categoryId': this.selectedCategory.id,
|
|
'categoryLevel': collectLevel,
|
|
'id': rowId
|
|
}
|
|
FetchDetailsById(params).then(data => {
|
|
this.archivesDetailsData = data.showFiled
|
|
.filter(field => field.fieldName in data.echo)
|
|
.map(field => ({
|
|
editLength: field.editLength,
|
|
isLine: field.isLine,
|
|
fieldCnName: field.fieldCnName,
|
|
fieldName: field.fieldName,
|
|
context: data.echo[field.fieldName]
|
|
}))
|
|
})
|
|
const metaDataParams = {
|
|
'categoryId': this.selectedCategory.id,
|
|
'categoryLevel': collectLevel,
|
|
'archivesId': rowId
|
|
}
|
|
FetchArchivesMetadata(metaDataParams).then(data => {
|
|
this.archivesDetailsMetadata = data
|
|
})
|
|
},
|
|
getIsAuthByLookType() {
|
|
const params = {
|
|
'archivesId': this.authArcId
|
|
}
|
|
FetchIsAuthByLookType(params).then(res => {
|
|
this.$refs.uploadFile.authUtilize = res
|
|
})
|
|
},
|
|
setXml() {
|
|
const xmlstr = this.archivesDetailsMetadata
|
|
this.xml_show = this.showXml(xmlstr)
|
|
},
|
|
changeActiveTab(index) {
|
|
this.archivesTabIndex = index
|
|
if (this.archivesTabIndex === 2) {
|
|
this.setXml()
|
|
} else if (this.archivesTabIndex === 3) {
|
|
console.log(this.$refs.fourTestInfoRefs)
|
|
this.$refs.fourTestInfoRefs.currentArcId = this.arcId
|
|
this.$refs.fourTestInfoRefs.getFourCheckRecord(this.arcId)
|
|
} else if (this.archivesTabIndex === 4) {
|
|
console.log(this.$refs.handleInfoRefs)
|
|
this.$refs.handleInfoRefs.currentArcId = this.arcId
|
|
this.$refs.handleInfoRefs.getArchivesOperateLog(this.arcId)
|
|
} else if (this.archivesTabIndex === 5) {
|
|
if (this.isTitleType === 2) {
|
|
this.$refs.archivesListModuleRef.detailLevel = 2
|
|
} else if (this.isTitleType === 3) {
|
|
this.$refs.archivesListModuleRef.detailLevel = 3
|
|
} else {
|
|
this.$refs.archivesListModuleRef.detailLevel = 4
|
|
}
|
|
this.$refs.archivesListModuleRef.parentId = this.arcId
|
|
this.$refs.archivesListModuleRef.isDetail = true
|
|
this.$refs.archivesListModuleRef.getViewTable()
|
|
} else if (this.archivesTabIndex === 6) {
|
|
this.$refs.markInfoRefs.archivesDetailsData = this.archivesDetailsData
|
|
this.$refs.markInfoRefs.currentArcId = this.arcId
|
|
this.$refs.markInfoRefs.getFileMarkList(this.arcId)
|
|
}
|
|
this.$nextTick(() => {
|
|
if (this.$refs.uploadFile) {
|
|
this.getIsAuthByLookType()
|
|
this.$refs.uploadFile.parentInfo = this.archivesDetailsData
|
|
this.$refs.uploadFile.tableData = []
|
|
this.$refs.uploadFile.getFileList()
|
|
}
|
|
})
|
|
},
|
|
// 删除 - 关闭
|
|
handleClose(done) {
|
|
this.archivesInfoVisible = false
|
|
localStorage.removeItem('collectLevelList')
|
|
done()
|
|
},
|
|
// xml格式化
|
|
showXml(str) {
|
|
var that = this
|
|
var text = str
|
|
// 去掉多余的空格
|
|
text =
|
|
'\n' +
|
|
text
|
|
.replace(/(<\w+)(\s.*?>)/g, function($0, name, props) {
|
|
return name + ' ' + props.replace(/\s+(\w+=)/g, ' $1')
|
|
})
|
|
.replace(/>\s*?</g, '>\n<')
|
|
// 把注释编码
|
|
text = text
|
|
.replace(/\n/g, '\r')
|
|
.replace(/<!--(.+?)-->/g, function($0, text) {
|
|
var ret = '<!--' + escape(text) + '-->'
|
|
return ret
|
|
})
|
|
.replace(/\r/g, '\n')
|
|
|
|
// 调整格式
|
|
var rgx = /\n(<(([^\?]).+?)(?:\s|\s*?>|\s*?(\/)>)(?:.*?(?:(?:(\/)>)|(?:<(\/)\2>)))?)/gm
|
|
var nodeStack = []
|
|
var output = text.replace(rgx, function(
|
|
$0,
|
|
all,
|
|
name,
|
|
isBegin,
|
|
isCloseFull1,
|
|
isCloseFull2,
|
|
isFull1,
|
|
isFull2
|
|
) {
|
|
var isClosed =
|
|
isCloseFull1 === '/' ||
|
|
isCloseFull2 === '/' ||
|
|
isFull1 === '/' ||
|
|
isFull2 === '/'
|
|
var prefix = ''
|
|
if (isBegin === '!') {
|
|
prefix = that.getPrefix(nodeStack.length)
|
|
} else {
|
|
if (isBegin !== '/') {
|
|
prefix = that.getPrefix(nodeStack.length)
|
|
if (!isClosed) {
|
|
nodeStack.push(name)
|
|
}
|
|
} else {
|
|
nodeStack.pop()
|
|
prefix = that.getPrefix(nodeStack.length)
|
|
}
|
|
}
|
|
var ret = '\n' + prefix + all
|
|
return ret
|
|
})
|
|
var outputText = output.substring(1)
|
|
// 把注释还原并解码,调格式
|
|
outputText = outputText
|
|
.replace(/\n/g, '\r')
|
|
.replace(/(\s*)<!--(.+?)-->/g, function($0, prefix, text) {
|
|
if (prefix.charAt(0) === '\r') prefix = prefix.substring(1)
|
|
text = unescape(text).replace(/\r/g, '\n')
|
|
var ret =
|
|
'\n' + prefix + '<!--' + text.replace(/^\s*/gm, prefix) + '-->'
|
|
return ret
|
|
})
|
|
outputText = outputText.replace(/\s+$/g, '').replace(/\r/g, '\r\n')
|
|
return outputText
|
|
},
|
|
getPrefix(prefixIndex) {
|
|
var span = ' '
|
|
var output = []
|
|
for (var i = 0; i < prefixIndex; ++i) {
|
|
output.push(span)
|
|
}
|
|
return output.join('')
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.base-info,
|
|
.metadata-cont{
|
|
background-color: #F6F8FC;
|
|
|
|
}
|
|
// 档案详情
|
|
.base-info{
|
|
padding: 20px 0;
|
|
overflow: hidden;
|
|
overflow-y: scroll;
|
|
.base-info-item{
|
|
display: flex;
|
|
flex-direction: row;
|
|
margin-bottom: 20px;
|
|
color: #545B65;
|
|
span{
|
|
display: block;
|
|
width: 120px;
|
|
margin-right: 5px;
|
|
text-align: right;
|
|
color: #0C0E1E;
|
|
}
|
|
}
|
|
}
|
|
|
|
code.hljs {
|
|
font-size: 12px;
|
|
color: #0C0E1E !important;
|
|
height: 530px !important;
|
|
}
|
|
::v-deep .hljs-name{
|
|
color: #0C0E1E !important;
|
|
}
|
|
.base-info .base-info-item span.el-tag{
|
|
width: auto;
|
|
color: #fff;
|
|
}
|
|
|
|
.detail-tab .tab-nav{
|
|
margin: 15px 0 18px 0;
|
|
}
|
|
</style>
|