ac9f36267c4cba55cc0b9b0554c217ae.json 18 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=script&lang=js&","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/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/usr/local/develop/php/www/waibao/NN2024071001/NN2024071001/addons/admin/node_modules/babel-loader/lib/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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBheGlvcyBmcm9tICdheGlvcycKCmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiVXBsb2FkSW1hZ2UiLAogIHByb3BzOiB7CiAgICBsaW1pdDogewogICAgICB0eXBlOiBOdW1iZXIsCiAgICAgIGRlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICAgIH0KICAgIH0sCiAgICB0eXBlOiB7CiAgICAgIHR5cGU6IE51bWJlciwKICAgICAgZGVmYXVsdCgpIHsKICAgICAgICByZXR1cm4gMTsKICAgICAgfQogICAgfSwKICAgIGRpc2FibGVkOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQoKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9LAogICAgaXNDb21wcmVzczogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0KCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSwKICAgIHZhbHVlOiB7CiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5LCBPYmplY3RdLAogICAgICBkZWZhdWx0OiAnJwogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHsKICAgICAgcGhvdG86IFtdLAogICAgICBsb2FkaW5nOiBmYWxzZQogICAgfQogIH0sCiAgd2F0Y2g6IHsKICAgIHBob3RvKCkgewogICAgICBpZiAodGhpcy5saW1pdCA9PSAxKSB7CiAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLnBob3RvLmxlbmd0aCA+IDAgPyB0aGlzLnBob3RvWzBdLnVybCA6ICcnKQogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdGhpcy5waG90bykKICAgICAgfQogICAgfSwKICAgIHZhbHVlKCkgewogICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnZhbHVlKQogICAgICBpZiAodGhpcy5saW1pdCA9PSAxKSB7CiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgewogICAgICAgICAgdGhpcy5waG90byA9IFtdCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMucGhvdG8gPSB0aGlzLnZhbHVlID8gW3t1cmw6IHRoaXMudmFsdWV9XSA6IFtdCiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucGhvdG8gPSB0aGlzLnZhbHVlCiAgICAgIH0KICAgIH0KICB9LAogIG1vdW50ZWQoKSB7CiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnZhbHVlLCB0aGlzLmxpbWl0KQogICAgaWYgKHRoaXMubGltaXQgPT0gMSkgewogICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7CiAgICAgICAgdGhpcy5waG90byA9IFtdCiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5waG90byA9IHRoaXMudmFsdWUgPyBbe3VybDogdGhpcy52YWx1ZX1dIDogW10KICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCB8fCB0aGlzLnZhbHVlID09PSAiIiB8fCB0aGlzLnZhbHVlID09PSAiW10iKSB7CiAgICAgICAgdGhpcy5waG90byA9IFtdOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucGhvdG8gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpKQogICAgICB9CiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucGhvdG8pCiAgICB9CiAgfSwKICBtZXRob2RzOiB7CiAgICBkZWxldGVJbWcoaW5kZXgpIHsKICAgICAgdGhpcy5waG90by5zcGxpY2UoaW5kZXgsIDEpCiAgICB9LAogICAgc2hvd1Bob3RvKGltZ3MpewogICAgICBsZXQgYXJyID0gW107CiAgICAgIGlmKGltZ3MubGVuZ3RoPjApewogICAgICAgIGZvcih2YXIgaT0wOyBpPCBpbWdzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgIGFyci5wdXNoKGltZ3NbaV0udXJsKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGFycjsKICAgIH0sCiAgICBjb21wcmVzcyhpbWcpIHsKICAgICAgdmFyIHVybCA9IG51bGw7CiAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKICAgICAgdmFyIHNjYWxlID0gaW1nLmhlaWdodCAvIGltZy53aWR0aDsKICAgICAgY2FudmFzLndpZHRoID0gNzIwOwogICAgICBjYW52YXMuaGVpZ2h0ID0gNzIwICogc2NhbGU7CgoKICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwogICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CgogICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKICAgICAgdXJsID0gY2FudmFzLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIpOwogICAgICByZXR1cm4gdXJsOwoKICAgIH0sCiAgICBkYXRhVVJJdG9CbG9iKGRhdGFVUkkpIHsKICAgICAgbGV0IGJ5dGVTdHJpbmcgPSB3aW5kb3cuYXRvYihkYXRhVVJJLnNwbGl0KCcsJylbMV0pCiAgICAgIGxldCBtaW1lU3RyaW5nID0gZGF0YVVSSS5zcGxpdCgnLCcpWzBdLnNwbGl0KCc6JylbMV0uc3BsaXQoJzsnKVswXQogICAgICBsZXQgYWIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZVN0cmluZy5sZW5ndGgpCiAgICAgIGxldCBpYSA9IG5ldyBVaW50OEFycmF5KGFiKQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHsKICAgICAgICBpYVtpXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChpKQogICAgICB9CiAgICAgIHJldHVybiBuZXcgd2luZG93LkJsb2IoW2FiXSwge3R5cGU6IG1pbWVTdHJpbmd9KQogICAgfSwKICAgIGFkZF9pbWcoZXZlbnQpIHsKICAgICAgbGV0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF0KICAgICAgaWYgKC9cLihnaWZ8anBnfGpwZWd8cG5nfEdJRnxKUEd8UE5HKSQvLnRlc3QoZXZlbnQudGFyZ2V0LnZhbHVlKSkgewogICAgICAgIGxldCBNQVhTSVpFID0gMTAgKiAxMDI0ICogMTAyNDsKICAgICAgICBsZXQgc2l6ZSA9IGZpbGUuc2l6ZTsKICAgICAgICBpZiAoc2l6ZSA+IE1BWFNJWkUpIHsKICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnCiAgICAgICAgICB0aGlzLiRub3RpZnkuZXJyb3IoewogICAgICAgICAgICB0aXRsZTogJ+S4iuS8oOWbvueJh+mUmeivrycsCiAgICAgICAgICAgIG1lc3NhZ2U6ICfkuIrkvKDlm77niYfkuI3og73otoXov4cxME0nCiAgICAgICAgICB9KQogICAgICAgICAgcmV0dXJuCiAgICAgICAgfQogICAgICAgIHRoaXMubG9hZGluZyA9IHRydWUKICAgICAgICBsZXQgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKQogICAgICAgIGxldCBzZWxmID0gdGhpcwogICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpCiAgICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZTsKICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgIGltZy5zcmMgPSB0aGlzLnJlc3VsdDsKICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxldCBiYXNlID0gZS50YXJnZXQucmVzdWx0CiAgICAgICAgICAgIGxldCBmaWxlSXRlbSA9IGZpbGUKICAgICAgICAgICAgaWYgKHNlbGYuaXNDb21wcmVzcykgewogICAgICAgICAgICAgIGJhc2UgPSBzZWxmLmNvbXByZXNzKGltZykKICAgICAgICAgICAgICBmaWxlSXRlbSA9IHNlbGYuZGF0YVVSSXRvQmxvYihiYXNlKQogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBmb3JtZGF0YSA9IG5ldyB3aW5kb3cuRm9ybURhdGEoKQogICAgICAgICAgICBmb3JtZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlSXRlbSkKICAgICAgICAgICAgYXhpb3MoewogICAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgICAgIHVybDogJy91cGxvYWQvdXBsb2FkSW1hZ2UnLAogICAgICAgICAgICAgIGRhdGE6IGZvcm1kYXRhLAogICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMDAwMDAsCiAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkudGhlbihyZXMgPT4gewogICAgICAgICAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnCiAgICAgICAgICAgICAgc2VsZi5waG90byA9IHR5cGVvZiAoc2VsZi5waG90bykgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5waG90byA/IHNlbGYucGhvdG8gOiBbXTsKICAgICAgICAgICAgICBzZWxmLnBob3RvLnB1c2goe2ZpbGVOYW1lOiBmaWxlLmZpbGVOYW1lID8gZmlsZS5maWxlTmFtZSA6IGZpbGUucGF0aCxwYXRoOiByZXMuZGF0YS5kYXRhLnBhdGgsIHVybDogcmVzLmRhdGEuZGF0YS51cmx9KQogICAgICAgICAgICAgIGNvbnNvbGUubG9nKHNlbGYucGhvdG8pCiAgICAgICAgICAgICAgc2VsZi5sb2FkaW5nID0gZmFsc2UKICAgICAgICAgICAgICBzZWxmLiRlbWl0KCd1cGxvYWQtc3VjY2VzcycsIHJlcy5kYXRhLmRhdGEpOwogICAgICAgICAgICB9KS5jYXRjaChlID0+IHsKICAgICAgICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJwogICAgICAgICAgICAgIHNlbGYubG9hZGluZyA9IGZhbHNlCiAgICAgICAgICAgICAgY29uc29sZS5sb2coZS5tZXNzYWdlKQogICAgICAgICAgICAgIC8vIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZS5tZXNzYWdlKTsKICAgICAgICAgICAgfSkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJycKICAgICAgICB0aGlzLiRub3RpZnkuZXJyb3IoewogICAgICAgICAgdGl0bGU6ICfkuIrkvKDlm77niYfplJnor68nLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+S4iuS8oGdpZnxqcGd8anBlZ3xwbmd8R0lGfEpQR3xQTkfmoLzlvI/lm77niYcnCiAgICAgICAgfSkKICAgICAgfQogICAgfQogIH0KfQo="},{"version":3,"sources":["uploadImage.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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"]}]}