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
52d06879
Commit
52d06879
authored
May 13, 2024
by
liuzeheng
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://110.41.143.128:8081/lanbaoming/jiedao-app-operator-master
into dev
parents
c0725d86
a663b9f5
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
797 additions
and
341 deletions
+797
-341
.env.development
.env.development
+2
-0
EcwReportPermission.js
src/api/report/EcwReportPermission.js
+1
-1
customeranalysis.js
src/api/report/customeranalysis.js
+1
-1
customerreport.js
src/api/report/customerreport.js
+1
-1
salesanalysis.js
src/api/report/salesanalysis.js
+1
-1
salesreport.js
src/api/report/salesreport.js
+12
-1
vz.js
src/api/report/vz.js
+1
-1
index.vue
src/views/bpm/processInstance/index.vue
+10
-1
copy.vue
src/views/bpm/task/copy.vue
+10
-1
done.vue
src/views/bpm/task/done.vue
+10
-1
todo.vue
src/views/bpm/task/todo.vue
+137
-44
index.vue
src/views/ecw/oceanCustomer/index.vue
+421
-179
index.vue
src/views/ecw/order/index.vue
+3
-2
index.vue
src/views/report/EcwReportPermission/index.vue
+1
-1
index.vue
src/views/report/customer_analysis/index.vue
+24
-5
index.vue
src/views/report/customerreport/index.vue
+1
-1
index.vue
src/views/report/sales_analysis/index.vue
+1
-2
index.vue
src/views/report/salesreport/index.vue
+156
-96
index.vue
src/views/report/vz/index.vue
+3
-2
vue.config.js
vue.config.js
+1
-0
No files found.
.env.development
View file @
52d06879
...
...
@@ -7,9 +7,11 @@ VUE_APP_TITLE = 捷道管理系统-测试站
# 捷道管理系统/开发环境
# VUE_APP_BASE_API = 'https://apitest.groupage.cn'
# VUE_APP_BASE_API = 'http://110.41.143.128:48080'
VUE_APP_BASE_API = 'http://127.0.0.1:48080'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
...
...
src/api/report/EcwReportPermission.js
View file @
52d06879
import
request
from
'
@/utils/request
'
//2024-05-01
//2024-05-01
合并
//报表权限 lanbm 2024-04-15 add
export
function
create
(
data
)
{
return
request
({
...
...
src/api/report/customeranalysis.js
View file @
52d06879
import
request
from
'
@/utils/request
'
//2024-05-01
//2024-05-01
合并
// 获得测试分页
export
function
getListPage
(
data
)
{
return
request
({
...
...
src/api/report/customerreport.js
View file @
52d06879
import
request
from
'
@/utils/request
'
//2024-05-01
//2024-05-01
合并
//lanbm 2024-03-31 add
//获取报表统计结果
export
function
getReportResult
(
data
)
{
...
...
src/api/report/salesanalysis.js
View file @
52d06879
import
request
from
'
@/utils/request
'
//2024-05-01
//2024-05-01
合并
export
function
getListPage
(
query
)
{
return
request
({
url
:
'
/Report/SalesAnalysis/getListPage
'
,
...
...
src/api/report/salesreport.js
View file @
52d06879
import
request
from
'
@/utils/request
'
//2024-05-01
//2024-05-01
合并
//查询运输方式体积货重量 lanbm 2024-04-01 add
export
function
SalesReportCount
(
data
)
{
return
request
({
...
...
@@ -19,6 +19,15 @@ export function FirstCustomerCount(data) {
})
}
//获取一段时间客户成交数目
export
function
CustomerTargetCount
(
query
)
{
return
request
({
url
:
'
/Report/SalesReport/CustomerTargetCount
'
,
method
:
'
get
'
,
params
:
query
})
}
//销售分析统计列表 lanbm 2024-04-01 add
export
function
SalesReportList
(
data
)
{
return
request
({
...
...
@@ -28,6 +37,8 @@ export function SalesReportList(data) {
})
}
//获取销售分析图表数据
export
function
getEChartData
(
query
)
{
return
request
({
...
...
src/api/report/vz.js
View file @
52d06879
import
request
from
'
@/utils/request
'
//2024-05-01
//2024-05-01
合并
//报表V值设置参数 lanbm 2024-04-03 add
export
function
create
(
data
)
{
return
request
({
...
...
src/views/bpm/processInstance/index.vue
View file @
52d06879
...
...
@@ -106,7 +106,8 @@
import
{
getMyProcessInstancePage
,
cancelProcessInstance
}
from
"
@/api/bpm/processInstance
"
;
export
default
{
name
:
"
ProcessInstance
"
,
//lanbm 2024-05-08 添加查询条件不清空优化
name
:
"
BpmProcessinstanceIndex
"
,
components
:
{
},
data
()
{
...
...
@@ -137,6 +138,14 @@ export default {
created
()
{
this
.
getList
();
},
watch
:
{
//lanbm 2024-05-08 添加页面再次进入刷新列表优化
$route
(
to
)
{
if
(
this
.
$route
.
path
==
"
/task/my
"
)
{
this
.
getList
();
}
},
},
methods
:
{
/** 查询列表 */
getList
()
{
...
...
src/views/bpm/task/copy.vue
View file @
52d06879
...
...
@@ -73,7 +73,8 @@
import
{
getCopyTaskPage
}
from
'
@/api/bpm/task
'
export
default
{
name
:
"
Copy
"
,
//lanbm 2024-05-08 添加查询条件不清空优化
name
:
"
BpmTaskCopy
"
,
components
:
{},
data
()
{
return
{
...
...
@@ -100,6 +101,14 @@ export default {
created
()
{
this
.
getList
();
},
watch
:
{
//lanbm 2024-05-08 添加页面再次进入刷新列表优化
$route
(
to
)
{
if
(
this
.
$route
.
path
==
"
/task/copy
"
)
{
this
.
getList
();
}
},
},
methods
:
{
/** 查询列表 */
getList
()
{
...
...
src/views/bpm/task/done.vue
View file @
52d06879
...
...
@@ -80,7 +80,8 @@ import {getDoneTaskPage} from '@/api/bpm/task'
import
{
getDate
}
from
"
@/utils/dateUtils
"
;
export
default
{
name
:
"
Done
"
,
//lanbm 2024-05-08 添加查询条件不清空优化
name
:
"
BpmTaskDone
"
,
components
:
{},
data
()
{
return
{
...
...
@@ -104,6 +105,14 @@ export default {
created
()
{
this
.
getList
();
},
watch
:
{
//lanbm 2024-05-08 添加页面再次进入刷新列表优化
$route
(
to
)
{
if
(
this
.
$route
.
path
==
"
/task/done
"
)
{
this
.
getList
();
}
},
},
methods
:
{
/** 查询列表 */
getList
()
{
...
...
src/views/bpm/task/todo.vue
View file @
52d06879
<
template
>
<div
class=
"app-container"
>
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('流程编号')"
prop=
"processInstanceId"
>
<el-input
v-model=
"queryParams.processInstanceId"
:placeholder=
"$t('流程编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.processInstanceId"
:placeholder=
"$t('流程编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('流程名称')"
prop=
"name"
>
<el-input
v-model=
"queryParams.name"
:placeholder=
"$t('任务名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.name"
:placeholder=
"$t('任务名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('流程分类')"
prop=
"category"
>
<el-select
v-model=
"queryParams.category"
:placeholder=
"$t('请选择流程分类')"
clearable
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY)"
:key=
"dict.value"
:label=
"$l(dict, 'label')"
:value=
"dict.value"
/>
<el-select
v-model=
"queryParams.category"
:placeholder=
"$t('请选择流程分类')"
clearable
>
<el-option
v-for=
"dict in this.getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY)"
:key=
"dict.value"
:label=
"$l(dict, 'label')"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('提交时间')"
>
<el-date-picker
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
<el-date-picker
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item
:label=
"$t('业务编号')"
prop=
"businessNo"
>
<el-input
v-model=
"queryParams.businessNo"
:placeholder=
"$t('请输入业务编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.businessNo"
:placeholder=
"$t('请输入业务编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
:label=
"$t('流程编号')"
align=
"center"
prop=
"processInstance.id"
width=
"220"
/>
<el-table-column
:label=
"$t('流程名称')"
align=
"center"
prop=
"processInstance.name"
width=
"220"
/>
<el-table-column
:label=
"$t('流程编号')"
align=
"center"
prop=
"processInstance.id"
width=
"220"
/>
<el-table-column
:label=
"$t('流程名称')"
align=
"center"
prop=
"processInstance.name"
width=
"220"
/>
<el-table-column
:label=
"$t('流程分类')"
align=
"center"
prop=
"category"
>
<template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BPM_MODEL_CATEGORY"
:value=
"scope.row.category"
/>
<dict-tag
:type=
"DICT_TYPE.BPM_MODEL_CATEGORY"
:value=
"scope.row.category"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('业务编号')"
align=
"center"
prop=
"businessNo"
/>
<el-table-column
:label=
"$t('业务编号')"
align=
"center"
prop=
"businessNo"
/>
<el-table-column
:label=
"$t('当前审批节点')"
align=
"center"
prop=
"name"
/>
<el-table-column
:label=
"$t('当前审批节点')"
align=
"center"
prop=
"name"
/>
<!-- <el-table-column :label="$t('状态')" align="center" prop="version" width="80">
<template slot-scope="scope">
<el-tag type="success" v-if="scope.row.suspensionState === 1">{{ $t('激活') }}</el-tag>
...
...
@@ -56,7 +111,12 @@
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/>
</template>
</el-table-column> -->
<el-table-column
:label=
"$t('提交时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<el-table-column
:label=
"$t('提交时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
...
...
@@ -66,33 +126,53 @@
<span>{{ parseTime(scope.row.endTime) }}</span>
</template>
</el-table-column> -->
<el-table-column
:label=
"$t('操作')"
align=
"center"
fixed=
"right"
class-name=
"small-padding fixed-width"
width=
"150"
>
<el-table-column
:label=
"$t('操作')"
align=
"center"
fixed=
"right"
class-name=
"small-padding fixed-width"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<!--
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleCancel(scope.row)"
v-hasPermi=
"['bpm:task:update']"
>
{{
$t
(
'
取消
'
)
}}
</el-button>
-->
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleAudit(scope.row)"
v-hasPermi=
"['bpm:task:update']"
>
{{
$t
(
'
详情
'
)
}}
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleAudit(scope.row)"
v-hasPermi=
"['bpm:task:update']"
>
{{
$t
(
"
详情
"
)
}}
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleAudit(scope.row)"
v-hasPermi=
"['bpm:task:update']"
>
{{
$t
(
'
审批
'
)
}}
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
@
click=
"handleAudit(scope.row)"
v-hasPermi=
"['bpm:task:update']"
>
{{
$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"
/>
</div>
</template>
<
script
>
import
{
getTodoTaskPage
}
from
'
@/api/bpm/task
'
import
{
getTodoTaskPage
}
from
"
@/api/bpm/task
"
;
import
{
cancelProcessInstance
}
from
"
@/api/bpm/processInstance
"
;
export
default
{
name
:
"
Todo
"
,
//lanbm 2024-05-08 添加查询条件不清空优化
name
:
"
BpmTaskTodo
"
,
components
:
{},
data
()
{
return
{
...
...
@@ -118,14 +198,22 @@ export default {
created
()
{
this
.
getList
();
},
watch
:
{
//lanbm 2024-05-08 添加页面再次进入刷新列表优化
$route
(
to
)
{
if
(
this
.
$route
.
path
==
"
/task/todo
"
)
{
this
.
getList
();
}
},
},
methods
:
{
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
'
createTime
'
);
getTodoTaskPage
(
params
).
then
(
response
=>
{
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
);
getTodoTaskPage
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
...
...
@@ -144,23 +232,28 @@ export default {
},
/** 处理审批按钮 */
handleAudit
(
row
)
{
this
.
$router
.
push
({
path
:
"
/bpm/process-instance/detail
"
,
query
:
{
id
:
row
.
processInstance
.
id
}});
this
.
$router
.
push
({
path
:
"
/bpm/process-instance/detail
"
,
query
:
{
id
:
row
.
processInstance
.
id
},
});
},
handleCancel
(
row
)
{
const
id
=
row
.
id
;
this
.
$prompt
(
this
.
$t
(
'
请输入取消原因?
'
),
this
.
$t
(
"
取消流程
"
),
{
type
:
'
warning
'
,
this
.
$prompt
(
this
.
$t
(
"
请输入取消原因?
"
),
this
.
$t
(
"
取消流程
"
),
{
type
:
"
warning
"
,
confirmButtonText
:
this
.
$t
(
"
确定
"
),
cancelButtonText
:
this
.
$t
(
"
取消
"
),
inputPattern
:
/^
[\s\S]
*.*
[^\s][\s\S]
*$/
,
// 判断非空,且非空格
inputErrorMessage
:
this
.
$t
(
"
取消原因不能为空
"
),
}).
then
(({
value
})
=>
{
})
.
then
(({
value
})
=>
{
return
cancelProcessInstance
(
id
,
value
);
}).
then
(()
=>
{
})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
取消成功
"
));
})
});
},
},
}
};
</
script
>
src/views/ecw/oceanCustomer/index.vue
View file @
52d06879
<
template
>
<div
class=
"app-container"
>
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
:label=
"$t('客户编号')"
prop=
"number"
>
<el-input
v-model=
"queryParams.number"
:placeholder=
"$t('请输入客户编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.number"
:placeholder=
"$t('请输入客户编号')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户名称')"
prop=
"name"
>
<el-input
v-model=
"queryParams.name"
:placeholder=
"$t('请输入客户名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
<el-input
v-model=
"queryParams.name"
:placeholder=
"$t('请输入客户名称')"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"$t('客户等级')"
prop=
"level"
>
<el-select
clearable
v-model=
"queryParams.level"
:placeholder=
"$t('请选择客户等级')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
<el-select
clearable
v-model=
"queryParams.level"
:placeholder=
"$t('请选择客户等级')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('联系方式')"
>
<el-input
:placeholder=
"$t('请输入联系方式')"
v-model=
"queryParams.defaultContactPhone"
></el-input>
<el-input
:placeholder=
"$t('请输入联系方式')"
v-model=
"queryParams.defaultContactPhone"
></el-input>
</el-form-item>
<el-form-item
:label=
"$t('客户类别')"
prop=
"level"
>
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_TYPE"
v-model=
"queryParams.type"
></dict-selector>
<dict-selector
:type=
"DICT_TYPE.CUSTOMER_TYPE"
v-model=
"queryParams.type"
></dict-selector>
</el-form-item>
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<el-select
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
<el-select
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in customerServiceList"
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('客户来源')"
prop=
"source"
>
<el-select
clearable
v-model=
"queryParams.source"
:placeholder=
"$t('请选择客户来源')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
<el-select
clearable
v-model=
"queryParams.source"
:placeholder=
"$t('请选择客户来源')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('国家')"
prop=
"source"
>
<el-select
clearable
v-model=
"queryParams.country"
:placeholder=
"$t('请选择国家')"
>
<el-option
v-for=
"dict in countryList"
:key=
"dict.id"
:label=
" isChinese ? dict.nameZh : dict.nameEn"
:value=
"parseInt(dict.id)"
/>
<el-select
clearable
v-model=
"queryParams.country"
:placeholder=
"$t('请选择国家')"
>
<el-option
v-for=
"dict in countryList"
:key=
"dict.id"
:label=
"isChinese ? dict.nameZh : dict.nameEn"
:value=
"parseInt(dict.id)"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('客户状态')"
prop=
"status"
>
<el-select
clearable
v-model=
"queryParams.status"
:placeholder=
"$t('请选择客户状态')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
<el-select
clearable
v-model=
"queryParams.status"
:placeholder=
"$t('请选择客户状态')"
clearable
size=
"small"
>
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
clearable
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
<el-date-picker
clearable
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
</el-form-item>
<el-form-item
:label=
"$t('信用等级')"
prop=
"department"
>
<el-select
clearable
v-model=
"queryParams.creditLevel"
>
<el-option
v-for=
"(item,index) in creditList"
:label=
"isChinese ? item.nameZh : item.nameEn"
:key=
"index"
:value=
"item.id"
></el-option>
<el-select
clearable
v-model=
"queryParams.creditLevel"
>
<el-option
v-for=
"(item, index) in creditList"
:label=
"isChinese ? item.nameZh : item.nameEn"
:key=
"index"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
></dict-selector>
<dict-selector
clearable
:type=
"DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model=
"queryParams.marketType"
formatter=
"number"
></dict-selector>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form>
<!-- 操作工具栏 -->
<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:sea-create']"
>
{{
$t
(
'
新增
'
)
}}
</el-button>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
v-hasPermi=
"['ecw:customer:sea-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:sea-export']"
>
{{
$t
(
'
导出
'
)
}}
</el-button>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
v-hasPermi=
"['ecw:customer:sea-export']"
>
{{
$t
(
"
导出
"
)
}}
</el-button
>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
prop=
"number"
>
<template
v-slot=
"
{row}">
{{
row
.
number
}}
<el-table
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
prop=
"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=
"vipLevelNameZh"
>
<el-table-column
:label=
"$t('客户等级')"
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=
"$t('信用等级')"
:prop=
"isChinese ? 'creditLevelNameZh' : 'creditLevelNameEn'"
></el-table-column>
<el-table-column
:label=
"$t('信用等级')"
:prop=
"isChinese ? 'creditLevelNameZh' : 'creditLevelNameEn'"
></el-table-column>
<el-table-column
:label=
"$t('客户状态')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_STATUS"
:value=
"scope.row.status"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('主联系人')"
prop=
"defaultContactName"
></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"
>
<
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('创建时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('入公海时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<el-table-column
:label=
"$t('入公海时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
enterOpenSeaTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"customerServiceName"
>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"customerServiceName"
>
</el-table-column>
<el-table-column
:label=
"$t('国家')"
align=
"center"
prop=
"country"
:formatter=
"countryFormatter"
></el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
class-name=
"small-padding fixed-width"
>
<el-table-column
:label=
"$t('国家')"
align=
"center"
prop=
"country"
:formatter=
"countryFormatter"
></el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"'/customer/query/' + scope.row.id"
>
<el-button
v-has-permi=
"['ecw:customer:sea-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button>
<el-button
v-has-permi=
"['ecw:customer:sea-view']"
size=
"mini"
style=
"margin-right: 10px"
type=
"text"
>
查看
</el-button
>
</router-link>
<!--
<el-button
size=
"mini"
type=
"text"
@
click=
"distribution(scope.row)"
>
{{
$t
(
'
移交
'
)
}}
</el-button>
-->
<el-button
v-has-permi=
"['ecw:customer:sea-gain']"
size=
"mini"
type=
"text"
@
click=
"fishingFn(scope.row)"
>
{{
$t
(
'
捞取
'
)
}}
</el-button>
<!--
<el-button
size=
"mini"
type=
"text"
@
click=
"distribution(scope.row)"
>
{{
$t
(
'
移交
'
)
}}
</el-button>
-->
<el-button
v-has-permi=
"['ecw:customer:sea-gain']"
size=
"mini"
type=
"text"
@
click=
"fishingFn(scope.row)"
>
{{
$t
(
"
捞取
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -141,24 +302,45 @@
center
:title=
"$t('客服')"
:visible.sync=
"transferShow"
width=
"30%"
>
<div
style=
"width: 100%;min-height: 200px;text-align: center"
>
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-option
v-for=
"(item, index) in customerServiceList"
:key=
"index"
:label=
"item.nickname"
:value=
"item.id"
></el-option>
</el-select>
<!-- <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-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>-->
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"transferShow = false"
>
{{$t('取 消')}}
</el-button>
<el-button
type=
"primary"
v-if=
"isBatch"
@
click=
"transferFn(multipleSelection.map(item => item.id))"
>
{{$t('确 定')}}
</el-button>
<el-button
type=
"primary"
v-else
@
click=
"transferFn([transferData.id])"
>
{{$t('确 定')}}
</el-button>
<el-button
@
click=
"transferShow = false"
>
{{ $t("取 消") }}
</el-button>
<el-button
type=
"primary"
v-if=
"isBatch"
@
click=
"transferFn(multipleSelection.map((item) => item.id))"
>
{{ $t("确 定") }}
</el-button
>
<el-button
type=
"primary"
v-else
@
click=
"transferFn([transferData.id])"
>
{{ $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"
/>
</div>
</template>
...
...
@@ -170,23 +352,24 @@ import {
handOverCustomer
,
getPublicList
,
setFishing
,
publicExportExcel
publicExportExcel
,
}
from
"
@/api/ecw/customer
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
'
@/utils/dict
'
;
import
upload
from
'
@/components/ImageUpload
'
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
upload
from
"
@/components/ImageUpload
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
export
default
{
name
:
"
EcwOceancustomerIndex
"
,
activated
()
{
this
.
getList
()
this
.
getList
()
;
},
components
:
{
Contacts
,
Template
,
upload
Contacts
,
Template
,
upload
,
},
data
()
{
return
{
...
...
@@ -207,7 +390,7 @@ export default {
// 是否显示弹出层
open
:
false
,
dateRangeCreateTime
:
[],
customerServiceList
:[],
customerServiceList
:
[],
// 查询参数
queryParams
:
{
pageNo
:
1
,
...
...
@@ -219,68 +402,112 @@ export default {
customerService
:
null
,
status
:
null
,
department
:
null
,
marketType
:
null
,
marketType
:
null
,
},
// 表单参数
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
,
multipleSelection
:[],
isBatch
:
false
,
countryList
:[],
creditList
:
[]
service
:
undefined
,
//客服
transferData
:
undefined
,
//移交数据
transferShow
:
false
,
multipleSelection
:
[],
isBatch
:
false
,
countryList
:
[],
creditList
:
[],
};
},
created
()
{
this
.
getList
();
listServiceUser
().
then
(
r
=>
{
console
.
log
(
r
,
'
客服
'
);
listServiceUser
().
then
(
(
r
)
=>
{
console
.
log
(
r
,
"
客服
"
);
this
.
customerServiceList
=
r
.
data
;
})
getCountryListAll
().
then
(
r
=>
{
this
.
countryList
=
r
.
data
})
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
this
.
creditList
=
r
.
data
.
list
})
})
;
getCountryListAll
().
then
(
(
r
)
=>
{
this
.
countryList
=
r
.
data
;
})
;
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
((
r
)
=>
{
this
.
creditList
=
r
.
data
.
list
;
})
;
// getNodeList().then(r => {
// this.nodeList = r.data
// })
},
computed
:{
isChinese
(){
return
this
.
$i18n
.
locale
===
'
zh_CN
'
computed
:
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
methods
:
{
countryFormatter
(
row
,
column
,
cellValue
)
{
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
;
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
;
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
'
createTime
'
);
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
);
// 执行查询
getPublicList
(
params
).
then
(
response
=>
{
getPublicList
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
...
...
@@ -351,25 +578,25 @@ export default {
customerService
:
null
,
status
:
null
,
department
:
null
,
creditLevel
:
null
,
country
:
null
,
}
creditLevel
:
null
,
country
:
null
,
}
;
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/add-edit/
'
+
row
.
id
)
this
.
$router
.
push
(
"
/customer/add-edit/
"
+
row
.
id
);
// this.reset();
// const id = row.id;
// getCustomer(id).then(response => {
...
...
@@ -380,22 +607,22 @@ 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
(
'
修改成功
'
));
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
(
'
新增成功
'
));
createCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
新增成功
"
));
this
.
open
=
false
;
this
.
getList
();
});
...
...
@@ -404,76 +631,91 @@ export default {
/** 移交按钮操作 */
handleDelete
(
row
)
{
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
)).
then
(
function
()
{
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
)
)
.
then
(
function
()
{
return
deleteCustomer
(
id
);
}).
then
(()
=>
{
})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
));
}).
catch
(()
=>
{});
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
));
})
.
catch
(()
=>
{});
},
/** 导出按钮操作 */
handleExport
()
{
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出公海池客户数据项?
'
)).
then
(()
=>
{
publicExportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
已加入导出队列,请稍后在下载日志中下载
'
))
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认导出公海池客户数据项?
"
))
.
then
(()
=>
{
publicExportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
已加入导出队列,请稍后在下载日志中下载
"
)
);
});
})
})
.
catch
(()
=>
{});
.
catch
(()
=>
{});
},
//分配客服
distribution
(
row
){
this
.
service
=
row
.
customerService
distribution
(
row
)
{
this
.
service
=
row
.
customerService
;
this
.
transferData
=
row
;
this
.
transferShow
=
true
;
this
.
transferShow
=
true
;
this
.
isBatch
=
false
;
},
transferFn
(
val
){
if
(
!
this
.
service
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
'
请选择客户经理!
'
));
transferFn
(
val
)
{
if
(
!
this
.
service
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
"
请选择客户经理!
"
));
}
handOverCustomer
({
customerServiceId
:
this
.
service
,
customerIdList
:
val
}).
then
(
r
=>
{
if
(
r
.
code
===
0
)
{
customerServiceId
:
this
.
service
,
customerIdList
:
val
,
}).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
this
.
transferShow
=
false
;
this
.
service
=
''
;
this
.
service
=
""
;
this
.
getList
();
this
.
multipleSelection
=
[];
this
.
$message
.
success
(
this
.
$t
(
'
移交成功!
'
));
this
.
$message
.
success
(
this
.
$t
(
"
移交成功!
"
));
}
})
})
;
},
fishingFn
(
row
){
this
.
$confirm
(
`
${
this
.
$t
(
'
是否要捞取
'
)}${
row
.
name
}${
this
.
$t
(
'
的客户
'
)}
`
,
this
.
$t
(
'
提示
'
),
{
confirmButtonText
:
this
.
$t
(
'
确定
'
),
cancelButtonText
:
this
.
$t
(
'
取消
'
),
type
:
'
warning
'
}).
then
(()
=>
{
setFishing
({
id
:
row
.
id
}).
then
(
r
=>
{
if
(
r
.
code
===
0
){
this
.
getList
()
fishingFn
(
row
)
{
this
.
$confirm
(
`
${
this
.
$t
(
"
是否要捞取
"
)}${
row
.
name
}${
this
.
$t
(
"
的客户
"
)}
`
,
this
.
$t
(
"
提示
"
),
{
confirmButtonText
:
this
.
$t
(
"
确定
"
),
cancelButtonText
:
this
.
$t
(
"
取消
"
),
type
:
"
warning
"
,
}
)
.
then
(()
=>
{
setFishing
({
id
:
row
.
id
}).
then
((
r
)
=>
{
if
(
r
.
code
===
0
)
{
this
.
getList
();
this
.
$message
({
type
:
'
success
'
,
message
:
this
.
$t
(
'
捞取成功!
'
)
type
:
"
success
"
,
message
:
this
.
$t
(
"
捞取成功!
"
),
});
}
});
})
})
.
catch
(()
=>
{
.
catch
(()
=>
{
this
.
$message
({
type
:
'
info
'
,
message
:
this
.
$t
(
'
已取消捞取
'
)
type
:
"
info
"
,
message
:
this
.
$t
(
"
已取消捞取
"
),
});
});
},
batchHandover
(){
batchHandover
()
{
this
.
transferShow
=
true
;
this
.
isBatch
=
true
this
.
isBatch
=
true
;
},
handleSelectionChange
(
val
){
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
}
}
}
,
}
,
};
</
script
>
src/views/ecw/order/index.vue
View file @
52d06879
...
...
@@ -237,8 +237,9 @@
effect="dark"
:content="row.orderType===2 ? (row.wvolume||0)+'m³' : (row.vweight || 0) + 'kg'"
placement="bottom">
<div
v-if=
"row.sumNum > 0"
>
{{
row
.
sumVolume
}}
m³ /
{{
row
.
sumWeight
}}
Kg
</div>
<div
v-else
>
{{
row
.
costVO
.
totalVolume
}}
m³ /
{{
row
.
costVO
.
totalWeight
}}
Kg
</div>
<!--
<div
v-if=
"row.sumNum > 0"
>
{{
row
.
sumVolume
}}
m³ /
{{
row
.
sumWeight
}}
Kg
</div>
<div
v-else
>
{{
row
.
costVO
.
totalVolume
}}
m³ /
{{
row
.
costVO
.
totalWeight
}}
Kg
</div>
-->
<div
>
{{
row
.
sumVolume
}}
m³ /
{{
row
.
sumWeight
}}
Kg
</div>
</component>
<!--
<el-tooltip
v-if=
"scope.row.orderExceptionType=='order_heavy_cargo_exception'"
class=
"item"
effect=
"dark"
:content=
"(scope.row.wvolume||0)+'m³'"
placement=
"bottom"
>
<span
style=
"color:#ff4949"
v-if=
"scope.row.orderStatus >= 5 "
>
{{
scope
.
row
.
volume
+
"
m³/
"
+
scope
.
row
.
weight
+
"
kg
"
}}
</span>
...
...
src/views/report/EcwReportPermission/index.vue
View file @
52d06879
...
...
@@ -185,7 +185,7 @@ import {
exportExcel
,
}
from
"
@/api/report/EcwReportPermission
"
;
//2024-05-01
//2024-05-01
合并
export
default
{
name
:
"
EcwReportPermission
"
,
components
:
{
...
...
src/views/report/customer_analysis/index.vue
View file @
52d06879
...
...
@@ -328,6 +328,7 @@
<el-table-column
label=
"控货总V值"
align=
"center"
prop=
"khSumV"
/>
<el-table-column
label=
"控货占比"
align=
"center"
prop=
"khSumZb"
/>
<!--2024-05-06和张工确认这几个参数无取数逻辑,暂时隐藏-->
<!--
<el-table-column
label="是否首次成交"
v-show="false"
...
...
@@ -343,7 +344,7 @@
<template slot-scope="scope">
<span>{{ parseTime(scope.row.firstDate) }}</span>
</template>
</el-table-column>
</el-table-column>
-->
<!--2024-05-06和张工确认这几个参数无取数逻辑,暂时隐藏-->
<el-table-column
label=
"提货率"
align=
"center"
prop=
"thL"
/>
<el-table-column
label=
"客户业绩类型"
align=
"center"
prop=
"cusYjType"
/>
...
...
@@ -443,7 +444,7 @@ function getLastDay(sDate) {
return
lastDay
;
}
//2024-05-01
//2024-05-01
合并
export
default
{
name
:
"
ReportCustomer_analysisIndex
"
,
components
:
{
...
...
@@ -538,7 +539,9 @@ export default {
watch
:
{
$route
(
to
)
{
//lanbm 2024-05-06 解决重新进入参数不刷新的问题
if
(
this
.
$route
.
name
==
"
客户分析
"
)
{
//this.$route.name == "客户分析" 用name做逻辑判断,有时候菜单名称会变化
//"/report/customer_analysis" lanbm 2024-05-07 调整为根据path做逻辑判断
if
(
this
.
$route
.
path
==
"
/report/customer_analysis
"
)
{
this
.
doLoadData
();
}
},
...
...
@@ -765,6 +768,24 @@ export default {
return
strDate
;
},
test
()
{
//当前路径
let
sP
=
this
.
$route
.
path
;
alert
(
sP
);
//当前参数
let
sPar
=
this
.
$route
.
params
;
alert
(
sPar
);
//路由名称
let
sRoute
=
this
.
$route
.
name
;
alert
(
sRoute
);
//路由查询参数
let
sQ
=
this
.
$route
.
query
;
alert
(
sQ
.
toString
());
//路由匹配项
let
sM
=
this
.
$route
.
matched
;
alert
(
sM
.
toString
());
return
;
this
.
DeptEx
.
id
=
this
.
objEcwReportPermission
.
deptId
;
listServiceUser
(
this
.
DeptEx
).
then
((
response
)
=>
{
let
json1
=
JSON
.
stringify
(
response
.
data
);
...
...
@@ -772,8 +793,6 @@ export default {
return
;
});
return
;
let
json1
=
JSON
.
stringify
(
this
.
deptOptions
);
alert
(
json1
);
return
;
...
...
src/views/report/customerreport/index.vue
View file @
52d06879
...
...
@@ -132,7 +132,7 @@ function getLastYear() {
return
year
.
toString
();
}
//2024-05-01
//2024-05-01
合并
export
default
{
name
:
"
ReportCustomerreportIndex
"
,
components
:
{
...
...
src/views/report/sales_analysis/index.vue
View file @
52d06879
...
...
@@ -366,7 +366,6 @@
</el-card>
</el-col>
</el-row>
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
"排名"
align=
"center"
prop=
"px"
/>
...
...
@@ -488,7 +487,7 @@ import { listSimpleDepts } from "@/api/system/dept";
//入仓记录页面
import
WarehouseDetail
from
"
@/views/ecw/order/components/WarehouseDetail
"
;
//2024-05-01
//2024-05-01
合并
export
default
{
name
:
"
ReportSales_analysisIndex
"
,
components
:
{
...
...
src/views/report/salesreport/index.vue
View file @
52d06879
...
...
@@ -8,10 +8,11 @@
v-show=
"showSearch"
label-width=
"100px"
>
<el-form-item
label=
"选择日期"
prop=
"
testName
"
>
<el-form-item
label=
"选择日期"
prop=
"
DateQuery
"
>
<el-date-picker
v-model=
"queryParams.sDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输起始月"
...
...
@@ -19,6 +20,7 @@
<el-date-picker
v-model=
"queryParams.eDate"
type=
"month"
style=
"width: 150px"
value-format=
"yyyy-MM"
clearable
placeholder=
"请输截止月"
...
...
@@ -28,12 +30,13 @@
<el-date-picker
v-model=
"queryParams.duibiYear"
type=
"year"
style=
"width: 150px"
value-format=
"yyyy"
placeholder=
"请选择同比年份"
/>
</el-form-item>
<el-form-item
label=
"部门"
prop=
"deptid"
>
<el-form-item
label=
"部门"
prop=
"deptid"
v-show=
"showDept"
>
<treeselect
v-model=
"queryParams.deptid"
:options=
"deptOptions"
...
...
@@ -42,7 +45,7 @@
:normalizer=
"normalizer"
/>
</el-form-item>
<el-form-item
label=
"客户经理"
prop=
"salesmanid"
>
<el-form-item
label=
"客户经理"
prop=
"salesmanid"
v-show=
"showCustomsManage"
>
<user-selector
manage
v-model=
"queryParams.salesmanid"
...
...
@@ -58,39 +61,23 @@
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
:gutter=
"
40"
class=
"panel-group
"
>
<el-row
:gutter=
"
10"
class=
"panel-group"
style=
"margin: 5px
"
>
<el-col
:xs=
"12"
:sm=
"12"
:lg=
"6"
class=
"card-panel-col"
>
<div
class=
"card-panel"
@
click=
"
checkPermi(['member:user'])
? $router.push('/member/member-user')
: $alert($t('暂无权限'))
"
>
<div
class=
"card-panel-icon-wrapper icon-people"
>
<svg-icon
icon-class=
"peoples"
class-name=
"card-panel-icon"
/>
<div
class=
"card-panel"
@
click=
"handleGoTo"
>
<div
class=
"card-panel-icon-wrapper icon-shopping"
>
<svg-icon
icon-class=
"shopping"
class-name=
"card-panel-icon"
/>
</div>
<div
class=
"card-panel-description"
>
<div
class=
"card-panel-text"
>
{{
$t
(
"
业绩总览
"
)
}}
{{
$t
(
"
业绩总览
Total
"
)
}}
</div>
<count-to
:start-val=
"0"
:end-val=
"100"
:duration=
"2600"
class=
"card-panel-num"
/>
<div
class=
"card-panel-num"
>
{{
allsumvolume
}}
</div>
<div
style=
"text-align: right"
>
同比:13%
</div>
</div>
</div>
</el-col>
<el-col
:xs=
"12"
:sm=
"12"
:lg=
"6"
class=
"card-panel-col"
>
<div
class=
"card-panel"
@
click=
"
$router.push('/system/internalMessage/my-internal-message?status=0')
"
>
<div
class=
"card-panel"
@
click=
"handleGoTo"
>
<div
class=
"card-panel-icon-wrapper icon-message"
>
<svg-icon
icon-class=
"message"
class-name=
"card-panel-icon"
/>
</div>
...
...
@@ -98,17 +85,13 @@
<div
class=
"card-panel-text"
>
{{
$t
(
"
海运拼柜
"
)
}}
</div>
<count-to
:start-val=
"0"
:end-val=
"200"
:duration=
"3000"
class=
"card-panel-num"
/>
<div
class=
"card-panel-num"
>
{{
sumvolume1
}}
</div>
<div
style=
"text-align: right"
>
同比:13%
</div>
</div>
</div>
</el-col>
<el-col
:xs=
"12"
:sm=
"12"
:lg=
"6"
class=
"card-panel-col"
>
<div
class=
"card-panel"
@
click=
"
$router.push('/task/todo')
"
>
<div
class=
"card-panel"
@
click=
"
handleGoTo
"
>
<div
class=
"card-panel-icon-wrapper icon-money"
>
<svg-icon
icon-class=
"date"
class-name=
"card-panel-icon"
/>
</div>
...
...
@@ -116,40 +99,29 @@
<div
class=
"card-panel-text"
>
{{
$t
(
"
专线空运
"
)
}}
</div>
<count-to
:start-val=
"0"
:end-val=
"500"
:duration=
"3200"
class=
"card-panel-num"
/>
<div
class=
"card-panel-num"
>
{{
sumweight3
}}
</div>
<div
style=
"text-align: right"
>
同比:13%
</div>
</div>
</div>
</el-col>
</el-row>
<el-row
:gutter=
"
40"
class=
"panel-group
"
>
<el-row
:gutter=
"
10"
class=
"panel-group"
style=
"margin: 5px
"
>
<el-col
:xs=
"12"
:sm=
"12"
:lg=
"6"
class=
"card-panel-col"
>
<div
class=
"card-panel"
@
click=
"
$router.push('/order/mine')
"
>
<div
class=
"card-panel-icon-wrapper icon-
shopping
"
>
<svg-icon
icon-class=
"
shopping
"
class-name=
"card-panel-icon"
/>
<div
class=
"card-panel"
@
click=
"
handleGoTo
"
>
<div
class=
"card-panel-icon-wrapper icon-
people
"
>
<svg-icon
icon-class=
"
peoples
"
class-name=
"card-panel-icon"
/>
</div>
<div
class=
"card-panel-description"
>
<div
class=
"card-panel-text"
>
{{
$t
(
"
成交总览
"
)
}}
{{
$t
(
"
成交总览
Total
"
)
}}
</div>
<count-to
:start-val=
"0"
:end-val=
"700"
:duration=
"3600"
class=
"card-panel-num"
/>
<div
class=
"card-panel-num"
>
{{
sumCustomerCount
}}
</div>
<div
style=
"text-align: right"
>
同比:13%
</div>
</div>
</div>
</el-col>
<el-col
:xs=
"12"
:sm=
"12"
:lg=
"6"
class=
"card-panel-col"
>
<div
class=
"card-panel"
@
click=
"$router.push('/member/member/under-review')"
>
<div
class=
"card-panel"
@
click=
"handleGoTo"
>
<div
class=
"card-panel-icon-wrapper icon-shopping"
>
<svg-icon
icon-class=
"time-range"
class-name=
"card-panel-icon"
/>
</div>
...
...
@@ -157,12 +129,8 @@
<div
class=
"card-panel-text"
>
{{
$t
(
"
首次成交
"
)
}}
</div>
<count-to
:start-val=
"0"
:end-val=
"100"
:duration=
"3600"
class=
"card-panel-num"
/>
<div
class=
"card-panel-num"
>
{{
fisCustomerCount
}}
</div>
<div
style=
"text-align: right"
>
同比:13%
</div>
</div>
</div>
</el-col>
...
...
@@ -182,18 +150,42 @@ import Treeselect from "@riophae/vue-treeselect";
import
"
@/assets/styles/vue-treeselect.css
"
;
import
{
listSimpleDepts
}
from
"
@/api/system/dept
"
;
//报表权限接口
import
{
getCurUserPermission
}
from
"
@/api/report/EcwReportPermission
"
;
import
{
getCurUserPermission
,
getDeptChild
}
from
"
@/api/report/EcwReportPermission
"
;
import
{
SalesReportCount
,
FirstCustomerCount
,
CustomerTargetCount
,
getEChartData
,
}
from
"
@/api/report/salesreport
"
;
import
*
as
echarts
from
"
echarts
"
;
require
(
"
echarts/theme/macarons
"
);
import
resize
from
"
../../dashboard/mixins/resize
"
;
import
SalesPanelGroup
from
"
../../dashboard/SalesPanelGroup
"
;
import
{
MessageBox
}
from
"
element-ui
"
;
const
CurDate
=
new
Date
();
function
currentTime
()
{
var
date
=
new
Date
();
var
year
=
date
.
getFullYear
();
//月份从0~11,所以加一
let
month
=
date
.
getMonth
()
+
1
;
//如果格式是MM则需要此步骤,如果是M格式则此处注释掉
if
(
month
>=
1
&&
month
<=
9
)
{
month
=
"
0
"
+
month
;
}
let
strDate
=
year
+
"
-
"
+
month
;
return
strDate
;
}
function
getLastYear
()
{
//获取上一年份
var
date
=
new
Date
();
date
.
setFullYear
(
date
.
getFullYear
()
-
1
);
let
year
=
date
.
getFullYear
();
return
year
.
toString
();
}
//2024-05-01
//2024-05-01
合并
export
default
{
name
:
"
ReportSalesreportIndex
"
,
components
:
{
...
...
@@ -228,21 +220,22 @@ export default {
exportLoading
:
false
,
// 显示搜索条件
showSearch
:
true
,
showCustomsManage
:
true
,
showDept
:
true
,
showCustomsManage
:
true
,
//是否显示客户经理查询条件
showDept
:
true
,
//是否显示部门查询条件
chart
:
null
,
allsumvolume
:
undefined
,
sumvolume1
:
undefined
,
sumweight3
:
undefined
,
allsumvolume
:
undefined
,
//总V值
sumvolume1
:
undefined
,
//海运拼柜
sumweight3
:
undefined
,
//专线空运
sumCustomerCount
:
undefined
,
//成交客户总数
fisCustomerCount
:
undefined
,
//首次成交客户户数
dateRangeCreateTime
:
[],
SalesReportRespShow
:[],
queryParams
:
{
salesmanid
:
undefined
,
//销售经理
deptid
:
undefined
,
//部门
sDate
:
undefined
,
//开始日期
eDate
:
undefined
,
//结束日期
duibiYear
:
undefined
,
//对比年份
sDate
:
CurDate
.
getFullYear
()
+
"
-01
"
,
//开始日期
eDate
:
currentTime
()
,
//结束日期
duibiYear
:
getLastYear
()
,
//对比年份
},
deptOptions
:
[],
deptData
:
[],
...
...
@@ -253,30 +246,7 @@ export default {
watch
:
{},
mounted
()
{},
created
()
{
//获取当前用户报表权限
getCurUserPermission
().
then
((
response
)
=>
{
this
.
objEcwReportPermission
=
response
.
data
;
if
(
this
.
objEcwReportPermission
.
permissionFw
==
1
)
{
//本人权限
this
.
showCustomsManage
=
false
;
this
.
showDept
=
false
;
this
.
queryParams
.
salesmanid
=
this
.
objEcwReportPermission
.
userId
;
}
else
if
(
this
.
objEcwReportPermission
.
permissionFw
==
2
)
{
this
.
showCustomsManage
=
true
;
this
.
showDept
=
true
;
this
.
queryParams
.
deptid
=
parseInt
(
this
.
objEcwReportPermission
.
deptId
);
}
else
if
(
this
.
objEcwReportPermission
.
permissionFw
==
3
)
{
//全公司权限
this
.
showCustomsManage
=
true
;
this
.
showDept
=
true
;
}
this
.
getTreeselect
();
//this.getSalesReportCount();
// this.getFirstCustomerCount();
//获取权限后再初始化统计图表
this
.
initChart
();
});
this
.
handleQuery
();
},
beforeDestroy
()
{
if
(
!
this
.
chart
)
{
...
...
@@ -291,6 +261,22 @@ export default {
//this.deptData.add
});
},
getCustomerTargetCount
()
{
CustomerTargetCount
(
this
.
queryParams
).
then
((
response
)
=>
{
this
.
sumCustomerCount
=
response
.
data
;
});
},
getSalesReportCount
()
{
//获取运输方式统计数 lanbm 2024-04-01 add
SalesReportCount
(
this
.
queryParams
).
then
((
response
)
=>
{
//业绩总览
this
.
allsumvolume
=
response
.
data
.
allsumvolume
;
//海运拼柜
this
.
sumvolume1
=
response
.
data
.
sumvolume1
;
//专线空运
this
.
sumweight3
=
response
.
data
.
sumweight3
;
});
},
getSalesReportCount
()
{
//获取运输方式统计数 lanbm 2024-04-01 add
SalesReportCount
(
this
.
queryParams
).
then
((
response
)
=>
{
...
...
@@ -337,7 +323,44 @@ export default {
});
});
},
handleQuery
()
{},
isChinese
()
{
//基础函数,判断系统显示语言是中文还是英文
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
handleQuery
()
{
if
(
this
.
isRight
()
==
false
)
return
;
this
.
loading
=
true
;
//获取当前用户报表权限
getCurUserPermission
().
then
((
response
)
=>
{
this
.
objEcwReportPermission
=
response
.
data
;
if
(
this
.
objEcwReportPermission
.
permissionFw
==
1
)
{
//本人权限
this
.
showCustomsManage
=
false
;
this
.
showDept
=
false
;
this
.
queryParams
.
salesmanid
=
this
.
objEcwReportPermission
.
userId
;
}
else
if
(
this
.
objEcwReportPermission
.
permissionFw
==
2
)
{
//本部门权限
this
.
showCustomsManage
=
true
;
this
.
showDept
=
true
;
this
.
queryParams
.
deptid
=
parseInt
(
this
.
objEcwReportPermission
.
deptId
);
}
else
if
(
this
.
objEcwReportPermission
.
permissionFw
==
3
)
{
//全公司权限
this
.
showCustomsManage
=
true
;
this
.
showDept
=
true
;
}
this
.
getTreeselect
();
this
.
getSalesReportCount
();
this
.
getFirstCustomerCount
();
//获取成交客户数,出重结果
this
.
getCustomerTargetCount
();
//获取权限后再初始化统计图表
this
.
initChart
();
this
.
loading
=
false
;
});
},
getList
()
{},
resetQuery
()
{
this
.
queryParams
=
{
...
...
@@ -348,6 +371,43 @@ export default {
duibiYear
:
undefined
,
//对比年份
};
},
handleGoTo
()
{
if
(
this
.
isRight
()
==
false
)
return
;
let
p
=
{};
Object
.
assign
(
p
,
this
.
queryParams
);
this
.
$router
.
push
({
path
:
"
/report/sales_analysis
"
,
query
:
p
,
});
},
isRight
()
{
//校验查询参数 lanbm 2024-05-09 add
if
(
this
.
queryParams
.
sDate
==
undefined
)
{
MessageBox
(
"
请输入起始月份。
"
);
return
false
;
}
if
(
this
.
queryParams
.
eDate
==
undefined
)
{
MessageBox
(
"
请输入截止月份。
"
);
return
false
;
}
if
(
this
.
queryParams
.
duibiYear
==
undefined
)
{
MessageBox
(
"
请输入对比年份。
"
);
return
false
;
}
else
{
let
y
=
parseInt
(
this
.
queryParams
.
duibiYear
);
if
(
y
<
2023
)
{
MessageBox
(
"
对比年份只能选2023年和2023年之后的年份。
"
);
return
false
;
}
var
date
=
new
Date
();
var
year
=
date
.
getFullYear
();
if
(
y
>
year
)
{
MessageBox
(
"
对比年份只能选当前年份之前的年份。
"
);
return
false
;
}
}
return
true
;
},
handleAdd
()
{},
handleExport
()
{},
/** 查询部门下拉树结构 + 岗位下拉 */
...
...
src/views/report/vz/index.vue
View file @
52d06879
...
...
@@ -63,7 +63,8 @@
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
v-show=
"false"
icon=
"el-icon-plus"
v-show=
"false"
size=
"mini"
@
click=
"TestFun"
>
...
...
@@ -166,7 +167,7 @@ import Treeselect from "@riophae/vue-treeselect";
import
"
@/assets/styles/vue-treeselect.css
"
;
import
{
MessageBox
}
from
"
element-ui
"
;
//2024-05-01
//2024-05-01
合并
export
default
{
name
:
"
vz
"
,
components
:
{
...
...
vue.config.js
View file @
52d06879
...
...
@@ -47,6 +47,7 @@ module.exports = {
disableHostCheck
:
true
},
css
:
{
sourceMap
:
true
,
// 开启 CSS source maps
loaderOptions
:
{
sass
:
{
sassOptions
:
{
outputStyle
:
"
expanded
"
}
...
...
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