Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-app-operator-master
Commits
89474e23
Commit
89474e23
authored
Jun 19, 2023
by
dragondean@qq.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拆单
parent
775dfb55
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
477 additions
and
206 deletions
+477
-206
splitOrder.vue
...views/ecw/box/shippingSea/nodePage/cabinet/splitOrder.vue
+0
-53
PutIn.vue
src/views/ecw/order/splitApply/components/PutIn.vue
+315
-0
index.vue
src/views/ecw/order/splitApply/index.vue
+162
-153
No files found.
src/views/ecw/box/shippingSea/nodePage/cabinet/splitOrder.vue
View file @
89474e23
...
...
@@ -771,59 +771,6 @@ export default {
// 重置表单数据
this
.
shopForm
=
{
specsRecordVOList
:[]}
},
/*// 更改放入品名后触发,计算重量体积等默认值
onProdChange(){
// 根据键值(中文名或者英文名)来获取对应商品的信息,注:这里应该可以采用orderItemId来获取更优,而不是商品名称,同名可能导致异常
let orderItem = this.orderData.orderItemVOList.find(item => item.orderItemId == this.shopForm.orderItemId)
console.log({orderItem})
// 剩余可装箱数,订单入仓箱数 - 订单已装箱数 - 已拆箱数
let leftNum = Decimal(this.currRow.num).minus(this.currRow.installNum).minus(this.totalSplit('num'))
// 剩余箱数
this.$set(this.shopForm, 'leftNum', leftNum)
// 如果主单商品项的入仓箱数小于可装箱数,则取商品项数据
leftNum = Math.min(leftNum, this.mainOrderItem.num)
// 放入箱数
// this.$set(this.shopForm, 'num', leftNum)
// 默认给一个入仓记录
if(!this.shopForm.specsRecordVOList || !this.shopForm.specsRecordVOList.length){
this.addRow()
}
// this.calcAverg()
},*/
// 按比例计算体积重量的默认值
/*calcAverg(){
// 装箱比例
const rate = this.shopForm.num / this.mainOrderItem.num
// 放入个数,剩余个数是算不出来的,因为不知道已装数量,所以放入数量只能按照总数的比例计算
this.$set(this.shopForm, 'quantity', Math.ceil(this.mainOrderItem.quantity*rate|| 0 * rate))
// 数量,体积,重量等按照比例给默认值
this.$set(this.shopForm, 'volume', (this.mainOrderItem.volume * rate).toFixed(2))
this.$set(this.shopForm, 'chargeVolume', (this.mainOrderItem.chargeVolume * rate).toFixed(2))
this.$set(this.shopForm, 'weight', (this.mainOrderItem.weight * rate).toFixed(2))
this.$set(this.shopForm, 'chargeWeight', (this.mainOrderItem.chargeWeight * rate).toFixed(2))
this.$set(this.shopForm, 'worth', (this.mainOrderItem.worth * rate).toFixed(2))
},*/
/*async getSelectData(item) {
await quantityRequired(this.orderData.lineId).then((res) => {
if (res.data) {
this.isQuantity = true;
this.shopRules.putQuantity = [
{
required: true,
message: this.$t("请输入数量(个)"),
trigger: "change",
},
];
} else {
this.isQuantity = false;
delete this.shopRules.putQuantity;
}
});
},*/
shopAdd
()
{
this
.
$refs
[
"
shopForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
...
...
src/views/ecw/order/splitApply/components/PutIn.vue
0 → 100644
View file @
89474e23
<
template
>
<!-- 放入弹层 -->
<el-dialog
:title=
"$t('入仓记录放入确认')"
:visible=
"show"
:before-close=
"closeDialog"
:close-on-click-modal=
"false"
width=
"1500px"
:append-to-body=
"appendToBody"
>
<el-card>
<div
slot=
"header"
>
{{
$t
(
'
可拆出入仓记录
'
)
}}
</div>
<el-table
:data=
"[warehouseRecord]"
>
<el-table-column
:label=
"$t('箱数')"
prop=
"cartonsNum"
/>
<el-table-column
:label=
"$t('入仓类型')"
prop=
"specificationType"
>
<template
slot-scope=
"
{row}">
<dict-tag
:type=
"DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE"
:value=
"row.specificationType"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('包装类型')"
prop=
"unit"
>
<
template
slot-scope=
"{row}"
>
<dict-tag
:type=
"DICT_TYPE.ECW_PACKAGING_TYPE"
:value=
"row.unit"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('长')"
prop=
"boxGauge"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
boxGauge
.
split
(
'
*
'
)[
0
]
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('宽')"
prop=
"boxGauge"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
boxGauge
.
split
(
'
*
'
)[
1
]
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('高')"
prop=
"boxGauge"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
boxGauge
.
split
(
'
*
'
)[
2
]
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('体积') + '(m³)'"
prop=
"volume"
/>
<el-table-column
:label=
"$t('重量') + '(kg)'"
prop=
"weight"
/>
<el-table-column
:label=
"$t('数量(个)')"
prop=
"quantityAll"
/>
<el-table-column
:label=
"$t('入仓快递单号')"
prop=
"expressNo"
/>
-->
<el-table-column
:label=
"$t('首次入仓时间')"
prop=
"inTime"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
inTime
|
parseTime
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('储位')"
prop=
"orderLocationBackVOList"
>
<
template
slot-scope=
"{row}"
>
{{
getLocationName
(
row
.
orderLocationBackVOList
)
}}
</
template
>
</el-table-column>
</el-table>
</el-card>
<el-card
class=
"box-card mt-10"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{ $t('新入仓记录') }}
</span>
<el-button
style=
"float: right;margin-left: 15px"
size=
"mini"
type=
"primary"
icon=
"el-icon-minus"
circle
@
click=
"deleteRow"
:disabled=
"form.list.length <= 1"
></el-button>
<el-button
style=
"float: right"
size=
"mini"
type=
"primary"
icon=
"el-icon-plus"
circle
@
click=
"addRow"
></el-button>
</div>
<el-form
ref=
"form"
:model=
"form"
label-width=
"100px"
size=
"mini"
>
<el-table
:data=
"form.list"
style=
"width: 100%"
>
<el-table-column
:label=
"$t('箱数')"
width=
"200px"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
{{
$t
(
'
箱数
'
)
}}
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
class=
"flex"
label-width=
"0"
:prop=
"`list.$
{$index}.num`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-75 tight"
v-model=
"row.num"
:max=
"warehouseRecord.cartonsNum"
></el-input-number>
<dict-selector
class=
"w-75"
:type=
"DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE"
v-model=
"row.specificationType"
defaultable
></dict-selector>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('包装类型')"
width=
"100px"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
{{
$t
(
'
包装类型
'
)
}}
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<dict-selector
:type=
"DICT_TYPE.ECW_PACKAGING_TYPE"
v-model=
"row.unit"
defaultable
></dict-selector>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"长(cm)"
>
<
template
v-slot:header
>
<span>
{{
$t
(
'
长
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.boxGauge1"
@
blur=
"calcVolume(row)"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"宽(cm)"
>
<
template
v-slot:header
>
<span>
{{
$t
(
'
宽
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.boxGauge2"
@
blur=
"calcVolume(row)"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"高(cm)"
>
<
template
v-slot:header
>
<span>
{{
$t
(
'
高
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.boxGauge3"
@
blur=
"calcVolume(row)"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"入仓体积(m³)"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
体积
'
)
}}
</span>
(m³)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`list.$
{$index}.volume`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
:max=
"warehouseRecord.volume"
class=
"w-100 tight"
v-model=
"row.volume"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"收费体积(m³)"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
收费体积
'
)
}}
</span>
(m³)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`list.$
{$index}.chargeVolume`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.chargeVolume"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"入仓重量(Kg)"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
入仓重量
'
)
}}
</span>
(Kg)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`list.$
{$index}.weight`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
:max=
"warehouseRecord.weight"
class=
"w-75 tight"
v-model=
"row.weight"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"收费重量(Kg)"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
收费重量
'
)
}}
</span>
(Kg)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`list.$
{$index}.chargeWeight`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-75 tight"
v-model=
"row.chargeWeight"
type=
"number"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('数量')"
width=
"130px"
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`list.$
{$index}.quantity`"
:rules="{required: quantityshow, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
:max=
"warehouseRecord.quantityAll"
class=
"w-75 tight"
v-model.number=
"row.quantity"
/>
{{
$t
(
'
个
'
)
}}
</el-form-item>
</
template
>
</el-table-column>
<!--<el-table-column :label="$t('快递单号')">
<template v-slot="{row,$index}">
<el-form-item label-width="0">
<el-input v-model="row.expressNo"></el-input>
</el-form-item>
</template>
</el-table-column>-->
<el-table-column
:label=
"$t('储位')"
prop=
"orderLocationBackVOList"
>
<
template
v-slot=
"{ row, column, $index }"
>
<!--
<el-button
type=
"primary"
size=
"mini"
@
click=
"showLocation(row, $index)"
>
{{
$t
(
'
选择储位
'
)
}}
</el-button>
-->
<warehouse-area-select
v-model=
"row.orderLocationList"
:warehouse-id=
"warehouseId"
></warehouse-area-select>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
>
<
template
v-slot=
"{ row, column, $index}"
>
<el-popconfirm
v-if=
"$index > 0"
:title=
"$t('确定要删除该行入仓记录吗?')"
@
confirm=
"deleteRow($index)"
>
<template
v-slot:reference
>
<el-button
size=
"mini"
type=
"danger"
>
删除
</el-button>
</
template
>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<div
slot=
"footer"
>
<el-button
type=
"primary"
@
click=
"submit"
>
{{ $t('确定') }}
</el-button>
</div>
</el-dialog>
</template>
<
script
>
import
WarehouseAreaSelect
from
"
@/components/WarehouseAreaSelect/index.vue
"
;
import
{
parseTime
}
from
'
@/utils/ruoyi
'
import
Decimal
from
'
decimal.js
'
export
default
{
name
:
"
WarehouseRecord
"
,
filters
:{
parseTime
},
components
:
{
WarehouseAreaSelect
},
props
:{
warehouseRecord
:
Object
,
appendToBody
:
Boolean
,
// 仓库ID,选择储位要用到
warehouseId
:
Number
,
},
data
(){
return
{
show
:
false
,
// 拆出的入仓记录
form
:{
list
:[]
}
}
},
computed
:{
// 计算总拆出数据
splitTotal
(){
return
field
=>
{
let
total
=
new
Decimal
(
0
)
this
.
form
.
list
.
forEach
(
item
=>
{
total
=
total
.
plus
(
new
Decimal
(
item
[
field
]
||
0
))
})
return
total
.
toNumber
()
}
}
},
mounted
()
{
this
.
show
=
true
this
.
$nextTick
(
this
.
addRow
)
},
methods
:{
// 添加一行
addRow
(){
let
{
specificationType
,
boxGauge1
,
boxGauge2
,
boxGauge3
,
volume
,
weight
}
=
this
.
warehouseRecord
let
num
=
this
.
warehouseRecord
.
cartonsNum
// 根据入仓记录添加一行
this
.
form
.
list
.
push
({
specificationType
,
boxGauge1
,
boxGauge2
,
boxGauge3
,
volume
,
weight
,
num
,
orderLocationList
:
this
.
warehouseRecord
.
orderLocationBackVOList
})
},
// 删除一行,可选参数index表上行号,参数不是数字则删除最后一行
deleteRow
(
index
){
const
spliceIndex
=
typeof
index
!==
'
number
'
?
this
.
list
-
1
:
index
this
.
form
.
list
.
splice
(
spliceIndex
,
1
)
},
// 计算体积
calcVolume
(
row
){
let
volume
=
Decimal
(
row
.
boxGauge1
||
0
)
.
times
(
Decimal
(
row
.
boxGauge2
||
0
))
.
times
(
Decimal
(
row
.
boxGauge3
||
0
)).
div
(
1000000
)
// 如果是箱的单位要乘以箱数
if
(
row
.
specificationType
===
1
)
{
row
.
volume
=
volume
.
times
(
Decimal
(
row
.
num
||
0
))
}
// 最低0.01
volume
=
Math
.
max
(
0.01
,
volume
.
toNumber
().
toFixed
(
2
))
this
.
$set
(
row
,
'
volume
'
,
volume
)
this
.
$set
(
row
,
'
chargeVolume
'
,
volume
)
},
// 获取储位名称
getLocationName
(
locationArr
){
if
(
!
locationArr
||
!
locationArr
.
length
)
return
''
let
arr
=
[]
locationArr
.
forEach
(
item
=>
{
arr
.
push
(
`
${
item
.
areaName
}${
item
.
locationName
||
''
}
`
)
})
return
Array
.
from
(
new
Set
(
arr
)).
join
(
"
,
"
)
},
closeDialog
(){
this
.
show
=
false
this
.
$emit
(
'
close
'
);
},
submit
(){
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
!
valid
){
return
false
}
if
(
this
.
splitTotal
(
'
num
'
)
>
this
.
warehouseRecord
.
cartonsNum
){
return
this
.
$message
.
error
(
"
拆出箱数不能大于原入仓箱数
"
)
}
// 如果全拆(拆出箱数 == 原入仓箱数),则体积重量也需要全拆
if
(
this
.
splitTotal
(
'
num
'
)
===
this
.
warehouseRecord
.
cartonsNum
){
if
(
this
.
splitTotal
(
'
volume
'
)
!==
this
.
warehouseRecord
.
volume
){
return
this
.
$message
.
error
(
"
全拆拆出体积必须等于原入仓体积
"
)
}
if
(
this
.
splitTotal
(
'
weight
'
)
!==
this
.
warehouseRecord
.
weight
){
return
this
.
$message
.
error
(
"
全拆拆出体积必须等于原入仓体积
"
)
}
}
this
.
$emit
(
'
submit
'
,
this
.
form
.
list
)
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
src/views/ecw/order/splitApply/index.vue
View file @
89474e23
...
...
@@ -254,178 +254,129 @@
<el-option
v-for=
"item in orderData.orderItemVOList"
:label=
"item.prodTitleEn"
:value=
"item.orderItemId"
:key=
"item.prodTitleEn"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('选择入仓记录')"
>
<
!--<
el-form-item :label="$t('选择入仓记录')">
<el-select :placeholder="$t('选择入仓记录')" v-model="selectedWarehouseInId" clearable>
<el-option v-for="item in getOrderItemWarehouseIn(shopForm.orderItemId)" :label="item.text" :value="item.id" :key="item.id" ></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('
剩余
数据')"
>
<div>
{{$t('
剩余箱数')}}:{{ mainOrderItem
.num || 0 }}
</div>
</el-form-item>
-->
<el-form-item
:label=
"$t('
品名可拆
数据')"
>
<div>
{{$t('
箱数')}}:{{ leftData
.num || 0 }}
</div>
<div>
{{ $t('入仓方数') }}:{{
mainOrderItem
.volume || 0 }}m³
{{ $t('收费方数') }}:{{
mainOrderItem
.chargeVolume || 0 }}m³
{{ $t('入仓方数') }}:{{
leftData
.volume || 0 }}m³
{{ $t('收费方数') }}:{{
leftData
.chargeVolume || 0 }}m³
</div>
<div>
{{ $t('入仓重量') }}:{{
mainOrderItem
.weight || 0 }}kg
{{ $t('收费重量') }}:{{
mainOrderItem
.chargeWeight || 0 }}kg
{{ $t('入仓重量') }}:{{
leftData
.weight || 0 }}kg
{{ $t('收费重量') }}:{{
leftData
.chargeWeight || 0 }}kg
</div>
<div>
{{ $t('数量(个)') }}:{{
mainOrderItem
.quantity || 0 }}
{{ $t('剩余货值') }}:{{
mainOrderItem
.worth || 0 }}{{ $t('元') }}
{{ $t('数量(个)') }}:{{
leftData
.quantity || 0 }}
{{ $t('剩余货值') }}:{{
leftData
.worth || 0 }}{{ $t('元') }}
</div>
</el-form-item>
<el-card
class=
"box-card"
v-if=
"shopForm.specsRecordVOList"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{ $t('入仓记录') }}
</span>
<el-button
style=
"float: right;margin-left: 15px"
size=
"mini"
type=
"primary"
icon=
"el-icon-minus"
circle
@
click=
"deleteRow"
:disabled=
"shopForm.specsRecordVOList.length <= 1"
></el-button>
<el-button
style=
"float: right"
size=
"mini"
type=
"primary"
icon=
"el-icon-plus"
circle
@
click=
"addRow"
:disabled=
"!shopForm.orderItemId || !selectedWarehouseInId"
></el-button>
</div>
<!--<el-form ref="tableForm" :model="shopForm" size="mini">-->
<el-form-item
:label=
"$t('可拆入仓记录')"
>
<el-table
:data=
"
shopForm.specsRecordVOList
"
:data=
"
getOrderItemWarehouseIn(shopForm.orderItemId)
"
style=
"width: 100%"
>
<el-table-column
:label=
"$t('箱数')"
width=
"200px"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
{{
$t
(
'
箱数
'
)
}}
</
template
>
<el-table-column
:label=
"$t('箱数')"
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
class=
"flex"
label-width=
"0"
:prop=
"`specsRecordVOList.$
{$index}.num`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-75 tight"
v-model=
"row.num"
type=
"number"
></el-input-number>
<dict-selector
class=
"w-75"
:type=
"DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE"
v-model=
"row.specificationType"
defaultable
></dict-selector>
</el-form-item>
{{
row
.
cartonsNum
}}
<dict-tag
:type=
"DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE"
v-model=
"row.specificationType"
></dict-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('包装类型')"
width=
"100px"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
{{
$t
(
'
包装类型
'
)
}}
</
template
>
<el-table-column
:label=
"$t('包装类型')"
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<dict-selector
:type=
"DICT_TYPE.ECW_PACKAGING_TYPE"
v-model=
"row.unit"
defaultable
></dict-selector>
</el-form-item>
<dict-tag
:type=
"DICT_TYPE.ECW_PACKAGING_TYPE"
v-model=
"row.unit"
></dict-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"长(cm)"
>
<
template
v-slot:header
>
<span>
{{
$t
(
'
长
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.boxGauge1"
@
blur=
"calcVolume(row)"
/>
</el-form-item>
{{
row
.
boxGauge1
}}
</
template
>
</el-table-column>
<el-table-column
label=
"宽(cm)"
>
<
template
v-slot:header
>
<span>
{{
$t
(
'
宽
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.boxGauge2"
@
blur=
"calcVolume(row)"
/>
</el-form-item>
{{
row
.
boxGauge2
}}
</
template
>
</el-table-column>
<el-table-column
label=
"高(cm)"
>
<
template
v-slot:header
>
<span>
{{
$t
(
'
高
'
)
}}
</span>
(cm)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.boxGauge3"
@
blur=
"calcVolume(row)"
/>
</el-form-item>
{{
row
.
boxGauge3
}}
</
template
>
</el-table-column>
<el-table-column
label=
"入仓体积(m³)"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
体积
'
)
}}
</span>
(m³)
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`specsRecordVOList.$
{$index}.volume`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.volume"
/>
</el-form-item>
{{
row
.
volume
}}
</
template
>
</el-table-column>
<el-table-column
label=
"收费体积(m³)"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
收费体积
'
)
}}
</span>
(m³)
<el-table-column
label=
"入仓重量(Kg)"
prop=
"weight"
></el-table-column>
<el-table-column
:label=
"$t('数量')"
prop=
"quantity"
></el-table-column>
<el-table-column
:label=
"$t('快递单号')"
prop=
"expressNo"
></el-table-column>
<el-table-column
:label=
"$t('储位')"
prop=
"orderLocationBackVOList"
>
<
template
v-slot=
"{ row, column, $index }"
>
{{
row
.
orderLocationList
}}
</
template
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`specsRecordVOList.$
{$index}.chargeVolume`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-100 tight"
v-model=
"row.chargeVolume"
/>
</el-form-item>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
>
<
template
v-slot=
"{ row, column, $index}"
>
<el-button
size=
"mini"
type=
"primary"
@
click=
"putInRecord(row)"
>
放入
</el-button>
</
template
>
</el-table-column>
<el-table-column
label=
"入仓重量(Kg)"
>
<
template
v-slot:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
入仓重量
'
)
}}
</span>
(Kg)
</el-table>
</el-form-item>
<el-form-item
:label=
"$t('已放入入仓记录')"
>
<el-table
:data=
"shopForm.specsRecordVOList"
style=
"width: 100%"
>
<el-table-column
:label=
"$t('箱数')"
width=
"200px"
>
<
template
v-slot=
"{row,$index}"
>
{{
row
.
num
}}
<dict-tag
:type=
"DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE"
v-model=
"row.specificationType"
></dict-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('包装类型')"
width=
"100px"
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`specsRecordVOList.$
{$index}.weight`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-75 tight"
v-model=
"row.weight"
/>
</el-form-item>
<dict-tag
:type=
"DICT_TYPE.ECW_PACKAGING_TYPE"
v-model=
"row.unit"
></dict-tag>
</
template
>
</el-table-column>
<el-table-column
label=
"
收费重量(Kg
)"
>
<
template
v-slot
:header
>
<span
style=
"color: red"
>
*
</span>
<span>
{{
$t
(
'
收费重量
'
)
}}
</span>
(Kg)
<el-table-column
label=
"
长(cm
)"
>
<
template
v-slot
=
"{row,$index}"
>
{{
row
.
boxGauge1
}}
</
template
>
</el-table-column>
<el-table-column
label=
"宽(cm)"
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`specsRecordVOList.$
{$index}.chargeWeight`"
:rules="{required: true, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-75 tight"
v-model=
"row.chargeWeight"
type=
"number"
/>
</el-form-item>
{{
row
.
boxGauge2
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('数量')"
width=
"130px
"
>
<el-table-column
label=
"高(cm)
"
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
:prop=
"`specsRecordVOList.$
{$index}.quantity`"
:rules="{required: quantityshow, message: $t('不能为空'), trigger: 'blur'}">
<el-input-number
controls-position=
"right"
:min=
"0"
class=
"w-75 tight"
v-model.number=
"row.quantity"
/>
{{
$t
(
'
个
'
)
}}
</el-form-item>
{{
row
.
boxGauge3
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('快递单号'
)"
>
<el-table-column
label=
"入仓体积(m³
)"
>
<
template
v-slot=
"{row,$index}"
>
<el-form-item
label-width=
"0"
>
<el-input
v-model=
"row.expressNo"
></el-input>
</el-form-item>
{{
row
.
volume
}}
</
template
>
</el-table-column>
<el-table-column
label=
"收费体积(m³)"
prop=
"chargeVolume"
></el-table-column>
<el-table-column
label=
"入仓重量(Kg)"
prop=
"weight"
></el-table-column>
<el-table-column
label=
"收费重量(Kg)"
prop=
"chargeWeight"
></el-table-column>
<el-table-column
:label=
"$t('数量')"
width=
"130px"
prop=
"quantity"
></el-table-column>
<el-table-column
:label=
"$t('快递单号')"
prop=
"expressNo"
></el-table-column>
<el-table-column
:label=
"$t('储位')"
prop=
"orderLocationBackVOList"
>
<
template
v-slot=
"{ row, column, $index }"
>
<!--
<el-button
type=
"primary"
size=
"mini"
@
click=
"showLocation(row, $index)"
>
{{
$t
(
'
选择储位
'
)
}}
</el-button>
-->
<warehouse-area-select
v-model=
"row.orderLocationList"
:warehouse-id=
"currentWarehouseId"
></warehouse-area-select>
{{
getLocationName
(
row
.
orderLocationList
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
>
<
template
v-slot=
"{ row, column, $index}"
>
<el-popconfirm
v-if=
"$index > 0"
:title=
"$t('确定要删除该行入仓记录吗?')"
@
confirm=
"deleteRow($index)"
>
<template
v-slot:reference
>
<el-button
size=
"mini"
type=
"danger"
>
删除
</el-button>
</
template
>
</el-popconfirm>
<el-button
size=
"mini"
type=
"primary"
@
click=
"deleteRow($index)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!--</el-form>--
>
</el-card>
</el-form-item
>
<el-form-item
:label=
"$t('放入数据')"
>
<div>
{{$t('箱数')}}:{{ putin.num || 0 }}
</div>
<div>
...
...
@@ -451,7 +402,7 @@
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"shopAdd"
>
{{$t('确定')}}
</el-button>
<el-button
type=
"primary"
@
click=
"shopAdd"
:disabled=
"!shopForm.specsRecordVOList.length"
>
{{$t('确定')}}
</el-button>
<el-button
@
click=
"shopCancel"
>
{{$t('取消')}}
</el-button>
</div>
</el-dialog>
...
...
@@ -488,6 +439,13 @@
</el-dialog>
<warehouse-record
v-if=
"currentWarehouseRecord"
:list=
"currentWarehouseRecord"
></warehouse-record>
<put-in
v-if=
"currentPutIn"
:warehouse-record=
"currentPutIn"
@
close=
"currentPutIn=null"
@
submit=
"handlePutin"
:warehouse-id=
"currentWarehouseId"
></put-in>
</div>
</template>
...
...
@@ -511,6 +469,7 @@ import Decimal from 'decimal.js'
import
WarehouseAreaSelect
from
"
@/components/WarehouseAreaSelect
"
;
import
WarehouseDetail
from
"
@/views/ecw/order/components/WarehouseDetail
"
;
import
WarehouseRecord
from
"
@/views/ecw/order/splitApply/components/WarehouseRecord
"
;
import
PutIn
from
"
@/views/ecw/order/splitApply/components/PutIn.vue
"
;
export
default
{
name
:
"
SplitApply
"
,
...
...
@@ -518,7 +477,8 @@ export default {
WarehouseRecord
,
WarehouseDetail
,
WarehouseAreaSelect
,
WorkFlow
WorkFlow
,
PutIn
},
data
()
{
return
{
...
...
@@ -570,7 +530,9 @@ export default {
// 订单入仓记录
warehouseInList
:
[],
// 当前选择的入仓记录ID
selectedWarehouseInId
:
null
// selectedWarehouseInId: null,
// 当前正在放入的入仓记录
currentPutIn
:
null
};
},
async
created
()
{
...
...
@@ -586,9 +548,9 @@ export default {
console
.
log
(
"
拆单数据
"
,
this
.
splitData
,
this
.
splitData
.
length
)
if
(
this
.
orderData
.
inWarehouseState
!=
207
&&
this
.
splitData
.
length
){
// 2023-05-20确认不需要询问,直接重置
deleteAllSplit
(
this
.
queryParams
.
orderId
).
then
(
res
=>
{
/*
deleteAllSplit(this.queryParams.orderId).then(res => {
this.getList()
})
})
*/
/*this.$confirm(this.$t('已有拆单数据,是否要重置?')).then(res => {
return deleteAllSplit(this.queryParams.orderId)
}).then(res => {
...
...
@@ -603,32 +565,36 @@ export default {
})
},
watch
:
{
//监听table这个对象
tableData
:
{
// 立即监听
immediate
:
true
,
handler
()
{
this
.
$nextTick
(()
=>
{
const
tds
=
document
.
querySelectorAll
(
"
#table .el-table__footer-wrapper tr>td
"
);
// colSpan合并列
tds
[
1
].
colSpan
=
5
;
tds
[
1
].
style
.
textAlign
=
"
left
"
;
tds
[
2
].
style
.
display
=
"
none
"
;
tds
[
3
].
style
.
display
=
"
none
"
;
tds
[
4
].
style
.
display
=
"
none
"
;
tds
[
5
].
style
.
display
=
"
none
"
;
});
},
//监听table这个对象
tableData
:
{
// 立即监听
immediate
:
true
,
handler
()
{
this
.
$nextTick
(()
=>
{
const
tds
=
document
.
querySelectorAll
(
"
#table .el-table__footer-wrapper tr>td
"
);
// colSpan合并列
tds
[
1
].
colSpan
=
5
;
tds
[
1
].
style
.
textAlign
=
"
left
"
;
tds
[
2
].
style
.
display
=
"
none
"
;
tds
[
3
].
style
.
display
=
"
none
"
;
tds
[
4
].
style
.
display
=
"
none
"
;
tds
[
5
].
style
.
display
=
"
none
"
;
});
},
// 关闭放入弹层的时候清理弹层表单内容
shopOpen
(
show
){
if
(
!
show
){
this
.
shopForm
=
{}
}
}
},
// 关闭放入弹层的时候清理弹层表单内容
shopOpen
(
show
){
if
(
!
show
){
this
.
shopForm
=
{}
}
},
// 切换品名需要重置已放入的记录
'
shopForm.orderItemId
'
(){
this
.
shopForm
.
specsRecordVOList
=
[]
}
},
computed
:{
getDictData
(){
return
(
type
,
value
)
=>
getDictData
(
type
,
value
)
||
{}
...
...
@@ -646,17 +612,27 @@ export default {
if
(
!
this
.
orderItem
.
orderItemId
||
!
this
.
splitData
.
length
||
!
this
.
splitData
[
0
].
orderSplitItemBackVOList
)
return
{}
return
this
.
splitData
[
0
].
orderSplitItemBackVOList
.
find
(
item
=>
item
.
orderItemId
==
this
.
orderItem
.
orderItemId
)
||
{}
},
// 剩余数据
// 剩余
可拆数据,父订单的入仓数据 - 全部拆单的品名
数据
leftData
(){
if
(
!
this
.
shopForm
.
orderItemId
)
return
{}
let
data
=
{
num
:
new
Decimal
(
this
.
currentWarehouseItem
?.
num
||
0
),
volume
:
new
Decimal
(
this
.
currentWarehouseItem
?.
volume
||
0
),
// chargeVolume: new Decimal(this.currentWarehouseItem?.num || 0),
weight
:
new
Decimal
(
this
.
currentWarehouseItem
?.
weight
||
0
),
// chargeWeight: new Decimal(this.currentWarehouseItem?.num || 0),
quantity
:
new
Decimal
(
this
.
currentWarehouseItem
?.
quantity
||
0
)
num
:
new
Decimal
(
this
.
orderItem
.
warehouseInInfoVO
?.
cartonsNum
||
0
),
volume
:
new
Decimal
(
this
.
orderItem
.
warehouseInInfoVO
?.
volume
||
0
),
weight
:
new
Decimal
(
this
.
orderItem
.
warehouseInInfoVO
?.
weight
||
0
),
quantity
:
new
Decimal
(
this
.
orderItem
.
warehouseInInfoVO
?.
quantity
||
0
)
}
// TODO 对已拆记录进行累减
// 全部拆单的放入数据累减
this
.
splitData
.
forEach
(
split
=>
{
split
.
orderSplitItemBackVOList
.
forEach
(
splitItem
=>
{
if
(
splitItem
.
orderItemId
==
this
.
shopForm
.
orderItemId
){
data
.
num
=
data
.
num
.
minus
(
new
Decimal
(
splitItem
.
num
||
0
))
data
.
volume
=
data
.
volume
.
minus
(
new
Decimal
(
splitItem
.
volume
||
0
))
data
.
weight
=
data
.
weight
.
minus
(
new
Decimal
(
splitItem
.
weight
||
0
))
data
.
quantity
=
data
.
quantity
.
minus
(
new
Decimal
(
splitItem
.
quantity
||
0
))
}
})
})
return
data
},
// 放入数据
...
...
@@ -971,6 +947,13 @@ export default {
if
(
!
valid
)
{
return
;
}
if
(
!
this
.
shopForm
.
specsRecordVOList
.
length
){
return
this
.
$message
.
error
(
this
.
$t
(
"
请放入品名
"
));
}
// 放入数据不能大于可拆数据
if
(
this
.
putin
.
num
>
this
.
leftData
.
num
){
return
this
.
$message
.
error
(
this
.
$t
(
"
放入箱数不能大于可拆箱数
"
));
}
this
.
shopForm
.
specsRecordVOList
.
forEach
(
item
=>
{
item
.
boxGauge
=
`
${
item
.
boxGauge1
}
*
${
item
.
boxGauge2
}
*
${
item
.
boxGauge3
}
`
})
...
...
@@ -986,9 +969,10 @@ export default {
worth
:
this
.
shopForm
.
worth
,
specsRecordVOList
:
this
.
shopForm
.
specsRecordVOList
}
if
(
this
.
quantityshow
){
/*
if(this.quantityshow){
params.quantity = this.shopForm.quantity
}
}*/
createSplitItem
(
params
).
then
(
async
res
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
放入成功
"
));
await
this
.
getList
()
...
...
@@ -1032,7 +1016,7 @@ export default {
})
},
// 添加一行
addRow
(){
/*
addRow(){
if(!this.shopForm.specsRecordVOList){
this.$set(this.shopForm,'specsRecordVOList',[])
}
...
...
@@ -1046,7 +1030,7 @@ export default {
specificationType, boxGauge1, boxGauge2, boxGauge3, volume, weight,num,
orderLocationList: this.currentWarehouseItem.orderLocationBackVOList
})
},
},
*/
// 删除一行,可选参数index表上行号,参数不是数字则删除最后一行
deleteRow
(
index
){
const
spliceIndex
=
typeof
index
!==
'
number
'
?
this
.
shopForm
.
specsRecordVOList
.
length
-
1
:
index
...
...
@@ -1073,6 +1057,31 @@ export default {
return
this
.
$message
.
info
(
this
.
$t
(
'
暂无入仓记录
'
))
}
this
.
currentWarehouseRecord
=
row
.
specsRecordVOList
},
// 获取储位名称
getLocationName
(
locationArr
){
if
(
!
locationArr
||
!
locationArr
.
length
)
return
''
let
arr
=
[]
locationArr
.
forEach
(
item
=>
{
arr
.
push
(
`
${
item
.
areaName
}${
item
.
locationName
||
''
}
`
)
})
return
Array
.
from
(
new
Set
(
arr
)).
join
(
"
,
"
)
},
// 根据入仓记录打开放入弹层
putInRecord
(
row
){
this
.
currentPutIn
=
row
// 计算此条入仓记录已拆出的数据,这样在放入的时候可以确保不超过此入仓记录的数量
},
// 放入回调
handlePutin
(
list
){
if
(
!
list
.
length
){
return
this
.
$message
.
error
(
this
.
$t
(
"
请至少放入一条数据
"
))
}
list
.
forEach
(
item
=>
{
this
.
shopForm
.
specsRecordVOList
.
push
({...
item
})
})
this
.
currentPutIn
=
null
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment