提交 6bb325cd authored 作者: pengxiaohui's avatar pengxiaohui

feat: v1.1版本增加院校性质和院校层次

上级 06dd5fa1
<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
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 }
......@@ -10,7 +10,10 @@
<template slot="label">客户来源</template>{{ form.source | sourceFilter }}
</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> <template slot="label">所在地区</template>{{ form.region }} </el-descriptions-item>
<el-descriptions-item> <template slot="label">详细地址</template>{{ form.address }} </el-descriptions-item>
......@@ -22,8 +25,9 @@
<script>
import CustomerFormDialog from './CustomerFormDialog.vue'
import { getCustomerDetail } from '../api'
import { options } from '@/components/base/AppUniversityLevel/options.js'
const sourceMap = { 1: '公司资源', 2: '自己开拓', 3: '第三方介绍' }
const typeMap = { 1: '普通客户', 2: '重点客户' }
const natureMap = { 1: '公办', 2: '民办' }
export default {
props: {
id: {
......@@ -37,7 +41,8 @@ export default {
name: '',
short_name: '',
source: '',
type: '',
nature: '',
universityLevel: '',
region: '',
address: '',
remark: '',
......@@ -58,8 +63,8 @@ export default {
sourceFilter(val) {
return sourceMap[val]
},
typeFilter(val) {
return typeMap[val]
natureFilter(val) {
return natureMap[val]
}
},
mounted() {
......@@ -68,7 +73,15 @@ export default {
methods: {
getBaseInfo() {
getCustomerDetail(this.id).then(res => {
this.form = res.data
if (res.code === 0) {
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
}
}
})
}
}
......
......@@ -22,12 +22,15 @@
<el-option label="第三方介绍" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="客户分类" prop="type" class="form-item-select">
<el-select v-model="form.type" placeholder="请选择客户分类" size="small" style="width: 100%">
<el-option label="普通客户" :value="1"></el-option>
<el-option label="重点客户" :value="2"></el-option>
<el-form-item label="院校性质" prop="nature" class="form-item-select">
<el-select v-model="form.nature" placeholder="请选择院校性质" size="small" style="width: 100%">
<el-option label="公办" :value="1"></el-option>
<el-option label="民办" :value="2"></el-option>
</el-select>
</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">
<app-area v-model="form.region" />
</el-form-item>
......@@ -53,9 +56,10 @@
</template>
<script>
import AppArea from '@/components/base/AppArea.vue'
import AppUniversityLevel from '@/components/base/AppUniversityLevel/index.vue'
import { createCustomer, updateCustomer } from '../api'
export default {
components: { AppArea },
components: { AppArea, AppUniversityLevel },
props: {
value: {
type: Boolean,
......@@ -76,7 +80,8 @@ export default {
name: '',
short_name: '',
source: '',
type: '',
nature: '',
universityLevel: [],
region: [],
address: '',
remark: ''
......@@ -84,6 +89,8 @@ export default {
rules: {
name: { required: true, message: '请输入客户名称', trigger: 'blur' },
source: { required: true, message: '请选择客户来源', trigger: 'change' },
nature: { required: true, message: '请选择院校性质', trigger: 'change' },
universityLevel: { required: true, message: '请选择院校层次', trigger: 'change' },
region: { required: true, message: '请选择所在地区', trigger: 'change' }
},
btnDisabled: false
......@@ -98,6 +105,10 @@ export default {
Object.keys(this.form).forEach(key => {
this.form[key] = this.info[key]
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
......@@ -109,6 +120,7 @@ export default {
this.$emit('input', false)
},
handleSubmit() {
console.log(this.form)
this.$refs.ruleForm.validate(valid => {
if (valid) {
this.info.id ? this.fetchUpdateCustomer() : this.fetchCreateCustomer()
......@@ -118,7 +130,11 @@ export default {
fetchCreateCustomer() {
const params = Object.assign({}, this.form)
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
console.log(params)
createCustomer(params)
.then(res => {
if (res.code === 0 && res.data && res.data.id) {
......@@ -136,6 +152,9 @@ export default {
fetchUpdateCustomer() {
const params = Object.assign({}, this.form)
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
updateCustomer(this.info.id, params)
.then(res => {
......
......@@ -20,6 +20,9 @@
<template v-slot:filter-region="{ params }">
<app-area v-model="params.region"></app-area>
</template>
<template v-slot:filter-universityLevel="{ params }">
<app-university-level v-model="params.universityLevel" />
</template>
<template v-slot:filter-create-by="{ params }">
<app-user-search v-model="params.created_by" :options="{ clearable: true }"></app-user-search>
</template>
......@@ -53,31 +56,33 @@
<script>
import AppUserSearch from '@/components/base/AppUserSearch.vue'
import AppArea from '@/components/base/AppArea.vue'
import AppUniversityLevel from '@/components/base/AppUniversityLevel/index.vue'
import CustomerFormDialog from '../components/CustomerFormDialog.vue'
// 接口
import { getCustomerList, deleteCustomer } from '../api'
import { options } from '@/components/base/AppUniversityLevel/options.js'
const sourceList = [
{ name: '公司资源', id: 1 },
{ name: '自己开拓', id: 2 },
{ name: '第三方介绍', id: 3 }
]
const typeList = [
{ name: '普通客户', id: 1 },
{ name: '重点客户', id: 2 }
const natureList = [
{ name: '公办', id: 1 },
{ name: '民办', id: 2 }
]
export default {
components: { AppUserSearch, AppArea, CustomerFormDialog },
components: { AppUserSearch, AppArea, AppUniversityLevel, CustomerFormDialog },
data() {
return {
staffList: [
{ name: '员工1', id: '1' },
{ name: '员工2', id: '2' }
],
typeList: [
{ name: '普通客户', id: 1 },
{ name: '重点客户', id: 2 }
],
// natureList: [
// { name: '公办', id: 1 },
// { name: '民办', id: 2 }
// ],
sourceList: [
{ name: '公司资源', id: 1 },
{ name: '自己开拓', id: 2 },
......@@ -127,8 +132,9 @@ export default {
name: '',
short_name: '',
source: '',
type: '',
nature: '',
region: [],
universityLevel: [],
created_by: '',
project_tag: '',
project_status: '',
......@@ -138,7 +144,9 @@ export default {
// created_start_time: '',
// created_end_time: '',
create_date: '',
follow_date: ''
follow_date: '',
college_type: '',
college_level: ''
}
},
filters: [
......@@ -155,13 +163,13 @@ export default {
},
{
type: 'select',
placeholder: '请选择客户分类',
prop: 'type',
options: typeList,
placeholder: '请选择院校性质',
prop: 'nature',
options: natureList,
labelKey: 'name',
valueKey: 'id',
size: 'small',
label: '客户分类:'
label: '院校性质:'
},
{
type: 'select',
......@@ -194,7 +202,8 @@ export default {
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: [
// { type: 'selection', minWidth: '40px' },
......@@ -209,14 +218,28 @@ export default {
}
},
{
prop: 'type',
label: '客户分类',
prop: 'nature',
label: '院校性质',
minWidth: '100px',
computed({ row }) {
const item = typeList.find(it => it.id === row.type) || {}
const item = natureList.find(it => it.id === row.nature) || {}
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: 'last_record_time', label: '最近跟进时间', minWidth: '150px' },
{ prop: 'project_count', label: '合作项目', minWidth: '80px' },
......@@ -267,6 +290,13 @@ export default {
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
},
// 查看
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论