Browse Source

出版

master
jianglong 3 years ago
parent
commit
b778c2b1df
  1. 2
      bundle/pages/bargain_process/bargain_process.vue
  2. 26
      bundle/pages/resource_details/resource_details.vue
  3. 2
      bundle/pages/shop_cart/shop_cart.vue
  4. 27
      components/components/explore.vue
  5. 6
      components/components/lists.vue
  6. 13
      components/components/xuqiu.vue
  7. 4
      components/tabs/tabs.vue
  8. 19
      pages.json
  9. 6
      pages/community/community.vue
  10. 414
      pages/confirm_order/confirm_order.vue
  11. 4
      pages/goods_details/goods_details.vue
  12. BIN
      static/images/address_null.png
  13. BIN
      static/images/banner_coupon.jpg
  14. BIN
      static/images/bg_seckill.png
  15. BIN
      static/images/cart_null.png
  16. BIN
      static/images/category_title.png
  17. BIN
      static/images/coupon_bg.png
  18. BIN
      static/images/coupon_null.png
  19. BIN
      static/images/follow_null.png
  20. BIN
      static/images/icon_address.png
  21. BIN
      static/images/icon_emoji.png
  22. BIN
      static/images/icon_generate_poster.png
  23. BIN
      static/images/icon_share.png
  24. BIN
      static/images/icon_wait.png
  25. BIN
      static/images/icon_wechat.png
  26. BIN
      static/images/img_store_fail.png
  27. BIN
      static/images/img_store_submit.png
  28. BIN
      static/images/img_store_success.png
  29. BIN
      static/images/index_shop_bg.png
  30. BIN
      static/images/likes.png
  31. BIN
      static/images/loading.gif
  32. BIN
      static/images/null_gift.png
  33. BIN
      static/images/order_null.png
  34. BIN
      static/images/pintuan_bg.png
  35. BIN
      static/images/portrait_empty.png
  36. BIN
      static/images/profit_null.png
  37. BIN
      static/images/tab-community.png

2
bundle/pages/bargain_process/bargain_process.vue

