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
6b5ab41c
Commit
6b5ab41c
authored
Sep 26, 2022
by
dragondean@qq.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://gitlab.jdshangmen.com/jiedao-app/jiedao-app-operator
into dev
parents
33e62754
44775d65
Changes
16
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
876 additions
and
392 deletions
+876
-392
boxSeaAir.js
src/api/ecw/boxSeaAir.js
+4
-4
editSeaAirForm.vue
src/views/ecw/box/editSeaAirForm.vue
+160
-0
indexSeaAir.vue
src/views/ecw/box/indexSeaAir.vue
+438
-304
twoWayArrival.vue
src/views/ecw/box/shippingSea/nodePage/twoWayArrival.vue
+10
-12
utils.js
src/views/ecw/box/shippingSea/utils.js
+43
-1
index.vue
src/views/ecw/customer/index.vue
+62
-21
transferCustomer.vue
src/views/ecw/customer/transferCustomer.vue
+72
-0
detail.vue
src/views/ecw/offer/detail.vue
+59
-36
batchSingleApplication.vue
src/views/ecw/order/batchSingleApplication.vue
+2
-2
index.vue
src/views/ecw/order/index.vue
+2
-1
discount.vue
src/views/ecw/order/special/discount.vue
+2
-0
index.vue
src/views/ecw/order/special/index.vue
+5
-3
index.vue
src/views/ecw/order/warehousing/index.vue
+4
-3
index.vue
src/views/member/user/index.vue
+5
-1
underReview.vue
src/views/member/user/underReview.vue
+5
-1
index.vue
src/views/system/myInternalMessage/index.vue
+3
-3
No files found.
src/api/ecw/boxSeaAir.js
View file @
6b5ab41c
import
request
from
"
@/utils/request
"
;
/**
* 起飞
*
二程
起飞
*
* @export
* @param {*} data
...
...
@@ -23,7 +23,7 @@ import request from "@/utils/request";
}
/**
* 到港
*
二程
到港
*
* @export
* @param {*} data
...
...
@@ -32,13 +32,13 @@ import request from "@/utils/request";
export
function
arrivalCreate
(
data
)
{
if
(
data
.
id
)
{
return
request
({
url
:
"
/ecw/box-arrival/update
"
,
url
:
"
/ecw/box-arrival
-air
/update
"
,
method
:
"
put
"
,
data
,
});
}
return
request
({
url
:
"
/ecw/box-arrival/create
"
,
url
:
"
/ecw/box-arrival
-air
/create
"
,
method
:
"
post
"
,
data
,
});
...
...
src/views/ecw/box/editSeaAirForm.vue
0 → 100644
View file @
6b5ab41c
<
template
>
<div
class=
"shippingSea-dialog"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"运输方式"
prop=
"transportType"
>
<el-radio-group
v-model=
"form.transportType"
>
<el-radio
v-for=
"dict in transportTypes"
:key=
"dict.value"
:label=
"dict.value"
>
{{
dict
.
label
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"出货渠道"
prop=
"shippingChannelId"
>
<el-select
v-model=
"form.shippingChannelId"
placeholder=
"请选择出货渠道"
>
<el-option
v-for=
"item in channelList"
:label=
"item.nameZh"
:value=
"item.channelId"
:key=
"item.channelId"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"柜型"
prop=
"cabinetId"
>
<el-select
v-model=
"form.cabinetId"
placeholder=
"请选择柜型"
>
<el-option
v-for=
"item in cabinetList"
:label=
"item.name"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"始发地"
prop=
"startWarehouseId"
>
<el-select
v-model=
"form.startWarehouseId"
placeholder=
"请选择始发地"
>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"item.titleZh"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"目的地"
prop=
"destWarehouseId"
>
<el-select
v-model=
"form.destWarehouseId"
placeholder=
"请选择目的地"
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"item.titleZh"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</div>
</
template
>
<
script
>
import
{
createbox
,
updatebox
}
from
"
@/api/ecw/box
"
;
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
export
default
{
name
:
"
editForm
"
,
inheritAttrs
:
false
,
props
:
{
transportTypes
:
Array
,
warehouseList
:
Array
,
cabinetList
:
Array
,
shipmentObj
:
Object
,
},
created
()
{
this
.
form
=
{
...
this
.
shipmentObj
};
this
.
getChannelList
()
},
data
()
{
return
{
// 表单参数
form
:
{
transportType
:
'
4
'
},
channelList
:
[],
// 表单校验
rules
:
{
shippingChannelId
:
[
{
required
:
true
,
message
:
'
出货渠道不能为空
'
,
trigger
:
'
blur
'
}
],
cabinetId
:
[
{
required
:
true
,
message
:
'
柜型不能为空
'
,
trigger
:
'
blur
'
}
],
startWarehouseId
:
[
{
required
:
true
,
message
:
'
始发地不能为空
'
,
trigger
:
'
blur
'
}
],
destWarehouseId
:
[
{
required
:
true
,
message
:
'
目的地不能为空
'
,
trigger
:
'
blur
'
}
]
}
};
},
methods
:
{
getChannelList
()
{
getChannelList
().
then
((
res
)
=>
(
this
.
channelList
=
res
.
data
))
},
/** 提交按钮 */
submitForm
()
{
this
.
$refs
[
'
form
'
].
validate
((
valid
)
=>
{
if
(
!
valid
)
{
return
}
this
.
form
.
transportType
=
4
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
updatebox
(
this
.
form
).
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
'
修改成功
'
)
this
.
open
=
false
this
.
getList
()
})
return
}
// 添加的提交
createbox
(
this
.
form
).
then
((
response
)
=>
{
this
.
$modal
.
msgSuccess
(
'
新增成功
'
)
this
.
open
=
false
this
.
getList
()
})
})
},
/** 取消按钮 */
cancel
()
{
this
.
$emit
(
"
closeDialog
"
);
},
},
computed
:
{
exportWarehouseList
()
{
return
this
.
warehouseList
.
filter
(
(
item
)
=>
item
.
tradeType
==
"
2
"
||
item
.
type
==
"
3
"
);
},
importWarehouseList
()
{
return
this
.
warehouseList
.
filter
(
(
item
)
=>
item
.
tradeType
==
"
1
"
||
item
.
type
==
"
3
"
);
},
},
};
</
script
>
<
style
lang=
"scss"
>
// 海运操作统一弹窗样式
.shippingSea-dialog
{
// 页面内元素弹窗form控件宽度设置
.el-form-item__content
{
>
div
:not
(
.el-input-number
)
{
width
:
100%
;
}
}
.operate-button
{
text-align
:
center
;
}
.two-element-formItem
{
display
:
flex
;
>
:last-child
{
width
:
100%
;
margin-left
:
10px
;
}
}
.two-element
{
.el-form-item__content
{
display
:
flex
;
>
:last-child
{
margin-left
:
10px
;
}
}
}
}
</
style
>
src/views/ecw/box/indexSeaAir.vue
View file @
6b5ab41c
This diff is collapsed.
Click to expand it.
src/views/ecw/box/shippingSea/nodePage/twoWayArrival.vue
View file @
6b5ab41c
<
template
>
<div>
<el-form
ref=
"twoWayArrivalForm"
:rules=
"rules"
:model=
"twoWayArrivalObj"
label-width=
"120px"
>
<el-form-item
label=
"
实际到港时间"
prop=
"apReal
Time"
>
<el-date-picker
type=
"datetime"
placeholder=
"请选择日期"
v-model=
"twoWayArrivalObj.
apReal
Time"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-form-item
label=
"
预计到达时间"
prop=
"est
Time"
>
<el-date-picker
type=
"datetime"
placeholder=
"请选择日期"
v-model=
"twoWayArrivalObj.
est
Time"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
label=
"
确认到港时间"
prop=
"apConfirm
Time"
>
<el-date-picker
type=
"datetime"
placeholder=
"请选择日期"
v-model=
"twoWayArrivalObj.a
pConfirm
Time"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-form-item
label=
"
实际到达时间"
prop=
"act
Time"
>
<el-date-picker
type=
"datetime"
placeholder=
"请选择日期"
v-model=
"twoWayArrivalObj.a
ct
Time"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
<el-form-item
label=
"
卸港时间"
prop=
"apUnloadPort
Time"
>
<el-date-picker
type=
"datetime"
placeholder=
"请选择日期"
v-model=
"twoWayArrivalObj.a
pUnloadPort
Time"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
<el-form-item
label=
"
实际二程时间"
prop=
"actSecond
Time"
>
<el-date-picker
type=
"datetime"
placeholder=
"请选择日期"
v-model=
"twoWayArrivalObj.a
ctSecond
Time"
value-format=
"yyyy-MM-dd HH:mm:ss"
></el-date-picker>
</el-form-item>
</el-form>
...
...
@@ -46,9 +46,7 @@ export default {
twoWayArrivalObj
:
{},
// 校验
rules
:
{
actHeadTime
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
blur
"
}],
estHeadTime
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
blur
"
}],
estSecondTime
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
blur
"
}],
actTime
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
blur
"
}]
},
// 弹窗配置
dialogVisible
:
false
,
...
...
@@ -59,9 +57,9 @@ export default {
created
()
{
const
voName
=
this
.
$attrs
.
currNode
.
voName
;
let
oldData
=
{
...
this
.
$attrs
.
shipmentObj
[
voName
]
};
oldData
=
formatDateStr
(
oldData
,
[
"
a
pConfirm
Time
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
oldData
=
formatDateStr
(
oldData
,
[
"
a
pReal
Time
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
oldData
=
formatDateStr
(
oldData
,
[
"
apUnloadPor
tTime
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
oldData
=
formatDateStr
(
oldData
,
[
"
a
ct
Time
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
oldData
=
formatDateStr
(
oldData
,
[
"
a
ctSecond
Time
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
oldData
=
formatDateStr
(
oldData
,
[
"
es
tTime
"
],
"
YYYY-MM-DD HH:mm:ss
"
);
this
.
twoWayArrivalObj
=
oldData
;
},
watch
:
{
...
...
src/views/ecw/box/shippingSea/utils.js
View file @
6b5ab41c
...
...
@@ -789,7 +789,7 @@ function seaBaseData() {
/**
* 清关状态:131、未清关;132、已清关
*/
voName
:
"
arrivalInfo
"
,
voName
:
"
a
irA
rrivalInfo
"
,
keyName
:
"
sapStatus
"
,
status
:
{
start
:
[
151
],
...
...
@@ -1172,6 +1172,48 @@ function getColmnMapping() {
key
:
"
operator
"
,
},
],
takeOffInfo
:
[
{
title
:
"
预计头程时间
"
,
key
:
"
estHeadTime
"
,
type
:
"
datetime
"
,
},
{
title
:
"
实际头程时间
"
,
key
:
"
actHeadTime
"
,
type
:
"
datetime
"
,
},
{
title
:
"
预计二程时间
"
,
key
:
"
estSecondTime
"
,
type
:
"
date
"
,
},
{
title
:
"
业务员
"
,
key
:
"
operator
"
,
},
],
airArrivalInfo
:
[
{
title
:
"
预计到达时间
"
,
key
:
"
estTime
"
,
type
:
"
datetime
"
,
},
{
title
:
"
实际到达时间
"
,
key
:
"
actTime
"
,
type
:
"
datetime
"
,
},
{
title
:
"
实际二程时间
"
,
key
:
"
actSecondTime
"
,
type
:
"
datetime
"
,
},
{
title
:
"
业务员
"
,
key
:
"
operator
"
,
},
],
cabinetUnloadInfo
:
[
{
title
:
"
到仓时间
"
,
...
...
src/views/ecw/customer/index.vue
View file @
6b5ab41c
...
...
@@ -15,16 +15,28 @@
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"联系方式"
>
<el-input
placeholder=
"请输入联系方式"
v-model=
"queryParams.defaultContactPhone"
></el-input>
</el-form-item>
<el-form-item
label=
"客户类别"
prop=
"level"
>
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_TYPE"
multiple
v-model=
"queryParams.type"
></dict-selector>
</el-form-item>
<el-form-item
label=
"客户经理"
prop=
"customerService"
>
<el-select
v-model=
"queryParams.customerService"
placeholder=
"请选择客户经理"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"客户来源"
prop=
"source"
>
<el-select
v-model=
"queryParams.source"
placeholder=
"请选择客户来源"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"
客户经理"
prop=
"customerServi
ce"
>
<el-select
v-model=
"
queryParams.customerService"
placeholder=
"请选择客户经理"
clearable
size=
"small
"
>
<el-option
v-for=
"dict in c
ustomerService
List"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
<el-form-item
label=
"
国家"
prop=
"sour
ce"
>
<el-select
v-model=
"
form.country"
placeholder=
"请选择国家
"
>
<el-option
v-for=
"dict in c
ountry
List"
:key=
"dict.id"
:label=
"dict.nameZh"
:value=
"parseInt(dict.id)"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"客户状态"
prop=
"status"
>
...
...
@@ -33,13 +45,15 @@
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"部门"
prop=
"department"
>
<el-input
v-model=
"queryParams.department"
placeholder=
"请输入部门"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"创建时间"
>
<el-date-picker
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
</el-form-item>
<el-form-item
label=
"信用等级"
prop=
"department"
>
<el-select
v-model=
"form.ww"
>
<el-option
v-for=
"(item,index) in creditList"
:label=
"item.nameZh"
:key=
"index"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
...
...
@@ -56,36 +70,42 @@
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:export']"
>
导出
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
:disabled=
"selectCustomerList.length === 0"
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"transferShow = true;"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:export']"
>
批量移交
</el-button>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
ref=
"multipleTable"
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
label=
"客户编号"
align=
"center"
prop=
"number"
/>
<el-table-column
label=
"客户名称"
align=
"center"
prop=
"name"
/>
<el-table-column
label=
"客户等级"
align=
"center"
prop=
"
level
"
>
<el-table-column
label=
"客户等级"
align=
"center"
prop=
"
vipLevelNameZh
"
>
<template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_LEVEL"
:value=
"scope.row.level"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"国家"
align=
"center"
prop=
"country"
:formatter=
"countryFormatter"
></el-table-column>
<el-table-column
label=
"客户经理"
align=
"center"
prop=
"customerService"
:formatter=
"customerServiceFn"
>
</el-table-column>
<el-table-column
label=
"信用等级"
prop=
"creditLevelNameZh"
></el-table-column>
<el-table-column
label=
"客户状态"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"部门"
align=
"center"
prop=
"department"
>
<
template
v-slot:default=
"scope"
>
{{
scope
.
row
.
department
}}
</
template
>
</el-table-column>
<el-table-column
label=
"主联系人"
prop=
"defaultContactName"
></el-table-column>
<el-table-column
label=
"主联系方式"
prop=
"defaultContactPhone"
></el-table-column>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"客户经理"
align=
"center"
prop=
"customerService"
:formatter=
"customerServiceFn"
>
</el-table-column>
<el-table-column
label=
"国家"
align=
"center"
prop=
"country"
:formatter=
"countryFormatter"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-view"
@
click=
"handleView(scope.row)"
...
...
@@ -451,6 +471,7 @@
</el-dialog>
<customer-follow-list
:customer-id=
"customerId"
:id=
"customerId"
ref=
"CustomerFollowList"
></customer-follow-list>
<customer-complaints
:customer-id=
"customerId"
ref=
"customerComplaints"
></customer-complaints>
<transfer-customer
:show.sync=
"transferShow"
:customer-ids.sync=
"selectCustomerList"
></transfer-customer>
</div>
</template>
...
...
@@ -467,13 +488,16 @@ import CustomerFollowList from "@/components/CustomerFollowList"
import
customerComplaints
from
"
@/components/customerComplaints
"
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getCountryListAll
}
from
'
@/api/ecw/country
'
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
transferCustomer
from
"
@/views/ecw/customer/transferCustomer
"
;
export
default
{
name
:
"
Customer
"
,
components
:
{
upload
,
CustomerFollowList
,
customerComplaints
customerComplaints
,
transferCustomer
},
data
()
{
return
{
...
...
@@ -525,11 +549,16 @@ export default {
showLine
:
false
,
customerId
:
undefined
,
customerServiceList
:[],
countryList
:
[]
countryList
:
[],
creditList
:[],
selectCustomerList
:[],
transferShow
:
false
};
},
created
()
{
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
this
.
creditList
=
r
.
data
.
list
})
this
.
getList
();
// getNodeList().then(r => {
// this.nodeList = r.data
...
...
@@ -682,7 +711,6 @@ export default {
/** 导出按钮操作 */
handleExport
()
{
// 处理查询参数
let
params
=
{...
this
.
queryParams
};
params
.
pageNo
=
undefined
;
params
.
pageSize
=
undefined
;
...
...
@@ -693,6 +721,8 @@ export default {
return
exportCustomerExcel
(
params
);
}).
then
(
response
=>
{
this
.
$download
.
excel
(
response
,
'
客户信息.xls
'
);
console
.
log
(
response
,
'
response
'
)
this
.
$download
.
excel
(
response
,
'
全部客户信息.xls
'
);
this
.
exportLoading
=
false
;
}).
catch
(()
=>
{});
},
...
...
@@ -707,7 +737,18 @@ export default {
this
.
$nextTick
(()
=>
{
this
.
$refs
.
customerComplaints
.
handleAdd
();
})
},
handleSelectionChange
(
val
){
this
.
selectCustomerList
=
val
.
map
(
i
=>
i
.
id
);
}
},
watch
:{
selectCustomerList
(
val
){
if
(
val
.
length
===
0
){
this
.
$refs
.
multipleTable
.
clearSelection
();
}
},
}
};
</
script
>
src/views/ecw/customer/transferCustomer.vue
0 → 100644
View file @
6b5ab41c
<
template
>
<el-dialog
center
title=
"客服"
:visible.sync=
"show"
width=
"30%"
>
<div
style=
"width: 100%;min-height: 200px;text-align: center"
>
<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-select>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
确 定
</el-button>
</span>
</el-dialog>
</
template
>
<
script
>
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
handOverCustomer
}
from
"
@/api/ecw/customer
"
;
export
default
{
name
:
"
transferCustomer
"
,
props
:{
show
:{
type
:
Boolean
,
default
:
false
},
customerIds
:[
Array
,
String
],
tableName
:
String
},
created
()
{
listServiceUser
().
then
(
r
=>
{
this
.
customerServiceList
=
r
.
data
;
})
},
computed
:{
getCustomerIds
(){
if
(
this
.
customerIds
instanceof
Array
)
return
this
.
customerIds
else
return
this
.
customerIds
.
split
(
'
,
'
)
}
},
data
(){
return
{
customerServiceList
:[],
service
:
''
,
}
},
methods
:{
submit
(){
if
(
!
this
.
service
){
return
this
.
$message
.
warning
(
'
请选择客户经理!
'
);
}
handOverCustomer
({
customerServiceId
:
this
.
service
,
customerIdList
:
this
.
getCustomerIds
}).
then
(
r
=>
{
if
(
r
.
code
===
0
){
this
.
$emit
(
'
update:show
'
,
false
)
this
.
$emit
(
'
update:customerIds
'
,[])
this
.
$message
.
success
(
'
用户批量转移成功!
'
)
}
})
},
}
}
</
script
>
<
style
scoped
>
</
style
>
src/views/ecw/offer/detail.vue
View file @
6b5ab41c
...
...
@@ -22,50 +22,50 @@
</div>
<el-descriptions
:column=
"3"
border
class=
"card"
>
<el-descriptions-item
:label=
"$t('发货人:')"
>
{{
consign
eeData
.
length
>
0
?
consigneeData
[
0
].
customerName
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consign
orData
.
contactsName
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('手机号:')"
>
{{
consign
eeData
.
length
>
0
?(
checkCode
(
consigneeData
[
0
].
areaCode
)
+
consigneeData
[
0
]
.
phoneNew
)
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consign
orData
?(
checkCode
(
consignorData
.
areaCode
)
+
consignorData
.
phoneNew
)
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('联系地址:')"
>
{{
consign
eeData
.
length
>
0
?
consigneeData
[
0
].
address
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consign
orData
.
address
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('客户来源:')"
>
{{
consigneeData
.
length
>
0
?
consigneeData
[
0
].
source
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consignorData
.
source
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('发货人公司名称:')"
>
{{
consign
eeData
.
length
>
0
?
consigneeData
[
0
].
company
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consign
orData
.
company
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('社交软件:')"
>
{{
consign
eeData
.
length
>
0
?
consigneeData
[
0
].
social
||
$t
(
'
无
'
):
$t
(
'
无
'
)
+
'
'
+
consigneeData
.
length
>
0
?
consigneeData
[
0
].
socialNumber
||
''
:
''
}}
{{
consign
orData
.
social
||
$t
(
'
无
'
)
+
'
'
+
consignorData
.
socialNumber
||
''
}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"3"
border
class=
"card"
>
<el-descriptions-item
:label=
"$t('收货人:')"
>
{{
consigneeData
.
length
>
1
?
consigneeData
[
1
].
customerName
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consigneeData
.
contactsName
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('手机号:')"
>
{{
consigneeData
.
length
>
1
?(
checkCode
(
consigneeData
[
1
].
areaCode
)
+
consigneeData
[
1
]
.
phoneNew
)
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consigneeData
?(
checkCode
(
consigneeData
.
areaCode
)
+
consigneeData
.
phoneNew
)
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('联系地址:')"
>
{{
consigneeData
.
length
>
1
?
consigneeData
[
1
].
address
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consigneeData
.
address
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('客户来源:')"
>
{{
consigneeData
.
length
>
1
?
consigneeData
[
1
].
source
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
{{
consigneeData
.
source
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('收
货人公司名称:')"
>
{{
consigneeData
.
length
>
1
?
consigneeData
[
1
].
company
||
$t
(
'
无
'
):
$t
(
'
无
'
)
}}
<el-descriptions-item
:label=
"$t('发
货人公司名称:')"
>
{{
consigneeData
.
company
||
$t
(
'
无
'
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('社交软件:')"
>
{{
consigneeData
.
length
>
1
?
consigneeData
[
1
].
social
||
$t
(
'
无
'
):
$t
(
'
无
'
)
+
'
'
+
consigneeData
.
length
>
1
?
consigneeData
[
1
].
socialNumber
||
''
:
''
}}
{{
consigneeData
.
social
||
$t
(
'
无
'
)
+
'
'
+
consigneeData
.
socialNumber
||
''
}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
:column=
"4"
class=
"card"
>
<el-descriptions-item
:label=
"$t('运输方式')"
>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"list.transportId"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('出货渠道')"
>
<el-descriptions-item
:label=
"$t('出货渠道')"
v-if=
"[3,4].indexOf(list.transportId) > -1"
>
{{
channelName
}}
</el-descriptions-item>
</el-descriptions>
...
...
@@ -339,7 +339,7 @@
</template>
<
script
>
import
{
DICT_TYPE
}
from
'
@/utils/dict
'
import
{
DICT_TYPE
,
getDictDatas
}
from
'
@/utils/dict
'
import
{
getOffer
,
deleteOffer
}
from
'
@/api/ecw/offer
'
import
{
getProductAttrList
}
from
'
@/api/ecw/productAttr
'
import
{
getCustomerList
,
getCustomer
}
from
'
@/api/ecw/customer
'
...
...
@@ -364,7 +364,7 @@
productAttrList
:[],
offerId
:
0
,
//发货/收货人信息
consigneeData
:
[]
,
consigneeData
:
{}
,
routerList
:[],
channelName
:
'
/
'
,
tradeCityList
:[],
...
...
@@ -372,6 +372,8 @@
currencyList
:[],
unitList
:[],
orderData
:[],
consignorData
:{},
customerSource
:
getDictDatas
(
DICT_TYPE
.
CUSTOMER_SOURCE
),
couponAvailableGroupDtoList
:
[],
// 可用优惠
couponTotalAmountList
:
[],
// 优惠总额
};
...
...
@@ -391,7 +393,6 @@
})
return
map
},
// 总有优惠金额
couponList
(){
let
arr
=
[]
...
...
@@ -414,7 +415,11 @@
},
// 计算返回的费用清单
feeDtoList
(){
if
(
this
.
list
&&
this
.
list
.
estCostVO
){
return
this
.
list
.
estCostVO
.
feeDtoList
||
[]
}
else
{
return
[]
}
},
// 清关费
clearanceFeeList
(){
...
...
@@ -466,7 +471,16 @@
}
},
methods
:
{
sourceLabel
(
data
){
let
label
=
''
var
source
=
this
.
customerSource
.
find
(
item
=>
item
.
value
==
data
)
if
(
source
)
label
=
source
.
label
return
label
},
checkCode
(
data
){
if
(
!
data
){
return
''
}
if
(
data
.
indexOf
(
'
+
'
)
==-
1
){
return
'
+
'
+
data
}
...
...
@@ -524,9 +538,11 @@
if
(
that
.
list
.
orderId
){
that
.
getOrderData
(
that
.
list
.
orderId
)
}
getCustomerContactsSelect
({
ids
:
[
that
.
list
.
consigneeId
,
that
.
list
.
consignorId
].
join
(
'
,
'
)}).
then
((
res
)
=>
{
that
.
consigneeData
.
push
(
res
.
data
.
list
.
find
(
item
=>
item
.
customerContactsId
==
that
.
list
.
consignorId
))
that
.
consigneeData
.
push
(
res
.
data
.
list
.
find
(
item
=>
item
.
customerContactsId
==
that
.
list
.
consigneeId
))
getCustomerContactsSelect
({
ids
:
[
that
.
list
.
consignorId
,
that
.
list
.
consigneeId
].
join
(
'
,
'
)}).
then
((
res
)
=>
{
let
consignor
=
res
.
data
.
list
.
find
(
item
=>
item
.
customerContactsId
==
that
.
list
.
consignorId
)
if
(
consignor
)
that
.
consignorData
=
consignor
let
consignee
=
res
.
data
.
list
.
find
(
item
=>
item
.
customerContactsId
==
that
.
list
.
consigneeId
)
if
(
consignee
)
that
.
consigneeData
=
consignee
that
.
getCnsigneeData
()
})
that
.
list
.
offerProdRespVOList
.
forEach
((
item
)
=>
{
...
...
@@ -588,12 +604,19 @@
// 获取发货/收货人
getCnsigneeData
(){
let
that
=
this
if
(
that
.
consigneeData
.
length
>
0
){
getCustomer
(
that
.
consigneeData
[
0
].
customerId
).
then
(
result
=>
{
that
.
consigneeData
[
0
]
=
Object
.
assign
(
that
.
consigneeData
[
0
],
result
.
data
)
if
(
that
.
consigneeData
&&
that
.
consigneeData
.
customerId
){
getCustomer
(
that
.
consigneeData
.
customerId
).
then
(
result
=>
{
result
.
data
.
source
=
this
.
sourceLabel
(
result
.
data
.
source
)
that
.
$set
(
that
.
consigneeData
,
'
source
'
,
result
.
data
.
source
)
that
.
$set
(
that
.
consigneeData
,
'
address
'
,
result
.
data
.
address
)
})
getCustomer
(
that
.
consigneeData
[
1
].
customerId
).
then
(
ress
=>
{
that
.
consigneeData
[
1
]
=
Object
.
assign
(
that
.
consigneeData
[
1
],
ress
.
data
)
}
if
(
that
.
consignorData
&&
that
.
consignorData
.
customerId
){
getCustomer
(
that
.
consignorData
.
customerId
).
then
(
ress
=>
{
ress
.
data
.
source
=
this
.
sourceLabel
(
ress
.
data
.
source
)
that
.
$set
(
that
.
consignorData
,
'
source
'
,
ress
.
data
.
source
)
that
.
$set
(
that
.
consignorData
,
'
address
'
,
ress
.
data
.
address
)
})
}
},
...
...
src/views/ecw/order/batchSingleApplication.vue
View file @
6b5ab41c
...
...
@@ -55,7 +55,7 @@
{{
row
.
consignorName
}}
</p>
<p>
{{
row
.
consignorPhone
}}
+
{{
row
.
consignorCountryCode
}}
{{
row
.
consignorPhone
}}
</p>
</div>
</div>
...
...
@@ -68,7 +68,7 @@
{{
row
.
consigneeName
}}
</p>
<p>
{{
row
.
consigneePhone
}}
+
{{
row
.
consigneeCountryCode
}}
{{
row
.
consigneePhone
}}
</p>
</div>
</
template
>
...
...
src/views/ecw/order/index.vue
View file @
6b5ab41c
...
...
@@ -187,6 +187,7 @@
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
@
click.native=
"$router.push('/order/warehousing?id=' + scope.row.orderId)"
v-hasPermi=
"['ecw:order:update']"
>
{{
$t
(
'
入仓
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"show = true;orderId = scope.row.orderId; "
v-hasPermi=
"['ecw:order:update']"
>
{{
$t
(
'
退仓
'
)
}}
</el-dropdown-item>
<el-dropdown-item
v-show=
"scope.row.statusMsg === '已入仓'"
@
click.native=
"$router.push('/order/warehousing?id=' + scope.row.orderId)"
v-hasPermi=
"['ecw:order:update']"
>
{{
$t
(
'
入仓修改
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"orderId = scope.row.orderId;warehouseBol=true;"
>
{{
$t
(
'
调仓
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"$router.push(
{path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >
{{
$t
(
'
调拨出仓
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"$router.push(
{path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >
{{
$t
(
'
调拨到仓
'
)
}}
</el-dropdown-item>
...
...
src/views/ecw/order/special/discount.vue
View file @
6b5ab41c
...
...
@@ -214,6 +214,8 @@ export default {
getOrderSpecial
(){
getOrderSpecial
(
this
.
form
.
orderItemId
).
then
(
r
=>
{
this
.
form
=
r
.
data
this
.
form
.
freight
=
''
this
.
form
.
clearanceFreight
=
''
}
)
}
,
getOrderSpecialByApproveId
(){
...
...
src/views/ecw/order/special/index.vue
View file @
6b5ab41c
...
...
@@ -79,10 +79,12 @@
prop=
"address"
label=
"操作"
>
<
template
v-slot=
"{row}"
>
<template
v-if=
"row.originalSeaFreight !== 0 && row.originalClearanceFreight !== 0"
>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:order:update']"
@
click=
"$router.push(`/order/discount/$
{row.orderItemId}?orderId=${row.orderId}`)">优惠申请
</el-button>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:order:update']"
@
click=
"$router.push(`/order/specialCommission/$
{row.orderItemId}`)">佣金规则
</el-button>
<el-button
size=
"mini"
type=
"text"
v-hasPermi=
"['ecw:order:update']"
@
click=
"$router.push(`/order/discount1/$
{row.orderItemId}?orderId=${row.orderId}
&
discount=1`)">管理折扣
</el-button>
</
template
>
</template>
</el-table-column>
</el-table>
...
...
src/views/ecw/order/warehousing/index.vue
View file @
6b5ab41c
...
...
@@ -76,11 +76,12 @@
<
template
v-slot=
"{ row, column, $index }"
>
<el-button
v-if=
"order.status === 5"
size=
"mini"
type=
"text"
@
click=
"handleWarehousing($index)"
>
修改
</el-button>
<template
v-else
>
<
el-button
v-if=
"orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0"
size=
"mini"
type=
"text"
@
click=
"handleWarehousing($index)"
>
追加
</el-button
>
<el-button
v-else
size=
"mini"
type=
"text"
@
click=
"handleWarehousing($index)"
>
入仓
</el-button>
<
template
v-if=
"orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleWarehousing($index)"
>
追加
</el-button>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleWarehousingReturn(row)"
>
退仓
</el-button>
</
template
>
<el-button
v-else
size=
"mini"
type=
"text"
@
click=
"handleWarehousing($index)"
>
入仓
</el-button>
</template>
</template>
</el-table-column>
</el-table>
...
...
src/views/member/user/index.vue
View file @
6b5ab41c
...
...
@@ -43,7 +43,11 @@
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
手机号
"
show
-
overflow
-
tooltip
align
=
"
center
"
prop
=
"
mobile
"
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
成交
"
align
=
"
center
"
prop
=
""
show
-
overflow
-
tooltip
/>
<
el
-
table
-
column
label
=
"
成交
"
align
=
"
center
"
prop
=
"
customerStatus
"
show
-
overflow
-
tooltip
>
<
template
v
-
slot
=
"
{row
}
"
>
{{
row
.
customerStatus
===
3
?
'
成交
'
:
'
非成交
'
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
认证
"
align
=
"
center
"
:
formatter
=
"
authentication
"
/>
<
el
-
table
-
column
label
=
"
状态
"
align
=
"
center
"
prop
=
"
status
"
>
<
template
slot
-
scope
=
"
scope
"
>
...
...
src/views/member/user/underReview.vue
View file @
6b5ab41c
...
...
@@ -41,7 +41,11 @@
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
手机号
"
show
-
overflow
-
tooltip
align
=
"
center
"
prop
=
"
mobile
"
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
成交
"
align
=
"
center
"
prop
=
""
show
-
overflow
-
tooltip
/>
<
el
-
table
-
column
label
=
"
成交
"
align
=
"
center
"
prop
=
""
show
-
overflow
-
tooltip
>
<
template
v
-
slot
=
"
{row
}
"
>
{{
row
.
customerStatus
===
3
?
'
成交
'
:
'
非成交
'
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
认证
"
align
=
"
center
"
:
formatter
=
"
authentication
"
/>
<
el
-
table
-
column
label
=
"
状态
"
align
=
"
center
"
prop
=
"
status
"
>
<
template
slot
-
scope
=
"
scope
"
>
...
...
src/views/system/myInternalMessage/index.vue
View file @
6b5ab41c
...
...
@@ -3,9 +3,9 @@
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
label=
"来源"
prop=
"fromId"
>
<!--
<el-form-item
label=
"来源"
prop=
"fromId"
>
<el-input
v-model=
"queryParams.fromId"
placeholder=
"请输入站内信来源"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
</el-form-item>
-->
<el-form-item
label=
"发送时间"
>
<el-date-picker
v-model=
"dateRangeSendTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
...
...
@@ -39,7 +39,7 @@
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
""
align=
"center"
prop=
"id"
/>
<el-table-column
label=
"来源"
align=
"center"
prop=
"fromId"
/
>
<!--
<el-table-column
label=
"来源"
align=
"center"
prop=
"fromId"
/>
--
>
<el-table-column
label=
"发送时间"
align=
"center"
prop=
"sendTime"
width=
"180"
>
<template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
sendTime
)
}}
</span>
...
...
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