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
902dbb56
Commit
902dbb56
authored
Oct 25, 2023
by
dragondean@qq.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
2757587f
4e8f4b8c
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
913 additions
and
149 deletions
+913
-149
boxSea.js
src/api/ecw/boxSea.js
+46
-0
dict.js
src/utils/dict.js
+1
-0
cusClearance.vue
src/views/ecw/box/shippingAir/nodePage/cusClearance.vue
+421
-125
supplementOrder.vue
...ecw/box/shippingAir/nodePage/mergePkg/supplementOrder.vue
+2
-2
index.vue
src/views/ecw/box/shippingAir/nodePage/tally/index.vue
+1
-1
startUnloading.vue
...ecw/box/shippingAir/nodePage/unloading/startUnloading.vue
+6
-6
seaProcess.vue
src/views/ecw/box/shippingAir/seaProcess.vue
+4
-0
utils.js
src/views/ecw/box/shippingAir/utils.js
+2
-2
CollectionWriteoff.vue
src/views/ecw/financial/components/CollectionWriteoff.vue
+62
-10
PackHistoryDetail.vue
src/views/ecw/order/components/PackHistoryDetail.vue
+69
-2
detail.vue
src/views/ecw/order/detail.vue
+11
-0
Warehouse.vue
src/views/ecw/order/warehousing/components/Warehouse.vue
+11
-1
WarehouseRecordDetail.vue
...cw/order/warehousing/components/WarehouseRecordDetail.vue
+138
-0
WarehouseRecordDetailItem.vue
...rder/warehousing/components/WarehouseRecordDetailItem.vue
+139
-0
No files found.
src/api/ecw/boxSea.js
View file @
902dbb56
...
...
@@ -834,6 +834,21 @@ export function batchUnload(data) {
});
}
/**
* 批量到仓
*
* @export
* @param {*} data
* @return {*}
*/
export
function
airBatchUnload
(
data
)
{
return
request
({
url
:
"
/ecw/box-load-info/airBatchUnload
"
,
method
:
"
post
"
,
data
,
});
}
/**
* 单个卸柜
*
...
...
@@ -849,6 +864,21 @@ export function singleUnload(data) {
});
}
/**
* 单个到仓
*
* @export
* @param {*} data
* @return {*}
*/
export
function
airSingleUnload
(
data
)
{
return
request
({
url
:
"
/ecw/box-load-info/airSingleUnload
"
,
method
:
"
post
"
,
data
,
});
}
/**
* 一键卸柜
*
...
...
@@ -864,6 +894,22 @@ export function allUnload(data) {
});
}
/**
* 一键到仓
*
* @export
* @param {*} data
* @return {*}
*/
export
function
airAllUnload
(
data
)
{
return
request
({
url
:
"
/ecw/box-load-info/airAllUnload
"
,
method
:
"
post
"
,
data
,
});
}
/**
* 异常
*
...
...
src/utils/dict.js
View file @
902dbb56
...
...
@@ -194,6 +194,7 @@ export const DICT_TYPE = {
APPLY_STATUS
:
'
apply_status
'
,
//特价申请审核状态
WAREHOUSING_SPECIFICATION_TYPE
:
'
warehousing_specification_type
'
,
ECW_AUTH_TYPE
:
'
auth_type
'
,
//品牌授权
OREER_ITEM_USAGE
:
'
order_item_usage
'
,
//用途
NEED_ORDER_INQUIRY
:
'
need_order_inquiry
'
,
// 是否需要単询
EXCEPTION_SELECT_FILED
:
'
exception_select_filed
'
,
...
...
src/views/ecw/box/shippingAir/nodePage/cusClearance.vue
View file @
902dbb56
<
template
>
<div>
<el-form
ref=
"cusClearanceForm"
:rules=
"rules"
:model=
"cusClearanceObj"
label-width=
"120px"
>
<el-form
ref=
"cusClearanceForm"
:rules=
"rules"
:model=
"cusClearanceObj"
label-width=
"160px"
>
<el-form-item
:label=
"$t('清关情况')"
prop=
"arriveType"
>
<el-radio-group
v-model=
"cusClearanceObj.clearanceType"
>
<el-radio
:label=
"0"
>
{{
$t
(
'
一次清关
'
)
}}
</el-radio>
<el-radio
:label=
"1"
>
{{
$t
(
'
多次清关
'
)
}}
</el-radio>
<el-radio
:label=
"0"
>
{{
$t
(
"
一次清关
"
)
}}
</el-radio>
<el-radio
:label=
"1"
>
{{
$t
(
"
多次清关
"
)
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('选择订单')"
prop=
"clearanceOrderIdList"
v-show=
"cusClearanceObj.clearanceType == 1"
>
<el-select
v-model=
"cusClearanceObj.clearanceOrderIdList"
multiple
filterable
clearable
reserve-keyword
:filter-method=
"filterOrder"
:placeholder=
"$t('请输入订单号、提单号、唛头')"
@
change=
"selectOrderId"
>
<el-option
v-for=
"item in statusOrderList"
:key=
"item.orderId"
:label=
"item.orderNo + ' ' + item.clear + ' ' + item.arrival"
:value=
"item.orderId"
>
</el-option>
</el-select>
<el-form-item
:label=
"$t('选择订单')"
prop=
"clearanceOrderIdList"
v-show=
"cusClearanceObj.clearanceType == 1"
>
<span
v-for=
"order in selectOrders"
:key=
"order.id"
>
{{
order
.
orderNo
}}
</span>
<el-button
type=
"primary"
@
click=
"orderdialogVisible = true"
>
{{
$t
(
"
订单列表
"
)
}}
</el-button>
</el-form-item>
<el-form-item
:label=
"$t('已清关订单')"
v-show=
"cusClearanceObj.clearanceType == 1"
>
<span
v-for=
"order in cusClearanceObj.clearanceOrderList"
:key=
"order.id"
>
{{
order
.
orderNo
}}
</span>
<el-form-item
:label=
"$t('已清关订单')"
v-show=
"cusClearanceObj.clearanceType == 1"
>
<span
v-for=
"order in cusClearanceObj.clearanceOrderList"
:key=
"order.id"
>
{{
order
.
orderNo
}}
</span>
</el-form-item>
<div
v-if=
"cusClearanceObj.clearanceOrderIdList.length > 0"
>
<el-form
ref=
"airArrivalForm"
:rules=
"airArrivalrules"
:model=
"airArrivalInfo"
label-width=
"120px"
>
<div>
<el-form
ref=
"airArrivalForm"
:rules=
"airArrivalrules"
:model=
"airArrivalInfo"
label-width=
"160px"
>
<el-form-item
:label=
"$t('实际二程起飞时间')"
prop=
"actSecondTime"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"airArrivalInfo.actSecondTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"airArrivalInfo.actSecondTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('预计到港时间')"
prop=
"estTime"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"airArrivalInfo.estTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"airArrivalInfo.estTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('实际到港时间')"
prop=
"actTime"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"airArrivalInfo.actTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"airArrivalInfo.actTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
</el-form>
</div>
<el-form-item
:label=
"$t('预计清关时间')"
prop=
"clEstTime"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"cusClearanceObj.clEstTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"cusClearanceObj.clEstTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('清关时间')"
prop=
"clClearTime"
>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"cusClearanceObj.clClearTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<p
class=
"message-area"
v-show=
"showMsg"
>
{{
$t
(
'
清关时间与预计时间不符,如有异常请登记
'
)
}}
</p>
<el-date-picker
type=
"datetime"
:placeholder=
"$t('请选择日期')"
v-model=
"cusClearanceObj.clClearTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<p
class=
"message-area"
v-show=
"showMsg"
>
{{
$t
(
"
清关时间与预计时间不符,如有异常请登记
"
)
}}
</p>
</el-form-item>
</el-form>
<el-row
class=
"operate-button"
>
<el-button
type=
"primary"
@
click=
"onSubmit(1)"
>
{{
$t
(
'
保存
'
)
}}
</el-button>
<el-button
type=
"success"
@
click=
"onSubmit(2)"
>
{{
$t
(
'
提交
'
)
}}
</el-button>
<el-button
@
click=
"cancel"
>
{{
$t
(
'
关闭
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"exceptionReg"
:disabled=
"!showMsg"
>
{{
$t
(
'
异常登记
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"onSubmit(1)"
>
{{
$t
(
"
保存
"
)
}}
</el-button>
<el-button
type=
"success"
@
click=
"onSubmit(2)"
>
{{
$t
(
"
提交
"
)
}}
</el-button>
<el-button
@
click=
"cancel"
>
{{
$t
(
"
关闭
"
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"exceptionReg"
:disabled=
"!showMsg"
>
{{
$t
(
"
异常登记
"
)
}}
</el-button>
</el-row>
<!-- 对话框 -->
<el-dialog
custom-class=
"shipping-dialog"
:title=
"$t('票异常')"
:visible.sync=
"dialogVisible"
width=
"700px"
:modal-append-to-body=
"false"
append-to-body
destroy-on-close
>
<el-dialog
custom-class=
"shipping-dialog"
:title=
"$t('票异常')"
:visible.sync=
"dialogVisible"
width=
"700px"
:modal-append-to-body=
"false"
append-to-body
destroy-on-close
>
<regError
@
closeDialog=
"dialogVisible = false"
v-bind=
"$attrs"
/>
</el-dialog>
<!-- 订单列表 -->
<el-dialog
:fullscreen=
"true"
:title=
"$t('选择订单')"
:visible.sync=
"orderdialogVisible"
:modal-append-to-body=
"false"
append-to-body
destroy-on-close
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"7"
>
{{
$t
(
"
关键字:
"
)
}}
<el-input
style=
"width: 300px"
v-model=
"orderKeyword"
:placeholder=
"$t('请输入订单号、提单号、唛头')"
/>
</el-col>
<el-col
:span=
"7"
>
{{
$t
(
"
到港状态
"
)
}}
<el-select
v-model=
"orderPortStatus"
>
<el-option
:value=
"0"
:label=
"$t('未到港')"
/>
<el-option
:value=
"1"
:label=
"$t('已到港')"
/>
</el-select>
</el-col>
<el-col
:span=
"7"
>
{{
$t
(
"
清关状态
"
)
}}
<el-select
v-model=
"orderCustomsClearanceStatus"
>
<el-option
:value=
"0"
:label=
"$t('未清关')"
/>
<el-option
:value=
"1"
:label=
"$t('已清关')"
/>
</el-select>
</el-col>
<el-col
:span=
"3"
>
<el-button
type=
"primary"
@
click=
"searchOrderList"
>
{{
$t
(
"
查询
"
)
}}
</el-button
>
</el-col>
</el-row>
<div
style=
"margin-top: 10px"
>
<el-button
type=
"primary"
@
click=
"multipleSelect"
>
{{
$t
(
"
批量选择
"
)
}}
</el-button>
</div>
<el-table
style=
"margin-top: 10px"
:data=
"statusOrderList"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
:label=
"$t('序号')"
type=
"index"
width=
"50"
>
</el-table-column>
<el-table-column
:label=
"$t('订单号')"
prop=
"orderNo"
/>
<el-table-column
:label=
"$t('唛头')"
prop=
"marks"
/>
<el-table-column
:label=
"$t('提单号')"
prop=
"tidanNo"
/>
<el-table-column
width=
"150"
:label=
"$t('总箱数/入仓箱数')"
prop=
""
/>
<el-table-column
:label=
"$t('体积/重量')"
prop=
""
/>
<el-table-column
:label=
"$t('清关状态')"
prop=
"clear"
/>
<el-table-column
:label=
"$t('到港状态')"
prop=
"arrival"
/>
<el-table-column
:label=
"$t('控货')"
prop=
""
/>
<el-table-column
:label=
"$t('订单状态')"
prop=
""
/>
<el-table-column
:label=
"$t('操作')"
>
<template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"primary"
@
click=
"selectOrder(scope.row)"
>
{{
$t
(
"
选择
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<
script
>
import
regError
from
'
../../regError
'
import
dayjs
from
'
dayjs
'
import
{
clearanceCreate
}
from
'
@/api/ecw/boxSea
'
import
{
shipmentOrderList
}
from
'
@/api/ecw/boxAir
'
import
{
formatDateStr
,
serviceMsg
,
formatDate
}
from
'
../utils
'
import
{
updateOrderArrival
}
from
'
@/api/ecw/boxAir
'
import
regError
from
"
../../regError
"
;
import
dayjs
from
"
dayjs
"
;
import
{
clearanceCreate
}
from
"
@/api/ecw/boxSea
"
;
import
{
shipmentOrderList
}
from
"
@/api/ecw/boxAir
"
;
import
{
formatDateStr
,
serviceMsg
,
formatDate
}
from
"
../utils
"
;
import
{
updateOrderArrival
}
from
"
@/api/ecw/boxAir
"
;
import
search
from
"
bpmn-js/lib/features/search
"
;
/**
* 清关
*/
export
default
{
name
:
'
cusClearance
'
,
name
:
"
cusClearance
"
,
inheritAttrs
:
false
,
components
:
{
regError
regError
,
},
data
()
{
return
{
...
...
@@ -76,188 +214,346 @@ export default {
cusClearanceObj
:
{},
// 校验
rules
:
{
clEstTime
:
[{
required
:
true
,
message
:
this
.
$t
(
'
必填
'
),
trigger
:
'
change
'
}],
clClearTime
:
[{
required
:
true
,
message
:
this
.
$t
(
'
必填
'
),
trigger
:
'
change
'
}]
clEstTime
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
必填
"
),
trigger
:
"
change
"
},
],
clClearTime
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
必填
"
),
trigger
:
"
change
"
},
],
},
airArrivalrules
:
{
actSecondTime
:
[{
required
:
true
,
message
:
this
.
$t
(
'
必填
'
),
trigger
:
'
change
'
}],
actTime
:
[{
required
:
true
,
message
:
this
.
$t
(
'
必填
'
),
trigger
:
'
change
'
}]
actSecondTime
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
必填
"
),
trigger
:
"
change
"
},
],
actTime
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
必填
"
),
trigger
:
"
change
"
},
],
},
// 弹窗配置
dialogVisible
:
false
,
// 提示消息
showMsg
:
false
,
orderList
:
[],
orderListFilter
:
[],
arrivalOrderList
:
[],
clearanceOrderList
:
[],
airArrivalInfo
:
{}
}
airArrivalInfo
:
{},
orderdialogVisible
:
false
,
selectOrders
:
[],
multipleSelectOrder
:
[],
orderKeyword
:
null
,
orderPortStatus
:
null
,
orderCustomsClearanceStatus
:
null
,
};
},
created
()
{
const
voName
=
this
.
$attrs
.
currNode
.
voName
let
oldData
=
{
...
this
.
$attrs
.
shipmentObj
[
voName
]
}
oldData
=
formatDateStr
(
oldData
,
[
'
clEstTime
'
])
oldData
=
formatDateStr
(
oldData
,
[
'
clClearTime
'
],
'
YYYY-MM-DD HH:mm:ss
'
)
this
.
cusClearanceObj
=
oldData
if
(
!
this
.
cusClearanceObj
.
clearanceType
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clearanceType
'
,
0
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clearanceOrderIdList
'
,
[])
if
(
typeof
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
?.
arrivalOrderList
!=
'
undefined
'
&&
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
)
this
.
arrivalOrderList
=
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
if
(
typeof
this
.
$attrs
.
shipmentObj
.
clearanceInfo
?.
clearanceOrderList
!=
'
undefined
'
&&
this
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
)
this
.
clearanceOrderList
=
this
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
const
voName
=
this
.
$attrs
.
currNode
.
voName
;
let
oldData
=
{
...
this
.
$attrs
.
shipmentObj
[
voName
]
};
oldData
=
formatDateStr
(
oldData
,
[
"
clEstTime
"
]);
oldData
=
formatDateStr
(
oldData
,
[
"
clClearTime
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
this
.
cusClearanceObj
=
oldData
;
if
(
!
this
.
cusClearanceObj
.
clearanceType
)
this
.
$set
(
this
.
cusClearanceObj
,
"
clearanceType
"
,
0
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clearanceOrderIdList
"
,
[]);
if
(
typeof
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
?.
arrivalOrderList
!=
"
undefined
"
&&
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
)
this
.
arrivalOrderList
=
this
.
$attrs
.
shipmentObj
.
airArrivalInfo
.
arrivalOrderList
;
if
(
typeof
this
.
$attrs
.
shipmentObj
.
clearanceInfo
?.
clearanceOrderList
!=
"
undefined
"
&&
this
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
)
this
.
clearanceOrderList
=
this
.
$attrs
.
shipmentObj
.
clearanceInfo
.
clearanceOrderList
;
shipmentOrderList
(
this
.
$attrs
.
shipmentObj
.
id
).
then
((
r
)
=>
{
this
.
orderList
=
r
.
data
this
.
orderListFilter
=
r
.
data
})
this
.
orderList
=
r
.
data
;
});
},
watch
:
{
// 预计清关时间
'
cusClearanceObj.clEstTime
'
(
val
)
{
this
.
compareDate
(
val
,
this
.
cusClearanceObj
.
clClearTime
)
"
cusClearanceObj.clEstTime
"
(
val
)
{
this
.
compareDate
(
val
,
this
.
cusClearanceObj
.
clClearTime
)
;
},
// 清关时间
'
cusClearanceObj.clClearTime
'
(
val
)
{
this
.
compareDate
(
this
.
cusClearanceObj
.
clEstTime
,
val
)
"
cusClearanceObj.clClearTime
"
(
val
)
{
this
.
compareDate
(
this
.
cusClearanceObj
.
clEstTime
,
val
)
;
},
'
cusClearanceObj.clearanceType
'
(
val
)
{
"
cusClearanceObj.clearanceType
"
(
val
)
{
if
(
val
==
1
)
{
this
.
$set
(
this
.
cusClearanceObj
,
'
clEstTime
'
,
null
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clClearTime
'
,
null
)
this
.
$set
(
this
.
cusClearanceObj
,
"
clEstTime
"
,
null
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clClearTime
"
,
null
);
}
else
{
let
oldData
=
{
...
this
.
$attrs
.
shipmentObj
[
this
.
$attrs
.
currNode
.
voName
]
}
oldData
=
formatDateStr
(
oldData
,
[
'
clEstTime
'
,
'
clClearTime
'
],
'
YYYY-MM-DD HH:mm:ss
'
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clClearTime
'
,
oldData
.
clClearTime
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clEstTime
'
,
oldData
.
clEstTime
)
}
let
oldData
=
{
...
this
.
$attrs
.
shipmentObj
[
this
.
$attrs
.
currNode
.
voName
],
};
oldData
=
formatDateStr
(
oldData
,
[
"
clEstTime
"
,
"
clClearTime
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clClearTime
"
,
oldData
.
clClearTime
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clEstTime
"
,
oldData
.
clEstTime
);
}
},
},
computed
:
{
statusOrderList
()
{
let
data
=
[]
this
.
orderList
Filter
.
forEach
((
item
)
=>
{
let
data
=
[]
;
this
.
orderList
.
forEach
((
item
)
=>
{
let
json
=
{
orderId
:
item
.
orderId
,
orderNo
:
item
.
orderNo
,
tidanNo
:
item
.
tidanNo
,
marks
:
item
.
marks
}
let
clearindex
=
this
.
cusClearanceObj
.
clearanceOrderList
?
this
.
cusClearanceObj
.
clearanceOrderList
.
findIndex
((
p
)
=>
p
.
orderId
==
item
.
orderId
)
:
-
1
marks
:
item
.
marks
,
};
let
clearindex
=
this
.
cusClearanceObj
.
clearanceOrderList
?
this
.
cusClearanceObj
.
clearanceOrderList
.
findIndex
(
(
p
)
=>
p
.
orderId
==
item
.
orderId
)
:
-
1
;
if
(
clearindex
!=
-
1
)
{
json
.
clear
=
this
.
$t
(
'
已清关
'
)
json
.
clear
=
this
.
$t
(
"
已清关
"
);
json
.
clearValue
=
1
;
}
else
{
json
.
clear
=
this
.
$t
(
'
未清关
'
)
json
.
clear
=
this
.
$t
(
"
未清关
"
);
json
.
clearValue
=
0
;
}
let
arrivalindex
=
this
.
arrivalOrderList
?
this
.
arrivalOrderList
.
findIndex
((
p
)
=>
p
.
orderId
==
item
.
orderId
)
:
-
1
let
arrivalindex
=
this
.
arrivalOrderList
?
this
.
arrivalOrderList
.
findIndex
((
p
)
=>
p
.
orderId
==
item
.
orderId
)
:
-
1
;
if
(
arrivalindex
!=
-
1
)
{
json
.
arrival
=
this
.
$t
(
'
已到港
'
)
json
.
arrival
=
this
.
$t
(
"
已到港
"
);
json
.
arrivalValue
=
1
;
}
else
{
json
.
arrival
=
this
.
$t
(
'
未到港
'
)
}
data
.
push
(
json
)
})
return
data
json
.
arrival
=
this
.
$t
(
"
未到港
"
);
json
.
arrivalValue
=
0
;
}
data
.
push
(
json
);
});
return
data
;
},
},
methods
:
{
formatDate
,
filterOrder
(
val
)
{
if
(
val
!=
''
)
{
this
.
orderListFilter
=
this
.
orderList
.
filter
((
item
)
=>
{
return
item
.
orderNo
&&
item
.
orderNo
.
indexOf
(
val
)
>
-
1
||
item
.
tidanNo
&&
item
.
tidanNo
.
indexOf
(
val
)
>
-
1
||
item
.
marks
&&
item
.
marks
.
indexOf
(
val
)
>
-
1
})
}
else
{
this
.
orderListFilter
=
this
.
orderList
searchOrderList
()
{
if
(
this
.
orderKeyword
&&
this
.
orderKeyword
!=
""
)
{
this
.
statusOrderList
=
this
.
statusOrderList
.
filter
((
item
)
=>
{
return
(
(
item
.
orderNo
&&
item
.
orderNo
.
indexOf
(
this
.
orderKeyword
)
>
-
1
)
||
(
item
.
tidanNo
&&
item
.
tidanNo
.
indexOf
(
this
.
orderKeyword
)
>
-
1
)
||
(
item
.
marks
&&
item
.
marks
.
indexOf
(
this
.
orderKeyword
)
>
-
1
)
);
});
}
if
(
this
.
orderPortStatus
!=
null
)
{
this
.
statusOrderList
=
this
.
statusOrderList
.
filter
((
item
)
=>
{
return
item
.
arrivalValue
==
this
.
orderPortStatus
;
});
}
if
(
this
.
orderCustomsClearanceStatus
!=
null
)
{
console
.
log
(
this
.
statusOrderList
,
"
333
"
,
this
.
orderCustomsClearanceStatus
);
this
.
statusOrderList
=
this
.
statusOrderList
.
filter
((
item
)
=>
{
return
item
.
clearValue
==
this
.
orderCustomsClearanceStatus
;
});
}
console
.
log
(
this
.
statusOrderList
,
"
222
"
);
},
selectOrderId
(
val
)
{
if
(
val
.
length
==
1
)
{
let
arr
=
this
.
arrivalOrderList
.
find
((
item
)
=>
item
.
orderId
==
val
[
0
])
let
arr
=
this
.
arrivalOrderList
.
find
((
item
)
=>
item
.
orderId
==
val
[
0
])
;
if
(
arr
)
{
this
.
$set
(
this
.
airArrivalInfo
,
'
actSecondTime
'
,
formatDate
(
arr
.
actSecondTime
))
this
.
$set
(
this
.
airArrivalInfo
,
'
estTime
'
,
formatDate
(
arr
.
estTime
))
this
.
$set
(
this
.
airArrivalInfo
,
'
actTime
'
,
formatDate
(
arr
.
actTime
))
this
.
$set
(
this
.
airArrivalInfo
,
"
actSecondTime
"
,
formatDate
(
arr
.
actSecondTime
)
);
this
.
$set
(
this
.
airArrivalInfo
,
"
estTime
"
,
formatDate
(
arr
.
estTime
));
this
.
$set
(
this
.
airArrivalInfo
,
"
actTime
"
,
formatDate
(
arr
.
actTime
));
}
let
clear
=
this
.
clearanceOrderList
.
find
((
item
)
=>
item
.
orderId
==
val
[
0
])
if
(
clear
){
this
.
$set
(
this
.
cusClearanceObj
,
'
clEstTime
'
,
formatDate
(
clear
.
clEstTime
))
this
.
$set
(
this
.
cusClearanceObj
,
'
clClearTime
'
,
formatDate
(
clear
.
clClearTime
))
let
clear
=
this
.
clearanceOrderList
.
find
(
(
item
)
=>
item
.
orderId
==
val
[
0
]
);
if
(
clear
)
{
this
.
$set
(
this
.
cusClearanceObj
,
"
clEstTime
"
,
formatDate
(
clear
.
clEstTime
)
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clClearTime
"
,
formatDate
(
clear
.
clClearTime
)
);
}
}
else
{
this
.
$set
(
this
.
airArrivalInfo
,
'
actSecondTime
'
,
null
)
this
.
$set
(
this
.
airArrivalInfo
,
'
estTime
'
,
null
)
this
.
$set
(
this
.
airArrivalInfo
,
'
actTime
'
,
null
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clEstTime
'
,
null
)
this
.
$set
(
this
.
cusClearanceObj
,
'
clClearTime
'
,
null
)
this
.
$set
(
this
.
airArrivalInfo
,
"
actSecondTime
"
,
null
);
this
.
$set
(
this
.
airArrivalInfo
,
"
estTime
"
,
null
);
this
.
$set
(
this
.
airArrivalInfo
,
"
actTime
"
,
null
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clEstTime
"
,
null
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clClearTime
"
,
null
);
}
},
selectOrder
(
val
)
{
this
.
selectOrders
=
[];
this
.
selectOrders
.
push
(
val
);
let
arr
=
this
.
arrivalOrderList
.
find
(
(
item
)
=>
item
.
orderId
==
val
.
orderId
);
if
(
arr
)
{
this
.
$set
(
this
.
airArrivalInfo
,
"
actSecondTime
"
,
formatDate
(
arr
.
actSecondTime
)
);
this
.
$set
(
this
.
airArrivalInfo
,
"
estTime
"
,
formatDate
(
arr
.
estTime
));
this
.
$set
(
this
.
airArrivalInfo
,
"
actTime
"
,
formatDate
(
arr
.
actTime
));
}
let
clear
=
this
.
clearanceOrderList
.
find
(
(
item
)
=>
item
.
orderId
==
val
.
orderId
);
console
.
log
(
clear
,
111
);
if
(
clear
)
{
this
.
$set
(
this
.
cusClearanceObj
,
"
clEstTime
"
,
formatDate
(
clear
.
clEstTime
)
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clClearTime
"
,
formatDate
(
clear
.
clClearTime
)
);
}
this
.
orderdialogVisible
=
false
;
},
handleSelectionChange
(
val
)
{
this
.
multipleSelectOrder
=
val
;
},
multipleSelect
()
{
if
(
this
.
multipleSelectOrder
.
length
==
0
)
{
this
.
$message
.
error
(
this
.
$t
(
"
请先选择订单
"
));
return
;
}
this
.
selectOrders
=
[];
this
.
selectOrders
=
this
.
multipleSelectOrder
;
if
(
this
.
multipleSelectOrder
.
length
==
1
)
{
let
arr
=
this
.
arrivalOrderList
.
find
(
(
item
)
=>
item
.
orderId
==
this
.
multipleSelectOrder
[
0
].
orderId
);
if
(
arr
)
{
this
.
$set
(
this
.
airArrivalInfo
,
"
actSecondTime
"
,
formatDate
(
arr
.
actSecondTime
)
);
this
.
$set
(
this
.
airArrivalInfo
,
"
estTime
"
,
formatDate
(
arr
.
estTime
));
this
.
$set
(
this
.
airArrivalInfo
,
"
actTime
"
,
formatDate
(
arr
.
actTime
));
}
let
clear
=
this
.
clearanceOrderList
.
find
(
(
item
)
=>
item
.
orderId
==
this
.
multipleSelectOrder
[
0
].
orderId
);
if
(
clear
)
{
this
.
$set
(
this
.
cusClearanceObj
,
"
clEstTime
"
,
formatDate
(
clear
.
clEstTime
)
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clClearTime
"
,
formatDate
(
clear
.
clClearTime
)
);
}
}
else
{
this
.
$set
(
this
.
airArrivalInfo
,
"
actSecondTime
"
,
null
);
this
.
$set
(
this
.
airArrivalInfo
,
"
estTime
"
,
null
);
this
.
$set
(
this
.
airArrivalInfo
,
"
actTime
"
,
null
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clEstTime
"
,
null
);
this
.
$set
(
this
.
cusClearanceObj
,
"
clClearTime
"
,
null
);
}
this
.
orderdialogVisible
=
false
;
},
getClAgent
(
type
)
{
const
agentId
=
this
.
$attrs
.
shipmentObj
.
agentInfo
.
agentId
if
(
type
===
'
label
'
)
{
const
selected
=
this
.
$attrs
.
allSupplier
.
find
((
item
)
=>
item
.
id
===
agentId
)
return
this
.
$l
(
selected
,
'
company
'
)
??
agentId
const
agentId
=
this
.
$attrs
.
shipmentObj
.
agentInfo
.
agentId
;
if
(
type
===
"
label
"
)
{
const
selected
=
this
.
$attrs
.
allSupplier
.
find
(
(
item
)
=>
item
.
id
===
agentId
);
return
this
.
$l
(
selected
,
"
company
"
)
??
agentId
;
}
return
agentId
return
agentId
;
},
// 时间比较
compareDate
(
clEstTime
,
clClearTime
)
{
this
.
showMsg
=
false
this
.
showMsg
=
false
;
let
date1
=
null
,
date2
=
null
if
(
clEstTime
)
date1
=
dayjs
(
clEstTime
)
if
(
clClearTime
)
date2
=
dayjs
(
clClearTime
)
date2
=
null
;
if
(
clEstTime
)
date1
=
dayjs
(
clEstTime
)
;
if
(
clClearTime
)
date2
=
dayjs
(
clClearTime
)
;
if
(
date1
&&
date2
&&
!
date2
.
isSame
(
date1
))
{
this
.
showMsg
=
true
this
.
showMsg
=
true
;
}
},
// 异常登记
exceptionReg
()
{
this
.
dialogVisible
=
true
this
.
dialogVisible
=
true
;
},
/** 提交 */
onSubmit
(
operateType
)
{
this
.
$refs
[
'
cusClearanceForm
'
].
validate
((
valid
)
=>
{
this
.
$refs
[
"
cusClearanceForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
this
.
cusClearanceObj
.
clearanceType
==
1
&&
this
.
cusClearanceObj
.
clearanceOrderIdList
.
length
>
0
)
{
this
.
$refs
[
'
airArrivalForm
'
].
validate
((
arrvalid
)
=>
{
if
(
this
.
cusClearanceObj
.
clearanceType
==
1
&&
this
.
cusClearanceObj
.
clearanceOrderIdList
.
length
>
0
)
{
this
.
$refs
[
"
airArrivalForm
"
].
validate
((
arrvalid
)
=>
{
if
(
arrvalid
)
{
updateOrderArrival
({
...
this
.
airArrivalInfo
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
orderIdList
:
this
.
cusClearanceObj
.
clearanceOrderIdList
orderIdList
:
this
.
cusClearanceObj
.
clearanceOrderIdList
,
}).
then
(()
=>
{
clearanceCreate
({
...
this
.
cusClearanceObj
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
clAgentId
:
this
.
getClAgent
(),
operateType
operateType
,
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
(()
=>
{
this
.
cancel
(
'
submit
'
)
})
})
})
this
.
cancel
(
"
submit
"
);
})
;
})
;
})
;
}
})
})
;
}
else
{
clearanceCreate
({
...
this
.
cusClearanceObj
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
clAgentId
:
this
.
getClAgent
(),
operateType
operateType
,
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
(()
=>
{
this
.
cancel
(
'
submit
'
)
})
})
this
.
cancel
(
"
submit
"
);
})
;
})
;
}
}
})
})
;
},
/** 取消 */
cancel
(
type
)
{
this
.
$emit
(
'
closeDialog
'
,
type
)
}
}
}
this
.
$emit
(
"
closeDialog
"
,
type
);
}
,
}
,
}
;
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/ecw/box/shippingAir/nodePage/mergePkg/supplementOrder.vue
View file @
902dbb56
...
...
@@ -87,7 +87,7 @@
</div>
<div>
{{$t('入仓时间')}}:{{formatDate(item.rucangTime)}}
</div>
<div>
<el-button
v-if=
"
toBePreList.sectionGoodList&&
item.airShipment==4"
type=
"text"
@
click=
"handleGoods('all', item)"
>
[{{$t('全部分拣')}}]
</el-button>
<el-button
v-if=
"item.airShipment==4"
type=
"text"
@
click=
"handleGoods('all', item)"
>
[{{$t('全部分拣')}}]
</el-button>
<el-button
type=
"text"
@
click=
"foldTable(index, item)"
>
[{{item.fold ? $t('展开') : $t('收起')}}]
</el-button>
</div>
</el-row>
...
...
@@ -123,7 +123,7 @@
width="120">{{ $t('无返回') }}</el-table-column> -->
<el-table-column
:label=
"$t('操作')"
align=
"center"
class-name=
"small-padding fixed-width"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<el-button
v-if=
"
toBePreList.sectionGoodList&&
item.airShipment==4"
type=
"text"
size=
"small"
@
click=
"handleGoods('singele',scope.row)"
>
{{
$t
(
'
分拣
'
)
}}
</el-button>
<el-button
v-if=
"item.airShipment==4"
type=
"text"
size=
"small"
@
click=
"handleGoods('singele',scope.row)"
>
{{
$t
(
'
分拣
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
src/views/ecw/box/shippingAir/nodePage/tally/index.vue
View file @
902dbb56
...
...
@@ -190,7 +190,7 @@ export default {
list
.
push
({
...
oItem
,
warehouseInInfo
,
multiSpecification
:
i
tem
.
multiSpecification
,
multiSpecification
:
oI
tem
.
multiSpecification
,
positionNo
:
oItem
.
positionNo
,
tallyStatus
:
item
.
tallyStatus
,
tallyTime
:
item
.
tallyTime
,
...
...
src/views/ecw/box/shippingAir/nodePage/unloading/startUnloading.vue
View file @
902dbb56
...
...
@@ -151,12 +151,12 @@
import
unloadingError
from
"
./unloadingError.vue
"
;
import
{
loadGoodsList
,
b
atchUnload
,
allUnload
,
airB
atchUnload
,
a
irA
llUnload
,
approvalCreate
,
approvalCancel
,
getSectionList
,
s
ingleUnload
,
airS
ingleUnload
,
boxGoodsDetail
}
from
"
@/api/ecw/boxSea
"
;
import
{
serviceMsg
,
getTotlContent
,
toReviewDetail
}
from
"
../../utils
"
;
...
...
@@ -254,7 +254,7 @@ export default {
this
.
$message
.
error
(
this
.
$t
(
"
请输入箱号标签
"
));
return
;
}
s
ingleUnload
({
airS
ingleUnload
({
orderNumCode
:
this
.
labelNo
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
}).
then
((
res
)
=>
{
...
...
@@ -274,7 +274,7 @@ export default {
this
.
$message
.
error
(
this
.
$t
(
"
请选择到仓时间
"
));
return
;
}
b
atchUnload
({
airB
atchUnload
({
orderNo
:
this
.
labelNo
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
unloadTime
:
this
.
ulWarehouseTime
...
...
@@ -295,7 +295,7 @@ export default {
type
:
"
warning
"
,
})
.
then
((
_
)
=>
{
allUnload
({
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
unloadTime
:
this
.
ulWarehouseTime
}).
then
((
res
)
=>
{
a
irA
llUnload
({
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
,
unloadTime
:
this
.
ulWarehouseTime
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
((
res
)
=>
{
this
.
getLoadGoodsList
();
});
...
...
src/views/ecw/box/shippingAir/seaProcess.vue
View file @
902dbb56
...
...
@@ -184,6 +184,10 @@ export default {
case
"
cusDeclaration
"
:
this
.
$set
(
this
.
dialogConfig
,
"
width
"
,
"
700px
"
);
break
;
// 清关
case
"
cusClearance
"
:
this
.
$set
(
this
.
dialogConfig
,
"
width
"
,
"
700px
"
);
break
;
// AGENT
case
"
agent
"
:
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
代理商设置
"
));
...
...
src/views/ecw/box/shippingAir/utils.js
View file @
902dbb56
...
...
@@ -297,8 +297,8 @@ function airBaseData() {
keyName
:
"
toWarehouseStatus
"
,
status
:
{
start
:
[
181
],
wait
:
[
182
,
183
,
184
,
185
],
end
:
[
186
],
wait
:
[
182
,
183
,
184
],
end
:
[
18
5
,
18
6
],
},
},
],
...
...
src/views/ecw/financial/components/CollectionWriteoff.vue
View file @
902dbb56
<
template
>
<div>
<div
class=
"app-container"
>
<el-descriptions
:column=
"
5"
>
<el-descriptions
:column=
"
4"
border
>
<el-descriptions-item
:label=
"$t('收款单编号')"
>
{{
form
.
receiptNo
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('客户')"
>
{{
form
.
customerName
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('创建时间')"
>
...
...
@@ -14,11 +14,8 @@
<
div
v
-
for
=
"
itemAmount in collectionAmount
"
:
key
=
"
itemAmount.currencyNameZh
"
>
{{
$i18n
.
locale
==
'
zh_CN
'
?
itemAmount
.
currencyNameZh
:
itemAmount
.
currencyNameEn
}}
:
{{
itemAmount
.
amount
}}
<
/div
>
<
/template
>
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
v
-
if
=
"
reason
"
:
label
=
"
$t('申请理由')
"
>
{{
reason
}}
<
/el-descriptions-item
>
<
/el-descriptions
>
<
/div
>
<
el
-
descriptions
:
column
=
"
3
"
border
>
<
el
-
descriptions
-
item
>
<
template
slot
=
"
label
"
>
{{
$t
(
'
实收已核销总金额
'
)
}}
...
...
@@ -29,7 +26,7 @@
<
/template
>
<
div
v
-
else
>
<
div
v
-
for
=
"
(amount, currency) in writeOffTotal
"
:
key
=
"
currency
"
>
{{
amount
}}
{{
getCurrencyLabel
(
currency
)
}}
{{
getCurrencyLabel
(
currency
)
}}
:
{{
amount
}}
<
/div
>
<
/div
>
<
/el-descriptions-item
>
...
...
@@ -49,8 +46,56 @@
<
/template
>
{{
WriteOffProportion
}}
%
<
/el-descriptions-item
>
<
el
-
descriptions
-
item
v
-
if
=
"
reason
"
:
label
=
"
$t('申请理由')
"
>
{{
reason
}}
<
/el-descriptions-item
>
<
/el-descriptions
>
<
/div
>
<
div
style
=
"
margin: 20px 0;font-size:16px
"
v
-
if
=
"
form.financeRemark
"
>
{{
$t
(
'
备注
'
)
}}
:{{
form
.
financeRemark
}}
<
/div
>
<
el
-
card
class
=
"
card
"
>
<
div
slot
=
"
header
"
class
=
"
card-title
"
>
{{
$t
(
'
应收明细
'
)
}}
<
/div
>
<
el
-
table
:
data
=
"
list
"
border
>
<
el
-
table
-
column
:
label
=
"
$t('订单号')
"
align
=
"
center
"
prop
=
"
orderNo
"
/>
<
el
-
table
-
column
:
label
=
"
$t('提单号')
"
align
=
"
center
"
prop
=
"
tidanNo
"
/>
<
el
-
table
-
column
:
label
=
"
$t('唛头')
"
align
=
"
center
"
prop
=
"
marks
"
/>
<
el
-
table
-
column
:
label
=
"
$t('品名')
"
align
=
"
center
"
prop
=
"
title
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
v
-
if
=
"
scope.row.feeType!=5
"
>
{{
scope
.
row
.
titleZh
?(
scope
.
row
.
titleZh
+
"
(
"
+
scope
.
row
.
titleEn
+
"
)
"
):
''
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('箱数')
"
align
=
"
center
"
prop
=
"
num
"
/>
<
el
-
table
-
column
:
label
=
"
$t('体积/重量')
"
align
=
"
center
"
prop
=
"
weight
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
v
-
if
=
"
scope.row.feeType!=5
"
>
{{
scope
.
row
.
volume
+
"
/
"
+
scope
.
row
.
weight
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('收入类型')
"
align
=
"
center
"
prop
=
"
feeType
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
dict
-
tag
:
type
=
"
DICT_TYPE.FEE_TYPE
"
:
value
=
"
scope.row.feeType
"
><
/dict-tag
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('单价金额')
"
align
=
"
center
"
prop
=
"
unitPrice
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
>
{{
scope
.
row
.
unitPrice
}}
<
/span
>
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('总金额')
"
align
=
"
center
"
prop
=
"
totalAmount
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
>
{{
scope
.
row
.
totalAmount
}}
<
/span
>
{{
getCurrencyLabel
(
scope
.
row
.
currencyId
)
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
:
label
=
"
$t('优惠金额')
"
align
=
"
center
"
>
<
template
slot
-
scope
=
"
scope
"
>
{{
scope
.
row
.
discountTotal
?
`${scope.row.discountTotal
}
(${scope.row.discountRemark
}
)`
:
0
}}
<
/template
>
<
/el-table-column
>
<
/el-table
>
<
/el-card
>
<
div
class
=
"
btn
"
>
<
el
-
button
size
=
"
mini
"
...
...
@@ -245,12 +290,19 @@ export default {
}
.
app
-
container
{
::
v
-
deep
.
el
-
descriptions
-
item__label
{
font
-
size
:
1
6
px
;
font
-
weight
:
600
;
font
-
size
:
1
4
px
;
//
font-weight:600;
}
::
v
-
deep
.
el
-
descriptions
-
item__content
{
font
-
size
:
16
px
;
font
-
weight
:
600
;
font
-
size
:
14
px
;
// font-weight:600;
}
}
.
card
{
margin
-
top
:
20
px
;
}
.
card
-
title
{
font
-
size
:
18
px
;
font
-
weight
:
bold
;
}
<
/style
>
src/views/ecw/order/components/PackHistoryDetail.vue
View file @
902dbb56
<
template
>
<div>
<!-- 订单获取入仓记录 -->
<el-dialog
:title=
"title"
visible
:before-close=
"closeDialog"
:close-on-click-modal=
"false"
width=
"1200px"
>
<el-card
style=
"margin-bottom:10px"
>
...
...
@@ -15,6 +16,14 @@
<el-descriptions-item
:label=
"$t('数量')"
>
{{orderItem.warehouseInInfoVO ? orderItem.warehouseInInfoVO.quantityAll : orderItem.quantity}}{{$t('个')}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('备货状态')"
>
{{airShipmentData[info.airShipment]}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('商品特性')"
>
{{productAttr}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('用途')"
>
<div
v-if=
"orderItem.usageIds"
>
<div
v-for=
"(item,index) in row.usageIds.split(',')"
>
<dict-tag
:type=
"DICT_TYPE.OREER_ITEM_USAGE"
:value=
"item"
/>
<span
v-if=
"(index+1)!=row.usageIds.split(',').length"
>
,
</span>
</div>
</div>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card
style=
"margin-bottom:10px"
>
...
...
@@ -23,7 +32,12 @@
</div>
<el-table
v-if=
"orderWarehouseInContent"
:data=
"orderWarehouseInContent"
>
<el-table-column
type=
"index"
:label=
"$t('序号')"
/>
<el-table-column
:label=
"$t('箱数')"
prop=
"cartonsNum"
/>
<el-table-column
:label=
"$t('箱数')"
prop=
"cartonsNum"
>
<
template
slot-scope=
"{row}"
>
<span>
{{
row
.
cartonsNum
}}
</span>
<!--
<el-button
type=
"primary"
@
click=
"seeBox(row)"
>
(
{{
$t
(
'
混箱
'
)
}}
)
</el-button>
-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入仓类型')"
prop=
"cartonsNum"
>
<
template
slot-scope=
"{row}"
>
<dict-tag
:type=
"DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE"
:value=
"row.specificationType"
/>
...
...
@@ -61,6 +75,11 @@
{{
getLocationName
(
row
.
orderLocationBackVOList
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入仓影像')"
prop=
"orderLocationBackVOList"
>
<
template
slot-scope=
"{row}"
>
<el-button
type=
"primary"
@
click=
"seeMv(row.pictureUrls)"
>
{{
$t
(
'
查看
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
</el-card>
<el-card
style=
"margin-bottom:10px"
>
...
...
@@ -107,6 +126,11 @@
{{
getLocationName
(
row
.
orderLocationBackVOList
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入仓影像')"
prop=
"orderLocationBackVOList"
>
<
template
slot-scope=
"{row}"
>
<el-button
type=
"primary"
@
click=
"seeMv(row.pictureUrls)"
>
{{
$t
(
'
查看
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
</el-card>
<el-card
style=
"margin-bottom:10px"
>
...
...
@@ -120,7 +144,20 @@
</el-descriptions>
</el-card>
<el-button
type=
"primary"
@
click=
"closeDialog"
>
{{$t('关闭窗口')}}
</el-button>
</el-dialog>
<el-dialog
:title=
"$t('入仓影像')"
:visible=
"mvShow"
:before-close=
"closeMv"
:close-on-click-modal=
"false"
width=
"600px"
>
<div
style=
"display:flex;flex-wrap:wrap"
>
<div
v-for=
"(item, index) in pictureUrls"
:index=
"index"
:key=
"index"
style=
"width:80px;height:80px"
>
<image
v-if=
"item.type === 'image'"
:src=
"item.url"
mode=
"scaleToFill"
style=
"height: 100%"
@
tap=
"previewImage(item.url)"
/>
<video
v-else-if=
"item.type === 'video'"
:id=
"`video_${index}`"
style=
"width: 100%;height: 100%"
:src=
"item.url"
@
play=
"playVideo(index)"
@
tap=
"playVideo(index)"
@
fullscreenchange=
"fullscreenchange"
></video>
</div>
</div>
<div
v-if=
"pictureUrls.length==0"
>
<span>
{{$t('暂无影像')}}
</span>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
getOrder
,
getOrderWarehouseIn
}
from
'
@/api/ecw/order
'
...
...
@@ -149,7 +186,9 @@ export default {
volume
:
0
,
weight
:
0
,
quantityAll
:
0
}
},
pictureUrls
:[],
mvShow
:
false
}
},
computed
:{
...
...
@@ -225,6 +264,34 @@ export default {
}
})
},
seeMv
(
list
){
this
.
mvShow
=
true
if
(
list
){
this
.
pictureUrls
=
list
.
map
(
e
=>
{
return
{
url
:
e
,
type
:
this
.
isImageFile
(
e
)
?
'
image
'
:
'
video
'
,
}
})
}
},
isImageFile
(
filename
)
{
var
imageExtensions
=
[
"
.jpeg
"
,
"
.jpg
"
,
"
.png
"
,
"
.gif
"
,
"
.bmp
"
,
"
.tiff
"
];
var
extension
=
""
;
var
length
=
filename
.
length
;
for
(
var
i
=
length
-
1
;
i
>=
0
;
i
--
)
{
if
(
filename
[
i
]
===
"
.
"
)
{
extension
=
filename
.
slice
(
i
).
toLowerCase
();
break
;
}
}
return
imageExtensions
.
indexOf
(
extension
)
!==
-
1
;
},
closeMv
(){
this
.
mvShow
=
false
}
}
}
</
script
>
...
...
src/views/ecw/order/detail.vue
View file @
902dbb56
...
...
@@ -264,6 +264,17 @@
<dict-tag
:type=
"DICT_TYPE.ECW_PAY_ADVANCE"
:value=
"row.isPayAdvance"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
""
:label=
"$t('用途')"
>
<
template
slot-scope=
"{row}"
>
<div
v-if=
"row.usageIds"
>
<div
v-for=
"(item,index) in row.usageIds.split(',')"
>
<dict-tag
:type=
"DICT_TYPE.OREER_ITEM_USAGE"
:value=
"item"
/>
<span
v-if=
"(index+1)!=row.usageIds.split(',').length"
>
,
</span>
</div>
</div>
<div
v-else
></div>
</
template
>
</el-table-column>
<el-table-column
prop=
""
:label=
"$t('成交单价')"
width=
"220px"
>
<
template
slot-scope=
"{row}"
>
...
...
src/views/ecw/order/warehousing/components/Warehouse.vue
View file @
902dbb56
...
...
@@ -4,7 +4,7 @@
<el-dialog
:title=
"title + ' - ' + warehousing.orderNo"
:visible.sync=
"visible"
width=
"1
280px
"
width=
"1
00%
"
>
<el-tabs
v-model=
"activeName"
type=
"card"
>
<el-tab-pane
:label=
"edit ? $t('货物修改') : $t('货物入仓')"
name=
"first"
>
...
...
@@ -185,8 +185,16 @@
:is-editing=
"edit"
></warehouse-area-select>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('备注')"
>
<
template
v-slot=
"{r,c,$index}"
>
<el-form-item>
<el-input
v-model=
"form.table[$index].remark"
type=
"textarea"
show-word-limit
maxlength=
"100"
placeholder=
""
></el-input>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
>
<
template
v-slot=
"{ row, column, $index}"
>
<WarehouseRecordDetail
v-model=
"form.table[$index].orderWarehouseInDetailsVOList"
/>
<el-popconfirm
v-if=
"$index >= protectRowCount"
title=
"确定要删除该行入仓记录吗?"
...
...
@@ -505,11 +513,13 @@ import {getProductAttrList} from "@/api/ecw/productAttr"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
addProduct
}
from
"
@/api/ecw/product
"
import
ImageAndVideoUpload
from
"
@/components/ImageAndVideoUpload/index.vue
"
import
WarehouseRecordDetail
from
"
@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue
"
export
default
{
name
:
"
Warehouse
"
,
components
:
{
WarehouseRecordDetail
,
ImageAndVideoUpload
,
ProductSelector
,
WarehouseAreaSelect
,
...
...
src/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue
0 → 100644
View file @
902dbb56
<
template
>
<div
style=
"display: inline-block"
>
<el-button
size=
"mini"
type=
"primary"
style=
"margin-right: 10px"
@
click=
"handleOpen"
>
{{
title
}}
</el-button>
<el-dialog
append-to-body
:title=
"title"
:visible.sync=
"dialogVisible"
width=
"1024px"
:before-close=
"handleClose"
>
<el-form>
<WarehouseRecordDetailItem
v-for=
"(item, index) in dataList"
:key=
"index"
v-model=
"dataList[index]"
:index=
"index"
:attr-list=
"attrList"
/>
</el-form>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleAddItem"
>
添加一条明细
</el-button>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSave"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
import
ProductSelector
from
"
@/components/ProductSelector/index.vue
"
;
import
WarehouseRecordDetailItem
from
"
@/views/ecw/order/warehousing/components/WarehouseRecordDetailItem.vue
"
;
import
{
getProductAttrList
}
from
"
@/api/ecw/productAttr
"
;
/**
* 入仓明细弹窗
*/
export
default
{
name
:
'
WarehouseRecordDetail
'
,
components
:
{
WarehouseRecordDetailItem
,
ProductSelector
},
props
:
{
value
:
{
type
:
Array
,
default
:
()
=>
[]
},
readOnly
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
dialogVisible
:
false
,
dataList
:
[],
// 特性列表
attrList
:
[]
};
},
mounted
()
{
this
.
getAttrList
()
},
methods
:
{
init
()
{
if
(
!
this
.
value
||
this
.
value
.
length
===
0
)
{
this
.
dataList
=
[{
"
boxGauge
"
:
""
,
"
boxGauge1
"
:
""
,
"
boxGauge2
"
:
""
,
"
boxGauge3
"
:
""
,
"
brand
"
:
undefined
,
"
cartonsNum
"
:
undefined
,
"
createTime
"
:
""
,
"
expressNo
"
:
""
,
"
prodAttrIds
"
:
[],
"
prodId
"
:
undefined
,
"
quantityAll
"
:
undefined
,
"
specificationType
"
:
undefined
,
"
unit
"
:
""
,
"
usageIds
"
:
""
,
"
volume
"
:
undefined
,
"
weight
"
:
undefined
}]
}
else
{
this
.
dataList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
value
))
}
},
/** 获取产品属性列表 */
getAttrList
()
{
getProductAttrList
().
then
(
response
=>
{
this
.
attrList
=
response
.
data
;
})
},
handleAddItem
()
{
this
.
dataList
.
push
({
"
boxGauge
"
:
""
,
"
boxGauge1
"
:
""
,
"
boxGauge2
"
:
""
,
"
boxGauge3
"
:
""
,
"
brand
"
:
undefined
,
"
cartonsNum
"
:
undefined
,
"
createTime
"
:
""
,
"
expressNo
"
:
""
,
"
prodAttrIds
"
:
[],
"
prodId
"
:
undefined
,
"
quantityAll
"
:
undefined
,
"
specificationType
"
:
undefined
,
"
unit
"
:
""
,
"
usageIds
"
:
""
,
"
volume
"
:
undefined
,
"
weight
"
:
undefined
})
},
handleOpen
()
{
this
.
init
()
this
.
dialogVisible
=
true
},
handleClose
(
done
)
{
this
.
$confirm
(
'
确认关闭?
'
)
.
then
(
_
=>
{
done
();
})
.
catch
(
_
=>
{});
},
handleSave
()
{
this
.
$emit
(
'
input
'
,
this
.
dataList
)
}
},
computed
:
{
title
()
{
return
!
this
.
value
||
this
.
value
.
length
===
0
?
'
添加箱明细
'
:
'
编辑箱明细
'
}
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
</
style
>
src/views/ecw/order/warehousing/components/WarehouseRecordDetailItem.vue
0 → 100644
View file @
902dbb56
<
template
>
<el-card
style=
"margin-bottom: 10px"
>
<div
slot=
"header"
>
<span>
序号
{{
index
+
1
}}
</span>
</div>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文品名')"
>
<product-selector
v-if=
"!readOnly"
v-model=
"value.prodId"
determined
protect-once
/>
<span
v-else
>
{{
value
.
prodTitleZh
}}
</span>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('品牌')"
>
<el-select
v-model=
"value.brand"
:placeholder=
"$t('可修改')"
filterable
remote
@
change=
"handleBrandChange"
:remote-method=
"getProductBrandPage"
clearable
>
<el-option
v-for=
"item in brandList"
:key=
"item.id"
:label=
"item.titleZh"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('商品特性')"
>
<el-checkbox-group
v-model=
"value.prodAttrIds"
>
<el-checkbox
v-for=
"item in attrList"
:key=
"item.id"
:label=
"item.id"
>
{{
item
.
attrName
}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('用途')"
>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('长')"
>
<el-input
v-model=
"value.boxGauge1"
/>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('宽')"
>
<el-input
v-model=
"value.boxGauge2"
/>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('高')"
>
<el-input
v-model=
"value.boxGauge3"
/>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('重量')"
>
<el-input
v-model=
"value.weight"
/>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('体积')"
>
<el-input
v-model=
"value.volume"
/>
</el-form-item>
</el-col>
</el-row>
</el-card>
</
template
>
<
script
>
import
ProductSelector
from
"
@/components/ProductSelector/index.vue
"
;
import
{
getProductBrankPage
}
from
"
@/api/ecw/productBrank
"
;
import
{
getProductAttrList
}
from
"
@/api/ecw/productAttr
"
;
// import {getFeeTypeByOrderProduct} from "@/api/ecw/productBrank";
export
default
{
name
:
"
WarehouseRecordDetailItem
"
,
components
:
{
ProductSelector
},
props
:
{
value
:
{
type
:
Object
,
default
:
()
=>
{}
},
index
:
{
type
:
Number
,
default
:
0
},
readOnly
:
{
type
:
Boolean
,
default
:
false
},
// 特性列表
attrList
:
{
type
:
Array
,
default
:
()
=>
[]
}
},
data
()
{
return
{
brandList
:
[],
}
},
methods
:
{
/** 获取产品属性列表 */
getAttrList
()
{
getProductAttrList
().
then
(
response
=>
{
this
.
attrList
=
response
.
data
;
})
},
handleBrandChange
(
v
){
// getFeeTypeByOrderProduct({
// brandId: parseInt(v),
// productId: this.warehousing.prodId,
// orderId: this.orderId
// }).then(r => {
// if(r.code === 0){
// (this.activeName === "first" ? this.form : this.form1).feeType = parseInt(r.data.feeType);
// (this.activeName === "first" ? this.form : this.form1).recordMode = parseInt(r.data.recordMode)
// }
// })
},
getProductBrandPage
(
titleZh
=
undefined
)
{
getProductBrankPage
({
pageSize
:
20
,
titleZh
}).
then
(
r
=>
{
this
.
brandList
=
r
.
data
.
list
})
},
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
</
style
>
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