This commit is contained in:
2025-11-19 08:49:32 +08:00
parent 6d53b06592
commit 4dc7783c22
5 changed files with 524 additions and 759 deletions

View File

@@ -1,215 +1,101 @@
<template>
<!-- 档案管理未入库档案著录已入库数据浏览OA数据管理已入库收藏夹点击原文数量弹框 -->
<div>
<el-drawer
title="原文详情"
:visible.sync="drawer"
:append-to-body="true"
direction="ltr"
:before-close="handleClose"
size="100%"
:wrapperClosable="false"
>
<div
class="tip-info"
v-if="
<el-drawer title="原文详情" :visible.sync="drawer" :append-to-body="true" direction="ltr" :before-close="handleClose"
size="100%" :wrapperClosable="false">
<div class="tip-info" v-if="
routerName === 'dataBrowsing' || routerName === 'notStoredArchives'
"
>
">
{{ checkText }}
</div>
<div class="btnClass">
<el-card :body-style="{ padding: '10px' }">
<!-- {{drawer}}{{oriTable}} -->
<el-button
size="mini"
v-if="catalogueType"
type="danger"
@click="deletec"
>
<el-button size="mini" v-if="catalogueType" type="danger" @click="deletec">
删除
</el-button>
<el-button
size="mini"
v-if="catalogueType && treeRow.className != '电子档案'"
type="primary"
@click="btnClick(1)"
>
<el-button size="mini" v-if="catalogueType && treeRow.className != '电子档案'" type="primary"
@click="btnClick(1)">
批量下载
</el-button>
<el-button
size="mini"
v-if="catalogueType && treeRow.className != '电子档案'"
type="primary"
@click="btnClick(2)"
>
<el-button size="mini" v-if="catalogueType && treeRow.className != '电子档案'" type="primary"
@click="btnClick(2)">
归档章
</el-button>
<!-- <el-button size="mini" v-if="catalogueType && treeRow.className!='录像' && treeRow.className!='录音'"
type="primary" @click="btnClick(3)">
合并文件 </el-button> -->
<el-button
size="mini"
v-if="treeRow.className != '电子档案'"
type="primary"
@click="btnClick(4)"
>
<el-button size="mini" v-if="treeRow.className != '电子档案'" type="primary" @click="btnClick(4)">
合并下载
</el-button>
<!-- <el-button size="mini"
v-if="catalogueType && treeRow.className!='录像' && treeRow.className!='录音' && routerName==='notStoredArchives'"
type="primary" @click="btnClick(5)">
扫描原文 </el-button> -->
<el-button
size="mini"
v-if="
<el-button size="mini" v-if="
catalogueType &&
treeRow.className != '电子档案' &&
routerName === 'notStoredArchives'
"
type="primary"
@click="btnClick(6)"
>
" type="primary" @click="btnClick(6)">
撤销归档章
</el-button>
<el-button
size="mini"
v-if="treeRow.className != '电子档案'"
type="primary"
@click="btnClick(9)"
>
<el-button size="mini" v-if="treeRow.className != '电子档案'" type="primary" @click="btnClick(9)">
电子签名
</el-button>
<el-button
size="mini"
type="primary"
v-if="routerName === 'dataBrowsing'"
@click="btnClick(7)"
>电子档案复制申请
<el-button size="mini" type="primary" v-if="routerName === 'dataBrowsing'" @click="btnClick(7)">电子档案复制申请
</el-button>
<el-button
size="mini"
type="primary"
v-if="routerName === 'dataBrowsing'"
@click="btnClick(8)"
>实体档案复制申请
<el-button size="mini" type="primary" v-if="routerName === 'dataBrowsing'" @click="btnClick(8)">实体档案复制申请
</el-button>
</el-card>
</div>
<div class="contentBox">
<el-card :body-style="{ padding: '10px' }" style="width: 26%">
<el-button
v-if="oriRowObj.useStyle === 'print' || typeStatus === 'ruku'"
type="primary"
size="small"
:disabled="!multipleSelection.length"
@click="download"
>
<el-button v-if="oriRowObj.useStyle === 'print' || typeStatus === 'ruku'" type="primary" size="small"
:disabled="!multipleSelection.length" @click="download">
原文下载
</el-button>
<!-- @row-click="previewImg" -->
<el-table
ref="tableForEach"
highlight-current-row
border
size="mini"
:data="tableDataOrigin"
@row-click="previewImg"
tooltip-effect="dark"
max-height="800px"
@selection-change="handleSelectionChange"
>
<el-table ref="tableForEach" highlight-current-row border size="mini" :data="tableDataOrigin"
@row-click="previewImg" tooltip-effect="dark" max-height="800px" @selection-change="handleSelectionChange">
<!-- 原文下载的多选框 -->
<el-table-column
v-if="
<el-table-column v-if="
catalogueType ||
(!catalogueType && oriRowObj.useStyle === 'print') ||
typeStatus === 'ruku'
"
type="selection"
width="43"
>
" type="selection" width="43">
</el-table-column>
<el-table-column
type="index"
width="55"
label="序号"
align="center"
>
<el-table-column type="index" width="55" label="序号" align="center">
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="file_name"
label="文件名称"
align="center"
>
<el-table-column show-overflow-tooltip prop="file_name" label="文件名称" align="center">
<template slot-scope="scope">
<template v-if="scope.row.isEditFlag">
<el-input
type="text"
@change.native.stop="originClick('blur', scope.row)"
size="mini"
:title="scope.row.file_name"
v-model="scope.row.file_name"
clearable
/>
<el-input type="text" @change.native.stop="originClick('blur', scope.row)" size="mini"
:title="scope.row.file_name" v-model="scope.row.file_name" clearable />
</template>
<template v-else>{{ scope.row.file_name }}</template>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
width="100"
v-if="$route.name === 'notStoredArchives'"
>
<el-table-column label="操作" align="center" width="100" v-if="$route.name === 'notStoredArchives'">
<template slot-scope="scope">
<el-button
@click.native.stop="originClick('down', scope.row)"
type="text"
icon="el-icon-bottom"
title="向下"
size="mini"
></el-button>
<el-button
@click.native.stop="originClick('up', scope.row)"
type="text"
icon="el-icon-top"
title="向上"
size="mini"
></el-button>
<el-button
@click.native.stop="originClick('rename', scope.row)"
type="text"
icon="el-icon-edit"
title="重命名"
size="mini"
></el-button>
<el-button @click.native.stop="originClick('down', scope.row)" type="text" icon="el-icon-bottom"
title="向下" size="mini"></el-button>
<el-button @click.native.stop="originClick('up', scope.row)" type="text" icon="el-icon-top" title="向上"
size="mini"></el-button>
<el-button @click.native.stop="originClick('rename', scope.row)" type="text" icon="el-icon-edit"
title="重命名" size="mini"></el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-card
:body-style="{ padding: '10px' }"
style="width: 73%"
class="box-card"
>
<el-card :body-style="{ padding: '10px' }" style="width: 73%" class="box-card">
<el-tabs v-model="activeName">
<el-tab-pane
label="查看原文"
name="1"
v-loading.fullscreen.lock="imageLoad"
:element-loading-text="loadingText"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.1)"
>
<el-tab-pane label="查看原文" name="1" v-loading.fullscreen.lock="imageLoad" :element-loading-text="loadingText"
element-loading-spinner="el-icon-loading" element-loading-background="rgba(255, 255, 255, 0.1)">
<!-- 查看原文 -->
<div class="demo-image__lazy">
<!-- 备注scrolling属性原来是'no'现在是'auto' -->
<!-- <el-image v-show="imgType &&imgType != 'pdf' " class="imgs" :src="picUrl" fit="cover"></el-image> -->
<iframe
ref="showIframeRef"
v-if="
<iframe ref="showIframeRef" v-if="
![
'mp3',
'mp4',
@@ -220,117 +106,45 @@
'mxf',
'ofd',
].includes(this.fileType)
"
style="text-align: center"
noresize
align="center"
width="100%"
height="750px"
:src="picUrl"
frameborder="0"
scrolling="auto"
></iframe>
<template
v-if="rowTable.file_type === 'ofd' && isIframeFlag == true"
>
<iframe
:key="ofdUrl"
style="text-align: center"
noresize
align="center"
width="100%"
height="750px"
:src="`./yhofd/yhofd.html?name=${rowTable.file_name_server}&url=${ofdUrl}`"
frameborder="0"
scrolling="auto"
></iframe>
" style="text-align: center" noresize align="center" width="100%" height="750px" :src="picUrl"
frameborder="0" scrolling="auto"></iframe>
<template v-if="rowTable.file_type === 'ofd' && isIframeFlag == true">
<iframe :key="ofdUrl" style="text-align: center" noresize align="center" width="100%" height="750px"
:src="`./yhofd/yhofd.html?name=${rowTable.file_name_server}&url=${ofdUrl}`" frameborder="0"
scrolling="auto"></iframe>
</template>
<div v-if="rowTable.file_type === 'svg'" v-html="picUrl"></div>
<video
v-if="
<video v-if="
(this.fileType === 'mp4' ||
this.fileType === 'avi' ||
this.fileType === 'mxf') &&
videoSrc
"
ref="videoS"
:src="videoSrc"
controls="controls"
height="600px"
:muted="muteStatus"
width="100%"
>
" ref="videoS" :src="videoSrc" controls="controls" height="600px" :muted="muteStatus" width="100%">
您的浏览器不支持视频播放
</video>
<video
v-if="this.fileType === 'flv'"
id="videoElementByFlv"
class="flvplayer-app"
controls
:muted="muteStatus"
height="600px"
width="100%"
></video>
<audio
v-if="
<video v-if="this.fileType === 'flv'" id="videoElementByFlv" class="flvplayer-app" controls
:muted="muteStatus" height="600px" width="100%"></video>
<audio v-if="
(this.fileType === 'mp3' || this.fileType === 'wav') &&
musicSrc
"
ref="audioS"
:src="musicSrc"
controls
autoloop
></audio>
<viewer
v-if="this.fileType === 'tif'"
id="printimg"
:images="canvasList"
>
<img
v-for="item in canvasList"
:src="item"
:key="item"
:class="tif_length > 1 ? '' : 'tif_img'"
height="300"
title="请点击查看"
/>
" ref="audioS" :src="musicSrc" controls autoloop></audio>
<viewer v-if="this.fileType === 'tif'" id="printimg" :images="canvasList">
<img v-for="item in canvasList" :src="item" :key="item" :class="tif_length > 1 ? '' : 'tif_img'"
height="300" title="请点击查看" />
<!-- <div style='padding: 0px 15px'>{{rowTable.file_name}}</div> -->
</viewer>
</div>
</el-tab-pane>
<el-tab-pane
label="添加原文"
name="2"
v-loading.fullscreen.lock="loadingStatus"
:element-loading-text="loadingText"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.1)"
v-if="catalogueType"
>
<el-tab-pane label="添加原文" name="2" v-loading.fullscreen.lock="loadingStatus"
:element-loading-text="loadingText" element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.1)" v-if="catalogueType">
<!-- 添加原文 -->
<div class="uploadBox">
<el-upload
accept="*"
class="upload-demo"
ref="upload"
:file-list="fileList"
action="#"
:auto-upload="false"
multiple
:on-exceed="beforeAvatarUpload"
:on-success="upSuccess"
:on-change="handleFileChange"
:before-remove="handleFileRemove"
>
<el-button slot="trigger" size="small" type="primary"
>选择文件</el-button
>
<el-button
style="margin-left: 10px"
size="small"
type="success"
@click="submitUpload"
>开始上传
<el-upload accept="*" class="upload-demo" ref="upload" :file-list="fileList" action="#"
:auto-upload="false" multiple :on-exceed="beforeAvatarUpload" :on-success="upSuccess"
:on-change="handleFileChange" :before-remove="handleFileRemove">
<el-button slot="trigger" size="small" type="primary">选择文件</el-button>
<el-button style="margin-left: 10px" size="small" type="success" @click="submitUpload">开始上传
</el-button>
<div slot="tip" class="el-upload__tip">
上传文件支持jpg/png/pdf/tif/svg/flv/mp4/mp3/avi/wav
@@ -377,122 +191,53 @@
</el-tab-pane> -->
<el-tab-pane label="原文回收站" name="3" v-if="catalogueType">
<!-- 原文回收站 -->
<el-table
:data="backData"
style="width: 100%"
max-height="350"
ref="ytabs"
border
size="mini"
>
<el-table-column
prop="file_name"
label="文件名称"
align="center"
>
<el-table :data="backData" style="width: 100%" max-height="350" ref="ytabs" border size="mini">
<el-table-column prop="file_name" label="文件名称" align="center">
</el-table-column>
<el-table-column
prop="file_type"
label="文件类型"
width="150"
align="center"
>
<el-table-column prop="file_type" label="文件类型" width="150" align="center">
</el-table-column>
<el-table-column
prop="file_len"
label="文件大小(KB)"
align="center"
>
<el-table-column prop="file_len" label="文件大小(KB)" align="center">
</el-table-column>
<el-table-column label="操作" width="150" align="center">
<template slot-scope="scope">
<el-button type="text" @click="returnContRec(scope.row)"
>恢复</el-button
>
<el-button
type="text"
style="color: #ff0000"
@click="delOriRecycle(scope.row)"
>删除</el-button
>
<el-button type="text" @click="returnContRec(scope.row)">恢复</el-button>
<el-button type="text" style="color: #ff0000" @click="delOriRecycle(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane
label="元数据"
name="4"
v-if="treeRow.className != '电子档案'"
>
<el-form
label-position="left"
class="formDIa"
:model="metadata"
size="mini"
style="padding: 10px 25px"
label-width="100px"
>
<el-form-item
v-for="(item, index) in metadataList"
:key="item.columnName"
:label="item.columnChnName"
>
<el-tab-pane label="元数据" name="4" v-if="treeRow.className != '电子档案'">
<el-form label-position="left" class="formDIa" :model="metadata" size="mini" style="padding: 10px 25px"
label-width="100px">
<el-form-item v-for="item in metadataList" :key="item.columnName" :label="item.columnChnName">
<span>{{ metadata[item.columnName] }}</span>
</el-form-item>
<template
v-if="
<template v-if="
metadata.signature != '' &&
metadata.signature != null &&
metadata.signature != undefined
"
>
">
<el-form-item label="签名真实性:">
<el-tag
:type="
metadata.certificateValidity ? 'success' : 'warning'
"
>{{ metadata.certificateValidity ? "真" : "假" }}</el-tag
>
<el-tag :type="metadata.certificateValidity ? 'success' : 'warning'
">{{ metadata.certificateValidity ? "真" : "假" }}</el-tag>
</el-form-item>
<el-form-item label="签名算法:">
<span>{{ metadata.signature }}</span>
</el-form-item>
<el-form-item label="数据加密:">
<el-button
type="primary"
plain
size="mini"
@click="copyCellContent(metadata.signatureData)"
>复制数据加密</el-button
>
<el-button type="primary" plain size="mini"
@click="copyCellContent(metadata.signatureData)">复制数据加密</el-button>
</el-form-item>
</template>
</el-form>
</el-tab-pane>
<el-tab-pane
label="OCR识别"
name="5"
v-if="treeRow.className != '电子档案'"
>
<el-tab-pane label="OCR识别" name="5" v-if="treeRow.className != '电子档案'">
<div>
<el-input
v-model="ocrText"
type="textarea"
:rows="12"
readonly
></el-input>
<el-input v-model="ocrText" type="textarea" :rows="12" readonly></el-input>
</div>
</el-tab-pane>
<el-tab-pane
label="原文查询"
name="6"
v-if="!catalogueType && treeRow.className != '电子档案'"
>
<search-box
:orirow="orirow"
:drawer="drawer"
:oriTable="oriTable"
/>
<el-tab-pane label="原文查询" name="6" v-if="!catalogueType && treeRow.className != '电子档案'">
<search-box :orirow="orirow" :drawer="drawer" :oriTable="oriTable" />
<!-- {{oriTable}} -->
</el-tab-pane>
</el-tabs>
@@ -1366,6 +1111,7 @@ export default {
letter-spacing: 2px;
font-size: 17px;
}
.tip-info {
position: absolute;
left: 110px;
@@ -1373,6 +1119,7 @@ export default {
font-size: 16px;
color: #ff4f46;
}
.btnClass {
padding: 5px;
}
@@ -1380,11 +1127,13 @@ export default {
.contentBox {
display: flex;
justify-content: space-around;
iframe {
img {
width: 100%;
}
}
.box-card {
.demo-image__lazy {
background: rgb(245, 245, 245);

View File

@@ -69,7 +69,7 @@ Vue.use(selectscroll);
if (process.env.NODE_ENV === 'development') {
const {
mockXHR
} = require('../../mock')
} = require('../mock')
mockXHR()
}

View File

@@ -210,11 +210,13 @@
console.log('diaFlage', newVal, oldVal)
if(newVal){
console.log('add ruleForm', this.ruleForm)
// 只在新增模式下初始化空值,编辑模式下不覆盖已有数据
if(this.title === '新增'){
this.form.forEach(item=>{
console.log('item',item)
this.ruleForm[item.fieldName] = item.value
})
}
}
},
immediate: false

View File

@@ -1716,18 +1716,24 @@ export default {
this.sumbitTableName = item.tableName;
this.selectId = item.selectTable[0].id;
this.sumbitTablekey = key;
// 清空ruleForm确保数据干净
this.ruleForm = {};
item.form.forEach((ele) => {
for (let info in item.selectTable[0]) {
if (info === ele.fieldName) {
this.$set(this.ruleForm, ele.fieldName, "");
if (ele.ctype === "datetimerange") {
this.ruleForm[ele.fieldName] = [];
this.ruleForm[ele.fieldName][0] =
item.selectTable[0][info].split("~")[0];
this.ruleForm[ele.fieldName][1] =
item.selectTable[0][info].split("~")[1];
// 处理日期范围类型
this.$set(this.ruleForm, ele.fieldName, []);
if (item.selectTable[0][info] && item.selectTable[0][info].includes("~")) {
this.ruleForm[ele.fieldName][0] = item.selectTable[0][info].split("~")[0];
this.ruleForm[ele.fieldName][1] = item.selectTable[0][info].split("~")[1];
}
} else if (ele.ctype === "datetime" && item.selectTable[0][info]) {
// 处理日期类型
this.$set(this.ruleForm, ele.fieldName, new Date(item.selectTable[0][info]));
} else {
this.ruleForm[ele.fieldName] = item.selectTable[0][info];
// 处理普通字段
this.$set(this.ruleForm, ele.fieldName, item.selectTable[0][info]);
}
}
}

View File

@@ -217,23 +217,28 @@
});
},
// 点击树形结构
handleNodeClick(data) {
async handleNodeClick(data) {
console.log('handle node click', data)
this.treeRow = data;
if (data.classType === "C") {
let params = {
classId: data.id
};
getTable(params)
.then(res => {
const res = await getTable(params);
const promises = [];
res.body.InterfaceSystem.forEach(item => {
let ruleForm = {};
let form = JSON.parse(item["interfaceShow"]);
let interfaceQuery = JSON.parse(item["interfaceQuery"]);
// 查询设置中增加全宗号
if (interfaceQuery.length == 0) {
interfaceQuery.push({ctype:"input",fieldName:"fonds_no",fieldNameZh:"全宗号",value:"",label:'全宗号'});
interfaceQuery.push({
ctype: "input",
fieldName: "fonds_no",
fieldNameZh: "全宗号",
value: "",
label: '全宗号'
});
} else {
const index = interfaceQuery.findIndex(item => item.fieldName === 'fonds_no');
if (index !== -1) {
@@ -242,16 +247,22 @@
interfaceQuery.unshift(matchItem);
} else {
// 没找到
interfaceQuery.unshift({ctype:"input",fieldName:"fonds_no",fieldNameZh:"全宗号",value:"",label:'全宗号'});
interfaceQuery.unshift({
ctype: "input",
fieldName: "fonds_no",
fieldNameZh: "全宗号",
value: "",
label: '全宗号'
});
}
}
form.forEach(ele => {
if (ele.ctype === 'select') {
getFindList({
promises.push(getFindList({
type: ele.note.type
}).then(res => {
ele.note.note = res.body.list
})
}))
}
if (ele.label === '全宗号') {
ele.ctype = "select"
@@ -271,11 +282,11 @@
});
interfaceQuery.forEach(ele => {
if (ele.ctype === 'select') {
getFindList({
promises.push(getFindList({
type: ele.note.type
}).then(res => {
ele.note.note = res.body.list
})
}))
}
})
this.$set(item, "search", interfaceQuery); //搜索
@@ -292,13 +303,11 @@
});
this.$set(item, "tableData", []);
});
await Promise.all(promises);
this.Alltable = res.body.InterfaceSystem;
})
.then(res => {
this.$nextTick(() => {
this.$refs.table.clickSearch(0, 1, 1);
})
});
}
},
triggerTree(key) {
@@ -413,5 +422,4 @@
overflow-y: auto;
}
}
</style>