『贴代码』
技术分享
精选作品
优选问答
成长笔记
案例分享,使用PasteForm实现地区勾选功能
将妓就计 2025-09-06 6 0 0
地区选择,在商场系统中非常常见,比如不包邮地区,那些地区加邮费,加件加邮费等,一起来看看PpasteForm是如何处理这个问题的!

更多特性PasteForm的介绍,请前往PasteForm操作文档查看 PasteForm操作文档与介绍


需求分析

地区模块可以说很常见,也不太常见,如果是商城系统,这一块就免不了的!
首先要知道地区是有层级概念的,比如省-市-区等
1.如果勾选了省的,包含对应的市,甚至是区等,也就是向下包含

2.如果勾选的时候选择了市,然后又勾选了他的上级省,则这个市应该取消勾选,基于1
3.需要支持编辑和新增,也就是编辑的时候,需要能直接显示之前的选择

效果展示

我们以邮费模板为例
图片alt
点击编辑看看
图片alt

如果有多条规则,我们还可以点击添加
图片alt

预览详细

上面是配置一条邮费模板,看下详细的时候是咋样的
图片alt

Dto配置

看到上面的功能,有点多,一起来看看Dto中是如何配置特性的

    ///<summary>
    ///邮费模板
    ///</summary>
    [Description("邮费模板")]
    public class PostModelAddDto
    {

        ///<summary>
        ///名称 示例:三角区包邮
        ///</summary>
        [MaxLength(16)]
        [Required]
        [PasteMark("post", "name")]
        [Description("名称 示例:三角区包邮")]
        public string Name { get; set; }

        /// <summary>
        /// 说明 示例:三角区包邮,其他地区8元,偏远12元
        /// </summary>
        [MaxLength(512)]
        [Description("说明 示例:三角区包邮,其他地区8元,偏远12元")]
        public string AreaMark { get; set; } = "";

        ///<summary>
        ///排序 排序大的权重比较高,命中后终止
        ///</summary>
        [Description("排序 排序大的权重比较高,命中后终止")]
        public int Sort { get; set; }

        ///<summary>
        ///状态
        ///</summary>
        [Description("状态")]
        public bool IsEnable { get; set; } = true;

        /// <summary>
        /// 邮费规则
        /// </summary>
        [Description("邮费规则")]
        [PasteDirectsun]
        [PasteMark("post", "route")]
        public List<PostModelItemAddDto> Models { get; set; } = new List<PostModelItemAddDto>() { new PostModelItemAddDto { } };
    }

上面主要看邮费规则这个字段,注意PasteDirectsun有一个特性,如果当前字段有注释(title),后面版本改成从特性Description读取了,则在UI中会以分组的形式展示,否则就以默认字段的模式显示!
只有分组模式显示,你才可以添加更多(list一般是这种模式)!

再来看看地区和相关配置的Dto配置

    /// <summary>
    /// 
    /// </summary>
    public class PostModelItemBase
    {

        /// <summary>
        /// 名称 示例:偏远地区加邮费 最大32字符
        /// </summary>
        [MaxLength(32)]
        [PasteRequired]
        [PasteMark("post","itemname")]
        [Description("名称 示例:偏远地区加邮费")]
        public string Name { get; set; } = "";

        ///<summary>
        ///基础件数 表示多少件内
        ///</summary>
        [Description("基础件数 表示多少件内")]
        [PasteMark]
        public int FirstNumber { get; set; }

        ///<summary>
        ///基础邮费 基础件数内多少钱
        ///</summary>
        [PasteFenToYuan]
        [Description("基础邮费 基础件数内多少钱")]
        [PasteMark]
        public int BasicPrice { get; set; }

        ///<summary>
        ///增量数量 
        ///</summary>
        [Description("增量数量")]
        [PasteMark]
        public int AddSliceNum { get; set; }

        ///<summary>
        ///增量的邮费
        ///</summary>
        [PasteFenToYuan]
        [Description("增量的邮费")]
        [PasteMark]
        public int AddSlicePrice { get; set; }


    }


    ///<summary>
    ///
    ///</summary>
    public class PostModelItemAddDto : PostModelItemBase
    {


        /// <summary>
        /// 地区
        /// </summary>
        [PasteSunform("./area/index.html?atype=code", 420)]
        [PasteSort(10)]
        [Description("地区")]
        public List<AddressShort> address_infos { get; set; }

    }

上面关键在于PasteSunform,表示引入一个页面,这个页面是非PasteForm的,也就是需要自行实现!

上面已经是数据格式了,我们一起来看看编辑的时候,返回的数据格式是咋样的

编辑格式

对于PasteDirectsun特性,在信息上返回的一般是拆解后的格式,
比如
图片alt
注意看PasteDirectsun的内项addressinfos,这个返回是一个obj,也就是自定义页面中,系统会传入一个obj,实际前端获得信息后,会写入一个session本次存储,然后会给配置的页面一个session_key,用于读取这个缓存的信息!
对于PasteDirectsun则是会解析成\
_划分的多层级格式
比如上面的models__0__id,起始表示的就是第一个list的id字段!

area页面

对于地区选择等,你只要在pasteform文件夹下,找一下area这个文件夹就是了!

评论列表
将妓就计
0 6 0
快捷注册
热门推荐更多
PasteSpider
;
用户问答更多
07月份版本的内存占用比以前大了,也没有泄漏,啥情况?以前200MB,这个版本能到300MB
文档中的组织归属有些问题,啥时候看看,更新更新!
  • 已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!

PasteSpider的集群方式,我还是没太懂,啥时候出一个专题来讲解讲解?
  • b不难吧,就几个地址!

最新动态
  • 52.****.51 正在查看 PasteBuilder的进阶用法 !
  • 142.****.237 正在查看 项目列表页 !
  • 52.****.238 正在查看 文章列表页 !
  • 112.****.126 正在查看 案例分享,如果使用PasteForm实现商品的货品编辑模块 !
  • 52.****.16 正在查看 正在查看笔记:33 的详细信息 Page:1 ! !
  • 89.****.131 正在查看 主页spider !
  • 113.****.44 正在查看 在Docker中安装postgresql数据库! !
  • 216.****.99 正在查看 文章列表页 !
  • 8.****.5 正在查看 Document:spider !
  • 121.****.69 正在查看 免费SSL证书,自动续期配置,配合PasteSpider的路由策略,用得飞起 !
  • 180.****.250 正在查看 主页spider !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2