Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
customer-admin
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
customer-admin
Commits
6bb325cd
提交
6bb325cd
authored
11月 01, 2021
作者:
pengxiaohui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: v1.1版本增加院校性质和院校层次
上级
06dd5fa1
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
181 行增加
和
29 行删除
+181
-29
Index.vue
src/components/base/AppUniversityLevel/Index.vue
+22
-0
options.js
src/components/base/AppUniversityLevel/options.js
+68
-0
BaseInfo.vue
src/modules/customer/components/BaseInfo.vue
+18
-5
CustomerFormDialog.vue
src/modules/customer/components/CustomerFormDialog.vue
+25
-6
Index.vue
src/modules/customer/views/Index.vue
+48
-18
没有找到文件。
src/components/base/AppUniversityLevel/Index.vue
0 → 100644
浏览文件 @
6bb325cd
<
template
>
<el-cascader
:options=
"options"
:props=
"props"
clearable
v-bind=
"$attrs"
v-on=
"$listeners"
></el-cascader>
</
template
>
<
script
>
import
{
options
}
from
'./options.js'
export
default
{
props
:
{
props
:
{
type
:
Object
,
default
()
{
return
{
label
:
'name'
,
value
:
'id'
,
expandTrigger
:
'hover'
}
}
}
},
data
()
{
return
{
options
:
options
}
}
}
</
script
>
\ No newline at end of file
src/components/base/AppUniversityLevel/options.js
0 → 100644
浏览文件 @
6bb325cd
const
options
=
[
{
name
:
'本科'
,
id
:
1
,
children
:
[
{
name
:
'985/211'
,
id
:
101
},
{
name
:
'双一流'
,
id
:
102
},
{
name
:
'省一流'
,
id
:
103
},
{
name
:
'普通本科'
,
id
:
104
},
{
name
:
'职业大学'
,
id
:
105
},
{
name
:
'应用型本科'
,
id
:
106
}
]
},
{
name
:
'高职'
,
id
:
2
,
children
:
[
{
name
:
'双高'
,
id
:
201
},
{
name
:
'非双高'
,
id
:
202
}
]
},
{
name
:
'中职'
,
id
:
3
,
children
:
[
{
name
:
'国(省)示范'
,
id
:
301
},
{
name
:
'国(省)重点'
,
id
:
302
},
{
name
:
'非遗'
,
id
:
303
},
{
name
:
'其他'
,
id
:
304
}
]
}
]
export
{
options
}
src/modules/customer/components/BaseInfo.vue
浏览文件 @
6bb325cd
...
@@ -10,7 +10,10 @@
...
@@ -10,7 +10,10 @@
<
template
slot=
"label"
>
客户来源
</
template
>
{{ form.source | sourceFilter }}
<
template
slot=
"label"
>
客户来源
</
template
>
{{ form.source | sourceFilter }}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item>
<el-descriptions-item>
<
template
slot=
"label"
>
客户分类
</
template
>
{{ form.type | typeFilter }}
<
template
slot=
"label"
>
院校性质
</
template
>
{{ form.nature | natureFilter }}
</el-descriptions-item>
<el-descriptions-item>
<
template
slot=
"label"
>
院校层级
</
template
>
{{ form.universityLevel }}
</el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item>
<
template
slot=
"label"
>
所在地区
</
template
>
{{ form.region }}
</el-descriptions-item>
<el-descriptions-item>
<
template
slot=
"label"
>
所在地区
</
template
>
{{ form.region }}
</el-descriptions-item>
<el-descriptions-item>
<
template
slot=
"label"
>
详细地址
</
template
>
{{ form.address }}
</el-descriptions-item>
<el-descriptions-item>
<
template
slot=
"label"
>
详细地址
</
template
>
{{ form.address }}
</el-descriptions-item>
...
@@ -22,8 +25,9 @@
...
@@ -22,8 +25,9 @@
<
script
>
<
script
>
import
CustomerFormDialog
from
'./CustomerFormDialog.vue'
import
CustomerFormDialog
from
'./CustomerFormDialog.vue'
import
{
getCustomerDetail
}
from
'../api'
import
{
getCustomerDetail
}
from
'../api'
import
{
options
}
from
'@/components/base/AppUniversityLevel/options.js'
const
sourceMap
=
{
1
:
'公司资源'
,
2
:
'自己开拓'
,
3
:
'第三方介绍'
}
const
sourceMap
=
{
1
:
'公司资源'
,
2
:
'自己开拓'
,
3
:
'第三方介绍'
}
const
typeMap
=
{
1
:
'普通客户'
,
2
:
'重点客户
'
}
const
natureMap
=
{
1
:
'公办'
,
2
:
'民办
'
}
export
default
{
export
default
{
props
:
{
props
:
{
id
:
{
id
:
{
...
@@ -37,7 +41,8 @@ export default {
...
@@ -37,7 +41,8 @@ export default {
name
:
''
,
name
:
''
,
short_name
:
''
,
short_name
:
''
,
source
:
''
,
source
:
''
,
type
:
''
,
nature
:
''
,
universityLevel
:
''
,
region
:
''
,
region
:
''
,
address
:
''
,
address
:
''
,
remark
:
''
,
remark
:
''
,
...
@@ -58,8 +63,8 @@ export default {
...
@@ -58,8 +63,8 @@ export default {
sourceFilter
(
val
)
{
sourceFilter
(
val
)
{
return
sourceMap
[
val
]
return
sourceMap
[
val
]
},
},
typ
eFilter
(
val
)
{
natur
eFilter
(
val
)
{
return
typ
eMap
[
val
]
return
natur
eMap
[
val
]
}
}
},
},
mounted
()
{
mounted
()
{
...
@@ -68,7 +73,15 @@ export default {
...
@@ -68,7 +73,15 @@ export default {
methods
:
{
methods
:
{
getBaseInfo
()
{
getBaseInfo
()
{
getCustomerDetail
(
this
.
id
).
then
(
res
=>
{
getCustomerDetail
(
this
.
id
).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
this
.
form
=
res
.
data
this
.
form
=
res
.
data
this
.
universityLevel
=
''
if
(
res
.
data
.
college_type
&&
res
.
data
.
college_level
)
{
const
collegeType
=
options
.
find
(
item
=>
item
.
id
===
parseInt
(
res
.
data
.
college_type
))
const
collegeLevel
=
collegeType
.
children
.
find
(
item
=>
item
.
id
===
parseInt
(
res
.
data
.
college_level
))
this
.
form
.
universityLevel
=
collegeType
.
name
+
'-'
+
collegeLevel
.
name
}
}
})
})
}
}
}
}
...
...
src/modules/customer/components/CustomerFormDialog.vue
浏览文件 @
6bb325cd
...
@@ -22,12 +22,15 @@
...
@@ -22,12 +22,15 @@
<el-option
label=
"第三方介绍"
:value=
"3"
></el-option>
<el-option
label=
"第三方介绍"
:value=
"3"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
客户分类"
prop=
"typ
e"
class=
"form-item-select"
>
<el-form-item
label=
"
院校性质"
prop=
"natur
e"
class=
"form-item-select"
>
<el-select
v-model=
"form.
type"
placeholder=
"请选择客户分类
"
size=
"small"
style=
"width: 100%"
>
<el-select
v-model=
"form.
nature"
placeholder=
"请选择院校性质
"
size=
"small"
style=
"width: 100%"
>
<el-option
label=
"
普通客户
"
:value=
"1"
></el-option>
<el-option
label=
"
公办
"
:value=
"1"
></el-option>
<el-option
label=
"
重点客户
"
:value=
"2"
></el-option>
<el-option
label=
"
民办
"
:value=
"2"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"院校层次"
prop=
"universityLevel"
class=
"form-item-select"
style=
"margin-right: 20px"
>
<app-university-level
v-model=
"form.universityLevel"
/>
</el-form-item>
<el-form-item
label=
"所在地区"
prop=
"region"
class=
"form-item-select"
>
<el-form-item
label=
"所在地区"
prop=
"region"
class=
"form-item-select"
>
<app-area
v-model=
"form.region"
/>
<app-area
v-model=
"form.region"
/>
</el-form-item>
</el-form-item>
...
@@ -53,9 +56,10 @@
...
@@ -53,9 +56,10 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
AppArea
from
'@/components/base/AppArea.vue'
import
AppArea
from
'@/components/base/AppArea.vue'
import
AppUniversityLevel
from
'@/components/base/AppUniversityLevel/index.vue'
import
{
createCustomer
,
updateCustomer
}
from
'../api'
import
{
createCustomer
,
updateCustomer
}
from
'../api'
export
default
{
export
default
{
components
:
{
AppArea
},
components
:
{
AppArea
,
AppUniversityLevel
},
props
:
{
props
:
{
value
:
{
value
:
{
type
:
Boolean
,
type
:
Boolean
,
...
@@ -76,7 +80,8 @@ export default {
...
@@ -76,7 +80,8 @@ export default {
name
:
''
,
name
:
''
,
short_name
:
''
,
short_name
:
''
,
source
:
''
,
source
:
''
,
type
:
''
,
nature
:
''
,
universityLevel
:
[],
region
:
[],
region
:
[],
address
:
''
,
address
:
''
,
remark
:
''
remark
:
''
...
@@ -84,6 +89,8 @@ export default {
...
@@ -84,6 +89,8 @@ export default {
rules
:
{
rules
:
{
name
:
{
required
:
true
,
message
:
'请输入客户名称'
,
trigger
:
'blur'
},
name
:
{
required
:
true
,
message
:
'请输入客户名称'
,
trigger
:
'blur'
},
source
:
{
required
:
true
,
message
:
'请选择客户来源'
,
trigger
:
'change'
},
source
:
{
required
:
true
,
message
:
'请选择客户来源'
,
trigger
:
'change'
},
nature
:
{
required
:
true
,
message
:
'请选择院校性质'
,
trigger
:
'change'
},
universityLevel
:
{
required
:
true
,
message
:
'请选择院校层次'
,
trigger
:
'change'
},
region
:
{
required
:
true
,
message
:
'请选择所在地区'
,
trigger
:
'change'
}
region
:
{
required
:
true
,
message
:
'请选择所在地区'
,
trigger
:
'change'
}
},
},
btnDisabled
:
false
btnDisabled
:
false
...
@@ -98,6 +105,10 @@ export default {
...
@@ -98,6 +105,10 @@ export default {
Object
.
keys
(
this
.
form
).
forEach
(
key
=>
{
Object
.
keys
(
this
.
form
).
forEach
(
key
=>
{
this
.
form
[
key
]
=
this
.
info
[
key
]
this
.
form
[
key
]
=
this
.
info
[
key
]
if
(
key
===
'region'
)
this
.
form
[
key
]
=
this
.
form
[
key
].
split
(
'-'
)
if
(
key
===
'region'
)
this
.
form
[
key
]
=
this
.
form
[
key
].
split
(
'-'
)
if
(
key
===
'universityLevel'
)
{
if
(
parseInt
(
this
.
info
.
college_type
))
this
.
form
[
key
]
=
[
parseInt
(
this
.
info
.
college_type
),
parseInt
(
this
.
info
.
college_level
)]
else
this
.
form
[
key
]
=
[]
}
})
})
},
},
deep
:
true
deep
:
true
...
@@ -109,6 +120,7 @@ export default {
...
@@ -109,6 +120,7 @@ export default {
this
.
$emit
(
'input'
,
false
)
this
.
$emit
(
'input'
,
false
)
},
},
handleSubmit
()
{
handleSubmit
()
{
console
.
log
(
this
.
form
)
this
.
$refs
.
ruleForm
.
validate
(
valid
=>
{
this
.
$refs
.
ruleForm
.
validate
(
valid
=>
{
if
(
valid
)
{
if
(
valid
)
{
this
.
info
.
id
?
this
.
fetchUpdateCustomer
()
:
this
.
fetchCreateCustomer
()
this
.
info
.
id
?
this
.
fetchUpdateCustomer
()
:
this
.
fetchCreateCustomer
()
...
@@ -118,7 +130,11 @@ export default {
...
@@ -118,7 +130,11 @@ export default {
fetchCreateCustomer
()
{
fetchCreateCustomer
()
{
const
params
=
Object
.
assign
({},
this
.
form
)
const
params
=
Object
.
assign
({},
this
.
form
)
params
.
region
=
this
.
form
.
region
.
join
(
'-'
)
params
.
region
=
this
.
form
.
region
.
join
(
'-'
)
params
.
college_type
=
this
.
form
.
universityLevel
[
0
]
params
.
college_level
=
this
.
form
.
universityLevel
[
1
]
delete
params
.
universityLevel
this
.
btnDisabled
=
true
this
.
btnDisabled
=
true
console
.
log
(
params
)
createCustomer
(
params
)
createCustomer
(
params
)
.
then
(
res
=>
{
.
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
res
.
data
.
id
)
{
if
(
res
.
code
===
0
&&
res
.
data
&&
res
.
data
.
id
)
{
...
@@ -136,6 +152,9 @@ export default {
...
@@ -136,6 +152,9 @@ export default {
fetchUpdateCustomer
()
{
fetchUpdateCustomer
()
{
const
params
=
Object
.
assign
({},
this
.
form
)
const
params
=
Object
.
assign
({},
this
.
form
)
params
.
region
=
this
.
form
.
region
.
join
(
'-'
)
params
.
region
=
this
.
form
.
region
.
join
(
'-'
)
params
.
college_type
=
this
.
form
.
universityLevel
[
0
]
params
.
college_level
=
this
.
form
.
universityLevel
[
1
]
delete
params
.
universityLevel
this
.
btnDisabled
=
true
this
.
btnDisabled
=
true
updateCustomer
(
this
.
info
.
id
,
params
)
updateCustomer
(
this
.
info
.
id
,
params
)
.
then
(
res
=>
{
.
then
(
res
=>
{
...
...
src/modules/customer/views/Index.vue
浏览文件 @
6bb325cd
...
@@ -20,6 +20,9 @@
...
@@ -20,6 +20,9 @@
<
template
v-slot:filter-region=
"{ params }"
>
<
template
v-slot:filter-region=
"{ params }"
>
<app-area
v-model=
"params.region"
></app-area>
<app-area
v-model=
"params.region"
></app-area>
</
template
>
</
template
>
<
template
v-slot:filter-universityLevel=
"{ params }"
>
<app-university-level
v-model=
"params.universityLevel"
/>
</
template
>
<
template
v-slot:filter-create-by=
"{ params }"
>
<
template
v-slot:filter-create-by=
"{ params }"
>
<app-user-search
v-model=
"params.created_by"
:options=
"
{ clearable: true }">
</app-user-search>
<app-user-search
v-model=
"params.created_by"
:options=
"
{ clearable: true }">
</app-user-search>
</
template
>
</
template
>
...
@@ -53,31 +56,33 @@
...
@@ -53,31 +56,33 @@
<
script
>
<
script
>
import
AppUserSearch
from
'@/components/base/AppUserSearch.vue'
import
AppUserSearch
from
'@/components/base/AppUserSearch.vue'
import
AppArea
from
'@/components/base/AppArea.vue'
import
AppArea
from
'@/components/base/AppArea.vue'
import
AppUniversityLevel
from
'@/components/base/AppUniversityLevel/index.vue'
import
CustomerFormDialog
from
'../components/CustomerFormDialog.vue'
import
CustomerFormDialog
from
'../components/CustomerFormDialog.vue'
// 接口
// 接口
import
{
getCustomerList
,
deleteCustomer
}
from
'../api'
import
{
getCustomerList
,
deleteCustomer
}
from
'../api'
import
{
options
}
from
'@/components/base/AppUniversityLevel/options.js'
const
sourceList
=
[
const
sourceList
=
[
{
name
:
'公司资源'
,
id
:
1
},
{
name
:
'公司资源'
,
id
:
1
},
{
name
:
'自己开拓'
,
id
:
2
},
{
name
:
'自己开拓'
,
id
:
2
},
{
name
:
'第三方介绍'
,
id
:
3
}
{
name
:
'第三方介绍'
,
id
:
3
}
]
]
const
typ
eList
=
[
const
natur
eList
=
[
{
name
:
'
普通客户
'
,
id
:
1
},
{
name
:
'
公办
'
,
id
:
1
},
{
name
:
'
重点客户
'
,
id
:
2
}
{
name
:
'
民办
'
,
id
:
2
}
]
]
export
default
{
export
default
{
components
:
{
AppUserSearch
,
AppArea
,
CustomerFormDialog
},
components
:
{
AppUserSearch
,
AppArea
,
AppUniversityLevel
,
CustomerFormDialog
},
data
()
{
data
()
{
return
{
return
{
staffList
:
[
staffList
:
[
{
name
:
'员工1'
,
id
:
'1'
},
{
name
:
'员工1'
,
id
:
'1'
},
{
name
:
'员工2'
,
id
:
'2'
}
{
name
:
'员工2'
,
id
:
'2'
}
],
],
typ
eList
:
[
// natur
eList: [
{
name
:
'普通客户
'
,
id
:
1
},
// { name: '公办
', id: 1 },
{
name
:
'重点客户
'
,
id
:
2
}
// { name: '民办
', id: 2 }
],
//
],
sourceList
:
[
sourceList
:
[
{
name
:
'公司资源'
,
id
:
1
},
{
name
:
'公司资源'
,
id
:
1
},
{
name
:
'自己开拓'
,
id
:
2
},
{
name
:
'自己开拓'
,
id
:
2
},
...
@@ -127,8 +132,9 @@ export default {
...
@@ -127,8 +132,9 @@ export default {
name
:
''
,
name
:
''
,
short_name
:
''
,
short_name
:
''
,
source
:
''
,
source
:
''
,
typ
e
:
''
,
natur
e
:
''
,
region
:
[],
region
:
[],
universityLevel
:
[],
created_by
:
''
,
created_by
:
''
,
project_tag
:
''
,
project_tag
:
''
,
project_status
:
''
,
project_status
:
''
,
...
@@ -138,7 +144,9 @@ export default {
...
@@ -138,7 +144,9 @@ export default {
// created_start_time: '',
// created_start_time: '',
// created_end_time: '',
// created_end_time: '',
create_date
:
''
,
create_date
:
''
,
follow_date
:
''
follow_date
:
''
,
college_type
:
''
,
college_level
:
''
}
}
},
},
filters
:
[
filters
:
[
...
@@ -155,13 +163,13 @@ export default {
...
@@ -155,13 +163,13 @@ export default {
},
},
{
{
type
:
'select'
,
type
:
'select'
,
placeholder
:
'请选择
客户分类
'
,
placeholder
:
'请选择
院校性质
'
,
prop
:
'
typ
e'
,
prop
:
'
natur
e'
,
options
:
typ
eList
,
options
:
natur
eList
,
labelKey
:
'name'
,
labelKey
:
'name'
,
valueKey
:
'id'
,
valueKey
:
'id'
,
size
:
'small'
,
size
:
'small'
,
label
:
'
客户分类
:'
label
:
'
院校性质
:'
},
},
{
{
type
:
'select'
,
type
:
'select'
,
...
@@ -194,7 +202,8 @@ export default {
...
@@ -194,7 +202,8 @@ export default {
label
:
'项目进度:'
label
:
'项目进度:'
},
},
{
prop
:
'project_sso_id'
,
slots
:
'filter-project-ssoid'
,
label
:
'项目负责人:'
},
{
prop
:
'project_sso_id'
,
slots
:
'filter-project-ssoid'
,
label
:
'项目负责人:'
},
{
prop
:
'region'
,
slots
:
'filter-region'
,
label
:
'所在地区:'
}
{
prop
:
'region'
,
slots
:
'filter-region'
,
label
:
'所在地区:'
},
{
prop
:
'universityLevel'
,
slots
:
'filter-universityLevel'
,
label
:
'院校层次:'
}
],
],
columns
:
[
columns
:
[
// { type: 'selection', minWidth: '40px' },
// { type: 'selection', minWidth: '40px' },
...
@@ -209,14 +218,28 @@ export default {
...
@@ -209,14 +218,28 @@ export default {
}
}
},
},
{
{
prop
:
'
typ
e'
,
prop
:
'
natur
e'
,
label
:
'
客户分类
'
,
label
:
'
院校性质
'
,
minWidth
:
'100px'
,
minWidth
:
'100px'
,
computed
({
row
})
{
computed
({
row
})
{
const
item
=
typeList
.
find
(
it
=>
it
.
id
===
row
.
typ
e
)
||
{}
const
item
=
natureList
.
find
(
it
=>
it
.
id
===
row
.
natur
e
)
||
{}
return
item
.
name
return
item
.
name
}
}
},
},
{
prop
:
'college_type'
,
label
:
'院校层次'
,
minWidth
:
'100px'
,
computed
({
row
})
{
if
(
row
.
college_type
)
{
const
collegeType
=
options
.
find
(
item
=>
item
.
id
===
row
.
college_type
)
const
collegeLevel
=
collegeType
.
children
.
find
(
item
=>
item
.
id
===
row
.
college_level
)
return
collegeType
.
name
+
'-'
+
collegeLevel
.
name
}
else
{
return
''
}
}
},
{
prop
:
'region'
,
label
:
'所在地区'
,
minWidth
:
'170px'
},
{
prop
:
'region'
,
label
:
'所在地区'
,
minWidth
:
'170px'
},
{
prop
:
'last_record_time'
,
label
:
'最近跟进时间'
,
minWidth
:
'150px'
},
{
prop
:
'last_record_time'
,
label
:
'最近跟进时间'
,
minWidth
:
'150px'
},
{
prop
:
'project_count'
,
label
:
'合作项目'
,
minWidth
:
'80px'
},
{
prop
:
'project_count'
,
label
:
'合作项目'
,
minWidth
:
'80px'
},
...
@@ -267,6 +290,13 @@ export default {
...
@@ -267,6 +290,13 @@ export default {
delete
_params
.
region
delete
_params
.
region
}
}
}
}
if
(
params
.
universityLevel
&&
params
.
universityLevel
.
length
)
{
delete
_params
.
universityLevel
_params
.
college_type
=
params
.
universityLevel
[
0
]
_params
.
college_level
=
params
.
universityLevel
[
1
]
}
else
{
delete
_params
.
universityLevel
}
return
_params
return
_params
},
},
// 查看
// 查看
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论