pifa
fanfan 5 months ago
parent bcd14c6a9e
commit 236e98a4e4
  1. 57
      pages/goods/detail.vue
  2. 53
      pages/goods/seckillDetail.vue
  3. 175
      pages/index/index.vue
  4. 60
      pages/news3/shopOrderDetails.vue
  5. 45
      pages/order/detail.vue
  6. 4891
      pages/user/index.vue

@ -84,8 +84,8 @@
<view class="proBtn" @click="goMember()">
立即开通
</view>
</view>
</view>
<view class="goodsDetail">
<view class="goodsContent">
<view class="goodsName" @click="copyNum(goods.goods_name)">
@ -263,13 +263,23 @@
</view>
</view>
<view class="footerCus firstBtn" v-else>
<view class="cusIcon">
<image :src="$picUrl + '/static/user/customer.png'"></image>
<view class="" v-if="setting.provider=='wxqykf'" @click="handleContact">
<view class="cusIcon">
<image src="/static/detail/customer.png"></image>
</view>
<view class="customer">
客服
</view>
</view>
<view class="customer">
客服
<view class="" v-else>
<view class="cusIcon">
<image src="/static/detail/customer.png"></image>
</view>
<view class="customer">
客服
</view>
<button open-type="contact"></button>
</view>
<button open-type="contact"></button>
</view>
<view v-if="goods.is_show_ktk == 1" class="footerCus firstBtn" @click="toJDdetal()">
<view class="cusIcon">
@ -556,6 +566,7 @@
district: '玄武区'
},
seckillCountTime: 0,
setting: {},
}
},
computed: {
@ -621,6 +632,35 @@
}
},
methods: {
// 线
handleContact() {
//
const setting = this.setting
//
if (setting.provider == 'wxqykf') {
if (!setting.config.wxqykf.url || !setting.config.wxqykf.corpId) {
this.$toast('客服链接和企业ID不能为空')
return
}
// #ifdef H5
window.open(setting.config.wxqykf.url)
// #endif
// #ifdef MP-WEIXIN
wx.openCustomerServiceChat({
extInfo: {
url: setting.config.wxqykf.url
},
corpId: setting.config.wxqykf.corpId,
success(res) {},
fail(res) {
console.log(res, '企业微信')
}
})
// #endif
} else {
this.$toast('暂不支持企业微信客服')
}
},
onLook(isLink, url) {
if (isLink) {
uni.navigateTo({
@ -1008,6 +1048,7 @@
.then(result => {
let info = result.data.detail;
this.getServeList(info.goods_id)
that.setting = result.data.detail.setting
let item = this.findItemById(info.skuList, info.goods_id)
if (item) {
if (item.sec_start_time) {
@ -1109,7 +1150,7 @@
})
return;
}
uni.navigateTo({
url: '/pages/news/caigou/notice1'
})

@ -213,13 +213,23 @@
</view>
</view>
<view class="footerCus firstBtn" v-else>
<view class="cusIcon">
<image :src="$picUrl + '/static/user/customer.png'"></image>
<view class="" v-if="setting.provider=='wxqykf'" @click="handleContact">
<view class="cusIcon">
<image src="/static/detail/customer.png"></image>
</view>
<view class="customer">
客服
</view>
</view>
<view class="customer">
客服
<view class="" v-else>
<view class="cusIcon">
<image src="/static/detail/customer.png"></image>
</view>
<view class="customer">
客服
</view>
<button open-type="contact"></button>
</view>
<button open-type="contact"></button>
</view>
<view v-if="goods.is_show_ktk == 1" class="footerCus firstBtn" @click="toJDdetal()">
<view class="cusIcon">
@ -488,7 +498,8 @@
province: '江苏省',
city: '南京市',
district: '玄武区'
}
},
setting:{}
}
},
computed: {
@ -528,6 +539,35 @@
}
},
methods: {
// 线
handleContact() {
//
const setting = this.setting
//
if (setting.provider == 'wxqykf') {
if (!setting.config.wxqykf.url || !setting.config.wxqykf.corpId) {
this.$toast('客服链接和企业ID不能为空')
return
}
// #ifdef H5
window.open(setting.config.wxqykf.url)
// #endif
// #ifdef MP-WEIXIN
wx.openCustomerServiceChat({
extInfo: {
url: setting.config.wxqykf.url
},
corpId: setting.config.wxqykf.corpId,
success(res) {},
fail(res){
console.log(res,'企业微信')
}
})
// #endif
}else{
this.$toast('暂不支持企业微信客服')
}
},
onLook(isLink, url) {
if (isLink) {
uni.navigateTo({
@ -911,6 +951,7 @@
SharpGoodsApi.detail(that.activeTimeId, that.sharpGoodsId)
.then(result => {
let info = result.data.goods;
that.setting = result.data.detail.setting
that.activeInfo = result.data.active
that.goodsId = info.goods_id
that.goods.skuList = [];

@ -1,11 +1,13 @@
<template>
<view class="index" :id="`index${styleIndex}`">
<view class="navbarContent">
<u-navbar :is-back="false" :background="styleIndex ? { background: navBgColor } : background" :border-bottom="false">
<image :src="logoImage" mode="heightFix" class="logo"></image>
<u-navbar :is-back="false" :background="styleIndex ? { background: navBgColor } : background"
:border-bottom="false">
<image :src="logoImage" mode="heightFix" class="logo"></image>
<view class="slot-wrap">
<u-subsection :active-color="tabActiveColor || '#FB213D'" inactive-color="#000000" height="60" @change="changeHome"
:bold="false" button-color="#fff" :list="list" :current="current"></u-subsection>
<u-subsection :active-color="tabActiveColor || '#FB213D'" inactive-color="#000000" height="60"
@change="changeHome" :bold="false" button-color="#fff" :list="list" :current="current">
</u-subsection>
</view>
</u-navbar>
</view>
@ -23,8 +25,14 @@
<!-- <view class="badge"></view> -->
</view>
<view class="chat" v-else>
<u-icon name="chat" color="#000000" size="70"></u-icon>
<button open-type="contact"></button>
<view v-if="setting.provider=='wxqykf'" @click="handleContact">
<u-icon name="chat" color="#000000" size="70"></u-icon>
</view>
<view v-else>
<u-icon name="chat" color="#000000" size="70"></u-icon>
<button open-type="contact"></button>
</view>
</view>
</template>
</view>
@ -46,7 +54,8 @@
<u-swiper :list="bannerList" height="380" img-mode="aspectFill" @click="gotoDetail"></u-swiper>
</view>
<view class="grid">
<view class="gridRows" :style="{'height': isToggle == false?catagoryList.length >0?'340rpx':'auto':'auto'}">
<view class="gridRows"
:style="{'height': isToggle == false?catagoryList.length >0?'340rpx':'auto':'auto'}">
<view class="gridItem" v-for="(item,index) in gridList" @click="goPage(item.path,item.type)"
:key="index">
<view class="imageC">
@ -80,7 +89,8 @@
</view>
</view>
<view class="firstContent" @click="goNewUser" v-if="wxAppSetting.new_first_gift">
<image :src="`${$picUrl}/static/index/new${styleIndex || ''}.png?t=${timestamp}`" class="firstBg" :class="{ 'firstBgStyle': styleIndex }"></image>
<image :src="`${$picUrl}/static/index/new${styleIndex || ''}.png?t=${timestamp}`" class="firstBg"
:class="{ 'firstBgStyle': styleIndex }"></image>
<view class="firstInfo">
<view class="fTitle">
<image :src="$picUrl+'/static/index/xinren.png?t='+timestamp" class="firstTitle"></image>
@ -117,7 +127,8 @@
<view class="dapaiTitle">
<image :src="$picUrl+'/static/index/dapai.png?t='+timestamp" mode="widthFix"></image>
<view class="goods">
<image :src="$picUrl+'/static/index/diannei.png?t='+timestamp" mode="widthFix"></image>
<image :src="$picUrl+'/static/index/diannei.png?t='+timestamp" mode="widthFix">
</image>
<view>店内现货</view>
</view>
</view>
@ -192,14 +203,15 @@
<view class="activity">
<!-- @click="goNews" -->
<view class="left" v-if="wxAppSetting.service">
<image :src="`${$picUrl}/static/index/activity${styleIndex || ''}.png?t=${timestamp}`" mode="widthFix"></image>
<image :src="`${$picUrl}/static/index/activity${styleIndex || ''}.png?t=${timestamp}`"
mode="widthFix"></image>
</view>
<view class="right">
<!-- <view class="rightContent"> -->
<view class="rightItem1" v-if="wxAppSetting.new_product">
<view style="">
<image :src="$picUrl+'/static/index/xinpin.png?t='+timestamp" mode="widthFix" @click="goNewGoods"
class="title"></image>
<image :src="$picUrl+'/static/index/xinpin.png?t='+timestamp" mode="widthFix"
@click="goNewGoods" class="title"></image>
<view class="more" @click="goNewGoods">查看更多<u-icon name="arrow-right"></u-icon>
</view>
<scroll-view scroll-x="true">
@ -209,7 +221,8 @@
@click="goJump('/pages/goods/detail?goodsId=' + item.goods_id)">
<image :src="item.goods_image"></image>
<view class="priceBox">
<image :src="$picUrl+'/static/index/price.png?t='+timestamp" mode="heightFix">
<image :src="$picUrl+'/static/index/price.png?t='+timestamp"
mode="heightFix">
</image>
<view><text></text>{{item.goods_price_min}}</view>
</view>
@ -221,8 +234,8 @@
</view>
<view class="rightItem2" v-if="wxAppSetting.ranking_list">
<view style="margin-bottom: 10rpx;">
<image :src="$picUrl+'/static/index/paihangbang.png?t='+timestamp" mode="widthFix" @click="rankIng"
class="title"></image>
<image :src="$picUrl+'/static/index/paihangbang.png?t='+timestamp" mode="widthFix"
@click="rankIng" class="title"></image>
<view class="more" @click="rankIng">查看更多<u-icon name="arrow-right"></u-icon>
</view>
<view class="right1Good">
@ -231,7 +244,8 @@
@click="goJump('/pages/goods/detail?goodsId=' + item.goods_id)">
<image :src="item.goods_image"></image>
<view class="priceBox">
<image :src="$picUrl+'/static/index/price.png?t='+timestamp" mode="heightFix">
<image :src="$picUrl+'/static/index/price.png?t='+timestamp"
mode="heightFix">
</image>
<view><text></text>{{item.goods_price_min}}</view>
</view>
@ -246,36 +260,36 @@
</view>
<view class="goodsRecommend">
<!-- <u-waterfall v-model="goodsRecommend" ref="uWaterfall1"> -->
<!-- <template v-slot:left="{leftList}"> -->
<view class="goodsItem" v-for="(item,index) in goodsRecommend" @click="goDetails(item)"
:key="index">
<view class="pic">
<image :src="item.goods_image" mode="aspectFill"></image>
</view>
<view class="goodsInfo">
<view class="title">
<!-- <text v-if="item.selling_point" class="ziying">{{item.selling_point}}</text> -->
<text class="name">{{item.goods_name}}</text>
</view>
</view>
<!-- 商品价格 -->
<view class="shenBox">
<view class="detail-price oneline-hide">
<text class="goods-price f-30 col-m"><text
style="font-size: 26rpx;"></text>{{ item.goods_price_min>0?Number(item.goods_price_min):0.00}}
<text class="delPrice"></text></text>
<text v-if="item.line_price_min > 0"
class="line-price col-9 f-24">{{ item.line_price_min>0?Number(item.line_price_min):0.00 }}</text>
</view>
<image :src="$picUrl+'/static/detail/redShen.png'" v-if="item.is_check==1" mode="">
</image>
</view>
<!-- <view class="goodsInfo1" v-if="item.cmmdty_model">
<!-- <template v-slot:left="{leftList}"> -->
<view class="goodsItem" v-for="(item,index) in goodsRecommend" @click="goDetails(item)"
:key="index">
<view class="pic">
<image :src="item.goods_image" mode="aspectFill"></image>
</view>
<view class="goodsInfo">
<view class="title">
<!-- <text v-if="item.selling_point" class="ziying">{{item.selling_point}}</text> -->
<text class="name">{{item.goods_name}}</text>
</view>
</view>
<!-- 商品价格 -->
<view class="shenBox">
<view class="detail-price oneline-hide">
<text class="goods-price f-30 col-m"><text
style="font-size: 26rpx;"></text>{{ item.goods_price_min>0?Number(item.goods_price_min):0.00}}
<text class="delPrice"></text></text>
<text v-if="item.line_price_min > 0"
class="line-price col-9 f-24">{{ item.line_price_min>0?Number(item.line_price_min):0.00 }}</text>
</view>
<image :src="$picUrl+'/static/detail/redShen.png'" v-if="item.is_check==1" mode="">
</image>
</view>
<!-- <view class="goodsInfo1" v-if="item.cmmdty_model">
<view class="oneTip">
{{item.cmmdty_model}}
</view>
</view> -->
<!-- <view class="goodsSend">
<!-- <view class="goodsSend">
<view class="sendLeft">
<view class="left_1">
{{item.goods_source}}
@ -294,9 +308,9 @@
<text v-if="item.delivery_time==6">45天内发货</text>
</view>
</view> -->
</view>
<!-- </template> -->
<!-- <template v-slot:right="{rightList}">
</view>
<!-- </template> -->
<!-- <template v-slot:right="{rightList}">
<view class="goodsItem" style="margin-right: 0;" v-for="(item,index) in rightList"
@click="goDetails(item)" :key="index">
<view class="pic">
@ -375,7 +389,7 @@
</view>
<view class="zixun">
<view class="zixunItem" @click="openWx()">
<image :src="$picUrl+'/static/user/weChat.png'" mode="widthFix" class="weChat"></image>
<image :src="$picUrl+'/static/user/weChat.png'" mode="widthFix" class="weChat"></image>
<view class="askText">
咨询
</view>
@ -633,7 +647,8 @@
navBgColor: '',
recommendPage: 1,
recommendFinish: false,
recommendLoadTitle: ''
recommendLoadTitle: '',
setting: {},
}
},
computed: {
@ -653,11 +668,40 @@
},
},
onReachBottom() {
if (!this.recommendFinish) {
if (!this.recommendFinish) {
this.getSuggest()
}
},
methods: {
// 线
handleContact() {
//
const setting = this.setting
//
if (setting.provider == 'wxqykf') {
if (!setting.config.wxqykf.url || !setting.config.wxqykf.corpId) {
this.$toast('客服链接和企业ID不能为空')
return
}
// #ifdef H5
window.open(setting.config.wxqykf.url)
// #endif
// #ifdef MP-WEIXIN
wx.openCustomerServiceChat({
extInfo: {
url: setting.config.wxqykf.url
},
corpId: setting.config.wxqykf.corpId,
success(res) {},
fail(res) {
console.log(res, '企业微信')
}
})
// #endif
}else{
this.$toast('暂不支持企业微信客服')
}
},
/**
* 获取小程序配置
*/
@ -668,7 +712,9 @@
} = await GoodsApi.wxAppSetting({});
if (status == 200) {
this.wxAppSetting = data;
const arr = [{ name: '首页' }];
const arr = [{
name: '首页'
}];
// if (data.same_city) {
// arr.push({
// name: ''
@ -681,13 +727,12 @@
}
this.list = [...arr];
if (data.select_mechant && uni.getStorageSync('storeVersion') == 1) {
this.gridList.splice(5, 1,
{
image: `${this.$picUrl}/static/index/shop-active.png`,
text: "精选商户",
path: '/pages/shopList/index',
type: 2
});
this.gridList.splice(5, 1, {
image: `${this.$picUrl}/static/index/shop-active.png`,
text: "精选商户",
path: '/pages/shopList/index',
type: 2
});
}
}
},
@ -710,7 +755,8 @@
//
handleTargetGoods(item) {
uni.navigateTo({
url: '/pages/goods/seckillDetail?sharpGoodsId=' + item.sharp_goods_id +'&activeTimeId='+this.tabbar[this.curTabIndex].active_time_id+ "&isSeckill=" + true + '&isBuy=' + this
url: '/pages/goods/seckillDetail?sharpGoodsId=' + item.sharp_goods_id + '&activeTimeId=' + this
.tabbar[this.curTabIndex].active_time_id + "&isSeckill=" + true + '&isBuy=' + this
.seckillCutDownTime + '&seckillText=' + (this.tabbar[this.curTabIndex].status == 10 ?
'结束' : '开始')
})
@ -937,7 +983,9 @@
},
getSuggest() {
//
Api.recommendedNew({ page: this.recommendPage++ }).then(res => {
Api.recommendedNew({
page: this.recommendPage++
}).then(res => {
console.log(res);
let arr = res.data.goodsList.data
if (arr && arr.length > 0) {
@ -951,7 +999,7 @@
if (arr.length < res.data.goodsList.per_page) {
this.recommendFinish = true;
}
this.recommendLoadTitle = this.recommendFinish ? "已全部加载完" : "上拉加载更多";
this.recommendLoadTitle = this.recommendFinish ? "已全部加载完" : "上拉加载更多";
this.goodsRecommend = [...this.goodsRecommend, ...arr]
})
@ -1195,6 +1243,7 @@
this.recommendLoadTitle = '';
this.goodsRecommend = [];
this.getSuggest()
this.setting = uni.getStorageSync('Setting').customer
},
onShow() {
if (this.list[this.current].name === '广场') {
@ -1233,6 +1282,7 @@
</script>
<style lang="scss" scoped>
@import './style.scss';
.index {
min-height: calc(100vh - 100rpx);
background: url('https://www.royaum.com.cn/static/index/index-bg.png');
@ -1518,6 +1568,7 @@
width: 698rpx;
height: 230rpx;
margin-bottom: 20rpx;
&.firstBgStyle {
width: 686rpx;
height: 230rpx;
@ -1898,7 +1949,7 @@
.rightItem1,
.rightItem2 {
background: url('https://www.royaum.com.cn/static/index/newFirst.png');
background-size: cover!important;
background-size: cover !important;
padding: 14rpx;
position: relative;
box-sizing: border-box;
@ -2086,6 +2137,7 @@
}
}
}
.finished {
font-size: 28rpx;
line-height: 100rpx;
@ -2173,7 +2225,8 @@
width: 500rpx;
display: flex;
align-items: center;
flex-wrap: wrap;
flex-wrap: wrap;
// justify-content: ;
.tagsItem {
margin-bottom: 16rpx;

@ -65,7 +65,8 @@
<!-- <view class="orderInfo">
<text>订单号{{orderInfo.order_no}}</text>
</view> -->
<view class="list" v-for="(item,index) in orderInfo.goods" :key="index" @click="handleTargetGoods(item.goods_id)">
<view class="list" v-for="(item,index) in orderInfo.goods" :key="index"
@click="handleTargetGoods(item.goods_id)">
<image :src="item.goods_image" mode="aspectFill" class="thumb"></image>
<view class="item">
<view class="title">{{item.goods_name}}</view>
@ -74,7 +75,8 @@
<text class="num">x{{item.total_num}}</text>
<view>
<text class="moneyFlag">¥</text>
<text class="numText">{{item.total_pay_price?Number(item.total_pay_price):item.total_pay_price}}</text>
<text
class="numText">{{item.total_pay_price?Number(item.total_pay_price):item.total_pay_price}}</text>
</view>
</view>
</view>
@ -128,11 +130,18 @@
<image :src="$picUrl+'/static/news3/phone.png'" mode="widthFix"></image>
<text>联系客户</text>
</view>
<view class="btnItem" style="border-left:1px solid #F4F4F4"
@click="callStore(orderInfo.storeInfo.phone)">
<view class="btnItem" style="border-left:1px solid #F4F4F4" v-if="setting.provider=='wxqykf'"
@click="handleContact">
<image :src="$picUrl+'/static/news3/kefu.png'" mode="widthFix"></image>
<text>联系商家</text>
</view>
<view v-else class="btnItem"
style="border-left:1px solid #F4F4F4;overflow:hidden;position: relative;">
<image :src="$picUrl+'/static/news3/kefu.png'" mode="widthFix"></image>
<text>联系商家</text>
<button open-type="contact"
style="width: 100%;height: 100%;position: absolute;top: 0;z-index: 9;background: none;"></button>
</view>
</view>
</view>
</view>
@ -202,8 +211,10 @@
<view class="btn"
v-show="!orderInfo.order_refund_id&&orderInfo.delivery_type==10&&orderInfo.order_status==10&&orderInfo.pay_status==20&&orderInfo.delivery_status==10&&userInfo.user_type == 40"
@click="goJump('/pages/news3/sendOutGoods',orderInfo,2)">发货</view>
<view class="del" v-show="orderInfo.audit_status==0&&userInfo.user_type == 40" @click="refuseOrder(orderInfo,20)">拒绝</view>
<view class="btn" v-show="orderInfo.audit_status==0&&userInfo.user_type == 40" @click="refuseOrder(orderInfo,10)">同意</view>
<view class="del" v-show="orderInfo.audit_status==0&&userInfo.user_type == 40"
@click="refuseOrder(orderInfo,20)">拒绝</view>
<view class="btn" v-show="orderInfo.audit_status==0&&userInfo.user_type == 40"
@click="refuseOrder(orderInfo,10)">同意</view>
<view class="del" @click="onDelete(orderInfo)"
v-show="(!orderInfo.order_refund_id&&orderInfo.order_status==30&&orderInfo.pay_status==20&&orderInfo.delivery_status==20)||(!orderInfo.order_refund_id&&orderInfo.order_status==20&&orderInfo.pay_status==10&&orderInfo.delivery_status==10)">
删除订单</view>
@ -260,7 +271,8 @@
<image v-else src="/static/invoice/select-on.png"></image>删除后将拼单信息设置为匿名
</view>
</view>
</u-modal><addShuiyin />
</u-modal>
<addShuiyin />
</view>
</template>
@ -281,7 +293,8 @@
refund_image_id: '',
refund_notes: '',
addressData: '',
userInfo:{}
userInfo: {},
setting: {}
};
},
onLoad(option) {
@ -292,6 +305,36 @@
this.getOrderDetail(this.order_id)
},
methods: {
// 线
handleContact() {
//
const setting = this.setting
//
if (setting.provider == 'wxqykf') {
if (!setting.config.wxqykf.url || !setting.config.wxqykf.corpId) {
this.$toast('客服链接和企业ID不能为空')
return
}
// #ifdef H5
window.open(setting.config.wxqykf.url)
// #endif
// #ifdef MP-WEIXIN
console.log(setting.config.wxqykf.url, setting.config.wxqykf.corpId)
wx.openCustomerServiceChat({
extInfo: {
url: setting.config.wxqykf.url
},
corpId: setting.config.wxqykf.corpId,
success(res) {},
fail(res) {
console.log(res, '企业微信')
}
})
// #endif
} else {
this.$toast('暂不支持企业微信客服')
}
},
//
handleTargetGoods(goodsId) {
uni.redirectTo({
@ -304,6 +347,7 @@
OrderApi.detail(this.order_id)
.then(result => {
this.orderInfo = result.data.order
this.setting = result.data.customer
})
},
//

@ -229,10 +229,14 @@
</view>
<!-- / @click="callStore(order.storeInfo.phone)" -->
<view class="callShop">
<view class="callShop" v-if="setting.provider=='wxqykf'" @click="handleContact">
<image src="/static/order/share.png" mode=""></image>
联系商家
</view>
<view class="callShop" v-else>
<image src="/static/order/share.png" mode=""></image>
<button open-type="contact"></button>
联系商家
<button open-type="contact"></button>
</view>
</view>
</view>
@ -362,7 +366,8 @@
可前往门店扫码完成操作
</view>
</view>
</view><addShuiyin />
</view>
<addShuiyin />
</view>
</template>
@ -412,7 +417,8 @@
cdDia: false,
menushow: false,
Store: '',
userInfo: {}
userInfo: {},
setting: {}
}
},
/**
@ -464,6 +470,36 @@
}
},
methods: {
// 线
handleContact() {
//
const setting = this.setting
//
if (setting.provider == 'wxqykf') {
if (!setting.config.wxqykf.url || !setting.config.wxqykf.corpId) {
this.$toast('客服链接和企业ID不能为空')
return
}
// #ifdef H5
window.open(setting.config.wxqykf.url)
// #endif
// #ifdef MP-WEIXIN
console.log(setting.config.wxqykf.url, setting.config.wxqykf.corpId)
wx.openCustomerServiceChat({
extInfo: {
url: setting.config.wxqykf.url
},
corpId: setting.config.wxqykf.corpId,
success(res) {},
fail(res) {
console.log(res, '企业微信')
}
})
// #endif
} else {
this.$toast('暂不支持企业微信客服')
}
},
onCopyLink(str) {
uni.setClipboardData({
data: str, // value
@ -554,6 +590,7 @@
app.onExtractQRCode(result.data.order.order_id)
}
app.order = result.data.order
app.setting = result.data.customer
app.isLoading = false
app.menushow = false
})

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save