图书管理系统_g9e3a

@TOC

springboot569图书管理系统_g9e3a--论文

绪 论

1.1开发背景

改革开放以来,中国社会经济体系复苏,人们生活水平稳步提升,中国社会已全面步入小康社会。同时也在逐渐转型,具有生活的现代化和劳动的社会化等特点。这不仅基于人们过快的工作节奏与生活方式,也是源于人们对于生活品质越来越严苛的要求。如何从工作压力与生活压力中得到解放,是现代人追求的永恒话题[1]。

单从工作压力来讲,图书管理在很大程度上可以解决一部分问题,逐渐进入人们的视野。图书管理采用的手工记录信息的方式,给工作人员的匹配工作造成很大的困难。这也充分说明了传统的信息处理方式已经很难适应现代管理系统的需要。

近年来,随着计算机技术的飞速发展以及其在全球范围内的普及,计算机技术的在人们生活中应用的占比越来越大,尤其是信息资源管理方面,广泛应用于各个行业,已经产生了不可估量的社会效益[6]。计算机技术在信息资源管理方面的应用大大提高了工作效率,简化了工作程序,改善了服务质量[7]。而这些特点正好对图书管理的难题对症下药。图书管理系统一经问世,就展现了其巨大的发展前景与优势。电子信息技术与图书管理的结合,使得用户足不出户就可以在系统上操作,符合人们现代生活方式发展;这种结合也对图书管理模式的变革也起到了决定性的作用,可以实现图书信息一次录入,永久使用的便捷,关键词输入即可将用户需求与图书管理人员信息进行匹配,达到客户需求最快最优实现的理想[8]。然后这种模式更加节省成本,无论是纸质文字的录入和保存,还有人工的费用都为图书管理的资本积累以及变革提供了保障。因此可以看出,图书管理网络化,不仅大大提高了本行业的工作效率,简化工作方式,更是一场图书管理的深刻变革。

1.2开发目的与意义

1.2.1开发目的

近年来,图书管理系统发展迅猛,在拥有广阔发展前景的同时,也面临着许许多多的问题。

我国线上管理起步晚,但发展快速,从业人员激增,多见于传统管理模式,管理体系不规范、不标准。且企业虽然多但规模普遍偏小,很难在市场形成有效的诚信经营的形象与品牌。

我国目前存在的图书管理监管制度缺失、市场监管不规范等问题。由于缺乏专业人士的素质和服务品质的明确测量,导致图书管理内部鱼龙混杂,难以获得用户的信赖。

图书管理系统是电子、信息技术的相结合,是一种必然的发展趋势。以互联网为基础,以服务于广大用户为目的,发展整体优势,扩大规模,提升服务质量,提高图书管理效率。图书管理系统实现了图书管理向现代化和网络化的转型,为管理决策和控制提供保障,这是图书管理系统发展中里程碑式的转型。

1.2.2开发意义

对于图书管理来说,系统的建设大大节省了管理成本和人工成本,增强用户信息安全建设,是实现管理现代化的有效途径,同时促进图书管理更加专业化和网络化。

对于用户来说,建立图书管理体系不仅丰富了图书管理的商业模式,还能刺激各行业进行自我改革,促使其专业性和规范性的提高。这是图书管理良性循环发展的里程碑。

1.3本文研究内容

首先,要掌握有关系统的基本理论,如 Java技术、 MySQL数据库等,并对其进行全面的分析。为了给系统打下坚实的技术基础,本系统采用了 MySQL数据库的架构,在开始这项工作前,首先要设计好要用到的数据库表。该系统的使用者有两类:管理员和用户,主要功能包括个人信息修改,用户管理、图书分类管理、图书信息管理、系统管理等功能。

2开发技术

2.1 Java介绍

Java语言正式诞生于1995年,是由SUN公司开发研制的OAK语言发展而来的。Java语言继承了OAK语言可跨平台运行的特点,融合了面向对象编程的风格,JAVA以其独有的开放性、跨平台性和面向网络的交互性席卷全球,以其安全性、易用性和开发周期短的特点,迅速从最初的编程语言发展成为全球第一大软件开发平台.广受时下程序开发人员的好评[3]。后来又为了丰富Java语言的用途,提高生产力,将它进行设计和改造,以满足更多地开发和应用场景。经过改造后,它可以满足移动端开发,桌面应用开发和企业级应用开发。Java语言还为用户提供了丰富的类库,在掌握它的特性后,学习特定的工具包,就可以满足很多场景的开发。现在来看,Java语言在这三种平台的应用开发中,都占据了举足轻重的地位。

与其他语言相比,Java语言具有很多的优点,Java语言简单比较容易理解,有c语言的基础很容易就可以学会,中文和英文的学习资源也比较多,而且Java语言经过许多年的沉淀发展,逐渐演变出很多成熟的框架技术。企业还还可以封装自己的框架,让开发变得简单。它还具有跨平台性较其他语言这一个最大的优势,这意味着它只需要一次编译就可以运行在其他平台上。

2.2 MySql简介

