rich-core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,215 @@
1
+ # richform-plus
2
+
3
+ ## 主要功能
4
+ * richform表单组件
5
+ * 数据驱动
6
+ * 校验规则采用标准的JsonSchema,[JsonSchema文档](https://github.com/jingyuLin1999/richform/blob/main/JSON-Schema.md)
7
+ * 可拓展性,widgets下可自定义一些子组件
8
+ * 表单设计器
9
+ * 基于richform表单的拓展,可动态设计表单
10
+ * 表单设计所见即所得
11
+ * 可设置字段属性和校验规则
12
+ * 签核流程
13
+ * 基于RichForm和表单设计器的拓展
14
+ * 流程配置。动态添加节点,设计各节点的签核顺序,串并联签核
15
+ * 节点个性化。每个节点表单用RichForm显示,数据来源于表单设计器的设计结果
16
+ * 节点属性。签核人设置、签核类型(会签,串签)、出口配置
17
+ * 已签核状态显示
18
+ * 错误处理
19
+
20
+ ## 支持vue3.x
21
+ vue2.x 请见[richform](https://github.com/jingyuLin1999/richform)
22
+
23
+ ## 预览
24
+
25
+ ### 在线预览
26
+
27
+ [表单设计器](http://156.232.10.2/richform/#/)
28
+
29
+ [富表单完整功能](http://156.232.10.2/richform/#/richform)
30
+
31
+ ### 本地预览(node版本 16.13.0)
32
+ ```
33
+ npm install
34
+
35
+ npm run serve
36
+ ```
37
+ [表单设计器](http://localhost:8080/#/ )
38
+ http://localhost:8080/#/
39
+
40
+ [富表单完整功能](http://localhost:8080/#/form-design )
41
+ http://localhost:8080/#/form-design
42
+
43
+ ## 用法
44
+ ```
45
+ npm i richform@next -S
46
+ ```
47
+
48
+ ```html
49
+ <div class="demo-wrapper">
50
+ <div class="form-design">
51
+ <form-design />
52
+ </div>
53
+ <div class="rich-form">
54
+ <rich-form :form="form" :schema="schema" :values="values"/>
55
+ </div>
56
+ </div>
57
+ ```
58
+
59
+ ```js
60
+ import { RichForm, FormDesign } from "richform";
61
+ import 'richform/lib/style.css';
62
+ export default {
63
+ components: { RichForm,FormDesign},
64
+ data() {
65
+ return {
66
+ schema: {}, // 验证规则
67
+ values: {}, // 表单的值
68
+ form: {
69
+ border: true, // 显示边框
70
+ grid: false, // 表单内部栅栏
71
+ labelSuffix: ":", // 字段标题后缀内容,默认' : '
72
+ labelWidth: "110px", // 标签宽度,默认50px
73
+ validator: "input", // submit
74
+ labelAlign: "right", // 标签对齐, 默认右对齐, 可选左对齐left
75
+ labelInline: true, // 字段标题显示位置, 默认true左侧left,false显示在top上方
76
+ actions: [
77
+ //声明显示在下方和动作按钮
78
+ {
79
+ name: "reset", // 按键的唯一标识符
80
+ type: "primary", // 按键类型,默认为primary,具体可见element button
81
+ title: "重置", // 按键的文字
82
+ icon: "el-icon-star-off", // 按键图标 具体可见element icon
83
+ right: true, // 如果=true,则显示在右侧
84
+ visible: true, // 按键是否可见,同时满足readonly===false和设置为true才会显示,默认为true
85
+ tips: "提示信息", // 鼠标悬浮在按键的提示信息
86
+ top: true, // 是否在上面, false则在下面
87
+ size: "default" // default / small / mini, 若未指明,则等同于form.size
88
+ },
89
+ {
90
+ name: "submit", // 按键的唯一标识符
91
+ type: "info", // 按键类型,默认为primary,具体可见element button
92
+ title: "提交", // 按键的文字
93
+ icon: "", // 按键图标 具体可见element icon
94
+ right: true, // 如果=true,则显示在右侧
95
+ visible: true, // 按键是否可见,同时满足readonly===false和设置为true才会显示,默认为true
96
+ tips: "提示信息", // 鼠标悬浮在按键的提示信息
97
+ top: true, // 是否在上面, false则在下面
98
+ size: "default" // default / small / mini, 若未指明,则等同于form.size
99
+ }
100
+ ],
101
+ layout: [
102
+ {
103
+ title: "名称对方",
104
+ widget: "input",
105
+ name: "input", // values的箭值,必须有
106
+ type: "text",
107
+ },
108
+ // 更多子组件请见widgets介绍,或者看完整功能
109
+ ]
110
+ }
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ ## 特殊功能
117
+ 1、字段选项依赖
118
+ ```js
119
+ {
120
+ title: "下拉选框B",
121
+ widget: "select",
122
+ name: "selectB",
123
+ description: "我的选项依赖于【下拉选框A】",
124
+ dict: {
125
+ "selectA==选项1": [
126
+ {
127
+ value: "选项1",
128
+ label: "根据[下拉选框A]的值变化A",
129
+ },
130
+ {
131
+ value: "选项2",
132
+ label: "根据[下拉选框A]的值变化B",
133
+ },
134
+ ],
135
+ "selectA == 选项2": "http://localhost:8080/#/form-design",
136
+ "input == 123456": [
137
+ {
138
+ value: "input等于123456",
139
+ label: "input等于123456",
140
+ },
141
+ ],
142
+ },
143
+ options: [
144
+ {
145
+ value: "选项1",
146
+ label: "黄金糕",
147
+ },
148
+ {
149
+ value: "选项2",
150
+ label: "双皮奶",
151
+ },
152
+ ],
153
+ }
154
+ ```
155
+ 补充说明
156
+ 当两个select的选项互相依赖时,箭值为条件,值可以有三种形式,若是url则获取数据,若是数组则直接赋值给options
157
+ ```js
158
+ dict: "http://localhost:8080/#/form-design", // 获取到的值会直接覆盖options
159
+ dict: {
160
+ [<字段名name> == 'A']: "https://shandawang.com/dict/province", // 字典,
161
+ [<字段名name> == 'B']: [{},{}], // options
162
+ [<字段名name> == 'any']: "https://shandawang.com/dict/province", // 若等于any且值是url,<字段名name>的值只要变化,就会带上<字段名name>值到后端过滤获取字典
163
+ [<字段名name> == 'any']: {filterKey: "id"}, // 若等于any且值是对象,filterKey字段和options都必须有。<字段名name>的值只要变化,就会带上<字段名name>值到options中过滤。有一种特殊应用,当被依赖的字段值变化了,根据被依赖选项({label,value,other})的某个字段的值到当前options过滤,此时可配beRelyFilterKey如 {filterKey: "id",beRelyFilterKey: "other"}
164
+ }
165
+ ```
166
+ 2、字段隐藏依赖
167
+ ```js
168
+ {
169
+ title: "名称对方",
170
+ widget: "input",
171
+ name: "input",
172
+ type: "textarea",
173
+ hideRely: "radioA==单选框B",
174
+ }
175
+ ```
176
+ 补充说明
177
+ ```js
178
+ hideRely:<字段名称nameA> == 'C', // 可以是单值
179
+ hideRely:[ // 也可以是多值,只要满足一个条件,就隐藏,且后面条件不会再校验
180
+ <字段名称nameA> == 'C',
181
+ <字段名称nameB> == 'D',
182
+ ]
183
+ ```
184
+ 3、更多widgets配置详情
185
+ 请见src/pages/richform.vue
186
+
187
+ ## 深度编辑
188
+ values可能是深度嵌套如下
189
+ ```js
190
+ {
191
+ title: {
192
+ text: "ECharts 入门示例",
193
+ subtext: "Living Expenses in Shenzhen",
194
+ },
195
+ legend: {
196
+ orient: "horizontal", // vertical/horizontal
197
+ left: 0,
198
+ // top: 0,
199
+ bottom: 0,
200
+ },
201
+ }
202
+ ```
203
+ 要编辑这种valuse可开启deepValues: true
204
+ ```html
205
+ <rich-form :form="form" :schema="schema" :values="values" deepValues/>
206
+ ```
207
+ 此时在定义form的name字段和shema结构,需要与values的结构对应
208
+ ```js
209
+ layout: [{
210
+ title: "标题",
211
+ widget: "input",
212
+ name: "title.text",
213
+ }]
214
+ ```
215
+ [例子](http://117.73.12.76/demo/richform/#/deep-values )
@@ -0,0 +1,2 @@
1
+ .ps{-ms-overflow-style:none;overflow:hidden!important;overflow-anchor:none;touch-action:auto;-ms-touch-action:auto}.ps__rail-x{bottom:0;height:15px}.ps__rail-x,.ps__rail-y{display:none;opacity:0;position:absolute;transition:background-color .2s linear,opacity .2s linear;-webkit-transition:background-color .2s linear,opacity .2s linear}.ps__rail-y{right:0;width:15px}.ps--active-x>.ps__rail-x,.ps--active-y>.ps__rail-y{background-color:transparent;display:block}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:#eee;opacity:.9}.ps__thumb-x{bottom:2px;height:6px;transition:background-color .2s linear,height .2s ease-in-out;-webkit-transition:background-color .2s linear,height .2s ease-in-out}.ps__thumb-x,.ps__thumb-y{background-color:#aaa;border-radius:6px;position:absolute}.ps__thumb-y{right:2px;transition:background-color .2s linear,width .2s ease-in-out;-webkit-transition:background-color .2s linear,width .2s ease-in-out;width:6px}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{background-color:#999;height:11px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{background-color:#999;width:11px}@supports(-ms-overflow-style:none){.ps{overflow:auto!important}}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.ps{overflow:auto!important}}.ps{position:relative}
2
+ :root{--form-background-color: #ffffff;--form-font-size: 13px;--form-active-design-border-color: #4F9FFE;--form-border-color: #ddd;--form-primary-color: #409eff;--form-font-color: #303133;--form-field-title-color: #303133;--form-field-value-color: #303133;--form-field-question-bgcolor: #13ce66;--form-field-error-font-color: #e83030;--el-collapse-header-bg-color: #ffffff;--el-collapse-content-bg-color: #ffffff}.richform{font-size:var(--form-font-size);position:relative}.richform .active-design{border:3px solid var(--form-active-design-border-color) !important}.richform .scrollbar{min-height:20px;box-sizing:border-box}.richform .richform-border{padding:10px;box-sizing:border-box;border:1px solid var(--form-border-color)}.richform.clear-richform{min-height:0px !important}.richform.clear-richform:deep(.actions){margin:0 !important;padding:0}.richform.clear-richform .field-wrapper>.field{min-height:0px !important}.richform.clear-richform .inline-no-grid{margin:0}.richform.clear-richform:deep(.field){margin:0;padding:0}.richform .ps{width:100%}.richform .no-ready{width:100%;height:100%;color:var(--form-primary-color);font-size:15px;display:flex;justify-content:center;align-items:center}.richform.active-form-design{border:1px solid var(--form-active-design-border-color)}.richform .design-draggable,.richform .design-delete,.richform .design-copy{display:inline-block;position:absolute;width:22px;height:26px;line-height:26px;color:#fff;background:#409eff;text-align:center;cursor:pointer;z-index:99999}.richform .design-draggable{left:0;top:0;z-index:99;cursor:move}.richform .design-copy{right:27px;bottom:0;z-index:99}.richform .design-delete{right:0px;bottom:0;z-index:99}.richform .design-field-name{right:1px;top:1px;z-index:99;font-size:10px;display:inline-block;position:absolute;box-sizing:border-box;padding:1px;color:#aaa}.richform .design-draggable-ghost{border-top:5px solid #f56c6c}.richform .base-component-item{width:100%;display:inline-block;text-indent:-9999px}.richform .design-sortable-drag{background:#f4dec9}.richform .layout{padding-right:0}.richform .layout .active-design{border:3px solid var(--form-active-design-border-color)}.richform .layout .field-border-top:first-child{border-top:1px solid var(--form-border-color)}.richform .field-wrapper{position:relative;color:var(--form-font-color);box-sizing:border-box}.richform .field-wrapper .field-clear-empty{padding:0 !important}.richform .field-wrapper .required-field::before{content:"*";color:#f56c6c;margin-right:.2em;font-family:Verdana,Arial,Tahoma;font-weight:400}.richform .field-wrapper>.label-inline{display:flex}.richform .field-wrapper>.label-no-inline{display:flex;flex-direction:column;justify-content:center}.richform .field-wrapper>.field-border{border:1px solid var(--form-border-color);border-top:0}.richform .field-wrapper>.field{align-items:center;position:relative;min-height:48px;box-sizing:border-box}.richform .field-wrapper>.field>.title-wrapper{display:flex;align-items:center;word-break:break-all}.richform .field-wrapper>.field>.title-wrapper>.label-title{margin-left:5px;display:flex;align-items:center;overflow:hidden;color:var(--form-field-title-color)}.richform .field-wrapper>.field>.title-wrapper>.field-question{color:var(--form-field-question-bgcolor);cursor:pointer;margin:0 2px}.richform .field-wrapper>.field>.field-value{color:var(--form-field-value-color)}.richform .field-wrapper>.field .label-right{justify-content:flex-end;padding-right:4px;box-sizing:border-box}.richform .field-wrapper>.field .label-center{justify-content:center;padding-right:4px;box-sizing:border-box}.richform .field-wrapper>.field>.label-vert{justify-content:flex-start;padding:3px 0}.richform .field-wrapper>.field>.field-mask{width:100%;position:relative}.richform .field-wrapper>.field>.field-mask::before{content:"";width:100%;height:100%;position:absolute;z-index:99;left:0;top:0}.richform .field-wrapper>.field>.label-right-border{width:1px;background:var(--form-border-color)}.richform .field-wrapper>.field>.field-value{display:flex;align-items:center;box-sizing:border-box;padding:0 3px;width:100%;position:relative}.richform .field-wrapper>.field>.field-value>.error-message-top{position:absolute;top:-36px;height:34px;line-height:34px;text-align:center;z-index:9999;padding:0 4px;background-color:#f56c6c;color:#fff;border-radius:5px}.richform .field-wrapper>.field>.field-value>.error-message{font-size:12px;height:13px;line-height:13px;color:var(--form-field-error-font-color);position:absolute;left:0;bottom:-13px;z-index:98}.richform .field-wrapper>.field>.field-value-vert{padding-top:1px;padding-left:4px;display:flex;align-items:flex-start;margin-bottom:4px}.richform .field-wrapper>.field>.field-value-vert>.error-message{bottom:-13px}.richform .field-wrapper>.field .el-form-item{margin:0}.richform .grid-layout{position:relative}.richform .grid-layout.grid-layout-border{box-sizing:border-box;border:1px solid var(--form-border-color);border-top:0;border-right:0}.richform .grid-layout .grid-title{color:var(--form-font-color)}.richform .grid-layout .grid-title-border{border-right:1px solid var(--form-border-color)}.richform .grid-layout .drag-wrapper{top:0;left:0;position:absolute;width:100%;height:100%;cursor:pointer;box-sizing:border-box}.richform .grid-layout .grid-title{padding:3px}.richform .grid-layout .gird-content{display:flex;position:relative;box-sizing:border-box}.richform .grid-layout .gird-content .grid-flex{display:flex;width:100%;height:100%}.richform .grid-layout .gird-content .grid-column{width:100%;min-height:62px;padding:6px 0 6px 6px;box-sizing:border-box;display:flex;flex-direction:column}.richform .grid-layout .gird-content .grid-column-nowrap{overflow:hidden}.richform .grid-layout .gird-content .grid-column-padding{padding:6px}.richform .grid-layout .gird-content .grid-column-top{border-top:1px solid var(--form-border-color)}.richform .grid-layout .gird-content .grid-column-border:not(:last-child){border-right:1px solid var(--form-border-color)}.richform .grid-layout .gird-content .grid-column-border:last-child{border-right:1px solid var(--form-border-color)}.richform .tab-wrapper{position:relative;box-sizing:border-box;border:1px solid var(--form-border-color);border-top:0}.richform .tab-wrapper>.design-no-tabs{width:100%;height:40px;position:absolute;z-index:2}.richform .tab-wrapper .tab-container{min-height:15px;padding:0 3px 2px 3px}.richform .tab-wrapper-no-border{border:0 !important}.richform .collapse-wrapper{overflow:hidden;box-sizing:border-box;position:relative}.richform .collapse-wrapper .collapse-title{color:var(--form-primary-color);font-size:15px;margin-left:3px}.richform .collapse-wrapper .collapse-container{box-sizing:border-box;padding:0 5px}.richform .collapse-wrapper>.design-no-collapse{width:100%;height:50px;position:absolute;left:100px}.richform .collapse-wrapper-border{border:1px solid var(--form-border-color);border-top:0;border-bottom:0;cursor:pointer}.richform .collapse-wrapper-border .el-collapse{border-top:0 !important}.richform .actions{margin:2px 0}.richform .actions .right{display:flex;justify-content:flex-end}.button-widget{width:100%;height:100%}.el-cascader__tags .el-tag{min-width:55px !important}.cascader-widget{width:100%}.date-picker-widget{width:100%}.date-picker-widget .el-input{width:100% !important}.checkbox-widget{display:flex;width:100%}.checkbox-widget .widget-checkAll{margin-right:20px}.date-picker-widget{width:100%}.date-picker-widget .el-input{width:100% !important}.draggable-list-widget{display:flex;flex-direction:column;justify-content:flex-start;margin:0;padding:0}.draggable-list-widget .draggable-list-icon,.draggable-list-widget .delete-list-icon{width:30px;height:30px;line-height:30px;font-size:25px;cursor:pointer}.draggable-list-widget .delete-list-icon{color:#fbc5c5}.draggable-list-widget .delete-list-icon:hover{color:#f56c6c}.draggable-list-widget .draggable-list-icon{color:#c8cbcc;cursor:move}.draggable-list-widget .draggable-list-item{display:flex;align-items:center;margin:5px 0}.draggable-list-widget .draggable-list-item .list-handel-move{color:#556567}.draggable-list-widget .draggable-list-item .input-draggable{min-width:60px}.draggable-list-widget .draggable-list-item .column-wrapper{margin-right:3px}.draggable-list-widget .toolbar{display:flex;align-items:center}.draggable-list-widget .toolbar .draggable-list-add{font-size:14px;color:#1890ff;cursor:pointer;margin-right:15px}.draggable-list-widget .toolbar .arrow-icon{display:flex;align-items:center;font-size:15px;cursor:pointer;color:#1890ff}.draggable-list-widget .toolbar .arrow-icon:hover{color:#f56c6c}.draggable-list-widget .toolbar .arrow-icon:first-of-type{margin-right:15px}.option-container{width:100%;height:100%;display:flex;margin-top:3px}.option-container>.option-item{min-width:200px;height:280px;margin-right:3px;border:1px solid #ddd}.option-container>.option-item>.title{height:25px;line-height:25px;border-bottom:1px solid #ddd;padding:0 3px;box-sizing:border-box}.option-container>.option-item>.option-list{height:255px;overflow-y:auto}.option-container>.option-item>.option-list>.option{height:20px;line-height:20px;padding:0 3px;box-sizing:border-box}.option-container>.option-item>.option-list>.option:hover{background:#bbb;color:#fff}.option-container>.option-item>.option-list>.disabled-option{position:relative}.option-container>.option-item>.option-list>.disabled-option::after{content:"";background:"#f00";z-index:1000;position:absolute;left:0;top:0;width:100%;height:100%;cursor:not-allowed}.sure-exp{float:right;margin-top:3px}.icon-container{display:flex;flex-wrap:wrap;max-height:400px;overflow:auto;border-left:1px solid #eee;border-top:1px solid #eee}.icon-container .icon-cell{width:50px;height:50px;line-height:50px;text-align:center;font-size:21px;border:1px solid #eee;border-left:0;border-top:0}.icon-container .active-icon{color:#4f9ffe}.icon-container .icon-cell:last-child{border-right:1px solid #eee}.icon-container .icon-cell:hover{color:#4f9ffe}.sure-icon{float:right;margin-top:4px}.inputnumber-widget{width:100%}.ipinput-widget{width:100%;display:flex;height:36px;align-items:center;justify-content:center;border-radius:4px;line-height:normal;border:1px solid var(--form-border-color);box-sizing:border-box}.ipinput-widget .ip-segment{display:inline-block;width:50px;height:26px;line-height:normal}.ipinput-widget .ip-segment input{width:36px;height:26px;line-height:normal;border:none;outline:none;text-align:center;text-indent:0px;margin:0px;padding:0px;background-color:rgba(0,0,0,0);color:var(--form-font-color)}.ipinput-widget .ip-segment i{display:inline-block;font-size:18px}.layout .field.error input{border:1px solid red;background:rgba(255,0,0,.2)}.select-widget-wrapper{width:100%;height:100%}.select-widget-wrapper>.select-widget{height:100%;width:100%}.widget-slider{width:100%;padding:0 8px}.widget-slider>.select-widget{width:100%}.slot-widget{width:100%;height:100%}.popover-body{height:500px}.table-widget{box-sizing:border-box;padding:1px 0;width:100%}.table-widget .attr{margin-right:3px}.table-widget .fixed-popover{z-index:99}.table-widget .sure-table-popover{float:right;margin-bottom:3px}.text-widget{width:100%}.text-widget .text-text{width:100%;display:flex;color:var(--form-field-value-color)}.timepicker-widget{width:100%}.timepicker-widget .el-date-editor--timerange{width:calc(100% - 20px) !important}.timepicker-widget>.el-time{width:100%}.perfect-tree-tool-tip{border-radius:0;padding:2px 4px}.field-row{display:flex;margin-bottom:3px;align-items:center;margin-top:5px}.field-row .field-label{width:60px;text-align:right;margin-right:4px}.perfect-tree-wrapper{width:100%;margin:0 2px}.perfect-tree-wrapper .show-add-template{display:flex;flex-wrap:wrap;width:100%}.perfect-tree-wrapper .show-add-template .add-template{margin-bottom:2px;width:97px;margin-right:2px}.perfect-tree-wrapper .show-add-template .add-template:last-child{margin-right:0}.perfect-tree-wrapper .perfect-tree-title{height:35px;line-height:35px;border-bottom:1px solid #d6d6d6;font-size:15px}.perfect-tree-wrapper .perfect-tree-node{width:100%;display:flex;justify-content:space-between;align-items:center;font-size:15px}.perfect-tree-wrapper .perfect-tree-node .tools{display:flex;position:absolute;right:0;z-index:3;background-color:#f5f7fa}.perfect-tree-wrapper .perfect-tree-node .tools .tool-item{margin-left:7px;display:none}.perfect-tree-wrapper .perfect-tree-node .node-icon{margin-right:1px}.perfect-tree-wrapper .perfect-tree-node .title{padding:3px 0}.perfect-tree-wrapper .perfect-tree-node .active-node{color:#4f9ffe}.perfect-tree-wrapper .perfect-tree-node:hover .tool-item{display:block}.tree-select-icon .svg{height:1.2em;line-height:1.2em;margin-bottom:-2px}.tree-select-widget{width:100%}.tree-select-widget .el-select{width:100%}.upload-widget{width:100%;overflow:hidden}.upload-widget .upload-type{display:flex;align-items:center;height:25px;margin-bottom:3px;margin-top:5px}.upload-widget .upload-type .type-label{font-size:12px}.jscodding-widget{width:100%;height:100%}.jscodding-widget .code-container{width:100%;height:100%;max-height:150px;resize:vertical;overflow:auto}.jscodding-widget .code-container .cm-editor{height:100%}.jscodding-widget .code-container .cm-gutter,.jscodding-widget .code-container .cm-contnet{min-height:45px}.jscodding-widget .sure-btn{margin-top:1px}.split-layout{width:100%;height:100%;display:flex;position:relative;overflow:hidden}.split-layout.hori{flex-direction:row}.split-layout.vert{flex-direction:column}.split-layout .center{flex:1}.split-layout .panel{height:100%}.split-layout .splitbar{background:#f1f1f1;display:flex;justify-content:center;align-items:center}.split-layout .splitbar.hori{height:100%;width:8px;cursor:e-resize}.split-layout .splitbar.hori>.vbg-ear{height:10%;width:100%;cursor:pointer;background:#e9e9e9;position:relative}.split-layout .splitbar.hori>.vbg-ear:hover{color:#fff}.split-layout .splitbar.hori>.triangle-dire-left::before{content:"";width:100%;height:10px;position:absolute;right:1px;top:50%;height:0;width:0;border-right:5px solid currentColor;border-top:5px solid rgba(0,0,0,0);border-bottom:5px solid rgba(0,0,0,0)}.split-layout .splitbar.hori>.triangle-dire-right::before{content:"";width:100%;height:10px;position:absolute;right:1px;top:50%;height:0;width:0;border-left:5px solid currentColor;border-top:5px solid rgba(0,0,0,0);border-bottom:5px solid rgba(0,0,0,0)}.split-layout .splitbar.vert{width:100%;height:8px;cursor:s-resize}.split-layout .splitbar.vert>.vbg-ear{width:10%;height:8px;cursor:pointer;background:#e9e9e9;position:relative}.split-layout .splitbar.vert>.vbg-ear:hover{color:#fff}.split-layout .splitbar.vert>.triangle-dire-up::before{content:"";width:10px;height:100%;position:absolute;right:50%;bottom:1px;height:0;width:0;border-bottom:5px solid currentColor;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0)}.split-layout .splitbar.vert>.triangle-dire-down::before{content:"";width:10px;height:100%;position:absolute;right:50%;bottom:1px;height:0;width:0;border-top:5px solid currentColor;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0)}.popover-title-container{width:100%;display:flex;justify-content:space-between;margin-bottom:1px}.iconfont{font-family:"iconfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.form-design{height:100%;display:flex;flex-direction:column}.form-design .design-sortable-drag{background:red}.form-design a{text-decoration:none}.form-design .tab-attribute .el-tabs__item{width:140px;text-align:center}.form-design>.design-header{height:53px;padding:0 10px;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center;color:#fff;box-shadow:0 1px #ccc;margin-bottom:1px;box-sizing:border-box;background:linear-gradient(90deg, #1179f4 45%, #079dc8, #01b3ac)}.form-design>.design-header .header-left{display:flex;font-size:14px;align-items:center}.form-design>.design-header .header-left .title{margin:0;padding:0;font-size:19px;height:53px;line-height:55px}.form-design>.design-header .header-left .header-github-image{width:35px;height:35px;margin-right:12px}.form-design>.design-header .header-right{display:flex;font-size:14px;align-items:center}.form-design>.design-header .header-right>.tool{cursor:pointer;margin-left:10px}.form-design .widget-title{height:25px;line-height:25px;font-size:14px;margin-left:3px}.form-design>.design-content{height:calc(100% - 30px);position:relative;display:flex}.form-design>.design-content .left-view-panel{height:100%;width:200px;transition:width .3s;overflow:hidden}.form-design>.design-content .base-widgets{padding-right:2px}.form-design>.design-content .base-widgets .base-components{display:flex;flex-wrap:wrap;justify-content:space-between}.form-design>.design-content .base-widgets .base-components>.base-component-item{height:30px;line-height:30px;width:49.5%;text-align:center;font-size:12px;background:#eff0f3;margin:3px 0;cursor:move;box-sizing:border-box}.form-design>.design-content .base-widgets .base-components>.base-component-item:hover{border:1px dashed #01b3ac}.form-design>.design-content .design-canvas{height:calc(100% - 22px)}