拆分结果导入修改

This commit is contained in:
caoyang
2022-04-08 10:16:37 +08:00
parent 47ab3ed3c6
commit 96de9ca079
6 changed files with 275 additions and 83 deletions
@@ -12,7 +12,7 @@
:columns="columns" :columns="columns"
@change="tableOnChange" @change="tableOnChange"
> >
<span slot="showContent" slot-scope="text, record"> <span slot="showContent" slot-scope="text, record" class="item-solt">
<a-tooltip placement="top" class="item-content-tooltip" > <a-tooltip placement="top" class="item-content-tooltip" >
<template slot="title" class="item-content-title"> <template slot="title" class="item-content-title">
<span class="item-content-show" v-html="record.iterms_conditions"></span> <span class="item-content-show" v-html="record.iterms_conditions"></span>
@@ -184,7 +184,7 @@
scopedSlots: { customRender: 'operation' } scopedSlots: { customRender: 'operation' }
}) })
} }
console.log('columns',this.columns) // console.log('columns',this.columns)
} }
}) })
}, },
@@ -0,0 +1,171 @@
<template>
<div class="ocr-upload">
<!-- <a-modal v-model="visible" :maskClosable="false" :footer="[]" :title="title" class="ocr-upload-modal">-->
<a-upload
:accept='accept'
:disabled="disabled"
class="ant-upload-list"
name="file"
:list-type="listType"
:file-list="myfileList"
:multiple="false"
:action = 'uploadAction'
:headers="headers"
:before-upload="beforeUpload"
:remove='remove'
:showUploadList="false"
@change="handleChange">
<!-- <p><a-icon style="font-size: 67px;color: #c0c4cc;" type="cloud-upload" /></p>-->
<a-icon type="export" :rotate="-90" />
拆分文件
</a-upload>
<!-- </a-modal>-->
</div>
</template>
<script>
import Vue from 'vue'
import { ACCESS_TOKEN } from "@/store/mutation-types"
export default {
name: 'importSplitUpload',
props:['disableds','disabled','thisFileUploadUrl','readonly','thisFileType','accept','title','listType','module'],
data(){
return{
visible:false,
uploadAction:window._CONFIG['domianURL']+"/sys/common/upload",
downLoadFileUrl:window._CONFIG['domianURL']+'/sys/common/static',
myfileList:[],
fileList:[],
fileTypeSatus:false,
headers:{},
}
},
created(){
const token = Vue.ls.get(ACCESS_TOKEN);
this.headers = {"X-Access-Token":token};
this.containerId = 'container-ty-'+new Date().getTime();
},
mounted(){
// console.log(this.thisFileType,this.thisFileSize,this.thisFileUploadUrl);
},
methods:{
beforeUpload(file,fileList) {
// console.log('file',this.accept,file,fileList)
this.fileTypeSatus=false
// if(this.myfileList&&this.myfileList.length>=1){
// this.$message.warning('只能上传一个文件')
// return false
// }else{
// let thisFileType = this.thisFileType.replace(/\s+/g, "");
if(file.type==this.accept){
// console.log('111111')
this.fileTypeSatus = true;
this.$message.destroy()
// 207M.doc文件大小超出100MB限制, 请压缩或降低文件质量!
this.errorMessage = file.name + "文件大小超出100MB限制, 请压缩或降低文件质量!";
}
// }
},
remove(){
this.fileTypeSatus = true;
// console.log('rrr',this.myfileList)
},
handleChange(info) {
// console.log('info',info)
let { file,fileList } = info;
const status = info.file.status;
info.fileList.forEach((val,index)=>{
if(val.response && !val.response.result){
this.$message.error(val.response.message);
info.fileList.splice(index,1)
}
})
if (this.fileTypeSatus) {
if (file.size > 100000000) {
this.$message.error(this.errorMessage)
return
}else {
if (status === 'error') {
this.$emit('uploadSuccess', this.fileList)
this.$message.destroy()
this.$message.error(`${info.file.name} 文件上传失败。`);
} else if (status === 'removed') {
this.myfileList = info.fileList;
this.fileList = []
this.myfileList.forEach((res) => {
if (res.response) {
this.fileList.push(res.response.result)
} else {
this.fileList.push(res)
}
})
// console.log('remove',this.fileList)
this.$emit('uploadSuccess', this.fileList)
this.$message.destroy()
this.$message.success(`${info.file.name} 删除成功。`);
} else if (status === 'done') {
this.fileList = []
this.myfileList = info.fileList;
// console.log('file3333',info.fileList)
// if (info.fileList.length > 1) {
// info.fileList.splice(1)
// // this.myfileList = info.fileList;
//
// this.myfileList.forEach((res) => {
// if (res.response) {
// this.fileList.push(res.response.result)
// } else {
// this.fileList.push(res)
// }
// })
// // console.log('file1111',this.fileList)
// this.$emit('uploadSuccess', this.fileList)
// this.$message.destroy()
// this.$message.error('最多只能上传一个文件');
// return
// }
// console.log('my222',this.myfileList)
this.myfileList.forEach((res) => {
if (res.response) {
this.fileList.push(res.response.result)
// console.log('flist',res.response)
} else {
this.fileList.push(res)
}
})
let fileList1=[]
fileList1[0]=this.fileList[this.fileList.length-1]
if(this.myfileList.length > 0){
this.$emit('uploadSuccess', fileList1)
this.$message.destroy()
this.$message.success(`${info.file.name} 文件上传成功。`);
// console.log('fileList111',file,this.fileList,fileList1)
}
} else if (status === 'uploading') {
this.myfileList = info.fileList;
this.$emit('uploadSuccess')
// this.$message.success(`${info.file.name} 文件上传成功。`);
}
}
}else{
this.$message.warning('不支持上传该类型的文件!')
}
},
}
}
</script>
<style lang="less" scoped>
</style>
<style lang="less">
.ocr-upload-modal{
.ant-modal-wrap{
z-index: 1002;
}
}
</style>
@@ -292,22 +292,15 @@
'X-Access-Token':this.token 'X-Access-Token':this.token
} }
}).then(res => { }).then(res => {
// console.log('res,res',res)
if (res.data.success) { if (res.data.success) {
this.$message.success(this.$t('OperationSuccessful')) this.$message.success(this.$t('OperationSuccessful'))
eventBUs.$emit('searchReset') eventBUs.$emit('searchReset')
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(res.data.message)
} }
}) })
// getAction(`split/sarFileSplitInfo/bindToDocumentLibrary`, params).then((res) => {
// if (res.success) {
// this.$message.success(res.message)
// this.loadData()
// } else {
// this.$message.warning(res.message)
// }
// })
} }
}) })
}, },
@@ -14,6 +14,17 @@
<search :url="url" :flag="'condition'"></search> <search :url="url" :flag="'condition'"></search>
</div> </div>
</div> </div>
<div class="table-operator">
<div class="operator-text">
<!-- <a-icon type="copy" />-->
<!-- 拆分文件-->
<split-upload ref="uploadFile" :accept="accept" :disabled="disabled" :module="'split'" @uploadSuccess="uploadSuccess"></split-upload>
</div>
<div class="operator-text" @click="downLoad">
<a-icon type="download" />
模板下载
</div>
</div>
<div class="imports-table-detail"> <div class="imports-table-detail">
<tableData <tableData
:flag="'header'" :flag="'header'"
@@ -24,29 +35,29 @@
@onSelectChange="onSelectChange" @onSelectChange="onSelectChange"
/> />
</div> </div>
<div class="imports-files"> <!-- <div class="imports-files">-->
<a-form-model <!-- <a-form-model-->
class="imports-content" <!-- class="imports-content"-->
ref="ruleForm" <!-- ref="ruleForm"-->
:model="form" <!-- :model="form"-->
:rules="rules" <!-- :rules="rules"-->
:label-col="labelCol" <!-- :label-col="labelCol"-->
:wrapper-col="wrapperCol" <!-- :wrapper-col="wrapperCol"-->
> <!-- >-->
<a-form-model-item ref="file" :label="$t('splitFile')" prop="file"> <!-- <a-form-model-item ref="file" :label="$t('splitFile')" prop="file">-->
<split-upload ref="uploadFile" :accept="accept" :disabled="disabled" :module="'split'" @uploadSuccess="uploadSuccess"></split-upload> <!-- <split-upload ref="uploadFile" :accept="accept" :disabled="disabled" :module="'split'" @uploadSuccess="uploadSuccess"></split-upload>-->
<!-- <a-input v-model="form.file" >{{form.file}}</a-input>--> <!--&lt;!&ndash; <a-input v-model="form.file" >{{form.file}}</a-input>&ndash;&gt;-->
<!-- <a-button type="primary" class="button-text"--> <!--&lt;!&ndash; <a-button type="primary" class="button-text"&ndash;&gt;-->
<!-- @click="fileUpload()">--> <!--&lt;!&ndash; @click="fileUpload()">&ndash;&gt;-->
<!-- {{ (form.file === 'null' || form.file === '' ||--> <!--&lt;!&ndash; {{ (form.file === 'null' || form.file === '' ||&ndash;&gt;-->
<!-- form.file == null) ? $t('upload1') : $t('viewUploadedFiles')--> <!--&lt;!&ndash; form.file == null) ? $t('upload1') : $t('viewUploadedFiles')&ndash;&gt;-->
<!-- }}--> <!--&lt;!&ndash; }}&ndash;&gt;-->
<!-- </a-button>--> <!--&lt;!&ndash; </a-button>&ndash;&gt;-->
</a-form-model-item> <!-- </a-form-model-item>-->
</a-form-model> <!-- </a-form-model>-->
<a-button class="file-down" type="primary" @click="downLoad">{{$t('templateDownload')}}</a-button> <!-- <a-button class="file-down" type="primary" @click="downLoad">{{$t('templateDownload')}}</a-button>-->
</div> <!-- </div>-->
<div class="imports-footer"> <div class="imports-footer">
<div class="imports-footer-wrap"> <div class="imports-footer-wrap">
@@ -61,7 +72,7 @@
<script> <script>
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage' import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import SplitUpload from '@/components/OcrUpload/index' import SplitUpload from '@/components/importSplitUpload/index'
import search from '@/components/search/index' import search from '@/components/search/index'
import TableData from '@/components/SplitTable/DocTable' import TableData from '@/components/SplitTable/DocTable'
import axios from 'axios' import axios from 'axios'
@@ -137,10 +148,11 @@
OperationList:[], OperationList:[],
upload1:this.$t('upload1'), upload1:this.$t('upload1'),
// accept:'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword', // accept:'application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword',
accept:'application/x-zip-compressed', accept:'application/zip',
rows:[], rows:[],
token:Vue.ls.get(ACCESS_TOKEN), token:Vue.ls.get(ACCESS_TOKEN),
flag:false, //提交表单标识 flag:false, //提交表单标识
cut:''
} }
}, },
props:{ props:{
@@ -154,6 +166,15 @@
}, },
mounted() { mounted() {
this.visible=this.importsVisible this.visible=this.importsVisible
let long = localStorage.getItem('language')
this.cut = ''
if (long && long === 'zh-cn') {
this.cut = 'cn'
} else if (long && long === 'en-us') {
this.cut = 'en'
}
// console.log('visibleSplit',this.visible) // console.log('visibleSplit',this.visible)
}, },
methods:{ methods:{
@@ -210,6 +231,7 @@
//上传文件 //上传文件
uploadSuccess(data) { uploadSuccess(data) {
// console.log('updata',data) // console.log('updata',data)
let attIdList = [] let attIdList = []
if(data && data.length>0) { if(data && data.length>0) {
data.map(item => { data.map(item => {
@@ -219,6 +241,7 @@
// /** 赋值给当前对应的表单文件 */ // /** 赋值给当前对应的表单文件 */
this.form.file = attIdList.join(',') this.form.file = attIdList.join(',')
// console.log('this.form.file',this.form.file) // console.log('this.form.file',this.form.file)
}, },
//模板下载 //模板下载
downLoad(){ downLoad(){
@@ -233,6 +256,8 @@
this.$message.warning(this.$t('PleaseSelectData')) this.$message.warning(this.$t('PleaseSelectData'))
}else if(this.rows&&this.rows.length>1){ }else if(this.rows&&this.rows.length>1){
this.$message.warning(this.$t('OnlyOneSelected')) this.$message.warning(this.$t('OnlyOneSelected'))
}else if(!this.form.file) {
this.$message.warning('请上传拆分文件')
}else if(this.rows&&this.rows.length===1){ }else if(this.rows&&this.rows.length===1){
let params={ let params={
connectId:this.rows[0].connect_id, connectId:this.rows[0].connect_id,
@@ -243,28 +268,16 @@
} }
params.fileType=this.rows[0].text_info params.fileType=this.rows[0].text_info
// if(this.rows[0].text_info=='发布稿(必读)'){ params.cut=this.cut
// params.fileType='1'
// }else if(this.rows[0].text_info=='增补件(必读)'){
// params.fileType='2'
// }else if(this.rows[0].text_info=='报批稿'){
// params.fileType='3'
// }else if(this.rows[0].text_info=='征求意见稿'){
// params.fileType='4'
// }else if(this.rows[0].text_info=='测试程序'){
// params.fileType='5'
// }else if(this.rows[0].text_info=='相关资料'){
// params.fileType='6'
// }
let formData = new FormData() let formData = new FormData()
Object.keys(params).forEach((key) => { Object.keys(params).forEach((key) => {
// console.log('key',key,params[key]) // console.log('key',key,params[key])
formData.append(key, params[key]); formData.append(key, params[key]);
}); });
// console.log('formData',params,formData.getAll) // console.log('formData',params,formData.getAll)
if(!this.form.file) { if(this.form.file) {
this.$refs.ruleForm.validate(valid => { // this.$refs.ruleForm.validate(valid => {
if (valid) { // if (valid) {
if (!this.flag) { if (!this.flag) {
this.flag = true this.flag = true
@@ -281,6 +294,8 @@
if (res.data.success) { if (res.data.success) {
this.$message.success(this.$t('OperationSuccessful')) this.$message.success(this.$t('OperationSuccessful'))
eventBUs.$emit('searchReset') eventBUs.$emit('searchReset')
this.visible = false;
this.$emit('visible',false)
}else{ }else{
this.$message.warning(res.data.message) this.$message.warning(res.data.message)
} }
@@ -288,34 +303,35 @@
this.flag = false this.flag = false
]) ])
} }
} // }
}) // })
}else {
this.$refs.ruleForm.clearValidate()
if (!this.flag) {
this.flag = true
axios({
url: '/jero-boot/split/sarFileSplitItems/importSplitResult',
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
// 'Content-Type': 'application/x-www-form-urlencoded',
'X-Access-Token': this.token
}
}).then(res => {
if (res.data.success) {
this.$message.success(this.$t('OperationSuccessful'))
eventBUs.$emit('searchReset')
}else{
this.$message.warning(res.data.message)
}
}).finally(() => [
this.flag = false
])
}
} }
// else {
//
// this.$refs.ruleForm.clearValidate()
// if (!this.flag) {
// this.flag = true
// axios({
// url: '/jero-boot/split/sarFileSplitItems/importSplitResult',
// method: 'post',
// data: formData,
// headers: {
// 'Content-Type': 'multipart/form-data',
// // 'Content-Type': 'application/x-www-form-urlencoded',
// 'X-Access-Token': this.token
// }
// }).then(res => {
// if (res.data.success) {
// this.$message.success(this.$t('OperationSuccessful'))
// eventBUs.$emit('searchReset')
// }else{
// this.$message.warning(res.data.message)
// }
// }).finally(() => [
// this.flag = false
// ])
// }
// }
} }
} }
} }
@@ -323,10 +339,12 @@
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import '~@assets/less/common.less';
.imports-table-content{ .imports-table-content{
.imports-header{ .imports-header{
margin-bottom: 20px; margin-bottom: 20px;
} }
} }
.imports-table-detail{ .imports-table-detail{
@@ -361,6 +379,15 @@
display: flex; display: flex;
} }
} }
}
}
.imports-table-drawer{
.table-operator{
text-align: right;
margin-bottom: 20px;
span{
color:#040B29;
}
}
}
</style> </style>
@@ -252,7 +252,7 @@
<a-row :gutter="24" class="split-content" id="split-content" v-for="(item, index) in contentList" :key="index"> <a-row :gutter="24" class="split-content" id="split-content" v-for="(item, index) in contentList" :key="index">
<div class="split-row"> <div class="split-row">
<div class="row-left"> <div class="row-left">
<a-textarea v-if="item.type==='TEXT'" v-model="item.itemContent" :placeholder="$t('pleaseEnter')+$t('content')" /> <a-textarea v-if="item.type==='TEXT'" v-model="item.itemContent" :auto-size="true" :show-count="true" :maxlength="1000" :placeholder="$t('pleaseEnter')+$t('content')" />
<img v-if="item.type==='IMG'" :src="item.thumbUrl?item.thumbUrl:item.itemContent" alt="" @click="preImg(item)"> <img v-if="item.type==='IMG'" :src="item.thumbUrl?item.thumbUrl:item.itemContent" alt="" @click="preImg(item)">
<div v-if="item.type==='TABLE'" v-html="item.itemContent" class="item-table"></div> <div v-if="item.type==='TABLE'" v-html="item.itemContent" class="item-table"></div>
</div> </div>
@@ -287,7 +287,8 @@
selectedKeys:[], selectedKeys:[],
deleteNode:false, deleteNode:false,
fullWidth:'', fullWidth:'',
parameter:{} parameter:{},
widthBrown:''
} }
}, },
watch:{ watch:{
@@ -300,9 +301,9 @@
}, },
mounted() { mounted() {
let widthBrown = document.documentElement.offsetWidth || document.body.offsetWidth this.widthBrown = document.documentElement.offsetWidth || document.body.offsetWidth
let client = document.querySelector('.split-detail-table .ant-table-content').getBoundingClientRect() let client = document.querySelector('.split-detail-table .ant-table-content').getBoundingClientRect()
let width = widthBrown - client.left let width = this.widthBrown - client.left
document.querySelector('.split-detail-table .ant-table-content').style.width = width - 20 + 'px' document.querySelector('.split-detail-table .ant-table-content').style.width = width - 20 + 'px'
this.infoId=this.$route.query.infoId this.infoId=this.$route.query.infoId