在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>
效果图如下:
图片左侧即是痕迹列表,样式可以自行修改。