修改线管理后台索池

This commit is contained in:
lcc
2025-07-15 10:49:57 +08:00
parent 7963eb36a1
commit ab3b894a3f
5 changed files with 239 additions and 12 deletions
+10
View File
@@ -41,3 +41,13 @@ export async function addCluesOptLog(data) {
} }
return Promise.reject(new Error(res.data.message)); return Promise.reject(new Error(res.data.message));
} }
export async function getSearch(params) {
const res = await request.get('/receiver/clues/search', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
+129
View File
@@ -0,0 +1,129 @@
<!-- 省市区选择组件 -->
<template>
<el-cascader
clearable
filterable
:value="value"
:options="regionsData"
:placeholder="placeholder"
popper-class="ele-pop-wrap-higher"
:props="props"
@input="updateValue"
/>
</template>
<script>
import { getRegionsData } from './load-data';
export default {
name: 'BrandSelect',
props: {
value: Array,
placeholder: String,
options: Array,
valueField: {
type: String,
validator: (val) => {
return !val || val === 'label';
}
},
type: {
type: String,
validator: (type) => {
return !type || ['provinceCity', 'province'].includes(type);
}
},
props: Object
},
data() {
return {
// 级联选择器数据
regionsData: []
};
},
methods: {
/* 更新 value */
updateValue(value) {
this.$emit('input', value);
},
/* 级联选择器数据 value 处理 */
formatData(data) {
if (this.valueField === 'label') {
return data.map((d) => {
const item = {
label: d.label,
value: d.label
};
if (d.children) {
item.children = d.children.map((c) => {
const cItem = {
label: c.label,
value: c.label
};
if (c.children) {
cItem.children = c.children.map((cc) => {
return {
label: cc.label,
value: cc.label
};
});
}
return cItem;
});
}
return item;
});
} else {
return data;
}
},
/* 省市区数据筛选 */
filterData(data) {
if (this.type === 'provinceCity') {
return this.formatData(
data.map((d) => {
const item = {
label: d.label,
value: d.value
};
if (d.children) {
item.children = d.children.map((c) => {
return {
label: c.label,
value: c.value
};
});
}
return item;
})
);
} else if (this.type === 'province') {
return this.formatData(
data.map((d) => {
return {
label: d.label,
value: d.value
};
})
);
} else {
return this.formatData(data);
}
}
},
watch: {
options: {
handler(options) {
this.regionsData = this.filterData(options ?? []);
if (!options) {
getRegionsData().then((data) => {
this.regionsData = this.filterData(data ?? []);
this.$emit('load-data-done', data);
});
}
},
immediate: true
}
}
};
</script>
@@ -0,0 +1,25 @@
import request from '@/utils/request';
import { API_BASE_URL } from '@/config/setting';
const BASE_URL = API_BASE_URL;
let reqPromise;
/**
* 获取省市区数据
*/
export function getRegionsData() {
if (!reqPromise) {
reqPromise = new Promise((resolve, reject) => {
request
.get(BASE_URL + '/common/autoBrands', {
baseURL: ''
})
.then((res) => {
resolve(res.data ?? []);
})
.catch((e) => {
reject(e);
});
});
}
return reqPromise;
}
@@ -2,6 +2,7 @@
<template> <template>
<el-cascader <el-cascader
clearable clearable
filterable
:value="value" :value="value"
:options="regionsData" :options="regionsData"
:placeholder="placeholder" :placeholder="placeholder"
@@ -76,7 +77,7 @@
return data; return data;
} }
}, },
/* 省市区数据筛选 */ /* 数据筛选 */
filterData(data) { filterData(data) {
if (this.type === 'provinceCity') { if (this.type === 'provinceCity') {
return this.formatData( return this.formatData(
+73 -11
View File
@@ -13,6 +13,53 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :md="6" :sm="12">
<el-form-item label="客户编号:">
<el-input
placeholder="请输入客户编号"
clearable
v-model="where.sid"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="线索状态:">
<el-cascader
v-model="where.status"
:options="statusList"
clearable
></el-cascader>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="省市:">
<regions-select
v-model="where.citys"
type="provinceCity"
placeholder="请选择省市"
class="ele-fluid"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="关注车型:">
<brand-select
v-model="where.brands"
type="provinceCity"
:props="{ multiple: true }"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="线索归属:">
<el-cascader
v-model="where.belong"
:options="belongOptions"
:props="{ multiple: true, checkStrictly: true }"
clearable
></el-cascader>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }"> <el-col v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }">
<el-form-item label="筛选日期:"> <el-form-item label="筛选日期:">
<el-date-picker <el-date-picker
@@ -65,27 +112,27 @@
</template> </template>
<script> <script>
import { pageClues } from '@/api/receiver/clues'; import { pageClues, getSearch } from '@/api/receiver/clues';
import RegionsSelect from '@/components/RegionsSelect/index.vue';
import BrandSelect from '@/components/BrandSelect/index.vue';
export default { export default {
name: 'receiverClues', name: 'receiverClues',
components: {}, components: { RegionsSelect, BrandSelect },
data() { data() {
return { return {
where: { where: {
title: '', title: '',
selectedCar: { citys: [],
brandId: '', brands: [],
seriesId: '', belong: []
modelId: ''
}
}, },
// 表格列配置 // 表格列配置
columns: [ columns: [
{ {
prop: 'id', prop: 'sid',
label: '编号', label: '编号',
minWidth: 40, minWidth: 100,
align: 'center', align: 'center',
showOverflowTooltip: true, showOverflowTooltip: true,
fixed: 'left' fixed: 'left'
@@ -191,10 +238,14 @@
} }
} }
] ]
} },
belongOptions: [],
statusList: []
}; };
}, },
created() {}, created() {
this.loadSearch();
},
computed: { computed: {
// 是否开启响应式布局 // 是否开启响应式布局
styleResponsive() { styleResponsive() {
@@ -202,6 +253,17 @@
} }
}, },
methods: { methods: {
loadSearch() {
getSearch()
.then((data) => {
console.log(data);
this.statusList = data.statusList;
this.belongOptions = data.belongList;
})
.catch((e) => {
this.$message.error(e.message);
});
},
/* 下拉按钮点击 */ /* 下拉按钮点击 */
dropClick(command, row) { dropClick(command, row) {
if (command === 'edit') { if (command === 'edit') {