Spread工具栏新特性-单元格格式交互优化、二开扩展性增强

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

Spread工具栏新特性-单元格格式交互优化、二开扩展性增强

# 用户场景 在旧版本的Spread中,如果需要调整单元格格式,需要点击工具栏的单元格格式按钮,然后从弹出的模态窗中选择需要调整的格式。整个过程比较繁琐,作为一个常用的功能,这样的交互带给用户的体验是非常不好的,因此,需要调整该功能的整体交互逻辑,将使用频率较高的百分数、千分位等功能提升到工具栏中,其余使用频率较低的如时间、日期等功能以下拉列表形式展示。 除此之外,业务的小伙伴还想要自行扩展工具栏,比如添加自定义按钮、工具栏按钮分组等等、本次更新我们也实现了这部分功能,今后业务的小伙伴可以定制专属于你们的Spread工具栏啦~ # 功能介绍 ## 1、设置单元格格式 常用的几个功能,百分比、千分位、增加/减少小数位数平铺在工具栏中,方便进行快速的单元格格式设置。下拉列表中则是部分使用频率较低的单元格格式,包含货币、时间、日期等,覆盖了大部分的使用场景。需要注意的是,增加/减少小数点只有在格式设置为数值、货币、会计专用、百分比时才可进行设置,否则无效。 ![image.webp](/download/010026422cdb4970490b81f6cb0e44b8493b.webp) 单元格中设置的格式,下拉列表也会实时更新显示,如A单元格设置为日期,则下拉列表中选中的便是日期,B单元格设置的为货币,跳转到B单元格时,下拉列表自动选中货币。若无设置,默认显示为常规。 ![image.webp](/download/0100f3cdf1725da0490f9dcc770e8a074238.webp) 若需进行更多自定义的设置,我们保留了原有的弹窗设置,点击下拉列表的自定义便可以进行更加客制化的设置 ![image.webp](/download/0100c7f5d10f25cb4226a2a06c3225c71448.webp) ## 2、二开-添加自定义按钮 业务的小伙伴进行二开时,常常需要添加一些专属于业务的自定义按钮,在以往的Spread版本是不支持添加自定义按钮的,如果业务需要添加,也只能添加到工具栏控件中,无法添加到Spread控件中。本次更新后,Spread工具栏可以通过指令的方式进行自定义按钮的添加啦,业务可以自行选择添加按钮或者下拉菜单 添加自定义按钮时,业务小伙伴可以自行配置参数,显示的图标、是否显示文字等等,给予二开极高的自由度 ![image.webp](/download/0100e6d209c46e984b7ea38baa16c5f84ebd.webp) 添加自定义按钮时,还支持将按钮添加到现有的下拉菜单中,比如,我现在想要在检查公式的下拉菜单里面添加一个自定义功能,便可以通过指令的方式添加 ![image.webp](/download/010049b3fa0e090a402da703c7675d91ad14.webp) ## 3.、二开-隐藏/锁定特定按钮 既然支持添加自定义按钮,我们当然也支持隐藏按钮啦。业务的小伙伴同样可以通过指令的方式对现有的按钮(包括自定义添加的按钮、二级下拉菜单中的按钮)进行隐藏或者锁定。既可以同时锁定全部的按钮,也可以只单独锁定某一个按钮。例如,我现在想要把检查公式下拉菜单中的按钮隐藏,并将新添加的自定义按钮锁定 ![image.webp](/download/01003d6e7093e4c14d878c4b5c062f178140.webp) ## 4、二开-工具栏支持分组 以往的Spread工具栏中,所有的功能都在一排,无论是否功能相关,这个对于用户体验实际上并不好,查找功能时没有那么便捷。类似于Excel、WPS等表格工具,都有将功能按照不同种类进行分组。因此,我们也支持了二开扩展进行工具栏分组。工具栏分组提供了最为自由的定制化方案,二开可以通过指令的方式对默认功能、自定义功能进行分组、排列、锁定以及隐藏等等。比如我可以将常用的功能放在常规分组下,将编辑相关的功能放在编辑分组下,将前进、撤销功能前置等等,工具栏分组都可以实现 ![image.webp](/download/010082fb5dcef83d4487b85c63477f6254ea.webp) # 适用版本 金蝶云苍穹BOS_V5.0.013及以上 # 实现代码 ## 1、二开-添加自定义按钮 ```java public void addFormulaToolsBar() { List<Map<String, Object>> lstMap = new ArrayList<>(); Map<String, Object> map = new HashMap<>(); map.put("key", "LockCells"); map.put("icon", "kdfont kdfont-suoding"); map.put("group", "editReport"); map.put("title", ""); map.put("index", "0"); List<Map<String, Object>> lst = new ArrayList<>(); Map<String, Object> mapDetail2 = new HashMap<>(); mapDetail2.put("title", ResManager.loadKDString("锁定含公式的单元格", "SpreadRptBasePlugin_26", "fi-rptcommon")); mapDetail2.put("callback", "invokeAction"); mapDetail2.put("invokeAction", "lockHasFormulaCells"); mapDetail2.put("key", "lockHasFormulaCells"); mapDetail2.put("icon", ""); mapDetail2.put("showTitle", true); lst.add(mapDetail2); Map<String, Object> mapDetail3 = new HashMap<>(); mapDetail3.put("title", ResManager.loadKDString("解锁含公式的单元格", "SpreadRptBasePlugin_27", "fi-rptcommon")); mapDetail3.put("callback", "invokeAction"); mapDetail3.put("invokeAction", "unLockHasFormulaCells"); mapDetail3.put("key", "unLockHasFormulaCells"); mapDetail3.put("icon", ""); mapDetail3.put("showTitle", true); lst.add(mapDetail3); map.put("item", lst); lstMap.add(map); IClientViewProxy iClientViewProxy = this.getView().getService(IClientViewProxy.class); SpreadClientInvoker.invokeMethod(iClientViewProxy, "addToolbarItems", SPREAD_KEY, lstMap); } ``` ## 2、二开-隐藏/锁定特定按钮 ```java public void lockToolBars(IClientViewProxy iClientViewProxy, boolean isLock) { //锁定整个工具栏 Map<String, Object> lockMap = new HashMap<>(); if (isLock) { lockMap.put("isLock", true); } else { lockMap.put("isLock", false); } lockMap.put("allowSingleUnlock", true); SpreadClientInvoker.invokeMethod(iClientViewProxy, "lockToolbarItems", SPREAD_KEY, lockMap); } ``` ## 3、二开-工具栏支持分组 ```java public List<Map<String, Object>> setEditReportToolbarGroups() { List<Map<String, Object>> lstMap = new ArrayList<>(); //编辑 Map<String, Object> map1 = new HashMap<>(); map1.put("name", ResManager.loadKDString("编辑", "SpreadRptBasePlugin_24", "fi-rptcommon")); map1.put("key", "editReport"); List<Map<String, Object>> lst1 = new ArrayList<>(); lst1.add(MapInitHelper.ofMap("key", "InsertRowAndCol")); lst1.add(MapInitHelper.ofMap("key", "FrozenSheets")); lst1.add(MapInitHelper.ofMap("key", "LockCells")); lst1.add(MapInitHelper.ofMap("key", "Setting")); map1.put("toolbarItems", lst1); lstMap.add(map1); return lstMap; } public void setToolbarGroups() { List<Map<String, Object>> lstMap = new ArrayList<>(20); List<Map<String, Object>> lstMap2 = setEditReportToolbarGroups(); for (Map<String, Object> map2 : lstMap2) { lstMap.add(map2); } IClientViewProxy iClientViewProxy = this.getView().getService(IClientViewProxy.class); SpreadClientInvoker.invokeMethod(iClientViewProxy, "setToolbarGroups", 'template_spread', lstMap); } ```

Spread工具栏新特性-单元格格式交互优化、二开扩展性增强

# 用户场景在旧版本的Spread中,如果需要调整单元格格式,需要点击工具栏的单元格格式按钮,然后从弹出的模态窗中选择需要调整的格式。整...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息