123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
- /** @class ReadLog 阅读记录组件。
- * @o2cn 阅读记录组件
- * @example
- * //可以在脚本中获取该组件
- * //方法1:
- * var log = this.form.get("name"); //获取组件
- * //方法2
- * var log = this.target; //在组件事件脚本中获取
- * @extends MWF.xApplication.process.Xform.$Module
- * @o2category FormComponents
- * @o2range {Process}
- * @hideconstructor
- */
- MWF.xApplication.process.Xform.ReadLog = MWF.APPReadLog = new Class(
- /** @lends MWF.xApplication.process.Xform.ReadLog# */
- {
- Extends: MWF.APP$Module,
- options: {
- /**
- * 加载数据后事件。
- * @event MWF.xApplication.process.Xform.ReadLog#postLoadData
- * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
- * @example
- * //触发该事件的时候可以获取到流程数据ReadLog
- * var readLog = this.target.readLog;
- * //可以修改readLog达到定制化流程记录的效果
- * do something
- */
- /**
- * 加载每行流程信息以后触发,可以通过this.event获得下列信息:
- * <pre><code>
- *{
- * "data" : {}, //当前行记录信息,如果是已阅未单条记录(对象),如果是待阅有多条记录(数组)
- * "node" : node, //当前节点
- * "log" : object, //指向阅读记录
- * "type" : "readCompleted" //"read"表示待阅,"readCompleted"表示已阅
- *}
- </code></pre>
- * @event MWF.xApplication.process.Xform.ReadLog#postLoadLine
- * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
- */
- "moduleEvents": ["load", "queryLoad", "postLoad", "postLoadData", "postLoadLine"]
- },
- load: function(){
- this.node.empty();
- if (!this.json.isDelay){
- this.active();
- }
- },
- /**
- * 激活阅读记录。设置了延迟加载的时候,可以通过这个方法来激活
- * @example
- * this.form.get("fieldId").active();
- */
- active: function(){
- this._loadModuleEvents();
- if (this.fireEvent("queryLoad")){
- this._queryLoaded();
- this._loadUserInterface();
- this._loadStyles();
- this._loadDomEvents();
- //this._loadEvents();
- this._afterLoaded();
- this.fireEvent("postLoad");
- this.fireEvent("load");
- }
- },
- _loadUserInterface: function(){
- this.node.setStyle("-webkit-user-select", "text");
- this.node.setStyles(this.form.css.logActivityNode_record);
- this.form.app.action.getReadRecord(this.form.businessData.work.id, function(json){
- this.readLog = json.data;
- this.fireEvent("postLoadData");
- this.loadReadLog();
- }.bind(this));
- },
- loadReadLog: function(){
- switch (this.json.mode){
- case "notShow":
- return "";
- case "script":
- this.loadReadLogByScript();
- break;
- default:
- this.loadReadLogDefault();
- }
- },
- loadReadLogByScript: function(){
- if (this.json.displayScript && this.json.displayScript.code){
- var code = this.json.displayScript.code;
- this.readLog.each(function(log){
- if (!this.json.isShowRead && log.type === "read"){
- //不显示待阅
- }else{
- this.form.Macro.environment.log = log;
- this.form.Macro.environment.list = null;
- var r = this.form.Macro.exec(code, this);
- var t = o2.typeOf(r);
- var lineNode;
- if (t==="string"){
- lineNode = new Element("div", {
- html: r
- }).inject(this.node);
- //this.node.appendHTML(r);
- }else if (t==="element"){
- lineNode = this.node.appendChild(r);
- }
- this.fireEvent("postLoadLine",[{
- "data" : log,
- "node" : lineNode,
- "log" : this,
- "type" : "readCompleted"
- }]);
- }
- }.bind(this));
- }
- },
- loadReadLogDefault: function(){
- var text = this.json.textStyle;
- var readPersons = [];
- var readLogs = [];
- this.lineClass = "logTaskNode";
- this.readLog.each(function(log, i){
- if (this.json.textStyleScript && this.json.textStyleScript.code){
- this.form.Macro.environment.log = log;
- this.form.Macro.environment.list = null;
- text = this.form.Macro.exec(this.json.textStyleScript.code, this);
- }
- if (log.type == "readCompleted"){
- var div = new Element("div", {styles: this.form.css[this.lineClass]}).inject(this.node);
- var leftDiv = new Element("div", {styles: this.form.css.logTaskIconNode_record}).inject(div);
- var rightDiv = new Element("div", {styles: this.form.css.logTaskTextNode}).inject(div);
- var html = text.replace(/{person}/g, o2.name.cn(log.person || ""))
- .replace(/{datetime}/g, log.completedTime)
- .replace(/{date}/g, log.completedTime.substring(0.10))
- .replace(/{startDatetime}/g, log.startTime)
- .replace(/{startDate}/g, log.startTime.substring(0.10))
- .replace(/{startDatetime}/g, log.startTime)
- .replace(/{unit}/g, o2.txt(o2.name.cn(log.unit)))
- .replace(/{department}/g, o2.txt(o2.name.cn(log.unit)))
- .replace(/{identity}/g, o2.name.cn(log.identity))
- .replace(/{activity}/g, o2.txt(o2.name.cn(log.activityName)))
- .replace(/{title}/g, o2.txt(log.title) || "")
- .replace(/{opinion}/g, o2.txt(log.opinion) || "");
- rightDiv.appendHTML(html);
- if (this.lineClass === "logTaskNode"){
- this.lineClass = "logTaskNode_even";
- }else{
- this.lineClass = "logTaskNode";
- }
- this.fireEvent("postLoadLine",[{
- "data" : log,
- "node" : div,
- "log" : this,
- "type" : "readCompleted"
- }]);
- }
- if (!!this.json.isShowRead && log.type == "read"){
- readPersons.push(o2.name.cn(log.person)+"("+o2.name.cn(log.unit)+")");
- readLogs.push(log);
- }
- }.bind(this));
- if (readPersons.length){
- var div = new Element("div", {styles: this.form.css[this.lineClass]}).inject(this.node);
- var leftDiv = new Element("div", {styles: this.form.css.logTaskIconNode_record}).inject(div);
- var rightDiv = new Element("div", {styles: this.form.css.logTaskTextNode}).inject(div);
- leftDiv.setStyle("background-image", "url("+"../x_component_process_Xform/$Form/"+this.form.options.style+"/icon/rightRed.png)");
- rightDiv.appendHTML("<div><font style='font-weight: bold'>"+MWF.xApplication.process.Xform.LP.showReadTitle+": </font><font style='color: #00F'>"+readPersons.join(", ")+"</font></div>");
- this.fireEvent("postLoadLine",[{
- "data" : readLogs,
- "node" : div,
- "log" : this,
- "type" : "read"
- }]);
- }
- }
- });
|