| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104 | <template>    <!-- 文件分类 -->    <div class="ListOfDocument">        <div class="box">               <div class="icore-graphical-index" :style="'width: 100%;height:'+chart.height">                   <div class="icore-graphical-area" ref="graphical-area"></div>               </div>        </div>        <el-dialog          title="文件预览"          :visible.sync="dialogVisible"          destroy-on-close          width="90%"          top="10vh">          <el-button          size="small"          type="primary"          icon="el-icon-download"          v-privilege="activeMenu + 'DOWNLOAD'"          @click="downloadFile(chart.fileData)"          :loading="loading"          style="position: absolute; right: 100px; top: 20px;"          >点击保存          </el-button>          <iframe :src="previewUrl" width="100%" :height="singleTableHeight"></iframe>        </el-dialog>        <zj-formulaEditor :equationEditing="dialog.equationEditing"></zj-formulaEditor>    </div></template><script>import formulaEditor from '~/components/zg/formulaEditor.vue';import { zCheckNumber1 } from '~/utils/validator.js';import { formatDate } from '@/utils/util.js';import store from '@/store/index.js';export default {    name: 'ListOfDocument',    components: {        'zj-formulaEditor': formulaEditor    },    props: {        width: {            type: [Number, String],            default: '100%'        },        height: {            type: [Number, String],            default: '100%'        }    },    data () {        return {            multipleSelection: [],            tableFormDataObj: {},            activeMenu: '',            form: {            imgSavePath: ''            },            filterForm: {                show: true,                data: {                    uploadFileid: '',                    securityTypeid: '',                    securityTag: '',                    isprimary: '',                    version: formatDate(new Date(), 'yyyyMM00'),                    fileName: '',                    pattern: 'table'                },                rules: {                },                file: ''            },            listTopicTree: {                show: true,                loading: false,                data: [],                defaultProps: {                    children: 'children',                    label: 'securityName'                }            },            pageNum: 1,            pageSize: 20,            total: 0,            singleTableHeight: '720px',            tableData: [            ],            nameObj: {                uploadFile: {                    obj: {},                    arr: []                },                securityType: {                    obj: {},                    arr: []                },                unitid: {                    obj: {},                    arr: []                },                roleList: {                    obj: {},                    arr: []                }, // 角色信息                securityTag: {                    obj: {},                    arr: []                },                pattern: {                    obj: {                        'graphical': '图例',                        'table': '表格'                    },                    arr: [                        {                            id: 'graphical',                            name: '图例'                        },                        {                            id: 'table',                            name: '表格'                        }                    ]                }            },            loading: false,            tableLoading: false,            dialog: {                editorBox: {                    show: false,                    fileType: '',                    form: {                        default: {                            workprocid: ''                        },                        data: {                            itemid: '',                            productid: '',                            workprocid: '',                            isprimary: '0',                            unitid: '',                            seqno: '',                            code: '',                            fileType: ''                        },                        rules: {                            productid: [                                { required: true, message: '该项不能为空', trigger: 'change' }                            ],                            workprocid: [                                { required: true, message: '该项不能为空', trigger: 'change' }                            ],                            seqno: [                                { validator: zCheckNumber1, trigger: 'change' }                            ]                        }                    }                },                equationEditing: {                    show: false,                    form: {                        data: {                            clock: '',                            code: ''                        }                    }                }            },            store,            userInfo: {}, // 用户信息            qrRole: [],            userRoles: [],            dialogVisible: false,            previewUrl: '',            chart: {                height: '1024px',                show: false,                fileData: {                  fileName: '',                  fileUrl: ''                },                option: {                    title: {                        text: ''                    },                    tooltip: {                        trigger: 'item',                        triggerOn: 'mousemove'                    },                    toolbox: {                        feature: {                            saveAsImage: {}                        }                    },                    series: [                            {                              type: 'tree',                              data: [],                              top: '2%',                              left: '25%',                              bottom: '1%',                              right: '20%',                              symbolSize: 8,                              nodePadding: 50,                              label: {                                position: 'left',                                verticalAlign: 'bottom',                                align: 'right',                                fontSize: 14                              },                              leaves: {                                label: {                                  position: 'right',                                  verticalAlign: 'middle',                                  align: 'left'                                }                              },                              emphasis: {                                focus: 'descendant'                              },                              initialTreeDepth: 2,                              expandAndCollapse: true,                              animationDuration: 550,                              animationDurationUpdate: 750,                              roam: true                            }                          ]                }            }        }    },    created () {        this.activeMenu = window.localStorage.getItem('activeMenu');    },    computed: {        indiviadualStyle: function() {            return (                "width:" +                (typeof this.width === "string" &&                this.width.indexOf("%") !== -1                    ? this.width                    : parseFloat(this.width) + "px") +                ";height:" +                (typeof this.height === "string" &&                this.height.indexOf("%") !== -1                    ? this.height                    : parseFloat(this.height) + "px")            );        }    },    mounted () {        let that = this;        window.PEDataObj = {            // 将数据绑定到window上,供main页面使用            vm: that,            // tableArr:用于导出成Excel的表格的信息            tableArr: [                {                    name: '',                    id: 'singleTable'                }            ]        };        // that.$nextTick(() => {        //     // 立即获取的height有一定偏差,通过setTimeout延迟来解决        //     setTimeout(() => {        //         that.singleTableHeight = that.getRoleHeight(that.$refs['singleTable'].$el) - 45;        //     }, 1);        // });        // // that.getNodeData();        // // that.getNodeTreeData();        // that.getUploadFileData();        // that.getUnitIdData();        // // that.getTableData();        // that.getRoles();        that.getFileTreeData();    },    methods: {        //  计算树区域高度        getRoleHeight (dom) {            return window.innerHeight - dom.offsetTop;        },        // 获取文件类型列表        getNodeData () {            let that = this            let url = 'pass/ems/v1/securitytypes/getIdAndName/?securityInfo=' + that.qrRole;            that.axios.get(url)                .then(function (res) {                    if (res.code === '0') {                        let arr = [];                        let obj = {};                        for (let item of res.data) {                            arr.push({                                id: item.id,                                name: item.securityName                            })                            obj[item.id] = item.securityName;                        }                        that.nameObj.securityType.arr = arr;                        that.nameObj.securityType.obj = obj;                        console.log(that.nameObj.securityType)                    } else {                        that.$message.error(res.message);                    }                });        },        // 获取工序节点树(产出)        getNodeTreeData () {            let that = this            let url = 'pass/ems/v1/securitytypes/gettree/?securityInfo=' + that.qrRole;            that.listTopicTree.loading = true;            that.axios.get(url)                .then(function (res) {                    if (res.code === '0') {                        that.listTopicTree.data = [{                            id: '',                            securityName: '所有记录',                            children: res.data                        }];                        that.getTableData();                    } else {                        that.$message.error(res.message);                    }                    that.listTopicTree.loading = false;                }).catch(function () {                    that.listTopicTree.loading = false;                });        },        // 获取产品        getUploadFileData () {            let that = this            let url = 'pass/ems/v1/uploadfiles/getIdAndName';            that.axios.get(url)                .then(function (res) {                    if (res.code === '0') {                        let arr = [];                        let obj = {};                        for (let item of res.data) {                            arr.push({                                id: item.id,                                name: item.fileName                            })                            obj[item.id] = item.fileName;                        }                        that.nameObj.uploadFile.arr = arr;                        that.nameObj.uploadFile.obj = obj;                    } else {                        that.$message.error(res.message);                    }                });        },        // 获取标准计量单位        getUnitIdData () {            let that = this            let url = 'pass/ems/v1/trmunits/getIdAndName';            that.axios.get(url)                .then(function (res) {                    if (res.code === '0') {                        let arr = [];                        let obj = {};                        for (let item of res.data) {                            arr.push({                                id: item.id,                                name: item.name                            })                            obj[item.id] = item.name;                            if (item.name === '吨') {                                that.nameObj.unitid.defaults = that.nameObj.unitid.defaults ? that.nameObj.unitid.defaults : item.id;                            }                        }                        that.nameObj.unitid.arr = arr;                        that.nameObj.unitid.obj = obj;                    } else {                        that.$message.error(res.message);                    }                });        },        // 获取表格中的数据        getTableData (pageNum) {            let that = this,                params = {                    fileName: that.filterForm.data.fileName,                    type: that.filterForm.data.securityTypeid,                    fileType: that.filterForm.data.securityTag.toString()                };            that.pageNum = pageNum || that.pageNum;            that.tableLoading = true;            let url = 'pass/ems/v1/uploadfiles/like/?pageNum=' + that.pageNum + '&pageSize=' + that.pageSize + '&securityInfo=' + that.qrRole;            that.axios.get(url, {                params: params            })                .then(function (res) {                    if (res.code === '0') {                        let arr = [];                        let map = {};                        let fileTypeArr = [];                        let fileTypeStr = '';                        let total = 0;                        for (let item of that.listTopicTree.data[0].children) {                            map[item.id] = true;                        }                        for (let item of res.data.list) {                            let result = true;                            fileTypeArr = [];                            // // result = item.type.some(i => map[i]);                            // if (that.qrRole.length > 0) {                            //     result = map.hasOwnProperty(item.type);                            // }                            // if (result) {                                if (item.fileType !== null) {                                    fileTypeArr = item.fileType.split(';');                                    fileTypeStr += item.fileType + ';'                                }                                total++;                            arr.push({                                ID: item.id,                                fileName: item.fileName,                                fileUrl: item.fileUrl,                                type: item.type,                                fileType: fileTypeArr,                                uploadTime: item.uploadTime,                                createMan: item.createMan,                                createTime: item.createTime,                                updateMan: item.updateMan,                                updateTime: item.updateTime,                                showInput: false,                                inputValue: ''                            })                            // }                        }                        if (that.nameObj.securityTag.arr.length <= 0) {                            fileTypeStr = fileTypeStr.substr(0, fileTypeStr.length - 1);                            that.nameObj.securityTag.arr = Array.from(new Set(fileTypeStr.split(';')));                        }                        that.tableData = arr;                        that.total = res.data.total;                    } else {                        that.$message.error(res.message);                    }                    that.getFileTreeData ();                    that.tableLoading = false;                }).catch(function () {                    that.tableLoading = false;                });        },        // 改变表格显示条数        tableSizeChange (val) {            let that = this;            that.pageSize = val;            that.getTableData(1);        },        // 重置搜索        tableDataCancel () {            let that = this;            that.filterForm.data.workprocid = '';            that.filterForm.data.productid = '';            that.filterForm.data.version = '';            that.getTableData(1);        },        // 表格中多选按钮的相关方法        handleSelectionChange (val) {            let that = this;            let tableFormDataObj = {};            for (let item of that.tableData) {                item.isSelection = false;            }            for (let item of val) {                let obj = {};                let xId = item.ID;                if (that.tableFormDataObj[xId]) {                    tableFormDataObj[xId] = that.tableFormDataObj[xId];                } else {                    for (let key in item) {                        obj[key] = item[key];                    }                    tableFormDataObj[xId] = obj;                }                item.isSelection = true;            }            that.tableFormDataObj = JSON.parse(JSON.stringify(tableFormDataObj));            that.multipleSelection = val;        },        but_add () {            let that = this;            if (!that.dialog.editorBox.form.default.workprocid) {                that.$message.error('请先选择左侧的详细工序');                return;            }            that.dialog.editorBox.form.data.itemid = '';            that.dialog.editorBox.form.data.productid = '';            that.dialog.editorBox.form.data.workprocid = that.dialog.editorBox.form.default.workprocid;            that.dialog.editorBox.form.data.isprimary = '0';            that.dialog.editorBox.form.data.unitid = that.nameObj.unitid.defaults ? that.nameObj.unitid.defaults : '';            that.dialog.editorBox.form.data.seqno = '';            that.dialog.editorBox.form.data.code = '0';            that.dialog.editorBox.type = 'add';            that.dialog.editorBox.show = true;            setTimeout(() => {                that.$refs['dialog_form'].clearValidate();            }, 100);        },        beforeUpload (file) {          let that = this;          that.tableLoading = true;          that.loading = true;          let foorData = new FormData();          foorData.append('file', file.file);          foorData.append('type', this.filterForm.data.securityTypeid);          that.axios.post('pass/ems/v1/uploadfiles/file', foorData, {             headers: {                    'Content-Type': 'multipart/form-data'                }          }).then(function (res) {               if (res.code === '0') {               that.$message({                    message: '上传成功',                    type: 'success'                });                that.$refs.upload.clearFiles();                that.$refs.upload1.clearFiles();                that.getTableData(1);                that.dialog.editorBox.show = false;                } else {                that.$message.error(res.message);                }                that.tableLoading = false;                that.loading = false;          }).catch(function () {            that.$message({                 message: '上传失败,FTP服务器可能已断开连接',                 type: 'success'             });             that.tableLoading = false;             that.loading = false;          });        },        submitUpload () {        let that = this;        this.$refs.upload.submit();        this.$refs.upload1.submit();      },      handleRemove (file, fileList) {        console.log(file, fileList);      },      // 行内标签删除      rowhandleClose (tag, row) {        let that = this;        that.tableFormDataObj[row.ID].fileType.splice(that.tableFormDataObj[row.ID].fileType.indexOf(tag), 1);      },      // 行内标签新增      rowhandleInputConfirm (row) {        let that = this;        let inputValue = that.tableFormDataObj[row.ID].inputValue;        if (inputValue) {          that.tableFormDataObj[row.ID].fileType.push(inputValue);        }        that.tableFormDataObj[row.ID].showInput = false;        that.tableFormDataObj[row.ID].inputValue = '';      },      // 行内input获取焦点      rowshowInput (row) {        let that = this;        that.tableFormDataObj[row.ID].showInput = true;        let id = row.ID + '-saveTagInput';        setTimeout(function(){           that.$nextTick(() => {             // that.$refs[id].$refs.input.focus();             that.$refs[id].focus();           });        },50)      },      handlePreview (file) {        console.log(file);      },        // 批量修改        but_edit_plural () {            let that = this;            if (that.multipleSelection.length > 0) {                that.$refs['dialog_form_arr'].validate((valid) => {                    if (valid) {                        let SubmitData = [];                        for (let key in that.tableFormDataObj) {                          let fileTypes = '';                          for (let item in that.tableFormDataObj[key].fileType) {                              if (Number(item) === that.tableFormDataObj[key].fileType.length - 1) {                                  fileTypes += that.tableFormDataObj[key].fileType[item];                              } else {                                  fileTypes += that.tableFormDataObj[key].fileType[item] + ';';                              }                          }                            SubmitData.push({                                Id: that.tableFormDataObj[key].ID,                                fileType: fileTypes,                                seqno: that.tableFormDataObj[key].seqno                            });                        }                        that.loading = true;                        that.axios.put('pass/ems/v1/uploadfiles/batchupdate', SubmitData)                            .then(function (res) {                                if (res.code === '0') {                                    that.$message({                                        message: '修改成功',                                        type: 'success'                                    });                                    that.getTableData();                                    that.dialog.editorBox.show = false;                                } else {                                    that.$message.error(res.message);                                }                                that.loading = false;                            }).catch(function () {                                that.loading = false;                            });                    }                });            } else {                this.$message.error('至少要选择一条数据');            }        },        // 批量删除        but_del_plural () {            let that = this;            that.loading = true;            if (that.multipleSelection.length > 0) {                let ids = [];                let paths = [];                for (let item of that.multipleSelection) {                    ids.push(item.ID);                    paths.push(item.fileUrl);                }                that.$confirm('是否删除已选数据?', '提示', {                    confirmButtonText: '确定',                    cancelButtonText: '取消',                    state: 'warning'                }).then(() => {                    that.axios.delete('pass/ems/v1/uploadfiles/' + ids.toString())                        .then(function (res) {                            if (res.code === '0') {                                that.$message({                                    message: '删除成功',                                    type: 'success'                                });                                that.getTableData();                                that.loading = false;                            } else {                                if (res.code === '51') {                                }                                that.$message.error(res.message);                            }                            that.loading = false;                        }).catch(function () {                          that.loading = false;                        });                }).catch(() => {                  that.loading = false;                });            } else {                this.$message.error('至少要选择一条数据');                that.loading = false;            }        },        dataSave () {            let that = this;            let SubmitData = {                itemid: that.dialog.editorBox.form.data.itemid,                productid: that.dialog.editorBox.form.data.productid,                workprocid: that.dialog.editorBox.form.data.workprocid,                isprimary: that.dialog.editorBox.form.data.isprimary,                unitid: that.dialog.editorBox.form.data.unitid,                seqno: that.dialog.editorBox.form.data.seqno,                code: that.dialog.editorBox.form.data.code,                itemtype: 'P'            };            that.$refs['dialog_form'].validate((valid) => {                if (valid) {                    if (that.dialog.editorBox.type === 'add') {                        that.loading = true;                        that.axios.post('pass/ems/v1/trmworkprocproducts/', SubmitData, {                            contentType: 'application/json'                        })                            .then(function (res) {                                if (res.code === '0') {                                    that.$message({                                        message: '新增成功',                                        type: 'success'                                    });                                    that.getTableData();                                    that.dialog.editorBox.show = false;                                } else {                                    that.$message.error(res.message);                                }                                that.loading = false;                            }).catch(function () {                                that.loading = false;                            });                    } else {                        that.loading = true;                        that.axios.put('pass/ems/v1/trmworkprocproducts/' + SubmitData.itemid, SubmitData)                            .then(function (res) {                                if (res.code === '0') {                                    that.$message({                                        message: '修改成功',                                        type: 'success'                                    });                                    that.getTableData();                                    that.dialog.editorBox.show = false;                                } else {                                    that.$message.error(res.message);                                }                                that.loading = false;                            }).catch(function () {                                that.loading = false;                            });                    }                }            });        },        but_equationEditing (row) {            let that = this;            that.dialog.equationEditing.form.data.clock = that.filterForm.data.version;            that.dialog.equationEditing.form.data.code = row.itemid;            that.dialog.equationEditing.show = true;        },        selectByTopicId (data) {            let that = this;            that.filterForm.data.securityTypeid = data.id;            that.getTableData(1);        },        getRoles () {            let that = this;            // 获取用户信息            this.store.dispatch('getUserInfo').then((res) => {                this.userInfo = res.data;                that.axios.get('pass/v1/sysuserroles/?userId=' + res.data.userId + '&pageNum=1&pageSize=100').then(rest => {                  if (rest) {                    for (let i = 0; i < rest.data.list.length; i++) {                      that.qrRole.push(rest.data.list[i].roleId)                    }                    that.userRoles = rest.data.list; // 获取用户角色关联信息                  }                  that.getNodeData();                  that.getNodeTreeData();                })            });            // 获取角色信息            this.store.dispatch('system/rolesManage/list').then(res => {              if (res.code === '0') {                this.nameObj.roleList.arr = res.data;                for (let obj of res.data) {                    this.nameObj.roleList.obj[obj.id] = {                        name: obj.roleName,                        id: obj.id                    };                }                } else {              this.$message.error(res.message);            }            });        },        downloadFile (data) {            let that = this;            let SubmitData = {                    fileName: data.fileName,                    fileUrl: data.fileUrl                };                // 不带token访问方式,留底后端修改shiroconfig.java,application.properties            //     let url = '/icore.icp.web/pass/ems/v1/uploadfiles/downloadFile/?fileName=' + that.tableFormDataObj[key].fileName + '&fileUrl=' + that.tableFormDataObj[key].fileUrl;            // const xhr = new XMLHttpRequest();            // xhr.open('GET', url, true);            // xhr.responseType = 'blob';            // xhr.onload = () => {            //     if (xhr.status === 200) {            //         var fileName = that.tableFormDataObj[key].fileName;            //         // 获取文件blob数据并保存            //         that.saveAs(xhr.response, fileName);            //     }            // };            // xhr.send();            that.loading = true;                let urla = 'pass/ems/v1/uploadfiles/downloadFile/';                that.axios.get(urla, {                params: SubmitData,                responseType: 'blob'            }).then(function (res) {                   that.saveAs(res, data.fileName);                   that.$message({                       message: '下载成功',                       type: 'success'                   });                   that.loading = false;                }).catch(function () {                    that.$message.error('下载失败');                    that.loading = false;                })        },        // js实现文件下载而不直接打开        saveAs (data, fileName) {            this.loading = true;            let urlObject = window.URL || window.webkitURL || window;            // 将二进制流转为blob            let exportBlob = new Blob([data]);            if (typeof window.navigator.msSaveBlob !== 'undefined') {              // 兼容IE,window.navigator.msSaveBlob:以本地方式保存文件              window.navigator.msSaveBlob(exportBlob, decodeURI(fileName));              this.loading = false;            } else {                // 创建新的URL并指向File对象或者Blob对象的地址                let blobURL = urlObject.createObjectURL(exportBlob);                let saveLink = document.createElement('a');                // 兼容:某些浏览器不支持HTML5的download属性                if (typeof saveLink.download === 'undefined') {                  saveLink.setAttribute('target', '_blank');                } else {                    saveLink.download = fileName;                }                // 创建新的URL并指向File对象或者Blob对象的地址                saveLink.href = blobURL;                saveLink.click();                // 释放blob URL地址                urlObject.revokeObjectURL(exportBlob);                this.loading = false;                // let blob = new Blob([data])                // let fileURL = urlObject.createObjectURL(blob);                // 下载代码                // let downEle = document.createElement('a')                // let fname = `download` //下载文件的名字                // downEle.href = fileURL                // downEle.setAttribute('download', fname)                // document.body.appendChild(downEle)                // downEle.click()                // window.open(fileURL);            }        },        preview (data) {            let that = this;            that.loading = true;            that.chart.fileData = data;            let SubmitData = {                fileName: data.fileName,                fileUrl: data.fileUrl            };            let urla = 'pass/ems/v1/uploadfiles/getfile/';            let type = 'text/html';            let responseType = 'application/json';            let fileExtension = data.fileName.substring(data.fileName.lastIndexOf('.') + 1);            if (fileExtension === 'pdf') {                urla = 'pass/ems/v1/uploadfiles/downloadFile/';                type = 'application/pdf';                responseType = 'blob';            }            that.tableLoading = true;            that.axios.get(urla, {                params: SubmitData,                responseType: responseType            }).then(function (res) {              console.log('111');              let urlObject = window.URL || window.webkitURL || window;              // 将二进制流转为blob              let blob = new Blob([res], {type: type});              if (fileExtension !== 'pdf') {                  blob = new Blob([res.data], {type: type});                }              // if (typeof window.navigator.msSaveBlob !== 'undefined') {              //   // 兼容IE,window.navigator.msSaveBlob:以本地方式保存文件              //   window.navigator.msSaveBlob(blob, decodeURI(fileName))              // } else {                // 创建新的URL并指向File对象或者Blob对象的地址                let blobURL = urlObject.createObjectURL(blob);                that.dialogVisible = true;                that.previewUrl = blobURL;                that.tableLoading = false;                that.loading = false;                // 'https://file.keking.cn/onlinePreview?url=' + encodeURIComponent(blobURL)                // http://view.officeapps.live.com/op/view.aspx?src' + blobURL;                // 创建a标签,用于跳转至下载链接                // let tempLink = document.createElement('a')                // tempLink.style.display = 'none'                // tempLink.href = blobURL;                // tempLink.setAttribute('download', decodeURI(fileName))                // 兼容:某些浏览器不支持HTML5的download属性                // if (typeof tempLink.download === 'undefined') {                //   tempLink.setAttribute('target', '_blank')                // }                // // 挂载a标签                // document.body.appendChild(tempLink)                // tempLink.click()                // // 销毁a标签                // document.body.removeChild(tempLink)                // 释放blob URL地址                // urlObject.revokeObjectURL(blobURL);                setTimeout(() => {                    urlObject.revokeObjectURL(blobURL);                }, 1000)            }).catch(function () {                that.tableLoading = false;                that.$message.error('预览失败');                that.loading = false;            })        },        selectTrigger(val) {          let that = this;          if (val === 'graphical') {            that.listTopicTree.show = false;            that.chart.show = true;            that.loading = true;            setTimeout(() => {                that.setGraphical();            }, 1000)              console.log(val);          } else {            that.chart.show = false;            that.listTopicTree.show = true;              console.log(val);          }        },        getFileTreeData () {            let that = this,                params = {                    fileName: that.filterForm.data.fileName,                    type: that.filterForm.data.securityTypeid,                    fileType: that.filterForm.data.securityTag.toString()                };            that.tableLoading = true;            let url = 'pass/ems/v1/uploadfiles/getFileTree/?securityInfo=' + that.qrRole;            that.axios.get(url, {                params: params            })                .then(function (res) {                    if (res.code === '0') {                      let arr = [];                      // that.chart.height = res.data.length * 100 + 'px';                      arr = that.treeDataUtil(res.data);                      arr[0].label = {                        position: 'top',                        verticalAlign: 'bottom',                        align: 'right',                        fontSize: 20,                        fontWeight: 800                      };                      that.chart.option.series[0].data = arr;                      that.setGraphical();                    } else {                      that.$message.error(res.message);                    }                    that.tableLoading = false;                }).catch(function () {                    that.tableLoading = false;                });        },        treeDataUtil (treeData) {          let that = this;          let data = [];          let children = [];          let children1 = [];          let i = 0;          let name = '';          for (let item of treeData) {            i++;            if(item.fileName === null) {              if (item.children !== null){                children = that.treeDataUtil(item.children);              };              data.push({                  name: item.createMan,                  children: children,              });              children = [];            } else {              if(name === '' || i === 1){                name = item.createMan;              } else if(name !== item.createMan) {                data.push({                    name: name,                    children: children1,                });                children1 = [];                name = item.createMan;              }              children1.push({                name: item.fileName,                value: item.fileUrl,              });            }            if ( i=== treeData.length && children1.length !== 0 ) {              data.push({                  name: name,                  children: children1,              });            }          }          return data;        },        /**         * 根据参数生成不同类型的图形化控件         */        setGraphical: function() {            let that = this;            // 引入 ECharts 主模块            let echarts = require("echarts");            require("echarts-gl");            // 基于准备好的dom,初始化echarts实例            let myChart = echarts.init(this.$refs["graphical-area"]);            myChart.showLoading();            // 绘制图表            myChart.setOption(that.chart.option);            // 设置树图的点击事件            myChart.on("click", function(param) {              // 老版本不支持              // if(param.event.target.culling === true){              //    return              // } else if(param.event.target.culling === false){              //     let args = {              //       fileName: param.data.name,              //       fileUrl: param.data.value              //     } //当前节点及其子节点的值              //     let level = param.data.level; //当前节点的层级 eg:"1-1-0",可以通过level判断当前的层级,从而进行不同的操作              //     that.preview (args);              // }              if(param.data.value){                let args = {                      fileName: param.data.name,                      fileUrl: param.data.value                    } //当前节点及其子节点的值                    let level = param.data.level; //当前节点的层级 eg:"1-1-0",可以通过level判断当前的层级,从而进行不同的操作                    that.preview (args);                }            });            myChart.hideLoading();            that.loading = false;        }    }}</script><style lang="less">.ListOfDocument {    padding: 0;    margin: 0;    min-width: 700px;    height: 1024px;    .box {        height: 1030px;        padding: 15px 15px 0 15px;        background: url(../../../../assets/img/img/filebg.png) center bottom no-repeat;        background-size: 100% 100%;            margin: 0px;            .error {                overflow: hidden;                color: #f56c6c;                font-size: 12px;                line-height: 1;            }    }    .color_no {        color: #7a7a7a;    }    .color_yes {        color: #1a9f17;    }    .el-upload-dragger {        width: 120px;        height: 80px;    }    .el-icon-upload:before {    content: "\E60D";    position: absolute;    top: 20%;    left: 20%;    }    .uploadNew {        position: relative;        width: 120px;    }    .uploadNew .el-upload-list {        position: absolute;        left: 320px;        top: -10px;        width: 200px;    }    .upload-demo {        float: left;        width: 85px;        position: relative;    }    .upload-demo .el-upload-list {        position: absolute;        left: 530px;        top: -100px;        width: 200px;    }    .icore-graphical-index {        display: inline-block;        height: inherit;        width: inherit;        .icore-graphical-area {            height: 100%;            width: 100%;        }    }}</style>
 |