fdbc79487e6a13016fcd16b029e36081.json 16 KB

1
  1. {"remainingRequest":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/vue-loader/lib/index.js??vue-loader-options!/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/src/components/uploadImage.vue?vue&type=style&index=0&lang=css&","dependencies":[{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/src/components/uploadImage.vue","mtime":1697234055639},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/css-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/vue-loader/lib/loaders/stylePostLoader.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/postcss-loader/src/index.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCi5maW5pc2hfcm9vbSB7CiAgLyp3aWR0aDogMTQwcHg7Ki8KICAvKmhlaWdodDogMTY1cHg7Ki8KfQoKaW1nIHsKICAvKmhlaWdodDogMTAwJTsqLwp9CgouZmluaXNoX3Jvb20yIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGZsZXgtZmxvdzogd3JhcDsKfQoKLmZpbmlzaF9yb29tMiA+IGRpdiB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KCgouZmluaXNoX3Jvb20yIC5tYXJnZUltZyB7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KCi5maW5pc2hfcm9vbTIgLnJvb21faW1nIHsKICB3aWR0aDogMTAwcHg7CiAgaGVpZ2h0OiAxMDBweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpOwogIG1hcmdpbi1sZWZ0OiAxMHB4OwogIG1hcmdpbi10b3A6IDEwcHg7Cn0KCi5maW5pc2hfcm9vbTIgLnJvb21faW1nOmJlZm9yZSB7CiAgLypjb250ZW50OiAiIjsqLwogIC8qd2lkdGg6IDA7Ki8KICAvKmhlaWdodDogMTAwJTsqLwogIC8qISpiYWNrZ3JvdW5kOiAjMDAwOyohKi8KICAvKnBhZGRpbmc6IDE0cHggMThweDsqLwogIC8qcG9zaXRpb246IGFic29sdXRlOyovCiAgLyp0b3A6IDA7Ki8KICAvKmxlZnQ6IDUwJTsqLwogIC8qb3BhY2l0eTogMDsqLwp9CgouZmluaXNoX3Jvb20yIC5yb29tX2ltZzpob3ZlcjpiZWZvcmUgewogIHdpZHRoOiAxMDAlOwogIGxlZnQ6IDA7CiAgLypvcGFjaXR5OiAwLjU7Ki8KfQoKLmZpbmlzaF9yb29tMiAucm9vbV9pbWcgLmJveC1jb250ZW50IHsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAxNHB4IDE4cHg7CiAgY29sb3I6ICNmZmY7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMzglOwogIGxlZnQ6IDA7Cn0KCi5maW5pc2hfcm9vbTIgLnJvb21faW1nIC5pY29uIHsKICBwYWRkaW5nOiAwOwogIG1hcmdpbjogMDsKICBsaXN0LXN0eWxlOiBub25lOwogIG1hcmdpbi10b3A6IC0yMHB4Owp9CgouZmluaXNoX3Jvb20yIC5yb29tX2ltZyAuaWNvbiBsaSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouZmluaXNoX3Jvb20yIC5yb29tX2ltZyAuaWNvbiBsaSBpIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGZvbnQtc2l6ZTogMjBweDsKICBmb250LXdlaWdodDogNzAwOwogIGNvbG9yOiAjZmZmOwogIG1hcmdpbi1yaWdodDogMjVweDsKICBvcGFjaXR5OiAwOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MHB4KTsKICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlIDBzOwp9CgoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTBweCkgewogIC5maW5pc2hfcm9vbTIgLnJvb21faW1nIHsKICB9Cn0KCi5maW5pc2hfcm9vbTIgLmRlbGV0ZUltZyB7CiAgY29sb3I6IHJlZDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwcHg7CiAgbGVmdDogODBweDsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5maW5pc2hfcm9vbTIgLnJvb21faW1nIGltZyB7CiAgY3Vyc29yOiBwb2ludGVyOwogIC8qd2lkdGg6IDEwMHB4OyovCiAgLypoZWlnaHQ6IDEwMHB4OyovCn0KCi5maW5pc2hfcm9vbTIgPiAucm9vbV9pbWcgc3BhbiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICByaWdodDogNXB4OwogIGJvdHRvbTogM3B4Owp9CgouZmluaXNoX3Jvb20yIC5pbS1idXR0b24gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC0xNHB4OwogIHJpZ2h0OiAtMThweDsKICB3aWR0aDogNDBweDsKICBoZWlnaHQ6IDQwcHg7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC41KTsKICBvcGFjaXR5OiAwOwp9CgouZmluaXNoX3Jvb20yIC5yb29tX2ltZzpob3ZlciAuaWNvbiBsaSBpIHsKICBvcGFjaXR5OiAwLjU7Cn0KCi5maW5pc2hfcm9vbTIgLnJvb21faW1nOmhvdmVyIGltZyB7CiAgLypvcGFjaXR5OiAwLjU7Ki8KfQoKCi5maW5pc2hfcm9vbTIgLnJvb21faW1nOmhvdmVyIC5pbS1idXR0b24gewogIG9wYWNpdHk6IDE7Cn0KCi5maW5pc2hfcm9vbTIgLmltLWNsb3NlIHsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogIGxpbmUtaGVpZ2h0OiAwcHg7CiAgbGVmdDogNnB4OwogIGJvdHRvbTogMTNweDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDE1cHg7CiAgaGVpZ2h0OiAycHg7CiAgYmFja2dyb3VuZDogI2ZmZjsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KCi5maW5pc2hfcm9vbTIgLmltLWNsb3NlMSB7CiAgbGVmdDogNXB4OwogIGJvdHRvbTogMTNweDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDE1cHg7CiAgaGVpZ2h0OiAycHg7CiAgYmFja2dyb3VuZDogI2ZmZjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwp9Cgoucm9vbV9hZGRfaW1nIHsKICBtYXJnaW4tbGVmdDogMTBweDsKICBtYXJnaW4tdG9wOiAxMHB4OwogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBib3JkZXI6IDFweCBzb2xpZCAjZTFlMWUxOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgei1pbmRleDogMTA7Cn0KCi5yb29tX2FkZF9pbWcgPiBzcGFuOm50aC1jaGlsZCgxKSB7CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAzMHB4OwogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5yb29tX2FkZF9pbWcgPiBzcGFuOm50aC1jaGlsZCgyKSB7CiAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLnJvb21fYWRkX2ltZyBpbnB1dCB7CiAgY3Vyc29yOiBwb2ludGVyOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDBweDsKICBsZWZ0OiAwcHg7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIHotaW5kZXg6IDk5OTk5OwogIG9wYWNpdHk6IDA7Cn0KCgoudXBsb2FkLWljb24gewogIGJvcmRlcjogbm9uZTsKICBtYXJnaW46IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwp9Cg=="},{"version":3,"sources":["uploadImage.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmNA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA","file":"uploadImage.vue","sourceRoot":"src/components","sourcesContent":["<template>\n <div class='finish_room'>\n <div class='finish_room2'>\n <div :images=\"photo\" v-if=\"type==1\">\n <div :key=\"index\" v-for=\"(item,index) in photo\" class='room_img'>\n<!-- <img :src=\"item.url\">-->\n <el-image class=\"img\" style=\"width: 100px;height: 100px;\" :src=\"item.url\" :preview-src-list=\"showPhoto(photo)\">\n </el-image>\n <div v-if=\"!disabled\" @click=\"deleteImg(index)\" class=\"im-button\">\n <div class=\"im-close\"></div>\n <div class=\"im-close1\"></div>\n </div>\n </div>\n </div>\n <div v-if=\"photo.length<limit\" v-loading=\"loading\" :class=\"'room_add_img'+(type==1?'':' upload-icon')\">\n <template v-if=\"type==1\">\n <span style=\"margin-top: 35px\"><img src=\"../assets/add_img.png\"></span>\n <input :disabled=\"disabled\" @change='add_img' type=\"file\">\n </template>\n <template v-else>\n <span>选择文件</span>\n <input :disabled=\"disabled\" @change='add_img' type=\"file\">\n </template>\n </div>\n </div>\n </div>\n\n</template>\n\n<script>\nimport axios from 'axios'\n\nexport default {\n name: \"UploadImage\",\n props: {\n limit: {\n type: Number,\n default() {\n return 1;\n }\n },\n type: {\n type: Number,\n default() {\n return 1;\n }\n },\n disabled: {\n type: Boolean,\n default() {\n return false;\n }\n },\n isCompress: {\n type: Boolean,\n default() {\n return false;\n }\n },\n value: {\n type: [String, Array, Object],\n default: ''\n }\n },\n data: function () {\n return {\n photo: [],\n loading: false\n }\n },\n watch: {\n photo() {\n if (this.limit == 1) {\n this.$emit('input', this.photo.length > 0 ? this.photo[0].url : '')\n } else {\n this.$emit('input', this.photo)\n }\n },\n value() {\n // console.log(this.value)\n if (this.limit == 1) {\n if (this.value instanceof Array) {\n this.photo = []\n } else {\n this.photo = this.value ? [{url: this.value}] : []\n }\n } else {\n this.photo = this.value\n }\n }\n },\n mounted() {\n // console.log(this.value, this.limit)\n if (this.limit == 1) {\n if (this.value instanceof Array) {\n this.photo = []\n } else {\n this.photo = this.value ? [{url: this.value}] : []\n }\n } else {\n if (this.value == null || this.value === \"\" || this.value === \"[]\") {\n this.photo = [];\n } else {\n this.photo = JSON.parse(JSON.stringify(this.value))\n }\n // console.log(this.photo)\n }\n },\n methods: {\n deleteImg(index) {\n this.photo.splice(index, 1)\n },\n showPhoto(imgs){\n let arr = [];\n if(imgs.length>0){\n for(var i=0; i< imgs.length; i++){\n arr.push(imgs[i].url);\n }\n }\n return arr;\n },\n compress(img) {\n var url = null;\n var canvas = document.createElement(\"canvas\");\n var scale = img.height / img.width;\n canvas.width = 720;\n canvas.height = 720 * scale;\n\n\n var ctx = canvas.getContext(\"2d\");\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n url = canvas.toDataURL(\"image/jpeg\");\n return url;\n\n },\n dataURItoBlob(dataURI) {\n let byteString = window.atob(dataURI.split(',')[1])\n let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]\n let ab = new ArrayBuffer(byteString.length)\n let ia = new Uint8Array(ab)\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i)\n }\n return new window.Blob([ab], {type: mimeString})\n },\n add_img(event) {\n let file = event.target.files[0]\n if (/\\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(event.target.value)) {\n let MAXSIZE = 10 * 1024 * 1024;\n let size = file.size;\n if (size > MAXSIZE) {\n event.target.value = ''\n this.$notify.error({\n title: '上传图片错误',\n message: '上传图片不能超过10M'\n })\n return\n }\n this.loading = true\n let reader = new FileReader()\n let self = this\n reader.readAsDataURL(file)\n let img = new Image;\n reader.onload = function (e) {\n img.src = this.result;\n img.onload = function () {\n let base = e.target.result\n let fileItem = file\n if (self.isCompress) {\n base = self.compress(img)\n fileItem = self.dataURItoBlob(base)\n }\n let formdata = new window.FormData()\n formdata.append('file', fileItem)\n axios({\n method: \"POST\",\n url: '/upload/uploadImage',\n data: formdata,\n timeout: 1000000,\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n }).then(res => {\n event.target.value = ''\n self.photo = typeof (self.photo) != 'undefined' && self.photo ? self.photo : [];\n self.photo.push({fileName: file.fileName ? file.fileName : file.path,path: res.data.data.path, url: res.data.data.url})\n console.log(self.photo)\n self.loading = false\n self.$emit('upload-success', res.data.data);\n }).catch(e => {\n event.target.value = ''\n self.loading = false\n console.log(e.message)\n // this.$message.error(e.message);\n })\n }\n }\n } else {\n event.target.value = ''\n this.$notify.error({\n title: '上传图片错误',\n message: '请上传gif|jpg|jpeg|png|GIF|JPG|PNG格式图片'\n })\n }\n }\n }\n}\n</script>\n<style >\n.finish_room {\n /*width: 140px;*/\n /*height: 165px;*/\n}\n\nimg {\n /*height: 100%;*/\n}\n\n.finish_room2 {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n flex-flow: wrap;\n}\n\n.finish_room2 > div {\n display: flex;\n flex-wrap: wrap;\n}\n\n\n.finish_room2 .margeImg {\n margin-left: 10px;\n}\n\n.finish_room2 .room_img {\n width: 100px;\n height: 100px;\n cursor: pointer;\n overflow: hidden;\n position: relative;\n text-align: center;\n background-color: rgba(0, 0, 0, .5);\n margin-left: 10px;\n margin-top: 10px;\n}\n\n.finish_room2 .room_img:before {\n /*content: \"\";*/\n /*width: 0;*/\n /*height: 100%;*/\n /*!*background: #000;*!*/\n /*padding: 14px 18px;*/\n /*position: absolute;*/\n /*top: 0;*/\n /*left: 50%;*/\n /*opacity: 0;*/\n}\n\n.finish_room2 .room_img:hover:before {\n width: 100%;\n left: 0;\n /*opacity: 0.5;*/\n}\n\n.finish_room2 .room_img .box-content {\n width: 100%;\n padding: 14px 18px;\n color: #fff;\n position: absolute;\n top: 38%;\n left: 0;\n}\n\n.finish_room2 .room_img .icon {\n padding: 0;\n margin: 0;\n list-style: none;\n margin-top: -20px;\n}\n\n.finish_room2 .room_img .icon li {\n display: inline-block;\n}\n\n.finish_room2 .room_img .icon li i {\n display: block;\n width: 40px;\n height: 40px;\n line-height: 40px;\n border-radius: 50%;\n font-size: 20px;\n font-weight: 700;\n color: #fff;\n margin-right: 25px;\n opacity: 0;\n transform: translateY(50px);\n transition: all 0.5s ease 0s;\n}\n\n\n@media only screen and (max-width: 990px) {\n .finish_room2 .room_img {\n }\n}\n\n.finish_room2 .deleteImg {\n color: red;\n position: absolute;\n top: 0px;\n left: 80px;\n cursor: pointer;\n}\n\n.finish_room2 .room_img img {\n cursor: pointer;\n /*width: 100px;*/\n /*height: 100px;*/\n}\n\n.finish_room2 > .room_img span {\n position: absolute;\n width: auto;\n height: auto;\n right: 5px;\n bottom: 3px;\n}\n\n.finish_room2 .im-button {\n position: absolute;\n top: -14px;\n right: -18px;\n width: 40px;\n height: 40px;\n cursor: pointer;\n border-radius: 50%;\n background-color: rgba(0, 0, 0, .5);\n opacity: 0;\n}\n\n.finish_room2 .room_img:hover .icon li i {\n opacity: 0.5;\n}\n\n.finish_room2 .room_img:hover img {\n /*opacity: 0.5;*/\n}\n\n\n.finish_room2 .room_img:hover .im-button {\n opacity: 1;\n}\n\n.finish_room2 .im-close {\n transform: rotate(-45deg);\n line-height: 0px;\n left: 6px;\n bottom: 13px;\n display: inline-block;\n width: 15px;\n height: 2px;\n background: #fff;\n position: absolute;\n}\n\n.finish_room2 .im-close1 {\n left: 5px;\n bottom: 13px;\n display: inline-block;\n width: 15px;\n height: 2px;\n background: #fff;\n position: absolute;\n transform: rotate(45deg);\n}\n\n.room_add_img {\n margin-left: 10px;\n margin-top: 10px;\n width: 100px;\n height: 100px;\n cursor: pointer;\n border: 1px solid #e1e1e1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n position: relative;\n z-index: 10;\n}\n\n.room_add_img > span:nth-child(1) {\n width: 30px;\n height: 30px;\n overflow: hidden;\n}\n\n.room_add_img > span:nth-child(2) {\n margin-bottom: 10px;\n}\n\n.room_add_img input {\n cursor: pointer;\n position: absolute;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n z-index: 99999;\n opacity: 0;\n}\n\n\n.upload-icon {\n border: none;\n margin: 0;\n width: 100%;\n height: 100%;\n}\n</style>\n"]}]}