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("执行失败");
}
});
}
};
评一波