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
91ce4ad4
Commit
91ce4ad4
authored
Dec 19, 2023
by
我在何方
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release' of
http://gitlab.jdshangmen.com/jiedao-app/jiedao-app-operator
into release
parents
e13f3da6
340c62b0
Changes
32
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
614 additions
and
251 deletions
+614
-251
box.js
src/api/ecw/box.js
+20
-0
boxAir.js
src/api/ecw/boxAir.js
+12
-0
product.js
src/api/ecw/product.js
+9
-0
index.vue
src/components/ImageUpload/index.vue
+3
-3
index.vue
src/components/ProductsSelector/index.vue
+51
-34
index.vue
src/components/WarehouseAreaSelect/index.vue
+1
-1
en_US.json
src/i18n/languages/en_US.json
+1
-1
index.vue
src/views/ecw/bannerPop/index.vue
+5
-3
indexAir.vue
src/views/ecw/box/indexAir.vue
+11
-3
index.vue
src/views/ecw/box/ladingBill/index.vue
+2
-2
makeLadingBill.vue
src/views/ecw/box/ladingBill/makeLadingBill.vue
+1
-1
previewBill.vue
src/views/ecw/box/ladingBill/previewBill.vue
+18
-3
query.vue
src/views/ecw/box/query.vue
+1
-0
queryAir.vue
src/views/ecw/box/queryAir.vue
+32
-7
regError.vue
src/views/ecw/box/regError.vue
+3
-3
index.vue
src/views/ecw/box/shippingAir/nodePage/mergePkg/index.vue
+3
-3
supplementOrder.vue
...ecw/box/shippingAir/nodePage/mergePkg/supplementOrder.vue
+16
-1
subMaterial.vue
src/views/ecw/box/shippingAir/nodePage/subMaterial.vue
+1
-1
index.vue
src/views/ecw/box/shippingAir/nodePage/tally/index.vue
+148
-5
supplementOrder.vue
.../ecw/box/shippingSea/nodePage/cabinet/supplementOrder.vue
+16
-1
addPotentialCustom.vue
src/views/ecw/customer/addPotentialCustom.vue
+159
-134
index.vue
src/views/ecw/customer/index.vue
+21
-2
index.vue
src/views/ecw/customerConfirm/index.vue
+15
-15
myAchievement.vue
src/views/ecw/deptTarget/myAchievement.vue
+15
-8
myDeptAchievement.vue
src/views/ecw/deptTarget/myDeptAchievement.vue
+15
-7
detail.vue
src/views/ecw/order/detail.vue
+3
-0
edit.vue
src/views/ecw/order/edit.vue
+2
-2
index.vue
src/views/ecw/order/index.vue
+1
-1
penddingList.vue
src/views/ecw/order/penddingList.vue
+1
-1
index.vue
src/views/ecw/order/stocking/index.vue
+16
-6
index.vue
src/views/ecw/productPrice/index.vue
+7
-1
index.vue
src/views/ecw/region/index.vue
+5
-2
No files found.
src/api/ecw/box.js
View file @
91ce4ad4
...
...
@@ -328,6 +328,18 @@ export function downloadLoadGoodsList(params) {
});
}
/**
* 下载空运已装单
*/
export
function
downloadLoadGoods
(
params
)
{
return
request
({
url
:
"
/ecw/box-preload-goods/downloadAirLoadGoodsList
"
,
method
:
"
get
"
,
timeout
:
120000
,
params
,
})
}
// 下载预装单
export
function
downloadPreloadGoodsList
(
params
)
{
return
request
({
...
...
@@ -410,3 +422,11 @@ export function exportSettlementExcel(params) {
params
,
});
}
// 刷新空运提单
export
function
updateAirBill
(
id
)
{
return
request
({
url
:
"
/shipment/make-bill-of-lading/updateAirBill?ids=
"
+
id
,
method
:
"
get
"
});
}
src/api/ecw/boxAir.js
View file @
91ce4ad4
...
...
@@ -390,4 +390,16 @@ export function getLineInfo(params) {
method
:
"
get
"
,
params
});
}
/**
* 下载空运已装单
*/
export
function
downloadLoadGoods
(
params
)
{
return
request
({
url
:
"
/ecw/box-preload-goods/downloadAirLoadGoodsList
"
,
method
:
"
get
"
,
timeout
:
120000
,
params
,
})
}
\ No newline at end of file
src/api/ecw/product.js
View file @
91ce4ad4
...
...
@@ -59,6 +59,15 @@ export function getProductList(params) {
})
}
// 返回简洁的商品列表
export
function
getSimpleProductList
(
params
)
{
return
request
({
url
:
'
/ecw/product/simpleList
'
,
method
:
'
get
'
,
params
})
}
// 获得产品分页
export
function
getProductPage
(
query
)
{
return
request
({
...
...
src/components/ImageUpload/index.vue
View file @
91ce4ad4
...
...
@@ -207,9 +207,9 @@ export default {
},
// 预览
handlePictureCardPreview
(
file
)
{
//
this.dialogImageUrl = file.url;
//
this.dialogVisible = true;
window
.
open
(
file
.
url
)
this
.
dialogImageUrl
=
file
.
url
;
this
.
dialogVisible
=
true
;
//
window.open(file.url)
},
// 对象转成指定字符串分隔
listToString
(
list
,
separator
)
{
...
...
src/components/ProductsSelector/index.vue
View file @
91ce4ad4
...
...
@@ -12,39 +12,39 @@
<el-input
v-model=
"queryParams.titleZh"
:placeholder=
"$t('产品关键字')"
style=
"width:120px"
clearable
:disabled=
"loading"
/>
<el-button
type=
"primary"
@
click=
"reLoad"
:loading=
"loading"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<div
v-if=
"showAll"
>
<el-checkbox
:label=
"$t('全选') + `($
{total > 500 ? $t('最多500') : $t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading">
</el-checkbox>
<el-checkbox
:label=
"$t('全选库内商品(共
{cnt}个)', {cnt: allTotal})" v-model="isAllProduct" :disabled="loading">
</el-checkbox>
<el-checkbox
v-if=
"showFiltered && enableFiltered"
:label=
"$t('根据商品搜索结果(共
{cnt}个)', {cnt: total})" v-model="isAllFiltered" :disabled="loading">
</el-checkbox>
<div>
<el-checkbox
:label=
"$t('全选') + `($
{$t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading">
</el-checkbox>
</div>
</div>
<div
class=
"list"
>
<div
class=
"item"
v-for=
"item in
l
ist"
:key=
"item.id"
>
<div
class=
"item"
v-for=
"item in
currentL
ist"
:key=
"item.id"
>
<el-checkbox
@
change=
"toggleCheck(item, $event)"
:value=
"ids.indexOf(item.id) > -1"
:disabled=
"isAllProduct"
/>
{{
item
.
titleZh
}}
<div>
{{
item
.
titleEn
}}
</div>
</div>
</div>
<el-pagination
:total=
"list.length"
:page-sizes=
"[100, 200, 300, 500]"
:page-size=
"pageSize"
@
current-change=
"leftPage = $event"
layout=
"prev, pager, next, total, sizes"
:current-page=
"leftPage"
/>
</el-card>
</div>
<div
class=
"flex-1 ml-10"
>
<el-card
style=
"height:100%"
>
<div
slot=
"header"
class=
"header flex"
>
<div
class=
"flex-1 flex items-center"
>
{{
$t
(
'
已选{cnt
}
个产品
'
,
{
cnt
:
isAllProduct
||
isAllFiltered
?
total
:
choosedList
.
length
}
)
}}
<
/div
>
<div
class=
"flex-1 flex items-center"
>
{{
$t
(
'
已选{cnt
}
个产品
'
,
{
cnt
:
choosedList
.
length
}
)
}}
<
/div
>
<
el
-
button
:
disabled
=
"
!choosedList.length
"
type
=
"
text
"
@
click
=
"
clearAll
"
>
{{
$t
(
'
全部清除
'
)
}}
<
/el-button
>
<
/div
>
<
div
class
=
"
list
"
>
<
div
class
=
"
item
"
v
-
for
=
"
(choosed) in
choos
edList
"
:
key
=
"
choosed.id
"
:
data
-
data
=
"
JSON.stringify(choosed)
"
>
<
div
class
=
"
item
"
v
-
for
=
"
(choosed) in
select
edList
"
:
key
=
"
choosed.id
"
:
data
-
data
=
"
JSON.stringify(choosed)
"
>
<
el
-
link
class
=
"
el-icon-delete
"
@
click
=
"
remove(choosed)
"
:
disabled
=
"
isAllProduct
"
/>
{{
choosed
.
titleZh
}}
<
div
>
{{
choosed
.
titleEn
}}
<
/div
>
<
/div
>
<
/div
>
<
el
-
pagination
:
total
=
"
choosedList.length
"
:
page
-
sizes
=
"
[100, 200, 300, 500]
"
:
page
-
size
=
"
pageSize
"
@
current
-
change
=
"
rightPage = $event
"
layout
=
"
prev, pager, next, total, sizes
"
:
current
-
page
=
"
rightPage
"
/>
<
/el-card
>
<
/div
>
<
/div
>
<
/template
>
<
script
>
import
{
getProductPage
,
getProductList
,
getProductIds
}
from
'
@/api/ecw/product
'
import
{
getProductPage
,
getProductList
,
getProductIds
,
getSimpleProductList
}
from
'
@/api/ecw/product
'
import
{
getProductTypeList
}
from
'
@/api/ecw/productType
'
import
{
getProductAttrList
}
from
'
@/api/ecw/productAttr
'
...
...
@@ -67,11 +67,10 @@ export default {
list
:
[],
page
:
1
,
pages
:
1
,
total
:
0
,
// 当前筛选条件的商品总数
allTotal
:
0
,
// 全库商品总数
queryParams
:
{
pageNo
:
1
,
pageSize
:
5
00
,
pageSize
:
100
00
,
attrId
:
null
,
titleZh
:
null
,
typeId
:
null
...
...
@@ -80,12 +79,21 @@ export default {
typeList
:
[],
attrList
:
[],
isAllProduct
:
false
,
isAllFiltered
:
false
,
// 是否全部搜索结果
//
isAllFiltered: false, // 是否全部搜索结果
// 是否显示搜索结果勾选,有筛选条件才显示
showFiltered
:
false
showFiltered
:
false
,
// 左侧页码
leftPage
:
1
,
// 右侧页码
rightPage
:
1
,
// 页大小
pageSize
:
100
}
}
,
computed
:
{
total
(){
return
this
.
list
.
length
}
,
ids
:
{
get
()
{
let
arr
=
[]
...
...
@@ -97,6 +105,14 @@ export default {
set
(
v
)
{
}
}
,
// 左侧当前显示的列表
currentList
(){
return
this
.
list
.
slice
((
this
.
leftPage
-
1
)
*
this
.
pageSize
,
this
.
leftPage
*
this
.
pageSize
)
}
,
// 已勾选的显示列表
selectedList
(){
return
this
.
choosedList
.
slice
((
this
.
rightPage
-
1
)
*
this
.
pageSize
,
this
.
rightPage
*
this
.
pageSize
)
}
}
,
watch
:
{
...
...
@@ -108,11 +124,11 @@ export default {
this
.
choosedList
=
[]
this
.
$emit
(
'
setall
'
,
isAllProduct
)
}
,
isAllFiltered
(
isAllFiltered
){
/*
isAllFiltered(isAllFiltered){
this.choosedList = []
this.isAllProduct = false
this.$emit('setFiltered', isAllFiltered)
}
,
}
,
*/
defaultIds
(
newValue
,
oldValue
){
if
(
!
oldValue
||
!
oldValue
.
length
){
this
.
loadDefaultProds
()
...
...
@@ -122,27 +138,28 @@ export default {
this
.
isAllProduct
=
isall
}
}
,
created
()
{
async
created
()
{
getProductTypeList
().
then
(
res
=>
this
.
typeList
=
res
.
data
)
getProductAttrList
().
then
(
res
=>
this
.
attrList
=
res
.
data
)
this
.
reLoad
()
await
this
.
reLoad
()
this
.
ids
=
this
.
defaultIds
//数据回显
this
.
isAllProduct
=
this
.
isall
// 如果有默认商品则获取内容供回显
if
(
this
.
defaultIds
.
length
){
this
.
loadDefaultProds
()
this
.
setDefaultChooseProds
()
//this.loadDefaultProds()
}
// 获取全库商品总数
getProductPage
({
pageNo
:
1
,
pageSize
:
1
}
).
then
(
res
=>
{
/*
getProductPage({pageNo: 1, pageSize: 1
}
).then(res => {
this.allTotal = res.data.total
}
)
}
)
*/
}
,
methods
:
{
/* setAllProduct(status){
this.isAllProduct = true
}
, */
loadDefaultProds
(){
/*
loadDefaultProds(){
if(!this.defaultIds || !this.defaultIds.length){
return false
}
...
...
@@ -151,16 +168,24 @@ export default {
this.choose(item)
}
)
}
)
}
,*/
// 设置默认选中的商品
setDefaultChooseProds
(){
this
.
list
.
forEach
(
item
=>
{
if
(
this
.
defaultIds
.
indexOf
(
item
.
id
)
>
-
1
){
this
.
choose
(
item
)
}
}
)
}
,
toggleAll
(
status
){
this
.
list
.
forEach
(
item
=>
{
this
.
toggleCheck
(
item
,
status
)
}
)
}
,
reLoad
()
{
async
reLoad
()
{
this
.
queryParams
.
page
=
1
this
.
list
=
[]
this
.
getList
()
await
this
.
getList
()
}
,
loadNextPage
()
{
if
(
this
.
page
>=
this
.
pages
)
{
...
...
@@ -169,19 +194,11 @@ export default {
this
.
queryParams
.
page
++
this
.
getList
()
}
,
getList
()
{
async
getList
()
{
this
.
loading
=
true
getProductPage
(
this
.
queryParams
).
then
(
res
=>
{
this
.
list
=
res
.
data
.
list
//.concat(res.data.list || [])
this
.
page
=
res
.
data
.
page
this
.
pages
=
res
.
data
.
pages
this
.
total
=
res
.
data
.
total
// 必须在搜索之后才显示勾选,这个时候才有数量
this
.
showFiltered
=
!!
this
.
queryParams
.
attrId
||
!!
this
.
queryParams
.
titleZh
||
!!
this
.
queryParams
.
typeId
}
).
finally
(()
=>
{
this
.
loading
=
false
}
)
let
res
=
await
getSimpleProductList
(
this
.
queryParams
)
this
.
loading
=
false
this
.
list
=
res
.
data
}
,
// 获得指定条件的商品的全部ID
getFilteredIds
(){
...
...
src/components/WarehouseAreaSelect/index.vue
View file @
91ce4ad4
...
...
@@ -191,7 +191,7 @@ export default {
this
.
$emit
(
'
input
'
,
data
)
this
.
dialogVisible
=
false
if
(
this
.
isEditing
||
this
.
warehouseInId
)
{
if
(
(
this
.
isEditing
||
this
.
warehouseInId
)
&&
this
.
warehouseInId
)
{
updateWarehouseInLocation
({
"
orderId
"
:
this
.
orderId
,
"
orderItemId
"
:
this
.
orderItemId
,
...
...
src/i18n/languages/en_US.json
View file @
91ce4ad4
...
...
@@ -3832,7 +3832,7 @@
"流程详情"
:
"Flow details"
,
"收款单核销审核"
:
"The payment voucher verification review"
,
"系统提示"
:
"System prompt"
,
"合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG
"
:
"Total:{totalNum}Box,{totalVolume}m³(Test) {totalChargeVolume}m³(Weight) {totalWeight}KG
"
,
"合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG
(测), {totalChargeWeight}kg(收费)"
:
"Total:{totalNum}Box,{totalVolume}m³(measure) {totalChargeVolume}m³(Weight) {totalWeight}KG(measure),{totalChargeWeight}kg(charge)
"
,
"确定要取消此报价单么?"
:
"Are you sure you want to cancel this quote?"
,
"确定要恢复此报价单么?"
:
"Are you sure you want to restore this quote?"
,
"确定要删除此报价单么?"
:
"Are you sure you want to delete this quote?"
,
...
...
src/views/ecw/bannerPop/index.vue
View file @
91ce4ad4
...
...
@@ -86,7 +86,7 @@
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.page
No"
:limit.sync=
"queryParams.pageSize
"
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.page
"
:limit.sync=
"queryParams.rows
"
@
pagination=
"getList"
/>
<!-- 对话框(添加 / 修改) -->
...
...
@@ -158,8 +158,10 @@ export default {
dateRangeCreateTime
:
[],
// 查询参数
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
// pageNo: 1,
// pageSize: 10,
page
:
1
,
rows
:
10
,
titleZh
:
null
,
titleEn
:
null
,
validateStart
:
null
,
...
...
src/views/ecw/box/indexAir.vue
View file @
91ce4ad4
...
...
@@ -134,12 +134,12 @@
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
command=
"downloadPreloadGoodsList"
v-hasPermi=
"['shipment:air:download:downloadPreloadGoodsList']"
>
{{
$t
(
'
预装单
'
)
}}
</el-dropdown-item>
<!--el-dropdown-item command="downloadLoadGoodsList" v-hasPermi="['shipment:air:download:downloadLoadGoodsList']">
{{
$t
(
'
已装单
'
)
}}
</el-dropdown-item-->
<el-dropdown-item
command=
"downloadReceivableList"
v-hasPermi=
"['shipment:air:download:downloadReceivableList']"
>
{{
$t
(
'
应收汇总表
'
)
}}
</el-dropdown-item>
<el-dropdown-item
command=
"downloadAgentListFiles"
v-hasPermi=
"['shipment:air:download:downloadAgentListFiles']"
>
agent list
</el-dropdown-item>
<el-dropdown-item
command=
"downloadSoncapFiles"
v-hasPermi=
"['shipment:air:download:downloadSoncapFiles']"
>
soncap
</el-dropdown-item>
<el-dropdown-item
command=
"zipDownload"
v-hasPermi=
"['shipment:air:download:zipDownload']"
>
{{
$t
(
'
提货单
'
)
}}
</el-dropdown-item>
<el-dropdown-item
command=
"downloadLadingCopy"
v-hasPermi=
"['shipment:air:download:downloadLadingCopy']"
>
{{
$t
(
'
提单Copy
'
)
}}
</el-dropdown-item>
<el-dropdown-item
command=
"downloadLoadGoods"
v-hasPermi=
"['shipment:air:download:downloadLoadGoods']"
>
{{
$t
(
'
已装单
'
)
}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</
template
>
...
...
@@ -211,6 +211,7 @@ import {
}
from
'
@/api/ecw/box
'
import
{
getLineInfo
}
from
'
@/api/ecw/boxAir
'
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
import
{
downloadLoadGoods
}
from
'
@/api/ecw/boxAir
'
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
costForm
from
'
./costForm.vue
'
import
regError
from
'
./regError.vue
'
...
...
@@ -237,8 +238,8 @@ export default {
cabinetList
:[],
dateTypes
:
[
{
value
:
'
1
'
,
label
:
this
.
$t
(
'
分拣时间
'
)
}
,
{
value
:
'
2
'
,
label
:
this
.
$t
(
'
装柜
时间
'
)
}
,
{
value
:
'
3
'
,
label
:
this
.
$t
(
'
起
运
时间
'
)
}
,
{
value
:
'
7
'
,
label
:
this
.
$t
(
'
出仓
时间
'
)
}
,
{
value
:
'
3
'
,
label
:
this
.
$t
(
'
起
飞
时间
'
)
}
,
{
value
:
'
4
'
,
label
:
this
.
$t
(
'
到港时间
'
)
}
,
{
value
:
'
5
'
,
label
:
this
.
$t
(
'
清关时间
'
)
}
,
{
value
:
'
6
'
,
label
:
this
.
$t
(
'
提货时间
'
)
}
...
...
@@ -597,6 +598,13 @@ export default {
case "downloadLadingCopy":
downloadFileByUrl(command, {shipmentId: row.id
}
);
break;
case "downloadLoadGoods":
if(row.tyStatus < 2112){
this.$message.error('请先完成理货后,再下载已装单')
return
}
this.exportExcel(downloadLoadGoods, { shipmentId: row.id
}
, this.$t("已装单") + `
(
$
{
row
.
selfNo
}
).
xls
`)
break;
case "handle":
const { noticeType
}
= row;
if ([1, 2, 3, 4, 8, 14].includes(noticeType)) {
...
...
src/views/ecw/box/ladingBill/index.vue
View file @
91ce4ad4
...
...
@@ -101,7 +101,7 @@
<el-dialog
:title=
"dialogCfg.title"
:visible.sync=
"dialogCfg.visible"
:width=
"dialogCfg.width"
:fullscreen=
"dialogCfg.fullscreen"
append-to-body
class=
"shippingSea-dialog"
@
closed=
"dialogclosed"
>
<makeLadingBill
v-if=
"dialogCfg.visible && ['makeBill','queryBill','resetBill'].includes(dialogCfg.type)"
:currData=
"currData"
:currRow=
"currRow"
:dialogCfg=
"dialogCfg"
@
closeDialog=
"closeDialog"
:selfNo=
"shipmentObj.selfNo"
/>
<previewBill
v-if=
"dialogCfg.type === 'previewBill'"
:contentHtml=
"currData.billContent"
:currRow=
"currRow"
:type=
"dialogCfg.type"
/>
<previewBill
v-if=
"dialogCfg.type === 'previewBill'"
:contentHtml=
"currData.billContent"
:currRow=
"currRow"
:type=
"dialogCfg.type"
:air=
"type === 'air'"
/>
</el-dialog>
</el-row>
</template>
...
...
@@ -248,7 +248,7 @@ export default {
let
billContent
=
`
${
titleZh
}${
data
.
orderInfo
}${
contentZh
}
`
;
this
.
currData
=
{
billContent
,
orderNo
:
this
.
currR
ow
.
orderNo
,
orderNo
:
r
ow
.
orderNo
,
};
}).
catch
(()
=>
{
throw
new
Error
(
'
制作提单失败
'
)
...
...
src/views/ecw/box/ladingBill/makeLadingBill.vue
View file @
91ce4ad4
...
...
@@ -63,7 +63,7 @@ export default {
currData
:
Object
,
currRow
:
Object
,
dialogCfg
:
Object
,
selfNo
:
String
selfNo
:
String
,
},
data
()
{
return
{
...
...
src/views/ecw/box/ladingBill/previewBill.vue
View file @
91ce4ad4
...
...
@@ -4,7 +4,7 @@
<el-row
v-if=
"currRow.status === 2 && type === 'previewBill'"
style=
"text-align: center;"
>
<el-button
type=
"primary"
@
click=
"download"
>
{{
$t
(
'
下载
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"print"
>
{{
$t
(
'
打印
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"
createPdf
"
>
{{
$t
(
'
刷新提单文件
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"
update
"
>
{{
$t
(
'
刷新提单文件
'
)
}}
</el-button>
</el-row>
</el-row>
</
template
>
...
...
@@ -16,6 +16,7 @@ import FileSaver from "file-saver";
import
html2canvas
from
'
html2canvas
'
;
import
{
jsPDF
}
from
"
jspdf
"
;
import
{
uploadFile
}
from
'
@/api/infra/file
'
import
{
updateAirBill
}
from
"
@/api/ecw/box
"
;
export
default
{
name
:
"
previewBill
"
,
...
...
@@ -23,8 +24,22 @@ export default {
contentHtml
:
String
,
currRow
:
Object
,
type
:
String
,
// 是否是空运
air
:
Boolean
,
},
methods
:
{
// 刷新提单
update
(){
if
(
this
.
air
){
let
loading
=
this
.
$loading
()
return
updateAirBill
(
this
.
currRow
.
orderId
).
then
(
res
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
刷新成功
'
))
}).
finally
(()
=>
{
loading
.
close
()
})
}
this
.
createPdf
()
},
download
()
{
_BOX
[
"
downloadBillService
"
]({
id
:
this
.
currRow
.
id
}).
then
((
res
)
=>
{
if
(
res
.
data
&&
res
.
data
.
imgUrl
)
{
...
...
@@ -46,9 +61,9 @@ export default {
}
const
_left
=
(
595.28
-
_w
)
/
2
;
doc
.
addImage
(
canvas
,
'
PNG
'
,
_left
,
0
,
_w
,
_h
,
''
,
'
FAST
'
);
return
_BOX
[
"
downloadBillService
"
]({
id
:
this
.
currRow
.
id
})
}).
then
(
res
=>
{
let
form
=
new
FormData
()
let
pathname
=
(
new
URL
(
res
.
data
.
imgUrl
)).
pathname
...
...
src/views/ecw/box/query.vue
View file @
91ce4ad4
...
...
@@ -573,6 +573,7 @@ export default {
fileFormat ?? "xlsx"
);
}
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
},
handleApproval(id) {
this.$router.push({path: '/bpm/process-instance/detail', query: {id: id}})
...
...
src/views/ecw/box/queryAir.vue
View file @
91ce4ad4
...
...
@@ -166,7 +166,7 @@
</el-table-column>
<el-table-column
prop=
"billAbnId"
:label=
"$t('异常')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE
.BOX_AIR_SHIPMENT_PROCESS
"
:value=
"scope.row.billAbnId"
/>
<dict-tag
:type=
"DICT_TYPE
[getregprocess(scope.row.opStep)]
"
:value=
"scope.row.billAbnId"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"abnDetail"
:label=
"$t('异常描述')"
align=
"center"
width=
"300"
></el-table-column>
...
...
@@ -321,27 +321,33 @@ export default {
costDetail
:
{},
// 下载
downloadList
:
[
{
title
:
this
.
$t
(
"
预装单
"
),
serviceName
:
"
downloadPreloadGoodsList
"
,
hasPermi
:
"
shipment:
box
:download:downloadPreloadGoodsList
"
},
{
title
:
this
.
$t
(
"
预装单
"
),
serviceName
:
"
downloadPreloadGoodsList
"
,
hasPermi
:
"
shipment:
air
:download:downloadPreloadGoodsList
"
},
// { title: this.$t("已装单"), serviceName: "downloadLoadGoodsList", hasPermi: "shipment:box:download:downloadLoadGoodsList" },
{
title
:
this
.
$t
(
"
应收汇总表
"
),
serviceName
:
"
downloadReceivableList
"
,
hasPermi
:
"
shipment:
box
:download:downloadReceivableList
"
},
{
title
:
this
.
$t
(
"
应收汇总表
"
),
serviceName
:
"
downloadReceivableList
"
,
hasPermi
:
"
shipment:
air
:download:downloadReceivableList
"
},
{
title
:
this
.
$t
(
"
提货单
"
),
serviceName
:
"
zipDownload
"
,
fileFormat
:
"
zip
"
,
hasPermi
:
"
shipment:
box
:download:zipDownload
"
hasPermi
:
"
shipment:
air
:download:zipDownload
"
},
{
title
:
"
agent list
"
,
serviceName
:
"
downloadAgentListFiles
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:
box
:download:downloadAgentListFiles
"
hasPermi
:
"
shipment:
air
:download:downloadAgentListFiles
"
},
{
title
:
"
soncap
"
,
serviceName
:
"
downloadSoncapFiles
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:
box
:download:downloadSoncapFiles
"
},
{
title
:
"
soncap
"
,
serviceName
:
"
downloadSoncapFiles
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:
air
:download:downloadSoncapFiles
"
},
{
title
:
this
.
$t
(
"
提单Copy
"
),
serviceName
:
"
downloadLadingCopy
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:box:download:downloadLadingCopy
"
hasPermi
:
"
shipment:air:download:downloadLadingCopy
"
},
{
title
:
this
.
$t
(
"
已装单
"
),
serviceName
:
"
downloadLoadGoods
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:air:download:downloadLoadGoods
"
},
],
// 选中行
...
...
@@ -362,6 +368,24 @@ export default {
};
},
methods
:
{
getregprocess
(
val
)
{
var
data
=
''
switch
(
val
){
case
10
:
data
=
'
FLYING_TICKET_EXCEPTION
'
break
;
case
12
:
data
=
'
ARRIVAL_TICKET_EXCEPTION
'
break
case
13
:
data
=
'
CLEARANCE_TICKET_EXCEPTION
'
break
default
:
data
=
'
BOX_SHIPPING_TICKET_EXCEPTION
'
break
}
return
data
},
selectable
(
row
,
index
)
{
if
(
row
.
abnormalDealStatus
===
1
)
return
false
;
return
true
;
...
...
@@ -655,6 +679,7 @@ export default {
fileFormat ?? "xlsx"
);
}
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
},
handleApproval(id) {
this.$router.push({path: '/bpm/process-instance/detail', query: {id: id}})
...
...
src/views/ecw/box/regError.vue
View file @
91ce4ad4
...
...
@@ -27,12 +27,12 @@
<userSelect
v-model=
"errorObj.notifyUsers"
:placeholder=
"$t('请选择通知人')"
:allUsers=
"this.$attrs.allUsers"
multiple
/>
</el-form-item>
<
!--
<el-form-item
:label=
"$t('是否更新订单状
态')"
>
<el-radio-group
v-model=
"errorObj.
order
Status"
>
<
el-form-item
:label=
"$t('是否更新订单动
态')"
>
<el-radio-group
v-model=
"errorObj.
update
Status"
>
<el-radio
v-for=
"item in status"
:key=
"item.value"
:label=
"item.value"
>
{{
item
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('中文内容')"
>
<
!--
<
el-form-item
:label=
"$t('中文内容')"
>
<el-input
v-model=
"errorObj.contentZh"
type=
"textarea"
rows=
"2"
:placeholder=
"$t('请输入中文内容')"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('英文内容')"
>
...
...
src/views/ecw/box/shippingAir/nodePage/mergePkg/index.vue
View file @
91ce4ad4
...
...
@@ -48,9 +48,9 @@
</el-table-column>
<el-table-column
:label=
"$t('订单数')"
align=
"center"
prop=
"orderCount"
/>
<el-table-column
:label=
"$t('箱数')"
align=
"center"
prop=
"sumNum"
/>
<el-table-column
:label=
"$t('
入仓
体积')"
align=
"center"
prop=
"sumVolume"
/>
<el-table-column
:label=
"$t('
入仓
重量')"
align=
"center"
prop=
"sumWeight"
/>
<el-table-column
:label=
"$t('
入仓
数量(个)')"
align=
"center"
prop=
"sumQuantity"
/>
<el-table-column
:label=
"$t('体积')"
align=
"center"
prop=
"sumVolume"
/>
<el-table-column
:label=
"$t('重量')"
align=
"center"
prop=
"sumWeight"
/>
<el-table-column
:label=
"$t('数量(个)')"
align=
"center"
prop=
"sumQuantity"
/>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"tallyStatus"
>
<
template
slot-scope=
"scope"
>
{{
statusData
[
scope
.
row
.
status
]
}}
...
...
src/views/ecw/box/shippingAir/nodePage/mergePkg/supplementOrder.vue
View file @
91ce4ad4
...
...
@@ -18,7 +18,7 @@
</div>
<el-collapse-transition>
<div
v-if=
"item.fold === false ? true : false"
>
<div
v-for=
"(secGoog, index) in item.sectionOrderList"
:key=
"index"
class=
"part-secGoog"
>
<div
v-for=
"(secGoog, index) in item.sectionOrderList"
:key=
"index"
class=
"part-secGoog
-not
"
>
<p>
{{
secGoog
.
orderNo
}}
</p>
<p>
{{
secGoog
.
prodTitleZh
}}
</p>
<div>
...
...
@@ -567,6 +567,21 @@ export default {
}
}
}
.part-secGoog-not
{
margin-top
:
5px
;
display
:
flex
;
>
p
{
margin-right
:
10px
;
color
:
#4f9cdd
;
}
>
div
{
flex
:
1
;
>
i
{
cursor
:
pointer
;
color
:
red
;
}
}
}
}
}
.right-area
{
...
...
src/views/ecw/box/shippingAir/nodePage/subMaterial.vue
View file @
91ce4ad4
...
...
@@ -140,7 +140,7 @@ export default {
this
.
$set
(
this
.
subMaterialObj
,
'
soNo
'
,
this
.
shipmentObj
.
bookAirInfo
?.
sono
||
undefined
)
this
.
$set
(
this
.
subMaterialObj
,
'
blMblNo
'
,
this
.
shipmentObj
.
bookAirInfo
?.
blNo
||
undefined
)
this
.
$set
(
this
.
subMaterialObj
,
'
markNo
'
,
"
N/M
"
)
this
.
$set
(
this
.
subMaterialObj
,
'
startPortId
'
,
this
.
shipmentObj
.
bookAirInfo
?.
big
PortId
||
undefined
)
this
.
$set
(
this
.
subMaterialObj
,
'
startPortId
'
,
this
.
shipmentObj
.
bookAirInfo
?.
departure
PortId
||
undefined
)
this
.
$set
(
this
.
subMaterialObj
,
'
shipCompanyId
'
,
Number
(
this
.
shipmentObj
.
bookAirInfo
?.
shipCompanyType
)
||
undefined
)
this
.
$set
(
this
.
subMaterialObj
,
'
destPortId
'
,
this
.
shipmentObj
.
bookAirInfo
?.
destPortId
||
undefined
)
this
.
$set
(
this
.
subMaterialObj
,
'
kgs
'
,
this
.
shipmentObj
.
customsInfo
?.
dcGoodsWgt
||
undefined
)
...
...
src/views/ecw/box/shippingAir/nodePage/tally/index.vue
View file @
91ce4ad4
...
...
@@ -20,9 +20,21 @@
</el-card>
<el-row
style=
"margin-top: 15px"
>
<el-row>
<el-button
:disabled=
"shipmentObj.approvaling"
size=
"small"
type=
"primary"
@
click=
"()=>tallyClick('batch')"
>
{{
$t
(
'
批量理货
'
)
}}
</el-button>
<el-button
:disabled=
"shipmentObj.approvaling"
size=
"small"
type=
"primary"
@
click=
"()=>removeClick('batch')"
>
{{
$t
(
'
批量移出
'
)
}}
</el-button>
<el-row
class=
"table-title"
>
<div>
<el-button
:disabled=
"shipmentObj.approvaling"
size=
"small"
type=
"primary"
@
click=
"()=>tallyClick('batch')"
>
{{
$t
(
'
批量理货
'
)
}}
</el-button>
<el-button
:disabled=
"shipmentObj.approvaling"
size=
"small"
type=
"primary"
@
click=
"()=>removeClick('batch')"
>
{{
$t
(
'
批量移出
'
)
}}
</el-button>
</div>
<div>
<template>
<el-input
v-model=
"qrCode"
:placeholder=
"$t('请输入二维码/条码编号')"
clearable
></el-input>
<el-button
type=
"primary"
@
click=
"handlerBatchCreate('single')"
>
{{
$t
(
'
确定
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handlerClick('batchInput',$t('批量输入'))"
>
{{
$t
(
'
批量输入
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handlerClick('correction',$t('理货纠错'))"
>
{{
$t
(
'
理货纠错
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"handlerClick('correctionOrder',$t('批量理货纠错'))"
>
{{
$t
(
'
批量理货纠错
'
)
}}
</el-button>
</
template
>
</div>
</el-row>
<el-row
style=
"margin-top: 5px"
>
<el-table
border
:data=
"tallyList"
@
select=
"checkboxSelect"
@
select-all=
"checkboxSelect"
max-height=
"600px"
>
...
...
@@ -123,13 +135,83 @@
append-to-body
@
cancel=
"currentTurnExceptionOrder=null"
@
success=
"currentTurnExceptionOrder=null"
/>
<!-- 对话框 -->
<el-dialog
custom-class=
"shipping-dialog"
:title=
"dialogConfig.title"
:visible.sync=
"dialogConfig.dialogVisible"
:fullscreen=
"dialogConfig.fullscreen"
:width=
"dialogConfig.width"
:modal-append-to-body=
false
append-to-body
>
<!-- 装柜纠错 -->
<
template
v-if=
"dialogConfig.type === 'correction' && dialogConfig.dialogVisible"
>
<el-form
ref=
"correctionForm"
:rules=
"rules"
:model=
"correctionObj"
label-position=
"top"
>
<el-form-item
:label=
"$t('装柜纠错(二维码/条形码编号)')"
prop=
"qrCode"
>
<el-input
v-model=
"correctionObj.qrCode"
:placeholder=
"$t('请输入二维码/条形码编号')"
clearable
/>
</el-form-item>
</el-form>
<el-row
class=
"operate-button"
>
<el-button
type=
"primary"
@
click=
"onSubmit('correctionForm')"
>
{{
$t
(
'
提交
'
)
}}
</el-button>
<el-button
@
click=
"closeDialog2"
>
{{
$t
(
'
取消
'
)
}}
</el-button>
</el-row>
</
template
>
<!-- 批量装柜纠错(订单号) -->
<
template
v-if=
"dialogConfig.type === 'correctionOrder' && dialogConfig.dialogVisible"
>
<el-form
ref=
"orderForm"
:rules=
"rules"
:model=
"orderObj"
label-position=
"top"
>
<el-form-item
:label=
"$t('装柜纠错') +'(' + $t('订单号') + ')'"
prop=
"orderNo"
>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"orderObj.orderNo"
:placeholder=
"$t('请输入,多个以逗号分隔')"
clearable
/>
</el-form-item>
</el-form>
<el-row
class=
"operate-button"
>
<el-button
type=
"primary"
@
click=
"onSubmit('orderForm')"
>
{{
$t
(
'
提交
'
)
}}
</el-button>
<el-button
@
click=
"closeDialog2"
>
{{
$t
(
'
取消
'
)
}}
</el-button>
</el-row>
</
template
>
<!-- 装柜批量输入 -->
<
template
v-if=
"dialogConfig.type === 'batchInput' && dialogConfig.dialogVisible"
>
<el-form
ref=
"batchForm"
:rules=
"rules"
:model=
"batchObj"
>
<el-form-item
label=
""
prop=
"qrCode"
class=
"two-element"
>
<el-input
v-model=
"batchObj.qrCode"
:placeholder=
"$t('请输入订单号')"
clearable
/>
<el-button
style=
"marginLeft:10px;"
type=
"primary"
@
click=
"queryOrderInfo"
>
{{
$t
(
'
确定
'
)
}}
</el-button>
</el-form-item>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('订单号')"
>
{{
boxOrderInfo
.
orderNo
}}
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('箱数')"
>
<el-input-number
v-if=
"boxOrderInfo.isExternalWarehouse === 1"
v-model=
"batchObj.boxNum"
:min=
"0"
:max=
"boxOrderInfo.num"
/>
<template
v-else
>
{{
boxOrderInfo
.
num
}}
</
template
>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('方数')"
>
{{getTotlContent(boxOrderInfo, ['volume'])}}
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('重量')"
>
{{getTotlContent(boxOrderInfo, ['weight'])}}
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row
class=
"operate-button"
>
<el-button
type=
"primary"
:disabled=
"boxOrderInfo.orderId ? false : true"
@
click=
"batchLoad"
>
{{$t('提交')}}
</el-button>
<el-button
@
click=
"closeDialog2"
>
{{$t('取消')}}
</el-button>
</el-row>
</template>
</el-dialog>
</div>
</template>
<
script
>
import
batchTally
from
"
./batchTally.vue
"
;
import
{
getTallyList
,
tallyRemove
,
tallyCommit
}
from
"
@/api/ecw/boxSea
"
;
import
{
formatDate
,
serviceMsg
}
from
"
../../utils
"
;
import
{
formatDate
,
serviceMsg
,
getTotlContent
}
from
"
../../utils
"
;
import
WarehouseDetail
from
"
./warehouseDetail
"
;
import
{
getOrder
,
orderSpecialNeed
}
from
"
@/api/ecw/order
"
;
import
Exception
from
"
@/views/ecw/box/components/Exception.vue
"
;
...
...
@@ -163,7 +245,27 @@ export default {
fullscreen
:
false
,
},
// 当前转异订单
currentTurnExceptionOrder
:
null
currentTurnExceptionOrder
:
null
,
// 二维码/条码编号
qrCode
:
""
,
// 批量输入
batchObj
:
{
boxNum
:
0
,
},
// 批量纠错(订单号)
orderObj
:
{},
// 纠错
correctionObj
:
{},
// 弹窗配置
dialogConfig
:
{
title
:
""
,
dialogVisible
:
false
,
width
:
"
30%
"
,
type
:
""
,
fullscreen
:
false
,
},
// 订单信息
boxOrderInfo
:
{},
};
},
created
()
{
...
...
@@ -172,6 +274,7 @@ export default {
methods
:
{
// 格式化日期
formatDate
,
getTotlContent
,
//去重
notset
(
string
){
if
(
!
string
)
return
string
...
...
@@ -357,6 +460,31 @@ export default {
this
.
showWarehouseInItemId
=
row
.
orderItemId
;
});
},
/** 点击事件统一入口 */
handlerClick
(
type
,
title
)
{
this
.
shwoDialog
({
type
,
title
});
},
/** 弹窗事件 */
shwoDialog
(
config
)
{
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
config
.
title
);
this
.
$set
(
this
.
dialogConfig
,
"
type
"
,
config
.
type
);
switch
(
config
.
type
)
{
case
"
batchInput
"
:
this
.
$set
(
this
.
dialogConfig
,
"
fullscreen
"
,
false
);
this
.
batchObj
=
{
boxNum
:
0
};
this
.
boxOrderInfo
=
{};
break
;
case
"
correction
"
:
this
.
$set
(
this
.
dialogConfig
,
"
fullscreen
"
,
false
);
this
.
correctionObj
=
{};
break
;
case
"
correctionOrder
"
:
this
.
$set
(
this
.
dialogConfig
,
"
fullscreen
"
,
false
);
this
.
orderObj
=
{};
break
;
}
this
.
$set
(
this
.
dialogConfig
,
"
dialogVisible
"
,
true
);
},
},
computed
:
{
/* 获取仓库 */
...
...
@@ -371,4 +499,19 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
.table-title
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
10px
;
>
div
:first-child
{
flex
:
1
;
font-size
:
16px
;
}
>
div
:last-child
{
display
:
flex
;
>
.el-input
{
margin-right
:
10px
;
}
}
}
</
style
>
src/views/ecw/box/shippingSea/nodePage/cabinet/supplementOrder.vue
View file @
91ce4ad4
...
...
@@ -17,7 +17,7 @@
</div>
<el-collapse-transition>
<div
v-if=
"item.fold === false ? true : false"
>
<div
v-for=
"(secGoog, index) in item.sectionOrderList"
:key=
"index"
class=
"part-secGoog"
>
<div
v-for=
"(secGoog, index) in item.sectionOrderList"
:key=
"index"
class=
"part-secGoog
-not
"
>
<p>
{{
secGoog
.
orderNo
}}
</p>
<p>
{{
secGoog
.
prodTitleZh
}}
</p>
<div>
...
...
@@ -538,6 +538,21 @@ export default {
}
}
}
.part-secGoog-not
{
margin-top
:
5px
;
display
:
flex
;
>
p
{
margin-right
:
10px
;
color
:
#4f9cdd
;
}
>
div
{
flex
:
1
;
>
i
{
cursor
:
pointer
;
color
:
red
;
}
}
}
}
}
.right-area
{
...
...
src/views/ecw/customer/addPotentialCustom.vue
View file @
91ce4ad4
This diff is collapsed.
Click to expand it.
src/views/ecw/customer/index.vue
View file @
91ce4ad4
...
...
@@ -66,11 +66,15 @@
</el-form>
<!-- 操作工具栏 -->
<div
v-if=
"path === '/customer/customer'"
style=
"color: red;margin-bottom: 5px;"
>
注意:创建的客户需接收
</div>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
v-if=
"path === '/customer/potential'"
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAddPotential"
>
{{
$t
(
'
新增潜在客户
'
)
}}
</el-button>
<el-button
v-else
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"[ selectAuthorityFn('ecw:customer:create')]"
>
{{
$t
(
'
新增
'
)
}}
</el-button>
v-hasPermi=
"[ selectAuthorityFn('ecw:customer:create')]"
>
{{
$t
(
'
新增
'
)
}}
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
:disabled=
"selectCustomerList.length === 0"
type=
"primary"
size=
"mini"
@
click=
"transferShow = true;"
...
...
@@ -170,6 +174,7 @@
<el-button
size=
"mini"
v-has-permi=
"[selectAuthorityFn('ecw:customer:follow-up')]"
type=
"text"
icon=
"el-icon-collection"
@
click=
"followUp(scope.row)"
>
{{
$t
(
'
跟进
'
)
}}
</el-button>
<el-button
size=
"mini"
v-has-permi=
"[selectAuthorityFn('ecw:customer:customer-complaint')]"
type=
"text"
icon=
"el-icon-user"
@
click=
"complaint(scope.row)"
>
{{
$t
(
'
客诉
'
)
}}
</el-button>
<el-button
:disabled=
"scope.row.isInOpenSea"
v-has-permi=
"[selectAuthorityFn('ecw:customer:postpone')]"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"delay(scope.row)"
>
{{
$t
(
'
延期
'
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:customer:treat-recovery']"
v-if=
"scope.row.customerService !== null && scope.row.customerServiceAssignedTime !== null && !scope.row.isCustomerServiceConfirmed && !scope.row.isInOpenSea && path === '/customer/customer'"
size=
"mini"
type=
"text"
@
click=
"recovery(scope.row)"
>
{{
$t
(
'
回收客户
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -541,7 +546,7 @@ import {
getCustomerDeptPage
,
changeCustomerAir
,
getPotential
,
setChangeCustomerFcl
,
potentialExportExcel
,
deptExportExcel
setChangeCustomerFcl
,
potentialExportExcel
,
deptExportExcel
,
recycleUnconfirmedCustomer
}
from
"
@/api/ecw/customer
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
'
@/utils/dict
'
;
import
{
CommonStatusEnum
}
from
'
@/utils/constants
'
...
...
@@ -688,6 +693,20 @@ export default {
this
.
getList
();
},
methods
:
{
recovery
(
row
){
this
.
$confirm
(
this
.
$t
(
'
是否要回收当前{name}
'
,
row
),
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
recycleUnconfirmedCustomer
({
customerId
:
row
.
id
}).
then
(
r
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
回收成功。
'
))
this
.
getList
()
})
}).
catch
(()
=>
{
this
.
$message
.
info
(
this
.
$t
(
'
已取消
'
))
});
},
// 设置整柜
setFullContainerLoad
(
isFcl
){
setChangeCustomerFcl
({
...
...
src/views/ecw/customerConfirm/index.vue
View file @
91ce4ad4
...
...
@@ -137,7 +137,7 @@
</router-link>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:treat-perfect']"
>
{{
$t
(
'
完善
'
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:customer:treat-recovery']"
size=
"mini"
type=
"text"
@
click=
"recovery(scope.row)"
>
{{
$t
(
'
回收客户
'
)
}}
</el-button
>
<!--
<el-button
v-has-permi=
"['ecw:customer:treat-recovery']"
size=
"mini"
type=
"text"
@
click=
"recovery(scope.row)"
>
{{
$t
(
'
回收客户
'
)
}}
</el-button>
--
>
</
template
>
</el-table-column>
...
...
@@ -458,20 +458,20 @@ export default {
})
},
methods
:
{
recovery
(
row
){
console
.
log
(
row
,
'
row
'
)
this
.
$confirm
(
this
.
$t
(
'
是否要回收当前{name}
'
,
row
),
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
recycleUnconfirmedCustomer
({
customerId
:
row
.
id
}).
then
(
r
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
回收成功。
'
))
})
}).
catch
(()
=>
{
this
.
$message
.
info
(
this
.
$t
(
'
已取消
'
))
});
},
//
recovery(row){
//
console.log(row,'row')
//
this.$confirm(this.$t('是否要回收当前{name}',row), '提示', {
//
confirmButtonText: '确定',
//
cancelButtonText: '取消',
//
type: 'warning'
//
}).then(() => {
//
recycleUnconfirmedCustomer({customerId:row.id}).then(r =>{
//
this.$message.success(this.$t('回收成功。'))
//
})
//
}).catch(() => {
//
this.$message.info(this.$t('已取消'))
//
});
//
},
getDictDatas
,
countryFormatter
(
row
,
column
,
cellValue
)
{
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
...
...
src/views/ecw/deptTarget/myAchievement.vue
View file @
91ce4ad4
...
...
@@ -48,19 +48,19 @@
<el-form-item
:label=
"$t('联系方式')"
prop=
"key"
>
<el-input
v-model=
"queryParams.phoneNew"
:placeholder=
"$t('请输入联系方式')"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
prop=
"
customerService
"
>
<el-select
clearable
v-model=
"queryParams.
customerService
"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-form-item
:label=
"$t('客户经理')"
prop=
"
userId
"
>
<el-select
clearable
v-model=
"queryParams.
userId
"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('始发仓')"
prop=
"
destination
Id"
>
<el-select
v-model=
"queryParams.
origin
Id"
:placeholder=
"$t('请选择始发仓')"
clearable
>
<el-form-item
:label=
"$t('始发仓')"
prop=
"
startWarehouse
Id"
>
<el-select
v-model=
"queryParams.
startWarehouse
Id"
:placeholder=
"$t('请选择始发仓')"
clearable
>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('目的仓')"
prop=
"dest
inationId
"
>
<el-select
:multiple=
"true"
v-model=
"queryParams.dest
inationId
"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-form-item
:label=
"$t('目的仓')"
prop=
"dest
WarehouseIdArr
"
>
<el-select
:multiple=
"true"
v-model=
"queryParams.dest
WarehouseIdArr
"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -167,7 +167,7 @@
tableList
:
[],
// 弹出层标题
title
:
""
,
dateFilter
:[],
dateFilter
:[],
detail
:
{
deptName
:
null
,
targetType
:
null
,
...
...
@@ -256,6 +256,9 @@
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
})
getWarehouseList
().
then
(
res
=>
{
this
.
warehouseList
=
res
.
data
})
},
methods
:
{
getChannelList
()
{
...
...
@@ -295,8 +298,12 @@
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
const
params
=
{...
this
.
queryParams
}
if
(
params
.
destWarehouseIdArr
?.
length
){
params
.
destWarehouseIds
=
params
.
destWarehouseIdArr
.
join
(
'
,
'
)
}
// 执行查询
myAchievementByPage
(
this
.
queryP
arams
).
then
(
response
=>
{
myAchievementByPage
(
p
arams
).
then
(
response
=>
{
this
.
list
=
response
.
data
.
myAchievementDtos
.
list
;
this
.
total
=
response
.
data
.
myAchievementDtos
.
total
;
this
.
myAchievementData
=
response
.
data
...
...
src/views/ecw/deptTarget/myDeptAchievement.vue
View file @
91ce4ad4
...
...
@@ -48,19 +48,19 @@
<el-form-item
:label=
"$t('联系方式')"
prop=
"key"
>
<el-input
v-model=
"queryParams.phoneNew"
:placeholder=
"$t('请输入联系方式')"
clearable
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
prop=
"
customerService
"
>
<el-select
clearable
v-model=
"queryParams.
customerService
"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-form-item
:label=
"$t('客户经理')"
prop=
"
userId
"
>
<el-select
clearable
v-model=
"queryParams.
userId
"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('始发仓')"
prop=
"
destination
Id"
>
<el-select
v-model=
"queryParams.
origin
Id"
:placeholder=
"$t('请选择始发仓')"
clearable
>
<el-form-item
:label=
"$t('始发仓')"
prop=
"
startWarehouse
Id"
>
<el-select
v-model=
"queryParams.
startWarehouse
Id"
:placeholder=
"$t('请选择始发仓')"
clearable
>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('目的仓')"
prop=
"dest
inationId
"
>
<el-select
:multiple=
"true"
v-model=
"queryParams.dest
inationId
"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-form-item
:label=
"$t('目的仓')"
prop=
"dest
WarehouseIdArr
"
>
<el-select
:multiple=
"true"
v-model=
"queryParams.dest
WarehouseIdArr
"
multiple
:placeholder=
"$t('请选择目的仓')"
clearable
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -196,6 +196,7 @@
transportType
:
null
,
shippingChannel
:
null
,
endStartTime
:
null
,
destWarehouseIdArr
:[]
},
tableQueryParams
:
{
pageNo
:
1
,
...
...
@@ -252,6 +253,9 @@
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
})
getWarehouseList
().
then
(
res
=>
{
this
.
warehouseList
=
res
.
data
})
},
methods
:
{
getChannelList
()
{
...
...
@@ -291,8 +295,12 @@
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
const
params
=
{...
this
.
queryParams
}
if
(
params
.
destWarehouseIdArr
?.
length
){
params
.
destWarehouseIds
=
params
.
destWarehouseIdArr
.
join
(
'
,
'
)
}
// 执行查询
myDeptAchievementByPage
(
this
.
queryP
arams
).
then
(
response
=>
{
myDeptAchievementByPage
(
p
arams
).
then
(
response
=>
{
this
.
list
=
response
.
data
.
myAchievementDtos
.
list
;
this
.
total
=
response
.
data
.
myAchievementDtos
.
total
;
this
.
myAchievementData
=
response
.
data
...
...
src/views/ecw/order/detail.vue
View file @
91ce4ad4
...
...
@@ -161,6 +161,9 @@
<el-descriptions-item
:label=
"$t('客户经理')"
>
{{order.salesmanName}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('提单是否显示价格')"
>
{{order.displayBillLadingPrice ? $t('是') : $t('否')}}
</el-descriptions-item>
</el-descriptions>
</el-card>
...
...
src/views/ecw/order/edit.vue
View file @
91ce4ad4
...
...
@@ -514,11 +514,11 @@
</el-form-item>
</div>
<div
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<
!--<
div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('航空公司')">
<supplier-selector v-model="form.airlineCompany" company-type="10" :disabled="false"/>
</el-form-item>
</div>
</div>
-->
<div
v-if=
"[2].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('船公司')"
>
<supplier-selector
v-model=
"form.shippingCompany"
company-type=
"9"
:disabled=
"false"
/>
...
...
src/views/ecw/order/index.vue
View file @
91ce4ad4
...
...
@@ -172,7 +172,7 @@
</el-col>
<el-col
:span=
"15"
v-if=
"statistics"
>
<!-- 订单列表显示搜索条件对应箱数、仓库实测、收款方数、重量 -->
{{$t('合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG', statistics)}}
{{$t('合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG
(测), {totalChargeWeight}kg(收费)
', statistics)}}
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
...
...
src/views/ecw/order/penddingList.vue
View file @
91ce4ad4
...
...
@@ -435,7 +435,7 @@ export default {
},
// 批量可出
batchCanShipment
(){
let
orderNo
=
this
.
multipleSelection
.
map
(
item
=>
item
.
orderNo
).
join
(
'
,
'
)
let
orderNo
=
this
.
multipleSelection
.
map
(
item
=>
item
.
orderNo
).
join
(
'
,
'
)
this
.
$confirm
(
this
.
$t
(
`您确定要将订单{orderNo}设置为可出吗?`
,
{
orderNo
})).
then
(()
=>
{
return
batchCanShipment
(
this
.
ids
)
}).
then
(
res
=>
{
...
...
src/views/ecw/order/stocking/index.vue
View file @
91ce4ad4
...
...
@@ -158,17 +158,18 @@
</el-table-column>
<el-table-column
prop=
"address"
:label=
"$t('操作')"
width=
"2
2
0"
>
:label=
"$t('操作')"
width=
"2
5
0"
>
<
template
v-slot=
"{ row, column, $index }"
>
<!--没有入仓记录的不显示打包按钮 https://zentao.test.jdshangmen.com/bug-view-5389.html-->
<el-button-group
v-if=
"orderWarehouseInList(row.orderItemId).length"
>
<template
v-if=
"wareItemPackStatus(row.orderItemId) == 1"
>
<el-button
size=
"mini"
type=
"warning"
@
click=
"noNeedPack(row)"
>
{{
$t
(
'
无需打包
'
)
}}
</el-button>
<el-button
class=
"pl-5 pr-5"
size=
"mini"
type=
"warning"
@
click=
"noNeedPack(row)"
>
{{
$t
(
'
无需打包
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"package(row, $t('打包'))"
>
{{
$t
(
'
打包
'
)
}}
</el-button>
</
template
>
<el-button
v-else
size=
"mini"
type=
"primary"
@
click=
"package(row, $t('修改打包'))"
>
{{$t('修改打包')}}
</el-button>
<el-button
class=
"pl-5 pr-5"
v-else
size=
"mini"
type=
"primary"
@
click=
"package(row, $t('修改打包'))"
>
{{$t('修改打包')}}
</el-button>
<el-button
size=
"mini"
type=
"danger"
@
click=
"rollback(row)"
>
{{$t('退仓')}}
</el-button>
<el-button
class=
"pl-5 pr-5"
size=
"mini"
type=
"info"
@
click=
"printTag"
>
{{$t('打印标签')}}
</el-button>
</el-button-group>
</template>
</el-table-column>
...
...
@@ -212,6 +213,7 @@
<div
style=
"text-align: center;margin-top: 15px"
>
<el-button
@
click=
"escapeBol = true;"
type=
"primary"
>
{{$t('转异')}}
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit"
>
{{$t('完成备货')}}
</el-button>
<el-button
type=
"info"
@
click=
"printTag"
>
{{$t('打印标签')}}
</el-button>
</div>
</el-form>
...
...
@@ -249,6 +251,7 @@
@
close=
"onPackageClose"
></new-product>
<media-dialog
v-if=
"curPictrues"
:value=
"curPictrues"
@
close=
"curPictrues=null"
></media-dialog>
<print-tag
v-if=
"showPrintTagDialog"
:order-id=
"orderId"
@
close=
"showPrintTagDialog=false"
:warehouse-in-num=
"order.sumNum"
/>
</div>
</template>
...
...
@@ -363,7 +366,9 @@ export default {
// 当前查看的影像
curPictrues
:
null
,
// 是否显示添加新品弹窗
showNewProductDialog
:
false
showNewProductDialog
:
false
,
// 是否显示打印标签弹层
showPrintTagDialog
:
false
}
},
...
...
@@ -434,9 +439,11 @@ export default {
form
.
orderId
=
this
.
orderId
form
.
manualExceptionType
=
form
.
manualExceptionType
.
join
(
'
,
'
)
finishStock
(
form
).
then
(
res
=>
{
return
this
.
$alert
(
this
.
$t
(
'
操作成功
'
))
return
this
.
$confirm
(
"
备货成功,是否需要打印标签
"
).
catch
(()
=>
{
this
.
$tab
.
closePage
()
})
}).
then
(()
=>
{
this
.
$tab
.
closePage
()
this
.
printTag
()
})
},
// 显示打包弹层
...
...
@@ -496,6 +503,9 @@ export default {
this
.
$message
.
success
(
this
.
$t
(
'
操作成功
'
))
this
.
getList
()
})
},
printTag
(){
this
.
showPrintTagDialog
=
true
}
},
watch
:
{
...
...
src/views/ecw/productPrice/index.vue
View file @
91ce4ad4
...
...
@@ -886,8 +886,14 @@ export default {
let
params
=
{...
this
.
queryParams
}
;
params
.
pageNo
=
undefined
;
params
.
pageSize
=
undefined
;
if
(
this
.
type
==
'
sea
'
){
params
.
transportType
=
1
}
if
(
this
.
type
==
'
air
'
){
params
.
transportType
=
3
}
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
'
createTime
'
);
// c
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出所有数据项?
'
)).
then
(()
=>
{
this
.
exportLoading
=
true
;
return
exportProductPriceExcel
(
params
);
...
...
src/views/ecw/region/index.vue
View file @
91ce4ad4
...
...
@@ -102,9 +102,12 @@
<el-option
v-for=
"dict in regionTypeDatas"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('
国家代码-城市代码
')"
prop=
"labelCode"
v-if=
"form.type == '1' || form.type == '3' "
>
<el-input
v-model=
"form.labelCode"
placeholder=
"请输入
国家代码-城市
代码"
/>
<el-form-item
:label=
"$t('
海运订单国家代码-海运订单城市代码-空运订单国家代码-空运自编号国家代码,没有可填0-
')"
prop=
"labelCode"
v-if=
"form.type == '1' || form.type == '3' "
>
<el-input
v-model=
"form.labelCode"
placeholder=
"请输入
海运订单国家代码-海运订单城市代码-空运订单国家代码-空运自编号国家
代码"
/>
</el-form-item>
<el-tooltip
effect=
"dark"
:content=
"$t('海运目的国家简称-海运目的城市简称-空运订单编号目的国家简称-空运自编号目的国简称,\n注意:如果没有海运业务的城市设置,请将海运目的国家简称-海运目的城市简称设置为->0-0,前置的参数不能为空')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
<el-form-item
:label=
"$t('显示顺序')"
prop=
"sort"
>
<el-input
v-model=
"form.sort"
:placeholder=
"$t('请输入显示顺序')"
/>
</el-form-item>
...
...
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