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
ca65a30e
Commit
ca65a30e
authored
Nov 15, 2024
by
Administrator
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pre-release' into 'jd_dev'
Pre Release最新代码合并入捷道研发分支20241115 See merge request
!98
parents
f0e4a1a4
e1e318a5
Changes
30
Show whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
2589 additions
and
2336 deletions
+2589
-2336
offer.js
src/api/ecw/offer.js
+52
-45
warehouse.js
src/api/ecw/warehouse.js
+18
-0
index.vue
src/components/RoutersSelector/index.vue
+61
-52
custom.scss
src/styles/custom.scss
+10
-0
startUnloading.vue
...ecw/box/shippingAir/nodePage/unloading/startUnloading.vue
+6
-1
startUnloading.vue
...ecw/box/shippingSea/nodePage/unloading/startUnloading.vue
+1
-1
index.vue
src/views/ecw/coupon/index.vue
+9
-9
customerFollow.vue
src/views/ecw/customer/components/customerFollow.vue
+52
-27
customerFollowUpdateStatus.vue
...ws/ecw/customer/components/customerFollowUpdateStatus.vue
+1
-1
edit.vue
src/views/ecw/customer/edit.vue
+1
-1
index.vue
src/views/ecw/customer/index.vue
+18
-19
query.vue
src/views/ecw/customer/query.vue
+1
-1
index.vue
src/views/ecw/customerConfirm/index.vue
+236
-278
index.vue
src/views/ecw/customerToBeAssigned/index.vue
+242
-265
index.vue
src/views/ecw/myCustomerService/index.vue
+25
-25
detail.vue
src/views/ecw/offer/detail.vue
+16
-8
edit.vue
src/views/ecw/offer/edit.vue
+25
-15
logListCommon.vue
src/views/ecw/offer/logListCommon.vue
+5
-7
cargoControl.vue
src/views/ecw/order/cargoControl.vue
+3
-3
Release.vue
src/views/ecw/order/components/Release.vue
+191
-184
edit.vue
src/views/ecw/order/edit.vue
+1467
-1337
index.vue
src/views/ecw/order/exception/index.vue
+1
-3
feeApplication.vue
src/views/ecw/order/feeApplication.vue
+24
-21
index.vue
src/views/ecw/order/index.vue
+83
-11
penddingList.vue
src/views/ecw/order/penddingList.vue
+8
-4
stockingList.vue
src/views/ecw/order/stockingList.vue
+0
-3
Warehouse.vue
src/views/ecw/order/warehousing/components/Warehouse.vue
+17
-8
index.vue
src/views/ecw/order/warehousing/index.vue
+7
-1
warningCargoControl.vue
src/views/ecw/order/warningCargoControl.vue
+8
-5
index.vue
src/views/ecw/warehouse/index.vue
+1
-1
No files found.
src/api/ecw/offer.js
View file @
ca65a30e
import
request
from
'
@/utils/request
'
import
request
from
"
@/utils/request
"
// 创建报价单管理
export
function
createOffer
(
data
)
{
return
request
({
url
:
'
/ecw/offer/create
'
,
method
:
'
post
'
,
url
:
"
/ecw/offer/create
"
,
method
:
"
post
"
,
data
:
data
})
}
...
...
@@ -12,8 +12,8 @@ export function createOffer(data) {
// 更新报价单管理
export
function
updateOffer
(
data
)
{
return
request
({
url
:
'
/ecw/offer/update
'
,
method
:
'
put
'
,
url
:
"
/ecw/offer/update
"
,
method
:
"
put
"
,
data
:
data
})
}
...
...
@@ -21,24 +21,24 @@ export function updateOffer(data) {
// 删除报价单管理
export
function
deleteOffer
(
id
)
{
return
request
({
url
:
'
/ecw/offer/delete?id=
'
+
id
,
method
:
'
delete
'
url
:
"
/ecw/offer/delete?id=
"
+
id
,
method
:
"
delete
"
})
}
// 获得报价单管理
export
function
getOffer
(
id
)
{
return
request
({
url
:
'
/ecw/offer/get?offerId=
'
+
id
,
method
:
'
get
'
url
:
"
/ecw/offer/get?offerId=
"
+
id
,
method
:
"
get
"
})
}
// 获得报价单管理分页
export
function
getOfferPage
(
query
)
{
return
request
({
url
:
'
/ecw/offer/page
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/page
"
,
method
:
"
get
"
,
params
:
query
})
}
...
...
@@ -46,36 +46,36 @@ export function getOfferPage(query) {
// 导出报价单管理 Excel
export
function
exportOfferExcel
(
query
)
{
return
request
({
url
:
'
/ecw/offer/export-excel
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/export-excel
"
,
method
:
"
get
"
,
params
:
query
,
responseType
:
'
blob
'
responseType
:
"
blob
"
})
}
// 更新报价单结果
export
function
updateOfferResult
(
data
)
{
return
request
({
url
:
'
/ecw/offer/update/result
'
,
method
:
'
put
'
,
url
:
"
/ecw/offer/update/result
"
,
method
:
"
put
"
,
data
:
data
})
}
// 获取费用清单列表
export
function
getProductFeeList
(
prodCreateReqVO
){
export
function
getProductFeeList
(
prodCreateReqVO
)
{
return
request
({
url
:
'
/ecw/offer/calculation/prod-fee-List
'
,
method
:
'
post
'
,
url
:
"
/ecw/offer/calculation/prod-fee-List
"
,
method
:
"
post
"
,
data
:
prodCreateReqVO
})
}
// 获取费用清单
export
function
getProductFee
(
calculationFeeParamVO
){
export
function
getProductFee
(
calculationFeeParamVO
)
{
return
request
({
url
:
'
/ecw/offer/calculation/fee-List
'
,
method
:
'
post
'
,
url
:
"
/ecw/offer/calculation/fee-List
"
,
method
:
"
post
"
,
data
:
calculationFeeParamVO
})
}
...
...
@@ -83,8 +83,8 @@ export function getProductFee(calculationFeeParamVO){
// 特价申请
export
function
createOfferSpecial
(
data
)
{
return
request
({
url
:
'
/ecw/offer/special/apply
'
,
method
:
'
put
'
,
url
:
"
/ecw/offer/special/apply
"
,
method
:
"
put
"
,
data
:
data
})
}
...
...
@@ -92,8 +92,8 @@ export function createOfferSpecial(data) {
// 特价详情
export
function
getOfferSpecial
(
offerProdId
,
params
)
{
return
request
({
url
:
'
/ecw/offer/special/info/
'
+
offerProdId
,
method
:
'
get
'
,
url
:
"
/ecw/offer/special/info/
"
+
offerProdId
,
method
:
"
get
"
,
params
})
}
...
...
@@ -101,35 +101,34 @@ export function getOfferSpecial(offerProdId, params) {
// 特价详情
export
function
getOfferSpecialByApproveId
(
approveId
)
{
return
request
({
url
:
'
/ecw/offer/special/info?approveId=
'
+
approveId
,
method
:
'
get
'
url
:
"
/ecw/offer/special/info?approveId=
"
+
approveId
,
method
:
"
get
"
})
}
// 取消报价管理
export
function
cancel
(
id
)
{
return
request
({
url
:
'
/ecw/offer/cancel
'
,
method
:
'
delete
'
,
params
:
{
id
}
url
:
"
/ecw/offer/cancel
"
,
method
:
"
delete
"
,
params
:
{
id
}
})
}
// 恢复取消的报价管理
export
function
recovery
(
id
)
{
return
request
({
url
:
'
/ecw/offer/recovery
'
,
method
:
'
delete
'
,
params
:
{
id
}
url
:
"
/ecw/offer/recovery
"
,
method
:
"
delete
"
,
params
:
{
id
}
})
}
// 获取部门报价单列表
export
function
offerDeptPage
(
params
)
{
return
request
({
url
:
'
/ecw/offer/dept/page
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/dept/page
"
,
method
:
"
get
"
,
params
})
}
...
...
@@ -137,25 +136,33 @@ export function offerDeptPage(params) {
// 导出部分报价单 exportDeptOfferExcel
export
function
exportDeptOfferExcel
(
query
)
{
return
request
({
url
:
'
/ecw/offer/dept/export-excel
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/dept/export-excel
"
,
method
:
"
get
"
,
params
:
query
,
responseType
:
'
blob
'
responseType
:
"
blob
"
})
}
// 报价单
export
function
getOfferSelect
(
params
)
{
return
request
({
url
:
'
/ecw/offer/select
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/select
"
,
method
:
"
get
"
,
params
})
}
// 报价单
export
function
getOfferCheck
(
params
)
{
return
request
({
url
:
'
/ecw/offer/check
'
,
method
:
'
get
'
,
url
:
"
/ecw/offer/check
"
,
method
:
"
get
"
,
params
})
}
// 特价详情
export
function
getOfferNumber
(
offerId
)
{
return
request
({
url
:
"
/ecw/offer/getNumber/
"
+
offerId
,
method
:
"
get
"
})
}
src/api/ecw/warehouse.js
View file @
ca65a30e
...
...
@@ -150,3 +150,21 @@ export function getGuojiaAndShiAndWarehouseList(params = {}) {
params
})
}
// 出货阶段-追加申请
export
function
appendApplyWhenShipment
(
data
)
{
return
request
({
url
:
'
/order/order-warehouse-in/append-apply-when-shipment
'
,
method
:
'
post
'
,
data
})
}
// 出货阶段-入仓修改申请
export
function
updateApplyWhenShipment
(
data
)
{
return
request
({
url
:
'
/order/order-warehouse-in/update-apply-when-shipment
'
,
method
:
'
put
'
,
data
})
}
src/components/RoutersSelector/index.vue
View file @
ca65a30e
...
...
@@ -11,7 +11,10 @@
</el-select>
{{$t('目的国')}}:
<el-select
:placeholder=
"$t('请选择目的国')"
v-model=
"destCountryId"
clearable
>
<el-select
:placeholder=
"$t('请选择目的国')"
v-model=
"destCountryIds"
multiple
clearable
>
<el-option
v-for=
"item in countryList"
:key=
"item.id"
:label=
"$l(item, 'title')"
:value=
"item.id"
/>
</el-select>
...
...
@@ -21,11 +24,17 @@
<el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select>
-->
<el-select
:placeholder=
"$t('请选择目的城市')"
v-model=
"destCityId"
clearable
>
<el-select
:placeholder=
"$t('请选择目的城市')"
v-model=
"destCityIds"
multiple
clearable
>
<el-option
v-for=
"item in AddressCity"
:key=
"item.shi"
:label=
"item.shiName"
:value=
"item.shi"
/>
</el-select>
{{$t('目的仓')}}:
<el-select
:placeholder=
"$t('请选择目的仓')"
v-model=
"destWarehouseId"
clearable
>
<el-select
:placeholder=
"$t('请选择目的仓')"
v-model=
"destWarehouseIds"
multiple
clearable
>
<el-option
v-for=
"item in AddressTown"
:key=
"item.id"
:label=
"item.titleZh"
:value=
"item.id"
/>
</el-select>
...
...
@@ -134,9 +143,9 @@ export default {
countryList
:
[],
//目的国
AddressCity
:
[],
//目的地
AddressTown
:
[],
//目的仓
destCountryId
:
null
,
destCityId
:
null
,
destWarehouseId
:
null
,
destCountryId
s
:
null
,
destCityId
s
:
null
,
destWarehouseId
s
:
null
,
}
},
...
...
@@ -283,17 +292,17 @@ export default {
//每当值省份值改变时其下地区值进行清空
this
.
AddressCity
=
[];
this
.
AddressTown
=
[];
this
.
destWarehouseId
=
""
;
this
.
destCityId
=
""
;
this
.
destWarehouseId
s
=
""
;
this
.
destCityId
s
=
""
;
this
.
findByprovinceCode
();
if
(
this
.
destCountryId
==
""
)
{
if
(
this
.
destCountryId
s
==
""
)
{
//1 是所有区域,2 国家,3是市,
this
.
getAddressCity
()
this
.
getAddressTown
()
}
else
if
(
this
.
destCountryId
!=
""
&&
this
.
destCityId
==
""
&&
this
.
destWarehouseId
==
""
this
.
destCountryId
s
!=
""
&&
this
.
destCityId
s
==
""
&&
this
.
destWarehouseId
s
==
""
)
{
this
.
getAddressTown
()
}
...
...
@@ -304,32 +313,32 @@ export default {
deep
:
true
,
//深度监听 目的仓
handler
()
{
this
.
AddressTown
=
[];
this
.
destWarehouseId
=
""
;
this
.
destWarehouseId
s
=
""
;
this
.
findBycityCode
();
if
(
this
.
destCityId
!=
""
&&
this
.
destCountryId
!=
""
&&
this
.
destWarehouseId
==
""
this
.
destCityId
s
!=
""
&&
this
.
destCountryId
s
!=
""
&&
this
.
destWarehouseId
s
==
""
)
{
//获取当前城市值id,获取该城市下区域
}
else
if
(
this
.
destCountryId
==
""
&&
this
.
destCityId
==
""
&&
this
.
destWarehouseId
==
""
this
.
destCountryId
s
==
""
&&
this
.
destCityId
s
==
""
&&
this
.
destWarehouseId
s
==
""
)
{
this
.
getAddressTown
()
}
else
if
(
this
.
destCountryId
!=
""
&&
this
.
destCityId
==
""
&&
this
.
destWarehouseId
==
""
this
.
destCountryId
s
!=
""
&&
this
.
destCityId
s
==
""
&&
this
.
destWarehouseId
s
==
""
)
{
this
.
findByprovinceCode
()
this
.
getAddressTown
()
}
else
if
(
this
.
destCountryId
==
""
&&
this
.
destCityId
!=
""
&&
this
.
destWarehouseId
==
""
this
.
destCountryId
s
==
""
&&
this
.
destCityId
s
!=
""
&&
this
.
destWarehouseId
s
==
""
)
{
//获取当前城市值id,获取该城市下区域
...
...
@@ -342,22 +351,22 @@ export default {
deep
:
true
,
//深度监听
handler
()
{
if
(
this
.
destCountryId
!=
""
&&
this
.
destCityId
!=
""
&&
this
.
destWarehouseId
==
""
this
.
destCountryId
s
!=
""
&&
this
.
destCityId
s
!=
""
&&
this
.
destWarehouseId
s
==
""
)
{
//获取当前城市值id,获取该城市下区域
this
.
findBycityCode
()
}
else
if
(
this
.
destCountryId
!=
""
&&
this
.
destCityId
==
""
&&
this
.
destWarehouseId
==
""
this
.
destCountryId
s
!=
""
&&
this
.
destCityId
s
==
""
&&
this
.
destWarehouseId
s
==
""
)
{
this
.
getAddressTown
()
}
else
if
(
this
.
destCountryId
==
""
&&
this
.
destCityId
!=
""
&&
this
.
destWarehouseId
==
""
this
.
destCountryId
s
==
""
&&
this
.
destCityId
s
!=
""
&&
this
.
destWarehouseId
s
==
""
)
{
this
.
findBycityCode
()
}
...
...
@@ -394,7 +403,7 @@ export default {
if
(
this
.
type
==
'
sea
'
)
return
let
query
=
{
// cityId: this.importCity
cityId
:
this
.
destCityId
cityId
:
this
.
destCityId
s
}
getChannelList
(
query
).
then
(
res
=>
{
this
.
channelList
=
res
.
data
...
...
@@ -407,9 +416,9 @@ export default {
},
changeOption
(){
if
(
!
this
.
option
)
return
this
.
destCountryId
=
+
this
.
option
.
destCountryId
||
null
this
.
destCityId
=
+
this
.
option
.
destCityId
||
null
this
.
destWarehouseId
=
+
this
.
option
.
destWarehouseId
||
null
this
.
destCountryId
s
=
+
this
.
option
.
destCountryId
||
null
this
.
destCityId
s
=
+
this
.
option
.
destCityId
||
null
this
.
destWarehouseId
s
=
+
this
.
option
.
destWarehouseId
||
null
// this.importCity = +this.option.importCity || null
this
.
exportCity
=
+
this
.
option
.
exportCity
||
null
this
.
transportType
=
this
.
option
.
transportId
||
null
...
...
@@ -428,14 +437,14 @@ export default {
if
(
this
.
exportCity
){
params
.
startCityId
=
this
.
exportCity
}
if
(
this
.
destCountryId
){
params
.
destCountryId
=
this
.
destCountryId
if
(
this
.
destCountryId
s
){
params
.
destCountryId
s
=
this
.
destCountryId
}
if
(
this
.
destCityId
){
params
.
destCityId
=
this
.
destCityId
if
(
this
.
destCityId
s
){
params
.
destCityId
s
=
this
.
destCityIds
}
if
(
this
.
destWarehouseId
){
params
.
destWarehouseId
=
this
.
destWarehouseId
if
(
this
.
destWarehouseId
s
){
params
.
destWarehouseId
s
=
this
.
destWarehouseIds
}
const
res
=
await
openedRouterList
(
params
)
this
.
openedRouterList
=
res
.
data
.
filter
(
item
=>
{
...
...
@@ -511,18 +520,18 @@ export default {
})
},
findByprovinceCode
()
{
if
(
this
.
destCountryId
!=
null
&&
this
.
destCountryId
!=
''
)
{
if
(
this
.
destCountryId
s
!=
null
&&
this
.
destCountryIds
!=
''
)
{
//获取当前省份值id,获取该省份下城市 destCountryId provinceCode
getRegionList
(
2
,
this
.
destCountryId
).
then
(({
data
})
=>
{
getRegionList
(
2
,
this
.
destCountryId
s
).
then
(({
data
})
=>
{
this
.
AddressCity
=
data
;
})
}
},
findBycityCode
()
{
if
(
this
.
destCityId
!=
null
&&
this
.
destCityId
!=
''
)
{
if
(
this
.
destCityId
s
!=
null
&&
this
.
destCityIds
!=
''
)
{
//获取当前城市值id,获取该城市下区域
getRegionList
(
3
,
this
.
destCityId
).
then
(({
data
})
=>
{
getRegionList
(
3
,
this
.
destCityId
s
).
then
(({
data
})
=>
{
this
.
AddressTown
=
data
;
})
}
...
...
src/styles/custom.scss
View file @
ca65a30e
...
...
@@ -15,3 +15,13 @@
justify-content
:
center
;
align-items
:
center
;
}
.custom-form-1
{
padding-right
:
40px
;
.el-textarea
,
.dict-selector
,
.el-select
{
width
:
100%
;
}
}
src/views/ecw/box/shippingAir/nodePage/unloading/startUnloading.vue
View file @
ca65a30e
...
...
@@ -145,7 +145,7 @@
<div
class=
"btns"
>
<el-button
type=
"danger"
size=
"small"
@
click=
"openError(scope.row)"
>
{{
$t
(
"
异常
"
)
}}
</el-button>
<el-button
v-if=
"pageData.boxCustomsBackVO && pageData.boxCustomsBackVO.overMachineStatus == 2 && pageData.boxCustomsBackVO.overMachineAbnormalStatus == 2"
plain
type=
"primary"
size=
"small"
@
click=
"$router.push('/order/warehousing-update?id=' + scope.row.orderId)"
>
{{
$t
(
"
入仓修改
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"order_warehouse_check_revoke(scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 218"
>
{{
$t
(
"
撤销到仓
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"order_warehouse_check_revoke(scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 218
&& !isSuccessReview && !isUnderReview
"
>
{{
$t
(
"
撤销到仓
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"order_warehouse_check_force(scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum"
>
{{
$t
(
"
强制到仓
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 218"
>
{{
$t
(
"
到仓修改
"
)
}}
</el-button>
</div>
...
...
@@ -619,6 +619,11 @@ export default {
const
{
currNode
,
shipmentObj
}
=
this
.
$attrs
return
shipmentObj
[
currNode
.
keyName
]
===
183
?
true
:
false
},
/* 是否卸柜审核成功 */
isSuccessReview
()
{
const
{
currNode
,
shipmentObj
}
=
this
.
$attrs
return
shipmentObj
[
currNode
.
keyName
]
===
185
?
true
:
false
},
// 部分信息
getSectionInfo
()
{
const
{
totalStatistics
,
secStatistics
}
=
this
.
pageData
...
...
src/views/ecw/box/shippingSea/nodePage/unloading/startUnloading.vue
View file @
ca65a30e
...
...
@@ -135,7 +135,7 @@
<
template
slot-scope=
"scope"
>
<div
class=
"btns"
>
<el-button
type=
"danger"
size=
"small"
@
click=
"openError(scope.row)"
>
{{
$t
(
"
异常
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"order_warehouse_check_revoke(scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 218"
>
{{
$t
(
"
撤销到仓
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"order_warehouse_check_revoke(scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 218
&& !isSuccessReview && !isUnderReview
"
>
{{
$t
(
"
撤销到仓
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"order_warehouse_check_force(scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum"
>
{{
$t
(
"
强制到仓
"
)
}}
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)"
v-if=
"scope.row.inWarehouseState == 218"
>
{{
$t
(
"
到仓修改
"
)
}}
</el-button>
</div>
...
...
src/views/ecw/coupon/index.vue
View file @
ca65a30e
...
...
@@ -34,14 +34,15 @@
</el-form-item>
<el-form-item
:label=
"$t('有效期')"
prop=
"validDays"
>
<el-input
v-model.trim=
"queryParams.validDays"
:placeholder=
"$t('请输入有效期')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
<el-form-item
:label=
"$t('结束时间')"
>
<el-date-picker
v-model=
"dateRangeEndTime"
type=
"daterange"
:start-placeholder=
"$t('开始日期')"
value-format=
"yyyy-MM-dd"
:end-placeholder=
"$t('结束日期')"
>
</el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
...
...
@@ -103,7 +104,6 @@
<div>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</div>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('有效期(天)')"
align=
"center"
prop=
"validDays"
width=
"90"
/>
<el-table-column
:label=
"$t('开始时间')"
align=
"center"
prop=
"startTime"
width=
"100"
>
<
template
slot-scope=
"scope"
>
...
...
src/views/ecw/customer/components/customerFollow.vue
View file @
ca65a30e
<
template
>
<div
class=
"customer-follow"
>
<el-dialog
append-to-body
:title=
"$t('客户跟进')"
:visible.sync=
"customerFollow.dialogVisible"
:before-close=
"customerFollowClose"
width=
"
9
00px"
>
<el-form
ref=
"customerFollowForm"
:model=
"form"
label-width=
"120px"
>
<el-dialog
append-to-body
:title=
"$t('客户跟进')"
:visible.sync=
"customerFollow.dialogVisible"
:before-close=
"customerFollowClose"
width=
"
12
00px"
>
<el-form
class=
"custom-form-1"
ref=
"customerFollowForm"
:model=
"form"
label-width=
"120px"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('编号')"
prop=
"number"
>
<el-input
v-model=
"form.number"
:placeholder=
"$t('请输入编号')"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进状态')"
>
<el-select
v-model=
"form.status"
:placeholder=
"$t('请选择')"
disabled
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('客户编号')"
>
<el-input
v-model=
"form.customerNumber"
:placeholder=
"$t('请输入客户编号')"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进类型')"
required
>
<el-select
v-model=
"form.followType"
clearable
:placeholder=
"$t('请选择')"
@
change=
"handleFollowType"
:disabled=
"isView || !!offerId"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"8"
v-if=
"form.followType == 2"
>
<el-form-item
:label=
"$t('报价单')"
required
prop=
"offerId"
>
<el-input
:value=
"form.offerNumber"
readonly
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"CustomerFollowSelectOffer = true"
v-if=
"!(isView || offerId)"
></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
:label=
"$t('跟进时间')"
required
>
<el-date-picker
v-model=
"form.followTime"
clearable
type=
"datetime"
:placeholder=
"$t('请选择')"
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
v-if=
"customerId"
>
<el-col
:span=
"
8
"
v-if=
"customerId"
>
<el-form-item
:label=
"$t('联系人')"
required
>
<el-select
v-model=
"form.contactId"
clearable
:placeholder=
"$t('请选择')"
:disabled=
"isView"
@
change=
"changeContactUser"
>
<el-option
v-for=
"(item, index) in customerContactsList"
:key=
"index"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
v-else
>
<el-col
:span=
"
8
"
v-else
>
<el-form-item
:label=
"$t('联系人')"
required
>
<div
class=
"contact"
>
<el-input
v-model=
"form.contactName"
:value=
"form.customerContactsId"
placeholder=
""
disabled
/>
...
...
@@ -48,47 +55,47 @@
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('联系方式')"
>
<el-input
v-model=
"form.contactPhone"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('客户经理')"
required
>
<el-select
v-model=
"form.followUserId"
clearable
:placeholder=
"$t('请选择')"
:disabled=
"isView"
>
<el-option
v-for=
"item in serviceUserList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进方式')"
required
>
<dict-selector
ref=
"dictMethod"
v-model=
"form.followMethod"
clearable
:disabled=
"isView"
:type=
"DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"
></dict-selector>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('上一级跟进单')"
prop=
"parentNumber"
>
<el-input
v-model=
"form.parentNumber"
:placeholder=
"$t('请输入上一级跟进单')"
disabled
/>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('跟进结果')"
prop=
"followMethod"
>
<el-select
v-model=
"form.resultType"
clearable
:placeholder=
"$t('请选择')"
:disabled=
"isView"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('目的')"
prop=
"purpose"
>
<el-input
type=
"textarea"
:rows=
"
2
"
v-model=
"form.purpose"
:placeholder=
"$t('请输入目的')"
maxlength=
"200"
show-word-limit
:disabled=
"isView"
/>
<el-input
type=
"textarea"
:rows=
"
3
"
v-model=
"form.purpose"
:placeholder=
"$t('请输入目的')"
maxlength=
"200"
show-word-limit
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('跟进情况')"
>
<el-input
rows=
"3"
class=
"text_style"
type=
"textarea"
v-model=
"form.feedback"
maxlength=
"500"
show-word-limit
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('附件')"
prop=
"attatchment"
>
<FileUpload
:limit=
"5"
:isShowTip=
"true"
v-model=
"form.attatchment"
:fileType=
"fileType"
:disabled=
"isView"
/>
</el-form-item>
...
...
@@ -98,12 +105,12 @@
<el-date-picker
v-model=
"form.nextTime"
type=
"datetime"
:placeholder=
"$t('请选择')"
:disabled=
"isView"
@
change=
"changeNextTime"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
>
<el-col
:span=
"2
4
"
>
<el-form-item
:label=
"$t('下一步计划')"
prop=
"nextPlan"
>
<el-input
type=
"textarea"
:rows=
"3"
v-model=
"form.nextPlan"
:placeholder=
"$t('请输入下一步计划')"
maxlength=
"500"
show-word-limit
:disabled=
"isView"
/>
</el-form-item>
</el-col>
<el-col
:span=
"2
0
"
v-if=
"isView"
>
<el-col
:span=
"2
4
"
v-if=
"isView"
>
<el-form-item>
<div
style=
"text-align: right"
>
<!--
<el-button
size=
"mini"
icon=
"el-icon-collection"
type=
"primary"
@
click=
"$emit('handleCustomerFollowAdd', form)"
v-has-permi=
"['ecw:customer:follow-add-plan']"
>
{{
$t
(
"
增加计划
"
)
}}
</el-button>
-->
...
...
@@ -111,26 +118,26 @@
</div>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('创建人')"
prop=
"founder"
>
<el-select
v-model=
"form.creatorName"
disabled
:placeholder=
"$t('请选择')"
>
<el-option
v-for=
"item in allSimplList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('创建时间')"
prop=
"createTime"
>
<el-date-picker
v-model=
"form.createTime"
type=
"datetime"
disabled
:placeholder=
"$t('请选择')"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('最后更新人')"
>
<el-select
v-model=
"form.updaterName"
disabled
>
<el-option
v-for=
"item in allSimplList"
:key=
"item.id"
:label=
"item.nickname"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"
12
"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('最后更新时间')"
>
<el-date-picker
v-model=
"form.updateTime"
type=
"datetime"
disabled
:placeholder=
"$t('请选择')"
>
</el-date-picker>
</el-form-item>
...
...
@@ -166,7 +173,7 @@
<
script
>
import
{
createCustomerFollow
,
getCustomerFollowPage
,
getCustomerFollowPage2
,
addCustomerFollow
,
getCustomerFollowList
,
editCustomerFollow
,
getFollowupNewNumber
}
from
"
@/api/ecw/customerFollow
"
import
{
getCustomerContactsSelect
}
from
"
@/api/ecw/customerContacts
"
import
{
getOfferPage
}
from
"
@/api/ecw/offer
"
import
{
getOfferPage
,
getOfferNumber
}
from
"
@/api/ecw/offer
"
import
{
DICT_TYPE
,
getDictDataLabel
}
from
"
@/utils/dict
"
import
{
getCustomerContactsListByCustomer
}
from
"
@/api/ecw/customerContacts
"
import
{
listAllSimpl
,
listServiceUser
,
listSimpleUsers
}
from
"
@/api/system/user
"
...
...
@@ -213,7 +220,9 @@ export default {
}
},
offerDialogVisible
:
true
,
form
:
{},
form
:
{
offerId
:
undefined
},
pageNo
:
1
,
pageSize
:
10
,
total
:
10
,
...
...
@@ -247,6 +256,17 @@ export default {
this
.
allSimplList
=
r
.
data
})
},
watch
:
{
"
form.offerId
"
(
v
)
{
if
(
v
)
{
getOfferNumber
(
v
).
then
((
r
)
=>
{
this
.
form
.
offerNumber
=
r
.
data
})
}
else
{
this
.
form
.
offerNumber
=
""
}
}
},
methods
:
{
selectOffer
(
offerId
)
{
this
.
form
.
offerId
=
offerId
...
...
@@ -317,7 +337,6 @@ export default {
handleFollowType
(
val
)
{
console
.
log
(
val
)
if
(
val
==
2
)
{
this
.
CustomerFollowSelectOffer
=
true
}
else
{
this
.
form
.
offerId
=
undefined
}
...
...
@@ -339,6 +358,7 @@ export default {
nextTime
:
undefined
,
number
:
undefined
,
offerId
:
this
.
offerId
,
offerNumber
:
undefined
,
parentId
:
undefined
,
parentNumber
:
undefined
,
purpose
:
undefined
,
...
...
@@ -386,6 +406,10 @@ export default {
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择跟进方式
"
))
return
}
if
(
!
this
.
form
.
offerId
&&
this
.
form
.
followType
==
2
)
{
this
.
$modal
.
msgError
(
this
.
$t
(
"
请选择报价单
"
))
return
}
if
(
status
===
0
)
{
this
.
saveSubmitData
(
status
)
...
...
@@ -457,6 +481,7 @@ export default {
...
row
,
id
:
null
,
parentNumber
:
row
.
number
,
purpose
:
row
.
nextPlan
,
followTime
:
row
.
nextTime
,
nextTime
:
""
,
number
:
r
.
data
.
number
,
...
...
src/views/ecw/customer/components/customerFollowUpdateStatus.vue
View file @
ca65a30e
...
...
@@ -61,7 +61,7 @@ export default {
},
methods
:
{
submit
()
{
if
(
!
this
.
status
)
{
if
(
this
.
status
==
null
||
this
.
status
==
undefined
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
'
请选择修改的状态!
'
));
}
console
.
log
(
this
.
followupIds
,
'
this.followupIds
'
)
...
...
src/views/ecw/customer/edit.vue
View file @
ca65a30e
...
...
@@ -854,7 +854,7 @@ export default {
currecyList
:
[],
enterOpenSeaTime
:
undefined
,
showBaseFlag
:
false
,
showShippingFlag
:
fals
e
,
showShippingFlag
:
tru
e
,
showSettingFlag
:
false
,
showFinanceFlag
:
false
,
competitorList
:
[]
...
...
src/views/ecw/customer/index.vue
View file @
ca65a30e
...
...
@@ -228,21 +228,21 @@
-->
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
...
...
@@ -667,7 +667,7 @@
</div>
</el-dialog>
<customer-follow-list
:customer-id=
"customerId"
:id=
"customerId"
:customer-service=
"customerService"
:customer-number=
"customerNumber"
ref=
"CustomerFollowList"
v-if=
"customerFollowVisible"
></customer-follow-list>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
@
close=
"customerFollowVisible = false"
v-if=
"customerFollowVisible"
/>
<customer-complaints
:customer-id=
"customerId"
ref=
"customerComplaints"
></customer-complaints>
<transfer-customer
:show.sync=
"transferShow"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
<add-potential-custom
ref=
"potentialCustom"
@
change=
"getList"
></add-potential-custom>
...
...
@@ -719,10 +719,10 @@ import { getCustomerSelect } from "@/api/ecw/customer"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
import
UserSelector
from
"
@/components/UserSelector/index.vue
"
;
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
;
import
ProductSelector
from
"
@/components/ProductSelector/index.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
UserSelector
from
"
@/components/UserSelector/index.vue
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
import
ProductSelector
from
"
@/components/ProductSelector/index.vue
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
export
default
{
name
:
"
EcwCustomerIndex
"
,
components
:
{
...
...
@@ -1011,7 +1011,6 @@ export default {
this
.
getList
()
},
methods
:
{
onCompetitorChange
(
row
,
competitor
)
{
// row.goodsType = product ? product.typeId : null
row
.
id
=
!
competitor
...
...
src/views/ecw/customer/query.vue
View file @
ca65a30e
...
...
@@ -672,7 +672,7 @@
</div>
</el-dialog>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
:customer-id=
"id"
:customer-service=
"customer.customerService"
:customer-number=
"customer.number"
@
refresh=
"logListCommonRefresh"
/>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
@
close=
"customerFollowVisible = false"
:customer-id=
"id"
:customer-service=
"customer.customerService"
:customer-number=
"customer.number"
@
refresh=
"logListCommonRefresh"
/>
</div>
</template>
...
...
src/views/ecw/customerConfirm/index.vue
View file @
ca65a30e
...
...
@@ -168,12 +168,10 @@
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"$router.push({path:'/customer/add-edit/0',query:{isCustomerServiceConfirmed:true,}})"
v-hasPermi=
"['ecw:customer: treat-create']"
>
{{$t('新增')}}
</el-button>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"$router.push({ path: '/customer/add-edit/0', query: { isCustomerServiceConfirmed: true } })"
v-hasPermi=
"['ecw:customer: treat-create']"
>
{{ $t("新增") }}
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:treat-export']"
>
{{$t('导出')}}
</el-button>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:treat-export']"
>
{{ $t("导出") }}
</el-button>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
...
...
@@ -182,15 +180,15 @@
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
fixed
></el-table-column>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
fixed
>
<
template
v-slot=
"{
row
}"
>
<
template
v-slot=
"{
row
}"
>
<router-link
:to=
"`/customer/query/$
{row.id}`" class="link-type">
{{
row
.
number
}}
</router-link>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
fixed
>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block;white-space: pre-wrap;"
>
{{
$l
(
row
,
'
name
'
)
}}
</p>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block; white-space: pre-wrap"
>
{{
$l
(
row
,
"
name
"
)
}}
</p>
</
template
>
</el-table-column>
<!--
...
...
@@ -207,41 +205,49 @@
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户类别')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('角色')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"customerServiceName"
></el-table-column>
...
...
@@ -253,10 +259,7 @@
</el-table-column>
<el-table-column
:label=
"$t('客户来源')"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('业务国家')"
>
...
...
@@ -279,8 +282,7 @@
{{
getProductTypeNames
(
row
.
productTypes
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('年度发货次数')"
align=
"center"
>
<
template
slot-scope=
"{ row }"
>
{{
row
.
numYearly
}}
...
...
@@ -293,13 +295,13 @@
</el-table-column>
<el-table-column
:label=
"$t('入公海时间')"
align=
"center"
width=
"160"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入仓确认')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
'
是
'
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
'
否
'
)
}}
</el-tag>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
"
是
"
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
"
否
"
)
}}
</el-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('控货无收货人')"
align=
"center"
>
...
...
@@ -324,14 +326,10 @@
</el-table-column>
<el-table-column
:label=
"$t('获取方式')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
...
...
@@ -339,51 +337,38 @@
</el-table-column>
<el-table-column
:label=
"$t('最后更新时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span
>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('分配时间')"
align=
"center"
width=
"180"
>
<
template
v-slot=
"{row
}"
>
<span>
{{
parseTime
(
row
.
customerServiceAssignedTime
)
}}
</span>
<
template
v-slot=
"{ row
}"
>
<span>
{{
parseTime
(
row
.
customerServiceAssignedTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
width=
"200px"
:label=
"$t('操作')"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"'/customer/query/' + scope.row.id"
>
<el-button
v-has-permi=
"['ecw:customer:treat-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
<el-button
v-has-permi=
"['ecw:customer:treat-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
</router-link>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleConfirmService(scope.row)"
v-hasPermi=
"['ecw:customer:treat-accept']"
>
{{
$t
(
'
确认接收
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
@
click=
"handOver(scope.row)"
v-hasPermi=
"['ecw:customer:treat-transfer']"
>
{{
$t
(
'
移交
'
)
}}
</el-button>
<router-link
style=
"margin: 0 10px;"
to=
"/offer/create"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleConfirmService(scope.row)"
v-hasPermi=
"['ecw:customer:treat-accept']"
>
{{
$t
(
"
确认接收
"
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
@
click=
"handOver(scope.row)"
v-hasPermi=
"['ecw:customer:treat-transfer']"
>
{{
$t
(
"
移交
"
)
}}
</el-button>
<router-link
style=
"margin: 0 10px"
to=
"/offer/create"
>
<el-button
v-has-permi=
"['ecw:customer:treat-quoted-price']"
size=
"mini"
type=
"text"
>
{{
$t
(
'
报价
'
)
}}
{{
$t
(
"
报价
"
)
}}
</el-button>
</router-link>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:treat-perfect']"
>
{{
$t
(
'
完善
'
)
}}
</el-button>
<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:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button
>
<el-button
v-has-permi=
"['ecw:customer:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<!-- 对话框(添加 / 修改) -->
<el-dialog
:title=
"title"
:visible.sync=
"open"
width=
"500px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户名称')"
prop=
"name"
>
<el-input
v-model=
"form.name"
:placeholder=
"$t('请输入客户名称')"
/>
...
...
@@ -392,24 +377,21 @@
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('国家')"
prop=
"country"
>
<el-select
v-model=
"form.country"
:placeholder=
"$t('请选择国家')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户等级')"
prop=
"level"
>
<el-select
v-model=
"form.level"
:placeholder=
"$t('请选择客户等级')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('所属代理')"
prop=
"agentId"
>
<el-select
v-model=
"form.agentId"
:placeholder=
"$t('请选择所属代理')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
...
...
@@ -421,8 +403,7 @@
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户类别')"
prop=
"type"
>
<el-select
v-model=
"form.type"
:placeholder=
"$t('请选择客户类别')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
</el-col>
...
...
@@ -434,13 +415,11 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('公司名称')"
prop=
"company"
>
<el-input
v-model=
"form.company"
:placeholder=
"$t('请输入公司名称')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户生日')"
prop=
"birthday"
>
<el-input
v-model=
"form.birthday"
:placeholder=
"$t('请输入客户生日')"
/>
</el-form-item>
...
...
@@ -456,44 +435,35 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户来源')"
prop=
"source"
>
<el-select
v-model=
"form.source"
:placeholder=
"$t('请选择客户来源')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('结算方式')"
prop=
"balance"
>
<el-select
v-model=
"form.balance"
:placeholder=
"$t('请选择结算方式')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<el-select
v-model=
"form.customerService"
:placeholder=
"$t('请选择客户经理')"
>
<el-option
v-for=
"dict in serviceStaffOptions"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
<el-option
v-for=
"dict in serviceStaffOptions"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('图片')"
prop=
"picture"
>
<el-input
v-model=
"form.picture"
:placeholder=
"$t('请输入图片')"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('客户状态')"
prop=
"status"
>
<el-select
v-model=
"form.status"
:placeholder=
"$t('请选择客户状态')"
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</el-col>
...
...
@@ -528,9 +498,6 @@
</el-form-item>
</el-col>
<el-form-item
:label=
"$t('关联会员账号')"
prop=
"memberId"
>
<el-input
v-model=
"form.memberId"
:placeholder=
"$t('请输入关联会员账号')"
/>
</el-form-item>
...
...
@@ -564,8 +531,8 @@
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{
$t('确 定')
}}
</el-button>
<el-button
@
click=
"cancel"
>
{{
$t('取 消')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{
$t("确 定")
}}
</el-button>
<el-button
@
click=
"cancel"
>
{{
$t("取 消")
}}
</el-button>
</div>
</el-dialog>
...
...
@@ -575,65 +542,52 @@
<el-form
ref=
"handOverForm"
:model=
"handOverForm"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerServiceId"
>
<el-select
v-model=
"handOverForm.customerServiceId"
:placeholder=
"$t('请选择客户经理')"
clearable
filterable
>
<el-option
v-for=
"user in serviceStaffOptions"
:key=
"user.id"
:value=
"user.id"
:label=
"user.nickname"
/>
<el-option
v-for=
"user in serviceStaffOptions"
:key=
"user.id"
:value=
"user.id"
:label=
"user.nickname"
/>
</el-select>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitHandOverForm"
>
{{
$t('确 定')
}}
</el-button>
<el-button
@
click=
"cancelHandOver"
>
{{
$t('取 消')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"submitHandOverForm"
>
{{
$t("确 定")
}}
</el-button>
<el-button
@
click=
"cancelHandOver"
>
{{
$t("取 消")
}}
</el-button>
</div>
</el-dialog>
<transfer-customer
:show.sync=
"openHandOver"
:customer-ids.sync=
"handOverForm.customerIdList"
></transfer-customer>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
</div>
</template>
<
script
>
import
{
updateCustomer
,
getCustomer
,
exportCustomerExcel
,
getWaitForConfirmList
,
confirm
,
waiteConfirmExportExcel
,
waiteConfirEexportExcel
,
recycleUnconfirmedCustomer
,
competitorListAll
}
from
"
@/api/ecw/customer
"
;
import
{
updateCustomer
,
getCustomer
,
exportCustomerExcel
,
getWaitForConfirmList
,
confirm
,
waiteConfirmExportExcel
,
waiteConfirEexportExcel
,
recycleUnconfirmedCustomer
,
competitorListAll
}
from
"
@/api/ecw/customer
"
import
{
listServiceUser
,
listAllSimpl
}
from
"
@/api/system/user
"
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
'
@/utils/dict
'
import
{
CommonStatusEnum
}
from
'
@/utils/constants
'
import
{
handOverCustomer
}
from
"
../../../api/ecw/customer
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
import
{
getNodeList
}
from
"
@/api/ecw/node
"
;
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
;
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
;
import
{
getProductList
}
from
"
@/api/ecw/product
"
;
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
"
@/utils/dict
"
import
{
CommonStatusEnum
}
from
"
@/utils/constants
"
import
{
handOverCustomer
}
from
"
../../../api/ecw/customer
"
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer.vue
"
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
import
{
getNodeList
}
from
"
@/api/ecw/node
"
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
import
Template
from
"
@/views/cms/template/index.vue
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
export
default
{
name
:
"
EcwCustomerconfirmIndex
"
,
activated
()
{
this
.
getList
()
;
this
.
getList
()
},
computed
:{
computed
:
{
DICT_TYPE
()
{
return
DICT_TYPE
},
isChinese
(){
return
this
.
$i18n
.
locale
===
'
zh_CN
'
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
},
channel
()
{
return
(
val
)
=>
{
...
...
@@ -642,20 +596,18 @@ export default {
.
filter
((
i
)
=>
(
val
.
split
(
"
,
"
)
||
[]).
includes
(
i
.
value
))
.
map
((
i
)
=>
(
this
.
isChinese
?
i
.
label
:
i
.
labelEn
))
.
join
(
"
,
"
)
:
""
;
}
;
:
""
}
},
customerSelectFn
()
{
if
(
this
.
recommended
.
length
>
0
)
{
let
i
=
this
.
customerSelect
.
find
(
(
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
);
let
i
=
this
.
customerSelect
.
find
((
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
)
if
(
!
i
)
{
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
;
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
}
return
this
.
customerSelect
;
return
this
.
customerSelect
}
else
{
return
this
.
customerSelect
;
return
this
.
customerSelect
}
},
combinedQueryParams
()
{
...
...
@@ -677,26 +629,26 @@ export default {
queryParams
.
endFirstDealTime
=
this
.
firstDealTime
[
1
]
}
if
(
this
.
weightYearly
.
value
)
{
let
key
=
'
eqWeightYearly
'
if
(
this
.
weightYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leWeightYearly
'
}
else
if
(
this
.
weightYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geWeightYearly
'
let
key
=
"
eqWeightYearly
"
if
(
this
.
weightYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leWeightYearly
"
}
else
if
(
this
.
weightYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geWeightYearly
"
}
queryParams
[
key
]
=
this
.
weightYearly
.
value
;
queryParams
[
key
]
=
this
.
weightYearly
.
value
}
if
(
this
.
numYearly
.
value
)
{
let
key
=
'
eqNumYearly
'
if
(
this
.
numYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leNumYearly
'
}
else
if
(
this
.
numYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geNumYearly
'
let
key
=
"
eqNumYearly
"
if
(
this
.
numYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leNumYearly
"
}
else
if
(
this
.
numYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geNumYearly
"
}
queryParams
[
key
]
=
this
.
numYearly
.
value
;
queryParams
[
key
]
=
this
.
numYearly
.
value
}
return
queryParams
;
}
,
return
queryParams
}
},
components
:
{
CompetitorSelector
,
...
...
@@ -730,7 +682,7 @@ export default {
// 查询参数
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
pageSize
:
10
/*number: null,
name: null,
level: null,
...
...
@@ -751,14 +703,14 @@ export default {
handOverForm
:
{},
// 表单校验
rules
:
{
name
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户名称不能为空
'
),
trigger
:
"
blur
"
}],
weightUnit
:
[{
required
:
true
,
message
:
this
.
$t
(
'
重货标准(CBM)不能为空
'
),
trigger
:
"
blur
"
}],
name
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户名称不能为空
"
),
trigger
:
"
blur
"
}],
weightUnit
:
[{
required
:
true
,
message
:
this
.
$t
(
"
重货标准(CBM)不能为空
"
),
trigger
:
"
blur
"
}]
},
serviceStaffOptions
:
[],
customerServiceList
:[],
countryList
:[],
creditList
:[],
customerServiceList
:
[],
countryList
:
[],
creditList
:
[],
selectCustomerList
:
[],
enterOpenSeaTime
:
[],
customerServiceConfirmedTime
:
[],
...
...
@@ -769,47 +721,47 @@ export default {
allSimplList
:
[],
weightYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
numYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
productTypeList
:
[],
productList
:
[],
competitorList
:
[],
deptList
:
[]
,
}
;
deptList
:
[]
}
},
created
()
{
this
.
getList
()
;
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
this
.
getList
()
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
((
r
)
=>
{
this
.
creditList
=
r
.
data
.
list
})
// 获得客服人员列表
listServiceUser
().
then
(
response
=>
{
this
.
serviceStaffOptions
=
response
.
data
;
listServiceUser
().
then
(
(
response
)
=>
{
this
.
serviceStaffOptions
=
response
.
data
})
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
listServiceUser
().
then
(
(
r
)
=>
{
this
.
customerServiceList
=
r
.
data
})
getCountryListAll
().
then
(
r
=>
{
getCountryListAll
().
then
(
(
r
)
=>
{
this
.
countryList
=
r
.
data
})
this
.
getCustomerSelect
()
;
this
.
getCustomerSelect
()
getNodeList
().
then
((
r
)
=>
{
this
.
getNodeLists
=
r
.
data
;
})
;
this
.
getNodeLists
=
r
.
data
})
listAllSimpl
().
then
((
r
)
=>
{
this
.
allSimplList
=
r
.
data
;
})
;
this
.
allSimplList
=
r
.
data
})
getProductTypeList
().
then
((
r
)
=>
{
this
.
productTypeList
=
r
.
data
;
})
;
this
.
productTypeList
=
r
.
data
})
competitorListAll
().
then
((
r
)
=>
{
this
.
competitorList
=
r
.
data
;
this
.
competitorList
=
r
.
data
})
listMySimpleDepts
().
then
(
response
=>
{
listMySimpleDepts
().
then
(
(
response
)
=>
{
this
.
deptList
=
response
.
data
})
},
...
...
@@ -839,38 +791,36 @@ export default {
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
},
handleSelectionChange
(
val
){
this
.
selectCustomerList
=
val
.
map
(
i
=>
i
.
id
);
handleSelectionChange
(
val
)
{
this
.
selectCustomerList
=
val
.
map
(
(
i
)
=>
i
.
id
)
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
// 处理查询参数
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
};
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
}
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false);
// 执行查询
getWaitForConfirmList
(
params
).
then
(
response
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
})
;
getWaitForConfirmList
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
this
.
total
=
response
.
data
.
total
this
.
loading
=
false
})
},
remoteMethod
(
val
)
{
this
.
getCustomerSelect
(
val
)
;
this
.
getCustomerSelect
(
val
)
},
getCustomerSelect
(
val
=
""
)
{
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
(
(
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
;
}
);
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
((
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
})
},
handleSelectProductType
(
val
)
{
if
(
val
&&
val
.
length
>=
1
)
{
this
.
queryParams
.
productIds
=
[]
getProductList
({
typeIds
:
val
}).
then
((
r
)
=>
{
this
.
productList
=
r
.
data
})
;
})
}
else
{
this
.
queryParams
.
productIds
=
[]
this
.
productList
=
[]
...
...
@@ -878,8 +828,8 @@ export default {
},
/** 取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
reset
()
;
this
.
open
=
false
this
.
reset
()
},
/** 表单重置 */
reset
()
{
...
...
@@ -916,49 +866,49 @@ export default {
taxRate
:
undefined
,
remarks
:
undefined
,
arrivalConfirm
:
undefined
,
weightUnit
:
undefined
,
}
;
this
.
resetForm
(
"
form
"
)
;
weightUnit
:
undefined
}
this
.
resetForm
(
"
form
"
)
},
/** 表单重置 */
resetHandOverForm
()
{
this
.
form
=
{
customerIdList
:
undefined
,
customerServiceId
:
undefined
}
;
this
.
resetForm
(
"
handOverForm
"
)
;
}
this
.
resetForm
(
"
handOverForm
"
)
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
getList
()
;
this
.
queryParams
.
pageNo
=
1
this
.
getList
()
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[]
;
this
.
dateRangeCreateTime
=
[]
this
.
enterOpenSeaTime
=
[]
this
.
customerServiceConfirmedTime
=
[]
this
.
firstDealTime
=
[]
this
.
resetForm
(
"
queryForm
"
)
;
this
.
resetForm
(
"
queryForm
"
)
this
.
queryParams
=
{
pageNo
:
1
,
pageSize
:
10
,
}
;
this
.
weightYearly
.
value
=
""
;
this
.
numYearly
.
value
=
""
;
this
.
handleQuery
()
;
pageSize
:
10
}
this
.
weightYearly
.
value
=
""
this
.
numYearly
.
value
=
""
this
.
handleQuery
()
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
reset
()
;
this
.
open
=
true
;
this
.
title
=
this
.
$t
(
'
添加客户
'
);
this
.
reset
()
this
.
open
=
true
this
.
title
=
this
.
$t
(
"
添加客户
"
)
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
reset
()
;
const
id
=
row
.
id
;
this
.
$router
.
push
({
path
:
'
/customer/perfect/
'
+
id
,
query
:{
isCustomerServiceConfirmed
:
true
,}});
this
.
reset
()
const
id
=
row
.
id
this
.
$router
.
push
({
path
:
"
/customer/perfect/
"
+
id
,
query
:
{
isCustomerServiceConfirmed
:
true
}
})
// getCustomer(id).then(response => {
// this.form = response.data;
// this.open = true;
...
...
@@ -967,49 +917,56 @@ export default {
},
/** 修改按钮操作 */
handleConfirmService
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认接收客户
'
)
+
'
["
'
+
row
.
name
+
'
"]?
'
).
then
(
function
()
{
return
confirm
({
"
customerId
"
:
id
});
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
接收成功
'
));
}).
catch
(()
=>
{});
const
id
=
row
.
id
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认接收客户
"
)
+
'
["
'
+
row
.
name
+
'
"]?
'
)
.
then
(
function
()
{
return
confirm
({
customerId
:
id
})
})
.
then
(()
=>
{
this
.
getList
()
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
接收成功
"
))
})
.
catch
(()
=>
{})
},
/** 修改按钮操作 */
handOver
(
row
)
{
// this.resetHandOverForm();
this
.
openHandOver
=
true
;
this
.
openHandOver
=
true
this
.
handOverForm
.
customerIdList
=
[
row
.
id
];
this
.
handOverForm
.
customerIdList
=
[
row
.
id
]
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
valid
=>
{
this
.
$refs
[
"
form
"
].
validate
(
(
valid
)
=>
{
if
(
!
valid
)
{
return
;
return
}
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
updateCustomer
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
this
.
open
=
false
;
this
.
getList
()
;
})
;
return
;
updateCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
))
this
.
open
=
false
this
.
getList
()
})
return
}
})
;
})
},
/** 删除按钮操作 */
handleDelete
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
)).
then
(
function
()
{
return
deleteCustomer
(
id
);
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
));
}).
catch
(()
=>
{});
const
id
=
row
.
id
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
))
.
then
(
function
()
{
return
deleteCustomer
(
id
)
})
.
then
(()
=>
{
this
.
getList
()
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
))
})
.
catch
(()
=>
{})
},
/** 导出按钮操作 */
handleExport
()
{
...
...
@@ -1019,85 +976,86 @@ export default {
// params.pageSize = undefined;
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出我的待接受客户数据项?
'
)).
then
(()
=>
{
waiteConfirEexportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
已加入导出队列,请稍后在下载日志中下载
'
))
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认导出我的待接受客户数据项?
"
))
.
then
(()
=>
{
waiteConfirEexportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
已加入导出队列,请稍后在下载日志中下载
"
))
})
})
}).
catch
(()
=>
{});
.
catch
(()
=>
{})
},
/** 提交按钮 */
submitHandOverForm
()
{
// 移交的提交
handOverCustomer
(
this
.
handOverForm
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
移交成功
'
));
this
.
openHandOver
=
false
;
this
.
getList
()
;
})
;
handOverCustomer
(
this
.
handOverForm
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
移交成功
"
))
this
.
openHandOver
=
false
this
.
getList
()
})
},
/** 取消按钮 */
cancelHandOver
()
{
this
.
openHandOver
=
false
;
this
.
openHandOver
=
false
this
.
handOverForm
=
{
customerId
:
undefined
,
customerIdList
:
undefined
}
;
customerIdList
:
undefined
}
},
handleSetting
(
row
)
{
this
.
$refs
[
'
customerSetting
'
].
dialogVisible
=
true
this
.
$nextTick
(
_
=>
{
this
.
$refs
[
'
customerSetting
'
].
init
(
row
.
id
)
this
.
$refs
[
"
customerSetting
"
].
dialogVisible
=
true
this
.
$nextTick
(
(
_
)
=>
{
this
.
$refs
[
"
customerSetting
"
].
init
(
row
.
id
)
})
},
getBusiCountryNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
countryList
.
forEach
(
item
=>
{
this
.
countryList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
nameZh
:
item
.
nameEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPickupPointNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
getNodeLists
.
forEach
(
item
=>
{
this
.
getNodeLists
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getProductTypeNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
toString
().
split
(
'
,
'
)
const
idsArr
=
ids
.
toString
().
split
(
"
,
"
)
const
strArr
=
[]
this
.
productTypeList
.
forEach
(
item
=>
{
this
.
productTypeList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPromoterName
(
id
)
{
if
(
id
)
{
let
strName
=
''
for
(
const
item
of
this
.
customerSelectFn
)
{
let
strName
=
""
for
(
const
item
of
this
.
customerSelectFn
)
{
if
(
item
.
id
==
id
)
{
strName
=
item
.
name
break
...
...
@@ -1109,5 +1067,5 @@ export default {
}
}
}
}
;
}
</
script
>
src/views/ecw/customerToBeAssigned/index.vue
View file @
ca65a30e
<
template
>
<div
class=
"app-container"
>
<!-- 搜索工作栏 -->
...
...
@@ -169,17 +168,14 @@
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['ecw:customer:distribution-create']"
>
{{$t('新增')}}
</el-button>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['ecw:customer:distribution-create']"
>
{{ $t("新增") }}
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:distribution-export']"
>
{{$t('导出')}}
</el-button>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:distribution-export']"
>
{{ $t("导出") }}
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
<el-button
:disabled=
"selectCustomerList.length === 0"
type=
"primary"
size=
"mini"
@
click=
"batchTransferShow = true;"
v-hasPermi=
"['ecw:customer:distribution-transfer']"
>
{{$t('批量移交')}}
</el-button>
<el-col
:span=
"1.5"
>
<el-button
:disabled=
"selectCustomerList.length === 0"
type=
"primary"
size=
"mini"
@
click=
"batchTransferShow = true"
v-hasPermi=
"['ecw:customer:distribution-transfer']"
>
{{ $t("批量移交") }}
</el-button>
</el-col>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
...
...
@@ -189,13 +185,13 @@
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
fixed
></el-table-column>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
prop=
"number"
>
<
template
v-slot=
"{
row
}"
>
{{
row
.
number
}}
<
template
v-slot=
"{
row
}"
>
{{
row
.
number
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block;white-space: pre-wrap;"
>
{{
$l
(
row
,
'
name
'
)
}}
</p>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<
template
v-slot=
"{
row
}"
>
<p
style=
"display:
inline-block; white-space: pre-wrap"
>
{{
$l
(
row
,
"
name
"
)
}}
</p>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户状态')"
align=
"center"
prop=
"status"
>
...
...
@@ -204,41 +200,49 @@
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户类别')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_TYPE
,
(
row
.
type
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('角色')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
''
).
split
(
'
,
'
)).
map
(
e
=>
isChinese
?
e
.
label
:
e
.
labelEn
).
join
(
'
,
'
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
{{
getDictDatas2
(
DICT_TYPE
.
CUSTOMER_ROLE
,
(
row
.
roles
||
""
).
split
(
"
,
"
))
.
map
((
e
)
=>
(
isChinese
?
e
.
label
:
e
.
labelEn
))
.
join
(
"
,
"
)
}}
<!--
<dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"customerServiceName"
></el-table-column>
...
...
@@ -250,10 +254,7 @@
</el-table-column>
<el-table-column
:label=
"$t('客户来源')"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_SOURCE"
:value=
"scope.row.source"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('业务国家')"
>
...
...
@@ -276,8 +277,7 @@
{{
getProductTypeNames
(
row
.
productTypes
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('主要竞争对手')"
prop=
"competitorNames"
>
</el-table-column>
<el-table-column
:label=
"$t('年度发货次数')"
align=
"center"
>
<
template
slot-scope=
"{ row }"
>
{{
row
.
numYearly
}}
...
...
@@ -290,13 +290,13 @@
</el-table-column>
<el-table-column
:label=
"$t('入公海时间')"
align=
"center"
width=
"160"
>
<
template
v-slot=
"{ row }"
>
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
{{
parseTime
(
row
.
enterOpenSeaTime
?
row
.
enterOpenSeaTime
:
row
.
estimateEnterOpenSeaTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入仓确认')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
'
是
'
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
'
否
'
)
}}
</el-tag>
<el-tag
type=
"success"
v-if=
"scope.row.arrivalConfirm == 1"
>
{{
$t
(
"
是
"
)
}}
</el-tag>
<el-tag
type=
"info"
v-else
>
{{
$t
(
"
否
"
)
}}
</el-tag>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('控货无收货人')"
align=
"center"
>
...
...
@@ -321,14 +321,10 @@
</el-table-column>
<el-table-column
:label=
"$t('获取方式')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_GET_METHOD"
:value=
"scope.row.getMethod"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建人')"
prop=
"createUsername"
align=
"center"
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
...
...
@@ -336,85 +332,63 @@
</el-table-column>
<el-table-column
:label=
"$t('最后更新时间')"
align=
"center"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span
>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
updateTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
width=
"200px"
:label=
"$t('操作')"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"'/customer/query/' + scope.row.id"
>
<el-button
v-has-permi=
"['ecw:customer:distribution-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
<el-button
v-has-permi=
"['ecw:customer:distribution-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
</router-link>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-update']"
>
{{
$t
(
'
编辑
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-delete']"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"distribution(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-customer-service']"
>
{{
$t
(
'
分配客服
'
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:customer:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-update']"
>
{{
$t
(
"
编辑
"
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-delete']"
>
{{
$t
(
"
删除
"
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"distribution(scope.row)"
v-hasPermi=
"['ecw:customer:distribution-customer-service']"
>
{{
$t
(
"
分配客服
"
)
}}
</el-button>
<el-button
v-has-permi=
"['ecw:customer:setting']"
size=
"mini"
type=
"text"
icon=
"el-icon-user"
@
click=
"handleSetting(scope.row)"
>
{{
$t
(
"
设置
"
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 移交 -->
<el-dialog
center
:title=
"$t('客服')"
:visible.sync=
"transferShow"
width=
"30%"
>
<div
style=
"width: 100%;min-height: 200px;text-align: center;"
>
<!-- <el-radio-group v-model="service">-->
<!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
<!-- </el-radio-group>-->
<el-dialog
center
:title=
"$t('客服')"
:visible.sync=
"transferShow"
width=
"30%"
>
<div
style=
"width: 100%; min-height: 200px; text-align: center"
>
<!-- <el-radio-group v-model="service">-->
<!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
<!-- </el-radio-group>-->
<el-select
filterable
v-model=
"service"
>
<el-option
v-for=
"(item,index) in customerServiceList"
:key=
"index"
:label=
"item.nickname"
:value=
"item.id"
></el-option>
<el-option
v-for=
"(item,
index) in customerServiceList"
:key=
"index"
:label=
"item.nickname"
:value=
"item.id"
></el-option>
</el-select>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"transferShow = false"
>
{{$t('取 消')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"transferFn"
>
{{$t('确 定')
}}
</el-button>
<el-button
@
click=
"transferShow = false"
>
{{ $t("取 消")
}}
</el-button>
<el-button
type=
"primary"
@
click=
"transferFn"
>
{{ $t("确 定")
}}
</el-button>
</span>
</el-dialog>
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<transfer-customer
:show.sync=
"batchTransferShow"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
</div>
</template>
<
script
>
import
{
createCustomer
,
updateCustomer
,
deleteCustomer
,
getCustomer
,
handOverCustomer
,
exportCustomerExcel
,
getCustomerToBeAssigned
,
waitDistributionExportExcel
,
competitorListAll
}
from
"
@/api/ecw/customer
"
;
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
'
@/utils/dict
'
;
import
upload
from
'
@/components/ImageUpload
'
import
{
listServiceUser
,
listAllSimpl
}
from
"
@/api/system/user
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
;
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
;
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
{
getNodeList
}
from
"
@/api/ecw/node
"
;
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
;
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
;
import
{
getProductList
}
from
"
@/api/ecw/product
"
;
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
;
import
{
createCustomer
,
updateCustomer
,
deleteCustomer
,
getCustomer
,
handOverCustomer
,
exportCustomerExcel
,
getCustomerToBeAssigned
,
waitDistributionExportExcel
,
competitorListAll
}
from
"
@/api/ecw/customer
"
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
"
@/utils/dict
"
import
upload
from
"
@/components/ImageUpload
"
import
{
listServiceUser
,
listAllSimpl
}
from
"
@/api/system/user
"
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
import
Template
from
"
@/views/cms/template/index.vue
"
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
import
CustomerSetting
from
"
../customer/components/customerSetting.vue
"
import
AreaCodeSelector
from
"
@/components/AreaCodeSelector/index.vue
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow.vue
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
import
{
getNodeList
}
from
"
@/api/ecw/node
"
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
{
listMySimpleDepts
}
from
"
@/api/system/dept
"
export
default
{
name
:
"
EcwCustomertobeassignedIndex
"
,
...
...
@@ -434,7 +408,7 @@ export default {
data
()
{
return
{
customerFollowVisible
:
false
,
batchTransferShow
:
false
,
batchTransferShow
:
false
,
getDictDatas
,
getDictDatas2
,
DICT_TYPE
,
...
...
@@ -453,11 +427,11 @@ export default {
// 是否显示弹出层
open
:
false
,
dateRangeCreateTime
:
[],
customerServiceList
:[],
customerServiceList
:
[],
// 查询参数
queryParams
:
{
pageNo
:
1
,
pageSize
:
10
,
pageSize
:
10
/*number: null,
name: null,
level: null,
...
...
@@ -477,25 +451,25 @@ export default {
form
:
{},
// 表单校验
rules
:
{
name
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户名称不能为空
'
),
trigger
:
"
blur
"
}],
country
:
[{
required
:
true
,
message
:
this
.
$t
(
'
国家不能为空
'
),
trigger
:
"
blur
"
}],
level
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户等级不能为空
'
),
trigger
:
"
blur
"
}],
type
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户类别不能为空
'
),
trigger
:
"
blur
"
}],
name
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户名称不能为空
"
),
trigger
:
"
blur
"
}],
country
:
[{
required
:
true
,
message
:
this
.
$t
(
"
国家不能为空
"
),
trigger
:
"
blur
"
}],
level
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户等级不能为空
"
),
trigger
:
"
blur
"
}],
type
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户类别不能为空
"
),
trigger
:
"
blur
"
}],
// createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
source
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户来源不能为空
'
),
trigger
:
"
blur
"
}],
customerService
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户经理不能为空
'
),
trigger
:
"
blur
"
}],
status
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户状态不能为空
'
),
trigger
:
"
blur
"
}],
founder
:
[{
required
:
true
,
message
:
this
.
$t
(
'
创建人不能为空
'
),
trigger
:
"
blur
"
}],
source
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户来源不能为空
"
),
trigger
:
"
blur
"
}],
customerService
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户经理不能为空
"
),
trigger
:
"
blur
"
}],
status
:
[{
required
:
true
,
message
:
this
.
$t
(
"
客户状态不能为空
"
),
trigger
:
"
blur
"
}],
founder
:
[{
required
:
true
,
message
:
this
.
$t
(
"
创建人不能为空
"
),
trigger
:
"
blur
"
}]
},
// 网点
nodeList
:
[],
showLine
:
false
,
service
:
undefined
,
//客服
transferData
:
undefined
,
//移交数据
transferShow
:
false
,
creditList
:[],
selectCustomerList
:[],
countryList
:[],
service
:
undefined
,
//客服
transferData
:
undefined
,
//移交数据
transferShow
:
false
,
creditList
:
[],
selectCustomerList
:
[],
countryList
:
[],
enterOpenSeaTime
:
[],
customerServiceConfirmedTime
:
[],
firstDealTime
:
[],
...
...
@@ -505,48 +479,48 @@ export default {
allSimplList
:
[],
weightYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
numYearly
:
{
key
:
"
eqNumberKey
"
,
value
:
""
,
value
:
""
},
productTypeList
:
[],
productList
:
[],
competitorList
:
[],
deptList
:
[]
,
}
;
deptList
:
[]
}
},
created
()
{
getCountryListAll
().
then
(
r
=>
{
console
.
log
(
r
,
'
国家
'
)
getCountryListAll
().
then
(
(
r
)
=>
{
console
.
log
(
r
,
"
国家
"
)
this
.
countryList
=
r
.
data
})
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
((
r
)
=>
{
this
.
creditList
=
r
.
data
.
list
})
this
.
getList
()
;
listServiceUser
().
then
(
r
=>
{
console
.
log
(
r
,
'
客服
'
);
this
.
customerServiceList
=
r
.
data
;
this
.
getList
()
listServiceUser
().
then
(
(
r
)
=>
{
console
.
log
(
r
,
"
客服
"
)
this
.
customerServiceList
=
r
.
data
})
// getNodeList().then(r => {
// this.nodeList = r.data
// })
this
.
getCustomerSelect
()
;
this
.
getCustomerSelect
()
getNodeList
().
then
((
r
)
=>
{
this
.
getNodeLists
=
r
.
data
;
})
;
this
.
getNodeLists
=
r
.
data
})
listAllSimpl
().
then
((
r
)
=>
{
this
.
allSimplList
=
r
.
data
;
})
;
this
.
allSimplList
=
r
.
data
})
getProductTypeList
().
then
((
r
)
=>
{
this
.
productTypeList
=
r
.
data
;
})
;
this
.
productTypeList
=
r
.
data
})
competitorListAll
().
then
((
r
)
=>
{
this
.
competitorList
=
r
.
data
;
this
.
competitorList
=
r
.
data
})
listMySimpleDepts
().
then
(
response
=>
{
listMySimpleDepts
().
then
(
(
response
)
=>
{
this
.
deptList
=
response
.
data
})
},
...
...
@@ -560,8 +534,8 @@ export default {
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
},
handleSelectionChange
(
val
){
this
.
selectCustomerList
=
val
.
map
(
i
=>
i
.
id
);
handleSelectionChange
(
val
)
{
this
.
selectCustomerList
=
val
.
map
(
(
i
)
=>
i
.
id
)
},
handleCustomerFollowLink
(
row
)
{
this
.
customerFollowVisible
=
true
...
...
@@ -571,33 +545,31 @@ export default {
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
// 处理查询参数
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
'
createTime
'
,
false
);
let
params
=
{
...
this
.
queryParams
,
...
this
.
combinedQueryParams
}
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
,
false
)
// 执行查询
getCustomerToBeAssigned
(
params
).
then
(
response
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
})
;
getCustomerToBeAssigned
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
this
.
total
=
response
.
data
.
total
this
.
loading
=
false
})
},
remoteMethod
(
val
)
{
this
.
getCustomerSelect
(
val
)
;
this
.
getCustomerSelect
(
val
)
},
getCustomerSelect
(
val
=
""
)
{
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
(
(
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
;
}
);
getCustomerSelect
({
pageNo
:
1
,
pageSize
:
30
,
searchKey
:
val
}).
then
((
res
)
=>
{
this
.
customerSelect
=
res
.
data
.
list
})
},
handleSelectProductType
(
val
)
{
if
(
val
&&
val
.
length
>=
1
)
{
this
.
queryParams
.
productIds
=
[]
getProductList
({
typeIds
:
val
}).
then
((
r
)
=>
{
this
.
productList
=
r
.
data
})
;
})
}
else
{
this
.
queryParams
.
productIds
=
[]
this
.
productList
=
[]
...
...
@@ -605,8 +577,8 @@ export default {
},
/** 取消按钮 */
cancel
()
{
this
.
open
=
false
;
this
.
reset
()
;
this
.
open
=
false
this
.
reset
()
},
/** 表单重置 */
reset
()
{
...
...
@@ -645,44 +617,44 @@ export default {
taxRate
:
undefined
,
remarks
:
undefined
,
arrivalConfirm
:
undefined
,
weightUnit
:
undefined
,
}
;
this
.
resetForm
(
"
form
"
)
;
weightUnit
:
undefined
}
this
.
resetForm
(
"
form
"
)
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNo
=
1
;
this
.
getList
()
;
this
.
queryParams
.
pageNo
=
1
this
.
getList
()
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
dateRangeCreateTime
=
[]
;
this
.
dateRangeCreateTime
=
[]
this
.
enterOpenSeaTime
=
[]
this
.
customerServiceConfirmedTime
=
[]
this
.
firstDealTime
=
[]
this
.
resetForm
(
"
queryForm
"
)
;
this
.
resetForm
(
"
queryForm
"
)
this
.
queryParams
=
{
pageNo
:
1
,
pageSize
:
10
,
}
;
this
.
weightYearly
.
value
=
""
;
this
.
numYearly
.
value
=
""
;
this
.
handleQuery
()
;
pageSize
:
10
}
this
.
weightYearly
.
value
=
""
this
.
numYearly
.
value
=
""
this
.
handleQuery
()
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
$router
.
push
(
'
/customer/add-edit/0
'
)
this
.
$router
.
push
(
"
/customer/add-edit/0
"
)
// this.reset();
// this.open = true;
// this.title = this.$t("添加客户");
},
/** 查看按钮操作 */
handleView
(
row
)
{
this
.
$router
.
push
(
'
/customer/query/
'
+
row
.
id
)
this
.
$router
.
push
(
"
/customer/query/
"
+
row
.
id
)
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
$router
.
push
(
'
/customer/edit-distribution/
'
+
row
.
id
)
this
.
$router
.
push
(
"
/customer/edit-distribution/
"
+
row
.
id
)
// this.reset();
// const id = row.id;
// getCustomer(id).then(response => {
...
...
@@ -693,120 +665,127 @@ export default {
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
valid
=>
{
this
.
$refs
[
"
form
"
].
validate
(
(
valid
)
=>
{
if
(
!
valid
)
{
// return;
}
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
updateCustomer
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
this
.
open
=
false
;
this
.
getList
()
;
})
;
return
;
updateCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
))
this
.
open
=
false
this
.
getList
()
})
return
}
// 添加的提交
createCustomer
(
this
.
form
).
then
(
response
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
新增成功
'
));
this
.
open
=
false
;
this
.
getList
()
;
})
;
})
;
createCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
新增成功
"
))
this
.
open
=
false
this
.
getList
()
})
})
},
/** 移交按钮操作 */
handleDelete
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
row
.
number
+
this
.
$t
(
'
"的数据项?
'
)).
then
(
function
()
{
return
deleteCustomer
(
id
);
}).
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
));
}).
catch
(()
=>
{});
const
id
=
row
.
id
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
row
.
number
+
this
.
$t
(
'
"的数据项?
'
))
.
then
(
function
()
{
return
deleteCustomer
(
id
)
})
.
then
(()
=>
{
this
.
getList
()
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
))
})
.
catch
(()
=>
{})
},
//分配客服
distribution
(
row
){
distribution
(
row
)
{
// this.service = row.customerService;
// this.transferData = row;
this
.
selectCustomerList
=
[
row
.
id
]
this
.
batchTransferShow
=
true
;
this
.
batchTransferShow
=
true
},
transferFn
(){
if
(
!
this
.
service
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
'
请选择客户经理!
'
));
transferFn
()
{
if
(
!
this
.
service
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
"
请选择客户经理!
"
))
}
handOverCustomer
({
customerServiceId
:
this
.
service
,
customerIdList
:
[
this
.
transferData
.
id
]
}).
then
(
r
=>
{
if
(
r
.
code
===
0
)
{
this
.
transferShow
=
false
;
this
.
service
=
''
;
this
.
getList
()
;
this
.
$message
.
success
(
this
.
$t
(
'
移交成功!
'
));
customerServiceId
:
this
.
service
,
customerIdList
:
[
this
.
transferData
.
id
]
}).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
this
.
transferShow
=
false
this
.
service
=
""
this
.
getList
()
this
.
$message
.
success
(
this
.
$t
(
"
移交成功!
"
))
}
})
},
/** 导出按钮操作 */
handleExport
()
{
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出待分配客户数据项?
'
)).
then
(
response
=>
{
waitDistributionExportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
已加入导出队列,请稍后在下载日志中下载
'
))
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认导出待分配客户数据项?
"
))
.
then
((
response
)
=>
{
waitDistributionExportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
已加入导出队列,请稍后在下载日志中下载
"
))
})
}).
catch
(()
=>
{});
})
.
catch
(()
=>
{})
},
handleSetting
(
row
)
{
this
.
$refs
[
'
customerSetting
'
].
dialogVisible
=
true
this
.
$nextTick
(
_
=>
{
this
.
$refs
[
'
customerSetting
'
].
init
(
row
.
id
)
this
.
$refs
[
"
customerSetting
"
].
dialogVisible
=
true
this
.
$nextTick
(
(
_
)
=>
{
this
.
$refs
[
"
customerSetting
"
].
init
(
row
.
id
)
})
},
getBusiCountryNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
countryList
.
forEach
(
item
=>
{
this
.
countryList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
nameZh
:
item
.
nameEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPickupPointNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
split
(
'
,
'
)
const
idsArr
=
ids
.
split
(
"
,
"
)
const
strArr
=
[]
this
.
getNodeLists
.
forEach
(
item
=>
{
this
.
getNodeLists
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getProductTypeNames
(
ids
)
{
if
(
ids
)
{
const
idsArr
=
ids
.
toString
().
split
(
'
,
'
)
const
idsArr
=
ids
.
toString
().
split
(
"
,
"
)
const
strArr
=
[]
this
.
productTypeList
.
forEach
(
item
=>
{
this
.
productTypeList
.
forEach
(
(
item
)
=>
{
if
(
idsArr
.
includes
(
item
.
id
.
toString
()))
{
strArr
.
push
(
this
.
isChinese
?
item
.
titleZh
:
item
.
titleEn
)
}
})
return
strArr
.
length
>
0
?
strArr
.
join
(
'
,
'
)
:
null
return
strArr
.
length
>
0
?
strArr
.
join
(
"
,
"
)
:
null
}
else
{
return
null
}
},
getPromoterName
(
id
)
{
if
(
id
)
{
let
strName
=
''
for
(
const
item
of
this
.
customerSelectFn
)
{
let
strName
=
""
for
(
const
item
of
this
.
customerSelectFn
)
{
if
(
item
.
id
==
id
)
{
strName
=
item
.
name
break
...
...
@@ -821,7 +800,7 @@ export default {
changeCustomerDefaultPay
({
customerIdList
:
this
.
selectCustomerList
,
defaultPay
:
true
}).
then
(
_
=>
{
}).
then
(
(
_
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
))
this
.
getList
()
})
...
...
@@ -830,7 +809,7 @@ export default {
changeCustomerNoConsignee
({
customerIdList
:
this
.
selectCustomerList
,
noConsigee
:
true
}).
then
(
_
=>
{
}).
then
(
(
_
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
))
this
.
getList
()
})
...
...
@@ -839,23 +818,23 @@ export default {
changeCustomerDefaultBilling
({
customerIdList
:
this
.
selectCustomerList
,
defaultBilling
:
true
}).
then
(
_
=>
{
}).
then
(
(
_
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
操作成功
"
))
this
.
getList
()
})
}
},
},
watch
:{
selectCustomerList
(
val
){
if
(
val
.
length
===
0
){
watch
:
{
selectCustomerList
(
val
)
{
if
(
val
.
length
===
0
)
{
this
.
getList
()
this
.
$refs
.
multipleTable
.
clearSelection
();
this
.
$refs
.
multipleTable
.
clearSelection
()
}
}
},
},
computed
:{
isChinese
(){
return
this
.
$i18n
.
locale
===
'
zh_CN
'
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
},
channel
()
{
return
(
val
)
=>
{
...
...
@@ -864,20 +843,18 @@ export default {
.
filter
((
i
)
=>
(
val
.
split
(
"
,
"
)
||
[]).
includes
(
i
.
value
))
.
map
((
i
)
=>
(
this
.
isChinese
?
i
.
label
:
i
.
labelEn
))
.
join
(
"
,
"
)
:
""
;
}
;
:
""
}
},
customerSelectFn
()
{
if
(
this
.
recommended
.
length
>
0
)
{
let
i
=
this
.
customerSelect
.
find
(
(
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
);
let
i
=
this
.
customerSelect
.
find
((
item
)
=>
item
.
id
===
this
.
recommended
[
0
].
id
)
if
(
!
i
)
{
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
;
this
.
customerSelect
.
push
(
this
.
recommended
[
0
])
}
return
this
.
customerSelect
;
return
this
.
customerSelect
}
else
{
return
this
.
customerSelect
;
return
this
.
customerSelect
}
},
combinedQueryParams
()
{
...
...
@@ -899,26 +876,26 @@ export default {
queryParams
.
endFirstDealTime
=
this
.
firstDealTime
[
1
]
}
if
(
this
.
weightYearly
.
value
)
{
let
key
=
'
eqWeightYearly
'
if
(
this
.
weightYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leWeightYearly
'
}
else
if
(
this
.
weightYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geWeightYearly
'
let
key
=
"
eqWeightYearly
"
if
(
this
.
weightYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leWeightYearly
"
}
else
if
(
this
.
weightYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geWeightYearly
"
}
queryParams
[
key
]
=
this
.
weightYearly
.
value
;
queryParams
[
key
]
=
this
.
weightYearly
.
value
}
if
(
this
.
numYearly
.
value
)
{
let
key
=
'
eqNumYearly
'
if
(
this
.
numYearly
.
key
==
'
leNumberKey
'
)
{
key
=
'
leNumYearly
'
}
else
if
(
this
.
numYearly
.
key
==
'
geNumberKey
'
)
{
key
=
'
geNumYearly
'
let
key
=
"
eqNumYearly
"
if
(
this
.
numYearly
.
key
==
"
leNumberKey
"
)
{
key
=
"
leNumYearly
"
}
else
if
(
this
.
numYearly
.
key
==
"
geNumberKey
"
)
{
key
=
"
geNumYearly
"
}
queryParams
[
key
]
=
this
.
numYearly
.
value
;
queryParams
[
key
]
=
this
.
numYearly
.
value
}
return
queryParams
;
}
,
return
queryParams
}
}
}
;
}
</
script
>
src/views/ecw/myCustomerService/index.vue
View file @
ca65a30e
...
...
@@ -17,16 +17,16 @@
<el-form-item
:label=
"$t('联系方式')"
>
<el-input
:placeholder=
"$t('请输入联系方式')"
clearable
v-model.trim=
"queryParams.defaultContactPhone"
@
input=
"queryParams.defaultContactPhone = queryParams.defaultContactPhone.replace(/\s+/g, '')"
></el-input>
</el-form-item>
<!--
<el-form-item
:label=
"$t('部门')"
v-if=
"path != '/customer/department-customers'"
>
-->
<!--
<el-select
v-model=
"queryParams.deptIds"
:placeholder=
"$t('请选择部门')"
>
-->
<!--
<el-option
v-for=
"item in deptList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
-->
<!--
</el-select>
-->
<!--
</el-form-item>
-->
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
-->
<!--
<el-select
multiple
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
size=
"small"
@
change=
"handleQuery"
>
-->
<!--
<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('部门')"
v-if=
"path != '/customer/department-customers'"
>
-->
<!--
<el-select
v-model=
"queryParams.deptIds"
:placeholder=
"$t('请选择部门')"
>
-->
<!--
<el-option
v-for=
"item in deptList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
-->
<!--
</el-select>
-->
<!--
</el-form-item>
-->
<!--
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
-->
<!--
<el-select
multiple
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
size=
"small"
@
change=
"handleQuery"
>
-->
<!--
<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=
"source"
>
<el-select
multiple
clearable
v-model=
"queryParams.source"
:placeholder=
"$t('请选择客户来源')"
size=
"small"
@
change=
"handleQuery"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
...
...
@@ -222,21 +222,21 @@
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
:label=
"$t('最新跟进时间')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
{{
parseTime
(
scope
.
row
.
followupBackVO
.
followTime
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('最新跟进记录')"
width=
"120"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.followupBackVO"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCustomerFollowLink(scope.row.followupBackVO)"
class=
"link-type"
>
{{
scope
.
row
.
followupBackVO
.
number
}}
</a>
</
template
>
</el-table-column>
...
...
@@ -373,7 +373,7 @@
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<customer-follow-list
:customer-id=
"customerId"
:id=
"customerId"
:customer-service=
"customerService"
:customer-number=
"customerNumber"
ref=
"CustomerFollowList"
v-if=
"customerFollowVisible"
></customer-follow-list>
<customer-follow
ref=
"customerFollow"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
/>
<customer-complaints
ref=
"customerComplaint"
:customer-id.sync=
"customerId"
></customer-complaints>
<transfer-customer
:show.sync=
"show"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
<customer-setting
ref=
"customerSetting"
@
refresh=
"getList"
></customer-setting>
...
...
@@ -399,7 +399,7 @@ import { getNodeList } from "@/api/ecw/node"
import
{
getCustomerSelect
,
changeCustomerDefaultPay
,
changeCustomerNoConsignee
,
changeCustomerDefaultBilling
}
from
"
@/api/ecw/customer
"
import
{
getProductTypeList
}
from
"
@/api/ecw/productType
"
import
{
getProductList
}
from
"
@/api/ecw/product
"
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
;
import
CompetitorSelector
from
"
@/components/CompetitorSelector/index.vue
"
export
default
{
name
:
"
EcwMyCustomerServiceIndex
"
,
components
:
{
...
...
src/views/ecw/offer/detail.vue
View file @
ca65a30e
...
...
@@ -7,7 +7,7 @@
<span
style=
"font-size: 15px"
></span>
<div
class=
"btns"
>
<el-button
v-hasPermi=
"['ecw:offer:update']"
size=
"mini"
type=
"primary"
v-if=
"[4, 5, 6].indexOf(list.status) == -1"
@
click=
"$router.push('edit?id=' + offerId)"
>
{{
$t
(
"
编辑
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:loglist']"
type=
"primary"
v-if=
"[1, 3, 7].indexOf(list.status) > -1"
size=
"mini"
@
click=
"handleAdd"
>
{{
$t
(
"
跟进
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:loglist']"
type=
"primary"
v-if=
"[1, 3, 7].indexOf(list.status) > -1"
size=
"mini"
@
click=
"handleAdd
Offer
"
>
{{
$t
(
"
跟进
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:result']"
type=
"primary"
v-if=
"[3, 7].indexOf(list.status) > -1"
size=
"mini"
@
click=
"toResult"
>
{{
$t
(
"
结果
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:discount', 'ecw:offer:commission']"
size=
"mini"
v-if=
"[1, 3, 7].indexOf(list.status) > -1"
type=
"primary"
@
click.native=
"$router.push('/offer/special?offerId=' + offerId)"
>
{{
$t
(
"
特价
"
)
}}
</el-button>
<el-button
v-hasPermi=
"['ecw:offer:delete']"
type=
"danger"
size=
"mini"
@
click=
"handleDelete"
>
{{
$t
(
"
删除
"
)
}}
</el-button>
...
...
@@ -74,10 +74,10 @@
</el-descriptions-item>
<el-descriptions-item
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, list.transportId).cssClass == 'channel'"
:label=
"$t('出货渠道')"
>
{{
list
.
channelName
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('服务')"
>
<el-tag
v-if=
"list.
type && list.t
ype.indexOf('1') > -1"
>
<el-tag
v-if=
"list.
serviceType && list.serviceT
ype.indexOf('1') > -1"
>
{{
$t
(
"
集运
"
)
}}
</el-tag>
<el-tag
v-if=
"list.
type && list.t
ype.indexOf('2') > -1"
>
<el-tag
v-if=
"list.
serviceType && list.serviceT
ype.indexOf('2') > -1"
>
{{
$t
(
"
海外仓
"
)
}}
</el-tag>
</el-descriptions-item>
...
...
@@ -313,7 +313,7 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
:customerService=
"curData.salesmanId"
:customerNumber=
"curData.customerNumber"
:offerId=
"offerId"
/>
<customer-follow
ref=
"customerFollow"
v-if=
"customerFollowVisible"
@
close=
"customerFollowVisible = false"
:customerService=
"curData.salesmanId"
:customerNumber=
"curData.customerNumber"
:offerId=
"offerId"
/>
</div>
</template>
...
...
@@ -521,14 +521,13 @@ export default {
getTradeCityList
().
then
((
res
)
=>
(
this
.
tradeCityList
=
res
.
data
))
getProductAttrList
().
then
((
res
)
=>
(
this
.
productAttrList
=
res
.
data
))
if
(
this
.
$route
.
query
.
offerId
)
{
this
.
offerId
=
this
.
$route
.
query
.
offerId
this
.
offerId
=
parseInt
(
this
.
$route
.
query
.
offerId
)
this
.
getList
()
}
},
methods
:
{
handleAddOffer
(
row
)
{
console
.
log
(
row
)
this
.
curData
=
row
handleAddOffer
()
{
this
.
curData
=
this
.
list
this
.
customerFollowVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
[
"
customerFollow
"
].
handleAdd
()
...
...
@@ -784,4 +783,13 @@ export default {
.card
{
margin-top
:
20px
;
}
/
deep
/
.el-table__fixed-footer-wrapper
tbody
td
.el-table__cell
{
font-size
:
16px
;
font-weight
:
bold
;
}
/
deep
/
.el-table__footer-wrapper
tbody
td
.el-table__cell
{
font-size
:
20px
;
font-weight
:
bold
;
}
</
style
>
src/views/ecw/offer/edit.vue
View file @
ca65a30e
...
...
@@ -143,7 +143,7 @@
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('增值服务')"
v-if=
"routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1"
>
<el-checkbox-group
v-model=
"form.
t
ype"
>
<el-checkbox-group
v-model=
"form.
serviceT
ype"
>
<el-checkbox
label=
"1"
v-if=
"routeOtherServices.indexOf('1') > -1"
>
{{ $t("集运服务") }}
</el-checkbox>
<el-checkbox
label=
"2"
v-if=
"routeOtherServices.indexOf('4') > -1"
>
{{ $t("海外仓") }}
</el-checkbox>
</el-checkbox-group>
...
...
@@ -576,7 +576,8 @@ const createDefaultForm = () => {
control
:
false
,
isCargoControl
:
false
,
prodCreateReqVOList
:
[],
transportVO
:
{}
transportVO
:
{},
serviceType
:
[]
}
}
export
default
{
...
...
@@ -742,6 +743,8 @@ export default {
startTime
:
[{
required
:
true
,
message
:
this
.
$t
(
"
有效期开始时间不能为空
"
)
}],
endTime
:
[{
required
:
true
,
message
:
this
.
$t
(
"
有效期结束时间不能为空
"
)
}],
transportId
:
[{
required
:
true
,
message
:
this
.
$t
(
"
选择运输方式
"
)
}],
// departureId: [{required: true, message: this.$t('请选择始发城市')}],
destCountryId
:
[{
required
:
true
,
message
:
this
.
$t
(
"
请选择目的国家
"
)
}],
channelId
:
[{
required
:
true
,
message
:
this
.
$t
(
"
选择出货渠道
"
)
}],
stopTime
:
[{
required
:
true
,
message
:
this
.
$t
(
"
不能为空
"
)
}],
relation
:
[{
required
:
true
,
message
:
this
.
$t
(
"
请选择所属人
"
)
}],
...
...
@@ -1074,9 +1077,9 @@ export default {
selectedRouter
(
val
)
{
if
(
!
val
)
return
;[
"
1
"
,
"
4
"
].
forEach
((
service
)
=>
{
if
(
this
.
routeOtherServices
.
indexOf
(
service
)
<
0
&&
this
.
form
.
type
.
indexOf
(
service
)
>
-
1
)
{
this
.
form
.
t
ype
.
splice
(
this
.
form
.
type
.
findIndex
((
item
)
=>
item
==
service
),
if
(
this
.
routeOtherServices
.
indexOf
(
service
)
<
0
&&
this
.
form
.
serviceType
.
indexOf
(
service
==
4
?
2
:
service
)
>
-
1
)
{
this
.
form
.
serviceT
ype
.
splice
(
this
.
form
.
serviceType
.
findIndex
((
item
)
=>
item
==
(
service
==
4
?
2
:
service
)
),
1
)
}
...
...
@@ -1084,10 +1087,10 @@ export default {
}
},
activated
()
{
if
(
this
.
form
.
offerId
!
=
this
.
$route
.
query
.
id
)
{
if
(
this
.
$route
.
query
.
id
&&
this
.
form
.
offerId
!=
=
this
.
$route
.
query
.
id
)
{
this
.
getOffer
()
}
if
(
this
.
$route
.
query
.
copyId
&&
this
.
form
.
copyId
!=
this
.
$route
.
query
.
copyId
)
{
if
(
this
.
$route
.
query
.
copyId
&&
this
.
form
.
copyId
!=
=
this
.
$route
.
query
.
copyId
)
{
this
.
getOffer
()
}
},
...
...
@@ -1102,14 +1105,14 @@ export default {
getRegionList
(
4
,
4
).
then
((
res
)
=>
(
this
.
AddressCity
=
res
.
data
))
competitorListAll
().
then
((
res
)
=>
(
this
.
competitorList
=
res
.
data
))
if
(
this
.
$route
.
query
.
id
)
{
if
(
this
.
$route
.
query
.
id
&&
this
.
$route
.
query
.
copyId
)
{
this
.
getOffer
()
}
else
{
// alert(this.$route.query.customer.defaultContactPhone)
this
.
addProduct
()
}
if
(
this
.
$route
.
query
.
type
==
1
)
{
if
(
this
.
$route
.
query
.
type
&&
this
.
$route
.
query
.
type
=
==
1
)
{
let
res
=
await
getCustomerContactsListByCustomer
({
customerId
:
parseInt
(
this
.
$route
.
query
.
customerId
||
0
)
})
this
.
customer
=
res
.
data
.
find
((
item
)
=>
item
.
isDefault
)
...
...
@@ -1143,10 +1146,12 @@ export default {
},
getOffer
()
{
//加了是否从全部客户列表中报价按钮进来的判断
if
(
this
.
$route
.
query
!==
1
)
{
if
(
this
.
$route
.
query
.
type
!==
1
)
{
getOffer
(
this
.
$route
.
query
.
id
||
this
.
$route
.
query
.
copyId
).
then
((
res
)
=>
{
let
formData
=
res
.
data
formData
.
type
=
formData
.
type
?
formData
.
type
.
split
(
"
,
"
).
filter
((
item
)
=>
item
!=
""
)
:
[]
formData
.
serviceType
=
formData
.
serviceType
?
formData
.
serviceType
.
split
(
"
,
"
).
filter
((
item
)
=>
item
!=
""
)
:
[]
console
.
log
(
formData
.
serviceType
)
formData
.
prodCreateReqVOList
=
[]
if
(
formData
.
transportVO
&&
formData
.
transportVO
.
packageType
)
{
formData
.
transportVO
.
packageTypeArr
=
formData
.
transportVO
.
packageType
.
split
(
"
,
"
).
filter
((
item
)
=>
item
&&
item
!=
""
)
...
...
@@ -1179,10 +1184,12 @@ export default {
}
if
(
this
.
$route
.
query
.
copyId
)
{
formData
.
offerId
=
""
formData
.
offerId
=
null
formData
.
startTime
=
""
formData
.
endTime
=
""
formData
.
stopTime
=
""
// 复制报价单状态重置为草稿
formData
.
status
=
2
}
formData
.
channelId
=
formData
.
channelId
||
null
...
...
@@ -1327,7 +1334,8 @@ export default {
if
(
this
.
form
.
offerId
!=
null
)
{
let
data
=
Object
.
assign
({},
this
.
form
,
{
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
prodUpdateReqVOList
:
this
.
getProductListWithDefaultValue
()
prodUpdateReqVOList
:
this
.
getProductListWithDefaultValue
(),
serviceType
:
this
.
form
.
serviceType
.
join
(
"
,
"
)
})
if
(
data
.
status
<
3
)
{
data
.
status
=
status
...
...
@@ -1343,12 +1351,14 @@ export default {
console
.
log
(
JSON
.
stringify
(
this
.
contactsList
))
data
=
Object
.
assign
({},
this
.
form
,
{
prodCreateReqVOList
:
this
.
getProductListWithDefaultValue
(),
status
status
,
serviceType
:
this
.
form
.
serviceType
.
join
(
"
,
"
)
})
}
else
{
data
=
Object
.
assign
({},
this
.
form
,
{
prodCreateReqVOList
:
this
.
getProductListWithDefaultValue
(),
status
status
,
serviceType
:
this
.
form
.
serviceType
.
join
(
"
,
"
)
})
}
...
...
src/views/ecw/offer/logListCommon.vue
View file @
ca65a30e
...
...
@@ -52,10 +52,8 @@
</el-form-item>
</div>
</el-form>
</div>
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
...
...
@@ -125,8 +123,8 @@
</el-table>
<pagination
:total=
"customerFollowTotal"
:page.sync=
"followForm.pageNo"
:limit.sync=
"followForm.pageSize"
@
pagination=
"getCustomerFollowList"
/>
</el-card>
<customer-follow
ref=
"customerFollow"
@
handleCustomerFollowAdd=
"handleCustomerFollowAdd"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
:customer-id=
"customerId"
:customerService=
"customerService"
:customerNumber=
"customerNumber"
/>
<customer-follow-update-status
:show.sync=
"updateStatus"
:followup-ids.sync=
"selectCustomerFollowList"
@
refresh=
"handleQuery"
/
>
<customer-follow
ref=
"customerFollow"
@
close=
"customerFollowVisible = false"
@
handleCustomerFollowAdd=
"handleCustomerFollowAdd"
@
refresh=
"handleQuery"
v-if=
"customerFollowVisible"
:customer-id=
"customerId"
:customerService=
"customerService"
:customerNumber=
"customerNumber"
/>
<customer-follow-update-status
:show.sync=
"updateStatus"
:followup-ids.sync=
"selectCustomerFollowList"
@
refresh=
"handleQuery"
></customer-follow-update-status
>
</div>
</template>
...
...
@@ -135,10 +133,10 @@ import { getCustomerFollowList, exportCustomerFollow } from "@/api/ecw/customerF
import
{
getDictDatas
,
DICT_TYPE
,
getDictDatas2
}
from
"
@/utils/dict
"
import
CustomerFollow
from
"
@/views/ecw/customer/components/customerFollow
"
import
UserSelector
from
"
@/components/UserSelector
"
import
customerFollowUpdateStatus
from
"
@/views/ecw/customer/components/customerFollowUpdateStatus.vue
"
;
import
customerFollowUpdateStatus
from
"
@/views/ecw/customer/components/customerFollowUpdateStatus.vue
"
export
default
{
name
:
"
logListCommon
"
,
components
:
{
customerFollowUpdateStatus
,
UserSelector
,
CustomerFollow
},
components
:
{
customerFollowUpdateStatus
,
UserSelector
,
CustomerFollow
},
props
:
[
"
customerId
"
,
"
offerId
"
,
"
customerService
"
,
"
customerNumber
"
],
data
()
{
return
{
...
...
src/views/ecw/order/cargoControl.vue
View file @
ca65a30e
...
...
@@ -10,10 +10,10 @@
</el-input>
</el-form-item>
<el-form-item
:label=
"$t('发货人')"
prop=
"consignorKey"
>
<el-input
v-model.trim=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consignorKey')"
/>
<el-input
v-model.trim=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeKey"
>
<el-input
v-model.trim=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consigneeKey')"
/>
<el-input
v-model.trim=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('控货状态')"
prop=
"isCargoControl"
>
<dict-selector
v-model=
"queryParams.cargoControlStatusList"
multiple
:type=
"DICT_TYPE.CONTROL_GOODS_STATUS"
clearable
@
change=
"handleQuery"
/>
...
...
@@ -53,7 +53,7 @@
<el-input v-model="queryParams.orderNo" :placeholder="$t('订单编号')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/\s+/g, '')" />
</el-form-item>-->
<el-form-item
:label=
"$t('商品') + ':'"
v-show=
"showSearch"
>
<el-input
v-model.trim=
"prodParam.value"
:placeholder=
"$t('请输入商品类型、品名或品牌')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(prodParam, 'value')"
>
<el-input
v-model.trim=
"prodParam.value"
:placeholder=
"$t('请输入商品类型、品名或品牌')"
clearable
@
keyup.enter.native=
"handleQuery"
>
<
template
slot=
"prepend"
>
<dict-selector
:type=
"DICT_TYPE.ORDER_QUERY_PROD_FIELD"
defaultable
v-model=
"prodParam.key"
class=
"w-50"
/>
</
template
>
...
...
src/views/ecw/order/components/Release.vue
View file @
ca65a30e
<
template
>
<el-dialog
:title=
"title"
visible
:before-close=
"closeDialog"
:close-on-click-modal=
"false"
width=
"1000px"
>
<el-form
v-if=
"agreement"
ref=
"form"
:model=
"formData"
:rules=
"rules"
size=
"small"
label-width=
"100px"
>
<el-form
v-if=
"agreement"
ref=
"form"
:model=
"formData"
:rules=
"rules"
size=
"small"
label-width=
"100px"
>
<el-row>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('订单号')"
>
{{
detail
.
orderNo
}}
{{
detail
.
orderNo
}}
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('总箱数')"
>
{{
detail
.
sumNum
}}
{{
detail
.
sumNum
}}
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('体积')"
>
{{
detail
.
sumVolume
}}
m³
{{
detail
.
sumVolume
}}
m³
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('重量')"
>
{{
detail
.
sumWeight
}}
kg
{{
detail
.
sumWeight
}}
kg
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('总控货箱数')"
>
{{
detail
.
sumNum
}}
{{
detail
.
sumNum
}}
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('剩余放货箱数')"
>
{{
detail
.
sumNum
-
detail
.
releaseNum
}}
{{
detail
.
sumNum
-
detail
.
releaseNum
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('到仓日期/卸柜日期')"
label-width=
"200px"
>
{{
detail
.
unloadTime
}}
{{
detail
.
unloadTime
}}
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('放货锁定收货人到期')"
label-width=
"200px"
>
{{
detail
.
lockConsigneeTime
||
'
-
'
}}
{{
detail
.
lockConsigneeTime
||
'
-
'
}}
</el-form-item>
</el-col>
</el-row>
<div
class=
"title"
>
{{
$t
(
'
请填写放货信息
'
)
}}
</div>
<div
class=
"title"
>
{{
$t
(
'
请填写放货信息
'
)
}}
</div>
<div
class=
"flex"
>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeName"
>
<el-input
v-model=
"formData.consigneeName"
:placeholder=
"$t('请输入收货人')"
clearable
class=
"w-150"
></el-input>
<el-input
v-model=
"formData.consigneeName"
:placeholder=
"$t('请输入收货人')"
clearable
class=
"w-150"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('收货人电话')"
prop=
"consigneePhone"
>
<!--
<el-input
v-model=
"formData.field109"
:placeholder=
"$t('区号')"
clearable
class=
"w-150"
></el-input>
-->
<area-code-selector
v-model=
"formData.consigneeCountryCode"
class=
"w-150"
/>
<el-input
v-model=
"formData.consigneePhone"
:placeholder=
"$t('请输入收货人电话')"
clearable
class=
"w-150 ml-10"
></el-input>
<area-code-selector
v-model=
"formData.consigneeCountryCode"
class=
"w-150"
/>
<el-input
v-model=
"formData.consigneePhone"
:placeholder=
"$t('请输入收货人电话')"
clearable
class=
"w-150 ml-10"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('收货人邮箱')"
prop=
"consigneeEmail"
>
<el-input
v-model=
"formData.consigneeEmail"
:placeholder=
"$t('请输入收货人邮箱')"
clearable
class=
"w-150"
></el-input>
<el-input
v-model=
"formData.consigneeEmail"
:placeholder=
"$t('请输入收货人邮箱')"
clearable
class=
"w-150"
></el-input>
</el-form-item>
</div>
<el-table
:data=
"[formData]"
border
class=
"release-table"
>
<el-table-column
:label=
"$t('控货箱数')"
>
{{
detail
.
sumNum
-
detail
.
releaseNum
}}
{{
detail
.
sumNum
-
detail
.
releaseNum
}}
</el-table-column>
<el-table-column
:label=
"$t('放货箱数')"
>
<template
slot-scope=
"
{row}">
...
...
@@ -87,27 +90,28 @@
</el-table-column>
</el-table>
<el-form-item
:label=
"$t('控货手机号')"
prop=
"field117"
style=
"margin-top:20px"
>
<el-input
:value=
"'+' + detail.dialCode + detail.phone"
readonly
:placeholder=
"$t('请输入控货手机号')"
>
<el-input
:value=
"'+' + detail.dialCode + detail.phone"
readonly
:placeholder=
"$t('请输入控货手机号')"
>
</el-input>
</el-form-item>
<el-form-item
:label=
"$t('手机验证码')"
prop=
"code"
>
<el-input
v-model=
"formData.code"
:placeholder=
"$t('请输入手机验证码')"
clearable
class=
"w-150 mr-10"
></el-input>
<el-input
v-model=
"formData.code"
:placeholder=
"$t('请输入手机验证码')"
clearable
class=
"w-150 mr-10"
></el-input>
<!-- <el-button type="success">{{ $t('获取验证码') }}</el-button> -->
<send-sms-code
:order-id=
"detail.orderId"
scene=
"5"
/>
<send-sms-code
:order-id=
"detail.orderId"
scene=
"5"
/>
</el-form-item>
<el-form-item
label=
""
style=
"margin-top:20px"
>
<el-button
type=
"success"
@
click=
"submit"
>
{{$t('确认提货')
}}
</el-button>
<el-button
type=
"default"
@
click=
"closeDialog"
>
{{$t('关闭')
}}
</el-button>
<el-button
type=
"success"
@
click=
"submit"
>
{{ $t('确认提货')
}}
</el-button>
<el-button
type=
"default"
@
click=
"closeDialog"
>
{{ $t('关闭')
}}
</el-button>
</el-form-item>
</el-form>
<div
v-else
>
<!-- <release-agreement /> -->
<need-know
ref=
"needKnow"
keyname=
"control"
/>
<need-know
ref=
"needKnow"
keyname=
"control"
/>
<div
style=
"margin-top:30px"
>
<el-button
type=
"primary"
@
click=
"agreement=true"
>
{{$t('我同意')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"agreement=true"
>
{{ $t('我同意')
}}
</el-button>
<!-- <el-button type="primary" @click="$refs.needKnow.download()">{{ $t('保存协议') }}</el-button> -->
<el-button
@
click=
"closeDialog"
>
{{$t('关闭')
}}
</el-button>
<el-button
@
click=
"closeDialog"
>
{{ $t('关闭')
}}
</el-button>
</div>
</div>
</el-dialog>
...
...
@@ -119,16 +123,17 @@ import AreaCodeSelector from '@/components/AreaCodeSelector'
import
SendSmsCode
from
'
@/views/ecw/order/components/SendSmsCode
'
import
NeedKnow
from
'
@/components/NeedKnow
'
import
Decimal
from
'
decimal.js
'
export
default
{
props
:
{
props
:
{
orderId
:
[
String
,
Number
]
},
components
:
{
AreaCodeSelector
,
SendSmsCode
,
NeedKnow
},
data
()
{
data
()
{
return
{
show
:
false
,
detail
:
null
,
formData
:
{
formData
:
{
"
pickNum
"
:
0
,
"
pickQuantity
"
:
0
,
"
pickVolume
"
:
0
,
...
...
@@ -138,14 +143,14 @@ export default {
agreement
:
false
,
// 是否同意协议
}
},
watch
:
{
'
formData.pickNum
'
(
pickNum
)
{
watch
:
{
'
formData.pickNum
'
(
pickNum
)
{
this
.
$set
(
this
.
formData
,
'
pickVolume
'
,
Decimal
(
this
.
detail
.
sumVolume
).
mul
(
pickNum
).
div
(
this
.
detail
.
sumNum
).
toFixed
(
2
))
this
.
$set
(
this
.
formData
,
'
pickWeight
'
,
Decimal
(
this
.
detail
.
sumWeight
).
mul
(
pickNum
).
div
(
this
.
detail
.
sumNum
).
toFixed
(
2
))
}
},
computed
:
{
rules
()
{
computed
:
{
rules
()
{
return
{
consigneeName
:
{
required
:
true
,
message
:
this
.
$t
(
'
请填写收货人
'
)},
code
:
{
required
:
true
,
message
:
this
.
$t
(
'
请填写验证码
'
)},
...
...
@@ -157,35 +162,35 @@ export default {
}
}
},
title
()
{
title
()
{
let
t
=
this
.
$t
(
'
放货
'
)
if
(
this
.
detail
)
{
if
(
this
.
detail
)
{
t
+=
'
-
'
+
this
.
detail
.
orderNo
}
return
t
}
},
created
()
{
created
()
{
this
.
show
=
true
this
.
loadData
()
},
methods
:
{
loadData
()
{
methods
:
{
loadData
()
{
getReleaseInfo
(
this
.
orderId
).
then
(
res
=>
{
this
.
detail
=
res
.
data
this
.
$set
(
this
.
formData
,
'
consigneeName
'
,
res
.
data
.
consigneeName
)
this
.
$set
(
this
.
formData
,
'
consigneeCountryCode
'
,
'
+
'
+
res
.
data
.
consigneeCountryCode
)
this
.
$set
(
this
.
formData
,
'
consigneeCountryCode
'
,
res
.
data
.
consigneeCountryCode
?
(
'
+
'
+
res
.
data
.
consigneeCountryCode
)
:
null
)
this
.
$set
(
this
.
formData
,
'
consigneePhone
'
,
res
.
data
.
consigneePhone
)
this
.
$set
(
this
.
formData
,
'
consigneeEmail
'
,
res
.
data
.
consigneeEmail
)
})
},
closeDialog
()
{
closeDialog
()
{
this
.
show
=
false
this
.
$emit
(
'
close
'
)
},
submit
()
{
submit
()
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
!
valid
)
{
if
(
!
valid
)
{
return
false
}
createPick
(
Object
.
assign
({
orderId
:
this
.
orderId
},
this
.
formData
)).
then
(
res
=>
{
...
...
@@ -201,20 +206,22 @@ export default {
}
</
script
>
<
style
lang=
"scss"
scoped
>
.title
{
font-size
:
16px
;
margin
:
20px
0
;
display
:flex
;
align-items
:center
;
&
:before
{
.title
{
font-size
:
16px
;
margin
:
20px
0
;
display
:
flex
;
align-items
:
center
;
&
:before
{
content
:
''
;
width
:
5px
;
width
:
5px
;
height
:
15px
;
background
:
#666
;
margin-right
:
10px
;
background
:
#666
;
margin-right
:
10px
;
}
}
::v-deep
.release-table
.el-form-item__error
{
::v-deep
.release-table
.el-form-item__error
{
position
:
static
;
}
</
style
>
src/views/ecw/order/edit.vue
View file @
ca65a30e
...
...
@@ -11,51 +11,55 @@
:validate-on-rule-change=
"false"
>
<el-card
v-if=
"form.applyStatus == 1"
class=
"mb-10"
>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
'
以下信息修改审核中
'
)
}}
</div>
<div
slot=
"header"
class=
"card-title"
>
{{
$t
(
'
以下信息修改审核中
'
)
}}
</div>
<el-table
:data=
"form.applyInfoList"
>
<el-table-column
label=
"字段"
prop=
"name"
></el-table-column>
<el-table-column
label=
"旧内容"
prop=
"orgValue"
></el-table-column>
<el-table-column
label=
"新内容"
prop=
"newValue"
></el-table-column>
</el-table>
</el-card>
<div
class=
"page-title"
>
{{
editMode
?
$t
(
'
编辑订单
'
)
+
'
-
'
+
(
form
.
orderNo
||
$t
(
'
草稿
'
))
:
$t
(
'
新建订单
'
)
}}
</div>
<div
class=
"page-title"
>
{{
editMode
?
$t
(
'
编辑订单
'
)
+
'
-
'
+
(
form
.
orderNo
||
$t
(
'
草稿
'
))
:
$t
(
'
新建订单
'
)
}}
</div>
<el-card
class=
"form-section mt-10"
>
<template
#header
>
<div
slot=
"header"
class=
"card-title"
>
发货人
</div>
</
template
>
<el-form-item
:label=
"$t('名称')"
prop=
"consignorContactsId"
>
<el-form-item
:label=
"$t('名称')"
prop=
"consignorContactsId"
>
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div
class=
"contact"
>
<el-input
v-model=
"form.consignorName"
placeholder=
""
:disabled2=
"inWarehouse"
/>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignor'"
/>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='0'"
/>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignor'"
/>
<img
v-if=
"!updateChannel"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='0'"
/>
</div>
</el-form-item>
<el-form-item
:label=
"$t('电话')"
prop=
"consignorPhone"
>
<area-code-selector
v-model=
"form.consignorCountryCode"
class=
"w-200 mr-10"
disabled
/>
<el-input
v-model=
"form.consignorPhone"
class=
"w-200"
disabled
/>
<area-code-selector
v-model=
"form.consignorCountryCode"
class=
"w-200 mr-10"
disabled
/>
<el-input
v-model=
"form.consignorPhone"
class=
"w-200"
disabled
/>
</el-form-item>
<el-button
circle
icon=
"el-icon-circle-plus"
v-if=
"!showFullConsignor"
@
click=
"showFullConsignor=true"
></el-button>
<el-button
circle
icon=
"el-icon-circle-plus"
v-if=
"!showFullConsignor"
@
click=
"showFullConsignor=true"
></el-button>
<el-button
circle
icon=
"el-icon-remove"
v-else
@
click=
"showFullConsignor=false"
></el-button>
<div
v-if=
"showFullConsignor"
>
<el-form-item
:label=
"$t('英文名称')"
prop=
"consignorNameEn"
>
<el-form-item
:label=
"$t('英文名称')"
prop=
"consignorNameEn"
>
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div
class=
"contact"
>
<el-input
v-model=
"form.consignorNameEn"
placeholder=
""
:disabled2=
"inWarehouse"
/>
</div>
</el-form-item>
<el-form-item
:label=
"$t('公司中文名称')"
prop=
"consignorPhone"
>
<el-input
v-model=
"form.consignorCompany"
:disabled2=
"inWarehouse"
/>
<el-input
v-model=
"form.consignorCompany"
:disabled2=
"inWarehouse"
/>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
:label=
"$t('公司英文名称')"
prop=
"consignorPhone"
>
<el-input
v-model=
"form.consignorCompanyEn"
:disabled2=
"inWarehouse"
/>
<el-input
v-model=
"form.consignorCompanyEn"
:disabled2=
"inWarehouse"
/>
</el-form-item>
<el-form-item
label=
"Email"
prop=
"consignorPhone"
>
<el-input
v-model=
"form.consignorEmail"
:disabled2=
"inWarehouse"
/>
<el-input
v-model=
"form.consignorEmail"
:disabled2=
"inWarehouse"
/>
</el-form-item>
</div>
</el-card>
...
...
@@ -64,87 +68,103 @@
<div
class=
"flex items-center"
>
<div
slot=
"header"
class=
"card-title mr-20"
>
收货人
</div>
<el-radio-group
v-if=
"noConsignee"
v-model=
"hasConsignee"
>
<el-radio
:label=
"true"
>
{{
$t
(
'
有
'
)
}}
</el-radio>
<el-radio
:label=
"false"
>
{{
$t
(
'
无
'
)
}}
</el-radio>
<el-radio
:label=
"true"
>
{{
$t
(
'
有
'
)
}}
</el-radio>
<el-radio
:label=
"false"
>
{{
$t
(
'
无
'
)
}}
</el-radio>
</el-radio-group>
</div>
</
template
>
<el-form-item
:label=
"$t('名称')"
prop=
"consigneeContactsId"
>
<el-form-item
v-if=
"hasConsignee"
:label=
"$t('名称')"
prop=
"consigneeContactsId"
>
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div
class=
"contact"
>
<el-input
v-model=
"form.consigneeName"
placeholder=
""
:disabled=
"!hasConsignee"
/>
<img
v-if=
"!updateChannel && hasConsignee"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignee'"
/>
<img
v-if=
"!updateChannel && hasConsignee"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='1'"
/>
<img
v-if=
"!updateChannel && hasConsignee"
src=
"@/assets/svg/contacts.svg"
class=
"phonebook"
@
click=
"contactChooseType='consignee'"
/>
<img
v-if=
"!updateChannel && hasConsignee"
src=
"@/assets/svg/contact_create.svg"
class=
"phonebook"
@
click=
"quickCreateType='1'"
/>
</div>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
:label=
"$t('电话')"
prop=
"consigneePhone"
>
<el-form-item
v-if=
"hasConsignee"
:label=
"$t('电话')"
prop=
"consigneePhone"
>
<area-code-selector
v-model=
"form.consigneeCountryCode"
class=
"w-200 mr-10"
disabled
/>
<el-input
v-model=
"form.consigneePhone"
class=
"w-200"
disabled
/>
</el-form-item>
<el-button
circle
icon=
"el-icon-circle-plus"
v-if=
"!showFullConsignee"
@
click=
"showFullConsignee=true"
></el-button>
<el-button
circle
icon=
"el-icon-remove"
v-else
@
click=
"showFullConsignee=false"
></el-button>
<el-button
circle
icon=
"el-icon-circle-plus"
v-if=
"hasConsignee && !showFullConsignee"
@
click=
"showFullConsignee=true"
></el-button>
<el-button
circle
icon=
"el-icon-remove"
v-if=
"hasConsignee && showFullConsignee"
@
click=
"showFullConsignee=false"
></el-button>
<div
v-if=
"showFullConsignee"
>
<el-form-item
:label=
"$t('英文名称')"
prop=
"consigneeNameEn"
>
<el-form-item
v-if=
"hasConsignee"
:label=
"$t('英文名称')"
prop=
"consigneeNameEn"
>
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div
class=
"contact"
>
<el-input
v-model=
"form.consigneeNameEn"
placeholder=
""
:disabled=
"!hasConsignee"
/>
</div>
</el-form-item>
<el-form-item
:label=
"$t('公司中文名称')"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeCompany"
:disabled=
"!hasConsignee"
/>
<el-form-item
v-if=
"hasConsignee"
:label=
"$t('公司中文名称')"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeCompany"
:disabled=
"!hasConsignee"
/>
</el-form-item>
<!-- v1.7新增 -->
<el-form-item
:label=
"$t('公司英文名称')"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeCompanyEn"
:disabled=
"!hasConsignee"
/>
<el-form-item
v-if=
"hasConsignee"
:label=
"$t('公司英文名称')"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeCompanyEn"
:disabled=
"!hasConsignee"
/>
</el-form-item>
<el-form-item
label=
"Email"
prop=
"consigneePhone"
>
<el-form-item
v-if=
"hasConsignee"
label=
"Email"
prop=
"consigneePhone"
>
<el-input
v-model=
"form.consigneeEmail"
:disabled=
"!hasConsignee"
/>
</el-form-item>
</div>
</el-card>
<el-card
class=
"mt-10"
>
<div
slot=
"header"
class=
"card-title"
>
{{$t('运输')
}}
</div>
<div
slot=
"header"
class=
"card-title"
>
{{ $t('运输')
}}
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportId"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"form.transportId"
formatter=
"number"
clearable
@
input=
"updateRoutes('transportId')"
:disabled=
"form.shipmentState
"
/>
clearable
@
input=
"updateRoutes('transportId')"
:disabled=
"form.shipmentState > 0
"
/>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('始发城市')"
prop=
"departureId"
:disabled=
"false"
>
<el-select
v-model=
"form.departureId"
:placeholder=
"$t('请选择始发地')"
:disabled=
"form.shipmentState"
clearable
@
input=
"updateRoutes('departureId')"
>
<el-option
v-for=
"item in exportCityList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-select
v-model=
"form.departureId"
:placeholder=
"$t('请选择始发地')"
:disabled=
"form.shipmentState > 0"
clearable
@
input=
"updateRoutes('departureId')"
>
<el-option
v-for=
"item in exportCityList"
:label=
"$l(item, 'title')"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('目的国家')"
prop=
"destCountryId"
>
<el-select
v-model=
"form.destCountryId"
:placeholder=
"$t('请选择目的国家')"
@
change=
"handleChangeDestCountry"
clearable
:disabled=
"form.shipmentState"
>
<el-option
v-for=
"item in showDestCountryList"
:label=
"$l(item, 'guojiaName')"
:value=
"item.guojia"
:key=
"item.guojia"
></el-option>
<el-select
v-model=
"form.destCountryId"
:placeholder=
"$t('请选择目的国家')"
@
change=
"handleChangeDestCountry"
clearable
:disabled=
"form.shipmentState > 0"
>
<el-option
v-for=
"item in showDestCountryList"
:label=
"$l(item, 'guojiaName')"
:value=
"item.guojia"
:key=
"item.guojia"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('目的城市')"
prop=
"objectiveId"
>
<el-select
v-model=
"form.objectiveId"
:placeholder=
"$t('请选择目的地')"
@
change=
"handleChangeDestCity"
clearable
>
<el-option
v-for=
"item in showDestCityList"
:label=
"$l(item, 'shiName')"
:value=
"item.shi"
:key=
"item.shi"
></el-option>
<el-select
v-model=
"form.objectiveId"
:placeholder=
"$t('请选择目的地')"
@
change=
"handleChangeDestCity"
clearable
>
<el-option
v-for=
"item in showDestCityList"
:label=
"$l(item, 'shiName')"
:value=
"item.shi"
:key=
"item.shi"
></el-option>
</el-select>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('选择线路')"
prop=
"lineId"
>
<el-input
:value=
"selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''"
disabled
:placeholder=
"$t('请在右侧选择线路')"
></el-input>
<el-input
:value=
"selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''"
disabled
:placeholder=
"$t('请在右侧选择线路')"
></el-input>
</el-form-item>
<!--select是原生组件,不受el-form的disabled控制-->
<select
size=
"5"
v-model=
"form.lineId"
style=
"min-width: 300px; border:1px solid #DCDFE6; border-radius:4px"
@
change=
"handleChangeLineId"
>
<select
size=
"5"
v-model=
"form.lineId"
style=
"min-width: 300px; border:1px solid #DCDFE6; border-radius:4px"
@
change=
"handleChangeLineId"
>
<option
v-for=
"item in routerList"
:value=
"item.id"
:key=
"item.id"
>
{{$l(item, 'startTitle')}} >> {{$l(item, 'destTitle')}}
(
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"item.transportType"
></dict-tag>
)
{{ $l(item, 'startTitle') }} >> {{ $l(item, 'destTitle') }}
(
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"item.transportType"
></dict-tag>
)
</option>
</select>
</div>
<div
class=
"form-section mt-10"
>
<el-form-item
:label=
"$t('出货渠道')"
prop=
"channelId"
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"
>
<el-form-item
:label=
"$t('出货渠道')"
prop=
"channelId"
v-if=
"getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"
>
<!--嵌套一个form来脱离disabled控制-->
<el-form>
<selector
...
...
@@ -159,10 +179,13 @@
</div>
<div>
<!--默认显示类型(selectedRouter==null),如果选择路线后没开通则隐藏-->
<el-form-item
:label=
"$t('增值服务')"
v-if=
"routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1"
>
<el-form-item
:label=
"$t('增值服务')"
v-if=
"routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1"
>
<el-checkbox-group
v-model=
"form.type"
>
<el-checkbox
label=
"1"
v-if=
"routeOtherServices.indexOf('1') > -1"
>
{{$t('集运')}}
</el-checkbox>
<el-checkbox
label=
"2"
v-if=
"routeOtherServices.indexOf('4') > -1"
:disabled=
"form.shipmentState"
>
{{$t('海外仓')}}
</el-checkbox>
<el-checkbox
label=
"1"
v-if=
"routeOtherServices.indexOf('1') > -1"
>
{{ $t('集运') }}
</el-checkbox>
<el-checkbox
label=
"2"
v-if=
"routeOtherServices.indexOf('4') > -1"
:disabled=
"form.shipmentState > 0"
>
{{ $t('海外仓') }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</div>
...
...
@@ -170,19 +193,23 @@
<el-card
class=
"mt-10"
>
<div
slot=
"header"
class=
"card-title"
>
<!--lanbm 根据需求文档改 商品信息 为 商品 -->
<div
class=
"card-name"
>
{{$t('商品')}}
</div>
<el-button
type=
"primary"
size=
"mini"
@
click=
"addProduct(null)"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{$t('添加')}}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"showBatchImportDialog=true"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{$t('批量添加')}}
</el-button>
<div
class=
"card-name"
>
{{ $t('商品') }}
</div>
<el-button
type=
"primary"
size=
"mini"
@
click=
"addProduct(null)"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{ $t('添加') }}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"showBatchImportDialog=true"
:disabled=
"!canAddProduct || !productEditable || updateChannel"
>
{{ $t('批量添加') }}
</el-button>
</div>
<el-table
:data=
"form.orderItemVOList"
border
class=
"product-list"
v-if=
"!initing"
>
<el-table-column
:label=
"$t('序号')"
width=
"60px"
fixed
>
<
template
slot-scope=
"scope"
>
{{
scope
.
$index
+
1
}}
{{
scope
.
$index
+
1
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('中文品名')"
width=
"160px"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
{{
$t
(
'
中文品名
'
)
}}
<span
class=
"red"
>
*
</span>
{{
$t
(
'
中文品名
'
)
}}
<span
class=
"red"
>
*
</span>
</
template
>
<
template
slot-scope=
"scope"
>
<el-form-item
label=
""
...
...
@@ -204,7 +231,7 @@
</el-table-column>
<el-table-column
:label=
"$t('英文品名')"
width=
"160px"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
{{
$t
(
'
英文品名
'
)
}}
<span
class=
"red"
>
*
</span>
{{
$t
(
'
英文品名
'
)
}}
<span
class=
"red"
>
*
</span>
</
template
>
<
template
slot-scope=
"scope"
>
<product-selector
...
...
@@ -212,13 +239,13 @@
v-model=
"scope.row.prodId"
@
change=
"onProductChange(scope.row, $event)"
@
focus=
"scope.row.updated = true"
:disabled=
"!canAddProduct || !productEditable"
/>
:disabled=
"!canAddProduct || !productEditable"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('品牌')"
width=
"100px"
>
<
template
slot=
"header"
>
{{
$t
(
'
品牌
'
)
}}
<span
class=
"red"
>
*
</span>
{{
$t
(
'
品牌
'
)
}}
<span
class=
"red"
>
*
</span>
</
template
>
<
template
slot-scope=
"scope"
>
<el-form-item
label=
""
...
...
@@ -228,29 +255,33 @@
}"
class="mb-0 mr-0"
>
<dict-selector
v-model=
"scope.row.brandType"
:type=
"DICT_TYPE.ECW_IS_BRAND"
defaultable
:disabled=
"!canAddProduct || !productEditable"
/>
<dict-selector
v-model=
"scope.row.brandType"
:type=
"DICT_TYPE.ECW_IS_BRAND"
defaultable
:disabled=
"!canAddProduct || !productEditable"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('件数')"
width=
"90px"
>
<
template
slot=
"header"
>
{{
$t
(
'
件数
'
)
}}
<span
class=
"red"
>
*
</span>
{{
$t
(
'
件数
'
)
}}
<span
class=
"red"
>
*
</span>
</
template
>
<
template
slot-scope=
"{row}"
>
<el-input-number
:min=
"0"
:controls=
"false"
style=
"width: 65px"
v-model.number=
"row.num"
:disabled=
"!canAddProduct || !productEditable"
/>
<el-input-number
:min=
"0"
:controls=
"false"
style=
"width: 65px"
v-model.number=
"row.num"
:disabled=
"!canAddProduct || !productEditable"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('包装单位')"
width=
"100px"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
{{
$t
(
'
包装单位
'
)
}}
<span
class=
"red"
>
*
</span>
{{
$t
(
'
包装单位
'
)
}}
<span
class=
"red"
>
*
</span>
</
template
>
<
template
slot-scope=
"{row}"
>
<dict-selector
v-model=
"row.unit"
:type=
"DICT_TYPE.ECW_PACKAGING_TYPE"
defaultable
:disabled=
"!canAddProduct || !productEditable"
/>
<dict-selector
v-model=
"row.unit"
:type=
"DICT_TYPE.ECW_PACKAGING_TYPE"
defaultable
:disabled=
"!canAddProduct || !productEditable"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"`${$t('数量')}(${$t('个')})`"
width=
"120px"
>
<
template
slot-scope=
"{row}"
>
<el-input-number
:min=
"1"
:step=
"1"
style=
"width: 80px;"
:controls=
"false"
v-model=
"row.quantity"
:disabled=
"!canAddProduct || !productEditable"
/>
<el-input-number
:min=
"1"
:step=
"1"
style=
"width: 80px;"
:controls=
"false"
v-model=
"row.quantity"
:disabled=
"!canAddProduct || !productEditable"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('总体积') + '(m³)'"
width=
"120px"
>
...
...
@@ -262,7 +293,8 @@
]"
class="mb-0 mr-0"
>
<el-input-number
:min=
"0"
v-model=
"scope.row.volume"
:disabled=
"!canAddProduct || !productEditable"
:controls=
"false"
style=
"width: 80px"
/>
<el-input-number
:min=
"0"
v-model=
"scope.row.volume"
:disabled=
"!canAddProduct || !productEditable"
:controls=
"false"
style=
"width: 80px"
/>
</el-form-item>
</
template
>
</el-table-column>
...
...
@@ -275,13 +307,14 @@
]"
class="mb-0 mr-0"
>
<el-input-number
:min=
"0"
:controls=
"false"
style=
"width: 80px"
v-model=
"scope.row.weight"
:disabled=
"!canAddProduct || !productEditable"
/>
<el-input-number
:min=
"0"
:controls=
"false"
style=
"width: 80px"
v-model=
"scope.row.weight"
:disabled=
"!canAddProduct || !productEditable"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('总货值') + '(RMB)'"
width=
"100px"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
{{
$t
(
'
货值
'
)
}}
(RMB)
<span
class=
"red"
>
*
</span>
{{
$t
(
'
货值
'
)
}}
(RMB)
<span
class=
"red"
>
*
</span>
</
template
>
<
template
slot-scope=
"scope"
>
<el-form-item
label=
""
...
...
@@ -293,39 +326,45 @@
class="mb-0 mr-0"
>
<!--input事件在快速输入的时候,可能最后拿到的结果不是最后输入的参数,所以改成在blur的时候计算-->
<el-input-number
:min=
"0"
:controls=
"false"
style=
"width: 80px"
v-model.number=
"scope.row.worth"
:disabled=
"!canAddProduct"
@
blur=
"calculationPrice"
/>
<el-input-number
:min=
"0"
:controls=
"false"
style=
"width: 80px"
v-model.number=
"scope.row.worth"
:disabled=
"!canAddProduct"
@
blur=
"calculationPrice"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('商品特性')"
width=
"250px"
>
<
template
slot-scope=
"{row}"
>
<el-checkbox-group
v-model=
"row.prodAttrArr"
@
change=
"onProductAttrChange(row, $event)"
:disabled=
"row.prodAttrArr.indexOf(4)!=-1||!canAddProduct || !productEditable"
>
<el-checkbox
v-for=
"item in productAttrList"
:label=
"item.id"
:key=
"item.id"
>
{{
$l
(
item
,
'
attrName
'
)
}}
</el-checkbox>
<el-checkbox-group
v-model=
"row.prodAttrArr"
@
change=
"onProductAttrChange(row, $event)"
:disabled=
"row.prodAttrArr.indexOf(4)!=-1||!canAddProduct || !productEditable"
>
<el-checkbox
v-for=
"item in productAttrList"
:label=
"item.id"
:key=
"item.id"
>
{{
$l
(
item
,
'
attrName
'
)
}}
</el-checkbox>
</el-checkbox-group>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('是否预付')"
>
<
template
slot-scope=
"{row}"
>
<dict-tag
v-if=
"row.fee"
:type=
"DICT_TYPE.ECW_PAY_ADVANCE"
:value=
"row.fee.isPayAdvance"
/>
<dict-tag
v-if=
"row.fee"
:type=
"DICT_TYPE.ECW_PAY_ADVANCE"
:value=
"row.fee.isPayAdvance"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('商品链接')"
width=
"200px"
align=
"center"
>
<
template
slot-scope=
"{row}"
>
<el-link
type=
"primary"
:href=
"row.link"
target=
"_blank"
style=
"display:block"
>
{{
row
.
link
}}
</el-link>
<el-link
type=
"primary"
:href=
"row.link"
target=
"_blank"
style=
"display:block"
>
{{
row
.
link
}}
</el-link>
<el-button
type=
"primary"
size=
"mini"
@
click=
"setLink(row)"
v-if=
"productEditable"
>
{{
row
.
link
?
$t
(
'
编辑商品链接
'
)
:
$t
(
'
添加商品链接
'
)
}}
{{
row
.
link
?
$t
(
'
编辑商品链接
'
)
:
$t
(
'
添加商品链接
'
)
}}
</el-button>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('快递单号')"
width=
"100px"
>
<
template
slot-scope=
"{row}"
>
<el-input
v-model=
"row.expressNo"
placeholder=
""
:disabled=
"!productEditable"
/>
<el-input
v-model=
"row.expressNo"
placeholder=
""
:disabled=
"!productEditable"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
width=
"80px"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"danger"
@
click=
"delProduct(scope.$index)"
:disabled=
"!productEditable || updateChannel"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
<el-button
size=
"mini"
type=
"danger"
@
click=
"delProduct(scope.$index)"
:disabled=
"!productEditable || updateChannel"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
</
template
>
</el-table-column>
...
...
@@ -333,85 +372,86 @@
<!--
</el-card>
<el-card class="mt-10"> -->
<div
class=
"card-title"
style=
"padding:20px 0;"
>
{{$t('合计')
}}
</div>
<div
class=
"card-title"
style=
"padding:20px 0;"
>
{{ $t('合计')
}}
</div>
<el-descriptions
:column=
"6"
border
>
<el-descriptions-item
:label=
"$t('总件数')"
>
{{sum.totalNum.toFixed()
}}
{{ sum.totalNum.toFixed()
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总体积')"
>
{{sum.totalVolume.toFixed()
}}m³
{{ sum.totalVolume.toFixed()
}}m³
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总重量')"
>
{{sum.totalWeight.toFixed()
}}kg
{{ sum.totalWeight.toFixed()
}}kg
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总数量')"
>
{{sum.totalQuatity.toFixed() || 0
}}
{{ sum.totalQuatity.toFixed() || 0
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总货值') + '(RMB)'"
>
{{sum.totalWorth.toFixed() || 0
}}元
{{ sum.totalWorth.toFixed() || 0
}}元
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('保价费')"
>
{{fee.insuranceFee || 0
}}
{{ fee.insuranceFee || 0
}}
{{ selectedRouter ? currentcyMap[selectedRouter.currencyUnit || 1] : '' }}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card
class=
"mt-10
"
>
<div
class=
"card-title"
slot=
"header"
>
{{$t('通用')
}}
</div>
<el-card
class=
"mt-10 right-label
"
>
<div
class=
"card-title"
slot=
"header"
>
{{ $t('通用')
}}
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('唛头')"
prop=
"marks"
class=
"w-500"
>
<el-input
v-model=
"form.marks"
></el-input>
<el-form-item
:label=
"$t('唛头')"
prop=
"marks"
class=
"w-500"
>
<el-input
v-model=
"form.marks"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('单证报关')"
:span=
"2"
prop=
"customsType"
>
<
template
#label
>
{{
$t
(
'
单证报关
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('我司全代 : 该货物的出口手续由我司代为办理 ; 自单代报: 该货物由发货人提供相关出口单证并委托我司代为办理 ;混单代报该货物有以上两种情况出现')"
placement=
"top"
>
{{
$t
(
'
单证报关
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('我司全代 : 该货物的出口手续由我司代为办理 ; 自单代报: 该货物由发货人提供相关出口单证并委托我司代为办理 ;混单代报该货物有以上两种情况出现')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</
template
>
<!--241023 已起运不让修改报关方式-->
<dict-selector
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model=
"form.customsType"
form-type=
"radio"
defaultable
:disabled=
"isShipment"
/>
<dict-selector
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
v-model=
"form.customsType"
form-type=
"radio"
defaultable
:disabled=
"isShipment"
/>
<!--自单代报显示提示-->
<div
v-if=
"+form.customsType === 2"
style=
"color:red;font-size:14px"
>
{{$t('报关退税,请备齐资料。')
}}
</div>
<div
v-if=
"+form.customsType === 2"
style=
"color:red;font-size:14px"
>
{{ $t('报关退税,请备齐资料。')
}}
</div>
</el-form-item>
</div>
<div
class=
"form-section"
v-if=
"form.transportId == 3"
>
<!--目的港清关:选择专线空运才显示,默认选中我司
我司选中后,按钮下方显示“多票”和“单票”的操作,默认选中多票。
客户选中后,按钮下方显示“单票”的操作,默认选中,无需点击-->
<div
class=
"form-section w-500"
>
<el-form-item
:label=
"$t('目的港清关')"
>
<el-form-item
:label=
"$t('目的港清关')"
class=
"w-500"
>
<el-radio-group
v-model=
"form.portDestCustomsClear"
>
<el-radio
:label=
"1"
>
{{$t('我司')
}}
{{ $t('我司')
}}
<el-tooltip
effect=
"dark"
:content=
"$t('我司承接')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</el-radio>
<el-radio
:label=
"2"
>
{{$t('客户')
}}
{{ $t('客户')
}}
<el-tooltip
effect=
"dark"
:content=
"$t('客户自清')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('发货方式')"
>
<el-radio-group
v-model=
"form.deliveryWay"
>
<el-radio
:label=
"1"
v-if=
"form.portDestCustomsClear == 1"
>
{{$t('多票')
}}
</el-radio>
<el-radio
:label=
"2"
>
{{$t('单票')
}}
</el-radio>
<el-radio
:label=
"1"
v-if=
"form.portDestCustomsClear == 1"
>
{{ $t('多票')
}}
</el-radio>
<el-radio
:label=
"2"
>
{{ $t('单票')
}}
</el-radio>
</el-radio-group>
</el-form-item>
</div>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('是否控货')"
prop=
"isCargoControl"
class=
"w-500"
>
<
template
#label
>
{{
$t
(
'
是否控货
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('是指由发货人与收货人约定在货物的国际运输过程中,我司作为第三方对该货物货权的控制;需由发货人授权我司放货的情况下收货人才能提取该票货物的一种交易方式')"
placement=
"top"
>
{{
$t
(
'
是否控货
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('是指由发货人与收货人约定在货物的国际运输过程中,我司作为第三方对该货物货权的控制;需由发货人授权我司放货的情况下收货人才能提取该票货物的一种交易方式')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</
template
>
...
...
@@ -427,41 +467,47 @@
/>
</el-form-item>
<el-form-item
:label=
"$t('付款人')"
prop=
"drawee"
class=
"w-500"
>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
v-model=
"form.drawee"
defaultable
form-type=
"radio"
:disabled=
"false"
/>
<el-table
:data=
"customDraweeList"
v-if=
"form.drawee==3"
>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
v-model=
"form.drawee"
defaultable
form-type=
"radio"
:disabled=
"false"
/>
<el-table
:data=
"customDraweeList"
v-if=
"form.drawee==3"
>
<el-table-column
:label=
"$t('费用类型')"
prop=
"label"
width=
"200px"
></el-table-column>
<el-table-column
:label=
"$t('付款人')"
width=
"300px"
>
<
template
slot-scope=
"{row}"
>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
:filter=
"(e) => e.value == 1 || e.value == 2"
v-model=
"row.value"
form-type=
"radio"
:disabled=
"false"
/>
<dict-selector
:formatter=
"Number"
:type=
"DICT_TYPE.DRAWEE"
:filter=
"(e) => e.value == 1 || e.value == 2"
v-model=
"row.value"
form-type=
"radio"
:disabled=
"false"
/>
</
template
>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item
:label=
"$t('提单是否显示价格')"
prop=
"displayBillLadingPrice"
>
<el-radio-group
v-model=
"form.displayBillLadingPrice"
>
<el-radio
:label=
"true"
>
{{$t('显示')
}}
</el-radio>
<el-radio
:label=
"false"
>
{{$t('不显示')
}}
</el-radio>
<el-radio
:label=
"true"
>
{{ $t('显示')
}}
</el-radio>
<el-radio
:label=
"false"
>
{{ $t('不显示')
}}
</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div
class=
"form-section flex"
>
<el-form-item
:label=
"$t('入仓类型')"
prop=
"warehouseType"
class=
"w-500"
>
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"form.warehouseType"
defaultable
:disabled=
"false"
/>
<dict-selector
:type=
"DICT_TYPE.ECW_WAREHOUSING_TYPE"
v-model=
"form.warehouseType"
defaultable
:disabled=
"false"
/>
</el-form-item>
<div>
<el-form-item
:label=
"$t('外部仓库')"
prop=
"isExternalWarehouse"
>
<el-checkbox
label=
""
v-model=
"form.isExternalWarehouse"
@
change=
"form.isExternalWarehouse=$event"
:disabled=
"false"
></el-checkbox>
<el-checkbox
label=
""
v-model=
"form.isExternalWarehouse"
@
change=
"form.isExternalWarehouse=$event"
:disabled=
"false"
></el-checkbox>
</el-form-item>
<div
v-if=
"form.isExternalWarehouse"
>
<div
v-for=
"(item, index) in form.externalWarehouseDtoList"
class=
"flex"
:key=
"index"
>
<div
class=
"w-30
0"
>
<div
class=
"w-38
0"
>
<el-form-item
:label=
"$t('装货时间')"
:prop=
"'externalWarehouseDtoList.' + index + '.estLoadingTime'"
:rules=
"{
required: true, message: '装货时间不能为空', trigger: 'blur'
}"
>
<el-date-picker
v-model=
"item.estLoadingTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
class=
"w-200"
></el-date-picker>
<el-date-picker
v-model=
"item.estLoadingTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
class=
"w-200"
></el-date-picker>
</el-form-item>
</div>
<div
class=
"w-500"
>
...
...
@@ -473,8 +519,11 @@
>
<el-input
v-model=
"item.loadingAddress"
placeholder=
""
class=
"w-200"
></el-input>
</el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-plus"
v-if=
"index==0"
@
click=
"form.externalWarehouseDtoList.push({})"
></el-button>
<el-button
type=
"danger"
icon=
"el-icon-delete"
v-else-if=
"index == form.externalWarehouseDtoList.length-1"
@
click=
"form.externalWarehouseDtoList.splice(index, 1)"
></el-button>
<el-button
type=
"primary"
icon=
"el-icon-plus"
v-if=
"index==0"
@
click=
"form.externalWarehouseDtoList.push({})"
></el-button>
<el-button
type=
"danger"
icon=
"el-icon-delete"
v-else-if=
"index == form.externalWarehouseDtoList.length-1"
@
click=
"form.externalWarehouseDtoList.splice(index, 1)"
></el-button>
</div>
</div>
</div>
...
...
@@ -485,30 +534,32 @@
<el-date-picker
v-model=
"form.deliveryDate"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('是否代收货款')"
prop=
"isCollection"
v-if=
"collectionProxy"
class=
"w-500"
>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
v-model=
"form.isCollection"
form-type=
"radio"
:disabled=
"false"
/>
<dict-selector
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
v-model=
"form.isCollection"
form-type=
"radio"
:disabled=
"false"
/>
</el-form-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-form-item
:label=
"$t('代收货款金额')"
v-if=
"collectionProxy && form.isCollection"
prop=
"collectionProxy"
>
<el-input
type=
"number"
v-model=
"form.collectionProxy"
class=
"w-200 mr-10"
:disabled=
"false"
></el-input>
<selector
v-model=
"form.collectionProxyCurrency"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
class=
"w-100"
:disabled=
"false"
/>
<selector
v-model=
"form.collectionProxyCurrency"
:options=
"currencyList"
label-field=
"titleZh"
value-field=
"id"
defaultable
class=
"w-100"
:disabled=
"false"
/>
</el-form-item>
</div>
<div
class=
"form-section flex"
>
<el-form-item
:label=
"$t('收货方式')"
prop=
"harvestMethod"
class=
"w-500"
>
<el-select
v-model=
"form.harvestMethod"
@
change=
"handleChange"
>
<el-option
:label=
"$t('自提')"
:value=
"1"
></el-option>
<el-option
v-if=
"homeDeliveryService"
:label=
"$t('送货上门')"
:value=
"2"
></el-option>
<el-option
:label=
"$t('自提')"
:value=
"1"
></el-option>
<el-option
v-if=
"homeDeliveryService"
:label=
"$t('送货上门')"
:value=
"2"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('关联报价单')"
prop=
"offerId"
>
<span
v-if=
"offerIdNochange&&offerNumber"
>
{{offerNumber
}}
</span>
<span
v-if=
"offerIdNochange&&offerNumber"
>
{{ offerNumber
}}
</span>
<el-select
v-else
v-model=
"form.offerId"
filterable
clearable
reserve-keyword
:disabled =
"offerIdNochange"
:disabled=
"offerIdNochange"
:placeholder=
"$t('请选择')"
>
<el-option
...
...
@@ -543,41 +594,50 @@
<div
class=
"card-title"
>
其他
</div>
</
template
>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('特殊要求')"
>
<el-form-item
:label=
"$t('特殊要求')"
>
<
template
#label
>
{{
$t
(
'
特殊要求
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('如需我司打包,请勾选相应选项,费用付款人及打包要求可备注补充')"
placement=
"top"
>
{{
$t
(
'
特殊要求
'
)
}}
<el-tooltip
effect=
"dark"
:content=
"$t('如需我司打包,请勾选相应选项,费用付款人及打包要求可备注补充')"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
</
template
>
<dict-selector
v-model=
"form.packageTypeArr"
form-type=
"checkbox"
:type=
"DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple
:disabled=
"false"
/>
<dict-selector
v-model=
"form.packageTypeArr"
form-type=
"checkbox"
:type=
"DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple
:disabled=
"false"
/>
</el-form-item>
<el-form-item
:label=
"$t('特殊要求备注')"
>
<el-input
v-model=
"form.packageRemarks"
:disabled=
"false"
></el-input>
<el-input
v-model=
"form.packageRemarks"
:disabled=
"false"
></el-input>
</el-form-item>
</div>
<div
class=
"form-section"
>
<el-form-item
:label=
"$t('快递单号')"
>
<el-input
v-model=
"form.number"
:placeholder=
"$t('请输入购买商品的快递单号')"
:disabled=
"false"
>
<el-button
type=
"primary"
slot=
"append"
@
click=
"getOrderCourierNumber"
:disabled=
"false"
>
{{$t('生成单号')}}
</el-button>
<el-button
type=
"primary"
slot=
"append"
@
click=
"getOrderCourierNumber"
:disabled=
"false"
>
{{ $t('生成单号') }}
</el-button>
</el-input>
</el-form-item>
</div>
<div
class=
"form-section"
v-if=
"[2,3,4].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('清关证书')"
>
<dict-selector
v-model=
"form.customsClearCert"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<dict-selector
v-model=
"form.customsClearCert"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
</el-form-item>
<el-form-item
:label=
"$t('清关证书备注')"
>
<el-form-item
:label=
"$t('清关证书备注')"
>
<el-input
v-model=
"form.customsClearCertRemarks"
:disabled=
"false"
></el-input>
</el-form-item>
</div>
<div
class=
"form-section"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<div
class=
"form-section"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<el-form-item
:label=
"$t('是否拆包')"
>
<dict-selector
v-model=
"form.isUnpack"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<dict-selector
v-model=
"form.isUnpack"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
</el-form-item>
<el-form-item
:label=
"$t('单票立刻转运')"
v-if=
"[3,4].indexOf(+form.transportId) > -1"
>
<dict-selector
v-model=
"form.isSingleTicketTransport"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<span
style=
"margin-left:10px"
>
{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}
</span>
<dict-selector
v-model=
"form.isSingleTicketTransport"
form-type=
"radio"
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter=
"bool"
:defaultable=
"!editMode"
:disabled=
"false"
/>
<span
style=
"margin-left:10px"
>
{{ $t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”') }}
</span>
</el-form-item>
</div>
<!-- 20240823 新需求改动:屏蔽出单方式 和 是否双清字段
...
...
@@ -600,52 +660,58 @@
</el-card>
<el-card
class=
"mt-10"
v-if=
"showWorkFlow"
>
<div
class=
"card-title"
slot=
"header"
>
{{$t('审批流程')
}}
</div>
<work-flow
:xmlkey=
"updateChannel ? 'shipment_channel_change' : 'order_modify'"
v-model=
"ccIdArr"
/>
<div
class=
"card-title"
slot=
"header"
>
{{ $t('审批流程')
}}
</div>
<work-flow
:xmlkey=
"updateChannel ? 'shipment_channel_change' : 'order_modify'"
v-model=
"ccIdArr"
/>
</el-card>
<div
style=
"margin: 30px 0; display: flex"
>
<!--返回按钮应该在表单被禁用的情况下也可以点击,所以需要用一个form来包裹以脱离原form的disabled控制-->
<el-form
inline
class=
"mr-10"
>
<el-button
@
click=
"$store.dispatch('tagsView/delCurrentView')"
>
{{$t('返回')
}}
</el-button>
<el-button
@
click=
"$store.dispatch('tagsView/delCurrentView')"
>
{{ $t('返回')
}}
</el-button>
</el-form>
<
template
v-if=
"form.applyStatus == 1"
>
<el-button
type=
"primary"
@
click=
"$router.push('/bpm/process-instance/detail?id=' + form.formId)"
>
{{
$t
(
'
审核中
'
)
}}
</el-button>
<el-button
type=
"primary"
@
click=
"$router.push('/bpm/process-instance/detail?id=' + form.formId)"
>
{{
$t
(
'
审核中
'
)
}}
</el-button>
</
template
>
<!--更新渠道的时候用一个form包裹按钮,脱离原form的disabled控制-->
<el-form
v-else-if=
"updateChannel"
inline
>
<el-button
type=
"primary"
@
click=
"submitForm(2)"
>
{{$t('编辑订单')
}}
</el-button>
<!--修改-->
<el-button
type=
"primary"
@
click=
"submitForm(2)"
>
{{ $t('编辑订单')
}}
</el-button>
<!--修改-->
</el-form>
<
template
v-else
>
<el-button
type=
"primary"
@
click=
"submitForm(0)"
v-if=
"!form.status"
>
{{
$t
(
'
保存草稿
'
)
}}
</el-button>
<!--草稿-->
<el-button
type=
"primary"
@
click=
"submitForm(2)"
v-if=
"!form.orderId || !form.status"
>
{{
$t
(
'
新建订单
'
)
}}
</el-button>
<!--待入仓-->
<el-button
type=
"primary"
@
click=
"submitForm(2)"
v-else
>
{{
$t
(
'
编辑订单
'
)
}}
</el-button>
<!--修改-->
<el-button
type=
"primary"
@
click=
"submitForm(0)"
v-if=
"!form.status"
>
{{
$t
(
'
保存草稿
'
)
}}
</el-button>
<!--草稿-->
<el-button
type=
"primary"
@
click=
"submitForm(2)"
v-if=
"!form.orderId || !form.status"
>
{{
$t
(
'
新建订单
'
)
}}
</el-button>
<!--待入仓-->
<el-button
type=
"primary"
@
click=
"submitForm(2)"
v-else
>
{{
$t
(
'
编辑订单
'
)
}}
</el-button>
<!--修改-->
</
template
>
</div>
</el-form>
<el-dialog
:title=
"$t('批量导入')"
:visible.sync=
"showBatchImportDialog"
width=
"1000px"
:close-on-click-modal=
"false"
>
<el-dialog
:title=
"$t('批量导入')"
:visible.sync=
"showBatchImportDialog"
width=
"1000px"
:close-on-click-modal=
"false"
>
<el-steps
:active=
"importList.length > 0 ? 1 : 0"
finish-status=
"success"
class=
"w-500"
style=
"margin: 20px auto"
>
<el-step
:title=
"$t('上传装箱单')"
></el-step>
<el-step
:title=
"$t('开始导入')"
></el-step>
<el-step
:title=
"$t('完成')"
></el-step>
</el-steps>
<div
class=
"mt-20"
>
<el-upload
:http-request=
"upload"
:show-file-list=
"false"
action=
""
class=
"mr-10"
style=
"display:inline-block; "
>
<el-button
size=
"small"
type=
"primary"
>
{{$t('点击上传')}}
</el-button>
<el-upload
:http-request=
"upload"
:show-file-list=
"false"
action=
""
class=
"mr-10"
style=
"display:inline-block; "
>
<el-button
size=
"small"
type=
"primary"
>
{{ $t('点击上传') }}
</el-button>
</el-upload>
<el-button
type=
"info"
@
click=
"downloadTpl"
size=
"small"
:loading=
"exportLoading"
>
{{$t('装箱单模板')}}
</el-button>
<el-button
type=
"info"
@
click=
"downloadTpl"
size=
"small"
:loading=
"exportLoading"
>
{{ $t('装箱单模板') }}
</el-button>
</div>
<el-table
:data=
"importList"
class=
"mt-10"
height=
"300"
>
<el-table-column
:label=
"$t('序号')"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
$index
+
1
}}
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
$index
+
1
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('中文品名')"
prop=
"prodTitleZh"
></el-table-column>
<el-table-column
:label=
"$t('英文品名')"
prop=
"prodTitleEn"
></el-table-column>
<el-table-column
:label=
"$t('品牌')"
prop=
"brand"
>
<
template
slot-scope=
"{row}"
>
<dict-tag
:type=
"DICT_TYPE.ECW_IS_BRAND"
:value=
"row.brandType"
/>
<dict-tag
:type=
"DICT_TYPE.ECW_IS_BRAND"
:value=
"row.brandType"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('件数')"
prop=
"num"
></el-table-column>
...
...
@@ -658,13 +724,15 @@
</el-table>
<div
class=
"mt-10 center"
>
<el-button
type=
"primary"
@
click=
"addToProductList"
>
{{$t('下一步')
}}
</el-button>
<el-button
type=
"default"
@
click=
"showBatchImportDialog=false"
>
{{$t('取消')
}}
</el-button>
<el-button
type=
"primary"
@
click=
"addToProductList"
>
{{ $t('下一步')
}}
</el-button>
<el-button
type=
"default"
@
click=
"showBatchImportDialog=false"
>
{{ $t('取消')
}}
</el-button>
</div>
</el-dialog>
<choose-contact-dialog
v-if=
"!!contactChooseType"
:type=
"2"
@
choose=
"onContactChoose"
@
close=
"contactChooseType=null"
/>
<quick-create-customer
v-if=
"quickCreateType"
:type=
"quickCreateType"
@
success=
"onContactChoose"
@
close=
"quickCreateType=null"
/>
<choose-contact-dialog
v-if=
"!!contactChooseType"
:type=
"2"
@
choose=
"onContactChoose"
@
close=
"contactChooseType=null"
/>
<quick-create-customer
v-if=
"quickCreateType"
:type=
"quickCreateType"
@
success=
"onContactChoose"
@
close=
"quickCreateType=null"
/>
</div>
</template>
...
...
@@ -684,8 +752,8 @@ import {getProductAttrList} from '@/api/ecw/productAttr'
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
import
Selector
from
'
@/components/Selector
'
import
CustomerContactSelector
from
'
@/components/CustomerContactSelector
'
import
{
getGuojiaAndShiAndWarehouseList
,
openedRouterList
as
getOpenedRouterList
}
from
'
@/api/ecw/warehouse
'
import
{
checkCountryCode
,
getTradeCityList
}
from
'
@/api/ecw/region
'
import
{
getGuojiaAndShiAndWarehouseList
,
openedRouterList
as
getOpenedRouterList
}
from
'
@/api/ecw/warehouse
'
import
{
checkCountryCode
,
getTradeCityList
}
from
'
@/api/ecw/region
'
import
{
getDictData
,
getDictDatas
}
from
'
@/utils/dict
'
import
{
getCurrencyList
}
from
'
@/api/ecw/currency
'
import
{
getUnitList
}
from
'
@/api/ecw/unit
'
...
...
@@ -698,9 +766,9 @@ import {calculationPrice} from '@/api/ecw/product'
import
SupplierSelector
from
'
@/components/SupplierSelector
'
import
Decimal
from
'
decimal.js
'
import
WorkFlow
from
'
@/components/WorkFlow
'
import
{
getCustomer
}
from
"
@/api/ecw/customer
"
;
import
{
getCustomer
}
from
"
@/api/ecw/customer
"
;
import
{
debounce
}
from
"
@/utils
"
;
import
{
getOfferSelect
,
getOfferCheck
}
from
"
@/api/ecw/offer
"
import
{
getOfferSelect
,
getOfferCheck
}
from
"
@/api/ecw/offer
"
import
Template
from
'
@/views/cms/template/index.vue
'
// 缓存默认的表单数据
...
...
@@ -710,14 +778,14 @@ let makeDefaultFormData = () => {
lineId
:
null
,
objectiveId
:
null
,
departureId
:
null
,
status
:
0
,
sendstatus
:
0
,
status
:
0
,
sendstatus
:
0
,
isCargoControl
:
false
,
isCollection
:
false
,
type
:[],
type
:
[],
isExternalWarehouse
:
false
,
externalWarehouseDtoList
:[],
orderItemVOList
:[],
externalWarehouseDtoList
:
[],
orderItemVOList
:
[],
drawee
:
2
,
harvestMethod
:
1
,
displayBillLadingPrice
:
true
...
...
@@ -729,11 +797,20 @@ export default {
name
:
"
EcwOrderEdit
"
,
components
:
{
Template
,
ProductSelector
,
Selector
,
CustomerContactSelector
,
AreaSelector
,
FileUpload
,
AreaCodeSelector
,
ChooseContactDialog
,
QuickCreateCustomer
,
SupplierSelector
,
WorkFlow
ProductSelector
,
Selector
,
CustomerContactSelector
,
AreaSelector
,
FileUpload
,
AreaCodeSelector
,
ChooseContactDialog
,
QuickCreateCustomer
,
SupplierSelector
,
WorkFlow
},
data
()
{
let
validatorPositiveNumber
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
||
value
==
''
)
return
callback
();
if
(
!
value
||
value
==
''
)
return
callback
();
if
(
!
value
)
return
callback
(
new
Error
(
'
请输入数字
'
))
if
(
!
Number
(
value
))
return
callback
(
new
Error
(
'
请输入有效数字
'
))
let
reg
=
/
((
^
[
1-9
]\d
*
)
|^0
)(\.\d
*
){0,1}
$/
;
...
...
@@ -747,18 +824,18 @@ export default {
// 遮罩层
loading
:
true
,
//productList:[], // 商品信息
productAttrList
:[],
// 商品属性
productAttrList
:
[],
// 商品属性
channelList
:
[],
// 出货取到
routerList
:
[],
tradeCityList
:
[],
treeList
:
[],
consignorContact
:
{},
// 发货联系人
consigneeContact
:{},
// 收货联系人
consigneeContact
:
{},
// 收货联系人
/* consignee: null,
consignor: null, */
transportList
:
[],
currencyList
:[],
unitList
:[],
currencyList
:
[],
unitList
:
[],
couponList
:
[],
couponTypeList
:
[],
fee
:
{},
// 费用
...
...
@@ -768,7 +845,7 @@ export default {
// 表单校验
labelStyle
:
'
width:120px
'
,
showBatchImportDialog
:
false
,
// 显示批量导入弹窗
importList
:[],
importList
:
[],
exportLoading
:
false
,
// 装下单模板下载状态
contactChooseType
:
null
,
// 联系人选择对象consignor(发货人) 或者 consignee(收货人)
quickCreateType
:
null
,
// 快速新建客户类型,1发货人,2收货人
...
...
@@ -777,14 +854,16 @@ export default {
initing
:
true
,
// 初始化中,
updateChannel
:
false
,
// 是否更新渠道
offerData
:
[],
// 关联报价单
offerIdNochange
:
false
,
offerNumber
:
null
,
offerIdNochange
:
false
,
offerNumber
:
null
,
showAdress
:
false
,
// harvestMethod2: null,
/* lunchList: [
{ label: "自提", value: 1 },
{ label: "送货上门", value: 2 },
], */
// 发货人客户最新信息
consignorCustomer
:
null
,
// 发货人是否允许控货无收货人
noConsignee
:
false
,
// 是否有收货人
...
...
@@ -793,13 +872,13 @@ export default {
showFullConsignor
:
false
,
// 是否展示全部收货人信息
showFullConsignee
:
false
,
destCountryList
:[],
destCountryList
:
[],
destCityList
:
[],
selectedRouter
:
null
};
},
computed
:{
rules
(){
computed
:
{
rules
()
{
const
rules
=
{
marks
:
[
{
required
:
true
,
message
:
this
.
$t
(
'
请填写唛头
'
)},
...
...
@@ -815,56 +894,63 @@ export default {
trigger
:
'
blur
'
}
],
consignorContactsId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
发货人不能为空
'
)}],
transportId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择运输方式
'
)}],
departureId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择始发城市
'
)}],
objectiveId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择目的城市
'
)}],
lineId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择路线
'
)}],
channelId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择出货渠道
'
)}],
deliveryDate
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择预计送货日期
'
)}],
consigneeAddress
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请填写详细地址
'
)}],
country
:
[{
required
:
true
,
message
:
this
.
$t
(
'
收货地区填写不完整
'
)}],
isCargoControl
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择是否控货
'
)}],
isCollection
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择代收货款
'
)}],
collectionProxy
:
[{
required
:
true
,
message
:
this
.
$t
(
'
代收货款不能为空
'
)}],
customsType
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择单证报关
'
)}],
warehouseType
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择入仓类型
'
)}],
harvestMethod
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择收货方式
'
)}]
consignorContactsId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
发货人不能为空
'
)}],
transportId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择运输方式
'
)}],
departureId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择始发城市
'
)}],
destCountryId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择目的国家
'
)}],
lineId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择路线
'
)}],
channelId
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择出货渠道
'
)}],
deliveryDate
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择预计送货日期
'
)}],
consigneeAddress
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请填写详细地址
'
)}],
country
:
[{
required
:
true
,
message
:
this
.
$t
(
'
收货地区填写不完整
'
)}],
isCargoControl
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择是否控货
'
)}],
isCollection
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择代收货款
'
)}],
collectionProxy
:
[{
required
:
true
,
message
:
this
.
$t
(
'
代收货款不能为空
'
)}],
customsType
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择单证报关
'
)}],
warehouseType
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择入仓类型
'
)}],
harvestMethod
:
[{
required
:
true
,
message
:
this
.
$t
(
'
请选择收货方式
'
)}]
}
// 有收货人则添加收货人校验
if
(
this
.
hasConsignee
)
{
if
(
this
.
hasConsignee
)
{
rules
.
consigneeContactsId
=
[{
required
:
true
,
message
:
this
.
$t
(
'
收货人不能为空
'
)}]
}
return
rules
},
// 是否已完成入仓
inWarehouse
(){
inWarehouse
()
{
return
(
!!
this
.
form
.
inWarehouseState
&&
this
.
form
.
inWarehouseState
>
201
)
||
this
.
form
.
shipmentState
>
0
},
exportCityList
(){
exportCityList
()
{
return
this
.
tradeCityList
.
filter
(
item
=>
item
.
type
==
2
||
item
.
type
==
3
)
},
importCityList
(){
importCityList
()
{
return
this
.
tradeCityList
.
filter
(
item
=>
item
.
type
==
1
||
item
.
type
==
3
)
},
exportCityIds
(){
exportCityIds
()
{
let
ids
=
[]
this
.
exportCityList
.
forEach
(
item
=>
{
ids
.
push
(
item
.
id
)
})
return
ids
},
importC
ityIds
()
{
importC
ountryIds
()
{
let
ids
=
[]
this
.
importCit
yList
.
forEach
(
item
=>
{
ids
.
push
(
item
.
id
)
this
.
destCountr
yList
.
forEach
(
item
=>
{
ids
.
push
(
item
.
guojia
)
})
return
ids
},
getDictData
(){
importCityIds
()
{
let
ids
=
[]
this
.
destCityList
.
forEach
(
item
=>
{
ids
.
push
(
item
.
shi
)
})
return
ids
},
getDictData
()
{
return
(
type
,
value
)
=>
getDictData
(
type
,
value
)
||
{}
},
getDictDatas
(){
getDictDatas
()
{
return
getDictDatas
},
/* selectedRouter(){
...
...
@@ -873,45 +959,45 @@ export default {
return this.routerList.find(item => item.id == this.form.lineId)
}, */
// 送货上门
homeDeliveryService
(){
homeDeliveryService
()
{
return
this
.
selectedRouter
&&
this
.
selectedRouter
.
otherService
&&
this
.
selectedRouter
.
otherService
.
indexOf
(
'
2
'
)
>
-
1
},
// 代收货款(非控货订单,且路线开通了代收服务)
collectionProxy
(){
collectionProxy
()
{
return
!
this
.
form
.
isCargoControl
&&
this
.
selectedRouter
&&
this
.
selectedRouter
.
otherService
&&
this
.
selectedRouter
.
otherService
.
indexOf
(
'
3
'
)
>
-
1
},
// 根据渠道id显示渠道名
getChannelNameById
(){
getChannelNameById
()
{
return
channelId
=>
{
return
this
.
channelList
.
find
(
item
=>
item
.
channelId
==
channelId
)
?.
nameZh
return
this
.
channelList
.
find
(
item
=>
item
.
channelId
==
channelId
)?.
nameZh
}
},
// 当前运输方式
transport
(){
transport
()
{
return
this
.
transportList
.
find
(
item
=>
item
.
value
==
this
.
form
.
transportId
)
},
// 根据id获取优惠券
getCoupon
(){
getCoupon
()
{
return
couponId
=>
{
if
(
!
couponId
)
return
null
if
(
!
couponId
)
return
null
return
this
.
couponList
.
find
(
item
=>
item
.
couponId
==
couponId
)
}
},
currentcyMap
(){
currentcyMap
()
{
let
map
=
{}
this
.
currencyList
.
forEach
(
item
=>
{
map
[
item
.
id
]
=
item
.
titleZh
})
return
map
},
unitMap
(){
unitMap
()
{
let
map
=
{}
this
.
unitList
.
forEach
(
item
=>
{
map
[
item
.
id
]
=
item
.
titleZh
})
return
map
},
sum
(){
sum
()
{
let
sum
=
{
totalNum
:
new
Decimal
(
0
),
totalVolume
:
new
Decimal
(
0
),
...
...
@@ -919,7 +1005,7 @@ export default {
totalWorth
:
new
Decimal
(
0
),
totalQuatity
:
new
Decimal
(
0
)
}
if
(
!
this
.
form
||
!
this
.
form
.
orderItemVOList
)
return
sum
if
(
!
this
.
form
||
!
this
.
form
.
orderItemVOList
)
return
sum
this
.
form
.
orderItemVOList
.
forEach
(
item
=>
{
sum
.
totalNum
=
sum
.
totalNum
.
plus
(
item
.
num
||
0
)
sum
.
totalVolume
=
sum
.
totalVolume
.
plus
(
item
.
volume
||
0
)
...
...
@@ -930,51 +1016,51 @@ export default {
return
sum
},
// 总优惠金额
discount
(){
discount
()
{
return
0
},
// 是否编辑
editMode
(){
editMode
()
{
return
this
.
$route
.
path
.
indexOf
(
'
create
'
)
==
-
1
},
// 是否可以编辑商品基本信息(货值除外)
productEditable
(){
productEditable
()
{
// 非编辑模式 或者 未完成入仓
return
!
this
.
editMode
||
!
this
.
inWarehouse
},
// 路线开通的服务
routeOtherServices
(){
if
(
!
this
.
selectedRouter
||
!
this
.
selectedRouter
.
otherService
)
return
[]
routeOtherServices
()
{
if
(
!
this
.
selectedRouter
||
!
this
.
selectedRouter
.
otherService
)
return
[]
return
this
.
selectedRouter
.
otherService
.
split
(
'
,
'
)
},
// 是否可以添加商品
canAddProduct
(){
if
(
!
this
.
form
.
lineId
)
{
canAddProduct
()
{
if
(
!
this
.
form
.
lineId
)
{
return
false
}
// 如果是海空联运或者空运专线则必须选择渠道
if
(
this
.
transport
&&
this
.
transport
.
cssClass
==
'
channel
'
&&
!
this
.
form
.
channelId
)
{
if
(
this
.
transport
&&
this
.
transport
.
cssClass
==
'
channel
'
&&
!
this
.
form
.
channelId
)
{
return
false
}
return
true
},
// 显示的目的国
showDestCountryList
(){
showDestCountryList
()
{
return
this
.
destCountryList
},
showDestCityList
(){
if
(
!
this
.
form
.
destCountryId
)
return
this
.
destCityList
showDestCityList
()
{
if
(
!
this
.
form
.
destCountryId
)
return
this
.
destCityList
return
this
.
destCityList
.
filter
(
item
=>
item
.
guojia
===
this
.
form
.
destCountryId
)
||
[]
},
// 是否已起运(已起运不让修改报关方式)
isShipment
(){
return
[
326
,
328
,
329
,
330
,
332
,
391
,
392
,
426
,
428
,
432
].
indexOf
(
this
.
form
.
shipmentState
)
>
-
1
isShipment
()
{
return
[
326
,
328
,
329
,
330
,
332
,
391
,
392
,
426
,
428
,
432
].
indexOf
(
this
.
form
.
shipmentState
)
>
-
1
}
},
watch
:{
watch
:
{
// 如果无收货人则必须控货
hasConsignee
(
val
){
if
(
!
val
)
{
hasConsignee
(
val
)
{
if
(
!
val
)
{
this
.
$set
(
this
.
form
,
'
isCargoControl
'
,
true
)
// 无收货人且控货则默认发货人付款
this
.
$set
(
this
.
form
,
'
drawee
'
,
1
)
...
...
@@ -982,24 +1068,24 @@ export default {
this
.
$refs
.
form
?.
clearValidate
(
"
consigneeContactsId
"
)
}
},
ccIdArr
(
arr
){
ccIdArr
(
arr
)
{
this
.
$set
(
this
.
form
,
'
ccIds
'
,
arr
.
join
(
"
,
"
))
},
// 始发地
'
form.departureId
'
(
departureId
,
oldDepartureId
){
'
form.departureId
'
(
departureId
,
oldDepartureId
)
{
console
.
log
(
'
departureId
'
,
departureId
)
// this.getOpenedRouterList()
},
// 目的地
async
'
form.objectiveId
'
(
objectiveId
,
oldObjectiveId
){
async
'
form.objectiveId
'
(
objectiveId
,
oldObjectiveId
)
{
// 重新获取路线
// await this.getOpenedRouterList()
// 重新获取渠道
await
this
.
getChannelList
()
},
'
form.transportId
'
(
transportId
,
oldTransportId
){
'
form.transportId
'
(
transportId
,
oldTransportId
)
{
// 空运
if
(
!
this
.
initing
&&
(
this
.
form
.
transportId
==
4
||
this
.
form
.
transportId
==
3
))
{
if
(
!
this
.
initing
&&
(
this
.
form
.
transportId
==
4
||
this
.
form
.
transportId
==
3
))
{
this
.
$nextTick
(()
=>
{
console
.
log
(
'
切换空运,修改默认值
'
)
this
.
$set
(
this
,
'
form
'
,
Object
.
assign
(
this
.
form
,
{
...
...
@@ -1017,28 +1103,28 @@ export default {
} */
// 选择海运拼柜和海运整柜清空渠道值
if
(
transportId
==
1
||
transportId
==
2
)
{
if
(
transportId
==
1
||
transportId
==
2
)
{
this
.
$set
(
this
.
form
,
'
channelId
'
,
null
)
}
console
.
log
(
'
form.transportId
'
,
this
.
form
.
transportId
,
this
.
initing
)
if
(
!
this
.
initing
&&
transportId
==
3
)
{
if
(
!
this
.
initing
&&
transportId
==
3
)
{
// 如果是专线空运默认目的港清关选择我司
this
.
$set
(
this
.
form
,
'
portDestCustomsClear
'
,
1
)
}
// this.getOpenedRouterList()
},
'
form.channelId
'
(){
'
form.channelId
'
()
{
this
.
calculationPrice
()
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
// 选择渠道后需要筛选目的城市和线路
// 有点卡,改异步
this
.
$nextTick
(
async
()
=>
{
// 更新目的城市备选
await
this
.
getTradeCity
()
// 如果已选择城市,在切换后不可用则重置
if
(
this
.
form
.
objectiveId
&&
!
this
.
importCityList
.
find
(
item
=>
item
.
id
==
this
.
form
.
objectiveId
))
{
if
(
this
.
form
.
objectiveId
&&
!
this
.
importCityList
.
find
(
item
=>
item
.
id
==
this
.
form
.
objectiveId
))
{
this
.
$set
(
this
.
form
,
'
objectiveId
'
,
null
)
}
// 更新线路备选
...
...
@@ -1049,22 +1135,22 @@ export default {
} */
})
},
'
form.consigneeCountryCode
'
(){
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
'
form.consigneeCountryCode
'
()
{
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
},
'
form.consignorCountryCode
'
(){
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
'
form.consignorCountryCode
'
()
{
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
},
'
form.consigneePhone
'
(){
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
'
form.consigneePhone
'
()
{
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
},
'
form.consignorPhone
'
(){
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
'
form.consignorPhone
'
()
{
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
},
async
'
form.lineId
'
(
lineId
){
async
'
form.lineId
'
(
lineId
)
{
console
.
log
(
"
路线修改
"
,
lineId
)
let
router
=
this
.
routerList
.
find
(
item
=>
item
.
id
==
lineId
)
if
(
!
router
)
{
if
(
!
router
)
{
return
}
/* this.$set(this.form, 'departureId', router.startCityId)
...
...
@@ -1088,56 +1174,56 @@ export default {
console.log('packageType', val, val.length)
this.$set(this.form, 'packageType', val ? val.join(',') : '')
}, */
'
form.isExternalWarehouse
'
(
isExternalWarehouse
){
'
form.isExternalWarehouse
'
(
isExternalWarehouse
)
{
// 勾选外部仓则添加一个默认的,取消则删除默认的空的
if
(
!
isExternalWarehouse
)
{
if
(
!
isExternalWarehouse
)
{
this
.
$set
(
this
.
form
,
'
externalWarehouseDtoList
'
,
[])
}
else
if
(
!
this
.
form
.
externalWarehouseDtoList
||
!
this
.
form
.
externalWarehouseDtoList
.
length
)
{
}
else
if
(
!
this
.
form
.
externalWarehouseDtoList
||
!
this
.
form
.
externalWarehouseDtoList
.
length
)
{
this
.
$set
(
this
.
form
,
'
externalWarehouseDtoList
'
,
[{}])
}
},
// 选择送货上门需要查询并填充默认地址
'
form.harvestMethod
'
(
harvestMethod
){
if
(
harvestMethod
==
2
&&
!
this
.
form
.
address
&&
this
.
form
.
consigneeId
)
{
'
form.harvestMethod
'
(
harvestMethod
)
{
if
(
harvestMethod
==
2
&&
!
this
.
form
.
address
&&
this
.
form
.
consigneeId
)
{
getCustomer
(
this
.
form
.
consigneeId
).
then
(
res
=>
{
if
(
res
.
data
.
address
)
{
if
(
res
.
data
.
address
)
{
this
.
$set
(
this
.
form
,
'
consigneeAddress
'
,
res
.
data
.
address
)
}
})
}
},
'
form.isCargoControl
'
(
isCargoControl
){
'
form.isCargoControl
'
(
isCargoControl
)
{
console
.
log
(
'
form.isCargoControl
'
,
this
.
form
.
isCargoControl
,
this
.
initing
)
if
(
!
this
.
initing
)
{
if
(
!
this
.
initing
)
{
this
.
$set
(
this
.
form
,
'
drawee
'
,
isCargoControl
&&
!
this
.
hasConsignee
?
1
:
2
)
}
this
.
setBllLandingPrice
(
'
form.isCargoControl
'
)
},
'
form.type
'
(
newVal
,
oldVal
){
'
form.type
'
(
newVal
,
oldVal
)
{
// 在选择预计送货日期后这里会触发,暂不清楚原因,所以加一个判断
/* if(newVal?.join(",") == oldVal?.join(",")){
return
} */
this
.
setBllLandingPrice
(
'
form.type
'
)
},
'
form.drawee
'
(
old
,
newVal
){
'
form.drawee
'
(
old
,
newVal
)
{
this
.
setBllLandingPrice
(
'
form.drawee
'
)
},
'
form.consigneeId
'
(){
'
form.consigneeId
'
()
{
this
.
setBllLandingPrice
(
'
form.consigneeId
'
)
},
'
form.consignorId
'
(){
'
form.consignorId
'
()
{
this
.
setBllLandingPrice
(
'
form.consignorId
'
)
},
// 目的港清关,1我司,2客户
'
form.portDestCustomsClear
'
(
portDestCustomsClear
){
'
form.portDestCustomsClear
'
(
portDestCustomsClear
)
{
// 我司默认多票
if
(
portDestCustomsClear
==
1
)
{
if
(
portDestCustomsClear
==
1
)
{
this
.
$set
(
this
.
form
,
'
deliveryWay
'
,
1
)
}
// 客户默认单票
if
(
portDestCustomsClear
==
2
)
{
if
(
portDestCustomsClear
==
2
)
{
this
.
$set
(
this
.
form
,
'
deliveryWay
'
,
2
)
}
},
...
...
@@ -1145,26 +1231,27 @@ export default {
console.log('form.orderItemVOList', this.form.orderItemVOList.length, this.form.orderItemVOList)
}, */
// 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择
selectedRouter
(
val
){
if
(
!
val
)
{
selectedRouter
(
val
)
{
if
(
!
val
)
{
return
}
[
'
1
'
,
'
4
'
].
forEach
(
service
=>
{
if
(
this
.
routeOtherServices
.
indexOf
(
service
)
<
0
&&
this
.
form
.
type
.
indexOf
(
service
)
>
-
1
){
this
.
form
.
type
.
splice
(
this
.
form
.
type
.
findIndex
(
item
=>
item
==
service
),
1
)
if
(
this
.
routeOtherServices
.
indexOf
(
service
)
<
0
&&
this
.
form
.
type
.
indexOf
(
service
==
4
?
2
:
service
)
>
-
1
)
{
console
.
log
(
"
当前集运服务选择
"
,
this
.
form
.
type
)
this
.
form
.
type
.
splice
(
this
.
form
.
type
.
findIndex
(
item
=>
item
==
(
service
==
4
?
2
:
service
)),
1
)
}
})
},
// 送货上门变化后需要判断当前选择的收货方式,如果选择了送货上门但是当前不支持送货上门则需要重置
homeDeliveryService
(
enable
){
if
(
!
enable
&&
this
.
form
.
harvestMethod
!=
1
)
{
homeDeliveryService
(
enable
)
{
if
(
!
enable
&&
this
.
form
.
harvestMethod
!=
1
)
{
this
.
form
.
harvestMethod
=
1
}
},
// 变更渠道需要显示工作流组件
updateChannel
(
updateChannel
){
if
(
updateChannel
)
{
updateChannel
(
updateChannel
)
{
if
(
updateChannel
)
{
this
.
$set
(
this
,
'
showWorkFlow
'
,
true
)
}
},
...
...
@@ -1172,17 +1259,17 @@ export default {
this.$set(this.form, 'transportId', transportType ? +transportType : undefined)
}*/
},
activated
(){
activated
()
{
console
.
log
(
"
%c activated
"
,
"
color: red
"
)
if
(
this
.
$route
.
query
.
id
!=
this
.
form
.
id
)
{
if
(
this
.
$route
.
query
.
id
!=
this
.
form
.
id
)
{
console
.
log
(
"
activated 加载订单数据
"
)
this
.
getOrder
()
}
let
transportType
=
undefined
if
(
this
.
$route
.
query
.
transportType
)
{
if
(
this
.
$route
.
query
.
transportType
)
{
transportType
=
+
this
.
$route
.
query
.
transportType
}
if
(
transportType
!=
this
.
transportId
)
{
if
(
transportType
!=
this
.
transportId
)
{
this
.
$set
(
this
.
form
,
'
transportId
'
,
transportType
)
}
...
...
@@ -1210,17 +1297,17 @@ export default {
this
.
unitList
=
(
await
getUnitList
()).
data
this
.
transportList
=
this
.
getDictDatas
(
this
.
DICT_TYPE
.
ECW_TRANSPORT_TYPE
)
if
(
this
.
$route
.
query
.
transportType
)
{
if
(
this
.
$route
.
query
.
transportType
)
{
this
.
$set
(
this
.
form
,
'
transportId
'
,
+
this
.
$route
.
query
.
transportType
)
}
// 变更出货渠道
if
(
this
.
$route
.
query
.
updateChannel
)
{
if
(
this
.
$route
.
query
.
updateChannel
)
{
this
.
updateChannel
=
true
}
if
(
this
.
$route
.
query
.
id
)
{
if
(
this
.
$route
.
query
.
id
)
{
console
.
log
(
'
created 加载订单数据
'
)
this
.
getOrder
()
}
else
{
}
else
{
await
this
.
getTradeCity
()
this
.
addProduct
()
this
.
$nextTick
(()
=>
{
...
...
@@ -1229,25 +1316,47 @@ export default {
}
},
methods
:
{
async
getTradeCity
(
a
){
async
getTradeCity
(
a
)
{
let
query
=
{}
if
(
this
.
form
.
channelId
)
{
if
(
this
.
form
.
channelId
)
{
query
.
channelId
=
this
.
form
.
channelId
}
this
.
tradeCityList
=
(
await
getTradeCityList
(
query
)).
data
},
async
getChannelList
(){
async
getChannelList
()
{
let
query
=
{
cityId
:
this
.
form
.
objectiveId
,
lineId
:
this
.
form
.
lineId
}
this
.
channelList
=
(
await
getChannelList
(
query
)).
data
},
onTableMounted
(
e
){
onTableMounted
(
e
)
{
// console.warn('onTableMounted', e)
},
async
getOrder
(){
if
(
this
.
form
.
orderId
==
this
.
$route
.
query
.
id
){
getCustomer
(
id
)
{
getCustomer
(
id
).
then
((
response
)
=>
{
console
.
log
(
response
.
data
,
"
response
"
)
this
.
consignorCustomer
=
{
...
this
.
consignorCustomer
,
...
response
.
data
}
if
(
this
.
consignorCustomer
)
{
// 最新的客户设置信息,是否允许控货无收货人
this
.
noConsignee
=
this
.
consignorCustomer
.
noConsignee
}
else
{
// 默认不允许控货无收货人
this
.
noConsignee
=
false
}
// 如果订单无收货人,但是最新的发货人允许无收货人则重置状态
if
(
this
.
noConsignee
&&
!
this
.
hasConsignee
)
{
// 最新的发货人允许无收货人,则重置为有收货人
this
.
hasConsignee
=
true
}
})
},
async
getOrder
()
{
console
.
log
(
'
是否加载编辑订单数据
'
)
if
(
this
.
form
.
orderId
==
this
.
$route
.
query
.
id
)
{
console
.
log
(
'
加载中或者已加载此订单数据,不重复加载
'
,
this
.
initing
,
this
.
form
.
orderId
,
this
.
$route
.
query
.
id
)
return
}
...
...
@@ -1261,9 +1370,9 @@ export default {
await
this
.
getTradeCity
()
await
this
.
getOpenedRouterList
()
this
.
selectedRouter
=
this
.
routerList
.
find
(
item
=>
item
.
id
===
this
.
form
.
lineId
)
if
(
this
.
selectedRouter
)
{
if
(
this
.
selectedRouter
)
{
this
.
form
.
destCountryId
=
this
.
selectedRouter
.
destCountryId
}
else
console
.
log
(
"
未找到选择的路线
"
,
this
.
routerList
,
this
.
selectedRouter
)
}
else
console
.
log
(
"
未找到选择的路线
"
,
this
.
routerList
,
this
.
selectedRouter
)
console
.
log
(
"
国家ID
"
,
this
.
form
.
destCountryId
)
...
...
@@ -1272,10 +1381,11 @@ export default {
isUnpack: this.form.isUnpack,
isSingleTicketTransport: this.form.isSingleTicketTransport,
}) */
console
.
log
(
"
集运服务类型
"
,
this
.
form
.
type
)
this
.
form
.
type
=
this
.
form
.
type
?
this
.
form
.
type
.
split
(
'
,
'
).
filter
(
item
=>
item
!=
''
)
:
[]
this
.
form
.
packageTypeArr
=
this
.
form
.
packageType
?
this
.
form
.
packageType
.
split
(
'
,
'
).
filter
(
item
=>
item
!=
''
)
:
[]
if
(
res
.
data
.
consignorVO
){
// 每次编辑订单详情需要实时获取发货人当前信息
if
(
res
.
data
.
consignorVO
)
{
this
.
$set
(
this
.
form
,
'
consignorCompany
'
,
res
.
data
.
consignorVO
.
company
)
this
.
$set
(
this
.
form
,
'
consignorCompanyEn
'
,
res
.
data
.
consignorVO
.
companyEn
)
this
.
$set
(
this
.
form
,
'
consignorContactsId
'
,
res
.
data
.
consignorVO
.
customerContactsId
)
...
...
@@ -1285,9 +1395,10 @@ export default {
this
.
$set
(
this
.
form
,
'
consignorName
'
,
res
.
data
.
consignorVO
.
name
)
this
.
$set
(
this
.
form
,
'
consignorNameEn
'
,
res
.
data
.
consignorVO
.
nameEn
)
this
.
$set
(
this
.
form
,
'
consignorPhone
'
,
res
.
data
.
consignorVO
.
phone
)
this
.
getCustomer
(
res
.
data
.
consignorVO
.
customerId
)
}
if
(
res
.
data
.
consigneeVO
)
{
if
(
res
.
data
.
consigneeVO
)
{
this
.
$set
(
this
.
form
,
'
consigneeCompany
'
,
res
.
data
.
consigneeVO
.
company
)
this
.
$set
(
this
.
form
,
'
consigneeCompanyEn
'
,
res
.
data
.
consigneeVO
.
companyEn
)
this
.
$set
(
this
.
form
,
'
consigneeContactsId
'
,
res
.
data
.
consigneeVO
.
customerContactsId
)
...
...
@@ -1301,37 +1412,28 @@ export default {
// res.data.hasConsignee 订单冗余的发货人是否允许无收货人
// res.data.noConsignee 当前订单发货人是否允许无收货
// 回显冗余数据
this
.
noConsignee
=
res
.
data
.
hasConsignee
// 是否有收货人
this
.
hasConsignee
=
!!
res
.
data
.
consigneeVO
// 如果订单无收货人,但是最新的发货人不允许无收货人则重置状态
if
(
!
res
.
data
.
noConsignee
&&
!
this
.
hasConsignee
){
// 最新的发货人不允许无收货人,则重置为有收货人
this
.
hasConsignee
=
true
// 如果发货人不允许无收货人,则更新是否允许无收货人状态
this
.
noConsignee
=
false
}
if
(
this
.
form
.
channelId
==
0
){
if
(
this
.
form
.
channelId
==
0
)
{
delete
this
.
form
.
channelId
}
if
(
res
.
data
.
ccIds
)
{
if
(
res
.
data
.
ccIds
)
{
this
.
ccIdArr
=
res
.
data
.
ccIds
.
split
(
"
,
"
).
filter
(
item
=>
item
&&
item
!=
''
)
}
// 审核中需要显示流程表单
if
(
this
.
form
.
applyStaus
==
1
)
{
if
(
this
.
form
.
applyStaus
==
1
)
{
this
.
showWorkFlow
=
true
}
// 如果是自定义付款人,则需要同步具体发货人信息
if
(
this
.
form
.
drawee
==
3
)
{
if
(
this
.
form
.
drawee
==
3
)
{
console
.
log
(
'
同步自定义付款人信息
'
,
JSON
.
stringify
(
this
.
customDraweeList
))
this
.
customDraweeList
.
forEach
(
item
=>
{
console
.
log
(
item
.
name
,
this
.
form
.
customDraweeVOList
.
find
(
it
=>
it
.
name
==
item
.
name
)?.
value
,
item
.
value
)
console
.
log
(
item
.
name
,
this
.
form
.
customDraweeVOList
.
find
(
it
=>
it
.
name
==
item
.
name
)?.
value
,
item
.
value
)
item
.
value
=
this
.
form
.
customDraweeVOList
.
find
(
it
=>
it
.
name
==
item
.
name
)?.
value
||
item
.
value
})
console
.
log
(
'
同步自定义付款人信息
'
,
this
.
customDraweeList
,
this
.
form
.
customDraweeVOList
)
...
...
@@ -1346,7 +1448,7 @@ export default {
})
// 已入仓后,必填字段修改则需要显示审批流
if
(
this
.
inWarehouse
)
{
if
(
this
.
inWarehouse
)
{
Object
.
keys
(
this
.
rules
).
forEach
(
field
=>
{
console
.
log
(
"
watch
"
,
field
)
this
.
$watch
(
`form.
${
field
}
`
,
()
=>
{
...
...
@@ -1356,13 +1458,13 @@ export default {
}
// 在初始化结束后transportId还会发生一次变化导致目的港清关被重置,所以需要延迟一下。暂不清楚原因
setTimeout
(()
=>
{
setTimeout
(()
=>
{
console
.
log
(
'
transportId
'
,
this
.
form
.
transportId
)
console
.
log
(
'
portDestCustomsClear
'
,
this
.
form
.
portDestCustomsClear
,
res
.
data
.
portDestCustomsClear
)
if
(
res
.
data
.
portDestCustomsClear
)
{
if
(
res
.
data
.
portDestCustomsClear
)
{
this
.
$set
(
this
.
form
,
'
portDestCustomsClear
'
,
res
.
data
.
portDestCustomsClear
)
}
if
(
res
.
data
.
deliveryWay
)
{
if
(
res
.
data
.
deliveryWay
)
{
this
.
$set
(
this
.
form
,
'
deliveryWay
'
,
res
.
data
.
deliveryWay
)
}
this
.
$nextTick
(()
=>
{
...
...
@@ -1388,23 +1490,24 @@ export default {
this
.
initing
=
false
})
},
onContactChoose
(
contact
){
onContactChoose
(
contact
)
{
console
.
log
(
'
选择联系人
'
,
contact
)
if
(
!
this
.
contactChooseType
&&
!
this
.
quickCreateType
)
return
if
(
!
this
.
contactChooseType
&&
this
.
quickCreateType
)
{
if
(
!
this
.
contactChooseType
&&
!
this
.
quickCreateType
)
return
if
(
!
this
.
contactChooseType
&&
this
.
quickCreateType
)
{
this
.
contactChooseType
=
this
.
quickCreateType
==
0
?
'
consignor
'
:
'
consignee
'
}
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Company
'
,
contact
.
company
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
CompanyEn
'
,
contact
.
companyEn
||
''
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
CompanyEn
'
,
contact
.
companyEn
||
''
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
ContactsId
'
,
contact
.
customerContactsId
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
CountryCode
'
,
contact
.
areaCode
.
replace
(
'
+
'
,
''
))
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Email
'
,
contact
.
email
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Id
'
,
contact
.
customerId
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Name
'
,
contact
.
contactsName
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
NameEn
'
,
contact
.
contactsNameEn
||
''
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
NameEn
'
,
contact
.
contactsNameEn
||
''
)
this
.
$set
(
this
.
form
,
this
.
contactChooseType
+
'
Phone
'
,
contact
.
phoneNew
)
if
(
this
.
contactChooseType
==
'
consignor
'
){
if
(
this
.
contactChooseType
==
'
consignor
'
)
{
this
.
noConsignee
=
contact
.
noConsignee
// 如果允许无收货人,则默认无收货人、控货
// 241023 根据最新的原型,默认有收货人
...
...
@@ -1412,25 +1515,25 @@ export default {
this.hasConsignee = false
}*/
// 如果发货人不允许无收货人,则重置为有收货人
if
(
!
this
.
noConsignee
&&
!
this
.
hasConsignee
)
{
if
(
!
this
.
noConsignee
&&
!
this
.
hasConsignee
)
{
this
.
$set
(
this
,
'
hasConsignee
'
,
true
)
}
// 如果默认付款则设置为发货人付款
if
(
contact
.
defaultPay
)
{
if
(
contact
.
defaultPay
)
{
this
.
$set
(
this
.
form
,
'
drawee
'
,
1
)
}
}
this
.
contactChooseType
=
null
this
.
quickCreateType
=
null
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
if
(
this
.
form
.
lineId
)
this
.
getOfferData
()
},
upload
(
e
){
upload
(
e
)
{
console
.
log
({
upload
:
e
})
let
form
=
new
FormData
()
form
.
append
(
'
file
'
,
e
.
file
)
orderImport
(
form
).
then
(
res
=>
{
if
(
!
res
.
data
.
list
.
length
)
{
if
(
!
res
.
data
.
list
.
length
)
{
return
this
.
$message
.
error
(
'
无有效数据
'
)
}
...
...
@@ -1439,7 +1542,7 @@ export default {
})
},
addToProductList
(){
addToProductList
()
{
console
.
log
(
'
addToProductList
'
)
this
.
importList
.
forEach
(
item
=>
{
this
.
form
.
orderItemVOList
.
push
({
...
...
@@ -1449,63 +1552,64 @@ export default {
quantity
:
item
.
quantity
,
volume
:
item
.
volume
,
weight
:
item
.
weight
,
prodAttrArr
:
[]
prodAttrArr
:
[]
})
})
// 重置
this
.
importList
=
[]
this
.
showBatchImportDialog
=
false
},
downloadTpl
(){
downloadTpl
()
{
this
.
exportLoading
=
true
;
exportPackingList
().
then
(
response
=>
{
this
.
$download
.
excel
(
response
,
this
.
$t
(
'
装箱单模板
'
)
+
'
.xls
'
);
this
.
exportLoading
=
false
;
}).
catch
(()
=>
{
});
}).
catch
(()
=>
{
});
},
setLink
(
row
){
setLink
(
row
)
{
this
.
$prompt
(
this
.
$t
(
'
请输入商品链接
'
),
{
inputValue
:
row
.
link
}).
then
(({
value
})
=>
{
this
.
$set
(
row
,
'
link
'
,
value
)
})
},
// 检查正整数
checkPositiveInterge
(
row
,
field
){
checkPositiveInterge
(
row
,
field
)
{
console
.
log
(
'
checkPositiveInterge
'
,
field
,
row
[
field
])
row
[
field
]
=
row
[
field
].
toString
().
replace
(
/
[^\d]
/g
,
''
)
},
onProductChange
(
row
,
product
){
onProductChange
(
row
,
product
)
{
console
.
log
(
product
)
// 如果是清除商品
if
(
!
product
)
{
if
(
!
product
)
{
row
.
fee
=
null
row
.
prodAttrArr
=
[]
return
false
}
// 没有orderItemId则表示新增的,否则就是编辑回显的
// row.updated 表示用户操作了,用来区分是自动回显还是用户选择商品
if
(
!
row
.
orderItemId
||
row
.
updated
)
{
if
(
!
row
.
orderItemId
||
row
.
updated
)
{
row
.
prodAttrArr
=
!
product
?
[]
:
product
.
attrId
.
split
(
'
,
'
).
filter
(
item
=>
item
!==
''
).
map
(
item
=>
+
item
)
}
row
.
prodTitleEn
=
product
.
titleEn
row
.
prodTitleZh
=
product
.
titleZh
this
.
calculationPrice
()
},
onAreaChange
(
type
,
val
){
onAreaChange
(
type
,
val
)
{
this
.
$set
(
this
.
form
,
type
,
val
)
},
// 生成快递单号
getOrderCourierNumber
(){
getOrderCourierNumber
()
{
getOrderCourierNumber
().
then
(
res
=>
{
this
.
$set
(
this
.
form
,
'
number
'
,
res
.
data
)
})
},
onProductAttrChange
(
row
,
attr
){
onProductAttrChange
(
row
,
attr
)
{
console
.
log
(
attr
)
},
addProduct
(
data
){
addProduct
(
data
)
{
this
.
form
.
orderItemVOList
.
push
(
data
||
{
prodAttrArr
:
[],
prodAttrArr
:
[],
prodId
:
null
,
worth
:
''
,
volume
:
''
,
...
...
@@ -1514,31 +1618,34 @@ export default {
})
},
// 更新路线并打印来源
updateRoutes
(
fr
){
updateRoutes
(
fr
)
{
console
.
log
(
"
%cupdateRotutes
"
,
"
color: blue
"
,
fr
)
return
this
.
getOpenedRouterList
()
},
// 获取路线
async
getOpenedRouterList
(){
async
getOpenedRouterList
()
{
let
params
=
{}
if
(
this
.
form
.
departureId
)
{
if
(
this
.
form
.
departureId
)
{
params
.
startCityId
=
this
.
form
.
departureId
}
if
(
this
.
form
.
objectiveId
){
if
(
this
.
form
.
destCountryId
)
{
params
.
destCountryId
=
this
.
form
.
destCountryId
}
if
(
this
.
form
.
objectiveId
)
{
params
.
destCityId
=
this
.
form
.
objectiveId
}
if
(
this
.
form
.
transportId
)
{
if
(
this
.
form
.
transportId
)
{
params
.
transportType
=
this
.
form
.
transportId
}
if
(
this
.
form
.
channelId
)
{
if
(
this
.
form
.
channelId
)
{
params
.
channelId
=
this
.
form
.
channelId
}
console
.
log
(
"
获取路线,参数
"
,
params
)
// 始发,目的和运输方式都没有的时候不获取
if
(
!
params
.
startCit
yId
&&
!
params
.
destCityId
&&
!
params
.
transportType
)
return
false
if
(
!
params
.
startCityId
&&
!
params
.
destCountr
yId
&&
!
params
.
destCityId
&&
!
params
.
transportType
)
return
false
return
getOpenedRouterList
(
params
).
then
(
res
=>
{
this
.
routerList
=
res
.
data
.
filter
(
item
=>
{
return
this
.
exportCityIds
.
indexOf
(
item
.
startCityId
)
>
-
1
&&
this
.
importC
ityIds
.
indexOf
(
item
.
destCityId
)
>
-
1
return
this
.
exportCityIds
.
indexOf
(
item
.
startCityId
)
>
-
1
&&
this
.
importC
ountryIds
.
indexOf
(
item
.
destCountryId
)
>
-
1
&&
(
this
.
importCityIds
&&
this
.
importCityIds
.
indexOf
(
item
.
destCityId
)
>
-
1
)
})
console
.
log
(
`已获取到路线
${
res
.
data
?.
length
}
条,有效路线
$
{
this
.
routerList
.
length
}
条
,
参数
:
$
{
JSON
.
stringify
(
params
)}
`
)
console
.
table
([
...
...
@@ -1548,9 +1655,9 @@ export default {
}
])
// 如果已选择的线路ID不在上述路线列表里则重置
if
(
this
.
form
.
lineId
)
{
if
(
this
.
form
.
lineId
)
{
this
.
selectedRouter
=
this
.
routerList
.
find
(
item
=>
item
.
id
==
this
.
form
.
lineId
)
if
(
!
this
.
selectedRouter
)
{
if
(
!
this
.
selectedRouter
)
{
console
.
log
(
`获取到的路线未找到原路线lineId:
${
this
.
form
.
lineId
}
,重置为null`
)
this
.
$set
(
this
.
form
,
'
lineId
'
,
null
)
}
...
...
@@ -1558,16 +1665,16 @@ export default {
})
},
// 计算体积
calcVolume
(
row
){
if
(
!
row
.
boxGauge
||
!
row
.
num
)
return
false
try
{
calcVolume
(
row
)
{
if
(
!
row
.
boxGauge
||
!
row
.
num
)
return
false
try
{
row
.
volume
=
(
eval
(
row
.
boxGauge
)
*
row
.
num
).
toFixed
(
2
)
}
catch
(
e
)
{
}
catch
(
e
)
{
row
.
volume
=
''
}
},
// 删除一条产品
delProduct
(
index
){
delProduct
(
index
)
{
this
.
$confirm
(
this
.
$t
(
'
确定删除此条内容么?
'
))
.
then
(
res
=>
{
this
.
form
.
orderItemVOList
.
splice
(
index
,
1
)
...
...
@@ -1604,8 +1711,8 @@ export default {
return
this
.
$showFormValidateErrors
(
errors
)
}
if
(
this
.
form
.
harvestMethod
==
2
)
{
if
(
!
this
.
form
.
country
||
!
this
.
form
.
province
||
!
this
.
form
.
city
)
{
if
(
this
.
form
.
harvestMethod
==
2
)
{
if
(
!
this
.
form
.
country
||
!
this
.
form
.
province
||
!
this
.
form
.
city
)
{
return
this
.
$notify
({
title
:
this
.
$t
(
'
提示
'
),
message
:
this
.
$t
(
"
收货地区填写不完整
"
),
...
...
@@ -1616,12 +1723,12 @@ export default {
let
isInclude
=
false
this
.
form
.
orderItemVOList
.
map
(
item
=>
{
//如果商品特性包含不接受货物,不能创建订单或修改订单
if
(
item
.
prodAttrArr
.
indexOf
(
4
)
!=-
1
)
{
if
(
item
.
prodAttrArr
.
indexOf
(
4
)
!=
-
1
)
{
isInclude
=
true
}
item
.
prodAttrIds
=
item
.
prodAttrArr
.
join
(
'
,
'
)
})
if
(
isInclude
)
{
if
(
isInclude
)
{
return
this
.
$notify
({
title
:
this
.
$t
(
'
提示
'
),
message
:
this
.
$t
(
"
订单包含不接受货物,请检查
"
),
...
...
@@ -1629,17 +1736,17 @@ export default {
});
}
this
.
transportList
.
map
(
item
=>
{
if
(
item
.
_enabled
)
{
if
(
item
.
_enabled
)
{
item
.
lineIds
=
Array
.
from
(
item
.
lineIdSet
).
join
(
'
,
'
)
item
.
channelIds
=
Array
.
from
(
item
.
channelIdSet
).
join
(
'
,
'
)
}
})
this
.
form
.
packageType
=
this
.
form
.
packageTypeArr
.
join
(
'
,
'
)
for
(
const
i
in
this
.
form
.
orderItemVOList
)
{
for
(
const
i
in
this
.
form
.
orderItemVOList
)
{
const
item
=
this
.
form
.
orderItemVOList
[
i
]
if
(
!
item
.
prodId
)
{
return
this
.
$message
.
error
(
this
.
$t
(
`第
${
Number
(
i
)
+
1
}
行未选择商品`
,
i
+
1
))
if
(
!
item
.
prodId
)
{
return
this
.
$message
.
error
(
this
.
$t
(
`第
${
Number
(
i
)
+
1
}
行未选择商品`
,
i
+
1
))
}
}
...
...
@@ -1649,25 +1756,29 @@ export default {
}
// 24-02-08 新需求 当付款人=发货人且提单显示价格,需要弹出提示,付款人=发货人,请再次确认提单是否显示价格明细,是则允许提交订单,否则留在当前页面
// https://zentao.test.jdshangmen.com/task-view-3442.html
if
(
+
this
.
form
.
drawee
===
1
&&
this
.
form
.
displayBillLadingPrice
&&
!
this
.
updateChannel
)
{
if
(
+
this
.
form
.
drawee
===
1
&&
this
.
form
.
displayBillLadingPrice
&&
!
this
.
updateChannel
)
{
await
this
.
$confirm
(
this
.
$t
(
'
付款人=发货人,请再次确认提单是否显示价格明细
'
))
}
// 校验手机号跟目的国是否匹配
if
(
this
.
hasConsignee
&&
this
.
form
.
consigneeCountryCode
&&
this
.
form
.
consigneePhone
){
if
(
this
.
hasConsignee
&&
this
.
form
.
consigneeCountryCode
&&
this
.
form
.
consigneePhone
)
{
if
(
this
.
form
.
isCargoControl
&&
(
this
.
form
.
consigneeCountryCode
==
"
86
"
||
this
.
form
.
consigneeCountryCode
==
"
+86
"
))
{
this
.
$message
.
error
(
this
.
$t
(
"
控货订单的收货人手机号不能是国内号码
"
))
return
}
const
res
=
await
checkCountryCode
({
areaCode
:
this
.
form
.
consigneeCountryCode
,
currencyId
:
this
.
form
.
destCountryId
})
// 并不一致则提示
if
(
!
res
.
data
)
{
if
(
!
res
.
data
)
{
await
this
.
$confirm
(
this
.
$t
(
'
电话所在国与目的国不一致,请检查
'
))
}
}
// 修改的提交
if
(
this
.
form
.
orderId
)
{
if
(
this
.
form
.
tidanNo
)
{
if
(
this
.
form
.
tidanNo
)
{
await
this
.
$confirm
(
this
.
$t
(
'
提单已制作,如需修改请联系客服
'
))
}
let
data
=
Object
.
assign
({},
this
.
form
,
{
...
...
@@ -1688,7 +1799,7 @@ export default {
let
data
=
Object
.
assign
({
consigneeId
:
this
.
consigneeContact
.
customerId
,
consignorId
:
this
.
consignorContact
.
customerId
,
customerId
:
this
.
consignorContact
.
customerId
,
customerId
:
this
.
consignorContact
.
customerId
,
// couponIds: coupons.join(","),
},
this
.
form
,
{
customDraweeVOList
:
this
.
customDraweeList
,
...
...
@@ -1707,7 +1818,7 @@ export default {
this
.
form
=
{...
makeDefaultFormData
()}
this
.
routerList
=
[]
this
.
addProduct
()
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
this
.
initing
=
false
this
.
$nextTick
(()
=>
{
this
.
$redirect
(
'
success?orderId=
'
+
response
.
data
)
...
...
@@ -1717,26 +1828,26 @@ export default {
});
},
// 计算商品运费(根据货值计算保费)
calculationPrice
(){
calculationPrice
()
{
let
calcable
=
true
if
(
!
this
.
form
.
orderItemVOList
.
length
)
return
false
if
(
!
this
.
form
.
orderItemVOList
.
length
)
return
false
this
.
form
.
orderItemVOList
.
forEach
(
item
=>
{
if
(
!
item
.
prodId
)
{
if
(
!
item
.
prodId
)
{
calcable
=
false
}
})
console
.
log
(
'
calculationPrice
'
,
calcable
)
if
(
this
.
calculating
||
!
calcable
)
return
false
if
(
this
.
calculating
||
!
calcable
)
return
false
this
.
calculating
=
true
console
.
log
(
'
calculating --->
'
)
const
data
=
{
lineId
:
this
.
form
.
lineId
,
transportId
:
this
.
form
.
transportId
,
channelId
:
[
3
,
4
].
indexOf
(
this
.
form
.
transportId
)
>
-
1
?
this
.
form
.
channelId
:
undefined
,
channelId
:
[
3
,
4
].
indexOf
(
this
.
form
.
transportId
)
>
-
1
?
this
.
form
.
channelId
:
undefined
,
prodConditionParamList
:
this
.
getProductListWithDefaultValue
(),
orderType
:
this
.
form
.
orderType
}
if
(
this
.
form
.
channelId
)
{
if
(
this
.
form
.
channelId
)
{
data
.
channelId
=
this
.
form
.
channelId
}
calculationPrice
(
data
).
then
(
res
=>
{
...
...
@@ -1749,7 +1860,7 @@ export default {
})
},
// 体积。件数,数量,重量为选填,但是接口确实必填,所以生成一个副本并赋予默认值
getProductListWithDefaultValue
(){
getProductListWithDefaultValue
()
{
let
arr
=
[]
this
.
form
.
orderItemVOList
.
forEach
(
item
=>
{
// 商品信息只要商品id、品牌收费模式、件数、数量、体积、重量、货值、包装类型即可
...
...
@@ -1766,10 +1877,10 @@ export default {
packageType: item.packageType,
unit: item.unit
} */
if
(
!
tmp
.
volume
)
tmp
.
volume
=
0
if
(
!
tmp
.
weight
)
tmp
.
weight
=
0
if
(
!
tmp
.
quantity
)
tmp
.
quantity
=
0
if
(
!
tmp
.
num
)
tmp
.
num
=
0
if
(
!
tmp
.
volume
)
tmp
.
volume
=
0
if
(
!
tmp
.
weight
)
tmp
.
weight
=
0
if
(
!
tmp
.
quantity
)
tmp
.
quantity
=
0
if
(
!
tmp
.
num
)
tmp
.
num
=
0
tmp
.
orderType
=
item
.
orderItemType
delete
tmp
.
fee
delete
tmp
.
couponInfo
...
...
@@ -1811,9 +1922,9 @@ export default {
getOfferNumber
(
id
)
{
const
that
=
this
that
.
offerIdNochange
=
false
getOfferCheck
({
orderId
:
id
}).
then
(
response
=>
{
if
(
!
response
.
data
)
return
if
(
that
.
offerData
.
length
==
0
)
{
getOfferCheck
({
orderId
:
id
}).
then
(
response
=>
{
if
(
!
response
.
data
)
return
if
(
that
.
offerData
.
length
==
0
)
{
that
.
offerData
.
push
(
response
.
data
)
}
that
.
offerIdNochange
=
true
...
...
@@ -1822,17 +1933,17 @@ export default {
})
},
// 设置默认的提货单是否显示价格
setBllLandingPrice
(
src
){
setBllLandingPrice
(
src
)
{
console
.
log
(
"
更新默认的提单是否显示价格:src
"
+
src
,
this
.
initing
,
{...
this
.
form
});
if
(
this
.
form
.
orderId
&&
this
.
initing
)
return
if
(
this
.
form
.
orderId
&&
this
.
initing
)
return
// 240224 微信反馈
// 不好意思,这写错了,付款人=发货人----提单价格默认否;付款人=收货人,提交价格默认是
if
(
this
.
form
.
drawee
==
1
)
{
if
(
this
.
form
.
drawee
==
1
)
{
this
.
form
.
displayBillLadingPrice
=
false
return
}
if
(
this
.
form
.
drawee
==
2
)
{
if
(
this
.
form
.
drawee
==
2
)
{
this
.
form
.
displayBillLadingPrice
=
true
return
}
...
...
@@ -1841,17 +1952,17 @@ export default {
// 控货订单归属发货人
// 非控货订单 + 付款人为发货人 归属发货人, 其他归属收货人
let
customerId
=
null
if
(
this
.
form
.
type
==
2
||
this
.
form
.
isCargoControl
==
1
||
this
.
form
.
drawee
==
2
)
{
if
(
this
.
form
.
type
==
2
||
this
.
form
.
isCargoControl
==
1
||
this
.
form
.
drawee
==
2
)
{
customerId
=
this
.
form
.
consignorId
}
else
{
}
else
{
customerId
=
this
.
form
.
consigneeId
}
if
(
!
customerId
)
return
if
(
!
customerId
)
return
console
.
log
(
'
原归属人
'
,
this
.
displayBillLadingPriceFrom
,
'
新归属人
'
,
customerId
)
console
.
log
(
'
原归属人
'
,
this
.
displayBillLadingPriceFrom
,
'
新归属人
'
,
customerId
)
// 如果当前的提单价格设置来自同一个客户则不在查询
if
(
this
.
displayBillLadingPriceFrom
==
customerId
)
return
;
if
(
this
.
displayBillLadingPriceFrom
==
customerId
)
return
;
this
.
displayBillLadingPriceFrom
=
customerId
// 获取客户信息
...
...
@@ -1864,7 +1975,7 @@ export default {
handleChangeDestCountry
(
val
)
{
console
.
log
(
"
handleChangeDestCountry
"
,
val
)
this
.
form
.
destCountryId
=
val
if
(
this
.
form
.
destCountryId
)
{
if
(
this
.
form
.
destCountryId
)
{
this
.
form
.
objectiveId
=
null
this
.
form
.
lineId
=
null
this
.
selectedRouter
=
null
...
...
@@ -1872,9 +1983,9 @@ export default {
}
},
// 切换目的城市
async
handleChangeDestCity
(
val
){
async
handleChangeDestCity
(
val
)
{
this
.
form
.
objectiveId
=
val
if
(
this
.
form
.
objectiveId
)
{
if
(
this
.
form
.
objectiveId
)
{
this
.
form
.
lineId
=
null
this
.
selectedRouter
=
null
this
.
form
.
destCountryId
=
this
.
destCityList
.
find
(
item
=>
item
.
shi
===
val
)?.
guojia
...
...
@@ -1883,12 +1994,12 @@ export default {
await
this
.
updateRoutes
(
'
handleChangeDestCity
'
)
},
// 切换路线
setLineId
(
lineId
){
setLineId
(
lineId
)
{
this
.
form
.
lineId
=
lineId
this
.
handleChangeLineId
()
},
// 切换线路回调
async
handleChangeLineId
(){
async
handleChangeLineId
()
{
await
this
.
$nextTick
()
this
.
selectedRouter
=
this
.
routerList
.
find
(
item
=>
item
.
id
===
this
.
form
.
lineId
)
console
.
log
(
"
handleChangeLineId
"
,
...
...
@@ -1896,7 +2007,7 @@ export default {
"
目的市
"
,
this
.
selectedRouter
?.
destCityId
,
"
目的国
"
,
this
.
selectedRouter
?.
destCountryId
,
"
始发市
"
,
this
.
selectedRouter
?.
startCityId
)
if
(
this
.
form
.
lineId
)
{
if
(
this
.
form
.
lineId
)
{
this
.
form
.
objectiveId
=
this
.
selectedRouter
?.
destCityId
this
.
form
.
destCountryId
=
this
.
selectedRouter
?.
destCountryId
this
.
form
.
departureId
=
this
.
selectedRouter
?.
startCityId
...
...
@@ -1906,18 +2017,25 @@ export default {
};
</
script
>
<
style
lang=
"scss"
scoped
>
.card-title
{
.w-380
{
width
:
380px
;
}
.card-title
{
font-size
:
18px
;
display
:
flex
;
.card-name
{
.card-name
{
flex
:
1
;
}
}
.form-section
{
.contact
{
.form-section
{
.contact
{
display
:
flex
;
align-items
:
center
;
img
.phonebook
{
img
.phonebook
{
width
:
30px
;
height
:
30px
;
margin-left
:
10px
;
...
...
@@ -1926,13 +2044,25 @@ export default {
}
}
::v-deep
.product-list
.el-form-item__error
{
::v-deep
.product-list
.el-form-item__error
{
position
:
static
;
}
::v-deep
th
.el-table__cell
.cell
{
::v-deep
th
.el-table__cell
.cell
{
white-space
:
nowrap
;
.red
{
.red
{
color
:
red
;
}
}
::v-deep
.right-label
{
.el-form-item__label
{
width
:
150px
;
display
:
inline-flex
;
justify-content
:
flex-end
;
align-items
:
center
;
}
}
</
style
>
src/views/ecw/order/exception/index.vue
View file @
ca65a30e
...
...
@@ -31,7 +31,6 @@
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consignorText')"
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeText"
>
...
...
@@ -40,7 +39,6 @@
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consigneeText')"
/>
</el-form-item>
<el-form-item
:label=
"$t('运输方式') + ':'"
v-show=
"showSearch"
>
...
...
@@ -211,7 +209,7 @@
v-model=
"queryParams.goodsNameKey"
/>
<product-selector
v-model=
"queryParams.goodsName"
v-model
.trim
=
"queryParams.goodsName"
style=
"flex: 1"
:clearable=
"true"
@
keyup.enter.native=
"handleQuery"
...
...
src/views/ecw/order/feeApplication.vue
View file @
ca65a30e
...
...
@@ -33,7 +33,7 @@
>
<el-form-item>
<el-button
:disabled=
"!!processInstanceId
|| editMode
"
:disabled=
"!!processInstanceId "
@
click=
"addCost"
>
{{
$t
(
"
添加申请
"
)
}}
</el-button
...
...
@@ -119,7 +119,7 @@
<!--el-button type="text" v-if="scope.row.status == 1" @click="examineFn">
{{
$t
(
'
审核中
'
)
}}
</el-button-->
<el-button
type=
"text"
v-if=
"
modifable(scope.$index
)"
v-if=
"
scope.row.id && modifable(scope.row
)"
@
click=
"modify(scope.row)"
>
{{
$t
(
"
修改
"
)
}}
</el-button
...
...
@@ -225,7 +225,8 @@ export default {
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
feeList
()
{
return
this
.
list
.
filter
((
item
)
=>
item
.
status
===
0
);
// return this.list.filter((item) => item.status === 0);
return
this
.
list
;
},
// 正在编辑的费用申请
currentItem
()
{
...
...
@@ -236,13 +237,13 @@ export default {
return
!!
this
.
currentItem
;
},
modifable
()
{
return
(
i
ndex
)
=>
{
return
(
i
tem
)
=>
{
// 审核中不允许修改
if
(
this
.
processInstanceId
)
return
false
;
// 有未提交的不允许修改
if
(
this
.
feeList
.
length
)
return
false
;
//
有
修改中的不允许修改
if
(
this
.
list
.
findIndex
((
item
)
=>
item
.
editMode
)
>
-
1
)
return
false
;
//
if (this.feeList.length) return false;
// 修改中的不允许修改
if
(
item
.
editMode
)
return
false
;
return
true
;
}
}
...
...
@@ -263,7 +264,7 @@ export default {
// 查询是否有审核中的费用申请
getFeeApplicationApproveByOrderId
(
this
.
orderId
).
then
((
res
)
=>
{
if
(
res
.
data
.
formId
)
{
if
(
res
.
data
)
{
this
.
processInstanceId
=
res
.
data
.
formId
;
/*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data
...
...
@@ -306,10 +307,11 @@ export default {
},
submit
()
{
// 判断费用申请是否有未填项
// console.log("提交的费用信息列表", this.feeList)
const
errList
=
this
.
feeList
.
filter
((
item
)
=>
{
return
(
!
item
[
"
feeType
"
]
||
!
item
[
"
applicationFee
"
]
||
item
.
applicationFee
==
null
||
item
.
applicationFee
==
undefined
||
!
item
[
"
applicationFeeCurrency
"
]
||
!
item
[
"
payType
"
]
);
...
...
@@ -317,18 +319,18 @@ export default {
if
(
errList
.
length
)
{
return
this
.
$message
.
error
(
"
请填写完整费用申请信息
"
);
}
if
(
this
.
editMode
)
{
// 要提交status=1,否则保持原状态
const
data
=
{
...
this
.
currentItem
,
status
:
1
,
copyUserId
:
this
.
selectedUsers
,
};
return
applicationUpdate
(
data
).
then
((
r
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
修改成功
"
));
this
.
$emit
(
"
update:dialogVisible
"
,
false
);
});
}
//
if (this.editMode) {
//
// 要提交status=1,否则保持原状态
//
const data = {
//
...this.currentItem,
//
status: 1,
//
copyUserId: this.selectedUsers,
//
};
//
return applicationUpdate(data).then((r) => {
//
this.$message.success(this.$t("修改成功"));
//
this.$emit("update:dialogVisible", false);
//
});
//
}
feeApplicationCreateBatch
({
orderFeeApplicationCreateReqVOList
:
this
.
feeList
,
...
...
@@ -339,6 +341,7 @@ export default {
this
.
$emit
(
"
update:dialogVisible
"
,
false
);
this
.
$message
.
success
(
this
.
$t
(
"
添加成功
"
));
this
.
selectedUsers
=
[];
this
.
$emit
(
"
refresh
"
)
}
});
},
...
...
src/views/ecw/order/index.vue
View file @
ca65a30e
...
...
@@ -13,10 +13,10 @@
</el-form-item> -->
<el-form-item
:label=
"$t('发货人')"
prop=
"consignorKey"
>
<el-input
v-model.trim=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consignorKey')"
/>
<el-input
v-model.trim=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeKey"
>
<el-input
v-model.trim=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consigneeKey')"
/>
<el-input
v-model.trim=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('控货')"
prop=
"isCargoControl"
v-show=
"showSearch"
>
...
...
@@ -63,7 +63,7 @@
</el-form-item> -->
<el-form-item
:label=
"$t('商品')"
prop=
"tidanNo"
v-show=
"showSearch"
>
<el-input
v-model.trim=
"prodParam.value"
:placeholder=
"$t('请输入商品类型、品名或品牌')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(prodParam, 'value')"
>
<el-input
v-model.trim=
"prodParam.value"
:placeholder=
"$t('请输入商品类型、品名或品牌')"
clearable
@
keyup.enter.native=
"handleQuery"
>
<
template
slot=
"prepend"
>
<dict-selector
:type=
"DICT_TYPE.ORDER_QUERY_PROD_FIELD"
defaultable
v-model=
"prodParam.key"
class=
"w-50"
/>
</
template
>
...
...
@@ -289,7 +289,7 @@
<el-table-column
v-if=
"dept"
:label=
"$t('客户经理')"
align=
"center"
prop=
"salesmanName"
/>
<el-table-column
:label=
"$t('发货人客服')"
align=
"center"
prop=
"consignorFollowCustomerService"
/>
<el-table-column
:label=
"$t('收货人客服')"
align=
"center"
prop=
"consigneeFollowCustomerService"
/>
<el-table-column
:label=
"$t('到仓箱数/方数重量')"
align=
"center"
prop=
"status"
>
<el-table-column
:label=
"$t('到仓箱数/方数
/
重量')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"{ row }"
>
{{
row
.
checkNum
}}{{
$t
(
"
箱
"
)
}}
/
{{
row
.
checkVolume
}}
m³ /
{{
row
.
checkWeight
}}
Kg
</
template
>
...
...
@@ -449,10 +449,28 @@
</el-dropdown-menu>
</el-dropdown>
<
template
v-if=
"exclude(scope.row.status, [0, 11, 12, 13, 14, 15, 17, 18, 32]) && exclude(scope.row.inWarehouseState, [204, 205, 206])"
>
<
template
v-if=
"
(exclude(scope.row.status,[0, 11, 12, 13, 14, 15, 17, 18, 32]) && exclude(scope.row.inWarehouseState, [204, 205, 206]))
||
(scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0)
"
>
<!--
<el-divider
direction=
"vertical"
></el-divider>
-->
<!--仓库相关的-->
<el-dropdown
v-hasPermi=
"['ecw:order:warehouse_add', 'ecw:order:warehouse_update', 'ecw:order:warehouse_exit', 'ecw:order:warehouse_adjustment', 'ecw:order:warehouse_transfer', 'ecw:order:warehouse_arrive', 'ecw:order:stocking']"
>
<el-dropdown
v-hasPermi=
"[
'ecw:order:warehouse_add',
'ecw:order:warehouse_update',
'ecw:order:warehouse_exit',
'ecw:order:warehouse_adjustment',
'ecw:order:warehouse_transfer',
'ecw:order:warehouse_arrive',
'ecw:order:stocking',
'ecw:order:shipment:warehouse_replenish',
'ecw:order:shipment:warehouse_update',
]"
>
<el-button
type=
"text"
>
{{
$t
(
"
仓库
"
)
}}
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<!-- 入仓操作 -->
...
...
@@ -460,12 +478,66 @@
<el-dropdown-item
@
click.native=
"$router.push('/order/warehousing?id=' + scope.row.orderId)"
v-hasPermi=
"['ecw:order:warehouse_add']"
>
{{
$t
(
"
入仓操作
"
)
}}
</el-dropdown-item>
</
template
>
<!-- 入仓补充 -->
<
template
v-if=
"include(scope.row.inWarehouseState, [201, 202, 202, 210, 202, 211, 202, 214, 215, 216]) && include(scope.row.status, [2, 3, 5, 10, 9, 8])"
>
<el-dropdown-item
@
click.native=
"$router.push('/order/warehousing-add?id=' + scope.row.orderId)"
v-hasPermi=
"['ecw:order:warehouse_replenish']"
>
{{
$t
(
"
入仓补充
"
)
}}
</el-dropdown-item>
<
template
v-if=
"scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0"
>
<el-dropdown-item
@
click.native=
"$router.push('/order/warehousing-add?shipment=1&id=' + scope.row.orderId)"
v-hasPermi=
"['ecw:order:shipment:warehouse_replenish']"
>
{{
$t
(
"
入仓补充
"
)
}}
</el-dropdown-item
>
</
template
>
<
template
v-else-if=
"
include(
scope.row.inWarehouseState,
[201, 202, 202, 210, 202, 211, 202, 214, 215, 216]
) && include(scope.row.status, [2, 3, 5, 10, 9, 8])
"
>
<el-dropdown-item
@
click.native=
"
$router.push(
'/order/warehousing-add?id=' + scope.row.orderId
)
"
v-hasPermi=
"['ecw:order:warehouse_replenish']"
>
{{
$t
(
"
入仓补充
"
)
}}
</el-dropdown-item
>
</
template
>
<!-- 入仓修改 -->
<
template
v-if=
"include(scope.row.inWarehouseState, [201, 202, 207, 202, 209, 210, 202, 211, 202, 214, 215, 216, 204, 205]) && scope.row.status != 11 && exclude(scope.row.shipmentState, [314, 315, 317, 318])"
>
<el-dropdown-item
@
click.native=
"$router.push('/order/warehousing-update?id=' + scope.row.orderId)"
v-hasPermi=
"['ecw:order:warehouse_update']"
:disabled2=
"scope.row.parentOrderId"
>
{{
$t
(
"
入仓修改
"
)
}}
</el-dropdown-item>
<
template
v-if=
"scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0"
>
<el-dropdown-item
@
click.native=
"$router.push('/order/warehousing-update?shipment=1&id=' + scope.row.orderId)"
v-hasPermi=
"['ecw:order:shipment:warehouse_update']"
>
{{
$t
(
"
入仓修改
"
)
}}
</el-dropdown-item
>
</
template
>
<
template
v-else-if=
"
include(
scope.row.inWarehouseState,
[
201, 202, 207, 202, 209, 210, 202, 211, 202, 214, 215,
216, 204, 205,
]
) &&
scope.row.status != 11 &&
exclude(scope.row.shipmentState, [305, 307, 407])
"
>
<el-dropdown-item
@
click.native=
"
$router.push(
'/order/warehousing-update?id=' + scope.row.orderId
)
"
v-hasPermi=
"['ecw:order:warehouse_update']"
:disabled2=
"scope.row.parentOrderId"
>
{{
$t
(
"
入仓修改
"
)
}}
</el-dropdown-item
>
</
template
>
<!-- 退仓 -->
...
...
@@ -589,7 +661,7 @@
<batch-pickup
v-if=
"showBatchPickup"
@
close=
"onBatchClose"
@
success=
"onBatchClose"
/>
<withdrawal
v-if=
"show"
:dialog-visible=
"show"
:orderId=
"orderId"
></withdrawal>
<batch-single-application
@
getList=
"getList"
:order-list=
"orderId"
:dialog-visible.sync=
"warehouseBol"
></batch-single-application>
<fee-application
v-if=
"feeApplicationBol"
:order-id=
"orderId"
:currencys=
"JSON.stringify(currencyList)"
:dialog-visible.sync=
"feeApplicationBol"
></fee-application>
<fee-application
v-if=
"feeApplicationBol"
:order-id=
"orderId"
:currencys=
"JSON.stringify(currencyList)"
:dialog-visible.sync=
"feeApplicationBol
"
@
refresh=
"getList
"
></fee-application>
<merge-log
:order-no=
"showMergedLogOrderNo"
v-if=
"showMergedLogOrderNo !== null"
@
close=
"showMergedLogOrderNo = null"
/>
<pickup-log
v-if=
"showPickupLogOrderNo"
:order-no=
"showPickupLogOrderNo"
@
close=
"showPickupLogOrderNo = null"
@
delete=
"getList"
/>
<SplitRevoke
...
...
src/views/ecw/order/penddingList.vue
View file @
ca65a30e
...
...
@@ -4,14 +4,14 @@
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"100px"
>
<el-form-item
:label=
"$t('编号')"
prop=
"orderNo"
>
<el-input
v-model=
"queryParams.numberKey"
:placeholder=
"$t('请输入订单号、唛头、提单号')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/\s+/g, '
')"
/>
<el-input
v-model=
"queryParams.numberKey"
:placeholder=
"$t('请输入订单号、唛头、提单号')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'numberKey
')"
/>
</el-form-item>
<el-form-item
:label=
"$t('发货人')"
prop=
"consignorKey"
>
<el-input
v-model
=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')
"
/>
<el-input
v-model
.trim=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery
"
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeKey"
>
<el-input
v-model
=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')
"
/>
<el-input
v-model
.trim=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery
"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
>
<user-selector
manage
v-model=
"queryParams.salesmanIds"
multiple
clearable
@
change=
"handleQuery"
...
...
@@ -685,6 +685,10 @@ export default {
this
.
AddressTown
=
data
;
})
}
},
// 自动去除空格
replaceSpace
(
obj
,
field
)
{
obj
[
field
]
=
obj
[
field
].
replace
(
/
\s
+/g
,
""
)
}
}
};
...
...
src/views/ecw/order/stockingList.vue
View file @
ca65a30e
...
...
@@ -19,7 +19,6 @@
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consignorKey')"
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeKey"
>
...
...
@@ -28,7 +27,6 @@
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'consigneeKey')"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
>
...
...
@@ -115,7 +113,6 @@
:placeholder=
"$t('请输入商品类型、品名或品牌')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'prodKey')"
/>
</el-form-item>
...
...
src/views/ecw/order/warehousing/components/Warehouse.vue
View file @
ca65a30e
...
...
@@ -407,8 +407,8 @@
</el-tab-pane>
</el-tabs>
<div
v-if=
"
edit && order.status !== 3
"
>
<h2>
{{ $t(
"审批流程"
) }}
</h2>
<div
v-if=
"
(edit && order.status !== 3) || isShipment
"
>
<h2>
{{ $t(
'审批流程'
) }}
</h2>
<work-flow
xmlkey=
"free_apply"
v-model=
"selectedUsers"
/>
<!-- <div>选择的用户:{{selectedUsers}}</div>-->
</div>
...
...
@@ -471,6 +471,7 @@ 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
"
import
{
appendApplyWhenShipment
,
updateApplyWhenShipment
}
from
'
@/api/ecw/warehouse
'
export
default
{
name
:
"
Warehouse
"
,
...
...
@@ -520,6 +521,10 @@ export default {
orderWarehouseInBackItemDoList
:
[]
}
}
},
isShipment
:{
type
:
Boolean
,
default
:
false
}
},
...
...
@@ -803,7 +808,9 @@ export default {
return
}
this
.
submitting
=
true
return
orderWarehouseIn
({
const
func
=
this
.
isShipment
?
appendApplyWhenShipment
:
orderWarehouseIn
console
.
log
(
"
提交追加
"
,
this
.
isShipment
,
func
)
return
func
({
...
this
.
form1
,
brandType
:
this
.
warehousing
.
brandType
,
orderId
:
this
.
warehousing
.
orderId
,
...
...
@@ -849,7 +856,8 @@ export default {
if
(
this
.
edit
)
{
// 入仓修改
this
.
submitting
=
true
return
orderWarehouseInUpdateApply
({
const
func
=
this
.
isShipment
?
updateApplyWhenShipment
:
orderWarehouseInUpdateApply
return
func
({
...
this
.
form
,
brandType
:
this
.
warehousing
.
brandType
,
orderId
:
this
.
warehousing
.
orderId
,
...
...
@@ -873,7 +881,7 @@ export default {
.
then
((
r
)
=>
{
this
.
submitting
=
false
if
(
r
.
data
)
{
this
.
$message
.
success
(
r
.
msg
||
"
入仓修改发起成功
"
)
this
.
$message
.
success
(
this
.
$t
(
"
入仓修改发起成功
"
)
)
this
.
handleClose
()
}
else
{
this
.
$message
.
success
(
r
.
msg
||
"
入仓修改发起失败
"
)
...
...
@@ -885,7 +893,8 @@ export default {
}
else
{
// 首次入仓、入仓补充
this
.
submitting
=
true
return
orderWarehouseIn
({
const
func
=
this
.
isShipment
?
appendApplyWhenShipment
:
orderWarehouseIn
return
func
({
...
this
.
form
,
brandType
:
this
.
warehousing
.
brandType
,
orderId
:
this
.
warehousing
.
orderId
,
...
...
@@ -905,7 +914,7 @@ export default {
.
then
((
r
)
=>
{
this
.
submitting
=
false
if
(
r
.
data
)
{
this
.
$message
.
success
(
"
入仓成功
"
)
this
.
$message
.
success
(
this
.
isShipment
?
this
.
$t
(
'
入仓追加已提交审批
'
)
:
this
.
$t
(
"
入仓成功
"
)
)
this
.
handleClose
()
}
else
{
this
.
$message
.
success
(
"
入仓失败
"
)
...
...
src/views/ecw/order/warehousing/index.vue
View file @
ca65a30e
...
...
@@ -103,6 +103,7 @@
:order-item-b=
"orderItemList[$index]"
:title=
"$t('修改')"
:order=
"order"
:is-shipment=
"isShipment"
@
close=
"getList"
></warehouse>
<template
...
...
@@ -120,9 +121,11 @@
:order-item-b=
"orderItemList[$index]"
:title=
"$t('追加')"
:order=
"order"
:is-shipment=
"isShipment"
@
close=
"getList"
></warehouse>
<el-button
v-if=
"!isShipment"
size=
"mini"
type=
"text"
@
click=
"handleWarehousingReturn(row)"
...
...
@@ -254,7 +257,7 @@
</el-card>
<div
style=
"text-align: center; margin-top: 15px"
v-if=
"!(order.status !== 3 && isEdit)"
v-if=
"!(order.status !== 3 && isEdit)
&& !isShipment
"
>
<el-button
@
click=
"escapeBol = true"
type=
"primary"
>
{{
$t("转异")
...
...
@@ -696,6 +699,9 @@ export default {
warehouseId
()
{
return
this
.
order
?.
logisticsInfoDto
?.
startWarehouseId
;
},
isShipment
(){
return
this
.
$route
.
query
?.
shipment
==
1
}
},
};
</
script
>
...
...
src/views/ecw/order/warningCargoControl.vue
View file @
ca65a30e
...
...
@@ -3,14 +3,14 @@
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"100px"
>
<el-form-item
:label=
"$t('订单编号')"
prop=
"orderNo"
>
<el-input
v-model
=
"queryParams.orderNo"
:placeholder=
"$t('订单编号')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/\s+/g, '
')"
/>
<el-input
v-model
.trim=
"queryParams.orderNo"
:placeholder=
"$t('订单编号')"
clearable
@
keyup.enter.native=
"handleQuery"
@
input=
"replaceSpace(queryParams, 'orderNo
')"
/>
</el-form-item>
<el-form-item
:label=
"$t('发货人')"
prop=
"consignorKey"
>
<el-input
v-model
=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
<el-input
v-model
.trim=
"queryParams.consignorKey"
:placeholder=
"$t('发货人')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('收货人')"
prop=
"consigneeKey"
>
<el-input
v-model
=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')
"
/>
<el-input
v-model
.trim=
"queryParams.consigneeKey"
:placeholder=
"$t('收货人')"
clearable
@
keyup.enter.native=
"handleQuery
"
/>
</el-form-item>
<el-form-item
:label=
"$t('控货状态')"
prop=
"isCargoControl"
>
<dict-selector
v-model=
"queryParams.cargoControlStatusList"
multiple
:type=
"DICT_TYPE.CONTROL_GOODS_STATUS"
clearable
@
change=
"handleQuery"
/>
...
...
@@ -46,7 +46,7 @@
</el-form-item>
<el-form-item
:label=
"$t('商品')"
prop=
"prodId"
v-show=
"showSearch"
>
<product-selector
v-model
=
"queryParams.prodId"
@
keyup.enter.native=
"handleQuery"
clearable
@
change=
"handleQuery"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')
"
/>
<product-selector
v-model
.trim=
"queryParams.prodId"
@
keyup.enter.native=
"handleQuery"
clearable
@
change=
"handleQuery
"
/>
</el-form-item>
<el-form-item
:label=
"$t('订单状态')"
prop=
"statusList"
v-show=
"showSearch"
>
...
...
@@ -351,7 +351,10 @@ export default {
this
.
loading
=
false
})
},
// 自动去除空格
replaceSpace
(
obj
,
field
)
{
obj
[
field
]
=
obj
[
field
].
replace
(
/
\s
+/g
,
""
)
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
page
=
1
...
...
src/views/ecw/warehouse/index.vue
View file @
ca65a30e
...
...
@@ -921,7 +921,7 @@ export default {
cityList
:
[],
serviceGroup
:
[
{
id
:
"
1
"
,
text
:
this
.
$t
(
"
集运
服务
"
)
},
{
id
:
"
1
"
,
text
:
this
.
$t
(
"
集运
"
)
},
{
id
:
"
6
"
,
text
:
this
.
$t
(
"
数量(个)是否必填
"
)
},
],
...
...
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