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中,如果需要调整单元格格式,需要点击工具栏的单元格格式按钮,然后从弹出的模态窗中选择需要调整的格式。整...
点击下载文档
本文2024-09-23 00:41:44发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141128.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章