『PasteSpider』
最新文章
贴代码出品
热门话题
用户问答
lao人言
「搜索」
【本期话题】更多
三人寄语更多
测试没问题的不一定没问题,测试有问题的那肯定有问题!
点赞:2
抛开需求讲架构,和纸上谈兵无差!
点赞:1
谋而后动,往往会让你对自己的代码更具信心!
点赞:1
抛开需求谈架构是无意义的事情!
点赞:0
往往会为了一个项目,搭建适合他专属的脚手架!
点赞:1
慎用redis的同步我的意见是redis都走异步!!!
点赞:0
需求就是系统的千年杀,相爱相杀那种!
点赞:0
实际遇到的问题往往在那些视频课程中是不会出现的!
点赞:0
时间与空间总是在换来换去,鱼和熊掌往往不可同得!
点赞:0
在循环里面慎重的使用await!
点赞:0
贴代码框架PasteForm特性介绍之mark(标签,书签,字段说明)的支持
尘埃 2024-11-25 191 15 0
在表单页面中,我们往往会给某一个字段标记说明,如果每一个都要前端去标记会很麻烦,这个需求在贴代码PasteForm中是如和实现的? 你只需要在对应的字段标记特性mark即可,然后实现默认函数global_tap_mark,至于这个函数要执行打

简介

PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管理端只有Html+js版本的,后续将支持小程序,Vue等

案例源码

案例源码在

https://gitee.com/pastecode/paste-template

不定期升级

AllInDto!

通过引入PasteForm,一个项目哪怕100个数据表,一般的管理页面也才不到10个,除非有非常多的特殊功能,否则都能用PasteForm中的表格和表单来实现!

在这里插入图片描述

本次的特性介绍,涉及的东西会多一些,你可以下载源码后,看看详细的,我们先来查看下各个特性的信息

需求说明

对于管理端来说,操作文档说是必须的,又不一定是,即使你有操作文档,用户也不太会去翻翻文档,因为你当前看到的东西,你还得去文档找到对应的地方,这本身就有一定的操作性,懒!所以一般是没有用户去查看的,所以我们就需要引入一个类似书签一样的东西,比如你在填写字段年龄的时候,不知道这个是干嘛的,就需要可以有一个快捷操作,点击直接能查看!这就是mark特性的由来!

mark

字段详细说明,或者是文档,这里是做一个描点,需要使用公共函数自己实现具体的要求,一般的是项目下面的模块的某一个字段的说明,一个项目往往这个是一样的,然后就是哪个模块的哪个字段,所以有2个字段
会在title后面生成一个span class=”tapmark” onclick=”global_tap_mark(_modek,_code)”;

字段 类型 示例 说明
args1 字符 product 一般作为模块使用,比如商品的这个模块,如果不填直接使用本页面的calssPath
args2 字符 code 模块下的一个字段的说明,比如code这个字段的用法,案例说明等,如果不填写则使用当前字段名称

如上所言,点击对应的?图标后,需要系统自我实现函数global_tap_mark,否则会提示找不到这个函数!

实际案例

在PasteSpider的后台中,有如下的信息
在这里插入图片描述
也就是在需要注释的地方做一个mark特性标记即可,如果是PasteSpider的,点击后会打开一个网页,网页会转到对应的文档说明处(页面的打开后转到描点)
比如我点击上面的“代码”后面的?,则会打开网页

https://soft.pastecode.cn/BookMark/spider/service/code#spider-service-code

在这里插入图片描述
直接就转到对应的信息中了!

Dto如何做特性标注

    /// <summary>
    /// 
    /// </summary>
    public class ServiceInfoAddDto
    {

        ///<summary>
        ///项目
        ///</summary>
        [Required]
        [ColumnDataType("outer", "projectInfo", "", "id", "name")]
        [ColumnDataType("query","projectid")]
        public int ProjectId { get; set; }

        ///<summary>
        ///代码 用于镜像前缀,示例api,注意需要是小写
        ///</summary>
        [ColumnDataType("mark","service","code")]
        [RegularExpression("^[a-z][a-z,0-9]{2,7}$", ErrorMessage = "代码必须小写开头,允许输入小写字母和数字,不能为空!")]
        [MaxLength(16)]
        [Required]
        public string Code { get; set; }

        // 其他字段这里做隐藏

        ///<summary>
        ///监听端口 这里指的是你的服务的端口,一般为80,这个要看开发启动服务的时候监听哪个,支持多个,用英文逗号隔开示例80,443
        ///</summary>
        [MaxLength(128)]
        [ColumnDataType("mark", "service", "listenport")]
        public string ListenPorts { get; set; } = "80";

        ///<summary>
        ///启动参数 示例-p_8000:80
        ///</summary>
        [ColumnDataType("textarea")]
        [ColumnDataType("mark", "service", "actioncommand")]
        public string OtherArgs { get; set; }

        ///<summary>
        ///执行参数 示例node_server.js
        ///</summary>
        [ColumnDataType("textarea")]
        [ColumnDataType("mark", "service", "runcommand")]
        public string EnvironmentArgs { get; set; }

        /// <summary>
        /// 参数一 用于启动变量用
        /// </summary>
        [MaxLength(128)]
        [ColumnDataType("text")]
        [ColumnDataType("mark", "service", "argsx")]
        public string Args1 { get; set; } = "";

        /// <summary>
        /// 参数二 用于启动变量用
        /// </summary>
        [MaxLength(128)]
        [ColumnDataType("text")]
        [ColumnDataType("mark", "service", "argsx")]
        public string Args2 { get; set; } = "";

        /// <summary>
        /// 参数三 用于启动变量用
        /// </summary>
        [MaxLength(128)]
        [ColumnDataType("text")]
        [ColumnDataType("mark", "service", "argsx")]
        public string Args3 { get; set; } = "";

    }

如上所示,约定书签分3个层级,最高是软件,比如你的商城系统和客服系统的操作文档不会写一块去吧,然后是分模块,最后是点,比如商城系统中-订单-的支付金额 这个字段的说明!

附加信息

view.html中的代码

                        <% if(item.title){ %>
                            <label class="form-label"><%:=item.title%><%if(item.mark){%><span class="tapmark" onclick="global_tap_mark('<%:=item.mark.model%>','<%:=item.mark.value%>')">?</span><%}%><%if(item.required){%><span class="form-required">*</span><%}%></label>
                        <% }else{ %>
                            <label class="form-label-empty"></label>
                        <% } %>

对应的js其实很简单,只是读取这个特性,然后赋值

                    case "mark":
                        {
                            var _mark={
                                model:_classPath,
                                value:item.name
                            };
                            if(_attribute.args1){
                                _mark.model = _attribute.args1;
                            }
                            if(_attribute.args2){
                                _mark.value = _attribute.args2;
                            }
                            item.mark =_mark;
                        }
                        break;

更多特性见

贴代码PasteForm专题介绍

我们下期见!

评论列表
尘埃
15 191 0
快捷注册
热门推荐更多
PasteBuilder代码生成器
;
最新动态
  • 120.****.201 正在查看 PasteSpider之--路由列表-私有仓库-环境配置-的介绍 !
  • 61.****.144 正在查看 PasteSpider更新摘要,持续更新 !
  • 201.****.216 正在查看 PasteForm中,表格的不一样的样式的设定? !
  • 170.****.57 正在查看 Redis的安装 !
  • 99.****.129 正在查看 贴代码框架PasteForm特性介绍之mark(标签,书签,字段说明)的支持 !
  • 189.****.205 正在查看 开发者专用Linux容器部署工具PasteSpider(K8S,Jenkins,CICD)介绍 !
  • 167.****.45 正在查看 贴代码框架PasteForm之特性select,lselect,selects的介绍 !
  • 45.****.97 正在查看 PasteSpider之占位符,宏,对象属性遍历的说明 !
  • 121.****.136 正在查看 贴代码框架PasteForm特性介绍之mark(标签,书签,字段说明)的支持 !
  • 113.****.142 正在查看 Serilog在appsettings.json中的配置 !
  • 135.****.15 正在查看 使用PasteSpider实现CI/CD持续部署,类似Jenkins的功能,让你的2G服务器也可以飞起 !
欢迎加入QQ讨论群 296245685 更新记录 [PasteSpider]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2