它以其优秀的性能、强大的功能以及良好的扩展性受到越来越多的关注。目前,国内已经有很多企业采用了该系统进行管理,取得了很好的效果。随着网络技术的发展。MySQL是最流行的关系型数据库管理系统之一,我的SQL是WEB应用应用程序中最好的RDBMS(Relational Database Management System)应用程序之一。MySQL是一个关系型数据库管理系统,在这个系统中,关系数据库将数据存储在不同的表中,而不是全部存储在一个大仓库中,从而提高了速度和灵活性。

在信息管理中,对于数据库的应用也日益广泛,不仅有效对信息管理的质量进行了提升,也进一步提升了信息管理的安全性,让信息管理更加高效[6]。SQL Server是一种关系数据库管理系统,它能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到 SQL Server实例[7]。

我的SQL使用的SQL语言是访问数据库最常用的标准化语言。它可以通过简单操作实现复杂查询功能,并且具有良好的可扩展性和可维护性等优点。随着网络技术的不断发展,ASP.NET成为目前互联网上最为流行的Web应用之一。MySQL软件采用双授权政策,分为社区版版本和商业版。由于其体积小,速度快,总体拥有成本低,特别是开放源码,MySQL用作中小型网站发展的网站数据库[8]。

2.3 SPRINGBOOT框架

Spring Boot是由Pivotal的开发团队在2013年开发的一个免费、轻量级、开源的系统框架。SpringBoot的主要设计思想是约定大于配置,因此SpringBoot在设计时几乎达到零配置。SpringBoot集成了业界的开源框架。

SpringBoot是一个非常强大的后台框架,因为SpringBoot的开发基本上不需要写配置文件,所以利用SpringBoot来构建网站的后台环境,在SpringBoot的YML配置文件中写项目启动端口,项目就可以启动了。项目的Java和静态文件由SpringBoot管理。

2.4 B/S架构

B/S(Browser/Server,浏览器/服务器)模式,是一种架构模式,属于WEB发展后的所出现的一种网络构造,而WEB又是主要的浏览器应用商品软件。B/S架构模式不仅将系统的重新开发、维修及利用等简单化,更将其重点放到了服务器上[8]。它使客户端得到了统一,服务器上集中了系统功能的最关键部分。

B/S架构的工作模式是浏览器发出请求后服务器进行相应的响应。Internet上文本、图片、动画等信息主要由Web服务器产生,而用户主要是通过浏览器访问这些信息。在Web服务器上下载程序时,如果在下载过程中遇到某些与数据库相关的指令,可以将这些指令交给数据库服务器来解释、进行执行。B/S架构工作流程图如2-1所示:

图2-1 B/S架构工作流程图

2.5 Tomcat简介

Tomcat是Java Servlet,JavaServerPages,Java Expression Language和JavaWebSocket(Java EE)技术的开源实现。因为可以通过HTTP提供HTML页面等静态内容的请求访问,所以是一个WEB服务器。

Tomcat 目录结构作用如表2-1所示

表2-1 tomcat目录结构表

序号目录名称作用
1bin存放启动和关闭tomcat脚本
2conf存放不同的配置文件(server.xml和web.xml)
3doc存放Tomcat文档
4lib存放Tomcat运行需要的库文件(JARS)
5logs存放Tomcat执行时的LOG文件
6src存放Tomcat的源代码
7webappsTomcat的主要Web发布目录(包括应用程序示例)
8work存放jsp编译后产生的class文件

3系统分析

需求分析是研发人员经过调研和分析后准确理解客户需求,确定系统需要具备的功能。然后对系统进行可行性和功能分析,确保符合图书管理系统的实现价值,对后续的系统创建有显著的帮助。

3.1可行性分析

3.1.1技术可行性分析

基于B/S架构开发的图书管理系统,技术方面应用了目前市面上比较主流的web三大框架,分别是Spring、Hibernate、struts2,数据库采用mysql,tomcat作为服务器,这些技术非常的成熟,在市面上有非常多成熟使用的案例,从技术角度是没有问题的,并且在学校的学习中对于这些技术就会有了一定的掌握,开发过类似的项目。

3.1.2经济可行性分析

图书管理系统大都是区域性的管理,系统中维护的范围不会非常大,因此数据并发量不会非常高,在数据并发量不是很高的情况下,系统的资源配置相对较低,用户所需要的客户端普通的电脑即可胜任。并且图书管理系统的管理还会提高效率减少纸质物品的使用,节约纸质资源。避免很多的人力消耗和资源浪费。从系统的开发角度分析,此次项目的开发软件全部都是开源且免费的。不需要在开发中投入经济成本,只需要专注于开发的内容即可,不会产生相应的开发费用。系统稳定使用后系统不会有过多的运营成本,投入使用后会在实际工作中发挥出重要的作用。

3.1.3法律可行性分析

图书管理系统是自己独立设计的,该系统是本人开发出来做毕业设计之用,并不会侵犯他人、集体和国家的利益。该系统使用正版软件开发,所有参考资料都是正规网站查询分析得出,开发的技术完全是开源免费的工具,百分百遵守国家法律法规。不会出现任何违反国家的政策和法律的。

3.2系统性能分析

  1. 系统安全性

图书管理系统中,系统的安全性要有一定的保障,不仅要保证系统数据存储足够安全,还要保障数据传输过程安全,还要保证对用户权限管理是合理的。保证一些意外情况发生,导致系统数据缺损时,会有历史数据备份对数据进行还原。

  1. 可维护性和适应性

世界是在不断进步的,互联网也在不断发展,随着行业发展,对图书管理系统可能会产生新的需求,好的系统应该具有可扩展性,无论在现在还是未来,都能够满足用户需求,可以长期使用本图书管理系统。

  1. 可靠性

图书管理信息量越来越大,到时候系统的访问量就会比现在多很多,图书管理系统要足够可靠,能够在并发量高的情况下,依旧保持优越的运行速度、容错能力。

3.3功能需求分析

3.3.1管理员需求分析

管理员端的功能主要是开放给系统的管理人员使用,能够对个人中心、用户管理、图书分类管理、图书信息管理、系统管理进行查看,修改和删除等,对系统整体运行情况进行了解。

管理员用例分析图,如图3-1所示。

图3-1管理员用例分析图

3.3.2用户需求分析

用户的功能主要是对首页、图书信息、公告信息、在线咨询、个人中心等进行操作。

用户用例分析图,如图3-2所示。

图3-2用户用例分析图

3.4系统流程分析

在本系统,非本系统的用户想要对图书管理系统进行操作就要注册本系统,登录时需要填写相应的资料,如有使用者,则会显示使用者名称已经存在,请再次键入使用者名称的提示框,若使用者不存在,则填写密码、确认密码等资料,并由系统判定密码与确认密码相符,确认无误后,填写使用者所填写的资料,即可进行登记。而且,为了保证系统的安全,只有在登录了本系统以后,才能进入系统后台操作。该系统的程序流程见图3-3。

图3-3程序流程图

4系统设计

4.1功能模块设计

对本系统进行全面的系统功能的分析,可以得出基于Springboot的图书管理系统的功能模块图,如图4-1所示。

图4-1 系统功能模块图

4.2数据库设计

4.2.1数据库设计原则

要学习程序设计,如果你想了解数据库管理系统或根据要求开发的系统接口,你必须创建一个数据库管理系统模型来存储数据。这样,当您在应用程序编程过程中,就不需要将信息加载到操作系统页面,从而提高整个系统的工作效率。信息库管理系统中存储着许多数据,应该说是管理信息系统建设的中心和基础。信息库管理系统还为管理信息系统的建设提供了添加、删除、更改和搜索的操作功能,使管理信息系统建设能够快速查询所需的数据,而不是直接从程序代码中查找。信息库管理系统通过按照特定的方法将信息表的各个组成部分组合起来,准确地组合、分类并构成信息库管理体系。

4.2.2系统E-R图

本系统的E-R图描述了在系统中各个实体之间的联系,以下是对部分主要的关键实体如下:

用户实体属性图如下图4-2所示。

图4-2用户实体属性图

在线咨询实体属性图如下图4-3所示。

图4-3在线咨询实体属性图

图书信息实体属性图如下图4-4所示。

图4-4图书信息实体属性图

公告信息实体属性图如下图4-5所示。

图4-5公告信息实体属性图

图书信息评论实体属性图如下图4-6所示。

图4-6图书信息评论实体属性图

4.2.3数据库表设计

图书管理系统的数据以一个个数据表的方式存储在数据库中,这一个个数据表示系统调取数据的基础,在进行系统数据库搭建时,会根据这些设计好的数据表进行优化搭建。系统选用MySQL数据库,对各表进行了详细的说明如下:

表名4-1:配置文件

字段名称类型长度字段说明主键默认值
idbigint主键主键
namevarchar100配置参数名称
valuevarchar100配置参数值

表名4-2:在线咨询

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
useridbigint用户id
adminidbigint管理员id
asklongtext4294967295提问
replylongtext4294967295回复
isreplyint是否回复

表名4-3:用户

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
zhanghaovarchar200账号
mimavarchar200密码
xingmingvarchar200姓名
xingbievarchar200性别
youxiangvarchar200邮箱
shoujihaomavarchar200手机号码
touxianglongtext4294967295头像

表名4-4:关于我们

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200标题
subtitlevarchar200副标题
contentlongtext4294967295内容
picture1longtext4294967295图片1
picture2longtext4294967295图片2
picture3longtext4294967295图片3

表名4-5:用户表

字段名称类型长度字段说明主键默认值
idbigint主键主键
usernamevarchar100用户名
passwordvarchar100密码
rolevarchar100角色管理员
addtimetimestamp新增时间CURRENT_TIMESTAMP

表名4-6:图书信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
tushumingchengvarchar200图书名称
tushufengmianlongtext4294967295图书封面
tushufenleivarchar200图书分类
tuwenweizhivarchar200图文位置
zuozhevarchar200作者
chubanshevarchar200出版社
tushujianjielongtext4294967295图书简介
tushuxiangqinglongtext4294967295图书详情
faburiqidate发布日期
clicktimedatetime最近点击时间

表名4-7:图书分类

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
tushufenleivarchar200图书分类

表名4-8:token表

