Commit b495d97a authored by lei's avatar lei

代码格式美化

parent ac0d908a
{
"printWidth": 120,
"tabWidth": 2,
"singleQuote": true,
"semi": false,
"bracketSpacing": true,
"trailingComma": "none",
"jsxSingleQuote": true
}
<!-- 信息管理 -->
<template>
<div class="boxmain">
<div class="title">推广部门信息统计</div>
<div class="box-search">
<el-select
v-model="dateValue"
placeholder="请选择报表统计形式"
@change="setDateRange(dateValue)"
clearable
>
<el-option
v-for="item in formallyData"
:label="item.name"
:value="item.value"
/>
</el-select>
<el-date-picker
size="mini"
style="margin-left: 30px; height:32px;"
v-if="this.dateValue === 0 "
type="year"
placeholder="选择年"
v-model="preYear"
@change="yearChange"
></el-date-picker>
<el-date-picker
size="mini"
style="margin-left: 30px; height:32px;"
v-if="this.dateValue === 1 "
v-model="preMonth"
type="month"
placeholder="选择月"
value-format="timestamp"
@change="monthChange"
></el-date-picker>
<div class="data_week" ref="data_week">
<el-date-picker
class="picker"
type="week"
:editable="false"
placeholder="请选择周"
v-if="this.dateValue === 2"
:picker-options="{'firstDayOfWeek': 1}"
v-model="seletWeekValue"
format="yyyy年第WW周"
:clearable="false"
@change="changeweek"
></el-date-picker>
<div class="week-picker">
<el-input
v-if="this.dateValue === 2"
class="weekDataInput"
v-model="weekTime"
prefix-icon="el-icon-date"
placeholder="请选择日期"
:clearable="true"
></el-input>
</div>
</div>
<div class="boxmain">
<div class="title">推广部门信息统计</div>
<div class="box-search">
<el-select v-model="dateValue" placeholder="请选择报表统计形式" @change="setDateRange(dateValue)" clearable>
<el-option v-for="item in formallyData" :label="item.name" :value="item.value" />
</el-select>
<el-date-picker
size="mini"
style="margin-left: 30px; height: 32px"
v-if="this.dateValue === 0"
type="year"
placeholder="选择年"
v-model="preYear"
@change="yearChange"
></el-date-picker>
<el-date-picker
size="mini"
style="margin-left: 30px; height: 32px"
v-if="this.dateValue === 1"
v-model="preMonth"
type="month"
placeholder="选择月"
value-format="timestamp"
@change="monthChange"
></el-date-picker>
<div class="data_week" ref="data_week">
<el-date-picker
class="picker"
type="week"
:editable="false"
placeholder="请选择周"
v-if="this.dateValue === 2"
:picker-options="{ firstDayOfWeek: 1 }"
v-model="seletWeekValue"
format="yyyy年第WW周"
:clearable="false"
@change="changeweek"
></el-date-picker>
<div class="week-picker">
<el-input
v-if="this.dateValue === 2"
class="weekDataInput"
v-model="weekTime"
prefix-icon="el-icon-date"
placeholder="请选择日期"
:clearable="true"
></el-input>
</div>
</div>
<!-- <el-select
<!-- <el-select
style="margin-left: 30px;"
v-model="newManage.customerSource"
placeholder="请选择信息分类"
......@@ -74,623 +64,626 @@
/>
</el-select> -->
<treeselect
v-model="newManage.customerSource"
:options="infoTree.menus"
:load-options="loadInfoTreeMenus"
style="width:230px;margin-left:20px;"
placeholder="请选择类别"
/>
<treeselect
v-model="newManage.customerSource"
:options="infoTree.menus"
:load-options="loadInfoTreeMenus"
style="width: 230px; margin-left: 20px"
placeholder="请选择类别"
/>
<el-button
type="primary"
style="margin-left: 30px"
@click="toSearch"
icon="el-icon-share"
>
统计
</el-button>
</div>
<div class="box-top">
<div class="boxtext">
<div>今日新增信息:<span>{{this.typeManage.newToday}}</span></div>
<div>昨日新增信息:<span>{{this.typeManage.newlyIncreased}}</span></div>
</div>
</div>
<div class="box-center">
<div class="box-center-left">
<div>推广信息统计</div>
<div ref="histogram" class="chartOne" />
</div>
<div class="box-center-right">
<div>推广信息分类统计</div>
<div ref="pieChart" class="chartTwo"/>
</div>
</div>
<div class="box-bottom">
<div class="box-bottom-top">
<div class="list">数据列表</div>
<el-date-picker
:default-time="['00:00:00', '23:59:59']"
v-model="exportTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="margin-left: 30px;"
>
</el-date-picker>
<el-button
type="success"
@click="exportRecord"
icon="el-icon-share"
style="margin-left: 30px;"
>导出客户跟进情况记录</el-button>
</div>
<div class="box-bottom-table">
<el-table :data="typeManage.selectdata" style="width: 97%;margin-left: 30px;" >
<el-table-column type="index" label="序号" width="200"/>
<el-table-column prop="name" label="姓名"/>
<el-table-column prop="tel" label="电话"/>
<el-table-column prop="saleidStr" label="销售人员"/>
<el-table-column prop="classidStr" label="信息分类"/>
<el-table-column prop="useridStr" label="推广人员"/>
<el-table-column prop="inforStatus" label="信息状态">
<template slot-scope="scope">
<span v-if="scope.row.inforStatus==='0'">未成交</span>
<span v-else>已成交</span>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper"
:total="typeManage.total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
style="margin:20px 0px 20px 30px;"
/>
</div>
</div>
<el-button type="primary" style="margin-left: 30px" @click="toSearch" icon="el-icon-share"> 统计 </el-button>
</div>
<div class="box-top">
<div class="boxtext">
<div>
今日新增信息:<span>{{ this.typeManage.newToday }}</span
>
</div>
<div>
昨日新增信息:<span>{{ this.typeManage.newlyIncreased }}</span
>
</div>
</div>
</div>
<div class="box-center">
<div class="box-center-left">
<div>推广信息统计</div>
<div ref="histogram" class="chartOne" />
</div>
<div class="box-center-right">
<div>推广信息分类统计</div>
<div ref="pieChart" class="chartTwo" />
</div>
</div>
<div class="box-bottom">
<div class="box-bottom-top">
<div class="list">数据列表</div>
<el-date-picker
:default-time="['00:00:00', '23:59:59']"
v-model="exportTime"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="margin-left: 30px"
>
</el-date-picker>
<el-button type="success" @click="exportRecord" icon="el-icon-share" style="margin-left: 30px"
>导出客户跟进情况记录</el-button
>
</div>
<div class="box-bottom-table">
<el-table :data="typeManage.selectdata" style="width: 97%; margin-left: 30px">
<el-table-column type="index" label="序号" width="200" />
<el-table-column prop="name" label="姓名" />
<el-table-column prop="tel" label="电话" />
<el-table-column prop="saleidStr" label="销售人员" />
<el-table-column prop="classidStr" label="信息分类" />
<el-table-column prop="useridStr" label="推广人员" />
<el-table-column prop="inforStatus" label="信息状态">
<template slot-scope="scope">
<span v-if="scope.row.inforStatus === '0'">未成交</span>
<span v-else>已成交</span>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper"
:total="typeManage.total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
style="margin: 20px 0px 20px 30px"
/>
</div>
</div>
</div>
</template>
<script>
import axios from "axios";
import echarts from "echarts";
import {parseTime, Tools, FileStream } from "../../utils";
import {getAllCategory,deliverList,allDepartments,getEchrtsData,expRecord, expClientData} from "@/api/census.js";
import {reqInformationTreeList} from "@/api/treeMenus.js";
import axios from 'axios'
import echarts from 'echarts'
import { parseTime, Tools, FileStream } from '../../utils'
import { getAllCategory, deliverList, allDepartments, getEchrtsData, expRecord, expClientData } from '@/api/census.js'
import { reqInformationTreeList } from '@/api/treeMenus.js'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
data() {
return {
// 周选择器
seletWeekValue:"",
weekTime: "",
startTimeNum: "",
endTimeNum: "",
options: [{
value: 'zhinan',
label: '副总经理',
children: [
{
value: 'shejiyuanze',
label: '推广一部',
}, {
value: 'daohang',
label: '销售二中心',
children: [{
value: 'cexiangdaohang',
label: '销售一部'
}, {
value: 'dingbudaohang',
label: '销售二部'
},
{
value: 'san',
label: '销售三部'
}]
}]
}],
//默认x轴数据
xAxisData:['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],
//选择时间后的数组
preYear:'',
preMonth:'',
// 时间状态选择
dateValue: 2,
// 信息分类接口
newManage:{
page:1,
size:10,
total:0,
newdata:[],
customerSource:0,//信息分类
departmentValue:"",//部门选择
countPeople:"",//统计人员
countDepartment:""//统计部门
},
// 日期选择
formallyData: [
{
name: "年度",
value: 0,
},
{
name: "",
value: 1,
},
{
name: "",
value:2,
},
],
chooseVal:"",
//销售人员
salesPersonnelfrom:{
deliverAssign:[],
department:[]
},
typeManage:{
page:0,
size:10,
total:0,
selectdata:[],
dropData:[],
addDialog:false,
newToday:"",//今日新增
newlyIncreased:"",//昨日新增
editDialog:false,
echartOneData:[],
echartNewData:[],
echartTwoData:[],
},
tatilData:[],
MonthstartTime:"",
MonthendTime:"",
WeekstartTime:"",
WeekendTime:"",
// 遍历数组
foreachArr:[],
data:[],
exportTime:"",//导出时间
//
infoTree:{
menus:[{id:0, label:'信息分类', children:null}],
},
};
// 周选择器
seletWeekValue: '',
weekTime: '',
startTimeNum: '',
endTimeNum: '',
options: [
{
value: 'zhinan',
label: '副总经理',
children: [
{
value: 'shejiyuanze',
label: '推广一部'
},
{
value: 'daohang',
label: '销售二中心',
children: [
{
value: 'cexiangdaohang',
label: '销售一部'
},
{
value: 'dingbudaohang',
label: '销售二部'
},
{
value: 'san',
label: '销售三部'
}
]
}
]
}
],
// 默认x轴数据
xAxisData: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
// 选择时间后的数组
preYear: '',
preMonth: '',
// 时间状态选择
dateValue: 2,
// 信息分类接口
newManage: {
page: 1,
size: 10,
total: 0,
newdata: [],
customerSource: 0, // 信息分类
departmentValue: '', // 部门选择
countPeople: '', // 统计人员
countDepartment: '' // 统计部门
},
// 日期选择
formallyData: [
{
name: '年度',
value: 0
},
{
name: '',
value: 1
},
{
name: '',
value: 2
}
],
chooseVal: '',
//销售人员
salesPersonnelfrom: {
deliverAssign: [],
department: []
},
typeManage: {
page: 0,
size: 10,
total: 0,
selectdata: [],
dropData: [],
addDialog: false,
newToday: '', // 今日新增
newlyIncreased: '', // 昨日新增
editDialog: false,
echartOneData: [],
echartNewData: [],
echartTwoData: []
},
tatilData: [],
MonthstartTime: '',
MonthendTime: '',
WeekstartTime: '',
WeekendTime: '',
// 遍历数组
foreachArr: [],
data: [],
exportTime: '', // 导出时间
//
infoTree: {
menus: [{ id: 0, label: '信息分类', children: null }]
}
}
},
components: {Treeselect},
components: { Treeselect },
mounted() {
this.setDateRange();
this.changeweek();
this.echartshistogram = echarts.init(this.$refs.histogram);
this.echrtsOne()
this.echartspie = echarts.init(this.$refs.pieChart);
this.echrtsTwo()
this.classification()
this.getSelectInfo();
// 初始化搜索
this.toSearch();
this.setDateRange()
this.changeweek()
this.echartshistogram = echarts.init(this.$refs.histogram)
this.echrtsOne()
this.echartspie = echarts.init(this.$refs.pieChart)
this.echrtsTwo()
this.classification()
this.getSelectInfo()
// 初始化搜索
this.toSearch()
},
methods: {
// 获取分类下拉列表
getSelectInfo(){
var typeM = this.typeManage;
var params = {
page:1,
pageSize:999,
};
getAllCategory(params).then((res) => {
var dropDown = res.object.records || [];
typeM.dropData = dropDown;
});
},
// 信息分类接口
classification(params){
var params = {
page:this.newManage.page,
pageSize:this.newManage.size,
};
getAllCategory(params).then((res) => {
var newlist = res.object.records || [];
this.newManage.newdata=newlist
});
},
// 切换时间
setDateRange (val) {
this.preMonth=''
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
if(val===0){
this.preMonth=`${year}`
this.xAxisData=['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']
this.echrtsOne()
}else if(val===1){
this.preMonth=`${year}-${month}`
this.xAxisData=this.foreachArr;
this.echrtsOne()
}else if(val===2){
this.xAxisData=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
this.echrtsOne()
}
//this.dateValue = val
},
// 选择年时间
yearChange(e){
var firstDay = new Date(e);
firstDay.setDate(1);
firstDay.setMonth(0);
var lastDay = new Date(e);
lastDay.setFullYear(lastDay.getFullYear()+2);
lastDay.setDate(0);
lastDay.setMonth(-1);
var startTime = e && Tools.Dates.format.call(new Date(firstDay), 'yyyy-MM-dd HH:mm:ss') || '';
var endTime = e && Tools.Dates.format.call(new Date(lastDay.getTime()+86399000), 'yyyy-MM-dd HH:mm:ss') || '';
this.MonthstartTime=startTime
this.MonthendTime=endTime
},
// 选择月时间
monthChange(e){
var dateList = Tools.Dates.format.call(new Date(e), 'yyyy-MM').split('-');
var year = dateList[0];
var startMonth = dateList[1];
var endStamp = new Date(year, startMonth, 0).getTime()+86399000;
var startTime = e && Tools.Dates.format.call(new Date(e), 'yyyy-MM-dd HH:mm:ss') || '';
var endTime = e && Tools.Dates.format.call(new Date(endStamp), 'yyyy-MM-dd HH:mm:ss') || '';
this.MonthstartTime=startTime
this.MonthendTime=endTime
},
// 计算周时间
timestampToTime(timestamp) {
var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
let Y = date.getFullYear() + '-';
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
let D = date.getDate() + ' ';
return Y + M + D;
},
// 选择周时间
changeweek(val) {
if (val) {
var todayDay = new Date(val);
} else {
var todayDay = new Date();
}
let todayOfWeek = todayDay.getDay();
let todayOfmonth = todayDay.getMonth();
let todayOfDate = todayDay.getDate();
let spendDay = 1;
if (todayOfWeek != 0) {
spendDay = 7 - todayOfWeek;
}
this.startTimeNum = todayDay.valueOf() - (6 - spendDay) * 86400000;
this.endTimeNum = todayDay.valueOf() + spendDay * 86400000;
var startTimeStr = this.timestampToTime(this.startTimeNum); // 时间戳转字符串
var endTimeStr = this.timestampToTime(this.endTimeNum);
var startTime = Tools.Dates.format.call(new Date(startTimeStr), 'yyyy-MM-dd HH:mm:ss');
var endTime = Tools.Dates.format.call(new Date(endTimeStr+"23:59:59"), 'yyyy-MM-dd HH:mm:ss');
this.MonthstartTime=startTime
this.MonthendTime=endTime;
this.weekTime = startTimeStr + " - " + endTimeStr; // 2020-09-21~2020-09-27默认
},
// 柱状图
echrtsOne(xAxisList){
let that = this;
this.echartshistogram.setOption({
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
}
},
xAxis: [
{
type: 'category',
name: '(数量/日)',
data: that.xAxisData[0] ? that.xAxisData : (xAxisList || []),
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0,//横轴信息全部显示
margin: 10, //刻度标签与轴线之间的距离
textStyle: {
fontSize: 9, //横轴字体大小
color: "#000000",//颜色
},
},
}
],
yAxis: [
{
type:'value',//关键
scale:true,
name: '(数量/条)',
min: (value) => {
return value.min
},
max: (value) => {
return value.max
},
interval: 50,
nameTextStyle: {
color: "#000000",
fontSize: 14,
fontFamily: "Microsoft YaHei",
fontWeight: 400,
},
}
],
series: [
{
name: '增加信息总数',
type: 'bar',
barWidth : 20, //柱图宽度
color: ['#5470c6'],
data:this.typeManage.echartOneData
}
]
});
},
// 饼图
echrtsTwo(){
this.echartspie.setOption({
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [
{
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
itemStyle: {
normal: {
color: function (colors) {
var colorList = [
'#5470c6',
'#91cc75',
'#fac858',
'#ee6666',
'#73c0de',
'#3ba272'
];
return colorList[colors.dataIndex];
}
},
},
labelLine: {
show: false
},
data:this.typeManage.echartTwoData
},
]
})
},
// 请求接口根据参数不同获取数据
toSearch(){
var params = {
page:this.typeManage.page,
pageSize:this.typeManage.size,
form:this.dateValue,
startTime:this.MonthstartTime,
endTime: this.MonthendTime,
infoClassNo:this.newManage.customerSource,
};
getEchrtsData(params).then((res) => {
if(res.code ===200){
var selectArr=res.object.dataList||[]
this.typeManage.selectdata=selectArr
this.typeManage.total=res.object.total
this.typeManage.newToday=res.object.newInformationToday
this.typeManage.newlyIncreased=res.object.newInformationYesterday
this.data = JSON.parse(JSON.stringify(res).replace(/"tableArrayMonth"/g,'"tableArray"'))
this.typeManage.echartOneData=this.data.object.tableArray||[]
this.typeManage.echartTwoData=res.object.iconArray||[]
var arr=[];
for(var item of this.typeManage.echartOneData){
arr.push(item.data)
}
this.foreachArr=arr;
// 查询成功后调用echarts图一接口
this.echrtsOne(arr)
this.echrtsTwo()
}else if(res.object === 403){
var self = this;
self.$message({
type: "error",
message: "查询失败!请选择具体日期",
});
}
});
},
//获取全部信息分类分页
handleSizeChange(val) {
// 每页多少条
this.typeManage.size =val ;
this.toSearch();
},
handleCurrentChange(val) {
// 当前是多少页
this.typeManage.page = val;
this.toSearch();
},
// 导出数据表格
exportRecord(){
var params = {};
// 时间
if(this.exportTime instanceof Array) {
params.startTime = parseTime(new Date(this.exportTime[0]));
params.endTime = parseTime(new Date(this.exportTime[1]));
}
expRecord(params).then((res) => {
var file = res.object;
window.open('oa.gemho.cn:8004/customer_follow_form/'+file);
});
},
methods: {
// 获取分类下拉列表
getSelectInfo() {
var typeM = this.typeManage
var params = {
page: 1,
pageSize: 999
}
getAllCategory(params).then((res) => {
var dropDown = res.object.records || []
typeM.dropData = dropDown
})
},
// 信息分类接口
classification(params) {
var params = {
page: this.newManage.page,
pageSize: this.newManage.size
}
getAllCategory(params).then((res) => {
var newlist = res.object.records || []
this.newManage.newdata = newlist
})
},
// 切换时间
setDateRange(val) {
this.preMonth = ''
var date = new Date()
var year = date.getFullYear()
var month = date.getMonth() + 1
if (val === 0) {
this.preMonth = `${year}`
this.xAxisData = [
'一月',
'二月',
'三月',
'四月',
'五月',
'六月',
'七月',
'八月',
'九月',
'十月',
'十一月',
'十二月'
]
this.echrtsOne()
} else if (val === 1) {
this.preMonth = `${year}-${month}`
this.xAxisData = this.foreachArr
this.echrtsOne()
} else if (val === 2) {
this.xAxisData = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
this.echrtsOne()
}
// this.dateValue = val
},
// 选择年时间
yearChange(e) {
var firstDay = new Date(e)
firstDay.setDate(1)
firstDay.setMonth(0)
var lastDay = new Date(e)
lastDay.setFullYear(lastDay.getFullYear() + 2)
lastDay.setDate(0)
lastDay.setMonth(-1)
var startTime = (e && Tools.Dates.format.call(new Date(firstDay), 'yyyy-MM-dd HH:mm:ss')) || ''
var endTime = (e && Tools.Dates.format.call(new Date(lastDay.getTime() + 86399000), 'yyyy-MM-dd HH:mm:ss')) || ''
this.MonthstartTime = startTime
this.MonthendTime = endTime
},
// 选择月时间
monthChange(e) {
var dateList = Tools.Dates.format.call(new Date(e), 'yyyy-MM').split('-')
var year = dateList[0]
var startMonth = dateList[1]
var endStamp = new Date(year, startMonth, 0).getTime() + 86399000
var startTime = (e && Tools.Dates.format.call(new Date(e), 'yyyy-MM-dd HH:mm:ss')) || ''
var endTime = (e && Tools.Dates.format.call(new Date(endStamp), 'yyyy-MM-dd HH:mm:ss')) || ''
this.MonthstartTime = startTime
this.MonthendTime = endTime
},
// 计算周时间
timestampToTime(timestamp) {
var date = new Date(timestamp) // 时间戳为10位需*1000,时间戳为13位的话不需乘1000
let Y = date.getFullYear() + '-'
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
let D = date.getDate() + ' '
return Y + M + D
},
// 选择周时间
changeweek(val) {
if (val) {
var todayDay = new Date(val)
} else {
var todayDay = new Date()
}
let todayOfWeek = todayDay.getDay()
let todayOfmonth = todayDay.getMonth()
let todayOfDate = todayDay.getDate()
let spendDay = 1
if (todayOfWeek != 0) {
spendDay = 7 - todayOfWeek
}
this.startTimeNum = todayDay.valueOf() - (6 - spendDay) * 86400000
this.endTimeNum = todayDay.valueOf() + spendDay * 86400000
var startTimeStr = this.timestampToTime(this.startTimeNum) // 时间戳转字符串
var endTimeStr = this.timestampToTime(this.endTimeNum)
var startTime = Tools.Dates.format.call(new Date(startTimeStr), 'yyyy-MM-dd HH:mm:ss')
var endTime = Tools.Dates.format.call(new Date(endTimeStr + '23:59:59'), 'yyyy-MM-dd HH:mm:ss')
this.MonthstartTime = startTime
this.MonthendTime = endTime
this.weekTime = startTimeStr + ' - ' + endTimeStr // 2020-09-21~2020-09-27默认
},
// 加载信息分类列表
loadInfoTreeMenus({ action, parentNode, callback }) {
if(action === 'LOAD_CHILDREN_OPTIONS'){
reqInformationTreeList({pid:parentNode.id}).then((res) => {
if(res.code === 200){
var list = res.object.records || [];
parentNode.children = list.map(function(obj) {
if(!obj.leaf) {
obj.children = null
}; return obj
});
setTimeout(() => {
callback()
}, 100)
};
});
};
},
// 柱状图
echrtsOne(xAxisList) {
let that = this
this.echartshistogram.setOption({
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
xAxis: [
{
type: 'category',
name: '(数量/日)',
data: that.xAxisData[0] ? that.xAxisData : xAxisList || [],
axisTick: {
alignWithLabel: true
},
axisLabel: {
interval: 0, // 横轴信息全部显示
margin: 10, // 刻度标签与轴线之间的距离
textStyle: {
fontSize: 9, // 横轴字体大小
color: '#000000' // 颜色
}
}
}
],
yAxis: [
{
type: 'value', // 关键
scale: true,
name: '(数量/条)',
min: (value) => {
return value.min
},
max: (value) => {
return value.max
},
interval: 50,
nameTextStyle: {
color: '#000000',
fontSize: 14,
fontFamily: 'Microsoft YaHei',
fontWeight: 400
}
}
],
series: [
{
name: '增加信息总数',
type: 'bar',
barWidth: 20, // 柱图宽度
color: ['#5470c6'],
data: this.typeManage.echartOneData
}
]
})
},
// 饼图
echrtsTwo() {
this.echartspie.setOption({
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [
{
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
itemStyle: {
normal: {
color: function (colors) {
var colorList = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272']
return colorList[colors.dataIndex]
}
}
},
labelLine: {
show: false
},
data: this.typeManage.echartTwoData
}
]
})
},
// 请求接口根据参数不同获取数据
toSearch() {
var params = {
page: this.typeManage.page,
pageSize: this.typeManage.size,
form: this.dateValue,
startTime: this.MonthstartTime,
endTime: this.MonthendTime,
infoClassNo: this.newManage.customerSource
}
getEchrtsData(params).then((res) => {
if (res.code === 200) {
var selectArr = res.object.dataList || []
this.typeManage.selectdata = selectArr
this.typeManage.total = res.object.total
this.typeManage.newToday = res.object.newInformationToday
this.typeManage.newlyIncreased = res.object.newInformationYesterday
this.data = JSON.parse(JSON.stringify(res).replace(/"tableArrayMonth"/g, '"tableArray"'))
this.typeManage.echartOneData = this.data.object.tableArray || []
this.typeManage.echartTwoData = res.object.iconArray || []
var arr = []
for (var item of this.typeManage.echartOneData) {
arr.push(item.data)
}
this.foreachArr = arr
// 查询成功后调用echarts图一接口
this.echrtsOne(arr)
this.echrtsTwo()
} else if (res.object === 403) {
var self = this
self.$message({
type: 'error',
message: '查询失败!请选择具体日期'
})
}
})
},
// 获取全部信息分类分页
handleSizeChange(val) {
// 每页多少条
this.typeManage.size = val
this.toSearch()
},
};
handleCurrentChange(val) {
// 当前是多少页
this.typeManage.page = val
this.toSearch()
},
// 导出数据表格
exportRecord() {
var params = {}
// 时间
if (this.exportTime instanceof Array) {
params.startTime = parseTime(new Date(this.exportTime[0]))
params.endTime = parseTime(new Date(this.exportTime[1]))
}
expRecord(params).then((res) => {
var file = res.object
window.open('oa.gemho.cn:8004/customer_follow_form/' + file)
})
},
// 加载信息分类列表
loadInfoTreeMenus({ action, parentNode, callback }) {
if (action === 'LOAD_CHILDREN_OPTIONS') {
reqInformationTreeList({ pid: parentNode.id }).then((res) => {
if (res.code === 200) {
var list = res.object.records || []
parentNode.children = list.map(function (obj) {
if (!obj.leaf) {
obj.children = null
}
return obj
})
setTimeout(() => {
callback()
}, 100)
}
})
}
}
}
}
</script>
<style lang="scss" scoped>
.boxmain{
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
display: flex;
flex-direction: column;
overflow: hidden;
.boxmain {
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
display: flex;
flex-direction: column;
overflow: hidden;
}
.title{
width: 100%;
height: 75px;
display: flex;
justify-content: space-around;
align-items: center;
font-size: 24px;
font-family: Microsoft YaHei;
font-weight: 700;
color: #666666;
line-height: 150px;
.title {
width: 100%;
height: 75px;
display: flex;
justify-content: space-around;
align-items: center;
font-size: 24px;
font-family: Microsoft YaHei;
font-weight: 700;
color: #666666;
line-height: 150px;
}
.box-search {
width: 97%;
display: flex;
margin:30px 30px 30px 30px;
margin: 30px 30px 30px 30px;
}
.box-top{
width: 97%;
display: flex;
flex-direction: column;
justify-content:start;
margin: 10px 30px 10px 30px;
.box-top {
width: 97%;
display: flex;
flex-direction: column;
justify-content: start;
margin: 10px 30px 10px 30px;
}
.box-top div{
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
margin: 0px 30px 10px 0px;
.box-top div {
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
margin: 0px 30px 10px 0px;
}
.boxtext{
width: 50%;
display: flex;
justify-content: start;
align-items: center;
.boxtext {
width: 50%;
display: flex;
justify-content: start;
align-items: center;
}
.box-center{
width: 100%;
display: flex;
.box-center {
width: 100%;
display: flex;
}
.box-center-left{
width: 60%;
display: flex;
flex-direction: column;
align-items: center;
.box-center-left {
width: 60%;
display: flex;
flex-direction: column;
align-items: center;
}
.box-center-left div{
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
.box-center-left div {
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
}
.box-center-right{
width: 40%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.box-center-right {
width: 40%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.box-center-right div{
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
.box-center-right div {
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
}
.chartOne{
width: 90%;
height: 300px;
.chartOne {
width: 90%;
height: 300px;
}
.chartTwo{
width: 80%;
height: 300px;
.chartTwo {
width: 80%;
height: 300px;
}
.box-bottom{
width: 100%;
display: flex;
flex-direction: column;
.box-bottom {
width: 100%;
display: flex;
flex-direction: column;
}
.box-bottom-top{
width: 97%;
display: flex;
align-items: center;
margin:10px 30px 10px 30px;
.box-bottom-top {
width: 97%;
display: flex;
align-items: center;
margin: 10px 30px 10px 30px;
}
.list{
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
.list {
font-family: 'Arial Negreta', 'Arial Normal', 'Arial';
font-weight: 700;
font-style: normal;
font-size: 18px;
}
.export{
font-family: Microsoft YaHei;
font-size: 14px;
color: #169bd5;
text-align: center;
margin-left: 30px;
.export {
font-family: Microsoft YaHei;
font-size: 14px;
color: #169bd5;
text-align: center;
margin-left: 30px;
}
.print{
font-family: Microsoft YaHei;
font-size: 14px;
color: #169bd5;
text-align: center;
margin-left: 30px;
.print {
font-family: Microsoft YaHei;
font-size: 14px;
color: #169bd5;
text-align: center;
margin-left: 30px;
}
// 周选择器样式
.data_week {
......@@ -711,16 +704,16 @@ export default {
min-width: 40px;
}
}
.weekDataInput{
width: 250px;
.weekDataInput {
width: 250px;
}
}
::v-deep input::-webkit-outer-spin-button,
::v-deep input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
-webkit-appearance: none !important;
}
::v-deep input[type=number] {
-moz-appearance: textfield !important;
::v-deep input[type='‘number’'] {
-moz-appearance: textfield !important;
}
</style>
......@@ -3,7 +3,7 @@
<div class="dashboard-editor-container">
<github-corner class="github-corner" />
<panel-group @handleSetLineChartData="handleSetLineChartData" />
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
<el-row style="background: #fff; padding: 16px 16px 0; margin-bottom: 32px">
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row :gutter="32">
......@@ -78,28 +78,28 @@ export default {
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.dashboard-editor-container {
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
.dashboard-editor-container {
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
.github-corner {
position: absolute;
top: 0;
border: 0;
right: 0;
}
.github-corner {
position: absolute;
top: 0;
border: 0;
right: 0;
}
.chart-wrapper {
background: #fff;
padding: 16px 16px 0;
margin-bottom: 32px;
}
.chart-wrapper {
background: #fff;
padding: 16px 16px 0;
margin-bottom: 32px;
}
}
@media (max-width:1024px) {
.chart-wrapper {
padding: 8px;
}
@media (max-width: 1024px) {
.chart-wrapper {
padding: 8px;
}
}
</style>
<template>
<div class="login" :style="'background-image:url('+ Background +');'">
<h2 class="title">
<img src="../assets/images/loginlogo.png" alt="" style="margin-right: 10px;">
晶合CRM
</h2>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form">
<div class="loginTitle">
用户登录
</div>
<div class="login" :style="'background-image:url(' + Background + ');'">
<h2 class="title">
<img src="../assets/images/loginlogo.png" alt="" style="margin-right: 10px" />
晶合CRM
</h2>
<el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
label-position="left"
label-width="0px"
class="login-form"
>
<div class="loginTitle">用户登录</div>
<el-form-item prop="username">
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="请输入账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="请输入密码" @keyup.enter.native="handleLogin">
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="请输入密码"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="code">
<el-input v-model="loginForm.code" auto-complete="off" placeholder="请输入验证码" style="width: 63%" @keyup.enter.native="handleLogin">
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="请输入验证码"
style="width: 63%"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode">
<img :src="codeUrl" @click="getCode" />
</div>
</el-form-item>
<!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
<!-- <el-checkbox v-model="loginForm.rememberMe" style="margin:0 0 25px 0;">
记住我
</el-checkbox> -->
<el-form-item style="width:100%;">
<el-button :loading="loading" size="medium" type="primary" style="width:100%;" @click.native.prevent="handleLogin">
<el-form-item style="width: 100%">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width: 100%"
@click.native.prevent="handleLogin"
>
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
</el-button>
</el-form-item>
</el-form>
<!-- 底部 -->
<!-- <div v-if="$store.state.settings.showFooter" id="el-login-footer">
<!-- <div v-if="$store.state.settings.showFooter" id="el-login-footer">
<span v-html="$store.state.settings.footerTxt" />
<span></span>
<a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">{{ $store.state.settings.caseNumber }}</a>
......@@ -76,7 +99,7 @@ export default {
},
watch: {
$route: {
handler: function(route) {
handler: function (route) {
const data = route.query
if (data && data.redirect) {
this.redirect = data.redirect
......@@ -99,14 +122,14 @@ export default {
},
methods: {
getCode() {
getCodeImg().then(res => {
getCodeImg().then((res) => {
this.codeUrl = res.img
this.loginForm.uuid = res.uuid
})
},
getCookie() {
const username = Cookies.get('username')
console.log(username,"usernameusernameusername")
console.log(username, 'usernameusernameusername')
let password = Cookies.get('password')
const rememberMe = Cookies.get('rememberMe')
// 保存cookie里面的加密后的密码
......@@ -120,7 +143,7 @@ export default {
}
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
this.$refs.loginForm.validate((valid) => {
const user = {
username: this.loginForm.username,
password: this.loginForm.password,
......@@ -134,21 +157,30 @@ export default {
if (valid) {
this.loading = true
if (user.rememberMe) {
Cookies.set('username', user.username, { expires: Config.passCookieExpires })
Cookies.set('password', user.password, { expires: Config.passCookieExpires })
Cookies.set('rememberMe', user.rememberMe, { expires: Config.passCookieExpires })
Cookies.set('username', user.username, {
expires: Config.passCookieExpires
})
Cookies.set('password', user.password, {
expires: Config.passCookieExpires
})
Cookies.set('rememberMe', user.rememberMe, {
expires: Config.passCookieExpires
})
} else {
Cookies.remove('username')
Cookies.remove('password')
Cookies.remove('rememberMe')
}
this.$store.dispatch('Login', user).then(() => {
this.loading = false
this.$router.push({ path: this.redirect || '/' })
}).catch(() => {
this.loading = false
this.getCode()
})
this.$store
.dispatch('Login', user)
.then(() => {
this.loading = false
this.$router.push({ path: this.redirect || '/' })
})
.catch(() => {
this.loading = false
this.getCode()
})
} else {
console.log('error submit!!')
return false
......@@ -172,66 +204,68 @@ export default {
</script>
<style rel="stylesheet/scss" lang="scss">
.login {
display: flex;
flex-direction: column;
align-items: center;
height: 100%;
background-size: cover;
}
.title {
width: 100%;
height: 30%;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
margin-left: -25px;
font-size: 35px;
font-weight: bold;
text-shadow: 0px 1px 1px #555;
}
.login {
display: flex;
flex-direction: column;
align-items: center;
height: 100%;
background-size: cover;
}
.title {
width: 100%;
height: 30%;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
margin-left: -25px;
font-size: 35px;
font-weight: bold;
text-shadow: 0px 1px 1px #555;
}
.login-form {
border-radius: 6px;
background: #ffffff;
width: 400px;
height: 360px;
padding: 25px 25px 5px 25px;
.loginTitle{
width: 103px;
height: 25px;
text-align: center;
font-family: SourceHanSansCN-Bold;
font-weight: 700;
color: #298aed;
font-size: 24px;
line-height: 25px;
margin: 20px auto;
}
.el-input {
.login-form {
border-radius: 6px;
background: #ffffff;
width: 400px;
height: 360px;
padding: 25px 25px 5px 25px;
.loginTitle {
width: 103px;
height: 25px;
text-align: center;
font-family: SourceHanSansCN-Bold;
font-weight: 700;
color: #298aed;
font-size: 24px;
line-height: 25px;
margin: 20px auto;
}
.el-input {
height: 45px;
input {
height: 45px;
input {
height: 45px;
}
}
.input-icon{
height: 45px;width: 20px;margin-left: 2px;
}
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
.input-icon {
height: 45px;
width: 20px;
margin-left: 2px;
}
.login-code {
width: 33%;
display: inline-block;
height: 38px;
float: right;
img{
cursor: pointer;
vertical-align:middle
}
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
.login-code {
width: 33%;
display: inline-block;
height: 38px;
float: right;
img {
cursor: pointer;
vertical-align: middle;
}
}
</style>
<!-- 信息管理 -->
<template>
<div class="datamanage-wrapper">
<div class="search-wrapper">
<el-input
type="number"
v-model="tel"
style="width: 180px; margin-left: 20px"
placeholder="请输入电话"
clearable
/>
<el-select
clearable
v-model="className"
placeholder="请选择类别"
style="margin-left: 30px;"
>
<el-option
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
<el-date-picker
:default-time="['00:00:00', '23:59:59']"
style="width: 380px !important;margin-left: 30px;"
v-model="searchTime"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
/>
<el-input
v-model="salesName"
type="text"
style="width: 180px; margin-left: 20px"
placeholder="请输入销售人员"
clearable
/>
<el-button
type="success"
style="margin-left: 30px"
icon="el-icon-search"
@click="toSearch"
>搜索</el-button
>
<el-button type="primary" icon="el-icon-circle-plus" @click="addDialogData()" style="margin-left: 30px">
自动分配
</el-button>
<el-button type="primary" icon="el-icon-circle-plus" @click="manualAssignment()" style="margin-left: 30px">
手动分配
</el-button>
</div>
<div class="table-wrapper">
<el-table
:data="typeManage.selectdata"
style="width: 100%"
<div class="datamanage-wrapper">
<div class="search-wrapper">
<el-input
type="number"
v-model="tel"
style="width: 180px; margin-left: 20px"
placeholder="请输入电话"
clearable
/>
<el-select
clearable
v-model="className"
placeholder="请选择类别"
style="margin-left: 30px"
>
<el-option
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
<el-date-picker
:default-time="['00:00:00', '23:59:59']"
style="width: 380px !important; margin-left: 30px"
v-model="searchTime"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
/>
<el-input
v-model="salesName"
type="text"
style="width: 180px; margin-left: 20px"
placeholder="请输入销售人员"
clearable
/>
<el-button
type="success"
style="margin-left: 30px"
icon="el-icon-search"
@click="toSearch"
>搜索</el-button
>
<el-button
type="primary"
icon="el-icon-circle-plus"
@click="addDialogData()"
style="margin-left: 30px"
>
自动分配
</el-button>
<el-button
type="primary"
icon="el-icon-circle-plus"
@click="manualAssignment()"
style="margin-left: 30px"
>
手动分配
</el-button>
</div>
<div class="table-wrapper">
<el-table :data="typeManage.selectdata" style="width: 100%">
<el-table-column type="index" label="序号" width="80" />
<el-table-column prop="name" label="姓名" width="140" />
<el-table-column prop="tel" label="电话" width="180" />
<el-table-column prop="saleidStr" label="销售人员" width="140" />
<el-table-column prop="classidStr" label="信息分类" width="180" />
<el-table-column prop="addtime" label="时间" width="200" />
<el-table-column prop="useridStr" label="推广人员" width="160" />
<el-table-column prop="inforStatus" label="信息状态" width="180" />
<el-table-column prop="alloStatus" label="分配状态" width="180" />
<el-table-column label="操作" fixed="right" width="180">
<template slot-scope="scope">
<el-button
size="mini"
type="primary"
icon="el-icon-edit"
@click="typeEdit($event, scope.$index, scope.row)"
>编辑</el-button
>
<el-button
size="mini"
type="danger"
icon="el-icon-delete"
@click="typeDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper"
:total="typeManage.total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
style="margin-top: 20px"
/>
</div>
<el-dialog title="自动分配新增信息" :visible.sync="typeManage.addDialog">
<el-form ref="addDataForm" :model="addFormInfo.from" :rules="rules">
<el-form-item prop="type" label="信息分类" :label-width="'120px'">
<el-select
clearable
v-model="addFormInfo.from.type"
placeholder="请选择类别"
filterable
allow-create
>
<el-table-column type="index" label="序号" width="80" />
<el-table-column prop="name" label="姓名" width="140" />
<el-table-column prop="tel" label="电话" width="180" />
<el-table-column prop="saleidStr" label="销售人员" width="140" />
<el-table-column prop="classidStr" label="信息分类" width="180" />
<el-table-column prop="addtime" label="时间" width="200" />
<el-table-column prop="useridStr" label="推广人员" width="160" />
<el-table-column prop="inforStatus" label="信息状态" width="180" />
<el-table-column prop="alloStatus" label="分配状态" width="180" />
<el-table-column label="操作" fixed="right" width="180">
<template slot-scope="scope">
<el-button
size="mini"
type="primary"
icon="el-icon-edit"
@click="typeEdit($event, scope.$index, scope.row)"
>编辑</el-button
>
<el-button
size="mini"
type="danger"
icon="el-icon-delete"
@click="typeDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper"
:total="typeManage.total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
style="margin-top: 20px;"
/>
<el-option
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名">
<el-input v-model="addFormInfo.from.name" type="text" clearable />
</el-form-item>
<div>
<el-form-item prop="qq" label="QQ号">
<el-input v-model="addFormInfo.from.qq" clearable />
</el-form-item>
</div>
</div>
<div class="contact">
<el-form-item prop="telephone" label="电话">
<el-input
v-model="addFormInfo.from.telephone"
clearable
type="number"
/>
</el-form-item>
<div>
<el-form-item prop="wechatNumber" label="微信号">
<el-input v-model="addFormInfo.from.wechatNumber" clearable />
</el-form-item>
</div>
</div>
<el-dialog title="自动分配新增信息" :visible.sync="typeManage.addDialog">
<el-form
ref="addDataForm"
:model="addFormInfo.from"
:rules="rules"
<el-form-item
prop="corporate"
label="公司名称"
style="margin-left: 67px; margin-top: 10px"
>
<el-input
v-model="addFormInfo.from.corporate"
clearable
style="width: 80% !important"
/>
</el-form-item>
<el-form-item
label="需求描述:"
autosize
prop="description"
style="margin-left: 67px; margin-top: 10px"
>
<el-input
type="textarea"
v-model="addFormInfo.from.description"
:rows="5"
style="width: 80% !important"
></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button
type="primary"
@click="uploadAddForm"
:loading="addFormInfo.flag === 0"
>确定</el-button
>
</div>
</el-dialog>
<el-dialog title="手动分配新增信息" :visible.sync="typeManage.manualDialog">
<el-form ref="manuaDataForm" :model="addFormInfo.from" :rules="rules">
<el-form-item prop="type" label="信息分类" :label-width="'120px'">
<el-select
clearable
v-model="addFormInfo.from.type"
placeholder="请选择类别"
filterable
allow-create
>
<el-option
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<el-form-item
prop="changesalesman"
label="选择销售人员"
style="margin-left: 30px"
>
<el-select
v-model="addFormInfo.from.changesalesman"
clearable
placeholder="请选择销售人员"
>
<el-form-item prop="type" label="信息分类" :label-width="'120px'">
<el-select
clearable
v-model="addFormInfo.from.type"
placeholder="请选择类别"
filterable
allow-create
>
<el-option
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
<el-option
v-for="item in addFormInfo.from.deliverAssign"
:key="item.nickName"
:label="item.nickName"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名">
<el-input v-model="addFormInfo.from.name" type="text" clearable />
</el-form-item>
<div>
<el-form-item prop="qq" label="QQ号">
<el-input v-model="addFormInfo.from.qq" clearable />
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名">
<el-input v-model="addFormInfo.from.name" type="text" clearable/>
</el-form-item>
<div>
<el-form-item prop="qq" label="QQ号" >
<el-input v-model="addFormInfo.from.qq" clearable/>
</el-form-item>
</div>
</div>
<div class="contact">
<el-form-item prop="telephone" label="电话" >
<el-input
v-model="addFormInfo.from.telephone"
clearable
type="number"/>
</el-form-item>
<div>
<el-form-item prop="wechatNumber" label="微信号">
<el-input v-model="addFormInfo.from.wechatNumber" clearable/>
</el-form-item>
</div>
</div>
<el-form-item prop="corporate" label="公司名称" style="margin-left: 67px;margin-top:10px;">
<el-input v-model="addFormInfo.from.corporate" clearable style="width: 80%!important;"/>
</div>
</div>
<div class="contact">
<el-form-item prop="telephone" label="电话">
<el-input
v-model="addFormInfo.from.telephone"
clearable
type="number"
/>
</el-form-item>
<div>
<el-form-item prop="wechatNumber" label="微信号">
<el-input v-model="addFormInfo.from.wechatNumber" clearable />
</el-form-item>
<el-form-item label="需求描述:" autosize prop="description" style="margin-left: 67px;margin-top:10px;">
<el-input type="textarea" v-model="addFormInfo.from.description"
:rows="5"
style="width: 80%!important;"></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button type="primary" @click="uploadAddForm" :loading="addFormInfo.flag === 0">确定</el-button>
</div>
</el-dialog>
<el-dialog title="手动分配新增信息" :visible.sync="typeManage.manualDialog">
<el-form
ref="manuaDataForm"
:model="addFormInfo.from"
:rules="rules"
>
<el-form-item prop="type" label="信息分类" :label-width="'120px'">
<el-select
clearable
v-model="addFormInfo.from.type"
placeholder="请选择类别"
filterable
allow-create
>
<el-option
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<el-form-item prop="changesalesman" label="选择销售人员" style="margin-left: 30px;">
<el-select v-model="addFormInfo.from.changesalesman" clearable placeholder="请选择销售人员">
<el-option
v-for="item in addFormInfo.from.deliverAssign"
:key="item.nickName"
:label="item.nickName"
:value="item.userId">
</el-option>
</el-select>
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名">
<el-input v-model="addFormInfo.from.name" type="text" clearable/>
</el-form-item>
<div>
<el-form-item prop="qq" label="QQ号" >
<el-input v-model="addFormInfo.from.qq" clearable/>
</el-form-item>
</div>
</div>
<div class="contact">
<el-form-item prop="telephone" label="电话" >
<el-input
v-model="addFormInfo.from.telephone"
clearable
type="number"/>
</el-form-item>
<div>
<el-form-item prop="wechatNumber" label="微信号">
<el-input v-model="addFormInfo.from.wechatNumber" clearable/>
</el-form-item>
</div>
</div>
<el-form-item prop="corporate" label="公司名称" style="margin-left: 67px;margin-top:10px;">
<el-input v-model="addFormInfo.from.corporate" clearable style="width: 80%!important;"/>
</el-form-item>
<el-form-item label="需求描述:" autosize prop="description" style="margin-left: 67px;margin-top:10px;">
<el-input type="textarea" v-model="addFormInfo.from.description"
:rows="5"
style="width: 80%!important;"></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button type="primary" @click="manualuploadAddForm" :loading="addFormInfo.flag === 0">确定</el-button>
</div>
</el-dialog>
<el-dialog title="编辑信息" :visible.sync="editDialog">
<el-form
ref="addDataForm"
:model="editFormInfo.from"
:rules="rules"
>
<el-form-item prop="type" label="信息分类" :label-width="'120px'">
<el-select
</div>
<el-form-item
prop="corporate"
label="公司名称"
style="margin-left: 67px; margin-top: 10px"
>
<el-input
v-model="addFormInfo.from.corporate"
clearable
style="width: 80% !important"
/>
</el-form-item>
<el-form-item
label="需求描述:"
autosize
prop="description"
style="margin-left: 67px; margin-top: 10px"
>
<el-input
type="textarea"
v-model="addFormInfo.from.description"
:rows="5"
style="width: 80% !important"
></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button
type="primary"
@click="manualuploadAddForm"
:loading="addFormInfo.flag === 0"
>确定</el-button
>
</div>
</el-dialog>
<el-dialog title="编辑信息" :visible.sync="editDialog">
<el-form ref="addDataForm" :model="editFormInfo.from" :rules="rules">
<el-form-item prop="type" label="信息分类" :label-width="'120px'">
<el-select
v-model="editFormInfo.from.type"
placeholder="请选择类别"
filterable
allow-create
clearable
clearable
>
<el-option
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
v-for="item in typeManage.dropData"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名">
<el-input v-model="editFormInfo.from.name" type="text" clearable/>
</el-form-item>
<el-form-item prop="telephone" label="电话" >
<el-input
v-model="editFormInfo.from.telephone" type="number" clearable v-bind:readonly="pMobile"/>
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名">
<el-input v-model="editFormInfo.from.name" type="text" clearable />
</el-form-item>
<el-form-item prop="telephone" label="电话">
<el-input
v-model="editFormInfo.from.telephone"
type="number"
clearable
v-bind:readonly="pMobile"
/>
</el-form-item>
</div>
<div class="contact">
<div>
<el-form-item prop="qq" label="QQ号">
<el-input v-model="editFormInfo.from.qq" clearable />
</el-form-item>
</div>
<div class="contact">
<div>
<el-form-item prop="qq" label="QQ号" >
<el-input v-model="editFormInfo.from.qq"
clearable/>
</el-form-item>
</div>
<div>
<el-form-item prop="wechatNumber" label="微信号">
<el-input v-model="editFormInfo.from.wechatNumber" clearable v-bind:readonly="mPassport"/>
</el-form-item>
</div>
</div>
<el-form-item prop="corporate" label="公司名称" style="margin-left: 67px;margin-top:10px;">
<el-input v-model="editFormInfo.from.corporate" style="width: 80%!important;" clearable/>
</el-form-item>
<el-form-item label="需求描述:" prop="description" style="margin-left: 67px;margin-top:10px;">
<el-input type="textarea" v-model="editFormInfo.from.description"
:rows="5"
style="width: 80%!important;"
></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button type="primary" @click="editConfig" :loading="editFormInfo.flag === 0">确定</el-button>
</div>
</el-dialog>
<div>
<el-form-item prop="wechatNumber" label="微信号">
<el-input
v-model="editFormInfo.from.wechatNumber"
clearable
v-bind:readonly="mPassport"
/>
</el-form-item>
</div>
</div>
<el-form-item
prop="corporate"
label="公司名称"
style="margin-left: 67px; margin-top: 10px"
>
<el-input
v-model="editFormInfo.from.corporate"
style="width: 80% !important"
clearable
/>
</el-form-item>
<el-form-item
label="需求描述:"
prop="description"
style="margin-left: 67px; margin-top: 10px"
>
<el-input
type="textarea"
v-model="editFormInfo.from.description"
:rows="5"
style="width: 80% !important"
></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button
type="primary"
@click="editConfig"
:loading="editFormInfo.flag === 0"
>确定</el-button
>
</div>
</el-dialog>
</div>
</template>
<script>
import axios from "axios";
import {
getAllcategory,getNamecategory,addcategory,editcategory,deletecategory,getAllCategory,deliverList,manualInfo} from "@/api/management.js";
getAllcategory,
getNamecategory,
addcategory,
editcategory,
deletecategory,
getAllCategory,
deliverList,
manualInfo,
} from "@/api/management.js";
import { parseTime } from "../../utils";
export default {
data() {
return {
// 微信电话二选一
pMobile:false,
mPassport:false,
// 获取其他页数据
newManage:{
page:1,
size:10,
total:0,
newdata:[],
},
//1.获取全部信息分类
typeManage:{
page:1,
size:10,
total:0,
selectdata:[],
dropData:[],
addDialog:false,
manualDialog:false,
fromData:[]
},
//2.根据名称获取信息分类
tel: '',//电话
className:'',//信息分类
salesName:'',//销售人员
searchTime: "",//时间
// 新增
editDialog:false,
addFormInfo:{
from:{
localdata:[],
type:'',
name:'',
telephone:'',
qq:'',
wechatNumber:'',
corporate:'',
description:'',
user:'',
adduserId:'',
putdata:[],
deliverAssign:[],
changesalesman:''
},
flag:1,
},
// 4.编辑信息分类
editFormInfo: {
from:{
type:'',
name:'',
telephone:'',
qq:'',
wechatNumber:'',
corporate:'',
description:'',
userId:'',
id:'',
listid:'',
pushdata:[],
},
flag:1,
},
// 验证
rules:{
name: [{ required: true, message: "请输入姓名", trigger: "blur"}],
telephone: [
{
// required: true, message: "请输入正确的联系方式",
pattern:/^1[3456789]\d{9}$/,message: "请输入正确的联系方式", trigger: "blur"}],
qq: [
// { required: true, message: 'QQ号只可输入5-11位数字', trigger: 'change' },
{ pattern: /^[1-9][0-9]{0,12}$/, message: 'QQ号只可输入5-11位数字', trigger: 'change' },
{ pattern: /^\d{5,12}$/, message: 'QQ号只可输入5-11位数字', trigger: 'change' }
],
// wechatNumber: [
// {pattern:/^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/,message: "请输入正确的微信号码",trigger: "blur"},
// ],
wechatNumber: [
{message: "请输入正确的微信号码",trigger: "blur"},
],
type: [{ required: true, message: "请选择类别", trigger: "blur"}],
changesalesman: [{ required: true, message: "请选择销售人员", trigger: "blur"}],
// corporate: [{ required: true, message: "请输入公司名称", trigger: "blur"}],
},
// 微信电话二选一
pMobile: false,
mPassport: false,
// 获取其他页数据
newManage: {
page: 1,
size: 10,
total: 0,
newdata: [],
},
//1.获取全部信息分类
typeManage: {
page: 1,
size: 10,
total: 0,
selectdata: [],
dropData: [],
addDialog: false,
manualDialog: false,
fromData: [],
},
//2.根据名称获取信息分类
tel: "", //电话
className: "", //信息分类
salesName: "", //销售人员
searchTime: "", //时间
// 新增
editDialog: false,
addFormInfo: {
from: {
localdata: [],
type: "",
name: "",
telephone: "",
qq: "",
wechatNumber: "",
corporate: "",
description: "",
user: "",
adduserId: "",
putdata: [],
deliverAssign: [],
changesalesman: "",
},
flag: 1,
},
// 4.编辑信息分类
editFormInfo: {
from: {
type: "",
name: "",
telephone: "",
qq: "",
wechatNumber: "",
corporate: "",
description: "",
userId: "",
id: "",
listid: "",
pushdata: [],
},
flag: 1,
},
// 验证
rules: {
name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
telephone: [
{
// required: true, message: "请输入正确的联系方式",
pattern: /^1[3456789]\d{9}$/,
message: "请输入正确的联系方式",
trigger: "blur",
},
],
qq: [
// { required: true, message: 'QQ号只可输入5-11位数字', trigger: 'change' },
{
pattern: /^[1-9][0-9]{0,12}$/,
message: "QQ号只可输入5-11位数字",
trigger: "change",
},
{
pattern: /^\d{5,12}$/,
message: "QQ号只可输入5-11位数字",
trigger: "change",
},
],
// wechatNumber: [
// {pattern:/^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/,message: "请输入正确的微信号码",trigger: "blur"},
// ],
wechatNumber: [{ message: "请输入正确的微信号码", trigger: "blur" }],
type: [{ required: true, message: "请选择类别", trigger: "blur" }],
changesalesman: [
{ required: true, message: "请选择销售人员", trigger: "blur" },
],
// corporate: [{ required: true, message: "请输入公司名称", trigger: "blur"}],
},
};
},
mounted() {
this.allManagement();
this.classification();
this.getSelectInfo();
// 销售人员列表
deliverList().then(function(res){
var deliverData = res.object||[];
this.addFormInfo.from.deliverAssign = deliverData;
}.bind(this));
this.classification();
this.getSelectInfo();
// 销售人员列表
deliverList().then(
function (res) {
var deliverData = res.object || [];
this.addFormInfo.from.deliverAssign = deliverData;
}.bind(this)
);
},
watch:{
computer: {
deep: true,
handler: function (val) {
if (val.length > 0) {
this.mPassport = true
} else {
this.mPassport = false
}
watch: {
computer: {
deep: true,
handler: function (val) {
if (val.length > 0) {
this.mPassport = true;
} else {
this.mPassport = false;
}
},
mobile: {
deep: true,
handler: function (val) {
if (val.length > 0) {
this.pMobile = true
} else {
this.pMobile = false
}
},
mobile: {
deep: true,
handler: function (val) {
if (val.length > 0) {
this.pMobile = true;
} else {
this.pMobile = false;
}
},
},
},
methods: {
// 获取其他页数据
classification(params){
var params = {
page:this.newManage.page,
pageSize:this.newManage.size,
};
getAllCategory(params).then((res) => {
var newlist = res.object.records || [];
this.newManage.newdata = newlist;
});
},
// 获取分类下拉列表
getSelectInfo(){
var typeM = this.typeManage;
var params = {
page:1,
pageSize:999,
};
getAllCategory(params).then((res) => {
var dropDown = res.object.records || [];
typeM.dropData = dropDown;
});
},
//1.获取全部信息管理
allManagement(params){
var typeM = this.typeManage;
var params = {
page:typeM.page,
pageSize:typeM.size,
};
getAllcategory(params).then((res) => {
var selectlist = res.object.records || [];
typeM.selectdata = selectlist;
typeM.total = res.object.total;
});
},
//获取全部信息管理分页
handleSizeChange(val) {
// 每页多少条
this.typeManage.size =val ;
this.toSearch()
},
handleCurrentChange(val) {
// 当前是多少页
this.typeManage.page = val;
this.toSearch()
},
//2.根据名称获取信息分类
toSearch() {
var typeM = this.typeManage;
var param = {
page: this.typeManage.page,
pageSize: this.typeManage.size,
};
this.tel && (param.tel = this.tel);
this.salesName && (param.salesName = this.salesName);
this.className && (param.className = this.className);
// 时间
if (this.searchTime instanceof Array) {
param.startTime = parseTime(new Date(this.searchTime[0]));
param.endTime = parseTime(new Date(this.searchTime[1]));
}
var typeM = this.typeManage;
getNamecategory(param).then((res) => {
var selectlist = res.object.records || [];
typeM.selectdata = selectlist;
typeM.total = res.object.total;
});
},
// 新增
addDialogData(){
// username
this.typeManage.addDialog = true;
this.addFormInfo.from.user=this.$store.getters.user.username;
// userId
this.addFormInfo.from.adduserId=this.$store.getters.user.id
},
uploadAddForm(){
if(this.addFormInfo.flag){
this.addFormInfo.flag = 0;
this.$refs.addDataForm.validate((valid) => {
if (valid) {
var params = {
classidStr:this.addFormInfo.from.type,
name:this.addFormInfo.from.name,
tel:this.addFormInfo.from.telephone,
qqnub:this.addFormInfo.from.qq,
weixin:this.addFormInfo.from.wechatNumber,
company:this.addFormInfo.from.corporate,
remarks:this.addFormInfo.from.description,
username:this.addFormInfo.from.user,
userId:this.addFormInfo.from.adduserId
};
if((this.addFormInfo.from.telephone=='')&& (this.addFormInfo.from.wechatNumber=='')){
this.$message({
type: "error",
message: "电话或微信号必须填一个",
});
}
var self = this;
addcategory(params).then((res) => {
this.typeManage.addDialog = false;
setTimeout(function(){
self.addFormInfo.flag = 1;
}, 300);
if(res.code === 200){
this.allManagement();
self.$message({
type: "success",
message: "新增成功",
});
}
else if(res.code === 401){
self.$message({
type: "error",
message: "已有客户",
});
}else if(res.code === 402){
self.$message({
type: "error",
message: "没有销售被分配了该类别的权重",
});
}else{
self.$message({
type: "error",
message: "新增失败",
});
}
});
}
})
}
},
// 手动分配新增信息
manualAssignment(){
// username
this.typeManage.manualDialog = true;
this.addFormInfo.from.user=this.$store.getters.user.username;
// userId
this.addFormInfo.from.adduserId=this.$store.getters.user.id;
},
manualuploadAddForm(){
if(this.addFormInfo.flag){
this.addFormInfo.flag = 0;
this.$refs.manuaDataForm.validate((valid) => {
if (valid) {
var params = {
classidStr:this.addFormInfo.from.type,
name:this.addFormInfo.from.name,
tel:this.addFormInfo.from.telephone,
qqnub:this.addFormInfo.from.qq,
weixin:this.addFormInfo.from.wechatNumber,
company:this.addFormInfo.from.corporate,
remarks:this.addFormInfo.from.description,
username:this.addFormInfo.from.user,
userId:this.addFormInfo.from.adduserId,
saleidStr:this.addFormInfo.from.changesalesman,
};
if((this.addFormInfo.from.telephone=='')&& (this.addFormInfo.from.wechatNumber=='')){
this.$message({
type: "error",
message: "电话或微信号必须填一个",
});
}
var self = this;
manualInfo(params).then((res) => {
this.typeManage.manualDialog = false;
setTimeout(function(){
self.addFormInfo.flag = 1;
}, 300);
if(res.code === 200){
this.allManagement();
self.$message({
type: "success",
message: "新增成功",
});
}
else if(res.code === 401){
self.$message({
type: "error",
message: "已有客户",
});
}else{
self.$message({
type: "error",
message: "新增失败",
});
}
});
}
})
}
},
// 编辑
typeEdit(e, index, item){
// userId
this.editFormInfo.from.userData=this.$store.getters.user.id
this.editDialog = true
this.editFormInfo.from.type=item.classidStr
this.editFormInfo.from.name=item.name
this.editFormInfo.from.telephone=item.tel
this.editFormInfo.from.wechatNumber=item.weixin
this.editFormInfo.from.corporate=item.company
this.editFormInfo.from.description=item.remarks
this.editFormInfo.from.qq=item.qqnub
this.editFormInfo.from.listid=item.id
},
editConfig(){
if(this.editFormInfo.flag){
this.editFormInfo.flag = 0;
this.$refs.addDataForm.validate((valid) => {
if (valid) {
var params = {
classidStr:this.editFormInfo.from.type,
name:this.editFormInfo.from.name,
tel:this.editFormInfo.from.telephone,
qqnub:this.editFormInfo.from.qq,
weixin:this.editFormInfo.from.wechatNumber,
company:this.editFormInfo.from.corporate,
remarks:this.editFormInfo.from.description,
userId:this.editFormInfo.from.userData,
id:this.editFormInfo.from.listid
};
var self = this;
editcategory(params).then((res) => {
this.editDialog = false;
setTimeout(function(){
self.editFormInfo.flag = 1;
}, 300);
this.allManagement();
self.$message({
type: "success",
message: "编辑成功",
});
});
}
})
}
methods: {
// 获取其他页数据
classification(params) {
var params = {
page: this.newManage.page,
pageSize: this.newManage.size,
};
getAllCategory(params).then((res) => {
var newlist = res.object.records || [];
this.newManage.newdata = newlist;
});
},
// 获取分类下拉列表
getSelectInfo() {
var typeM = this.typeManage;
var params = {
page: 1,
pageSize: 999,
};
getAllCategory(params).then((res) => {
var dropDown = res.object.records || [];
typeM.dropData = dropDown;
});
},
//1.获取全部信息管理
allManagement(params) {
var typeM = this.typeManage;
var params = {
page: typeM.page,
pageSize: typeM.size,
};
getAllcategory(params).then((res) => {
var selectlist = res.object.records || [];
typeM.selectdata = selectlist;
typeM.total = res.object.total;
});
},
//获取全部信息管理分页
handleSizeChange(val) {
// 每页多少条
this.typeManage.size = val;
this.toSearch();
},
handleCurrentChange(val) {
// 当前是多少页
this.typeManage.page = val;
this.toSearch();
},
//2.根据名称获取信息分类
toSearch() {
var typeM = this.typeManage;
var param = {
page: this.typeManage.page,
pageSize: this.typeManage.size,
};
this.tel && (param.tel = this.tel);
this.salesName && (param.salesName = this.salesName);
this.className && (param.className = this.className);
// 时间
if (this.searchTime instanceof Array) {
param.startTime = parseTime(new Date(this.searchTime[0]));
param.endTime = parseTime(new Date(this.searchTime[1]));
}
var typeM = this.typeManage;
getNamecategory(param).then((res) => {
var selectlist = res.object.records || [];
typeM.selectdata = selectlist;
typeM.total = res.object.total;
});
},
// 新增
addDialogData() {
// username
this.typeManage.addDialog = true;
this.addFormInfo.from.user = this.$store.getters.user.username;
// userId
this.addFormInfo.from.adduserId = this.$store.getters.user.id;
},
uploadAddForm() {
if (this.addFormInfo.flag) {
this.addFormInfo.flag = 0;
this.$refs.addDataForm.validate((valid) => {
if (valid) {
var params = {
classidStr: this.addFormInfo.from.type,
name: this.addFormInfo.from.name,
tel: this.addFormInfo.from.telephone,
qqnub: this.addFormInfo.from.qq,
weixin: this.addFormInfo.from.wechatNumber,
company: this.addFormInfo.from.corporate,
remarks: this.addFormInfo.from.description,
username: this.addFormInfo.from.user,
userId: this.addFormInfo.from.adduserId,
};
if (
this.addFormInfo.from.telephone == "" &&
this.addFormInfo.from.wechatNumber == ""
) {
this.$message({
type: "error",
message: "电话或微信号必须填一个",
});
}
var self = this;
addcategory(params).then((res) => {
this.typeManage.addDialog = false;
setTimeout(function () {
self.addFormInfo.flag = 1;
}, 300);
if (res.code === 200) {
this.allManagement();
self.$message({
type: "success",
message: "新增成功",
});
} else if (res.code === 401) {
self.$message({
type: "error",
message: "已有客户",
});
} else if (res.code === 402) {
self.$message({
type: "error",
message: "没有销售被分配了该类别的权重",
});
} else {
self.$message({
type: "error",
message: "新增失败",
});
}
});
}
});
}
},
// 手动分配新增信息
manualAssignment() {
// username
this.typeManage.manualDialog = true;
this.addFormInfo.from.user = this.$store.getters.user.username;
// userId
this.addFormInfo.from.adduserId = this.$store.getters.user.id;
},
manualuploadAddForm() {
if (this.addFormInfo.flag) {
this.addFormInfo.flag = 0;
this.$refs.manuaDataForm.validate((valid) => {
if (valid) {
var params = {
classidStr: this.addFormInfo.from.type,
name: this.addFormInfo.from.name,
tel: this.addFormInfo.from.telephone,
qqnub: this.addFormInfo.from.qq,
weixin: this.addFormInfo.from.wechatNumber,
company: this.addFormInfo.from.corporate,
remarks: this.addFormInfo.from.description,
username: this.addFormInfo.from.user,
userId: this.addFormInfo.from.adduserId,
saleidStr: this.addFormInfo.from.changesalesman,
};
if (
this.addFormInfo.from.telephone == "" &&
this.addFormInfo.from.wechatNumber == ""
) {
this.$message({
type: "error",
message: "电话或微信号必须填一个",
});
}
var self = this;
manualInfo(params).then((res) => {
this.typeManage.manualDialog = false;
setTimeout(function () {
self.addFormInfo.flag = 1;
}, 300);
if (res.code === 200) {
this.allManagement();
self.$message({
type: "success",
message: "新增成功",
});
} else if (res.code === 401) {
self.$message({
type: "error",
message: "已有客户",
});
} else {
self.$message({
type: "error",
message: "新增失败",
});
}
});
}
});
}
},
// 编辑
typeEdit(e, index, item) {
// userId
this.editFormInfo.from.userData = this.$store.getters.user.id;
this.editDialog = true;
this.editFormInfo.from.type = item.classidStr;
this.editFormInfo.from.name = item.name;
this.editFormInfo.from.telephone = item.tel;
this.editFormInfo.from.wechatNumber = item.weixin;
this.editFormInfo.from.corporate = item.company;
this.editFormInfo.from.description = item.remarks;
this.editFormInfo.from.qq = item.qqnub;
this.editFormInfo.from.listid = item.id;
},
editConfig() {
if (this.editFormInfo.flag) {
this.editFormInfo.flag = 0;
this.$refs.addDataForm.validate((valid) => {
if (valid) {
var params = {
classidStr: this.editFormInfo.from.type,
name: this.editFormInfo.from.name,
tel: this.editFormInfo.from.telephone,
qqnub: this.editFormInfo.from.qq,
weixin: this.editFormInfo.from.wechatNumber,
company: this.editFormInfo.from.corporate,
remarks: this.editFormInfo.from.description,
userId: this.editFormInfo.from.userData,
id: this.editFormInfo.from.listid,
};
var self = this;
editcategory(params).then((res) => {
this.editDialog = false;
setTimeout(function () {
self.editFormInfo.flag = 1;
}, 300);
this.allManagement();
self.$message({
type: "success",
message: "编辑成功",
});
});
}
});
}
},
// 删除
typeDelete(item) {
var id = item.id;
this.$confirm("销售部门已记录该客户,删除该条信息后,后续无法添加该客户相关信息,请谨慎操作", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
deletecategory({id:id}).then(
(res) => {
this.$message({
message: "删除成功",
type: "success",
});
this.allManagement();
},
() => {
this.$message.error("删除失败");
}
);
});
},
typeDelete(item) {
var id = item.id;
this.$confirm(
"销售部门已记录该客户,删除该条信息后,后续无法添加该客户相关信息,请谨慎操作",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
).then(() => {
deletecategory({ id: id }).then(
(res) => {
this.$message({
message: "删除成功",
type: "success",
});
this.allManagement();
},
() => {
this.$message.error("删除失败");
}
);
});
},
},
};
</script>
......@@ -712,11 +802,11 @@ export default {
}
}
.datamanage-wrapper {
width: 100%;
height:100%;
padding: 10px;
border-radius: 5px;
background-color: #f5f6fb;
width: 100%;
height: 100%;
padding: 10px;
border-radius: 5px;
background-color: #f5f6fb;
.tool-wrapper {
padding: 10px;
border-radius: 5px;
......@@ -736,18 +826,16 @@ export default {
background: #fff;
}
}
.contact{
width: 100%;
display: flex;
justify-content: space-around;
.contact {
width: 100%;
display: flex;
justify-content: space-around;
}
::v-deep input::-webkit-outer-spin-button,
::v-deep input::-webkit-outer-spin-button,
::v-deep input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
-webkit-appearance: none !important;
}
::v-deep input[type=number] {
-moz-appearance: textfield !important;
::v-deep input[type="‘number’"] {
-moz-appearance: textfield !important;
}
</style>
......@@ -49,27 +49,11 @@
placeholder="请输入销售人员"
clearable
/>
<el-button
type="success"
style="margin-left: 30px"
icon="el-icon-search"
@click="toSearch"
>搜索</el-button
>
<el-button
type="primary"
icon="el-icon-circle-plus"
@click="addDialogData()"
style="margin-left: 30px"
>
<el-button type="success" style="margin-left: 30px" icon="el-icon-search" @click="toSearch">搜索</el-button>
<el-button type="primary" icon="el-icon-circle-plus" @click="addDialogData()" style="margin-left: 30px">
自动分配
</el-button>
<el-button
type="primary"
icon="el-icon-circle-plus"
@click="manualAssignment()"
style="margin-left: 30px"
>
<el-button type="primary" icon="el-icon-circle-plus" @click="manualAssignment()" style="margin-left: 30px">
手动分配
</el-button>
</div>
......@@ -88,8 +72,8 @@
<i v-if="item.icon" :class="item.icon" style="font-size:16px;"></i>{{sitem[item.key||'name']}}
</span>
</template>
</template>
</el-table-column> -->
</template>
</el-table-column> -->
<!-- <el-table-column prop="classidStr" label="信息分类" width="120" /> -->
<el-table-column prop="classidStr" label="信息分类" width="120">
<template slot-scope="scope">
......@@ -106,20 +90,10 @@
<el-table-column prop="alloStatus" label="分配状态" width="180" />
<el-table-column label="操作" fixed="right" width="180">
<template slot-scope="scope">
<el-button
size="mini"
type="primary"
icon="el-icon-edit"
@click="typeEdit(scope.$index, scope.row)"
<el-button size="mini" type="primary" icon="el-icon-edit" @click="typeEdit(scope.$index, scope.row)"
>编辑</el-button
>
<el-button
size="mini"
type="danger"
icon="el-icon-delete"
@click="typeDelete(scope.row)"
>删除</el-button
>
<el-button size="mini" type="danger" icon="el-icon-delete" @click="typeDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
......@@ -158,17 +132,8 @@
/>
</el-form-item>
<div class="contact1">
<el-form-item
prop="eCommerceId"
label="电商ID"
:label-width="'100px'"
>
<el-input
v-model="addFormInfo.from.eCommerceId"
style="width: 180px"
type="text"
clearable
/>
<el-form-item prop="eCommerceId" label="电商ID" :label-width="'100px'">
<el-input v-model="addFormInfo.from.eCommerceId" style="width: 180px" type="text" clearable />
</el-form-item>
<el-form-item label="是否是内蒙的信息" :label-width="'160px'">
<el-radio-group v-model="addFormInfo.from.isNeiMeng">
......@@ -193,59 +158,33 @@
<el-row>
<el-col :span="12">
<el-form-item prop="telephone" label="电话" :label-width="'100px'">
<el-input
v-model="addFormInfo.from.telephone"
clearable
type="number"
/>
<el-input v-model="addFormInfo.from.telephone" clearable type="number" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
prop="wechatNumber"
label="微信号"
:label-width="'100px'"
>
<el-form-item prop="wechatNumber" label="微信号" :label-width="'100px'">
<el-input v-model="addFormInfo.from.wechatNumber" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="20">
<el-form-item
prop="corporate"
label="公司名称"
:label-width="'100px'"
>
<el-form-item prop="corporate" label="公司名称" :label-width="'100px'">
<el-input v-model="addFormInfo.from.corporate" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item
label="需求描述:"
autosize
prop="description"
:label-width="'100px'"
>
<el-input
type="textarea"
v-model="addFormInfo.from.description"
:rows="5"
></el-input>
<el-form-item label="需求描述:" autosize prop="description" :label-width="'100px'">
<el-input type="textarea" v-model="addFormInfo.from.description" :rows="5"></el-input>
</el-form-item>
</el-col>
</el-row>
<div></div>
</el-form>
<div slot="footer">
<el-button
type="primary"
@click="uploadAddForm"
:loading="addFormInfo.flag === 0"
>确定</el-button
>
<el-button type="primary" @click="uploadAddForm" :loading="addFormInfo.flag === 0">确定</el-button>
</div>
</el-dialog>
......@@ -273,32 +212,14 @@
placeholder="请选择类别"
/>
</el-form-item>
<el-form-item
prop="changesalesman"
label="选择销售人员"
style="margin-left: 30px"
>
<el-select
v-model="addFormInfo.from.changesalesman"
clearable
placeholder="请选择销售人员"
>
<el-option
v-for="item in deliverAssign"
:key="item.nickName"
:label="item.nickName"
:value="item.userId"
>
<el-form-item prop="changesalesman" label="选择销售人员" style="margin-left: 30px">
<el-select v-model="addFormInfo.from.changesalesman" clearable placeholder="请选择销售人员">
<el-option v-for="item in deliverAssign" :key="item.nickName" :label="item.nickName" :value="item.userId">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="eCommerceId" label="电商ID" :label-width="'100px'">
<el-input
v-model="addFormInfo.from.eCommerceId"
style="width: 180px"
type="text"
clearable
/>
<el-input v-model="addFormInfo.from.eCommerceId" style="width: 180px" type="text" clearable />
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名" :label-width="'60px'">
......@@ -312,11 +233,7 @@
</div>
<div class="contact">
<el-form-item prop="telephone" label="电话" :label-width="'60px'">
<el-input
v-model="addFormInfo.from.telephone"
clearable
type="number"
/>
<el-input v-model="addFormInfo.from.telephone" clearable type="number" />
</el-form-item>
<div>
<el-form-item prop="wechatNumber" label="微信号" :label-width="'60px'">
......@@ -324,23 +241,10 @@
</el-form-item>
</div>
</div>
<el-form-item
prop="corporate"
label="公司名称"
style="margin-left: 40px; margin-top: 10px"
>
<el-input
v-model="addFormInfo.from.corporate"
clearable
style="width: 80% !important"
/>
<el-form-item prop="corporate" label="公司名称" style="margin-left: 40px; margin-top: 10px">
<el-input v-model="addFormInfo.from.corporate" clearable style="width: 80% !important" />
</el-form-item>
<el-form-item
label="需求描述:"
autosize
prop="description"
style="margin-left: 40px; margin-top: 10px"
>
<el-form-item label="需求描述:" autosize prop="description" style="margin-left: 40px; margin-top: 10px">
<el-input
type="textarea"
v-model="addFormInfo.from.description"
......@@ -350,12 +254,7 @@
</el-form-item>
</el-form>
<div slot="footer">
<el-button
type="primary"
@click="manualuploadAddForm"
:loading="addFormInfo.flag === 0"
>确定</el-button
>
<el-button type="primary" @click="manualuploadAddForm" :loading="addFormInfo.flag === 0">确定</el-button>
</div>
</el-dialog>
......@@ -385,24 +284,14 @@
/>
</el-form-item>
<el-form-item prop="eCommerceId" label="电商ID" :label-width="'100px'">
<el-input
v-model="editFormInfo.from.eCommerceId"
style="width: 180px"
type="text"
clearable
/>
<el-input v-model="editFormInfo.from.eCommerceId" style="width: 180px" type="text" clearable />
</el-form-item>
<div class="contact">
<el-form-item prop="name" label="姓名">
<el-input v-model="editFormInfo.from.name" type="text" clearable />
</el-form-item>
<el-form-item prop="telephone" label="电话">
<el-input
v-model="editFormInfo.from.telephone"
type="number"
clearable
v-bind:readonly="pMobile"
/>
<el-input v-model="editFormInfo.from.telephone" type="number" clearable v-bind:readonly="pMobile" />
</el-form-item>
</div>
<div class="contact">
......@@ -413,30 +302,14 @@
</div>
<div>
<el-form-item prop="wechatNumber" label="微信号">
<el-input
v-model="editFormInfo.from.wechatNumber"
clearable
v-bind:readonly="mPassport"
/>
<el-input v-model="editFormInfo.from.wechatNumber" clearable v-bind:readonly="mPassport" />
</el-form-item>
</div>
</div>
<el-form-item
prop="corporate"
label="公司名称"
style="margin-left: 30px; margin-top: 10px"
>
<el-input
v-model="editFormInfo.from.corporate"
style="width: 80% !important"
clearable
/>
<el-form-item prop="corporate" label="公司名称" style="margin-left: 30px; margin-top: 10px">
<el-input v-model="editFormInfo.from.corporate" style="width: 80% !important" clearable />
</el-form-item>
<el-form-item
label="需求描述:"
prop="description"
style="margin-left: 30px; margin-top: 10px"
>
<el-form-item label="需求描述:" prop="description" style="margin-left: 30px; margin-top: 10px">
<el-input
type="textarea"
v-model="editFormInfo.from.description"
......@@ -446,19 +319,14 @@
</el-form-item>
</el-form>
<div slot="footer">
<el-button
type="primary"
@click="editConfig"
:loading="editFormInfo.flag === 0"
>确定</el-button
>
<el-button type="primary" @click="editConfig" :loading="editFormInfo.flag === 0">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import axios from "axios";
import axios from 'axios'
import {
getAllcategory,
getNamecategory,
......@@ -467,16 +335,12 @@ import {
deletecategory,
getAllCategory,
deliverList,
manualInfo,
} from "@/api/management.js";
import { parseTime } from "../../utils";
import {
reqInformationTreeList,
reqAllInfoTreeList,
reqAllInfoTreeBuild,
} from "@/api/treeMenus.js";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
manualInfo
} from '@/api/management.js'
import { parseTime } from '../../utils'
import { reqInformationTreeList, reqAllInfoTreeList, reqAllInfoTreeBuild } from '@/api/treeMenus.js'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
data() {
return {
......@@ -488,7 +352,7 @@ export default {
page: 1,
size: 10,
total: 0,
newdata: [],
newdata: []
},
//1.获取全部信息分类
typeManage: {
......@@ -499,33 +363,33 @@ export default {
dropData: [],
addDialog: false,
manualDialog: false,
fromData: [],
fromData: []
},
//2.根据名称获取信息分类
tel: "", //电话
tel: '', //电话
className: 0, //信息分类
salesName: "", //销售人员
searchTime: "", //时间
salesName: '', //销售人员
searchTime: '', //时间
// 新增
editDialog: false,
addFormInfo: {
from: {
localdata: [],
classidStr: 0,
name: "",
telephone: "",
qq: "",
wechatNumber: "",
corporate: "",
description: "",
user: "",
adduserId: "",
name: '',
telephone: '',
qq: '',
wechatNumber: '',
corporate: '',
description: '',
user: '',
adduserId: '',
putdata: [],
changesalesman: "",
eCommerceId: "",
isNeiMeng: false,
changesalesman: '',
eCommerceId: '',
isNeiMeng: false
},
flag: 1,
flag: 1
},
deliverAssign: [],
......@@ -533,86 +397,82 @@ export default {
editFormInfo: {
from: {
classidStr: 0,
name: "",
telephone: "",
qq: "",
wechatNumber: "",
corporate: "",
description: "",
userId: "",
id: "",
listid: "",
name: '',
telephone: '',
qq: '',
wechatNumber: '',
corporate: '',
description: '',
userId: '',
id: '',
listid: '',
pushdata: [],
eCommerceId: "",
eCommerceId: ''
},
flag: 1,
flag: 1
},
// 验证
rules: {
name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
telephone: [
{
// required: true, message: "请输入正确的联系方式",
pattern: /^1[3456789]\d{9}$/,
message: "请输入正确的联系方式",
trigger: "blur",
},
message: '请输入正确的联系方式',
trigger: 'blur'
}
],
qq: [
// { required: true, message: 'QQ号只可输入5-11位数字', trigger: 'change' },
{
pattern: /^[1-9][0-9]{0,12}$/,
message: "QQ号只可输入5-11位数字",
trigger: "change",
message: 'QQ号只可输入5-11位数字',
trigger: 'change'
},
{
pattern: /^\d{5,12}$/,
message: "QQ号只可输入5-11位数字",
trigger: "change",
},
message: 'QQ号只可输入5-11位数字',
trigger: 'change'
}
],
// wechatNumber: [
// {pattern:/^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/,message: "请输入正确的微信号码",trigger: "blur"},
// ],
wechatNumber: [{ message: "请输入正确的微信号码", trigger: "blur" }],
classidStr: [
{ required: true, message: "请选择类别", trigger: "blur" },
],
changesalesman: [
{ required: true, message: "请选择销售人员", trigger: "blur" },
],
wechatNumber: [{ message: '请输入正确的微信号码', trigger: 'blur' }],
classidStr: [{ required: true, message: '请选择类别', trigger: 'blur' }],
changesalesman: [{ required: true, message: '请选择销售人员', trigger: 'blur' }]
// corporate: [{ required: true, message: "请输入公司名称", trigger: "blur"}],
},
infoTree: {
menus: [{ id: 0, label: "信息分类", children: null, pid: -1 }],
Dict: [],
},
};
menus: [{ id: 0, label: '信息分类', children: null, pid: -1 }],
Dict: []
}
}
},
components: { Treeselect },
mounted() {
var that = this;
var that = this
deliverList().then(
function (res) {
var deliverData = res.object || [];
this.deliverAssign = deliverData;
var deliverData = res.object || []
this.deliverAssign = deliverData
}.bind(this)
);
)
// 信息分类字典
reqAllInfoTreeList().then(function (res) {
if (res.code === 200) {
var list = res.object.records || [];
list.push(that.infoTree.menus[0]);
qf.Utils.treeListBuild(list);
that.infoTree.Dict = qf.Utils.arrayToJsonDict(list, "id");
var list = res.object.records || []
list.push(that.infoTree.menus[0])
qf.Utils.treeListBuild(list)
that.infoTree.Dict = qf.Utils.arrayToJsonDict(list, 'id')
}
});
})
this.allManagement();
this.classification();
this.getSelectInfo();
this.allManagement()
this.classification()
this.getSelectInfo()
// 销售人员列表
},
......@@ -621,22 +481,22 @@ export default {
deep: true,
handler: function (val) {
if (val.length > 0) {
this.mPassport = true;
this.mPassport = true
} else {
this.mPassport = false;
this.mPassport = false
}
},
}
},
mobile: {
deep: true,
handler: function (val) {
if (val.length > 0) {
this.pMobile = true;
this.pMobile = true
} else {
this.pMobile = false;
this.pMobile = false
}
},
},
}
}
},
methods: {
......@@ -644,81 +504,81 @@ export default {
classification(params) {
var params = {
page: this.newManage.page,
pageSize: this.newManage.size,
};
pageSize: this.newManage.size
}
getAllCategory(params).then((res) => {
var newlist = res.object.records || [];
this.newManage.newdata = newlist;
});
var newlist = res.object.records || []
this.newManage.newdata = newlist
})
},
// 获取分类下拉列表
getSelectInfo() {
var typeM = this.typeManage;
var typeM = this.typeManage
var params = {
page: 1,
pageSize: 999,
};
pageSize: 999
}
getAllCategory(params).then((res) => {
var dropDown = res.object.records || [];
typeM.dropData = dropDown;
});
var dropDown = res.object.records || []
typeM.dropData = dropDown
})
},
//1.获取全部信息管理
allManagement(params) {
var typeM = this.typeManage;
var typeM = this.typeManage
var params = {
page: typeM.page,
pageSize: typeM.size,
};
pageSize: typeM.size
}
getAllcategory(params).then((res) => {
var selectlist = res.object.records || [];
typeM.selectdata = selectlist;
typeM.total = res.object.total;
});
var selectlist = res.object.records || []
typeM.selectdata = selectlist
typeM.total = res.object.total
})
},
//获取全部信息管理分页
handleSizeChange(val) {
// 每页多少条
this.typeManage.size = val;
this.toSearch();
this.typeManage.size = val
this.toSearch()
},
handleCurrentChange(val) {
// 当前是多少页
this.typeManage.page = val;
this.toSearch();
this.typeManage.page = val
this.toSearch()
},
//2.根据名称获取信息分类
toSearch() {
var typeM = this.typeManage;
var typeM = this.typeManage
var param = {
page: this.typeManage.page,
pageSize: this.typeManage.size,
};
this.tel && (param.tel = this.tel);
this.salesName && (param.salesName = this.salesName);
this.className && (param.className = this.className);
pageSize: this.typeManage.size
}
this.tel && (param.tel = this.tel)
this.salesName && (param.salesName = this.salesName)
this.className && (param.className = this.className)
// 时间
if (this.searchTime instanceof Array) {
param.startTime = parseTime(new Date(this.searchTime[0]));
param.endTime = parseTime(new Date(this.searchTime[1]));
param.startTime = parseTime(new Date(this.searchTime[0]))
param.endTime = parseTime(new Date(this.searchTime[1]))
}
var typeM = this.typeManage;
var typeM = this.typeManage
getNamecategory(param).then((res) => {
var selectlist = res.object.records || [];
typeM.selectdata = selectlist;
typeM.total = res.object.total;
});
var selectlist = res.object.records || []
typeM.selectdata = selectlist
typeM.total = res.object.total
})
},
// 新增
addDialogData() {
this.typeManage.addDialog = true;
this.typeManage.addDialog = true
// this.addFormInfo.from = {
// classidStr: 0,
// };
this.addFormInfo.from.classidStr = 0;
this.addFormInfo.from.user = this.$store.getters.user.username;
this.addFormInfo.from.classidStr = 0
this.addFormInfo.from.user = this.$store.getters.user.username
// userId
this.addFormInfo.from.adduserId = this.$store.getters.user.id;
this.addFormInfo.from.adduserId = this.$store.getters.user.id
},
uploadAddForm() {
if (this.addFormInfo.flag) {
......@@ -735,61 +595,58 @@ export default {
username: this.addFormInfo.from.user,
userId: this.addFormInfo.from.adduserId,
eCommerceId: this.addFormInfo.from.eCommerceId,
isNeiMeng: this.addFormInfo.from.isNeiMeng,
};
if (
this.addFormInfo.from.telephone === undefined &&
this.addFormInfo.from.wechatNumber === undefined
) {
isNeiMeng: this.addFormInfo.from.isNeiMeng
}
if (this.addFormInfo.from.telephone === undefined && this.addFormInfo.from.wechatNumber === undefined) {
this.$message({
type: "error",
message: "电话或微信号必须填一个",
});
type: 'error',
message: '电话或微信号必须填一个'
})
} else {
var self = this;
var self = this
addcategory(params).then((res) => {
this.typeManage.addDialog = false;
this.typeManage.addDialog = false
setTimeout(function () {
self.addFormInfo.flag = 1;
}, 300);
self.addFormInfo.flag = 1
}, 300)
if (res.code === 200) {
this.allManagement();
this.allManagement()
self.$message({
type: "success",
message: "新增成功",
});
type: 'success',
message: '新增成功'
})
} else if (res.code === 401) {
self.$message({
type: "error",
message: "已有客户",
});
type: 'error',
message: '已有客户'
})
} else if (res.code === 402) {
self.$message({
type: "error",
message: "没有销售被分配了该类别的权重",
});
type: 'error',
message: '没有销售被分配了该类别的权重'
})
} else {
self.$message({
type: "error",
message: "新增失败",
});
type: 'error',
message: '新增失败'
})
}
});
})
}
}
});
})
}
},
// 手动分配新增信息
manualAssignment() {
// username
this.typeManage.manualDialog = true;
this.typeManage.manualDialog = true
this.addFormInfo.from = { classidStr: 0 };
this.addFormInfo.from.user = this.$store.getters.user.username;
this.addFormInfo.from = { classidStr: 0 }
this.addFormInfo.from.user = this.$store.getters.user.username
// userId
this.addFormInfo.from.adduserId = this.$store.getters.user.id;
this.addFormInfo.from.adduserId = this.$store.getters.user.id
},
manualuploadAddForm() {
if (this.addFormInfo.flag) {
......@@ -806,67 +663,64 @@ export default {
username: this.addFormInfo.from.user,
userId: this.addFormInfo.from.adduserId,
saleidStr: this.addFormInfo.from.changesalesman,
eCommerceId: this.addFormInfo.from.eCommerceId,
};
eCommerceId: this.addFormInfo.from.eCommerceId
}
console.log(params);
if (
this.addFormInfo.from.telephone === undefined &&
this.addFormInfo.from.wechatNumber === undefined
) {
console.log(params)
if (this.addFormInfo.from.telephone === undefined && this.addFormInfo.from.wechatNumber === undefined) {
this.$message({
type: "error",
message: "电话或微信号必须填一个",
});
type: 'error',
message: '电话或微信号必须填一个'
})
} else {
var self = this;
var self = this
manualInfo(params).then((res) => {
this.typeManage.manualDialog = false;
this.typeManage.manualDialog = false
setTimeout(function () {
self.addFormInfo.flag = 1;
}, 300);
self.addFormInfo.flag = 1
}, 300)
if (res.code === 200) {
this.allManagement();
this.allManagement()
self.$message({
type: "success",
message: "新增成功",
});
type: 'success',
message: '新增成功'
})
} else if (res.code === 401) {
self.$message({
type: "error",
message: "已有客户",
});
type: 'error',
message: '已有客户'
})
} else {
self.$message({
type: "error",
message: "新增失败",
});
type: 'error',
message: '新增失败'
})
}
});
})
}
}
});
})
}
},
// 编辑
typeEdit(index, item) {
// userId
this.editFormInfo.from.userData = this.$store.getters.user.id;
this.editDialog = true;
this.editFormInfo.from.classidStr = item.classidStr;
this.editFormInfo.from.name = item.name;
this.editFormInfo.from.telephone = item.tel;
this.editFormInfo.from.wechatNumber = item.weixin;
this.editFormInfo.from.corporate = item.company;
this.editFormInfo.from.description = item.remarks;
this.editFormInfo.from.qq = item.qqnub;
this.editFormInfo.from.listid = item.id;
this.editFormInfo.from.eCommerceId = item.eCommerceId;
this.editFormInfo.from.userData = this.$store.getters.user.id
this.editDialog = true
this.editFormInfo.from.classidStr = item.classidStr
this.editFormInfo.from.name = item.name
this.editFormInfo.from.telephone = item.tel
this.editFormInfo.from.wechatNumber = item.weixin
this.editFormInfo.from.corporate = item.company
this.editFormInfo.from.description = item.remarks
this.editFormInfo.from.qq = item.qqnub
this.editFormInfo.from.listid = item.id
this.editFormInfo.from.eCommerceId = item.eCommerceId
},
editConfig() {
if (this.editFormInfo.flag) {
this.editFormInfo.flag = 0;
this.editFormInfo.flag = 0
this.$refs.addDataForm.validate((valid) => {
if (valid) {
var params = {
......@@ -879,79 +733,75 @@ export default {
remarks: this.editFormInfo.from.description,
userId: this.editFormInfo.from.userData,
id: this.editFormInfo.from.listid,
eCommerceId: this.editFormInfo.from.eCommerceId,
};
var self = this;
eCommerceId: this.editFormInfo.from.eCommerceId
}
var self = this
editcategory(params).then((res) => {
this.editDialog = false;
this.editDialog = false
setTimeout(function () {
self.editFormInfo.flag = 1;
}, 300);
this.allManagement();
self.editFormInfo.flag = 1
}, 300)
this.allManagement()
self.$message({
type: "success",
message: "编辑成功",
});
});
type: 'success',
message: '编辑成功'
})
})
}
});
})
}
},
// 删除
typeDelete(item) {
var id = item.id;
this.$confirm(
"销售部门已记录该客户,删除该条信息后,后续无法添加该客户相关信息,请谨慎操作",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
).then(() => {
var id = item.id
this.$confirm('销售部门已记录该客户,删除该条信息后,后续无法添加该客户相关信息,请谨慎操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deletecategory({ id: id }).then(
(res) => {
this.$message({
message: "删除成功",
type: "success",
});
this.allManagement();
message: '删除成功',
type: 'success'
})
this.allManagement()
},
() => {
this.$message.error("删除失败");
this.$message.error('删除失败')
}
);
});
)
})
},
// 加载信息分类列表
loadInfoTreeMenus({ action, parentNode, callback }) {
if (action === "LOAD_CHILDREN_OPTIONS") {
if (action === 'LOAD_CHILDREN_OPTIONS') {
setTimeout(() => {
callback();
}, 100);
callback()
}, 100)
return;
return
reqInformationTreeList({ pid: parentNode.id }).then((res) => {
if (res.code === 200) {
var list = res.object.records || [];
var list = res.object.records || []
console.log("list ________________ ", list);
console.log('list ________________ ', list)
parentNode.children = list.map(function (obj) {
if (!obj.leaf) {
obj.children = null;
obj.children = null
}
return obj;
});
return obj
})
setTimeout(() => {
callback();
}, 100);
callback()
}, 100)
}
});
})
}
},
},
};
}
}
}
</script>
<style lang="scss" scoped>
......@@ -959,36 +809,43 @@ export default {
display: flex;
margin: 20px 0;
}
.tools-wrapper {
display: flex;
margin: 20px 0;
}
.upload-file-wrapper {
display: flex;
.file-wrapper {
width: 240px;
height: 100px;
background: aliceblue;
}
}
.datamanage-wrapper {
width: 100%;
height: 100%;
padding: 10px;
border-radius: 5px;
background-color: #f5f6fb;
.tool-wrapper {
padding: 10px;
border-radius: 5px;
margin: 10px 10px;
background: #fff;
}
.search-wrapper {
padding: 10px;
border-radius: 5px;
margin: 10px 10px;
background: #fff;
}
.table-wrapper {
padding: 10px;
border-radius: 5px;
......@@ -996,17 +853,20 @@ export default {
background: #fff;
}
}
.contact {
width: 100%;
display: flex;
justify-content: space-around;
margin-left: -100px;
}
::v-deep input::-webkit-outer-spin-button,
::v-deep input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
::v-deep input[type="‘number’"] {
::v-deep input[type='‘number’'] {
-moz-appearance: textfield !important;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment