当前位置: 首页 > news >正文

【开源】基于Vue+SpringBoot的河南软件客服系统

在这里插入图片描述
文末获取源码,项目编号: S 067 。 \color{red}{文末获取源码,项目编号:S067。} 文末获取源码,项目编号:S067


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 系统管理人员
    • 2.2 业务操作人员
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询客户
    • 4.2 新增客户跟进情况
    • 4.3 查询客户历史
    • 4.4 新增服务派单
    • 4.5 新增客户服务费
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的河南软件客服系统,包含了客户信息维护模块、客户跟进记录模块、客户服务费模块、售后服务单模块、客服统计分析模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,河南软件客服系统基于角色的访问控制,给客服主管、普通客服使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏

源码下载


二、功能模块

2.1 系统管理人员

包括系统维护,基础资料维护、统计分析/报表导出、系统登录、企业资源导入等功能;主要体现在系统的运行保障上面;数据统计导出相关报表,可让领导即时了解客户跟进情况,提取有用的信息转化成商机(销售软件、升级、加站等)﹐直接或者间接提升公司效益。

  1. 系统维护:用户管理(系统管理员、客服入员、资源分派员、技术服务等;包含基本信息、所属部门、角色、联系方式等)﹐数据字典维护,系统日志审计等。
  2. 基础资料维护:客户资料维护(包含企业名称、详细地址、企业社会信用码、注册日期、区域、法人、法人电话、财务、财务电话、出纳、出纳电话、所属行业、运营状态、跟进状态等))、部门、角色等。客户资料可手工录入亦可使用 Excel 根据制定的模板批量导入(通过一些渠道获取的大批量企业信息);
  3. 统计分析/报表导出:生成跟进汇总统计报表,可按日期时间段、客服人员、跟进进度等进行统计,可统计服务费收取情况、服务费到期情况、技术服务派单情况、商机转化情况,可导出Excel、PDF文件留档;
  4. 系统登录:系统管理员和业务员登录认证功能:根据登录用户的角色不同,所拥有的权限不同,显示不同的页面内容。
  5. 客户资源分派维护:客户资料可依据多种条件进行筛选(基本资料各个字段皆可作为条件任意组合进行正向或反向筛选,还需要根据分派情况正向或反向筛选),然后给客服人员进行分派;跟进不理想的资源可收回重新分派。
  6. 服务费审核:生成服务费流水账表,由财务人员进行对账审核;审核过之后才能计入对应客服的业绩。

2.2 业务操作人员

主要包括客户信息维护、服务费收取、客户跟进维护、售后服务、服务派单、客户评价等;成交客户反馈问题后,由客服人员录入系统,客服经理收到信息提示,然后进行服务派单,完成后由技术人员录入解决情况汇总到该客户档案中;资源池中客户被分派给跟进人进行电话跟进,根据情况转化成商机。

  1. 客户信息维护:客服人员收集到一些客户信息录入系统,有些信息可能有误或者企业信息变更,在跟进过程中可以进行修改调整,修改过程历史记录保留,可进行回查复核。添加企业联系人和电话,定期计算联系电话任职于几个企业,可查询相关联的企业信息。
  2. 客户跟进维护:客服人员定期主动电话联系客户,沟通信息化需求或者使用过程中的问题,记录跟进情况和维护跟进进度(跟进进度:启新老客户、已用金蝶、已用用友、已用其他软件、意向客户、长期跟进、暂无需求、其他)。历史记录保留可查,每次跟进人、跟进情况、跟进时间等。
  3. 服务费收取:成交客户可查看成交记录和服务费收取记录,以及服务费到期时间,服务费即将到期的客户要有消息提醒和一键查询功能,服务费逾期客户红色标注,收取服务费后录入系统,提示后台进行服务费审核对账。
  4. 售后服务:客服接到成交客户的咨询或者问题反馈后可快速查询定位到客户,调出客户档案和跟进历史记录,将客户多描述情况汇总录入系统,提交给客服经理,客户经理收到问题反馈,初步评估之后分派给技术服务人员跟进解决(亦可客服经理亲自解决),技术人员解决后将解决情况录入系统,该问题关闭。
  5. 回访评价:客户的问题解决后,由客服人员进行回访,根据客户反馈的情况对技术人员的服务态度、技术能力、回应速度等进行客观评价(很满意、满意、一般、有待改善)。

