二开案例.表单插件.动态文本

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

二开案例.表单插件.动态文本

【应用场景】

<1>表达式编辑器。例如:{字段1}={字段2}+{字段3}

<2>条件编辑器。例如:{字段1}=true

<3>内容编辑器。例如:您的采购订单{单据编号}已审核通过,请及时查看。

运行时,可通过对动态文本内容进行解析,把花括号里面的内容替换成真实数据后,即可得到运行时的真实文本。

该字段目前主要应用于工作流模块的流程设计中心里的审批动作设置里的审批任务的标题和内容。


【案例演示】

采购订单,新增动态文本字段,绑定动态文本可输入项,生成动态文本内容,通过插件读写字段的值。

上传图片



【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【表单插件】动态文本
    /// </summary>
    [Description("【表单插件】动态文本"), HotUpdate]
    public class DynamicTextFieldFormPlugIn : AbstractDynamicFormPlugIn
    {
        /// <summary>
        /// 字段标识
        /// </summary>
        const string FieldKey = "F_Jac_DynamicText";
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            var field = (TextField) this.View.BillBusinessInfo.GetField(FieldKey);
            var fieldAppearance = (WorkflowDynamicTextAppearance) this.View.LayoutInfo.GetAppearance(FieldKey);
            if (e.BarItemKey.EqualsIgnoreCase("test1"))
            {
                // 赋值
                this.Model.SetValue(FieldKey, "abcdefg");
                return;
            }
            if (e.BarItemKey.EqualsIgnoreCase("test2"))
            {
                // 取值
                var value = this.Model.GetValue(FieldKey) as string;
                string msg = string.Format("动态文本字段的值:{0}", value);
                this.View.ShowMessage(msg);
                return;
            }
            if (e.BarItemKey.EqualsIgnoreCase("test3"))
            {
                // 锁定
                this.View.GetControl(FieldKey).Enabled = false;
                return;
            }
            if (e.BarItemKey.EqualsIgnoreCase("test4"))
            {
                // 解锁
                this.View.GetControl(FieldKey).Enabled = true;
                return;
            }
            if (e.BarItemKey.EqualsIgnoreCase("test5"))
            {
                // 隐藏
                this.View.GetControl(FieldKey).Visible = false;
                return;
            }
            if (e.BarItemKey.EqualsIgnoreCase("test6"))
            {
                // 显示
                this.View.GetControl(FieldKey).Visible = true;
                return;
            }
        }
        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);
            SetDynamicTextData();
        }
        /// <summary>
        /// 设置动态文本数据源
        /// </summary>
        private void SetDynamicTextData()
        {
            // 动态文本数据源
            var dataArray = new JSONArray();
            var itemarray = new JSONArray();
            // 第一个元素:变量类型,对应下拉列表第三列
            // 第二个元素:变量编码,对应下拉列表第一列
            // 第三个元素:变量名称,对应下拉列表第二列
            // 第四个元素:变量ID,不可见
            #region 系统变量
            itemarray = new JSONArray();
            itemarray.Add("系统变量");
            itemarray.Add("CurrentDate");
            itemarray.Add("当前日期");
            itemarray.Add("CurrentDate");
            dataArray.Add(itemarray);
            itemarray = new JSONArray();
            itemarray.Add("系统变量");
            itemarray.Add("CurrentUser");
            itemarray.Add("当前用户");
            itemarray.Add("CurrentUser");
            dataArray.Add(itemarray);
            #endregion
            #region 流程变量
            itemarray = new JSONArray();
            itemarray.Add("流程变量");
            itemarray.Add("FormName");
            itemarray.Add("入口单据名称");
            itemarray.Add("FormName");
            dataArray.Add(itemarray);
            itemarray = new JSONArray();
            itemarray.Add("流程变量");
            itemarray.Add("TargetFormName");
            itemarray.Add("目标单据名称");
            itemarray.Add("TargetFormName");
            dataArray.Add(itemarray);
            #endregion
            #region 节点变量
            itemarray = new JSONArray();
            itemarray.Add("节点变量");
            itemarray.Add("AssignResult");
            itemarray.Add("审批结果");
            itemarray.Add("AssignResult");
            dataArray.Add(itemarray);
            itemarray = new JSONArray();
            itemarray.Add("节点变量");
            itemarray.Add("Disposition");
            itemarray.Add("审批意见");
            itemarray.Add("Disposition");
            dataArray.Add(itemarray);
            #endregion
            #region 流程信息
            itemarray = new JSONArray();
            itemarray.Add("流程信息");
            itemarray.Add("ProcName");
            itemarray.Add("流程名称");
            itemarray.Add("ProcName");
            dataArray.Add(itemarray);
            itemarray = new JSONArray();
            itemarray.Add("流程信息");
            itemarray.Add("CurrentActivityName");
            itemarray.Add("节点名称");
            itemarray.Add("CurrentActivityName");
            dataArray.Add(itemarray);
            #endregion
            #region 单据字段
            foreach (var entity in this.View.BillBusinessInfo.Entrys)
            {
                foreach (var field in entity.Fields)
                {
                    if (field is ProxyField
                        || field is ImageField
                        || field is MulAssistantField
                        || field is MulBaseDataField
                        || string.IsNullOrEmpty(field.FieldName)
                        || (field is BaseDataField) && ((field as BaseDataField).LookUpObject == null))
                    {
                        continue;
                    }
                    itemarray = new JSONArray();
                    itemarray.Add("单据字段");
                    itemarray.Add(field.Key);
                    itemarray.Add(string.Format("{0}.{1}", entity.Name, field.Name));
                    itemarray.Add(field.Key);
                    dataArray.Add(itemarray);
                }
            }
            #endregion
            this.View.GetControl(FieldKey).SetCustomPropertyValue("Data", dataArray);
        }
    }
}



<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。

上传图片


<3>BOSIDE扩展采购订单,新增动态文本字段,菜单集合新增菜单项,注册表单插件,保存元数据,开发完毕。

上传图片

上传图片



【功能验证】

<1>登录业务站点,打开采购订单新增界面,动态文本输入框中,输入左花括号,效果如下图。

上传图片

上传图片

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.表单插件.动态文本

【应用场景】<1>表达式编辑器。例如:{字段1}={字段2}+{字段3}<2>条件编辑器。例如:{字段1}=true<3>内容编辑器。例如:您的采购订单{单据...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息