form-create-designer-naiveui

Posted sw-code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了form-create-designer-naiveui相关的知识,希望对你有一定的参考价值。

基于Naive UI和Form Creat的表单设计器,可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。

这个是 Vue3 版本

form-create-designer-naiveui 是基于 @form-create/naive-ui vue3版本实现的表单设计器组件。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。

form-create-designer 是基于 @form-create/element-ui 开发的表单设计器,本项目更换原项目的UI框架为 Naive UI ,做出的更改如下:

  • Element Plus v2.0.1 -> Naive UI v2.34.3
  • codemirror v5.60.0 -> v6.0.1
  • 自定义ColorPicker组件,便于定制组件颜色
  • 更新部分组件为Vue 3版本

文档 | 在线演示 | form-create 文档

如果对您有帮助,您可以点右上角 "Star" 支持一下 谢谢!本项目可继续完善,如有任何建议或问题请在这里提出

引入

NodeJs:

npm i form-designer-naiveui

请自行导入NaiveUI并挂载

import formCreate from \'@form-create/naive-ui\'
import FcDesigner  from \'form-designer-naiveui\'

app.use(formCreate)
app.use(FcDesigner)

使用

<fc-designer ref="designer"/>

设置多语言

通过 locale 配置项设置语言

<template>
  <fc-designer :locale="locale"></fc-designer>
</template>

<script>
import En from "form-designer-naiveui/locale/en.js";
export default 
  data()
    return 
        locale: En,
    
  

</script>

组件props

  • menuMenuList 重新配置拖拽的组件

  • heightint|string 设计器组件高度, 默认100%

  • localeobject 设置多语言

  • configConfig 设置多语言

  • mask boolean 设置拖拽表单中的组件是否可以操作

组件方法

  • 获取当前生成表单的生成规则

    type getRule = () => Rule[]
    

    示例: this.$refs.designer.getRule()

  • 获取当前表单的全局配置

    type getOption = () => Object
    
  • 设置当前生成表单的规则

    type setRule = (rules: Rule[]) => void;
    
  • 设置当前表单的全局配置

    type setOption = (option: Object) => void;
    
  • 增加一组拖拽组件

    type addMenu = (menu: Menu) => void;
    
  • 删除一组拖拽组件

    type removeMenu = (name: string) => void;
    
  • 批量覆盖插入拖拽组件

    type setMenuItem = (name: string, items: MenuItem[]) => void;
    
  • 插入一个拖拽组件到分组

    type appendMenuItem = (name:string, item: MenuItem) => void;
    
  • 删除一个拖拽组件

    type removeMenuItem = (item: string | MenuItem) => void;
    
  • 新增一个拖拽组件的生成规则

    type addComponent = (item: DragRule) => void;
    

提示! 内置的三个组件分组name分别为: main,aide,layout

java OSS批量下载,并压缩为ZIP

/**
     *  批量下载为zip
     * @param req
     * @param response
     * @param keyList  oss文件路径集合
     * @param fileName 下载出来的zip文件名(一般以合同名命名) 如:测试合同,zip
     */
    public  static  void downForZip(HttpServletRequest req, HttpServletResponse response,
                                    List<String> keyList,String fileName ){
        // 创建临时文件
        File zipFile = null;
        try {
        //临时文件名称 zipFile = File.createTempFile("test", ".zip"); FileOutputStream f = new FileOutputStream(zipFile); /** * 作用是为任何OutputStream产生校验和 * 第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种) */ CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32()); // 用于将数据压缩成Zip文件格式 ZipOutputStream zos = new ZipOutputStream(csum); OSSClient ossClient= OSSUtil.getInstance(); for (String ossFile : keyList) { // 获取Object,返回结果为OSSObject对象 OSSObject ossObject = ossClient.getObject(OSSUtil.BUCKET, ossFile); // 读去Object内容 返回 InputStream inputStream = ossObject.getObjectContent(); // 对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法,确保压缩包里面文件不同名 String name=ossFile.substring(ossFile.lastIndexOf("/")+1); zos.putNextEntry(new ZipEntry(name)); int bytesRead = 0; // 向压缩文件中输出数据 while ((bytesRead = inputStream.read()) != -1) { zos.write(bytesRead); } inputStream.close(); zos.closeEntry(); // 当前文件写完,定位为写入下一条项目 } zos.close(); String header = req.getHeader("User-Agent").toUpperCase(); if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) { fileName = URLEncoder.encode(fileName, "utf-8"); //IE下载文件名空格变+号问题 fileName = fileName.replace("+", "%20"); } else { fileName = new String(fileName.getBytes(), "ISO8859-1"); } response.reset(); response.setContentType("text/plain"); response.setContentType("application/octet-stream; charset=utf-8"); response.setHeader("Location", fileName); response.setHeader("Cache-Control", "max-age=0"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName); FileInputStream fis = new FileInputStream(zipFile); BufferedInputStream buff = new BufferedInputStream(fis); BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); byte[] car = new byte[1024]; int l = 0; while (l < zipFile.length()) { int j = buff.read(car, 0, 1024); l += j; out.write(car, 0, j); } // 关闭流 fis.close(); buff.close(); out.close(); ossClient.shutdown(); // 删除临时文件 zipFile.delete(); } catch (IOException e1) { e1.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } }

  

以上是关于form-create-designer-naiveui的主要内容,如果未能解决你的问题,请参考以下文章