PageOffice国产版强制留痕显示痕迹列表

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();
}

参考链接:显示痕迹列表效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值