This commit is contained in:
liushiwei
2023-09-25 10:13:54 +08:00
parent 2fb3f13787
commit 794ac780ae
11 changed files with 749 additions and 46 deletions

View File

@@ -0,0 +1,268 @@
<template>
<ai-list class="list" v-loading="isLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
<ai-title
slot="title"
title="待装箱发货列表"
isShowBottomBorder>
<template #rightBtn>
<div class="title-right">
<div>
<label style="width:90px">店铺</label>
<el-select v-model="mallId" @change="beforeGetList" placeholder="请选择" size="small">
<el-option
v-for="item in $store.state.mallList"
:key="item.mallId"
:label="item.mallName"
:value="item.mallId">
</el-option>
</el-select>
</div>
</div>
</template>
</ai-title>
<template slot="content">
<ai-card title="数据明细" style="padding-bottom: 40px;">
<template #right>
<json-excel
:data="tableData"
:fields="jsonFields"
:before-generate = "startDownload"
name="待装箱发货单明细.xls"
worksheet="待装箱发货单明细">
<el-button type="primary">导出数据</el-button>
</json-excel>
</template>
<ai-table
:isShowPagination="false"
:tableData="tableData"
:col-configs="colConfigs"
:total="tableData.length"
height="500"
style="margin-top: 8px;"
@getList="() => {}">
</ai-table>
</ai-card>
</template>
</ai-list>
</template>
<script>
import {sendChromeAPIMessage} from '@/api/chromeApi'
import JsonExcel from 'vue-json-excel'
import {timestampToTime} from '@/utils/date'
import { Message } from 'element-ui'
export default {
name: 'WaitShippingList',
data () {
return {
isLoading: false,
list: [],
tableData: [],
mallId: '',
colConfigs: [
{ prop: 'subPurchaseOrderSn', label: '备货单号', align: 'left' },
{ prop: 'deliveryOrderSn', label: '发货单号', align: 'left' },
{ prop: 'productName', label: '商品名称', align: 'left' },
{ prop: 'productSkcId', label: 'SKC ID', align: 'left' },
{ prop: 'skcExtCode', label: 'SKC货号', align: 'left' },
{ prop: 'productSkuId', label: 'SKU ID', align: 'left' },
{ prop: 'skuExtCode', label: 'SKU货号', align: 'left' },
{ prop: 'specName', label: '属性集', align: 'left' },
{ prop: 'supplierPrice', label: '申报价格', align: 'left' },
{ prop: 'skuNum', label: '发货数量', align: 'left' },
{ prop: 'subWarehouseName', label: '收货仓库', align: 'left' },
{ prop: 'createTime', label: '创建时间', align: 'left' }
],
jsonFields: {
"备货单号": "subPurchaseOrderSn",
"发货单号": "deliveryOrderSn",
"商品名称": "productName",
"SKC ID": "productSkcId",
"SKC货号": "skcExtCode",
"SKU ID": "productSkuId",
"SKU货号": "skuExtCode",
"属性集": "specName",
"申报价格": "supplierPrice",
"发货数量": "skuNum",
"收货仓库": "subWarehouseName",
"创建时间": "createTime"
},
currentPage: 1,
packageNumber: 0,
skcIds: []
}
},
computed: {
},
components: {
JsonExcel
},
created () {
},
methods: {
changeDataType() {
},
beforeGetList() {
if (!this.mallId) {
Message.error("请先选择店铺")
return
}
this.currentPage = 1
this.list = []
this.$userCheck(this.mallId).then(() => {
this.isLoading = true
this.skcIds = []
this.getList()
}).catch((err) => {
this.isLoading = false
})
},
getList () {
sendChromeAPIMessage({
url: 'bgSongbird-api/supplier/deliverGoods/management/pageQueryDeliveryOrders',
needMallId: true,
mallId: this.mallId,
anti: true,
data: {
"pageNo": this.currentPage,
"pageSize": 100,
"sortType": 0,
"status": 0
}}).then((res) => {
if (res.errorCode == 1000000) {
for(let i = 0;i < res.result.list.length; i++) {
let item = res.result.list[i];
let data = {};
data.subWarehouseName = item.subWarehouseName
data.skcExtCode = item.skcExtCode
data.createTime = timestampToTime(item.deliveryOrderCreateTime)
data.productName = item.subPurchaseOrderBasicVO.productName,
data.productSkcId = item.productSkcId
data.deliveryOrderSn = item.deliveryOrderSn
data.subPurchaseOrderSn = item.subPurchaseOrderSn
if (this.skcIds.indexOf(item.productSkcId) == -1) {
this.skcIds.push(item.productSkcId)
}
for(let j = 0; j < item.packageDetailList.length; j++) {
let item1 = item.packageDetailList[j]
data = {...data,
productSkuId: item1.productSkuId,
skuNum: item1.skuNum}
this.list.push(data)
}
}
if (100 == res.result.list.length) {
this.currentPage ++
setTimeout(() => {
this.getList()
}, 1000)
} else {
this.getProductDetailList(0)
}
} else {
setTimeout(() => {
this.getList()
}, 1000)
// Message.error("【拼多多】" + res.errorMsg + ", 请重新尝试加载")
}
})
},
getProductDetailList(page) {
let productSkcIds = []
let i = page * 100
let j = 0
for (; i < this.skcIds.length; i++) {
productSkcIds.push(this.skcIds[i])
j ++
if (j == 100) break
}
if (productSkcIds.length == 0) {
this.isLoading = false
this.tableData = this.list
return
}
sendChromeAPIMessage({
url: 'bg-visage-mms/product/skc/pageQuery',
needMallId: true,
anti: true,
mallId: this.mallId,
data: {
"productSkcIds": productSkcIds,
"page": 1,
"pageSize": 100
}}).then((res) => {
if (res.errorCode == 1000000) {
for(let i = 0;i < res.result.pageItems.length; i++) {
let item = res.result.pageItems[i]
item.productSkuSummaries.map(temp1 => {
for (let j = 0; j < this.list.length; j++) {
if (this.list[j].productSkuId == temp1.productSkuId) {
this.list[j].skuExtCode = temp1.extCode
this.list[j].supplierPrice = (temp1.supplierPrice / 100).toFixed(2)
let specList = temp1.productSkuSpecList.map(temp3 => {
return temp3.specName
})
this.list[j].specName = specList.join(",")
}
}
})
}
this.getProductDetailList(page + 1)
} else {
setTimeout(() => {
this.getProductDetailList(page)
}, 200)
}
})
},
startDownload() {
this.$http.post('/api/malluser/info').then(res => {
if (res.code == 0) {
this.$store.commit('setUserInfo', res.data)
if (res.data.flag != 1) {
Message.error('您的账号未激活或已失效,请激活后使用')
this.$store.commit('setActiveDlgShow', true)
return;
}
}
})
}
}
}
</script>
<style scoped lang="scss">
.list {
.title-right {
display: flex;
align-items: center;
& > div:first-child {
margin-right: 20px;
}
}
::v-deep.ai-list {
.ai-list__content--right-wrapper {
background: transparent;
box-shadow: none;
padding: 0!important;
}
}
}
</style>

