attachment(非attachmentSimple)相关的附件组件上传会在SA_DocNode中产生记录,记录中存的有提交者相关的信息如:提交者FID(sCreatorFID)
因此在删除的时候可以获取这个关系的值跟当前人的fID做比较控制删除
附件组件中的文件在删除的时候会触发组件的onDelete事件,此事件中可以获取到删除文件的docID
可以通过获取到的docID到SA_DocNode中(sID的值)查找对应记录的sCreatorFID
本例定义action查找sCreatorFID并返回,action中定义一个参数docID
如下:
action的定义
<action name="getDocCreatorAction" global="false" procedure="getDocCreatorProcedure"> <label language="zh_CN">获取附件上传者</label> <public type="String" name="docID"></public> </action>
Procedure的定义
<procedure name="getDocCreatorProcedure" code-model="/appdemo/test/logic/code" code="Test.getDocCreator"> <parameter name="docID" type="String"/> </procedure>
对应的java代码的定义
public static String getDocCreator(String docID){ String ksql = "select doc.sCreatorFID from SA_DocNode doc where doc ='"+docID+"'"; Table table = KSQL.select(ksql, null, "/system/data", null); String sCreatorFID = ""; if(table.size()>0){ Row r = table.iterator().next(); sCreatorFID = r.getString("sCreatorFID"); } return sCreatorFID; }
在组件的onDelete事件中获取当前人的fID,并调用action获取提交者fID进行比较控制删除
Model.prototype.attachmentPC7Delete = function(event){ var docID = event.data.docID;//获取删除文件的docID var personFID = this.getContext().getCurrentPersonMemberFID();//获取当前人员成员的fID if(event.source.$activeDoc.get()){ //调用action传入docID的值获取返回值 var actiomParam = new biz.Request.ActionParam(); actiomParam.setString('docID', docID); biz.Request.sendBizRequest({ "context" : this.getContext(), "action" : "getDocCreatorAction", "parameters" : actiomParam, "callback" : function(callbackData) { if (callbackData.state) { if(personFID !== callbackData.response){//当前人员成员的fID与action返回的提交者fID进行比较 alert("不允许删除他人上传的文件"); event.cancel = true;//两个fID的值不等时中断删除操作 } } else alert("执行失败"); } }); } };
评一波