Mr_HJ / form-generator项目学习-增加自定义的超融组件(二)

简介: Mr_HJ / form-generator项目学习-增加自定义的超融组件(二)

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://218.75.87.38:9888

这部分主要介绍,改造原有的form-generator模拟显示方式

1、因为原先用iframe的方式,用固定的html文件模板方式处理,这样很不灵活,特别是对自己自定义的组件来说。

   所以改专用的preview.vue来处理,如下:

<template>
  <el-dialog v-bind="$attrs" :close-on-click-modal="false" :modal-append-to-body="false"
    append-to-body v-on="$listeners" @open="Open" @close="close"
    title="预览" :width="formConf.generalWidth">
    <parser :form-conf="formConf" @submit="submitForm" :key="key" ref="previewForm" />
    <div slot="footer">
      <el-button @click="close">{{'取 消'}}</el-button>
      <el-button type="primary" @click="handelConfirm">{{'确 定'}}
      </el-button>
    </div>
  </el-dialog>
</template>
<script>
import Parser from '@/utils/generator/parser'
export default {
  components: { Parser },
  props: ['formData'],
  data() {
    return {
      key: +new Date(),
      formConf: {}
    }
  },
  created() { },
  methods: {
    Open() {
      this.key = +new Date()
      this.formConf = this.formData
    },
    onClose() {
    },
    close(e) {
      this.$emit('update:visible', false)
    },
    handelConfirm() {
      this.$refs.previewForm && this.$refs.previewForm.submitForm()
    },
    submitForm(data, callback) {
      console.log('submitForm提交数据:', data)
      if (callback && typeof callback === "function") {
        callback()
      }
    }
  }
}
</script>

2、代码显示里面也进行单独处理,同时修改setEditorValue,保证每次打开都能显示代码(原先有时候可以有时候不显示)

setEditorValue(id, type, codeStr) {
     // if (editorObj[type]) {
     //   editorObj[type].setValue(codeStr)
     // } else {
        editorObj[type] = monaco.editor.create(document.getElementById(id), {
          value: codeStr,
          theme: 'vs-dark',
          language: mode[type],
          automaticLayout: true
        })
      //}
      // ctrl + s 刷新
      editorObj[type].onKeyDown(e => {
        if (e.keyCode === 49 && (e.metaKey || e.ctrlKey)) {
          this.runCode()
        }
      })
    },

同时界面用下面方式处理

<div class="view-border">
              <parser v-show="isParser" :form-conf="formData" @submit="submitForm" :key="key" ref="previewForm" />
            </div>
.view-border {
  margin-top: 10px;
  border-top: 5px dashed blue;
  border-right: 5px dashed blue;
  border-bottom: 5px dashed blue;
  border-left: 5px dashed blue;
}

3、效果图


相关文章
|
3月前
LangChain 构建问题之定义extract_local_group_size工具如何解决
LangChain 构建问题之定义extract_local_group_size工具如何解决
17 0
|
4月前
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
Element UI 【表格合计】el-table 实战范例 -- 添加单位,自定义计算逻辑
389 0
|
6月前
|
JSON 移动开发 前端开发
Mr_HJ / form-generator项目学习-增加自定义的超融组件(一)
Mr_HJ / form-generator项目学习-增加自定义的超融组件(一)
62 3
|
6月前
|
移动开发 JavaScript 前端开发
Mr_HJ / form-generator项目文档学习与记录(续1)
Mr_HJ / form-generator项目文档学习与记录(续1)
39 2
|
6月前
|
JSON JavaScript 数据格式
Mr_HJ / form-generator项目文档学习与记录(续)
Mr_HJ / form-generator项目文档学习与记录(续)
32 0
|
6月前
|
移动开发 前端开发
Mr_HJ / form-generator项目文档学习与记录(续2)
Mr_HJ / form-generator项目文档学习与记录(续2)
27 0
|
6月前
|
JSON JavaScript 前端开发
Mr_HJ / form-generator项目文档学习与记录
Mr_HJ / form-generator项目文档学习与记录
67 0
|
前端开发 JavaScript Android开发
02HUI - 部署及文档结构
02HUI - 部署及文档结构
61 0
|
前端开发
#yyds干货盘点 【React工作记录十一】控制ant design中form的必填项判断
#yyds干货盘点 【React工作记录十一】控制ant design中form的必填项判断
168 0
|
前端开发
#yyds干货盘点 【React工作记录十一】控制ant design中form的必填项判断
#yyds干货盘点 【React工作记录十一】控制ant design中form的必填项判断
171 0