View File

@@ -61,6 +61,7 @@ import { Message } from 'element-ui'
list: [],
mallId: '',
colConfigs: [
{ prop: 'subPurchaseOrderSn', label: '备货单号', align: 'left' },
{ prop: 'productName', label: '商品名称', align: 'left' },
{ prop: 'skcExtCode', label: '货号', align: 'left' },
{ prop: 'productSkcId', label: 'SKC ID', align: 'left' },
@@ -71,9 +72,11 @@ import { Message } from 'element-ui'
{ prop: 'expressDeliverySn', label: '物流单号', align: 'left' },
{ prop: 'deliveryOrderSn', label: '发货单号', align: 'left' },
{ prop: 'subWarehouseName', label: '收货仓库', align: 'left' },
{ prop: 'deliverTime', label: '发货时间', align: 'left' },
{ prop: 'expectPickUpGoodsTime', label: '预约取货时间', align: 'left' }
],
jsonFields: {
"备货单号": "subPurchaseOrderSn",
"商品名称": "productName",
"货号": "skcExtCode",
"SKC ID": "productSkcId",
@@ -84,6 +87,7 @@ import { Message } from 'element-ui'
"物流单号": "expressDeliverySn",
"发货单号": "deliveryOrderSn",
"收货仓库": "subWarehouseName",
"发货时间": "deliverTime",
"预约取货时间": "expectPickUpGoodsTime"
},
@@ -138,13 +142,15 @@ import { Message } from 'element-ui'
data.expressDeliverySn = item.expressDeliverySn
data.subWarehouseName = item.subWarehouseName
data.expectPickUpGoodsTime = timestampToTime(item.expectPickUpGoodsTime)
for(let j = 0;j < item.deliveryOrderList.length; j++) {
let item1 = item.deliveryOrderList[j]
data = {...data,
subPurchaseOrderSn: item1.subPurchaseOrderSn,
deliveryOrderSn: item1.deliveryOrderSn,
productName: item1.subPurchaseOrderBasicVO.productName,
skcExtCode: item1.subPurchaseOrderBasicVO.skcExtCode,
deliverTime: timestampToTime(item1.deliverTime),
productSkcId: item1.productSkcId}
for(let k = 0; k < item1.packageDetailList.length; k++) {
@@ -162,15 +168,13 @@ import { Message } from 'element-ui'
}, 200 * i)
}
}
if (this.pageSize == res.result.deliveryOrderList.length) {
if (100 == res.result.list.length) {
this.currentPage ++
setTimeout(() => {
this.getList()
}, 1500)
} else {
if (this.currentPage == 1 && res.result.list.length == 0) {
this.isLoading = false
}
this.isLoading = false
}
} else {
setTimeout(() => {