You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1 lines
						
					
					
						
							9.4 KiB
						
					
					
				
			
		
		
	
	
							1 lines
						
					
					
						
							9.4 KiB
						
					
					
				{"remainingRequest":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\src\\views\\system\\user\\profile\\userAvatar.vue?vue&type=script&lang=js&","dependencies":[{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\src\\views\\system\\user\\profile\\userAvatar.vue","mtime":1633763898908},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-archives\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBzdG9yZSBmcm9tICJAL3N0b3JlIjsKaW1wb3J0IHsgVnVlQ3JvcHBlciB9IGZyb20gInZ1ZS1jcm9wcGVyIjsKaW1wb3J0IHsgdXBsb2FkQXZhdGFyIH0gZnJvbSAiQC9hcGkvc3lzdGVtL3VzZXIiOwoKZXhwb3J0IGRlZmF1bHQgewogIGNvbXBvbmVudHM6IHsgVnVlQ3JvcHBlciB9LAogIHByb3BzOiB7CiAgICB1c2VyOiB7CiAgICAgIHR5cGU6IE9iamVjdAogICAgfQogIH0sCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxggogICAgICBvcGVuOiBmYWxzZSwKICAgICAgLy8g5piv5ZCm5pi+56S6Y3JvcHBlcgogICAgICB2aXNpYmxlOiBmYWxzZSwKICAgICAgLy8g5by55Ye65bGC5qCH6aKYCiAgICAgIHRpdGxlOiAi5L+u5pS55aS05YOPIiwKICAgICAgb3B0aW9uczogewogICAgICAgIGltZzogc3RvcmUuZ2V0dGVycy5hdmF0YXIsIC8v6KOB5Ymq5Zu+54mH55qE5Zyw5Z2ACiAgICAgICAgYXV0b0Nyb3A6IHRydWUsIC8vIOaYr+WQpum7mOiupOeUn+aIkOaIquWbvuahhgogICAgICAgIGF1dG9Dcm9wV2lkdGg6IDIwMCwgLy8g6buY6K6k55Sf5oiQ5oiq5Zu+5qGG5a695bqmCiAgICAgICAgYXV0b0Nyb3BIZWlnaHQ6IDIwMCwgLy8g6buY6K6k55Sf5oiQ5oiq5Zu+5qGG6auY5bqmCiAgICAgICAgZml4ZWRCb3g6IHRydWUgLy8g5Zu65a6a5oiq5Zu+5qGG5aSn5bCPIOS4jeWFgeiuuOaUueWPmAogICAgICB9LAogICAgICBwcmV2aWV3czoge30KICAgIH07CiAgfSwKICBtZXRob2RzOiB7CiAgICAvLyDnvJbovpHlpLTlg48KICAgIGVkaXRDcm9wcGVyKCkgewogICAgICB0aGlzLm9wZW4gPSB0cnVlOwogICAgfSwKICAgIC8vIOaJk+W8gOW8ueWHuuWxgue7k+adn+aXtueahOWbnuiwgwogICAgbW9kYWxPcGVuZWQoKSB7CiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgLy8g6KaG55uW6buY6K6k55qE5LiK5Lyg6KGM5Li6CiAgICByZXF1ZXN0VXBsb2FkKCkgewogICAgfSwKICAgIC8vIOWQkeW3puaXi+i9rAogICAgcm90YXRlTGVmdCgpIHsKICAgICAgdGhpcy4kcmVmcy5jcm9wcGVyLnJvdGF0ZUxlZnQoKTsKICAgIH0sCiAgICAvLyDlkJHlj7Pml4vovawKICAgIHJvdGF0ZVJpZ2h0KCkgewogICAgICB0aGlzLiRyZWZzLmNyb3BwZXIucm90YXRlUmlnaHQoKTsKICAgIH0sCiAgICAvLyDlm77niYfnvKnmlL4KICAgIGNoYW5nZVNjYWxlKG51bSkgewogICAgICBudW0gPSBudW0gfHwgMTsKICAgICAgdGhpcy4kcmVmcy5jcm9wcGVyLmNoYW5nZVNjYWxlKG51bSk7CiAgICB9LAogICAgLy8g5LiK5Lyg6aKE5aSE55CGCiAgICBiZWZvcmVVcGxvYWQoZmlsZSkgewogICAgICBpZiAoZmlsZS50eXBlLmluZGV4T2YoImltYWdlLyIpID09IC0xKSB7CiAgICAgICAgdGhpcy5tc2dFcnJvcigi5paH5Lu25qC85byP6ZSZ6K+v77yM6K+35LiK5Lyg5Zu+54mH57G75Z6LLOWmgu+8mkpQR++8jFBOR+WQjue8gOeahOaWh+S7tuOAgiIpOwogICAgICB9IGVsc2UgewogICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CiAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHsKICAgICAgICAgIHRoaXMub3B0aW9ucy5pbWcgPSByZWFkZXIucmVzdWx0OwogICAgICAgIH07CiAgICAgIH0KICAgIH0sCiAgICAvLyDkuIrkvKDlm77niYcKICAgIHVwbG9hZEltZygpIHsKICAgICAgdGhpcy4kcmVmcy5jcm9wcGVyLmdldENyb3BCbG9iKGRhdGEgPT4gewogICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpOwogICAgICAgIGZvcm1EYXRhLmFwcGVuZCgiYXZhdGFyZmlsZSIsIGRhdGEpOwogICAgICAgIHVwbG9hZEF2YXRhcihmb3JtRGF0YSkudGhlbihyZXNwb25zZSA9PiB7CiAgICAgICAgICBpZiAocmVzcG9uc2UuY29kZSA9PT0gMjAwKSB7CiAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlOwogICAgICAgICAgICB0aGlzLm9wdGlvbnMuaW1nID0gcHJvY2Vzcy5lbnYuVlVFX0FQUF9CQVNFX0FQSSArIHJlc3BvbnNlLmltZ1VybDsKICAgICAgICAgICAgc3RvcmUuY29tbWl0KCdTRVRfQVZBVEFSJywgdGhpcy5vcHRpb25zLmltZyk7CiAgICAgICAgICAgIHRoaXMubXNnU3VjY2Vzcygi5L+u5pS55oiQ5YqfIik7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5a6e5pe26aKE6KeICiAgICByZWFsVGltZShkYXRhKSB7CiAgICAgIHRoaXMucHJldmlld3MgPSBkYXRhOwogICAgfQogIH0KfTsK"},{"version":3,"sources":["userAvatar.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"userAvatar.vue","sourceRoot":"src/views/system/user/profile","sourcesContent":["<template>\n  <div>\n    <img v-bind:src=\"options.img\" @click=\"editCropper()\" title=\"点击上传头像\" class=\"img-circle img-lg\" />\n    <el-dialog :title=\"title\" :visible.sync=\"open\" width=\"800px\" append-to-body @opened=\"modalOpened\">\n      <el-row>\n        <el-col :xs=\"24\" :md=\"12\" :style=\"{height: '350px'}\">\n          <vue-cropper\n            ref=\"cropper\"\n            :img=\"options.img\"\n            :info=\"true\"\n            :autoCrop=\"options.autoCrop\"\n            :autoCropWidth=\"options.autoCropWidth\"\n            :autoCropHeight=\"options.autoCropHeight\"\n            :fixedBox=\"options.fixedBox\"\n            @realTime=\"realTime\"\n            v-if=\"visible\"\n          />\n        </el-col>\n        <el-col :xs=\"24\" :md=\"12\" :style=\"{height: '350px'}\">\n          <div class=\"avatar-upload-preview\">\n            <img :src=\"previews.url\" :style=\"previews.img\" />\n          </div>\n        </el-col>\n      </el-row>\n      <br />\n      <el-row>\n        <el-col :lg=\"2\" :md=\"2\">\n          <el-upload action=\"#\" :http-request=\"requestUpload\" :show-file-list=\"false\" :before-upload=\"beforeUpload\">\n            <el-button size=\"small\">\n              上传\n              <i class=\"el-icon-upload el-icon--right\"></i>\n            </el-button>\n          </el-upload>\n        </el-col>\n        <el-col :lg=\"{span: 1, offset: 2}\" :md=\"2\">\n          <el-button icon=\"el-icon-plus\" size=\"small\" @click=\"changeScale(1)\"></el-button>\n        </el-col>\n        <el-col :lg=\"{span: 1, offset: 1}\" :md=\"2\">\n          <el-button icon=\"el-icon-minus\" size=\"small\" @click=\"changeScale(-1)\"></el-button>\n        </el-col>\n        <el-col :lg=\"{span: 1, offset: 1}\" :md=\"2\">\n          <el-button icon=\"el-icon-refresh-left\" size=\"small\" @click=\"rotateLeft()\"></el-button>\n        </el-col>\n        <el-col :lg=\"{span: 1, offset: 1}\" :md=\"2\">\n          <el-button icon=\"el-icon-refresh-right\" size=\"small\" @click=\"rotateRight()\"></el-button>\n        </el-col>\n        <el-col :lg=\"{span: 2, offset: 6}\" :md=\"2\">\n          <el-button type=\"primary\" size=\"small\" @click=\"uploadImg()\">提 交</el-button>\n        </el-col>\n      </el-row>\n    </el-dialog>\n  </div>\n</template>\n\n<script>\nimport store from \"@/store\";\nimport { VueCropper } from \"vue-cropper\";\nimport { uploadAvatar } from \"@/api/system/user\";\n\nexport default {\n  components: { VueCropper },\n  props: {\n    user: {\n      type: Object\n    }\n  },\n  data() {\n    return {\n      // 是否显示弹出层\n      open: false,\n      // 是否显示cropper\n      visible: false,\n      // 弹出层标题\n      title: \"修改头像\",\n      options: {\n        img: store.getters.avatar, //裁剪图片的地址\n        autoCrop: true, // 是否默认生成截图框\n        autoCropWidth: 200, // 默认生成截图框宽度\n        autoCropHeight: 200, // 默认生成截图框高度\n        fixedBox: true // 固定截图框大小 不允许改变\n      },\n      previews: {}\n    };\n  },\n  methods: {\n    // 编辑头像\n    editCropper() {\n      this.open = true;\n    },\n    // 打开弹出层结束时的回调\n    modalOpened() {\n      this.visible = true;\n    },\n    // 覆盖默认的上传行为\n    requestUpload() {\n    },\n    // 向左旋转\n    rotateLeft() {\n      this.$refs.cropper.rotateLeft();\n    },\n    // 向右旋转\n    rotateRight() {\n      this.$refs.cropper.rotateRight();\n    },\n    // 图片缩放\n    changeScale(num) {\n      num = num || 1;\n      this.$refs.cropper.changeScale(num);\n    },\n    // 上传预处理\n    beforeUpload(file) {\n      if (file.type.indexOf(\"image/\") == -1) {\n        this.msgError(\"文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。\");\n      } else {\n        const reader = new FileReader();\n        reader.readAsDataURL(file);\n        reader.onload = () => {\n          this.options.img = reader.result;\n        };\n      }\n    },\n    // 上传图片\n    uploadImg() {\n      this.$refs.cropper.getCropBlob(data => {\n        let formData = new FormData();\n        formData.append(\"avatarfile\", data);\n        uploadAvatar(formData).then(response => {\n          if (response.code === 200) {\n            this.open = false;\n            this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;\n            store.commit('SET_AVATAR', this.options.img);\n            this.msgSuccess(\"修改成功\");\n          }\n          this.visible = false;\n        });\n      });\n    },\n    // 实时预览\n    realTime(data) {\n      this.previews = data;\n    }\n  }\n};\n</script>"]}]} |