Browse Source

Initial commit

peach 3 years ago
parent
commit
89b39e6667
45 changed files with 5047 additions and 1618 deletions
  1. 127 0
      main/java/com/ruoyi/system/controller/NewsInfoController.java
  2. 195 0
      main/java/com/ruoyi/system/domain/NewsInfo.java
  3. 61 0
      main/java/com/ruoyi/system/mapper/NewsInfoMapper.java
  4. 61 0
      main/java/com/ruoyi/system/service/INewsInfoService.java
  5. 94 0
      main/java/com/ruoyi/system/service/impl/NewsInfoServiceImpl.java
  6. 107 0
      main/resources/mapper/system/NewsInfoMapper.xml
  7. 159 0
      main/resources/templates/system/info/add.html
  8. 170 0
      main/resources/templates/system/info/edit.html
  9. 156 0
      main/resources/templates/system/info/info.html
  10. 9 8
      ruoyi-admin/pom.xml
  11. 12 12
      ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
  12. 155 0
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/NavInfoController.java
  13. 130 0
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/NewsInfoController.java
  14. 52 0
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/RastNewsController.java
  15. 56 0
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/RestNavController.java
  16. 33 0
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/SystemDictController.java
  17. 119 0
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/NavInfo.java
  18. 221 0
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/NewsInfo.java
  19. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/NavInfoMapper.java
  20. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/NewsInfoMapper.java
  21. 69 0
      ruoyi-admin/src/main/java/com/ruoyi/system/service/INavInfoService.java
  22. 61 0
      ruoyi-admin/src/main/java/com/ruoyi/system/service/INewsInfoService.java
  23. 118 0
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/NavInfoServiceImpl.java
  24. 94 0
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/NewsInfoServiceImpl.java
  25. 9 9
      ruoyi-admin/src/main/resources/application-druid.yml
  26. 15 11
      ruoyi-admin/src/main/resources/application.yml
  27. 7 22
      ruoyi-admin/src/main/resources/banner.txt
  28. BIN
      ruoyi-admin/src/main/resources/ggzypz.org.cn.pfx
  29. 81 0
      ruoyi-admin/src/main/resources/mapper/system/NavInfoMapper.xml
  30. 117 0
      ruoyi-admin/src/main/resources/mapper/system/NewsInfoMapper.xml
  31. 1 1
      ruoyi-admin/src/main/resources/static/css/login.css
  32. 0 0
      ruoyi-admin/src/main/resources/static/css/login.min.css
  33. BIN
      ruoyi-admin/src/main/resources/static/img/1.jpg
  34. BIN
      ruoyi-admin/src/main/resources/static/img/login-background.jpg
  35. 113 113
      ruoyi-admin/src/main/resources/templates/index.html
  36. 13 13
      ruoyi-admin/src/main/resources/templates/login.html
  37. 1428 1428
      ruoyi-admin/src/main/resources/templates/main.html
  38. 167 0
      ruoyi-admin/src/main/resources/templates/system/info/add.html
  39. 193 0
      ruoyi-admin/src/main/resources/templates/system/info/edit.html
  40. 192 0
      ruoyi-admin/src/main/resources/templates/system/info/info.html
  41. 77 0
      ruoyi-admin/src/main/resources/templates/system/nav/add.html
  42. 78 0
      ruoyi-admin/src/main/resources/templates/system/nav/edit.html
  43. 123 0
      ruoyi-admin/src/main/resources/templates/system/nav/nav.html
  44. 49 0
      ruoyi-admin/src/main/resources/templates/system/nav/tree.html
  45. 3 1
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java

+ 127 - 0
main/java/com/ruoyi/system/controller/NewsInfoController.java

@@ -0,0 +1,127 @@
+package com.ruoyi.system.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.NewsInfo;
+import com.ruoyi.system.service.INewsInfoService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 文章管理Controller
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+@Controller
+@RequestMapping("/system/info")
+public class NewsInfoController extends BaseController
+{
+    private String prefix = "system/info";
+
+    @Autowired
+    private INewsInfoService newsInfoService;
+
+    @RequiresPermissions("system:info:view")
+    @GetMapping()
+    public String info()
+    {
+        return prefix + "/info";
+    }
+
+    /**
+     * 查询文章管理列表
+     */
+    @RequiresPermissions("system:info:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(NewsInfo newsInfo)
+    {
+        startPage();
+        List<NewsInfo> list = newsInfoService.selectNewsInfoList(newsInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出文章管理列表
+     */
+    @RequiresPermissions("system:info:export")
+    @Log(title = "文章管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public AjaxResult export(NewsInfo newsInfo)
+    {
+        List<NewsInfo> list = newsInfoService.selectNewsInfoList(newsInfo);
+        ExcelUtil<NewsInfo> util = new ExcelUtil<NewsInfo>(NewsInfo.class);
+        return util.exportExcel(list, "文章管理数据");
+    }
+
+    /**
+     * 新增文章管理
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存文章管理
+     */
+    @RequiresPermissions("system:info:add")
+    @Log(title = "文章管理", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(NewsInfo newsInfo)
+    {
+        return toAjax(newsInfoService.insertNewsInfo(newsInfo));
+    }
+
+    /**
+     * 修改文章管理
+     */
+    @RequiresPermissions("system:info:edit")
+    @GetMapping("/edit/{newsInfoId}")
+    public String edit(@PathVariable("newsInfoId") Long newsInfoId, ModelMap mmap)
+    {
+        NewsInfo newsInfo = newsInfoService.selectNewsInfoByNewsInfoId(newsInfoId);
+        mmap.put("newsInfo", newsInfo);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存文章管理
+     */
+    @RequiresPermissions("system:info:edit")
+    @Log(title = "文章管理", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(NewsInfo newsInfo)
+    {
+        return toAjax(newsInfoService.updateNewsInfo(newsInfo));
+    }
+
+    /**
+     * 删除文章管理
+     */
+    @RequiresPermissions("system:info:remove")
+    @Log(title = "文章管理", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(newsInfoService.deleteNewsInfoByNewsInfoIds(ids));
+    }
+}

+ 195 - 0
main/java/com/ruoyi/system/domain/NewsInfo.java

@@ -0,0 +1,195 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 文章管理对象 news_info
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+public class NewsInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 新闻编号 */
+    private Long newsInfoId;
+
+    /** 新闻标题 */
+    @Excel(name = "新闻标题")
+    private String newsInfoTitle;
+
+    /** 新闻作者 */
+    @Excel(name = "新闻作者")
+    private String newsInfoAuthor;
+
+    /** 新闻来源 */
+    @Excel(name = "新闻来源")
+    private String newsInfoSource;
+
+    /** 新闻正文 */
+    @Excel(name = "新闻正文")
+    private String newsInfoContent;
+
+    /** 新闻时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "新闻时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date newsInfoTime;
+
+    /** 新闻点击数量 */
+    @Excel(name = "新闻点击数量")
+    private Long newsInfoClick;
+
+    /** 创建新闻时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建新闻时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date newsInfoInittime;
+
+    /** 新闻类型 */
+    @Excel(name = "新闻类型")
+    private Long newsInfoType;
+
+    /** 是否是轮播(0不是,1是) */
+    @Excel(name = "是否是轮播(0不是,1是)")
+    private Long newsInfoCarousel;
+
+    /** 封面标题 */
+    @Excel(name = "封面标题")
+    private String newsInfoUrl;
+
+    /** 用户作者id */
+    @Excel(name = "用户作者id")
+    private Long newsInfoAuthorid;
+
+    public void setNewsInfoId(Long newsInfoId) 
+    {
+        this.newsInfoId = newsInfoId;
+    }
+
+    public Long getNewsInfoId() 
+    {
+        return newsInfoId;
+    }
+    public void setNewsInfoTitle(String newsInfoTitle) 
+    {
+        this.newsInfoTitle = newsInfoTitle;
+    }
+
+    public String getNewsInfoTitle() 
+    {
+        return newsInfoTitle;
+    }
+    public void setNewsInfoAuthor(String newsInfoAuthor) 
+    {
+        this.newsInfoAuthor = newsInfoAuthor;
+    }
+
+    public String getNewsInfoAuthor() 
+    {
+        return newsInfoAuthor;
+    }
+    public void setNewsInfoSource(String newsInfoSource) 
+    {
+        this.newsInfoSource = newsInfoSource;
+    }
+
+    public String getNewsInfoSource() 
+    {
+        return newsInfoSource;
+    }
+    public void setNewsInfoContent(String newsInfoContent) 
+    {
+        this.newsInfoContent = newsInfoContent;
+    }
+
+    public String getNewsInfoContent() 
+    {
+        return newsInfoContent;
+    }
+    public void setNewsInfoTime(Date newsInfoTime) 
+    {
+        this.newsInfoTime = newsInfoTime;
+    }
+
+    public Date getNewsInfoTime() 
+    {
+        return newsInfoTime;
+    }
+    public void setNewsInfoClick(Long newsInfoClick) 
+    {
+        this.newsInfoClick = newsInfoClick;
+    }
+
+    public Long getNewsInfoClick() 
+    {
+        return newsInfoClick;
+    }
+    public void setNewsInfoInittime(Date newsInfoInittime) 
+    {
+        this.newsInfoInittime = newsInfoInittime;
+    }
+
+    public Date getNewsInfoInittime() 
+    {
+        return newsInfoInittime;
+    }
+    public void setNewsInfoType(Long newsInfoType) 
+    {
+        this.newsInfoType = newsInfoType;
+    }
+
+    public Long getNewsInfoType() 
+    {
+        return newsInfoType;
+    }
+    public void setNewsInfoCarousel(Long newsInfoCarousel) 
+    {
+        this.newsInfoCarousel = newsInfoCarousel;
+    }
+
+    public Long getNewsInfoCarousel() 
+    {
+        return newsInfoCarousel;
+    }
+    public void setNewsInfoUrl(String newsInfoUrl) 
+    {
+        this.newsInfoUrl = newsInfoUrl;
+    }
+
+    public String getNewsInfoUrl() 
+    {
+        return newsInfoUrl;
+    }
+    public void setNewsInfoAuthorid(Long newsInfoAuthorid) 
+    {
+        this.newsInfoAuthorid = newsInfoAuthorid;
+    }
+
+    public Long getNewsInfoAuthorid() 
+    {
+        return newsInfoAuthorid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("newsInfoId", getNewsInfoId())
+            .append("newsInfoTitle", getNewsInfoTitle())
+            .append("newsInfoAuthor", getNewsInfoAuthor())
+            .append("newsInfoSource", getNewsInfoSource())
+            .append("newsInfoContent", getNewsInfoContent())
+            .append("newsInfoTime", getNewsInfoTime())
+            .append("newsInfoClick", getNewsInfoClick())
+            .append("newsInfoInittime", getNewsInfoInittime())
+            .append("newsInfoType", getNewsInfoType())
+            .append("newsInfoCarousel", getNewsInfoCarousel())
+            .append("newsInfoUrl", getNewsInfoUrl())
+            .append("newsInfoAuthorid", getNewsInfoAuthorid())
+            .toString();
+    }
+}

+ 61 - 0
main/java/com/ruoyi/system/mapper/NewsInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.NewsInfo;
+
+/**
+ * 文章管理Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+public interface NewsInfoMapper 
+{
+    /**
+     * 查询文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 文章管理
+     */
+    public NewsInfo selectNewsInfoByNewsInfoId(Long newsInfoId);
+
+    /**
+     * 查询文章管理列表
+     * 
+     * @param newsInfo 文章管理
+     * @return 文章管理集合
+     */
+    public List<NewsInfo> selectNewsInfoList(NewsInfo newsInfo);
+
+    /**
+     * 新增文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int insertNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 修改文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int updateNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 删除文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoId(Long newsInfoId);
+
+    /**
+     * 批量删除文章管理
+     * 
+     * @param newsInfoIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoIds(String[] newsInfoIds);
+}

+ 61 - 0
main/java/com/ruoyi/system/service/INewsInfoService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.NewsInfo;
+
+/**
+ * 文章管理Service接口
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+public interface INewsInfoService 
+{
+    /**
+     * 查询文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 文章管理
+     */
+    public NewsInfo selectNewsInfoByNewsInfoId(Long newsInfoId);
+
+    /**
+     * 查询文章管理列表
+     * 
+     * @param newsInfo 文章管理
+     * @return 文章管理集合
+     */
+    public List<NewsInfo> selectNewsInfoList(NewsInfo newsInfo);
+
+    /**
+     * 新增文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int insertNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 修改文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int updateNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 批量删除文章管理
+     * 
+     * @param newsInfoIds 需要删除的文章管理主键集合
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoIds(String newsInfoIds);
+
+    /**
+     * 删除文章管理信息
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoId(Long newsInfoId);
+}

+ 94 - 0
main/java/com/ruoyi/system/service/impl/NewsInfoServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.NewsInfoMapper;
+import com.ruoyi.system.domain.NewsInfo;
+import com.ruoyi.system.service.INewsInfoService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 文章管理Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+@Service
+public class NewsInfoServiceImpl implements INewsInfoService 
+{
+    @Autowired
+    private NewsInfoMapper newsInfoMapper;
+
+    /**
+     * 查询文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 文章管理
+     */
+    @Override
+    public NewsInfo selectNewsInfoByNewsInfoId(Long newsInfoId)
+    {
+        return newsInfoMapper.selectNewsInfoByNewsInfoId(newsInfoId);
+    }
+
+    /**
+     * 查询文章管理列表
+     * 
+     * @param newsInfo 文章管理
+     * @return 文章管理
+     */
+    @Override
+    public List<NewsInfo> selectNewsInfoList(NewsInfo newsInfo)
+    {
+        return newsInfoMapper.selectNewsInfoList(newsInfo);
+    }
+
+    /**
+     * 新增文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    @Override
+    public int insertNewsInfo(NewsInfo newsInfo)
+    {
+        return newsInfoMapper.insertNewsInfo(newsInfo);
+    }
+
+    /**
+     * 修改文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    @Override
+    public int updateNewsInfo(NewsInfo newsInfo)
+    {
+        return newsInfoMapper.updateNewsInfo(newsInfo);
+    }
+
+    /**
+     * 批量删除文章管理
+     * 
+     * @param newsInfoIds 需要删除的文章管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNewsInfoByNewsInfoIds(String newsInfoIds)
+    {
+        return newsInfoMapper.deleteNewsInfoByNewsInfoIds(Convert.toStrArray(newsInfoIds));
+    }
+
+    /**
+     * 删除文章管理信息
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNewsInfoByNewsInfoId(Long newsInfoId)
+    {
+        return newsInfoMapper.deleteNewsInfoByNewsInfoId(newsInfoId);
+    }
+}

+ 107 - 0
main/resources/mapper/system/NewsInfoMapper.xml

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.NewsInfoMapper">
+    
+    <resultMap type="NewsInfo" id="NewsInfoResult">
+        <result property="newsInfoId"    column="news_info_id"    />
+        <result property="newsInfoTitle"    column="news_info_title"    />
+        <result property="newsInfoAuthor"    column="news_info_author"    />
+        <result property="newsInfoSource"    column="news_info_source"    />
+        <result property="newsInfoContent"    column="news_info_content"    />
+        <result property="newsInfoTime"    column="news_info_time"    />
+        <result property="newsInfoClick"    column="news_info_click"    />
+        <result property="newsInfoInittime"    column="news_info_inittime"    />
+        <result property="newsInfoType"    column="news_info_type"    />
+        <result property="newsInfoCarousel"    column="news_info_carousel"    />
+        <result property="newsInfoUrl"    column="news_info_url"    />
+        <result property="newsInfoAuthorid"    column="news_info_authorId"    />
+    </resultMap>
+
+    <sql id="selectNewsInfoVo">
+        select news_info_id, news_info_title, news_info_author, news_info_source, news_info_content, news_info_time, news_info_click, news_info_inittime, news_info_type, news_info_carousel, news_info_url, news_info_authorId from news_info
+    </sql>
+
+    <select id="selectNewsInfoList" parameterType="NewsInfo" resultMap="NewsInfoResult">
+        <include refid="selectNewsInfoVo"/>
+        <where>  
+            <if test="newsInfoTitle != null  and newsInfoTitle != ''"> and news_info_title like concat('%', #{newsInfoTitle}, '%')</if>
+            <if test="newsInfoAuthor != null  and newsInfoAuthor != ''"> and news_info_author = #{newsInfoAuthor}</if>
+            <if test="newsInfoSource != null  and newsInfoSource != ''"> and news_info_source = #{newsInfoSource}</if>
+            <if test="newsInfoContent != null  and newsInfoContent != ''"> and news_info_content like concat('%', #{newsInfoContent}, '%')</if>
+            <if test="params.beginNewsInfoTime != null and params.beginNewsInfoTime != '' and params.endNewsInfoTime != null and params.endNewsInfoTime != ''"> and news_info_time between #{params.beginNewsInfoTime} and #{params.endNewsInfoTime}</if>
+            <if test="newsInfoClick != null "> and news_info_click = #{newsInfoClick}</if>
+            <if test="newsInfoInittime != null "> and news_info_inittime = #{newsInfoInittime}</if>
+            <if test="newsInfoType != null "> and news_info_type = #{newsInfoType}</if>
+            <if test="newsInfoCarousel != null "> and news_info_carousel = #{newsInfoCarousel}</if>
+            <if test="newsInfoUrl != null  and newsInfoUrl != ''"> and news_info_url = #{newsInfoUrl}</if>
+            <if test="newsInfoAuthorid != null "> and news_info_authorId = #{newsInfoAuthorid}</if>
+        </where>
+    </select>
+    
+    <select id="selectNewsInfoByNewsInfoId" parameterType="Long" resultMap="NewsInfoResult">
+        <include refid="selectNewsInfoVo"/>
+        where news_info_id = #{newsInfoId}
+    </select>
+        
+    <insert id="insertNewsInfo" parameterType="NewsInfo" useGeneratedKeys="true" keyProperty="newsInfoId">
+        insert into news_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="newsInfoTitle != null and newsInfoTitle != ''">news_info_title,</if>
+            <if test="newsInfoAuthor != null and newsInfoAuthor != ''">news_info_author,</if>
+            <if test="newsInfoSource != null">news_info_source,</if>
+            <if test="newsInfoContent != null and newsInfoContent != ''">news_info_content,</if>
+            <if test="newsInfoTime != null">news_info_time,</if>
+            <if test="newsInfoClick != null">news_info_click,</if>
+            <if test="newsInfoInittime != null">news_info_inittime,</if>
+            <if test="newsInfoType != null">news_info_type,</if>
+            <if test="newsInfoCarousel != null">news_info_carousel,</if>
+            <if test="newsInfoUrl != null">news_info_url,</if>
+            <if test="newsInfoAuthorid != null">news_info_authorId,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="newsInfoTitle != null and newsInfoTitle != ''">#{newsInfoTitle},</if>
+            <if test="newsInfoAuthor != null and newsInfoAuthor != ''">#{newsInfoAuthor},</if>
+            <if test="newsInfoSource != null">#{newsInfoSource},</if>
+            <if test="newsInfoContent != null and newsInfoContent != ''">#{newsInfoContent},</if>
+            <if test="newsInfoTime != null">#{newsInfoTime},</if>
+            <if test="newsInfoClick != null">#{newsInfoClick},</if>
+            <if test="newsInfoInittime != null">#{newsInfoInittime},</if>
+            <if test="newsInfoType != null">#{newsInfoType},</if>
+            <if test="newsInfoCarousel != null">#{newsInfoCarousel},</if>
+            <if test="newsInfoUrl != null">#{newsInfoUrl},</if>
+            <if test="newsInfoAuthorid != null">#{newsInfoAuthorid},</if>
+         </trim>
+    </insert>
+
+    <update id="updateNewsInfo" parameterType="NewsInfo">
+        update news_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="newsInfoTitle != null and newsInfoTitle != ''">news_info_title = #{newsInfoTitle},</if>
+            <if test="newsInfoAuthor != null and newsInfoAuthor != ''">news_info_author = #{newsInfoAuthor},</if>
+            <if test="newsInfoSource != null">news_info_source = #{newsInfoSource},</if>
+            <if test="newsInfoContent != null and newsInfoContent != ''">news_info_content = #{newsInfoContent},</if>
+            <if test="newsInfoTime != null">news_info_time = #{newsInfoTime},</if>
+            <if test="newsInfoClick != null">news_info_click = #{newsInfoClick},</if>
+            <if test="newsInfoInittime != null">news_info_inittime = #{newsInfoInittime},</if>
+            <if test="newsInfoType != null">news_info_type = #{newsInfoType},</if>
+            <if test="newsInfoCarousel != null">news_info_carousel = #{newsInfoCarousel},</if>
+            <if test="newsInfoUrl != null">news_info_url = #{newsInfoUrl},</if>
+            <if test="newsInfoAuthorid != null">news_info_authorId = #{newsInfoAuthorid},</if>
+        </trim>
+        where news_info_id = #{newsInfoId}
+    </update>
+
+    <delete id="deleteNewsInfoByNewsInfoId" parameterType="Long">
+        delete from news_info where news_info_id = #{newsInfoId}
+    </delete>
+
+    <delete id="deleteNewsInfoByNewsInfoIds" parameterType="String">
+        delete from news_info where news_info_id in 
+        <foreach item="newsInfoId" collection="array" open="(" separator="," close=")">
+            #{newsInfoId}
+        </foreach>
+    </delete>
+
+</mapper>

+ 159 - 0
main/resources/templates/system/info/add.html

@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增文章管理')" />
+    <th:block th:include="include :: datetimepicker-css" />
+    <th:block th:include="include :: bootstrap-fileinput-css"/>
+    <th:block th:include="include :: summernote-css" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-info-add">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻标题:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoTitle" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻作者:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoAuthor" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻来源:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoSource" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻正文:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" class="form-control" name="newsInfoContent">
+                    <div class="summernote" id="newsInfoContent"></div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻时间:</label>
+                <div class="col-sm-8">
+                    <div class="input-group date">
+                        <input name="newsInfoTime" class="form-control" placeholder="yyyy-MM-dd" type="text" required>
+                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻点击数量:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoClick" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">创建新闻时间:</label>
+                <div class="col-sm-8">
+                    <div class="input-group date">
+                        <input name="newsInfoInittime" class="form-control" placeholder="yyyy-MM-dd" type="text">
+                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否是轮播(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoCarousel" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">封面标题:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" name="newsInfoUrl">
+                    <div class="file-loading">
+                        <input class="form-control file-upload" id="newsInfoUrl" name="file" type="file">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">用户作者id:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoAuthorid" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: datetimepicker-js" />
+    <th:block th:include="include :: bootstrap-fileinput-js"/>
+    <th:block th:include="include :: summernote-js" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/info"
+        $("#form-info-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/add", $('#form-info-add').serialize());
+            }
+        }
+
+        $("input[name='newsInfoTime']").datetimepicker({
+            format: "yyyy-mm-dd",
+            minView: "month",
+            autoclose: true
+        });
+
+        $("input[name='newsInfoInittime']").datetimepicker({
+            format: "yyyy-mm-dd",
+            minView: "month",
+            autoclose: true
+        });
+
+        $(".file-upload").fileinput({
+            uploadUrl: ctx + 'common/upload',
+            maxFileCount: 1,
+            autoReplace: true
+        }).on('fileuploaded', function (event, data, previewId, index) {
+            $("input[name='" + event.currentTarget.id + "']").val(data.response.url)
+        }).on('fileremoved', function (event, id, index) {
+            $("input[name='" + event.currentTarget.id + "']").val('')
+        })
+
+        $(function() {
+            $('.summernote').summernote({
+                lang: 'zh-CN',
+                dialogsInBody: true,
+                callbacks: {
+                    onChange: function(contents, $edittable) {
+                        $("input[name='" + this.id + "']").val(contents);
+                    },
+                    onImageUpload: function(files) {
+                        var obj = this;
+                    	var data = new FormData();
+                    	data.append("file", files[0]);
+                    	$.ajax({
+                            type: "post",
+                            url: ctx + "common/upload",
+                    		data: data,
+                    		cache: false,
+                    		contentType: false,
+                    		processData: false,
+                    		dataType: 'json',
+                    		success: function(result) {
+                    		    if (result.code == web_status.SUCCESS) {
+                    		        $('#' + obj.id).summernote('insertImage', result.url);
+                    		    } else {
+                    		        $.modal.alertError(result.msg);
+                    		    }
+                    		},
+                    		error: function(error) {
+                    		    $.modal.alertWarning("图片上传失败。");
+                    		}
+                    	});
+                    }
+                }
+            });
+        });
+    </script>
+</body>
+</html>

+ 170 - 0
main/resources/templates/system/info/edit.html

@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改文章管理')" />
+    <th:block th:include="include :: datetimepicker-css" />
+    <th:block th:include="include :: bootstrap-fileinput-css"/>
+    <th:block th:include="include :: summernote-css" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-info-edit" th:object="${newsInfo}">
+            <input name="newsInfoId" th:field="*{newsInfoId}" type="hidden">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻标题:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoTitle" th:field="*{newsInfoTitle}" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻作者:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoAuthor" th:field="*{newsInfoAuthor}" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻来源:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoSource" th:field="*{newsInfoSource}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻正文:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" class="form-control" th:field="*{newsInfoContent}">
+                    <div class="summernote" id="newsInfoContent"></div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻时间:</label>
+                <div class="col-sm-8">
+                    <div class="input-group date">
+                        <input name="newsInfoTime" th:value="${#dates.format(newsInfo.newsInfoTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" required>
+                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻点击数量:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoClick" th:field="*{newsInfoClick}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">创建新闻时间:</label>
+                <div class="col-sm-8">
+                    <div class="input-group date">
+                        <input name="newsInfoInittime" th:value="${#dates.format(newsInfo.newsInfoInittime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
+                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否是轮播(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoCarousel" th:field="*{newsInfoCarousel}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">封面标题:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" name="newsInfoUrl" th:field="*{newsInfoUrl}">
+                    <div class="file-loading">
+                        <input class="form-control file-upload" id="newsInfoUrl" name="file" type="file">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">用户作者id:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoAuthorid" th:field="*{newsInfoAuthorid}" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: datetimepicker-js" />
+    <th:block th:include="include :: bootstrap-fileinput-js"/>
+    <th:block th:include="include :: summernote-js" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/info";
+        $("#form-info-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/edit", $('#form-info-edit').serialize());
+            }
+        }
+
+        $("input[name='newsInfoTime']").datetimepicker({
+            format: "yyyy-mm-dd",
+            minView: "month",
+            autoclose: true
+        });
+
+        $("input[name='newsInfoInittime']").datetimepicker({
+            format: "yyyy-mm-dd",
+            minView: "month",
+            autoclose: true
+        });
+
+        $(".file-upload").each(function (i) {
+            var val = $("input[name='" + this.id + "']").val()
+            $(this).fileinput({
+                'uploadUrl': ctx + 'common/upload',
+                initialPreviewAsData: true,
+                initialPreview: [val],
+                maxFileCount: 1,
+                autoReplace: true
+            }).on('fileuploaded', function (event, data, previewId, index) {
+                $("input[name='" + event.currentTarget.id + "']").val(data.response.url)
+            }).on('fileremoved', function (event, id, index) {
+                $("input[name='" + event.currentTarget.id + "']").val('')
+            })
+            $(this).fileinput('_initFileActions');
+        });
+
+        $(function() {
+            $('.summernote').each(function(i) {
+                $('#' + this.id).summernote({
+                    lang: 'zh-CN',
+                    dialogsInBody: true,
+                    callbacks: {
+                        onChange: function(contents, $edittable) {
+                            $("input[name='" + this.id + "']").val(contents);
+                        },
+                        onImageUpload: function(files) {
+                            var obj = this;
+                            var data = new FormData();
+                            data.append("file", files[0]);
+                            $.ajax({
+                                type: "post",
+                                url: ctx + "common/upload",
+                                data: data,
+                                cache: false,
+                                contentType: false,
+                                processData: false,
+                                dataType: 'json',
+                                success: function(result) {
+                                    if (result.code == web_status.SUCCESS) {
+                                        $('#' + obj.id).summernote('insertImage', result.url);
+                                    } else {
+                                        $.modal.alertError(result.msg);
+                                    }
+                                },
+                                error: function(error) {
+                                    $.modal.alertWarning("图片上传失败。");
+                                }
+                            });
+                        }
+                    }
+                });
+                var content = $("input[name='" + this.id + "']").val();
+                $('#' + this.id).summernote('code', content);
+            })
+        });
+    </script>
+</body>
+</html>

+ 156 - 0
main/resources/templates/system/info/info.html

@@ -0,0 +1,156 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('文章管理列表')" />
+</head>
+<body class="gray-bg">
+     <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="formId">
+                    <div class="select-list">
+                        <ul>
+                            <li>
+                                <label>新闻标题:</label>
+                                <input type="text" name="newsInfoTitle"/>
+                            </li>
+                            <li>
+                                <label>新闻作者:</label>
+                                <input type="text" name="newsInfoAuthor"/>
+                            </li>
+                            <li>
+                                <label>新闻来源:</label>
+                                <input type="text" name="newsInfoSource"/>
+                            </li>
+                            <li class="select-time">
+                                <label>新闻时间:</label>
+                                <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginNewsInfoTime]"/>
+                                <span>-</span>
+                                <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endNewsInfoTime]"/>
+                            </li>
+                            <li>
+                                <label>新闻点击数量:</label>
+                                <input type="text" name="newsInfoClick"/>
+                            </li>
+                            <li>
+                                <label>创建新闻时间:</label>
+                                <input type="text" class="time-input" placeholder="请选择创建新闻时间" name="newsInfoInittime"/>
+                            </li>
+                            <li>
+                                <label>是否是轮播(0不是,1是):</label>
+                                <input type="text" name="newsInfoCarousel"/>
+                            </li>
+                            <li>
+                                <label>用户作者id:</label>
+                                <input type="text" name="newsInfoAuthorid"/>
+                            </li>
+                            <li>
+                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+                            </li>
+                        </ul>
+                    </div>
+                </form>
+            </div>
+
+            <div class="btn-group-sm" id="toolbar" role="group">
+                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:info:add">
+                    <i class="fa fa-plus"></i> 添加
+                </a>
+                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:info:edit">
+                    <i class="fa fa-edit"></i> 修改
+                </a>
+                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:info:remove">
+                    <i class="fa fa-remove"></i> 删除
+                </a>
+                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:info:export">
+                    <i class="fa fa-download"></i> 导出
+                </a>
+            </div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-table"></table>
+            </div>
+        </div>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var editFlag = [[${@permission.hasPermi('system:info:edit')}]];
+        var removeFlag = [[${@permission.hasPermi('system:info:remove')}]];
+        var prefix = ctx + "system/info";
+
+        $(function() {
+            var options = {
+                url: prefix + "/list",
+                createUrl: prefix + "/add",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove",
+                exportUrl: prefix + "/export",
+                modalName: "文章管理",
+                columns: [{
+                    checkbox: true
+                },
+                {
+                    field: 'newsInfoId',
+                    title: '新闻编号',
+                    visible: false
+                },
+                {
+                    field: 'newsInfoTitle',
+                    title: '新闻标题'
+                },
+                {
+                    field: 'newsInfoAuthor',
+                    title: '新闻作者'
+                },
+                {
+                    field: 'newsInfoSource',
+                    title: '新闻来源'
+                },
+                {
+                    field: 'newsInfoContent',
+                    title: '新闻正文'
+                },
+                {
+                    field: 'newsInfoTime',
+                    title: '新闻时间'
+                },
+                {
+                    field: 'newsInfoClick',
+                    title: '新闻点击数量'
+                },
+                {
+                    field: 'newsInfoInittime',
+                    title: '创建新闻时间'
+                },
+                {
+                    field: 'newsInfoType',
+                    title: '新闻类型'
+                },
+                {
+                    field: 'newsInfoCarousel',
+                    title: '是否是轮播(0不是,1是)'
+                },
+                {
+                    field: 'newsInfoUrl',
+                    title: '封面标题'
+                },
+                {
+                    field: 'newsInfoAuthorid',
+                    title: '用户作者id'
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    formatter: function(value, row, index) {
+                        var actions = [];
+                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.newsInfoId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.newsInfoId + '\')"><i class="fa fa-remove"></i>删除</a>');
+                        return actions.join('');
+                    }
+                }]
+            };
+            $.table.init(options);
+        });
+    </script>
+</body>
+</html>

+ 9 - 8
ruoyi-admin/pom.xml

@@ -47,6 +47,7 @@
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
         </dependency>
 
         <!-- 核心模块-->
@@ -86,16 +87,16 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>   
-                <groupId>org.apache.maven.plugins</groupId>   
-                <artifactId>maven-war-plugin</artifactId>   
-                <version>3.0.0</version>   
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>3.0.0</version>
                 <configuration>
                     <failOnMissingWebXml>false</failOnMissingWebXml>
                     <warName>${project.artifactId}</warName>
-                </configuration>   
-            </plugin>   
-            <!-- YUI Compressor (CSS/JS压缩) 
+                </configuration>
+            </plugin>
+            <!-- YUI Compressor (CSS/JS压缩)
             <plugin>
                 <groupId>net.alchim31.maven</groupId>
                 <artifactId>yuicompressor-maven-plugin</artifactId>
@@ -131,4 +132,4 @@
         <finalName>${project.artifactId}</finalName>
     </build>
 
-</project>
+</project>

+ 12 - 12
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java

@@ -1,12 +1,18 @@
 package com.ruoyi;
 
+import org.apache.catalina.Context;
+import org.apache.catalina.connector.Connector;
+import org.apache.tomcat.util.descriptor.web.SecurityCollection;
+import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.context.annotation.Bean;
 
 /**
  * 启动程序
- * 
+ *
  * @author ruoyi
  */
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@@ -16,15 +22,9 @@ public class RuoYiApplication
     {
         // System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(RuoYiApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  若依启动成功   ლ(´ڡ`ლ)゙  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
+        System.out.println(" 观实后台管理系统启动成功!" );
+
     }
-}
+
+
+}

+ 155 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/controller/NavInfoController.java

@@ -0,0 +1,155 @@
+package com.ruoyi.system.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.NavInfo;
+import com.ruoyi.system.service.INavInfoService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.core.domain.Ztree;
+
+/**
+ * 中关村导航管理Controller
+ * 
+ * @author ruoyi
+ * @date 2021-12-29
+ */
+@Controller
+@RequestMapping("/system/nav")
+public class NavInfoController extends BaseController
+{
+    private String prefix = "system/nav";
+
+    @Autowired
+    private INavInfoService navInfoService;
+
+    @RequiresPermissions("system:nav:view")
+    @GetMapping()
+    public String nav()
+    {
+        return prefix + "/nav";
+    }
+
+    /**
+     * 查询中关村导航管理树列表
+     */
+    @RequiresPermissions("system:nav:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public List<NavInfo> list(NavInfo navInfo)
+    {
+        List<NavInfo> list = navInfoService.selectNavInfoList(navInfo);
+        return list;
+    }
+
+    /**
+     * 导出中关村导航管理列表
+     */
+    @RequiresPermissions("system:nav:export")
+    @Log(title = "中关村导航管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public AjaxResult export(NavInfo navInfo)
+    {
+        List<NavInfo> list = navInfoService.selectNavInfoList(navInfo);
+        ExcelUtil<NavInfo> util = new ExcelUtil<NavInfo>(NavInfo.class);
+        return util.exportExcel(list, "中关村导航管理数据");
+    }
+
+    /**
+     * 新增中关村导航管理
+     */
+    @GetMapping(value = { "/add/{navId}", "/add/" })
+    public String add(@PathVariable(value = "navId", required = false) Long navId, ModelMap mmap)
+    {
+        if (StringUtils.isNotNull(navId))
+        {
+            mmap.put("navInfo", navInfoService.selectNavInfoByNavId(navId));
+        }
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存中关村导航管理
+     */
+    @RequiresPermissions("system:nav:add")
+    @Log(title = "中关村导航管理", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(NavInfo navInfo)
+    {
+        return toAjax(navInfoService.insertNavInfo(navInfo));
+    }
+
+    /**
+     * 修改中关村导航管理
+     */
+    @RequiresPermissions("system:nav:edit")
+    @GetMapping("/edit/{navId}")
+    public String edit(@PathVariable("navId") Long navId, ModelMap mmap)
+    {
+        NavInfo navInfo = navInfoService.selectNavInfoByNavId(navId);
+        mmap.put("navInfo", navInfo);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存中关村导航管理
+     */
+    @RequiresPermissions("system:nav:edit")
+    @Log(title = "中关村导航管理", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(NavInfo navInfo)
+    {
+        return toAjax(navInfoService.updateNavInfo(navInfo));
+    }
+
+    /**
+     * 删除
+     */
+    @RequiresPermissions("system:nav:remove")
+    @Log(title = "中关村导航管理", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{navId}")
+    @ResponseBody
+    public AjaxResult remove(@PathVariable("navId") Long navId)
+    {
+        return toAjax(navInfoService.deleteNavInfoByNavId(navId));
+    }
+
+    /**
+     * 选择中关村导航管理树
+     */
+    @GetMapping(value = { "/selectNavTree/{navId}", "/selectNavTree/" })
+    public String selectNavTree(@PathVariable(value = "navId", required = false) Long navId, ModelMap mmap)
+    {
+        if (StringUtils.isNotNull(navId))
+        {
+            mmap.put("navInfo", navInfoService.selectNavInfoByNavId(navId));
+        }
+        return prefix + "/tree";
+    }
+
+    /**
+     * 加载中关村导航管理树列表
+     */
+    @GetMapping("/treeData")
+    @ResponseBody
+    public List<Ztree> treeData()
+    {
+        List<Ztree> ztrees = navInfoService.selectNavInfoTree();
+        return ztrees;
+    }
+}

+ 130 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/controller/NewsInfoController.java

@@ -0,0 +1,130 @@
+package com.ruoyi.system.controller;
+
+import java.util.List;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.system.domain.NewsInfo;
+import com.ruoyi.system.service.INewsInfoService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 文章管理Controller
+ *
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+@Controller
+@RequestMapping("/system/info")
+public class NewsInfoController extends BaseController
+{
+    private String prefix = "system/info";
+
+    @Autowired
+    private INewsInfoService newsInfoService;
+
+    @RequiresPermissions("system:info:view")
+    @GetMapping()
+    public String info()
+    {
+        return prefix + "/info";
+    }
+
+    /**
+     * 查询文章管理列表
+     */
+    @RequiresPermissions("system:info:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(NewsInfo newsInfo)
+    {
+        startPage();
+
+        List<NewsInfo> list = newsInfoService.selectNewsInfoList(newsInfo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出文章管理列表
+     */
+    @RequiresPermissions("system:info:export")
+    @Log(title = "文章管理", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public AjaxResult export(NewsInfo newsInfo)
+    {
+        List<NewsInfo> list = newsInfoService.selectNewsInfoList(newsInfo);
+        ExcelUtil<NewsInfo> util = new ExcelUtil<NewsInfo>(NewsInfo.class);
+        return util.exportExcel(list, "文章管理数据");
+    }
+
+    /**
+     * 新增文章管理
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存文章管理
+     */
+    @RequiresPermissions("system:info:add")
+    @Log(title = "文章管理", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(NewsInfo newsInfo)
+    {
+        return toAjax(newsInfoService.insertNewsInfo(newsInfo));
+    }
+
+    /**
+     * 修改文章管理
+     */
+    @RequiresPermissions("system:info:edit")
+    @GetMapping("/edit/{newsInfoId}")
+    public String edit(@PathVariable("newsInfoId") Long newsInfoId, ModelMap mmap)
+    {
+        NewsInfo newsInfo = newsInfoService.selectNewsInfoByNewsInfoId(newsInfoId);
+        mmap.put("newsInfo", newsInfo);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存文章管理
+     */
+    @RequiresPermissions("system:info:edit")
+    @Log(title = "文章管理", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(NewsInfo newsInfo)
+    {
+        return toAjax(newsInfoService.updateNewsInfo(newsInfo));
+    }
+
+    /**
+     * 删除文章管理
+     */
+    @RequiresPermissions("system:info:remove")
+    @Log(title = "文章管理", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(newsInfoService.deleteNewsInfoByNewsInfoIds(ids));
+    }
+}

+ 52 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/controller/RastNewsController.java

@@ -0,0 +1,52 @@
+package com.ruoyi.system.controller;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.system.domain.NavInfo;
+import com.ruoyi.system.domain.NewsInfo;
+import com.ruoyi.system.service.INewsInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @description:
+ * @author: 11375
+ * @date: 2021/12/29 14:37
+ */
+@RestController
+@RequestMapping("/website/news")
+public class RastNewsController extends BaseController {
+
+
+    @Autowired
+    private INewsInfoService newsInfoService;
+
+    @GetMapping("/list")
+    public TableDataInfo list(NewsInfo newsInfo)
+    {
+
+        startPage();
+        List<NewsInfo> list = newsInfoService.selectNewsInfoList(newsInfo);
+        return getDataTable(list);
+    }
+
+    @PostMapping("/listPost")
+    public TableDataInfo listPost(NewsInfo newsInfo, @RequestParam("beginNewsInfoTime") String start,
+                                  @RequestParam("endNewsInfoTime") String end
+    )
+    {
+        if(start!=null&&end!=null){
+            HashMap<String,Object> map=new HashMap<>();
+            map.put("beginNewsInfoTime",start);
+            map.put("endNewsInfoTime",end);
+            newsInfo.setParams(map);
+        }
+        startPage();
+        List<NewsInfo> list = newsInfoService.selectNewsInfoList(newsInfo);
+        return getDataTable(list);
+    }
+
+}

+ 56 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/controller/RestNavController.java

@@ -0,0 +1,56 @@
+package com.ruoyi.system.controller;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.system.domain.NavInfo;
+import com.ruoyi.system.domain.NewsInfo;
+import com.ruoyi.system.service.INavInfoService;
+import com.ruoyi.system.service.INewsInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description:
+ * @author: 11375
+ * @date: 2021/12/29 14:06
+ */
+@RestController
+@RequestMapping("/website/nav")
+public class RestNavController extends BaseController {
+
+    @Autowired
+    private INavInfoService navInfoService;
+
+    @GetMapping("/list")
+    public TableDataInfo list(NavInfo navInfo)
+    {
+        startPage();
+        List<NavInfo> list = navInfoService.selectNavInfoList(navInfo);
+        List<NavInfo> list1=new ArrayList<>();
+        for (NavInfo item:list){
+            if (item.getNavParent()==0){
+                list1.add(item);
+            }
+        }
+
+        list1.sort((final NavInfo c1, final NavInfo c2)->c1.getNavOrder().compareTo(c2.getNavOrder()));
+        for (NavInfo item:list1){
+            List<NavInfo> list2=new ArrayList<>();
+            for (NavInfo item1:list){
+                if (item1.getNavParent()==item.getNavId()){
+                  list2.add(item1);
+                }
+            }
+            item.setNavInfos(list2);
+        }
+
+
+        return getDataTable(list1);
+    }
+
+}

+ 33 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/controller/SystemDictController.java

@@ -0,0 +1,33 @@
+package com.ruoyi.system.controller;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.system.domain.NewsInfo;
+import com.ruoyi.system.service.impl.SysDictDataServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: 11375
+ * @date: 2021/12/30 10:53
+ */
+@RestController
+@RequestMapping("/website/dict")
+public class SystemDictController  extends BaseController {
+    @Autowired
+    private SysDictDataServiceImpl sysDictDataService;
+
+    @GetMapping("/list")
+    public TableDataInfo list(SysDictData sysDictData)
+    {
+        startPage();
+        List<SysDictData> list = sysDictDataService.selectDictDataList(sysDictData);
+        return getDataTable(list);
+    }
+}

+ 119 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/domain/NavInfo.java

@@ -0,0 +1,119 @@
+package com.ruoyi.system.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.TreeEntity;
+
+import java.util.List;
+
+/**
+ * 中关村导航管理对象 nav_info
+ *
+ * @author ruoyi
+ * @date 2021-12-29
+ */
+public class NavInfo extends TreeEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 导航栏id */
+    private Long navId;
+
+    /** 导航栏父级id(不填写默认父级) */
+    @Excel(name = "导航栏父级id(不填写默认父级)")
+    private Long navParent;
+
+    /** 导航栏内容 */
+    @Excel(name = "导航栏内容")
+    private String navTitle;
+
+    /** 导航栏连接 */
+    @Excel(name = "导航栏连接")
+    private String navUrl;
+
+    /** 导航栏等级 */
+    @Excel(name = "导航栏等级")
+    private Long navLevel;
+
+    /** 导航栏顺序 */
+    @Excel(name = "导航栏顺序")
+    private Long navOrder;
+
+    public List<NavInfo> getNavInfos() {
+        return navInfos;
+    }
+
+    public void setNavInfos(List<NavInfo> navInfos) {
+        this.navInfos = navInfos;
+    }
+
+    private List<NavInfo> navInfos;
+
+    public void setNavId(Long navId)
+    {
+        this.navId = navId;
+    }
+
+    public Long getNavId()
+    {
+        return navId;
+    }
+    public void setNavParent(Long navParent)
+    {
+        this.navParent = navParent;
+    }
+
+    public Long getNavParent()
+    {
+        return navParent;
+    }
+    public void setNavTitle(String navTitle)
+    {
+        this.navTitle = navTitle;
+    }
+
+    public String getNavTitle()
+    {
+        return navTitle;
+    }
+    public void setNavUrl(String navUrl)
+    {
+        this.navUrl = navUrl;
+    }
+
+    public String getNavUrl()
+    {
+        return navUrl;
+    }
+    public void setNavLevel(Long navLevel)
+    {
+        this.navLevel = navLevel;
+    }
+
+    public Long getNavLevel()
+    {
+        return navLevel;
+    }
+    public void setNavOrder(Long navOrder)
+    {
+        this.navOrder = navOrder;
+    }
+
+    public Long getNavOrder()
+    {
+        return navOrder;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("navId", getNavId())
+            .append("navParent", getNavParent())
+            .append("navTitle", getNavTitle())
+            .append("navUrl", getNavUrl())
+            .append("navLevel", getNavLevel())
+            .append("navOrder", getNavOrder())
+            .toString();
+    }
+}

+ 221 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/domain/NewsInfo.java

@@ -0,0 +1,221 @@
+package com.ruoyi.system.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 文章管理对象 news_info
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+public class NewsInfo extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 新闻编号 */
+    @Excel(name = "新闻编号")
+    private Long newsInfoId;
+
+    /** 新闻标题 */
+    @Excel(name = "新闻标题")
+    private String newsInfoTitle;
+
+    /** 新闻作者 */
+    @Excel(name = "新闻作者")
+    private String newsInfoAuthor;
+
+    /** 新闻来源 */
+    @Excel(name = "新闻来源")
+    private String newsInfoSource;
+
+    /** 新闻时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "新闻时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date newsInfoTime;
+
+    /** 新闻点击数量 */
+    @Excel(name = "新闻点击数量")
+    private Long newsInfoClick;
+
+    /** 创建新闻时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建新闻时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date newsInfoInittime;
+
+    /** 新闻类型 */
+    @Excel(name = "新闻类型")
+    private Long newsInfoType;
+
+    /** 是否是轮播(0不是,1是) */
+    @Excel(name = "是否是轮播(0不是,1是)")
+    private Long newsInfoCarousel;
+
+    /** 是否为静态轮播(0不是,1是) */
+    @Excel(name = "是否为静态轮播(0不是,1是)")
+    private Long newsInfoSc;
+
+    /** 是否为推荐文章(0不是,1是) */
+    @Excel(name = "是否为推荐文章(0不是,1是)")
+    private Long newsInfoRecommend;
+
+    /** 封面地址 */
+    private String newsInfoUrl;
+
+    /** 用户作者id */
+    private Long newsInfoAuthorid;
+
+    /** 新闻正文 */
+    private String newsInfoContent;
+
+    public void setNewsInfoId(Long newsInfoId) 
+    {
+        this.newsInfoId = newsInfoId;
+    }
+
+    public Long getNewsInfoId() 
+    {
+        return newsInfoId;
+    }
+    public void setNewsInfoTitle(String newsInfoTitle) 
+    {
+        this.newsInfoTitle = newsInfoTitle;
+    }
+
+    public String getNewsInfoTitle() 
+    {
+        return newsInfoTitle;
+    }
+    public void setNewsInfoAuthor(String newsInfoAuthor) 
+    {
+        this.newsInfoAuthor = newsInfoAuthor;
+    }
+
+    public String getNewsInfoAuthor() 
+    {
+        return newsInfoAuthor;
+    }
+    public void setNewsInfoSource(String newsInfoSource) 
+    {
+        this.newsInfoSource = newsInfoSource;
+    }
+
+    public String getNewsInfoSource() 
+    {
+        return newsInfoSource;
+    }
+    public void setNewsInfoTime(Date newsInfoTime) 
+    {
+        this.newsInfoTime = newsInfoTime;
+    }
+
+    public Date getNewsInfoTime() 
+    {
+        return newsInfoTime;
+    }
+    public void setNewsInfoClick(Long newsInfoClick) 
+    {
+        this.newsInfoClick = newsInfoClick;
+    }
+
+    public Long getNewsInfoClick() 
+    {
+        return newsInfoClick;
+    }
+    public void setNewsInfoInittime(Date newsInfoInittime) 
+    {
+        this.newsInfoInittime = newsInfoInittime;
+    }
+
+    public Date getNewsInfoInittime() 
+    {
+        return newsInfoInittime;
+    }
+    public void setNewsInfoType(Long newsInfoType) 
+    {
+        this.newsInfoType = newsInfoType;
+    }
+
+    public Long getNewsInfoType() 
+    {
+        return newsInfoType;
+    }
+    public void setNewsInfoCarousel(Long newsInfoCarousel) 
+    {
+        this.newsInfoCarousel = newsInfoCarousel;
+    }
+
+    public Long getNewsInfoCarousel() 
+    {
+        return newsInfoCarousel;
+    }
+    public void setNewsInfoSc(Long newsInfoSc) 
+    {
+        this.newsInfoSc = newsInfoSc;
+    }
+
+    public Long getNewsInfoSc() 
+    {
+        return newsInfoSc;
+    }
+    public void setNewsInfoRecommend(Long newsInfoRecommend) 
+    {
+        this.newsInfoRecommend = newsInfoRecommend;
+    }
+
+    public Long getNewsInfoRecommend() 
+    {
+        return newsInfoRecommend;
+    }
+    public void setNewsInfoUrl(String newsInfoUrl) 
+    {
+        this.newsInfoUrl = newsInfoUrl;
+    }
+
+    public String getNewsInfoUrl() 
+    {
+        return newsInfoUrl;
+    }
+    public void setNewsInfoAuthorid(Long newsInfoAuthorid) 
+    {
+        this.newsInfoAuthorid = newsInfoAuthorid;
+    }
+
+    public Long getNewsInfoAuthorid() 
+    {
+        return newsInfoAuthorid;
+    }
+    public void setNewsInfoContent(String newsInfoContent) 
+    {
+        this.newsInfoContent = newsInfoContent;
+    }
+
+    public String getNewsInfoContent() 
+    {
+        return newsInfoContent;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("newsInfoId", getNewsInfoId())
+            .append("newsInfoTitle", getNewsInfoTitle())
+            .append("newsInfoAuthor", getNewsInfoAuthor())
+            .append("newsInfoSource", getNewsInfoSource())
+            .append("newsInfoTime", getNewsInfoTime())
+            .append("newsInfoClick", getNewsInfoClick())
+            .append("newsInfoInittime", getNewsInfoInittime())
+            .append("newsInfoType", getNewsInfoType())
+            .append("newsInfoCarousel", getNewsInfoCarousel())
+            .append("newsInfoSc", getNewsInfoSc())
+            .append("newsInfoRecommend", getNewsInfoRecommend())
+            .append("newsInfoUrl", getNewsInfoUrl())
+            .append("newsInfoAuthorid", getNewsInfoAuthorid())
+            .append("newsInfoContent", getNewsInfoContent())
+            .toString();
+    }
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/NavInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.NavInfo;
+
+/**
+ * 中关村导航管理Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2021-12-29
+ */
+public interface NavInfoMapper 
+{
+    /**
+     * 查询中关村导航管理
+     * 
+     * @param navId 中关村导航管理主键
+     * @return 中关村导航管理
+     */
+    public NavInfo selectNavInfoByNavId(Long navId);
+
+    /**
+     * 查询中关村导航管理列表
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 中关村导航管理集合
+     */
+    public List<NavInfo> selectNavInfoList(NavInfo navInfo);
+
+    /**
+     * 新增中关村导航管理
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 结果
+     */
+    public int insertNavInfo(NavInfo navInfo);
+
+    /**
+     * 修改中关村导航管理
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 结果
+     */
+    public int updateNavInfo(NavInfo navInfo);
+
+    /**
+     * 删除中关村导航管理
+     * 
+     * @param navId 中关村导航管理主键
+     * @return 结果
+     */
+    public int deleteNavInfoByNavId(Long navId);
+
+    /**
+     * 批量删除中关村导航管理
+     * 
+     * @param navIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteNavInfoByNavIds(String[] navIds);
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/NewsInfoMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.mapper;
+
+import java.util.List;
+import com.ruoyi.system.domain.NewsInfo;
+
+/**
+ * 文章管理Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+public interface NewsInfoMapper 
+{
+    /**
+     * 查询文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 文章管理
+     */
+    public NewsInfo selectNewsInfoByNewsInfoId(Long newsInfoId);
+
+    /**
+     * 查询文章管理列表
+     * 
+     * @param newsInfo 文章管理
+     * @return 文章管理集合
+     */
+    public List<NewsInfo> selectNewsInfoList(NewsInfo newsInfo);
+
+    /**
+     * 新增文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int insertNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 修改文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int updateNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 删除文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoId(Long newsInfoId);
+
+    /**
+     * 批量删除文章管理
+     * 
+     * @param newsInfoIds 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoIds(String[] newsInfoIds);
+}

+ 69 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/service/INavInfoService.java

@@ -0,0 +1,69 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.NavInfo;
+import com.ruoyi.common.core.domain.Ztree;
+
+/**
+ * 中关村导航管理Service接口
+ * 
+ * @author ruoyi
+ * @date 2021-12-29
+ */
+public interface INavInfoService 
+{
+    /**
+     * 查询中关村导航管理
+     * 
+     * @param navId 中关村导航管理主键
+     * @return 中关村导航管理
+     */
+    public NavInfo selectNavInfoByNavId(Long navId);
+
+    /**
+     * 查询中关村导航管理列表
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 中关村导航管理集合
+     */
+    public List<NavInfo> selectNavInfoList(NavInfo navInfo);
+
+    /**
+     * 新增中关村导航管理
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 结果
+     */
+    public int insertNavInfo(NavInfo navInfo);
+
+    /**
+     * 修改中关村导航管理
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 结果
+     */
+    public int updateNavInfo(NavInfo navInfo);
+
+    /**
+     * 批量删除中关村导航管理
+     * 
+     * @param navIds 需要删除的中关村导航管理主键集合
+     * @return 结果
+     */
+    public int deleteNavInfoByNavIds(String navIds);
+
+    /**
+     * 删除中关村导航管理信息
+     * 
+     * @param navId 中关村导航管理主键
+     * @return 结果
+     */
+    public int deleteNavInfoByNavId(Long navId);
+
+    /**
+     * 查询中关村导航管理树列表
+     * 
+     * @return 所有中关村导航管理信息
+     */
+    public List<Ztree> selectNavInfoTree();
+}

+ 61 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/service/INewsInfoService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.system.service;
+
+import java.util.List;
+import com.ruoyi.system.domain.NewsInfo;
+
+/**
+ * 文章管理Service接口
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+public interface INewsInfoService 
+{
+    /**
+     * 查询文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 文章管理
+     */
+    public NewsInfo selectNewsInfoByNewsInfoId(Long newsInfoId);
+
+    /**
+     * 查询文章管理列表
+     * 
+     * @param newsInfo 文章管理
+     * @return 文章管理集合
+     */
+    public List<NewsInfo> selectNewsInfoList(NewsInfo newsInfo);
+
+    /**
+     * 新增文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int insertNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 修改文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    public int updateNewsInfo(NewsInfo newsInfo);
+
+    /**
+     * 批量删除文章管理
+     * 
+     * @param newsInfoIds 需要删除的文章管理主键集合
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoIds(String newsInfoIds);
+
+    /**
+     * 删除文章管理信息
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 结果
+     */
+    public int deleteNewsInfoByNewsInfoId(Long newsInfoId);
+}

+ 118 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/NavInfoServiceImpl.java

@@ -0,0 +1,118 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import java.util.ArrayList;
+import com.ruoyi.common.core.domain.Ztree;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.NavInfoMapper;
+import com.ruoyi.system.domain.NavInfo;
+import com.ruoyi.system.service.INavInfoService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 中关村导航管理Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2021-12-29
+ */
+@Service
+public class NavInfoServiceImpl implements INavInfoService 
+{
+    @Autowired
+    private NavInfoMapper navInfoMapper;
+
+    /**
+     * 查询中关村导航管理
+     * 
+     * @param navId 中关村导航管理主键
+     * @return 中关村导航管理
+     */
+    @Override
+    public NavInfo selectNavInfoByNavId(Long navId)
+    {
+        return navInfoMapper.selectNavInfoByNavId(navId);
+    }
+
+    /**
+     * 查询中关村导航管理列表
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 中关村导航管理
+     */
+    @Override
+    public List<NavInfo> selectNavInfoList(NavInfo navInfo)
+    {
+        return navInfoMapper.selectNavInfoList(navInfo);
+    }
+
+    /**
+     * 新增中关村导航管理
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 结果
+     */
+    @Override
+    public int insertNavInfo(NavInfo navInfo)
+    {
+        return navInfoMapper.insertNavInfo(navInfo);
+    }
+
+    /**
+     * 修改中关村导航管理
+     * 
+     * @param navInfo 中关村导航管理
+     * @return 结果
+     */
+    @Override
+    public int updateNavInfo(NavInfo navInfo)
+    {
+        return navInfoMapper.updateNavInfo(navInfo);
+    }
+
+    /**
+     * 批量删除中关村导航管理
+     * 
+     * @param navIds 需要删除的中关村导航管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNavInfoByNavIds(String navIds)
+    {
+        return navInfoMapper.deleteNavInfoByNavIds(Convert.toStrArray(navIds));
+    }
+
+    /**
+     * 删除中关村导航管理信息
+     * 
+     * @param navId 中关村导航管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNavInfoByNavId(Long navId)
+    {
+        return navInfoMapper.deleteNavInfoByNavId(navId);
+    }
+
+    /**
+     * 查询中关村导航管理树列表
+     * 
+     * @return 所有中关村导航管理信息
+     */
+    @Override
+    public List<Ztree> selectNavInfoTree()
+    {
+        List<NavInfo> navInfoList = navInfoMapper.selectNavInfoList(new NavInfo());
+        List<Ztree> ztrees = new ArrayList<Ztree>();
+        for (NavInfo navInfo : navInfoList)
+        {
+            Ztree ztree = new Ztree();
+            ztree.setId(navInfo.getNavId());
+            ztree.setpId(navInfo.getNavParent());
+            ztree.setName(navInfo.getNavTitle());
+            ztree.setTitle(navInfo.getNavTitle());
+            ztrees.add(ztree);
+        }
+        return ztrees;
+    }
+}

+ 94 - 0
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/NewsInfoServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.system.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.system.mapper.NewsInfoMapper;
+import com.ruoyi.system.domain.NewsInfo;
+import com.ruoyi.system.service.INewsInfoService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 文章管理Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2021-12-28
+ */
+@Service
+public class NewsInfoServiceImpl implements INewsInfoService 
+{
+    @Autowired
+    private NewsInfoMapper newsInfoMapper;
+
+    /**
+     * 查询文章管理
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 文章管理
+     */
+    @Override
+    public NewsInfo selectNewsInfoByNewsInfoId(Long newsInfoId)
+    {
+        return newsInfoMapper.selectNewsInfoByNewsInfoId(newsInfoId);
+    }
+
+    /**
+     * 查询文章管理列表
+     * 
+     * @param newsInfo 文章管理
+     * @return 文章管理
+     */
+    @Override
+    public List<NewsInfo> selectNewsInfoList(NewsInfo newsInfo)
+    {
+        return newsInfoMapper.selectNewsInfoList(newsInfo);
+    }
+
+    /**
+     * 新增文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    @Override
+    public int insertNewsInfo(NewsInfo newsInfo)
+    {
+        return newsInfoMapper.insertNewsInfo(newsInfo);
+    }
+
+    /**
+     * 修改文章管理
+     * 
+     * @param newsInfo 文章管理
+     * @return 结果
+     */
+    @Override
+    public int updateNewsInfo(NewsInfo newsInfo)
+    {
+        return newsInfoMapper.updateNewsInfo(newsInfo);
+    }
+
+    /**
+     * 批量删除文章管理
+     * 
+     * @param newsInfoIds 需要删除的文章管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNewsInfoByNewsInfoIds(String newsInfoIds)
+    {
+        return newsInfoMapper.deleteNewsInfoByNewsInfoIds(Convert.toStrArray(newsInfoIds));
+    }
+
+    /**
+     * 删除文章管理信息
+     * 
+     * @param newsInfoId 文章管理主键
+     * @return 结果
+     */
+    @Override
+    public int deleteNewsInfoByNewsInfoId(Long newsInfoId)
+    {
+        return newsInfoMapper.deleteNewsInfoByNewsInfoId(newsInfoId);
+    }
+}

+ 9 - 9
ruoyi-admin/src/main/resources/application-druid.yml

@@ -2,20 +2,20 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                username: root
-                password: password
+                url: jdbc:mysql://118.25.195.98:3306/gs_website?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false
+                username: guanshi
+                password: GSmysql2019*
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭
                 enabled: false
-                url: 
-                username: 
-                password: 
+                url:
+                username:
+                password:
             # 初始连接数
             initialSize: 5
             # 最小连接池数量
@@ -35,7 +35,7 @@ spring:
             testWhileIdle: true
             testOnBorrow: false
             testOnReturn: false
-            webStatFilter: 
+            webStatFilter:
                 enabled: true
             statViewServlet:
                 enabled: true
@@ -54,4 +54,4 @@ spring:
                     merge-sql: true
                 wall:
                     config:
-                        multi-statement-allow: true
+                        multi-statement-allow: true

+ 15 - 11
ruoyi-admin/src/main/resources/application.yml

@@ -1,7 +1,7 @@
 # 项目相关配置
 ruoyi:
   # 名称
-  name: RuoYi
+  name: guanshi
   # 版本
   version: 4.7.2
   # 版权年份
@@ -9,14 +9,18 @@ ruoyi:
   # 实例演示开关
   demoEnabled: true
   # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: D:/ruoyi/uploadPath
+  profile: /data/gs/uploadPath
   # 获取ip地址开关
   addressEnabled: false
 
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为80
-  port: 80
+  port: 8090
+  ssl:
+    key-store: classpath:ggzypz.org.cn.pfx
+    key-store-type: PKCS12
+    key-store-password: 243GFY3m
   servlet:
     # 应用的访问路径
     context-path: /
@@ -30,7 +34,7 @@ server:
       max: 800
       # Tomcat启动初始化的线程数,默认值10
       min-spare: 100
- 
+
 # 日志配置
 logging:
   level:
@@ -58,7 +62,7 @@ spring:
   jackson:
     time-zone: GMT+8
     date-format: yyyy-MM-dd HH:mm:ss
-  profiles: 
+  profiles:
     active: druid
   # 文件上传
   servlet:
@@ -83,10 +87,10 @@ mybatis:
     configLocation: classpath:mybatis/mybatis-config.xml
 
 # PageHelper分页插件
-pagehelper: 
+pagehelper:
   helperDialect: mysql
   supportMethodsArguments: true
-  params: count=countSql 
+  params: count=countSql
 
 # Shiro
 shiro:
@@ -103,7 +107,7 @@ shiro:
     captchaType: math
   cookie:
     # 设置Cookie的域名 默认空,即当前访问的域名
-    domain: 
+    domain:
     # 设置cookie的有效访问路径
     path: /
     # 设置HttpOnly属性
@@ -111,7 +115,7 @@ shiro:
     # 设置Cookie的过期时间,天为单位
     maxAge: 30
     # 设置密钥,务必保持唯一性(生成方式,直接拷贝到main运行即可)Base64.encodeToString(CipherUtils.generateNewKey(128, "AES").getEncoded()) (默认启动生成随机秘钥,随机秘钥会导致之前客户端RememberMe Cookie无效,如设置固定秘钥RememberMe Cookie则有效)
-    cipherKey: 
+    cipherKey:
   session:
     # Session超时时间,-1代表永不过期(默认30分钟)
     expireTime: 30
@@ -128,11 +132,11 @@ shiro:
     enabled: true
 
 # 防止XSS攻击
-xss: 
+xss:
   # 过滤开关
   enabled: true
   # 排除链接(多个用逗号分隔)
-  excludes: /system/notice/*
+  excludes: /system/notice/*,/system/info/*,/website/news/*
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*
 

+ 7 - 22
ruoyi-admin/src/main/resources/banner.txt

@@ -1,24 +1,9 @@
 Application Version: ${ruoyi.version}
 Spring Boot Version: ${spring-boot.version}
-////////////////////////////////////////////////////////////////////
-//                          _ooOoo_                               //
-//                         o8888888o                              //
-//                         88" . "88                              //
-//                         (| ^_^ |)                              //
-//                         O\  =  /O                              //
-//                      ____/`---'\____                           //
-//                    .'  \\|     |//  `.                         //
-//                   /  \\|||  :  |||//  \                        //
-//                  /  _||||| -:- |||||-  \                       //
-//                  |   | \\\  -  /// |   |                       //
-//                  | \_|  ''\---/''  |   |                       //
-//                  \  .-\__  `-`  ___/-. /                       //
-//                ___`. .'  /--.--\  `. . ___                     //
-//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
-//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
-//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
-//      ========`-.____`-.___\_____/___.-`____.-'========         //
-//                           `=---='                              //
-//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
-//             佛祖保佑       永不宕机      永无BUG               //
-////////////////////////////////////////////////////////////////////
+ ██████╗ ██╗   ██╗ █████╗ ███╗   ██╗███████╗██╗  ██╗██╗
+██╔════╝ ██║   ██║██╔══██╗████╗  ██║██╔════╝██║  ██║██║
+██║  ███╗██║   ██║███████║██╔██╗ ██║███████╗███████║██║
+██║   ██║██║   ██║██╔══██║██║╚██╗██║╚════██║██╔══██║██║
+╚██████╔╝╚██████╔╝██║  ██║██║ ╚████║███████║██║  ██║██║
+ ╚═════╝  ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝╚═╝
+

BIN
ruoyi-admin/src/main/resources/ggzypz.org.cn.pfx


+ 81 - 0
ruoyi-admin/src/main/resources/mapper/system/NavInfoMapper.xml

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.NavInfoMapper">
+    
+    <resultMap type="NavInfo" id="NavInfoResult">
+        <result property="navId"    column="nav_id"    />
+        <result property="navParent"    column="nav_parent"    />
+        <result property="navTitle"    column="nav_title"    />
+        <result property="navUrl"    column="nav_url"    />
+        <result property="navLevel"    column="nav_level"    />
+        <result property="navOrder"    column="nav_order"    />
+        <result property="parentName" column="parent_name" />
+    </resultMap>
+
+    <sql id="selectNavInfoVo">
+        select nav_id, nav_parent, nav_title, nav_url, nav_level, nav_order from nav_info
+    </sql>
+
+    <select id="selectNavInfoList" parameterType="NavInfo" resultMap="NavInfoResult">
+        <include refid="selectNavInfoVo"/>
+        <where>  
+            <if test="navParent != null "> and nav_parent = #{navParent}</if>
+            <if test="navTitle != null  and navTitle != ''"> and nav_title = #{navTitle}</if>
+            <if test="navUrl != null  and navUrl != ''"> and nav_url = #{navUrl}</if>
+            <if test="navLevel != null "> and nav_level = #{navLevel}</if>
+            <if test="navOrder != null "> and nav_order = #{navOrder}</if>
+        </where>
+        order by nav_parent
+    </select>
+    
+    <select id="selectNavInfoByNavId" parameterType="Long" resultMap="NavInfoResult">
+        select t.nav_id, t.nav_parent, t.nav_title, t.nav_url, t.nav_level, t.nav_order, p.nav_title as parent_name
+        from nav_info t
+        left join nav_info p on p.nav_id = t.nav_parent
+        where t.nav_id = #{navId}
+    </select>
+        
+    <insert id="insertNavInfo" parameterType="NavInfo" useGeneratedKeys="true" keyProperty="navId">
+        insert into nav_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="navParent != null">nav_parent,</if>
+            <if test="navTitle != null and navTitle != ''">nav_title,</if>
+            <if test="navUrl != null and navUrl != ''">nav_url,</if>
+            <if test="navLevel != null">nav_level,</if>
+            <if test="navOrder != null">nav_order,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="navParent != null">#{navParent},</if>
+            <if test="navTitle != null and navTitle != ''">#{navTitle},</if>
+            <if test="navUrl != null and navUrl != ''">#{navUrl},</if>
+            <if test="navLevel != null">#{navLevel},</if>
+            <if test="navOrder != null">#{navOrder},</if>
+         </trim>
+    </insert>
+
+    <update id="updateNavInfo" parameterType="NavInfo">
+        update nav_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="navParent != null">nav_parent = #{navParent},</if>
+            <if test="navTitle != null and navTitle != ''">nav_title = #{navTitle},</if>
+            <if test="navUrl != null and navUrl != ''">nav_url = #{navUrl},</if>
+            <if test="navLevel != null">nav_level = #{navLevel},</if>
+            <if test="navOrder != null">nav_order = #{navOrder},</if>
+        </trim>
+        where nav_id = #{navId}
+    </update>
+
+    <delete id="deleteNavInfoByNavId" parameterType="Long">
+        delete from nav_info where nav_id = #{navId}
+    </delete>
+
+    <delete id="deleteNavInfoByNavIds" parameterType="String">
+        delete from nav_info where nav_id in 
+        <foreach item="navId" collection="array" open="(" separator="," close=")">
+            #{navId}
+        </foreach>
+    </delete>
+
+</mapper>

+ 117 - 0
ruoyi-admin/src/main/resources/mapper/system/NewsInfoMapper.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.NewsInfoMapper">
+    
+    <resultMap type="NewsInfo" id="NewsInfoResult">
+        <result property="newsInfoId"    column="news_info_id"    />
+        <result property="newsInfoTitle"    column="news_info_title"    />
+        <result property="newsInfoAuthor"    column="news_info_author"    />
+        <result property="newsInfoSource"    column="news_info_source"    />
+        <result property="newsInfoTime"    column="news_info_time"    />
+        <result property="newsInfoClick"    column="news_info_click"    />
+        <result property="newsInfoInittime"    column="news_info_inittime"    />
+        <result property="newsInfoType"    column="news_info_type"    />
+        <result property="newsInfoCarousel"    column="news_info_carousel"    />
+        <result property="newsInfoSc"    column="news_info_sc"    />
+        <result property="newsInfoRecommend"    column="news_info_recommend"    />
+        <result property="newsInfoUrl"    column="news_info_url"    />
+        <result property="newsInfoAuthorid"    column="news_info_authorId"    />
+        <result property="newsInfoContent"    column="news_info_content"    />
+    </resultMap>
+
+    <sql id="selectNewsInfoVo">
+        select news_info_id, news_info_title, news_info_author, news_info_source, news_info_time, news_info_click, news_info_inittime, news_info_type, news_info_carousel, news_info_sc, news_info_recommend, news_info_url, news_info_authorId, news_info_content from news_info
+    </sql>
+
+    <select id="selectNewsInfoList" parameterType="NewsInfo" resultMap="NewsInfoResult">
+        <include refid="selectNewsInfoVo"/>
+        <where>  
+            <if test="newsInfoId != null "> and news_info_id = #{newsInfoId}</if>
+            <if test="newsInfoTitle != null  and newsInfoTitle != ''"> and news_info_title like concat('%', #{newsInfoTitle}, '%')</if>
+            <if test="newsInfoAuthor != null  and newsInfoAuthor != ''"> and news_info_author = #{newsInfoAuthor}</if>
+            <if test="newsInfoSource != null  and newsInfoSource != ''"> and news_info_source = #{newsInfoSource}</if>
+            <if test="params.beginNewsInfoTime != null and params.beginNewsInfoTime != '' and params.endNewsInfoTime != null and params.endNewsInfoTime != ''"> and news_info_time between #{params.beginNewsInfoTime} and #{params.endNewsInfoTime}</if>
+            <if test="newsInfoClick != null "> and news_info_click = #{newsInfoClick}</if>
+            <if test="newsInfoInittime != null "> and news_info_inittime = #{newsInfoInittime}</if>
+            <if test="newsInfoType != null "> and news_info_type = #{newsInfoType}</if>
+            <if test="newsInfoCarousel != null "> and news_info_carousel = #{newsInfoCarousel}</if>
+            <if test="newsInfoSc != null "> and news_info_sc = #{newsInfoSc}</if>
+            <if test="newsInfoRecommend != null "> and news_info_recommend = #{newsInfoRecommend}</if>
+            <if test="newsInfoUrl != null  and newsInfoUrl != ''"> and news_info_url = #{newsInfoUrl}</if>
+            <if test="newsInfoContent != null  and newsInfoContent != ''"> and news_info_content like concat('%', #{newsInfoContent}, '%')</if>
+        </where>
+    </select>
+    
+    <select id="selectNewsInfoByNewsInfoId" parameterType="Long" resultMap="NewsInfoResult">
+        <include refid="selectNewsInfoVo"/>
+        where news_info_id = #{newsInfoId}
+    </select>
+        
+    <insert id="insertNewsInfo" parameterType="NewsInfo" useGeneratedKeys="true" keyProperty="newsInfoId">
+        insert into news_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="newsInfoTitle != null and newsInfoTitle != ''">news_info_title,</if>
+            <if test="newsInfoAuthor != null and newsInfoAuthor != ''">news_info_author,</if>
+            <if test="newsInfoSource != null">news_info_source,</if>
+            <if test="newsInfoTime != null">news_info_time,</if>
+            <if test="newsInfoClick != null">news_info_click,</if>
+            <if test="newsInfoInittime != null">news_info_inittime,</if>
+            <if test="newsInfoType != null">news_info_type,</if>
+            <if test="newsInfoCarousel != null">news_info_carousel,</if>
+            <if test="newsInfoSc != null">news_info_sc,</if>
+            <if test="newsInfoRecommend != null">news_info_recommend,</if>
+            <if test="newsInfoUrl != null">news_info_url,</if>
+            <if test="newsInfoAuthorid != null">news_info_authorId,</if>
+            <if test="newsInfoContent != null and newsInfoContent != ''">news_info_content,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="newsInfoTitle != null and newsInfoTitle != ''">#{newsInfoTitle},</if>
+            <if test="newsInfoAuthor != null and newsInfoAuthor != ''">#{newsInfoAuthor},</if>
+            <if test="newsInfoSource != null">#{newsInfoSource},</if>
+            <if test="newsInfoTime != null">#{newsInfoTime},</if>
+            <if test="newsInfoClick != null">#{newsInfoClick},</if>
+            <if test="newsInfoInittime != null">#{newsInfoInittime},</if>
+            <if test="newsInfoType != null">#{newsInfoType},</if>
+            <if test="newsInfoCarousel != null">#{newsInfoCarousel},</if>
+            <if test="newsInfoSc != null">#{newsInfoSc},</if>
+            <if test="newsInfoRecommend != null">#{newsInfoRecommend},</if>
+            <if test="newsInfoUrl != null">#{newsInfoUrl},</if>
+            <if test="newsInfoAuthorid != null">#{newsInfoAuthorid},</if>
+            <if test="newsInfoContent != null and newsInfoContent != ''">#{newsInfoContent},</if>
+         </trim>
+    </insert>
+
+    <update id="updateNewsInfo" parameterType="NewsInfo">
+        update news_info
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="newsInfoTitle != null and newsInfoTitle != ''">news_info_title = #{newsInfoTitle},</if>
+            <if test="newsInfoAuthor != null and newsInfoAuthor != ''">news_info_author = #{newsInfoAuthor},</if>
+            <if test="newsInfoSource != null">news_info_source = #{newsInfoSource},</if>
+            <if test="newsInfoTime != null">news_info_time = #{newsInfoTime},</if>
+            <if test="newsInfoClick != null">news_info_click = #{newsInfoClick},</if>
+            <if test="newsInfoInittime != null">news_info_inittime = #{newsInfoInittime},</if>
+            <if test="newsInfoType != null">news_info_type = #{newsInfoType},</if>
+            <if test="newsInfoCarousel != null">news_info_carousel = #{newsInfoCarousel},</if>
+            <if test="newsInfoSc != null">news_info_sc = #{newsInfoSc},</if>
+            <if test="newsInfoRecommend != null">news_info_recommend = #{newsInfoRecommend},</if>
+            <if test="newsInfoUrl != null">news_info_url = #{newsInfoUrl},</if>
+            <if test="newsInfoAuthorid != null">news_info_authorId = #{newsInfoAuthorid},</if>
+            <if test="newsInfoContent != null and newsInfoContent != ''">news_info_content = #{newsInfoContent},</if>
+        </trim>
+        where news_info_id = #{newsInfoId}
+    </update>
+
+    <delete id="deleteNewsInfoByNewsInfoId" parameterType="Long">
+        delete from news_info where news_info_id = #{newsInfoId}
+    </delete>
+
+    <delete id="deleteNewsInfoByNewsInfoIds" parameterType="String">
+        delete from news_info where news_info_id in 
+        <foreach item="newsInfoId" collection="array" open="(" separator="," close=")">
+            #{newsInfoId}
+        </foreach>
+    </delete>
+
+</mapper>

+ 1 - 1
ruoyi-admin/src/main/resources/static/css/login.css

@@ -158,4 +158,4 @@ body.signin {
 
 .form-control:focus{
     border-color: #1ab394 !important;
-}
+}

File diff suppressed because it is too large
+ 0 - 0
ruoyi-admin/src/main/resources/static/css/login.min.css


BIN
ruoyi-admin/src/main/resources/static/img/1.jpg


BIN
ruoyi-admin/src/main/resources/static/img/login-background.jpg


+ 113 - 113
ruoyi-admin/src/main/resources/templates/index.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta name="renderer" content="webkit">
-    <title>若依系统首页</title>
+    <title>观实系统首页</title>
     <!-- 避免IE使用兼容模式 -->
  	<meta http-equiv="X-UA-Compatible" content="IE=edge">
     <link th:href="@{favicon.ico}" rel="shortcut icon"/>
@@ -26,7 +26,7 @@
         </div>
         <a th:href="@{/index}">
             <li class="logo hidden-xs">
-                <span class="logo-lg">RuoYi</span>
+                <span class="logo-lg">观实</span>
             </li>
          </a>
         <div class="sidebar-collapse">
@@ -71,111 +71,111 @@
 						</li>
 					</ul>
                 </li>
-                <li th:if="${demoEnabled}">
-                    <a href="#"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span class="fa arrow"></span></a>
-                    <ul class="nav nav-second-level collapse">
-                        <li> <a>表单<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/form/button}">按钮</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/grid}">栅格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/select}">下拉框</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/timeline}">时间轴</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/basic}">基本表单</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/cards}">卡片列表</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/jasny}">功能扩展</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/sortable}">拖动排序</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/invoice}">单据打印</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/labels_tips}">标签 & 提示</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/tabs_panels}">选项卡 & 面板</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/validate}">表单校验</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/wizard}">表单向导</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/upload}">文件上传</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/datetime}">日期和时间</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/summernote}">富文本编辑器</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/duallistbox}">左右互选组件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/autocomplete}">搜索自动补全</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/cxselect}">多级联动下拉</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/localrefresh}">Ajax局部刷新</a></li>
-							</ul>
-                        </li>
-                        <li> <a>表格<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/table/search}">查询条件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/footer}">数据汇总</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/groupHeader}">组合表头</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/export}">表格导出</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/exportSelected}">导出选择列</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/remember}">翻页记住选择</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/pageGo}">跳转至指定页</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/params}">自定义查询参数</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/multi}">初始多表格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/button}">点击按钮加载表格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/data}">直接加载表格数据</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/fixedColumns}">表格冻结列</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/event}">自定义触发事件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/headerStyle}">表格标题格式化</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/detail}">表格细节视图</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/child}">表格父子视图</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/image}">表格图片预览</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/curd}">动态增删改查</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/reorderRows}">表格行拖拽操作</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/reorderColumns}">表格列拖拽操作</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/resizable}">表格列宽拖动</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/editable}">表格行内编辑</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/subdata}">主子表提交</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/print}">表格打印配置</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
-							</ul>
-                        </li>
-                        <li> <a>弹框<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/modal/dialog}">模态窗口</a></li>
-								<li><a class="menuItem" th:href="@{/demo/modal/layer}">弹层组件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/modal/table}">弹层表格</a></li>
-							</ul>
-                        </li>
-                        <li> <a>操作<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/operate/table}">表格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/operate/other}">其他</a></li>
-							</ul>
-                        </li>
-                        <li> <a>报表<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/report/echarts}">百度ECharts</a></li>
-								<li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>
-								<li><a class="menuItem" th:href="@{/demo/report/sparkline}">sparkline</a></li>
-								<li><a class="menuItem" th:href="@{/demo/report/metrics}">图表组合</a></li>
-							</ul>
-                        </li>
-                        <li> <a>图标<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>
-								<li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>
-							</ul>
-                        </li>
-                        <li>
-	                        <a href="#"><i class="fa fa-sitemap"></i>四层菜单<span class="fa arrow"></span></a>
-	                        <ul class="nav nav-third-level collapse">
-	                            <li>
-	                                <a href="#" id="damian">三级菜单1<span class="fa arrow"></span></a>
-	                                <ul class="nav nav-third-level">
-	                                    <li>
-	                                        <a href="#">四级菜单1</a>
-	                                    </li>
-	                                    <li>
-	                                        <a href="#">四级菜单2</a>
-	                                    </li>
-	                                </ul>
-	                            </li>
-	                            <li><a href="#">三级菜单2</a></li>
-	                        </ul>
-	                    </li>
-                    </ul>
-                </li>
+<!--                <li th:if="${demoEnabled}">-->
+<!--                    <a href="#"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span class="fa arrow"></span></a>-->
+<!--                    <ul class="nav nav-second-level collapse">-->
+<!--                        <li> <a>表单<span class="fa arrow"></span></a>-->
+<!--                            <ul class="nav nav-third-level">-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/button}">按钮</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/grid}">栅格</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/select}">下拉框</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/timeline}">时间轴</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/basic}">基本表单</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/cards}">卡片列表</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/jasny}">功能扩展</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/sortable}">拖动排序</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/invoice}">单据打印</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/labels_tips}">标签 & 提示</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/tabs_panels}">选项卡 & 面板</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/validate}">表单校验</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/wizard}">表单向导</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/upload}">文件上传</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/datetime}">日期和时间</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/summernote}">富文本编辑器</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/duallistbox}">左右互选组件</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/autocomplete}">搜索自动补全</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/cxselect}">多级联动下拉</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/form/localrefresh}">Ajax局部刷新</a></li>-->
+<!--							</ul>-->
+<!--                        </li>-->
+<!--                        <li> <a>表格<span class="fa arrow"></span></a>-->
+<!--                            <ul class="nav nav-third-level">-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/search}">查询条件</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/footer}">数据汇总</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/groupHeader}">组合表头</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/export}">表格导出</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/exportSelected}">导出选择列</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/remember}">翻页记住选择</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/pageGo}">跳转至指定页</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/params}">自定义查询参数</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/multi}">初始多表格</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/button}">点击按钮加载表格</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/data}">直接加载表格数据</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/fixedColumns}">表格冻结列</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/event}">自定义触发事件</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/headerStyle}">表格标题格式化</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/detail}">表格细节视图</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/child}">表格父子视图</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/image}">表格图片预览</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/curd}">动态增删改查</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/reorderRows}">表格行拖拽操作</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/reorderColumns}">表格列拖拽操作</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/resizable}">表格列宽拖动</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/editable}">表格行内编辑</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/subdata}">主子表提交</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/print}">表格打印配置</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>-->
+<!--							</ul>-->
+<!--                        </li>-->
+<!--                        <li> <a>弹框<span class="fa arrow"></span></a>-->
+<!--                            <ul class="nav nav-third-level">-->
+<!--								<li><a class="menuItem" th:href="@{/demo/modal/dialog}">模态窗口</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/modal/layer}">弹层组件</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/modal/table}">弹层表格</a></li>-->
+<!--							</ul>-->
+<!--                        </li>-->
+<!--                        <li> <a>操作<span class="fa arrow"></span></a>-->
+<!--                            <ul class="nav nav-third-level">-->
+<!--								<li><a class="menuItem" th:href="@{/demo/operate/table}">表格</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/operate/other}">其他</a></li>-->
+<!--							</ul>-->
+<!--                        </li>-->
+<!--                        <li> <a>报表<span class="fa arrow"></span></a>-->
+<!--                            <ul class="nav nav-third-level">-->
+<!--								<li><a class="menuItem" th:href="@{/demo/report/echarts}">百度ECharts</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/report/sparkline}">sparkline</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/report/metrics}">图表组合</a></li>-->
+<!--							</ul>-->
+<!--                        </li>-->
+<!--                        <li> <a>图标<span class="fa arrow"></span></a>-->
+<!--                            <ul class="nav nav-third-level">-->
+<!--								<li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>-->
+<!--								<li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>-->
+<!--							</ul>-->
+<!--                        </li>-->
+<!--                        <li>-->
+<!--	                        <a href="#"><i class="fa fa-sitemap"></i>四层菜单<span class="fa arrow"></span></a>-->
+<!--	                        <ul class="nav nav-third-level collapse">-->
+<!--	                            <li>-->
+<!--	                                <a href="#" id="damian">三级菜单1<span class="fa arrow"></span></a>-->
+<!--	                                <ul class="nav nav-third-level">-->
+<!--	                                    <li>-->
+<!--	                                        <a href="#">四级菜单1</a>-->
+<!--	                                    </li>-->
+<!--	                                    <li>-->
+<!--	                                        <a href="#">四级菜单2</a>-->
+<!--	                                    </li>-->
+<!--	                                </ul>-->
+<!--	                            </li>-->
+<!--	                            <li><a href="#">三级菜单2</a></li>-->
+<!--	                        </ul>-->
+<!--	                    </li>-->
+<!--                    </ul>-->
+<!--                </li>-->
             </ul>
         </div>
     </nav>
@@ -191,7 +191,7 @@
                     </a>
                 </div>
                 <ul class="nav navbar-top-links navbar-right welcome-message">
-                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li>
+<!--                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li>-->
                     <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
 	                <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li>
                     <li class="dropdown user-menu">
@@ -249,7 +249,7 @@
         </div>
 
         <div th:if="${footer}" class="footer">
-            <div class="pull-right">© [[${copyrightYear}]] RuoYi Copyright </div>
+            <div class="pull-right">© [[${copyrightYear}]] 观实 Copyright </div>
         </div>
     </div>
     <!--右侧部分结束-->
@@ -268,8 +268,8 @@
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:inline="javascript">
 window.history.forward(1);
-var ctx = [[@{/}]]; 
-var lockscreen = [[${session.lockscreen}]]; 
+var ctx = [[@{/}]];
+var lockscreen = [[${session.lockscreen}]];
 if(lockscreen){window.top.location=ctx+"lockscreen";}
 // 皮肤缓存
 var skin = storage.get("skin");
@@ -344,7 +344,7 @@ $(function() {
 	    	}
 	    }
 	}
-	
+
 	/* 初始密码提示 */
 	if([[${isDefaultModifyPwd}]]) {
 		layer.confirm("您的密码还是初始密码,请修改密码!", {
@@ -357,7 +357,7 @@ $(function() {
 			layer.close(index);
 		});
 	}
-	
+
 	/* 过期密码提示 */
 	if([[${isPasswordExpired}]]) {
 		layer.confirm("您的密码已过期,请尽快修改密码!", {

+ 13 - 13
ruoyi-admin/src/main/resources/templates/login.html

@@ -3,7 +3,7 @@
 <head>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
-    <title>登录若依系统</title>
+    <title>登录观实系统</title>
     <meta name="description" content="若依后台管理框架">
     <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
     <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
@@ -26,26 +26,26 @@
             <div class="col-sm-7">
                 <div class="signin-info">
                     <div class="logopanel m-b">
-                        <h1><img alt="[ 若依 ]" src="../static/ruoyi.png" th:src="@{/ruoyi.png}"></h1>
+<!--                        <h1><img alt="[ 若依 ]" src="../static/ruoyi.png" th:src="@{/ruoyi.png}"></h1>-->
                     </div>
                     <div class="m-b"></div>
-                    <h4>欢迎使用 <strong>若依 后台管理系统</strong></h4>
-                    <ul class="m-b">
-                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>
-                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>
-                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Shiro</li>
-                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>
-                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>
-                    </ul>
+                    <h4>欢迎使用 <strong>观实 后台管理系统</strong></h4>
+<!--                    <ul class="m-b">-->
+<!--                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>-->
+<!--                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>-->
+<!--                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Shiro</li>-->
+<!--                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>-->
+<!--                        <li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>-->
+<!--                    </ul>-->
                     <strong th:if="${isAllowRegister}">还没有账号? <a th:href="@{/register}">立即注册&raquo;</a></strong>
                 </div>
             </div>
             <div class="col-sm-5">
                 <form id="signupForm" autocomplete="off">
                     <h4 class="no-margins">登录:</h4>
-                    <p class="m-t-md">你若不离不弃,我必生死相依</p>
+                    <p class="m-t-md">观实科技</p>
                     <input type="text"     name="username" class="form-control uname"     placeholder="用户名" value="admin"    />
-                    <input type="password" name="password" class="form-control pword"     placeholder="密码"   value="admin123" />
+                    <input type="password" name="password" class="form-control pword"     placeholder="密码"   value="" />
 					<div class="row m-t" th:if="${captchaEnabled==true}">
 						<div class="col-xs-6">
 						    <input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
@@ -65,7 +65,7 @@
         </div>
         <div class="signup-footer">
             <div class="pull-left">
-                Copyright © 2018-2021 ruoyi.vip All Rights Reserved. <br>
+                Copyright © 2019-2022 ggzypz.org.cn All Rights Reserved. <br>
             </div>
         </div>
     </div>

+ 1428 - 1428
ruoyi-admin/src/main/resources/templates/main.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <!--360浏览器优先以webkit内核解析-->
-    <title>若依介绍</title>
+    <title>观实介绍</title>
     <link rel="shortcut icon" href="favicon.ico">
     <link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
     <link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
@@ -12,1438 +12,1438 @@
 </head>
 
 <body class="gray-bg">
-    <div class="row border-bottom white-bg dashboard-header">
-        <div class="col-sm-12">
-            <blockquote class="text-warning" style="font-size:14px">
-                                           领取阿里云通用云产品1888优惠券
-                <br><a target="_blank" href="https://www.aliyun.com/minisite/goods?userCode=brki8iof">https://www.aliyun.com/minisite/goods?userCode=brki8iof</a><br>
-                                           领取腾讯云通用云产品2860优惠券
-                <br><a target="_blank" href="https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console">https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console</a><br>
-                                           阿里云服务器折扣区 <a target="_blank" href="http://aly.ruoyi.vip">☛☛点我进入☚☚</a> &nbsp;&nbsp;&nbsp; 腾讯云服务器秒杀区 <a target="_blank" href="http://txy.ruoyi.vip">☛☛点我进入☚☚</a><br>
-                <h4 class="text-danger">云产品通用红包,可叠加官网常规优惠使用。(仅限新用户)</h4>
-            </blockquote>
+<!--    <div class="row border-bottom white-bg dashboard-header">-->
+<!--        <div class="col-sm-12">-->
+<!--            <blockquote class="text-warning" style="font-size:14px">-->
+<!--                                           领取阿里云通用云产品1888优惠券-->
+<!--                <br><a target="_blank" href="https://www.aliyun.com/minisite/goods?userCode=brki8iof">https://www.aliyun.com/minisite/goods?userCode=brki8iof</a><br>-->
+<!--                                           领取腾讯云通用云产品2860优惠券-->
+<!--                <br><a target="_blank" href="https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console">https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console</a><br>-->
+<!--                                           阿里云服务器折扣区 <a target="_blank" href="http://aly.ruoyi.vip">☛☛点我进入☚☚</a> &nbsp;&nbsp;&nbsp; 腾讯云服务器秒杀区 <a target="_blank" href="http://txy.ruoyi.vip">☛☛点我进入☚☚</a><br>-->
+<!--                <h4 class="text-danger">云产品通用红包,可叠加官网常规优惠使用。(仅限新用户)</h4>-->
+<!--            </blockquote>-->
 
-            <hr>
-        </div>
-        <div class="col-sm-3">
-            <h2>Hello,Guest</h2>
-            <small>移动设备访问请扫描以下二维码:</small>
-            <br>
-            <br>
-            <img th:src="@{/img/qr_code.png}" width="100%" style="max-width:264px;">
-            <br>
-        </div>
-        <div class="col-sm-5">
-            <h2>若依后台管理框架</h2>
-            <p>一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。</p>
-            <p>
-                <b>当前版本:</b><span>v[[${version}]]</span>
-            </p>
-            <p>
-                <span class="label label-warning">&yen;免费开源</span>
-            </p>
-            <br>
-            <p>
-                <a class="btn btn-success btn-outline" href="https://gitee.com/y_project/RuoYi" target="_blank">
-                    <i class="fa fa-cloud"> </i> 访问码云
-                </a>
-                <a class="btn btn-white btn-bitbucket" href="http://ruoyi.vip" target="_blank">
-                    <i class="fa fa-home"></i> 访问主页
-                </a>
-            </p>
-        </div>
-        <div class="col-sm-4">
-            <h4>技术选型:</h4>
-            <ol>
-                <li>核心框架:Spring Boot。</li>
-                <li>安全框架:Apache Shiro。</li>
-                <li>模板引擎:Thymeleaf。</li>
-                <li>持久层框架:MyBatis。</li>
-				<li>定时任务:Quartz。</li>
-                <li>数据库连接池:Druid。</li>
-                <li>工具类:Fastjson。</li>
-                <li>更多……</li>
-            </ol>
-        </div>
+<!--            <hr>-->
+<!--        </div>-->
+<!--        <div class="col-sm-3">-->
+<!--            <h2>Hello,Guest</h2>-->
+<!--            <small>移动设备访问请扫描以下二维码:</small>-->
+<!--            <br>-->
+<!--            <br>-->
+<!--            <img th:src="@{/img/qr_code.png}" width="100%" style="max-width:264px;">-->
+<!--            <br>-->
+<!--        </div>-->
+<!--        <div class="col-sm-5">-->
+<!--            <h2>若依后台管理框架</h2>-->
+<!--            <p>一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。</p>-->
+<!--            <p>-->
+<!--                <b>当前版本:</b><span>v[[${version}]]</span>-->
+<!--            </p>-->
+<!--            <p>-->
+<!--                <span class="label label-warning">&yen;免费开源</span>-->
+<!--            </p>-->
+<!--            <br>-->
+<!--            <p>-->
+<!--                <a class="btn btn-success btn-outline" href="https://gitee.com/y_project/RuoYi" target="_blank">-->
+<!--                    <i class="fa fa-cloud"> </i> 访问码云-->
+<!--                </a>-->
+<!--                <a class="btn btn-white btn-bitbucket" href="http://ruoyi.vip" target="_blank">-->
+<!--                    <i class="fa fa-home"></i> 访问主页-->
+<!--                </a>-->
+<!--            </p>-->
+<!--        </div>-->
+<!--        <div class="col-sm-4">-->
+<!--            <h4>技术选型:</h4>-->
+<!--            <ol>-->
+<!--                <li>核心框架:Spring Boot。</li>-->
+<!--                <li>安全框架:Apache Shiro。</li>-->
+<!--                <li>模板引擎:Thymeleaf。</li>-->
+<!--                <li>持久层框架:MyBatis。</li>-->
+<!--				<li>定时任务:Quartz。</li>-->
+<!--                <li>数据库连接池:Druid。</li>-->
+<!--                <li>工具类:Fastjson。</li>-->
+<!--                <li>更多……</li>-->
+<!--            </ol>-->
+<!--        </div>-->
 
-    </div>
-    <div class="wrapper wrapper-content">
-        <div class="row">
-            <div class="col-sm-4">
+<!--    </div>-->
+<!--    <div class="wrapper wrapper-content">-->
+<!--        <div class="row">-->
+<!--            <div class="col-sm-4">-->
 
-                <div class="ibox float-e-margins">
-                    <div class="ibox-title">
-                        <h5>联系信息</h5>
+<!--                <div class="ibox float-e-margins">-->
+<!--                    <div class="ibox-title">-->
+<!--                        <h5>联系信息</h5>-->
 
-                    </div>
-                    <div class="ibox-content">
-                        <p><i class="fa fa-send-o"></i> 官网:<a href="http://www.ruoyi.vip" target="_blank">http://www.ruoyi.vip</a>
-                        </p>
-                        <p><i class="fa fa-qq"></i> QQ群:<s>满1389287</s> <s>满1679294</s> <s>满1529866</s> <s>满1772718</s> <s>满1366522</s> <s>满1382251</s> <s>满1145125</s> <s>满86752435</s> <s>满134072510</s> <s>满210336300</s> <s>满339522636</s> <s>满130035985</s> <s>满143151071</s> <s>满158781320</s> <s>满201531282</s> <s>满101526938</s> <a href="https://jq.qq.com/?_wv=1027&k=up9k3ZXJ" target="_blank">264355400</a> 
-                        </p>
-                        <p><i class="fa fa-weixin"></i> 微信:<a href="javascript:;">/ *若依</a>
-                        </p>
-                        <p><i class="fa fa-credit-card"></i> 支付宝:<a href="javascript:;" class="支付宝信息">/ *若依</a>
-                        </p>
-                    </div>
-                </div>
-            </div>
-            <div class="col-sm-4">
-                <div class="ibox float-e-margins">
-                    <div class="ibox-title">
-                        <h5>更新日志</h5>
-                    </div>
-                    <div class="ibox-content no-padding">
-                        <div class="panel-body">
-                            <div class="panel-group" id="version">
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v472">v4.7.2</a><code class="pull-right">2021.12.23</code>
-								   </h5>
-								</div>
-								<div id="v472" class="panel-collapse collapse in">
-									<div class="panel-body">
-									   <ol>
-									        <li>自定义xss校验注解实现</li>
-									        <li>进入修改页面方法添加权限标识</li>
-									        <li>代码生成创建按钮添加超级管理员权限</li>
-									        <li>代码生成创建表检查关键字,防止注入风险</li>
-									        <li>修复定时任务多参数逗号分隔的问题</li>
-									        <li>修复表格插件一起使用出现的声明报错问题</li>
-									        <li>修复代码生成主子表模板删除方法缺少事务</li>
-									        <li>升级oshi到最新版本v5.8.6</li>
-									        <li>升级velocity到最新版本2.3</li>
-									        <li>升级fastjson到最新版1.2.79</li>
-									        <li>升级log4j2到最新版2.17.0 防止漏洞风险</li>
-									        <li>升级thymeleaf到最新版3.0.14 阻止远程代码执行漏洞</li>
-									        <li>优化修改/授权角色实时生效</li>
-									        <li>修整tomcat配置参数已过期问题</li>
-									        <li>前端添加单独的二代身份证校验</li>
-									        <li>优化新增部门时验证用户所属部门</li>
-									        <li>优化查询用户的角色组&岗位组代码</li>
-									        <li>请求分页方法设置成通用方便灵活调用</li>
-									        <li>优化日期类型错误提示与图标重叠问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v471">v4.7.1</a><code class="pull-right">2021.11.10</code>
-								   </h5>
-								</div>
-								<div id="v471" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增是否开启页签功能</li>
-									        <li>代码生成的模块增加创建表功能</li>
-									        <li>Excel导入支持@Excels注解</li>
-									        <li>Excel注解支持导入导出标题信息</li>
-									        <li>Excel注解支持自定义数据处理器</li>
-									        <li>日志注解新增是否保存响应参数</li>
-									        <li>防重提交注解支持配置间隔时间/提示消息</li>
-									        <li>网页部分操作禁止使用后退键(Backspace)</li>
-									        <li>实例演示中增加多层窗口获取值</li>
-									        <li>弹出层openOptions增加动画属性</li>
-									        <li>升级spring-boot到最新版本2.5.6</li>
-									        <li>升级spring-boot-mybatis到最新版2.2.0</li>
-									        <li>升级pagehelper到最新版1.4.0</li>
-									        <li>升级oshi到最新版本v5.8.2</li>
-									        <li>升级druid到最新版1.2.8</li>
-									        <li>升级fastjson到最新版1.2.78</li>
-									        <li>升级thymeleaf-extras-shiro到最新版本v2.1.0</li>
-									        <li>升级bootstrap-fileinput到最新版本v5.2.4</li>
-									        <li>修改阿里云maven仓库地址为新版地址</li>
-									        <li>定时任务屏蔽违规字符</li>
-									        <li>增加sendGet无参请求方法</li>
-									        <li>代码生成去掉多余的排序字段</li>
-									        <li>优化启动脚本参数优化</li>
-									        <li>优化页签关闭右侧清除iframe元素</li>
-									        <li>优化多表格切换表单查询参数</li>
-									        <li>优化表格实例切换event不能为空</li>
-									        <li>优化mybatis全局默认的执行器</li>
-									        <li>优化导入Excel数据关闭时清理file</li>
-									        <li>优化Excel导入图片可能出现的异常</li>
-									        <li>优化记录登录信息,防止不必要的修改</li>
-									        <li>优化aop语法,使用spring自动注入注解</li>
-									        <li>修复无法被反转义问题</li>
-									        <li>修复拖拽行数据错位问题</li>
-									        <li>修复新窗口打开页面关闭弹窗报错</li>
-									        <li>修复富文本回退键被禁止&控制台报错问题</li>
-									        <li>修复自定义弹出层全屏参数无效问题</li>
-									        <li>修复树表代码生成短字段无法识别问题</li>
-									        <li>修复apple/webkit浏览器时间无法格式化</li>
-									        <li>修复后端主子表代码模板方法名生成错误问题</li>
-									        <li>修复swagger没有指定dataTypeClass导致启动出现warn日志</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v470">v4.7.0</a><code class="pull-right">2021.09.01</code>
-								   </h5>
-								</div>
-								<div id="v470" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>优化弹出层显示在顶层窗口</li>
-									        <li>定时任务支持在线生成cron表达式</li>
-									        <li>Excel注解支持Image图片导入</li>
-									        <li>支持配置是否开启记住我功能</li>
-									        <li>修改时检查用户数据权限范围</li>
-									        <li>表单重置开始/结束时间控件</li>
-									        <li>新增多图上传示例</li>
-									        <li>启用父部门状态排除顶级节点</li>
-									        <li>富文本默认dialogsInBody属性</li>
-									        <li>去除默认分页合理化参数</li>
-									        <li>顶部菜单跳转添加绝对路径</li>
-									        <li>升级oshi到最新版本v5.8.0</li>
-									        <li>升级shiro到最新版本v1.8.0</li>
-									        <li>升级commons.io到最新版本v2.11.0</li>
-									        <li>升级jquery到最新版v3.6.0</li>
-									        <li>升级icheck到最新版v1.0.3</li>
-									        <li>升级layer到最新版本v3.5.1</li>
-									        <li>升级layui到最新版本v2.6.8</li>
-									        <li>升级laydate到最新版本v5.3.1</li>
-									        <li>升级select2到最新版v4.0.13</li>
-									        <li>升级cropper到最新版本v1.5.12</li>
-									        <li>升级summernote到最新版本v0.8.18</li>
-									        <li>升级duallistbox到最新版本v3.0.9</li>
-									        <li>升级jquery.validate到最新版本v1.19.3</li>
-									        <li>升级bootstrap-suggest到最新版本v0.1.29</li>
-									        <li>升级bootstrap-select到最新版本v1.13.18</li>
-									        <li>升级bootstrap-fileinput到最新版本v5.2.3</li>
-									        <li>查询表格指定列值增加是否去重属性</li>
-									        <li>删除sourceMappingURL源映射</li>
-									        <li>去除多余的favicon.ico引入</li>
-									        <li>优化代码生成模板</li>
-									        <li>优化XSS跨站脚本过滤</li>
-									        <li>补充定时任务表字段注释</li>
-									        <li>定时任务屏蔽ldap远程调用</li>
-									        <li>定时任务屏蔽http(s)远程调用</li>
-									        <li>定时任务对检查异常进行事务回滚</li>
-									        <li>调度日志详细页添加关闭按钮</li>
-									        <li>优化异常打印输出信息</li>
-									        <li>优化移动端进入首页样式</li>
-									        <li>优化用户操作不能删除自己</li>
-									        <li>默认开始/结束时间绑定控件选择类型</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v462">v4.6.2</a><code class="pull-right">2021.07.01</code>
-								   </h5>
-								</div>
-								<div id="v462" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>优化参数&字典缓存操作</li>
-									        <li>新增表格参数(导出方式&导出文件类型)</li>
-									        <li>新增表格示例(自定义视图分页)</li>
-									        <li>新增示例(表格列拖拽)</li>
-									        <li>集成yuicompressor实现(CSS/JS压缩)</li>
-									        <li>新增表格参数(是否支持打印页面showPrint)</li>
-									        <li>支持bat脚本执行应用</li>
-									        <li>修复存在的SQL注入漏洞问题</li>
-									        <li>定时任务屏蔽rmi远程调用</li>
-									        <li>导出Excel文件支持数据流下载方式</li>
-									        <li>实例演示弹层组件增加相册层示例</li>
-									        <li>删除操作日志记录信息</li>
-									        <li>增加表格重置分页的参数</li>
-									        <li>限制超级管理员不允许操作</li>
-									        <li>树级结构更新子节点使用replaceFirst</li>
-									        <li>支持动态生成密匙,防止默认密钥泄露</li>
-									        <li>升级pagehelper到最新版1.3.1</li>
-									        <li>升级oshi到最新版本v5.7.4</li>
-									        <li>升级swagger到最新版本v3.0.0</li>
-									        <li>升级commons.io到最新版本v2.10.0</li>
-									        <li>升级commons.fileupload到最新版本v1.4</li>
-									        <li>升级bootstrap-table到最新版本v1.18.3</li>
-									        <li>升级druid到最新版本v1.2.6</li>
-									        <li>升级fastjson到最新版1.2.76</li>
-									        <li>升级layui到最新版本v2.6.6</li>
-									        <li>升级layer到最新版本v3.5.0</li>
-									        <li>升级laydate到最新版本v5.3.0</li>
-									        <li>优化表格树移动端&边框显示</li>
-									        <li>新增表格刷新options配置方法</li>
-									        <li>优化图片工具类读取文件,防止异常</li>
-									        <li>修复表格图片预览移动端宽高无效问题</li>
-									        <li>主子表通用操作封装处理增加文本域类型</li>
-									        <li>日志注解兼容获取json类型的参数</li>
-									        <li>修复表单向导插件有滚动条时底部工具栏无法固定问题</li>
-									        <li>修复导出角色数据范围翻译缺少仅本人</li>
-									        <li>修正Velocity模板初始字符集</li>
-									        <li>升级mybatis到最新版3.5.6 阻止远程代码执行漏洞</li>
-									        <li>优化代码生成导出模板名称</li>
-									        <li>修改个人中心密码长度提醒</li>
-									        <li>实例演示中弹出表格增加以回调形式回显到父窗体</li>
-									        <li>修复登录页面弹窗文字不显示的问题</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v461">v4.6.1</a><code class="pull-right">2021.04.12</code>
-								   </h5>
-								</div>
-								<div id="v461" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增IE浏览器版本过低提示页面</li>
-									        <li>新增详细信息tab页签方式</li>
-									        <li>新增解锁屏幕打开上次页签</li>
-									        <li>数据监控默认账户密码防止越权访问</li>
-									        <li>新增表格示例(导出选择列)</li>
-									        <li>个人信息添加手机&邮箱重复验证</li>
-									        <li>个人中心刷新后样式问题</li>
-									        <li>操作日志返回参数添加非空验证</li>
-									        <li>velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞</li>
-									        <li>子表模板默认日期格式化</li>
-									        <li>代码生成预览语言根据后缀名高亮显示</li>
-									        <li>代码生成主子表相同字段导致数据问题</li>
-									        <li>升级SpringBoot到最新版本2.2.13</li>
-									        <li>升级shiro到最新版1.7.1 阻止身份认证绕过漏洞</li>
-									        <li>升级bootstrapTable到最新版本v1.18.2</li>
-									        <li>升级bootstrapTable相关组件到最新版本v1.18.2</li>
-									        <li>升级fastjson到最新版1.2.75</li>
-									        <li>升级druid到最新版本v1.2.4</li>
-									        <li>升级oshi到最新版本v5.6.0</li>
-									        <li>修改ip字段长度防止ipv6地址长度不够</li>
-									        <li>搜索建议示例选择后隐藏列表</li>
-									        <li>主子表示例增加初始化数据</li>
-									        <li>优化Excel导入增加空行判断</li>
-									        <li>修复横向菜单无法打开页签问题</li>
-									        <li>修复导入数据为负浮点数时,导入结果会丢失精度问题</li>
-									        <li>优化更多操作按钮左侧移入内容闪现消失情况</li>
-									        <li>修复主子表提交中列隐藏后出现列偏移问题</li>
-									        <li>单据打印网页时通过hidden-print隐藏元素</li>
-									        <li>表格销毁清除记住选择数据</li>
-									        <li>增加表格动态列示例</li>
-									        <li>代码生成选择主子表关联元素必填</li>
-									        <li>tree根据Id和Name选中指定节点增加空判断</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v46">v4.6.0</a><code class="pull-right">2021.01.01</code>
-								   </h5>
-								</div>
-								<div id="v46" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增缓存监控管理</li>
-									        <li>新增锁定屏幕功能</li>
-									        <li>菜单新增是否刷新页面</li>
-									        <li>删除用户和角色解绑关联</li>
-									        <li>新增密码强度字符范围提示</li>
-									        <li>防止匿名访问进行过滤</li>
-									        <li>升级SpringBoot到最新版本2.2.12</li>
-									        <li>升级poi到最新版本4.1.2</li>
-									        <li>升级bitwalker到最新版本1.21</li>
-									        <li>升级bootstrap-fileinput到最新版本5.1.3</li>
-									        <li>升级bootstrapTable到最新版本v1.18.0</li>
-									        <li>升级bootstrapTable相关组件到最新版本v1.18.0</li>
-									        <li>升级oshi到最新版本v5.3.6</li>
-									        <li>新增示例(标签 & 提示)</li>
-									        <li>添加单据打印示例</li>
-									        <li>修改表格初始参数sortName默认值为undefined</li>
-									        <li>新增表格参数(自定义打印页面模板printPageBuilder)</li>
-									        <li>新增表格参数(是否显示行间隔色striped)</li>
-									        <li>新增表格参数(渲染完成后执行的事件onPostBody)</li>
-									        <li>Excel注解支持Image图片导出</li>
-									        <li>Excel支持注解align对齐方式</li>
-									        <li>Excel支持导入Boolean型数据</li>
-									        <li>主子表操作添加通用addColumn方法</li>
-									        <li>代码生成日期控件区分范围</li>
-									        <li>代码生成数据库文本类型生成表单文本域</li>
-									        <li>修复生成主子表外键名错误</li>
-									        <li>选项卡新增是否刷新属性</li>
-									        <li>修复树表格表头跟表格宽度不同步的问题</li>
-									        <li>表格树加载完成触发tooltip方法</li>
-									        <li>使用widthUnit定义树表格选项单位</li>
-									        <li>修复主子表editColumn序列问题</li>
-									        <li>修复添加全屏在无参数时没有替换url参数问题</li>
-									        <li>弹出层openOptions移动端自适应</li>
-									        <li>防止错误页返回主页出现嵌套问题</li>
-									        <li>设置回显数据字典验证防止空值</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v451">v4.5.1</a><code class="pull-right">2020.11.18</code>
-								   </h5>
-								</div>
-								<div id="v451" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>阻止任意文件下载漏洞</li>
-									        <li>升级shiro到最新版1.7.0 阻止权限绕过漏洞</li>
-									        <li>升级druid到最新版本v1.2.2</li>
-									        <li>新增表格行触发事件(onCheck、onUncheck、onCheckAll、onUncheckAll)</li>
-									        <li>修复多页签关闭非当前选项出现空白问题</li>
-									        <li>代码生成预览支持高亮显示</li>
-									        <li>mapperLocations配置支持分隔符</li>
-									        <li>权限信息调整</li>
-									        <li>个人中心头像和上传头像增加默认图片</li>
-									        <li>全局配置类保持和其他应用命名相同</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v45">v4.5.0</a><code class="pull-right">2020.10.20</code>
-								   </h5>
-								</div>
-								<div id="v45" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增菜单导航显示风格(default为左侧导航菜单,topnav为顶部导航菜单)</li>
-									        <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li>
-									        <li>账号密码支持自定义更新周期</li>
-									        <li>初始密码支持自定义修改策略</li>
-									        <li>新增校验用户修改新密码不能与旧密码相同</li>
-									        <li>添加检查密码范围支持的特殊字符包括:~!@#$%^&*()-=_+</li>
-									        <li>注册账号设置默认用户名称及密码最后更新时间</li>
-									        <li>去除用户手机邮箱部门必填验证</li>
-									        <li>新增日期格式化方法</li>
-									        <li>代码生成添加bit类型</li>
-									        <li>树结构加载添加callBack回调方法</li>
-									        <li>修复用户管理页面滚动返回顶部条失效</li>
-									        <li>修复代码生成模板文件上传组件缺少ctx的问题</li>
-									        <li>限制系统内置参数不允许删除</li>
-									        <li>新增表格列宽拖动插件</li>
-									        <li>新增Ajax局部刷新demo</li>
-									        <li>新增是否开启页脚功能</li>
-									        <li>新增表格参数(通过自定义函数设置标题样式headerStyle)</li>
-									        <li>新增表格参数(通过自定义函数设置页脚样式footerStyle)</li>
-									        <li>修复窗体大小改变后浮动提示框失效问题</li>
-									        <li>生成代码补充必填样式</li>
-									        <li>生成页面时不忽略remark属性</li>
-									        <li>字典数据列表页添加关闭按钮</li>
-									        <li>Excel注解支持自动统计数据总和</li>
-									        <li>升级springboot到2.1.17 提升安全性</li>
-									        <li>升级pagehelper到最新版1.3.0</li>
-									        <li>升级druid到最新版本v1.2.1</li>
-									        <li>升级fastjson到最新版1.2.74</li>
-									        <li>升级bootstrap-fileinput到最新版本5.1.2</li>
-									        <li>升级oshi到最新版本v5.2.5</li>
-									        <li>表单向导插件更换为jquery-smartwizard</li>
-									        <li>修改主子表提交示例代码防止渲染失效</li>
-									        <li>添加导入数据弹出窗体自定义宽高</li>
-									        <li>用户信息参数返回忽略掉密码字段</li>
-									        <li>优化关闭窗体添加index参数</li>
-									        <li>回显数据字典(字符串数组)增加空值判断</li>
-									        <li>修改前端密码长度校验和错误提示不符问题</li>
-									        <li>AjaxResult重写put方法,以方便链式调用</li>
-									        <li>增强验证码校验的语义,更易懂</li>
-									        <li>导入excel整形值校验优化</li>
-									        <li>Excel导出类型NUMERIC支持精度浮点类型</li>
-									        <li>导出Excel调整targetAttr获取值方法,防止get方法不规范</li>
-									        <li>输入框组验证错误后置图标提示颜色</li>
-									        <li>上传媒体类型添加视频格式</li>
-									        <li>数据权限判断参数类型</li>
-									        <li>修正数据库字符串类型nvarchar</li>
-									        <li>优化递归子节点</li>
-									        <li>修复多表格搜索formId无效</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v44">v4.4.0</a><code class="pull-right">2020.08.24</code>
-								   </h5>
-								</div>
-								<div id="v44" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>升级bootstrapTable到最新版本1.17.1</li>
-									        <li>升级shiro到最新版1.6.0 阻止权限绕过漏洞</li>
-									        <li>升级fastjson到最新版1.2.73</li>
-									        <li>代码生成支持同步数据库</li>
-									        <li>代码生成支持富文本控件</li>
-									        <li>用户密码支持自定义配置规则</li>
-									        <li>新增表格自动刷新插件</li>
-									        <li>新增表格打印配置插件</li>
-									        <li>更换图片裁剪工具为cropper</li>
-									        <li>Excel支持sort导出排序</li>
-									        <li>代码生成支持自定义路径</li>
-									        <li>代码生成支持选择上级菜单</li>
-									        <li>代码生成支持上传控件</li>
-									        <li>新增表格参数(自定义加载文本的字体大小loadingFontSize)</li>
-									        <li>Excel注解支持设置BigDecimal精度&舍入规则</li>
-									        <li>操作日志记录排除敏感属性字段</li>
-									        <li>修复不同浏览器附件下载中文名乱码的问题</li>
-									        <li>用户分配角色不允许选择超级管理员角色</li>
-									        <li>更换表格冻结列插件</li>
-									        <li>添加右侧冻结列示例</li>
-									        <li>升级表格行编辑&移动端适应插件</li>
-									        <li>修复更新表格插件后无法设置实例配置问题</li>
-									        <li>修复更新表格插件后导致的主子表错误</li>
-									        <li>修复页面存在多表格,回调函数res数据不正确问题</li>
-									        <li>强退&过期清理登录帐号缓存会话</li>
-									        <li>表格树标题内容支持html语义化标签</li>
-									        <li>修复配置应用的访问路径首页页签重复问题</li>
-									        <li>优化openTab打开时滚动到当前页签</li>
-									        <li>表格请求方式method支持自定义配置</li>
-									        <li>菜单页签联动优化</li>
-									        <li>用户邮箱长度限制修改为50</li>
-									        <li>主子表示例添加日期格式案例</li>
-									        <li>修改表格行内编辑示例旧值参数</li>
-									        <li>操作日志查询方式调整</li>
-									        <li>唯一限制条件只返回单条数据</li>
-									        <li>修改Excel设置STRING单元格类型</li>
-									        <li>添加获取当前的环境配置方法</li>
-									        <li>截取返回参数长度,防止超出异常</li>
-									        <li>定时任务cron表达式验证</li>
-									        <li>拆分表格插件,按需引入</li>
-									        <li>多行文本框补齐必填错误提示背景</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v431">v4.3.1</a><code class="pull-right">2020.07.05</code>
-								   </h5>
-								</div>
-								<div id="v431" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>国家信息安全漏洞(请务必保持cipherKey密钥唯一性)</li>
-									        <li>升级shiro到最新版1.5.3 阻止权限绕过漏洞</li>
-									        <li>修改验证码在使用后清除,防止多次使用</li>
-									        <li>检查字符支持小数点&降级改成异常提醒</li>
-									        <li>openOptions函数中加入自定义maxmin属性</li>
-									        <li>支持openOptions方法最大化</li>
-									        <li>支持openOptions方法多个按钮回调</li>
-									        <li>新增isLinkage支持页签与菜单联动</li>
-									        <li>修改代码生成导入表结构出现异常页面不提醒问题</li>
-									        <li>优化用户头像发生错误,则显示一个默认头像</li>
-									        <li>Excel导出支持字典类型</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v43">v4.3.0</a><code class="pull-right">2020.06.22</code>
-								   </h5>
-								</div>
-								<div id="v43" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>代码生成模板支持主子表</li>
-									        <li>代码生成显示类型支持复选框</li>
-									        <li>前端表单样式修改成圆角</li>
-									        <li>新增回显数据字典(字符串数组)</li>
-									        <li>修复浏览器手动缩放比例后菜单无法自适应问题</li>
-									        <li>限制用户不允许选择系统管理员角色</li>
-									        <li>用户信息添加输入框组图标&鼠标按下显示密码</li>
-									        <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li>
-									        <li>升级Bootstrap版本到v3.3.7</li>
-									        <li>修复selectColumns方法获取子对象数据无效问题</li>
-									        <li>修改数据源类型优先级,先根据方法,再根据类</li>
-									        <li>修改上级部门(选择项排除本身和下级)</li>
-									        <li>首页菜单显示调整</li>
-									        <li>添加是否开启swagger配置</li>
-									        <li>新增示例(主子表提交)</li>
-									        <li>新增示例(多级联动下拉示例)</li>
-									        <li>新增示例(表格属性data数据加载)</li>
-									        <li>新增表格列参数(是否列选项可见ignore)</li>
-									        <li>新增表格参数(是否启用显示卡片视图cardView)</li>
-									        <li>新增表格参数(是否显示全屏按钮showFullscreen)</li>
-									        <li>新增表格参数(是否启用分页条无限循环的功能paginationLoop)</li>
-									        <li>新增表格参数(是否显示表头showHeader)</li>
-									        <li>表格添加显示/隐藏所有列方法 showAllColumns/hideAllColumns</li>
-									        <li>修复部分情况节点不展开问题</li>
-									        <li>修复关闭标签页后刷新还是上次地址问题</li>
-									        <li>修复选择菜单后刷新页面,菜单箭头显示不对问题</li>
-											<li>修复jquery表单序列化时复选框未选中不会序列化到对象中问题</li>
-											<li>Excel支持readConverterExp读取字符串组内容</li>
-									        <li>更换IP地址查询接口</li>
-									        <li>默认关闭获取ip地址</li>
-									        <li>操作处理ajaxSuccess判断修正</li>
-									        <li>HttpUtils.sendPost()方法,参数无需拼接参数到url</li>
-									        <li>通用http发送方法增加参数 contentType 编码类型</li>
-									        <li>HTML过滤器不替换&实体</li>
-									        <li>代码生成浮点型改用BigDecimal</li>
-									        <li>修复表单构建单选和多选框渲染问题</li>
-									        <li>代码生成模板调整,字段为String并且必填则加空串条件</li>
-									        <li>字典数据查询列表根据dictSort升序排序</li>
-									        <li>修复树表对imageView和tooltip方法无效问题</li>
-									        <li>修复Long类型比较相等问题调整</li>
-									        <li>示例demo页面清除html链接,防止点击后跳转出现404</li>
-									        <li>在线用户强退方法合并</li>
-									        <li>添加校验部门包含未停用的子部门</li>
-									        <li>取消回车自动提交表单</li>
-									        <li>'A','I','BUTTON' 标签忽略clickToSelect事件,防止点击操作按钮时选中</li>
-									        <li>邮箱显示截取部分字符串,防止低分辨率错位</li>
-									        <li>代码生成列属性根据sort排序</li>
-									        <li>修复更多操作部分浏览器不兼容情况</li>
-									        <li>图片预览事件属性修正</li>
-									        <li>修复冻结列排序样式无效问题</li>
-									        <li>修复context-path的情况下个人中心刷新导致样式问题</li>
-									        <li>全屏editFull打开适配表树</li>
-									        <li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v42">v4.2.0</a><code class="pull-right">2020.03.23</code>
-								   </h5>
-								</div>
-								<div id="v42" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>用户管理添加分配角色页面</li>
-									        <li>定时任务添加调度日志按钮</li>
-									        <li>新增是否开启用户注册功能</li>
-											<li>新增页面滚动显示返回顶部按钮</li>
-											<li>用户&角色&任务添加更多操作按钮</li>
-											<li>iframe框架页会话过期弹出超时提示</li>
-											<li>移动端登录不显示左侧菜单</li>
-											<li>侧边栏添加一套深蓝色主题</li>
-											<li>首页logo固定,不随菜单滚动</li>
-											<li>支持mode配置history(表示去掉地址栏的#)</li>
-											<li>任务分组字典翻译(调度日志详细)</li>
-											<li>字典管理添加缓存读取</li>
-											<li>字典数据列表标签显示样式</li>
-											<li>参数管理支持缓存操作</li>
-											<li>日期控件清空结束时间设置开始默认值为2099-12-31</li>
-											<li>表格树添加获取数据后响应回调处理</li>
-											<li>批量替换表前缀调整</li>
-											<li>支持表格导入模板的弹窗表单加入其它输入控件</li>
-											<li>表单重置刷新表格树</li>
-											<li>新增支持导出数据字段排序</li>
-											<li>新增表格参数(是否单选checkbox)</li>
-											<li>druid未授权不允许访问</li>
-											<li>表格树父节点兼容0,'0','',null</li>
-											<li>表单必填的项添加星号</li>
-											<li>修复select2不显示校验错误信息</li>
-											<li>添加自定义HTML过滤器</li>
-											<li>修复多数据源下开关关闭出现异常问题</li>
-											<li>修复翻页记住选择项数据问题</li>
-											<li>用户邮箱长度限制20</li>
-											<li>修改错误页面返回主页出现嵌套问题</li>
-											<li>表格浮动提示单双引号转义</li>
-											<li>支持配置四级菜单</li>
-											<li>升级shiro到最新版1.4.2 阻止rememberMe漏洞攻击</li>
-											<li>升级summernote到最新版本v0.8.12</li>
-											<li>导入Excel根据dateFormat属性格式处理</li>
-											<li>修复War部署无法正常shutdown,ehcache内存泄漏</li>
-											<li>修复代码生成短字段无法识别问题</li>
-											<li>修复serviceImpl模版,修改方法判断日期错误</li>
-											<li>代码生成模板增加导出功能日志记录</li>
-											<li>代码生成唯一编号调整为tableId</li>
-											<li>代码生成查询时忽略大小写</li>
-											<li>代码生成支持翻页记住选中</li>
-											<li>代码生成表注释未填写也允许导入</li>
-											<li>Global全局配置类修改为注解,防止多环境配置下读取问题</li>
-											<li>修复多表格情况下,firstLoad只对第一个表格生效</li>
-											<li>处理Maven打包出现警告问题</li>
-											<li>默认主题样式,防止网速慢情况下出现空白</li>
-											<li>修复文件上传多级目录识别问题</li>
-											<li>锚链接解码url,防止中文导致页面不能加载问题</li>
-											<li>修复右键Tab页刷新事件重复请求问题</li>
-											<li>角色禁用&菜单隐藏不查询权限</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v41">v4.1.0</a><code class="pull-right">2019.10.22</code>
-								   </h5>
-								</div>
-								<div id="v41" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>支持多表格实例操作</li>
-									        <li>浮动提示方法tooltip支持弹窗</li>
-											<li>代码生成&字典数据支持模糊条件查询</li>
-											<li>增加页签全屏方法</li>
-											<li>增加清除表单验证错误信息方法</li>
-											<li>支持iframe局部刷新页面</li>
-											<li>支持在线切换主题</li>
-											<li>修改图片预览设置的高宽参数颠倒问题</li>
-											<li>操作日志新增解锁账户功能</li>
-											<li>管理员用户&角色不允许操作</li>
-											<li>去掉jsoup包调用自定义转义工具</li>
-											<li>添加时间轴示例</li>
-											<li>修复翻页记住选择时获取指定列值的问题</li>
-											<li>代码生成sql脚本添加导出按钮</li>
-											<li>添加表格父子视图示例</li>
-											<li>添加表格行内编辑示例</li>
-											<li>升级fastjson到最新版1.2.60 阻止漏洞攻击</li>
-											<li>升级echarts到最新版4.2.1</li>
-											<li>操作日志新增返回参数</li>
-											<li>支持mybatis通配符扫描任意多个包</li>
-											<li>权限验证多种情况处理</li>
-											<li>修复树形类型的代码生成的部分必要属性无法显示</li>
-											<li>修复非表格插件情况下重置出现异常</li>
-											<li>修复富文本编辑器有序列表冲突</li>
-											<li>代码生成表前缀配置支持多个</li>
-											<li>修复自动去除表前缀配置无效问题</li>
-											<li>菜单列表按钮数据可见不显示(权限标识控制)</li>
-											<li>修复设置会话超时时间无效问题</li>
-											<li>新增本地资源通用下载方法</li>
-											<li>操作日志记录新增请求方式</li>
-											<li>代码生成单选按钮属性重名修复</li>
-											<li>优化select2下拉框宽度不会随浏览器改变</li>
-											<li>修复代码生成树表异常</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v40">v4.0.0</a><code class="pull-right">2019.08.08</code>
-								   </h5>
-								</div>
-								<div id="v40" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>代码生成支持预览、编辑,保存方案</li>
-									        <li>新增防止表单重复提交注解</li>
-											<li>新增后端校验(和前端保持一致)</li>
-											<li>新增同一个用户最大会话数控制</li>
-											<li>Excel导出子对象支持多个字段</li>
-											<li>定时任务支持静态调用和多参数</li>
-											<li>定时任务增加分组条件查询</li>
-											<li>字典类型增加任务分组数据</li>
-											<li>新增表格是否首次加载数据</li>
-											<li>新增parentTab选项卡可在同一页签打开</li>
-											<li>多数据源支持类注解(允许继承父类的注解)</li>
-											<li>部门及以下数据权限(调整为以下及所有子节点)</li>
-											<li>新增角色数据权限配(仅本人数据权限)</li>
-											<li>修改菜单权限显示问题</li>
-											<li>上传文件修改路径及返回名称</li>
-											<li>添加报表插件及示例</li>
-											<li>添加首页统计模板</li>
-											<li>添加表格拖拽示例</li>
-											<li>添加卡片列表示例</li>
-											<li>添加富文本编辑器示例</li>
-											<li>添加表格动态增删改查示例</li>
-											<li>添加用户页面岗位选择框提示</li>
-											<li>点击菜单操作添加背景高亮显示</li>
-											<li>表格树新增showSearch是否显示检索信息</li>
-											<li>解决表格列设置sortName无效问题</li>
-											<li>表格图片预览支持自定义设置宽高</li>
-											<li>添加表格列浮动提示(单击文本复制)</li>
-											<li>PC端收起菜单后支持浮动显示</li>
-											<li>详细操作样式调整</li>
-											<li>修改用户更新描述空串不更新问题</li>
-											<li>导入修改为模板渲染</li>
-											<li>修改菜单及部门排序规则</li>
-											<li>角色导出数据范围表达式翻译</li>
-											<li>添加summernote富文本字体大小</li>
-											<li>优化表格底部下边框防重叠&汇总像素问题</li>
-											<li>树表格支持属性多层级访问</li>
-											<li>修复IE浏览器用户管理界面右侧留白问题</li>
-											<li>重置按钮刷新表格</li>
-											<li>重置密码更新用户缓存</li>
-											<li>优化验证码属性参数</li>
-											<li>支持数据监控配置用户名和密码</li>
-											<li>文件上传修改按钮背景及加载动画</li>
-											<li>支持配置一级菜单href跳转</li>
-											<li>侧边栏添加一套浅色主题</li>
-											<li>树表格添加回调函数(校验异常状态)</li>
-											<li>用户个人中心适配手机端显示</li>
-											<li>Excel支持设置导出类型&更换样式</li>
-											<li>检查属性改变修改为克隆方式(防止热部署强转异常)</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-							    </div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v34">v3.4.0</a><code class="pull-right">2019.06.03</code>
-								   </h5>
-								</div>
-								<div id="v34" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-									        <li>新增实例演示菜单及demo</li>
-											<li>新增页签右键操作</li>
-											<li>菜单管理新增打开方式</li>
-											<li>新增点击某行触发的事件</li>
-											<li>新增双击某行触发的事件</li>
-											<li>新增单击某格触发的事件</li>
-											<li>新增双击某格触发的事件</li>
-											<li>新增是否启用显示细节视图</li>
-											<li>支持上传任意格式文件</li>
-											<li>修复角色权限注解失效问题</li>
-											<li>左侧的菜单栏宽度调整</li>
-											<li>新增响应完成后自定义回调函数</li>
-											<li>支持前端及其他模块直接获取用户信息</li>
-											<li>升级swagger到最新版2.9.2</li>
-											<li>升级jquery.slimscroll到最新版1.3.8</li>
-											<li>升级select2到最新版4.0.7</li>
-											<li>新增角色配置本部门数据权限</li>
-											<li>新增角色配置本部门及以下数据权限</li>
-											<li>优化底部操作防止跳到页面顶端</li>
-											<li>修改冻结列选框无效及样式问题</li>
-											<li>修复部门四层级修改祖级无效问题</li>
-											<li>更换开关切换按钮样式</li>
-											<li>新增select2-bootstrap美化下拉框</li>
-											<li>添加表格内图片预览方法</li>
-											<li>修复权限校验失败跳转页面路径错误</li>
-											<li>国际化资源文件调整</li>
-											<li>通知公告布局调整</li>
-											<li>删除页签操作功能</li>
-											<li>表格树新增查询指定列值</li>
-											<li>更改系统接口扫描方式及完善测试案例</li>
-											<li>表格列浮动提示及字典回显默认去背景</li>
-											<li>修复启用翻页记住前面的选择check没选中问题</li>
-											<li>去除监控页面底部的广告</li>
-											<li>日期控件功问题修复及data功能增强</li>
-											<li>新增角色权限可见性(前端直接调用)</li>
-											<li>新增获取当前登录用户方法(前端及子模块调用)</li>
-											<li>修复热部署重启导致菜单丢失问题</li>
-											<li>优化业务校验失败普通请求跳转页面</li>
-											<li>操作日志新增状态条件查询</li>
-											<li>操作类型支持多选条件查询</li>
-											<li>通知公告防止滚动触底回弹优化</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							 </div>
-                             <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v33">v3.3.0</a><code class="pull-right">2019.04.01</code>
-								   </h5>
-								</div>
-								<div id="v33" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>新增线程池统一管理</li>
-											<li>新增支持左右冻结列</li>
-											<li>新增表格字符超长浮动提示</li>
-											<li>升级datepicker拓展并汉化</li>
-											<li>升级druid到最新版本v1.1.14</li>
-											<li>修复个人头像为图片服务器跨域问题</li>
-											<li>修改上传文件按日期存储</li>
-											<li>新增表格客户端分页选项</li>
-											<li>新增表格的高度参数</li>
-											<li>新增表格销毁方法</li>
-											<li>新增表格下拉按钮切换方法</li>
-											<li>新增表格分页跳转到指定页码</li>
-											<li>新增表格启用点击选中行参数</li>
-											<li>修复表格数据重新加载未触发部分按钮禁用</li>
-											<li>使用jsonview展示操作日志参数</li>
-											<li>新增方法(addTab、editTab)</li>
-											<li>修改用户管理界面为Tab打开方式</li>
-											<li>表单验证代码优化</li>
-											<li>修复@Excel注解 prompt 属性使用报错</li>
-											<li>修复combo属性Excel兼容性问题</li>
-											<li>新增@Excel导入导出支持父类字段</li>
-											<li>修复关闭最后选项卡无法激活滚动问题</li>
-											<li>增加日期控件显示类型及回显格式扩展选项</li>
-											<li>修复定时任务执行失败后入库状态为成功状态</li>
-											<li>支持定时任务并发开关控制</li>
-											<li>优化权限校验失败普通请求跳转页面</li>
-											<li>捕获线程池执行任务抛出的异常</li>
-											<li>修复IE浏览器导出功能报错</li>
-											<li>新增角色管理分配用户功能</li>
-											<li>新增表格翻页记住前面的选择</li>
-											<li>调整用户个人中心页面</li>
-											<li>修复界面存在的一些安全问题</li>
-											<li>其他细节优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v32">v3.2.0</a><code class="pull-right">2019.01.18</code>
-								   </h5>
-								</div>
-								<div id="v32" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>部门修改时不允许选择最后节点</li>
-											<li>修复部门菜单排序字段无效</li>
-											<li>修复光驱磁盘导致服务监控异常</li>
-											<li>登录界面去除check插件</li>
-											<li>验证码文本字符间距修正</li>
-											<li>升级SpringBoot到最新版本2.1.1</li>
-											<li>升级MYSQL驱动</li>
-											<li>修正登录必填项位置偏移</li>
-											<li>Session会话检查优化</li>
-											<li>Excel注解支持多级获取</li>
-											<li>新增序列号生成方法</li>
-											<li>修复WAR部署tomcat退出线程异常</li>
-											<li>全屏操作增加默认确认/关闭</li>
-											<li>修复个人信息可能导致漏洞</li>
-											<li>字典数据根据下拉选择新增类型</li>
-											<li>升级Summernote到最新版本v0.8.11</li>
-											<li>新增用户数据导入</li>
-											<li>首页主题样式更换</li>
-											<li>layer扩展主题更换</li>
-											<li>用户管理移动端默认隐藏左侧布局</li>
-											<li>详细信息弹出层显示在顶层</li>
-											<li>表格支持切换状态(用户/角色/定时任务)</li>
-											<li>Druid数据源支持配置继承</li>
-											<li>修正部分iPhone手机端表格适配问题</li>
-											<li>新增防止重复提交表单方法</li>
-											<li>新增表格数据统计汇总方法</li>
-											<li>支持富文本上传图片文件</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v31">v3.1.0</a><code class="pull-right">2018.12.03</code>
-								   </h5>
-								</div>
-								<div id="v31" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>新增内网不获取IP地址</li>
-											<li>新增cron表达式有效校验</li>
-											<li>定时任务新增详细信息</li>
-											<li>定时任务默认策略修改(不触发立即执行)</li>
-											<li>定时任务显示下一个执行周期</li>
-											<li>支持前端任意日期格式处理</li>
-											<li>上传头像删除多余提交按钮</li>
-											<li>表格增加行间隔色配置项</li>
-											<li>表格增加转义HTML字符串配置项</li>
-											<li>表格增加显示/隐藏指定列</li>
-											<li>代码生成优化</li>
-											<li>操作日志参数格式化显示</li>
-											<li>页签新增新增全屏显示</li>
-											<li>新增一键打包部署</li>
-											<li>Excel注解新增多个参数</li>
-											<li>新增提交静默更新表格方法</li>
-											<li>新增服务监控菜单</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-							<div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v30">v3.0.0</a><code class="pull-right">2018.10.08</code>
-								   </h5>
-								</div>
-								<div id="v30" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>升级poi到最新版3.17</li>
-											<li>导出修改临时目录绝对路径</li>
-											<li>升级laydate到最新版5.0.9</li>
-											<li>升级SpringBoot到最新版本2.0.5</li>
-											<li>优化开始/结束时间校验限制</li>
-											<li>重置密码参数表中获取默认值</li>
-											<li>修复头像修改显示问题</li>
-											<li>新增数据权限过滤注解</li>
-											<li>新增表格检索折叠按钮</li>
-											<li>新增清空(登录、操作、调度)日志</li>
-											<li>固定按钮位置(提交/关闭)</li>
-											<li>部门/菜单支持(展开/折叠)</li>
-											<li>部分细节调整优化</li>
-											<li>项目采用分模块</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-							<div class="panel panel-default">
-								<div class="panel-heading">
-								   <h5 class="panel-title">
-									   <a data-toggle="collapse" data-parent="#version" href="#v24">v2.4.0</a><code class="pull-right">2018.09.03</code>
-								   </h5>
-								</div>
-								<div id="v24" class="panel-collapse collapse">
-									<div class="panel-body">
-									   <ol>
-											<li>支持部门多级查询</li>
-											<li>修复菜单状态查询无效</li>
-											<li>支持IP地址开关</li>
-											<li>支持XSS开关</li>
-											<li>记录日志异步处理</li>
-											<li>字典回显样式更改为下拉框</li>
-											<li>菜单类型必填校验</li>
-											<li>修复在线用户排序报错</li>
-											<li>增加重置按钮</li>
-											<li>支持注解导入数据</li>
-											<li>支持弹层外区域关闭</li>
-											<li>备注更换为文本区域</li>
-											<li>新增角色逻辑删除</li>
-											<li>新增部门逻辑删除</li>
-											<li>支持部门数据权限</li>
-											<li>管理员默认拥有所有授权</li>
-											<li>字典数据采用分页</li>
-											<li>部分细节调整优化</li>
-										</ol>
-									</div>
-								</div>
-							</div>
-                            <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v23">v2.3.0</a><code class="pull-right">2018.08.06</code>
-									   </h5>
-									</div>
-									<div id="v23" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>支持表格不分页开关控制</li>
-										        <li>修改字典类型同步修改字典数据</li>
-										        <li>代码生成新增修改后缀处理</li>
-										        <li>代码生成新增实体toString</li>
-										        <li>代码生成非字符串去除!=''</li>
-												<li>导出数据前加载遮罩层</li>
-												<li>部门删除校验条件修改</li>
-												<li>搜索查询下载优化</li>
-												<li>手机打开弹出层自适应</li>
-												<li>角色岗位禁用显示置灰</li>
-												<li>角色禁用不显示菜单</li>
-												<li>新增导出权限</li>
-												<li>角色权限唯一校验</li>
-												<li>岗位名称编码唯一校验</li>
-                                                <li>TreeTable优化</li>
-                                                <li>支持多数据源</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v22">v2.2.0</a><code class="pull-right">2018.07.23</code>
-									   </h5>
-									</div>
-									<div id="v22" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>修复批量生成代码异常问题</li>
-										        <li>修复定时器保存失败问题</li>
-										        <li>修复热部署转换问题</li>
-												<li>支持查询菜单管理,部门管理</li>
-												<li>大多数功能支持时间查询</li>
-												<li>自定义导出注解自动匹配column</li>
-												<li>新增任务执行策略</li>
-												<li>操作详细动态显示类型</li>
-												<li>支持动态回显字典数据</li>
-												<li>后台代码优化调整</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v21">v2.1.0</a><code class="pull-right">2018.07.10</code>
-									   </h5>
-									</div>
-									<div id="v21" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>新增登录超时提醒</li>
-										        <li>修复定时器热部署转换问题</li>
-										        <li>修复登录验证码校验无效问题</li>
-												<li>定时任务新增立即执行一次</li>
-												<li>存在字典数据不允许删除字典</li>
-												<li>字典数据支持按名称查询</li>
-												<li>代码生成增加日志注解&表格优化</li>
-												<li>修复用户逻辑删除后能登录问题</li>
-												<li>表格支持多字段动态排序</li>
-												<li>支持三级菜单显示</li>
-												<li>新增ry.sh启动程序脚本</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v20">v2.0.0</a><code class="pull-right">2018.07.02</code>
-									   </h5>
-									</div>
-									<div id="v20" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-										        <li>升级SpringBoot到最新版本2.0.3</li>
-										        <li>新增公告管理</li>
-												<li>表单校验示提体验优化</li>
-												<li>前端通用方法封装调整</li>
-												<li>前端去除js文件,合并到html</li>
-												<li>操作加载遮罩层</li>
-												<li>支持全屏模式操作</li>
-												<li>支持注解导出数据</li>
-												<li>系统支持多查询&下载</li>
-												<li>系统样式调整</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v16">v1.1.6</a><code class="pull-right">2018.06.04</code>
-									   </h5>
-									</div>
-									<div id="v16" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>新增用户列表部门列</li>
-												<li>新增登录地点</li>
-												<li>新增swagger</li>
-												<li>修复排序数字校验</li>
-												<li>优化头像上传文件类型限定为图片</li>
-												<li>新增XSS过滤</li>
-												<li>新增热部署提高开发效率</li>
-												<li>修复treegrid居中无效</li>
-												<li>角色多条件查询</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v15">v1.1.5</a><code class="pull-right">2018.05.28</code>
-									   </h5>
-									</div>
-									<div id="v15" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>优化登录失败刷新验证码</li>
-												<li>新增用户登录地址时间</li>
-												<li>修复ajax超时退出问题</li>
-												<li>新增html调用数据字典(若依首创)</li>
-												<li>调整系统部分样式</li>
-												<li>新增用户逻辑删除</li>
-												<li>新增管理员不允许删除修改</li>
-												<li>升级bootstrapTable到最新版本1.12.1</li>
-												<li>升级layer到最新版本3.1.1</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-							    <div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v14">v1.1.4</a><code class="pull-right">2018.05.20</code>
-									   </h5>
-									</div>
-									<div id="v14" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>新增参数管理</li>
-												<li>修复头像上传bug</li>
-												<li>手机邮箱唯一校验</li>
-												<li>支持手机邮箱登录</li>
-												<li>代码生成优化</li>
-												<li>支持模糊查询</li>
-												<li>支持切换主题皮肤</li>
-												<li>修改权限即时生效</li>
-												<li>修复页签Tab关闭问题</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-									   <h5 class="panel-title">
-										   <a data-toggle="collapse" data-parent="#version" href="#v13">v1.1.3</a><code class="pull-right">2018.05.14</code>
-									   </h5>
-									</div>
-									<div id="v13" class="panel-collapse collapse">
-										<div class="panel-body">
-										   <ol>
-												<li>新增验证码(数组计算、字符验证)</li>
-												<li>新增cookie记住我</li>
-												<li>新增头像上传</li>
-												<li>用户名密码长度限制</li>
-												<li>通用字段提取</li>
-												<li>支持自定义条件查询</li>
-												<li>部门名称必填、时间格式调整</li>
-												<li>其他细节优化</li>
-											</ol>
-										</div>
-									</div>
-								</div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v12">v1.1.2</a><code class="pull-right">2018.05.07</code>
-										</h5>
-                                    </div>
-                                    <div id="v12" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增个人信息修改</li>
-												<li>菜单存在子菜单不允许删除</li>
-												<li>菜单分配角色不允许删除</li>
-												<li>角色分配人员不允许删除</li>
-												<li>岗位使用后不允许删除</li>
-												<li>保证用户的数据完整性加入事物</li>
-												<li>新增环境使用手册、数据建模</li>
-												<li>Thymeleaf升级到3.0</li>
-												<li>支持非ROOT部署</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v11">v1.1.1</a><code class="pull-right">2018.04.23</code>
-										</h5>
-                                    </div>
-                                    <div id="v11" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增表单构建器</li>
-												<li>代码生成优化</li>
-												<li>支持新增主部门</li>
-												<li>支持选择上级部门、上级菜单</li>
-												<li>新增字典管理单条删除</li>
-												<li>优化一些其他细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v10">v1.1.0</a><code class="pull-right">2018.04.20</code>
-										</h5>
-                                    </div>
-                                    <div id="v10" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>支持密码盐</li>
-												<li>支持新增主目录</li>
-												<li>支持批量生成代码</li>
-												<li>支持表格导出(csv、txt、doc、excel)</li>
-												<li>自动适应宽高模式窗体</li>
-												<li>重复校验(角色名、菜单名、部门名)</li>
-												<li>优化一些其他细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v09">v1.0.9</a><code class="pull-right">2018.04.14</code>
-										</h5>
-                                    </div>
-                                    <div id="v09" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增代码生成(生成包括 java、html、js、xml、sql)</li>
-												<li>新增按钮权限控制隐藏(若依首创)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v08">v1.0.8</a><code class="pull-right">2018.04.08</code>
-										</h5>
-                                    </div>
-                                    <div id="v08" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增定时任务(新增、修改、删除、查询、启动/暂停)</li>
-												<li>新增调度日志(查询、删除)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v07">v1.0.7</a><code class="pull-right">2018.04.04</code>
-										</h5>
-                                    </div>
-                                    <div id="v07" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增岗位管理(新增、修改、删除、查询)</li>
-												<li>优化用户管理,菜单管理部分细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v06">v1.0.6</a><code class="pull-right">2018.03.15</code>
-										</h5>
-                                    </div>
-                                    <div id="v06" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增字典管理(新增、删除、修改、查询、数据选择)</li>
-												<li>新增用户密码重置</li>
-												<li>优化一些其他细节</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v05">v1.0.5</a><code class="pull-right">2018.03.12</code>
-										</h5>
-                                    </div>
-                                    <div id="v05" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增菜单管理(新增、删除、修改、查询、图标选择)</li>
-												<li>部门管理优化(添加责任人、联系电话、邮箱、修改者)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v04">v1.0.4</a><code class="pull-right">2018.03.11</code>
-										</h5>
-                                    </div>
-                                    <div id="v04" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增角色管理(新增、删除、修改、查询、菜单选择)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-								<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v03">v1.0.3</a><code class="pull-right">2018.03.08</code>
-										</h5>
-                                    </div>
-                                    <div id="v03" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增用户管理(新增、删除、修改、查询、部门选择)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                            	<div class="panel panel-default">
-									<div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v02">v1.0.2</a><code class="pull-right">2018.03.04</code>
-										</h5>
-                                    </div>
-                                    <div id="v02" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增部门管理 (新增、删除、修改、查询)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-                                    <div class="panel-heading">
-                                        <h5 class="panel-title">
-											<a data-toggle="collapse" data-parent="#version" href="#v01">v1.0.1</a><code class="pull-right">2018.03.03</code>
-										</h5>
-                                    </div>
-                                    <div id="v01" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                            	<li>新增在线用户 (批量强退、单条强退、查询)</li>
-                                                <li>新增登录日志 (批量删除、查询)</li>
-												<li>新增操作日志 (批量删除、查询、详细)</li>
-												<li>新增数据监控 (监控DB池连接和SQL的执行)</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                                <div class="panel panel-default">
-                                    <div class="panel-heading">
-                                        <h4 class="panel-title">
-                                            <a data-toggle="collapse" data-parent="#version" href="#v00">v1.0.0</a><code class="pull-right">2018.03.01</code>
-                                        </h4>
-                                    </div>
-                                    <div id="v00" class="panel-collapse collapse">
-                                        <div class="panel-body">
-                                            <ol>
-                                                <li>若依管理系统正式发布。</li>
-                                            </ol>
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <div class="col-sm-4">
-                <div class="ibox float-e-margins">
-                    <div class="ibox-title">
-                        <h5>捐赠</h5>
-                    </div>
-                    <div class="ibox-content">
-                        <div class="alert alert-warning">
-                            	请作者喝杯咖啡(点击图片放大)
-                        </div>
-                        <p id="pay-qrcode">
-                            <a href="javascript:;"><img th:src="@{/img/pay.png}" width="100%" alt="请使用手机支付宝或者微信扫码支付">
-                            </a>
-                        </p>
+<!--                    </div>-->
+<!--                    <div class="ibox-content">-->
+<!--                        <p><i class="fa fa-send-o"></i> 官网:<a href="http://www.ruoyi.vip" target="_blank">http://www.ruoyi.vip</a>-->
+<!--                        </p>-->
+<!--                        <p><i class="fa fa-qq"></i> QQ群:<s>满1389287</s> <s>满1679294</s> <s>满1529866</s> <s>满1772718</s> <s>满1366522</s> <s>满1382251</s> <s>满1145125</s> <s>满86752435</s> <s>满134072510</s> <s>满210336300</s> <s>满339522636</s> <s>满130035985</s> <s>满143151071</s> <s>满158781320</s> <s>满201531282</s> <s>满101526938</s> <a href="https://jq.qq.com/?_wv=1027&k=up9k3ZXJ" target="_blank">264355400</a> -->
+<!--                        </p>-->
+<!--                        <p><i class="fa fa-weixin"></i> 微信:<a href="javascript:;">/ *若依</a>-->
+<!--                        </p>-->
+<!--                        <p><i class="fa fa-credit-card"></i> 支付宝:<a href="javascript:;" class="支付宝信息">/ *若依</a>-->
+<!--                        </p>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--            <div class="col-sm-4">-->
+<!--                <div class="ibox float-e-margins">-->
+<!--                    <div class="ibox-title">-->
+<!--                        <h5>更新日志</h5>-->
+<!--                    </div>-->
+<!--                    <div class="ibox-content no-padding">-->
+<!--                        <div class="panel-body">-->
+<!--                            <div class="panel-group" id="version">-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v472">v4.7.2</a><code class="pull-right">2021.12.23</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v472" class="panel-collapse collapse in">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>自定义xss校验注解实现</li>-->
+<!--									        <li>进入修改页面方法添加权限标识</li>-->
+<!--									        <li>代码生成创建按钮添加超级管理员权限</li>-->
+<!--									        <li>代码生成创建表检查关键字,防止注入风险</li>-->
+<!--									        <li>修复定时任务多参数逗号分隔的问题</li>-->
+<!--									        <li>修复表格插件一起使用出现的声明报错问题</li>-->
+<!--									        <li>修复代码生成主子表模板删除方法缺少事务</li>-->
+<!--									        <li>升级oshi到最新版本v5.8.6</li>-->
+<!--									        <li>升级velocity到最新版本2.3</li>-->
+<!--									        <li>升级fastjson到最新版1.2.79</li>-->
+<!--									        <li>升级log4j2到最新版2.17.0 防止漏洞风险</li>-->
+<!--									        <li>升级thymeleaf到最新版3.0.14 阻止远程代码执行漏洞</li>-->
+<!--									        <li>优化修改/授权角色实时生效</li>-->
+<!--									        <li>修整tomcat配置参数已过期问题</li>-->
+<!--									        <li>前端添加单独的二代身份证校验</li>-->
+<!--									        <li>优化新增部门时验证用户所属部门</li>-->
+<!--									        <li>优化查询用户的角色组&岗位组代码</li>-->
+<!--									        <li>请求分页方法设置成通用方便灵活调用</li>-->
+<!--									        <li>优化日期类型错误提示与图标重叠问题</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v471">v4.7.1</a><code class="pull-right">2021.11.10</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v471" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>新增是否开启页签功能</li>-->
+<!--									        <li>代码生成的模块增加创建表功能</li>-->
+<!--									        <li>Excel导入支持@Excels注解</li>-->
+<!--									        <li>Excel注解支持导入导出标题信息</li>-->
+<!--									        <li>Excel注解支持自定义数据处理器</li>-->
+<!--									        <li>日志注解新增是否保存响应参数</li>-->
+<!--									        <li>防重提交注解支持配置间隔时间/提示消息</li>-->
+<!--									        <li>网页部分操作禁止使用后退键(Backspace)</li>-->
+<!--									        <li>实例演示中增加多层窗口获取值</li>-->
+<!--									        <li>弹出层openOptions增加动画属性</li>-->
+<!--									        <li>升级spring-boot到最新版本2.5.6</li>-->
+<!--									        <li>升级spring-boot-mybatis到最新版2.2.0</li>-->
+<!--									        <li>升级pagehelper到最新版1.4.0</li>-->
+<!--									        <li>升级oshi到最新版本v5.8.2</li>-->
+<!--									        <li>升级druid到最新版1.2.8</li>-->
+<!--									        <li>升级fastjson到最新版1.2.78</li>-->
+<!--									        <li>升级thymeleaf-extras-shiro到最新版本v2.1.0</li>-->
+<!--									        <li>升级bootstrap-fileinput到最新版本v5.2.4</li>-->
+<!--									        <li>修改阿里云maven仓库地址为新版地址</li>-->
+<!--									        <li>定时任务屏蔽违规字符</li>-->
+<!--									        <li>增加sendGet无参请求方法</li>-->
+<!--									        <li>代码生成去掉多余的排序字段</li>-->
+<!--									        <li>优化启动脚本参数优化</li>-->
+<!--									        <li>优化页签关闭右侧清除iframe元素</li>-->
+<!--									        <li>优化多表格切换表单查询参数</li>-->
+<!--									        <li>优化表格实例切换event不能为空</li>-->
+<!--									        <li>优化mybatis全局默认的执行器</li>-->
+<!--									        <li>优化导入Excel数据关闭时清理file</li>-->
+<!--									        <li>优化Excel导入图片可能出现的异常</li>-->
+<!--									        <li>优化记录登录信息,防止不必要的修改</li>-->
+<!--									        <li>优化aop语法,使用spring自动注入注解</li>-->
+<!--									        <li>修复无法被反转义问题</li>-->
+<!--									        <li>修复拖拽行数据错位问题</li>-->
+<!--									        <li>修复新窗口打开页面关闭弹窗报错</li>-->
+<!--									        <li>修复富文本回退键被禁止&控制台报错问题</li>-->
+<!--									        <li>修复自定义弹出层全屏参数无效问题</li>-->
+<!--									        <li>修复树表代码生成短字段无法识别问题</li>-->
+<!--									        <li>修复apple/webkit浏览器时间无法格式化</li>-->
+<!--									        <li>修复后端主子表代码模板方法名生成错误问题</li>-->
+<!--									        <li>修复swagger没有指定dataTypeClass导致启动出现warn日志</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v470">v4.7.0</a><code class="pull-right">2021.09.01</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v470" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>优化弹出层显示在顶层窗口</li>-->
+<!--									        <li>定时任务支持在线生成cron表达式</li>-->
+<!--									        <li>Excel注解支持Image图片导入</li>-->
+<!--									        <li>支持配置是否开启记住我功能</li>-->
+<!--									        <li>修改时检查用户数据权限范围</li>-->
+<!--									        <li>表单重置开始/结束时间控件</li>-->
+<!--									        <li>新增多图上传示例</li>-->
+<!--									        <li>启用父部门状态排除顶级节点</li>-->
+<!--									        <li>富文本默认dialogsInBody属性</li>-->
+<!--									        <li>去除默认分页合理化参数</li>-->
+<!--									        <li>顶部菜单跳转添加绝对路径</li>-->
+<!--									        <li>升级oshi到最新版本v5.8.0</li>-->
+<!--									        <li>升级shiro到最新版本v1.8.0</li>-->
+<!--									        <li>升级commons.io到最新版本v2.11.0</li>-->
+<!--									        <li>升级jquery到最新版v3.6.0</li>-->
+<!--									        <li>升级icheck到最新版v1.0.3</li>-->
+<!--									        <li>升级layer到最新版本v3.5.1</li>-->
+<!--									        <li>升级layui到最新版本v2.6.8</li>-->
+<!--									        <li>升级laydate到最新版本v5.3.1</li>-->
+<!--									        <li>升级select2到最新版v4.0.13</li>-->
+<!--									        <li>升级cropper到最新版本v1.5.12</li>-->
+<!--									        <li>升级summernote到最新版本v0.8.18</li>-->
+<!--									        <li>升级duallistbox到最新版本v3.0.9</li>-->
+<!--									        <li>升级jquery.validate到最新版本v1.19.3</li>-->
+<!--									        <li>升级bootstrap-suggest到最新版本v0.1.29</li>-->
+<!--									        <li>升级bootstrap-select到最新版本v1.13.18</li>-->
+<!--									        <li>升级bootstrap-fileinput到最新版本v5.2.3</li>-->
+<!--									        <li>查询表格指定列值增加是否去重属性</li>-->
+<!--									        <li>删除sourceMappingURL源映射</li>-->
+<!--									        <li>去除多余的favicon.ico引入</li>-->
+<!--									        <li>优化代码生成模板</li>-->
+<!--									        <li>优化XSS跨站脚本过滤</li>-->
+<!--									        <li>补充定时任务表字段注释</li>-->
+<!--									        <li>定时任务屏蔽ldap远程调用</li>-->
+<!--									        <li>定时任务屏蔽http(s)远程调用</li>-->
+<!--									        <li>定时任务对检查异常进行事务回滚</li>-->
+<!--									        <li>调度日志详细页添加关闭按钮</li>-->
+<!--									        <li>优化异常打印输出信息</li>-->
+<!--									        <li>优化移动端进入首页样式</li>-->
+<!--									        <li>优化用户操作不能删除自己</li>-->
+<!--									        <li>默认开始/结束时间绑定控件选择类型</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v462">v4.6.2</a><code class="pull-right">2021.07.01</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v462" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>优化参数&字典缓存操作</li>-->
+<!--									        <li>新增表格参数(导出方式&导出文件类型)</li>-->
+<!--									        <li>新增表格示例(自定义视图分页)</li>-->
+<!--									        <li>新增示例(表格列拖拽)</li>-->
+<!--									        <li>集成yuicompressor实现(CSS/JS压缩)</li>-->
+<!--									        <li>新增表格参数(是否支持打印页面showPrint)</li>-->
+<!--									        <li>支持bat脚本执行应用</li>-->
+<!--									        <li>修复存在的SQL注入漏洞问题</li>-->
+<!--									        <li>定时任务屏蔽rmi远程调用</li>-->
+<!--									        <li>导出Excel文件支持数据流下载方式</li>-->
+<!--									        <li>实例演示弹层组件增加相册层示例</li>-->
+<!--									        <li>删除操作日志记录信息</li>-->
+<!--									        <li>增加表格重置分页的参数</li>-->
+<!--									        <li>限制超级管理员不允许操作</li>-->
+<!--									        <li>树级结构更新子节点使用replaceFirst</li>-->
+<!--									        <li>支持动态生成密匙,防止默认密钥泄露</li>-->
+<!--									        <li>升级pagehelper到最新版1.3.1</li>-->
+<!--									        <li>升级oshi到最新版本v5.7.4</li>-->
+<!--									        <li>升级swagger到最新版本v3.0.0</li>-->
+<!--									        <li>升级commons.io到最新版本v2.10.0</li>-->
+<!--									        <li>升级commons.fileupload到最新版本v1.4</li>-->
+<!--									        <li>升级bootstrap-table到最新版本v1.18.3</li>-->
+<!--									        <li>升级druid到最新版本v1.2.6</li>-->
+<!--									        <li>升级fastjson到最新版1.2.76</li>-->
+<!--									        <li>升级layui到最新版本v2.6.6</li>-->
+<!--									        <li>升级layer到最新版本v3.5.0</li>-->
+<!--									        <li>升级laydate到最新版本v5.3.0</li>-->
+<!--									        <li>优化表格树移动端&边框显示</li>-->
+<!--									        <li>新增表格刷新options配置方法</li>-->
+<!--									        <li>优化图片工具类读取文件,防止异常</li>-->
+<!--									        <li>修复表格图片预览移动端宽高无效问题</li>-->
+<!--									        <li>主子表通用操作封装处理增加文本域类型</li>-->
+<!--									        <li>日志注解兼容获取json类型的参数</li>-->
+<!--									        <li>修复表单向导插件有滚动条时底部工具栏无法固定问题</li>-->
+<!--									        <li>修复导出角色数据范围翻译缺少仅本人</li>-->
+<!--									        <li>修正Velocity模板初始字符集</li>-->
+<!--									        <li>升级mybatis到最新版3.5.6 阻止远程代码执行漏洞</li>-->
+<!--									        <li>优化代码生成导出模板名称</li>-->
+<!--									        <li>修改个人中心密码长度提醒</li>-->
+<!--									        <li>实例演示中弹出表格增加以回调形式回显到父窗体</li>-->
+<!--									        <li>修复登录页面弹窗文字不显示的问题</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v461">v4.6.1</a><code class="pull-right">2021.04.12</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v461" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>新增IE浏览器版本过低提示页面</li>-->
+<!--									        <li>新增详细信息tab页签方式</li>-->
+<!--									        <li>新增解锁屏幕打开上次页签</li>-->
+<!--									        <li>数据监控默认账户密码防止越权访问</li>-->
+<!--									        <li>新增表格示例(导出选择列)</li>-->
+<!--									        <li>个人信息添加手机&邮箱重复验证</li>-->
+<!--									        <li>个人中心刷新后样式问题</li>-->
+<!--									        <li>操作日志返回参数添加非空验证</li>-->
+<!--									        <li>velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞</li>-->
+<!--									        <li>子表模板默认日期格式化</li>-->
+<!--									        <li>代码生成预览语言根据后缀名高亮显示</li>-->
+<!--									        <li>代码生成主子表相同字段导致数据问题</li>-->
+<!--									        <li>升级SpringBoot到最新版本2.2.13</li>-->
+<!--									        <li>升级shiro到最新版1.7.1 阻止身份认证绕过漏洞</li>-->
+<!--									        <li>升级bootstrapTable到最新版本v1.18.2</li>-->
+<!--									        <li>升级bootstrapTable相关组件到最新版本v1.18.2</li>-->
+<!--									        <li>升级fastjson到最新版1.2.75</li>-->
+<!--									        <li>升级druid到最新版本v1.2.4</li>-->
+<!--									        <li>升级oshi到最新版本v5.6.0</li>-->
+<!--									        <li>修改ip字段长度防止ipv6地址长度不够</li>-->
+<!--									        <li>搜索建议示例选择后隐藏列表</li>-->
+<!--									        <li>主子表示例增加初始化数据</li>-->
+<!--									        <li>优化Excel导入增加空行判断</li>-->
+<!--									        <li>修复横向菜单无法打开页签问题</li>-->
+<!--									        <li>修复导入数据为负浮点数时,导入结果会丢失精度问题</li>-->
+<!--									        <li>优化更多操作按钮左侧移入内容闪现消失情况</li>-->
+<!--									        <li>修复主子表提交中列隐藏后出现列偏移问题</li>-->
+<!--									        <li>单据打印网页时通过hidden-print隐藏元素</li>-->
+<!--									        <li>表格销毁清除记住选择数据</li>-->
+<!--									        <li>增加表格动态列示例</li>-->
+<!--									        <li>代码生成选择主子表关联元素必填</li>-->
+<!--									        <li>tree根据Id和Name选中指定节点增加空判断</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v46">v4.6.0</a><code class="pull-right">2021.01.01</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v46" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>新增缓存监控管理</li>-->
+<!--									        <li>新增锁定屏幕功能</li>-->
+<!--									        <li>菜单新增是否刷新页面</li>-->
+<!--									        <li>删除用户和角色解绑关联</li>-->
+<!--									        <li>新增密码强度字符范围提示</li>-->
+<!--									        <li>防止匿名访问进行过滤</li>-->
+<!--									        <li>升级SpringBoot到最新版本2.2.12</li>-->
+<!--									        <li>升级poi到最新版本4.1.2</li>-->
+<!--									        <li>升级bitwalker到最新版本1.21</li>-->
+<!--									        <li>升级bootstrap-fileinput到最新版本5.1.3</li>-->
+<!--									        <li>升级bootstrapTable到最新版本v1.18.0</li>-->
+<!--									        <li>升级bootstrapTable相关组件到最新版本v1.18.0</li>-->
+<!--									        <li>升级oshi到最新版本v5.3.6</li>-->
+<!--									        <li>新增示例(标签 & 提示)</li>-->
+<!--									        <li>添加单据打印示例</li>-->
+<!--									        <li>修改表格初始参数sortName默认值为undefined</li>-->
+<!--									        <li>新增表格参数(自定义打印页面模板printPageBuilder)</li>-->
+<!--									        <li>新增表格参数(是否显示行间隔色striped)</li>-->
+<!--									        <li>新增表格参数(渲染完成后执行的事件onPostBody)</li>-->
+<!--									        <li>Excel注解支持Image图片导出</li>-->
+<!--									        <li>Excel支持注解align对齐方式</li>-->
+<!--									        <li>Excel支持导入Boolean型数据</li>-->
+<!--									        <li>主子表操作添加通用addColumn方法</li>-->
+<!--									        <li>代码生成日期控件区分范围</li>-->
+<!--									        <li>代码生成数据库文本类型生成表单文本域</li>-->
+<!--									        <li>修复生成主子表外键名错误</li>-->
+<!--									        <li>选项卡新增是否刷新属性</li>-->
+<!--									        <li>修复树表格表头跟表格宽度不同步的问题</li>-->
+<!--									        <li>表格树加载完成触发tooltip方法</li>-->
+<!--									        <li>使用widthUnit定义树表格选项单位</li>-->
+<!--									        <li>修复主子表editColumn序列问题</li>-->
+<!--									        <li>修复添加全屏在无参数时没有替换url参数问题</li>-->
+<!--									        <li>弹出层openOptions移动端自适应</li>-->
+<!--									        <li>防止错误页返回主页出现嵌套问题</li>-->
+<!--									        <li>设置回显数据字典验证防止空值</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v451">v4.5.1</a><code class="pull-right">2020.11.18</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v451" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>阻止任意文件下载漏洞</li>-->
+<!--									        <li>升级shiro到最新版1.7.0 阻止权限绕过漏洞</li>-->
+<!--									        <li>升级druid到最新版本v1.2.2</li>-->
+<!--									        <li>新增表格行触发事件(onCheck、onUncheck、onCheckAll、onUncheckAll)</li>-->
+<!--									        <li>修复多页签关闭非当前选项出现空白问题</li>-->
+<!--									        <li>代码生成预览支持高亮显示</li>-->
+<!--									        <li>mapperLocations配置支持分隔符</li>-->
+<!--									        <li>权限信息调整</li>-->
+<!--									        <li>个人中心头像和上传头像增加默认图片</li>-->
+<!--									        <li>全局配置类保持和其他应用命名相同</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v45">v4.5.0</a><code class="pull-right">2020.10.20</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v45" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>新增菜单导航显示风格(default为左侧导航菜单,topnav为顶部导航菜单)</li>-->
+<!--									        <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li>-->
+<!--									        <li>账号密码支持自定义更新周期</li>-->
+<!--									        <li>初始密码支持自定义修改策略</li>-->
+<!--									        <li>新增校验用户修改新密码不能与旧密码相同</li>-->
+<!--									        <li>添加检查密码范围支持的特殊字符包括:~!@#$%^&*()-=_+</li>-->
+<!--									        <li>注册账号设置默认用户名称及密码最后更新时间</li>-->
+<!--									        <li>去除用户手机邮箱部门必填验证</li>-->
+<!--									        <li>新增日期格式化方法</li>-->
+<!--									        <li>代码生成添加bit类型</li>-->
+<!--									        <li>树结构加载添加callBack回调方法</li>-->
+<!--									        <li>修复用户管理页面滚动返回顶部条失效</li>-->
+<!--									        <li>修复代码生成模板文件上传组件缺少ctx的问题</li>-->
+<!--									        <li>限制系统内置参数不允许删除</li>-->
+<!--									        <li>新增表格列宽拖动插件</li>-->
+<!--									        <li>新增Ajax局部刷新demo</li>-->
+<!--									        <li>新增是否开启页脚功能</li>-->
+<!--									        <li>新增表格参数(通过自定义函数设置标题样式headerStyle)</li>-->
+<!--									        <li>新增表格参数(通过自定义函数设置页脚样式footerStyle)</li>-->
+<!--									        <li>修复窗体大小改变后浮动提示框失效问题</li>-->
+<!--									        <li>生成代码补充必填样式</li>-->
+<!--									        <li>生成页面时不忽略remark属性</li>-->
+<!--									        <li>字典数据列表页添加关闭按钮</li>-->
+<!--									        <li>Excel注解支持自动统计数据总和</li>-->
+<!--									        <li>升级springboot到2.1.17 提升安全性</li>-->
+<!--									        <li>升级pagehelper到最新版1.3.0</li>-->
+<!--									        <li>升级druid到最新版本v1.2.1</li>-->
+<!--									        <li>升级fastjson到最新版1.2.74</li>-->
+<!--									        <li>升级bootstrap-fileinput到最新版本5.1.2</li>-->
+<!--									        <li>升级oshi到最新版本v5.2.5</li>-->
+<!--									        <li>表单向导插件更换为jquery-smartwizard</li>-->
+<!--									        <li>修改主子表提交示例代码防止渲染失效</li>-->
+<!--									        <li>添加导入数据弹出窗体自定义宽高</li>-->
+<!--									        <li>用户信息参数返回忽略掉密码字段</li>-->
+<!--									        <li>优化关闭窗体添加index参数</li>-->
+<!--									        <li>回显数据字典(字符串数组)增加空值判断</li>-->
+<!--									        <li>修改前端密码长度校验和错误提示不符问题</li>-->
+<!--									        <li>AjaxResult重写put方法,以方便链式调用</li>-->
+<!--									        <li>增强验证码校验的语义,更易懂</li>-->
+<!--									        <li>导入excel整形值校验优化</li>-->
+<!--									        <li>Excel导出类型NUMERIC支持精度浮点类型</li>-->
+<!--									        <li>导出Excel调整targetAttr获取值方法,防止get方法不规范</li>-->
+<!--									        <li>输入框组验证错误后置图标提示颜色</li>-->
+<!--									        <li>上传媒体类型添加视频格式</li>-->
+<!--									        <li>数据权限判断参数类型</li>-->
+<!--									        <li>修正数据库字符串类型nvarchar</li>-->
+<!--									        <li>优化递归子节点</li>-->
+<!--									        <li>修复多表格搜索formId无效</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v44">v4.4.0</a><code class="pull-right">2020.08.24</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v44" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>升级bootstrapTable到最新版本1.17.1</li>-->
+<!--									        <li>升级shiro到最新版1.6.0 阻止权限绕过漏洞</li>-->
+<!--									        <li>升级fastjson到最新版1.2.73</li>-->
+<!--									        <li>代码生成支持同步数据库</li>-->
+<!--									        <li>代码生成支持富文本控件</li>-->
+<!--									        <li>用户密码支持自定义配置规则</li>-->
+<!--									        <li>新增表格自动刷新插件</li>-->
+<!--									        <li>新增表格打印配置插件</li>-->
+<!--									        <li>更换图片裁剪工具为cropper</li>-->
+<!--									        <li>Excel支持sort导出排序</li>-->
+<!--									        <li>代码生成支持自定义路径</li>-->
+<!--									        <li>代码生成支持选择上级菜单</li>-->
+<!--									        <li>代码生成支持上传控件</li>-->
+<!--									        <li>新增表格参数(自定义加载文本的字体大小loadingFontSize)</li>-->
+<!--									        <li>Excel注解支持设置BigDecimal精度&舍入规则</li>-->
+<!--									        <li>操作日志记录排除敏感属性字段</li>-->
+<!--									        <li>修复不同浏览器附件下载中文名乱码的问题</li>-->
+<!--									        <li>用户分配角色不允许选择超级管理员角色</li>-->
+<!--									        <li>更换表格冻结列插件</li>-->
+<!--									        <li>添加右侧冻结列示例</li>-->
+<!--									        <li>升级表格行编辑&移动端适应插件</li>-->
+<!--									        <li>修复更新表格插件后无法设置实例配置问题</li>-->
+<!--									        <li>修复更新表格插件后导致的主子表错误</li>-->
+<!--									        <li>修复页面存在多表格,回调函数res数据不正确问题</li>-->
+<!--									        <li>强退&过期清理登录帐号缓存会话</li>-->
+<!--									        <li>表格树标题内容支持html语义化标签</li>-->
+<!--									        <li>修复配置应用的访问路径首页页签重复问题</li>-->
+<!--									        <li>优化openTab打开时滚动到当前页签</li>-->
+<!--									        <li>表格请求方式method支持自定义配置</li>-->
+<!--									        <li>菜单页签联动优化</li>-->
+<!--									        <li>用户邮箱长度限制修改为50</li>-->
+<!--									        <li>主子表示例添加日期格式案例</li>-->
+<!--									        <li>修改表格行内编辑示例旧值参数</li>-->
+<!--									        <li>操作日志查询方式调整</li>-->
+<!--									        <li>唯一限制条件只返回单条数据</li>-->
+<!--									        <li>修改Excel设置STRING单元格类型</li>-->
+<!--									        <li>添加获取当前的环境配置方法</li>-->
+<!--									        <li>截取返回参数长度,防止超出异常</li>-->
+<!--									        <li>定时任务cron表达式验证</li>-->
+<!--									        <li>拆分表格插件,按需引入</li>-->
+<!--									        <li>多行文本框补齐必填错误提示背景</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v431">v4.3.1</a><code class="pull-right">2020.07.05</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v431" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>国家信息安全漏洞(请务必保持cipherKey密钥唯一性)</li>-->
+<!--									        <li>升级shiro到最新版1.5.3 阻止权限绕过漏洞</li>-->
+<!--									        <li>修改验证码在使用后清除,防止多次使用</li>-->
+<!--									        <li>检查字符支持小数点&降级改成异常提醒</li>-->
+<!--									        <li>openOptions函数中加入自定义maxmin属性</li>-->
+<!--									        <li>支持openOptions方法最大化</li>-->
+<!--									        <li>支持openOptions方法多个按钮回调</li>-->
+<!--									        <li>新增isLinkage支持页签与菜单联动</li>-->
+<!--									        <li>修改代码生成导入表结构出现异常页面不提醒问题</li>-->
+<!--									        <li>优化用户头像发生错误,则显示一个默认头像</li>-->
+<!--									        <li>Excel导出支持字典类型</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v43">v4.3.0</a><code class="pull-right">2020.06.22</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v43" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>代码生成模板支持主子表</li>-->
+<!--									        <li>代码生成显示类型支持复选框</li>-->
+<!--									        <li>前端表单样式修改成圆角</li>-->
+<!--									        <li>新增回显数据字典(字符串数组)</li>-->
+<!--									        <li>修复浏览器手动缩放比例后菜单无法自适应问题</li>-->
+<!--									        <li>限制用户不允许选择系统管理员角色</li>-->
+<!--									        <li>用户信息添加输入框组图标&鼠标按下显示密码</li>-->
+<!--									        <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li>-->
+<!--									        <li>升级Bootstrap版本到v3.3.7</li>-->
+<!--									        <li>修复selectColumns方法获取子对象数据无效问题</li>-->
+<!--									        <li>修改数据源类型优先级,先根据方法,再根据类</li>-->
+<!--									        <li>修改上级部门(选择项排除本身和下级)</li>-->
+<!--									        <li>首页菜单显示调整</li>-->
+<!--									        <li>添加是否开启swagger配置</li>-->
+<!--									        <li>新增示例(主子表提交)</li>-->
+<!--									        <li>新增示例(多级联动下拉示例)</li>-->
+<!--									        <li>新增示例(表格属性data数据加载)</li>-->
+<!--									        <li>新增表格列参数(是否列选项可见ignore)</li>-->
+<!--									        <li>新增表格参数(是否启用显示卡片视图cardView)</li>-->
+<!--									        <li>新增表格参数(是否显示全屏按钮showFullscreen)</li>-->
+<!--									        <li>新增表格参数(是否启用分页条无限循环的功能paginationLoop)</li>-->
+<!--									        <li>新增表格参数(是否显示表头showHeader)</li>-->
+<!--									        <li>表格添加显示/隐藏所有列方法 showAllColumns/hideAllColumns</li>-->
+<!--									        <li>修复部分情况节点不展开问题</li>-->
+<!--									        <li>修复关闭标签页后刷新还是上次地址问题</li>-->
+<!--									        <li>修复选择菜单后刷新页面,菜单箭头显示不对问题</li>-->
+<!--											<li>修复jquery表单序列化时复选框未选中不会序列化到对象中问题</li>-->
+<!--											<li>Excel支持readConverterExp读取字符串组内容</li>-->
+<!--									        <li>更换IP地址查询接口</li>-->
+<!--									        <li>默认关闭获取ip地址</li>-->
+<!--									        <li>操作处理ajaxSuccess判断修正</li>-->
+<!--									        <li>HttpUtils.sendPost()方法,参数无需拼接参数到url</li>-->
+<!--									        <li>通用http发送方法增加参数 contentType 编码类型</li>-->
+<!--									        <li>HTML过滤器不替换&实体</li>-->
+<!--									        <li>代码生成浮点型改用BigDecimal</li>-->
+<!--									        <li>修复表单构建单选和多选框渲染问题</li>-->
+<!--									        <li>代码生成模板调整,字段为String并且必填则加空串条件</li>-->
+<!--									        <li>字典数据查询列表根据dictSort升序排序</li>-->
+<!--									        <li>修复树表对imageView和tooltip方法无效问题</li>-->
+<!--									        <li>修复Long类型比较相等问题调整</li>-->
+<!--									        <li>示例demo页面清除html链接,防止点击后跳转出现404</li>-->
+<!--									        <li>在线用户强退方法合并</li>-->
+<!--									        <li>添加校验部门包含未停用的子部门</li>-->
+<!--									        <li>取消回车自动提交表单</li>-->
+<!--									        <li>'A','I','BUTTON' 标签忽略clickToSelect事件,防止点击操作按钮时选中</li>-->
+<!--									        <li>邮箱显示截取部分字符串,防止低分辨率错位</li>-->
+<!--									        <li>代码生成列属性根据sort排序</li>-->
+<!--									        <li>修复更多操作部分浏览器不兼容情况</li>-->
+<!--									        <li>图片预览事件属性修正</li>-->
+<!--									        <li>修复冻结列排序样式无效问题</li>-->
+<!--									        <li>修复context-path的情况下个人中心刷新导致样式问题</li>-->
+<!--									        <li>全屏editFull打开适配表树</li>-->
+<!--									        <li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v42">v4.2.0</a><code class="pull-right">2020.03.23</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v42" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>用户管理添加分配角色页面</li>-->
+<!--									        <li>定时任务添加调度日志按钮</li>-->
+<!--									        <li>新增是否开启用户注册功能</li>-->
+<!--											<li>新增页面滚动显示返回顶部按钮</li>-->
+<!--											<li>用户&角色&任务添加更多操作按钮</li>-->
+<!--											<li>iframe框架页会话过期弹出超时提示</li>-->
+<!--											<li>移动端登录不显示左侧菜单</li>-->
+<!--											<li>侧边栏添加一套深蓝色主题</li>-->
+<!--											<li>首页logo固定,不随菜单滚动</li>-->
+<!--											<li>支持mode配置history(表示去掉地址栏的#)</li>-->
+<!--											<li>任务分组字典翻译(调度日志详细)</li>-->
+<!--											<li>字典管理添加缓存读取</li>-->
+<!--											<li>字典数据列表标签显示样式</li>-->
+<!--											<li>参数管理支持缓存操作</li>-->
+<!--											<li>日期控件清空结束时间设置开始默认值为2099-12-31</li>-->
+<!--											<li>表格树添加获取数据后响应回调处理</li>-->
+<!--											<li>批量替换表前缀调整</li>-->
+<!--											<li>支持表格导入模板的弹窗表单加入其它输入控件</li>-->
+<!--											<li>表单重置刷新表格树</li>-->
+<!--											<li>新增支持导出数据字段排序</li>-->
+<!--											<li>新增表格参数(是否单选checkbox)</li>-->
+<!--											<li>druid未授权不允许访问</li>-->
+<!--											<li>表格树父节点兼容0,'0','',null</li>-->
+<!--											<li>表单必填的项添加星号</li>-->
+<!--											<li>修复select2不显示校验错误信息</li>-->
+<!--											<li>添加自定义HTML过滤器</li>-->
+<!--											<li>修复多数据源下开关关闭出现异常问题</li>-->
+<!--											<li>修复翻页记住选择项数据问题</li>-->
+<!--											<li>用户邮箱长度限制20</li>-->
+<!--											<li>修改错误页面返回主页出现嵌套问题</li>-->
+<!--											<li>表格浮动提示单双引号转义</li>-->
+<!--											<li>支持配置四级菜单</li>-->
+<!--											<li>升级shiro到最新版1.4.2 阻止rememberMe漏洞攻击</li>-->
+<!--											<li>升级summernote到最新版本v0.8.12</li>-->
+<!--											<li>导入Excel根据dateFormat属性格式处理</li>-->
+<!--											<li>修复War部署无法正常shutdown,ehcache内存泄漏</li>-->
+<!--											<li>修复代码生成短字段无法识别问题</li>-->
+<!--											<li>修复serviceImpl模版,修改方法判断日期错误</li>-->
+<!--											<li>代码生成模板增加导出功能日志记录</li>-->
+<!--											<li>代码生成唯一编号调整为tableId</li>-->
+<!--											<li>代码生成查询时忽略大小写</li>-->
+<!--											<li>代码生成支持翻页记住选中</li>-->
+<!--											<li>代码生成表注释未填写也允许导入</li>-->
+<!--											<li>Global全局配置类修改为注解,防止多环境配置下读取问题</li>-->
+<!--											<li>修复多表格情况下,firstLoad只对第一个表格生效</li>-->
+<!--											<li>处理Maven打包出现警告问题</li>-->
+<!--											<li>默认主题样式,防止网速慢情况下出现空白</li>-->
+<!--											<li>修复文件上传多级目录识别问题</li>-->
+<!--											<li>锚链接解码url,防止中文导致页面不能加载问题</li>-->
+<!--											<li>修复右键Tab页刷新事件重复请求问题</li>-->
+<!--											<li>角色禁用&菜单隐藏不查询权限</li>-->
+<!--											<li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v41">v4.1.0</a><code class="pull-right">2019.10.22</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v41" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>支持多表格实例操作</li>-->
+<!--									        <li>浮动提示方法tooltip支持弹窗</li>-->
+<!--											<li>代码生成&字典数据支持模糊条件查询</li>-->
+<!--											<li>增加页签全屏方法</li>-->
+<!--											<li>增加清除表单验证错误信息方法</li>-->
+<!--											<li>支持iframe局部刷新页面</li>-->
+<!--											<li>支持在线切换主题</li>-->
+<!--											<li>修改图片预览设置的高宽参数颠倒问题</li>-->
+<!--											<li>操作日志新增解锁账户功能</li>-->
+<!--											<li>管理员用户&角色不允许操作</li>-->
+<!--											<li>去掉jsoup包调用自定义转义工具</li>-->
+<!--											<li>添加时间轴示例</li>-->
+<!--											<li>修复翻页记住选择时获取指定列值的问题</li>-->
+<!--											<li>代码生成sql脚本添加导出按钮</li>-->
+<!--											<li>添加表格父子视图示例</li>-->
+<!--											<li>添加表格行内编辑示例</li>-->
+<!--											<li>升级fastjson到最新版1.2.60 阻止漏洞攻击</li>-->
+<!--											<li>升级echarts到最新版4.2.1</li>-->
+<!--											<li>操作日志新增返回参数</li>-->
+<!--											<li>支持mybatis通配符扫描任意多个包</li>-->
+<!--											<li>权限验证多种情况处理</li>-->
+<!--											<li>修复树形类型的代码生成的部分必要属性无法显示</li>-->
+<!--											<li>修复非表格插件情况下重置出现异常</li>-->
+<!--											<li>修复富文本编辑器有序列表冲突</li>-->
+<!--											<li>代码生成表前缀配置支持多个</li>-->
+<!--											<li>修复自动去除表前缀配置无效问题</li>-->
+<!--											<li>菜单列表按钮数据可见不显示(权限标识控制)</li>-->
+<!--											<li>修复设置会话超时时间无效问题</li>-->
+<!--											<li>新增本地资源通用下载方法</li>-->
+<!--											<li>操作日志记录新增请求方式</li>-->
+<!--											<li>代码生成单选按钮属性重名修复</li>-->
+<!--											<li>优化select2下拉框宽度不会随浏览器改变</li>-->
+<!--											<li>修复代码生成树表异常</li>-->
+<!--											<li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v40">v4.0.0</a><code class="pull-right">2019.08.08</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v40" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>代码生成支持预览、编辑,保存方案</li>-->
+<!--									        <li>新增防止表单重复提交注解</li>-->
+<!--											<li>新增后端校验(和前端保持一致)</li>-->
+<!--											<li>新增同一个用户最大会话数控制</li>-->
+<!--											<li>Excel导出子对象支持多个字段</li>-->
+<!--											<li>定时任务支持静态调用和多参数</li>-->
+<!--											<li>定时任务增加分组条件查询</li>-->
+<!--											<li>字典类型增加任务分组数据</li>-->
+<!--											<li>新增表格是否首次加载数据</li>-->
+<!--											<li>新增parentTab选项卡可在同一页签打开</li>-->
+<!--											<li>多数据源支持类注解(允许继承父类的注解)</li>-->
+<!--											<li>部门及以下数据权限(调整为以下及所有子节点)</li>-->
+<!--											<li>新增角色数据权限配(仅本人数据权限)</li>-->
+<!--											<li>修改菜单权限显示问题</li>-->
+<!--											<li>上传文件修改路径及返回名称</li>-->
+<!--											<li>添加报表插件及示例</li>-->
+<!--											<li>添加首页统计模板</li>-->
+<!--											<li>添加表格拖拽示例</li>-->
+<!--											<li>添加卡片列表示例</li>-->
+<!--											<li>添加富文本编辑器示例</li>-->
+<!--											<li>添加表格动态增删改查示例</li>-->
+<!--											<li>添加用户页面岗位选择框提示</li>-->
+<!--											<li>点击菜单操作添加背景高亮显示</li>-->
+<!--											<li>表格树新增showSearch是否显示检索信息</li>-->
+<!--											<li>解决表格列设置sortName无效问题</li>-->
+<!--											<li>表格图片预览支持自定义设置宽高</li>-->
+<!--											<li>添加表格列浮动提示(单击文本复制)</li>-->
+<!--											<li>PC端收起菜单后支持浮动显示</li>-->
+<!--											<li>详细操作样式调整</li>-->
+<!--											<li>修改用户更新描述空串不更新问题</li>-->
+<!--											<li>导入修改为模板渲染</li>-->
+<!--											<li>修改菜单及部门排序规则</li>-->
+<!--											<li>角色导出数据范围表达式翻译</li>-->
+<!--											<li>添加summernote富文本字体大小</li>-->
+<!--											<li>优化表格底部下边框防重叠&汇总像素问题</li>-->
+<!--											<li>树表格支持属性多层级访问</li>-->
+<!--											<li>修复IE浏览器用户管理界面右侧留白问题</li>-->
+<!--											<li>重置按钮刷新表格</li>-->
+<!--											<li>重置密码更新用户缓存</li>-->
+<!--											<li>优化验证码属性参数</li>-->
+<!--											<li>支持数据监控配置用户名和密码</li>-->
+<!--											<li>文件上传修改按钮背景及加载动画</li>-->
+<!--											<li>支持配置一级菜单href跳转</li>-->
+<!--											<li>侧边栏添加一套浅色主题</li>-->
+<!--											<li>树表格添加回调函数(校验异常状态)</li>-->
+<!--											<li>用户个人中心适配手机端显示</li>-->
+<!--											<li>Excel支持设置导出类型&更换样式</li>-->
+<!--											<li>检查属性改变修改为克隆方式(防止热部署强转异常)</li>-->
+<!--											<li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--							    </div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v34">v3.4.0</a><code class="pull-right">2019.06.03</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v34" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--									        <li>新增实例演示菜单及demo</li>-->
+<!--											<li>新增页签右键操作</li>-->
+<!--											<li>菜单管理新增打开方式</li>-->
+<!--											<li>新增点击某行触发的事件</li>-->
+<!--											<li>新增双击某行触发的事件</li>-->
+<!--											<li>新增单击某格触发的事件</li>-->
+<!--											<li>新增双击某格触发的事件</li>-->
+<!--											<li>新增是否启用显示细节视图</li>-->
+<!--											<li>支持上传任意格式文件</li>-->
+<!--											<li>修复角色权限注解失效问题</li>-->
+<!--											<li>左侧的菜单栏宽度调整</li>-->
+<!--											<li>新增响应完成后自定义回调函数</li>-->
+<!--											<li>支持前端及其他模块直接获取用户信息</li>-->
+<!--											<li>升级swagger到最新版2.9.2</li>-->
+<!--											<li>升级jquery.slimscroll到最新版1.3.8</li>-->
+<!--											<li>升级select2到最新版4.0.7</li>-->
+<!--											<li>新增角色配置本部门数据权限</li>-->
+<!--											<li>新增角色配置本部门及以下数据权限</li>-->
+<!--											<li>优化底部操作防止跳到页面顶端</li>-->
+<!--											<li>修改冻结列选框无效及样式问题</li>-->
+<!--											<li>修复部门四层级修改祖级无效问题</li>-->
+<!--											<li>更换开关切换按钮样式</li>-->
+<!--											<li>新增select2-bootstrap美化下拉框</li>-->
+<!--											<li>添加表格内图片预览方法</li>-->
+<!--											<li>修复权限校验失败跳转页面路径错误</li>-->
+<!--											<li>国际化资源文件调整</li>-->
+<!--											<li>通知公告布局调整</li>-->
+<!--											<li>删除页签操作功能</li>-->
+<!--											<li>表格树新增查询指定列值</li>-->
+<!--											<li>更改系统接口扫描方式及完善测试案例</li>-->
+<!--											<li>表格列浮动提示及字典回显默认去背景</li>-->
+<!--											<li>修复启用翻页记住前面的选择check没选中问题</li>-->
+<!--											<li>去除监控页面底部的广告</li>-->
+<!--											<li>日期控件功问题修复及data功能增强</li>-->
+<!--											<li>新增角色权限可见性(前端直接调用)</li>-->
+<!--											<li>新增获取当前登录用户方法(前端及子模块调用)</li>-->
+<!--											<li>修复热部署重启导致菜单丢失问题</li>-->
+<!--											<li>优化业务校验失败普通请求跳转页面</li>-->
+<!--											<li>操作日志新增状态条件查询</li>-->
+<!--											<li>操作类型支持多选条件查询</li>-->
+<!--											<li>通知公告防止滚动触底回弹优化</li>-->
+<!--											<li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							 </div>-->
+<!--                             <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v33">v3.3.0</a><code class="pull-right">2019.04.01</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v33" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--											<li>新增线程池统一管理</li>-->
+<!--											<li>新增支持左右冻结列</li>-->
+<!--											<li>新增表格字符超长浮动提示</li>-->
+<!--											<li>升级datepicker拓展并汉化</li>-->
+<!--											<li>升级druid到最新版本v1.1.14</li>-->
+<!--											<li>修复个人头像为图片服务器跨域问题</li>-->
+<!--											<li>修改上传文件按日期存储</li>-->
+<!--											<li>新增表格客户端分页选项</li>-->
+<!--											<li>新增表格的高度参数</li>-->
+<!--											<li>新增表格销毁方法</li>-->
+<!--											<li>新增表格下拉按钮切换方法</li>-->
+<!--											<li>新增表格分页跳转到指定页码</li>-->
+<!--											<li>新增表格启用点击选中行参数</li>-->
+<!--											<li>修复表格数据重新加载未触发部分按钮禁用</li>-->
+<!--											<li>使用jsonview展示操作日志参数</li>-->
+<!--											<li>新增方法(addTab、editTab)</li>-->
+<!--											<li>修改用户管理界面为Tab打开方式</li>-->
+<!--											<li>表单验证代码优化</li>-->
+<!--											<li>修复@Excel注解 prompt 属性使用报错</li>-->
+<!--											<li>修复combo属性Excel兼容性问题</li>-->
+<!--											<li>新增@Excel导入导出支持父类字段</li>-->
+<!--											<li>修复关闭最后选项卡无法激活滚动问题</li>-->
+<!--											<li>增加日期控件显示类型及回显格式扩展选项</li>-->
+<!--											<li>修复定时任务执行失败后入库状态为成功状态</li>-->
+<!--											<li>支持定时任务并发开关控制</li>-->
+<!--											<li>优化权限校验失败普通请求跳转页面</li>-->
+<!--											<li>捕获线程池执行任务抛出的异常</li>-->
+<!--											<li>修复IE浏览器导出功能报错</li>-->
+<!--											<li>新增角色管理分配用户功能</li>-->
+<!--											<li>新增表格翻页记住前面的选择</li>-->
+<!--											<li>调整用户个人中心页面</li>-->
+<!--											<li>修复界面存在的一些安全问题</li>-->
+<!--											<li>其他细节优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v32">v3.2.0</a><code class="pull-right">2019.01.18</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v32" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--											<li>部门修改时不允许选择最后节点</li>-->
+<!--											<li>修复部门菜单排序字段无效</li>-->
+<!--											<li>修复光驱磁盘导致服务监控异常</li>-->
+<!--											<li>登录界面去除check插件</li>-->
+<!--											<li>验证码文本字符间距修正</li>-->
+<!--											<li>升级SpringBoot到最新版本2.1.1</li>-->
+<!--											<li>升级MYSQL驱动</li>-->
+<!--											<li>修正登录必填项位置偏移</li>-->
+<!--											<li>Session会话检查优化</li>-->
+<!--											<li>Excel注解支持多级获取</li>-->
+<!--											<li>新增序列号生成方法</li>-->
+<!--											<li>修复WAR部署tomcat退出线程异常</li>-->
+<!--											<li>全屏操作增加默认确认/关闭</li>-->
+<!--											<li>修复个人信息可能导致漏洞</li>-->
+<!--											<li>字典数据根据下拉选择新增类型</li>-->
+<!--											<li>升级Summernote到最新版本v0.8.11</li>-->
+<!--											<li>新增用户数据导入</li>-->
+<!--											<li>首页主题样式更换</li>-->
+<!--											<li>layer扩展主题更换</li>-->
+<!--											<li>用户管理移动端默认隐藏左侧布局</li>-->
+<!--											<li>详细信息弹出层显示在顶层</li>-->
+<!--											<li>表格支持切换状态(用户/角色/定时任务)</li>-->
+<!--											<li>Druid数据源支持配置继承</li>-->
+<!--											<li>修正部分iPhone手机端表格适配问题</li>-->
+<!--											<li>新增防止重复提交表单方法</li>-->
+<!--											<li>新增表格数据统计汇总方法</li>-->
+<!--											<li>支持富文本上传图片文件</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v31">v3.1.0</a><code class="pull-right">2018.12.03</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v31" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--											<li>新增内网不获取IP地址</li>-->
+<!--											<li>新增cron表达式有效校验</li>-->
+<!--											<li>定时任务新增详细信息</li>-->
+<!--											<li>定时任务默认策略修改(不触发立即执行)</li>-->
+<!--											<li>定时任务显示下一个执行周期</li>-->
+<!--											<li>支持前端任意日期格式处理</li>-->
+<!--											<li>上传头像删除多余提交按钮</li>-->
+<!--											<li>表格增加行间隔色配置项</li>-->
+<!--											<li>表格增加转义HTML字符串配置项</li>-->
+<!--											<li>表格增加显示/隐藏指定列</li>-->
+<!--											<li>代码生成优化</li>-->
+<!--											<li>操作日志参数格式化显示</li>-->
+<!--											<li>页签新增新增全屏显示</li>-->
+<!--											<li>新增一键打包部署</li>-->
+<!--											<li>Excel注解新增多个参数</li>-->
+<!--											<li>新增提交静默更新表格方法</li>-->
+<!--											<li>新增服务监控菜单</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--							<div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v30">v3.0.0</a><code class="pull-right">2018.10.08</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v30" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--											<li>升级poi到最新版3.17</li>-->
+<!--											<li>导出修改临时目录绝对路径</li>-->
+<!--											<li>升级laydate到最新版5.0.9</li>-->
+<!--											<li>升级SpringBoot到最新版本2.0.5</li>-->
+<!--											<li>优化开始/结束时间校验限制</li>-->
+<!--											<li>重置密码参数表中获取默认值</li>-->
+<!--											<li>修复头像修改显示问题</li>-->
+<!--											<li>新增数据权限过滤注解</li>-->
+<!--											<li>新增表格检索折叠按钮</li>-->
+<!--											<li>新增清空(登录、操作、调度)日志</li>-->
+<!--											<li>固定按钮位置(提交/关闭)</li>-->
+<!--											<li>部门/菜单支持(展开/折叠)</li>-->
+<!--											<li>部分细节调整优化</li>-->
+<!--											<li>项目采用分模块</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--							<div class="panel panel-default">-->
+<!--								<div class="panel-heading">-->
+<!--								   <h5 class="panel-title">-->
+<!--									   <a data-toggle="collapse" data-parent="#version" href="#v24">v2.4.0</a><code class="pull-right">2018.09.03</code>-->
+<!--								   </h5>-->
+<!--								</div>-->
+<!--								<div id="v24" class="panel-collapse collapse">-->
+<!--									<div class="panel-body">-->
+<!--									   <ol>-->
+<!--											<li>支持部门多级查询</li>-->
+<!--											<li>修复菜单状态查询无效</li>-->
+<!--											<li>支持IP地址开关</li>-->
+<!--											<li>支持XSS开关</li>-->
+<!--											<li>记录日志异步处理</li>-->
+<!--											<li>字典回显样式更改为下拉框</li>-->
+<!--											<li>菜单类型必填校验</li>-->
+<!--											<li>修复在线用户排序报错</li>-->
+<!--											<li>增加重置按钮</li>-->
+<!--											<li>支持注解导入数据</li>-->
+<!--											<li>支持弹层外区域关闭</li>-->
+<!--											<li>备注更换为文本区域</li>-->
+<!--											<li>新增角色逻辑删除</li>-->
+<!--											<li>新增部门逻辑删除</li>-->
+<!--											<li>支持部门数据权限</li>-->
+<!--											<li>管理员默认拥有所有授权</li>-->
+<!--											<li>字典数据采用分页</li>-->
+<!--											<li>部分细节调整优化</li>-->
+<!--										</ol>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							</div>-->
+<!--                            <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v23">v2.3.0</a><code class="pull-right">2018.08.06</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v23" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--										        <li>支持表格不分页开关控制</li>-->
+<!--										        <li>修改字典类型同步修改字典数据</li>-->
+<!--										        <li>代码生成新增修改后缀处理</li>-->
+<!--										        <li>代码生成新增实体toString</li>-->
+<!--										        <li>代码生成非字符串去除!=''</li>-->
+<!--												<li>导出数据前加载遮罩层</li>-->
+<!--												<li>部门删除校验条件修改</li>-->
+<!--												<li>搜索查询下载优化</li>-->
+<!--												<li>手机打开弹出层自适应</li>-->
+<!--												<li>角色岗位禁用显示置灰</li>-->
+<!--												<li>角色禁用不显示菜单</li>-->
+<!--												<li>新增导出权限</li>-->
+<!--												<li>角色权限唯一校验</li>-->
+<!--												<li>岗位名称编码唯一校验</li>-->
+<!--                                                <li>TreeTable优化</li>-->
+<!--                                                <li>支持多数据源</li>-->
+<!--												<li>其他细节优化</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--                                <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v22">v2.2.0</a><code class="pull-right">2018.07.23</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v22" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--										        <li>修复批量生成代码异常问题</li>-->
+<!--										        <li>修复定时器保存失败问题</li>-->
+<!--										        <li>修复热部署转换问题</li>-->
+<!--												<li>支持查询菜单管理,部门管理</li>-->
+<!--												<li>大多数功能支持时间查询</li>-->
+<!--												<li>自定义导出注解自动匹配column</li>-->
+<!--												<li>新增任务执行策略</li>-->
+<!--												<li>操作详细动态显示类型</li>-->
+<!--												<li>支持动态回显字典数据</li>-->
+<!--												<li>后台代码优化调整</li>-->
+<!--												<li>其他细节优化</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--                                <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v21">v2.1.0</a><code class="pull-right">2018.07.10</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v21" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--										        <li>新增登录超时提醒</li>-->
+<!--										        <li>修复定时器热部署转换问题</li>-->
+<!--										        <li>修复登录验证码校验无效问题</li>-->
+<!--												<li>定时任务新增立即执行一次</li>-->
+<!--												<li>存在字典数据不允许删除字典</li>-->
+<!--												<li>字典数据支持按名称查询</li>-->
+<!--												<li>代码生成增加日志注解&表格优化</li>-->
+<!--												<li>修复用户逻辑删除后能登录问题</li>-->
+<!--												<li>表格支持多字段动态排序</li>-->
+<!--												<li>支持三级菜单显示</li>-->
+<!--												<li>新增ry.sh启动程序脚本</li>-->
+<!--												<li>其他细节优化</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--                            	<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v20">v2.0.0</a><code class="pull-right">2018.07.02</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v20" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--										        <li>升级SpringBoot到最新版本2.0.3</li>-->
+<!--										        <li>新增公告管理</li>-->
+<!--												<li>表单校验示提体验优化</li>-->
+<!--												<li>前端通用方法封装调整</li>-->
+<!--												<li>前端去除js文件,合并到html</li>-->
+<!--												<li>操作加载遮罩层</li>-->
+<!--												<li>支持全屏模式操作</li>-->
+<!--												<li>支持注解导出数据</li>-->
+<!--												<li>系统支持多查询&下载</li>-->
+<!--												<li>系统样式调整</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--                                <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v16">v1.1.6</a><code class="pull-right">2018.06.04</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v16" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--												<li>新增用户列表部门列</li>-->
+<!--												<li>新增登录地点</li>-->
+<!--												<li>新增swagger</li>-->
+<!--												<li>修复排序数字校验</li>-->
+<!--												<li>优化头像上传文件类型限定为图片</li>-->
+<!--												<li>新增XSS过滤</li>-->
+<!--												<li>新增热部署提高开发效率</li>-->
+<!--												<li>修复treegrid居中无效</li>-->
+<!--												<li>角色多条件查询</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--                            	<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v15">v1.1.5</a><code class="pull-right">2018.05.28</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v15" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--												<li>优化登录失败刷新验证码</li>-->
+<!--												<li>新增用户登录地址时间</li>-->
+<!--												<li>修复ajax超时退出问题</li>-->
+<!--												<li>新增html调用数据字典(若依首创)</li>-->
+<!--												<li>调整系统部分样式</li>-->
+<!--												<li>新增用户逻辑删除</li>-->
+<!--												<li>新增管理员不允许删除修改</li>-->
+<!--												<li>升级bootstrapTable到最新版本1.12.1</li>-->
+<!--												<li>升级layer到最新版本3.1.1</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--							    <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v14">v1.1.4</a><code class="pull-right">2018.05.20</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v14" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--												<li>新增参数管理</li>-->
+<!--												<li>修复头像上传bug</li>-->
+<!--												<li>手机邮箱唯一校验</li>-->
+<!--												<li>支持手机邮箱登录</li>-->
+<!--												<li>代码生成优化</li>-->
+<!--												<li>支持模糊查询</li>-->
+<!--												<li>支持切换主题皮肤</li>-->
+<!--												<li>修改权限即时生效</li>-->
+<!--												<li>修复页签Tab关闭问题</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--								<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--									   <h5 class="panel-title">-->
+<!--										   <a data-toggle="collapse" data-parent="#version" href="#v13">v1.1.3</a><code class="pull-right">2018.05.14</code>-->
+<!--									   </h5>-->
+<!--									</div>-->
+<!--									<div id="v13" class="panel-collapse collapse">-->
+<!--										<div class="panel-body">-->
+<!--										   <ol>-->
+<!--												<li>新增验证码(数组计算、字符验证)</li>-->
+<!--												<li>新增cookie记住我</li>-->
+<!--												<li>新增头像上传</li>-->
+<!--												<li>用户名密码长度限制</li>-->
+<!--												<li>通用字段提取</li>-->
+<!--												<li>支持自定义条件查询</li>-->
+<!--												<li>部门名称必填、时间格式调整</li>-->
+<!--												<li>其他细节优化</li>-->
+<!--											</ol>-->
+<!--										</div>-->
+<!--									</div>-->
+<!--								</div>-->
+<!--								<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v12">v1.1.2</a><code class="pull-right">2018.05.07</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v12" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增个人信息修改</li>-->
+<!--												<li>菜单存在子菜单不允许删除</li>-->
+<!--												<li>菜单分配角色不允许删除</li>-->
+<!--												<li>角色分配人员不允许删除</li>-->
+<!--												<li>岗位使用后不允许删除</li>-->
+<!--												<li>保证用户的数据完整性加入事物</li>-->
+<!--												<li>新增环境使用手册、数据建模</li>-->
+<!--												<li>Thymeleaf升级到3.0</li>-->
+<!--												<li>支持非ROOT部署</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                                <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v11">v1.1.1</a><code class="pull-right">2018.04.23</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v11" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增表单构建器</li>-->
+<!--												<li>代码生成优化</li>-->
+<!--												<li>支持新增主部门</li>-->
+<!--												<li>支持选择上级部门、上级菜单</li>-->
+<!--												<li>新增字典管理单条删除</li>-->
+<!--												<li>优化一些其他细节</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                                <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v10">v1.1.0</a><code class="pull-right">2018.04.20</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v10" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>支持密码盐</li>-->
+<!--												<li>支持新增主目录</li>-->
+<!--												<li>支持批量生成代码</li>-->
+<!--												<li>支持表格导出(csv、txt、doc、excel)</li>-->
+<!--												<li>自动适应宽高模式窗体</li>-->
+<!--												<li>重复校验(角色名、菜单名、部门名)</li>-->
+<!--												<li>优化一些其他细节</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                                <div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v09">v1.0.9</a><code class="pull-right">2018.04.14</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v09" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增代码生成(生成包括 java、html、js、xml、sql)</li>-->
+<!--												<li>新增按钮权限控制隐藏(若依首创)</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--								<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v08">v1.0.8</a><code class="pull-right">2018.04.08</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v08" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增定时任务(新增、修改、删除、查询、启动/暂停)</li>-->
+<!--												<li>新增调度日志(查询、删除)</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                            	<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v07">v1.0.7</a><code class="pull-right">2018.04.04</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v07" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增岗位管理(新增、修改、删除、查询)</li>-->
+<!--												<li>优化用户管理,菜单管理部分细节</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--								<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v06">v1.0.6</a><code class="pull-right">2018.03.15</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v06" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增字典管理(新增、删除、修改、查询、数据选择)</li>-->
+<!--												<li>新增用户密码重置</li>-->
+<!--												<li>优化一些其他细节</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--								<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v05">v1.0.5</a><code class="pull-right">2018.03.12</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v05" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增菜单管理(新增、删除、修改、查询、图标选择)</li>-->
+<!--												<li>部门管理优化(添加责任人、联系电话、邮箱、修改者)</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--								<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v04">v1.0.4</a><code class="pull-right">2018.03.11</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v04" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增角色管理(新增、删除、修改、查询、菜单选择)</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--								<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v03">v1.0.3</a><code class="pull-right">2018.03.08</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v03" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增用户管理(新增、删除、修改、查询、部门选择)</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                            	<div class="panel panel-default">-->
+<!--									<div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v02">v1.0.2</a><code class="pull-right">2018.03.04</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v02" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增部门管理 (新增、删除、修改、查询)</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                                <div class="panel panel-default">-->
+<!--                                    <div class="panel-heading">-->
+<!--                                        <h5 class="panel-title">-->
+<!--											<a data-toggle="collapse" data-parent="#version" href="#v01">v1.0.1</a><code class="pull-right">2018.03.03</code>-->
+<!--										</h5>-->
+<!--                                    </div>-->
+<!--                                    <div id="v01" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                            	<li>新增在线用户 (批量强退、单条强退、查询)</li>-->
+<!--                                                <li>新增登录日志 (批量删除、查询)</li>-->
+<!--												<li>新增操作日志 (批量删除、查询、详细)</li>-->
+<!--												<li>新增数据监控 (监控DB池连接和SQL的执行)</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                                <div class="panel panel-default">-->
+<!--                                    <div class="panel-heading">-->
+<!--                                        <h4 class="panel-title">-->
+<!--                                            <a data-toggle="collapse" data-parent="#version" href="#v00">v1.0.0</a><code class="pull-right">2018.03.01</code>-->
+<!--                                        </h4>-->
+<!--                                    </div>-->
+<!--                                    <div id="v00" class="panel-collapse collapse">-->
+<!--                                        <div class="panel-body">-->
+<!--                                            <ol>-->
+<!--                                                <li>若依管理系统正式发布。</li>-->
+<!--                                            </ol>-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+<!--                                </div>-->
+<!--                            </div>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--            <div class="col-sm-4">-->
+<!--                <div class="ibox float-e-margins">-->
+<!--                    <div class="ibox-title">-->
+<!--                        <h5>捐赠</h5>-->
+<!--                    </div>-->
+<!--                    <div class="ibox-content">-->
+<!--                        <div class="alert alert-warning">-->
+<!--                            	请作者喝杯咖啡(点击图片放大)-->
+<!--                        </div>-->
+<!--                        <p id="pay-qrcode">-->
+<!--                            <a href="javascript:;"><img th:src="@{/img/pay.png}" width="100%" alt="请使用手机支付宝或者微信扫码支付">-->
+<!--                            </a>-->
+<!--                        </p>-->
 
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--        </div>-->
+<!--    </div>-->
     <script th:src="@{/js/jquery.min.js}"></script>
     <script th:src="@{/js/bootstrap.min.js}"></script>
     <script th:src="@{/ajax/libs/layer/layer.min.js}"></script>

+ 167 - 0
ruoyi-admin/src/main/resources/templates/system/info/add.html

@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增文章管理')" />
+    <th:block th:include="include :: datetimepicker-css" />
+    <th:block th:include="include :: bootstrap-fileinput-css"/>
+    <th:block th:include="include :: summernote-css" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-info-add">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻标题:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoTitle" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻作者:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoAuthor" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻来源:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoSource" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻时间:</label>
+                <div class="col-sm-8">
+                    <div class="input-group date">
+                        <input name="newsInfoTime" class="form-control" placeholder="yyyy-MM-dd" type="text" required>
+                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻点击数量:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoClick" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻类型:</label>
+                <div class="col-sm-8">
+                    <select name="newsInfoType" class="form-control m-b" th:with="type=${@dict.getType('sys_info_word_type')}" required>
+                        <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否是轮播(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_0_1')}">
+                        <input type="radio" th:id="${'newsInfoCarousel_' + dict.dictCode}" name="newsInfoCarousel" th:value="${dict.dictValue}" th:checked="${dict.default}">
+                        <label th:for="${'newsInfoCarousel_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否为静态轮播(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_0_1')}">
+                        <input type="radio" th:id="${'newsInfoSc_' + dict.dictCode}" name="newsInfoSc" th:value="${dict.dictValue}" th:checked="${dict.default}">
+                        <label th:for="${'newsInfoSc_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否为推荐文章(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_0_1')}">
+                        <input type="radio" th:id="${'newsInfoRecommend_' + dict.dictCode}" name="newsInfoRecommend" th:value="${dict.dictValue}" th:checked="${dict.default}">
+                        <label th:for="${'newsInfoRecommend_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">封面地址:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" name="newsInfoUrl">
+                    <div class="file-loading">
+                        <input class="form-control file-upload" id="newsInfoUrl" name="file" type="file">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻正文:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" class="form-control" name="newsInfoContent">
+                    <div class="summernote" id="newsInfoContent"></div>
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: datetimepicker-js" />
+    <th:block th:include="include :: bootstrap-fileinput-js"/>
+    <th:block th:include="include :: summernote-js" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/info"
+        $("#form-info-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/add", $('#form-info-add').serialize());
+            }
+        }
+
+        $("input[name='newsInfoTime']").datetimepicker({
+            format: "yyyy-mm-dd",
+            minView: "month",
+            autoclose: true
+        });
+
+        $(".file-upload").fileinput({
+            uploadUrl: ctx + 'common/upload',
+            maxFileCount: 1,
+            autoReplace: true
+        }).on('fileuploaded', function (event, data, previewId, index) {
+            $("input[name='" + event.currentTarget.id + "']").val(data.response.url)
+        }).on('fileremoved', function (event, id, index) {
+            $("input[name='" + event.currentTarget.id + "']").val('')
+        })
+
+        $(function() {
+            $('.summernote').summernote({
+                lang: 'zh-CN',
+                dialogsInBody: true,
+                callbacks: {
+                    onChange: function(contents, $edittable) {
+                        $("input[name='" + this.id + "']").val(contents);
+                    },
+                    onImageUpload: function(files) {
+                        var obj = this;
+                    	var data = new FormData();
+                    	data.append("file", files[0]);
+                    	$.ajax({
+                            type: "post",
+                            url: ctx + "common/upload",
+                    		data: data,
+                    		cache: false,
+                    		contentType: false,
+                    		processData: false,
+                    		dataType: 'json',
+                    		success: function(result) {
+                    		    if (result.code == web_status.SUCCESS) {
+                    		        $('#' + obj.id).summernote('insertImage', result.url);
+                    		    } else {
+                    		        $.modal.alertError(result.msg);
+                    		    }
+                    		},
+                    		error: function(error) {
+                    		    $.modal.alertWarning("图片上传失败。");
+                    		}
+                    	});
+                    }
+                }
+            });
+        });
+    </script>
+</body>
+</html>

+ 193 - 0
ruoyi-admin/src/main/resources/templates/system/info/edit.html

@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改文章管理')" />
+    <th:block th:include="include :: datetimepicker-css" />
+    <th:block th:include="include :: bootstrap-fileinput-css"/>
+    <th:block th:include="include :: summernote-css" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-info-edit" th:object="${newsInfo}">
+            <input name="newsInfoId" th:field="*{newsInfoId}" type="hidden">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻标题:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoTitle" th:field="*{newsInfoTitle}" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻作者:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoAuthor" th:field="*{newsInfoAuthor}" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻来源:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoSource" th:field="*{newsInfoSource}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻时间:</label>
+                <div class="col-sm-8">
+                    <div class="input-group date">
+                        <input name="newsInfoTime" th:value="${#dates.format(newsInfo.newsInfoTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text" required>
+                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">新闻点击数量:</label>
+                <div class="col-sm-8">
+                    <input name="newsInfoClick" th:field="*{newsInfoClick}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">创建新闻时间:</label>
+                <div class="col-sm-8">
+                    <div class="input-group date">
+                        <input name="newsInfoInittime" th:value="${#dates.format(newsInfo.newsInfoInittime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
+                        <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻类型:</label>
+                <div class="col-sm-8">
+                    <select name="newsInfoType" class="form-control m-b" th:with="type=${@dict.getType('sys_info_word_type')}" required>
+                        <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{newsInfoType}"></option>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否是轮播(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_0_1')}">
+                        <input type="radio" th:id="${'newsInfoCarousel_' + dict.dictCode}" name="newsInfoCarousel" th:value="${dict.dictValue}" th:field="*{newsInfoCarousel}">
+                        <label th:for="${'newsInfoCarousel_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否为静态轮播(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_0_1')}">
+                        <input type="radio" th:id="${'newsInfoSc_' + dict.dictCode}" name="newsInfoSc" th:value="${dict.dictValue}" th:field="*{newsInfoSc}">
+                        <label th:for="${'newsInfoSc_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">是否为推荐文章(0不是,1是):</label>
+                <div class="col-sm-8">
+                    <div class="radio-box" th:each="dict : ${@dict.getType('sys_0_1')}">
+                        <input type="radio" th:id="${'newsInfoRecommend_' + dict.dictCode}" name="newsInfoRecommend" th:value="${dict.dictValue}" th:field="*{newsInfoRecommend}">
+                        <label th:for="${'newsInfoRecommend_' + dict.dictCode}" th:text="${dict.dictLabel}"></label>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">封面地址:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" name="newsInfoUrl" th:field="*{newsInfoUrl}">
+                    <div class="file-loading">
+                        <input class="form-control file-upload" id="newsInfoUrl" name="file" type="file">
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">新闻正文:</label>
+                <div class="col-sm-8">
+                    <input type="hidden" class="form-control" th:field="*{newsInfoContent}">
+                    <div class="summernote" id="newsInfoContent"></div>
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: datetimepicker-js" />
+    <th:block th:include="include :: bootstrap-fileinput-js"/>
+    <th:block th:include="include :: summernote-js" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/info";
+        $("#form-info-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/edit", $('#form-info-edit').serialize());
+            }
+        }
+
+        $("input[name='newsInfoTime']").datetimepicker({
+            format: "yyyy-mm-dd",
+            minView: "month",
+            autoclose: true
+        });
+
+        $("input[name='newsInfoInittime']").datetimepicker({
+            format: "yyyy-mm-dd",
+            minView: "month",
+            autoclose: true
+        });
+
+        $(".file-upload").each(function (i) {
+            var val = $("input[name='" + this.id + "']").val()
+            $(this).fileinput({
+                'uploadUrl': ctx + 'common/upload',
+                initialPreviewAsData: true,
+                initialPreview: [val],
+                maxFileCount: 1,
+                autoReplace: true
+            }).on('fileuploaded', function (event, data, previewId, index) {
+                $("input[name='" + event.currentTarget.id + "']").val(data.response.url)
+            }).on('fileremoved', function (event, id, index) {
+                $("input[name='" + event.currentTarget.id + "']").val('')
+            })
+            $(this).fileinput('_initFileActions');
+        });
+
+        $(function() {
+            $('.summernote').each(function(i) {
+                $('#' + this.id).summernote({
+                    lang: 'zh-CN',
+                    dialogsInBody: true,
+                    callbacks: {
+                        onChange: function(contents, $edittable) {
+                            $("input[name='" + this.id + "']").val(contents);
+                        },
+                        onImageUpload: function(files) {
+                            var obj = this;
+                            var data = new FormData();
+                            data.append("file", files[0]);
+                            $.ajax({
+                                type: "post",
+                                url: ctx + "common/upload",
+                                data: data,
+                                cache: false,
+                                contentType: false,
+                                processData: false,
+                                dataType: 'json',
+                                success: function(result) {
+                                    if (result.code == web_status.SUCCESS) {
+                                        $('#' + obj.id).summernote('insertImage', result.url);
+                                    } else {
+                                        $.modal.alertError(result.msg);
+                                    }
+                                },
+                                error: function(error) {
+                                    $.modal.alertWarning("图片上传失败。");
+                                }
+                            });
+                        }
+                    }
+                });
+                var content = $("input[name='" + this.id + "']").val();
+                $('#' + this.id).summernote('code', content);
+            })
+        });
+    </script>
+</body>
+</html>

+ 192 - 0
ruoyi-admin/src/main/resources/templates/system/info/info.html

@@ -0,0 +1,192 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('文章管理列表')" />
+</head>
+<body class="gray-bg">
+     <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="formId">
+                    <div class="select-list">
+                        <ul>
+                            <li>
+                                <label>新闻编号:</label>
+                                <input type="text" name="newsInfoId"/>
+                            </li>
+                            <li>
+                                <label>新闻标题:</label>
+                                <input type="text" name="newsInfoTitle"/>
+                            </li>
+                            <li>
+                                <label>新闻作者:</label>
+                                <input type="text" name="newsInfoAuthor"/>
+                            </li>
+                            <li>
+                                <label>新闻来源:</label>
+                                <input type="text" name="newsInfoSource"/>
+                            </li>
+                            <li class="select-time">
+                                <label>新闻时间:</label>
+                                <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[beginNewsInfoTime]"/>
+                                <span>-</span>
+                                <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[endNewsInfoTime]"/>
+                            </li>
+                            <li>
+                                <label>新闻点击数量:</label>
+                                <input type="text" name="newsInfoClick"/>
+                            </li>
+                            <li>
+                                <label>创建新闻时间:</label>
+                                <input type="text" class="time-input" placeholder="请选择创建新闻时间" name="newsInfoInittime"/>
+                            </li>
+                            <li>
+                                <label>新闻类型:</label>
+                                <select name="newsInfoType" th:with="type=${@dict.getType('sys_info_word_type')}">
+                                    <option value="">所有</option>
+                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                                </select>
+                            </li>
+                            <li>
+                                <label>是否是轮播(0不是,1是):</label>
+                                <select name="newsInfoCarousel" th:with="type=${@dict.getType('sys_0_1')}">
+                                    <option value="">所有</option>
+                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                                </select>
+                            </li>
+                            <li>
+                                <label>是否为静态轮播(0不是,1是):</label>
+                                <select name="newsInfoSc" th:with="type=${@dict.getType('sys_0_1')}">
+                                    <option value="">所有</option>
+                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                                </select>
+                            </li>
+                            <li>
+                                <label>是否为推荐文章(0不是,1是):</label>
+                                <select name="newsInfoRecommend" th:with="type=${@dict.getType('sys_0_1')}">
+                                    <option value="">所有</option>
+                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                                </select>
+                            </li>
+                            <li>
+                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+                            </li>
+                        </ul>
+                    </div>
+                </form>
+            </div>
+
+            <div class="btn-group-sm" id="toolbar" role="group">
+                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:info:add">
+                    <i class="fa fa-plus"></i> 添加
+                </a>
+                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:info:edit">
+                    <i class="fa fa-edit"></i> 修改
+                </a>
+                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:info:remove">
+                    <i class="fa fa-remove"></i> 删除
+                </a>
+                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:info:export">
+                    <i class="fa fa-download"></i> 导出
+                </a>
+            </div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-table"></table>
+            </div>
+        </div>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var editFlag = [[${@permission.hasPermi('system:info:edit')}]];
+        var removeFlag = [[${@permission.hasPermi('system:info:remove')}]];
+        var newsInfoTypeDatas = [[${@dict.getType('sys_info_word_type')}]];
+        var newsInfoCarouselDatas = [[${@dict.getType('sys_0_1')}]];
+        var newsInfoScDatas = [[${@dict.getType('sys_0_1')}]];
+        var newsInfoRecommendDatas = [[${@dict.getType('sys_0_1')}]];
+        var prefix = ctx + "system/info";
+
+        $(function() {
+            var options = {
+                url: prefix + "/list",
+                createUrl: prefix + "/add",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove",
+                exportUrl: prefix + "/export",
+                modalName: "文章管理",
+                columns: [{
+                    checkbox: true
+                },
+                {
+                    field: 'newsInfoId',
+                    title: '新闻编号',
+                    visible: false
+                },
+                {
+                    field: 'newsInfoTitle',
+                    title: '新闻标题'
+                },
+                {
+                    field: 'newsInfoAuthor',
+                    title: '新闻作者'
+                },
+                {
+                    field: 'newsInfoSource',
+                    title: '新闻来源'
+                },
+                {
+                    field: 'newsInfoTime',
+                    title: '新闻时间'
+                },
+                {
+                    field: 'newsInfoClick',
+                    title: '新闻点击数量'
+                },
+                {
+                    field: 'newsInfoInittime',
+                    title: '创建新闻时间'
+                },
+                {
+                    field: 'newsInfoType',
+                    title: '新闻类型',
+                    formatter: function(value, row, index) {
+                       return $.table.selectDictLabel(newsInfoTypeDatas, value);
+                    }
+                },
+                {
+                    field: 'newsInfoCarousel',
+                    title: '是否是轮播(0不是,1是)',
+                    formatter: function(value, row, index) {
+                       return $.table.selectDictLabel(newsInfoCarouselDatas, value);
+                    }
+                },
+                {
+                    field: 'newsInfoSc',
+                    title: '是否为静态轮播(0不是,1是)',
+                    formatter: function(value, row, index) {
+                       return $.table.selectDictLabel(newsInfoScDatas, value);
+                    }
+                },
+                {
+                    field: 'newsInfoRecommend',
+                    title: '是否为推荐文章(0不是,1是)',
+                    formatter: function(value, row, index) {
+                       return $.table.selectDictLabel(newsInfoRecommendDatas, value);
+                    }
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    formatter: function(value, row, index) {
+                        var actions = [];
+                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.newsInfoId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.newsInfoId + '\')"><i class="fa fa-remove"></i>删除</a>');
+                        return actions.join('');
+                    }
+                }]
+            };
+            $.table.init(options);
+        });
+    </script>
+</body>
+</html>

+ 77 - 0
ruoyi-admin/src/main/resources/templates/system/nav/add.html

@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增中关村导航管理')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-nav-add">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">导航栏父级id(不填写默认父级):</label>
+                <div class="col-sm-8">
+                    <div class="input-group">
+                        <input id="treeId" name="navParent" type="hidden" th:value="${navInfo?.navId}"/>
+                        <input class="form-control" type="text" onclick="selectNavTree()" id="treeName" readonly="true" th:value="${navInfo?.navTitle}">
+                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">导航栏内容:</label>
+                <div class="col-sm-8">
+                    <input name="navTitle" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">导航栏连接:</label>
+                <div class="col-sm-8">
+                    <input name="navUrl" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">导航栏等级:</label>
+                <div class="col-sm-8">
+                    <input name="navLevel" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">导航栏顺序:</label>
+                <div class="col-sm-8">
+                    <input name="navOrder" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/nav"
+        $("#form-nav-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/add", $('#form-nav-add').serialize());
+            }
+        }
+
+        /*中关村导航管理-新增-选择父中关村导航管理树*/
+        function selectNavTree() {
+            var options = {
+                title: '中关村导航管理选择',
+                width: "380",
+                url: prefix + "/selectNavTree/" + $("#treeId").val(),
+                callBack: doSubmit
+            };
+            $.modal.openOptions(options);
+        }
+
+        function doSubmit(index, layero){
+            var body = $.modal.getChildFrame(index);
+            $("#treeId").val(body.find('#treeId').val());
+            $("#treeName").val(body.find('#treeName').val());
+            $.modal.close(index);
+        }
+    </script>
+</body>
+</html>

+ 78 - 0
ruoyi-admin/src/main/resources/templates/system/nav/edit.html

@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改中关村导航管理')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-nav-edit" th:object="${navInfo}">
+            <input name="navId" th:field="*{navId}" type="hidden">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">导航栏父级id(不填写默认父级):</label>
+                <div class="col-sm-8">
+                    <div class="input-group">
+                        <input id="treeId" name="navParent" type="hidden" th:field="*{navParent}" />
+                        <input class="form-control" type="text" onclick="selectNavTree()" id="treeName" readonly="true" th:field="*{parentName}">
+                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">导航栏内容:</label>
+                <div class="col-sm-8">
+                    <input name="navTitle" th:field="*{navTitle}" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">导航栏连接:</label>
+                <div class="col-sm-8">
+                    <input name="navUrl" th:field="*{navUrl}" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label is-required">导航栏等级:</label>
+                <div class="col-sm-8">
+                    <input name="navLevel" th:field="*{navLevel}" class="form-control" type="text" required>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">导航栏顺序:</label>
+                <div class="col-sm-8">
+                    <input name="navOrder" th:field="*{navOrder}" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/nav";
+        $("#form-nav-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/edit", $('#form-nav-edit').serialize());
+            }
+        }
+
+        /*中关村导航管理-编辑-选择父中关村导航管理树*/
+        function selectNavTree() {
+            var options = {
+                title: '中关村导航管理选择',
+                width: "380",
+                url: prefix + "/selectNavTree/" + $("#treeId").val(),
+                callBack: doSubmit
+            };
+            $.modal.openOptions(options);
+        }
+
+        function doSubmit(index, layero){
+            var body = $.modal.getChildFrame(index);
+            $("#treeId").val(body.find('#treeId').val());
+            $("#treeName").val(body.find('#treeName').val());
+            $.modal.close(index);
+        }
+    </script>
+</body>
+</html>

+ 123 - 0
ruoyi-admin/src/main/resources/templates/system/nav/nav.html

@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('中关村导航管理列表')" />
+</head>
+<body class="gray-bg">
+     <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="formId">
+                    <div class="select-list">
+                        <ul>
+                            <li>
+                                <label>导航栏父级id(不填写默认父级):</label>
+                                <input type="text" name="navParent"/>
+                            </li>
+                            <li>
+                                <label>导航栏内容:</label>
+                                <input type="text" name="navTitle"/>
+                            </li>
+                            <li>
+                                <label>导航栏连接:</label>
+                                <input type="text" name="navUrl"/>
+                            </li>
+                            <li>
+                                <label>导航栏等级:</label>
+                                <input type="text" name="navLevel"/>
+                            </li>
+                            <li>
+                                <label>导航栏顺序:</label>
+                                <input type="text" name="navOrder"/>
+                            </li>
+                            <li>
+                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.treeTable.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+                            </li>
+                        </ul>
+                    </div>
+                </form>
+            </div>
+
+            <div class="btn-group-sm" id="toolbar" role="group">
+                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:nav:add">
+                    <i class="fa fa-plus"></i> 新增
+                </a>
+                <a class="btn btn-primary" onclick="$.operate.edit()" shiro:hasPermission="system:nav:edit">
+                    <i class="fa fa-edit"></i> 修改
+                </a>
+                <a class="btn btn-info" id="expandAllBtn">
+                    <i class="fa fa-exchange"></i> 展开/折叠
+                </a>
+            </div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-tree-table"></table>
+            </div>
+        </div>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var addFlag = [[${@permission.hasPermi('system:nav:add')}]];
+        var editFlag = [[${@permission.hasPermi('system:nav:edit')}]];
+        var removeFlag = [[${@permission.hasPermi('system:nav:remove')}]];
+        var prefix = ctx + "system/nav";
+
+        $(function() {
+            var options = {
+                code: "navId",
+                parentCode: "navParent",
+                expandColumn: "2",
+                uniqueId: "navId",
+                url: prefix + "/list",
+                createUrl: prefix + "/add/{id}",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove/{id}",
+                exportUrl: prefix + "/export",
+                modalName: "中关村导航管理",
+                columns: [{
+                    field: 'selectItem',
+                    radio: true
+                },
+                {
+                    field: 'navParent',
+                    title: '导航栏父级id(不填写默认父级)',
+                    align: 'left'
+                },
+                {
+                    field: 'navTitle',
+                    title: '导航栏内容',
+                    align: 'left'
+                },
+                {
+                    field: 'navUrl',
+                    title: '导航栏连接',
+                    align: 'left'
+                },
+                {
+                    field: 'navLevel',
+                    title: '导航栏等级',
+                    align: 'left'
+                },
+                {
+                    field: 'navOrder',
+                    title: '导航栏顺序',
+                    align: 'left'
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    align: 'left',
+                    formatter: function(value, row, index) {
+                        var actions = [];
+                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.navId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+                        actions.push('<a class="btn btn-info  btn-xs ' + addFlag + '" href="javascript:void(0)" onclick="$.operate.add(\'' + row.navId + '\')"><i class="fa fa-plus"></i>新增</a> ');
+                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.navId + '\')"><i class="fa fa-remove"></i>删除</a>');
+                        return actions.join('');
+                    }
+                }]
+            };
+            $.treeTable.init(options);
+        });
+    </script>
+</body>
+</html>

+ 49 - 0
ruoyi-admin/src/main/resources/templates/system/nav/tree.html

@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('中关村导航管理树选择')" />
+    <th:block th:include="include :: ztree-css" />
+</head>
+<style>
+    body{height:auto;font-family: "Microsoft YaHei";}
+    button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
+</style>
+<body class="hold-transition box box-main">
+    <input id="treeId"   name="treeId"    type="hidden" th:value="${navInfo?.navId}"/>
+    <input id="treeName" name="treeName"  type="hidden" th:value="${navInfo?.navTitle}"/>
+    <div class="wrapper"><div class="treeShowHideButton" onclick="$.tree.toggleSearch();">
+        <label id="btnShow" title="显示搜索" style="display:none;">︾</label>
+        <label id="btnHide" title="隐藏搜索">︽</label>
+    </div>
+    <div class="treeSearchInput" id="search">
+        <label for="keyword">关键字:</label><input type="text" class="empty" id="keyword" maxlength="50">
+        <button class="btn" id="btn" onclick="$.tree.searchNode()"> 搜索 </button>
+    </div>
+    <div class="treeExpandCollapse">
+        <a href="#" onclick="$.tree.expand()">展开</a> /
+        <a href="#" onclick="$.tree.collapse()">折叠</a>
+    </div>
+    <div id="tree" class="ztree treeselect"></div>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: ztree-js" />
+    <script th:inline="javascript">
+        $(function() {
+            var url = ctx + "system/nav/treeData";
+            var options = {
+                url: url,
+                expandLevel: 2,
+                onClick : zOnClick
+            };
+            $.tree.init(options);
+        });
+
+        function zOnClick(event, treeId, treeNode) {
+            var treeId = treeNode.id;
+            var treeName = treeNode.name;
+            $("#treeId").val(treeId);
+            $("#treeName").val(treeName);
+        }
+    </script>
+</body>
+</html>

+ 3 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ShiroConfig.java

@@ -39,7 +39,7 @@ import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
 
 /**
  * 权限配置加载
- * 
+ *
  * @author ruoyi
  */
 @Configuration
@@ -284,6 +284,8 @@ public class ShiroConfig
         filterChainDefinitionMap.put("/fonts/**", "anon");
         filterChainDefinitionMap.put("/img/**", "anon");
         filterChainDefinitionMap.put("/ajax/**", "anon");
+        filterChainDefinitionMap.put("/website/**", "anon");
+        filterChainDefinitionMap.put("/profile/upload/**", "anon");
         filterChainDefinitionMap.put("/js/**", "anon");
         filterChainDefinitionMap.put("/ruoyi/**", "anon");
         filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");

Some files were not shown because too many files changed in this diff