|
|
|
@ -108,7 +108,9 @@ |
|
|
|
库存 |
|
|
|
</text> |
|
|
|
</view> |
|
|
|
<view style="font-size: 30rpx;color: #000;font-weight: bold;width: 152rpx;display: inline-block;text-align: right;">数量</view> |
|
|
|
<view style="font-size: 30rpx;color: #000;font-weight: bold;width: 152rpx;display: inline-block;text-align: right;"> |
|
|
|
数量 |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<view class="shop-collapse" v-for="(values,keys) in Array.from(value[1].stockLogList)" |
|
|
|
:key='keys' :id="values[1].uuid"> |
|
|
|
@ -649,7 +651,7 @@ |
|
|
|
recordState:false, |
|
|
|
currentAnchor: '', |
|
|
|
temporaryNum:0, |
|
|
|
isInventory:false, |
|
|
|
isInventory:true, |
|
|
|
noList:[], |
|
|
|
aiNotRecognition:'', |
|
|
|
getMsg:'' |
|
|
|
@ -913,7 +915,7 @@ |
|
|
|
disNoAmount:this.carList1[i].wholesalePrice || 0, //折前价,用于计算整体折扣 |
|
|
|
wholesalePrice: this.carList1[i].wholesalePrice, //批发价 |
|
|
|
lsprice: this.carList1[i].price, //零售价 |
|
|
|
productCount: this.carList1[i].productCount, //总数量 |
|
|
|
productCount: 0, //总数量 |
|
|
|
id: this.carList1[i].productId, |
|
|
|
productName: this.carList1[i].productName, |
|
|
|
productPicture: this.carList1[i].productPicture, |
|
|
|
@ -971,11 +973,11 @@ |
|
|
|
categoryId:this.carList1[i].categoryId, |
|
|
|
productId:this.carList1[i].productId, |
|
|
|
unitPrice: this.carList1[i].price || 0, //单价 |
|
|
|
discountAmount: this.carList1[i].unitPrice || 0, //折后价 |
|
|
|
disNoAmount:this.carList1[i].unitPrice || 0, //折前价,用于计算整体折扣 |
|
|
|
discountAmount: this.carList1[i].wholesalePrice || 0, //折后价 |
|
|
|
disNoAmount:this.carList1[i].wholesalePrice || 0, //折前价,用于计算整体折扣 |
|
|
|
wholesalePrice: this.carList1[i].wholesalePrice, //批发价 |
|
|
|
lsprice: this.carList1[i].price, //零售价 |
|
|
|
productCount: this.carList1[i].productCount, //总数量 |
|
|
|
productCount: 0, //总数量 |
|
|
|
id: this.carList1[i].productId, |
|
|
|
productName: this.carList1[i].productName, |
|
|
|
productPicture: this.carList1[i].productPicture, |
|
|
|
@ -1005,22 +1007,25 @@ |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
this.carList1 = [] |
|
|
|
this.carList.forEach(function(value, key) { |
|
|
|
if (that.priceType == '') { |
|
|
|
// value.unitPrice = value.unitPrice |
|
|
|
} else if (that.priceType == 0) { //零售 |
|
|
|
value.unitPrice = value.lsprice |
|
|
|
} else if (that.priceType == 1) { //批发 |
|
|
|
value.unitPrice = value.wholesalePrice |
|
|
|
} |
|
|
|
if (that.discountType == 1) { //整体折扣 |
|
|
|
value.price = value.unitPrice * 10000 * value.productCount * that.discountNum / 10 / 10000 |
|
|
|
} |
|
|
|
console.log(that.priceType) |
|
|
|
this.$nextTick(() =>{ |
|
|
|
this.carList1 = [] |
|
|
|
this.carList.forEach(function(value, key) { |
|
|
|
if (that.priceType == '') { |
|
|
|
// value.unitPrice = value.unitPrice |
|
|
|
} else if (that.priceType == 0) { //零售 |
|
|
|
value.unitPrice = value.lsprice |
|
|
|
} else if (that.priceType == 1) { //批发 |
|
|
|
value.unitPrice = value.wholesalePrice |
|
|
|
} |
|
|
|
if (that.discountType == 1) { //整体折扣 |
|
|
|
value.price = value.unitPrice * 10000 * value.productCount * that.discountNum / 10 / 10000 |
|
|
|
} |
|
|
|
}) |
|
|
|
this.getAllPrice() |
|
|
|
this.getAmountAndWho() |
|
|
|
}) |
|
|
|
this.getAllPrice() |
|
|
|
this.getAmountAndWho() |
|
|
|
// 2019002均色M码1件2019005黑色S码一件 |
|
|
|
}, |
|
|
|
//保存已选 |
|
|
|
saveCheck() { |
|
|
|
@ -1385,12 +1390,17 @@ |
|
|
|
this.relPrice = e.target.value |
|
|
|
this.noPay = this.relPrice - this.priceOk; |
|
|
|
}, |
|
|
|
changePrice(e) { |
|
|
|
e.detail.value = e.detail.value > this.relPrice ? this.relPrice : e.detail.value |
|
|
|
this.priceOk = e.detail.value |
|
|
|
changePrice(e) { |
|
|
|
console.log(this.relPrice) |
|
|
|
console.log(e.detail.value) |
|
|
|
if(Number(e.detail.value) > Number(this.relPrice)){ |
|
|
|
this.priceOk = this.relPrice |
|
|
|
}else{ |
|
|
|
this.priceOk =e.detail.value |
|
|
|
} |
|
|
|
this.$forceUpdate() |
|
|
|
this.noPay = this.relPrice - this.priceOk; |
|
|
|
|
|
|
|
this.noPay = this.noPay.toFixed(2) |
|
|
|
}, |
|
|
|
getImg(key) { |
|
|
|
return this.carList.get(key).productPicture |
|
|
|
@ -1431,9 +1441,10 @@ |
|
|
|
convertChineseToArabic(str) { |
|
|
|
const chineseNumToArabic = { |
|
|
|
'零': 0, '一': 1, '二': 2, '两': 2, '三': 3, |
|
|
|
'四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9,'杠':'-','刚':'-' |
|
|
|
'四': 4, '五': 5, '六': 6, '七': 7, '八': 8, |
|
|
|
'九': 9,'杠':'-','刚':'-','军色':'均色' |
|
|
|
}; |
|
|
|
const regex = /(零|一|二|两|三|四|五|六|七|八|九|杠|刚)/g; |
|
|
|
const regex = /(零|一|二|两|三|四|五|六|七|八|九|杠|刚|军色)/g; |
|
|
|
return str.replace(regex, match => chineseNumToArabic[match]); |
|
|
|
}, |
|
|
|
//编辑挂单信息 |
|
|
|
@ -1457,7 +1468,7 @@ |
|
|
|
|
|
|
|
for(let i=0;i<res.result.data.length;i++){ |
|
|
|
let newList = [] |
|
|
|
res.result.data[i].productCount = 0 |
|
|
|
// res.result.data[i].productCount = 0 |
|
|
|
for(let m=0;m<res.result.data[i].stockLogList1.length;m++){ |
|
|
|
if(res.result.data[i].stockLogList1[m].stockCount != null){ |
|
|
|
newList.push(res.result.data[i].stockLogList1[m]) |
|
|
|
@ -1483,7 +1494,7 @@ |
|
|
|
} |
|
|
|
this.AiHandleData() |
|
|
|
} else { |
|
|
|
this.tui.toast(res.message) |
|
|
|
this.tui.toast("抱歉:小助手对"+this.getMsg+"的部分商品未识别,请检查识别信息是否正确") |
|
|
|
} |
|
|
|
}).catch((res) => { |
|
|
|
this.tui.toast(res) |
|
|
|
@ -1573,18 +1584,17 @@ |
|
|
|
let that = this; |
|
|
|
this.priceType = e |
|
|
|
that.priceCurrent = index |
|
|
|
this.carList.forEach(function(value, key) { |
|
|
|
|
|
|
|
|
|
|
|
that.index = value.productId || value.id |
|
|
|
|
|
|
|
if (e == 0) { //零售 |
|
|
|
that.checkPay(value.lsprice) |
|
|
|
} else { //批发 |
|
|
|
that.checkPay(value.wholesalePrice) |
|
|
|
this.carList.forEach(function(value, key) { |
|
|
|
that.index = value.productId || value.id |
|
|
|
if (e == '0') { //零售 |
|
|
|
value.discountAmount = value.lsprice |
|
|
|
} else { //批发 |
|
|
|
value.discountAmount = value.wholesalePrice |
|
|
|
} |
|
|
|
}) |
|
|
|
that.$nextTick(() => { |
|
|
|
this.getAllPrice() |
|
|
|
this.getAmountAndWho() |
|
|
|
setTimeout(res => { |
|
|
|
uni.hideLoading(); |
|
|
|
}, 500) |
|
|
|
@ -1606,7 +1616,7 @@ |
|
|
|
num.price = price * num.productCount; |
|
|
|
this.$refs.inputDialog.close() |
|
|
|
this.$refs.historyPopup.close() |
|
|
|
num.discountAmount = num.unitPrice * num.discount / 10 |
|
|
|
// num.discountAmount = num.unitPrice * num.discount / 10 |
|
|
|
num.disNoAmount = num.discountAmount |
|
|
|
num.price = num.unitPrice * num.discount / 10 * num.productCount |
|
|
|
that.relPrice = that.shouldPay |
|
|
|
@ -1632,24 +1642,25 @@ |
|
|
|
|
|
|
|
value.unitPrice = price; |
|
|
|
if (that.discountType == 1) { //整体折扣 |
|
|
|
value.discountAmount = value.unitPrice * 10000 * that.discountNum / 10 / 10000 |
|
|
|
value.discountAmount = value.unitPrice * (that.discountNum / 10) |
|
|
|
value.discountAmount = value.discountAmount.toFixed(2) |
|
|
|
value.price = value.discountAmount * value.productCount |
|
|
|
value.price = value.discountAmount * value.productCount |
|
|
|
value.price = value.price.toFixed(2) |
|
|
|
} else if (that.discountType == 0) { //单品折扣 |
|
|
|
value.discountAmount = value.unitPrice * value.discount / 10 |
|
|
|
value.discountAmount = value.unitPrice * (value.discount / 10) |
|
|
|
value.discountAmount = value.discountAmount.toFixed(2) |
|
|
|
value.price = value.unitPrice * value.discount / 10 * value.productCount |
|
|
|
value.price = (value.unitPrice * (value.discount / 10)) * value.productCount |
|
|
|
value.price = value.price.toFixed(2) |
|
|
|
|
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
this.getAllPrice(); |
|
|
|
if (this.relPrice == '' || this.relPrice == 0) { |
|
|
|
that.noPay = that.shouldPay |
|
|
|
} else if (this.relPrice != '' && this.priceOk != '') { |
|
|
|
that.noPay = this.relPrice - this.priceOk |
|
|
|
} |
|
|
|
// if (this.relPrice == '' || this.relPrice == 0) { |
|
|
|
// that.noPay = that.shouldPay |
|
|
|
// } else if (this.relPrice != '' && this.priceOk != '') { |
|
|
|
// that.noPay = this.relPrice - this.priceOk |
|
|
|
// } |
|
|
|
}, |
|
|
|
AiAddSpec(value){ |
|
|
|
this.getById(value.productId || value.id); |
|
|
|
@ -1666,10 +1677,7 @@ |
|
|
|
} |
|
|
|
that.goodsDetail = res.result; |
|
|
|
that.temporaryList = [] |
|
|
|
|
|
|
|
|
|
|
|
if (that.carList.size > 0) { |
|
|
|
// let isTrue = false |
|
|
|
that.carList.forEach(function(value, key) { |
|
|
|
value.stockLogList.forEach(function(values, keys) { |
|
|
|
if(value.stockLogList1.length == 0){ |
|
|
|
@ -1694,9 +1702,7 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
that.zNum = 0 |
|
|
|
@ -1711,14 +1717,12 @@ |
|
|
|
value.stockLogList1 = [] |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
that.$nextTick(() => { |
|
|
|
|
|
|
|
console.log('temporaryList', that.temporaryList) |
|
|
|
console.log('pageOldTemList', that.pageOldTemList) |
|
|
|
}) |
|
|
|
|
|
|
|
this.tui.request("/app/productAttribute/selectAttributeAndValueByCategoryId", "POST", { |
|
|
|
categoryId: this.goodsDetail.categoryId |
|
|
|
}, false, true).then((res1) => { |
|
|
|
@ -1731,30 +1735,12 @@ |
|
|
|
let dataArr = [] |
|
|
|
for (let val in newObj) { |
|
|
|
let valueObj = []; |
|
|
|
// let isTrue = false |
|
|
|
for (var i = 0; i < newObj[val].length; i++) { |
|
|
|
// for (var m = 0; m < this.oldTemList.length; m++) { |
|
|
|
// var data = this.oldTemList[m].name.split('/') |
|
|
|
// for (var j = 0; j < data.length; j++) { |
|
|
|
// if (data[j] == newObj[val][i]) { |
|
|
|
// isTrue = true |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
// for (var m = 0; m < this.pageOldTemList.length; m++) { |
|
|
|
// var data = this.pageOldTemList[m].name.split('/') |
|
|
|
// for (var j = 0; j < data.length; j++) { |
|
|
|
// if (data[j] == newObj[val][i]) { |
|
|
|
// isTrue = true |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
valueObj.push({ |
|
|
|
value: newObj[val][i], |
|
|
|
isChecked: false |
|
|
|
}) |
|
|
|
this.dataObj.set(newObj[val][i], val) |
|
|
|
// isTrue = false |
|
|
|
} |
|
|
|
newArr.push({ |
|
|
|
name: val, |
|
|
|
@ -1772,26 +1758,16 @@ |
|
|
|
oldValue.push(this.goodsDetail.attributeList[i].value[m].value) |
|
|
|
} |
|
|
|
} |
|
|
|
// if (oldCheck) { |
|
|
|
// let specs1 = { |
|
|
|
// specs: [] |
|
|
|
// } |
|
|
|
|
|
|
|
// specs1.specs = oldValue |
|
|
|
// this.goodsList.push(specs1) |
|
|
|
// } else { |
|
|
|
let specs1 = { |
|
|
|
specs: [] |
|
|
|
} |
|
|
|
this.goodsList.push(specs1) |
|
|
|
// } |
|
|
|
let specs1 = { |
|
|
|
specs: [] |
|
|
|
} |
|
|
|
this.goodsList.push(specs1) |
|
|
|
oldCheck = false |
|
|
|
oldValue = [] |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.tui.toast('失败了') |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
this.tui.toast(res1.message) |
|
|
|
} |
|
|
|
@ -1836,9 +1812,9 @@ |
|
|
|
}) |
|
|
|
this.price = this.shouldPay |
|
|
|
this.relPrice = this.shouldPay |
|
|
|
if(this.priceOk != ''){ |
|
|
|
this.priceOk = this.relPrice |
|
|
|
} |
|
|
|
// if(this.priceOk != ''){ |
|
|
|
// this.priceOk = this.relPrice |
|
|
|
// } |
|
|
|
|
|
|
|
this.$forceUpdate() |
|
|
|
this.discountNum = 10 |
|
|
|
@ -1942,7 +1918,6 @@ |
|
|
|
this.goodsDetail.attributeList[i].value[m].isChecked = false |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (this.carList.size == 0) { //当前页没有数据 |
|
|
|
for (let i = 0; i < carList1.length; i++) { |
|
|
|
let obj = { |
|
|
|
@ -2316,7 +2291,7 @@ |
|
|
|
} |
|
|
|
value.stockLogList.forEach(function(value1, key1) { |
|
|
|
if (that.countPrint() < that.printTotal) { |
|
|
|
strCmd += blesdk.addCPCLText('0', that.yNum, '24', '0', 0, (that.slicePrint( |
|
|
|
strCmd += blesdk.addCPCLText('0', that.yNum, '24', '0', 0, '□ '+(that.slicePrint( |
|
|
|
key1)) + '*' + value1.productCount) |
|
|
|
strCmd += blesdk.addCPCLText('280', that.yNum, '24', '0', 0, '单价:' + value |
|
|
|
.discountAmount) |
|
|
|
@ -2329,9 +2304,8 @@ |
|
|
|
strCmd = '' |
|
|
|
strCmd = blesdk.CreatCPCLPage(600, 1040, 1, 0); |
|
|
|
strCmd += blesdk.addCPCLLocation(0); |
|
|
|
strCmd += blesdk.addCPCLText('0', (that.yNum += 30), '24', '0', 0, (that |
|
|
|
.slicePrint( |
|
|
|
key1)) + '*' + value1.productCount) |
|
|
|
strCmd += blesdk.addCPCLText('0', (that.yNum += 30), '24', '0', 0, '□ '+(that |
|
|
|
.slicePrint(key1)) + '*' + value1.productCount) |
|
|
|
strCmd += blesdk.addCPCLText('280', that.yNum, '24', '0', 0, '单价:' + value |
|
|
|
.discountAmount) |
|
|
|
strCmd += blesdk.addCPCLText('440', that.yNum, '24', '0', 0, '总价:' + (value |
|
|
|
@ -2371,7 +2345,7 @@ |
|
|
|
} |
|
|
|
if (that.countPrint() < this.printTotal) { |
|
|
|
strCmd += blesdk.addCPCLText('0', this.countPrint(), '24', '0', 0, '实收:' + this.priceOk) |
|
|
|
strCmd += blesdk.addCPCLText('200', this.yNum, '24', '0', 0, '欠款:' + (this.relPrice - this.priceOk)) |
|
|
|
strCmd += blesdk.addCPCLText('200', this.yNum, '24', '0', 0, '欠款:' + (this.relPrice - this.priceOk).toFixed(2)) |
|
|
|
strCmd += blesdk.addCPCLText('400', this.yNum, '24', '0', 0, '其他费用:' + (this.otherExpense == '' ? 0 : |
|
|
|
this.otherExpense)) |
|
|
|
} else { |
|
|
|
@ -2382,7 +2356,7 @@ |
|
|
|
strCmd = blesdk.CreatCPCLPage(600, 1040, 1, 0); |
|
|
|
strCmd += blesdk.addCPCLLocation(0); |
|
|
|
strCmd += blesdk.addCPCLText('0', (this.yNum += 30), '24', '0', 0, '实收:' + this.priceOk) |
|
|
|
strCmd += blesdk.addCPCLText('200', this.yNum, '24', '0', 0, '欠款:' + (this.relPrice - this.priceOk)) |
|
|
|
strCmd += blesdk.addCPCLText('200', this.yNum, '24', '0', 0, '欠款:' + (this.relPrice - this.priceOk).toFixed(2)) |
|
|
|
strCmd += blesdk.addCPCLText('400', this.yNum, '24', '0', 0, '其他费用:' + (this.otherExpense == '' ? 0 : |
|
|
|
this.otherExpense)) |
|
|
|
|
|
|
|
@ -2506,15 +2480,15 @@ |
|
|
|
this.temporaryChange() |
|
|
|
}, |
|
|
|
//删除整条商品 |
|
|
|
delShop(id) { |
|
|
|
uni.showLoading({ |
|
|
|
title: '加载中...' |
|
|
|
}) |
|
|
|
delShop(id) { |
|
|
|
var that = this; |
|
|
|
uni.showModal({ |
|
|
|
title: "提示", |
|
|
|
content: "确定删除此条商品吗?", |
|
|
|
success: function(res) { |
|
|
|
success: function(res) { |
|
|
|
uni.showLoading({ |
|
|
|
title: '加载中...' |
|
|
|
}) |
|
|
|
if (res.confirm) { |
|
|
|
if (that.carList.has(id) == true) { |
|
|
|
that.carList.delete(id) |
|
|
|
@ -2522,19 +2496,20 @@ |
|
|
|
that.$forceUpdate() |
|
|
|
that.getAllPrice() |
|
|
|
that.getAmountAndWho() |
|
|
|
} |
|
|
|
} |
|
|
|
setTimeout(res => { |
|
|
|
uni.hideLoading(); |
|
|
|
}, 500) |
|
|
|
} |
|
|
|
}) |
|
|
|
setTimeout(res => { |
|
|
|
uni.hideLoading(); |
|
|
|
}, 500) |
|
|
|
|
|
|
|
}, |
|
|
|
//删除商品下的某一个规格 |
|
|
|
delShopSpec(id, name) { |
|
|
|
var that = this; |
|
|
|
uni.showModal({ |
|
|
|
title: "提示", |
|
|
|
content: "确定删除此条商品吗?", |
|
|
|
content: "确定删除此条规格吗?", |
|
|
|
success: function(res) { |
|
|
|
if (res.confirm) { |
|
|
|
that.carList.get(id).productCount -= that.carList.get(id).stockLogList.get(name).productCount; |
|
|
|
@ -2559,13 +2534,15 @@ |
|
|
|
this.totalAmount = 0 |
|
|
|
|
|
|
|
this.carList.forEach(function(value, key) { |
|
|
|
that.shouldPay = Number(that.shouldPay) + Number(value.price) |
|
|
|
that.shouldPay = Number(that.shouldPay) + Number(value.price) |
|
|
|
|
|
|
|
that.totalAmount = that.totalAmount + value.productCount |
|
|
|
}) |
|
|
|
|
|
|
|
that.shouldPay = that.shouldPay.toFixed(2) |
|
|
|
this.relPrice = this.shouldPay |
|
|
|
this.$forceUpdate() |
|
|
|
that.noPay = this.relPrice - (this.priceOk == '' ? 0 : this.priceOk) |
|
|
|
that.noPay = this.relPrice - (this.priceOk == '' ? 0 : this.priceOk) |
|
|
|
that.noPay = that.noPay.toFixed(2) |
|
|
|
}, |
|
|
|
//修改已选规格的数量 |
|
|
|
GoodsNumChange(e, index, index1) { |
|
|
|
@ -2580,9 +2557,7 @@ |
|
|
|
// that.carList.get(index[0]).price = that.carList.get(index[0]).price.toFixed(2) |
|
|
|
// console.log(that.carList.get(index[0]).price) |
|
|
|
} else { |
|
|
|
that.carList.get(index[0]).price = that.carList.get(index[0]).productCount * that.carList.get( |
|
|
|
index[0]) |
|
|
|
.unitPrice |
|
|
|
that.carList.get(index[0]).price = that.carList.get(index[0]).productCount * that.carList.get(index[0]).unitPrice |
|
|
|
} |
|
|
|
}) |
|
|
|
that.getAllPrice() |
|
|
|
@ -2617,15 +2592,15 @@ |
|
|
|
that.$forceUpdate() |
|
|
|
}, |
|
|
|
//清空全部数据 |
|
|
|
clearAll() { |
|
|
|
uni.showLoading({ |
|
|
|
title: '加载中...' |
|
|
|
}) |
|
|
|
clearAll() { |
|
|
|
let that = this; |
|
|
|
uni.showModal({ |
|
|
|
title: "提示", |
|
|
|
content: "确定清空全部已选商品吗?", |
|
|
|
success: function(res) { |
|
|
|
success: function(res) { |
|
|
|
uni.showLoading({ |
|
|
|
title: '加载中...' |
|
|
|
}) |
|
|
|
if (res.confirm) { |
|
|
|
console.log(that.priceCurrent) |
|
|
|
that.carList.clear() |
|
|
|
@ -2653,13 +2628,13 @@ |
|
|
|
that.totalAmount = 0 |
|
|
|
that.saleId = '' |
|
|
|
that.priceCurrent = null |
|
|
|
that.$forceUpdate() |
|
|
|
that.$forceUpdate() |
|
|
|
setTimeout(res => { |
|
|
|
uni.hideLoading(); |
|
|
|
}, 500) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
setTimeout(res => { |
|
|
|
uni.hideLoading(); |
|
|
|
}, 500) |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|