起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4189|回复: 5

[处理中5] 文档中心BUG

[复制链接]

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
发表于 2016-5-12 11:46:17 | 显示全部楼层 |阅读模式
本帖最后由 wangjb 于 2016-5-12 12:00 编辑

版本号:BEX3.4
BUG描述:文档中心页面的左边树BUG
注意:文档中心左边树采用延迟加载机制
1.新建时 ,虽然建成功,数据库节点数据都没问题,但在网格grid组件上并没有显示在对应的子节点位置上,只有刷新才可以出现在子节点位置上。


1.png

刷新新建之后

刷新新建之后



2.删除时,我修改删除目录功能:删除目录时,物理删除该目录对应的所有资源(包括该目录对应所有子目录的数据:数据库中目录节点信息、节点权限信息,目录对应的所有上传文件信息都删除) 代码如下:
        // 景建波 添加 删除目录
        Model.prototype.deleteBtnClick = function(event) {
                this.deleteDocOrDir('docNodeTree');
        };

// 景建波 添加 删除目录或者文档   
        Model.prototype.deleteDocOrDir = function(data) {
                if (confirm('是否删除数据?')) {
                        debugger;
                        var docNodeList = this.comp(data);
                        var fileID = docNodeList.getValue("sFileID");
                        var docPath = docNodeList.getValue("sDocPath");
                        var version = docNodeList.getValue("version");
                        var docVersionID = docNodeList.getValue("sDocLiveVersionID");
                        var docName = docNodeList.getValue("sDocName");
                        var kind = docNodeList.getValue("sKind");
                        var size = docNodeList.getValue("sSize");
                        var parent_id = docNodeList.getValue("sParentID");
                        var sDocDisplayPath = docNodeList.getValue("sDocDisplayPath");
                        var sDescription = docNodeList.getValue("sDescription");
                        var sClassification = docNodeList.getValue("sClassification");
                        var sKeywords = docNodeList.getValue("sKeywords");
                        var sFinishTime = docNodeList.getValue("sFinishTime");
                        var sDocSerialNumber = docNodeList.getValue("sDocSerialNumber");

                        // 景建波 判断是否被别人锁住
                        var cacheInfo = DocUtils.InnerUtils.queryDocCache(docNodeList.getCurrentRowID());
                        if (cacheInfo.isLockSuccess == "failure") {
                                alert("该文件正在被别人编辑,您不能删除,只能浏览最新版本");
                                return;
                        }

                        var changeLog = {
                                items : [],
                                autoCreateVersion : true,
                                "operate" : "",
                                "url" : ""
                        };
                        
                        DocUtils.InnerUtils.addChangeLog(changeLog, "delete", [ docNodeList.getCurrentRowID(), version, fileID, docVersionID, docName, kind, size, parent_id, docPath, sDocDisplayPath,
                                        sDescription, sClassification, sKeywords, sFinishTime, sDocSerialNumber ], undefined, undefined, this.getContext());
                        DocUtils.InnerUtils.deleteDocAction(changeLog, null, this.getContext());
                        debugger;
                        docNodeList.remove(docNodeList.getCurrentRow());

                        
                }
        };


当代码执行到 docNodeList.remove(docNodeList.getCurrentRow()); 该目录的所有信息在后台都已经删除,只留下前台页面上的显示的目录名字,但在执行docNodeList.remove(docNodeList.getCurrentRow());  后,页面上该目录名字依然存在,刷新该页面目录名字才消失。




















s1.png

删除文件4后跳到文件2

删除文件4后跳到文件2

定位文件3此时显示说明无当前行

定位文件3此时显示说明无当前行

准备删除文件4

准备删除文件4

定位文件1说明无当前行

定位文件1说明无当前行

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-5-12 16:22:27 | 显示全部楼层
1.新建是否有修改了其他的地方,data设置的延迟加载,新增是树形的
   newdoc.png

2.移除应该是data的缺陷,已经作为产品缺陷,提交到产品组(内部编号:2016051200034),感谢楼主的支持与配合。

远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2016-5-12 17:31:40 | 显示全部楼层
本帖最后由 wangjb 于 2016-5-12 18:19 编辑
jishuang 发表于 2016-5-12 16:22
1.新建是否有修改了其他的地方,data设置的延迟加载,新增是树形的
  

我查看了一下,我是对“新建”操作做了修改,原来的新建操作的动作调用的是  {operation:'docNodeTree.newChild'}  ,
由于这种操作不能满足我的需求,所以我将新建操作做了修改,改成方法    button4Click,代码如下:
        // 景建波 新建目录
        Model.prototype.button4Click = function(event) {

                var docNodeTree = this.comp("docNodeTree");
                var docID = (new justep.UUID()).valueOf();
                var parentID = docNodeTree.getCurrentRowID();
                var options = {
                        defaultValues : [ {
                                "SA_DocNode" : docID,
                                "sParentID" : parentID
                        } ]
                };
                docNodeTree.newData(options);
                this.docNodeTreeIndexChanged();
                this.docNodeListIndexChanged();
               
        };




说明:newChild   是BIZDATA 的操作  Operations  ,我想直接调用,可是docNodeTree 不能访问,于是我使用了 newData  方法,所以出现了上面的问题。




我问一下,如何JS 调用BIZDATA 的操作  Operations   中提供的方法,比如 newChild   
还有一个问题:

