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
f4efef4b
Commit
f4efef4b
authored
May 07, 2024
by
lanbaoming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2024-05-07待办保活
parent
d3eb5c5f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
447 additions
and
185 deletions
+447
-185
todo.vue
src/views/bpm/task/todo.vue
+1
-1
index.vue
src/views/ecw/oceanCustomer/index.vue
+421
-179
index.vue
src/views/report/customer_analysis/index.vue
+23
-4
index.vue
src/views/report/vz/index.vue
+2
-1
No files found.
src/views/bpm/task/todo.vue
View file @
f4efef4b
...
@@ -92,7 +92,7 @@
...
@@ -92,7 +92,7 @@
import
{
getTodoTaskPage
}
from
'
@/api/bpm/task
'
import
{
getTodoTaskPage
}
from
'
@/api/bpm/task
'
import
{
cancelProcessInstance
}
from
"
@/api/bpm/processInstance
"
;
import
{
cancelProcessInstance
}
from
"
@/api/bpm/processInstance
"
;
export
default
{
export
default
{
name
:
"
Todo
"
,
name
:
"
BpmTask
Todo
"
,
components
:
{},
components
:
{},
data
()
{
data
()
{
return
{
return
{
...
...
src/views/ecw/oceanCustomer/index.vue
View file @
f4efef4b
<
template
>
<
template
>
<div
class=
"app-container"
>
<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-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>
<el-form-item
:label=
"$t('客户名称')"
prop=
"name"
>
<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>
<el-form-item
:label=
"$t('客户等级')"
prop=
"level"
>
<el-form-item
:label=
"$t('客户等级')"
prop=
"level"
>
<el-select
clearable
v-model=
"queryParams.level"
:placeholder=
"$t('请选择客户等级')"
clearable
size=
"small"
>
<el-select
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
clearable
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
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-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('联系方式')"
>
<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>
<el-form-item
:label=
"$t('客户类别')"
prop=
"level"
>
<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>
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<el-form-item
:label=
"$t('客户经理')"
prop=
"customerService"
>
<el-select
clearable
v-model=
"queryParams.customerService"
:placeholder=
"$t('请选择客户经理')"
clearable
size=
"small"
>
<el-select
<el-option
v-for=
"dict in customerServiceList"
clearable
:key=
"dict.id"
:label=
"dict.nickname"
:value=
"dict.id"
/>
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-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('客户来源')"
prop=
"source"
>
<el-form-item
:label=
"$t('客户来源')"
prop=
"source"
>
<el-select
clearable
v-model=
"queryParams.source"
:placeholder=
"$t('请选择客户来源')"
clearable
size=
"small"
>
<el-select
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
clearable
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
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-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('国家')"
prop=
"source"
>
<el-form-item
:label=
"$t('国家')"
prop=
"source"
>
<el-select
clearable
v-model=
"queryParams.country"
:placeholder=
"$t('请选择国家')"
>
<el-select
<el-option
v-for=
"dict in countryList"
clearable
:key=
"dict.id"
:label=
" isChinese ? dict.nameZh : dict.nameEn"
:value=
"parseInt(dict.id)"
/>
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-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('客户状态')"
prop=
"status"
>
<el-form-item
:label=
"$t('客户状态')"
prop=
"status"
>
<el-select
clearable
v-model=
"queryParams.status"
:placeholder=
"$t('请选择客户状态')"
clearable
size=
"small"
>
<el-select
<el-option
v-for=
"dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
clearable
:key=
"dict.value"
:label=
"isChinese ? dict.label : dict.labelEn"
:value=
"dict.value"
/>
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-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
clearable
v-model=
"dateRangeCreateTime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
<el-date-picker
type=
"daterange"
range-separator=
"-"
:start-placeholder=
"$t('开始日期')"
:end-placeholder=
"$t('结束日期')"
/>
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>
<el-form-item
:label=
"$t('信用等级')"
prop=
"department"
>
<el-form-item
:label=
"$t('信用等级')"
prop=
"department"
>
<el-select
clearable
v-model=
"queryParams.creditLevel"
>
<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-option
v-for=
"(item, index) in creditList"
:label=
"isChinese ? item.nameZh : item.nameEn"
:key=
"index"
:value=
"item.id"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('市场获客')"
prop=
"department"
>
<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-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
$t
(
'
搜索
'
)
}}
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
{{
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
'
重置
'
)
}}
</el-button>
$t
(
"
搜索
"
)
}}
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
{{
$t
(
"
重置
"
)
}}
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<!-- 操作工具栏 -->
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
<el-button
v-hasPermi=
"['ecw:customer:sea-create']"
>
{{
$t
(
'
新增
'
)
}}
</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>
<el-col
:span=
"1.5"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
:loading=
"exportLoading"
<el-button
v-hasPermi=
"['ecw:customer:sea-export']"
>
{{
$t
(
'
导出
'
)
}}
</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>
</el-col>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
</el-row>
<!-- 列表 -->
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
@
selection-change=
"handleSelectionChange"
>
<el-table
<el-table-column
v-loading=
"loading"
type=
"selection"
:data=
"list"
width=
"55"
>
@
selection-change=
"handleSelectionChange"
</el-table-column>
>
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
prop=
"number"
>
<el-table-column
type=
"selection"
width=
"55"
>
</el-table-column>
<template
v-slot=
"
{row}">
<el-table-column
:label=
"$t('客户编号')"
align=
"center"
prop=
"number"
>
{{
row
.
number
}}
<template
v-slot=
"
{ row }">
{{
row
.
number
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<el-table-column
:label=
"$t('客户名称')"
align=
"center"
prop=
"name"
>
<
template
v-slot=
"{row}"
>
<
template
v-slot=
"{ row }"
>
<p
style=
"display:inline-block;white-space: pre-wrap;"
>
{{
$l
(
row
,
'
name
'
)
}}
</p>
<p
style=
"display: inline-block; white-space: pre-wrap"
>
{{
$l
(
row
,
"
name
"
)
}}
</p>
</
template
>
</
template
>
</el-table-column>
</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"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_LEVEL"
:value=
"scope.row.level"
/>
<dict-tag
:type=
"DICT_TYPE.CUSTOMER_LEVEL"
:value=
"scope.row.level"
/>
</
template
>
</
template
>
</el-table-column>
</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"
>
<el-table-column
:label=
"$t('客户状态')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<
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
>
</
template
>
</el-table-column>
</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"
>
<el-table-column
:label=
"$t('主联系方式')"
prop=
"defaultContactPhone"
>
<
template
v-slot=
"{
row
}"
>
<
template
v-slot=
"{
row
}"
>
+
{{
row
.
defaultContactPhone
}}
<br
/>
+
{{
row
.
defaultContactPhone
}}
<br
/>
<contacts
:id=
"row.id"
>
<contacts
:id=
"row.id"
>
<el-button
type=
"text"
>
更多
</el-button>
<el-button
type=
"text"
>
更多
</el-button>
</contacts>
</contacts>
</
template
>
</
template
>
</el-table-column>
</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"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</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"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
enterOpenSeaTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
enterOpenSeaTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</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>
<el-table-column
:label=
"$t('国家')"
align=
"center"
prop=
"country"
:formatter=
"countryFormatter"
></el-table-column>
<el-table-column
<el-table-column
:label=
"$t('操作')"
align=
"center"
class-name=
"small-padding fixed-width"
>
: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"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"'/customer/query/' + scope.row.id"
>
<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>
</router-link>
<!--
<el-button
size=
"mini"
type=
"text"
@
click=
"distribution(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>
<el-button
v-has-permi=
"['ecw:customer:sea-gain']"
size=
"mini"
type=
"text"
@
click=
"fishingFn(scope.row)"
>
{{
$t
(
"
捞取
"
)
}}
</el-button
>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -141,24 +302,45 @@
...
@@ -141,24 +302,45 @@
center
center
:title=
"$t('客服')"
:title=
"$t('客服')"
:visible.sync=
"transferShow"
:visible.sync=
"transferShow"
width=
"30%"
>
width=
"30%"
<div
style=
"width: 100%;min-height: 200px;text-align: center"
>
>
<el-select
filterable
v-model=
"service"
>
<div
style=
"width: 100%; min-height: 200px; text-align: center"
>
<el-option
v-for=
"(item,index) in customerServiceList"
:key=
"index"
:label=
"item.nickname"
:value=
"item.id"
></el-option>
<el-select
filterable
v-model=
"service"
>
</el-select>
<el-option
<!-- <el-radio-group v-model="service">-->
v-for=
"(item, index) in customerServiceList"
<!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
:key=
"index"
<!-- </el-radio-group>-->
: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>-->
</div>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"transferShow = false"
>
{{$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
<el-button
type=
"primary"
v-else
@
click=
"transferFn([transferData.id])"
>
{{$t('确 定')}}
</el-button>
type=
"primary"
</span>
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>
</el-dialog>
<!-- 分页组件 -->
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
<pagination
@
pagination=
"getList"
/>
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</div>
</div>
</template>
</template>
...
@@ -170,23 +352,24 @@ import {
...
@@ -170,23 +352,24 @@ import {
handOverCustomer
,
handOverCustomer
,
getPublicList
,
getPublicList
,
setFishing
,
setFishing
,
publicExportExcel
publicExportExcel
,
}
from
"
@/api/ecw/customer
"
;
}
from
"
@/api/ecw/customer
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
'
@/utils/dict
'
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
upload
from
'
@/components/ImageUpload
'
import
upload
from
"
@/components/ImageUpload
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
listServiceUser
}
from
"
@/api/system/user
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCountryListAll
}
from
"
@/api/ecw/country
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
{
getCreditPage
}
from
"
@/api/customer/credit
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Template
from
"
@/views/cms/template/index.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
import
Contacts
from
"
@/views/ecw/customer/components/contacts.vue
"
;
export
default
{
export
default
{
name
:
"
EcwOceancustomerIndex
"
,
name
:
"
EcwOceancustomerIndex
"
,
activated
()
{
activated
()
{
this
.
getList
()
this
.
getList
()
;
},
},
components
:
{
components
:
{
Contacts
,
Template
,
Contacts
,
upload
Template
,
upload
,
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -207,7 +390,7 @@ export default {
...
@@ -207,7 +390,7 @@ export default {
// 是否显示弹出层
// 是否显示弹出层
open
:
false
,
open
:
false
,
dateRangeCreateTime
:
[],
dateRangeCreateTime
:
[],
customerServiceList
:[],
customerServiceList
:
[],
// 查询参数
// 查询参数
queryParams
:
{
queryParams
:
{
pageNo
:
1
,
pageNo
:
1
,
...
@@ -219,68 +402,112 @@ export default {
...
@@ -219,68 +402,112 @@ export default {
customerService
:
null
,
customerService
:
null
,
status
:
null
,
status
:
null
,
department
:
null
,
department
:
null
,
marketType
:
null
,
marketType
:
null
,
},
},
// 表单参数
// 表单参数
form
:
{},
form
:
{},
// 表单校验
// 表单校验
rules
:
{
rules
:
{
name
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户名称不能为空
'
),
trigger
:
"
blur
"
}],
name
:
[
country
:
[{
required
:
true
,
message
:
this
.
$t
(
'
国家不能为空
'
),
trigger
:
"
blur
"
}],
{
level
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户等级不能为空
'
),
trigger
:
"
blur
"
}],
required
:
true
,
type
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户类别不能为空
'
),
trigger
:
"
blur
"
}],
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" }],
// createTime: [{ required: true, message: this.$t('创建时间不能为空'), trigger: "blur" }],
source
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户来源不能为空
'
),
trigger
:
"
blur
"
}],
source
:
[
customerService
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户经理不能为空
'
),
trigger
:
"
blur
"
}],
{
status
:
[{
required
:
true
,
message
:
this
.
$t
(
'
客户状态不能为空
'
),
trigger
:
"
blur
"
}],
required
:
true
,
founder
:
[{
required
:
true
,
message
:
this
.
$t
(
'
创建人不能为空
'
),
trigger
:
"
blur
"
}],
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
:
[],
nodeList
:
[],
showLine
:
false
,
showLine
:
false
,
service
:
undefined
,
//客服
service
:
undefined
,
//客服
transferData
:
undefined
,
//移交数据
transferData
:
undefined
,
//移交数据
transferShow
:
false
,
transferShow
:
false
,
multipleSelection
:[],
multipleSelection
:
[],
isBatch
:
false
,
isBatch
:
false
,
countryList
:[],
countryList
:
[],
creditList
:
[]
creditList
:
[],
};
};
},
},
created
()
{
created
()
{
this
.
getList
();
this
.
getList
();
listServiceUser
().
then
(
r
=>
{
listServiceUser
().
then
(
(
r
)
=>
{
console
.
log
(
r
,
'
客服
'
);
console
.
log
(
r
,
"
客服
"
);
this
.
customerServiceList
=
r
.
data
;
this
.
customerServiceList
=
r
.
data
;
})
})
;
getCountryListAll
().
then
(
r
=>
{
getCountryListAll
().
then
(
(
r
)
=>
{
this
.
countryList
=
r
.
data
this
.
countryList
=
r
.
data
;
})
})
;
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
(
r
=>
{
getCreditPage
({
page
:
1
,
rows
:
999
}).
then
((
r
)
=>
{
this
.
creditList
=
r
.
data
.
list
this
.
creditList
=
r
.
data
.
list
;
})
})
;
// getNodeList().then(r => {
// getNodeList().then(r => {
// this.nodeList = r.data
// this.nodeList = r.data
// })
// })
},
},
computed
:{
computed
:
{
isChinese
(){
isChinese
()
{
return
this
.
$i18n
.
locale
===
'
zh_CN
'
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
},
},
methods
:
{
methods
:
{
countryFormatter
(
row
,
column
,
cellValue
)
{
countryFormatter
(
row
,
column
,
cellValue
)
{
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
const
country
=
this
.
countryList
.
find
((
e
)
=>
e
.
id
===
cellValue
)
;
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
return
this
.
isChinese
?
country
?.
nameZh
:
country
?.
nameEn
;
},
},
/** 查询列表 */
/** 查询列表 */
getList
()
{
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
;
// 处理查询参数
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
let
params
=
{
...
this
.
queryParams
};
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
'
createTime
'
);
this
.
addBeginAndEndTime
(
params
,
this
.
dateRangeCreateTime
,
"
createTime
"
);
// 执行查询
// 执行查询
getPublicList
(
params
).
then
(
response
=>
{
getPublicList
(
params
).
then
(
(
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
this
.
loading
=
false
;
...
@@ -351,25 +578,25 @@ export default {
...
@@ -351,25 +578,25 @@ export default {
customerService
:
null
,
customerService
:
null
,
status
:
null
,
status
:
null
,
department
:
null
,
department
:
null
,
creditLevel
:
null
,
creditLevel
:
null
,
country
:
null
,
country
:
null
,
}
}
;
this
.
handleQuery
();
this
.
handleQuery
();
},
},
/** 新增按钮操作 */
/** 新增按钮操作 */
handleAdd
()
{
handleAdd
()
{
this
.
$router
.
push
(
'
/customer/add-edit/0
'
)
this
.
$router
.
push
(
"
/customer/add-edit/0
"
);
// this.reset();
// this.reset();
// this.open = true;
// this.open = true;
// this.title = this.$t("添加客户");
// this.title = this.$t("添加客户");
},
},
/** 查看按钮操作 */
/** 查看按钮操作 */
handleView
(
row
)
{
handleView
(
row
)
{
this
.
$router
.
push
(
'
/customer/query/
'
+
row
.
id
)
this
.
$router
.
push
(
"
/customer/query/
"
+
row
.
id
);
},
},
/** 修改按钮操作 */
/** 修改按钮操作 */
handleUpdate
(
row
)
{
handleUpdate
(
row
)
{
this
.
$router
.
push
(
'
/customer/add-edit/
'
+
row
.
id
)
this
.
$router
.
push
(
"
/customer/add-edit/
"
+
row
.
id
);
// this.reset();
// this.reset();
// const id = row.id;
// const id = row.id;
// getCustomer(id).then(response => {
// getCustomer(id).then(response => {
...
@@ -380,22 +607,22 @@ export default {
...
@@ -380,22 +607,22 @@ export default {
},
},
/** 提交按钮 */
/** 提交按钮 */
submitForm
()
{
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
(
valid
=>
{
this
.
$refs
[
"
form
"
].
validate
(
(
valid
)
=>
{
if
(
!
valid
)
{
if
(
!
valid
)
{
// return;
// return;
}
}
// 修改的提交
// 修改的提交
if
(
this
.
form
.
id
!=
null
)
{
if
(
this
.
form
.
id
!=
null
)
{
updateCustomer
(
this
.
form
).
then
(
response
=>
{
updateCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
修改成功
'
));
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
修改成功
"
));
this
.
open
=
false
;
this
.
open
=
false
;
this
.
getList
();
this
.
getList
();
});
});
return
;
return
;
}
}
// 添加的提交
// 添加的提交
createCustomer
(
this
.
form
).
then
(
response
=>
{
createCustomer
(
this
.
form
).
then
(
(
response
)
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
新增成功
'
));
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
新增成功
"
));
this
.
open
=
false
;
this
.
open
=
false
;
this
.
getList
();
this
.
getList
();
});
});
...
@@ -404,76 +631,91 @@ export default {
...
@@ -404,76 +631,91 @@ export default {
/** 移交按钮操作 */
/** 移交按钮操作 */
handleDelete
(
row
)
{
handleDelete
(
row
)
{
const
id
=
row
.
id
;
const
id
=
row
.
id
;
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
)).
then
(
function
()
{
this
.
$modal
return
deleteCustomer
(
id
);
.
confirm
(
}).
then
(()
=>
{
this
.
$t
(
'
是否确认删除客户编号为"
'
)
+
id
+
this
.
$t
(
'
"的数据项?
'
)
this
.
getList
();
)
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
));
.
then
(
function
()
{
}).
catch
(()
=>
{});
return
deleteCustomer
(
id
);
})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
删除成功
"
));
})
.
catch
(()
=>
{});
},
},
/** 导出按钮操作 */
/** 导出按钮操作 */
handleExport
()
{
handleExport
()
{
this
.
$modal
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认导出公海池客户数据项?
'
)).
then
(()
=>
{
.
confirm
(
this
.
$t
(
"
是否确认导出公海池客户数据项?
"
))
publicExportExcel
().
then
(()
=>
{
.
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
'
已加入导出队列,请稍后在下载日志中下载
'
))
publicExportExcel
().
then
(()
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
已加入导出队列,请稍后在下载日志中下载
"
)
);
});
})
})
})
.
catch
(()
=>
{});
.
catch
(()
=>
{});
},
},
//分配客服
//分配客服
distribution
(
row
){
distribution
(
row
)
{
this
.
service
=
row
.
customerService
this
.
service
=
row
.
customerService
;
this
.
transferData
=
row
;
this
.
transferData
=
row
;
this
.
transferShow
=
true
;
this
.
transferShow
=
true
;
this
.
isBatch
=
false
;
this
.
isBatch
=
false
;
},
},
transferFn
(
val
){
transferFn
(
val
)
{
if
(
!
this
.
service
)
{
if
(
!
this
.
service
)
{
return
this
.
$message
.
warning
(
this
.
$t
(
'
请选择客户经理!
'
));
return
this
.
$message
.
warning
(
this
.
$t
(
"
请选择客户经理!
"
));
}
}
handOverCustomer
({
handOverCustomer
({
customerServiceId
:
this
.
service
,
customerServiceId
:
this
.
service
,
customerIdList
:
val
customerIdList
:
val
,
}).
then
(
r
=>
{
}).
then
(
(
r
)
=>
{
if
(
r
.
code
===
0
)
{
if
(
r
.
code
===
0
)
{
this
.
transferShow
=
false
;
this
.
transferShow
=
false
;
this
.
service
=
''
;
this
.
service
=
""
;
this
.
getList
();
this
.
getList
();
this
.
multipleSelection
=
[];
this
.
multipleSelection
=
[];
this
.
$message
.
success
(
this
.
$t
(
'
移交成功!
'
));
this
.
$message
.
success
(
this
.
$t
(
"
移交成功!
"
));
}
}
})
})
;
},
},
fishingFn
(
row
){
fishingFn
(
row
)
{
this
.
$confirm
(
`
${
this
.
$t
(
'
是否要捞取
'
)}${
row
.
name
}${
this
.
$t
(
'
的客户
'
)}
`
,
this
.
$t
(
'
提示
'
),
{
this
.
$confirm
(
confirmButtonText
:
this
.
$t
(
'
确定
'
),
`
${
this
.
$t
(
"
是否要捞取
"
)}${
row
.
name
}${
this
.
$t
(
"
的客户
"
)}
`
,
cancelButtonText
:
this
.
$t
(
'
取消
'
),
this
.
$t
(
"
提示
"
),
type
:
'
warning
'
{
}).
then
(()
=>
{
confirmButtonText
:
this
.
$t
(
"
确定
"
),
setFishing
({
id
:
row
.
id
}).
then
(
r
=>
{
cancelButtonText
:
this
.
$t
(
"
取消
"
),
if
(
r
.
code
===
0
){
type
:
"
warning
"
,
this
.
getList
()
}
this
.
$message
({
)
type
:
'
success
'
,
.
then
(()
=>
{
message
:
this
.
$t
(
'
捞取成功!
'
)
setFishing
({
id
:
row
.
id
}).
then
((
r
)
=>
{
});
if
(
r
.
code
===
0
)
{
}
this
.
getList
();
this
.
$message
({
type
:
"
success
"
,
message
:
this
.
$t
(
"
捞取成功!
"
),
});
}
});
})
})
}).
catch
(()
=>
{
.
catch
(()
=>
{
this
.
$message
({
this
.
$message
({
type
:
'
info
'
,
type
:
"
info
"
,
message
:
this
.
$t
(
'
已取消捞取
'
)
message
:
this
.
$t
(
"
已取消捞取
"
),
});
});
});
});
},
},
batchHandover
(){
batchHandover
()
{
this
.
transferShow
=
true
;
this
.
transferShow
=
true
;
this
.
isBatch
=
true
this
.
isBatch
=
true
;
},
},
handleSelectionChange
(
val
){
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
this
.
multipleSelection
=
val
;
}
}
,
}
}
,
};
};
</
script
>
</
script
>
src/views/report/customer_analysis/index.vue
View file @
f4efef4b
...
@@ -328,6 +328,7 @@
...
@@ -328,6 +328,7 @@
<el-table-column
label=
"控货总V值"
align=
"center"
prop=
"khSumV"
/>
<el-table-column
label=
"控货总V值"
align=
"center"
prop=
"khSumV"
/>
<el-table-column
label=
"控货占比"
align=
"center"
prop=
"khSumZb"
/>
<el-table-column
label=
"控货占比"
align=
"center"
prop=
"khSumZb"
/>
<!--2024-05-06和张工确认这几个参数无取数逻辑,暂时隐藏-->
<!--2024-05-06和张工确认这几个参数无取数逻辑,暂时隐藏-->
<!--
<el-table-column
<el-table-column
label="是否首次成交"
label="是否首次成交"
v-show="false"
v-show="false"
...
@@ -343,7 +344,7 @@
...
@@ -343,7 +344,7 @@
<template slot-scope="scope">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.firstDate) }}</span>
<span>{{ parseTime(scope.row.firstDate) }}</span>
</template>
</template>
</el-table-column>
</el-table-column>
-->
<!--2024-05-06和张工确认这几个参数无取数逻辑,暂时隐藏-->
<!--2024-05-06和张工确认这几个参数无取数逻辑,暂时隐藏-->
<el-table-column
label=
"提货率"
align=
"center"
prop=
"thL"
/>
<el-table-column
label=
"提货率"
align=
"center"
prop=
"thL"
/>
<el-table-column
label=
"客户业绩类型"
align=
"center"
prop=
"cusYjType"
/>
<el-table-column
label=
"客户业绩类型"
align=
"center"
prop=
"cusYjType"
/>
...
@@ -538,7 +539,9 @@ export default {
...
@@ -538,7 +539,9 @@ export default {
watch
:
{
watch
:
{
$route
(
to
)
{
$route
(
to
)
{
//lanbm 2024-05-06 解决重新进入参数不刷新的问题
//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
();
this
.
doLoadData
();
}
}
},
},
...
@@ -765,6 +768,24 @@ export default {
...
@@ -765,6 +768,24 @@ export default {
return
strDate
;
return
strDate
;
},
},
test
()
{
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
;
this
.
DeptEx
.
id
=
this
.
objEcwReportPermission
.
deptId
;
listServiceUser
(
this
.
DeptEx
).
then
((
response
)
=>
{
listServiceUser
(
this
.
DeptEx
).
then
((
response
)
=>
{
let
json1
=
JSON
.
stringify
(
response
.
data
);
let
json1
=
JSON
.
stringify
(
response
.
data
);
...
@@ -772,8 +793,6 @@ export default {
...
@@ -772,8 +793,6 @@ export default {
return
;
return
;
});
});
return
;
let
json1
=
JSON
.
stringify
(
this
.
deptOptions
);
let
json1
=
JSON
.
stringify
(
this
.
deptOptions
);
alert
(
json1
);
alert
(
json1
);
return
;
return
;
...
...
src/views/report/vz/index.vue
View file @
f4efef4b
...
@@ -63,7 +63,8 @@
...
@@ -63,7 +63,8 @@
<el-button
<el-button
type=
"primary"
type=
"primary"
plain
plain
icon=
"el-icon-plus"
v-show=
"false"
icon=
"el-icon-plus"
v-show=
"false"
size=
"mini"
size=
"mini"
@
click=
"TestFun"
@
click=
"TestFun"
>
>
...
...
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