泉州xx前端平台支持方案备忘

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

泉州xx前端平台支持方案备忘

上次编辑于2019年8月27日 17:30:59


泉州xx前端平台支持方案备忘:

(已在2019-01-24发布正式7.3第一个补丁 PT131268 中包含以下所有内容)
已发基于2018-10-26 PT128132 的临时补丁  【TempPatch_V7_BOS.7.0.553.5.kdpkg】  ,ClientVersion【7.2.983.9】 )

一、录入焦点跳转问题】方案:通过为单据体增加【指定焦点跳转模式】功能来实现具体某个单据的录入跳转的流畅体验(需要简单的插件二开Python即可)
--二开方法指引,  【表单业务插件】 : 
from Kingdee.BOS.JSON import *
def AfterBindData(e):
    #切换表格录入光标导航为服务端指定字段模式
    navCellOpts = JSONObject()
    #设置回车跳转模式为指定字段模式【specfields】
    #参数fields:导航字段列表,格式: 字段1,字段2,字段3,字段4,...,字段n

    navCellOpts["mode"] = "specfields"  

    #【 clientAuto】模式下,不需要指定字段,会在可编辑列之间自动跳转(动态锁定的除外)

    #设置字段的跳转顺序,如果字段在界面上不可见,就不要设置上去。否则会把光标跳没了。
    navCellOpts["fields"] = "FMATERIALID,FUNITID,FQTY,FPURNUMBER,FPRICEUNITID,FPRICEUNITQTY" 
    #设置是否为强制由服务器控制
    navCellOpts["isServerControl"] = False
    #在客户端跳转情况下(isServerControl=False才有效),个别字段可以设置为强制由服务器控制,如果全部无需服务端控制就不用设置
    #navCellOpts["ctrlBySvrFields"] = "FMATERIALID,FQTY,FPRICEUNITQTY"
    #参数autoChangeRow:自动跳下一行

    navCellOpts["autoChangeRow"] = True   
    #客户端跳转延迟ms数(isServerControl=False才有效)    
    navCellOpts["clientDelay"] =100
    #写入单据体参数
    this.View.GetControl("FPOOrderEntry").InvokeControlMethod("SpecNextFields", navCellOpts)
    #过于频繁的无必要事件要关闭,否则影响界面效率
    this.View.GetControl("FPOOrderEntry").SetCustomPropertyValue("FireCellSelectChangeEvent", False)

def CustomEvents(e):
    #通知客户端可以跳下个字段了 e.Key必须全大写
    if(e.Key=="FPOOrderEntry" and e.EventName=="Kingdee.BOS.Grid.SpecNavTo"):

        this.View.GetControl("FPOOrderEntry").InvokeControlMethod("SpecToNextField", None)

解决问题说明】原来的单据体回车跳转模式和人工指定字段回车跳转模式:
1、原来的跳转是不等服务端操作的响应,这时如果直接跳转会导致录入数据被比较慢的服务器返回数据覆盖,或者要跳转字段被更新或锁定,导致基础资料要敲两次回车;
2、现在这种人工指定模式是一定要等服务器返回才跳转,这样就不会有录入数据被服务器覆盖的风险,也不会存在需要敲两次回车的问题;
人工指定模式:录入[物料]-》回车-》服务的返回该行数据包括[数量]初始值,更新[单据体]字段-》跳转 [数量]-》录入50-》回车-》然后服务计算返回,更新[单据体]字段-》跳转下一个字段。
但说到底,都是服务器返回比录入操作慢。这个控制好服务器返回再0.5秒以内,应该就感受不到了;