文档中心的    保存   按钮的操作 {'operation':'docNodeTree.save'}      docNodeTree   的删除 操作deleteBtnClick  ,  docNodeTree 的  删除之后事件去掉


        // 景建波 添加 删除目录
        Model.prototype.deleteBtnClick = function(event) {
                this.deleteDocOrDir('docNodeTree');
        };
        // 景建波 添加 删除目录或者文档
        Model.prototype.deleteDocOrDir = function(data) {
                if (confirm('是否删除数据?')) {
                       
                        var docNodeList = this.comp(data);
                        var fileID = docNodeList.getValue("sFileID");
                        var docPath = docNodeList.getValue("sDocPath");
                        var version = docNodeList.getValue("version");
                        var docVersionID = docNodeList.getValue("sDocLiveVersionID");
                        var docName = docNodeList.getValue("sDocName");
                        var kind = docNodeList.getValue("sKind");
                        var size = docNodeList.getValue("sSize");
                        var parent_id = docNodeList.getValue("sParentID");
                        var sDocDisplayPath = docNodeList.getValue("sDocDisplayPath");
                        var sDescription = docNodeList.getValue("sDescription");
                        var sClassification = docNodeList.getValue("sClassification");
                        var sKeywords = docNodeList.getValue("sKeywords");
                        var sFinishTime = docNodeList.getValue("sFinishTime");
                        var sDocSerialNumber = docNodeList.getValue("sDocSerialNumber");

                        // 景建波 判断是否被别人锁住
                        var cacheInfo = DocUtils.InnerUtils.queryDocCache(docNodeList.getCurrentRowID());
                        if (cacheInfo.isLockSuccess == "failure") {
                                alert("该文件正在被别人编辑,您不能删除,只能浏览最新版本");
                                return;
                        }

                        var changeLog = {
                                items : [],
                                autoCreateVersion : true,
                                "operate" : "",
                                "url" : ""
                        };
                       
                        DocUtils.InnerUtils.addChangeLog(changeLog, "delete", [ docNodeList.getCurrentRowID(), version, fileID, docVersionID, docName, kind, size, parent_id, docPath, sDocDisplayPath,
                                        sDescription, sClassification, sKeywords, sFinishTime, sDocSerialNumber ], undefined, undefined, this.getContext());
                        DocUtils.InnerUtils.deleteDocAction(changeLog, null, this.getContext());
               
            var jjb=docNodeList.getCurrentRow();
                        var confirmDelete = docNodeList.confirmDelete;
                var directDeleteMode = docNodeList.directDeleteMode;
                        try {
                                docNodeList.confirmDelete = false;
                       
                                docNodeList.deleteData(docNodeList.getCurrentRow());
                                docNodeList.deleteDatas.pop(jjb);
                        } finally {
                                docNodeList.confirmDelete = confirmDelete;
                       
                        }
               
                        docNodeList.remove(jjb);
                }
        };



当点击删除按钮时,代码执行到 docNodeList.deleteData(docNodeList.getCurrentRow());  时,   保存按钮高亮(由于代码执行到这,后台已经将该目录从数据库中删除,所以不需要高亮,不需要再保存),此时发现docNodeList.deleteDatas  里出现一条记录 (我以为是因为这条记录导致保存按钮高亮), 于是执行了 docNodeList.deleteDatas.pop(jjb);    将删除的记录清除,此时docNodeList.deleteDatas  里的记录为零,结果发发现 保存按钮依然是高亮的


请问:保存按钮 高亮能操作 是由什么引起的?如何改变这个操作?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-5-12 19:10:24 | 显示全部楼层
1.新建子
var data = this.comp("treeData");
                var parent = data.getCurrentRow();
                data.newData({parent:parent});

2.保存是根据当前行的状态控制的,除了none状态其他的状态(delete、new、edit)都是可以保存的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
 楼主| 发表于 2016-5-13 15:10:16 | 显示全部楼层
jishuang 发表于 2016-5-12 19:10
1.新建子
var data = this.comp("treeData");
                var parent = data.getCurrentRow();

2.保存是根据当前行的状态控制的,除了none状态其他的状态(delete、new、edit)都是可以保存的


这个我说hi知道的,你没明白我的意思,我的意思是:看代码


      。。。。。。
            var jjb=docNodeList.getCurrentRow();   //
                        var confirmDelete = docNodeList.confirmDelete;
                var directDeleteMode = docNodeList.directDeleteMode;
                        try {
                                docNodeList.confirmDelete = false;
                        
                                docNodeList.deleteData(docNodeList.getCurrentRow());   //   说明1
                                docNodeList.deleteDatas.pop(jjb);  //  说明2
                        } finally {
                                docNodeList.confirmDelete = confirmDelete;
                        
                        }
               
                        docNodeList.remove(jjb);//   说明3
       。。。。。
对代码说明: 在执行删除操作前,保存按钮是灰色的。当点击删除按钮后,代码执行了 "说明1 "  代码处将当前行删除,此时该行的状态已经是   delete   , 此时被删除的这行已经在  可观察数组  deleteDatas  中,此时如果保存的话,是会触发后台进行数据保存的,但
在执行了“说明2”处代码,对刚才删除的行进行了出栈操作,此时点  保存是不会触发后台操作的,因为已经 没有了要删除的操作数据了,在执行了 “说明3” 后,刚才执行删除的数据行已经在BIDATA 中被清除了,此时行都被清除了,更别谈 行的状态了,为什么  保存按钮 依然是高亮的,应该是灰色的,因为没有任何需要可以保存的数据了!
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-5-13 16:27:00 | 显示全部楼层
平台默认的保存按钮关联的是docNodeTree这个data的


docNodeList删除自己加了保存按钮吗?
remove有缺陷,不执行remove保存按钮的状态正确吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-24 14:56 , Processed in 0.096775 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表