12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import api from '@/api'
- // 上传头像mixin
- export const avatarMixin = {
- data () {
- return {
- cropperOption: {
- visible: false,
- img: null
- }
- }
- },
- methods: {
- uploadImg (event) {
- let file = event.target.files[0]
- if (this.beforeAvatarUpload(file)) {
- this.readFileAsBlob(file)
- }
- },
- readFileAsBlob (file) {
- let self = this
- let reader = new FileReader()
- reader.readAsDataURL(file)
- reader.onload = e => {
- self.cropperOption.img = e.target.result
- self.cropperOption.visible = true
- }
- reader.onerror = () => {
- self.readFileAsBlob(file)
- }
- },
- cropperClose () {
- this.cropperOption.visible = false
- },
- cropperSubmit (image) {
- let param = new FormData()
- param.append('user_id', this.$store.state.userId)
- param.append('token', this.$store.state.token)
- param.append('cover_photo', image)
- if (this.isMe) {
- api.user.changePhoto(param).then(({ data }) => {
- if (data.code === 0) {
- this.handleAvatarSuccess(image)
- this.cropperClose()
- }
- })
- } else {
- param.append('group_id', this.$store.state.curSession)
- api.group.changeCover(param).then(({ data }) => {
- if (data.code === 0) {
- this.handleAvatarSuccess(image)
- this.cropperClose()
- }
- })
- }
- },
- handleAvatarSuccess (file) {
- let imageUrl = URL.createObjectURL(file)
- this.$showTips(this.$t('public.uploadSucc'))
- if (this.isMe) {
- // 用户头像
- this.$store.commit('updateUserPhoto', imageUrl)
- this.$store.commit('updateMemberInfo', {
- userId: this.$store.state.userId,
- imageUrl: imageUrl
- })
- } else {
- // 群头像
- this.$store.dispatch('updateSessionItem', {
- sessionId: this.$store.state.curSession,
- data: {
- cover_photo: imageUrl
- }
- })
- this.$store.commit('updateGroup', {
- key: 'coverPhoto',
- data: imageUrl
- })
- }
- },
- beforeAvatarUpload (file) {
- const isIMG = file.type.indexOf('image') > -1
- const isLt1M = file.size / 1024 / 1024 < 2
- if (!isIMG || !isLt1M) {
- this.$showTips(this.$t('userinfo.maxUploadTips'))
- }
- return isIMG && isLt1M
- }
- }
- }
|