123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <template>
- <div class="back-box">
- <div v-for="item in infolist" :key="item.id" @click="downcheck(item)">
- <i class="iconfont icon-word" v-if="item.type === 'word'"></i>
- <i class="iconfont icon-excel" v-if="item.type === 'excel'"></i>
- <i class="iconfont icon-ppt" v-if="item.type === 'ppt'"></i>
- <i class="iconfont icon-wenjian" v-if="item.type === 'wenjian'"></i>
- <i class="el-icon-picture" v-if="item.type === 'png'"></i>
- <el-tooltip
- class="item"
- effect="dark"
- :content="item.fileName"
- placement="right"
- :enterable="false"
- >
- <span class="tab-long">{{ item.fileName }}</span>
- </el-tooltip>
- <div class="seedown" v-if="datalist.type === 2">
- <a @click="uploaddown(item)">下载</a>
- <a @click="uploadsee(item)">预览</a>
- </div>
- </div>
- <div class="if-box-top" v-if="ifrshow" @keyup.esc="ifrshow = false">
- <i class="el-icon-close" @click="ifrshow = false"></i>
- <iframe height="100%" width="100%" :src="srcsc"> </iframe>
- </div>
- </div>
- </template>
- <script>
- export default {
- props: ["datalist", "dialogStatus"],
- data() {
- return {
- infolist: [],
- status: false,
- srcsc: "",
- ifrshow: false,
- };
- },
- methods: {
- downcheck(v) {
- if (this.datalist.type === 1) {
- this.uploaddown(v);
- }
- },
- uploadsee(v) {
- let url = encodeURIComponent(v.callPath);
- this.srcsc = "http://114.215.71.182:8012/onlinePreview?url=" + url;
- this.ifrshow = true;
- // window.open('http://114.215.71.182:8012/onlinePreview?url=' + url);
- },
- //下载e
- uploaddown(v) {
- let fileData = v;
- this.$http({
- url: this.datalist.url,
- method: "post",
- headers: {
- "Content-Type": "application/json",
- },
- responseType: "blob",
- data: { id: fileData.id, fileName: fileData.fileName },
- }).then((response) => {
- if (window.navigator && window.navigator.msSaveOrOpenBlob) {
- let blob = new Blob([response.data], {
- type: "application/vnd.ms-excel",
- });
- window.navigator.msSaveOrOpenBlob(blob, fileData.fileName);
- } else {
- /* 火狐谷歌的文件下载方式 */
- var blob = new Blob([response.data]);
- var downloadElement = document.createElement("a");
- var href = window.URL.createObjectURL(blob);
- downloadElement.href = href;
- downloadElement.download = fileData.fileName;
- document.body.appendChild(downloadElement);
- downloadElement.click();
- document.body.removeChild(downloadElement);
- window.URL.revokeObjectURL(href);
- }
- });
- },
- dataHandle() {
- this.infolist = this.datalist.attList;
- if (this.infolist) {
- for (let i = 0; i < this.infolist.length; i++) {
- let f = this.infolist[i].fileName.split(".");
- let type = f[f.length - 1];
- if (type === "doc" || type === "docx") {
- this.infolist[i].type = "word";
- } else if (type === "ppt") {
- this.infolist[i].type = "ppt";
- } else if (type === "xlsx" || type === "xls") {
- this.infolist[i].type = "excel";
- } else if (
- type === "png" ||
- type === "jpg" ||
- type === "svg" ||
- type === "gif" ||
- type === "psd"
- ) {
- this.infolist[i].type = "png";
- } else {
- this.infolist[i].type = "wenjian";
- }
- }
- }
- },
- },
- mounted() {
- this.dataHandle();
- console.log(this.infolist);
- },
- created() {},
- watch: {
- dialogStatus() {
- this.$forceUpdate();
- let _this = this;
- _this.dataHandle();
- },
- },
- };
- </script>
- <style scoped lang="scss">
- .if-box-top {
- background: #fff;
- width: 80vw;
- height: 80vh;
- margin-top: 10vh;
- margin-left: 10vw;
- }
- .iconfont {
- font-size: 42px;
- }
- .icon-excel {
- color: #67db63;
- }
- .icon-word {
- color: #ff654e;
- }
- .icon-ppt {
- color: #ff8943;
- }
- .icon-wenjian {
- color: #ccc;
- }
- .el-icon-picture {
- font-size: 36px;
- color: #ccc;
- background: #fff;
- padding: 4px 2px;
- margin-bottom: 2px;
- border-radius: 3px;
- }
- .back-box {
- margin-top: 20px;
- background: #f2f2f2;
- padding: 20px;
- div {
- display: inline-block;
- text-align: center;
- margin-right: 20px;
- cursor: pointer;
- span {
- display: block;
- width: 80px;
- overflow: hidden;
- padding-top: 5px;
- margin: 0 10px;
- overflow: hidden;
- text-overflow: ellipsis;
- display: -webkit-box; /* 将对象作为弹性伸缩盒子模型显示 */
- -webkit-line-clamp: 1; /* 控制最多显示几行 */
- -webkit-box-orient: vertical; /* 设置或检索伸缩盒对象的子元素的排列方式 */
- }
- }
- .seedown {
- margin: 0;
- margin-top: 5px;
- a {
- font-size: 12px;
- padding: 2px 5px;
- border: 1px solid transparent;
- color: #999;
- }
- a:hover {
- color: #0b82ff;
- }
- }
- }
- </style>
|