@ -499,7 +499,7 @@
} }
this.$Router.push({ this.$Router.push({
path: '/pages/confirm_order/confirm_order', path: '/bundle_b/pages/confirm_order/confirm_order',
query: { query: {
data: params data: params
} }

26
bundle/pages/resource_details/resource_details.vue

@ -250,31 +250,7 @@ team_min_price
} }
} }
}); });
// uni.downloadFile({
// url: this.resourceDetail.path,//
// success(res) {
// //
// uni.saveFile({
// tempFilePath: res.tempFilePath,//
// success: function(res) {
// const savedFilePath = res.savedFilePath;
// //
// uni.openDocument({
// filePath: savedFilePath,
// success: function(res) {
// uni.hideLoading()
// },
// fail: function(res) {},
// complete: function(res) {
// setTimeout(uni.hideLoading(), 4000)
// },
// });
// },
// fail: function(err) { }
// });
// },
// fail(res) {}
// })
}else if(goodsType == 1){ //vip }else if(goodsType == 1){ //vip
uni.navigateTo({ uni.navigateTo({
url: '/bundle/pages/user/vip' url: '/bundle/pages/user/vip'

2
bundle/pages/shop_cart/shop_cart.vue

@ -319,7 +319,7 @@
type: 'cart' type: 'cart'
}; };
this.$Router.push({ this.$Router.push({
path: '/pages/confirm_order/confirm_order', path: '/bundle_b/pages/confirm_order/confirm_order',
query: { query: {
data: params data: params
} }

27
components/components/explore.vue

@ -10,13 +10,21 @@
</router-link> </router-link>
</view> </view>
<view class="content"> <view class="content" v-if="type==1">
<tabs :current="current" @change="changeTabs" height="100" > <tabs :current="current" @change="changeTabs" height="100" >
<tab v-for="(item, index) in tabList" :key="index" :name="item.name"> <tab v-for="(item, index) in tabList" :key="index" :name="item.name">
<lists :cateId="item.id" :typeId="type" :i="index" :index="current"></lists> <lists :cateId="item.id" :typeId="1" :i="index" :index="current"></lists>
</tab> </tab>
</tabs> </tabs>
</view> </view>
<view class="content" v-if="type==0">
<tabs :current="current" @change="changeTabs" height="100" >
<tab v-for="(item, index) in tabList" :key="index" :name="item.name">
<lists :cateId="item.id" :typeId="0" :i="index" :index="current"></lists>
</tab>
</tabs>
</view>
</view> </view>
</template> </template>
@ -42,17 +50,21 @@
id: '' id: ''
}], }],
current: 0., current: 0.,
type:1, type:this.active == 2?0:1,
} }
}, },
watch: { watch: {
active() { active() {
if(this.active == 1){ if(this.active == 1){
this.type =1;
}else if(this.active == 2){
this.type =0;
}
console.log("当前类型:",this.type)
if(this.active == 1 || this.active == 2){
this.current = 0 ;
this.initRecommendTopic() this.initRecommendTopic()
this.mescroll.resetUpScroll() // this.mescroll.resetUpScroll()
} }
} }
}, },
@ -71,6 +83,7 @@
// //
changeTabs(event) { changeTabs(event) {
this.current = event; this.current = event;
this.type =this.type;
}, },
// //
initRecommendTopic() { initRecommendTopic() {

6
components/components/lists.vue

@ -35,8 +35,10 @@
}, },
typeId: { typeId: {
type: [String, Number] type: [String, Number]
} },
}, },
data() { data() {
return { return {
height: '', height: '',
@ -48,7 +50,7 @@
top: "0", top: "0",
} }
}, },
lists: [] lists: [],
} }
}, },
mounted() { mounted() {

13
components/components/xuqiu.vue

@ -11,9 +11,9 @@
</view> </view>
<view class="content"> <view class="content">
<tabs :current="current" @change="changeTabs" height="100" > <tabs :current="current2" @change="changeTabs" height="100" >
<tab v-for="(item, index) in tabList" :key="index" :name="item.name"> <tab v-for="(item, index) in tabList" :key="index" :name="item.name">
<lists :cateId="item.id" :typeId="type" :i="index" :index="current"></lists> <lists :cateId="item.id" :typeId="type" :i="index" :index="current2"></lists>
</tab> </tab>
</tabs> </tabs>
</view> </view>
@ -41,16 +41,15 @@
name: '全部', name: '全部',
id: '' id: ''
}], }],
current: 0, current2: 0.,
type:0, type:0,
} }
}, },
watch: { watch: {
active() { active() {
if(this.active == 2){ if(this.active == 2){
this.initRecommendTopic() this.initRecommendTopic()
this.mescroll.resetUpScroll() // this.mescroll.resetUpScroll()
} }
} }
}, },
@ -61,15 +60,13 @@
initMescroll(event) { initMescroll(event) {
this.isInit = true; // true this.isInit = true; // true
this.mescroll = event; this.mescroll = event;
}, },
handleCancel() { handleCancel() {
this.keyword = ''; this.keyword = '';
}, },
// //
changeTabs(event) { changeTabs(event) {
console.log(111,this.current2)
this.current = event;
}, },
// //
initRecommendTopic() { initRecommendTopic() {

4
components/tabs/tabs.vue

@ -323,8 +323,8 @@
// scroll-viewtab // scroll-viewtab
scrollByIndex() { scrollByIndex() {
// tabtabwidthleft() // tabtabwidthleft()
console.log('tabInfo') // console.log('tabInfo')
console.log(this.tabQueryInfo) // console.log(this.tabQueryInfo)
let tabInfo = this.tabQueryInfo[this.currentIndex]; let tabInfo = this.tabQueryInfo[this.currentIndex];
if (!tabInfo) return; if (!tabInfo) return;

19
pages.json

@ -98,15 +98,7 @@
} }
}, },
{
"path": "pages/confirm_order/confirm_order",
"meta": {
"auth": true
},
"style": {
"navigationBarTitleText": "确认订单"
}
},
{ {
"path": "pages/payment/payment", "path": "pages/payment/payment",
"meta": { "meta": {
@ -834,6 +826,15 @@
{ {
"root": "bundle_b", "root": "bundle_b",
"pages": [ "pages": [
{
"path": "pages/confirm_order/confirm_order",
"meta": {
"auth": true
},
"style": {
"navigationBarTitleText": "确认订单"
}
},
{ {
"path": "pages/published_works/published_works", "path": "pages/published_works/published_works",
"meta": { "meta": {

6
pages/community/community.vue

@ -7,7 +7,7 @@
<!-- 找服务 --> <!-- 找服务 -->
<explore :active="currentNav" v-show="currentNav===1"></explore> <explore :active="currentNav" v-show="currentNav===1"></explore>
<!-- 找需求 --> <!-- 找需求 -->
<xuqiu :active="currentNav" v-show="currentNav===2"></xuqiu> <explore :active="currentNav" v-show="currentNav===2"></explore>
<!-- 检测机构 --> <!-- 检测机构 -->
<organ :active="currentNav" v-show="currentNav===3"></organ> <organ :active="currentNav" v-show="currentNav===3"></organ>
<!-- 专家服务 --> <!-- 专家服务 -->
@ -27,7 +27,7 @@
<script> <script>
import LikeHeader from "../../components/components/like-header.vue" import LikeHeader from "../../components/components/like-header.vue"
import Explore from "../../components/components/explore.vue" import Explore from "../../components/components/explore.vue"
import Xuqiu from "../../components/components/xuqiu.vue" // import Xuqiu from "../../components/components/xuqiu.vue"
import Organ from "../../components/components/organ.vue" import Organ from "../../components/components/organ.vue"
import Follow from "../../components/components/follow.vue" import Follow from "../../components/components/follow.vue"
import Team from "../../components/components/team.vue" import Team from "../../components/components/team.vue"
@ -36,7 +36,7 @@
LikeHeader, LikeHeader,
Explore, Explore,
Follow, Follow,
Xuqiu, // Xuqiu,
Organ, Organ,
Team Team
}, },

414
pages/confirm_order/confirm_order.vue

@ -1,414 +0,0 @@
<template>
<view>
<view class="confirm-order">
<view class="confirm-con">
<navigator hover-class="none" url="/bundle/pages/user_address/user_address?type=1">
<view class="address flex bg-white">
<image class="icon-md m-r-20" src="/static/images/icon_address.png"></image>
<view class="flex-1 m-r-20">
<view class="black md" v-if="!address.contact">设置收货地址</view>
<view v-else>
<text class="name md m-r-10">{{address.contact}}</text>
<text class="phone md">{{address.telephone}}</text>
<view class="area sm m-t-10 lighter">
{{address.province}} {{address.city}} {{address.district}} {{address.address}}
</view>
</view>
</view>
<u-icon name="arrow-right"></u-icon>
</view>
</navigator>
<!-- 拼团商品 -->
<block v-if="teamId==undefined">
<view class="goods contain" v-for="(item,index) in shopLists" :key="index">
<order-shop :order-type="orderInfo.order_type" :item="item" :invoice="invoiceArr" @changeremark="changeRemark"
@changecoupon="changeCoupon($event,index)" @changeDeliveryType="changeDeliveryType($event,item)" :teamId="teamId" :bargainLaunchId="bargainLaunchId"></order-shop>
</view>
</block>
<!-- 其他商品 -->
<block v-else>
<view class="goods contain">
<order-shop :order-type="orderInfo.order_type" :item="shopLists" :invoice="invoiceArr" @changeremark="changeRemark"
@changeDeliveryType="changeDeliveryType($event, shopLists)" :teamId="teamId" :bargainLaunchId="bargainLaunchId"></order-shop>
</view>
</block>
</view>
<view class="footer bg-white flex row-between fixed">
<view class="all-price lg flex">
<text>合计</text>
<view class="primary">
<price-format weight="500" :first-size="36" :second-size="36" :price="orderInfo.total_amount">
</price-format>
</view>
</view>
<button class="btn br60 white" size="md" hover-class="none" @tap="onSubmitOrder">
提交订单
</button>
</view>
</view>
<loading-view v-if="showLoading" background-color="transparent" :size="50"></loading-view>
<loading-view v-if="isFirstLoading"></loading-view>
</view>
</template>
<script>
import {
orderInfo,
orderBuy,
getOrderCoupon
} from '@/api/order';
import {
teamBuy,
teamKaiTuan
} from '@/api/activity'
import {
prepay,
getMnpNotice,
getPayway
} from '@/api/app';
import {
wxpay,
alipay
} from '@/utils/pay'
// total_amount
export default {
data() {
return {
isFirstLoading: true,
showLoading: false,
address: {},
orderInfo: {},
shopLists: [],
addressId: '',
useIntegral: 0,
userRemark: [],
couponId: [],
teamId: undefined,
carts: [],
type: '',
goods: '',
bargainLaunchId: -1,
invoiceArr: [] //
};
},
onLoad(options) {
uni.$on("selectaddress", (e) => {
this.addressId = e.id;
this.orderBuyFun();
})
//
uni.$on('invoice', params => {
const index = this.invoiceArr.findIndex(el => el.shop_id == params.shop_id)
if ( params.del == true && this.invoiceArr.length) {
this.invoiceArr.splice(index, 1);
} else {
if ( index == -1 ) this.invoiceArr = [...this.invoiceArr, params]
else this.invoiceArr.splice(index, 1, params);
}
})
const {
data: {
goods,
carts,
teamId,
foundId,
type
}
} = this.$Route.query
this.goods = goods
this.bargainLaunchId = goods[0].bargain_launch_id || -1
this.carts = carts || []
this.type = type
this.teamId = teamId
// id
this.foundId = foundId || ''
this.orderBuyFun();
},
onUnload() {
uni.$off("selectaddress")
uni.$off("payment")
uni.$off("invoice")
},
methods: {
//
changeRemark(e) {
let index = this.userRemark.findIndex((item) => item.shop_id == e.shop_id)
if (index == -1) {
this.userRemark.push(e)
} else {
this.userRemark[index].remark = e.remark
}
this.userRemark = this.userRemark.filter((item) => item.remark)
},
//
changeCoupon(e, index) {
this.couponId[index] = e
this.orderBuyFun()
},
//
changeDeliveryType(type, row) {
row.delivery_type = type;
for(let i=0;i<this.goods.length;i++) {
const item = this.goods[i];
if(row.shop_id == item.shop_id) {
this.goods[i].delivery_type = type;
}
}
this.orderBuyFun();
},
getAuthMsg() {
return new Promise(resolve => {
getMnpNotice({
scene: 1
}).then(res => {
if (res.code == 1) {
uni.requestSubscribeMessage({
tmplIds: res.data,
fail(res) {
console.log(res.errMsg);
},
complete() {
resolve();
}
});
} else {
resolve();
}
});
});
},
onSubmitOrder() {
uni.showModal({
title: '温馨提示',
content: '是否确认下单?',
confirmColor: '#FF2C3C',
success: async res => {
let {
confirm
} = res;
if (confirm) {
// #ifdef MP-WEIXIN
await this.getAuthMsg();
//#endif
this.showLoading = true
this.orderBuyFun('submit');
}
}
});
},
async orderBuyFun(action = 'info') {
const {
userRemark,
useIntegral,
carts,
goods,
bargainLaunchId,
couponId
} = this;
const submitObj = {
goods: JSON.stringify(goods),
address_id: this.addressId,
cart_id: carts.join(),
coupon_id: couponId.filter(item => item),
// bargain_launch_id
bargain_launch_id: this.bargainLaunchId == -1 ? '' : this.bargainLaunchId
};
//
if (this.teamId && action == 'info') {
delete submitObj.goods;
submitObj.action = 'info';
submitObj.item_id = this.goods[0].item_id;
submitObj.delivery_type = this.goods[0].delivery_type;
submitObj.count = this.goods[0].num;
submitObj.goods_id = this.goods[0].goods_id
submitObj.team_id = this.teamId;
}
//
if (this.teamId && action == 'submit') {
submitObj.action = 'buy';
submitObj.item_id = this.goods[0].item_id;
submitObj.delivery_type = this.goods[0].delivery_type;
submitObj.count = this.goods[0].num;
submitObj.goods_id = this.goods[0].goods_id
submitObj.team_id = this.foundId;
}
if (action == 'submit') {
// delivery_type
submitObj.delivery_type = this.shopLists[0]?.delivery_type || 0
submitObj.remark = userRemark.length ? JSON.stringify(userRemark) : ''
submitObj.invoice = JSON.stringify(this.invoiceArr)
}
let {
data: orderData,
code: orderCode,
msg: orderMsg
} = action == 'info' ? this.teamId ? await teamKaiTuan(submitObj) : await orderInfo(submitObj) :
this.teamId ? await teamKaiTuan(submitObj) : await orderBuy(submitObj)
// infoidteamKaiTuanorderInfo
// teamKaiTuanorderBuy
if(orderMsg == '抱歉,库存不足') {
setTimeout(() => {
uni.navigateBack(1)
},500)
}
if (orderCode !== 1) return this.showLoading = false
if (action == 'info') {
const {
shop,
address
} = orderData
this.address = address
this.shopLists = shop
this.orderInfo = orderData
this.$nextTick(() => {
this.isFirstLoading = false
});
} else if (action == 'submit') {
this.showLoading = false
let order_id = ''
const type = orderData.type
switch(type) {
case 'order': order_id = orderData.order_id; break;
case 'trade': order_id = orderData.trade_id; break;
}
uni.$on('payment', params => {
setTimeout(() => {
if (params.result) {
console.log('Jason', this)
this.$Router.replace({
path: '/pages/pay_result/pay_result',
query: {
id: params.order_id,
from: params.from
}
})
} else {
this.$Router.replace({
path: '/bundle/pages/user_order/user_order'
})
}
}, 1 * 1000)
})
uni.navigateTo({
url: `/pages/payment/payment?from=${type}&order_id=${order_id}`
})
}
}
},
watch: {
address(val) {
this.addressId = val.id
}
}
}
</script>
<style lang="scss" scoped>
.confirm-order {
.confirm-con {
overflow: hidden;
padding-bottom: calc(120rpx + env(safe-area-inset-bottom));
.address {
min-height: 164rpx;
padding: 0 24rpx;
border-radius: 14rpx;
margin: 20rpx 20rpx 0;
}
.img-line {
height: 1.5px;
width: 100%;
display: block;
}
}
.price {
padding: 28rpx 20rpx;
.item:not(:last-of-type) {
margin-bottom: 20rpx;
}
}
.contain {
border-radius: 14rpx;
margin: 20rpx 20rpx 0;
background-color: #fff;
overflow: hidden;
}
.radio-group {
display: block;
}
.footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 99;
height: 100rpx;
padding: 0 30rpx;
box-sizing: content-box;
padding-bottom: env(safe-area-inset-bottom);
.btn {
background: linear-gradient(90deg, rgba(249, 95, 47, 1) 0%, rgba(255, 44, 60, 1) 100%);
padding: 0 50rpx;
}
}
}
// .confirm-order .van-cell:after {
// border: none;
// }
// .goods .shop-icon {
// width: 40rpx;
// height: 40rpx;
// }
// .pop-title {
// height: 100rpx;
// border-bottom: 1rpx solid #F2F2F2;
// }
// .pop-title .title {
// margin-left: 30rpx;
// font-size: 34rpx;
// font-weight: bold;
// line-height: 36rpx;
// }
</style>

4
pages/goods_details/goods_details.vue

@ -532,7 +532,7 @@ team_min_price
this.goodsType == 2 ? (params.teamId = this.team.id) : ''; this.goodsType == 2 ? (params.teamId = this.team.id) : '';
this.foundId ? (params.foundId = this.foundId) : ''; this.foundId ? (params.foundId = this.foundId) : '';
this.$Router.push({ this.$Router.push({
path: '/pages/confirm_order/confirm_order', path: '/bundle_b/pages/confirm_order/confirm_order',
query: { query: {
data: params data: params
} }
@ -575,7 +575,7 @@ team_min_price
type: 'buy' type: 'buy'
}; };
this.$Router.push({ this.$Router.push({
path: '/pages/confirm_order/confirm_order', path: '/bundle_b/pages/confirm_order/confirm_order',
query: { query: {
data: params data: params
} }

BIN
static/images/address_null.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
static/images/banner_coupon.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
static/images/bg_seckill.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/images/cart_null.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
static/images/category_title.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
static/images/coupon_bg.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/images/coupon_null.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
static/images/follow_null.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
static/images/icon_address.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
static/images/icon_emoji.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/images/icon_generate_poster.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
static/images/icon_share.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
static/images/icon_wait.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/images/icon_wechat.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
static/images/img_store_fail.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
static/images/img_store_submit.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
static/images/img_store_success.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
static/images/index_shop_bg.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
static/images/likes.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
static/images/loading.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 41 KiB

BIN
static/images/null_gift.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
static/images/order_null.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
static/images/pintuan_bg.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
static/images/portrait_empty.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
static/images/profit_null.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
static/images/tab-community.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Loading…
Cancel
Save