You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
626 lines
20 KiB
626 lines
20 KiB
<template>
|
|
<view class="container">
|
|
<view style="position: relative;">
|
|
<uni-card :title="sales.userName == null ?'暂无':sales.userName" thumbnail="/static/images/dingdan/dd0.png"></uni-card>
|
|
</view>
|
|
<view class="tui-order-item boxbg">
|
|
<view class="content-box">
|
|
<view v-for="(item,index) in newData" :key="index" class="shop-box" v-if="payType1 == '2'"
|
|
style="border-top:5px solid #eee;" :style="{color:item.checked?'#777':'#000'}">
|
|
<view style="display: flex;">
|
|
<view style="height: 100rpx;line-height: 100rpx;width: 80%;" :style="{color:item.checked?'#777':'#FF5809'}">
|
|
<view style="width: 70%;text-align:center;float: left;">
|
|
{{item.productSn == null ? '暂无':item.productSn}}({{item.productName ? item.productName :''}})
|
|
</view>
|
|
<view style="width: 30%;text-align:center;float: left;">
|
|
数量:{{item.productCount == null ? '暂无':item.productCount}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view style="margin:20rpx auto;text-align: center;">
|
|
<view style="display: flex;height: 50rpx;line-height: 50rpx;border-top: 1px solid #eee;border-bottom: 1px solid #eee;">
|
|
<view style="width: 200rpx;border-right: 1px solid #eee;border-left: 1px solid #eee;">颜色</view>
|
|
<view v-for="(item1,index1) in newData[index].sizeList" :key='index1' style="flex: 1;border-right: 1px solid #eee;">
|
|
<text>{{item1}}</text>
|
|
</view>
|
|
</view>
|
|
<view :style="{color:item.checked?'#777':value[0].indexOf('退') != -1?'red':'#000'}"
|
|
v-for="(value,key) in Array.from(newData[index].sizePrintList)" :key='key'
|
|
style="display: flex;height: 50rpx;line-height: 50rpx;border-bottom: 1px solid #eee;">
|
|
<view style="width: 200rpx;border-right: 1px solid #eee;border-left: 1px solid #eee;">
|
|
{{value[0]}}
|
|
</view>
|
|
<view v-for="(item2,index2) in newData[index].sizeList" :key='index2' style="flex: 1;border-right: 1px solid #eee;">
|
|
<view>
|
|
{{(value[1].get(item2) == undefined || (value[1].get(item2) != undefined && value[1].get(item2).split(":")[0] == undefined))?'-' : value[1].get(item2).split(":")[0]}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="tui-tabbar">
|
|
<view class="tui-btn-mr" @click="distribution">确认配货</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
sales: {},
|
|
order: {},
|
|
list: [],
|
|
newData: [],
|
|
lettrList: ['XS', 'S', 'M', 'L', 'XL', '2XL', 'XXL', '3XL', 'XXXL', '4XL', 'XXXXL', '5XL', 'XXXXXL', '6XL',
|
|
'XXXXXXL', '7XL', 'XXXXXXXL'
|
|
],
|
|
isReturn: false,
|
|
inventoryList: [],
|
|
printHeight: 0,
|
|
smailDcl: 1,
|
|
|
|
printHeight1: 0,
|
|
printWidth1: 0,
|
|
payType1: 2,
|
|
carList:[]
|
|
}
|
|
},
|
|
onLoad(option) {
|
|
var that = this;
|
|
this.saleId = option.id
|
|
if (option.id != null && option.id != undefined && option.id != "") {
|
|
this.tui.request("/app/sale/get/" + option.id, "GET", {
|
|
customerId: ""
|
|
}, false, false).then((res) => {
|
|
if (res.code == 200 && res.result != null && res.result != undefined) {
|
|
|
|
this.order = res.result.customer
|
|
|
|
if(res.result.customer.name == '散客'){
|
|
this.isSelfOrder = true
|
|
}
|
|
this.sales = res.result.sale
|
|
this.list = res.result.saleDetailDTOList
|
|
for (var i = 0; i < that.list.length; i++) {
|
|
var isZiMu = false
|
|
var isNumber = false
|
|
var colorList = new Map()
|
|
var sizeNumList = []
|
|
let notNum = []
|
|
that.list[i].checked = false
|
|
if (that.list[i].stockLogList1.length > 0) {
|
|
for (var m = 0; m < that.list[i].stockLogList1.length; m++) {
|
|
var attr = that.list[i].stockLogList1[m].attributeList
|
|
var newObj = JSON.parse(attr)
|
|
for (var as in newObj) {
|
|
if (as == '尺码' && that.isLetterOrDigit(newObj[as].replace(/码/g, '')) ==
|
|
'Letter') {
|
|
isZiMu = true
|
|
}
|
|
if (as == '尺码' && that.isLetterOrDigit(newObj[as].replace(/码/g, '')) ==
|
|
'Digit') {
|
|
isNumber = true
|
|
}
|
|
if (as == '尺码' && sizeNumList.indexOf(newObj[as].replace(/码/g, '')) ==
|
|
-1) {
|
|
if (as == '尺码' && that.isLetterOrDigit(newObj[as].replace(/码/g,
|
|
'')) == 'Digit') {
|
|
sizeNumList.push(newObj[as].replace(/码/g, ''))
|
|
} else {
|
|
if (notNum.indexOf(newObj[as].replace(/码/g, '')) == -1) {
|
|
notNum.push(newObj[as].replace(/码/g, ''))
|
|
}
|
|
}
|
|
|
|
}
|
|
if (as == '颜色') {
|
|
if (colorList.has(newObj[as])) {
|
|
colorList.get(newObj[as]).push(that.list[i].stockLogList1[m])
|
|
} else {
|
|
let listChild = []
|
|
listChild.push(that.list[i].stockLogList1[m])
|
|
colorList.set(newObj[as], listChild)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (notNum.length > 0) {
|
|
sizeNumList = sizeNumList.concat(notNum)
|
|
}
|
|
var newStockList = []
|
|
if (isNumber) {
|
|
sizeNumList = sizeNumList.sort((a, b) => a - b);
|
|
colorList.forEach(function(value, key) {
|
|
for (var j = 0; j < sizeNumList.length; j++) {
|
|
for (var m = 0; m < value.length; m++) {
|
|
var newObj = JSON.parse(value[m].attributeList)
|
|
var size = ''
|
|
var color = ''
|
|
for (var as in newObj) {
|
|
if (as == '尺码') {
|
|
size = newObj[as].replace(/码/g, '')
|
|
}
|
|
}
|
|
if (size == sizeNumList[j]) {
|
|
newStockList.push(value[m])
|
|
value.splice(m, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if (value.length > 0) {
|
|
newStockList = newStockList.concat(value)
|
|
}
|
|
})
|
|
that.list[i].stockLogList1 = newStockList
|
|
}
|
|
if (isZiMu) {
|
|
colorList.forEach(function(value, key) {
|
|
for (var j = 0; j < that.lettrList.length; j++) {
|
|
for (var m = 0; m < value.length; m++) {
|
|
var newObj = JSON.parse(value[m].attributeList)
|
|
var size = ''
|
|
var color = ''
|
|
for (var as in newObj) {
|
|
if (as == '尺码') {
|
|
size = newObj[as].replace(/码/g, '')
|
|
}
|
|
}
|
|
if (size == that.lettrList[j]) {
|
|
newStockList.push(value[m])
|
|
value.splice(m, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if (value.length > 0) {
|
|
newStockList = newStockList.concat(value)
|
|
}
|
|
})
|
|
that.list[i].stockLogList1 = newStockList
|
|
}
|
|
|
|
for (var m = 0; m < this.list[i].stockLogList1.length; m++) {
|
|
if (this.list[i].productCount == null) {
|
|
this.list[i].productCount = this.list[i].stockLogList1[m].productCount
|
|
} else {
|
|
this.list[i].productCount += this.list[i].stockLogList1[m].productCount
|
|
}
|
|
let hasBuy = ''
|
|
if (this.list[i].stockLogList1[m].isPurchasedBefore == 0 || (this.list[i]
|
|
.stockLogList1[m].isPurchasedBefore == 1 && this.sales.userName == '散客'
|
|
)) {
|
|
hasBuy = '【销】'
|
|
}
|
|
if (this.list[i].stockLogList1[m].isPurchasedBefore == 1 && this.sales
|
|
.userName != '散客') {
|
|
hasBuy = '【补】'
|
|
}
|
|
}
|
|
}
|
|
this.newData = JSON.parse(JSON.stringify(this.list))
|
|
this.getReturnOrder(option.id)
|
|
|
|
}
|
|
}).catch((res) => {})
|
|
}
|
|
},
|
|
methods: {
|
|
//配货完成按钮
|
|
distribution(){
|
|
uni.showToast({
|
|
title: '配货成功!',
|
|
icon: 'none',
|
|
duration: 1000
|
|
})
|
|
uni.removeStorageSync('noReload')
|
|
setTimeout(res=>{
|
|
uni.navigateBack({
|
|
delta: 1
|
|
});
|
|
},1000)
|
|
},
|
|
isLetterOrDigit(character) {
|
|
if (/[a-zA-Z]/.test(character)) {
|
|
return 'Letter';
|
|
} else if (/[0-9]/.test(character)) {
|
|
return 'Digit';
|
|
} else {
|
|
return 'Neither';
|
|
}
|
|
},
|
|
getPrintHeight() {
|
|
let that = this;
|
|
this.printHeight = 960
|
|
this.printHeight1 = 1900
|
|
this.printWidth1 = 2500
|
|
this.printHeight1 += 200
|
|
for (let i = 0; i < that.newData.length; i++) {
|
|
this.printHeight += 40
|
|
for (let m = 0; m < that.newData[i].stockLogList1.length; m++) {
|
|
this.printHeight1 += 200
|
|
this.printHeight += 40
|
|
}
|
|
}
|
|
let smailBegin = 4000
|
|
this.smailDcl = Number(Number(this.printHeight1 / smailBegin).toFixed(2))
|
|
this.printHeight1 = smailBegin
|
|
if (this.smailDcl >= 1) {
|
|
this.printWidth1 = Number(Number(this.printWidth1 / this.smailDcl).toFixed(0))
|
|
}
|
|
},
|
|
//退款接口
|
|
async getReturnOrder(id) {
|
|
let that = this;
|
|
await this.tui.request("/app/return/list", "post", {
|
|
remark: 3,
|
|
saleId: id
|
|
}, false, false).then((res) => {
|
|
if (res.code == 200 && res.result != null && res.result != undefined) {
|
|
if (res.result != '') {
|
|
this.inventoryList = res.result
|
|
this.inventoryList.forEach(item => {
|
|
this.tui.request("/app/return/get/" + item.id, "GET", null, false,
|
|
false)
|
|
.then((res) => {
|
|
if (res.code == 200 && res.result != null && res.result !=
|
|
undefined) {
|
|
|
|
for (let j = 0; j < res.result.saleDetailDTOList
|
|
.length; j++) {
|
|
|
|
var isZiMu = false
|
|
var isNumber = false
|
|
var colorList = new Map()
|
|
var sizeNumList = []
|
|
if (res.result.saleDetailDTOList[j].stockLogList1
|
|
.length > 0) {
|
|
for (var m = 0; m < res.result
|
|
.saleDetailDTOList[j].stockLogList1
|
|
.length; m++) {
|
|
var attr = res.result.saleDetailDTOList[j]
|
|
.stockLogList1[m].attributeList
|
|
var newObj = JSON.parse(attr)
|
|
for (var as in newObj) {
|
|
if (as == '尺码' && that.isLetterOrDigit(
|
|
newObj[as].replace(/码/g, '')
|
|
) == 'Letter') {
|
|
isZiMu = true
|
|
}
|
|
if (as == '尺码' && that.isLetterOrDigit(
|
|
newObj[as].replace(/码/g, '')
|
|
) == 'Digit') {
|
|
isNumber = true
|
|
}
|
|
if (as == '尺码' && sizeNumList.indexOf(
|
|
newObj[as].replace(/码/g, '')
|
|
) == -1) {
|
|
sizeNumList.push(newObj[as]
|
|
.replace(/码/g, ''))
|
|
}
|
|
if (as == '颜色') {
|
|
if (colorList.has(newObj[as])) {
|
|
colorList.get(newObj[as]).push(
|
|
res.result
|
|
.saleDetailDTOList[j]
|
|
.stockLogList1[m])
|
|
} else {
|
|
let listChild = []
|
|
listChild.push(res.result
|
|
.saleDetailDTOList[j]
|
|
.stockLogList1[m])
|
|
colorList.set(newObj[as],
|
|
listChild)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var newStockList = []
|
|
if (isNumber) {
|
|
sizeNumList = sizeNumList.sort((a, b) => a -
|
|
b);
|
|
colorList.forEach(function(value, key) {
|
|
for (var j = 0; j < sizeNumList
|
|
.length; j++) {
|
|
for (var m = 0; m < value
|
|
.length; m++) {
|
|
var newObj = JSON.parse(
|
|
value[m]
|
|
.attributeList)
|
|
var size = ''
|
|
var color = ''
|
|
for (var as in newObj) {
|
|
if (as == '尺码') {
|
|
size = newObj[as]
|
|
.replace(/码/g,
|
|
'')
|
|
}
|
|
}
|
|
if (size == sizeNumList[
|
|
j]) {
|
|
newStockList.push(
|
|
value[m])
|
|
value.splice(m, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if (value.length > 0) {
|
|
newStockList = newStockList
|
|
.concat(value)
|
|
}
|
|
})
|
|
res.result.saleDetailDTOList[j].stockLogList1 =
|
|
newStockList
|
|
}
|
|
if (isZiMu) {
|
|
colorList.forEach(function(value, key) {
|
|
for (var j = 0; j < that.lettrList
|
|
.length; j++) {
|
|
for (var m = 0; m < value
|
|
.length; m++) {
|
|
var newObj = JSON.parse(
|
|
value[m]
|
|
.attributeList)
|
|
var size = ''
|
|
var color = ''
|
|
for (var as in newObj) {
|
|
if (as == '尺码') {
|
|
size = newObj[as]
|
|
.replace(/码/g,
|
|
'')
|
|
}
|
|
}
|
|
if (size == that.lettrList[
|
|
j]) {
|
|
newStockList.push(
|
|
value[m])
|
|
value.splice(m, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if (value.length > 0) {
|
|
newStockList = newStockList
|
|
.concat(value)
|
|
}
|
|
})
|
|
res.result.saleDetailDTOList[j].stockLogList1 =
|
|
newStockList
|
|
}
|
|
|
|
|
|
|
|
|
|
let isTure = true
|
|
res.result.saleDetailDTOList[j].productCount = 0
|
|
for (let m = 0; m < res.result.saleDetailDTOList[j]
|
|
.stockLogList1.length; m++) {
|
|
res.result.saleDetailDTOList[j].productCount +=
|
|
res.result.saleDetailDTOList[j]
|
|
.stockLogList1[m].productCount
|
|
res.result.saleDetailDTOList[j].stockLogList1[
|
|
m].isReturn = true
|
|
}
|
|
for (let i = 0; i < that.newData.length; i++) {
|
|
if (that.newData[i].productId == res.result
|
|
.saleDetailDTOList[j].productId) {
|
|
isTure = false
|
|
that.newData[i].stockLogList1.push(...res
|
|
.result.saleDetailDTOList[j]
|
|
.stockLogList1)
|
|
}
|
|
}
|
|
if (isTure) {
|
|
that.newData.push(res.result.saleDetailDTOList[
|
|
j])
|
|
}
|
|
}
|
|
}
|
|
}).catch((res) => {})
|
|
})
|
|
|
|
} else {
|
|
for (let i = 0; i < that.list.length; i++) {
|
|
for (let z = 0; z < that.list[i].stockLogList1.length; z++) {
|
|
that.list[i].stockLogList1[z].maxNum = that.list[i].stockLogList1[z]
|
|
.productCount
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
this.tui.toast(res.message)
|
|
}
|
|
})
|
|
setTimeout(res => {
|
|
let that = this
|
|
for (let i = 0; i < this.newData.length; i++) {
|
|
that.newData[i].sizeList = []
|
|
var isZiMu = false
|
|
var isNumber = false
|
|
var sizeNumList = []
|
|
var notNum = []
|
|
that.newData[i].sizePrintList = new Map()
|
|
for (let j = 0; j < that.newData[i].stockLogList1.length; j++) {
|
|
let discountAmount = that.newData[i].discountAmount
|
|
let newObj = JSON.parse(that.newData[i].stockLogList1[j].attributeList)
|
|
let printSize = new Map()
|
|
let color = ''
|
|
let statusAttr = '[销] '
|
|
if (that.newData[i].stockLogList1[j].isReturn) {
|
|
statusAttr = '[退] '
|
|
discountAmount = that.newData[i].stockLogList1[j].discountAmount
|
|
} else if (that.newData[i].stockLogList1[j].isPurchasedBefore == 1 && that.order
|
|
.name != '散客') {
|
|
statusAttr = '[补] '
|
|
}
|
|
for (let as in newObj) {
|
|
if (as == '颜色') {
|
|
color = statusAttr + newObj[as]
|
|
if (that.newData[i].sizePrintList.has(color) == true) {
|
|
printSize = that.newData[i].sizePrintList.get(color)
|
|
} else {
|
|
that.newData[i].sizePrintList.set(color, printSize)
|
|
}
|
|
}
|
|
if (as == '尺码') {
|
|
if (newObj[as].indexOf('码') != -1) {
|
|
if (that.newData[i].sizeList.indexOf(newObj[as].substr(0, newObj[as]
|
|
.indexOf('码'))) == -1) {
|
|
that.newData[i].sizeList.push(newObj[as].substr(0, newObj[as]
|
|
.indexOf('码')))
|
|
}
|
|
that.newData[i].sizePrintList.get(color).set(newObj[as].substr(0,
|
|
newObj[as].indexOf('码')), that.newData[i].stockLogList1[j]
|
|
.productCount + ':' + discountAmount)
|
|
} else {
|
|
if (that.newData[i].sizeList.indexOf(newObj[as]) == -1) {
|
|
that.newData[i].sizeList.push(newObj[as])
|
|
}
|
|
that.newData[i].sizePrintList.get(color).set(newObj[as], that.newData[
|
|
i].stockLogList1[j].productCount + ':' + discountAmount)
|
|
}
|
|
}
|
|
if (as == '尺码' && that.isLetterOrDigit(newObj[as].replace(/码/g, '')) ==
|
|
'Letter') {
|
|
isZiMu = true
|
|
}
|
|
if (as == '尺码' && that.isLetterOrDigit(newObj[as].replace(/码/g, '')) ==
|
|
'Digit') {
|
|
isNumber = true
|
|
}
|
|
if (as == '尺码' && sizeNumList.indexOf(newObj[as].replace(/码/g, '')) == -1) {
|
|
if (as == '尺码' && that.isLetterOrDigit(newObj[as].replace(/码/g, '')) ==
|
|
'Digit') {
|
|
sizeNumList.push(newObj[as].replace(/码/g, ''))
|
|
} else {
|
|
if (notNum.indexOf(newObj[as].replace(/码/g, '')) == -1) {
|
|
notNum.push(newObj[as].replace(/码/g, ''))
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
if (notNum.length > 0) {
|
|
sizeNumList = sizeNumList.concat(notNum)
|
|
}
|
|
if (isZiMu) {
|
|
let newStockList = []
|
|
for (var j = 0; j < that.lettrList.length; j++) {
|
|
for (var m = 0; m < that.newData[i].sizeList.length; m++) {
|
|
if (that.newData[i].sizeList[m] == that.lettrList[j]) {
|
|
newStockList.push(that.newData[i].sizeList[m])
|
|
that.newData[i].sizeList.splice(m, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if (that.newData[i].sizeList.length > 0) {
|
|
newStockList = newStockList.concat(that.newData[i].sizeList)
|
|
}
|
|
that.newData[i].sizeList = newStockList
|
|
}
|
|
if (isNumber) {
|
|
let newStockList = []
|
|
sizeNumList = sizeNumList.sort((a, b) => a - b);
|
|
for (var j = 0; j < sizeNumList.length; j++) {
|
|
for (var m = 0; m < that.newData[i].sizeList.length; m++) {
|
|
if (that.newData[i].sizeList[m] == sizeNumList[j]) {
|
|
newStockList.push(that.newData[i].sizeList[m])
|
|
that.newData[i].sizeList.splice(m, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if (that.newData[i].sizeList.length > 0) {
|
|
newStockList = newStockList.concat(that.newData[i].sizeList)
|
|
}
|
|
that.newData[i].sizeList = newStockList
|
|
}
|
|
//this.newData[i].sizeList = [...new Set(this.newData[i].sizeList)]
|
|
}
|
|
|
|
}, 500)
|
|
this.$nextTick(() => {
|
|
setTimeout(res => {
|
|
this.getPrintHeight()
|
|
}, 1000)
|
|
})
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
page{
|
|
font-size: 24rpx;
|
|
}
|
|
|
|
.container {
|
|
padding-bottom: 118rpx;
|
|
|
|
.boxbg {
|
|
background-color: #fff;
|
|
margin: 30upx;
|
|
padding: 20upx;
|
|
border-radius: 10upx;
|
|
box-shadow: 0px 1px 10px 2px #e2e2e2;
|
|
}
|
|
|
|
.tui-order-item {
|
|
.u-collapse-content {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
line-height: 30px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.tui-tabbar {
|
|
width: 100%;
|
|
height: 98rpx;
|
|
background: #fff;
|
|
position: fixed;
|
|
left: 0;
|
|
bottom: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
font-size: 26rpx;
|
|
box-shadow: 0 0 1px rgba(0, 0, 0, .3);
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
z-index: 99;
|
|
}
|
|
|
|
.content-box {
|
|
width: 100%;
|
|
height: auto;
|
|
background: #fff;
|
|
margin-bottom: 20rpx;
|
|
|
|
}
|
|
|
|
.shop-box {
|
|
width: 95%;
|
|
margin: 0 auto;
|
|
}
|
|
.uni-card__header {
|
|
height: 120rpx;
|
|
}
|
|
.tui-btn-mr {
|
|
width: 130rpx;
|
|
height: 60rpx;
|
|
background: #088FEB;
|
|
color: #fff;
|
|
border-radius: 10px;
|
|
line-height: 60rpx;
|
|
text-align: center;
|
|
margin-right: 30rpx;
|
|
}
|
|
</style>
|