百度amis框架经验分享

百度amis框架经验分享

官方文档

amis - 低代码前端框架

这篇文章讲了amis的设计

为什么说百度AMIS框架是一个优秀的设计_百度前端框架-CSDN博客

学习方法:

最好的学习方法就是GPT+官方文档

不要去很大力气通读官方文档,大概浏览一遍就行, 以你自己的任务为导向, 不懂的先让GPT帮你生成配置文件,然后看不懂的对照官方文档去理解。

有几个坑要注意:

0) VUE框架里面不要通过npm install来使用amis,那样会把当前项目的环境搞乱。因为amis依赖很多包。 最好的方式是通过sdk的方式来使用。 本文档最后会给一个最佳实践,将sdk包放入到前端项目/public目录下就可以。

https://github.com/baidu/amis/releases/download/6.8.0/jssdk.tar.gz

1) 控制 AMIS 组件的显示状态

visible: 静态布尔值控制显隐。
visibleOn: 基于表达式动态控制显示。
hiddenOn: 基于表达式动态控制隐藏。

如果在表格中使用visibleOn,要确保字段在界面上有展示(隐藏也算)

"api": `delete:${prefix2}/sz/info/`+"${id}",
如果要对表的字段做引用就用${xx},把这个当一个字符串对待,如果要引用外部变量,那就要放在``表达式里面。 

2)批量删除按钮,记得在

"headerToolbar": [
	{
	  "type": "bulkActions"
	}
]里面加上,
还有
"bulkActions": [
        {
          "label": "批量删除",
          "visible": true,
          "actionType": "ajax",
          "api": `delete:${prefix2}/sz/info/`,
          "confirmText": "确定要批量删除选中的记录吗?"
        }
      ],

3) 如果是父子表,注意看业务情况是否要关闭 "canAccessSuperData": false

4) 修改表单的时候,需要2个URL,分别是api和initapi , api参数还可以拆分,

"type": "form",
"api": `put:${prefix2}/sz/info`,
"initApi": `get:${prefix2}/sz/info/`+"${id}",
"canAccessSuperData":false,

5) crud上方的检索条件,不要用定义在外面的表单来实现,要不检索的时候,会重新刷页面。

crud上方的检索条件,用自带的filter就可以实现。

6) crud 默认是跟地址栏联动,如果要做请关闭同步地址栏 syncLocation: false

7) 配置一下下拉列表

  {

        "label": "选项",

        "type": "select",

        "name": "select",

        "source": "/amis/api/mock2/form/getOptions?waitSeconds=1"

      }   

8) 有父子关系的表格,在返回的列表数据json串里面加上children,就可以形成父子关系,就可以做成树形表。

9) 表格展示的时候,如果某个值需要翻译怎么处理?

                {"name": "isShow","label": "是否展示","type": "mapping","map": {"1": "展示","2": "隐藏"}},
            还可以远程拉取字典{"type": "mapping","name": "type","label": "映射","source": "/amis/api/mapping"}
      帮助文档里面专门将这个的,有很多例子: https://aisuda.bce.baidu.com/amis/zh-CN/components/mapping

10) 关于文件上传,有专门的图片上传type='input-image'

{'type': 'input-text','name': 'fileId' ,'visible':false},
{'type': 'input-image', 'name': 'files',"frameImage":'${fileId}', "fileField":"files",'initAutoFill':false, "accept": "image/*", "receiver": `${FILEBASEURL}/uploadOneFile` ,'label': '头像', "autoFill": {"fileId": "${url}"}},

name的默认值是file,但如果服务器是通过files字段来接收,那么就要加上 "fileField":"files"来指示。

frameImage属性代表修改的时候,底图会是上次上传的图片。

initAutoFill属性很有用,修改页面这个要设置为false,要不然修改的时候看不到图片,因为默认进来没有图片,autoFill填充会被冲掉。

  1. 官网文档有检索功能,不知道的功能可以通过检索查找。
  2. 不要小看数据映射。

数据映射支持用户通过${xxx}$xxx获取当前数据链中某个变量的值,实现灵活的数据配置功能,主要用于模板字符串、 自定义 api 请求数据体格式等场景。

path: 指定筛选的模板,默认为&,即返回原数据

11 下拉列表的格式,在table里面的source也可以使用这个格式,字典将自动翻译。

