Procházet zdrojové kódy

表单修改以及处理框

小宝贝 před 1 rokem
rodič
revize
b3e305bc10
100 změnil soubory, kde provedl 25 přidání a 9001 odebrání
  1. 25 0
      ruoyi-ui/src/views/system/fromModel/index.vue
  2. 0 9
      ruoyi-ui/src/views/system/fromModeling/index.vue
  3. 0 0
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/111k-form-design.css
  4. 0 0
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/.nojekyll
  5. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/favicon.ico
  6. 0 34
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/index.html
  7. 0 7
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/communication.md
  8. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/1-1585492231794.gif
  9. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/12312.jpg
  10. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791416791.gif
  11. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791471830.gif
  12. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791563798.gif
  13. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791884885.gif
  14. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584792004589.gif
  15. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584792430622.gif
  16. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584793506316.gif
  17. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584794814249.gif
  18. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2.gif
  19. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/3.png
  20. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/444.gif
  21. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200329173941524.png
  22. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200329174425298.png
  23. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200329202427369.png
  24. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200402202132463.png
  25. 0 1119
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/build.md
  26. 0 384
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/design.md
  27. 0 40
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/form-build1.html
  28. 0 116
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/form-build2.html
  29. 0 116
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/form.md
  30. 0 58
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/config.md
  31. 0 3
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/donation.md
  32. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200330143658696.png
  33. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411183148543.png
  34. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411183620984.png
  35. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411183727771.png
  36. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411184121347.png
  37. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411184445453.png
  38. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411184515856.png
  39. 0 125
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/cascader.md
  40. 0 100
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/custom.md
  41. 0 40
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/editor.md
  42. 0 128
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/nodeSchema.md
  43. 0 114
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/treeSelect.md
  44. 0 76
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/guide/customize-theme.md
  45. 0 84
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/guide/soundCode.md
  46. 0 85
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/guide/start.md
  47. 0 28
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/vue-cli-ie.md
  48. 0 18
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/自定义组件可修改属性.txt
  49. 0 10
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/App.vue
  50. binární
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/assets/logo.png
  51. 0 26
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/components/CustomComponent/index.vue
  52. 0 79
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/main.js
  53. 0 29
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/router/index.js
  54. 0 105
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/views/build/index.vue
  55. 0 460
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/views/demo/index.vue
  56. 0 5
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/views/formDesign/index.vue
  57. 0 198
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KBatch/batch.vue
  58. 0 2
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KBatch/index.js
  59. 0 27
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KButton/KButton.vue
  60. 0 2
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KButton/index.js
  61. 0 118
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KChangeOption/index.vue
  62. 0 50
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KCheckbox/index.vue
  63. 0 96
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDatePicker/datePicker.vue
  64. 0 7
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDatePicker/index.js
  65. 0 16
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDivider/KDivider.vue
  66. 0 2
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDivider/index.js
  67. 0 2
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KEditor/index.js
  68. 0 48
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KEditor/kEditor.vue
  69. 0 62
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/README.md
  70. 0 220
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/buildBlocks.vue
  71. 0 11
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/index.js
  72. 0 242
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/index.vue
  73. 0 721
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/config/formItemsConfig.js
  74. 0 53
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/config/jsonFormat.js
  75. 0 11
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/index.js
  76. 0 508
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/index.vue
  77. 0 163
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/codeModal.vue
  78. 0 47
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/collapseItem.vue
  79. 0 14
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/footer.vue
  80. 0 512
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formComponentPanel.vue
  81. 0 680
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formItemProperties.vue
  82. 0 69
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formNode.vue
  83. 0 153
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formProperties.vue
  84. 0 20
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/header.vue
  85. 0 105
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/importJsonModal.vue
  86. 0 47
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/jsonModal.vue
  87. 0 556
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/layoutItem.vue
  88. 0 147
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/operatingArea.vue
  89. 0 35
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormItem/README.md
  90. 0 11
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormItem/index.js
  91. 0 237
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormItem/index.vue
  92. 0 140
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormModelItem/KFormModelItem.vue
  93. 0 0
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormPreview/README.md
  94. 0 11
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormPreview/index.js
  95. 0 90
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormPreview/index.vue
  96. 0 9
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KHtml/KHtml.vue
  97. 0 2
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KHtml/index.js
  98. 0 2
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KSelectInputList/index.js
  99. 0 123
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KSelectInputList/selectInputList.vue
  100. 0 34
      ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KSlider/KSlider.vue

+ 25 - 0
ruoyi-ui/src/views/system/fromModel/index.vue

@@ -0,0 +1,25 @@
+<template>
+    <div>
+      <k-form-design 
+      :showHead="false"
+      @save="handleSave"
+      />
+    </div>
+  </template>
+<script>
+export default {
+  methods: {
+    handleSave(values) {
+      alert("111");
+      console.log(values);
+    }
+  }
+};
+</script>
+
+<style>
+  aside{
+    width: 340px !important;
+  }
+</style>
+

+ 0 - 9
ruoyi-ui/src/views/system/fromModeling/index.vue

@@ -1,9 +0,0 @@
-<template>
-    <div>
-      <k-form-design 
-      :showHead="false"
-      />
-    </div>
-  </template>
-<script>
-</script>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/111k-form-design.css


+ 0 - 0
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/.nojekyll


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/favicon.ico


+ 0 - 34
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/index.html

@@ -1,34 +0,0 @@
-<!--
- * @Author: kcz
- * @Date: 2020-01-01 11:02:41
- * @LastEditTime: 2020-03-29 17:49:03
- * @LastEditors: kcz
- * @Description: In User Settings Edit
- * @FilePath: \form-design-doc\index.html
- -->
-<!DOCTYPE html>
-<html lang="zh-CN">
-<head>
-  <meta charset="UTF-8">
-  <title>k-form-design文档</title>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
-  <meta name="description" content="Description">
-  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
-  <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
-  <link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
-</head>
-<body>
-  <a href="https://github.com/Kchengz/k-form-design" target="_blank" class="github-corner" aria-label="View source on Github"><svg viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
-  <div id="app">Loading...</div>
-  <script>
-    window.$docsify = {
-      coverpage:true,
-      loadSidebar: true,
-    subMaxLevel: 2,
-      name: '',
-      repo: ''
-    }
-  </script>
-  <script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
-</body>
-</html>

+ 0 - 7
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/communication.md

@@ -1,7 +0,0 @@
-# 交流
-点击链接加入qq群聊,可以直接提问及反馈bug
-
-[【k-form-desgin交流群:1020643215】](https://jq.qq.com/?_wv=1027&k=5BeoFAr) 
-
-[【k-form-desgin交流二群:727396923】](https://jq.qq.com/?_wv=1027&k=uYyqQPlQ)
-

binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/1-1585492231794.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/12312.jpg


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791416791.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791471830.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791563798.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584791884885.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584792004589.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584792430622.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584793506316.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2-1584794814249.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/2.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/3.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/444.gif


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200329173941524.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200329174425298.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200329202427369.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/assets/image-20200402202132463.png


+ 0 - 1119
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/build.md

@@ -1,1119 +0,0 @@
-# k-form-build
-## 介绍
-表单构建组件,将表单设计器生成的json数据构建成表单
-
-## 基础用法
-
-![3](assets/3.png)
-
-> 代码示例:
-
-```  html
-<template>
-  <div>
-    <k-form-build :value="jsonData" />
-  </div>
-</template>
-<script>
-export default {
-  data () {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: 'input',
-            label: '单行文本',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              placeholder: '请输入',
-              disabled: false
-            },
-            model: 'input_1577875678405',
-            key: 'input_1577875678405',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'date',
-            label: '日期选择器',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              range: false,
-              showTime: false,
-              disabled: false,
-              clearable: false,
-              placeholder: '请选择',
-              rangePlaceholder: ['开始时间', '结束时间'],
-              format: 'YYYY-MM-DD'
-            },
-            model: 'date_1577877450971',
-            key: 'date_1577877450971',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'textarea',
-            label: '多行文本',
-            options: {
-              width: '100%',
-              minRows: 4,
-              maxRows: 6,
-              defaultValue: '',
-              disabled: false,
-              placeholder: '请输入'
-            },
-            model: 'textarea_1577877446659',
-            key: 'textarea_1577877446659',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'rate',
-            label: '评分',
-            options: {
-              defaultValue: 0,
-              max: 5,
-              disabled: false,
-              allowHalf: false
-            },
-            model: 'rate_1577877468717',
-            key: 'rate_1577877468717',
-            rules: [{ required: true, message: '必填项' }]
-          }
-        ],
-        config: {
-          layout: 'horizontal',
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ''
-        }
-      }
-    }
-  }
-}
-</script>
-```
-
-## 获取数据
-
-[filelabel](./form-build1.html ':include :type=iframe width=100% height=320px')
-
-> 使用getData函数获取数据
-
-```  html
-<template>
-  <div>
-    <k-form-build ref="kfb" :value="jsonData" />
-    <button @click="handleGetData">获取数据</button>
-  </div>
-</template>
-<script>
-export default {
-  data () {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: 'input',
-            label: '单行文本',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              placeholder: '请输入',
-              disabled: false
-            },
-            model: 'input_1577875678405',
-            key: 'input_1577875678405',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'date',
-            label: '日期选择器',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              range: false,
-              showTime: false,
-              disabled: false,
-              clearable: false,
-              placeholder: '请选择',
-              rangePlaceholder: ['开始时间', '结束时间'],
-              format: 'YYYY-MM-DD'
-            },
-            model: 'date_1577877450971',
-            key: 'date_1577877450971',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'textarea',
-            label: '多行文本',
-            options: {
-              width: '100%',
-              minRows: 4,
-              maxRows: 6,
-              defaultValue: '',
-              disabled: false,
-              placeholder: '请输入'
-            },
-            model: 'textarea_1577877446659',
-            key: 'textarea_1577877446659',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'rate',
-            label: '评分',
-            options: {
-              defaultValue: 0,
-              max: 5,
-              disabled: false,
-              allowHalf: false
-            },
-            model: 'rate_1577877468717',
-            key: 'rate_1577877468717',
-            rules: [{ required: true, message: '必填项' }]
-          }
-        ],
-        config: {
-          layout: 'horizontal',
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ''
-        }
-      }
-    }
-  },
-  methods: {
-    handleGetData () {
-      // 使用getData函数获取数据
-      this.$refs.kfb.getData().then(values => {
-        console.log('验证通过', values)
-      }).catch(() => {
-        console.log('验证未通过,获取失败')
-      })
-    }
-  }
-}
-</script>
-```
-
-## 表单赋值数据
-
-![1](assets/1-1585492231794.gif)
-
-> 使用setData函数设置一组输入控件的值
-
-```html
-<template>
-  <div>
-    <k-form-build ref="kfb" :value="jsonData" />
-    <button @click="handleChange">修改数据</button>
-    <button @click="handleReset">重置表单</button>
-  </div>
-</template>
-<script>
-export default {
-  data() {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: "input",
-            label: "输入框",
-            icon: "icon-write",
-            options: {
-              type: "text",
-              width: "100%",
-              defaultValue: "",
-              placeholder: "请输入",
-              clearable: false,
-              maxLength: null,
-              disabled: false
-            },
-            model: "input_1585491903047",
-            key: "input_1585491903047",
-            rules: [
-              {
-                required: false,
-                message: "必填项"
-              }
-            ]
-          },
-          {
-            type: "rate",
-            label: "评分",
-            options: {
-              defaultValue: 0,
-              max: 5,
-              disabled: false,
-              allowHalf: false
-            },
-            model: "rate_1585491911405",
-            key: "rate_1585491911405",
-            rules: [
-              {
-                required: false,
-                message: "必填项"
-              }
-            ]
-          },
-          {
-            type: "batch",
-            label: "动态表格",
-            list: [
-              {
-                type: "input",
-                label: "输入框",
-                icon: "icon-write",
-                options: {
-                  type: "text",
-                  width: "100%",
-                  defaultValue: "",
-                  placeholder: "请输入",
-                  clearable: false,
-                  maxLength: null,
-                  disabled: false
-                },
-                model: "input_1585491918383",
-                key: "input_1585491918383",
-                rules: [
-                  {
-                    required: false,
-                    message: "必填项"
-                  }
-                ]
-              },
-              {
-                type: "date",
-                label: "日期选择框",
-                icon: "icon-calendar",
-                options: {
-                  width: "100%",
-                  defaultValue: "",
-                  rangeDefaultValue: [],
-                  range: false,
-                  showTime: false,
-                  disabled: false,
-                  clearable: false,
-                  placeholder: "请选择",
-                  rangePlaceholder: ["开始时间", "结束时间"],
-                  format: "YYYY-MM-DD"
-                },
-                model: "date_1585491929847",
-                key: "date_1585491929847",
-                rules: [
-                  {
-                    required: false,
-                    message: "必填项"
-                  }
-                ]
-              }
-            ],
-            options: {
-              scrollY: 0,
-              defaultValue: "",
-              disabled: false,
-              showLabel: false,
-              hideSequence: false,
-              width: "100%"
-            },
-            model: "batch_1585491902024",
-            key: "batch_1585491902024",
-            rules: [
-              {
-                required: false,
-                message: "必填项"
-              }
-            ]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: {
-            span: 4
-          },
-          wrapperCol: {
-            span: 18
-          },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleChange() {
-      // 使用k-form-design组件的form属性修改表单数据
-      this.$refs.kfb.setData({
-        input_1585491903047: "信息输入",
-        rate_1585491911405: 3,
-        batch_1585491902024: [
-          {
-            input_1585491918383: "数据1",
-            date_1585491929847: "2020-03-12",
-            key: 1585491980422
-          },
-          {
-            input_1585491918383: "数据2",
-            date_1585491929847: "2020-03-12",
-            key: 1585491983966
-          }
-        ]
-      });
-    },
-    handleReset() {
-      // 重置表单
-      this.$refs.kfb.reset();
-    }
-  }
-};
-</script>
-```
-
-## 设置表单默认数据
-
-![image-20200402202132463](assets/image-20200402202132463.png)
-
-> 通过defaultValue属性插入默认数据,示例代码:
-
-```html
-<template>
-  <div>
-    <k-form-build
-      :defaultValue="defaultValue"
-      :value="jsonData"
-      ref="KFB"
-      @submit="handleSubmit"
-    />
-    <button @click="getData">提交</button>
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      defaultValue: {
-        select_1585829530472: "2",
-        radio_1585829530935: "3"
-      },
-      jsonData: {
-        list: [
-          {
-            type: "select",
-            label: "下拉选择器",
-            options: {
-              width: "100%",
-              multiple: false,
-              disabled: false,
-              clearable: false,
-              placeholder: "请选择",
-              dynamicKey: "",
-              dynamic: false,
-              options: [
-                { value: "1", label: "下拉框1" },
-                { value: "2", label: "下拉框2" }
-              ],
-              filterable: false
-            },
-            model: "select_1585829530472",
-            key: "select_1585829530472",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "radio",
-            label: "单选框",
-            icon: "icon-danxuan-cuxiantiao",
-            options: {
-              disabled: false,
-              defaultValue: "",
-              dynamicKey: "",
-              dynamic: false,
-              options: [
-                { value: "1", label: "选项1" },
-                { value: "2", label: "选项2" },
-                { value: "3", label: "选项3" }
-              ]
-            },
-            model: "radio_1585829530935",
-            key: "radio_1585829530935",
-            rules: [{ required: false, message: "必填项" }]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleSubmit(p) {
-      // 通过表单提交按钮触发,获取promise对象
-      p()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    getData() {
-      // 通过函数获取数据
-      this.$refs.KFB.getData()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    }
-  }
-};
-</script>
-```
-
-
-
-## 通过提交按钮触发submit事件
-
-![2](assets/2-1584794814249.gif)
-
-```  html
-<template>
-  <div>
-    <k-form-build @submit="submitData" :value="jsonData" />
-  </div>
-</template>
-<script>
-export default {
-  data () {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: 'input',
-            label: '单行文本',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              placeholder: '请输入',
-              disabled: false
-            },
-            model: 'input_1577875678405',
-            key: 'input_1577875678405',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'button',
-            label: '提交',
-            options: { type: 'primary', handle: 'submit', disabled: false },
-            key: 'button_1577880512173'
-          }
-        ],
-        config: {
-          layout: 'horizontal',
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ''
-        }
-      }
-    }
-  },
-  methods: {
-    submitData (getData) {
-      getData()
-        .then(values => {
-          console.log('验证通过', values)
-        })
-        .catch(() => {
-          console.log('验证未通过,获取失败')
-        })
-    }
-  }
-}
-</script>
-```
-
-## 动态数据配置
-
-> 设计时需要选择动态数据绑定数据key
-
-![image-20200329173941524](assets/image-20200329173941524.png)
-
-> 使用dynamicData属性传入
-
-![image-20200329174425298](assets/image-20200329174425298.png)
-
-> 代码示例
-
-```html
-<template>
-  <div>
-    <k-form-build
-      :value="jsonData"
-      :dynamicData="dynamicData"
-      ref="KFB"
-      @submit="handleSubmit"
-    />
-    <button @click="getData">提交</button>
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      dynamicData: {
-        dataKey: [
-          {
-            label: "动态数据1",
-            value: 1
-          },
-          {
-            label: "动态数据2",
-            value: 2
-          },
-          {
-            label: "动态数据3",
-            value: 3
-          }
-        ]
-      },
-      jsonData: {
-        list: [
-          {
-            type: "select",
-            label: "下拉选择器",
-            options: {
-              width: "100%",
-              multiple: false,
-              disabled: false,
-              clearable: false,
-              placeholder: "请选择",
-              dynamicKey: "dataKey",
-              dynamic: true,
-              options: [
-                { value: "1", label: "下拉框1" },
-                { value: "2", label: "下拉框2" }
-              ],
-              filterable: false
-            },
-            model: "select_1585474682040",
-            key: "select_1585474682040",
-            rules: [{ required: false, message: "必填项" }]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleSubmit(p) {
-      // 通过表单提交按钮触发,获取promise对象
-      p()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    getData() {
-      // 通过函数获取数据
-      this.$refs.KFB.getData()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    }
-  }
-};
-</script>
-```
-
-## 按钮动态函数绑定
-
-![image-20200329202427369](assets/image-20200329202427369.png)
-
-> dynamicData属性传入函数,示例代码如下:
-
-```html
-<template>
-  <div>
-    <k-form-build
-      :value="jsonData"
-      ref="KFB"
-      :dynamicData="dynamicData"
-      @submit="handleSubmit"
-    />
-    <button @click="getData">提交</button>
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      dynamicData: {
-        funName: this.printHelloWorld
-      },
-      jsonData: {
-        list: [
-          {
-            type: "input",
-            label: "输入框",
-            options: {
-              type: "text",
-              width: "100%",
-              defaultValue: "",
-              placeholder: "请输入",
-              clearable: false,
-              maxLength: null,
-              disabled: false
-            },
-            model: "input_1585484534818",
-            key: "input_1585484534818",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "button",
-            label: "按钮",
-            options: {
-              type: "primary",
-              handle: "dynamic",
-              dynamicFun: "funName",
-              disabled: false
-            },
-            key: "button_1585484533580"
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleSubmit(p) {
-      // 通过表单提交按钮触发,获取promise对象
-      p()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    getData() {
-      // 通过函数获取数据
-      this.$refs.KFB.getData()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    printHelloWorld() {
-      alert("hello world");
-    }
-  }
-};
-</script>
-```
-
-## 监听表单数据变化
-
-![444](assets/444.gif)
-
-> 当修复表单数据时会触发change事件,代码示例:
-
-```html
-<template>
-  <div>
-    <k-form-build :value="jsonData" @change="handleChange" ref="KFB" />
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: "input",
-            label: "输入框",
-            options: {
-              type: "text",
-              width: "100%",
-              defaultValue: "",
-              placeholder: "请输入",
-              clearable: false,
-              maxLength: null,
-              disabled: false
-            },
-            model: "input_1585832448970",
-            key: "input_1585832448970",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "textarea",
-            label: "文本框",
-            icon: "icon-edit",
-            options: {
-              width: "100%",
-              minRows: 4,
-              maxRows: 6,
-              maxLength: null,
-              defaultValue: "",
-              clearable: false,
-              disabled: false,
-              placeholder: "请输入"
-            },
-            model: "textarea_1585832449337",
-            key: "textarea_1585832449337",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "select",
-            label: "下拉选择器",
-            icon: "icon-xiala",
-            options: {
-              width: "100%",
-              multiple: false,
-              disabled: false,
-              clearable: false,
-              placeholder: "请选择",
-              dynamicKey: "",
-              dynamic: false,
-              options: [
-                { value: "1", label: "下拉框1" },
-                { value: "2", label: "下拉框2" }
-              ],
-              filterable: false
-            },
-            model: "select_1585832450864",
-            key: "select_1585832450864",
-            rules: [{ required: false, message: "必填项" }]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleChange(value, key) {
-      // 数据变化时触发
-      console.log(value, key);
-    }
-  }
-};
-</script>
-```
-
-## 动态修改上传组件配置
-
-> 使用config动态传入上传组件配置
-
-```html
-<template>
-  <div>
-    <k-form-build
-      :value="jsonData"
-      ref="KFB"
-      :config="config"
-      @submit="handleSubmit"
-    />
-    <button @click="getData">提交</button>
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      config: {
-        uploadFile: "", // 上传文件地址
-        uploadImage: "", // 上传图片地址
-        uploadFileName: "", // 上传文件name
-        uploadImageName: "", // 上传图片name
-        uploadFileData: { data: 223 }, // 上传文件额外参数
-        uploadImageData: { data: 223 }, // 上传图片额外参数
-        uploadFileHeaders: { data: 1545 }, // 上传文件请求头部
-        uploadImageHeaders: { data: 1545 } // 上传图片请求头部
-      },
-      jsonData: {
-        list: [
-          {
-            type: "uploadFile",
-            label: "上传文件",
-            options: {
-              defaultValue: "",
-              multiple: false,
-              disabled: false,
-              hidden: false,
-              drag: false,
-              downloadWay: "a",
-              dynamicFun: "",
-              width: "100%",
-              limit: 3,
-              data: "{}",
-              fileName: "file",
-              headers: {},
-              action: "http://cdn.kcz66.com/uploadFile.txt",
-              placeholder: "上传"
-            },
-            model: "uploadFile_1591622045312",
-            key: "uploadFile_1591622045312",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "uploadImg",
-            label: "上传图片",
-            icon: "icon-image",
-            options: {
-              defaultValue: "",
-              multiple: false,
-              hidden: false,
-              disabled: false,
-              width: "100%",
-              data: "{}",
-              limit: 3,
-              placeholder: "上传",
-              fileName: "image",
-              headers: {},
-              action: "http://cdn.kcz66.com/upload-img.txt",
-              listType: "picture-card"
-            },
-            model: "uploadImg_1591622045790",
-            key: "uploadImg_1591622045790",
-            rules: [{ required: false, message: "必填项" }]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleSubmit(p) {
-      // 通过表单提交按钮触发,获取promise对象
-      p()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    getData() {
-      // 通过函数获取数据
-      this.$refs.KFB.getData()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    }
-  }
-};
-</script>
-```
-
-
-
-## API
-<table>
-    <thead>
-      <tr>
-        <th>参数</th>
-        <th>说明</th>
-        <th>类型</th>
-        <th>默认值</th>
-        <th>版本</th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>value</td>
-        <td>表单设计器生成的json数据</td>
-        <td>Object</td>
-        <td>-</td>
-        <td></td>
-      </tr>
-        <tr>
-        <td>dynamic-data</td>
-        <td>选项控件的动态配置数据</td>
-        <td>Object</td>
-        <td>{}</td>
-        <td>3.3.0</td>
-      </tr>
-        </tr>
-        <tr>
-        <td>disabled</td>
-        <td>禁用所有输入控件</td>
-        <td>Boolean</td>
-        <td>false</td>
-        <td>3.3.0</td>
-      </tr>
- 		<tr>
-        <td>output-string</td>
-        <td>将获取的值都转成字符串,插入数据时请使用setData函数</td>
-        <td>Boolean</td>
-        <td>false</td>
-        <td>3.3.1</td>
-      </tr>
-		<tr>
-        <td>default-value</td>
-        <td>表单默认数据</td>
-        <td>Object</td>
-        <td>{}</td>
-        <td>3.3.5</td>
-      </tr>
-		<tr>
-        <td>config</td>
-        <td>配置项</td>
-        <td>Object</td>
-        <td>{}</td>
-        <td>3.5.3</td>
-      </tr>
-    </tbody>
-  </table>
-
-
-
-
-
-## 函数
-  <table>
-    <thead>
-      <tr>
-        <th>函数名称</th>
-        <th>说明</th>
-        <th>参数</th>
-        <th>回调参数</th>
-           <th>版本</th>
-      </tr>
-    </thead>
-    <tbody>
-     <tr>
-        <td>getData</td>
-        <td>获取表单数据,返回Promise对象,判断验证是否通过</td>
-        <td>-</td>
-        <td>Promise</td>
-         <td></td>
-      </tr>
-      <tr>
-        <td>setData</td>
-        <td>插入表单数据</td>
-        <td>Object</td>
-        <td>Promise</td>
-          <td></td>
-      </tr>
-      <tr>
-        <td>reset</td>
-        <td>重置表单</td>
-        <td>-</td>
-        <td>Void</td>
-          <td></td>
-      </tr>
-      <tr>
-        <td>hide</td>
-        <td>隐藏字段</td>
-        <td>Array[fields]</td>
-        <td>Void</td>
-          <td>3.5.1</td>
-      </tr>
-      <tr>
-        <td>show</td>
-        <td>显示字段</td>
-        <td>Array[fields]</td>
-        <td>Void</td>
-          <td>3.5.1</td>
-      </tr>
-      <tr>
-        <td>disable</td>
-        <td>禁用字段</td>
-        <td>Array[fields]</td>
-        <td>Void</td>
-          <td>3.5.1</td>
-      </tr>
-      <tr>
-        <td>enable</td>
-        <td>启用字段</td>
-        <td>Array[fields]</td>
-        <td>Void</td>
-          <td>3.5.1</td>
-      </tr>
-    </tbody>
-  </table>
-
-
-
-
-
-## 事件
-  <table>
-    <thead>
-      <tr>
-        <th>事件名称</th>
-        <th>说明</th>
-        <th>回调参数</th>
-        <th>版本</th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>submit</td>
-        <td>点击提交按钮触发,也可以通过getData函数获取数据</td>
-        <td>Promise对象</td>
-        <td></td>
-      </tr>
-        <tr>
-        <td>change</td>
-        <td>当表单数据改变时触发</td>
-        <td>value,key</td>
-        <td>3.3.5</td>
-      </tr>
-    </tbody>
-  </table>
-
-

+ 0 - 384
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/design.md

@@ -1,384 +0,0 @@
-# k-form-design
-
-## 介绍
-表单设计器,通过拖拽或点击生成表单[预览地址](http://cdn.kcz66.com/k-form-design.html)
-
-建议将表单设计器组件放到全屏组件或页面使用,使用表格布局时,在设计界面右键可以添加行列和合并单元格
-
-## 基础用法
-
-![2](assets/2-1584791563798.gif)
-
-```  html
-<template>
-  <div>
-    <k-form-design />
-  </div>
-</template>
-```
-
-## 自定义标题
-
-![2](assets/2-1584792004589.gif)
-
-> 使用title属性自定义标题
-
-```  html
-<template>
-  <div>
-    <k-form-design 
-      title="我是修改后的标题" 
-     />
-  </div>
-</template>
-<script>
-```
-
-## 自定义左侧控件列表
-
-![2](assets/2-1584793506316.gif)
-
-> 使用组件fields属性,自定义左侧控件列表
-
-```html
-<template>
-  <k-form-design showToolbarsText :fields="['input', 'textarea']" />
-</template>
-```
-
-## 自定义头部操作按钮
-
-![2](assets/2-1584791471830.gif)
-
-> 通过toolbars属性显示隐藏默认按钮
-
-```html
-<template>
-  <div>
-   <k-form-design :toolbars="['save', 'preview', 'importJson']" />
-  </div>
-</template>
-```
-## 切换操作按钮位置
-
-![12312](assets/12312.jpg)
-
-> 使用toolbarsTop属性切换操作按钮位置
-
-```html
-<template>
-  <div>
-   <k-form-design toolbarsTop />
-  </div>
-</template>
-```
-## 插入自定义按钮
-
-![2](assets/2-1584791416791.gif)
-
-> 使用插槽插入自定义按钮(需要项目引入a-tooltip,a-icon组件)
-
-```html
-<template>
-  <div>
-   <k-form-design >
-     <!-- 左侧操作区域插槽 start -->
-      <template slot="left-action">
-        <a-tooltip title="测试左侧插槽">
-          <a>
-            <a-icon type="experiment" />
-            <!-- <span>测试左侧插槽(showToolbarsText属性为true时需要)</span> -->
-          </a>
-        </a-tooltip>
-      </template>
-     <!-- 左侧操作区域插槽 end -->
-     <!-- 右侧操作区域插槽 start -->
-      <template slot="right-action">
-        <a-tooltip title="测试右侧插槽">
-          <a>
-            <a-icon type="experiment" />
-            <!-- <span>测试右侧插槽(showToolbarsText属性为true时需要)</span> -->
-          </a>
-        </a-tooltip>
-      </template>
-     <!-- 右侧操作区域插槽 end -->
-    </k-form-design>
-  </div>
-</template>
-```
-
-## 表单设计器save事件,点击保存时触发
-
-![2](assets/2-1584791884885.gif)
-
-> 使用组件save事件保存json
-
-```  html
-<template>
-  <div>
-    <k-form-design @save="handleSave" />
-  </div>
-</template>
-<script>
-export default {
-  methods: {
-    handleSave(values) {
-      alert("触发保存方法");
-      console.log(values);
-    }
-  }
-};
-</script>
-```
-## 导入json数据
-
-![2](assets/2-1584792430622.gif)
-
-> 使用组件handleSetData函数导入json数据
-
-```  html
-<template>
-  <k-form-design ref='kfd' />
-</template>
-<script>
-export default {
-  data () {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: 'textarea',
-            label: '文本框',
-            icon: 'icon-edit',
-            options: {
-              width: '100%',
-              minRows: 4,
-              maxRows: 6,
-              defaultValue: '',
-              disabled: false,
-              placeholder: '请输入'
-            },
-            model: 'textarea_1584772782841',
-            key: 'textarea_1584772782841',
-            rules: [
-              {
-                required: false,
-                message: '必填项'
-              }
-            ]
-          }
-        ],
-        config: {
-          layout: 'horizontal',
-          labelCol: {
-            span: 4
-          },
-          wrapperCol: {
-            span: 18
-          },
-          hideRequiredMark: false,
-          customStyle: ''
-        }
-      }
-    }
-  },
-  methods: {
-    importData () {
-      this.$refs.kfd.handleSetData(this.jsonData)
-    }
-  },
-  mounted () {
-    this.importData()
-  }
-}
-</script>
-```
-
-
-
-## API
-  <table>
-    <thead>
-      <tr>
-        <th>参数</th>
-        <th>说明</th>
-        <th>类型</th>
-        <th>默认值</th>
-        <th>版本</th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>title</td>
-        <td>表单设计器标题</td>
-        <td>String</td>
-        <td>"表单设计器 "</td>
-        <td></td>
-      </tr>
-      <tr>
-        <td>showHead</td>
-        <td>是否显示head部分</td>
-        <td>Boolean</td>
-        <td>true</td>
-        <td></td>
-      </tr>
-      <tr>
-        <td>toolbars</td>
-        <td>显示对应的操作按钮</td>
-        <td>Array</td>
-        <td>[
-        'save',
-        'preview',
-        'importJson',
-        'exportJson',
-        'exportCode',
-        'reset',
-        'close',
-        "undo",
-        "redo"
-      ]</td>
-        <td>3.7.8</td>
-      </tr>
-      <tr>
-        <td>toolbarsTop</td>
-        <td>切换操作按钮位置</td>
-        <td>Boolean</td>
-        <td>false</td>
-        <td>3.1.6</td>
-      </tr>
-       <tr>
-        <td>showToolbarsText</td>
-        <td>是否显示操作按钮文本</td>
-        <td>Boolean</td>
-        <td>false</td>
-        <td>3.1.1</td>
-      </tr>
-       <tr>
-        <td>fields</td>
-        <td>自定义左侧控件列表</td>
-        <td>Array</td>
-        <td style="max-width:280px;">v3.8.7已删除该属性,请使用节点管理对象设置</td>
-       <td>3.0.7</td>
-      </tr>
-        <tr>
-        <td>hideModel</td>
-        <td>隐藏数据字段</td>
-        <td>Boolean</td>
-        <td>false</td>
-        <td>3.5.1</td>
-      </tr>
-        <tr>
-        <td>hideResetHint</td>
-        <td>隐藏清空按钮的确认提示</td>
-        <td>Boolean</td>
-        <td>false</td>
-        <td>3.7.3</td>
-      </tr>
-    </tbody>
-  </table>
-
-
-
-## Slots 
-
-3.0.7及更高版本
-
-<table>
-    <thead>
-      <tr>
-        <th>label</th>
-        <th>说明</th>
-      </tr>
-    </thead>
-    <tbody>
-     <tr>
-     <td>left-action</td>
-     <td>表单设计器头部左侧操作区域插槽</td>
-     </tr>
-         <tr>
-     <td>right-action</td>
-     <td>表单设计器头部右侧操作区域插槽</td>
-     </tr>
-     </tbody>
-</table>
-
-## 函数
-  <table>
-    <thead>
-      <tr>
-        <th>函数名称</th>
-        <th>说明</th>
-        <th>参数</th>
-        <th>回调参数</th>
-        <th>版本</th>
-      </tr>
-    </thead>
-    <tbody>
-     <tr>
-        <td>handleSetData</td>
-        <td>导入json数据,继续编辑</td>
-        <td>json</td>
-        <td>Boolean</td>
-        <td></td>
-      </tr>
-      <tr>
-        <td>getFieldSchema</td>
-        <td>获取所有输入控件的结构数据,包括model,key,type等</td>
-        <td>-</td>
-        <td>Array</td>
-        <td>3.7.5</td>
-      </tr>
-            <tr>
-        <td>handleSave</td>
-        <td>保存,触发save事件</td>
-        <td>-</td>
-        <td>Void</td>
-        <td></td>
-      </tr>
-      <tr>
-        <td>handleClose</td>
-        <td>关闭,触发close事件</td>
-        <td>-</td>
-        <td>Void</td>
-        <td></td>
-      </tr>
-      <tr>
-        <td>handleReset</td>
-        <td>清除表单</td>
-        <td>-</td>
-        <td>Boolean</td>
-        <td></td>
-      </tr>
-        <tr>
-        <td>getValue</td>
-        <td>获取json数据</td>
-        <td>-</td>
-        <td>Object</td>
-        <td>3.7.3</td>
-      </tr>
-    </tbody>
-  </table>
-
-
-  ## 事件
-  <table>
-    <thead>
-      <tr>
-        <th>事件名称</th>
-        <th colspan="2">说明</th>
-        <th>回调参数</th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>save</td>
-        <td colspan="2">点击保存按钮时回调</td>
-        <td>json</td>
-      </tr>
-      <tr>
-        <td>close</td>
-        <td colspan="2">点击关闭按钮时回调</td>
-        <td>Void</td>
-      </tr>
-    </tbody>
-  </table>

+ 0 - 40
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/form-build1.html

@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <title>表单设计器kcz</title>
-  <meta charset="UTF-8">
-  <link rel="stylesheet" href="//unpkg.com/k-form-design/lib/k-form-design.css">
-</head>
-
-<body>
-  <div id="app">
-    <k-form-build ref="kfb" :value=" jsonData"></k-form-build>
-    <button @click="handleGetData">获取数据</button>
-  </div>
-  <script src="//cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
-  <!-- <script src="http://cdn.kcz66.com/vue.min.js"></script> -->
-  <script src="//unpkg.com/k-form-design/lib/k-form-design.umd.min.js"></script>
-  <script>
-    let jsonData = { "list": [{ "type": "input", "label": "单行文本", "options": { "width": "100%", "defaultValue": "", "placeholder": "请输入", "disabled": false }, "model": "input_1577875678405", "key": "input_1577875678405", "rules": [{ "required": true, "message": "必填项" }] }, { "type": "date", "label": "日期选择器", "options": { "width": "100%", "defaultValue": "", "range": false, "showTime": false, "disabled": false, "clearable": false, "placeholder": "请选择", "rangePlaceholder": ["开始时间", "结束时间"], "format": "YYYY-MM-DD" }, "model": "date_1577877450971", "key": "date_1577877450971", "rules": [{ "required": true, "message": "必填项" }] }, { "type": "textarea", "label": "多行文本", "options": { "width": "100%", "minRows": 4, "maxRows": 6, "defaultValue": "", "disabled": false, "placeholder": "请输入" }, "model": "textarea_1577877446659", "key": "textarea_1577877446659", "rules": [{ "required": true, "message": "必填项" }] }, { "type": "rate", "label": "评分", "options": { "defaultValue": 0, "max": 5, "disabled": false, "allowHalf": false }, "model": "rate_1577877468717", "key": "rate_1577877468717", "rules": [{ "required": true, "message": "必填项" }] }], "config": { "layout": "horizontal", "labelCol": { "span": 4 }, "wrapperCol": { "span": 18 }, "hideRequiredMark": false, "customStyle": "" } }
-    let vm = new Vue({
-      el: '#app',
-      data: {
-        jsonData
-      },
-      methods: {
-        handleGetData() {
-          // 使用getData函数获取数据
-          this.$refs.kfb.getData().then(values => {
-            console.log('验证通过', values)
-            alert(JSON.stringify(values,null,'\r\n'))
-          }).catch(() => {
-            console.log('验证未通过,获取失败')
-          })
-        }
-      }
-    })
-  </script>
-</body>
-
-</html>

+ 0 - 116
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/form-build2.html

@@ -1,116 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-  <title>表单设计器kcz</title>
-  <meta charset="UTF-8">
-  <link rel="stylesheet" href="//unpkg.com/k-form-design/lib/k-form-design.css">
-</head>
-
-<body>
-  <div id="app">
-    <k-form-build ref="kfb" :value="jsonData"></k-form-build>
-    <button @click="handleChange">修改数据</button>
-    <button @click="handleReset">重置表单</button>
-  </div>
-  <script src="//cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
-  <!-- <script src="http://cdn.kcz66.com/vue.min.js"></script> -->
-  <script src="//unpkg.com/k-form-design/lib/k-form-design.umd.min.js"></script>
-  <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script> -->
-  <script>
-    let jsonData = {
-        list: [
-          {
-            type: 'input',
-            label: '单行文本',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              placeholder: '请输入',
-              disabled: false
-            },
-            model: 'input_1577875678405',
-            key: 'input_1577875678405',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'date',
-            label: '日期选择器',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              range: false,
-              showTime: false,
-              disabled: false,
-              clearable: false,
-              placeholder: '请选择',
-              rangePlaceholder: ['开始时间', '结束时间'],
-              format: 'YYYY-MM-DD'
-            },
-            model: 'date_1577877450971',
-            key: 'date_1577877450971',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'textarea',
-            label: '多行文本',
-            options: {
-              width: '100%',
-              minRows: 4,
-              maxRows: 6,
-              defaultValue: '',
-              disabled: false,
-              placeholder: '请输入'
-            },
-            model: 'textarea_1577877446659',
-            key: 'textarea_1577877446659',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'rate',
-            label: '评分',
-            options: {
-              defaultValue: 0,
-              max: 5,
-              disabled: false,
-              allowHalf: false
-            },
-            model: 'rate_1577877468717',
-            key: 'rate_1577877468717',
-            rules: [{ required: true, message: '必填项' }]
-          }
-        ],
-        config: {
-          layout: 'horizontal',
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ''
-        }
-      }
-    
-    let vm = new Vue({
-      el: '#app',
-      data: {
-        jsonData
-      },
-      methods: {
-        handleChange () {
-        // 使用k-form-design组件的form属性修改表单数据
-          this.$refs.kfb.form.setFieldsValue({
-            input_1577875678405: '设置input值',
-            date_1577877450971: '2019-11-12',
-            textarea_1577877446659: '设置textarea值',
-            rate_1577877468717: 3
-          })
-        },
-        handleReset(){
-          // 重置表单
-          this.$refs.kfb.reset()
-        }
-      }
-    })
-  </script>
-</body>
-
-</html>

+ 0 - 116
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/components/form.md

@@ -1,116 +0,0 @@
-# k-form-build form属性
-## 介绍
-k-form-bulild有个this.form属性,可以用来修改表单值,参照[Ant Design form](https://www.antdv.com/components/form-cn/#api)的API
-
-  
-
-## 使用form属性修改表单value
-
-[filename](./form-build2.html ':include :type=iframe width=100% height=340px')
-
-> 代码示例
-
-```javascript
-<template>
-  <div>
-    <k-form-build ref="kfb" :value="jsonData" />
-    <button @click="handleChange">修改数据</button>
-    <button @click="handleReset">重置表单</button>
-  </div>
-</template>
-<script>
-export default {
-  data () {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: 'input',
-            name: '单行文本',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              placeholder: '请输入',
-              disabled: false
-            },
-            model: 'input_1577875678405',
-            key: 'input_1577875678405',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'date',
-            name: '日期选择器',
-            options: {
-              width: '100%',
-              defaultValue: '',
-              range: false,
-              showTime: false,
-              disabled: false,
-              clearable: false,
-              placeholder: '请选择',
-              rangePlaceholder: ['开始时间', '结束时间'],
-              format: 'YYYY-MM-DD'
-            },
-            model: 'date_1577877450971',
-            key: 'date_1577877450971',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'textarea',
-            name: '多行文本',
-            options: {
-              width: '100%',
-              minRows: 4,
-              maxRows: 6,
-              defaultValue: '',
-              disabled: false,
-              placeholder: '请输入'
-            },
-            model: 'textarea_1577877446659',
-            key: 'textarea_1577877446659',
-            rules: [{ required: true, message: '必填项' }]
-          },
-          {
-            type: 'rate',
-            name: '评分',
-            options: {
-              defaultValue: 0,
-              max: 5,
-              disabled: false,
-              allowHalf: false
-            },
-            model: 'rate_1577877468717',
-            key: 'rate_1577877468717',
-            rules: [{ required: true, message: '必填项' }]
-          }
-        ],
-        config: {
-          layout: 'horizontal',
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ''
-        }
-      }
-    }
-  },
-  methods: {
-    handleChange () {
-      // 使用k-form-design组件的form属性修改表单数据
-      this.$refs.kfb.form.setFieldsValue({
-        input_1577875678405: '设置input值',
-        date_1577877450971: '2019-11-12',
-        textarea_1577877446659: '设置textarea值',
-        rate_1577877468717: 3
-      })
-    },
-    handleReset () {
-      // 重置表单
-      this.$refs.kfb.reset()
-    }
-  }
-}
-</script>
-```
-
-

+ 0 - 58
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/config.md

@@ -1,58 +0,0 @@
-# 配置默认上传接口
-## 使用KFormDesign的setConfig函数
-
-> setConfig函数仅配置KFormDesign组件,如果需要在表单使用时动态配置,则需要配置KFormBuild组件,可以查看文档[动态修改上传组件配置](/zh-cn/components/build?id=动态修改上传组件配置)
-
-```javascript
-import KFormDesign from 'k-form-design'
-
-KFormDesign.setConfig({
- uploadFile: "", // 上传文件地址
- uploadImage: "", // 上传图片地址
- uploadFileName: "", // 上传文件name
- uploadImageName: "", // 上传图片name
- uploadFileData: { data: 223 }, // 上传文件额外参数
- uploadImageData: { data: 223 }, // 上传图片额外参数
- uploadFileHeaders: { data: 1545 }, // 上传文件请求头部
- uploadImageHeaders: { data: 1545 } // 上传图片请求头部
-})
-```
-
-## 或者单独引入设置函数
-```javascript
-// 引入 setFormDesignConfig 函数
-import { setFormDesignConfig } from 'k-form-design'
-
-setFormDesignConfig({
- uploadFile: "", // 上传文件地址
- uploadImage: "", // 上传图片地址
- uploadFileName: "", // 上传文件name
- uploadImageName: "", // 上传图片name
- uploadFileData: { data: 223 }, // 上传文件额外参数
- uploadImageData: { data: 223 }, // 上传图片额外参数
- uploadFileHeaders: { data: 1545 }, // 上传文件请求头部
- uploadImageHeaders: { data: 1545 } // 上传图片请求头部
-})
-```
-## 文件上传响应数据
-```json
-{
-  "code": 0, // 判断文件上传是否成功,结果为0成功,否则上传失败
-  "data":
-    {
-      "fileId": "文件ID",
-      "url": "文件下载地址"
-    }
-}
-```
-## 图片上传响应数据
-```json
-{
-  "code": 0, // 判断图片上传是否成功,结果为0成功,否则上传失败
-  "data":
-    {
-      "url": "图片url"
-    }
-}
-```
-

+ 0 - 3
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/donation.md

@@ -1,3 +0,0 @@
-# 捐赠
-如果你觉得k-form-design对你有帮助,欢迎给我捐赠
-![](http://cdn.kcz66.com/donation.png)

binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200330143658696.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411183148543.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411183620984.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411183727771.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411184121347.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411184445453.png


binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/assets/image-20200411184515856.png


+ 0 - 125
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/cascader.md

@@ -1,125 +0,0 @@
-# 联级选择器
-
-## 加载动态数据
-
-配置界面选择动态数据,输入数据key
-
-![image-20200411184121347](assets/image-20200411184121347.png)
-
-定义动态数据
-
-![image-20200411184445453](assets/image-20200411184445453.png)
-
-最后使用k-form-build组件dynamicData属性传入动态数据
-
-![image-20200411184515856](assets/image-20200411184515856.png)
-
-代码示例:
-
-```html
-<template>
-  <div>
-    <k-form-build
-      :value="jsonData"
-      :dynamicData="dynamicData"
-      ref="KFB"
-      @submit="handleSubmit"
-    />
-    <button @click="getData">提交</button>
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      dynamicData: {
-        cascaderData: [
-          {
-            value: "1",
-            label: "级联1",
-            children: [
-              { value: "11", label: "级联1-1" },
-              { value: "12", label: "级联1-2" }
-            ]
-          },
-          {
-            value: "2",
-            label: "级联2",
-            children: [
-              { value: "22", label: "级联2-2" },
-              { value: "222", label: "级联2-2" },
-              { value: "232", label: "级联2-3" }
-            ]
-          }
-        ]
-      },
-      jsonData: {
-        list: [
-          {
-            type: "cascader",
-            label: "级联选择器",
-            icon: "icon-guanlian",
-            options: {
-              disabled: false,
-              showSearch: false,
-              placeholder: "请选择",
-              clearable: false,
-              dynamicKey: "cascaderData",
-              dynamic: true,
-              options: [
-                {
-                  value: "1",
-                  label: "选项1",
-                  children: [{ value: "11", label: "选项11" }]
-                },
-                {
-                  value: "2",
-                  label: "选项2",
-                  children: [{ value: "22", label: "选项22" }]
-                }
-              ]
-            },
-            model: "cascader_1586601654906",
-            key: "cascader_1586601654906",
-            rules: [{ required: false, message: "必填项" }]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleSubmit(p) {
-      // 通过表单提交按钮触发,获取promise对象
-      p()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    getData() {
-      // 通过函数获取数据
-      this.$refs.KFB.getData()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    }
-  }
-};
-</script>
-```
-

+ 0 - 100
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/custom.md

@@ -1,100 +0,0 @@
-# 添加自定义组件
-
-可以参考[使用Demo](https://gitee.com/kcz66/k-form-design-demo)
-## ~~使用KFormDesign的setConfig函数~~v3.8.4 移除
-
- ## 推荐使用 nodeSchema 添加自定义组件 (v3.8.7以上)
-
-```javascript
-import { nodeSchema } from 'k-form-design'
-
-const Cmp = {
-  label: "cmp",
-  render: function(h) {
-    return h("div", "我是自定义组件");
-  }
-};
-
-// 添加组件
-nodeSchema.addSchemas([
-  {
-    type: "demo", // 表单类型
-    label: "自定义组件", // 标题文字
-    icon: "icon-gallery",
-    component: Cmp,
-    options: {
-      defaultValue: undefined,
-      multiple: false,
-      disabled: false,
-      width: "100%",
-      clearable: true,
-      placeholder: "请选择",
-      showSearch: false,
-      showLabel: true
-    },
-    model: "",
-    key: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  }
-]);
-
-// 添加分组
-nodeSchema.addSchemaGroup({
-  title: "自定义组件",
-  list: ["demo"]
-});
-```
-
-
-
-## 引入 setFormDesignConfig 函数
-```javascript
-
-import { setFormDesignConfig } from 'k-form-design'
-
-// 自定义组件
-let Cmp = {
-  label: "cmp",
-  render: function(h) {
-    return h("div", "我是自定义组件");
-  }
-};
-
-// 或者引入.vue文件
-// import Cmp from './Cmp.vue'
-
-// 使用函数配置
-setFormDesignConfig({
-  title: "自定义字段",
-  list: [
-    {
-      type: "demo", // 组件类型
-      label: "自定义组件", // 组件名称
-      component: Cmp, // 组件
-      options: {
-        defaultValue: undefined, // 可选值
-        multiple: false, // 可选值
-        disabled: false, // 可选值
-        width: "100%",
-        clearable: true, // 可选值
-        placeholder: "请选择", // 可选值
-        showSearch: false // 可选值
-      },
-      model: "", // 可选值
-      key: "",
-      rules: [ // 可选值
-        {
-          required: false,
-          message: "必填项"
-        }
-      ]
-    }
-  ]
-})
-```
-

+ 0 - 40
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/editor.md

@@ -1,40 +0,0 @@
-# 富文本
-
-## 富文本样式问题
-
-使用富文本导出数据转成html时缺少样式问题
-
-> 解决:引入snow.css,在需要展示的页面中用如下元素包裹即可
-
-```html
-<div class="ql-container ql-snow">
-    <div class="ql-editor" v-html="content">
-    </div>
-</div>
-```
-
-> 示例
-
-![image-20200330143658696](assets/image-20200330143658696.png)
-
-```html
-<template>
-  <div class="ql-container ql-snow">
-    <div class="ql-editor" v-html="editor_1585549756333"></div>
-  </div>
-</template>
-
-<script>
-import "quill/dist/quill.snow.css";
-
-export default {
-  data() {
-    return {
-      editor_1585549756333:
-        '<blockquote>2342342</blockquote><pre class="ql-syntax" spellcheck="false">成功的秘诀,在永不改变既定的目的</pre><p><br></p><p><strong class="ql-size-large"><em>不断的奋斗就是走上成功之路</em><span class="ql-cursor"></span></strong></p>'
-    };
-  }
-};
-</script>
-```
-

+ 0 - 128
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/nodeSchema.md

@@ -1,128 +0,0 @@
-# NodeSchema(节点管理对象)
-
-> 这是一个节点管理对象,主要用于管理左侧面板中可拖拽的组件列表及分组
-
-引入方式
-
-```javascript
-import { nodeSchema } from 'k-form-design'
-```
-
-## 添加组件(addSchemas)
-
-```javascript
-const Cmp = {
-  label: "cmp",
-  render: function(h) {
-    return h("div", "我是自定义组件");
-  }
-};
-
-// 添加组件
-nodeSchema.addSchemas([
-  {
-    type: "demo", // 表单类型
-    label: "自定义组件", // 标题文字
-    icon: "icon-gallery",
-    component: Cmp,
-    options: {
-      defaultValue: undefined,
-      multiple: false,
-      disabled: false,
-      width: "100%",
-      clearable: true,
-      placeholder: "请选择",
-      showSearch: false,
-      showLabel: true
-    },
-    model: "",
-    key: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  }
-]);
-```
-
-## 添加分组(addSchemaGroup)
-
-```javascript
-// 添加分组
-nodeSchema.addSchemaGroup({
-  title: "自定义组件",
-  list: ["demo"]
-});
-```
-添加自定义组件分组还可以使用以下方法
-## 设置分组(setSchemaGroup)
-
-> 可以通过这个方法自定义左侧面板显示组件和分组
-
-```javascript
-// 设置分组
-// 需要隐藏的组件删减掉就ok了
-nodeSchema.setSchemaGroup([
-    {
-      title: "基础组件",
-      list: [
-        "input",
-        "textarea",
-        "number",
-        "select",
-        "checkbox",
-        "radio",
-        "date",
-        "time",
-        "rate",
-        "slider",
-        "uploadFile",
-        "uploadImg",
-        "cascader",
-        "treeSelect",
-        "batch",
-        "selectInputList",
-        "editor",
-        "switch",
-        "button",
-        "alert",
-        "text",
-        "html"
-      ]
-    },
-    {
-      title: "布局组件",
-      list: ["divider", "card", "tabs", "grid", "table"]
-    },
-    {
-  	  title: "自定义组件",
-  	  list: ["demo"]
-	}
-  ]);
-```
-
-> 删减组件或者重新分组排序示例
-
-```javascript
-nodeSchema.setSchemaGroup([
-    {
-      title: "基础组件-自定义",
-      list: [
-        "textarea",
-        "input",
-        "number",
-        "select",
-        "checkbox",
-        "editor",
-        "switch",
-      ]
-    },
-    {
-      title: "布局组件-自定义",
-      list: ["divider", "grid", "table", "card", "tabs"]
-    },
-  ]);
-```
-

+ 0 - 114
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/field/treeSelect.md

@@ -1,114 +0,0 @@
-# 树选择器
-
-## 加载动态数据
-
-配置界面选择动态数据,输入数据key
-
-![image-20200411183148543](assets/image-20200411183148543.png)
-
-定义动态数据
-
-![image-20200411183620984](assets/image-20200411183620984.png)
-
-最后使用k-form-build组件dynamicData属性传入动态数据
-
-![image-20200411183727771](assets/image-20200411183727771.png)
-
-代码示例:
-
-```html
-<template>
-  <div>
-    <k-form-build
-      :value="jsonData"
-      :dynamicData="dynamicData"
-      ref="KFB"
-      @submit="handleSubmit"
-    />
-    <button @click="getData">提交</button>
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      dynamicData: {
-        treeData: [
-          {
-            value: "1",
-            label: "树形选项1",
-            children: [
-              { value: "11", label: "树形选项1-1" },
-              { value: "12", label: "树形选项1-2" }
-            ]
-          },
-          {
-            value: "2",
-            label: "树形选项2",
-            children: [
-              { value: "21", label: "树形选项2-1" },
-              { value: "22", label: "树形选项2-2" }
-            ]
-          }
-        ]
-      },
-      jsonData: {
-        list: [
-          {
-            type: "treeSelect",
-            label: "树选择器",
-            options: {
-              disabled: false,
-              multiple: false,
-              clearable: false,
-              showSearch: false,
-              treeCheckable: false,
-              placeholder: "请选择",
-              dynamicKey: "treeData",
-              dynamic: true,
-              options: []
-            },
-            model: "treeSelect_1586601044471",
-            key: "treeSelect_1586601044471",
-            rules: [{ required: false, message: "必填项" }]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { span: 4 },
-          wrapperCol: { span: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleSubmit(p) {
-      // 通过表单提交按钮触发,获取promise对象
-      p()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    getData() {
-      // 通过函数获取数据
-      this.$refs.KFB.getData()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    }
-  }
-};
-</script>
-```
-

+ 0 - 76
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/guide/customize-theme.md

@@ -1,76 +0,0 @@
-### 定制主题
-
-k-form-design 的样式使用了 Less 作为开发语言,并定义了主色、布局色变量,你可以根据需求进行相应调整
-#### k-form-design样式变量
-```less
-@primary-color: "#13c2c2"; // 主色
-@layout-color: "#ee88aa"; // 布局色
-@title-text-color: "#ffffff"; // 标题文字颜色
-@header-height: 56px; // 头部高度
-@left-right-width: 310px; // 左右栏宽度
-@border-color: #ccc; // 边框颜色
-```
-#### 首先需要引入less文件才能生效
-```javascript
-// 引入less文件后,无需再引入上述的css文件
-import 'k-form-design/styles/k-form-design.less'
-```
-#### 定制方式
-我们使用 modifyVars 的方式来进行覆盖变量。下面将针对不同的场景提供一些常用的定制方式
-
-#### 在 webpack 中定制主题
-我们以 webpack@4 为例进行说明,以下是一个 webpack.config.js 的典型例子,对 less-loader 的 options 属性进行相应配置
-```javascript
-// webpack.config.js
-module.exports = {
-  rules: [{
-    test: /\.less$/,
-    use: [{
-      loader: 'style-loader',
-    }, {
-      loader: 'css-loader', // translates CSS into CommonJS
-    }, {
-      loader: 'less-loader', // compiles Less to CSS
-     options: {
-       modifyVars: {
-         "primary-color": "#13c2c2",
-          "layout-color": "#ee88aa"
-       },
-       javascriptEnabled: true,
-     },
-    }],
-    // ...other rules
-  }],
-  // ...other config
-}
-```
-#### 在 vue cli 3 中定制主题
-项目根目录下新建文件vue.config.js 
-```javascript
-// vue.config.js
-module.exports = {
-  css: {
-    loaderOptions: {
-      less: {
-        modifyVars: {
-          "primary-color": "#13c2c2",
-          "layout-color": "#ee88aa"
-        },
-        javascriptEnabled: true
-      }
-    }
-  }
-}
-```
-#### ant-design-vue主题自定义
-首先需要安装ant-design-vue
-```bash
-yarn add ant-design-vue
-```
-引入组件样式
-```javascript
-// 需要在k-form-design样式后引入,覆盖默认的样式
-import 'ant-design-vue/dist/antd.less'
-```
-> 参考[ant-design-vue 定制主题](https://www.antdv.com/docs/vue/customize-theme-cn/#Ant-Design-Vue-%E7%9A%84%E6%A0%B7%E5%BC%8F%E5%8F%98%E9%87%8F)
-

+ 0 - 84
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/guide/soundCode.md

@@ -1,84 +0,0 @@
-> 本文档以vue-cli3搭建的项目为例
-
-### 1.git源码到本地
-
-```git clone https://gitee.com/kcz66/k-form-design.git```
-
-
-
-### 2.将源码复制到你的项目的组件目录中
-
-一般为components目录,建立"k-form-design目录",将以源码根目录的下三个文件夹复制进来
-
-packages、static、styles
-
-
-
-> 目录结构如下:
-
-```
-
-├─components
-│  └─k-form-design	// 新建k-form-design目录
-│  │	├─packages	// 复制packages文件夹
-│  │	├─static	// 复制static文件夹
-│  │	└─styles	// 复制styles文件夹
-
-```
-
-
-
-### 3. 设置项目中k-form-design需要的依赖
-
-> 这是k-form-design需要的依赖,将下面的依赖与自己的项目对比,将没有安装的依赖都安装一下
-
-```json
-  "dependencies": {
-    "clipboard": "^2.0.6",
-    "moment": "^2.24.0",
-    "vue-codemirror-lite": "^1.0.4",
-    "vue-quill-editor": "^3.0.6",
-    "vuedraggable": "^2.23.2"
-  },
-  "devDependencies": {
-    "ant-design-vue": "^1.5.1",
-    "less": "^3.0.4",
-    "less-loader": "^4.1.0"
-  },
-```
-
-
-
-### 4. 启用less内联javascript
-
-> vue.config.js中less配置,如果已配置可跳过
-
-```js
-module.exports = {
-  css: {
-    loaderOptions: {
-      less: {
-        modifyVars: {
-          'primary-color': '#13c2c2',
-          'layout-color': '#9867f7'
-        },
-        javascriptEnabled: true
-      }
-    }
-  }
-}
-```
-
-> 如果项目中的less及less-loader与上面依赖版本不一致,可能存在版本差异,可以自行去网上查找一下如何启用对应的less版本的内联javascript
-
-
-
-### 5. 注册全局组件
-
-> 在main.js中注册组件,代码如下:
-
-```javascript
-import KFormDesign from './components/k-form-design/packages/index.js'
-import './components/k-form-design/styles/form-design.less'
-Vue.use(KFormDesign)
-```

+ 0 - 85
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/guide/start.md

@@ -1,85 +0,0 @@
-
-## 快速上手
-k-form-design 可以通过拖拽配置操作快速构建表单![](https://img.shields.io/github/stars/Kchengz/k-form-design?style=social)
-> 在开始之前,推荐先学习 Vue 和 ES2015,并正确安装和配置了 Node.js v8.9 或以上。官方指南假设你已了解关于 HTML、CSS 和 JavaScript 的中级知识,并且已经完全掌握了 Vue 的正确开发方式
-
-
-#### 1. 安装脚手架工具 vue-cli
-```
-npm install -g @vue/cli
-# OR
-yarn global add @vue/cli
-```
-
-#### 2. 创建一个项目
-
-使用命令行初始化。
-```
-vue create demo
-```
-并配置项目。
-
-若安装缓慢报错,可尝试用 cnpm 或别的镜像源自行安装
-
-#### 3. 下载依赖
-
-> 安装表单设计器
-
-```cmd
-npm i k-form-design --save
- 
-# OR
-yarn add k-form-design
-```
-> 安装 ant-design-vue UI ,推荐 vue2 版本最新的 1.7.8版本
-
-```cmd
-npm i ant-design-vue@1.7.8 --save
-
-# OR
-yarn add ant-design-vue@1.7.8
-```
-
-
-
-#### 4. 使用组件
-
-main.js引入
-
-完整引入
-```javascript
-// 在main.js引入
-
-// 注:useComponents 需放最上面,优先注册懒加载组件
-import { useAntd } from 'k-form-design/packages/core/useComponents'
-import KFormDesign from 'k-form-design/packages/use.js'
-import 'k-form-design/lib/k-form-design.css'
-
-useAntd(Vue)
-Vue.use(KFormDesign)
-```
-以上代码便完整引入 k-form-design,组件为懒加载方式,并不会一次性加载所有组件
-
-如果您不想使用懒加载的方式使用preUseComponents替换useComponents文件,就可以切换到预加载组件的方式
-
-```javascript
-- import { useAntd } from 'k-form-design/packages/core/useComponents'
-+ import { useAntd } from 'k-form-design/packages/core/preUseComponents'
-```
-
-
-
-#### ~~5. 引入mini包(3.6.0版本+)~~3.8.1 版本默认不再集成ant-design-vue,请参照其他方式使用
-
-~~默认包是集成了antd ui的,如果项目中也有使用antd ui,可以选择引入mini包来达到减小最终项目的体积,当然要确认项目中已经引入[components_use.js](https://gitee.com/kcz66/k-form-design/blob/master/packages/core/components_use.js)中的组件~~
-
-#### 按需加载
-
-```javascript
-import { KFormDesign, KFormBuild } from "k-form-design/packages/use.js";
-import "k-form-design/lib/k-form-design.css";
-```
-
-#### 使用建议
-> k-form-design基于[Ant Design](https://www.antdv.com/docs/vue/introduce-cn/)组件,k-form-build组件里面提供了form属性可以调用,建议先了解[Ant Design form](https://www.antdv.com/components/form-cn/#api)组件的API
-

+ 0 - 28
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/zh-cn/vue-cli-ie.md

@@ -1,28 +0,0 @@
-
-### 问题:使用k-form-design后在ie浏览器打开,出现属性不支持等问题
-
-环境:vue cli3以上版本搭建的项目
-
-> 注:由于富文本使用了vue-quill-editor,vue-quill-editor在IE11以下的浏览器会报错,所以就算使用babel/polyfill也只能兼容 IE11
-
-### Installation
-
-```
-npm install babel/polyfill --save
-# or
-yarn add babel/polyfill
-```
-
-### `main.js`文件(项目入口)
-
-```js
-// 在顶部引入@babel/polyfill处理兼容,以确保首先加载polyfill
-import '@babel/polyfill'
-
-import Vue from 'vue'
-```
-
-
-#### 参考文章:
-
-[ant-design-vue的兼容问题](https://blog.csdn.net/lydxwj/article/details/89912983)

+ 0 - 18
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/docs/自定义组件可修改属性.txt

@@ -1,18 +0,0 @@
-标题 label
-
-数据字段 model
-
-占位内容 placeholder
-
-校验规制  rules  required
-options {
-  宽度  width
-  步长  step
-  最小值  min
-  最大值  max
-  默认值  defaultValue
-  禁用  disabled
-  只读  readonly
-  可清除  clearable
-  多选  multiple
-}

+ 0 - 10
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/App.vue

@@ -1,10 +0,0 @@
-<template>
-  <div id="app">
-    <router-view />
-  </div>
-</template>
-<script>
-export default {
-  name: "app"
-};
-</script>

binární
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/assets/logo.png


+ 0 - 26
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/components/CustomComponent/index.vue

@@ -1,26 +0,0 @@
-
-<template>
-  <div>
-    <input
-      type="text"
-      :disabled="disabled"
-      :value="value"
-      @input="handleChange"
-    />
-  </div>
-</template>
-<script>
-export default {
-  name: "cc",
-  props: ["record", "value", "disabled", "dynamicData"],
-  methods: {
-    handleChange(e) {
-      // 使用 onChange 事件修改值
-      this.$emit("change", e.target.value);
-    }
-  },
-  created() {
-    console.log(this.$attrs)
-  }
-};
-</script>

+ 0 - 79
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/main.js

@@ -1,79 +0,0 @@
-/*
- * @Descripttion:
- * @Author: kcz
- * @Date: 2021-05-02 16:04:02
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-26 23:28:19
- */
-// 引入@babel/polyfill处理兼容
-import "@babel/polyfill";
-
-import Vue from "vue";
-import App from "./App.vue";
-import router from "./router/";
-// import Cmp from "./components/CustomComponent/index.vue";
-
-// 预加载组件
-// import "../packages/core/preUseComponents";
-// 懒加载组件
-import { useAntd } from "../packages/core/useComponents";
-import { nodeSchema } from "../packages/mini";
-import KFormDesign from "../packages/use";
-
-const Cmp = {
-  label: "cmp",
-  render: function(h) {
-    return h("div", "我是自定义组件");
-  }
-};
-
-// 添加字段
-nodeSchema.addSchemas([
-  {
-    type: "demo", // 表单类型
-    label: "自定义组件", // 标题文字
-    icon: "icon-gallery",
-    component: Cmp,
-    options: {
-      defaultValue: undefined,
-      multiple: false,
-      disabled: false,
-      width: "100%",
-      clearable: true,
-      placeholder: "请选择",
-      showSearch: false,
-      showLabel: true
-    },
-    model: "",
-    key: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  }
-]);
-
-// 添加分组
-nodeSchema.addSchemaGroup({
-  title: "自定义组件",
-  list: ["demo"]
-});
-
-Vue.use(KFormDesign);
-useAntd(Vue);
-// KFormDesign.setFormBuildConfig({
-//   dynamicData: {
-//     test: [
-//       { label: "test", value: "1" },
-//       { label: "test1", value: "2" }
-//     ]
-//   }
-// });
-Vue.config.productionTip = false;
-
-new Vue({
-  router,
-  render: h => h(App)
-}).$mount("#app");

+ 0 - 29
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/router/index.js

@@ -1,29 +0,0 @@
-import Vue from "vue";
-import Router from "vue-router";
-
-Vue.use(Router);
-
-export default new Router({
-  routes: [
-    {
-      path: "/",
-      name: "home",
-      redirect: "formDesign"
-    },
-    {
-      path: "/formDesign",
-      name: "formDesign",
-      component: () => import("../views/formDesign/index.vue")
-    },
-    {
-      path: "/demo",
-      name: "demo",
-      component: () => import("../views/demo/index.vue")
-    },
-    {
-      path: "/build",
-      name: "build",
-      component: () => import("../views/build/index.vue")
-    }
-  ]
-});

+ 0 - 105
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/views/build/index.vue

@@ -1,105 +0,0 @@
-<template>
-  <div id="app">
-    <button @click="setData">set</button>
-    <div v-show="show">
-      <k-form-build ref="kfb" :value="configJsonData" />
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  name: "App",
-  components: {},
-  data() {
-    return {
-      show: false,
-      configJsonData: {}
-    };
-  },
-  methods: {
-    setData() {
-      this.configJsonData = {
-        list: [
-          {
-            type: "input",
-            label: "时间",
-            options: {
-              type: "text",
-              width: "100%",
-              defaultValue: "",
-              placeholder: "请输入",
-              clearable: false,
-              maxLength: null,
-              addonBefore: "",
-              addonAfter: "秒",
-              hidden: false,
-              disabled: false,
-            },
-            model: "time",
-            key: "input_1664028803991",
-            help: "这是时间",
-            rules: [
-              {
-                required: true,
-                message: "必填项"
-              }
-            ]
-          },
-          {
-            type: "input",
-            label: "次数",
-            options: {
-              type: "text",
-              width: "100%",
-              defaultValue: "",
-              placeholder: "请输入",
-              clearable: false,
-              maxLength: null,
-              addonBefore: "",
-              addonAfter: "",
-              hidden: false,
-              disabled: false
-            },
-            model: "count",
-            key: "input_1664028804858",
-            help: "",
-            rules: [
-              {
-                required: true,
-                message: "必填项"
-              }
-            ]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: {
-            xs: 4,
-            sm: 4,
-            md: 4,
-            lg: 4,
-            xl: 4,
-            xxl: 4
-          },
-          labelWidth: 100,
-          labelLayout: "flex",
-          wrapperCol: {
-            xs: 18,
-            sm: 18,
-            md: 18,
-            lg: 18,
-            xl: 18,
-            xxl: 18
-          },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      };
-      this.show = true;
-      const data = { count: "1000", time: "10" };
-      this.$refs.kfb.setData(data);
-    }
-  }
-};
-</script>

+ 0 - 460
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/views/demo/index.vue

@@ -1,460 +0,0 @@
-<template>
-  <div>
-    <k-form-build
-      :value="jsonData"
-      :defaultValue="{ slider_1619948887083: 12, input_1619948973892: '23423' }"
-      ref="KFB"
-      @submit="handleSubmit"
-    />
-
-    <button @click="hide">隐藏</button>
-    <button @click="show">显示</button>
-    <button @click="disable">禁用</button>
-    <button @click="enable">启用</button>
-    <button @click="getData">提交</button>
-    <button @click="setData">数据回显</button>
-  </div>
-</template>
-<script>
-export default {
-  name: "Demo",
-  data() {
-    return {
-      jsonData: {
-        list: [
-          {
-            type: "button",
-            label: "按钮",
-            options: {
-              type: "primary",
-              handle: "submit",
-              dynamicFun: "",
-              hidden: true,
-              disabled: false,
-              color:'red'
-            },
-            key: "button_1619948868332"
-          },
-          {
-            type: "slider",
-            label: "滑动输入条",
-            icon: "icon-menu",
-            options: {
-              width: "100%",
-              defaultValue: 0,
-              disabled: false,
-              hidden: false,
-              min: 0,
-              max: 100,
-              step: 1,
-              showInput: false,
-            },
-            model: "slider_1619948887083",
-            key: "slider_1619948887083",
-            help: "",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "rate",
-            label: "评分",
-            icon: "icon-pingfen_moren",
-            options: {
-              defaultValue: 0,
-              max: 5,
-              disabled: false,
-              hidden: false,
-              allowHalf: false
-            },
-            model: "rate_1619948887483",
-            key: "rate_1619948887483",
-            help: "",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "uploadImg",
-            label: "上传图片",
-            icon: "icon-image",
-            options: {
-              defaultValue: "[]",
-              multiple: false,
-              hidden: false,
-              disabled: false,
-              width: "100%",
-              data: "{}",
-              limit: 3,
-              placeholder: "上传",
-              fileName: "image",
-              headers: {},
-              action: "http://cdn.kcz66.com/upload-img.txt",
-              listType: "picture-card"
-            },
-            model: "uploadImg_1619948887819",
-            key: "uploadImg_1619948887819",
-            help: "",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "card",
-            label: "卡片布局",
-            list: [
-              {
-                type: "date",
-                label: "日期选择框",
-                icon: "icon-calendar",
-                options: {
-                  width: "100%",
-                  defaultValue: "",
-                  rangeDefaultValue: [],
-                  range: false,
-                  showTime: false,
-                  disabled: false,
-                  hidden: false,
-                  clearable: false,
-                  placeholder: "请选择",
-                  rangePlaceholder: ["开始时间", "结束时间"],
-                  format: "YYYY-MM-DD"
-                },
-                model: "date_1619948975172",
-                key: "date_1619948975172",
-                help: "",
-                rules: [{ required: false, message: "必填项" }]
-              },
-              {
-                type: "input",
-                label: "输入框",
-                icon: "icon-write",
-                options: {
-                  type: "text",
-                  width: "100%",
-                  defaultValue: "",
-                  placeholder: "请输入",
-                  clearable: false,
-                  maxLength: null,
-                  hidden: false,
-                  disabled: false
-                },
-                model: "input_1619948973892",
-                key: "input_1619948973892",
-                help: "",
-                prefix: "",
-                suffix: "",
-                rules: [{ required: false, message: "必填项" }]
-              },
-              {
-                type: "textarea",
-                label: "文本框",
-                icon: "icon-edit",
-                options: {
-                  width: "100%",
-                  minRows: 4,
-                  maxRows: 6,
-                  maxLength: null,
-                  defaultValue: "",
-                  clearable: false,
-                  hidden: false,
-                  disabled: false,
-                  placeholder: "请输入"
-                },
-                model: "textarea_1619948974269",
-                key: "textarea_1619948974269",
-                help: "",
-                rules: [{ required: false, message: "必填项" }]
-              }
-            ],
-            key: "card_1619948983395"
-          },
-          {
-            type: "table",
-            label: "表格布局",
-            trs: [
-              {
-                tds: [
-                  {
-                    colspan: 1,
-                    rowspan: 1,
-                    list: [
-                      {
-                        type: "slider",
-                        label: "滑动输入条",
-                        icon: "icon-menu",
-                        options: {
-                          width: "100%",
-                          defaultValue: 0,
-                          disabled: false,
-                          hidden: false,
-                          min: 0,
-                          max: 100,
-                          step: 1,
-                          showInput: false
-                        },
-                        model: "slider_1619948976300",
-                        key: "slider_1619948976300",
-                        help: "",
-                        rules: [{ required: false, message: "必填项" }]
-                      }
-                    ]
-                  },
-                  {
-                    colspan: 1,
-                    rowspan: 1,
-                    list: [
-                      {
-                        type: "uploadImg",
-                        label: "上传图片",
-                        icon: "icon-image",
-                        options: {
-                          defaultValue: "[]",
-                          multiple: false,
-                          hidden: false,
-                          disabled: false,
-                          width: "100%",
-                          data: "{}",
-                          limit: 3,
-                          placeholder: "上传",
-                          fileName: "image",
-                          headers: {},
-                          action: "http://cdn.kcz66.com/upload-img.txt",
-                          listType: "picture-card"
-                        },
-                        model: "uploadImg_1619948977239",
-                        key: "uploadImg_1619948977239",
-                        help: "",
-                        rules: [{ required: false, message: "必填项" }]
-                      },
-                      {
-                        type: "time",
-                        label: "时间选择框",
-                        icon: "icon-time",
-                        options: {
-                          width: "100%",
-                          defaultValue: "",
-                          disabled: false,
-                          hidden: false,
-                          clearable: false,
-                          placeholder: "请选择",
-                          format: "HH:mm:ss"
-                        },
-                        model: "time_1619948975820",
-                        key: "time_1619948975820",
-                        help: "",
-                        rules: [{ required: false, message: "必填项" }]
-                      }
-                    ]
-                  }
-                ]
-              },
-              {
-                tds: [
-                  {
-                    colspan: 1,
-                    rowspan: 1,
-                    list: [
-                      {
-                        type: "radio",
-                        label: "单选框",
-                        icon: "icon-danxuan-cuxiantiao",
-                        options: {
-                          disabled: false,
-                          hidden: false,
-                          defaultValue: "",
-                          dynamicKey: "",
-                          dynamic: false,
-                          options: [
-                            { value: "1", label: "选项1" },
-                            { value: "2", label: "选项2" },
-                            { value: "3", label: "选项3" }
-                          ]
-                        },
-                        model: "radio_1619948974588",
-                        key: "radio_1619948974588",
-                        help: "",
-                        rules: [{ required: false, message: "必填项" }]
-                      }
-                    ]
-                  },
-                  {
-                    colspan: 1,
-                    rowspan: 1,
-                    list: [
-                      {
-                        type: "date",
-                        label: "日期选择框",
-                        icon: "icon-calendar",
-                        options: {
-                          width: "100%",
-                          defaultValue: "",
-                          rangeDefaultValue: [],
-                          range: false,
-                          showTime: false,
-                          disabled: false,
-                          hidden: false,
-                          clearable: false,
-                          placeholder: "请选择",
-                          rangePlaceholder: ["开始时间", "结束时间"],
-                          format: "YYYY-MM-DD"
-                        },
-                        model: "date_1619948975548",
-                        key: "date_1619948975548",
-                        help: "",
-                        rules: [{ required: false, message: "必填项" }]
-                      }
-                    ]
-                  }
-                ]
-              }
-            ],
-            options: {
-              width: "100%",
-              bordered: true,
-              bright: false,
-              small: true,
-              customStyle: ""
-            },
-            key: "table_1619948992003"
-          },
-          {
-            type: "uploadFile",
-            label: "上传文件",
-            icon: "icon-upload",
-            options: {
-              defaultValue: "[]",
-              multiple: false,
-              disabled: false,
-              hidden: false,
-              drag: false,
-              downloadWay: "a",
-              dynamicFun: "",
-              width: "100%",
-              limit: 3,
-              data: "{}",
-              fileName: "file",
-              headers: {},
-              action: "http://cdn.kcz66.com/uploadFile.txt",
-              placeholder: "上传"
-            },
-            model: "uploadFile_1619948976948",
-            key: "uploadFile_1619948976948",
-            help: "",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "cascader",
-            label: "级联选择器",
-            icon: "icon-guanlian",
-            options: {
-              disabled: false,
-              hidden: false,
-              showSearch: false,
-              placeholder: "请选择",
-              clearable: false,
-              dynamicKey: "",
-              dynamic: true,
-              options: [
-                {
-                  value: "1",
-                  label: "选项1",
-                  children: [{ value: "11", label: "选项11" }]
-                },
-                {
-                  value: "2",
-                  label: "选项2",
-                  children: [{ value: "22", label: "选项22" }]
-                }
-              ]
-            },
-            model: "cascader_1619948977724",
-            key: "cascader_1619948977724",
-            help: "",
-            rules: [{ required: false, message: "必填项" }]
-          },
-          {
-            type: "treeSelect",
-            label: "树选择器",
-            icon: "icon-tree",
-            options: {
-              disabled: false,
-              multiple: false,
-              hidden: false,
-              clearable: false,
-              showSearch: false,
-              treeCheckable: false,
-              placeholder: "请选择",
-              dynamicKey: "",
-              dynamic: true,
-              options: [
-                {
-                  value: "1",
-                  label: "选项1",
-                  children: [{ value: "11", label: "选项11" }]
-                },
-                {
-                  value: "2",
-                  label: "选项2",
-                  children: [{ value: "22", label: "选项22" }]
-                }
-              ]
-            },
-            model: "treeSelect_1619948978156",
-            key: "treeSelect_1619948978156",
-            help: "",
-            prefix: "",
-            suffix: "",
-            rules: [{ required: false, message: "必填项" }]
-          }
-        ],
-        config: {
-          layout: "horizontal",
-          labelCol: { xs: 4, sm: 4, md: 4, lg: 4, xl: 4, xxl: 4 },
-          wrapperCol: { xs: 18, sm: 18, md: 18, lg: 18, xl: 18, xxl: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      }
-    };
-  },
-  methods: {
-    handleSubmit(p) {
-      // 通过表单提交按钮触发,获取promise对象
-      p()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    show() {
-      this.$refs.KFB.show(["date_1619948975172"]);
-    },
-    hide() {
-      this.$refs.KFB.hide(["date_1619948975172"]);
-    },
-    disable() {
-      this.$refs.KFB.disable(["date_1619948975172"]);
-    },
-    enable() {
-      this.$refs.KFB.enable(["date_1619948975172"]);
-    },
-    getData() {
-      // 通过函数获取数据
-      this.$refs.KFB.getData()
-        .then(res => {
-          // 获取数据成功
-          alert(JSON.stringify(res));
-        })
-        .catch(err => {
-          console.log(err, "校验失败");
-        });
-    },
-    setData() {
-      this.$refs.KFB.setData({
-        date_1619948975172: "2019-12-12"
-      });
-    }
-  },
-  mounted() {
-    this.setData();
-  }
-};
-</script>

+ 0 - 5
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/examples/views/formDesign/index.vue

@@ -1,5 +0,0 @@
-<template>
-  <div>
-    <k-form-design hideResetHint />
-  </div>
-</template>

+ 0 - 198
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KBatch/batch.vue

@@ -1,198 +0,0 @@
-<!--
- * @Description: 动态表格 用于批量填入数据
- * @Author: kcz
- * @Date: 2020-03-27 18:36:56
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-31 20:40:41
- -->
-<template>
-  <a-form-model
-    ref="dynamicValidateForm"
-    layout="inline"
-    :model="dynamicValidateForm"
-  >
-    <a-table
-      class="batch-table"
-      :pagination="false"
-      :rowKey="record => record.key"
-      :columns="columns"
-      :dataSource="dynamicValidateForm.domains"
-      bordered
-      :scroll="{
-        x: listLength * 190 + 80 + (!record.options.hideSequence ? 60 : 0),
-        y: record.options.scrollY
-      }"
-    >
-      <template
-        v-for="item in record.list"
-        :slot="item.key"
-        slot-scope="text, row, index"
-      >
-        <KFormModelItem
-          :key="item.key + '1'"
-          :record="item"
-          :config="config"
-          :parentDisabled="disabled"
-          :index="index"
-          :domains="dynamicValidateForm.domains"
-          :dynamicData="dynamicData"
-          v-model="row[item.model]"
-          @input="handleInput"
-        />
-      </template>
-      <template slot="dynamic-opr-button" slot-scope="text, row">
-        <div style="witdh:130px">
-          <a-icon
-            title="复制添加"
-            v-if="!disabled"
-            type="copy-o"
-            class="dynamic-opr-button"
-            @click="copyDomain(row)"
-          />
-          <a-icon
-            title="删除该行"
-            v-if="
-              !disabled &&
-                record.options.minLimit < dynamicValidateForm.domains.length
-            "
-            class="dynamic-opr-button"
-            type="minus-circle-o"
-            @click="removeDomain(row)"
-          />
-        </div>
-      </template>
-    </a-table>
-    <Button type="dashed" :disabled="disabled" @click="addDomain">
-      <a-icon type="plus" />增加
-    </Button>
-  </a-form-model>
-</template>
-
-<script>
-import KFormModelItem from "../KFormModelItem/KFormModelItem";
-import { pluginManager, getUUID } from "../../utils/index";
-const Button = pluginManager.getComponent("aButton").component;
-
-export default {
-  name: "KBatch",
-
-  props: ["record", "value", "dynamicData", "config", "parentDisabled"],
-
-  components: {
-    KFormModelItem,
-    Button
-  },
-  watch: {
-    value: {
-      // value 需要深度监听及默认先执行handler函数
-      handler(val) {
-        this.dynamicValidateForm.domains = val || [];
-      },
-      immediate: true,
-      deep: true
-    }
-  },
-  data() {
-    return {
-      dynamicValidateForm: {
-        domains: []
-      }
-    };
-  },
-  computed: {
-    listLength() {
-      return this.record.list.filter(item => !item.options.hidden).length;
-    },
-    columns() {
-      const columns = [];
-      if (!this.record.options.hideSequence) {
-        columns.push({
-          title: "序号",
-          dataIndex: "sequence_index_number",
-          width: "60px",
-          align: "center",
-          customRender: (text, record, index) => {
-            return index + 1;
-          }
-        });
-      }
-
-      columns.push(
-        ...this.record.list
-          .filter(item => !item.options.hidden)
-          .map((item, index) => {
-            return {
-              title: item.label,
-              dataIndex: item.key,
-              width: index === this.record.list.length - 1 ? "" : "190px",
-              scopedSlots: { customRender: item.key }
-            };
-          })
-      );
-
-      columns.push({
-        title: "操作",
-        dataIndex: "dynamic-opr-button",
-        fixed: "right",
-        width: "80px",
-        align: "center",
-        scopedSlots: { customRender: "dynamic-opr-button" }
-      });
-
-      return columns;
-    },
-    disabled() {
-      return this.record.options.disabled || this.parentDisabled;
-    }
-  },
-  methods: {
-    validationSubform() {
-      let verification;
-      this.$refs.dynamicValidateForm.validate(valid => {
-        verification = valid;
-      });
-      return verification;
-    },
-    resetForm() {
-      this.$refs.dynamicValidateForm.resetFields();
-    },
-    removeDomain(item) {
-      const index = this.dynamicValidateForm.domains.indexOf(item);
-      if (index !== -1) {
-        this.dynamicValidateForm.domains.splice(index, 1);
-      }
-    },
-    copyDomain(record) {
-      this.dynamicValidateForm.domains.push({
-        ...record,
-        key: getUUID()
-      });
-      this.handleInput();
-    },
-    addDomain() {
-      const data = {};
-      this.record.list.forEach(item => {
-        data[item.model] = item.options.defaultValue;
-      });
-
-      this.dynamicValidateForm.domains.push({
-        ...data,
-        key: getUUID()
-      });
-      this.handleInput();
-    },
-    handleInput() {
-      this.$emit("change", this.dynamicValidateForm.domains);
-    }
-  },
-  created() {
-    // 判断是否有最小行限度
-    if (this.record.options.minLimit) {
-      // 初始化最小行
-      for (let i = 0; i < this.record.options.minLimit; i++) {
-        this.addDomain();
-      }
-    }
-  }
-};
-</script>

+ 0 - 2
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KBatch/index.js

@@ -1,2 +0,0 @@
-import KBatch from "./batch.vue";
-export default KBatch;

+ 0 - 27
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KButton/KButton.vue

@@ -1,27 +0,0 @@
-<template>
-  <span>
-    <Button
-      v-bind="this.$attrs"
-      @click="
-        record.options.handle === 'submit'
-          ? false
-          : record.options.handle === 'reset'
-          ? $attrs.onHandleReset()
-          : dynamicData[record.options.dynamicFun]
-          ? dynamicData[record.options.dynamicFun]()
-          : false
-      "
-      :html-type="record.options.handle === 'submit' ? 'submit' : undefined"
-      v-text="record.label"
-    ></Button>
-  </span>
-</template>
-<script>
-import { pluginManager } from "../../utils/index";
-const Button = pluginManager.getComponent("aButton").component;
-export default {
-  name: "KButton",
-  props: ["record", "dynamicData"],
-  components: { Button }
-};
-</script>

+ 0 - 2
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KButton/index.js

@@ -1,2 +0,0 @@
-import KButton from "./KButton.vue";
-export default KButton;

+ 0 - 118
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KChangeOption/index.vue

@@ -1,118 +0,0 @@
-<template>
-  <div class="option-change-container">
-    <a-row v-if="type === 'option' || type === 'tab'" :gutter="8">
-      <div class="option-change-box" v-for="(val, index) in value" :key="index">
-        <a-col :span="9"><Input v-model="val.label" placeholder="名称"/></a-col>
-        <a-col :span="9"><Input v-model="val.value" placeholder="值"/></a-col>
-        <a-col :span="6"
-          ><div @click="handleDelete(index)" class="option-delete-box">
-            <a-icon type="delete" /></div
-        ></a-col>
-      </div>
-      <a-col :span="24"><a @click="handleAdd">添加</a></a-col>
-    </a-row>
-
-    <a-row v-if="type === 'rules'" :gutter="8">
-      <span v-for="(val, index) in value" :key="index">
-        <div class="option-change-box" v-if="index !== 0">
-          <a-col :span="18"
-            ><Input v-model="val.message" placeholder="提示信息"
-          /></a-col>
-          <a-col :span="18"
-            ><Input v-model="val.pattern" placeholder="正则表达式pattern"
-          /></a-col>
-          <a-col :span="6"
-            ><div @click="handleDelete(index)" class="option-delete-box">
-              <a-icon type="delete" /></div
-          ></a-col>
-        </div>
-      </span>
-      <a-col :span="24"><a @click="handleAddRules">增加校验</a></a-col>
-    </a-row>
-    <a-row v-else-if="type === 'colspan'" :gutter="8">
-      <div class="option-change-box" v-for="(val, index) in value" :key="index">
-        <a-col :span="18"
-          ><InputNumber
-            style="width:100%"
-            :max="24"
-            v-model="val.span"
-            placeholder="名称"
-        /></a-col>
-        <a-col :span="6"
-          ><div @click="handleDelete(index)" class="option-delete-box">
-            <a-icon type="delete" /></div
-        ></a-col>
-      </div>
-      <a-col :span="24"><a @click="handleAddCol">添加</a></a-col>
-    </a-row>
-  </div>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 修改多选、下拉、单选等控件options的组件,添加移除校验规制的组件
- */
-import { pluginManager } from "../../utils/index";
-const Input = pluginManager.getComponent("input").component;
-const InputNumber = pluginManager.getComponent("number").component;
-export default {
-  name: "KChangeOption",
-  components: {
-    Input,
-    InputNumber
-  },
-  props: {
-    value: {
-      type: Array,
-      required: true
-    },
-    type: {
-      type: String,
-      default: "option"
-    }
-  },
-  methods: {
-    handleAdd() {
-      // 添加
-      const addData = [
-        ...this.value,
-        {
-          value: `${this.value.length + 1}`,
-          label: "选项" + (this.value.length + 1),
-          list: this.type === "tab" ? [] : undefined
-        }
-      ];
-      this.$emit("input", addData);
-    },
-    handleAddCol() {
-      // 添加栅格Col
-      const addData = [
-        ...this.value,
-        {
-          span: 12,
-          list: []
-        }
-      ];
-      this.$emit("input", addData);
-    },
-    handleAddRules() {
-      const addData = [
-        ...this.value,
-        {
-          pattern: "",
-          message: ""
-        }
-      ];
-      this.$emit("input", addData);
-    },
-    handleDelete(deleteIndex) {
-      // 删除
-      this.$emit(
-        "input",
-        this.value.filter((val, index) => index !== deleteIndex)
-      );
-    }
-  }
-};
-</script>

+ 0 - 50
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KCheckbox/index.vue

@@ -1,50 +0,0 @@
-<template>
-  <CheckboxItem :val="_val" @change="handleChange" :checked="chackboxVal">
-    {{ label }}
-  </CheckboxItem>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 多选框组件,改成v-model Boolean值
- */
-import { pluginManager } from "../../utils/index";
-const CheckboxItem = pluginManager.getComponent("checkboxItem").component;
-
-export default {
-  name: "kCheckbox",
-  components: {
-    CheckboxItem
-  },
-  data() {
-    return {
-      chackboxVal: false
-    };
-  },
-  props: {
-    value: {
-      type: Boolean,
-      default: false
-    },
-    label: {
-      type: String,
-      default: ""
-    }
-  },
-  computed: {
-    _val() {
-      this.handleSetChackboxVal(this.value);
-      return this.value;
-    }
-  },
-  methods: {
-    handleChange(e) {
-      this.$emit("input", e.target.checked);
-    },
-    handleSetChackboxVal(val) {
-      this.chackboxVal = val;
-    }
-  }
-};
-</script>

+ 0 - 96
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDatePicker/datePicker.vue

@@ -1,96 +0,0 @@
-<!--
- * @Description: 日期选择器
- * @Author: kcz
- * @Date: 2020-01-11 15:38:28
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-26 21:13:01
- -->
-<template>
-  <!-- 月份选择 -->
-  <MonthPicker
-    :style="`width:${record.options.width}`"
-    v-if="record.options.format === 'YYYY-MM' && record.options.range === false"
-    :disabled="record.options.disabled || parentDisabled"
-    :allowClear="record.options.clearable"
-    :placeholder="record.options.placeholder"
-    :format="record.options.format"
-    @change="handleSelectChange"
-    :value="date"
-  />
-  <!-- 日期选择 -->
-  <DatePicker
-    :style="`width:${record.options.width}`"
-    v-else-if="record.options.range === false"
-    :disabled="record.options.disabled || parentDisabled"
-    :show-time="record.options.showTime"
-    :allowClear="record.options.clearable"
-    :placeholder="record.options.placeholder"
-    :format="record.options.format"
-    @change="handleSelectChange"
-    :value="date"
-  />
-
-  <!-- 范围日期选择 -->
-  <RangePicker
-    :style="`width:${record.options.width}`"
-    v-else-if="record.options.range === true"
-    :show-time="record.options.showTime"
-    :disabled="record.options.disabled || parentDisabled"
-    :allowClear="record.options.clearable"
-    :placeholder="record.options.rangePlaceholder"
-    :format="record.options.format"
-    @change="handleSelectChange"
-    :value="date"
-  />
-</template>
-<script>
-import moment from "moment";
-import { pluginManager } from "../../utils/index";
-
-const DatePicker = pluginManager.getComponent("datePicker");
-const RangePicker = pluginManager.getComponent("rangePicker");
-const MonthPicker = pluginManager.getComponent("monthPicker");
-
-export default {
-  // eslint-disable-next-line vue/require-prop-types
-  props: ["record", "value", "parentDisabled"],
-  components: {
-    DatePicker: DatePicker.component,
-    RangePicker: RangePicker.component,
-    MonthPicker: MonthPicker.component
-  },
-  data() {
-    return {
-      // date: undefined
-    };
-  },
-  computed: {
-    date() {
-      if (
-        !this.value ||
-        (this.record.options.range && this.value.length === 0)
-      ) {
-        return undefined;
-      } else if (this.record.options.range) {
-        return this.value.map(item => moment(item, this.record.options.format));
-      } else {
-        return moment(this.value, this.record.options.format);
-      }
-    }
-  },
-  methods: {
-    handleSelectChange(val) {
-      let date;
-      if (!val || (this.record.options.range && val.length === 0)) {
-        date = "";
-      } else if (this.record.options.range) {
-        date = val.map(item => item.format(this.record.options.format));
-      } else {
-        date = val.format(this.record.options.format);
-      }
-      this.$emit("change", date);
-      this.$emit("input", date);
-    }
-  }
-};
-</script>

+ 0 - 7
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDatePicker/index.js

@@ -1,7 +0,0 @@
-import DatePicker from "./datePicker.vue";
-
-DatePicker.install = function(Vue) {
-  Vue.component(DatePicker.name, DatePicker);
-};
-
-export default DatePicker;

+ 0 - 16
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDivider/KDivider.vue

@@ -1,16 +0,0 @@
-<template>
-  <Divider
-    v-if="record.label !== ''"
-    :orientation="record.options.orientation || 'center'"
-    >{{ record.label }}</Divider
-  >
-  <Divider v-else-if="record.label === ''" />
-</template>
-<script>
-import { Divider } from "ant-design-vue";
-export default {
-  name: "KDivider",
-  props: ["record"],
-  components: { Divider }
-};
-</script>

+ 0 - 2
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KDivider/index.js

@@ -1,2 +0,0 @@
-import KDivider from "./KDivider.vue";
-export default KDivider;

+ 0 - 2
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KEditor/index.js

@@ -1,2 +0,0 @@
-import KEditor from "./kEditor.vue";
-export default KEditor;

+ 0 - 48
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KEditor/kEditor.vue

@@ -1,48 +0,0 @@
-<!--
- * @Description: 对vue-quill-editor封装
- * @Author: kcz
- * @Date: 2020-03-30 12:44:03
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-19 13:53:56
- -->
-<template>
-  <quillEditor
-    :style="{ height: `${record.options.height}px` }"
-    :value="value"
-    ref="vueQuillEditor"
-    class="ql-editor-class"
-    :class="{ chinesization: record.options.chinesization }"
-    :options="editorOption"
-    :disabled="record.options.disabled || parentDisabled"
-    @blur="onEditorBlur($event)"
-    @focus="onEditorFocus($event)"
-    @change="onEditorChange($event)"
-  >
-  </quillEditor>
-</template>
-<script>
-import { quillEditor } from "vue-quill-editor"; //调用编辑器
-import "quill/dist/quill.core.css";
-import "quill/dist/quill.snow.css";
-import "quill/dist/quill.bubble.css";
-
-export default {
-  name: "editor",
-  props: ["value", "record", "parentDisabled"],
-  components: { quillEditor },
-  data() {
-    return {
-      editorOption: {
-        placeholder: this.record.options.placeholder
-      }
-    };
-  },
-  methods: {
-    onEditorBlur() {}, // 失去焦点事件
-    onEditorFocus() {}, // 获得焦点事件
-    onEditorChange(e) {
-      this.$emit("change", e.html);
-    }
-  }
-};
-</script>

+ 0 - 62
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/README.md

@@ -1,62 +0,0 @@
-KFormBuild
-====
-  构建表单
- 将传入的json数组,解析成ant UI组件
-
-
-### 使用方式
-
-```vue
-<template>
-  <k-form-build :value="jsonData" />
-</template>
-
-<script>
-
-const jsonData = {
-	"list": [
-		{
-			"type": "input",
-			"name": "单行文本",
-			"options": {
-				"width": "100%",
-				"defaultValue": "",
-				"placeholder": "请输入",
-				"disabled": false
-			},
-			"model": "input_1569051592984",
-			"key": "input_1569051592984",
-			"rules": [
-				{
-					"required": false,
-					"message": "必填项"
-				}
-			]
-		}
-	],
-	"config": {
-		"layout": "horizontal",
-		"labelCol": {
-			"span": 4
-		},
-		"wrapperCol": {
-			"span": 18
-		},
-		"hideRequiredMark": false,
-		"customStyle": ""
-	}
-}
-export default {
-  data() {
-    return {
-      form: this.$form.createForm(this),
-      jsonData
-    }
-  }
-}
-</script>
-```
-
-
-父组件可调用函数 getData - 返回Porimse对象
-

+ 0 - 220
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/buildBlocks.vue

@@ -1,220 +0,0 @@
-<template>
-  <!-- 标签页布局 -->
-  <a-tabs
-    v-if="record.type === 'tabs'"
-    class="grid-row"
-    :default-active-key="0"
-    :tabBarGutter="record.options.tabBarGutter"
-    :type="record.options.type"
-    :size="record.options.size"
-    :tabPosition="record.options.tabPosition"
-    :animated="record.options.animated"
-    v-model="activeKey"
-  >
-    <a-tab-pane
-      v-for="(tabItem, index) in record.columns"
-      :key="index"
-      :tab="tabItem.label"
-      :forceRender="true"
-    >
-      <buildBlocks
-        ref="nestedComponents"
-        @handleReset="$emit('handleReset')"
-        @change="handleChange"
-        v-for="item in tabItem.list"
-        :disabled="disabled"
-        :dynamicData="dynamicData"
-        :key="item.key"
-        :record="item"
-        :formConfig="formConfig"
-        :config="config"
-      />
-    </a-tab-pane>
-  </a-tabs>
-  <!-- 栅格布局 -->
-  <a-row
-    v-else-if="record.type === 'grid'"
-    class="grid-row"
-    :gutter="record.options.gutter"
-  >
-    <a-col
-      class="grid-col"
-      v-for="(colItem, idnex) in record.columns"
-      :key="idnex"
-      :span="colItem.span || 0"
-    >
-      <buildBlocks
-        ref="nestedComponents"
-        @handleReset="$emit('handleReset')"
-        @change="handleChange"
-        v-for="item in colItem.list"
-        :disabled="disabled"
-        :dynamicData="dynamicData"
-        :key="item.key"
-        :record="item"
-        :formConfig="formConfig"
-        :config="config"
-      />
-    </a-col>
-  </a-row>
-  <!-- 卡片布局 -->
-  <a-card
-    v-else-if="record.type === 'card'"
-    class="grid-row"
-    :title="record.label"
-  >
-    <buildBlocks
-      ref="nestedComponents"
-      @handleReset="$emit('handleReset')"
-      @change="handleChange"
-      v-for="item in record.list"
-      :disabled="disabled"
-      :dynamicData="dynamicData"
-      :key="item.key"
-      :record="item"
-      :formConfig="formConfig"
-      :config="config"
-    />
-  </a-card>
-  <!-- 表格布局 -->
-  <table
-    v-else-if="record.type === 'table'"
-    class="kk-table-9136076486841527"
-    :class="{
-      bright: record.options.bright,
-      small: record.options.small,
-      bordered: record.options.bordered
-    }"
-    :style="'width:' + record.options.width + ';' + record.options.customStyle"
-  >
-    <tr v-for="(trItem, trIndex) in record.trs" :key="trIndex">
-      <td
-        class="table-td"
-        v-for="(tdItem, tdIndex) in trItem.tds.filter(
-          item => item.colspan && item.rowspan
-        )"
-        :key="tdIndex"
-        :colspan="tdItem.colspan"
-        :rowspan="tdItem.rowspan"
-      >
-        <buildBlocks
-          ref="nestedComponents"
-          @handleReset="$emit('handleReset')"
-          @change="handleChange"
-          v-for="item in tdItem.list"
-          :disabled="disabled"
-          :dynamicData="dynamicData"
-          :key="item.key"
-          :record="item"
-          :formConfig="formConfig"
-          :config="config"
-        />
-      </td>
-    </tr>
-  </table>
-
-  <KFormItem
-    v-else-if="!record.options.hidden"
-    ref="nestedComponents"
-    @handleReset="$emit('handleReset')"
-    @change="handleChange"
-    :disabled="disabled"
-    :dynamicData="dynamicData"
-    :key="record.key"
-    :record="record"
-    :formConfig="formConfig"
-    :config="config"
-  />
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- */
-import KFormItem from "../KFormItem/index";
-export default {
-  name: "buildBlocks",
-  props: {
-    record: {
-      type: Object,
-      required: true
-    },
-    formConfig: {
-      type: Object,
-      required: true
-    },
-    config: {
-      type: Object,
-      default: () => ({})
-    },
-    dynamicData: {
-      type: Object,
-      required: true
-    },
-    disabled: {
-      type: Boolean,
-      default: false
-    },
-    validatorError: {
-      type: [Object, null],
-      default: () => ({})
-    }
-  },
-  components: {
-    KFormItem
-  },
-  data() {
-    return {
-      activeKey: 0
-    };
-  },
-  methods: {
-    validationSubform() {
-      // 验证动态表格
-      const nestedComponents = this.$refs.nestedComponents;
-      if (
-        typeof nestedComponents === "object" &&
-        nestedComponents instanceof Array
-      ) {
-        for (let i = 0; nestedComponents.length > i; i++) {
-          if (!nestedComponents[i].validationSubform()) {
-            return false;
-          }
-        }
-        return true;
-      } else if (typeof nestedComponents !== "undefined") {
-        return nestedComponents.validationSubform();
-      } else {
-        return true;
-      }
-    },
-    handleChange(value, key) {
-      this.$emit("change", value, key);
-    }
-  },
-  watch: {
-    /**
-     * @author: lizhichao<meteoroc@outlook.com>
-     * @description: 监视validatorError对象,当检测到Tabs中有表单校验无法通过时,切换到最近校验失败的tab页。
-     */
-    validatorError: {
-      deep: true,
-      handler: function(n) {
-        const errorItems = Object.keys(n);
-        if (errorItems.length) {
-          if (!this.record.columns) return false;
-          for (let i = 0; i < this.record.columns.length; i++) {
-            const err = this.record.columns[i].list.filter(item =>
-              errorItems.includes(item.model)
-            );
-            if (err.length) {
-              this.activeKey = i;
-              break;
-            }
-          }
-        }
-      }
-    }
-  }
-};
-</script>

+ 0 - 11
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/index.js

@@ -1,11 +0,0 @@
-/*
- * author kcz
- * date 2019-11-20
- */
-import KFormBuild from "./index.vue";
-
-KFormBuild.install = function(Vue) {
-  Vue.component(KFormBuild.name, KFormBuild);
-};
-
-export default KFormBuild;

+ 0 - 242
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormBuild/index.vue

@@ -1,242 +0,0 @@
-<template>
-  <a-config-provider :locale="locale">
-    <a-form
-      v-bind="$attrs"
-      selfUpdate
-      v-if="
-        typeof value.list !== 'undefined' && typeof value.config !== 'undefined'
-      "
-      class="k-form-build-9136076486841527"
-      :layout="value.config.layout"
-      :hideRequiredMark="value.config.hideRequiredMark"
-      :form="form"
-      @submit="handleSubmit"
-      :style="value.config.customStyle"
-    >
-      <buildBlocks
-        ref="buildBlocks"
-        @handleReset="reset"
-        v-for="(record, index) in value.list"
-        :record="record"
-        :dynamicData="getDynamicData"
-        :config="config"
-        :disabled="disabled"
-        :formConfig="value.config"
-        :validatorError="validatorError"
-        :key="index"
-        @change="handleChange"
-      />
-    </a-form>
-  </a-config-provider>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 将json数据构建成表单
- */
-import buildBlocks from "./buildBlocks";
-import zhCN from "ant-design-vue/lib/locale-provider/zh_CN";
-import { lazyLoadTick } from "../../utils/index";
-
-export default {
-  name: "KFormBuild",
-  data() {
-    return {
-      locale: zhCN,
-      form: this.$form.createForm(this),
-      validatorError: {},
-      defaultDynamicData: {}
-    };
-  },
-  // props: ["value", "dynamicData"],
-  props: {
-    value: {
-      type: Object,
-      required: true
-    },
-    dynamicData: {
-      type: Object,
-      default: () => {
-        return {};
-      }
-    },
-    config: {
-      type: Object,
-      default: () => ({})
-    },
-    disabled: {
-      type: Boolean,
-      default: false
-    },
-    outputString: {
-      type: Boolean,
-      default: false
-    },
-    defaultValue: {
-      type: Object,
-      default: () => ({})
-    }
-  },
-  components: {
-    buildBlocks
-  },
-  computed: {
-    getDynamicData() {
-      return typeof this.dynamicData === "object" &&
-        Object.keys(this.dynamicData).length
-        ? this.dynamicData
-        : window.$kfb_dynamicData || {};
-    }
-  },
-  methods: {
-    // moment,
-    handleSubmit(e) {
-      // 提交按钮触发,并触发submit函数,返回getData函数
-      e.preventDefault();
-      this.$emit("submit", this.getData);
-    },
-    reset() {
-      // 重置表单
-      this.form.resetFields();
-    },
-    getData() {
-      // 提交函数,提供父级组件调用
-      return new Promise((resolve, reject) => {
-        try {
-          this.form.validateFields((err, values) => {
-            if (err) {
-              reject(err);
-              /**
-               * @author: lizhichao<meteoroc@outlook.com>
-               * @Description: 多容器校验时,提供error返回给多容器进行判断。
-               */
-              this.validatorError = err;
-              return;
-            }
-            this.validatorError = {};
-            this.$refs.buildBlocks.forEach(item => {
-              if (!item.validationSubform()) {
-                reject(err);
-              }
-            });
-            if (this.outputString) {
-              // 需要所有value转成字符串
-              for (const key in values) {
-                const type = typeof values[key];
-                if (type === "string" || type === "undefined") {
-                  continue;
-                } else if (type === "object") {
-                  values[key] = `k-form-design#${type}#${JSON.stringify(
-                    values[key]
-                  )}`;
-                } else {
-                  values[key] = `k-form-design#${type}#${String(values[key])}`;
-                }
-              }
-
-              resolve(values);
-            } else {
-              resolve(values);
-            }
-          });
-        } catch (err) {
-          reject(err);
-        }
-      });
-    },
-    setData(json) {
-      return new Promise((resolve, reject) => {
-        lazyLoadTick.nextTick(() => {
-          try {
-            if (this.outputString) {
-              // 将非string数据还原
-              for (const key in json) {
-                if (!json[key].startsWith("k-form-design#")) {
-                  continue;
-                }
-                const array = json[key].split("#");
-                if (array[1] === "object") {
-                  json[key] = JSON.parse(array[2]);
-                } else if (array[1] === "number") {
-                  json[key] = Number(array[2]);
-                } else if (array[1] === "boolean") {
-                  json[key] = Boolean(array[2]);
-                }
-              }
-              this.form.setFieldsValue(json);
-            } else {
-              this.form.setFieldsValue(json);
-            }
-            resolve(true);
-          } catch (err) {
-            console.error(err);
-            reject(err);
-          }
-        });
-      });
-    },
-
-    // 批量设置某个option的值
-    setOptions(fields, optionName, value) {
-      fields = new Set(fields);
-
-      // 递归遍历控件树
-      const traverse = array => {
-        array.forEach(element => {
-          if (fields.has(element.model)) {
-            this.$set(element.options, optionName, value);
-          }
-          if (element.type === "grid" || element.type === "tabs") {
-            // 栅格布局 and 标签页
-            element.columns.forEach(item => {
-              traverse(item.list);
-            });
-          } else if (element.type === "card" || element.type === "batch") {
-            // 卡片布局 and  动态表格
-            traverse(element.list);
-          } else if (element.type === "table") {
-            // 表格布局
-            element.trs.forEach(item => {
-              item.tds.forEach(val => {
-                traverse(val.list);
-              });
-            });
-          }
-        });
-      };
-      traverse(this.value.list);
-    },
-    // 隐藏表单字段
-    hide(fields) {
-      this.setOptions(fields, "hidden", true);
-    },
-    // 显示表单字段
-    show(fields) {
-      this.setOptions(fields, "hidden", false);
-    },
-    // 禁用表单字段
-    disable(fields) {
-      this.setOptions(fields, "disabled", true);
-    },
-    // 启用表单字段
-    enable(fields) {
-      this.setOptions(fields, "disabled", false);
-    },
-    handleChange(value, key) {
-      // 触发change事件
-      this.$emit("change", value, key);
-    }
-  },
-  mounted() {
-    this.setData(this.defaultValue);
-
-    // this.$nextTick(() => {
-    //   this.setData(this.defaultValue);
-    // });
-  },
-  created() {
-    lazyLoadTick.reset();
-  }
-};
-</script>

+ 0 - 721
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/config/formItemsConfig.js

@@ -1,721 +0,0 @@
-/*
- * author kcz
- * date 2019-11-20
- * description 表单控件项
- */
-// 内置控件
-export const defaultSchemaList = [
-  {
-    type: "input", // 表单类型
-    label: "输入框", // 标题文字
-    icon: "icon-write",
-    options: {
-      type: "text",
-      width: "100%", // 宽度
-      defaultValue: "", // 默认值
-      placeholder: "请输入", // 没有输入时,提示文字
-      clearable: false,
-      maxLength: null,
-      addonBefore: "",
-      addonAfter: "",
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      disabled: false // 是否禁用,false不禁用,true禁用
-    },
-    model: "", // 数据字段
-    key: "",
-    help: "",
-    rules: [
-      //验证规则
-      {
-        required: false, // 必须填写
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "textarea", // 表单类型
-    label: "文本框", // 标题文字
-    icon: "icon-edit",
-    options: {
-      width: "100%", // 宽度
-      minRows: 4,
-      maxRows: 6,
-      maxLength: null,
-      defaultValue: "",
-      clearable: false,
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      disabled: false,
-      placeholder: "请输入"
-    },
-    model: "", // 数据字段
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "number", // 表单类型
-    label: "数字输入框", // 标题文字
-    icon: "icon-number",
-    options: {
-      width: "100%", // 宽度
-      defaultValue: 0, // 默认值
-      min: null, // 可输入最小值
-      max: null, // 可输入最大值
-      precision: null,
-      step: 1, // 步长,点击加减按钮时候,加减多少
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      disabled: false, //是否禁用
-      placeholder: "请输入"
-    },
-    model: "", // 数据字段
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "select", // 表单类型
-    label: "下拉选择器", // 标题文字
-    icon: "icon-xiala",
-    options: {
-      width: "100%", // 宽度
-      defaultValue: undefined, // 下拉选框请使用undefined为默认值
-      multiple: false, // 是否允许多选
-      disabled: false, // 是否禁用
-      clearable: false, // 是否显示清除按钮
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      placeholder: "请选择", // 默认提示文字
-      dynamicKey: "",
-      dynamic: false,
-      options: [
-        // 下拉选择项配置
-        {
-          value: "1",
-          label: "下拉框1"
-        },
-        {
-          value: "2",
-          label: "下拉框2"
-        }
-      ],
-      showSearch: false // 是否显示搜索框,搜索选择的项的值,而不是文字
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "checkbox",
-    label: "多选框",
-    icon: "icon-duoxuan1",
-    options: {
-      disabled: false, //是否禁用
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      defaultValue: [],
-      dynamicKey: "",
-      dynamic: false,
-      options: [
-        {
-          value: "1",
-          label: "选项1"
-        },
-        {
-          value: "2",
-          label: "选项2"
-        },
-        {
-          value: "3",
-          label: "选项3"
-        }
-      ]
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "radio", // 表单类型
-    label: "单选框", // 标题文字
-    icon: "icon-danxuan-cuxiantiao",
-    options: {
-      disabled: false, //是否禁用
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      defaultValue: "", // 默认值
-      dynamicKey: "",
-      dynamic: false,
-      options: [
-        {
-          value: "1",
-          label: "选项1"
-        },
-        {
-          value: "2",
-          label: "选项2"
-        },
-        {
-          value: "3",
-          label: "选项3"
-        }
-      ]
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "date", // 表单类型
-    label: "日期选择框", // 标题文字
-    icon: "icon-calendar",
-    options: {
-      width: "100%", // 宽度
-      defaultValue: "", // 默认值,字符串 12:00:00
-      rangeDefaultValue: [], // 默认值,字符串 12:00:00
-      range: false, // 范围日期选择,为true则会显示两个时间选择框(同时defaultValue和placeholder要改成数组),
-      showTime: false, // 是否显示时间选择器
-      disabled: false, // 是否禁用
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      clearable: false, // 是否显示清除按钮
-      placeholder: "请选择",
-      rangePlaceholder: ["开始时间", "结束时间"],
-      format: "YYYY-MM-DD" // 展示格式  (请按照这个规则写 YYYY-MM-DD HH:mm:ss,区分大小写)
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "time", // 表单类型
-    label: "时间选择框", // 标题文字
-    icon: "icon-time",
-    options: {
-      width: "100%", // 宽度
-      defaultValue: "", // 默认值,字符串 12:00:00
-      disabled: false, // 是否禁用
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      clearable: false, // 是否显示清除按钮
-      placeholder: "请选择",
-      format: "HH:mm:ss" // 展示格式
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "rate", // 表单类型
-    label: "评分", // 标题文字
-    icon: "icon-pingfen_moren",
-    options: {
-      defaultValue: 0,
-      max: 5, // 最大值
-      disabled: false, // 是否禁用
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      allowHalf: false // 是否允许半选
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "slider", // 表单类型
-    label: "滑动输入条", // 标题文字
-    icon: "icon-menu",
-    options: {
-      width: "100%", // 宽度
-      defaultValue: 0, // 默认值, 如果range为true的时候,则需要改成数组,如:[12,15]
-      disabled: false, // 是否禁用
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      min: 0, // 最小值
-      max: 100, // 最大值
-      step: 1, // 步长,取值必须大于 0,并且可被 (max - min) 整除
-      showInput: false // 是否显示输入框,range为true时,请勿开启
-      // range: false // 双滑块模式
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "uploadFile", // 表单类型
-    label: "上传文件", // 标题文字
-    icon: "icon-upload",
-    options: {
-      defaultValue: "[]",
-      multiple: false,
-      disabled: false,
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      drag: false,
-      downloadWay: "a",
-      dynamicFun: "",
-      width: "100%",
-      limit: 3,
-      data: "{}",
-      fileName: "file",
-      headers: {},
-      action: "http://cdn.kcz66.com/uploadFile.txt",
-      placeholder: "上传"
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "uploadImg",
-    label: "上传图片",
-    icon: "icon-image",
-    options: {
-      defaultValue: "[]",
-      multiple: false,
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      disabled: false,
-      width: "100%",
-      data: "{}",
-      limit: 3,
-      placeholder: "上传",
-      fileName: "image",
-      headers: {},
-      action: "http://cdn.kcz66.com/upload-img.txt",
-      listType: "picture-card"
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "treeSelect", // 表单类型
-    label: "树选择器", // 标题文字
-    icon: "icon-tree",
-    options: {
-      disabled: false, //是否禁用
-      defaultValue: undefined, // 默认值
-      multiple: false,
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      clearable: false, // 是否显示清除按钮
-      showSearch: false, // 是否显示搜索框,搜索选择的项的值,而不是文字
-      treeCheckable: false,
-      placeholder: "请选择",
-      dynamicKey: "",
-      dynamic: false,
-      options: [
-        {
-          value: "1",
-          label: "选项1",
-          children: [
-            {
-              value: "11",
-              label: "选项11"
-            }
-          ]
-        },
-        {
-          value: "2",
-          label: "选项2",
-          children: [
-            {
-              value: "22",
-              label: "选项22"
-            }
-          ]
-        }
-      ]
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "cascader", // 表单类型
-    label: "级联选择器", // 标题文字
-    icon: "icon-guanlian",
-    options: {
-      disabled: false, //是否禁用
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      defaultValue: undefined, // 默认值
-      showSearch: false, // 是否显示搜索框,搜索选择的项的值,而不是文字
-      placeholder: "请选择",
-      clearable: false, // 是否显示清除按钮
-      dynamicKey: "",
-      dynamic: false,
-      options: [
-        {
-          value: "1",
-          label: "选项1",
-          children: [
-            {
-              value: "11",
-              label: "选项11"
-            }
-          ]
-        },
-        {
-          value: "2",
-          label: "选项2",
-          children: [
-            {
-              value: "22",
-              label: "选项22"
-            }
-          ]
-        }
-      ]
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "batch",
-    label: "动态表格",
-    icon: "icon-biaoge",
-    list: [],
-    options: {
-      scrollY: 0,
-      minLimit: 1,
-      disabled: false,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      showLabel: false,
-      hideSequence: false,
-      width: "100%"
-    },
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ],
-    model: "",
-    key: "",
-    help: ""
-  },
-  {
-    type: "selectInputList",
-    label: "选择输入列",
-    icon: "icon-biaoge",
-    columns: [
-      {
-        value: "1",
-        label: "选项1",
-        list: []
-      },
-      {
-        value: "2",
-        label: "选项2",
-        list: []
-      }
-    ],
-    options: {
-      disabled: false,
-      multiple: true, // 是否允许多选
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      showLabel: false,
-      width: "100%"
-    },
-    model: "",
-    key: "",
-    help: ""
-  },
-  {
-    type: "editor",
-    label: "富文本",
-    icon: "icon-LC_icon_edit_line_1",
-    list: [],
-    options: {
-      height: 300,
-      placeholder: "请输入",
-      defaultValue: "",
-      chinesization: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      disabled: false,
-      showLabel: false,
-      width: "100%"
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "switch", // 表单类型
-    label: "开关", // 标题文字
-    icon: "icon-kaiguan3",
-    options: {
-      defaultValue: false, // 默认值 Boolean 类型
-      showLabel: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      disabled: false // 是否禁用
-    },
-    model: "",
-    key: "",
-    help: "",
-    rules: [
-      {
-        required: false,
-        message: "必填项"
-      }
-    ]
-  },
-  {
-    type: "button", // 表单类型
-    label: "按钮", // 标题文字
-    icon: "icon-button-remove",
-    options: {
-      type: "primary",
-      handle: "submit",
-      dynamicFun: "",
-      showLabel: false,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      disabled: false // 是否禁用,false不禁用,true禁用
-    },
-    key: ""
-  },
-  {
-    type: "alert",
-    label: "警告提示",
-    icon: "icon-zu",
-    options: {
-      type: "success",
-      description: "",
-      showIcon: false,
-      banner: false,
-      showLabel: false,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      closable: false
-    },
-    key: ""
-  },
-  {
-    type: "text",
-    label: "文字",
-    icon: "icon-zihao",
-    options: {
-      textAlign: "left",
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      showRequiredMark: false,
-      noFormItem: true,
-      color: "rgba(0, 0, 0, 0.9)",
-      fontFamily: "",
-      fontSize: "10.5pt",
-      
-    },
-    key: ""
-  },
-  {
-    type: "html",
-    label: "HTML",
-    icon: "icon-ai-code",
-    options: {
-      noFormItem: true,
-      hidden: false, // 是否隐藏,false显示,true隐藏
-      defaultValue: "<strong>HTML</strong>"
-    },
-    key: ""
-  },
-  {
-    type: "divider",
-    label: "分割线",
-    icon: "icon-fengexian",
-    options: {
-      orientation: "left",
-      noFormItem: true
-    },
-    key: "",
-    model: ""
-  },
-  {
-    type: "card",
-    label: "卡片布局",
-    icon: "icon-qiapian",
-    list: [],
-    options: {
-      noFormItem: true
-    },
-    key: "",
-    model: ""
-  },
-  {
-    type: "tabs",
-    label: "标签页布局",
-    icon: "icon-tabs",
-    options: {
-      tabBarGutter: null,
-      type: "line",
-      tabPosition: "top",
-      size: "default",
-      noFormItem: true,
-      animated: true
-    },
-    columns: [
-      {
-        value: "1",
-        label: "选项1",
-        list: []
-      },
-      {
-        value: "2",
-        label: "选项2",
-        list: []
-      }
-    ],
-    key: "",
-    model: ""
-  },
-  {
-    type: "grid",
-    label: "栅格布局",
-    icon: "icon-zhage",
-    columns: [
-      {
-        span: 12,
-        list: []
-      },
-      {
-        span: 12,
-        list: []
-      }
-    ],
-    options: {
-      noFormItem: true,
-      gutter: 0
-    },
-    key: "",
-    model: ""
-  },
-  {
-    type: "table",
-    label: "表格布局",
-    icon: "icon-biaoge",
-    trs: [
-      {
-        tds: [
-          {
-            colspan: 1,
-            rowspan: 1,
-            list: []
-          },
-          {
-            colspan: 1,
-            rowspan: 1,
-            list: []
-          }
-        ]
-      },
-      {
-        tds: [
-          {
-            colspan: 1,
-            rowspan: 1,
-            list: []
-          },
-          {
-            colspan: 1,
-            rowspan: 1,
-            list: []
-          }
-        ]
-      }
-    ],
-    options: {
-      width: "100%",
-      bordered: true,
-      bright: false,
-      small: true,
-      noFormItem: true,
-      customStyle: "",
-    },
-    key: "",
-    model: ""
-  }
-];

+ 0 - 53
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/config/jsonFormat.js

@@ -1,53 +0,0 @@
-/*
- * author kcz
- * date 2019-11-20
- * description 默认导入json数据格式
- */
-export default `{
-	"list": [
-		{
-			"type": "input",
-			"label": "输入框",
-			"options": {
-				"type": "text",
-				"width": "100%",
-				"defaultValue": "",
-				"placeholder": "请输入",
-				"clearable": false,
-				"maxLength": null,
-				"hidden": false,
-				"disabled": false,
-				color:"red"
-			},
-			"model": "input_1603939737389",
-			"key": "input_1603939737389",
-			"rules": [
-				{
-					"required": false,
-					"message": "必填项"
-				}
-			]
-		}
-	],
-	"config": {
-		"layout": "horizontal",
-		"labelCol": {
-			"xs": 4,
-			"sm": 4,
-			"md": 4,
-			"lg": 4,
-			"xl": 4,
-			"xxl": 4
-		},
-		"wrapperCol": {
-			"xs": 18,
-			"sm": 18,
-			"md": 18,
-			"lg": 18,
-			"xl": 18,
-			"xxl": 18
-		},
-		"hideRequiredMark": false,
-		"customStyle": ""
-	}
-}`;

+ 0 - 11
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/index.js

@@ -1,11 +0,0 @@
-/*
- * author kcz
- * date 2019-11-20
- */
-import KFormDesign from "./index.vue";
-
-KFormDesign.install = function(Vue) {
-  Vue.component(KFormDesign.name, KFormDesign);
-};
-
-export default KFormDesign;

+ 0 - 508
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/index.vue

@@ -1,508 +0,0 @@
-<template>
-  <a-config-provider :locale="locale">
-    <div class="form-designer-container-9136076486841527" v-if="loadState">
-      <k-header v-if="showHead" :title="title" />
-      <!-- 操作区域 start -->
-      <operatingArea
-        v-if="toolbarsTop"
-        :showToolbarsText="showToolbarsText"
-        :toolbars="toolbars"
-        @handleSave="handleSave"
-        @handlePreview="handlePreview"
-        @handleOpenImportJsonModal="handleOpenImportJsonModal"
-        @handleOpenCodeModal="handleOpenCodeModal"
-        @handleOpenJsonModal="handleOpenJsonModal"
-        @handleReset="handleReset"
-        @handleClose="handleClose"
-        @handleUndo="handleUndo"
-        @handleRedo="handleRedo"
-      >
-        <template slot="left-action">
-          <slot name="left-action"></slot>
-        </template>
-
-        <template slot="right-action">
-          <slot name="right-action"></slot>
-        </template>
-      </operatingArea>
-      <!-- 操作区域 end -->
-      <div
-        class="content"
-        :class="{
-          'show-head': showHead,
-          'toolbars-top': toolbarsTop,
-          'show-head-and-toolbars-top': toolbarsTop && showHead
-        }"
-      >
-        <!-- 左侧控件区域 start -->
-        <aside class="left">
-          <a-collapse
-            @change="collapseChange"
-            :defaultActiveKey="collapseDefaultActiveKey"
-          >
-            <!-- 基础控件 start -->
-            <a-collapse-panel
-              v-for="(item, index) in schemaGroup"
-              :header="item.title"
-              :key="index"
-            >
-              <collapseItem
-                :list="item.list"
-                @generateKey="generateKey"
-                @handleListPush="handleListPush"
-                @start="handleStart"
-              />
-            </a-collapse-panel>
-            <!-- 基础控件 end -->
-          </a-collapse>
-        </aside>
-        <!-- 左侧控件区域 end -->
-
-        <!-- 中间面板区域 start -->
-        <section>
-          <!-- 操作区域 start -->
-          <operatingArea
-            v-if="!toolbarsTop"
-            :showToolbarsText="showToolbarsText"
-            :toolbars="toolbars"
-            @handleSave="handleSave"
-            @handlePreview="handlePreview"
-            @handleOpenImportJsonModal="handleOpenImportJsonModal"
-            @handleOpenCodeModal="handleOpenCodeModal"
-            @handleOpenJsonModal="handleOpenJsonModal"
-            @handleReset="handleReset"
-            @handleClose="handleClose"
-            @handleUndo="handleUndo"
-            @handleRedo="handleRedo"
-          >
-            <template slot="left-action">
-              <slot name="left-action"></slot>
-            </template>
-
-            <template slot="right-action">
-              <slot name="right-action"></slot>
-            </template>
-          </operatingArea>
-          <!-- 操作区域 end -->
-          <k-form-component-panel
-            :class="{ 'no-toolbars-top': !toolbarsTop }"
-            :data="data"
-            :selectItem="selectItem"
-            :noModel="noModel"
-            :hideModel="hideModel"
-            :startType="startType"
-            ref="KFCP"
-            @handleSetSelectItem="handleSetSelectItem"
-          />
-          <!-- 操作区域 start -->
-          <k-json-modal ref="jsonModal" />
-          <k-code-modal ref="codeModal" />
-          <importJsonModal ref="importJsonModal" />
-          <previewModal ref="previewModal" />
-        </section>
-        <!-- 中间面板区域 end -->
-
-        <!-- 右侧控件属性区域 start -->
-        <aside class="right">
-          <a-tabs
-            :activeKey="activeKey"
-            @change="changeTab"
-            :tabBarStyle="{ margin: 0 }"
-          >
-            <a-tab-pane :key="1" tab="表单属性设置">
-              <formProperties
-                :config="data.config"
-                :previewOptions="previewOptions"
-              />
-            </a-tab-pane>
-            <a-tab-pane :key="2" tab="控件属性设置">
-              <formItemProperties
-                class="form-item-properties"
-                :selectItem="selectItem"
-                :hideModel="hideModel"
-              />
-            </a-tab-pane>
-          </a-tabs>
-        </aside>
-        <!-- 右侧控件属性区域 end -->
-      </div>
-      <!-- <k-footer /> -->
-    </div>
-  </a-config-provider>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 表单设计器
- */
-import kHeader from "./module/header";
-import operatingArea from "./module/operatingArea";
-
-// import kFooter from "./module/footer";
-import kFormComponentPanel from "./module/formComponentPanel";
-import kJsonModal from "./module/jsonModal";
-import kCodeModal from "./module/codeModal";
-import collapseItem from "./module/collapseItem";
-import importJsonModal from "./module/importJsonModal";
-import previewModal from "../KFormPreview/index.vue";
-import zhCN from "ant-design-vue/lib/locale-provider/zh_CN";
-import { Modal, message } from "ant-design-vue";
-import { revoke, nodeSchema } from "../../utils/index";
-import formItemProperties from "./module/formItemProperties";
-import formProperties from "./module/formProperties";
-
-export default {
-  name: "KFormDesign",
-  props: {
-    title: {
-      type: String,
-      default: "表单设计器 "
-    },
-    showHead: {
-      type: Boolean,
-      default: true
-    },
-    hideResetHint: {
-      type: Boolean,
-      default: false
-    },
-    toolbarsTop: {
-      type: Boolean,
-      default: false
-    },
-    toolbars: {
-      type: Array,
-      default: () => [
-        "save",
-        "preview",
-        "importJson",
-        "exportJson",
-        "exportCode",
-        "reset",
-        "close",
-        "undo",
-        "redo"
-      ]
-    },
-    showToolbarsText: {
-      type: Boolean,
-      default: false
-    },
-    hideModel: {
-      // 隐藏数据字段
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    return {
-      locale: zhCN,
-      loadState: false,
-      activeKey: 1,
-      updateTime: 0,
-      updateRecordTime: 0,
-      startType: "",
-      noModel: [
-        "button",
-        "divider",
-        "card",
-        "grid",
-        "tabs",
-        "table",
-        "alert",
-        "text",
-        "html"
-      ],
-      schemaGroup: [],
-      data: {
-        list: [],
-        config: {
-          layout: "horizontal",
-          labelCol: { xs: 4, sm: 4, md: 4, lg: 4, xl: 4, xxl: 4 },
-          labelWidth: 100,
-          labelLayout: "flex",
-          wrapperCol: { xs: 18, sm: 18, md: 18, lg: 18, xl: 18, xxl: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      },
-      previewOptions: {
-        width: 850
-      },
-      selectItem: {
-        key: ""
-      }
-    };
-  },
-  components: {
-    kHeader,
-    // kFooter,
-    operatingArea,
-    collapseItem,
-    kJsonModal,
-    kCodeModal,
-    importJsonModal,
-    previewModal,
-    kFormComponentPanel,
-    formItemProperties,
-    formProperties
-  },
-  watch: {
-    data: {
-      handler(e) {
-        this.$nextTick(() => {
-          revoke.push(e);
-        });
-      },
-      deep: true,
-      immediate: true
-    }
-  },
-  computed: {
-    collapseDefaultActiveKey() {
-      // 计算当前展开的控件列表
-      const defaultActiveKey = window.localStorage.getItem(
-        "collapseDefaultActiveKey"
-      );
-      if (defaultActiveKey) {
-        return defaultActiveKey.split(",");
-      } else {
-        return ["1"];
-      }
-    }
-  },
-  methods: {
-    generateKey(list, index) {
-      // 生成key值
-      const key = list[index].type + "_" + new Date().getTime();
-      this.$set(list, index, {
-        ...list[index],
-        key,
-        model: key
-      });
-      if (this.noModel.includes(list[index].type)) {
-        // 删除不需要的model属性
-        delete list[index].model;
-      }
-    },
-    handleListPush(item) {
-      // 双击控件按钮push到list
-      // 生成key值
-      if (!this.selectItem.key) {
-        // 在没有选择表单时,将数据push到this.data.list
-        const key = item.type + "_" + new Date().getTime();
-        item = {
-          ...item,
-          key,
-          model: key
-        };
-        if (this.noModel.includes(item.type)) {
-          // 删除不需要的model属性
-          delete item.model;
-        }
-        const itemString = JSON.stringify(item);
-        const record = JSON.parse(itemString);
-        // 删除icon及compoent属性
-        delete record.icon;
-        delete record.component;
-        this.data.list.push(record);
-        this.handleSetSelectItem(record);
-        return false;
-      }
-      this.$refs.KFCP.handleCopy(false, item);
-    },
-    handleOpenJsonModal() {
-      // 打开json预览模态框
-      this.$refs.jsonModal.jsonData = this.data;
-      this.$refs.jsonModal.visible = true;
-    },
-    handleOpenCodeModal() {
-      // 打开代码预览模态框
-      this.$refs.codeModal.jsonData = this.data;
-      this.$refs.codeModal.visible = true;
-    },
-    handleOpenImportJsonModal() {
-      // 打开json预览模态框
-      this.$refs.importJsonModal.jsonData = this.data;
-      this.$refs.importJsonModal.handleSetSelectItem = this.handleSetSelectItem;
-      this.$refs.importJsonModal.visible = true;
-    },
-    handlePreview() {
-      // 打开预览模态框
-      this.$refs.previewModal.jsonData = this.data;
-      this.$refs.previewModal.previewWidth = this.previewOptions.width;
-      this.$refs.previewModal.visible = true;
-    },
-    handleReset() {
-      // 清空
-      if (this.hideResetHint) {
-        // 不显示提示直接清空
-        this.resetData();
-        return;
-      }
-
-      Modal.confirm({
-        title: "警告",
-        content: "是否确认清空内容?",
-        okText: "是",
-        okType: "danger",
-        cancelText: "否",
-        onOk: () => {
-          this.resetData();
-        }
-      });
-    },
-    resetData() {
-      this.data = {
-        list: [],
-        config: {
-          layout: "horizontal",
-          labelCol: { xs: 4, sm: 4, md: 4, lg: 4, xl: 4, xxl: 4 },
-          labelWidth: 100,
-          labelLayout: "flex",
-          wrapperCol: { xs: 18, sm: 18, md: 18, lg: 18, xl: 18, xxl: 18 },
-          hideRequiredMark: false,
-          customStyle: ""
-        }
-      };
-      this.handleSetSelectItem({ key: "" });
-      message.success("已清空");
-    },
-    handleSetSelectItem(record) {
-      // 操作间隔不能低于100毫秒
-      const newTime = new Date().getTime();
-      if (newTime - this.updateTime < 100) {
-        return false;
-      }
-
-      this.updateTime = newTime;
-
-      // 设置selectItem的值
-      this.selectItem = record;
-
-      // 判断是否选中控件,如果选中则弹出属性面板,否则关闭属性面板
-      if (record.key) {
-        this.startType = record.type;
-        this.changeTab(2);
-      } else {
-        this.changeTab(1);
-      }
-    },
-    /**
-     * @description: 切换属性设置面板
-     * @param {*}
-     * @return {*}
-     */
-
-    changeTab(e) {
-      this.activeKey = e;
-    },
-    /**
-     * @Author: kcz
-     * @description: 遍历json结构,获取所有字段
-     * @param {*}
-     * @return {*} Array
-     */
-    getFieldSchema() {
-      const fields = [];
-      const traverse = array => {
-        array.forEach(element => {
-          if (element.type === "grid" || element.type === "tabs") {
-            // 栅格布局
-            element.columns.forEach(item => {
-              traverse(item.list);
-            });
-          } else if (element.type === "card") {
-            // 卡片布局
-            traverse(element.list);
-          } else if (element.type === "batch") {
-            // 动态表格内复制
-            traverse(element.list);
-          } else if (element.type === "table") {
-            // 表格布局
-            element.trs.forEach(item => {
-              item.tds.forEach(val => {
-                traverse(val.list);
-              });
-            });
-          } else {
-            if (element.model) {
-              fields.push(element);
-            }
-          }
-        });
-      };
-      traverse(this.data.list);
-      return fields;
-    },
-    handleSetData(data) {
-      // 用于父组件赋值
-      try {
-        if (typeof data !== "object") {
-          return false;
-        } else {
-          this.data = data;
-          // 导入json数据后,需要清除已选择key
-          this.handleSetSelectItem({ key: "" });
-        }
-        return true;
-      } catch (error) {
-        console.error(error);
-        return false;
-      }
-    },
-    collapseChange(val) {
-      // 点击collapse时,保存当前collapse状态
-      window.localStorage.setItem("collapseDefaultActiveKey", val);
-    },
-    handleStart(type) {
-      this.startType = type;
-    },
-
-    /**
-     * @description: 撤销
-     * @param {*}
-     * @return {*}
-     */
-    handleUndo() {
-      const record = revoke.undo();
-      if (!record) {
-        return false;
-      }
-      this.data = record;
-
-      this.handleSetSelectItem({ key: "" });
-    },
-
-    /**
-     * @description: 重做
-     * @param {*}
-     * @return {*}
-     */
-    handleRedo() {
-      const record = revoke.redo();
-      if (!record) {
-        return false;
-      }
-      this.data = record;
-    },
-
-    handleSave() {
-      // 保存函数
-      this.$emit("save", JSON.stringify(this.data));
-    },
-    getValue() {
-      // 获取数据
-      return this.data;
-    },
-    handleClose() {
-      this.$emit("close");
-    }
-  },
-  created() {
-    this.loadState = true;
-    nodeSchema.addComputed(this.schemaGroup);
-  }
-};
-</script>

+ 0 - 163
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/codeModal.vue

@@ -1,163 +0,0 @@
-<!--
- * @Description: 代码预览组件
- * @Author: kcz
- * @Date: 2019-12-30 00:37:05
- * @LastEditors: kcz
- * @LastEditTime: 2021-05-27 15:18:39
- -->
-<template>
-  <a-modal
-    title="代码"
-    :footer="null"
-    :visible="visible"
-    @cancel="handleCancel"
-    wrapClassName="code-modal-9136076486841527"
-    style="top:20px;"
-    width="850px"
-    :destroyOnClose="true"
-  >
-    <a-tabs tabPosition="left" style="height:100%">
-      <a-tab-pane tab="VUE" key="1">
-        <!-- vue code start -->
-        <previewCode :editorJson="editorVueJson" fileFormat="vue" />
-        <!-- vue code end -->
-      </a-tab-pane>
-      <a-tab-pane tab="HTML" key="2">
-        <!-- html code start -->
-        <previewCode :editorJson="editorHtmlJson" fileFormat="html" />
-        <!-- html code end -->
-      </a-tab-pane>
-    </a-tabs>
-  </a-modal>
-</template>
-<script>
-const codeVueFront = `<template>
-  <div>
-    <k-form-build
-      :value="jsonData"
-      ref="KFB"
-      @submit="handleSubmit"
-    />
-    <button @click="getData">提交</button>
-  </div>
-</template>
-<script>
-export default {
-  name: 'Demo',
-  data () {
-    return {
-      jsonData: `;
-/* eslint-disable */
-let codeVueLast = `
-    }
-  },
-  methods: {
-    handleSubmit(p) {
-       // 通过表单提交按钮触发,获取promise对象
-       p().then(res => {
-         // 获取数据成功
-         alert(JSON.stringify(res))
-       })
-         .catch(err => {
-           console.log(err, '校验失败')
-         })
-     },
-     getData() {
-       // 通过函数获取数据
-       this.$refs.KFB.getData().then(res => {
-         // 获取数据成功
-         alert(JSON.stringify(res))
-       })
-         .catch(err => {
-           console.log(err, '校验失败')
-         })
-     }
-  }
-}
-<\/script>`;
-
-let codeHtmlFront = `<!DOCTYPE html>
-<html>
-
-<head>
-  <title>表单设计器kcz</title>
-  <meta charset="UTF-8">
-  <link rel="stylesheet" href="http://unpkg.com/k-form-design/lib/k-form-design.css">
-</head>
-
-<body>
-  <div class="app">
-    <k-form-build ref="KFB" @submit="handleSubmit" :value="jsonData"></k-form-build>
-    <button @click="getData">提交</button>
-  </div>
-  <script src="http://cdn.kcz66.com/vue.min.js"><\/script>
-  <script src="http://unpkg.com/k-form-design/lib/k-form-design.umd.min.js"><\/script>
-  <script>
-    let jsonData = `;
-    
-    let codeHtmlLast = `
-    let vm = new Vue({
-      el: '.app',
-      data: {
-        jsonData
-      },
-      methods: {
-        handleSubmit(p) {
-          // 通过表单提交按钮触发,获取promise对象
-          p().then(res => {
-            // 获取数据成功
-            alert(JSON.stringify(res))
-          })
-            .catch(err => {
-              console.log(err, '校验失败')
-            })
-        },
-        getData() {
-          // 通过函数获取数据
-          this.$refs.KFB.getData().then(res => {
-            // 获取数据成功
-            alert(JSON.stringify(res))
-          })
-            .catch(err => {
-              console.log(err, '校验失败')
-            })
-        }
-      }
-    })
-  <\/script>
-</body>
-
-</html>`
-/* eslint-enable */
-import previewCode from "../../PreviewCode/index";
-export default {
-  name: "CodeModal",
-  data() {
-    return {
-      visible: false,
-      editorVueJson: "",
-      editorHtmlJson: "",
-      jsonData: {}
-    };
-  },
-  watch: {
-    visible(val) {
-      if (val) {
-        this.editorVueJson =
-          codeVueFront + JSON.stringify(this.jsonData) + codeVueLast;
-
-        this.editorHtmlJson =
-          codeHtmlFront + JSON.stringify(this.jsonData) + codeHtmlLast;
-      }
-    }
-  },
-  components: {
-    previewCode
-  },
-  methods: {
-    handleCancel() {
-      this.visible = false;
-    }
-  }
-};
-</script>

+ 0 - 47
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/collapseItem.vue

@@ -1,47 +0,0 @@
-<!--
- * @Description: 折叠组件
- * @Author: kcz
- * @Date: 2020-01-13 00:37:54
- * @LastEditors: kcz
- * @LastEditTime: 2020-03-28 11:32:39
- -->
-<template>
-  <draggable
-    tag="ul"
-    :value="list"
-    v-bind="{
-      group: { name: 'form-draggable', pull: 'clone', put: false },
-      sort: false,
-      animation: 180,
-      ghostClass: 'moving'
-    }"
-    @start="handleStart($event, list)"
-  >
-    <li
-      v-for="(val, index) in list"
-      :key="index"
-      @dragstart="$emit('generateKey', list, index)"
-      @click="$emit('handleListPush', val)"
-    >
-      <svg v-if="val.icon" class="icon" aria-hidden="true">
-        <use :xlink:href="`#${val.icon}`"></use>
-      </svg>
-      {{ val.label }}
-    </li>
-  </draggable>
-</template>
-<script>
-import draggable from "vuedraggable";
-export default {
-  name: "collapseItem",
-  props: ["list"],
-  components: {
-    draggable
-  },
-  methods: {
-    handleStart(e, list) {
-      this.$emit("start", list[e.oldIndex].type);
-    }
-  }
-};
-</script>

+ 0 - 14
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/footer.vue

@@ -1,14 +0,0 @@
-<!--
- * @Description: 页脚
- * @Author: kcz
- * @Date: 2019-12-26 21:15:52
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-25 21:36:53
- -->
-<template>
-  <footer class="footer-9136076486841527">
-    <a target="_new_page" href="https://github.com/Kchengz/k-form-design"
-      >k-form-design</a
-    >
-  </footer>
-</template>

+ 0 - 512
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formComponentPanel.vue

@@ -1,512 +0,0 @@
-<!--
- * @Description: 表单设计器内容展示操作组件
- * @Author: kcz
- * @Date: 2019-12-31 19:39:48
- * @LastEditors: kcz
- * @LastEditTime: 2022-11-12 00:11:55
- -->
-<template>
-  <div class="form-panel">
-    <p class="hint-text" v-show="data.list.length === 0">
-      <a-empty description="从左侧选择控件添加" />
-    </p>
-
-    <a-form
-      class="a-form-box k-form-build"
-      :form="form"
-      selfUpdate
-      :layout="data.config.layout"
-      :hideRequiredMark="data.config.hideRequiredMark"
-      :style="data.config.customStyle"
-    >
-      <draggable
-        tag="div"
-        class="draggable-box"
-        v-bind="{
-          group: 'form-draggable',
-          ghostClass: 'moving',
-          animation: 180,
-          handle: '.drag-move'
-        }"
-        v-model="data.list"
-        @add="deepClone"
-        @start="dragStart($event, data.list)"
-      >
-        <transition-group tag="div" name="list" class="list-main">
-          <layoutItem
-            class="drag-move"
-            v-for="record in data.list"
-            :key="record.key"
-            :record="record"
-            :config="data.config"
-            :selectItem.sync="selectItem"
-            :startType="startType"
-            :insertAllowedType="insertAllowedType"
-            :hideModel="hideModel"
-            @dragStart="dragStart"
-            @handleSelectItem="handleSelectItem"
-            @handleCopy="handleCopy"
-            @handleDelete="handleDelete"
-            @handleColAdd="handleColAdd"
-            @handleShowRightMenu="handleShowRightMenu"
-          />
-        </transition-group>
-      </draggable>
-    </a-form>
-    <!-- 右键菜单 start -->
-    <div
-      v-show="showRightMenu"
-      :style="{ top: menuTop + 'px', left: menuLeft + 'px' }"
-      class="right-menu"
-    >
-      <ul>
-        <li @click="handleDownMerge"><a-icon type="caret-down" />向下合并</li>
-        <li @click="handleRightMerge"><a-icon type="caret-right" />向右合并</li>
-        <li @click="handleRightSplit">
-          <a-icon type="border-inner" />拆分单元格
-        </li>
-        <li @click="handleAddCol">
-          <a-icon type="border-horizontal" />增加一列
-        </li>
-        <li @click="handleAddRow"><a-icon type="border-verticle" />增加一行</li>
-      </ul>
-    </div>
-  </div>
-</template>
-<script>
-import draggable from "vuedraggable";
-import layoutItem from "./layoutItem";
-import { message } from "ant-design-vue";
-
-export default {
-  name: "KCenter",
-  data() {
-    return {
-      form: this.$form.createForm(this),
-      insertAllowedType: [
-        "input",
-        "textarea",
-        "number",
-        "select",
-        "checkbox",
-        "radio",
-        "date",
-        "time",
-        "rate",
-        "slider",
-        "uploadFile",
-        "uploadImg",
-        "cascader",
-        "treeSelect",
-        "switch",
-        "text",
-        "html"
-      ],
-      rightMenuSelectValue: {},
-      showRightMenu: false,
-      menuTop: 0,
-      menuLeft: 0,
-      trIndex: 0,
-      tdIndex: 0
-    };
-  },
-  props: {
-    noModel: {
-      type: Array,
-      required: true
-    },
-    startType: {
-      type: String,
-      required: true
-    },
-    data: {
-      type: Object,
-      required: true
-    },
-    selectItem: {
-      type: Object,
-      default: () => {}
-    },
-    hideModel: {
-      type: Boolean,
-      default: false
-    }
-  },
-  components: {
-    draggable,
-    layoutItem
-  },
-  methods: {
-    deepClone(evt) {
-      const newIndex = evt.newIndex;
-      // json深拷贝一次
-      const listString = JSON.stringify(this.data.list);
-      this.data.list = JSON.parse(listString);
-      // 删除icon及compoent属性
-      delete this.data.list[newIndex].icon;
-      delete this.data.list[newIndex].component;
-      this.$emit("handleSetSelectItem", this.data.list[newIndex]);
-    },
-    handleColAdd(evt, columns, isCopy = false) {
-      // 重置或者生成key值
-      const newIndex = evt.newIndex;
-      const key = columns[newIndex].type + "_" + new Date().getTime();
-      if (columns[newIndex].key === "" || isCopy) {
-        this.$set(columns, newIndex, {
-          ...columns[newIndex],
-          key,
-          model: key
-        });
-        if (this.noModel.includes(columns[newIndex].type)) {
-          // 删除不需要的model属性
-          delete columns[newIndex].model;
-        }
-        if (typeof columns[newIndex].options !== "undefined") {
-          // 深拷贝options
-          const optionsStr = JSON.stringify(columns[newIndex].options);
-          columns[newIndex].options = JSON.parse(optionsStr);
-        }
-        if (typeof columns[newIndex].rules !== "undefined") {
-          // 深拷贝rules
-          const rulesStr = JSON.stringify(columns[newIndex].rules);
-          columns[newIndex].rules = JSON.parse(rulesStr);
-        }
-        if (typeof columns[newIndex].list !== "undefined") {
-          // 深拷贝list
-          columns[newIndex].list = [];
-        }
-        if (typeof columns[newIndex].columns !== "undefined") {
-          // 深拷贝columns
-          const columnsStr = JSON.stringify(columns[newIndex].columns);
-          columns[newIndex].columns = JSON.parse(columnsStr);
-          // 复制时,清空数据
-          columns[newIndex].columns.forEach(item => {
-            item.list = [];
-          });
-        }
-        if (columns[newIndex].type === "table") {
-          // 深拷贝trs
-          const trsStr = JSON.stringify(columns[newIndex].trs);
-          columns[newIndex].trs = JSON.parse(trsStr);
-          // 复制时,清空数据
-          columns[newIndex].trs.forEach(item => {
-            item.tds.forEach(val => {
-              val.list = [];
-            });
-          });
-        }
-      }
-      // 深拷贝数据
-      const listString = JSON.stringify(columns[newIndex]);
-      columns[newIndex] = JSON.parse(listString);
-      this.$emit("handleSetSelectItem", columns[newIndex]);
-    },
-    dragStart(evt, list) {
-      // 拖拽结束,自动选择拖拽的控件项
-      this.$emit("handleSetSelectItem", list[evt.oldIndex]);
-    },
-    handleSelectItem(record) {
-      // 修改选择Item
-      this.$emit("handleSetSelectItem", record);
-    },
-    handleCopy(isCopy = true, data) {
-      const traverse = array => {
-        array.forEach((element, index) => {
-          if (element.key === this.selectItem.key) {
-            if (isCopy) {
-              // 复制添加到选择节点后面
-              array.splice(index + 1, 0, element);
-            } else {
-              // 双击添加到选择节点后面
-              array.splice(index + 1, 0, data);
-            }
-            // 复制完成,重置key值
-            const evt = {
-              newIndex: index + 1
-            };
-            this.handleColAdd(evt, array, true);
-            return;
-          }
-          if (["grid", "tabs", "selectInputList"].includes(element.type)) {
-            // 栅格布局
-            element.columns.forEach(item => {
-              traverse(item.list);
-            });
-          } else if (element.type === "card") {
-            // 卡片布局
-            traverse(element.list);
-          } else if (element.type === "batch") {
-            // 动态表格内复制
-            if (!isCopy && !this.insertAllowedType.includes(data.type)) {
-              // 插入不允许的字段时,直接return false
-              return false;
-            }
-            traverse(element.list);
-          }
-          if (element.type === "table") {
-            // 表格布局
-            element.trs.forEach(item => {
-              item.tds.forEach(val => {
-                traverse(val.list);
-              });
-            });
-          }
-        });
-      };
-      traverse(this.data.list);
-    },
-    handleDelete() {
-      // 删除已选择
-      const traverse = array => {
-        array = array.filter((element, index) => {
-          if (["grid", "tabs", "selectInputList"].includes(element.type)) {
-            // 栅格布局
-            element.columns.forEach(item => {
-              item.list = traverse(item.list);
-            });
-          }
-          if (element.type === "card" || element.type === "batch") {
-            // 卡片布局
-            element.list = traverse(element.list);
-          }
-          if (element.type === "table") {
-            // 表格布局
-            element.trs.forEach(item => {
-              item.tds.forEach(val => {
-                val.list = traverse(val.list);
-              });
-            });
-          }
-          if (element.key !== this.selectItem.key) {
-            return true;
-          } else {
-            if (array.length === 1) {
-              this.handleSelectItem({ key: "" });
-            } else if (array.length - 1 > index) {
-              this.handleSelectItem(array[index + 1]);
-            } else {
-              this.handleSelectItem(array[index - 1]);
-            }
-            return false;
-          }
-        });
-        return array;
-      };
-
-      this.data.list = traverse(this.data.list);
-    },
-    handleDownMerge() {
-      // 向下合并
-
-      // 判断当前行是否是最后一行,最后一行无法向下合并
-      if (
-        this.rightMenuSelectValue.trs.length -
-          this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex]
-            .rowspan <=
-        this.trIndex
-      ) {
-        message.error("当前是最后一行,无法向下合并");
-        return false;
-      }
-
-      // 获取当前单元格的rowspan
-      const currentRowspan = this.rightMenuSelectValue.trs[this.trIndex].tds[
-        this.tdIndex
-      ].rowspan;
-
-      // 判断下一列单元格与当前单元格的colspan是否一致,如果不一致则无法合并
-      if (
-        this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex]
-          .colspan !==
-        this.rightMenuSelectValue.trs[this.trIndex + currentRowspan].tds[
-          this.tdIndex
-        ].colspan
-      ) {
-        message.error("当前表格无法向下合并");
-        return false;
-      }
-
-      // 获取下一列单元格的rowspan
-      const nextRowSpan = this.rightMenuSelectValue.trs[
-        this.trIndex + currentRowspan
-      ].tds[this.tdIndex].rowspan;
-
-      // 当前单元格rowspan等于当前单元格rowspan加上下一列单元格rowspan
-      this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].rowspan =
-        currentRowspan + nextRowSpan;
-
-      // 将被合并的单元rowspan修改为0
-      this.rightMenuSelectValue.trs[this.trIndex + currentRowspan].tds[
-        this.tdIndex
-      ].rowspan = 0;
-
-      // 清空被合并单元格list
-      this.rightMenuSelectValue.trs[this.trIndex + currentRowspan].tds[
-        this.tdIndex
-      ].list = [];
-    },
-    handleRightMerge() {
-      // 向右合并
-      // 获取当前列的所有colspan总和
-      const sumCols = this.rightMenuSelectValue.trs[this.trIndex].tds
-        .map(item => item.colspan)
-        .reduce(function(partial, value) {
-          return partial + value;
-        });
-
-      // 判断是否是最后一列,最后一列无法继续向右合并
-      if (
-        sumCols -
-          this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex]
-            .colspan <=
-        this.tdIndex
-      ) {
-        message.error("当前是最后一列,无法向右合并");
-        return false;
-      }
-
-      // 获取当前单元格的colspan
-      const currentColspan = this.rightMenuSelectValue.trs[this.trIndex].tds[
-        this.tdIndex
-      ].colspan;
-
-      // 判断需要合并的单元格rowspan是否与当前单元格一致
-      if (
-        this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex]
-          .rowspan !==
-        this.rightMenuSelectValue.trs[this.trIndex].tds[
-          this.tdIndex + currentColspan
-        ].rowspan
-      ) {
-        message.error("当前表格无法向右合并");
-        return false;
-      }
-
-      // 合并单元格colspan
-      this.rightMenuSelectValue.trs[this.trIndex].tds[
-        this.tdIndex
-      ].colspan += this.rightMenuSelectValue.trs[this.trIndex].tds[
-        this.tdIndex + currentColspan
-      ].colspan;
-
-      // 将被合并的单元格colspan设置为0
-      this.rightMenuSelectValue.trs[this.trIndex].tds[
-        this.tdIndex + currentColspan
-      ].colspan = 0;
-
-      // 情况被合并单元格的list
-      this.rightMenuSelectValue.trs[this.trIndex].tds[
-        this.tdIndex + currentColspan
-      ].list = [];
-    },
-    // 拆分单元格
-    handleRightSplit() {
-      // 获取当前单元格的colspan及rowspan
-      const { colspan, rowspan } = this.rightMenuSelectValue.trs[
-        this.trIndex
-      ].tds[this.tdIndex];
-
-      for (
-        let rowIndex = this.trIndex, rowLen = this.trIndex + rowspan;
-        rowIndex < rowLen;
-        rowIndex++
-      ) {
-        for (
-          let colIndex = this.tdIndex, colLen = this.tdIndex + colspan;
-          colIndex < colLen;
-          colIndex++
-        ) {
-          if (rowIndex === this.trIndex && colIndex === this.tdIndex) continue;
-          this.rightMenuSelectValue.trs[rowIndex].tds.splice(colIndex, 1, {
-            colspan: 1,
-            rowspan: 1,
-            list: []
-          });
-        }
-      }
-      // 修改当前单元格colspan、rowspan为1
-      this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].colspan = 1;
-      this.rightMenuSelectValue.trs[this.trIndex].tds[this.tdIndex].rowspan = 1;
-    },
-    handleAddCol() {
-      // 增加列
-
-      this.rightMenuSelectValue.trs.forEach(item => {
-        item.tds.splice(this.tdIndex + 1, 0, {
-          colspan: 1,
-          rowspan: 1,
-          list: []
-        });
-      });
-    },
-    handleAddRow() {
-      // 增加行
-      // 获取总col值
-      const sumCols = this.rightMenuSelectValue.trs[0].tds
-        .map(item => item.colspan)
-        .reduce(function(partial, value) {
-          return partial + value;
-        });
-      const rowJson = { tds: [] };
-      for (let i = 0; i < sumCols; i++) {
-        rowJson.tds.push({
-          colspan: 1,
-          rowspan: 1,
-          list: []
-        });
-      }
-
-      // 取当前rowspan最大值
-      let maxRowSpan = 1;
-      this.rightMenuSelectValue.trs[this.trIndex].tds.forEach(item => {
-        if (maxRowSpan < item.rowspan) {
-          maxRowSpan = item.rowspan;
-        }
-      });
-
-      // 在rowspan最大值处插入数据
-      this.rightMenuSelectValue.trs.splice(
-        this.trIndex + maxRowSpan,
-        0,
-        rowJson
-      );
-    },
-    handleShowRightMenu(e, val, trIndex, tdIndex) {
-      // 显示右键菜单
-      e.stopPropagation();
-      // this.fileItem = item
-      // 显示
-      this.showRightMenu = true;
-
-      // 定位
-      this.menuTop = e.clientY;
-      this.menuLeft = e.clientX;
-      // this.rightMenuType = type
-      // this.rightId = id
-      this.activeArr = [val];
-      this.rightMenuSelectValue = val;
-      this.trIndex = trIndex;
-      this.tdIndex = tdIndex;
-      return false;
-    },
-    handleRemoveRightMenu() {
-      // 取消右键菜单
-      this.showRightMenu = false;
-    }
-  },
-  mounted() {
-    // 添加监听取消右键菜单
-    document.addEventListener("click", this.handleRemoveRightMenu, true);
-    document.addEventListener("contextmenu", this.handleRemoveRightMenu, true);
-  },
-  destroyed() {
-    // 移除监听
-    document.removeEventListener("click", this.handleRemoveRightMenu, true);
-    document.removeEventListener(
-      "contextmenu",
-      this.handleRemoveRightMenu,
-      true
-    );
-  }
-};
-</script>

+ 0 - 680
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formItemProperties.vue

@@ -1,680 +0,0 @@
-<template>
-  <div class="properties-centent kk-checkbox">
-    <div class="properties-body">
-      <a-empty
-        class="hint-box"
-        v-show="selectItem.key === ''"
-        description="未选择控件"
-      />
-
-      <a-form v-show="selectItem.key !== ''">
-        <a-form-item v-if="isDefined(selectItem.label)" label="标签">
-          <Input v-model="selectItem.label" placeholder="请输入" />
-        </a-form-item>
-
-        <a-form-item
-          v-if="!hideModel && isDefined(selectItem.model)"
-          label="数据字段"
-        >
-          <Input v-model="selectItem.model" placeholder="请输入" />
-        </a-form-item>
-        <!-- input type start -->
-        <a-form-item v-if="selectItem.type === 'input'" label="输入框type">
-          <Input v-model="options.type" placeholder="请输入" />
-        </a-form-item>
-        <!-- input type end -->
-        <a-form-item
-          v-if="
-            typeof options.rangePlaceholder !== 'undefined' && options.range
-          "
-          label="占位内容"
-        >
-          <Input placeholder="请输入" v-model="options.rangePlaceholder[0]" />
-          <Input placeholder="请输入" v-model="options.rangePlaceholder[1]" />
-        </a-form-item>
-
-        <a-form-item
-          v-else-if="isDefined(options.placeholder)"
-          label="占位内容"
-        >
-          <Input placeholder="请输入" v-model="options.placeholder" />
-        </a-form-item>
-        <a-form-item
-          v-if="selectItem.type === 'textarea'"
-          label="自适应内容高度"
-        >
-          <InputNumber
-            style="width: 100%"
-            v-model="options.minRows"
-            placeholder="最小高度"
-          />
-          <InputNumber
-            style="width: 100%"
-            v-model="options.maxRows"
-            placeholder="最大高度"
-          />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.width)" label="宽度">
-          <Input placeholder="请输入" v-model="options.width" />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.height)" label="高度">
-          <InputNumber v-model="options.height" />
-        </a-form-item>
-
-        <a-form-item  label="背景颜色" >
-          <ColorPicker :options="options.color" v-model="options.color"/>
-          <!-- <a-select default-value="green" v-model="options.bgcolor"  >
-            <a-select-option value="red">
-             红色
-            </a-select-option>
-            <a-select-option value="green">
-              绿色
-            </a-select-option>
-            <a-select-option value="purple">
-              紫色
-            </a-select-option>
-            <a-select-option value="blue">
-              蓝色
-            </a-select-option>
-          </a-select> -->
-        </a-form-item>
-
-        <a-form-item v-if="isDefined(options.step)" label="步长">
-          <InputNumber v-model="options.step" placeholder="请输入" />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.min)" label="最小值">
-          <InputNumber v-model="options.min" placeholder="请输入" />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.max)" label="最大值">
-          <InputNumber v-model="options.max" placeholder="请输入" />
-        </a-form-item>
-
-        <a-form-item v-if="isDefined(options.maxLength)" label="最大长度">
-          <InputNumber v-model="options.maxLength" placeholder="请输入" />
-        </a-form-item>
-        <a-form-item
-          v-if="
-            isDefined(options.minLimit) || ['batch'].includes(selectItem.type)
-          "
-          label="最小行数"
-        >
-          <InputNumber
-            v-model="options.minLimit"
-            :min="0"
-            placeholder="请输入"
-          />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.tabBarGutter)" label="标签间距">
-          <InputNumber v-model="options.tabBarGutter" placeholder="请输入" />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.precision)" label="数值精度">
-          <InputNumber
-            :min="0"
-            :max="50"
-            v-model="options.precision"
-            placeholder="请输入"
-          />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.dictCode)" label="dictCode">
-          <Input v-model="options.dictCode" />
-        </a-form-item>
-        <!-- 选项配置及动态数据配置 start -->
-        <a-form-item v-if="isDefined(options.options)" label="选项配置">
-          <Radio buttonStyle="solid" v-model="options.dynamic">
-            <RadioButton :value="false">静态数据</RadioButton>
-            <RadioButton :value="true">动态数据</RadioButton>
-          </Radio>
-
-          <Input
-            v-show="options.dynamic"
-            v-model="options.dynamicKey"
-            placeholder="动态数据变量名"
-          />
-
-          <KChangeOption v-show="!options.dynamic" v-model="options.options" />
-        </a-form-item>
-        <!-- 选项配置及动态数据配置 end -->
-        <!-- tabs配置 start -->
-        <a-form-item
-          v-if="['tabs', 'selectInputList'].includes(selectItem.type)"
-          :label="selectItem.type === 'tabs' ? '页签配置' : '列选项配置'"
-        >
-          <KChangeOption v-model="selectItem.columns" type="tab" />
-        </a-form-item>
-        <!-- tabs配置 end -->
-        <a-form-item v-if="selectItem.type === 'grid'" label="栅格间距">
-          <InputNumber
-            v-model="selectItem.options.gutter"
-            placeholder="请输入"
-          />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'grid'" label="列配置项">
-          <KChangeOption v-model="selectItem.columns" type="colspan" />
-        </a-form-item>
-
-        <a-form-item v-if="selectItem.type === 'switch'" label="默认值">
-          <ASwitch v-model="options.defaultValue" />
-        </a-form-item>
-        <a-form-item
-          v-if="['number', 'slider'].indexOf(selectItem.type) >= 0"
-          label="默认值"
-        >
-          <InputNumber
-            :step="options.step"
-            :min="options.min || -Infinity"
-            :max="options.max || Infinity"
-            v-model="options.defaultValue"
-          />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'rate'" label="默认值">
-          <Rate
-            v-model="options.defaultValue"
-            :allowHalf="options.allowHalf"
-            :count="options.max"
-          />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'select'" label="默认值">
-          <Select
-            :options="options.options"
-            v-model="options.defaultValue"
-            :allowClear="options.clearable"
-            :mode="options.multiple ? 'multiple' : ''"
-          />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'radio'" label="默认值">
-          <Radio :options="options.options" v-model="options.defaultValue" />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'checkbox'" label="默认值">
-          <Checkbox :options="options.options" v-model="options.defaultValue" />
-        </a-form-item>
-        <!-- 日期选择器默认值 start -->
-        <a-form-item v-if="selectItem.type === 'date'" label="默认值">
-          <Input
-            v-if="!options.range"
-            v-model="options.defaultValue"
-            :placeholder="!isDefined(options.format) ? '' : options.format"
-          />
-          <Input
-            v-if="options.range"
-            v-model="options.rangeDefaultValue[0]"
-            :placeholder="!isDefined(options.format) ? '' : options.format"
-          />
-          <Input
-            v-if="options.range"
-            v-model="options.rangeDefaultValue[1]"
-            :placeholder="!isDefined(options.format) ? '' : options.format"
-          />
-        </a-form-item>
-        <!-- 日期选择器默认值 start -->
-        <a-form-item
-          v-if="
-            ![
-              'number',
-              'radio',
-              'checkbox',
-              'date',
-              'rate',
-              'select',
-              'switch',
-              'slider',
-              'html'
-            ].includes(selectItem.type) && isDefined(options.defaultValue)
-          "
-          label="默认值"
-        >
-          <Input
-            v-model="options.defaultValue"
-            :placeholder="isDefined(options.format) ? '请输入' : options.format"
-          />
-        </a-form-item>
-        <!-- 修改html -->
-        <a-form-item v-if="selectItem.type === 'html'" label="默认值">
-          <Textarea
-            v-model="options.defaultValue"
-            :autoSize="{ minRows: 4, maxRows: 8 }"
-          />
-        </a-form-item>
-        <a-form-item v-if="isDefined(options.format)" label="时间格式">
-          <Input
-            v-model="options.format"
-            placeholder="时间格式如:YYYY-MM-DD HH:mm:ss"
-          />
-        </a-form-item>
-
-        <a-form-item v-if="isDefined(options.orientation)" label="标签位置">
-          <Radio buttonStyle="solid" v-model="options.orientation">
-            <RadioButton value="left">左</RadioButton>
-            <RadioButton value="">居中</RadioButton>
-            <RadioButton value="right">右</RadioButton>
-          </Radio>
-        </a-form-item>
-        <!-- 页签位置 start -->
-        <a-form-item v-if="selectItem.type === 'tabs'" label="页签位置">
-          <Radio buttonStyle="solid" v-model="options.tabPosition">
-            <RadioItem value="top">top</RadioItem>
-            <RadioItem value="right">right</RadioItem>
-            <RadioItem value="bottom">bottom</RadioItem>
-            <RadioItem value="left">left</RadioItem>
-          </Radio>
-        </a-form-item>
-        <!-- 页签位置 end -->
-        <!-- 页签类型 start -->
-        <a-form-item v-if="selectItem.type === 'tabs'" label="页签类型">
-          <Radio buttonStyle="solid" v-model="options.type">
-            <RadioButton value="line">line</RadioButton>
-            <RadioButton value="card">card</RadioButton>
-          </Radio>
-        </a-form-item>
-        <!-- 页签类型 end -->
-        <!-- 页签大小 start -->
-        <a-form-item v-if="isDefined(options.size)" label="大小">
-          <Radio buttonStyle="solid" v-model="options.size">
-            <RadioButton value="large">large</RadioButton>
-            <RadioButton value="default">default</RadioButton>
-            <RadioButton value="small">small</RadioButton>
-          </Radio>
-        </a-form-item>
-        <!-- 页签大小 end -->
-        <a-form-item v-if="selectItem.type === 'button'" label="类型">
-          <Radio buttonStyle="solid" v-model="options.type">
-            <RadioItem value="primary">Primary</RadioItem>
-            <RadioItem value="default">Default</RadioItem>
-            <RadioItem value="dashed">Dashed</RadioItem>
-            <RadioItem value="danger">Danger</RadioItem>
-          </Radio>
-        </a-form-item>
-        <!-- 下载方式 start -->
-        <a-form-item v-if="isDefined(options.downloadWay)" label="下载方式">
-          <Radio buttonStyle="solid" v-model="options.downloadWay">
-            <RadioButton value="a">a标签</RadioButton>
-            <RadioButton value="ajax">ajax</RadioButton>
-            <RadioButton value="dynamic">动态函数</RadioButton>
-          </Radio>
-          <Input
-            v-show="options.downloadWay === 'dynamic'"
-            v-model="options.dynamicFun"
-            placeholder="动态函数名"
-          />
-        </a-form-item>
-        <!-- 下载方式 end -->
-        <a-form-item v-if="selectItem.type === 'button'" label="按钮操作">
-          <Radio buttonStyle="solid" v-model="options.handle">
-            <RadioButton value="submit">提交</RadioButton>
-            <RadioButton value="reset">重置</RadioButton>
-            <RadioButton value="dynamic">动态函数</RadioButton>
-          </Radio>
-          <Input
-            v-show="options.handle === 'dynamic'"
-            v-model="options.dynamicFun"
-            placeholder="动态函数名"
-          />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'alert'" label="辅助描述">
-          <Input v-model="options.description" />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'alert'" label="类型">
-          <Radio buttonStyle="solid" v-model="options.type">
-            <RadioItem value="success">success</RadioItem>
-            <RadioItem value="info">info</RadioItem>
-            <RadioItem value="warning">warning</RadioItem>
-            <RadioItem value="error">error</RadioItem>
-          </Radio>
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'alert'" label="操作属性">
-          <kCheckbox v-model="options.showIcon" label="显示图标" />
-          <kCheckbox v-model="options.banner" label="无边框" />
-          <kCheckbox v-model="options.closable" label="可关闭" />
-        </a-form-item>
-        <!-- 上传图片 -->
-        <a-form-item v-if="selectItem.type === 'uploadImg'" label="样式">
-          <Radio buttonStyle="solid" v-model="options.listType">
-            <RadioButton value="text">text</RadioButton>
-            <RadioButton value="picture">picture</RadioButton>
-            <RadioButton value="picture-card">card</RadioButton>
-          </Radio>
-        </a-form-item>
-        <!-- 上传数量 -->
-        <a-form-item v-if="isDefined(options.limit)" label="最大上传数量">
-          <InputNumber :min="1" v-model="options.limit" />
-        </a-form-item>
-
-        <!-- scrollY -->
-        <a-form-item v-if="isDefined(options.scrollY)" label="scrollY">
-          <InputNumber :min="0" v-model="options.scrollY" />
-        </a-form-item>
-
-        <!-- 上传地址 -->
-        <a-form-item v-if="isDefined(options.action)" label="上传地址">
-          <Input v-model="options.action" placeholder="请输入" />
-        </a-form-item>
-
-        <!-- 文件name -->
-        <a-form-item v-if="isDefined(options.fileName)" label="文件name">
-          <Input v-model="options.fileName" placeholder="请输入" />
-        </a-form-item>
-        <!-- 上传额外参数 -->
-        <a-form-item
-          v-if="isDefined(options.data)"
-          label="额外参数(JSON格式)"
-        >
-          <Textarea
-            v-model="options.data"
-            placeholder="严格JSON格式"
-          ></Textarea>
-        </a-form-item>
-        <!-- 文字对齐方式 -->
-        <a-form-item v-if="selectItem.type === 'text'" label="文字对齐方式">
-          <Radio buttonStyle="solid" v-model="options.textAlign">
-            <RadioButton value="left">左</RadioButton>
-            <RadioButton value="center">居中</RadioButton>
-            <RadioButton value="right">右</RadioButton>
-          </Radio>
-        </a-form-item>
-        <!-- 文字字体 -->
-        <a-form-item v-if="selectItem.type === 'text'" label="字体属性设置">
-          <ColorPicker v-model="options.color" />
-          <Select
-            :options="familyOptions"
-            v-model="options.fontFamily"
-            style="width:36%;margin-left:2%;vertical-align:bottom;"
-          />
-          <Select
-            :options="sizeOptions"
-            v-model="options.fontSize"
-            style="width:35%;margin-left:2%;vertical-align:bottom;"
-          />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'text'" label="操作属性">
-          <kCheckbox v-model="options.showRequiredMark" label="显示必选标记" />
-        </a-form-item>
-
-        <a-form-item
-          v-if="
-            typeof options.hidden !== 'undefined' ||
-              typeof options.disabled !== 'undefined' ||
-              typeof options.readonly !== 'undefined' ||
-              typeof options.clearable !== 'undefined' ||
-              typeof options.multiple !== 'undefined' ||
-              typeof options.range !== 'undefined' ||
-              typeof options.showTime !== 'undefined' ||
-              typeof options.allowHalf !== 'undefined' ||
-              typeof options.showInput !== 'undefined' ||
-              typeof options.animated !== 'undefined'
-          "
-          label="操作属性"
-        >
-          <kCheckbox
-            v-if="isDefined(options.hidden)"
-            v-model="options.hidden"
-            label="隐藏"
-          />
-          <kCheckbox
-            v-if="isDefined(options.disabled)"
-            v-model="options.disabled"
-            label="禁用"
-          />
-          <kCheckbox
-            v-if="isDefined(options.readonly)"
-            v-model="options.readonly"
-            label="只读"
-          />
-          <kCheckbox
-            v-if="isDefined(options.clearable)"
-            v-model="options.clearable"
-            label="可清除"
-          />
-          <kCheckbox
-            v-if="isDefined(options.multiple)"
-            v-model="options.multiple"
-            label="多选"
-          />
-          <kCheckbox
-            v-if="isDefined(options.range)"
-            v-model="options.range"
-            label="范围选择"
-          />
-          <kCheckbox
-            v-if="isDefined(options.showTime)"
-            v-model="options.showTime"
-            label="时间选择器"
-          />
-          <kCheckbox
-            v-if="isDefined(options.allowHalf)"
-            v-model="options.allowHalf"
-            label="允许半选"
-          />
-          <kCheckbox
-            v-if="isDefined(options.showInput)"
-            v-model="options.showInput"
-            label="显示输入框"
-          />
-          <kCheckbox
-            v-if="isDefined(options.showLabel)"
-            v-model="options.showLabel"
-            label="显示Label"
-          />
-          <kCheckbox
-            v-if="isDefined(options.chinesization)"
-            v-model="options.chinesization"
-            label="汉化"
-          />
-          <kCheckbox
-            v-if="isDefined(options.hideSequence)"
-            v-model="options.hideSequence"
-            label="隐藏序号"
-          />
-          <kCheckbox
-            v-if="isDefined(options.drag)"
-            v-model="options.drag"
-            label="允许拖拽"
-          />
-          <kCheckbox
-            v-if="isDefined(options.showSearch)"
-            v-model="options.showSearch"
-            label="可搜索"
-          />
-          <kCheckbox
-            v-if="isDefined(options.treeCheckable)"
-            v-model="options.treeCheckable"
-            label="可勾选"
-          />
-          <kCheckbox
-            v-if="isDefined(options.animated)"
-            v-model="options.animated"
-            label="动画切换"
-          />
-          <kCheckbox
-            title="勾选后移除FormItem嵌套且表单无法获取该组件数据"
-            v-model="options.noFormItem"
-            label="移除FormItem"
-          />
-        </a-form-item>
-
-        <a-form-item
-          v-if="isDefined(selectItem.rules) && selectItem.rules.length > 0"
-          label="校验"
-        >
-          <kCheckbox v-model="selectItem.rules[0].required" label="必填" />
-          <Input
-            v-model="selectItem.rules[0].message"
-            placeholder="必填校验提示信息"
-          />
-          <KChangeOption v-model="selectItem.rules" type="rules" />
-        </a-form-item>
-
-        <!-- 表格选项 -->
-        <a-form-item v-if="selectItem.type === 'table'" label="表格样式CSS">
-          <Input v-model="selectItem.options.customStyle" />
-        </a-form-item>
-        <a-form-item v-if="selectItem.type === 'table'" label="属性">
-          <kCheckbox v-model="selectItem.options.bordered" label="显示边框" />
-          <kCheckbox v-model="selectItem.options.bright" label="鼠标经过点亮" />
-          <kCheckbox v-model="selectItem.options.small" label="紧凑型" />
-        </a-form-item>
-
-        <a-form-item v-if="selectItem.type === 'table'" label="提示">
-          <p style="line-height: 26px">请点击右键增加行列,或者合并单元格</p>
-        </a-form-item>
-
-        <a-form-item v-if="isDefined(selectItem.help)" label="帮助信息">
-          <Input v-model="selectItem.help" placeholder="请输入" />
-        </a-form-item>
-
-        <!-- 前缀 -->
-        <a-form-item label="前缀" v-if="isDefined(options.addonBefore)">
-          <Input v-model="options.addonBefore" placeholder="请输入" />
-        </a-form-item>
-
-        <!-- 后缀 -->
-        <a-form-item label="后缀" v-if="isDefined(options.addonAfter)">
-          <Input v-model="options.addonAfter" placeholder="请输入" />
-        </a-form-item>
-
-      </a-form>
-
-    </div>
-  </div>
-</template>
-
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 表单控件属性设置组件,因为配置数据是引用关系,所以可以直接修改
- */
-import KChangeOption from "../../KChangeOption/index.vue";
-import kCheckbox from "../../KCheckbox/index.vue";
-import { pluginManager } from "../../../utils/index";
-const Input = pluginManager.getComponent("input").component;
-const InputNumber = pluginManager.getComponent("number").component;
-const Rate = pluginManager.getComponent("rate").component;
-const Checkbox = pluginManager.getComponent("checkbox").component;
-const Radio = pluginManager.getComponent("radio").component;
-const RadioButton = pluginManager.getComponent("radioButton").component;
-const RadioItem = pluginManager.getComponent("radioItem").component;
-const Textarea = pluginManager.getComponent("textarea").component;
-const Select = pluginManager.getComponent("select").component;
-const ColorPicker = pluginManager.getComponent("colorPicker").component;
-const ASwitch = pluginManager.getComponent("switch").component;
-
-export default {
-  name: "formItemProperties",
-  components: {
-    KChangeOption,
-    kCheckbox,
-    ColorPicker,
-    Input,
-    InputNumber,
-    Rate,
-    ASwitch,
-    Checkbox,
-    Radio,
-    RadioItem,
-    RadioButton,
-    Textarea,
-    Select
-  },
-  data() {
-    return {
-      familyOptions: [
-        // 字体选择设置
-        {
-          value: "",
-          label: "默认"
-        },
-        {
-          value: "SimSun",
-          label: "宋体"
-        },
-        {
-          value: "FangSong",
-          label: "仿宋"
-        },
-        {
-          value: "SimHei",
-          label: "黑体"
-        },
-        {
-          value: "PingFangSC-Regular",
-          label: "苹方"
-        },
-        {
-          value: "KaiTi",
-          label: "楷体"
-        },
-        {
-          value: "LiSu",
-          label: "隶书"
-        }
-      ],
-      sizeOptions: [
-        //字号选择设置
-        {
-          value: "26pt",
-          label: "一号"
-        },
-        {
-          value: "24pt",
-          label: "小一"
-        },
-        {
-          value: "22pt",
-          label: "二号"
-        },
-        {
-          value: "18pt",
-          label: "小二"
-        },
-        {
-          value: "16pt",
-          label: "三号"
-        },
-        {
-          value: "15pt",
-          label: "小三"
-        },
-        {
-          value: "14pt",
-          label: "四号"
-        },
-        {
-          value: "12pt",
-          label: "小四"
-        },
-        {
-          value: "10.5pt",
-          label: "五号"
-        },
-        {
-          value: "9pt",
-          label: "小五"
-        }
-      ]
-    };
-  },
-  computed: {
-    options() {
-      return this.selectItem.options || {};
-    }
-  },
-  props: {
-    selectItem: {
-      type: Object,
-      required: true
-    },
-    hideModel: {
-      type: Boolean,
-      default: false
-    }
-  },
-  methods: {
-    /**
-     * 判断是否已定义
-     * @param {*} value
-     */
-    isDefined(value) {
-      return typeof value !== "undefined";
-    }
-  }
-};
-</script>

+ 0 - 69
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formNode.vue

@@ -1,69 +0,0 @@
-<!--
- * @Description: 将数据通过k-form-item组件解析,生成控件
- * @Author: kcz
- * @Date: 2019-12-30 00:37:05
- * @LastEditTime: 2021-05-27 15:19:02
- * @LastEditors: kcz
- * @FilePath: \k-form-design\packages\KFormDesign\module\formNode.vue
- -->
-<template>
-  <div
-    class="drag-move-box"
-    @click.stop="$emit('handleSelectItem', record)"
-    :class="{ active: record.key === selectItem.key }"
-  >
-    <div class="form-item-box">
-      <kFormItem :formConfig="config" :record="record" />
-    </div>
-    <div
-      v-if="!hideModel"
-      class="show-key-box"
-      v-text="record.label + (record.model ? '/' + record.model : '')"
-    />
-    <div
-      class="copy"
-      :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-      @click.stop="$emit('handleCopy')"
-    >
-      <a-icon type="copy" />
-    </div>
-    <div
-      class="delete"
-      :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-      @click.stop="$emit('handleDelete')"
-    >
-      <a-icon type="delete" />
-    </div>
-  </div>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 通过json生成的单个表单节点
- */
-import kFormItem from "../../KFormItem/index";
-export default {
-  props: {
-    record: {
-      type: Object,
-      required: true
-    },
-    selectItem: {
-      type: Object,
-      default: () => {}
-    },
-    config: {
-      type: Object,
-      required: true
-    },
-    hideModel: {
-      type: Boolean,
-      default: false
-    }
-  },
-  components: {
-    kFormItem
-  }
-};
-</script>

+ 0 - 153
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/formProperties.vue

@@ -1,153 +0,0 @@
-<template>
-  <div class="properties-centent kk-checkbox">
-    <div class="properties-body">
-      <a-form>
-        <!-- ++++++ -->
-        <!-- <a-form-item label="背景颜色">
-          你好
-        </a-form-item> -->
-
-
-        <a-form-item label="表单布局">
-          <Radio buttonStyle="solid" v-model="config.layout">
-            <RadioButton value="horizontal">水平</RadioButton>
-            <RadioButton value="vertical">垂直</RadioButton>
-            <RadioButton value="inline">行内</RadioButton>
-          </Radio>
-        </a-form-item>
-        <a-form-item label="标签布局(水平布局生效)">
-          <Radio buttonStyle="solid" v-model="config.labelLayout">
-            <RadioButton value="flex">固定</RadioButton>
-            <RadioButton value="Grid">栅格</RadioButton>
-          </Radio>
-        </a-form-item>
-        <a-form-item
-          v-show="config.labelLayout === 'flex'"
-          label="标签宽度(px)"
-        >
-          <InputNumber v-model="config.labelWidth" />
-        </a-form-item>
-        <a-form-item label="labelCol" v-show="config.labelLayout !== 'flex'">
-          <div class="change-col-box">
-            <Slider
-              id="test"
-              :max="24"
-              :min="0"
-              v-model="config.labelCol.xs"
-              @change="handleChangeCol"
-            />
-            <div>
-              <label>xs:</label>
-              <InputNumber v-model="config.labelCol.xs" />
-            </div>
-            <div>
-              <label>sm:</label>
-              <InputNumber v-model="config.labelCol.sm" />
-            </div>
-            <div>
-              <label>md:</label>
-              <InputNumber v-model="config.labelCol.md" />
-            </div>
-            <div>
-              <label>lg:</label>
-              <InputNumber v-model="config.labelCol.lg" />
-            </div>
-            <div>
-              <label>xl:</label>
-              <InputNumber v-model="config.labelCol.xl" />
-            </div>
-            <div>
-              <label>xxl:</label>
-              <InputNumber v-model="config.labelCol.xxl" />
-            </div>
-          </div>
-        </a-form-item>
-        <a-form-item label="wrapperCol" v-show="config.labelLayout !== 'flex'">
-          <div class="change-col-box">
-            <div>
-              <label>xs:</label>
-              <InputNumber v-model="config.wrapperCol.xs" />
-            </div>
-            <div>
-              <label>sm:</label>
-              <InputNumber v-model="config.wrapperCol.sm" />
-            </div>
-            <div>
-              <label>md:</label>
-              <InputNumber v-model="config.wrapperCol.md" />
-            </div>
-            <div>
-              <label>lg:</label>
-              <InputNumber v-model="config.wrapperCol.lg" />
-            </div>
-            <div>
-              <label>xl:</label>
-              <InputNumber v-model="config.wrapperCol.xl" />
-            </div>
-            <div>
-              <label>xxl:</label>
-              <InputNumber v-model="config.wrapperCol.xxl" />
-            </div>
-          </div>
-        </a-form-item>
-        <a-form-item label="预览模态框宽度">
-          <InputNumber style="width:100%;" v-model="previewOptions.width" />
-        </a-form-item>
-        <a-form-item label="表单CSS">
-          <Textarea v-model="config.customStyle" />
-        </a-form-item>
-        <a-form-item label="表单属性">
-          <kCheckbox v-model="config.hideRequiredMark" label="隐藏必选标记" />
-        </a-form-item>
-        <a-form-item label="提示">
-          实际预览效果请点击预览查看
-        </a-form-item>
-        
-      </a-form>
-    </div>
-  </div>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 表单属性设置面板组件
- */
-import kCheckbox from "../../KCheckbox/index.vue";
-import { pluginManager } from "../../../utils/index";
-const InputNumber = pluginManager.getComponent("number").component;
-const Radio = pluginManager.getComponent("radio").component;
-const RadioButton = pluginManager.getComponent("radioButton").component;
-const Textarea = pluginManager.getComponent("textarea").component;
-const Slider = pluginManager.getComponent("aSlider").component;
-
-export default {
-  name: "formProperties",
-  components: {
-    kCheckbox,
-    InputNumber,
-    Radio,
-    RadioButton,
-    Textarea,
-    Slider
-  },
-  props: {
-    config: {
-      type: Object,
-      required: true
-    },
-    previewOptions: {
-      type: Object,
-      required: true
-    }
-  },
-  methods: {
-    handleChangeCol(e) {
-      this.config.labelCol.xs = this.config.labelCol.sm = this.config.labelCol.md = this.config.labelCol.lg = this.config.labelCol.xl = this.config.labelCol.xxl = e;
-
-      this.config.wrapperCol.xs = this.config.wrapperCol.sm = this.config.wrapperCol.md = this.config.wrapperCol.lg = this.config.wrapperCol.xl = this.config.wrapperCol.xxl =
-        24 - e;
-    }
-  }
-};
-</script>

+ 0 - 20
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/header.vue

@@ -1,20 +0,0 @@
-<!--
- * @Description: 头部
- * @Author: kcz
- * @Date: 2019-12-30 00:37:05
- * @LastEditors: kcz
- * @LastEditTime: 2020-03-26 20:18:56
- -->
-<template>
-  <header class="header" v-text="title"></header>
-</template>
-<script>
-export default {
-  props: {
-    title: {
-      // type: String,
-      default: "表单设计器1111111111 --by kcz"
-    }
-  }
-};
-</script>

+ 0 - 105
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/importJsonModal.vue

@@ -1,105 +0,0 @@
-<template>
-  <a-modal
-    title="JSON数据"
-    :visible="visible"
-    @ok="handleImportJson"
-    @cancel="handleCancel"
-    cancelText="关闭"
-    :destroyOnClose="true"
-    wrapClassName="code-modal-9136076486841527"
-    style="top:20px;"
-    width="850px"
-  >
-    <p class="hint-box">导入格式如下:</p>
-    <div class="json-box-9136076486841527">
-      <Codemirror
-        style="height:100%;"
-        ref="myEditor"
-        v-model="jsonFormat"
-      ></Codemirror>
-    </div>
-    <Upload
-      action="/abc"
-      :beforeUpload="beforeUpload"
-      :showUploadList="false"
-      accept="application/json"
-    >
-      <Button type="primary"> 导入json文件 </Button>
-    </Upload>
-  </a-modal>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 导入json Modal
- */
-import jsonFormat from "../config/jsonFormat";
-import { pluginManager } from "../../../utils/index";
-import { message } from "ant-design-vue";
-const Button = pluginManager.getComponent("aButton").component;
-const Upload = pluginManager.getComponent("upload").component;
-const Codemirror = pluginManager.getComponent("codemirror").component;
-export default {
-  name: "importJsonModal",
-  components: {
-    Codemirror,
-    Button,
-    Upload
-  },
-  data() {
-    return {
-      visible: false,
-      jsonFormat,
-      jsonData: {},
-      handleSetSelectItem: null
-    };
-  },
-  watch: {
-    visible(val) {
-      if (val) {
-        this.jsonFormat = jsonFormat;
-      }
-    }
-  },
-  computed: {
-    editor() {
-      // get current editor object
-      return this.$refs.myEditor.editor;
-    }
-  },
-  methods: {
-    handleCancel() {
-      this.visible = false;
-    },
-    beforeUpload(e) {
-      // 通过json文件导入
-      const _this = this;
-      const reader = new FileReader();
-      reader.readAsText(e);
-      reader.onload = function() {
-        _this.jsonFormat = this.result;
-        _this.handleImportJson();
-      };
-      return false;
-    },
-    handleImportJson() {
-      // 导入JSON
-      try {
-        const editorJsonData = JSON.parse(this.jsonFormat);
-        this.jsonData.list = editorJsonData.list;
-        this.jsonData.config = editorJsonData.config;
-        this.jsonData.config.layout = editorJsonData.config.layout;
-        this.handleCancel();
-        // 导入之后,需要清除已选择key
-        this.handleSetSelectItem({ key: "" });
-
-        message.success("导入成功");
-      } catch (error) {
-        console.error(error);
-        message.error("导入失败,数据格式不对");
-      }
-    }
-  }
-};
-</script>

+ 0 - 47
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/jsonModal.vue

@@ -1,47 +0,0 @@
-<template>
-  <a-modal
-    title="JSON数据"
-    :footer="null"
-    :visible="visible"
-    @cancel="handleCancel"
-    :destroyOnClose="true"
-    wrapClassName="code-modal-9136076486841527"
-    style="top:20px;"
-    width="850px"
-  >
-    <previewCode :editorJson="editorJson" />
-  </a-modal>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 生成json Modal
- */
-import previewCode from "../../PreviewCode/index";
-export default {
-  name: "JsonModal",
-  data() {
-    return {
-      visible: false,
-      editorJson: "",
-      jsonData: {}
-    };
-  },
-  watch: {
-    visible(val) {
-      if (val) {
-        this.editorJson = JSON.stringify(this.jsonData, null, "\t");
-      }
-    }
-  },
-  components: {
-    previewCode
-  },
-  methods: {
-    handleCancel() {
-      this.visible = false;
-    }
-  }
-};
-</script>

+ 0 - 556
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/layoutItem.vue

@@ -1,556 +0,0 @@
-<template>
-  <div
-    :class="{
-      'layout-width': [
-        'grid',
-        'table',
-        'selectInputList',
-        'tabs',
-        'card',
-        'editor',
-        'batch',
-        'divider',
-        'html'
-      ].includes(record.type)
-    }"
-  >
-    <!-- 动态表格设计模块 start -->
-    <template v-if="record.type === 'batch'">
-      <div
-        class="batch-box"
-        :class="{ active: record.key === selectItem.key }"
-        @click.stop="handleSelectItem(record)"
-      >
-        <a-form-item
-          :label="!record.options.showLabel ? '' : record.label"
-          :label-col="
-            config.layout === 'horizontal' && record.options.showLabel
-              ? config.labelLayout === 'flex'
-                ? { style: `width:${config.labelWidth}px` }
-                : config.labelCol
-              : {}
-          "
-          :wrapper-col="
-            config.layout === 'horizontal' && record.options.showLabel
-              ? config.labelLayout === 'flex'
-                ? { style: 'width:auto;flex:1' }
-                : config.wrapperCol
-              : {}
-          "
-          :style="
-            config.layout === 'horizontal' &&
-            config.labelLayout === 'flex' &&
-            record.options.showLabel
-              ? { display: 'flex' }
-              : {}
-          "
-        >
-          <draggable
-            tag="div"
-            class="draggable-box"
-            v-bind="{
-              group: insertAllowed ? 'form-draggable' : '',
-              ghostClass: 'moving',
-              animation: 180,
-              handle: '.drag-move'
-            }"
-            v-model="record.list"
-            @start="$emit('dragStart', $event, record.list)"
-            @add="$emit('handleColAdd', $event, record.list)"
-          >
-            <transition-group tag="div" name="list" class="list-main">
-              <formNode
-                v-for="item in record.list"
-                :key="item.key"
-                class="drag-move"
-                :selectItem.sync="selectItem"
-                :record="item"
-                :hideModel="hideModel"
-                :config="config"
-                @handleSelectItem="handleSelectItem"
-                @handleColAdd="handleColAdd"
-                @handleCopy="$emit('handleCopy')"
-                @handleShowRightMenu="handleShowRightMenu"
-                @handleDelete="$emit('handleDelete')"
-              />
-            </transition-group>
-          </draggable>
-        </a-form-item>
-        <div
-          class="copy"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleCopy')"
-        >
-          <a-icon type="copy" />
-        </div>
-        <div
-          class="delete"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleDelete')"
-        >
-          <a-icon type="delete" />
-        </div>
-      </div>
-    </template>
-    <!-- 动态表格设计模块 end -->
-    <!-- 选择输入列 start -->
-    <template v-else-if="record.type === 'selectInputList'">
-      <div
-        class="select-input-list-box"
-        :class="{ active: record.key === selectItem.key }"
-        @click.stop="handleSelectItem(record)"
-      >
-        <a-form-item
-          :label="!record.options.showLabel ? '' : record.label"
-          :label-col="
-            config.layout === 'horizontal' && record.options.showLabel
-              ? config.labelLayout === 'flex'
-                ? { style: `width:${config.labelWidth}px` }
-                : config.labelCol
-              : {}
-          "
-          :wrapper-col="
-            config.layout === 'horizontal' && record.options.showLabel
-              ? config.labelLayout === 'flex'
-                ? { style: 'width:auto;flex:1' }
-                : config.wrapperCol
-              : {}
-          "
-          :style="
-            config.layout === 'horizontal' &&
-            config.labelLayout === 'flex' &&
-            record.options.showLabel
-              ? { display: 'flex' }
-              : {}
-          "
-        >
-          <div
-            class="column-box"
-            v-for="(column, index) in record.columns"
-            :key="index"
-          >
-            <div class="check-box">
-              <CheckboxItem v-if="record.options.multiple" disabled>
-                {{ column.label }}
-              </CheckboxItem>
-              <RadioItem v-else disabled name="radio" :value="column.value">{{
-                column.label
-              }}</RadioItem>
-            </div>
-            <draggable
-              tag="div"
-              class="draggable-box"
-              v-bind="{
-                group: insertAllowed ? 'form-draggable' : '',
-                ghostClass: 'moving',
-                animation: 180,
-                handle: '.drag-move'
-              }"
-              v-model="column.list"
-              @start="$emit('dragStart', $event, column.list)"
-              @add="$emit('handleColAdd', $event, column.list)"
-            >
-              <transition-group tag="div" name="list" class="list-main">
-                <formNode
-                  v-for="item in column.list"
-                  :key="item.key"
-                  class="drag-move"
-                  :selectItem.sync="selectItem"
-                  :record="item"
-                  :hideModel="hideModel"
-                  :config="config"
-                  @handleSelectItem="handleSelectItem"
-                  @handleColAdd="handleColAdd"
-                  @handleCopy="$emit('handleCopy')"
-                  @handleShowRightMenu="handleShowRightMenu"
-                  @handleDelete="$emit('handleDelete')"
-                />
-              </transition-group>
-            </draggable>
-          </div>
-        </a-form-item>
-        <div
-          class="copy"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleCopy')"
-        >
-          <a-icon type="copy" />
-        </div>
-        <div
-          class="delete"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleDelete')"
-        >
-          <a-icon type="delete" />
-        </div>
-      </div>
-    </template>
-    <!-- 选择输入列 end -->
-    <!-- 标签Tabs布局 start -->
-    <template v-else-if="record.type === 'tabs'">
-      <div
-        class="grid-box"
-        :class="{ active: record.key === selectItem.key }"
-        @click.stop="handleSelectItem(record)"
-      >
-        <a-tabs
-          class="grid-row"
-          :default-active-key="0"
-          :tabBarGutter="record.options.tabBarGutter || null"
-          :type="record.options.type"
-          :size="record.options.size"
-          :tabPosition="record.options.tabPosition"
-          :animated="record.options.animated"
-        >
-          <a-tab-pane
-            v-for="(tabItem, index) in record.columns"
-            :key="index"
-            :tab="tabItem.label"
-          >
-            <div class="grid-col">
-              <draggable
-                tag="div"
-                class="draggable-box"
-                v-bind="{
-                  group: 'form-draggable',
-                  ghostClass: 'moving',
-                  animation: 180,
-                  handle: '.drag-move'
-                }"
-                v-model="tabItem.list"
-                @start="$emit('dragStart', $event, tabItem.list)"
-                @add="$emit('handleColAdd', $event, tabItem.list)"
-              >
-                <transition-group tag="div" name="list" class="list-main">
-                  <layoutItem
-                    class="drag-move"
-                    v-for="item in tabItem.list"
-                    :key="item.key"
-                    :selectItem.sync="selectItem"
-                    :startType="startType"
-                    :insertAllowedType="insertAllowedType"
-                    :record="item"
-                    :hideModel="hideModel"
-                    :config="config"
-                    @handleSelectItem="handleSelectItem"
-                    @handleColAdd="handleColAdd"
-                    @handleCopy="$emit('handleCopy')"
-                    @handleShowRightMenu="handleShowRightMenu"
-                    @handleDelete="$emit('handleDelete')"
-                  />
-                </transition-group>
-              </draggable>
-            </div>
-          </a-tab-pane>
-        </a-tabs>
-
-        <div
-          class="copy"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleCopy')"
-        >
-          <a-icon type="copy" />
-        </div>
-        <div
-          class="delete"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleDelete')"
-        >
-          <a-icon type="delete" />
-        </div>
-      </div>
-    </template>
-    <!-- 标签Tabs布局 end -->
-    <!-- 栅格布局 start -->
-    <template v-else-if="record.type === 'grid'">
-      <div
-        class="grid-box"
-        :class="{ active: record.key === selectItem.key }"
-        @click.stop="handleSelectItem(record)"
-      >
-        <a-row class="grid-row" :gutter="record.options.gutter">
-          <a-col
-            class="grid-col"
-            v-for="(colItem, idnex) in record.columns"
-            :key="idnex"
-            :span="colItem.span || 0"
-          >
-            <draggable
-              tag="div"
-              class="draggable-box"
-              v-bind="{
-                group: 'form-draggable',
-                ghostClass: 'moving',
-                animation: 180,
-                handle: '.drag-move'
-              }"
-              v-model="colItem.list"
-              @start="$emit('dragStart', $event, colItem.list)"
-              @add="$emit('handleColAdd', $event, colItem.list)"
-            >
-              <transition-group tag="div" name="list" class="list-main">
-                <layoutItem
-                  class="drag-move"
-                  v-for="item in colItem.list"
-                  :key="item.key"
-                  :selectItem.sync="selectItem"
-                  :startType="startType"
-                  :insertAllowedType="insertAllowedType"
-                  :record="item"
-                  :hideModel="hideModel"
-                  :config="config"
-                  @handleSelectItem="handleSelectItem"
-                  @handleColAdd="handleColAdd"
-                  @handleCopy="$emit('handleCopy')"
-                  @handleShowRightMenu="handleShowRightMenu"
-                  @handleDelete="$emit('handleDelete')"
-                />
-              </transition-group>
-            </draggable>
-          </a-col>
-        </a-row>
-
-        <div
-          class="copy"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleCopy')"
-        >
-          <a-icon type="copy" />
-        </div>
-        <div
-          class="delete"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleDelete')"
-        >
-          <a-icon type="delete" />
-        </div>
-      </div>
-    </template>
-    <!-- 栅格布局 end -->
-    <!-- 卡片布局 start -->
-    <template v-else-if="record.type === 'card'">
-      <div
-        class="grid-box"
-        :class="{ active: record.key === selectItem.key }"
-        @click.stop="handleSelectItem(record)"
-      >
-        <a-card class="grid-row" :title="record.label">
-          <div class="grid-col">
-            <draggable
-              tag="div"
-              class="draggable-box"
-              v-bind="{
-                group: 'form-draggable',
-                ghostClass: 'moving',
-                animation: 180,
-                handle: '.drag-move'
-              }"
-              v-model="record.list"
-              @start="$emit('dragStart', $event, record.list)"
-              @add="$emit('handleColAdd', $event, record.list)"
-            >
-              <transition-group tag="div" name="list" class="list-main">
-                <layoutItem
-                  class="drag-move"
-                  v-for="item in record.list"
-                  :key="item.key"
-                  :selectItem.sync="selectItem"
-                  :startType="startType"
-                  :insertAllowedType="insertAllowedType"
-                  :record="item"
-                  :hideModel="hideModel"
-                  :config="config"
-                  @handleSelectItem="handleSelectItem"
-                  @handleColAdd="handleColAdd"
-                  @handleCopy="$emit('handleCopy')"
-                  @handleShowRightMenu="handleShowRightMenu"
-                  @handleDelete="$emit('handleDelete')"
-                />
-              </transition-group>
-            </draggable>
-          </div>
-        </a-card>
-
-        <div
-          class="copy"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleCopy')"
-        >
-          <a-icon type="copy" />
-        </div>
-        <div
-          class="delete"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleDelete')"
-        >
-          <a-icon type="delete" />
-        </div>
-      </div>
-    </template>
-    <!-- 卡片布局 end -->
-    <!-- 表格布局 start -->
-    <template v-else-if="record.type === 'table'">
-      <div
-        class="table-box"
-        :class="{ active: record.key === selectItem.key }"
-        @click.stop="handleSelectItem(record)"
-      >
-        <table
-          class="table-layout kk-table-9136076486841527"
-          :class="{
-            bright: record.options.bright,
-            small: record.options.small,
-            bordered: record.options.bordered
-          }"
-          :style="
-            'width:' + record.options.width + ';' + record.options.customStyle
-          "
-        >
-          <tr v-for="(trItem, trIndex) in record.trs" :key="trIndex">
-            <td
-              class="table-td"
-              v-for="(tdItem, tdIndex) in trItem.tds"
-              v-show="tdItem.colspan && tdItem.rowspan"
-              :key="tdIndex"
-              :colspan="tdItem.colspan"
-              :rowspan="tdItem.rowspan"
-              @contextmenu.prevent="
-                $emit('handleShowRightMenu', $event, record, trIndex, tdIndex)
-              "
-            >
-              <draggable
-                tag="div"
-                class="draggable-box"
-                v-bind="{
-                  group: 'form-draggable',
-                  ghostClass: 'moving',
-                  animation: 180,
-                  handle: '.drag-move'
-                }"
-                v-model="tdItem.list"
-                @start="$emit('dragStart', $event, tdItem.list)"
-                @add="$emit('handleColAdd', $event, tdItem.list)"
-              >
-                <transition-group
-                  tag="div"
-                  name="list"
-                  :style="{ 'min-height': tdItem.rowspan * 80 - 19 + 'px' }"
-                  class="list-main"
-                >
-                  <layoutItem
-                    class="drag-move"
-                    v-for="item in tdItem.list"
-                    :key="item.key"
-                    :selectItem.sync="selectItem"
-                    :startType="startType"
-                    :insertAllowedType="insertAllowedType"
-                    :record="item"
-                    :hideModel="hideModel"
-                    :config="config"
-                    @handleSelectItem="handleSelectItem"
-                    @handleColAdd="handleColAdd"
-                    @handleCopy="$emit('handleCopy')"
-                    @handleShowRightMenu="handleShowRightMenu"
-                    @handleDelete="$emit('handleDelete')"
-                  />
-                </transition-group>
-              </draggable>
-            </td>
-          </tr>
-        </table>
-
-        <div
-          class="copy"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleCopy')"
-        >
-          <a-icon type="copy" />
-        </div>
-        <div
-          class="delete"
-          :class="record.key === selectItem.key ? 'active' : 'unactivated'"
-          @click.stop="$emit('handleDelete')"
-        >
-          <a-icon type="delete" />
-        </div>
-      </div>
-    </template>
-    <!-- 表格布局 end -->
-    <template v-else>
-      <formNode
-        :key="record.key"
-        :selectItem.sync="selectItem"
-        :record="record"
-        :config="config"
-        :hideModel="hideModel"
-        @handleSelectItem="handleSelectItem"
-        @handleCopy="$emit('handleCopy')"
-        @handleDelete="$emit('handleDelete')"
-        @handleShowRightMenu="$emit('handleShowRightMenu')"
-      />
-    </template>
-  </div>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- * description 使用递归组件调用自己,生成布局结构及表单
- */
-import draggable from "vuedraggable";
-import formNode from "./formNode";
-import { pluginManager } from "../../../utils/index";
-const CheckboxItem = pluginManager.getComponent("checkboxItem").component;
-const RadioItem = pluginManager.getComponent("radioItem").component;
-export default {
-  name: "layoutItem",
-  props: {
-    record: {
-      type: Object,
-      required: true
-    },
-    selectItem: {
-      type: Object,
-      required: true
-    },
-    config: {
-      type: Object,
-      required: true
-    },
-    startType: {
-      type: String,
-      required: true
-    },
-    insertAllowedType: {
-      type: Array,
-      required: true
-    },
-    hideModel: {
-      type: Boolean,
-      default: false
-    }
-  },
-  computed: {
-    insertAllowed() {
-      return this.insertAllowedType.includes(this.startType);
-    }
-  },
-  components: {
-    formNode,
-    draggable,
-    CheckboxItem,
-    RadioItem
-  },
-  methods: {
-    handleShowRightMenu(e, record, trIndex, tdIndex) {
-      this.$emit("handleShowRightMenu", e, record, trIndex, tdIndex);
-    },
-    handleSelectItem(record) {
-      this.$emit("handleSelectItem", record);
-    },
-    handleColAdd(e, list) {
-      this.$emit("handleColAdd", e, list);
-    }
-  }
-};
-</script>

+ 0 - 147
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormDesign/module/operatingArea.vue

@@ -1,147 +0,0 @@
-<!--
- * @Description: 头部
- * @Author: kcz
- * @Date: 2019-12-30 00:37:05
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-26 21:10:35
- -->
-<template>
-  <div class="operating-area">
-    <!-- 头部操作按钮区域 start -->
-    <!-- 操作左侧区域 start -->
-    <div class="left-btn-box">
-      <a-tooltip title="保存">
-        <a v-if="toolbars.includes('save')" @click="$emit('handleSave')">
-          <a-icon type="save" />
-          <span v-if="showToolbarsText">保存</span>
-        </a>
-      </a-tooltip>
-
-      <a-tooltip title="预览">
-        <a v-if="toolbars.includes('preview')" @click="$emit('handlePreview')">
-          <a-icon type="chrome" />
-          <span v-if="showToolbarsText">预览</span>
-        </a>
-      </a-tooltip>
-
-      <a-tooltip title="导入">
-        <a
-          v-if="toolbars.includes('importJson')"
-          @click="$emit('handleOpenImportJsonModal')"
-        >
-          <a-icon type="upload" />
-          <span v-if="showToolbarsText">导入</span>
-        </a>
-      </a-tooltip>
-
-      <a-tooltip title="生成JSON">
-        <a
-          v-if="toolbars.includes('exportJson')"
-          @click="$emit('handleOpenJsonModal')"
-        >
-          <a-icon type="credit-card" />
-          <span v-if="showToolbarsText">生成JSON</span>
-        </a>
-      </a-tooltip>
-
-      <a-tooltip title="生成代码">
-        <a
-          v-if="toolbars.includes('exportCode')"
-          @click="$emit('handleOpenCodeModal')"
-        >
-          <a-icon type="code" />
-          <span v-if="showToolbarsText">生成代码</span>
-        </a>
-      </a-tooltip>
-
-      <a-tooltip title="清空">
-        <a v-if="toolbars.includes('reset')" @click="$emit('handleReset')">
-          <a-icon type="delete" />
-          <span v-if="showToolbarsText">清空</span>
-        </a>
-      </a-tooltip>
-      <Divider type="vertical" />
-      <a-tooltip title="撤销">
-        <a
-          v-if="toolbars.includes('undo')"
-          :class="{ disabled: !(recordList.length > 0) }"
-          @click="$emit('handleUndo')"
-        >
-          <a-icon type="undo" />
-          <span v-if="showToolbarsText">撤销</span>
-        </a>
-      </a-tooltip>
-      <a-tooltip title="重做">
-        <a
-          v-if="toolbars.includes('redo')"
-          :class="{ disabled: !(redoList.length > 0) }"
-          @click="$emit('handleRedo')"
-        >
-          <a-icon type="redo" />
-          <span v-if="showToolbarsText">重做</span>
-        </a>
-      </a-tooltip>
-      <!-- 按钮左侧插槽 start -->
-      <slot name="left-action"></slot>
-      <!-- 按钮左侧插槽 end -->
-    </div>
-    <!-- 操作左侧区域 end -->
-
-    <!-- 操作右侧区域 start -->
-    <div class="right-btn-box">
-      <!-- 按钮右侧插槽 start -->
-      <slot name="right-action"></slot>
-      <!-- 按钮右侧插槽 end -->
-
-      <a-tooltip title="关闭">
-        <a v-if="toolbars.includes('close')" @click="$emit('handleClose')">
-          <a-icon type="close" />
-        </a>
-      </a-tooltip>
-    </div>
-    <!-- 操作右侧区域 end -->
-
-    <!-- 头部操作按钮区域 end -->
-  </div>
-  <!-- 操作区域 start -->
-</template>
-<script>
-import { revoke } from "../../../utils/index";
-
-import { Divider } from "ant-design-vue";
-
-export default {
-  components: {
-    Divider
-  },
-  props: {
-    toolbars: {
-      type: Array,
-      default: () => [
-        "save",
-        "preview",
-        "importJson",
-        "exportJson",
-        "exportCode",
-        "reset",
-        "close"
-      ]
-    },
-
-    showToolbarsText: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    return {
-      recordList: [],
-      redoList: []
-    };
-  },
-  created() {
-    this.recordList = revoke.recordList;
-    this.redoList = revoke.redoList;
-  }
-};
-</script>

+ 0 - 35
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormItem/README.md

@@ -1,35 +0,0 @@
-KFormItem
-====
-构建表单控件
-根据参数不同的type,生成对应的控件
-
-
-### 使用方式
-
-```
-# 参数record:
-{
-    type: "input", // 表单类型
-    name: "输入框", // 标题文字
-    options: {
-      type: "text", // input的type类型
-      width: "100%", // 宽度
-      defaultValue: "", // 默认值
-      placeholder: "请输入", // 占位内容
-      disabled: false // 是否禁用
-    },
-    model: "", // 数据字段
-    key: "",
-    rules: [  //验证规则
-      {
-        required: false, // 是否必填
-        message: "必填项"
-      }
-    ]
-  }
-	
-```
-
-
-
-

+ 0 - 11
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormItem/index.js

@@ -1,11 +0,0 @@
-/*
- * author kcz
- * date 2019-11-20
- */
-import KFormItem from "./index.vue";
-
-KFormItem.install = function(Vue) {
-  Vue.component(KFormItem.name, KFormItem);
-};
-
-export default KFormItem;

+ 0 - 237
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormItem/index.vue

@@ -1,237 +0,0 @@
-<!--
- * @Description: 传入record数据,通过判断record.type,来渲染对应的组件
- * @Author: kcz
- * @Date: 2020-01-02 22:41:48
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-28 22:55:07
- -->
-<template>
-  <component
-    v-if="record.options.noFormItem"
-    v-bind="getComponentProps"
-    @hook:mounted="childMounted"
-    :is="componentItem"
-  ></component>
-  <!-- 可隐藏label -->
-  <a-form-item
-    v-else
-    :label-col="
-      formConfig.layout === 'horizontal' &&
-      isShowLabel(record.options.showLabel)
-        ? formConfig.labelLayout === 'flex'
-          ? { style: `width:${formConfig.labelWidth}px` }
-          : formConfig.labelCol
-        : {}
-    "
-    :wrapper-col="
-      formConfig.layout === 'horizontal' &&
-      isShowLabel(record.options.showLabel)
-        ? formConfig.labelLayout === 'flex'
-          ? { style: 'width:auto;flex:1' }
-          : formConfig.wrapperCol
-        : {}
-    "
-    :style="
-      formConfig.layout === 'horizontal' &&
-      formConfig.labelLayout === 'flex' &&
-      isShowLabel(record.options.showLabel)
-        ? { display: 'flex' }
-        : {}
-    "
-  >
-    <span slot="label" v-if="isShowLabel(record.options.showLabel)">
-      <a-tooltip>
-        <span v-text="record.label"></span>
-        <span v-if="record.help" slot="title" v-html="record.help"></span>
-        <a-icon
-          v-if="record.help"
-          class="question-circle"
-          type="question-circle-o"
-        />
-      </a-tooltip>
-    </span>
-    <component
-      :is="componentItem"
-      v-bind="getComponentProps"
-      @hook:mounted="childMounted"
-      ref="inputItem"
-      @change="handleChange"
-      v-decorator="[
-        record.model, // input 的 name
-        {
-          initialValue: record.options.defaultValue, // 默认值
-          valuePropName: record.type === 'switch' ? 'checked' : 'value',
-          rules: record.rules // 验证规则
-        }
-      ]"
-    ></component>
-  </a-form-item>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- */
-import { pluginManager, lazyLoadTick } from "../../utils/index";
-const _ = require("lodash/object");
-const ComponentArray = pluginManager.getComponents();
-
-export default {
-  name: "KFormItem",
-  props: {
-    // 表单数组
-    record: {
-      type: Object,
-      required: true
-    },
-    // form-item 宽度配置
-    formConfig: {
-      type: Object,
-      required: true
-    },
-    config: {
-      type: Object,
-      default: () => ({})
-    },
-    dynamicData: {
-      type: Object,
-      default: () => ({})
-    },
-    disabled: {
-      type: Boolean,
-      default: false
-    }
-  },
-  computed: {
-    /**
-     * 计算组件props
-     */
-    getComponentProps() {
-      const record = this.record;
-
-      const componentProps = {
-        record,
-        ...this.componentOption,
-        config: this.config,
-        disabled: this.disabled || record.options.disabled,
-        parentDisabled: this.disabled || record.options.disabled,
-        allowClear: record.options.clearable,
-        mode: record.options.multiple ? "multiple" : "",
-        style: `width:${record.options.width}`,
-        height:
-          typeof record.options.height !== "undefined"
-            ? record.options.height
-            : "",
-        dynamicData: this.dynamicData,
-        options: !record.options.dynamic
-          ? record.options.options
-          : this.dynamicData[record.options.dynamicKey]
-          ? this.dynamicData[record.options.dynamicKey]
-          : []
-      };
-
-      if (this.record.type === "textarea") {
-        componentProps.autoSize = {
-          minRows: record.options.minRows,
-          maxRows: record.options.maxRows
-        };
-      }
-
-      if (this.record.type === "alert") {
-        componentProps.message = record.label;
-      }
-
-      if (this.record.type === "treeSelect") {
-        componentProps.treeData = !record.options.dynamic
-          ? record.options.options
-          : this.dynamicData[record.options.dynamicKey]
-          ? this.dynamicData[record.options.dynamicKey]
-          : [];
-      }
-
-      if (this.record.type === "number") {
-        componentProps.min =
-          record.options.min || record.options.min === 0
-            ? record.options.min
-            : -Infinity;
-
-        componentProps.max =
-          record.options.max || record.options.max === 0
-            ? record.options.max
-            : Infinity;
-
-        componentProps.precision =
-          record.options.precision > 50 ||
-          (!record.options.precision && record.options.precision !== 0)
-            ? null
-            : record.options.precision;
-      }
-
-      if (this.record.type === "select") {
-        componentProps.filterOption = record.options.showSearch
-          ? (inputValue, option) => {
-              return (
-                option.componentOptions.children[0].text
-                  .toLowerCase()
-                  .indexOf(inputValue.toLowerCase()) >= 0
-              );
-            }
-          : false;
-      }
-
-      if (this.record.type === "button") {
-        componentProps.onHandleReset = () => this.$emit("handleReset");
-      }
-
-      return componentProps;
-    },
-    /**
-     * @description: 输出对应组件
-     * @param {*}
-     * @return {*} component
-     */
-
-    componentItem() {
-      return ComponentArray[this.record.type].component;
-    },
-    componentOption() {
-      // 移除相应字段
-      const options = _.omit(this.record.options, ["defaultValue", "disabled"]);
-      return options;
-    }
-  },
-  methods: {
-    // 判断isShowLabel === false兼容低版本处理
-    isShowLabel(v) {
-      return String(v) !== "false";
-    },
-    validationSubform() {
-      // 验证动态表格
-      if (["batch", "selectInputList"].includes(this.record.type)) {
-        if (!this.$refs.inputItem) return true;
-        return this.$refs.inputItem.validationSubform();
-      }
-
-      return true;
-    },
-    handleChange(e) {
-      let value = e;
-      if (e && e.target) {
-        value = e.target.value;
-      }
-      // 传递change事件
-      this.$emit("change", value, this.record.model);
-    },
-    childMounted() {
-      // 记录已加载组件
-      this.$nextTick(() => {
-        lazyLoadTick.countLoaded(this.record.type);
-      });
-    }
-  },
-  created() {
-    // 记录待加载组件
-    lazyLoadTick.countlazyLoad(this.record.type);
-  }
-};
-</script>

+ 0 - 140
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormModelItem/KFormModelItem.vue

@@ -1,140 +0,0 @@
-<!--
- * @Description: 传入record数据,通过判断record.type,来渲染对应的组件
- * @Author: kcz
- * @Date: 2020-01-02 22:41:48
- * @LastEditors: kcz
- * @LastEditTime: 2022-10-31 20:39:53
- -->
-<template>
-  <component
-    v-if="record.options.noFormItem"
-    v-bind="getComponentProps"
-    :is="componentItem"
-  ></component>
-  <a-form-model-item
-    v-else
-    :prop="`domains.${index}.${record.model}`"
-    :rules="record.rules"
-  >
-    <component
-      :is="componentItem"
-      v-bind="getComponentProps"
-      ref="inputItem"
-      @change="handleChange"
-    ></component>
-  </a-form-model-item>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- */
-
-import { pluginManager } from "../../utils/index";
-const _ = require("lodash/object");
-
-const ComponentArray = pluginManager.getComponents();
-
-export default {
-  name: "KFormModelItem",
-  props: [
-    "record",
-    "domains",
-    "index",
-    "value",
-    "parentDisabled",
-    "dynamicData",
-    "config"
-  ],
-  computed: {
-    /**
-     * 计算组件props
-     */
-    getComponentProps() {
-      const record = this.record;
-      const componentProps = {
-        record,
-        ...this.componentOption,
-        config: this.config,
-        disabled: this.disabled || record.options.disabled,
-        parentDisabled: this.disabled || record.options.disabled,
-        allowClear: record.options.clearable,
-        mode: record.options.multiple ? "multiple" : "",
-        value: this.value || record.options.defaultValue,
-        style: record.options.width && `width:${record.options.width}`,
-        height:
-          typeof record.options.height !== "undefined"
-            ? record.options.height
-            : "",
-        dynamicData: this.dynamicData,
-        options: !record.options.dynamic
-          ? record.options.options
-          : this.dynamicData[record.options.dynamicKey]
-          ? this.dynamicData[record.options.dynamicKey]
-          : []
-      };
-
-      if (this.record.type === "textarea") {
-        componentProps.autoSize = {
-          minRows: record.options.minRows,
-          maxRows: record.options.maxRows
-        };
-      }
-
-      if (this.record.type === "alert") {
-        componentProps.message = record.label;
-      }
-
-      if (this.record.type === "number") {
-        componentProps.min =
-          record.options.min || record.options.min === 0
-            ? record.options.min
-            : -Infinity;
-
-        componentProps.max =
-          record.options.max || record.options.max === 0
-            ? record.options.max
-            : Infinity;
-
-        componentProps.precision =
-          record.options.precision > 50 ||
-          (!record.options.precision && record.options.precision !== 0)
-            ? null
-            : record.options.precision;
-      }
-
-      if (this.record.type === "select") {
-        componentProps.filterOption = record.options.showSearch
-          ? (inputValue, option) => {
-              return (
-                option.componentOptions.children[0].text
-                  .toLowerCase()
-                  .indexOf(inputValue.toLowerCase()) >= 0
-              );
-            }
-          : false;
-      }
-
-      if (componentProps.value && componentProps.value !== this.value) {
-        this.$emit("input", componentProps.value);
-      }
-      return componentProps;
-    },
-    componentItem() {
-      return ComponentArray[this.record.type].component;
-    },
-    componentOption() {
-      return _.omit(this.record.options, ["defaultValue", "disabled"]);
-    }
-  },
-  methods: {
-    handleChange(e) {
-      let value = e;
-      if (e.target) {
-        value = e.target.value;
-      }
-      this.$emit("input", value);
-    }
-  }
-};
-</script>

+ 0 - 0
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormPreview/README.md


+ 0 - 11
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormPreview/index.js

@@ -1,11 +0,0 @@
-/*
- * author kcz
- * date 2019-11-20
- */
-import KFormPreview from "./index.vue";
-
-KFormPreview.install = function(Vue) {
-  Vue.component(KFormPreview.name, KFormPreview);
-};
-
-export default KFormPreview;

+ 0 - 90
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KFormPreview/index.vue

@@ -1,90 +0,0 @@
-<template>
-  <a-modal
-    title="预览"
-    :visible="visible"
-    @ok="handleGetData"
-    @cancel="handleCancel"
-    okText="获取数据"
-    cancelText="关闭"
-    style="top:20px;"
-    :destroyOnClose="true"
-    :centered="true"
-    :dialogStyle="dialogStyle"
-    :bodyStyle="bodyStyle"
-    wrapClassName="k-form-modal"
-    :width="`${previewWidth}px`"
-  >
-    <k-form-build
-      :value="jsonData"
-      @change="handleChange"
-      @submit="handleSubmit"
-      ref="KFormBuild"
-    />
-    <jsonModel ref="jsonModel" />
-  </a-modal>
-</template>
-<script>
-/*
- * author kcz
- * date 2019-11-20
- */
-import jsonModel from "../KFormDesign/module/jsonModal";
-import { dialogStyle, bodyStyle } from "../../config/modal.js";
-export default {
-  name: "KFormPreview",
-  data() {
-    return {
-      visible: false,
-      previewWidth: 850,
-      jsonData: {},
-      dialogStyle,
-      bodyStyle
-    };
-  },
-  components: {
-    jsonModel
-  },
-  methods: {
-    /**
-     * 按钮触发提交
-     * @param {*} p
-     */
-    handleSubmit(p) {
-      p()
-        .then(res => {
-          console.log(res, "获取数据成功");
-          this.$refs.jsonModel.jsonData = res;
-          this.$refs.jsonModel.visible = true;
-        })
-        .catch(err => {
-          console.error(err, "获取数据失败");
-        });
-    },
-    /**
-     * 手动验证获取表单数据
-     */
-    async handleGetData() {
-      this.$refs.KFormBuild.getData()
-        .then(res => {
-          console.log(res, "获取数据成功");
-          this.$refs.jsonModel.jsonData = res;
-          this.$refs.jsonModel.visible = true;
-        })
-        .catch(err => {
-          console.log(err, "获取数据失败");
-        });
-    },
-    /**
-     * 监听表单change 事件
-     * @param {*} value
-     * @param {*} key
-     */
-    handleChange(value, key) {
-      console.log(value, key);
-    },
-    handleCancel() {
-      this.visible = false;
-    }
-  }
-};
-</script>

+ 0 - 9
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KHtml/KHtml.vue

@@ -1,9 +0,0 @@
-<template>
-  <div v-html="record.options.defaultValue"></div>
-</template>
-<script>
-export default {
-  name: "KHtml",
-  props: ["record"]
-};
-</script>

+ 0 - 2
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KHtml/index.js

@@ -1,2 +0,0 @@
-import KHtml from "./KHtml.vue";
-export default KHtml;

+ 0 - 2
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KSelectInputList/index.js

@@ -1,2 +0,0 @@
-import KSelectInputList from "./selectInputList.vue";
-export default KSelectInputList;

+ 0 - 123
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KSelectInputList/selectInputList.vue

@@ -1,123 +0,0 @@
-<!--
- * @Description: 多列选择 用于选择并且需要输入的表单
- * @Author: kcz
- * @Date: 2020-03-27 18:36:56
- * @LastEditors: kcz
- * @LastEditTime: 2022-11-02 22:27:21
- -->
-<template>
-  <a-form-model
-    class="select-input-list-box"
-    ref="dynamicValidateForm"
-    layout="inline"
-    :model="dynamicValidateForm"
-  >
-    <div v-for="(column, i) in record.columns" :key="i" class="list-col">
-      <a-form-model-item class="w-auto">
-        <CheckboxItem
-          v-if="record.options.multiple"
-          @change="onCheckboxChange($event, i)"
-          :checked="dynamicValidateForm.domains[i].checked"
-        >
-          {{ column.label }}
-        </CheckboxItem>
-        <RadioItem
-          v-else
-          @change="onRadioChange($event, i)"
-          :checked="dynamicValidateForm.domains[i].checked"
-          >{{ column.label }}</RadioItem
-        >
-      </a-form-model-item>
-      <KFormModelItem
-        v-for="item in column.list"
-        :key="item.key + '1'"
-        :record="item"
-        :config="config"
-        :parentDisabled="disabled"
-        :domains="dynamicValidateForm.domains"
-        :index="i"
-        :dynamicData="dynamicData"
-        v-model="dynamicValidateForm.domains[i][item.model]"
-        @input="handleInput"
-      />
-    </div>
-  </a-form-model>
-</template>
-
-<script>
-import KFormModelItem from "../KFormModelItem/KFormModelItem";
-import { pluginManager } from "../../utils/index";
-const CheckboxItem = pluginManager.getComponent("checkboxItem").component;
-const RadioItem = pluginManager.getComponent("radioItem").component;
-export default {
-  name: "KSelectInputList",
-  props: ["record", "value", "dynamicData", "config", "parentDisabled"],
-
-  components: {
-    KFormModelItem,
-    CheckboxItem,
-    RadioItem
-  },
-  watch: {
-    value: {
-      // value 需要深度监听及默认先执行handler函数
-      handler(val) {
-        const initValue = val || [];
-        if (!initValue.length) {
-          this.record.columns.forEach(item => {
-            const itemData = {};
-            item.list.forEach(e => e.model && (itemData[e.model] = null));
-            itemData.checked = false;
-            itemData.value = item.value;
-            itemData.label = item.label;
-            initValue.push(itemData);
-          });
-        }
-
-        this.dynamicValidateForm.domains = initValue;
-      },
-      immediate: true,
-      deep: true
-    }
-  },
-  data() {
-    return {
-      dynamicValidateForm: {
-        domains: []
-      }
-    };
-  },
-  computed: {
-    disabled() {
-      return this.record.options.disabled || this.parentDisabled;
-    }
-  },
-  methods: {
-    validationSubform() {
-      let verification;
-      this.$refs.dynamicValidateForm.validate(valid => {
-        verification = valid;
-      });
-      return verification;
-    },
-    resetForm() {
-      this.$refs.dynamicValidateForm.resetFields();
-    },
-    onCheckboxChange(e, index) {
-      this.dynamicValidateForm.domains[index].checked = e.target.checked;
-      this.handleInput();
-    },
-    onRadioChange(e, index) {
-      this.dynamicValidateForm.domains.forEach(item => (item.checked = false));
-      this.dynamicValidateForm.domains[index].checked = e.target.checked;
-      this.handleInput();
-    },
-    handleInput() {
-      this.$emit("change", this.dynamicValidateForm.domains);
-    }
-  },
-  mounted() {
-    this.handleInput();
-  }
-};
-</script>

+ 0 - 34
ruoyi-ui/src/views/system/fromModeling/k-form-design-master/packages/components/KSlider/KSlider.vue

@@ -1,34 +0,0 @@
-<template>
-  <div :style="`width:${record.options.width}`" class="slider-box">
-    <div class="slider">
-      <Slider v-bind="this.$attrs" v-model="sliderValue" />
-    </div>
-    <div class="number" v-if="record.options.showInput">
-      <InputNumber
-        style="width: 100%"
-        v-bind="this.$attrs"
-        v-model="sliderValue"
-      />
-    </div>
-  </div>
-</template>
-<script>
-import { pluginManager } from "../../utils/index";
-const Slider = pluginManager.getComponent("aSlider").component;
-const InputNumber = pluginManager.getComponent("number").component;
-export default {
-  name: "KSlider",
-  props: ["record", "value"],
-  components: { Slider, InputNumber },
-  computed: {
-    sliderValue: {
-      get() {
-        return this.value;
-      },
-      set(e) {
-        this.$emit("change", e);
-      }
-    }
-  }
-};
-</script>

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů