From e7c7014299c88ee49a7aa020ecad81658ddfde96 Mon Sep 17 00:00:00 2001 From: colin Date: Fri, 17 Oct 2025 10:52:42 +0800 Subject: [PATCH] feat(wechat): Optimize the option control --- .../Approvals/Models/SelectorControlConfig.cs | 125 +++++++++++++++++- .../Approvals/Models/SelectorControlValue.cs | 40 +++++- 2 files changed, 158 insertions(+), 7 deletions(-) diff --git a/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlConfig.cs b/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlConfig.cs index c4e695e4c..84ff4ff96 100644 --- a/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlConfig.cs +++ b/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlConfig.cs @@ -43,32 +43,58 @@ public class SelectorConfig [JsonProperty("options")] [JsonPropertyName("options")] public List Options { get; set; } + /// + /// 关联控件 + /// + [NotNull] + [JsonProperty("op_relations")] + [JsonPropertyName("op_relations")] + public List OptionRelations { get; set; } + /// + /// 关联外部选项 + /// + [NotNull] + [JsonProperty("external_option")] + [JsonPropertyName("external_option")] + public SelectorOptionExternal ExternalOption { get; set; } public SelectorConfig() { } - private SelectorConfig(string type, List options) + private SelectorConfig( + string type, + List options, + List optionRelations = null, + SelectorOptionExternal optionExternal = null) { Type = type; Options = options; + OptionRelations = optionRelations; + ExternalOption = optionExternal; } - public static SelectorConfig Single(List options) + public static SelectorConfig Single( + List options, + List optionRelations = null, + SelectorOptionExternal optionExternal = null) { - return new SelectorConfig("single", options); + return new SelectorConfig("single", options, optionRelations, optionExternal); } - public static SelectorConfig Multiple(List options) + public static SelectorConfig Multiple( + List options, + List optionRelations = null, + SelectorOptionExternal optionExternal = null) { - return new SelectorConfig("multi", options); + return new SelectorConfig("multi", options, optionRelations, optionExternal); } } public class SelectorOption { /// - /// 时间展示类型:day-日期;hour-日期+时间 ,和对应模板控件属性一致 + /// 选项key /// [NotNull] [JsonProperty("key")] @@ -119,4 +145,91 @@ public class SelectorOptionValue Text = text; Lang = lang; } +} + +public class SelectorOptionRelation +{ + /// + /// 选项key + /// + [NotNull] + [JsonProperty("key")] + [JsonPropertyName("key")] + public string Key { get; set; } + /// + /// 关联控件列表 + /// + [NotNull] + [JsonProperty("relation_list")] + [JsonPropertyName("relation_list")] + public List Relations { get; set; } + public SelectorOptionRelation() + { + + } + + public SelectorOptionRelation(string key, List relations) + { + Key = key; + Relations = relations; + } +} + +public class SelectorRelation +{ + /// + /// 控件Id + /// + [NotNull] + [JsonProperty("related_control_id")] + [JsonPropertyName("related_control_id")] + public string ControlId { get; set; } + /// + /// 操作方法 + /// + /// + /// 1 - 显示对应控件 + /// + [NotNull] + [JsonProperty("action")] + [JsonPropertyName("action")] + public int Action { get; set; } + public SelectorRelation() + { + + } + + public SelectorRelation(string controlId, int action = 1) + { + ControlId = controlId; + Action = action; + } +} + +public class SelectorOptionExternal +{ + /// + /// 关联外部选项 + /// + [NotNull] + [JsonProperty("use_external_option")] + [JsonPropertyName("use_external_option")] + public bool UseExternalOption { get; set; } + /// + /// 外部选项页面地址 + /// + [NotNull] + [JsonProperty("external_url")] + [JsonPropertyName("external_url")] + public string ExternalUrl { get; set; } + public SelectorOptionExternal() + { + + } + + public SelectorOptionExternal(string externalUrl) + { + ExternalUrl = externalUrl; + UseExternalOption = true; + } } \ No newline at end of file diff --git a/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlValue.cs b/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlValue.cs index 15a616c97..e56e0ae60 100644 --- a/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlValue.cs +++ b/aspnet-core/framework/wechat/LINGYUN.Abp.WeChat.Work/LINGYUN/Abp/WeChat/Work/Approvals/Models/SelectorControlValue.cs @@ -1,6 +1,7 @@ using JetBrains.Annotations; using Newtonsoft.Json; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Text.Json.Serialization; namespace LINGYUN.Abp.WeChat.Work.Approvals.Models; @@ -83,13 +84,50 @@ public class SelectorValueOption [JsonProperty("key")] [JsonPropertyName("key")] public string Key { get; set; } + /// + /// 选项值,若配置了多语言则会包含中英文的选项值 + /// + [NotNull] + [JsonProperty("key")] + [JsonPropertyName("key")] + public List Value { get; set; } public SelectorValueOption() { } - public SelectorValueOption(string key) + public SelectorValueOption(string key, List value) { Key = key; + Value = value; + } +} + +public class SelectorValueOptionValue +{ + /// + /// 选项值 + /// + [NotNull] + [StringLength(40)] + [JsonProperty("text")] + [JsonPropertyName("text")] + public string Text { get; set; } + /// + /// 多语言名称 + /// + [NotNull] + [JsonProperty("lang")] + [JsonPropertyName("lang")] + public string Lang { get; set; } + public SelectorValueOptionValue() + { + + } + + public SelectorValueOptionValue(string text, string lang = "zh_CN") + { + Text = text; + Lang = lang; } } \ No newline at end of file