Commit 5ca35fda by 李少勇

配合联调报文面函的word文件预览问题

parent 95137887
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -385,126 +385,107 @@ ...@@ -385,126 +385,107 @@
</el-form-item> </el-form-item>
</c-col> </c-col>
<c-col>&nbsp;</c-col> <c-col>&nbsp;</c-col>
<c-col :span="12" v-if="title != 'MT799'"> <c-col :span="12" v-if="title != 'MT799'">
<el-form-item <el-form-item label="地址修改" label-width="120px">
label="地址修改" <el-input type="textarea" v-model="dialog.adrblk" :rows="4" />
label-width="120px" </el-form-item>
> </c-col>
<el-input <c-col :span="12" v-else>
type="textarea" <el-form-item label="BIC编码">
v-model="dialog.adrblk" <el-input disabled v-model="dialog.adrbic" />
:rows="4" </el-form-item>
/> <el-form-item label="Authenticator"
</el-form-item> ><el-input disabled v-model="dialog.adrbicaut"
</c-col> /></el-form-item>
<c-col :span="12" v-else> <el-form-item label="优先级"
<el-form-item label="BIC编码"> ><el-input disabled v-model="dialog.msgpri"
<el-input disabled v-model="dialog.adrbic" /> /></el-form-item>
</el-form-item> </c-col>
<el-form-item label="Authenticator" <c-col :span="12">
><el-input disabled v-model="dialog.adrbicaut" <el-form-item label-width="30px">
/></el-form-item> <el-table
<el-form-item label="优先级" :data="dialog.rcv.ptyinftxt.rows"
><el-input disabled v-model="dialog.msgpri" size="mini"
/></el-form-item> stripe
</c-col> :border="true"
<c-col :span="12"> empty-text=" "
<el-form-item label-width="30px"> max-height="430px"
<el-table >
:data="dialog.rcv.ptyinftxt.rows" <el-table-column label="报文类型" sortable> </el-table-column>
size="mini" <el-table-column label="地址" sortable> </el-table-column>
stripe <el-table-column label="Authentication" sortable>
:border="true" </el-table-column>
empty-text=" " </el-table>
max-height="430px" </el-form-item>
> </c-col>
<el-table-column label="报文类型" sortable> <c-col v-if="title != 'MT799'"
</el-table-column> ><el-form-item label="面函日期">
<el-table-column label="地址" sortable> <el-date-picker type="date" v-model="dialog.docdat">
</el-table-column> </el-date-picker
<el-table-column ></el-form-item>
label="Authentication" </c-col>
sortable <c-col v-if="this.suppress != true"
> ><el-form-item label="Contact"
</el-table-column> ><el-input v-model="dialog.ptcnam"
</el-table> /></el-form-item>
</el-form-item> </c-col>
</c-col> <c-col :span="22" v-if="this.suppress != true"
<c-col v-if="title != 'MT799'" ><el-form-item
><el-form-item label="面函日期"> :label="
<el-date-picker title == 'MT799' ? 'Sender to Rec. information' : 'Remark'
type="date" "
v-model="dialog.docdat" >
> <div v-if="title == 'MT799'">
</el-date-picker <el-input
></el-form-item> type="textarea"
</c-col> :rows="10"
<c-col v-if="this.suppress!=true" disabled
><el-form-item label="Contact" v-model="dialog.addtxt"
><el-input v-model="dialog.ptcnam" />
/></el-form-item> </div>
</c-col> <div v-else>
<c-col :span="22" v-if="this.suppress!=true" <el-input
><el-form-item type="textarea"
:label=" :rows="10"
title == 'MT799' v-model="dialog.addtxt"
? 'Sender to Rec. information' />
: 'Remark' </div>
" </el-form-item>
> </c-col>
<div v-if="title == 'MT799'"> <c-col :span="2" v-if="this.suppress != true">
<el-input <c-button size="mini" icon="el-icon-more"> </c-button>
type="textarea" </c-col>
:rows="10" </c-row>
disabled </el-form>
v-model="dialog.addtxt" <template #footer>
/> <span class="dialog-footer">
</div> <c-button type="primary" @click="saveDialog">确 定</c-button>
<div v-else> <c-button
<el-input type="primary"
type="textarea" @click="activateDialog"
:rows="10" v-if="dialog.delflg == 'D'"
v-model="dialog.addtxt" >应用</c-button
/> >
</div> <c-button
</el-form-item> type="primary"
</c-col> @click="suppressDialog"
<c-col :span="2" v-if="this.suppress!=true"> v-else-if="dialog.lev == '1' || dialog.mliflg != ''"
<c-button size="mini" icon="el-icon-more"> </c-button> >禁用</c-button
</c-col> >
</c-row> <c-button type="primary" @click="activateDialog" v-else
</el-form> >删除</c-button
<template #footer> >
<span class="dialog-footer"> <c-button @click="centerDialogVisible = false">取 消</c-button>
<c-button type="primary" @click="saveDialog" </span>
>确 定</c-button </template>
> </el-dialog>
<c-button type="primary" @click="activateDialog" v-if="dialog.delflg=='D'" </template>
>应用</c-button
>
<c-button type="primary" @click="suppressDialog" v-else-if="dialog.lev=='1'||dialog.mliflg!=''"
>禁用</c-button
>
<c-button type="primary" @click="activateDialog" v-else
>删除</c-button
>
<c-button @click="centerDialogVisible = false"
>取 消</c-button
>
</span>
</template>
</el-dialog>
</template>
<div ref="file"></div>
</div> </div>
</template> </template>
<script> <script>
import commonProcess from "~/mixin/commonProcess"; import commonProcess from '~/mixin/commonProcess';
import Api from "~/service/Api"; import Api from '~/service/Api';
import Utils from "~/utils/index";
import DocUtils from "~/utils/DocUtils";
let docx = require("docx-preview");
export default { export default {
inject: ['root'], inject: ['root'],
props: ['model', 'codes'], props: ['model', 'codes'],
...@@ -645,49 +626,8 @@ export default { ...@@ -645,49 +626,8 @@ export default {
width: 1000, width: 1000,
}); });
} else { } else {
// let url = rtnmsg.data.trnmod_trndoc_smh_docpth;
this.title = '面函'; this.title = '面函';
let viewurl = '/#/docpan/show'; let viewurl = '/#/docpan/show';
let XMLdata;
let base64Str = rtnmsg.data.executeDocpan;
let bstr = window.atob(base64Str); // 解码 base-64 编码的字符串,base-64 编码使用方法是 btoa()
let length = bstr.length;
let u8arr = new Uint8Array(length); // 创建初始化为0的,包含length个元素的无符号整型数组
while (length--) {
u8arr[length] = bstr.charCodeAt(length); // 返回在指定的位置的字符的 Unicode 编码
}
let blob = new Blob([u8arr]);
docx.renderAsync(blob, this.$refs.file);
let hrefUrl = window.URL.createObjectURL(blob);
let a = document.createElement('a');
a.href = hrefUrl;
a.download = 'fileName.docx'; // 下载后文件名
document.body.appendChild(a);
a.click(); // 点击下载
document.body.removeChild(a); // 下载完成移除元素
if (row.pandsc.startsWith('elcs.')) {
window.sessionStorage.docXML = '';
window.sessionStorage.docTXT = '';
rtnmsg.data.trnmod_trndoc_doceot[row.idx].doctxt.rows.forEach(
(element) => {
window.sessionStorage.docTXT += element + '\r\n';
}
);
} else if (row.pandsc == 'MT799') {
window.sessionStorage.docTXT = '';
XMLdata = rtnmsg.data.litbenl1blk;
} else {
//参考后台Doceot.butshw order=1000
let execution = 'P',
structure = 'l';
let attr = DocUtils.getDocAttribute(docnam, structure, execution);
console.log(attr);
window.sessionStorage.docTXT = '';
window.sessionStorage.docXML = rtnmsg.data[attr];
window.sessionStorage.docuil = doceot.docuil;
}
// console.log( window.sessionStorage.docTXT);
// console.log( window.sessionStorage.docXML);
window.open( window.open(
viewurl, viewurl,
'newwindow', 'newwindow',
......
<template> <template>
<div> <div class="width: 100%;height: 100vh;overflow: auto;" ref="file"></div>
<div style="height: 800px; overflow: auto">
<embed
v-if="this.model.docXML && pdf"
:src="pdf"
type="application/pdf"
height="100%"
width="100%"
/>
<c-row v-if="!this.model.docXML">
<c-col v-for="(item, index) in model.docTXT" :key="index" >
<c-col :offset="4" :span="8">
{{ item[0] }}
</c-col>
<c-col :span="12">
{{ item[1] }}
</c-col>
</c-col>
</c-row>
</div>
</div>
</template> </template>
<script> <script>
import { getPdf } from "~/service/business/file"; import { renderAsync } from 'docx-preview';
import Api from '~/service/Api';
import commonProcess from '~/mixin/commonProcess';
export default { export default {
data() { data() {
return { return {
model: { docXML: "" }, model: { docXML: '' },
pdf: "", pdf: '',
}; };
}, },
created() { mixins: [commonProcess],
let doclang= window.sessionStorage.doclang||""; mounted() {
this.model.docXML = window.sessionStorage.docXML; this.loadWordBlob()
this.model.docTXT = window.sessionStorage.docTXT },
.split("\r\n") methods: {
.filter((item) => item) async loadWordBlob () {
.map((item) => { let routeQuery = this.$route.query
let idx = item.indexOf(":"); const params = {
return [ index: routeQuery.idx,
item.substring(0, idx).trim(), };
item.substring(idx + 1).trim(), let res = await Api.post('/service/gitopn/executeDocpan', this.wrapper(params));
]; if (res.respCode == SUCCESS) {
}); let base64Str = res.data.executeDocpan;
if (this.model.docXML != "") let bstr = window.atob(base64Str); // 解码 base-64 编码的字符串,base-64 编码使用方法是 btoa()
getPdf({ xml: this.model.docXML, doclang: window.sessionStorage.docuil }).then((res) => { let length = bstr.length;
if (res.respCode == SUCCESS) { let u8arr = new Uint8Array(length); // 创建初始化为0的,包含length个元素的无符号整型数组
this.pdf ="data:application/pdf;base64,"+ res.data; while (length--) {
} u8arr[length] = bstr.charCodeAt(length); // 返回在指定的位置的字符的 Unicode 编码
}); }
}, let blob = new Blob([u8arr]);
renderAsync(blob, this.$refs.file)
}
}
}
}; };
</script> </script>
<style scoped> <style scoped>
</style> ::v-deep .docx-wrapper {
\ No newline at end of file width: 100%;
height: 100vh;
padding: 0;
overflow: auto;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment