PageOffice国产版支持统信UOS、银河麒麟等操作系统
查看本示例演示效果
本示例关键代码的编写位置
Vue+Springboot
注意 本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。
在实际应用中,为了方便查找和定位当前页面的某个痕迹,通常采用将当前文档中的所有痕迹遍历,并以列表方式显示到当前页面某个位置。
一般需要显示的痕迹属性包括:痕迹的用户名,痕迹的内容,痕迹的日期时间等。PageOffice 客户端控件提供了 RevisionsAsJson 对象来实现对痕迹的遍历。
RevisionsAsJson
- author 代表当前痕迹的用户名
- date 代表当前痕迹的日期
- type 代表痕迹的类型
- GetTextFromRevision 代表痕迹的文本内容
前端代码
//获取痕迹列表,返回一组痕迹的<li>标签
function getRevisionList(){
var revisionList = "";
var revisionsJson=pageofficectrl.word.RevisionsAsJson;
var revisionObj = JSON.parse(revisionsJson);
//遍历痕迹
for(var key in revisionObj){
let str = '';
let revisionAuthor = revisionObj[key].author; //author属性为当前痕迹的用户名
let revisionDate = revisionObj[key].date; //date属性为当前痕迹的日期
str = dateFormat(revisionDate, '[yyyy-MM-dd HH:mm]') + revisionAuthor + ':';
if (revisionObj[key].type === 1) { //type代表当前痕迹的类型为“插入”类型
let revisionType = '插入';
let revisionTxt = pageofficectrl.word.GetTextFromRevision(parseInt(revisionObj[key].id));//获取当前痕迹的文本内容
str = str + revisionType +':' + revisionTxt;
}
else if (revisionObj[key].type === 2) { //type代表当前痕迹的类型为“删除”类型
let revisionType = '删除';
let revisionTxt = pageofficectrl.word.GetTextFromRevision(parseInt(revisionObj[key].id));
str = str + revisionType +':' + revisionTxt;
}
else {
let revisionType = '调整格式或样式。';
str = str + revisionType ;
}
revisionList += "<li><a href='#' onclick='goToRevision(" + key + ")'>" + str + "</a></li>";
}
return revisionList;
}
//定位到一个痕迹
function goToRevision(key) {
pageofficectrl.word.SelectRevision(key);
}
function dateFormat(date, format) {
date = new Date((date-25569)*86400*1000);
date = roundTimeToSeconds(date);
date.setHours(date.getHours() - 8);
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 roundTimeToSeconds(date) {
var seconds = date.getSeconds();
if (seconds < 30) {
date.setSeconds(0);
} else {
date.setSeconds(0);
date.setMinutes(date.getMinutes() + 1);
}
return date;
}
// 把所有痕迹的<li>标签放到一个<ul>中
function refreshList() {
document.getElementById("ul_Comments").innerHTML = getRevisionList();
}
参考链接:显示痕迹列表效果