/res/basic/getResList2返回值
{"msg": "","data": [{"label": "花溪公园","value": "123"},    ],"status": 0
}{"type": "mapping",  'label':'公园名称' ,'name':'resCode' , 'source': `${prefix2}/res/basic/getResList2`},

12) 如果是一个复杂的逻辑要处理,使用模板引擎来解析,不要使用render,render试了一下,还是不能达到效果。

{ 'type': 'tpl',  'name': 'fileIds', 'label': '培训计划附件'  , "tpl": `
      <%
        console.log(data.fileIds); 
        if (data.fileIds) { 
        var urlArray = data.fileIds.split(',');
        for (var i = 0; i < urlArray.length; i++) { %>
          <a href="<%= urlArray[i] %>" target="_blank"><%= urlArray[i].split('/').pop() %></a><br/>
        <% }
      } %>
      `},

13 如果select下拉偏移其他地方 类似以下这种

加上这个属性

						"className": "isshow-dropdown","popOverContainerSelector": '.isshow-dropdown'

一个最佳实践的例子

assessment-plan-crud.vue

<template><div class="app-container" ref="amisRoot"></div>
</template><script>
import crudjson from './assessment-plan-crud.ts'
import '@/views/manage/sz/sz.css'
export default {mounted() {const amis = amisRequire('amis/embed');const amisScoped = amis.embed(this.$refs.amisRoot, crudjson)}
}
</script>

assessment-plan-crud.ts


import getprefix2 from '@/views/manage/sz/util/common'
const prefix2 = getprefix2()
const crudjson ={
  "type": "page",
  "body": [
    {
      "type": "crud",
      "id": "mytable",
      "name": "mytable",
      "syncLocation": false,
      "filter": {
        "title": "",
        "type": "flex",
        "justify": "start",  // 控制对齐方式
        "body": [          {
            "type": "select",
            "name": "resCode",
            "label": "水库名称",
            "placeholder": "请输入水库名称",
            "clearable": true,
            "source": `${prefix2}/res/basic/getResList2`,
          },
          {
            "type": "input-text",
            "name": "assessmentPlanName",
            "label": "考核计划名称",
            "placeholder": "请输入考核计划名称",
            "clearable": true
          },
          {
            "type": "input-text",
            "name": "assessmentUnit",
            "label": "考核单位",
            "placeholder": "请输入考核单位",
            "clearable": true
          },
          {
            "type": "select",
            "name": "isShow",
            "label": "是否展示",
            "options": [
              {
                "label": "展示",
                "value": "1"
              },
              {
                "label": "隐藏",
                "value": "2"
              }
            ],
            "placeholder": "请选择展示隐藏",
            "clearable": true
          },
          {
            "type": "button",
            "label": "查询",
            "level": "primary",
            "actionType": "submit",
            "className": "ml-2"
          },
          {
            "type": "button",
            "label": "重置",
            "actionType": "reset",
            "className": "ml-2"
          }
        ]
      },
      "bulkActions": [
        {
          "label": "批量删除",
          "visible": true,
          "actionType": "ajax",
          "api": `delete:${prefix2}/sz/assessmentPlan/`+"${ids}",
          "confirmText": "确定要批量删除选中的记录吗?"
        }
      ],
      "headerToolbar": [
        {
          "type": "button",
          "label": "新增",
          "level": "primary",
          "actionType": "dialog",
          "dialog": {
            "title": "新增考核",
            "body": {
              "type": "form",
              "api": `post:${prefix2}/sz/assessmentPlan`,
              "controls": [
                {
                  "type": "select",
                  "name": "resCode",
                  "label": "水库名称",
                  "clearable": true,
                  "source": `${prefix2}/res/basic/getResList2`,
                },
                {
                  "type": "text",
                  "name": "assessmentPlanName",
                  "label": "考核计划名称"
                },
                {
                  "type": "number",
                  "name": "assessmentPlanPassPerson",
                  "label": "考核通过人数"
                },
                {
                  "type": "number",
                  "name": "assessmentPlanFailedPerson",
                  "label": "考核未通过人数"
                },
                {
                  "type": "input-text",
                  "name": "assessmentUnit",
                  "label": "考核单位"
                },
                {
                  "type": "text",
                  "name": "id",
                  "visible": false,
                  "value": "${id}",
                  "label": "id"
                }
              ]
            }
          }
        },
        "export-excel", "bulkActions", "pagination"
      ],
      "api": {
        "url": `${prefix2}/sz/assessmentPlan/list`,
        "method": "get"
      },
      "columns": [
        {
          "name": "index",
          "label": "序号",
          "type": "tpl",
          "tpl": "${index + 1}",
          "fixed": "left",
          "width": 50
        },
        {
          "name": "assessmentPlanName",
          "label": "考核计划名称",
          "type": "text"
        },
        {
          "name": "assessmentPlanPassPerson",
          "label": "考核计划通过人数",
          "type": "text"
        },
        {
          "name": "assessmentPlanFailedPerson",
          "label": "考核计划未通过人数",
          "type": "text",
        },
        {
          "name": "assessmentUnit",
          "label": "考核单位",
          "type": "text"
        },
        {
          "type": "text",
          "visible":false,
          "name": "id",
          "label": "id",
        },
        {
          "type": "operation",
          "label": "操作",
          "buttons": [
            {
              "type": "button",
              "label": "修改",
              "actionType": "dialog",
              "dialog": {
                "title": "修改考核",
                "body": {
                  "type": "form",
                  "api": `put:${prefix2}/sz/assessmentPlan`,
                  "initApi": `get:${prefix2}/sz/assessmentPlan/`+"${id}",
                  "canAccessSuperData":false,
                  "controls": [
                    {
                      "type": "select",
                      "name": "resCode",
                      "label": "水库名称",
                      "clearable": true,
                      "source": `${prefix2}/res/basic/getResList2`,
                    },
                    {
                      "type": "text",
                      "name": "assessmentPlanName",
                      "label": "考核计划名称"
                    },
                    {
                      "type": "number",
                      "name": "assessmentPlanPassPerson",
                      "label": "考核通过人数"
                    },
                    {
                      "type": "number",
                      "name": "assessmentPlanFailedPerson",
                      "label": "考核未通过人数"
                    },
                    {
                      "type": "input-text",
                      "name": "assessmentUnit",
                      "label": "考核单位"
                    },
                    {
                      "type": "text",
                      "name": "id",
                      "visible": false,
                      "value": "${id}",
                      "label": "id"
                    }
                  ]
                }
              }
            },
            {
              "type": "button",
              "label": "删除",
              "level": "danger",
              "actionType": "ajax",
              "confirmText": "确定要删除该条记录吗?",
              "api": `delete:${prefix2}/sz/assessmentPlan/`+"${id}",
            }
          ]
        }
      ]
    }
  ]
} export default crudjson

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542338.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VisionPro - 基础 - 模板匹配技术-Search/PMAlign/PatMax(6)-纹理屏蔽和重叠匹配

前言&#xff1a; 1 特征掩膜屏蔽&#xff1a; 模板匹配的应用中&#xff0c;去除非感兴趣的区域&#xff0c;或者去除一些枝端末节的特征&#xff0c;突出需要的主特征的匹配是一个基本原则。这一节&#xff0c;介绍了PatMax的一些处理方法&#xff1a; 2 重叠匹配 1 Ignor…

【HTTPS】中间人攻击和证书的验证

中间人攻击 服务器可以创建出一堆公钥和私钥&#xff0c;黑客也可以按照同样的方式&#xff0c;创建一对公钥和私钥&#xff0c;冒充自己是服务器&#xff08;搅屎棍&#xff09; 黑客自己也能生成一对公钥和私钥。生成公钥和私钥的算法是开放的&#xff0c;服务器能生产&…

工程车辆目标检测、程车检测算法、工程车辆类型检测算法

工程车检测算法主要用于智能交通系统、建筑工地管理、矿山开采、物流运输等领域&#xff0c;通过图像识别技术来检测和识别工程车&#xff0c;以提高安全管理、交通流量管理和资源调度的效率。以下是关于工程车检测算法的技术实现、应用场景及优势的详细介绍。 一、技术实现 工…

nuget包管理

1、下载 下载nuget 下载nuget.exe&#xff0c;配置系统环境变量&#xff0c;打开电脑属性一高级系统设置一环境变量一系统变量&#xff0c;选择Path&#xff0c;添加nuget.exe目录 2、常用命令 nuget install System.Data.SQLITE -SolutionDirectory D:\NugetPackages\ -Packa…

生信服务器 | 组蛋白甲基化修饰、DNA亲和纯化测序、优青博导团队指导设计、解读实验结果。

查看原文>>>生信服务器 | 组蛋白甲基化修饰、DNA亲和纯化测序、优青博导团队免费指导设计、解读实验结果、一台服务器解决您所有的分析困扰!

CUDA-纹理内存

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 纹理内存是什么&#xff1f; 在 GPU 编程中&#xff0c;纹理内存是一种专门用于二维和三维数据读取的存储方式&#xff0c;特别适…

[SAP ABAP] 数据字典外键关联

SE11创建自定义数据库表 学校表(ZDBT_SCH_437) 表有3个组成字段&#xff1a; ① MANDT (参考数据元素为MANDT&#xff0c;主键) ② SCHID 学校ID (参考新建数据元素ZDE_SCHID_437&#xff0c;主键&#xff0c;NUMC4) ③ SCHNAME 学校名称 (CHAR20) 学生表(ZDBT_STU_437) 表有7个…

基于微信小程序校园订餐的设计与开发+ssm(lw+演示+源码+运行)

摘 要 人民生活水平的提高就会造成生活节奏越来越快&#xff0c;很多人吃饭都采用点外卖的方式。现在点外卖的平台已有很多&#xff0c;大多都需要安装它们的APP才可以使用&#xff0c;并且没有针对校园。如果一味的使用外卖平台不仅会造成商家成本的增加&#xff0c;还不利于…

基于微信小程序的智慧物业管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

C++容器list底层迭代器的实现逻辑~list相关函数模拟实现

目录 1.两个基本的结构体搭建 2.实现push_back函数 3.关于list现状的分析&#xff08;对于我们如何实现这个迭代器很重要&#xff09; 3.1和string,vector的比较 3.2对于list的分析 3.3总结 4.迭代器类的封装 5.list容器里面其他函数的实现 6.个人总结 7.代码附录 1.两…

easylogger移植

1.源码 GitHub - armink/EasyLogger: An ultra-lightweight(ROM<1.6K, RAM<0.3k), high-performance C/C log library. | 一款超轻量级(ROM<1.6K, RAM<0.3k)、高性能的 C/C 日志库 2.介绍 easylogger就是用来打印日志的,我们可以将日志输出到sscom, led屏幕, 或者…

多模态交互才是人机交互的未来

交互方式 在探讨文字交流、语音交流和界面交流的效率时&#xff0c;我们可以看到每种方式都有其独特的优势和局限性。文字交流便于记录和回溯&#xff0c;语音交流则在表达情绪和非语言信息方面更为高效&#xff0c;而界面交流则依赖于图形用户界面&#xff08;GUI&#xff09…

[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?

1. 论文简介 论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao&#xff0c;在2024.09.19提交到arXiv上的研究论文。 论文: https://arxiv.org/abs/2409.12889代码和数据: h…

Mixamo动画使用技巧

1、登录Mixiamo网站 2、下载人物模型 3、找到FBX文件 选中人形骨骼 3、下载动画 4、拖拽FBX 5、注意事项 生成的FBX文件中会包含一个骨骼一个动画 如果人物有骨骼&#xff0c;则不需要&#xff0c;没有需要对应此包中的骨骼&#xff0c;骨骼不可以通用&#xff0c;动画通用 …

某集群管理系统存在任意文件读取漏洞

你为什么要拼命努力&#xff1f;父母的白发&#xff0c;想去的地方很远&#xff0c;想要的东西很贵&#xff0c;喜欢的人很优秀&#xff0c;周围人的嘲笑&#xff0c;以及&#xff0c;天生傲骨。 漏洞描述 利用漏洞&#xff0c;攻击者可以读取 Windows 或 Linux 服务器上的任…

【QT开发-Pyside】使用Pycharm与conda配置Pyside环境并新建工程

知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能&#xff0c;以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…

微信小程序教程:如何在个人中心实现头像贴纸功能

在微信小程序中&#xff0c;个性化设置是提升用户体验的重要手段。本文将详细介绍如何在个人中心模块中实现头像贴纸功能&#xff0c;让用户可以自由地装饰自己的头像。 头像贴纸功能允许用户在个人头像上添加装饰性贴纸&#xff0c;增加个性化表达。以下是实现该功能的主要步骤…

安全帽佩戴识别摄像机:守护安全的智能之眼

在现代工业和建筑等诸多领域中&#xff0c;安全始终是重中之重。每一处施工现场、每一个生产车间都潜藏着可能对人员造成伤害的风险因素。而安全帽&#xff0c;作为保护工作人员头部免受伤害的关键装备&#xff0c;其是否被正确佩戴就显得尤为关键。此时&#xff0c;安全帽佩戴…