ocr刷新

This commit is contained in:
caoyang
2022-03-14 17:51:23 +08:00
parent c3bee0a86b
commit 4cb567eaf7
10 changed files with 370 additions and 40 deletions
@@ -78,7 +78,7 @@
</div>
<doc-table v-if="drawVisible" :drawVisible="drawVisible" :drawTableSorce="drawTableSorce" @visible="docVisible" @exportVisible="exportVisible"></doc-table>
<ocr-upload ref="uploadFile1" :disabled="disabled" :accept="accept" @uploadSuccess="uploadSuccess"></ocr-upload>
<ocr-upload ref="uploadFile1" :disabled="disabled" :accept="accept" :title="title" :listType='listType' @uploadSuccess="uploadSuccess"></ocr-upload>
</a-card>
</div>
@@ -153,7 +153,9 @@
record:{},
accept:'application/pdf',
today:'',
timer:''
timer:'',
title:this.$t('UploadFile'),
listType:'text',
}
},
props:{
@@ -182,7 +184,8 @@
console.log("------------WebSocket连接成功");
// WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https
let userId = store.getters.userInfo.id;
let url = window._CONFIG['domianWebSocketURL'].replace("https://","wss://").replace("http://","ws://") + '/websocket/' + userId;
let url = window._CONFIG['domianWebSocketURL'].replace("https://","wss://").replace("http://","ws://") + '/websocket/socketServer'
// let url = 'http://10.0.1.25:8080/jero-boot'.replace("https://","wss://").replace("http://","ws://") + '/websocket/socketServer'
this.websock = new WebSocket(url);
this.websock.onopen = this.websocketOnopen;
this.websock.onerror = this.websocketOnerror;
@@ -190,16 +193,30 @@
this.websock.onclose = this.websocketOnclose;
},
websocketOnopen: function (e) {
console.log("WebSocket连接成功");
// console.log("WebSocket连接成功");
// console.log('eee',e)
// 添加心跳检测,每10秒发一次数据,防止连接断开(这跟服务器的设置有关,如果服务器没有设置每隔多长时间不发消息断开,可以不进行心跳设置)
let self = this;
this.timer = setInterval(() => {
try {
self.websock.send('test')
// console.log('发送消息');
}catch(err){
console.log('断开了:' + err);
self.connection()
}
}, 10000)
},
websocketOnerror: function (e) {
console.log("WebSocket连接发生错误");
// console.log("WebSocket连接发生错误");
this.reconnect();
},
websocketOnmessage: function (e) {
console.log("WebSocket连接数据");
// console.log("WebSocket连接数据1111");
if(e.data=='1'){
eventBUs.$emit('searchReset')
}
},
websocketOnclose: function (e) {
this.reconnect();
@@ -218,7 +235,7 @@
that.lockReconnect = true;
//没连接上会一直重连,设置延迟避免请求过多
setTimeout(function () {
console.info("尝试重连...");
// console.info("尝试重连...");
that.initWebSocket();
that.lockReconnect = false;
}, 5000);
@@ -160,8 +160,8 @@
this.visible = false;
this.$emit('visible',false)
},
onSelectChange(){
onSelectChange(keys){
this.selectedRowKeys=keys
},
//搜索
@@ -129,8 +129,8 @@
this.visible = false;
this.$emit('visible',false)
},
onSelectChange(){
onSelectChange(keys){
this.selectedRowKeys=keys
},
//搜索
@@ -58,13 +58,20 @@
<!-- 内容简介-->
<span class="con-divider">{{$t('contentValidity')}}</span>
<a-divider dashed />
<div class="table-operator">
<div class="operator-text" @click="splitAdd('-1')">
<a-icon type="plus" />
{{$t('Add')}}
</div>
</div>
<a-row :gutter="24" class="split-content" id="split-content" v-for="(item, index) in contentList" :key="item.id">
<div class="split-row">
<div class="row-left">
<a-textarea v-if="item.type=='TEXT'" v-model="item.textContent" placeholder="$t('pleaseEnter')+$t('content')" auto-size />
<a-textarea v-if="item.type=='TEXT'" v-model="item.textContent" :placeholder="$t('pleaseEnter')+$t('content')" auto-size />
<img v-if="item.type=='IMG'" :src="item.src" alt="" @click="preImg(item)">
</div>
<div class="row-right">
<a-button class="row-btn-add" @click="splitAdd">{{$t('Add')}}</a-button>
<a-button class="row-btn-add" @click="splitAdd(index)">{{$t('Add')}}</a-button>
<a-button @click="splitDelete">{{$t('delete')}}</a-button>
</div>
</div>
@@ -75,6 +82,18 @@
<a-button type="primary" class="footer-btn-save" @click="splitSave">{{$t('preservation')}}</a-button>
<a-button type="primary" @click="splitCancel">{{$t('cancel')}}</a-button>
</div>
<!-- 图片预览-->
<a-modal
:title="TitlePreImg"
class="split-img"
:visible="preImgVisible"
:confirm-loading="confirmLoading"
@ok="handleOk"
@cancel="handlePreImgCancel"
:footer="false"
>
<img :src="itemSrc" alt="">
</a-modal>
<!-- 类型选择弹框-->
<a-modal
:title="Title"
@@ -92,10 +111,12 @@
</div>
<div class="title-num" v-if="selectedNum">
<span class="title-num-add">添加数量</span>
<a-input-number class="title-num-edit" :min="1" v-model="textNumber" placeholder="请输入数据"></a-input-number>
<a-input-number class="title-num-edit" :min="1" v-model="textNumber" placeholder="请输入数据" :formatter="limitNumber" :parser="limitNumber"></a-input-number>
</div>
</div>
</a-modal>
<!-- 上传图片弹框-->
<split-upload v-if="splitVisible" ref="uploadFile2" :disabled="disabled" :accept="accept" :title="titleImg" :listType='listType' :splitVisible="splitVisible" @uploadSuccess="uploadSuccess"></split-upload>
</a-drawer>
</div>
</div>
@@ -103,11 +124,16 @@
<script>
import Vue from 'vue'
import splitUpload from '@/components/splitUpload/index'
export default {
name: 'splitAddForm',
components:{
splitUpload
},
data(){
return{
title:this.$t('newClause'),
TitlePreImg:'',
contentList:[
{
id:'001',
@@ -139,13 +165,25 @@
form:{},
validatorRules:{
number:[
{ required:true,message: '请输入条款号',trigger: 'blur' }
{ required:true,message: '请输入条款号',trigger: 'blur' },
{ min:1, max: 200, message: this.$t('cantExeed')+'200'+this.$t('characters'), trigger: 'blur' }
],
name:[
{ required:true,message: '请输入条款名称',trigger: 'blur' }
{ required:true,message: '请输入条款名称',trigger: 'blur' },
{ min:1, max: 200, message: this.$t('cantExeed')+'200'+this.$t('characters'), trigger: 'blur' }
]
}
},
addIndex:'',
addImgVisible:false, //上传图片弹框
titleImg:this.$t('uploadPictures'),
accept:'image/*',
listType:'picture',
disabled:false,
splitVisible:false,
tableVisible:false,
preImgVisible:false, //图片预览
itemSrc:'' //预览图片
}
},
props:{
@@ -170,10 +208,15 @@
onClose(){
this.$emit('closeVisible',false)
},
//增加按钮
splitAdd(){
this.addConVisible=true
//增加按钮
splitAdd(val){
this.addConVisible=true
if(val=='-1'){
this.addIndex=this.contentList.length-1
}else{
this.addIndex=val
}
},
//删除按钮
splitDelete(){
@@ -195,9 +238,29 @@
//确定增加的类型
handleOk(){
this.addConVisible=false
if(this.selected==1){
console.log('addIndex',this.addIndex)
let contentLength=this.contentList.length
if(this.selected==1){ //文本类型
for(let i=this.contentList.length;i>this.addIndex;i--){
this.contentList[i+contentLength-1]=this.contentList[i-1]
}
for(let j=0;j<this.textNumber;j++){
this.contentList[++this.addIndex]={
id:'003',
type:'TEXT',
textContent:''
}
}
}else if(this.selected==2){ //图片类型
this.splitVisible=true
}else if(this.selected==3){ //表格类型
this.tableVisible=true
}
console.log('conteend',this.contentList)
},
handleCancel(){
this.addConVisible=false
@@ -205,12 +268,48 @@
selectTitle(val){
this.selected=val
}
},
//上传文件
uploadSuccess(data,imgs) {
let lengthImg=imgs.length
for(let i = this.contentList.length;i>this.addIndex;i--){
this.contentList[i+lengthImg-1]=this.contentList[i-1]
}
if(imgs && imgs.length > 0){
imgs.forEach(item => {
this.contentList[++this.addIndex]={
type:'IMG',
src:item.thumbUrl
}
})
}
this.splitVisible=false
},
//点击图片预览
preImg(item){
this.itemSrc=item.src
this.preImgVisible=true
},
//关闭预览图片
handlePreImgCancel(){
this.preImgVisible=false
},
//正则替换小数点
limitNumber(value) {
if (typeof value === 'string') {
return !isNaN(Number(value)) ? value.replace(/\./g, '') : 0
} else if (typeof value === 'number') {
return !isNaN(value) ? String(value).replace(/\./g, '') : 0
} else {
return 0
}
},
}
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
.split-add-form{
.split-add-form-wrapper{
@@ -223,13 +322,23 @@
font-weight: 500;
color: rgba(0, 0, 0, 0.85)
}
.table-operator{
margin-bottom: 20px;
text-align: right;
}
.split-row{
display: flex;
justify-content: space-between;
margin: 0 20px 20px;
.row-left{
flex: 1;
/*border:1px solid #9e9e9e;*/
img{
cursor: pointer;
width: 32px;
height: 32px;
}
}
.row-right{
min-width: 150px;
@@ -284,7 +393,12 @@
}
}
}
.split-img{
margin-top: 20px;
text-align: center;
img{
}
}
</style>
<style lang="less">