Browse Source

知识库,阅读调整:审核通过的知识库查看才给积分

徐滕 3 weeks ago
parent
commit
62b4a807ca

+ 22 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/dao/WorkKnowledgeBasePointDetailDao.java

@@ -55,6 +55,19 @@ public interface WorkKnowledgeBasePointDetailDao extends CrudDao<WorkKnowledgeBa
     );
 
     /**
+     * 统计指定条件的积分记录数量
+     * @param userId 用户ID
+     * @param shareId 文件ID
+     * @param changeType 变动类型
+     * @return 记录数量
+     */
+    int countByUserIdAndShareIdAndChangeType(
+        @Param("userId") String userId,
+        @Param("shareId") String shareId,
+        @Param("changeType") Integer changeType
+    );
+
+    /**
      * 获取所有有积分的用户ID列表(去重)
      * @return 用户ID列表
      */
@@ -72,4 +85,13 @@ public interface WorkKnowledgeBasePointDetailDao extends CrudDao<WorkKnowledgeBa
      * @return 用户积分列表,每行包含 userId/userName/officeName/mobile/basicPoint/contributionPoint
      */
     List<WorkKnowledgeBasePoint> findAllUserPointSummary();
+
+    /**
+     * 查询所有员工的积分统计明细(用于三级导出)
+     * 包含:上传文档数、创建积分、审核文档数、审核积分、阅读积分、点赞积分、兑换积分
+     * 只返回存在获取积分的用户
+     * @param entity 查询参数(可包含beginDate/endDate日期筛选)
+     * @return 员工积分统计列表,按部门、姓名排序
+     */
+    List<WorkKnowledgeBasePoint> findAllEmployeePointStats(WorkKnowledgeBasePoint entity);
 }

+ 77 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/entity/WorkKnowledgeBasePoint.java

@@ -70,6 +70,27 @@ public class WorkKnowledgeBasePoint extends DataEntity<WorkKnowledgeBasePoint> {
 
 	/** 原始贡献积分(兑换前,用于显示可兑换积分) */
 	private Integer originalContributionPoint;
+
+	/** 上传文档数量 */
+	private Integer uploadCount;
+
+	/** 创建积分额度 */
+	private Integer createPoint;
+
+	/** 审核文档数量 */
+	private Integer auditCount;
+
+	/** 审核积分额度 */
+	private Integer auditPoint;
+
+	/** 阅读积分额度 */
+	private Integer readPoint;
+
+	/** 点赞积分额度 */
+	private Integer likePoint;
+
+	/** 兑换积分额度(绝对值) */
+	private Integer exchangePoint;
 	
 	public WorkKnowledgeBasePoint() {
 		super();
@@ -302,4 +323,60 @@ public class WorkKnowledgeBasePoint extends DataEntity<WorkKnowledgeBasePoint> {
 	public void setOriginalContributionPoint(Integer originalContributionPoint) {
 		this.originalContributionPoint = originalContributionPoint;
 	}
+
+	public Integer getUploadCount() {
+		return uploadCount;
+	}
+
+	public void setUploadCount(Integer uploadCount) {
+		this.uploadCount = uploadCount;
+	}
+
+	public Integer getCreatePoint() {
+		return createPoint;
+	}
+
+	public void setCreatePoint(Integer createPoint) {
+		this.createPoint = createPoint;
+	}
+
+	public Integer getAuditCount() {
+		return auditCount;
+	}
+
+	public void setAuditCount(Integer auditCount) {
+		this.auditCount = auditCount;
+	}
+
+	public Integer getAuditPoint() {
+		return auditPoint;
+	}
+
+	public void setAuditPoint(Integer auditPoint) {
+		this.auditPoint = auditPoint;
+	}
+
+	public Integer getReadPoint() {
+		return readPoint;
+	}
+
+	public void setReadPoint(Integer readPoint) {
+		this.readPoint = readPoint;
+	}
+
+	public Integer getLikePoint() {
+		return likePoint;
+	}
+
+	public void setLikePoint(Integer likePoint) {
+		this.likePoint = likePoint;
+	}
+
+	public Integer getExchangePoint() {
+		return exchangePoint;
+	}
+
+	public void setExchangePoint(Integer exchangePoint) {
+		this.exchangePoint = exchangePoint;
+	}
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBasePointDetailService.java

@@ -111,4 +111,13 @@ public class WorkKnowledgeBasePointDetailService extends CrudService<WorkKnowled
     public int sumUserPointByColumnId(String userId, String columnId, String pointType) {
         return pointDetailDao.sumUserPointByColumnIdWithPointType(userId, columnId, pointType);
     }
+
+    /**
+     * 查询所有员工的积分统计明细(用于三级导出)
+     * @param entity 查询参数(可包含beginDate/endDate日期筛选)
+     * @return 员工积分统计列表,按部门、姓名排序
+     */
+    public List<WorkKnowledgeBasePoint> findAllEmployeePointStats(WorkKnowledgeBasePoint entity) {
+        return pointDetailDao.findAllEmployeePointStats(entity);
+    }
 }

+ 21 - 6
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/service/WorkKnowledgeBaseReadLikeService.java

@@ -11,6 +11,7 @@ import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePointRule;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseReadRecord;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseShareInfo;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseUserExchangeFlag;
+import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseTreeInfo;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgePointCategory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -48,6 +49,9 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
     @Autowired
     private WorkKnowledgeBaseUserExchangeFlagDao exchangeFlagDao;
 
+    @Autowired
+    private WorkKnowledgeBaseTreeInfoDao treeInfoDao;
+
     /**
      * 记录阅读行为(首次阅读给创建人加分)
      * @param fileId 文件ID
@@ -60,13 +64,10 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
             return false;
         }
 
-        // 草稿(0)状态的文件不记录阅读,也不进行阅读赋分
+        // 只有审核通过(5)的文件才记录阅读量,并进行阅读赋分
         WorkKnowledgeBaseShareInfo fileStatus = shareInfoDao.get(fileId);
-        if (fileStatus != null && fileStatus.getAuditStatus() != null) {
-            String auditStatus = fileStatus.getAuditStatus();
-            if ("0".equals(auditStatus)) {
-                return false;
-            }
+        if (fileStatus == null || !"5".equals(fileStatus.getAuditStatus())) {
+            return false;
         }
 
         // 查询是否已有阅读记录
@@ -78,6 +79,7 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
             existingRecord.setReadCount(existingRecord.getReadCount() + 1);
             existingRecord.preUpdate();
             readRecordDao.updateReadRecord(existingRecord);
+
             return false; // 非首次阅读
         } else {
             // 首次阅读,创建新记录
@@ -242,6 +244,19 @@ public class WorkKnowledgeBaseReadLikeService extends CrudService<WorkKnowledgeB
                 return;
             }
 
+            // 只有审核通过(audit_status='5')的文件才给阅读积分
+            if (!"5".equals(shareInfo.getAuditStatus())) {
+                return;
+            }
+
+            // 问答答疑分类的文件不给阅读积分
+            if (StringUtils.isNotBlank(shareInfo.getTreeNodeId())) {
+                WorkKnowledgeBaseTreeInfo treeInfo = treeInfoDao.get(shareInfo.getTreeNodeId());
+                if (treeInfo != null && "问答答疑".equals(treeInfo.getTreeName())) {
+                    return;
+                }
+            }
+
             // 判断阅读人是否是记录所有者(与前端isCreator逻辑一致)
             // 如果submitAuditUserId有值,则判定是否是最后修改人
             // 如果submitAuditUserId为空,则判定是否是创建人

+ 109 - 1
src/main/java/com/jeeplus/modules/WorkKnowledgeBase/web/WorkKnowledgeBasePointController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.utils.DateUtils;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ExportKnowledgeBaseExcel;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.UserPointDetail;
 import com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint;
@@ -31,7 +32,8 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 知识库积分管理Controller
@@ -248,4 +250,110 @@ public class WorkKnowledgeBasePointController extends BaseController {
         return "redirect:" + Global.getAdminPath() + "/workKnowledgeBase/point/?repage";
     }
 
+    /**
+     * 积分统计三级导出:公司级、部门级、员工级
+     * 列:上传文档数量、贡献积分额度、审核文档数量、审核积分额度、阅读积分额度、点赞积分额度、兑换积分额度
+     */
+    @RequiresPermissions("workKnowledgeBase:point:listAll")
+    @RequestMapping(value = "exportPointStats")
+    public void exportPointStats(WorkKnowledgeBasePoint queryParam, HttpServletResponse response) {
+        try {
+            // 查询所有员工积分统计(支持日期筛选,已按部门、姓名排序)
+            List<WorkKnowledgeBasePoint> employeeList = workKnowledgeBasePointDetailService.findAllEmployeePointStats(queryParam);
+
+            // 公共表头
+            List<String> metricHeaders = Arrays.asList(
+                "上传文档数量|uploadCount",
+                "贡献积分额度|createPoint",
+                "审核文档数量|auditCount",
+                "审核积分额度|auditPoint",
+                "阅读积分额度|readPoint",
+                "点赞积分额度|likePoint",
+                "已兑换积分额度|exchangePoint"
+            );
+
+            ExportKnowledgeBaseExcel excel = new ExportKnowledgeBaseExcel();
+
+            // ========== 1. 公司级汇总 ==========
+            List<String> companyHeaders = new ArrayList<>();
+            companyHeaders.add("公司汇总|label");
+            companyHeaders.addAll(metricHeaders);
+
+            List<Map<String, Object>> companyData = new ArrayList<>();
+            if (!employeeList.isEmpty()) {
+                Map<String, Object> companyRow = new LinkedHashMap<>();
+                companyRow.put("label", "公司汇总");
+                companyRow.put("uploadCount", employeeList.stream().mapToInt(e -> e.getUploadCount() != null ? e.getUploadCount() : 0).sum());
+                companyRow.put("createPoint", employeeList.stream().mapToInt(e -> e.getCreatePoint() != null ? e.getCreatePoint() : 0).sum());
+                companyRow.put("auditCount", employeeList.stream().mapToInt(e -> e.getAuditCount() != null ? e.getAuditCount() : 0).sum());
+                companyRow.put("auditPoint", employeeList.stream().mapToInt(e -> e.getAuditPoint() != null ? e.getAuditPoint() : 0).sum());
+                companyRow.put("readPoint", employeeList.stream().mapToInt(e -> e.getReadPoint() != null ? e.getReadPoint() : 0).sum());
+                companyRow.put("likePoint", employeeList.stream().mapToInt(e -> e.getLikePoint() != null ? e.getLikePoint() : 0).sum());
+                companyRow.put("exchangePoint", employeeList.stream().mapToInt(e -> e.getExchangePoint() != null ? e.getExchangePoint() : 0).sum());
+                companyData.add(companyRow);
+            }
+            excel.addSheet("公司级", "公司级积分统计汇总", companyHeaders, companyData);
+
+            // ========== 2. 部门级汇总 ==========
+            List<String> deptHeaders = new ArrayList<>();
+            deptHeaders.add("部门|officeName");
+            deptHeaders.addAll(metricHeaders);
+
+            // 按部门分组汇总
+            Map<String, Map<String, Object>> deptMap = new LinkedHashMap<>();
+            for (WorkKnowledgeBasePoint emp : employeeList) {
+                String dept = emp.getOfficeName() != null ? emp.getOfficeName() : "未分配部门";
+                Map<String, Object> deptRow = deptMap.computeIfAbsent(dept, k -> {
+                    Map<String, Object> m = new LinkedHashMap<>();
+                    m.put("officeName", k);
+                    m.put("uploadCount", 0);
+                    m.put("createPoint", 0);
+                    m.put("auditCount", 0);
+                    m.put("auditPoint", 0);
+                    m.put("readPoint", 0);
+                    m.put("likePoint", 0);
+                    m.put("exchangePoint", 0);
+                    return m;
+                });
+                deptRow.put("uploadCount", (int) deptRow.get("uploadCount") + (emp.getUploadCount() != null ? emp.getUploadCount() : 0));
+                deptRow.put("createPoint", (int) deptRow.get("createPoint") + (emp.getCreatePoint() != null ? emp.getCreatePoint() : 0));
+                deptRow.put("auditCount", (int) deptRow.get("auditCount") + (emp.getAuditCount() != null ? emp.getAuditCount() : 0));
+                deptRow.put("auditPoint", (int) deptRow.get("auditPoint") + (emp.getAuditPoint() != null ? emp.getAuditPoint() : 0));
+                deptRow.put("readPoint", (int) deptRow.get("readPoint") + (emp.getReadPoint() != null ? emp.getReadPoint() : 0));
+                deptRow.put("likePoint", (int) deptRow.get("likePoint") + (emp.getLikePoint() != null ? emp.getLikePoint() : 0));
+                deptRow.put("exchangePoint", (int) deptRow.get("exchangePoint") + (emp.getExchangePoint() != null ? emp.getExchangePoint() : 0));
+            }
+            excel.addSheet("部门级", "部门级积分统计汇总", deptHeaders, new ArrayList<>(deptMap.values()));
+
+            // ========== 3. 员工级明细 ==========
+            List<String> empHeaders = new ArrayList<>();
+            empHeaders.add("部门|officeName");
+            empHeaders.add("姓名|userName");
+            empHeaders.addAll(metricHeaders);
+
+            List<Map<String, Object>> empData = new ArrayList<>();
+            for (WorkKnowledgeBasePoint emp : employeeList) {
+                Map<String, Object> row = new LinkedHashMap<>();
+                row.put("officeName", emp.getOfficeName() != null ? emp.getOfficeName() : "未分配部门");
+                row.put("userName", emp.getUserName() != null ? emp.getUserName() : "");
+                row.put("uploadCount", emp.getUploadCount() != null ? emp.getUploadCount() : 0);
+                row.put("createPoint", emp.getCreatePoint() != null ? emp.getCreatePoint() : 0);
+                row.put("auditCount", emp.getAuditCount() != null ? emp.getAuditCount() : 0);
+                row.put("auditPoint", emp.getAuditPoint() != null ? emp.getAuditPoint() : 0);
+                row.put("readPoint", emp.getReadPoint() != null ? emp.getReadPoint() : 0);
+                row.put("likePoint", emp.getLikePoint() != null ? emp.getLikePoint() : 0);
+                row.put("exchangePoint", emp.getExchangePoint() != null ? emp.getExchangePoint() : 0);
+                empData.add(row);
+            }
+            excel.addSheet("员工级", "员工级积分统计明细", empHeaders, empData);
+
+            String fileName = "积分统计三级导出_" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+            excel.write(response, fileName);
+            excel.dispose();
+
+        } catch (Exception e) {
+            throw new RuntimeException("导出积分统计失败:" + e.getMessage(), e);
+        }
+    }
+
 }

+ 119 - 0
src/main/resources/mappings/modules/WorkKnowledgeBase/WorkKnowledgeBasePointDetailDao.xml

@@ -357,6 +357,16 @@
           AND del_flag = '0'
     </delete>
 
+    <!-- 统计指定条件的积分记录数量 -->
+    <select id="countByUserIdAndShareIdAndChangeType" resultType="int">
+        SELECT COUNT(*)
+        FROM work_knowledge_base_point_detail
+        WHERE user_id = #{userId}
+          AND share_id = #{shareId}
+          AND change_type = #{changeType}
+          AND del_flag = '0'
+    </select>
+
     <!-- 获取所有有积分的用户ID列表(去重) -->
     <select id="findAllUserIdsWithPoints" resultType="java.lang.String">
         SELECT DISTINCT user_id
@@ -407,4 +417,113 @@
         ORDER BY o.name, u.name
     </select>
 
+    <!-- 查询所有员工的积分统计明细(用于三级导出,支持日期筛选) -->
+    <select id="findAllEmployeePointStats" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBasePoint">
+        SELECT
+            u.id AS "userId",
+            u.name AS "userName",
+            CASE WHEN u.user_type = '1' THEN '系统' ELSE o.name END AS "officeName",
+            COALESCE(uc.upload_count, 0) AS "uploadCount",
+            COALESCE(cp.create_point, 0) AS "createPoint",
+            COALESCE(ac.audit_count, 0) AS "auditCount",
+            COALESCE(ap.audit_point, 0) AS "auditPoint",
+            COALESCE(rp.read_point, 0) AS "readPoint",
+            COALESCE(lp.like_point, 0) AS "likePoint",
+            COALESCE(ep.exchange_point, 0) AS "exchangePoint"
+        FROM sys_user u
+        LEFT JOIN sys_office o ON o.id = u.office_id AND o.del_flag = '0'
+        LEFT JOIN (
+            SELECT COALESCE(submit_audit_user_id, create_by) AS owner_id, COUNT(*) AS upload_count
+            FROM work_knowledge_base_share_info
+            WHERE del_flag = '0' AND audit_status != '0'
+            <if test="beginDate != null and beginDate != ''">
+                AND create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND create_date &lt;= TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'))
+            </if>
+            GROUP BY COALESCE(submit_audit_user_id, create_by)
+        ) uc ON uc.owner_id = u.id
+        LEFT JOIN (
+            SELECT user_id, SUM(point) AS create_point
+            FROM work_knowledge_base_point_detail
+            WHERE del_flag = '0' AND change_type = 1 AND point > 0
+            <if test="beginDate != null and beginDate != ''">
+                AND create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND create_date &lt;= TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'))
+            </if>
+            GROUP BY user_id
+        ) cp ON cp.user_id = u.id
+        LEFT JOIN (
+            SELECT user_id, COUNT(DISTINCT share_id) AS audit_count
+            FROM work_knowledge_base_point_detail
+            WHERE del_flag = '0' AND change_type = 2
+            <if test="beginDate != null and beginDate != ''">
+                AND create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND create_date &lt;= TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'))
+            </if>
+            GROUP BY user_id
+        ) ac ON ac.user_id = u.id
+        LEFT JOIN (
+            SELECT user_id, SUM(point) AS audit_point
+            FROM work_knowledge_base_point_detail
+            WHERE del_flag = '0' AND change_type = 2 AND point > 0
+            <if test="beginDate != null and beginDate != ''">
+                AND create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND create_date &lt;= TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'))
+            </if>
+            GROUP BY user_id
+        ) ap ON ap.user_id = u.id
+        LEFT JOIN (
+            SELECT user_id, SUM(point) AS read_point
+            FROM work_knowledge_base_point_detail
+            WHERE del_flag = '0' AND change_type = 3 AND point > 0
+            <if test="beginDate != null and beginDate != ''">
+                AND create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND create_date &lt;= TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'))
+            </if>
+            GROUP BY user_id
+        ) rp ON rp.user_id = u.id
+        LEFT JOIN (
+            SELECT user_id, SUM(point) AS like_point
+            FROM work_knowledge_base_point_detail
+            WHERE del_flag = '0' AND change_type = 4 AND point > 0
+            <if test="beginDate != null and beginDate != ''">
+                AND create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND create_date &lt;= TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'))
+            </if>
+            GROUP BY user_id
+        ) lp ON lp.user_id = u.id
+        LEFT JOIN (
+            SELECT user_id, SUM(ABS(point)) AS exchange_point
+            FROM work_knowledge_base_point_detail
+            WHERE del_flag = '0' AND point &lt; 0
+            <if test="beginDate != null and beginDate != ''">
+                AND create_date &gt;= #{beginDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND create_date &lt;= TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'))
+            </if>
+            GROUP BY user_id
+        ) ep ON ep.user_id = u.id
+        WHERE u.del_flag = '0'
+          AND (
+              COALESCE(cp.create_point, 0) > 0
+              OR COALESCE(ap.audit_point, 0) > 0
+              OR COALESCE(rp.read_point, 0) > 0
+              OR COALESCE(lp.like_point, 0) > 0
+          )
+        ORDER BY CASE WHEN u.user_type = '1' THEN '系统' ELSE o.name END, u.name
+    </select>
+
 </mapper>

+ 27 - 0
src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseShareList.jsp

@@ -486,6 +486,26 @@
             }, 60000);
         }
 
+        /** 积分统计三级导出(公司级/部门级/员工级),携带当前筛选条件 */
+        function exportPointStats() {
+            var form = $('#searchForm');
+            var iframeName = 'exportPointIframe_' + new Date().getTime();
+            var iframe = $('<iframe>', {
+                name: iframeName,
+                style: 'display:none;',
+                id: iframeName
+            }).appendTo('body');
+            var cloneForm = form.clone();
+            cloneForm.attr('action', '${ctx}/workKnowledgeBase/point/exportPointStats');
+            cloneForm.attr('target', iframeName);
+            cloneForm.css('display', 'none').appendTo('body');
+            cloneForm.submit();
+            setTimeout(function() {
+                cloneForm.remove();
+                iframe.remove();
+            }, 60000);
+        }
+
         /** 获取审核状态显示配置 */
         /*function getWorkKnowledgeAuditState(auditStatus) {
             var statusMap = {0:'草稿', 1:'未审核', 2:'审核中', 4:'审核未通过', 5:'审核通过'};
@@ -651,6 +671,12 @@
                                     <i class="glyphicon glyphicon-export"></i> 导出
                                 </button>
                             </shiro:hasPermission>
+                            <shiro:hasPermission name="workKnowledgeBase:point:listAll">
+                                <button class="layui-btn layui-btn-sm layui-bg-cyan"
+                                        onclick="exportPointStats()">
+                                    <i class="glyphicon glyphicon-export"></i> 积分统计导出
+                                </button>
+                            </shiro:hasPermission>
                         </c:if>
                         <button class="layui-btn layui-btn-sm" onclick="search()" title="刷新">刷新</button>
                     </div>
@@ -728,6 +754,7 @@
                 }},
             {field: 'createByName', align: 'center', title: '创建人', width: 100},
             {field: 'createTime', align: 'center', title: '创建时间', width: 160},
+            //添加点击量,点击后展示的数据和原先阅读量展示的详情一致,此处点击量即点击查看一下,就记录一下
             {field: 'readCount', align: 'center', title: '阅读量', width: 100, templet: function(d){
                 return '<a href="javascript:void(0)" onclick="showReadDetail(\'' + d.id + '\')" style="color:#1e9fff;cursor:pointer;">' + (d.readCount || 0) + '</a>';
             }},