二、组合显示字段的表头对齐问题】方案:通过增加【列头标题对齐设置】功能来实现插件制定列左右对其方式和标题的修改(需要简单的插件二开Python即可--预研基本可行--预计放入下个补丁)
--二开方法指引,  【表单业务插件】 : 
from Kingdee.BOS.JSON import *
def AfterBindData(e):
    #设置列标题对齐方式和列标题文本
    job = JSONObject()
    job["key"] = "FUNSHOWDESCRIPT"
    job["headeralignment"] = "left"
    job["header"] = "订单日期              |计划跟踪号               |客户                                                                 |物料"
    this.View.GetControl("FDetailEntity").InvokeControlMethod("UpdateFieldStates", job)
    job = JSONObject()
    job["key"] = "FSHOWDESCRIPT2"
    job["headeralignment"] = "left"
    job["header"] = "瓦型                 |长        *         宽                |订单数量                |生产纸板长         *         生产纸板宽"
    this.View.GetControl("FDetailEntity").InvokeControlMethod("UpdateFieldStates", job)

列标题.webp


三、纸板生产排程的滚动条性能渲染问题

方案:目前研究发现主要是使用的是编辑表格,并进行逐个单元格锁定,并且有较多比较重的列,例如数字列,选择框列,大部分时间都是WPF的元素渲染,优化空间比较小了;

目前方案通过增加一种light模式来实现快速展示,

需要牺牲点界面的“好看”:

* CheckBox的复选框简化为空和对勾,不支持原来的方框显示模式;

* 不支持一些偏门点的数字格式化功能,只支持区域格式化和普通的数字掩码;

* 不支持单元格自定义Tooltip的小红点提示功能;

* 按钮列仅提供文字,并以手形鼠标提示,有按钮事件,不支持按钮外观等;

* 如上等一些美化和高级的展示都会进行削减或不支持。


--二开方法指引,  【表单业务插件】 : 
from Kingdee.BOS.JSON import *
def AfterBindData(e):
    #切换只读单元格为light轻模式
    cellMode = JSONObject()
    cellMode["mode"] = "light"
    this.View.GetControl("FDetailEntity").InvokeControlMethod("SetReadOnlyCellModel", cellMode)

cellLightMode.webp


--优化结果对比:
纸板生产排单 154行,单据体可见26行21列,7定制格式数字,7选择框列
全模式                         :打开 8.2秒,服务端取数1秒,翻页4.25秒,第二次3..87秒
全模式二级缓存优化        :打开 7秒(up 14.6%),服务端取数1秒,翻页4.00秒(up 5.88%),第二次3.87秒( up 0%)
light模式+二级缓存        :打开 4.5秒(up 45%),服务端取数1秒,翻页1.5秒(up 64.7%),第二次1.6秒(up 53.6%)

ps: 图中复选框数据的勾选简化为字符 “”和 不勾选为空格字符;


四、纸板批量(设定了物料检索字段为材质)录入时,物料录入时的交互逻辑梳理
关于模糊查询列表的人机交互定义:
A、在鼠标选中模糊列表后,以选中的内码id获取数据;
B、在模糊列表里面通过键盘上下键选中后,以选中的内码id获取数据;
C、在模糊列表里面没有选中任何行,发界面录入数据到服务端,通过制定字段ByField/ByNumber事件匹配服务端设定或默认的检索依据字段,本例中是[材质]字段为检索匹配字段;
ps:1,2的意思就是:只要模糊查询列表里面选中了行,则以选中为准,不管你原来录入了什么。


五、新发现快速录入长宽等数字字段的时候,由于字段进入全选导致首字符丢失
指定跳转字段内解决这个问题,这个过程中有几个来回测试,确定如下方案:
    使用python代码编写二开插件
A、指定跳转字段,设置跳转延时clientDelay为100ms(默认插件用的是200ms这个会导致输入太快时首字符丢失。这个值最小为50ms);(问题1的解决方案)。
B、由于[纸板批量录入]需要快速录入,建议通过插件配置该单据体为light模式;(问题3的解决方案)。

1.webp

2.webp


  .

创建于2019年1月25日 13:44:25

泉州xx前端平台支持方案备忘

上次编辑于2019年8月27日 17:30:59泉州xx前端平台支持方案备忘:(已在2019-01-24发布正式7.3第一个补丁 PT131268 中包含以下所有内容)(...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息