三、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、核心代码

4.1 查询客户

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询客户")
public Result<IPage<Customer>> getByPage(@ModelAttribute Customer customer ,@ModelAttribute PageVo page){QueryWrapper<Customer> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(customer.getCompanyName())) {qw.like("company_name",customer.getCompanyName());}if(!ZwzNullUtils.isNull(customer.getTrade())) {qw.like("trade",customer.getTrade());}if(!ZwzNullUtils.isNull(customer.getStatus2())) {qw.eq("status2",customer.getStatus2());}if(!ZwzNullUtils.isNull(customer.getMobile1())) {qw.and(wrapper -> wrapper.eq("mobile1", customer.getMobile1()).or().eq("mobile1",customer.getMobile1()).or().eq("mobile3",customer.getMobile1()));}IPage<Customer> data = iCustomerService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Customer>>().setData(data);
}

4.2 新增客户跟进情况

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条客户跟进")
public Result<Object> addOne(@RequestParam String id,@RequestParam String level,@RequestParam String content){Customer customer = iCustomerService.getById(id);if(customer == null) {return ResultUtil.error("客户不存在");}CustomerItem customerItem = new CustomerItem();customerItem.setCustomerId(customer.getId());customerItem.setCustomerName(customer.getCompanyName());customerItem.setLevel(level);customerItem.setContent(content);User currUser = securityUtil.getCurrUser();customerItem.setUserId(currUser.getId());customerItem.setUserName(currUser.getNickname());customerItem.setTime(DateUtil.now());iCustomerItemService.saveOrUpdate(customerItem);return ResultUtil.success();
}

4.3 查询客户历史

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询客户历史")
public Result<IPage<CustomerHistory>> getByPage(@ModelAttribute CustomerHistory customerHistory ,@ModelAttribute PageVo page){QueryWrapper<CustomerHistory> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(customerHistory.getCompanyName())) {qw.like("company_name",customerHistory.getCompanyName());}IPage<CustomerHistory> data = iCustomerHistoryService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<CustomerHistory>>().setData(data);
}

4.4 新增服务派单

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增单条服务派单")
public Result<Object> addOne(@RequestParam String id,@RequestParam String content){Customer customer = iCustomerService.getById(id);if(customer == null) {return ResultUtil.error("客户不存在");}ServiceOrder serviceOrder = new ServiceOrder();serviceOrder.setCustomerId(customer.getId());serviceOrder.setCustomerName(customer.getCompanyName());serviceOrder.setContent(content);User currUser = securityUtil.getCurrUser();serviceOrder.setStatus("未派单");serviceOrder.setUserId(currUser.getId());serviceOrder.setUserName(currUser.getNickname());serviceOrder.setWorkId("");serviceOrder.setWorkName("");serviceOrder.setReplyContent("");serviceOrder.setAppraiseLevel("");serviceOrder.setAppraiseContent("");iServiceOrderService.saveOrUpdate(serviceOrder);return ResultUtil.success();
}

4.5 新增客户服务费

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "新增客户服务费")
public Result<Object> addOne(@RequestParam String id,@RequestParam String startDate,@RequestParam String endDate,@RequestParam BigDecimal price){Customer customer = iCustomerService.getById(id);if(customer == null) {return ResultUtil.error("客户不存在");}User currUser = securityUtil.getCurrUser();ServicePrice servicePrice = new ServicePrice();servicePrice.setCustomerId(customer.getId());servicePrice.setCustomerName(customer.getCompanyName());servicePrice.setStartDate(startDate);servicePrice.setEndDate(endDate);servicePrice.setPrice(price);servicePrice.setStatus("未审核");servicePrice.setUserId(currUser.getId());servicePrice.setUserName(currUser.getNickname());servicePrice.setTime(DateUtil.now());iServicePriceService.saveOrUpdate(servicePrice);return ResultUtil.success();
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

相关文章:

【开源】基于Vue+SpringBoot的河南软件客服系统

文末获取源码&#xff0c;项目编号&#xff1a; S 067 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S067。} 文末获取源码&#xff0c;项目编号&#xff1a;S067。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、…...

《算法面试宝典》--深度学习常见问题汇总

第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。 感知机 多层感知机中的特征神经元模型称为感知机,由Frank Rosenblatt于1957年发明。 其中 x 1 x_1 x...

【计算机网络实验】实验三 IP网络规划与路由设计(头歌)

目录 一、知识点 二、实验任务 三、头歌测试 一、知识点 IP子网掩码的两种表示方法 32位IP子网掩码&#xff0c;特点是从高位开始连续都是1&#xff0c;后面是连续的0&#xff0c;它有以下两种表示方法&#xff1a; 传统表示法&#xff0c;如&#xff1a;255.255.255.0IP前…...

CodeBlocks添加头文件,解决fatal error: ui.h No such file or directory

问题描述 在使用codeblocks工具进行LVGL仿真过程中报错&#xff0c;找不到头文件 原因分析&#xff1a; 没有将头文件加入编辑器搜索的目录中&#xff0c;编译时找不到头文件。 解决方案&#xff1a; 将要包含的头文件的目录加进去就可以了...

鸿蒙开发:UIAbility组件与UI的数据同步-使用EventHub进行数据通信【鸿蒙专栏-21】

文章目录 ArkTS应用模型中UIAbility组件与UI的数据同步使用EventHub进行数据通信使用globalThis进行数据同步1. UIAbility和Page之间使用globalThis2. UIAbility和UIAbility之间使用globalThis3. 使用globalThis的注意事项4. 使用globalThis的注意事项同名对象覆盖导致问题的场…...

云架构的思考3--云上开发

目录 1 DevOps--简单灵活性高2 服务化&#xff08;微服务&#xff09;--弹性&#xff08;可扩展&#xff09;、按需自主服务3 无状态&#xff08;Serverless&#xff09;--弹性&#xff08;可扩展&#xff09;4 日志--安全5 配置中心--安全6 设计模式6.1 使用“适配器模式”调用…...

vue3日常知识点学习归纳

1&#xff0c;父子组件传递&#xff1a; 父组件传递参数 <template><div><!-- 子组件 参数&#xff1a;num 、nums --><child :num"nums.num" :doubleNum"nums.doubleNum" increase"handleIncrease"></child>&l…...

策略模式终极解决方案之策略机

我们在开发时经常会遇到一堆的if else …, 或者switch, 比如我们常见的全局异常处理等, 像类似这种很多if else 或者多场景模式下, 策略模式是非常受欢迎的一种设计模式, 然而, 一个好的策略模式却不是那么容易写出来. 我在工作中也因为写烦了switch,if else 觉得很不优雅, 因…...

linux 常用指令目录大纲

Linux下的Signal信号处理及详解&#xff0c;test ok-CSDN博客 Linux下怎样判断一个binary是否可以debug//test ok_感知算法工程师的博客-CSDN博客 linux file命令的用法//test ok-CSDN博客 linux下生成core dump方法与gdb解析core dump文件//test ok-CSDN博客 linux readel…...

webpack该如何打包

1.我们先创建一个空的大文件夹 2.打开该文件夹的终端 输入npm init -y 2.1.打开该文件夹的终端 2.2在该终端运行 npm init -y 3.安装webpack 3.1打开webpack网址 点击“中文文档” 3.2点击“指南”在点击“起步” 3.3复制基本安装图片画线的代码 4.在一开始的文件夹下在创建一…...

【STM32】TIM定时器输入捕获

1 输入捕获 1.1 输入捕获简介 IC&#xff08;Input Capture&#xff09;输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff08;上升沿/下降沿&#xff09;&#xff0c;当前CNT的值将被锁存到CCR中&#xff08;把CNT的值读出来&#xff0c;写入到…...

webrtc 设置不获取鼠标 启用回声消除

数 getDisplayMedia()(属于 navigator.mediaDevices 的一部分)与 getUserMedia() 类似,用于打开显示内容(或部分内容,如窗口)。返回的 MediaStream 与使用 getUserMedia() 时相同。 显示鼠标与否 getDisplayMedia() 的约束条件与常规视频或音频输入资源的限制不同。 {…...

JVM虚拟机:如何查看JVM初始和最终的参数?

本文重点 在前面的课程中&#xff0c;我们学习了如何查看当前程序所处于的xx参数&#xff0c;本文再介绍一种如何参看JVM的xx参数&#xff1f; 查看JVM的所有初始化参数 方式一&#xff1a;java -XX:PrintFlagsInitial 方式二&#xff1a;java -XX:PrintFlagsInitial -versio…...

JVM Optimization Learning(五)

目录 一、JVM Optimization 1、G1 1、G1内存模型 2、基础概念 3、G1特点&#xff1a; 4、CMS日志分析 5、G1日志分析 2、GC参数 2.1、GC常用参数 2.2、Parallel常用参数 2.3、CMS常用参数 2.4、G1常用参数 一、JVM Optimization 1、G1 G1官网说明&#xff1a;Gar…...

Java项目学生管理系统一前后端环境搭建

在现代的软件开发中&#xff0c;学生管理系统是一个常见的应用场景。通过学生管理系统&#xff0c;学校能够方便地管理学生的信息、课程安排和成绩等数据。本文将介绍如何使用Java语言搭建一个学生管理系统的前后端环境&#xff0c;并提供一个简单的示例。 1.环境搭建 学生管…...

LeetCode:169.多数元素(哈希表)

题目 第一版 思路 直接开个哈希表&#xff0c;存储每个数组中的数字和对应出现的次数。然后排序后找出对应最大value值的key。 代码 class Solution {public int majorityElement(int[] nums) {Map<Integer,Integer>map new HashMap<Integer,Integer>();for(…...

Linux指令学习

目录 1.ls指令 2.pwd命令 3.cd 指令 4. touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat指令 11.more指令 12.less指令 13.head指令 14.find指令&#xff1a; -name 15.grep指令 16.zip/unzip指令&#xff1a; 17.tar…...

vue2+datav可视化数据大屏(1)

开始 &#x1f4d3; 最近打算出一个前端可视化数据大屏的系列专栏&#xff0c;这次将很全面的教大家设计可视化大屏&#xff0c;从开始到打包结束&#xff0c;其中&#xff0c;包括如何设计框架&#xff0c;如何封装axios&#xff0c;等等&#xff0c;本次使用的数据均为mock数…...

Linux 多进程并发设计-进程对核的亲缘设置

1设计结构 2 设计优点 1 充分利用多核系统的并发处理能力2 负载均衡3 职责明确&#xff0c;管理进程仅负责管理&#xff0c;工作进程仅负责处理业务逻辑 3 演示代码: //main.cpp #define _GNU_SOURCE #include<sys/types.h> #include<sys/wait.h> #include <…...

Javascript 函数介绍

Javascript 函数介绍 很多教程书一上来就讲解一堆语法&#xff0c;例如函数定义、函数调用什么。等读者看完了函数这一章都没搞懂什么是函数。 在讲解什么叫函数之前&#xff0c;我们先看下面一段代码&#xff1a; <!DOCTYPE html> <html xmlns"http://www.w3.…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...