Browse Source

修改问题

master
396316021 1 year ago
parent
commit
49d79aec15
  1. 26
      api/other.js
  2. 6
      components/FooterNav/index.vue
  3. 12
      components/RightNav/index.vue
  4. 38
      pages/FeedLog/index.vue
  5. 2
      pages/Index/components/OrderPage/index.vue
  6. 40
      pages/Index/index.vue
  7. 14
      pages/OrderConfirm/end.vue
  8. 9
      pages/OrderConfirm/start.vue
  9. 2
      pages/OrderDetail/components/fomItem.vue
  10. 1
      pages/OrderPage/components/index.scss
  11. 2
      pages/OrderPage/index.vue
  12. 23
      pages/PetDetail/index.vue
  13. 2
      pages/UserOrderPage/index.vue
  14. 8
      utils/requestOther.js

26
api/other.js

@ -52,4 +52,30 @@ export function seizeChat(data){
method: "post", method: "post",
data:data data:data
}) })
}
/**
* 按钮未读信息统计
* 1=用户2=宠托师3=客服
* @param data
* @returns {Promise | Promise<unknown>}
*/
export function allChatCount(data){
return request({
url:`/user/all-chat-count`,
method: "get",
data:data
})
}
/**
* 待服务订单统计
* @param data
* @returns {Promise | Promise<unknown>}
*/
export function waitOrderCount(data){
return request({
url:`/order/wait-order-count`,
method: "get",
data:data
})
} }

6
components/FooterNav/index.vue

@ -12,8 +12,10 @@
backgroundImage:'url('+item.image+ ((index === footCheck)?'-active':'')+'.png)', backgroundImage:'url('+item.image+ ((index === footCheck)?'-active':'')+'.png)',
backgroundSize:'auto '+((index === footCheck)?'81':'54')+'rpx', backgroundSize:'auto '+((index === footCheck)?'81':'54')+'rpx',
display:(item.is_show)?'flex':'none' display:(item.is_show)?'flex':'none'
}" @click="selectItem(index)"> }" style="position: relative;" @click="selectItem(index)">
<view v-if="item.badge > 0" style="position: absolute;top:10rpx;left:20rpx;">
<u-badge max="99" :value="item.badge"></u-badge>
</view>
</view> </view>
</view> </view>
</view> </view>

12
components/RightNav/index.vue

@ -5,7 +5,7 @@
v-for="(item,index) in buttonGroup" v-for="(item,index) in buttonGroup"
> >
<u-image v-if="item.type !== 'wechat' && item.type !== 'chat'" :src="item.image" width="93" height="93" @click="handle(item.type)"></u-image> <u-image v-if="item.type !== 'wechat' && item.type !== 'chat'" :src="item.image" width="93" height="93" @click="handle(item.type)"></u-image>
<button v-if="item.type === 'wechat'" open-type="contact" :src="item.image" style="padding-left:0;"> <button v-if="item.type === 'wechat'" @click="imageShow = true" :src="item.image" style="padding-left:0;">
<u-image :src="item.image" width="93" height="93"></u-image> <u-image :src="item.image" width="93" height="93"></u-image>
</button> </button>
<view v-if="item.type === 'chat'" style="position: relative;"> <view v-if="item.type === 'chat'" style="position: relative;">
@ -14,6 +14,11 @@
</view> </view>
</view> </view>
</view> </view>
<u-overlay :show="imageShow" @click="imageShow = false">
<view class="" style="display:flex;align-items: center;justify-content:center;width:100%;height:100vh;">
<u-image mode="widthFix" :src="imageUrl" height="auto" width="100vw"></u-image>
</view>
</u-overlay>
</template> </template>
<script> <script>
@ -24,6 +29,8 @@
export default{ export default{
data() { data() {
return { return {
imageShow:false,
imageUrl:imghost +'/qrcode-wechat.png',
title: 'Hello', title: 'Hello',
loading: true, loading: true,
buttonGroup:[ buttonGroup:[
@ -55,6 +62,9 @@
getMsgNumber(){ getMsgNumber(){
userChatCount().then(res => { userChatCount().then(res => {
this.msgCount = res.data.count this.msgCount = res.data.count
});
getConfig('kefu_weixin').then((res) => {
this.imageUrl = res.data.kefu_weixin;
}) })
}, },
callPhone(phone){ callPhone(phone){

38
pages/FeedLog/index.vue

@ -41,7 +41,7 @@
<image class="img" mode="heightFix" :src="staticImage.feedGun" /> <image class="img" mode="heightFix" :src="staticImage.feedGun" />
</view> </view>
<view class="feed-content"> <view class="feed-content">
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="水碗饭碗" title="水碗饭碗"
@ -66,7 +66,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.meal_imgs"> <view class="col-3" v-for="item in detail.feedlist.meal_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -76,7 +76,7 @@
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="主食情况" title="主食情况"
@ -101,7 +101,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.food_imgs"> <view class="col-3" v-for="item in detail.feedlist.food_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -111,7 +111,7 @@
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="零食小吃" title="零食小吃"
@ -136,7 +136,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.snack_imgs"> <view class="col-3" v-for="item in detail.feedlist.snack_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -146,7 +146,7 @@
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="喂药擦药" title="喂药擦药"
@ -171,7 +171,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.drug_imgs"> <view class="col-3" v-for="item in detail.feedlist.drug_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -181,7 +181,7 @@
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="需要注意" title="需要注意"
@ -206,7 +206,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.note_imgs"> <view class="col-3" v-for="item in detail.feedlist.note_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -216,7 +216,7 @@
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="用品位置" title="用品位置"
@ -241,7 +241,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.goods_imgs"> <view class="col-3" v-for="item in detail.feedlist.goods_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -251,7 +251,7 @@
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="外出路线" title="外出路线"
@ -276,7 +276,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.line_imgs"> <view class="col-3" v-for="item in detail.feedlist.line_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -286,7 +286,7 @@
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>
<u-collapse :value="['collapse']"> <u-collapse :value="collapseValue">
<u-collapse-item <u-collapse-item
name="collapse" name="collapse"
title="其它事项" title="其它事项"
@ -311,7 +311,7 @@
<view class="row"> <view class="row">
<view class="col-3" v-for="item in detail.feedlist.other_imgs"> <view class="col-3" v-for="item in detail.feedlist.other_imgs">
<view class="" v-if="item.type === 'image'" style="margin-right:10rpx;"> <view class="" v-if="item.type === 'image'" style="margin-right:10rpx;">
<u-image mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image> <u-image :fade="false" mode="aspectFill" width="100%" height="200rpx" :src="item.url" @click="showImage(item.url)"></u-image>
</view> </view>
<view class="" v-else> <view class="" v-else>
<video :src="item.url" style="height:200rpx;width:100%;"></video> <video :src="item.url" style="height:200rpx;width:100%;"></video>
@ -400,9 +400,15 @@
}, },
onShow(){ onShow(){
this.feedLog(); this.feedLog();
},
onReady() {
uni.$u.sleep(50).then(() => {
this.collapseValue = ['collapse'];
});
}, },
data() { data() {
return { return {
collapseValue:[],
imageShow:false, imageShow:false,
imageUrl:'', imageUrl:'',
title: 'Hello', title: 'Hello',

2
pages/Index/components/OrderPage/index.vue

@ -97,7 +97,7 @@
button-color="#D6FFF6" button-color="#D6FFF6"
button-width="100%"></MzButton> button-width="100%"></MzButton>
</view> </view>
<view v-if="item.status === 0" class="card-button" @click="navTo('/pages/OrderConfirm/start?id=' + item.id)"> <view v-if="item.status === 0 && item.is_start" class="card-button" @click="navTo('/pages/OrderConfirm/start?id=' + item.id)">
<MzButton <MzButton
title="开始服务" title="开始服务"
font-color="#4DC3B8" font-color="#4DC3B8"

40
pages/Index/index.vue

@ -30,6 +30,7 @@
import {UserCache} from "@/config/config.js"; import {UserCache} from "@/config/config.js";
import log from "@/utils/log"; import log from "@/utils/log";
import {userDetail, userExtends} from "@/api/user"; import {userDetail, userExtends} from "@/api/user";
import {allChatCount, waitOrderCount} from "../../api/other";
export default { export default {
components: { components: {
FooterNav, FooterNav,
@ -42,6 +43,7 @@
}, },
data() { data() {
return { return {
inter:{},
current:0, current:0,
footCheck: 'home', footCheck: 'home',
show: false, show: false,
@ -52,25 +54,29 @@
image: imghost + "/foot-nav-button-one", image: imghost + "/foot-nav-button-one",
name: 'home', name: 'home',
title: '汪汪行天下', title: '汪汪行天下',
is_show: true is_show: true,
badge:0,
}, },
{ {
image: imghost + "/foot-nav-button-two", image: imghost + "/foot-nav-button-two",
name: 'order', name: 'order',
title: '订单', title: '订单',
is_show: false is_show: false,
badge:0,
}, },
{ {
image: imghost + "/foot-nav-button-three", image: imghost + "/foot-nav-button-three",
name: 'chat', name: 'chat',
title: '在线沟通', title: '在线沟通',
is_show: true is_show: true,
badge:0,
}, },
{ {
image: imghost + "/foot-nav-button-four", image: imghost + "/foot-nav-button-four",
name: 'user', name: 'user',
title: '', title: '',
is_show: true is_show: true,
badge:0,
}, },
], ],
rightShow:false, rightShow:false,
@ -81,6 +87,15 @@
this.showUserInfo(); this.showUserInfo();
}, },
methods: { methods: {
getCountBadges(type = 1){
allChatCount({type:type}).then(res => {
console.log(res)
this.footGroup[2].badge = res.data.count;
});
waitOrderCount().then(res => {
this.footGroup[1].badge = res.data.count;
})
},
footSelect(index){ footSelect(index){
if(index === 1|| index === 2){ if(index === 1|| index === 2){
if (!uni.getStorageSync('token')) { if (!uni.getStorageSync('token')) {
@ -145,7 +160,24 @@
// api.navHeight().navHeight + (api.navHeight().headerPadding *2)) // api.navHeight().navHeight + (api.navHeight().headerPadding *2))
// this.footGroup = this.footGroup.filter(v => v.is_show ); // this.footGroup = this.footGroup.filter(v => v.is_show );
}, },
destroyed() {
clearInterval(this.inter);
},
mounted() { mounted() {
let user = uni.getStorageSync('user');
if(user){
let type = 1;
if(user.is_waitstaff===1){
type = 3;
} else if (user.store_id > 0) {
type = 2;
} else {
type = 1;
}
this.inter = setInterval(() => {
this.getCountBadges(type);
},5000)
}
// uni.getClipboardData({ // uni.getClipboardData({
// success: function (res) { // success: function (res) {
// console.log('res',res) // console.log('res',res)

14
pages/OrderConfirm/end.vue

@ -1989,10 +1989,10 @@ export default {
fileList: [], fileList: [],
model: { model: {
order_service_id: '', order_service_id: '',
appliance: {option: '全部关闭', remark: '', upload: []}, appliance: {option: '', remark: '', upload: []},
before_status: {option: '未破坏', remark: '', upload: []}, before_status: {option: '', remark: '', upload: []},
pet_status: {option: '', remark: '', upload: []}, pet_status: {option: '', remark: '', upload: []},
food_status: {food_option: '充足', water_option: '充足', remark: '', upload: []}, food_status: {food_option: '', water_option: '', remark: '', upload: []},
sick: {option: '', remark: '', upload: []}, sick: {option: '', remark: '', upload: []},
excrement: {option: '', remark: '', upload: []}, excrement: {option: '', remark: '', upload: []},
other: {option: '', remark: '', upload: []}, other: {option: '', remark: '', upload: []},
@ -2018,11 +2018,11 @@ export default {
home_play: {option: '', remark: '', upload: []}, home_play: {option: '', remark: '', upload: []},
out_play: {option: '', number_option: '', feces_option: '', in_home_option: '', remark: '', upload: []}, out_play: {option: '', number_option: '', feces_option: '', in_home_option: '', remark: '', upload: []},
trash: {option: '', remark: '', upload: []}, trash: {option: '', remark: '', upload: []},
appliance_info: {option: '保持原始状态', remark: '', upload: []}, appliance_info: {option: '', remark: '', upload: []},
pet_secure: {option: '', remark: '', upload: []}, pet_secure: {option: '', remark: '', upload: []},
close: {option: '已反锁', remark: '', upload: []}, close: {option: '', remark: '', upload: []},
close_mima: {option: '已反锁', remark: '', upload: []}, close_mima: {option: '', remark: '', upload: []},
key: {option: '钥匙已密封带走保管', remark: '', upload: []}, key: {option: '', remark: '', upload: []},
leave: '', leave: '',
goOutTime: '' goOutTime: ''
}, },

9
pages/OrderConfirm/start.vue

@ -73,7 +73,7 @@
</u-cell> </u-cell>
</mz-card> </mz-card>
<!-- <u-text size="30" :text="model.arriveTime" @click="$refs.arriveTime.open();"></u-text>--> <!-- <u-text size="30" :text="model.arriveTime" @click="$refs.arriveTime.open();"></u-text>-->
<uv-datetime-picker ref="arriveTime" :value="shows.arrivalTime" mode="datetime" @confirm="timeConfirm"></uv-datetime-picker> <uv-datetime-picker ref="arriveTime" :value="shows.arrivalTime" mode="time" @confirm="timeConfirm"></uv-datetime-picker>
</u-form-item> </u-form-item>
<u-form-item <u-form-item
prop="userInfo.sex" prop="userInfo.sex"
@ -325,9 +325,12 @@ export default {
}) })
}, },
timeConfirm(e){ timeConfirm(e){
this.shows.arrivalTime = e.value; this.shows.arrivalTime = uni.$u.timeFormat(null,'yyyy-mm-dd') + ' ' +e.value;
console.log(this.shows.arrivalTime)
console.log(e)
// this.shows.arrivalTime = uni.$u.timeFormat(e.value,'yyyymmdd hhMM'); // this.shows.arrivalTime = uni.$u.timeFormat(e.value,'yyyymmdd hhMM');
this.model.arrival_time = uni.$u.timeFormat(e.value,'yyyy-mm-dd hh:MM'); //,
this.model.arrival_time = uni.$u.timeFormat(null,'yyyy-mm-dd') + ' ' +e.value;
}, },
submit(){ submit(){
let that = this; let that = this;

2
pages/OrderDetail/components/fomItem.vue

@ -90,7 +90,7 @@ export default {
<view class="row"> <view class="row">
<view class="col-4" v-for="(item,index) in (this.type === 'media')?data:data.upload"> <view class="col-4" v-for="(item,index) in (this.type === 'media')?data:data.upload">
<view class="item-image" v-if="item.type === 'image'"> <view class="item-image" v-if="item.type === 'image'">
<u-image @click="showBigImage(item.url)" :src="item.url" mode="widthFix" width="100%"></u-image> <u-image @click="showBigImage(item.url)" :src="item.url" mode="aspectFill" width="100%"></u-image>
</view> </view>
<view class="item-video" v-else> <view class="item-video" v-else>
<video mode="aspectFill" :src="item.url" <video mode="aspectFill" :src="item.url"

1
pages/OrderPage/components/index.scss

@ -210,6 +210,7 @@
align-items: center; align-items: center;
padding:30rpx; padding:30rpx;
padding-top:25rpx; padding-top:25rpx;
padding-bottom:50rpx;
position: fixed; position: fixed;
bottom:0; bottom:0;
left:0; left:0;

2
pages/OrderPage/index.vue

@ -526,6 +526,7 @@
item.checked = false; item.checked = false;
return item; return item;
}) })
console.log('this.timeListTemp',this.timeListTemp)
}) })
}, },
setCacheOrder(){ setCacheOrder(){
@ -795,6 +796,7 @@
time:this.timeLineList time:this.timeLineList
} }
}); });
console.log('timeListTemp',this.timeListTemp)
// this.timeListTemp = this.timeList; // this.timeListTemp = this.timeList;
this.$refs.calendar.confirm(); this.$refs.calendar.confirm();

23
pages/PetDetail/index.vue

@ -53,6 +53,17 @@
{{ pet.name }} {{ pet.name }}
</view> </view>
</view> </view>
<view class="content-item row">
<view class="item-icon">
<image class="img" mode="widthFix" :src="staticImage.petName"/>
</view>
<view class="item-title">
宝贝类型
</view>
<view class="item-content">
{{ getTypeName(pet.type) }}
</view>
</view>
<view class="content-item row"> <view class="content-item row">
<view class="item-icon"> <view class="item-icon">
@ -282,6 +293,18 @@
this.getDetail(option.id); this.getDetail(option.id);
}, },
methods: { methods: {
getTypeName(type){
switch (type){
case 1:
return '喵喵';
case 2:
return '汪汪';
case 3:
return '其他萌宠';
default:
return '其他萌宠';
}
},
showImage(url){ showImage(url){
this.imageUrl = url; this.imageUrl = url;
this.imageShow = true; this.imageShow = true;

2
pages/UserOrderPage/index.vue

@ -54,7 +54,7 @@
</view> </view>
<view class="order-card-right" style="max-width: 65%;" @click="navTo('/pages/OrderDetail/index?id='+item.id)"> <view class="order-card-right" style="max-width: 65%;" @click="navTo('/pages/OrderDetail/index?id='+item.id)">
<view class="order-card-title" style=""> <view class="order-card-title" style="">
<u-text :text="item.addr" <u-text :text="item.name"
color="#131313" size="32" color="#131313" size="32"
:lines="1" line-height="32"></u-text> :lines="1" line-height="32"></u-text>
</view> </view>

8
utils/requestOther.js

@ -4,8 +4,12 @@ const service = (params) => {
return new Promise((relove, reject) => { return new Promise((relove, reject) => {
let token=uni.getStorageSync('token') let token=uni.getStorageSync('token')
let user=uni.getStorageSync('user') let user=uni.getStorageSync('user')
if (!/^http/.test(params.url)){ try{
params.url = `${host}/${params.url}`.replace(/(?<!:)\/{2,}/, '/') if (!/^http/.test(params.url)) {
params.url = `${host}/${params.url}`.replace(/(?<!:)\/{2,}/, '/')
}
}catch (e){
console.log(e)
} }
uni.request({ uni.request({

Loading…
Cancel
Save