|
|
@@ -16,8 +16,8 @@
|
|
|
<view class="me-shop_top">
|
|
|
<view class="shop-top_left">
|
|
|
|
|
|
- <image :src="myInfo.shopImg" style="width:110upx;border-radius:100upx;" mode="widthFix" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentGhsShopId > 0"></image>
|
|
|
- <image :src="myInfo.shopImg" style="width:110upx;border-radius:100upx;" mode="widthFix" @click="pageTo({url:'/admin/home/login'})" v-else></image>
|
|
|
+ <image :src="myInfo.shopImg" class="avatar-img" mode="aspectFill" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentGhsShopId > 0" @click="openAvatarPopup"></image>
|
|
|
+ <image :src="myInfo.shopImg" class="avatar-img" mode="aspectFill" @click="pageTo({url:'/admin/home/login'})" v-else></image>
|
|
|
|
|
|
<view class="top-info_box" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentGhsShopId > 0" @click="pageTo({url: '/admin/shop/add?id='+myInfo.shopInfo.id})">
|
|
|
<view> {{ myInfo.shopName||'' }}
|
|
|
@@ -212,6 +212,26 @@
|
|
|
</view>
|
|
|
</uni-popup>
|
|
|
|
|
|
+ <uni-popup ref="avatarPopup" type="top" :animation="false">
|
|
|
+ <view class="avatar-popup-content avatar-popup-bg">
|
|
|
+ <image :src="myInfo.shopImg" class="avatar-popup-img" mode="aspectFill"></image>
|
|
|
+ <button class="admin-button-com middle blue avatar-upload-btn" @click="triggerAvatarUpload">上传图片</button>
|
|
|
+ </view>
|
|
|
+ <!-- 隐藏上传组件,只用于触发上传 -->
|
|
|
+ <htz-image-upload
|
|
|
+ ref="avatarUploader"
|
|
|
+ :max="1"
|
|
|
+ :compress="true"
|
|
|
+ v-model="avatarImgData"
|
|
|
+ :headers="headers"
|
|
|
+ :action="getLoginInfo.imgUploadApi"
|
|
|
+ @uploadSuccess="avatarUploadSuccess"
|
|
|
+ :add="false"
|
|
|
+ :remove="false"
|
|
|
+ style="display:none;"
|
|
|
+ ></htz-image-upload>
|
|
|
+ </uni-popup>
|
|
|
+
|
|
|
</view>
|
|
|
</template>
|
|
|
<script>
|
|
|
@@ -225,6 +245,7 @@ import { list } from "@/mixins";
|
|
|
import { mapGetters } from "vuex";
|
|
|
import NotLogin from "@/components/not-login";
|
|
|
import ModalModule from "@/components/plugin/modal"
|
|
|
+import htzImageUpload from '@/components/htz-image-upload/htz-image-upload.vue'
|
|
|
export default {
|
|
|
name: "me",
|
|
|
components: {
|
|
|
@@ -232,7 +253,8 @@ export default {
|
|
|
TuiListCell,
|
|
|
ShopSelect,
|
|
|
NotLogin,
|
|
|
- ModalModule
|
|
|
+ ModalModule,
|
|
|
+ htzImageUpload
|
|
|
},
|
|
|
mixins: [list],
|
|
|
computed: {
|
|
|
@@ -250,7 +272,9 @@ export default {
|
|
|
inAmountFocus:false,
|
|
|
outAmountFocus:false,
|
|
|
lookMoney:0,
|
|
|
- showDeadline:false
|
|
|
+ showDeadline:false,
|
|
|
+ avatarImgData: [],
|
|
|
+ headers: { token: '' },
|
|
|
};
|
|
|
},
|
|
|
onPullDownRefresh () {
|
|
|
@@ -282,6 +306,8 @@ export default {
|
|
|
// #ifdef MP-WEIXIN
|
|
|
this.showDeadline = true
|
|
|
// #endif
|
|
|
+ const token = uni.getStorageSync('token')
|
|
|
+ this.headers.token = token
|
|
|
},
|
|
|
methods: {
|
|
|
closeGzh(){
|
|
|
@@ -477,7 +503,42 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
- }
|
|
|
+ },
|
|
|
+ openAvatarPopup() {
|
|
|
+ this.avatarImgData = []
|
|
|
+ this.$refs.avatarPopup.open('top')
|
|
|
+ },
|
|
|
+ triggerAvatarUpload() {
|
|
|
+ // 直接通过 ref 触发上传
|
|
|
+ this.$refs.avatarUploader && this.$refs.avatarUploader.chooseFile()
|
|
|
+ },
|
|
|
+ async avatarUploadSuccess(res) {
|
|
|
+ // 上传成功后,调用 /shop/update-avatar 更新头像
|
|
|
+ let _res = JSON.parse(res.data)
|
|
|
+ if(_res.code == 1 && _res.data && _res.data.shortUrl) {
|
|
|
+ // shopId 从 myInfo.shopInfo.id 获取
|
|
|
+ const shopId = this.myInfo.shopInfo && this.myInfo.shopInfo.id
|
|
|
+ if(!shopId) {
|
|
|
+ this.$msg('门店信息异常,无法更新头像')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 调用 /shop/update-avatar
|
|
|
+ const { updateShopAvatar } = require('@/api/shop')
|
|
|
+ uni.showLoading({mask:true})
|
|
|
+ updateShopAvatar({ shopId: shopId, avatar: _res.data.shortUrl }).then(resp => {
|
|
|
+ uni.hideLoading()
|
|
|
+ if(resp.code == 1) {
|
|
|
+ this.$msg('头像更新成功')
|
|
|
+ this.myInfo.shopImg = resp.data.shopImg
|
|
|
+ this.$refs.avatarPopup.close()
|
|
|
+ } else {
|
|
|
+ this.$msg(resp.msg || '头像更新失败')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$msg('图片上传失败')
|
|
|
+ }
|
|
|
+ },
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
@@ -655,5 +716,37 @@ export default {
|
|
|
margin-top: 20upx;
|
|
|
border-radius: 10upx;
|
|
|
}
|
|
|
+ .avatar-popup-bg {
|
|
|
+ background: #fff;
|
|
|
+ opacity: 1;
|
|
|
+ border-bottom-left-radius: 24upx;
|
|
|
+ border-bottom-right-radius: 24upx;
|
|
|
+ }
|
|
|
+ .avatar-popup-content {
|
|
|
+ min-height: 42vh;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-start;
|
|
|
+ padding: 148upx 0 32upx 0;
|
|
|
+ }
|
|
|
+ .avatar-img {
|
|
|
+ width: 110upx;
|
|
|
+ height: 110upx;
|
|
|
+ border-radius: 50%;
|
|
|
+ object-fit: cover;
|
|
|
+ }
|
|
|
+ .avatar-popup-img {
|
|
|
+ width: 350upx;
|
|
|
+ height: 350upx;
|
|
|
+ border-radius: 50%;
|
|
|
+ object-fit: cover;
|
|
|
+ margin-bottom: 10upx;
|
|
|
+ border: 3upx solid #3385FF;
|
|
|
+ }
|
|
|
+ .avatar-upload-btn {
|
|
|
+ margin-top: 25upx;
|
|
|
+ width: 30vw;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|