字段名称类型长度字段说明主键默认值
idbigint主键主键
useridbigint用户id
usernamevarchar100用户名
tablenamevarchar100表名
rolevarchar100角色
tokenvarchar200密码
addtimetimestamp新增时间CURRENT_TIMESTAMP
expiratedtimetimestamp过期时间CURRENT_TIMESTAMP

表名4-9:收藏表

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
useridbigint用户id
refidbigint商品id
tablenamevarchar200表名
namevarchar200名称
picturelongtext4294967295图片
typevarchar200类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)1
inteltypevarchar200推荐类型
remarkvarchar200备注

表名4-10:公告信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200标题
introductionlongtext4294967295简介
picturelongtext4294967295图片
contentlongtext4294967295内容

表名4-11:图书信息评论表

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
refidbigint关联表id
useridbigint用户id
avatarurllongtext4294967295头像
nicknamevarchar200用户名
contentlongtext4294967295评论内容
replylongtext4294967295回复内容

5系统实现

在图书管理系统的生命周期中,经过了系统分析、系统设计等阶段之后,便开始了系统实施阶段。系统的实现主要对管理员和用户功能的实现,通过实现的过程对代码和逻辑进行相应的修改和完善。该模块也是直接面对使用者的,不仅功能要齐全,而且要做到页面美观。

5.1系统功能模块实现

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到图书管理系统的导航条。系统首页界面如图5-1所示:

图5-1 系统首页界面

系统注册:在注册页面输入用户注册信息进行注册操作,系统注册页面如图5-2所示:

图5-2系统注册页面

图书信息:在图书信息页面的输入栏中输入图书名称、图文位置、作者和出版社进行查询,可以查看到图书详细信息,并根据需要进行收藏或评论等操作;如图5-3所示:

图5-3图书信息详细页面

公告信息:在公告信息页面的输入栏中输入标题进行查询,可以查看公告详细信息;如图5-4所示:

图5-4公告信息详细页面

在个人中心页面输入个人信息可以进行更新操作,还可以对我的收藏进行详细操作;如图5-5所示:

图5-5 个人中心界面

5.2管理员模块实现

管理员登录,在登录页面正确输入用户名和密码后,进入操作系统进行操作;如图5-6所示。

图5-6 管理员登录界面

管理员进入主页面,主要功能包括对个人中心、用户管理、图书分类管理、图书信息管理、系统管理等进行操作。管理员主界面如图5-7所示:

图5-7 管理员主界面

管理员点击用户管理。在用户页面输入账号和姓名进行查询、新增或删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图5-8所示:

图5-8用户管理界面

管理员点击图书分类管理。进入图书分类页面输入图书分类进行查询、新增或删除图书分类列表,并根据需要对图书分类详细信息进行详情、修改或删除操作。如图5-9所示:

图5-9图书分类管理界面

管理员点击图书信息管理。在图书信息页面输入图书名称、图文位置、作者和出版社进行查询、新增、删除、图书分类统计或作者发布统计图书信息列表,并根据需要对图书详细信息进行详情、修改、查看评论或删除操作。如图5-10所示:

图5-10图书信息管理界面

管理员点击系统管理。在公告信息页面输入标题进行查询、新增或删除公告信息列表,并根据需要对公告详细信息进行详情、修改或删除操作;还可以对轮播图管理、在线咨询、关于我们和系统简介进行详细操作;如图5-11所示:

图5-11系统管理界面

NewsController.java
package com.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.NewsEntity;
import com.entity.view.NewsView;

import com.service.NewsService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 公告信息
 * 后端接口
 * @author 
 * @email 
 * @date 2023-03-02 11:13:34
 */
@RestController
@RequestMapping("/news")
public class NewsController {
    @Autowired
    private NewsService newsService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,NewsEntity news,
		HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();

		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,NewsEntity news, 
		HttpServletRequest request){
        EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();

		PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( NewsEntity news){
       	EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
      	ew.allEq(MPUtil.allEQMapPre( news, "news")); 
        return R.ok().put("data", newsService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(NewsEntity news){
        EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
 		ew.allEq(MPUtil.allEQMapPre( news, "news")); 
		NewsView newsView =  newsService.selectView(ew);
		return R.ok("查询公告信息成功").put("data", newsView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        NewsEntity news = newsService.selectById(id);
        return R.ok().put("data", news);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody NewsEntity news, HttpServletRequest request){
    	news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(news);
        newsService.insert(news);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody NewsEntity news, HttpServletRequest request){
        //ValidatorUtils.validateEntity(news);
        newsService.updateById(news);//全部更新
        return R.ok();
    }


    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        newsService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = newsService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	









}

ChatController.java
package com.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.ChatEntity;
import com.entity.view.ChatView;

import com.service.ChatService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 在线咨询
 * 后端接口
 * @author 
 * @email 
 * @date 2023-03-02 11:13:34
 */
@RestController
@RequestMapping("/chat")
public class ChatController {
    @Autowired
    private ChatService chatService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ChatEntity chat,
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();

		PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ChatEntity chat, 
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();

		PageUtils page = chatService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chat), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( ChatEntity chat){
       	EntityWrapper<ChatEntity> ew = new EntityWrapper<ChatEntity>();
      	ew.allEq(MPUtil.allEQMapPre( chat, "chat")); 
        return R.ok().put("data", chatService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ChatEntity chat){
        EntityWrapper< ChatEntity> ew = new EntityWrapper< ChatEntity>();
 		ew.allEq(MPUtil.allEQMapPre( chat, "chat")); 
		ChatView chatView =  chatService.selectView(ew);
		return R.ok("查询在线咨询成功").put("data", chatView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ChatEntity chat = chatService.selectById(id);
        return R.ok().put("data", chat);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ChatEntity chat = chatService.selectById(id);
        return R.ok().put("data", chat);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ChatEntity chat, HttpServletRequest request){
    	chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(chat);
    	if(StringUtils.isNotBlank(chat.getAsk())) {
			chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    		chat.setIsreply(1);
    	}
    	if(StringUtils.isNotBlank(chat.getReply())) {
    		chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
    		chat.setAdminid((Long)request.getSession().getAttribute("userId"));
    	}
        chatService.insert(chat);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ChatEntity chat, HttpServletRequest request){
    	chat.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(chat);
    	chat.setUserid((Long)request.getSession().getAttribute("userId"));
    	if(StringUtils.isNotBlank(chat.getAsk())) {
			chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", request.getSession().getAttribute("userId")));
    		chat.setUserid((Long)request.getSession().getAttribute("userId"));
    		chat.setIsreply(1);
    	}
    	if(StringUtils.isNotBlank(chat.getReply())) {
    		chatService.updateForSet("isreply=0", new EntityWrapper<ChatEntity>().eq("userid", chat.getUserid()));
    		chat.setAdminid((Long)request.getSession().getAttribute("userId"));
    	}
        chatService.insert(chat);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody ChatEntity chat, HttpServletRequest request){
        //ValidatorUtils.validateEntity(chat);
        chatService.updateById(chat);//全部更新
        return R.ok();
    }


    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        chatService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<ChatEntity> wrapper = new EntityWrapper<ChatEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = chatService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	









}

TushufenleiController.java
package com.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.TushufenleiEntity;
import com.entity.view.TushufenleiView;

import com.service.TushufenleiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 图书分类
 * 后端接口
 * @author 
 * @email 
 * @date 2023-03-02 11:13:33
 */
@RestController
@RequestMapping("/tushufenlei")
public class TushufenleiController {
    @Autowired
    private TushufenleiService tushufenleiService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,TushufenleiEntity tushufenlei,
		HttpServletRequest request){
        EntityWrapper<TushufenleiEntity> ew = new EntityWrapper<TushufenleiEntity>();

		PageUtils page = tushufenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tushufenlei), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,TushufenleiEntity tushufenlei, 
		HttpServletRequest request){
        EntityWrapper<TushufenleiEntity> ew = new EntityWrapper<TushufenleiEntity>();

		PageUtils page = tushufenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tushufenlei), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( TushufenleiEntity tushufenlei){
       	EntityWrapper<TushufenleiEntity> ew = new EntityWrapper<TushufenleiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( tushufenlei, "tushufenlei")); 
        return R.ok().put("data", tushufenleiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(TushufenleiEntity tushufenlei){
        EntityWrapper< TushufenleiEntity> ew = new EntityWrapper< TushufenleiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( tushufenlei, "tushufenlei")); 
		TushufenleiView tushufenleiView =  tushufenleiService.selectView(ew);
		return R.ok("查询图书分类成功").put("data", tushufenleiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        TushufenleiEntity tushufenlei = tushufenleiService.selectById(id);
        return R.ok().put("data", tushufenlei);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        TushufenleiEntity tushufenlei = tushufenleiService.selectById(id);
        return R.ok().put("data", tushufenlei);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody TushufenleiEntity tushufenlei, HttpServletRequest request){
    	tushufenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(tushufenlei);
        tushufenleiService.insert(tushufenlei);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody TushufenleiEntity tushufenlei, HttpServletRequest request){
    	tushufenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(tushufenlei);
        tushufenleiService.insert(tushufenlei);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody TushufenleiEntity tushufenlei, HttpServletRequest request){
        //ValidatorUtils.validateEntity(tushufenlei);
        tushufenleiService.updateById(tushufenlei);//全部更新
        return R.ok();
    }


    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        tushufenleiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<TushufenleiEntity> wrapper = new EntityWrapper<TushufenleiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = tushufenleiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	









}

list.vue
<template>
	<div class="main-content">
		<!-- 列表页 -->
		<template v-if="showFlag">
			<el-form class="center-form-pv" :style='{"margin":"0 200px 20px"}' :inline="true" :model="searchForm">
				<el-row :style='{"display":"block"}' >
					<div :style='{"margin":"0 15px 0 0","display":"inline-block"}'>
						<label :style='{"margin":"0 10px 0 0","color":"#666","display":"inline-block","lineHeight":"40px","fontSize":"14px","fontWeight":"600","height":"40px"}' class="item-label">图书分类</label>
						<el-input v-model="searchForm.tushufenlei" placeholder="图书分类" clearable></el-input>
					</div>
					<el-button :style='{"border":"0","cursor":"pointer","padding":"0 24px","outline":"none","color":"#fff","borderRadius":"4px","background":"rgba(162, 153, 136, 1)","width":"auto","fontSize":"14px","height":"40px"}' type="success" @click="search()">查询</el-button>
				</el-row>

				<el-row :style='{"margin":"20px 0","display":"flex"}'>
					<el-button :style='{"border":"0","cursor":"pointer","padding":"0 24px","margin":"0 10px 0 0","outline":"none","color":"#fff","borderRadius":"20px","background":"rgba(162, 153, 136, 1)","width":"auto","fontSize":"14px","height":"40px"}' v-if="isAuth('tushufenlei','新增')" type="success" @click="addOrUpdateHandler()">新增</el-button>
					<el-button :style='{"border":"0","cursor":"pointer","padding":"0 24px","margin":"0 10px 0 0","outline":"none","color":"#fff","borderRadius":"20px","background":"rgba(162, 153, 136, 1)","width":"auto","fontSize":"14px","height":"40px"}' v-if="isAuth('tushufenlei','删除')" :disabled="dataListSelections.length <= 0" type="danger" @click="deleteHandler()">删除</el-button>




				</el-row>
			</el-form>
			
			<!-- <div> -->
				<el-table class="tables"
					:stripe='false'
					:style='{"padding":"0","borderColor":"#666","margin":"0 0 0 200px ","borderWidth":"1px","background":"#fff","width":"89%","borderStyle":"solid"}' 
					v-if="isAuth('tushufenlei','查看')"
					:data="dataList"
					v-loading="dataListLoading"
				@selection-change="selectionChangeHandler">
					<el-table-column :resizable='true' type="selection" align="center" width="50"></el-table-column>
					<el-table-column :resizable='true' :sortable='false' label="索引" type="index" width="50" />
					<el-table-column :resizable='true' :sortable='false'  
						prop="tushufenlei"
					label="图书分类">
						<template slot-scope="scope">
							{{scope.row.tushufenlei}}
						</template>
					</el-table-column>
					<el-table-column width="300" label="操作">
						<template slot-scope="scope">
							<el-button :style='{"border":"1px solid #AAAAAA","cursor":"pointer","padding":"0 24px","margin":"0 10px 5px 0","outline":"none","color":"#AAAAAA","borderRadius":"4px","background":"#fff","width":"auto","fontSize":"14px","height":"32px"}' v-if=" isAuth('tushufenlei','查看')" type="success" size="mini" @click="addOrUpdateHandler(scope.row.id,'info')">详情</el-button>
							<el-button :style='{"border":"1px solid #AAAAAA","cursor":"pointer","padding":"0 24px","margin":"0 10px 5px 0","outline":"none","color":"#AAAAAA","borderRadius":"4px","background":"#fff","width":"auto","fontSize":"14px","height":"32px"}' v-if=" isAuth('tushufenlei','修改')" type="primary" size="mini" @click="addOrUpdateHandler(scope.row.id)">修改</el-button>





							<el-button :style='{"border":"1px solid #AAAAAA","cursor":"pointer","padding":"0 24px","margin":"0 10px 5px 0","outline":"none","color":"#AAAAAA","borderRadius":"4px","background":"#fff","width":"auto","fontSize":"14px","height":"32px"}' v-if="isAuth('tushufenlei','删除') " type="danger" size="mini" @click="deleteHandler(scope.row.id)">删除</el-button>
						</template>
					</el-table-column>
				</el-table>
				<el-pagination
					@size-change="sizeChangeHandle"
					@current-change="currentChangeHandle"
					:current-page="pageIndex"
					background
					:page-sizes="[10, 20, 30, 50]"
					:page-size="pageSize"
					:layout="layouts.join()"
					:total="totalPage"
					prev-text="<"
					next-text=">"
					:hide-on-single-page="false"
					:style='{"padding":"0","margin":"20px 0 0","whiteSpace":"nowrap","color":"#333","textAlign":"center","width":"100%","fontWeight":"500"}'
				></el-pagination>
			<!-- </div> -->
		</template>
		
		<!-- 添加/修改页面  将父组件的search方法传递给子组件-->
		<add-or-update v-if="addOrUpdateFlag" :parent="this" ref="addOrUpdate"></add-or-update>





	</div>
</template>

<script>
import axios from 'axios'
import AddOrUpdate from "./add-or-update";
export default {
  data() {
    return {
      searchForm: {
        key: ""
      },
      form:{},
      dataList: [],
      pageIndex: 1,
      pageSize: 10,
      totalPage: 0,
      dataListLoading: false,
      dataListSelections: [],
      showFlag: true,
      sfshVisiable: false,
      shForm: {},
      chartVisiable: false,
      chartVisiable1: false,
      chartVisiable2: false,
      chartVisiable3: false,
      chartVisiable4: false,
      chartVisiable5: false,
      addOrUpdateFlag:false,
      layouts: ["total","prev","pager","next","sizes","jumper"],

    };
  },
  created() {
    this.init();
    this.getDataList();
    this.contentStyleChange()
  },
  mounted() {
  },
  filters: {
    htmlfilter: function (val) {
      return val.replace(/<[^>]*>/g).replace(/undefined/g,'');
    }
  },
  components: {
    AddOrUpdate,
  },
  methods: {

    contentStyleChange() {
      this.contentPageStyleChange()
    },
    // 分页
    contentPageStyleChange(){
      let arr = []

      // if(this.contents.pageTotal) arr.push('total')
      // if(this.contents.pageSizes) arr.push('sizes')
      // if(this.contents.pagePrevNext){
      //   arr.push('prev')
      //   if(this.contents.pagePager) arr.push('pager')
      //   arr.push('next')
      // }
      // if(this.contents.pageJumper) arr.push('jumper')
      // this.layouts = arr.join()
      // this.contents.pageEachNum = 10
    },








    init () {
    },
    search() {
      this.pageIndex = 1;
      this.getDataList();
    },

    // 获取数据列表
    getDataList() {
      this.dataListLoading = true;
      let params = {
        page: this.pageIndex,
        limit: this.pageSize,
        sort: 'id',
        order: 'desc',
      }
           if(this.searchForm.tushufenlei!='' && this.searchForm.tushufenlei!=undefined){
            params['tushufenlei'] = '%' + this.searchForm.tushufenlei + '%'
          }
      this.$http({
        url: "tushufenlei/page",
        method: "get",
        params: params
      }).then(({ data }) => {
        if (data && data.code === 0) {
          this.dataList = data.data.list;
          this.totalPage = data.data.total;
        } else {
          this.dataList = [];
          this.totalPage = 0;
        }
        this.dataListLoading = false;
      });
    },
    // 每页数
    sizeChangeHandle(val) {
      this.pageSize = val;
      this.pageIndex = 1;
      this.getDataList();
    },
    // 当前页
    currentChangeHandle(val) {
      this.pageIndex = val;
      this.getDataList();
    },
    // 多选
    selectionChangeHandler(val) {
      this.dataListSelections = val;
    },
    // 添加/修改
    addOrUpdateHandler(id,type) {
      this.showFlag = false;
      this.addOrUpdateFlag = true;
      this.crossAddOrUpdateFlag = false;
      if(type!='info'){
        type = 'else';
      }
      this.$nextTick(() => {
        this.$refs.addOrUpdate.init(id,type);
      });
    },
    // 下载
    download(file){
      window.open(`${file}`)
    },
    // 删除
    deleteHandler(id) {
      var ids = id
        ? [Number(id)]
        : this.dataListSelections.map(item => {
            return Number(item.id);
          });
      this.$confirm(`确定进行[${id ? "删除" : "批量删除"}]操作?`, "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        this.$http({
          url: "tushufenlei/delete",
          method: "post",
          data: ids
        }).then(({ data }) => {
          if (data && data.code === 0) {
            this.$message({
              message: "操作成功",
              type: "success",
              duration: 1500,
              onClose: () => {
                this.search();
              }
            });
          } else {
            this.$message.error(data.msg);
          }
        });
      });
    },


  }

};
</script>
<style lang="scss" scoped>
	
	.center-form-pv {
	  .el-date-editor.el-input {
	    width: auto;
	  }
	}
	
	.el-input {
	  width: auto;
	}
	
	// form
	.center-form-pv .el-input /deep/ .el-input__inner {
				border: 0;
				background-color: #fff;
				border-radius: 4px;
				padding: 0 12px;
				outline: none;
				background-size: 100% 100%;
				color: rgba(0, 0, 0, 1);
				width: 140px;
				font-size: 14px;
				background-image: url(http://codegen.caihongy.cn/20220731/71abcaa4c11140228910cbac764a8355.png);
				height: 40px;
			}
	
	.center-form-pv .el-select /deep/ .el-input__inner {
				border: 0;
				border-radius: 4px;
				padding: 0 10px;
				outline: none;
				background-size: 100% 100%;
				color: rgba(0, 0, 0, 1);
				width: 130px;
				font-size: 14px;
				background-image: url(http://codegen.caihongy.cn/20220731/71abcaa4c11140228910cbac764a8355.png);
				text-align: center;
				height: 40px;
			}
	
	.center-form-pv .el-date-editor /deep/ .el-input__inner {
				border: 0;
				border-radius: 4px;
				padding: 0 10px 0 30px;
				outline: none;
				background-size: 100% 100%;
				color: rgba(0, 0, 0, 1);
				width: 140px;
				font-size: 14px;
				background-image: url(http://codegen.caihongy.cn/20220731/71abcaa4c11140228910cbac764a8355.png);
				height: 40px;
			}
	
	// table
	.el-table /deep/ .el-table__header-wrapper thead {
				color: #fff;
				font-weight: 500;
				width: 100%;
			}
	
	.el-table /deep/ .el-table__header-wrapper thead tr {
				background: #fff;
			}
	
	.el-table /deep/ .el-table__header-wrapper thead tr th {
				padding: 12px 0;
				background: rgba(162, 153, 136, 1);
				border-color: #666;
				border-width: 0 1px 1px 0;
				border-style: solid;
				text-align: center;
			}

	.el-table /deep/ .el-table__header-wrapper thead tr th .cell {
				padding: 0 10px;
				word-wrap: normal;
				word-break: break-all;
				white-space: normal;
				font-weight: bold;
				display: inline-block;
				vertical-align: middle;
				width: 100%;
				line-height: 24px;
				position: relative;
				text-overflow: ellipsis;
			}

	
	.el-table /deep/ .el-table__body-wrapper tbody {
				width: 100%;
			}

	.el-table /deep/ .el-table__body-wrapper tbody tr {
				background: #fff;
			}
	
	.el-table /deep/ .el-table__body-wrapper tbody tr td {
				padding: 12px 0;
				color: #999;
				background: #fff;
				border-color: #666;
				border-width: 0 1px 1px 0;
				border-style: solid;
				text-align: center;
			}
	
		
	.el-table /deep/ .el-table__body-wrapper tbody tr:hover td {
				padding: 12px 0;
				color: #000;
				background: rgba(162, 153, 136, 0.32);
				border-color: #666;
				border-width: 0 1px 1px 0;
				border-style: solid;
				text-align: center;
			}
	
	.el-table /deep/ .el-table__body-wrapper tbody tr td {
				padding: 12px 0;
				color: #999;
				background: #fff;
				border-color: #666;
				border-width: 0 1px 1px 0;
				border-style: solid;
				text-align: center;
			}

	.el-table /deep/ .el-table__body-wrapper tbody tr td .cell {
				padding: 0 10px;
				overflow: hidden;
				word-break: break-all;
				white-space: normal;
				line-height: 24px;
				text-overflow: ellipsis;
			}
	
	// pagination
	.main-content .el-pagination /deep/ .el-pagination__total {
				margin: 0 10px 0 0;
				color: #666;
				font-weight: 400;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .btn-prev {
				border: none;
				border-radius: 2px;
				padding: 0;
				margin: 0 5px;
				color: #666;
				background: #f4f4f5;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				min-width: 35px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .btn-next {
				border: none;
				border-radius: 2px;
				padding: 0;
				margin: 0 5px;
				color: #666;
				background: #f4f4f5;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				min-width: 35px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .btn-prev:disabled {
				border: none;
				cursor: not-allowed;
				border-radius: 2px;
				padding: 0;
				margin: 0 5px;
				color: #C0C4CC;
				background: #f4f4f5;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .btn-next:disabled {
				border: none;
				cursor: not-allowed;
				border-radius: 2px;
				padding: 0;
				margin: 0 5px;
				color: #C0C4CC;
				background: #f4f4f5;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				height: 28px;
			}

	.main-content .el-pagination /deep/ .el-pager {
				padding: 0;
				margin: 0;
				display: inline-block;
				vertical-align: top;
			}

	.main-content .el-pagination /deep/ .el-pager .number {
				cursor: pointer;
				padding: 0 4px;
				margin: 0 5px;
				color: #666;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				border-radius: 2px;
				background: #f4f4f5;
				text-align: center;
				min-width: 30px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .el-pager .number:hover {
				cursor: pointer;
				padding: 0 4px;
				margin: 0 5px;
				color: #333;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				border-radius: 2px;
				background: #f4f4f5;
				text-align: center;
				min-width: 30px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .el-pager .number.active {
				cursor: default;
				padding: 0 4px;
				margin: 0 5px;
				color: #FFF;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				border-radius: 2px;
				background: rgba(162, 153, 136,.5);
				text-align: center;
				min-width: 30px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__sizes {
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__sizes .el-input {
				margin: 0 5px;
				width: 100px;
				position: relative;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__sizes .el-input .el-input__inner {
				border: 1px solid #DCDFE6;
				cursor: pointer;
				padding: 0 25px 0 8px;
				color: #606266;
				display: inline-block;
				font-size: 13px;
				line-height: 28px;
				border-radius: 3px;
				outline: 0;
				background: #FFF;
				width: 100%;
				text-align: center;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__sizes .el-input span.el-input__suffix {
				top: 0;
				position: absolute;
				right: 0;
				height: 100%;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__sizes .el-input .el-input__suffix .el-select__caret {
				cursor: pointer;
				color: #C0C4CC;
				width: 25px;
				font-size: 14px;
				line-height: 28px;
				text-align: center;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__jump {
				margin: 0 0 0 24px;
				color: #606266;
				display: inline-block;
				vertical-align: top;
				font-size: 13px;
				line-height: 28px;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__jump .el-input {
				border-radius: 3px;
				padding: 0 2px;
				margin: 0 2px;
				display: inline-block;
				width: 50px;
				font-size: 14px;
				line-height: 18px;
				position: relative;
				text-align: center;
				height: 28px;
			}
	
	.main-content .el-pagination /deep/ .el-pagination__jump .el-input .el-input__inner {
				border: 1px solid #DCDFE6;
				cursor: pointer;
				padding: 0 3px;
				color: #606266;
				display: inline-block;
				font-size: 14px;
				line-height: 28px;
				border-radius: 3px;
				outline: 0;
				background: #FFF;
				width: 100%;
				text-align: center;
				height: 28px;
			}
</style>

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值