pageoffice 保存修改痕迹列表(Java版)

在oa办公流程过程中,一份文件会经过若干人的手中,也就意味着文件会经历多次修改,一次一次的修改,就应当记录谁修改了哪些内容,因此,文件的修改痕迹记录就相当有必要。
在这里为了区别于office文档自带的修改痕迹列表,我自己添加了一个痕迹列表,使用起来更加方便。
主要用js方法控制记录,代码如下(Word.jsp):

 <%@ page language="java"
    	import="java.util.*,java.awt.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*"
    	pageEncoding="utf-8"%>
    <%
    	//******************************卓正PageOffice组件的使用*******************************
    	PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
    	poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
    
    	//设置页面保存
    	//SaveFile.jsp页面在pageoffice官网有
    	poCtrl.setSaveFilePage("SaveFile.jsp");
    	
    	//隐藏菜单栏
    	poCtrl1.setMenubar(false);
    	poCtrl1.webOpen(request.getParameter("fileName"), OpenModeType.docNormalEdit, request.getParameter("user"));
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    	<head>
    		<title></title>
    	</head>
    <style>
    *{
    	margin:0;
    }
    #ul_Comments{
    	padding: 0;
    	border:none;
    	margin:0;
    }
    #ul_Comments li{
        background: #EDF1F7;
        border-bottom: 1px solid #eaeaea;
    }
    #ul_Comments li a{
        color: #97999D;
    	display: block;
    	padding:5px 0;
    	padding-left:8px;
    	font-size:16px;
    }
    #ul_Comments li a:hover{
    	color:#fff;
    	background:#11A5A9;
    }
    #Div_Comments{
    	position:absolute;
    	width:20%;
    	height:100%;
    	min-width:185px;
    	overflow: scroll;
    	overflow-x:hidden;
    }
    #office_box{
    	position:absolute;
    	width:80%;
    	height:100%; 
    	left:20%;
    	min-width:804px; 
    	min-height:700px; 
    }
    </style>
    <script type="text/javascript">
    
        function Save() {
            document.getElementById("PageOfficeCtrl1").WebSave();
            refresh_click();
        }
        
        function AfterDocumentOpened() {
            refreshList();
        }
        
          //获取当前痕迹列表
         function refreshList() {
            var i;
            document.getElementById("ul_Comments").innerHTML = "";
            for (i = 1; i <= document.getElementById("PageOfficeCtrl1").Document.Revisions.Count; i++) {
                var str = "";
                str = str + document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Author;
                var  revisionDate=document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Date;
                 //转换为标准时间
                 str=str+"<br/>"+dateFormat(revisionDate,"yyyy-MM-dd HH:mm:ss");
                  
                if (document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Type == "1") {
                    str = str+"<br/>" + ' 插入:' + document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Range.Text;
                }
                else if (document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Type == "2") {
                    str = str+"<br/>" + ' 删除:' + document.getElementById("PageOfficeCtrl1").Document.Revisions.Item(i).Range.Text;
                }
                else {
                    str = str+"<br/>" + ' 调整格式或样式。';
                }
                document.getElementById("ul_Comments").innerHTML += "<li><a href='#' onclick='goToRevision(" + i + ")'>" + str + "</a></li>"
            }
    
        }
         //GMT时间格式转换为CST
          dateFormat = function (date, format) {
            date = new Date(date); 
            var o = {
                'M+' : date.getMonth() + 1, //month
                'd+' : date.getDate(), //day
                'H+' : date.getHours(), //hour
                'm+' : date.getMinutes(), //minute
                's+' : date.getSeconds(), //second
                'q+' : Math.floor((date.getMonth() + 3) / 3), //quarter
                'S' : date.getMilliseconds() //millisecond
            };
    
            if (/(y+)/.test(format))
                format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
    
            for (var k in o)
                if (new RegExp('(' + k + ')').test(format))
                    format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
    
            return format;
        }
    
        //定位到当前痕迹
        function goToRevision(index)
        {
         var sMac = "Sub myfunc() " + "\r\n"
                     + "ActiveDocument.Revisions.Item("+index+").Range.Select " + "\r\n"
                     + "End Sub ";
    
         document.getElementById("PageOfficeCtrl1").RunMacro("myfunc", sMac);
         
        }
    
        //刷新列表
       function refresh_click(){
    		refreshList();    
    	}
    </script>
    	<body style="width:100%; height:100%; position: absolute;">
        <div style="width:auto; height:100%;">
           <div id="Div_Comments">
    	        <h3 style="text-align: center; font-style: '微软雅黑'; font-weight: normal; margin-bottom:8px;">痕迹列表</h3>
    	        <a href="javascript:;" name="refresh" onclick=" return refresh_click()" style="float: right; margin:0 6px 6px 0;">刷新</a>
    	        <div style="clear: both;"></div>
    	        <ul id="ul_Comments">
    	            
    	        </ul>
           </div>
           
    		<div id="office_box">
    		 <%=poCtrl1.getHtmlCode("PageOfficeCtrl1")%>
    		</div>
    		
        </div>
        <div style="clear: both;"></div>
    </body>
    </html>

效果图如下:
在这里插入图片描述
图片左侧即是痕迹列表,样式可以自行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值