| 
					
				 | 
			
			
				@@ -1,783 +1,783 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-<template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  <div class="container">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <div class="left-board">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <div class="logo-wrapper">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div class="logo">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <img :src="logo" alt="logo"> Form Generator
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-scrollbar class="left-scrollbar">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div class="components-list">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div class="components-title">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <svg-icon icon-class="component" />输入型组件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <draggable
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            class="components-draggable"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :list="inputComponents"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :clone="cloneComponent"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            draggable=".components-item"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :sort="false"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @end="onEnd"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              v-for="(element, index) in inputComponents" :key="index" class="components-item"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              @click="addComponent(element)"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div class="components-body">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <svg-icon :icon-class="element.tagIcon" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {{ element.label }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </draggable>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div class="components-title">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <svg-icon icon-class="component" />选择型组件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <draggable
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            class="components-draggable"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :list="selectComponents"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :group="{ name: 'componentsGroup', pull: 'clone', put: false }"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :clone="cloneComponent"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            draggable=".components-item"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :sort="false"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            @end="onEnd"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              v-for="(element, index) in selectComponents"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              :key="index"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class="components-item"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              @click="addComponent(element)"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div class="components-body">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <svg-icon :icon-class="element.tagIcon" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {{ element.label }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </draggable>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div class="components-title">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <svg-icon icon-class="component" /> 布局型组件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <draggable
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            class="components-draggable" :list="layoutComponents"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :group="{ name: 'componentsGroup', pull: 'clone', put: false }" :clone="cloneComponent"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            draggable=".components-item" :sort="false" @end="onEnd"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              v-for="(element, index) in layoutComponents" :key="index" class="components-item"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              @click="addComponent(element)"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div class="components-body">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <svg-icon :icon-class="element.tagIcon" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {{ element.label }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </draggable>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </el-scrollbar>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <div class="center-board">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <div class="action-bar">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-button icon="el-icon-download" type="text" @click="download">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          导出vue文件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-button class="copy-btn-main" icon="el-icon-document-copy" type="text" @click="copy">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          复制代码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-button class="delete-btn" icon="el-icon-delete" type="text" @click="empty">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          清空
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-button>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-scrollbar class="center-scrollbar">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-row class="center-board-row" :gutter="formConf.gutter">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <el-form
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :size="formConf.size"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :label-position="formConf.labelPosition"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :disabled="formConf.disabled"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            :label-width="formConf.labelWidth + 'px'"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <draggable class="drawing-board" :list="drawingList" :animation="340" group="componentsGroup">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <draggable-item
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                v-for="(element, index) in drawingList"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                :key="element.renderKey"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                :drawing-list="drawingList"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                :element="element"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                :index="index"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                :active-id="activeId"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                :form-conf="formConf"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                @activeItem="activeFormItem"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                @copyItem="drawingItemCopy"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                @deleteItem="drawingItemDelete"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </draggable>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div v-show="!drawingList.length" class="empty-info">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              从左侧拖入或点选组件进行表单设计
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </el-form>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-row>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </el-scrollbar>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <right-panel
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      :active-data="activeData"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      :form-conf="formConf"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      :show-field="!!drawingList.length"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @tag-change="tagChange"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <code-type-dialog
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      :visible.sync="dialogVisible"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      title="选择生成类型"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      :show-file-name="showFileName"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @confirm="generate"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <input id="copyNode" type="hidden">
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-</template>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-<script>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import draggable from 'vuedraggable'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import beautifier from 'js-beautify'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import ClipboardJS from 'clipboard'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import render from '@/utils/generator/render'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import RightPanel from './RightPanel'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { inputComponents, selectComponents, layoutComponents, formConf } from '@/utils/generator/config'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { beautifierConf, titleCase } from '@/utils/index'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { makeUpJs } from '@/utils/generator/js'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { makeUpCss } from '@/utils/generator/css'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import drawingDefalut from '@/utils/generator/drawingDefalut'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import logo from '@/assets/logo/logo.png'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import CodeTypeDialog from './CodeTypeDialog'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import DraggableItem from './DraggableItem'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let oldActiveId
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-let tempActiveData
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export default {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  components: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    draggable,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    render,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    RightPanel,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    CodeTypeDialog,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    DraggableItem
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  data() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      logo,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      idGlobal: 100,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      formConf,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      inputComponents,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      selectComponents,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      layoutComponents,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      labelWidth: 100,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      drawingList: drawingDefalut,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      drawingData: {},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      activeId: drawingDefalut[0].formId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      drawerVisible: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      formData: {},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      dialogVisible: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      generateConf: null,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      showFileName: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      activeData: drawingDefalut[0]
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  created() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 防止 firefox 下 拖拽 会新打卡一个选项卡
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    document.body.ondrop = event => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      event.preventDefault()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      event.stopPropagation()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  watch: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // eslint-disable-next-line func-names
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    'activeData.label': function (val, oldVal) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.activeData.placeholder === undefined
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || !this.activeData.tag
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        || oldActiveId !== this.activeId
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.activeData.placeholder = this.activeData.placeholder.replace(oldVal, '') + val
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    activeId: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      handler(val) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        oldActiveId = val
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      immediate: true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  mounted() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const clipboard = new ClipboardJS('#copyNode', {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      text: trigger => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const codeStr = this.generateCode()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.$notify({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          title: '成功',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          message: '代码已复制到剪切板,可粘贴。',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          type: 'success'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return codeStr
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    clipboard.on('error', e => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.$message.error('代码复制失败')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  methods: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    activeFormItem(element) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.activeData = element
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.activeId = element.formId
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onEnd(obj, a) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (obj.from !== obj.to) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.activeData = tempActiveData
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.activeId = this.idGlobal
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    addComponent(item) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const clone = this.cloneComponent(item)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.drawingList.push(clone)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.activeFormItem(clone)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cloneComponent(origin) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const clone = JSON.parse(JSON.stringify(origin))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      clone.formId = ++this.idGlobal
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      clone.span = formConf.span
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      clone.renderKey = +new Date() // 改变renderKey后可以实现强制更新组件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!clone.layout) clone.layout = 'colFormItem'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (clone.layout === 'colFormItem') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        clone.vModel = `field${this.idGlobal}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        clone.placeholder !== undefined && (clone.placeholder += clone.label)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tempActiveData = clone
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else if (clone.layout === 'rowFormItem') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        delete clone.label
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        clone.componentName = `row${this.idGlobal}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        clone.gutter = this.formConf.gutter
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tempActiveData = clone
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return tempActiveData
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    AssembleFormData() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.formData = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        fields: JSON.parse(JSON.stringify(this.drawingList)),
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ...this.formConf
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    generate(data) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const func = this[`exec${titleCase(this.operationType)}`]
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.generateConf = data
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      func && func(data)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    execRun(data) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.AssembleFormData()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.drawerVisible = true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    execDownload(data) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const codeStr = this.generateCode()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const blob = new Blob([codeStr], { type: 'text/plain;charset=utf-8' })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.$download.saveAs(blob, data.fileName)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    execCopy(data) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      document.getElementById('copyNode').click()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    empty() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.$confirm('确定要清空所有组件吗?', '提示', { type: 'warning' }).then(
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        () => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          this.drawingList = []
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    drawingItemCopy(item, parent) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let clone = JSON.parse(JSON.stringify(item))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      clone = this.createIdAndKey(clone)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      parent.push(clone)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.activeFormItem(clone)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    createIdAndKey(item) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      item.formId = ++this.idGlobal
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      item.renderKey = +new Date()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (item.layout === 'colFormItem') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        item.vModel = `field${this.idGlobal}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else if (item.layout === 'rowFormItem') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        item.componentName = `row${this.idGlobal}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (Array.isArray(item.children)) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        item.children = item.children.map(childItem => this.createIdAndKey(childItem))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return item
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    drawingItemDelete(index, parent) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      parent.splice(index, 1)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.$nextTick(() => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const len = this.drawingList.length
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (len) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          this.activeFormItem(this.drawingList[len - 1])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    generateCode() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const { type } = this.generateConf
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.AssembleFormData()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const script = vueScript(makeUpJs(this.formData, type))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const html = vueTemplate(makeUpHtml(this.formData, type))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const css = cssStyle(makeUpCss(this.formData))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return beautifier.html(html + script + css, beautifierConf.html)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    download() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.dialogVisible = true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.showFileName = true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.operationType = 'download'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    run() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.dialogVisible = true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.showFileName = false
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.operationType = 'run'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    copy() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.dialogVisible = true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.showFileName = false
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.operationType = 'copy'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    tagChange(newTag) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      newTag = this.cloneComponent(newTag)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      newTag.vModel = this.activeData.vModel
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      newTag.formId = this.activeId
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      newTag.span = this.activeData.span
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      delete this.activeData.tag
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      delete this.activeData.tagIcon
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      delete this.activeData.document
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      Object.keys(newTag).forEach(key => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.activeData[key] !== undefined
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          && typeof this.activeData[key] === typeof newTag[key]) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          newTag[key] = this.activeData[key]
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.activeData = newTag
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.updateDrawingList(newTag, this.drawingList)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    updateDrawingList(newTag, list) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const index = list.findIndex(item => item.formId === this.activeId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (index > -1) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        list.splice(index, 1, newTag)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        list.forEach(item => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (Array.isArray(item.children)) this.updateDrawingList(newTag, item.children)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-</script>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-<style lang='scss'>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-body, html{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  margin: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  background: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  -moz-osx-font-smoothing: grayscale;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  -webkit-font-smoothing: antialiased;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  text-rendering: optimizeLegibility;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-input, textarea{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.editor-tabs{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  background: #121315;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-tabs__header{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-bottom-color: #121315;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    .el-tabs__nav{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      border-color: #121315;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-tabs__item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    line-height: 32px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #888a8e;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-left: 1px solid #121315 !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background: #363636;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-right: 5px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    user-select: none;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-tabs__item.is-active{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background: #1e1e1e;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-bottom-color: #1e1e1e!important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-icon-edit{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #f1fa8c;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-icon-document{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #a95812;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// home
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.right-scrollbar {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-scrollbar__view {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    padding: 12px 18px 15px 15px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.left-scrollbar .el-scrollbar__wrap {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  overflow-x: hidden !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  margin-bottom: 0 !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.center-tabs{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-tabs__header{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-bottom: 0!important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-tabs__item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 50%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-tabs__nav{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.reg-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding: 12px 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  background: #f8f8f8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-radius: 4px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .close-btn{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    right: -6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    top: -6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    display: block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    line-height: 16px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background: rgba(0, 0, 0, 0.2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-radius: 50%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    z-index: 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    &:hover{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      background: rgba(210, 23, 23, 0.5)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  & + .reg-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-top: 18px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.action-bar{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  & .el-button+.el-button {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-left: 15px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  & i {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertical-align: middle;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    top: -1px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.custom-tree-node{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .node-operation{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    float: right;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  i[class*="el-icon"] + i[class*="el-icon"]{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-left: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-icon-plus{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #409EFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-icon-delete{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #157a0c;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.left-scrollbar .el-scrollbar__view{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  overflow-x: hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.el-rate{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  display: inline-block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  vertical-align: text-top;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.el-upload__tip{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  line-height: 1.2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$selectedColor: #f6f7ff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$lighterBlue: #409EFF;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.container {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.components-list {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding: 8px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .components-item {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    display: inline-block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 48%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin: 1%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    transition: transform 0ms !important;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.components-draggable{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding-bottom: 20px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.components-title{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-size: 14px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  color: #222;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  margin: 6px 2px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .svg-icon{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #666;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 18px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.components-body {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding: 8px 10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  background: $selectedColor;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-size: 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cursor: move;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border: 1px dashed $selectedColor;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-radius: 3px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .svg-icon{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #777;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 15px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  &:hover {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border: 1px dashed #787be8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #787be8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    .svg-icon {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      color: #787be8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.left-board {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  width: 260px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  top: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 100vh;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.left-scrollbar{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: calc(100vh - 42px);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  overflow: hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.center-scrollbar {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: calc(100vh - 42px);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  overflow: hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-left: 1px solid #f1e8e8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-right: 1px solid #f1e8e8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.center-board {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 100vh;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  width: auto;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  margin: 0 350px 0 260px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.empty-info{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  top: 46%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  right: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-size: 18px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  color: #ccb1ea;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  letter-spacing: 4px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.action-bar{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 42px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  text-align: right;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding: 0 15px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border: 1px solid #f1e8e8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-top: none;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-left: none;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .delete-btn{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #F56C6C;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.logo-wrapper{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 42px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  background: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-bottom: 1px solid #f1e8e8;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.logo{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  left: 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  top: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  line-height: 30px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  color: #00afff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-weight: 600;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  font-size: 17px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  white-space: nowrap;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  > img{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 30px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 30px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertical-align: top;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .github{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    display: inline-block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    vertical-align: sub;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-left: 15px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    > img{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      height: 22px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.center-board-row {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding: 12px 12px 15px 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  & > .el-form {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 69 = 12+15+42
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: calc(100vh - 69px);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.drawing-board {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  height: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .components-body {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    padding: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .sortable-ghost {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    display: block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    overflow: hidden;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    &::before {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      content: " ";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      right: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      top: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      height: 3px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      background: rgb(89, 89, 223);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      z-index: 2;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .components-item.sortable-ghost {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 100%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 60px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background-color: $selectedColor;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .active-from-item {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    & > .el-form-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      background: $selectedColor;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    & > .drawing-item-copy, & > .drawing-item-delete{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      display: initial;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    & > .component-name{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      color: $lighterBlue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-form-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-bottom: 15px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.drawing-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cursor: move;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  &.unfocus-bordered:not(.activeFromItem) > div:first-child  {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border: 1px dashed #ccc;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-form-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    padding: 12px 10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.drawing-row-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  position: relative;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  cursor: move;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  box-sizing: border-box;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border: 1px dashed #ccc;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  border-radius: 3px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  padding: 0 2px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  margin-bottom: 15px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .drawing-row-item {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-bottom: 2px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-col{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-top: 22px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .el-form-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    margin-bottom: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .drag-wrapper{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    min-height: 80px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  &.active-from-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border: 1px dashed $lighterBlue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  .component-name{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    top: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    left: 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #bbb;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    display: inline-block;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    padding: 0 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-.drawing-item, .drawing-row-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  &:hover {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    & > .el-form-item{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      background: $selectedColor;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      border-radius: 6px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    & > .drawing-item-copy, & > .drawing-item-delete{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      display: initial;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  & > .drawing-item-copy, & > .drawing-item-delete{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    display: none;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    position: absolute;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    top: -10px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    width: 22px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    height: 22px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    line-height: 22px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    text-align: center;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-radius: 50%;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    font-size: 12px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border: 1px solid;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cursor: pointer;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    z-index: 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  & > .drawing-item-copy{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    right: 56px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-color: $lighterBlue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: $lighterBlue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    &:hover{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      background: $lighterBlue;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      color: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  & > .drawing-item-delete{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    right: 24px;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    border-color: #F56C6C;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    color: #F56C6C;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    background: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    &:hover{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      background: #F56C6C;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      color: #fff;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-</style>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="left-board"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="logo-wrapper"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="logo"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <img :src="logo" alt="logo"> Form Generator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-scrollbar class="left-scrollbar"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="components-list"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="components-title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <svg-icon icon-class="component" />输入型组件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <draggable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="components-draggable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :list="inputComponents" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :group="{ name: 'componentsGroup', pull: 'clone', put: false }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :clone="cloneComponent" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            draggable=".components-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :sort="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @end="onEnd" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-for="(element, index) in inputComponents" :key="index" class="components-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @click="addComponent(element)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="components-body"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <svg-icon :icon-class="element.tagIcon" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {{ element.label }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </draggable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="components-title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <svg-icon icon-class="component" />选择型组件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <draggable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="components-draggable" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :list="selectComponents" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :group="{ name: 'componentsGroup', pull: 'clone', put: false }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :clone="cloneComponent" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            draggable=".components-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :sort="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            @end="onEnd" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-for="(element, index) in selectComponents" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :key="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class="components-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @click="addComponent(element)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="components-body"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <svg-icon :icon-class="element.tagIcon" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {{ element.label }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </draggable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class="components-title"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <svg-icon icon-class="component" /> 布局型组件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <draggable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            class="components-draggable" :list="layoutComponents" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :group="{ name: 'componentsGroup', pull: 'clone', put: false }" :clone="cloneComponent" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            draggable=".components-item" :sort="false" @end="onEnd" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-for="(element, index) in layoutComponents" :key="index" class="components-item" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @click="addComponent(element)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class="components-body"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <svg-icon :icon-class="element.tagIcon" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {{ element.label }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </draggable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-scrollbar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div class="center-board"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="action-bar"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button icon="el-icon-download" type="text" @click="download"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          导出vue文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button class="copy-btn-main" icon="el-icon-document-copy" type="text" @click="copy"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          复制代码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button class="delete-btn" icon="el-icon-delete" type="text" @click="empty"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          清空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-scrollbar class="center-scrollbar"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-row class="center-board-row" :gutter="formConf.gutter"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :size="formConf.size" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :label-position="formConf.labelPosition" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :disabled="formConf.disabled" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :label-width="formConf.labelWidth + 'px'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <draggable class="drawing-board" :list="drawingList" :animation="340" group="componentsGroup"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <draggable-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-for="(element, index) in drawingList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :key="element.renderKey" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :drawing-list="drawingList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :element="element" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :index="index" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :active-id="activeId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                :form-conf="formConf" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @activeItem="activeFormItem" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @copyItem="drawingItemCopy" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                @deleteItem="drawingItemDelete" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </draggable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div v-show="!drawingList.length" class="empty-info"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              从左侧拖入或点选组件进行表单设计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-scrollbar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <right-panel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :active-data="activeData" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :form-conf="formConf" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :show-field="!!drawingList.length" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @tag-change="tagChange" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <code-type-dialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :visible.sync="dialogVisible" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title="选择生成类型" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :show-file-name="showFileName" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @confirm="generate" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <input id="copyNode" type="hidden"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import draggable from 'vuedraggable' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import beautifier from 'js-beautify' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ClipboardJS from 'clipboard' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import render from '@/utils/generator/render' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import RightPanel from './RightPanel' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { inputComponents, selectComponents, layoutComponents, formConf } from '@/utils/generator/config' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { beautifierConf, titleCase } from '@/utils/index' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { makeUpJs } from '@/utils/generator/js' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { makeUpCss } from '@/utils/generator/css' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import drawingDefault from '@/utils/generator/drawingDefault' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import logo from '@/assets/logo/logo.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import CodeTypeDialog from './CodeTypeDialog' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import DraggableItem from './DraggableItem' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let oldActiveId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let tempActiveData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    draggable, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    render, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    RightPanel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    CodeTypeDialog, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    DraggableItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      logo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      idGlobal: 100, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      formConf, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      inputComponents, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      selectComponents, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      layoutComponents, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      labelWidth: 100, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drawingList: drawingDefault, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drawingData: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      activeId: drawingDefault[0].formId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      drawerVisible: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      formData: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dialogVisible: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      generateConf: null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showFileName: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      activeData: drawingDefault[0] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  created() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 防止 firefox 下 拖拽 会新打卡一个选项卡 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    document.body.ondrop = event => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      event.preventDefault() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      event.stopPropagation() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  watch: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // eslint-disable-next-line func-names 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'activeData.label': function (val, oldVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.activeData.placeholder === undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || !this.activeData.tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        || oldActiveId !== this.activeId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.activeData.placeholder = this.activeData.placeholder.replace(oldVal, '') + val 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    activeId: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      handler(val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        oldActiveId = val 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      immediate: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const clipboard = new ClipboardJS('#copyNode', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      text: trigger => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const codeStr = this.generateCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$notify({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          title: '成功', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          message: '代码已复制到剪切板,可粘贴。', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'success' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return codeStr 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    clipboard.on('error', e => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$message.error('代码复制失败') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    activeFormItem(element) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.activeData = element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.activeId = element.formId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onEnd(obj, a) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (obj.from !== obj.to) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.activeData = tempActiveData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.activeId = this.idGlobal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addComponent(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const clone = this.cloneComponent(item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.drawingList.push(clone) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.activeFormItem(clone) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cloneComponent(origin) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const clone = JSON.parse(JSON.stringify(origin)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      clone.formId = ++this.idGlobal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      clone.span = formConf.span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      clone.renderKey = +new Date() // 改变renderKey后可以实现强制更新组件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!clone.layout) clone.layout = 'colFormItem' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (clone.layout === 'colFormItem') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        clone.vModel = `field${this.idGlobal}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        clone.placeholder !== undefined && (clone.placeholder += clone.label) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tempActiveData = clone 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (clone.layout === 'rowFormItem') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        delete clone.label 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        clone.componentName = `row${this.idGlobal}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        clone.gutter = this.formConf.gutter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tempActiveData = clone 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return tempActiveData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    AssembleFormData() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.formData = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fields: JSON.parse(JSON.stringify(this.drawingList)), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ...this.formConf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    generate(data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const func = this[`exec${titleCase(this.operationType)}`] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.generateConf = data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      func && func(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    execRun(data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.AssembleFormData() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.drawerVisible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    execDownload(data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const codeStr = this.generateCode() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const blob = new Blob([codeStr], { type: 'text/plain;charset=utf-8' }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$download.saveAs(blob, data.fileName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    execCopy(data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      document.getElementById('copyNode').click() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    empty() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$confirm('确定要清空所有组件吗?', '提示', { type: 'warning' }).then( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.drawingList = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    drawingItemCopy(item, parent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let clone = JSON.parse(JSON.stringify(item)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      clone = this.createIdAndKey(clone) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      parent.push(clone) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.activeFormItem(clone) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    createIdAndKey(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      item.formId = ++this.idGlobal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      item.renderKey = +new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (item.layout === 'colFormItem') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        item.vModel = `field${this.idGlobal}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (item.layout === 'rowFormItem') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        item.componentName = `row${this.idGlobal}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (Array.isArray(item.children)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        item.children = item.children.map(childItem => this.createIdAndKey(childItem)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    drawingItemDelete(index, parent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      parent.splice(index, 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const len = this.drawingList.length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (len) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.activeFormItem(this.drawingList[len - 1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    generateCode() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const { type } = this.generateConf 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.AssembleFormData() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const script = vueScript(makeUpJs(this.formData, type)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const html = vueTemplate(makeUpHtml(this.formData, type)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const css = cssStyle(makeUpCss(this.formData)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return beautifier.html(html + script + css, beautifierConf.html) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    download() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.dialogVisible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.showFileName = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.operationType = 'download' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    run() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.dialogVisible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.showFileName = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.operationType = 'run' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    copy() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.dialogVisible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.showFileName = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.operationType = 'copy' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tagChange(newTag) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      newTag = this.cloneComponent(newTag) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      newTag.vModel = this.activeData.vModel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      newTag.formId = this.activeId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      newTag.span = this.activeData.span 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      delete this.activeData.tag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      delete this.activeData.tagIcon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      delete this.activeData.document 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Object.keys(newTag).forEach(key => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.activeData[key] !== undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          && typeof this.activeData[key] === typeof newTag[key]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          newTag[key] = this.activeData[key] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.activeData = newTag 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.updateDrawingList(newTag, this.drawingList) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    updateDrawingList(newTag, list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const index = list.findIndex(item => item.formId === this.activeId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (index > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.splice(index, 1, newTag) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list.forEach(item => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (Array.isArray(item.children)) this.updateDrawingList(newTag, item.children) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang='scss'> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+body, html{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  -moz-osx-font-smoothing: grayscale; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  -webkit-font-smoothing: antialiased; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-rendering: optimizeLegibility; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+input, textarea{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.editor-tabs{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #121315; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-tabs__header{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-bottom-color: #121315; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .el-tabs__nav{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      border-color: #121315; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-tabs__item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 32px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    line-height: 32px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #888a8e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-left: 1px solid #121315 !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background: #363636; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-right: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    user-select: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-tabs__item.is-active{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background: #1e1e1e; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-bottom-color: #1e1e1e!important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-icon-edit{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #f1fa8c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-icon-document{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #a95812; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// home 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.right-scrollbar { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-scrollbar__view { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding: 12px 18px 15px 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.left-scrollbar .el-scrollbar__wrap { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow-x: hidden !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 0 !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.center-tabs{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-tabs__header{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-bottom: 0!important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-tabs__item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 50%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-tabs__nav{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.reg-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 12px 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #f8f8f8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 4px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .close-btn{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    right: -6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: -6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    line-height: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background: rgba(0, 0, 0, 0.2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-radius: 50%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    z-index: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    &:hover{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      background: rgba(210, 23, 23, 0.5) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  & + .reg-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-top: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.action-bar{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  & .el-button+.el-button { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-left: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  & i { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vertical-align: middle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: -1px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.custom-tree-node{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .node-operation{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    float: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  i[class*="el-icon"] + i[class*="el-icon"]{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-left: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-icon-plus{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #409EFF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-icon-delete{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #157a0c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.left-scrollbar .el-scrollbar__view{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow-x: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.el-rate{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  vertical-align: text-top; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.el-upload__tip{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 1.2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$selectedColor: #f6f7ff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$lighterBlue: #409EFF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.container { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.components-list { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 8px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .components-item { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 48%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin: 1%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transition: transform 0ms !important; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.components-draggable{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding-bottom: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.components-title{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 14px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #222; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 6px 2px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .svg-icon{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #666; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.components-body { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 8px 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: $selectedColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: move; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 1px dashed $selectedColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .svg-icon{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #777; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  &:hover { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border: 1px dashed #787be8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #787be8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .svg-icon { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #787be8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.left-board { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 260px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  left: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100vh; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.left-scrollbar{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: calc(100vh - 42px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.center-scrollbar { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: calc(100vh - 42px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-left: 1px solid #f1e8e8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-right: 1px solid #f1e8e8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.center-board { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100vh; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: auto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin: 0 350px 0 260px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.empty-info{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 46%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  left: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  right: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 18px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #ccb1ea; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  letter-spacing: 4px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.action-bar{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 42px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 1px solid #f1e8e8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-top: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-left: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .delete-btn{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #F56C6C; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.logo-wrapper{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 42px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  background: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-bottom: 1px solid #f1e8e8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.logo{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  left: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  top: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  line-height: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  color: #00afff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  font-size: 17px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  white-space: nowrap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  > img{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 30px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vertical-align: top; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .github{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vertical-align: sub; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-left: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    > img{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      height: 22px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.center-board-row { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 12px 12px 15px 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  & > .el-form { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 69 = 12+15+42 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: calc(100vh - 69px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.drawing-board { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .components-body { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .sortable-ghost { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    overflow: hidden; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    &::before { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      content: " "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      left: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      right: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      top: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      height: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      background: rgb(89, 89, 223); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      z-index: 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .components-item.sortable-ghost { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 60px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background-color: $selectedColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .active-from-item { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    & > .el-form-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      background: $selectedColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      border-radius: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    & > .drawing-item-copy, & > .drawing-item-delete{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      display: initial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    & > .component-name{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: $lighterBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-form-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-bottom: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.drawing-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: move; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  &.unfocus-bordered:not(.activeFromItem) > div:first-child  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border: 1px dashed #ccc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-form-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding: 12px 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.drawing-row-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cursor: move; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  box-sizing: border-box; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border: 1px dashed #ccc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  border-radius: 3px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding: 0 2px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  margin-bottom: 15px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .drawing-row-item { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-bottom: 2px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-col{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-top: 22px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-form-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-bottom: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .drag-wrapper{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    min-height: 80px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  &.active-from-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border: 1px dashed $lighterBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .component-name{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #bbb; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: inline-block; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding: 0 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.drawing-item, .drawing-row-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  &:hover { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    & > .el-form-item{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      background: $selectedColor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      border-radius: 6px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    & > .drawing-item-copy, & > .drawing-item-delete{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      display: initial; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  & > .drawing-item-copy, & > .drawing-item-delete{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    display: none; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: -10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 22px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 22px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    line-height: 22px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    text-align: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-radius: 50%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 12px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border: 1px solid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    z-index: 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  & > .drawing-item-copy{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    right: 56px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-color: $lighterBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: $lighterBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    &:hover{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      background: $lighterBlue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  & > .drawing-item-delete{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    right: 24px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-color: #F56C6C; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: #F56C6C; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    &:hover{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      background: #F56C6C; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      color: #fff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |