工作台待办事项卡片使用小结原创
金蝶云社区-陶成
陶成
4人赞赏了该文章 774次浏览 未经作者许可,禁止转载编辑于2021年12月03日 10:18:13

       有一些朋友对我们工作台的待办事项卡片怎么使用和设置比较感兴趣,想参考待办事项的样式来进行二开的开发,现在这里做一些简单的使用介绍。


image.png


       1.首先,先做个测试单据,测试单据的结构比较简单,新建一个动态表单,外面放置一个充满的流式布局控件,然后里面放置一个面板,关系如下图。

image.png


      2.然后写我们的二开插件逻辑。注意看下代码注释逻辑

using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;

namespace Kingdee.BOS.Test.PlugIn.TestControls.Other
{
    [Description("待办事项卡片测试插件")]
    [HotUpdate]
    public class TodoListTestPlugin : AbstractDynamicFormPlugIn
    {
        private int TodoListCardCount = 6;//设置几张待办事项卡片

        public override void AfterBindData(EventArgs e)
        {
            //控件设置分为两步1.先设置待办事项的基本信息结构;
            //取到待办的数量之后通过id关联更新待办的取数,
            setBasicData();
            SetQuickViewData();
            base.AfterBindData(e);
        }

        /// <summary>
        /// 设置待办事项的基本结构
        /// </summary>
        private void setBasicData()
        {
            JSONArray _itemsBasicInfo = null;
            _itemsBasicInfo = getItems();
            JSONObject Items = new JSONObject();
            Items["items"] = _itemsBasicInfo;
            Items["maxLimit"] = 6;//控制做多显示多少个块
            Items["defforcecolor"] = "#7f93bc";//默认字体颜色
            Items["IsH5DataCard"] = false;
            Items["isH5SubSystemToDoListCard"] = false;
            Items["isPreView"] = false;
            this.View.GetControl("FQuickViewList").InvokeControlMethod("setItems", Items);
        }
        
        /// <summary>
        /// 获取单个事项的基本信息结构
        /// </summary>
        private JSONArray getItems(bool isPreView = false)
        {
            JSONArray itemLists = new JSONArray();
            JSONObject item;

            for (int i = 0; i < TodoListCardCount; i++)
            {
                item = new JSONObject();
                item["index"] = i;
                item["id"] = i;
                item["text"] = "text" + i;
                item["forname"] = "forname" + 1;
                item["viceText"] = "";
                item["enabled"] = true;
                item["cls"] = "";
                item["quickListClass"] = "kd-billcardlist-panel";// 使用了默认值
                item["icon"] = "";
                item["selected"] = true;
                itemLists.Add(item);
            }

            return itemLists;
        }

        /// <summary>
        /// 设置待办事项的数值
        /// </summary>
        public void SetQuickViewData()
        {
            JSONObject Items = new JSONObject();
            var items = getQuickViewsNumber();
            Items["items"] = items;
            //Items["maxLimit"] = _maxLimit;
            Items["defforcecolor"] = "#7f93bc";
            Items["IsH5DataCard"] = false;
            Items["isH5SubSystemToDoListCard"] = false;
            Items["isH5SmartMonitorMessageStatisticCard"] = true;
            this.View.GetControl("FQuickViewList").InvokeControlMethod("setItems", Items);
        }
        
        /// <summary>
        /// 获取方案数量
        /// </summary>
        /// <returns></returns>
        private JSONArray getQuickViewsNumber(FilterScheme schema = null, bool isRefresh = false)
        {
            JSONArray itemLists = new JSONArray();
            JSONObject item;
            for (int i = 0; i < TodoListCardCount; i++)
            {
                item = new JSONObject();
                item["id"] = i;//注意这里这个id用于更新数值,要和上面的id对应
                int listRowCount = i + 2;
                item["viceText"] = listRowCount;
                itemLists.Add(item);
            }

            return itemLists;
        }

        /// <summary>
        /// 点击事件处理
        /// </summary>
        /// <param name="e"></param>
        public override void NaviOperAction(NaviOperActionArgs e)
        {
            if (!string.IsNullOrWhiteSpace(e.SelectItemId))
            {
                // to do
            }

            base.NaviOperAction(e);
        }
    }
    
    [Description("待办事项卡片测试构建插件")]
    [HotUpdate]
    public class TodoListTestBuilderPlugin : AbstractDynamicWebFormBuilderPlugIn
    {
        public override void CreateControl(CreateControlEventArgs e)
        {
            string controlKey = e.ControlAppearance.Key;
            //更改控件类型
            if (controlKey.EqualsIgnoreCase("FQuickViewList"))
            {
                e.Control["xtype"] = "kdstdbizquickview";
            }
        }
    }
}


     3.动态表单分别绑定上面的表单插件和构建插件,然后重启IIS,即可实现一下如图效果。点击跳转会走插件的NaviOperAction方法,可以通过id区分是点击了那块的逻辑


image.png


以上就完成了待办事项卡片的开发

图标赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0