tianheng-ui 0.0.56 → 0.0.58

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.
Files changed (239) hide show
  1. package/lib/039af9192b9bb277966ceb4e4ce29c41.js +16 -0
  2. package/lib/{c755e7fc08446566ee8dd3a8aa8fe43f.js → 2d84c80112a372bc149cad3464e90fa3.js} +404 -502
  3. package/lib/5977b934a4c6b480790864ea01303173.js +10834 -0
  4. package/lib/7745f3e776488705a38e62f85adad54d.js +16 -0
  5. package/lib/de8dee841ffdaaede3a2254deef30376.js +15395 -0
  6. package/lib/e78eab250e7f8ccac3d918dfdb06ca10.js +8904 -0
  7. package/lib/index.js +4 -2
  8. package/lib/theme-chalk/fonts/PingFang.ttf +0 -0
  9. package/lib/theme-chalk/fonts/bpmn.eot +0 -0
  10. package/lib/theme-chalk/fonts/bpmn.svg +224 -0
  11. package/lib/theme-chalk/fonts/bpmn.ttf +0 -0
  12. package/lib/theme-chalk/fonts/bpmn.woff +0 -0
  13. package/lib/theme-chalk/fonts/bpmn.woff2 +0 -0
  14. package/lib/theme-chalk/fonts/fontawesome-webfont.eot +0 -0
  15. package/lib/theme-chalk/fonts/fontawesome-webfont.svg +2671 -0
  16. package/lib/theme-chalk/fonts/fontawesome-webfont.ttf +0 -0
  17. package/lib/theme-chalk/fonts/fontawesome-webfont.woff +0 -0
  18. package/lib/theme-chalk/fonts/fontawesome-webfont.woff2 +0 -0
  19. package/lib/{iconfont.eot → theme-chalk/fonts/iconfont.eot} +0 -0
  20. package/lib/{iconfont.svg → theme-chalk/fonts/iconfont.svg} +0 -0
  21. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  22. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  23. package/lib/theme-chalk/images/notData.png +0 -0
  24. package/lib/theme-chalk/index.scss +30 -0
  25. package/lib/theme-chalk/styles/button.scss +501 -0
  26. package/lib/theme-chalk/styles/card.scss +29 -0
  27. package/lib/theme-chalk/styles/cell.scss +54 -0
  28. package/lib/theme-chalk/styles/codeEditor.scss +9 -0
  29. package/lib/theme-chalk/styles/col.scss +151 -0
  30. package/lib/theme-chalk/styles/dialog.scss +59 -0
  31. package/lib/theme-chalk/styles/empty.scss +22 -0
  32. package/lib/theme-chalk/styles/feature.scss +42 -0
  33. package/lib/theme-chalk/styles/font.css +7 -0
  34. package/lib/theme-chalk/{icon.css → styles/icon.css} +3 -3
  35. package/lib/theme-chalk/styles/imagePreview.scss +113 -0
  36. package/lib/theme-chalk/styles/img.scss +35 -0
  37. package/lib/theme-chalk/styles/reset.scss +8 -0
  38. package/lib/theme-chalk/{root.css → styles/root.css} +2 -35
  39. package/lib/theme-chalk/styles/row.scss +23 -0
  40. package/lib/theme-chalk/styles/upload.scss +598 -0
  41. package/lib/theme-chalk/styles/variable.scss +80 -0
  42. package/lib/tianheng-ui.js +71 -9
  43. package/package.json +24 -4
  44. package/packages/Button/index.js +8 -0
  45. package/packages/Button/index.vue +80 -0
  46. package/packages/Card/index.js +8 -0
  47. package/packages/Card/index.vue +37 -0
  48. package/packages/{cell → Cell}/index.js +0 -0
  49. package/packages/Cell/index.vue +68 -0
  50. package/packages/{codeEditor → CodeEditor}/index.js +0 -0
  51. package/packages/{codeEditor → CodeEditor}/index.vue +73 -108
  52. package/packages/Col/index.js +8 -0
  53. package/packages/Col/index.vue +41 -0
  54. package/packages/{dialog → Dialog}/index.js +0 -0
  55. package/packages/{dialog → Dialog}/index.vue +19 -10
  56. package/packages/Empty/images/notData.png +0 -0
  57. package/packages/{empty → Empty}/index.js +0 -0
  58. package/packages/Empty/index.vue +35 -0
  59. package/packages/FormMaking/Container.vue +755 -0
  60. package/packages/{formMaking → FormMaking}/FormConfig.vue +22 -6
  61. package/packages/FormMaking/GenerateForm.vue +247 -0
  62. package/packages/{formMaking → FormMaking}/GenerateFormItem.vue +340 -172
  63. package/packages/FormMaking/GenerateFormItemH5.vue +828 -0
  64. package/packages/{formMaking → FormMaking}/Upload/index.vue +0 -0
  65. package/packages/FormMaking/WidgetConfig.vue +473 -0
  66. package/packages/{formMaking → FormMaking}/WidgetForm.vue +49 -31
  67. package/packages/FormMaking/WidgetFormItem.vue +157 -0
  68. package/packages/{formMaking/componentsConfig.js → FormMaking/custom/config.js} +379 -163
  69. package/packages/FormMaking/custom/configs/alliance.vue +0 -0
  70. package/packages/FormMaking/custom/configs/blank.vue +54 -0
  71. package/packages/FormMaking/custom/configs/button.vue +144 -0
  72. package/packages/FormMaking/custom/configs/cascader.vue +182 -0
  73. package/packages/FormMaking/custom/configs/cell.vue +81 -0
  74. package/packages/FormMaking/custom/configs/checkbox.vue +237 -0
  75. package/packages/FormMaking/custom/configs/color.vue +137 -0
  76. package/packages/FormMaking/custom/configs/date.vue +158 -0
  77. package/packages/FormMaking/custom/configs/divider.vue +61 -0
  78. package/packages/FormMaking/custom/configs/editor.vue +71 -0
  79. package/packages/FormMaking/custom/configs/filler.vue +52 -0
  80. package/packages/FormMaking/custom/configs/grid.vue +103 -0
  81. package/packages/FormMaking/custom/configs/image.vue +148 -0
  82. package/packages/FormMaking/custom/configs/input.vue +176 -0
  83. package/packages/FormMaking/custom/configs/number.vue +140 -0
  84. package/packages/FormMaking/custom/configs/radio.vue +215 -0
  85. package/packages/FormMaking/custom/configs/rate.vue +109 -0
  86. package/packages/FormMaking/custom/configs/select.vue +308 -0
  87. package/packages/FormMaking/custom/configs/slider.vue +142 -0
  88. package/packages/FormMaking/custom/configs/switch.vue +130 -0
  89. package/packages/FormMaking/custom/configs/table.vue +105 -0
  90. package/packages/FormMaking/custom/configs/table_h5.vue +102 -0
  91. package/packages/FormMaking/custom/configs/tabs.vue +175 -0
  92. package/packages/FormMaking/custom/configs/text.vue +71 -0
  93. package/packages/FormMaking/custom/configs/textarea.vue +167 -0
  94. package/packages/FormMaking/custom/configs/time.vue +153 -0
  95. package/packages/FormMaking/custom/configs/upload.vue +150 -0
  96. package/packages/FormMaking/custom/index.js +33 -0
  97. package/packages/FormMaking/custom/items/alliance.vue +132 -0
  98. package/packages/FormMaking/custom/items/blank.vue +16 -0
  99. package/packages/FormMaking/custom/items/button.vue +27 -0
  100. package/packages/FormMaking/custom/items/cascader.vue +29 -0
  101. package/packages/FormMaking/custom/items/cell.vue +18 -0
  102. package/packages/FormMaking/custom/items/checkbox.vue +46 -0
  103. package/packages/FormMaking/custom/items/color.vue +19 -0
  104. package/packages/FormMaking/custom/items/date.vue +29 -0
  105. package/packages/FormMaking/custom/items/divider.vue +14 -0
  106. package/packages/FormMaking/custom/items/editor.vue +22 -0
  107. package/packages/FormMaking/custom/items/filler.vue +17 -0
  108. package/packages/FormMaking/custom/items/grid.vue +129 -0
  109. package/packages/FormMaking/custom/items/image.vue +42 -0
  110. package/packages/FormMaking/custom/items/input.vue +36 -0
  111. package/packages/FormMaking/custom/items/login.vue +13 -0
  112. package/packages/FormMaking/custom/items/number.vue +24 -0
  113. package/packages/FormMaking/custom/items/radio.vue +44 -0
  114. package/packages/FormMaking/custom/items/rate.vue +20 -0
  115. package/packages/FormMaking/custom/items/select.vue +32 -0
  116. package/packages/FormMaking/custom/items/slider.vue +34 -0
  117. package/packages/FormMaking/custom/items/switch.vue +22 -0
  118. package/packages/FormMaking/custom/items/table.vue +106 -0
  119. package/packages/FormMaking/custom/items/table_h5.vue +126 -0
  120. package/packages/FormMaking/custom/items/tabs.vue +145 -0
  121. package/packages/FormMaking/custom/items/text.vue +18 -0
  122. package/packages/FormMaking/custom/items/textarea.vue +37 -0
  123. package/packages/FormMaking/custom/items/time.vue +32 -0
  124. package/packages/FormMaking/custom/items/upload.vue +83 -0
  125. package/packages/FormMaking/custom/mixins/index.js +61 -0
  126. package/packages/FormMaking/custom/register.js +18 -0
  127. package/packages/{formMaking → FormMaking}/iconfont/demo.css +0 -0
  128. package/packages/{formMaking → FormMaking}/iconfont/demo_index.html +0 -0
  129. package/packages/{formMaking → FormMaking}/iconfont/iconfont.css +0 -0
  130. package/packages/{formMaking → FormMaking}/iconfont/iconfont.eot +0 -0
  131. package/packages/{formMaking → FormMaking}/iconfont/iconfont.js +0 -0
  132. package/packages/{formMaking → FormMaking}/iconfont/iconfont.svg +0 -0
  133. package/{lib → packages/FormMaking/iconfont}/iconfont.ttf +0 -0
  134. package/{lib → packages/FormMaking/iconfont}/iconfont.woff +0 -0
  135. package/packages/{formMaking → FormMaking}/iconfont/iconfont.woff2 +0 -0
  136. package/packages/FormMaking/index.js +35 -0
  137. package/packages/{formMaking → FormMaking}/lang/en-US.js +1 -1
  138. package/packages/{formMaking → FormMaking}/lang/zh-CN.js +1 -1
  139. package/packages/{formMaking → FormMaking}/styles/cover.scss +1 -1
  140. package/packages/{formMaking → FormMaking}/styles/index.scss +445 -429
  141. package/packages/{formMaking → FormMaking/util}/generateCode.js +5 -5
  142. package/packages/{formMaking → FormMaking}/util/index.js +0 -0
  143. package/packages/{formMaking → FormMaking}/util/request.js +0 -0
  144. package/packages/{icons → Icons}/index.js +0 -0
  145. package/packages/{icons → Icons}/index.vue +26 -9
  146. package/packages/Image/index.js +8 -0
  147. package/packages/Image/index.vue +146 -0
  148. package/packages/ImagePreview/index.js +8 -0
  149. package/packages/ImagePreview/index.vue +386 -0
  150. package/packages/Row/index.js +8 -0
  151. package/packages/Row/index.vue +35 -0
  152. package/packages/{table → Table}/action.js +0 -0
  153. package/packages/{table → Table}/action.vue +1 -1
  154. package/packages/Table/column.vue +63 -0
  155. package/packages/{table → Table}/index.js +0 -0
  156. package/packages/{table → Table}/index.vue +25 -23
  157. package/packages/{table → Table}/search.js +0 -0
  158. package/packages/{table → Table}/search.vue +2 -2
  159. package/packages/{table → Table}/tools.js +0 -0
  160. package/packages/{table → Table}/tools.vue +0 -0
  161. package/packages/Workflow/Log.js +99 -0
  162. package/packages/Workflow/designer/ProcessDesigner.vue +628 -0
  163. package/packages/Workflow/designer/index.js +7 -0
  164. package/packages/Workflow/designer/plugins/content-pad/contentPadProvider.js +390 -0
  165. package/packages/Workflow/designer/plugins/content-pad/index.js +6 -0
  166. package/packages/Workflow/designer/plugins/defaultEmpty.js +24 -0
  167. package/packages/Workflow/designer/plugins/descriptor/activitiDescriptor.json +1071 -0
  168. package/packages/Workflow/designer/plugins/descriptor/camundaDescriptor.json +1087 -0
  169. package/packages/Workflow/designer/plugins/descriptor/flowableDescriptor.json +1215 -0
  170. package/packages/Workflow/designer/plugins/extension-moddle/activiti/activitiExtension.js +74 -0
  171. package/packages/Workflow/designer/plugins/extension-moddle/activiti/index.js +9 -0
  172. package/packages/Workflow/designer/plugins/extension-moddle/camunda/extension.js +148 -0
  173. package/packages/Workflow/designer/plugins/extension-moddle/camunda/index.js +6 -0
  174. package/packages/Workflow/designer/plugins/extension-moddle/flowable/flowableExtension.js +74 -0
  175. package/packages/Workflow/designer/plugins/extension-moddle/flowable/index.js +9 -0
  176. package/packages/Workflow/designer/plugins/palette/CustomPalette.js +156 -0
  177. package/packages/Workflow/designer/plugins/palette/index.js +6 -0
  178. package/packages/Workflow/designer/plugins/palette/paletteProvider.js +160 -0
  179. package/packages/Workflow/designer/plugins/translate/customTranslate.js +41 -0
  180. package/packages/Workflow/designer/plugins/translate/zh.js +238 -0
  181. package/packages/Workflow/highlight/index.js +5 -0
  182. package/packages/Workflow/index.js +26 -0
  183. package/packages/Workflow/index.vue +395 -0
  184. package/packages/Workflow/modules/auto-place/CustomAutoPlace.js +81 -0
  185. package/packages/Workflow/modules/auto-place/index.js +6 -0
  186. package/packages/Workflow/modules/custom-renderer/CustomRenderer.js +17 -0
  187. package/packages/Workflow/modules/custom-renderer/index.js +6 -0
  188. package/packages/Workflow/modules/rules/CustomRules.js +16 -0
  189. package/packages/Workflow/modules/rules/index.js +6 -0
  190. package/packages/Workflow/palette/ProcessPalette.vue +106 -0
  191. package/packages/Workflow/palette/index.js +7 -0
  192. package/packages/Workflow/penal/PropertiesPanel.vue +247 -0
  193. package/packages/Workflow/penal/base/ElementBaseInfo.vue +80 -0
  194. package/packages/Workflow/penal/flow-condition/FlowCondition.vue +142 -0
  195. package/packages/Workflow/penal/form/ElementForm.vue +367 -0
  196. package/packages/Workflow/penal/index.js +7 -0
  197. package/packages/Workflow/penal/listeners/ElementListeners.vue +299 -0
  198. package/packages/Workflow/penal/listeners/UserTaskListeners.vue +322 -0
  199. package/packages/Workflow/penal/listeners/template.js +178 -0
  200. package/packages/Workflow/penal/listeners/utilSelf.js +62 -0
  201. package/packages/Workflow/penal/multi-instance/ElementMultiInstance.vue +200 -0
  202. package/packages/Workflow/penal/other/ElementOtherConfig.vue +59 -0
  203. package/packages/Workflow/penal/properties/ElementProperties.vue +135 -0
  204. package/packages/Workflow/penal/signal-message/SignalAndMessage.vue +104 -0
  205. package/packages/Workflow/penal/task/ElementTask.vue +73 -0
  206. package/packages/Workflow/penal/task/task-components/ReceiveTask.vue +97 -0
  207. package/packages/Workflow/penal/task/task-components/ScriptTask.vue +85 -0
  208. package/packages/Workflow/penal/task/task-components/UserTask.vue +535 -0
  209. package/packages/Workflow/theme/element-variables.scss +70 -0
  210. package/packages/Workflow/theme/index.scss +2 -0
  211. package/packages/Workflow/theme/process-designer.scss +157 -0
  212. package/packages/Workflow/theme/process-panel.scss +107 -0
  213. package/packages/Workflow/translations.js +25 -0
  214. package/packages/Workflow/utils.js +71 -0
  215. package/packages/upload/ajax.js +85 -0
  216. package/packages/upload/index.js +8 -0
  217. package/packages/upload/index.vue +325 -0
  218. package/packages/upload/locale.js +9 -0
  219. package/packages/upload/upload-dragger.vue +70 -0
  220. package/packages/upload/upload-list.vue +123 -0
  221. package/packages/upload/upload.vue +211 -0
  222. package/lib/03250ed25fc1b305e9980cf7cf0dfb09.js +0 -1
  223. package/lib/theme-chalk/cell.css +0 -53
  224. package/lib/theme-chalk/dialog.css +0 -41
  225. package/lib/theme-chalk/empty.css +0 -27
  226. package/lib/theme-chalk/index.css +0 -6
  227. package/lib/theme-chalk/reset.css +0 -4
  228. package/lib/tianheng-ui.js.map +0 -1
  229. package/packages/cell/index.vue +0 -116
  230. package/packages/empty/index.vue +0 -33
  231. package/packages/formMaking/Container.vue +0 -591
  232. package/packages/formMaking/CusDialog.vue +0 -134
  233. package/packages/formMaking/GenerateForm.vue +0 -174
  234. package/packages/formMaking/WidgetConfig.vue +0 -1539
  235. package/packages/formMaking/WidgetFormItem.vue +0 -817
  236. package/packages/formMaking/iconfont/iconfont.ttf +0 -0
  237. package/packages/formMaking/iconfont/iconfont.woff +0 -0
  238. package/packages/formMaking/index.js +0 -77
  239. package/packages/table/column.vue +0 -111
@@ -1,1539 +0,0 @@
1
- <template>
2
- <div v-if="show">
3
- <el-form label-position="top">
4
- <el-form-item label="字段标识" v-if="data.type != 'grid'">
5
- <el-input v-model="data.model"></el-input>
6
- </el-form-item>
7
-
8
- <el-form-item label="标题" v-if="data.type != 'grid'">
9
- <el-input v-model="data.name"></el-input>
10
- </el-form-item>
11
-
12
- <el-form-item
13
- label="宽度"
14
- v-if="Object.keys(data.options).indexOf('width') >= 0"
15
- >
16
- <el-input v-model="data.options.width"></el-input>
17
- </el-form-item>
18
-
19
- <el-form-item
20
- label="标签宽度"
21
- v-if="Object.keys(data.options).indexOf('labelWidth') >= 0"
22
- >
23
- <div style="display: flex;">
24
- <el-checkbox v-model="data.options.isLabelWidth">自定义</el-checkbox>
25
- <el-input-number
26
- v-model="data.options.labelWidth"
27
- :min="0"
28
- :max="200"
29
- :disabled="!data.options.isLabelWidth"
30
- ></el-input-number>
31
- </div>
32
- </el-form-item>
33
-
34
- <el-form-item
35
- label="高度"
36
- v-if="Object.keys(data.options).indexOf('height') >= 0"
37
- >
38
- <el-input v-model="data.options.height"></el-input>
39
- </el-form-item>
40
-
41
- <el-form-item
42
- label="格式化"
43
- v-if="
44
- data.type === 'slider' &&
45
- Object.keys(data.options).indexOf('formatTooltip') >= 0
46
- "
47
- >
48
- <el-input-number
49
- v-model="data.options.formatTooltip"
50
- :min="0.1"
51
- ></el-input-number>
52
- </el-form-item>
53
-
54
- <el-form-item
55
- label="大小"
56
- v-if="Object.keys(data.options).indexOf('size') >= 0"
57
- >
58
- 宽度
59
- <el-input
60
- style="width: 90px;"
61
- type="number"
62
- v-model.number="data.options.size.width"
63
- ></el-input>
64
- 高度
65
- <el-input
66
- style="width: 90px;"
67
- type="number"
68
- v-model.number="data.options.size.height"
69
- ></el-input>
70
- </el-form-item>
71
-
72
- <el-form-item
73
- label="对齐方式"
74
- v-if="Object.keys(data.options).indexOf('contentPosition') >= 0"
75
- >
76
- <el-radio-group v-model="data.options.contentPosition">
77
- <el-radio-button label="left">左对齐</el-radio-button>
78
- <el-radio-button label="center">居中对齐</el-radio-button>
79
- <el-radio-button label="right">右对齐</el-radio-button>
80
- </el-radio-group>
81
- </el-form-item>
82
-
83
- <el-form-item label="文件列表样式" v-if="data.type == 'imgupload'">
84
- <el-select
85
- v-model="data.options.listType"
86
- @change="handleImguploadType"
87
- >
88
- <el-option value="default" label="文件列表"></el-option>
89
- <el-option value="picture-card" label="照片墙"></el-option>
90
- <el-option value="picture" label="图片列表缩略图"></el-option>
91
- </el-select>
92
- </el-form-item>
93
-
94
- <el-form-item
95
- label="占位内容"
96
- v-if="
97
- Object.keys(data.options).indexOf('placeholder') >= 0 &&
98
- (data.type != 'time' || data.type != 'date')
99
- "
100
- >
101
- <el-input v-model="data.options.placeholder"></el-input>
102
- </el-form-item>
103
-
104
- <el-form-item
105
- label="布局方式"
106
- v-if="Object.keys(data.options).indexOf('inline') >= 0"
107
- >
108
- <el-radio-group v-model="data.options.inline">
109
- <el-radio-button :label="false">块级</el-radio-button>
110
- <el-radio-button :label="true">inline</el-radio-button>
111
- </el-radio-group>
112
- </el-form-item>
113
-
114
- <template v-if="['number', 'checkbox', 'slider'].includes(data.type)">
115
- <el-form-item label="">
116
- <div v-if="Object.keys(data.options).indexOf('min') >= 0">
117
- <div class="el-form-item__label">
118
- 最小{{ ["checkbox"].includes(data.type) ? "勾选" : "值" }}:
119
- </div>
120
- <br />
121
- <el-input-number v-model="data.options.min" :min="0">
122
- </el-input-number>
123
- </div>
124
- <div v-if="Object.keys(data.options).indexOf('max') >= 0">
125
- <div class="el-form-item__label">
126
- 最大{{ ["checkbox"].includes(data.type) ? "勾选" : "值" }}:
127
- </div>
128
- <br />
129
- <el-input-number
130
- v-model="data.options.max"
131
- :min="data.options.min || 1"
132
- >
133
- </el-input-number>
134
- </div>
135
- </el-form-item>
136
- </template>
137
-
138
- <el-form-item
139
- label="步长"
140
- v-if="Object.keys(data.options).indexOf('step') >= 0"
141
- >
142
- <el-input-number
143
- v-model="data.options.step"
144
- :min="0"
145
- :max="100"
146
- :step="1"
147
- ></el-input-number>
148
- </el-form-item>
149
-
150
- <el-form-item
151
- label="显示输入框"
152
- v-if="Object.keys(data.options).indexOf('showInput') >= 0"
153
- >
154
- <el-switch v-model="data.options.showInput"></el-switch>
155
- </el-form-item>
156
-
157
- <el-form-item
158
- label="显示间断点"
159
- v-if="Object.keys(data.options).indexOf('showStops') >= 0"
160
- >
161
- <el-switch v-model="data.options.showStops"></el-switch>
162
- </el-form-item>
163
-
164
- <el-form-item
165
- label="开启范围选择"
166
- v-if="
167
- data.type === 'slider' &&
168
- Object.keys(data.options).indexOf('range') >= 0
169
- "
170
- >
171
- <el-switch v-model="data.options.range"></el-switch>
172
- </el-form-item>
173
-
174
- <el-form-item
175
- label="精度"
176
- v-if="Object.keys(data.options).indexOf('precision') >= 0"
177
- >
178
- <el-input-number
179
- v-model="data.options.precision"
180
- :min="0"
181
- :max="100"
182
- :step="1"
183
- ></el-input-number>
184
- </el-form-item>
185
-
186
- <el-form-item
187
- label="按钮位置"
188
- v-if="Object.keys(data.options).indexOf('controlsPosition') >= 0"
189
- >
190
- <el-radio-group v-model="data.options.controlsPosition">
191
- <el-radio-button :label="false">两边</el-radio-button>
192
- <el-radio-button :label="true">右边</el-radio-button>
193
- </el-radio-group>
194
- </el-form-item>
195
-
196
- <el-form-item
197
- label="是否多选"
198
- v-if="data.type == 'select' || data.type == 'imgupload'"
199
- >
200
- <el-switch
201
- v-model="data.options.multiple"
202
- @change="handleSelectMuliple"
203
- ></el-switch>
204
- </el-form-item>
205
- <el-form-item label="是否可以拖拽" v-if="data.type == 'imgupload'">
206
- <el-switch
207
- v-model="data.options.drag"
208
- @change="handleImguploadDrag"
209
- ></el-switch>
210
- </el-form-item>
211
-
212
- <el-form-item
213
- label="是否可搜索"
214
- v-if="data.type === 'select' || data.type === 'cascader'"
215
- >
216
- <el-switch v-model="data.options.filterable"></el-switch>
217
- </el-form-item>
218
-
219
- <el-form-item
220
- label="是否可创建条目"
221
- v-if="data.type == 'select' && data.options.multiple"
222
- >
223
- <el-switch v-model="data.options.allowCreate"></el-switch>
224
- </el-form-item>
225
-
226
- <el-form-item
227
- label="允许半选"
228
- v-if="Object.keys(data.options).indexOf('allowHalf') >= 0"
229
- >
230
- <el-switch v-model="data.options.allowHalf"> </el-switch>
231
- </el-form-item>
232
-
233
- <el-form-item
234
- label="加入辅助文字"
235
- v-if="Object.keys(data.options).indexOf('showText') >= 0"
236
- >
237
- <el-switch v-model="data.options.showText"> </el-switch>
238
- </el-form-item>
239
-
240
- <el-form-item
241
- label="支持透明度选择"
242
- v-if="Object.keys(data.options).indexOf('showAlpha') >= 0"
243
- >
244
- <el-switch v-model="data.options.showAlpha"> </el-switch>
245
- </el-form-item>
246
-
247
- <el-form-item
248
- label="是否显示标签"
249
- v-if="Object.keys(data.options).indexOf('showLabel') >= 0"
250
- >
251
- <el-switch v-model="data.options.showLabel"> </el-switch>
252
- </el-form-item>
253
-
254
- <el-form-item
255
- label="选项"
256
- v-if="Object.keys(data.options).indexOf('options') >= 0"
257
- >
258
- <el-radio-group
259
- v-model="data.options.remote"
260
- size="mini"
261
- style="margin-bottom:10px;"
262
- >
263
- <el-radio-button :label="false">静态数据</el-radio-button>
264
- <el-radio-button :label="true">远端数据</el-radio-button>
265
- </el-radio-group>
266
- <template v-if="data.options.remote">
267
- <div>
268
- <!-- <el-input size="mini" style="" v-model="data.options.remoteFunc">
269
- <template slot="prepend">远端方法</template>
270
- </el-input> -->
271
- <!-- <div style="width:70px;">接口名</div> -->
272
- <el-select
273
- class="remoteApis"
274
- size="mini"
275
- v-model="data.options.remoteFunc"
276
- placeholder="请选择远端方法"
277
- >
278
- <template slot="prefix">
279
- <div style="width:70px;">接口名</div>
280
- </template>
281
- <el-option-group
282
- v-for="group in remoteApis"
283
- :key="group.label"
284
- :label="group.label"
285
- >
286
- <el-option
287
- v-for="item in group.options"
288
- :key="item.value"
289
- :label="item.label"
290
- :value="item.value"
291
- >
292
- </el-option>
293
- </el-option-group>
294
- </el-select>
295
-
296
- <el-input size="mini" style="" v-model="data.options.props.value">
297
- <template slot="prepend">
298
- <div style="width:30px;">值</div>
299
- </template>
300
- </el-input>
301
- <el-input size="mini" style="" v-model="data.options.props.label">
302
- <template slot="prepend">
303
- <div style="width:30px;">标签</div>
304
- </template>
305
- </el-input>
306
- </div>
307
- </template>
308
- <template v-else>
309
- <template
310
- v-if="
311
- data.type == 'radio' ||
312
- (data.type == 'select' && !data.options.multiple)
313
- "
314
- >
315
- <el-radio-group v-model="data.options.defaultValue">
316
- <draggable
317
- tag="ul"
318
- :list="data.options.options"
319
- v-bind="{
320
- group: { name: 'options' },
321
- ghostClass: 'ghost',
322
- handle: '.drag-item'
323
- }"
324
- handle=".drag-item"
325
- >
326
- <li v-for="(item, index) in data.options.options" :key="index">
327
- <el-radio :label="item.value" style="margin-right: 5px;">
328
- <el-input
329
- :style="{
330
- width: data.options.showLabel ? '90px' : '180px'
331
- }"
332
- size="mini"
333
- v-model="item.value"
334
- ></el-input>
335
- <el-input
336
- style="width:90px;"
337
- size="mini"
338
- v-if="data.options.showLabel"
339
- v-model="item.label"
340
- ></el-input>
341
- <!-- <input v-model="item.value"/> -->
342
- </el-radio>
343
- <i
344
- class="drag-item"
345
- style="font-size: 16px;margin: 0 5px;cursor: move;"
346
- ><i class="iconfont icon-icon_bars"></i
347
- ></i>
348
- <el-button
349
- @click="handleOptionsRemove(index)"
350
- circle
351
- plain
352
- type="danger"
353
- size="mini"
354
- icon="el-icon-minus"
355
- style="padding: 4px;margin-left: 5px;"
356
- ></el-button>
357
- </li>
358
- </draggable>
359
- </el-radio-group>
360
- </template>
361
-
362
- <template
363
- v-if="
364
- data.type == 'checkbox' ||
365
- (data.type == 'select' && data.options.multiple)
366
- "
367
- >
368
- <el-checkbox-group v-model="data.options.defaultValue">
369
- <draggable
370
- tag="ul"
371
- :list="data.options.options"
372
- v-bind="{
373
- group: { name: 'options' },
374
- ghostClass: 'ghost',
375
- handle: '.drag-item'
376
- }"
377
- handle=".drag-item"
378
- >
379
- <li v-for="(item, index) in data.options.options" :key="index">
380
- <el-checkbox :label="item.value" style="margin-right: 5px;">
381
- <el-input
382
- :style="{
383
- width: data.options.showLabel ? '90px' : '180px'
384
- }"
385
- size="mini"
386
- v-model="item.value"
387
- ></el-input>
388
- <el-input
389
- style="width:90px;"
390
- size="mini"
391
- v-if="data.options.showLabel"
392
- v-model="item.label"
393
- ></el-input>
394
- </el-checkbox>
395
- <i
396
- class="drag-item"
397
- style="font-size: 16px;margin: 0 5px;cursor: move;"
398
- ><i class="iconfont icon-icon_bars"></i
399
- ></i>
400
- <el-button
401
- @click="handleOptionsRemove(index)"
402
- circle
403
- plain
404
- type="danger"
405
- size="mini"
406
- icon="el-icon-minus"
407
- style="padding: 4px;margin-left: 5px;"
408
- ></el-button>
409
- </li>
410
- </draggable>
411
- </el-checkbox-group>
412
- </template>
413
- <div style="margin-left: 22px;">
414
- <el-button type="text" @click="handleAddOption">添加选项</el-button>
415
- </div>
416
- </template>
417
- </el-form-item>
418
-
419
- <el-form-item
420
- label="辅助文字"
421
- v-if="
422
- Object.keys(data.options).indexOf('showText') >= 0 &&
423
- data.options.showText
424
- "
425
- >
426
- <template v-if="data.type == 'rate' && data.options.showText">
427
- <el-radio-group v-model="data.options.defaultValue">
428
- <draggable
429
- tag="ul"
430
- :list="data.options.auxiliaryValue"
431
- v-bind="{
432
- group: { name: 'options' },
433
- ghostClass: 'ghost',
434
- handle: '.drag-item'
435
- }"
436
- handle=".drag-item"
437
- >
438
- <li
439
- v-for="(item, index) in data.options.auxiliaryValue"
440
- :key="index"
441
- >
442
- <span style="margin-right: 5px;">
443
- <el-input
444
- :style="{
445
- width: data.options.showLabel ? '90px' : '180px'
446
- }"
447
- size="mini"
448
- v-model="data.options.auxiliaryValue[index]"
449
- ></el-input>
450
- </span>
451
- <i
452
- class="drag-item"
453
- style="font-size: 16px;margin: 0 5px;cursor: move;"
454
- ><i class="iconfont icon-icon_bars"></i
455
- ></i>
456
- <el-button
457
- @click="handleOptionsRemove(index)"
458
- circle
459
- plain
460
- type="danger"
461
- size="mini"
462
- icon="el-icon-minus"
463
- style="padding: 4px;margin-left: 5px;"
464
- ></el-button>
465
- </li>
466
- </draggable>
467
- </el-radio-group>
468
- </template>
469
- <div style="margin-left: 22px;">
470
- <el-button type="text" @click="handleAddOption">添加选项</el-button>
471
- </div>
472
- </el-form-item>
473
-
474
- <el-form-item
475
- label="默认值"
476
- v-if="
477
- Object.keys(data.options).indexOf('defaultValue') >= 0 &&
478
- [
479
- 'textarea',
480
- 'input',
481
- 'rate',
482
- 'color',
483
- 'switch',
484
- 'text',
485
- 'select'
486
- ].includes(data.type)
487
- "
488
- >
489
- <el-input
490
- v-if="data.type == 'textarea'"
491
- type="textarea"
492
- :rows="5"
493
- v-model="data.options.defaultValue"
494
- ></el-input>
495
- <el-input
496
- v-if="data.type == 'input' || data.type == 'select'"
497
- v-model="data.options.defaultValue"
498
- ></el-input>
499
- <template v-if="data.type == 'rate'">
500
- <el-rate
501
- style="display:inline-block;vertical-align: middle;"
502
- :max="data.options.max"
503
- :allow-half="data.options.allowHalf"
504
- v-model="data.options.defaultValue"
505
- ></el-rate>
506
- <el-button
507
- type="text"
508
- style="display:inline-block;vertical-align: middle;margin-left: 10px;"
509
- @click="data.options.defaultValue = 0"
510
- >清空</el-button
511
- >
512
- </template>
513
-
514
- <el-color-picker
515
- v-if="data.type == 'color'"
516
- v-model="data.options.defaultValue"
517
- :show-alpha="data.options.showAlpha"
518
- ></el-color-picker>
519
- <el-switch
520
- v-if="data.type == 'switch'"
521
- v-model="data.options.defaultValue"
522
- ></el-switch>
523
- <el-input
524
- v-if="data.type == 'text'"
525
- v-model="data.options.defaultValue"
526
- ></el-input>
527
- </el-form-item>
528
-
529
- <el-form-item
530
- label="最大字数"
531
- v-if="data.type == 'textarea' || data.type == 'input'"
532
- >
533
- <el-input-number
534
- v-model="data.options.maxlength"
535
- :min="-1"
536
- ></el-input-number>
537
- </el-form-item>
538
-
539
- <template v-if="data.type == 'textarea'">
540
- <el-form-item label="设置行高" :inline="true">
541
- <template>
542
- <span class="el-form-item__label">最小值:</span>
543
- <el-input-number
544
- v-if="Object.keys(data.options).indexOf('minRows') >= 0"
545
- v-model="data.options.minRows"
546
- :min="1"
547
- @change="handleInputNumberChange"
548
- >
549
- </el-input-number>
550
- </template>
551
- <br />
552
- <template>
553
- <span class="el-form-item__label">最大值:</span>
554
- <el-input-number
555
- v-if="Object.keys(data.options).indexOf('maxRows') >= 0"
556
- v-model="data.options.maxRows"
557
- :min="data.options.minRows || 1"
558
- >
559
- </el-input-number>
560
- </template>
561
- </el-form-item>
562
- </template>
563
-
564
- <el-form-item
565
- label="显示字数统计"
566
- v-if="data.type == 'textarea' || data.type == 'input'"
567
- >
568
- <el-switch v-model="data.options.showWordLimit"></el-switch>
569
- </el-form-item>
570
-
571
- <template v-if="data.type == 'time' || data.type == 'date'">
572
- <el-form-item label="显示类型" v-if="data.type == 'date'">
573
- <el-select v-model="data.options.type">
574
- <el-option value="year"></el-option>
575
- <el-option value="month"></el-option>
576
- <el-option value="date"></el-option>
577
- <el-option value="dates"></el-option>
578
- <!-- <el-option value="week"></el-option> -->
579
- <el-option value="datetime"></el-option>
580
- <el-option value="monthrange"></el-option>
581
- <el-option value="datetimerange"></el-option>
582
- <el-option value="daterange"></el-option>
583
- </el-select>
584
- </el-form-item>
585
-
586
- <el-form-item
587
- label="选择方式"
588
- v-if="Object.keys(data.options).indexOf('timeType') >= 0"
589
- >
590
- <el-radio-group v-model="data.options.timeType">
591
- <el-radio-button :label="true">任意时间点</el-radio-button>
592
- <el-radio-button :label="false">固定时间点</el-radio-button>
593
- </el-radio-group>
594
- </el-form-item>
595
-
596
- <el-form-item
597
- label="是否为范围选择"
598
- v-if="data.type == 'time' && !data.options.timeType"
599
- >
600
- <el-switch v-model="data.options.selectRange"> </el-switch>
601
- </el-form-item>
602
-
603
- <el-form-item
604
- label="是否为范围选择"
605
- v-if="data.type == 'time' && data.options.timeType"
606
- >
607
- <el-switch v-model="data.options.isRange"> </el-switch>
608
- </el-form-item>
609
-
610
- <el-form-item
611
- label="是否获取时间戳"
612
- v-if="data.type == 'date' && data.options.timeType"
613
- >
614
- <el-switch v-model="data.options.timestamp"> </el-switch>
615
- </el-form-item>
616
-
617
- <el-form-item
618
- label="占位内容"
619
- v-if="
620
- (!data.options.isRange &&
621
- data.type == 'time' &&
622
- data.options.timeType) ||
623
- (data.type != 'time' &&
624
- data.options.type != 'datetimerange' &&
625
- data.options.type != 'daterange' &&
626
- data.options.timeType)
627
- "
628
- >
629
- <el-input v-model="data.options.placeholder"></el-input>
630
- </el-form-item>
631
-
632
- <el-form-item
633
- label="格式"
634
- v-if="
635
- (data.type == 'time' && data.options.timeType) ||
636
- ['datetimerange', 'daterange', 'date'].includes(data.options.type)
637
- "
638
- >
639
- <el-input v-model="data.options.format"></el-input>
640
- </el-form-item>
641
-
642
- <el-form-item
643
- label="默认值"
644
- v-if="
645
- data.type == 'time' &&
646
- Object.keys(data.options).indexOf('isRange') >= 0 &&
647
- data.options.timeType
648
- "
649
- >
650
- <el-time-picker
651
- key="1"
652
- style="width: 100%;"
653
- v-if="!data.options.isRange"
654
- v-model="data.options.defaultValue"
655
- :arrowControl="data.options.arrowControl"
656
- :value-format="data.options.format"
657
- >
658
- </el-time-picker>
659
- <el-time-picker
660
- key="2"
661
- v-if="data.options.isRange"
662
- style="width: 100%;"
663
- v-model="data.options.defaultValue"
664
- is-range
665
- :arrowControl="data.options.arrowControl"
666
- :value-format="data.options.format"
667
- >
668
- </el-time-picker>
669
- </el-form-item>
670
-
671
- <template>
672
- <el-form-item
673
- :label="data.options.selectRange ? '开始时间范围值' : '时间范围值'"
674
- v-if="
675
- data.type == 'time' &&
676
- Object.keys(data.options).indexOf('stretTimePickerOptions') >=
677
- 0 &&
678
- !data.options.timeType
679
- "
680
- >
681
- <el-time-picker
682
- key="1"
683
- v-if="data.options.stretTimePickerOptions.start"
684
- style="width: 100%;"
685
- v-model="data.options.stretTimePickerOptions.start"
686
- value-format="HH:mm"
687
- format="HH:mm"
688
- >
689
- </el-time-picker>
690
- <el-time-picker
691
- key="2"
692
- v-if="data.options.stretTimePickerOptions.end"
693
- style="width: 100%;"
694
- v-model="data.options.stretTimePickerOptions.end"
695
- value-format="HH:mm"
696
- format="HH:mm"
697
- >
698
- </el-time-picker>
699
- </el-form-item>
700
-
701
- <el-form-item
702
- :label="data.options.selectRange ? '开始时间步长' : '时间步长'"
703
- v-if="
704
- data.type == 'time' &&
705
- Object.keys(data.options).indexOf('stretTimePickerOptions') >=
706
- 0 &&
707
- !data.options.timeType
708
- "
709
- >
710
- <el-time-picker
711
- key="1"
712
- v-if="data.options.stretTimePickerOptions.step"
713
- style="width: 100%;"
714
- v-model="data.options.stretTimePickerOptions.step"
715
- value-format="HH:mm"
716
- format="HH:mm"
717
- >
718
- </el-time-picker>
719
- </el-form-item>
720
- </template>
721
-
722
- <el-form-item
723
- label="开始时间占位内容"
724
- v-if="
725
- data.options.isRange ||
726
- data.options.type == 'datetimerange' ||
727
- data.options.type == 'daterange' ||
728
- (!data.options.timeType && data.options.selectRange)
729
- "
730
- >
731
- <el-input v-model="data.options.startPlaceholder"></el-input>
732
- </el-form-item>
733
-
734
- <template v-if="data.options.selectRange">
735
- <el-form-item
736
- label="结束时间范围值"
737
- v-if="
738
- data.type == 'time' &&
739
- Object.keys(data.options).indexOf('endTimePickerOptions') >=
740
- 0 &&
741
- !data.options.timeType
742
- "
743
- >
744
- <el-time-picker
745
- key="1"
746
- v-if="data.options.endTimePickerOptions.start"
747
- style="width: 100%;"
748
- v-model="data.options.endTimePickerOptions.start"
749
- value-format="HH:mm"
750
- format="HH:mm"
751
- >
752
- </el-time-picker>
753
- <el-time-picker
754
- key="2"
755
- v-if="data.options.endTimePickerOptions.end"
756
- style="width: 100%;"
757
- v-model="data.options.endTimePickerOptions.end"
758
- value-format="HH:mm"
759
- format="HH:mm"
760
- >
761
- </el-time-picker>
762
- </el-form-item>
763
-
764
- <el-form-item
765
- label="结束时间步长"
766
- v-if="
767
- data.type == 'time' &&
768
- Object.keys(data.options).indexOf('endTimePickerOptions') >=
769
- 0 &&
770
- !data.options.timeType
771
- "
772
- >
773
- <el-time-picker
774
- key="1"
775
- v-if="data.options.endTimePickerOptions.step"
776
- style="width: 100%;"
777
- v-model="data.options.endTimePickerOptions.step"
778
- value-format="HH:mm"
779
- format="HH:mm"
780
- >
781
- </el-time-picker>
782
- </el-form-item>
783
- </template>
784
-
785
- <el-form-item
786
- label="结束时间占位内容"
787
- v-if="
788
- data.options.isRange ||
789
- data.options.type == 'datetimerange' ||
790
- data.options.type == 'daterange' ||
791
- (!data.options.timeType && data.options.selectRange)
792
- "
793
- >
794
- <el-input v-model="data.options.endPlaceholder"></el-input>
795
- </el-form-item>
796
- </template>
797
-
798
- <template v-if="data.type == 'imgupload'">
799
- <el-form-item label="最大上传数">
800
- <el-input
801
- type="number"
802
- v-model.number="data.options.length"
803
- ></el-input>
804
- </el-form-item>
805
-
806
- <el-form-item label="文字提示">
807
- <el-input
808
- v-model.number="data.options.elUploadTip"
809
- placeholder="请输入文字提示或HTML"
810
- ></el-input>
811
- </el-form-item>
812
-
813
- <!-- <el-form-item label="使用七牛上传">
814
- <el-switch v-model="data.options.isQiniu"></el-switch>
815
- </el-form-item> -->
816
-
817
- <template v-if="data.options.isQiniu">
818
- <el-form-item label="Domain" :required="true">
819
- <el-input v-model="data.options.domain"></el-input>
820
- </el-form-item>
821
- <el-form-item label="获取七牛Token方法" :required="true">
822
- <el-input v-model="data.options.tokenFunc"></el-input>
823
- </el-form-item>
824
- </template>
825
-
826
- <template v-else>
827
- <el-form-item label="文件上传" :required="true">
828
- <el-select
829
- class="remoteApis"
830
- v-model="data.options.remoteFunc"
831
- placeholder="请选择远端方法"
832
- >
833
- <template slot="prefix">
834
- <div style="width:70px;">接口名</div>
835
- </template>
836
- <el-option-group
837
- v-for="group in remoteApis"
838
- :key="group.label"
839
- :label="group.label"
840
- >
841
- <el-option
842
- v-for="item in group.options"
843
- :key="item.value"
844
- :label="item.label"
845
- :value="item.value"
846
- >
847
- </el-option>
848
- </el-option-group>
849
- </el-select>
850
- </el-form-item>
851
- <!-- <el-form-item label="选取文件后立即上传">
852
- <el-switch v-model="data.options.autoUpload"></el-switch>
853
- </el-form-item> -->
854
- </template>
855
- </template>
856
-
857
- <template v-if="data.type == 'blank'">
858
- <el-form-item label="绑定数据类型">
859
- <el-select v-model="data.options.defaultType">
860
- <el-option value="String" label="字符串"></el-option>
861
- <el-option value="Object" label="对象"></el-option>
862
- <el-option value="Array" label="数组"></el-option>
863
- </el-select>
864
- </el-form-item>
865
- </template>
866
-
867
- <template v-if="data.type == 'grid'">
868
- <el-form-item label="栅格间隔">
869
- <el-input
870
- type="number"
871
- v-model.number="data.options.gutter"
872
- ></el-input>
873
- </el-form-item>
874
-
875
- <el-form-item label="列配置项">
876
- <draggable
877
- tag="ul"
878
- :list="data.columns"
879
- v-bind="{
880
- group: { name: 'options' },
881
- ghostClass: 'ghost',
882
- handle: '.drag-item'
883
- }"
884
- handle=".drag-item"
885
- >
886
- <li v-for="(item, index) in data.columns" :key="index">
887
- <i
888
- class="drag-item"
889
- style="font-size: 16px;margin: 0 5px;cursor: move;"
890
- ><i class="iconfont icon-icon_bars"></i
891
- ></i>
892
- <el-input
893
- placeholder="栅格值"
894
- size="mini"
895
- style="width: 100px;"
896
- type="number"
897
- v-model.number="item.span"
898
- ></el-input>
899
-
900
- <el-button
901
- @click="handleOptionsRemove(index)"
902
- circle
903
- plain
904
- type="danger"
905
- size="mini"
906
- icon="el-icon-minus"
907
- style="padding: 4px;margin-left: 5px;"
908
- ></el-button>
909
- </li>
910
- </draggable>
911
- <div style="margin-left: 22px;">
912
- <el-button type="text" @click="handleAddOption">添加列</el-button>
913
- </div>
914
- </el-form-item>
915
-
916
- <el-form-item label="水平排列方式">
917
- <el-select v-model="data.options.justify">
918
- <el-option value="start" label="左对齐"></el-option>
919
- <el-option value="end" label="右对齐"></el-option>
920
- <el-option value="center" label="居中"></el-option>
921
- <el-option value="space-around" label="两侧间隔相等"></el-option>
922
- <el-option value="space-between" label="两端对齐"></el-option>
923
- </el-select>
924
- </el-form-item>
925
-
926
- <el-form-item label="垂直排列方式">
927
- <el-select v-model="data.options.align">
928
- <el-option value="top" label="顶部对齐"></el-option>
929
- <el-option value="middle" label="居中"></el-option>
930
- <el-option value="bottom" label="底部对齐"></el-option>
931
- </el-select>
932
- </el-form-item>
933
- </template>
934
-
935
- <template v-if="data.type == 'tabs'">
936
- <el-form-item label="标签对齐方式">
937
- <el-radio-group v-model="data.options.type" size="mini">
938
- <el-radio-button label="">默认</el-radio-button>
939
- <el-radio-button label="card">选项卡</el-radio-button>
940
- <el-radio-button label="border-card">卡片化</el-radio-button>
941
- </el-radio-group>
942
- </el-form-item>
943
- <el-form-item label="选项卡位置">
944
- <el-radio-group v-model="data.options.tabPosition" size="mini">
945
- <el-radio-button label="top">顶部</el-radio-button>
946
- <el-radio-button label="right">右侧</el-radio-button>
947
- <el-radio-button label="bottom">底部</el-radio-button>
948
- <el-radio-button label="left">左侧</el-radio-button>
949
- </el-radio-group>
950
- </el-form-item>
951
- <el-form-item label="选项">
952
- <el-radio-group
953
- v-model="data.options.remote"
954
- size="mini"
955
- style="margin-bottom:10px;"
956
- >
957
- <el-radio-button :label="false">静态数据</el-radio-button>
958
- <el-radio-button :label="true">远端数据</el-radio-button>
959
- </el-radio-group>
960
- <div v-if="data.options.remote">
961
- <el-select
962
- class="remoteApis"
963
- size="mini"
964
- v-model="data.options.remoteFunc"
965
- placeholder="请选择远端方法"
966
- >
967
- <template slot="prefix">
968
- <div style="width:70px;">接口名</div>
969
- </template>
970
- <el-option-group
971
- v-for="group in remoteApis"
972
- :key="group.label"
973
- :label="group.label"
974
- >
975
- <el-option
976
- v-for="item in group.options"
977
- :key="item.value"
978
- :label="item.label"
979
- :value="item.value"
980
- >
981
- </el-option>
982
- </el-option-group>
983
- </el-select>
984
-
985
- <el-input size="mini" style="" v-model="data.options.props.value">
986
- <template slot="prepend">
987
- <div style="width:30px;">值</div>
988
- </template>
989
- </el-input>
990
- <el-input size="mini" style="" v-model="data.options.props.label">
991
- <template slot="prepend">
992
- <div style="width:30px;">标签</div>
993
- </template>
994
- </el-input>
995
- </div>
996
- <template v-else>
997
- <el-radio-group v-model="data.options.defaultValue">
998
- <draggable
999
- tag="ul"
1000
- :list="data.tabs"
1001
- v-bind="{
1002
- group: { name: 'tabs' },
1003
- ghostClass: 'ghost',
1004
- handle: '.drag-item'
1005
- }"
1006
- handle=".drag-item"
1007
- >
1008
- <li v-for="(item, index) in data.tabs" :key="index">
1009
- <el-radio :label="item.value" style="margin-right: 5px;">
1010
- <el-input
1011
- v-model="item.value"
1012
- style="width:90px;"
1013
- size="mini"
1014
- placeholder="value"
1015
- ></el-input>
1016
- <el-input
1017
- v-model="item.label"
1018
- style="width:90px;"
1019
- size="mini"
1020
- placeholder="label"
1021
- ></el-input>
1022
- </el-radio>
1023
- <i
1024
- class="drag-item"
1025
- style="font-size: 16px;margin: 0 5px;cursor: move;"
1026
- ><i class="iconfont icon-icon_bars"></i
1027
- ></i>
1028
- <el-button
1029
- @click="handleOptionsRemove(index)"
1030
- circle
1031
- plain
1032
- type="danger"
1033
- size="mini"
1034
- icon="el-icon-minus"
1035
- style="padding: 4px;margin-left: 5px;"
1036
- ></el-button>
1037
- </li>
1038
- </draggable>
1039
- </el-radio-group>
1040
-
1041
- <div style="margin-left: 22px;">
1042
- <el-button type="text" @click="handleAddOption"
1043
- >添加选项</el-button
1044
- >
1045
- </div>
1046
- </template>
1047
- </el-form-item>
1048
- </template>
1049
-
1050
- <template v-if="data.type != 'grid'">
1051
- <el-form-item label="带入icon" v-if="data.type == 'input'">
1052
- <el-input
1053
- v-if="Object.keys(data.options).indexOf('prefixIcon') >= 0"
1054
- placeholder="请输入icon类名"
1055
- v-model="data.options.prefixIcon"
1056
- >
1057
- <template slot="prepend">
1058
- <div style="width:50px;">prefixIcon</div>
1059
- </template>
1060
- </el-input>
1061
- <el-input
1062
- v-if="Object.keys(data.options).indexOf('suffixIcon') >= 0"
1063
- placeholder="请输入icon类名"
1064
- v-model="data.options.suffixIcon"
1065
- >
1066
- <template slot="prepend">
1067
- <div style="width:50px;">suffixIcon</div>
1068
- </template>
1069
- </el-input>
1070
- </el-form-item>
1071
-
1072
- <el-form-item
1073
- label="组件插槽"
1074
- v-if="data.type === 'input' || data.type === 'cascader'"
1075
- >
1076
- <el-input
1077
- v-if="Object.keys(data.options).indexOf('prepend') >= 0"
1078
- placeholder="请输入内容或HTML"
1079
- v-model="data.options.prepend"
1080
- >
1081
- <template slot="prepend">
1082
- <div style="width:50px;">prepend</div>
1083
- </template>
1084
- </el-input>
1085
- <el-input
1086
- v-if="Object.keys(data.options).indexOf('append') >= 0"
1087
- placeholder="请输入内容或HTML"
1088
- v-model="data.options.append"
1089
- >
1090
- <template slot="prepend">
1091
- <div style="width:50px;">append</div>
1092
- </template>
1093
- </el-input>
1094
- </el-form-item>
1095
-
1096
- <el-form-item label="远端数据" v-if="data.type == 'cascader'">
1097
- <div>
1098
- <!-- <el-input size="mini" style="" v-model="data.options.remoteFunc">
1099
- <template slot="prepend">远端方法</template>
1100
- </el-input> -->
1101
- <el-select
1102
- class="remoteApis"
1103
- size="mini"
1104
- v-model="data.options.remoteFunc"
1105
- placeholder="请选择远端方法"
1106
- >
1107
- <template slot="prefix">
1108
- <div style="width:70px;">接口名</div>
1109
- </template>
1110
- <el-option-group
1111
- v-for="group in remoteApis"
1112
- :key="group.label"
1113
- :label="group.label"
1114
- >
1115
- <el-option
1116
- v-for="item in group.options"
1117
- :key="item.value"
1118
- :label="item.label"
1119
- :value="item.value"
1120
- >
1121
- </el-option>
1122
- </el-option-group>
1123
- </el-select>
1124
- <el-input size="mini" style="" v-model="data.options.props.value">
1125
- <template slot="prepend">值</template>
1126
- </el-input>
1127
- <el-input size="mini" style="" v-model="data.options.props.label">
1128
- <template slot="prepend">标签</template>
1129
- </el-input>
1130
- <el-input
1131
- size="mini"
1132
- style=""
1133
- v-model="data.options.props.children"
1134
- >
1135
- <template slot="prepend">子选项</template>
1136
- </el-input>
1137
- </div>
1138
- </el-form-item>
1139
-
1140
- <el-form-item
1141
- label="文字描述"
1142
- v-if="data.type === 'switch'"
1143
- :inline="true"
1144
- >
1145
- <div
1146
- v-if="Object.keys(data.options).indexOf('switchInactiveText') >= 0"
1147
- >
1148
- <span class="el-form-item__label">inactiveText:</span>
1149
- <el-input
1150
- v-model="data.options.switchInactiveText"
1151
- placeholder="请输入内容"
1152
- >
1153
- </el-input>
1154
- </div>
1155
- <div
1156
- v-if="Object.keys(data.options).indexOf('switchActiveText') >= 0"
1157
- >
1158
- <span class="el-form-item__label">activeText:</span>
1159
- <el-input
1160
- v-model="data.options.switchActiveText"
1161
- placeholder="请输入内容"
1162
- >
1163
- </el-input>
1164
- </div>
1165
- <div
1166
- v-if="Object.keys(data.options).indexOf('switchInactiveColor') >= 0"
1167
- >
1168
- <span class="el-form-item__label">inactiveColor:</span>
1169
- <el-input
1170
- v-model="data.options.switchInactiveColor"
1171
- placeholder="请输入色值,例如#ff4949"
1172
- >
1173
- </el-input>
1174
- </div>
1175
- <div
1176
- v-if="Object.keys(data.options).indexOf('switchActiveColor') >= 0"
1177
- >
1178
- <span class="el-form-item__label">activeColor:</span>
1179
- <el-input
1180
- v-model="data.options.switchActiveColor"
1181
- placeholder="请输入色值,例如#ff4949"
1182
- >
1183
- </el-input>
1184
- </div>
1185
- </el-form-item>
1186
-
1187
- <el-form-item label="操作属性">
1188
- <el-checkbox
1189
- v-model="data.options.readonly"
1190
- v-if="Object.keys(data.options).indexOf('readonly') >= 0"
1191
- >完全只读</el-checkbox
1192
- >
1193
- <el-checkbox
1194
- v-model="data.options.hidden"
1195
- v-if="Object.keys(data.options).indexOf('hidden') >= 0"
1196
- >隐藏
1197
- </el-checkbox>
1198
- <el-checkbox
1199
- v-model="data.options.hideLabel"
1200
- v-if="Object.keys(data.options).indexOf('hideLabel') >= 0"
1201
- >隐藏标签
1202
- </el-checkbox>
1203
- <el-checkbox
1204
- v-model="data.options.disabled"
1205
- v-if="Object.keys(data.options).indexOf('disabled') >= 0"
1206
- >禁用
1207
- </el-checkbox>
1208
- <el-checkbox
1209
- v-model="data.options.editable"
1210
- v-if="Object.keys(data.options).indexOf('editable') >= 0"
1211
- >文本框可输入</el-checkbox
1212
- >
1213
- <el-checkbox
1214
- v-model="data.options.showPassword"
1215
- v-if="Object.keys(data.options).indexOf('showPassword') >= 0"
1216
- >显示切换密码图标</el-checkbox
1217
- >
1218
- <el-checkbox
1219
- v-model="data.options.arrowControl"
1220
- v-if="Object.keys(data.options).indexOf('arrowControl') >= 0"
1221
- >使用箭头进行时间选择</el-checkbox
1222
- >
1223
- <el-checkbox
1224
- v-model="data.options.isAdd"
1225
- v-if="Object.keys(data.options).indexOf('isAdd') >= 0"
1226
- >可新增</el-checkbox
1227
- >
1228
- <el-checkbox
1229
- v-model="data.options.isDelete"
1230
- v-if="Object.keys(data.options).indexOf('isDelete') >= 0"
1231
- >可删除</el-checkbox
1232
- >
1233
- <el-checkbox
1234
- v-model="data.options.isEdit"
1235
- v-if="Object.keys(data.options).indexOf('isEdit') >= 0"
1236
- >编辑</el-checkbox
1237
- >
1238
- <el-checkbox
1239
- v-model="data.options.isSerial"
1240
- v-if="Object.keys(data.options).indexOf('isSerial') >= 0"
1241
- >显示序号</el-checkbox
1242
- >
1243
- <el-checkbox
1244
- v-model="data.options.border"
1245
- v-if="Object.keys(data.options).indexOf('border') >= 0"
1246
- >显示边框</el-checkbox
1247
- >
1248
- <el-checkbox
1249
- v-model="data.options.buttonType"
1250
- v-if="Object.keys(data.options).indexOf('buttonType') >= 0"
1251
- >按钮样式</el-checkbox
1252
- >
1253
- <el-checkbox
1254
- v-model="data.options.showTooltip"
1255
- v-if="
1256
- data.type === 'slider' &&
1257
- Object.keys(data.options).indexOf('showTooltip') >= 0
1258
- "
1259
- >显示showTooltip</el-checkbox
1260
- >
1261
- <el-checkbox
1262
- v-model="data.options.vertical"
1263
- v-if="
1264
- data.type === 'slider' &&
1265
- Object.keys(data.options).indexOf('vertical') >= 0
1266
- "
1267
- >竖向模式</el-checkbox
1268
- >
1269
- <el-checkbox
1270
- v-model="data.options.showAllLevels"
1271
- v-if="
1272
- data.type === 'cascader' &&
1273
- Object.keys(data.options).indexOf('showAllLevels') >= 0
1274
- "
1275
- >仅显示最后一级</el-checkbox
1276
- >
1277
- <el-checkbox
1278
- v-model="data.options.props.multiple"
1279
- v-if="data.type === 'cascader'"
1280
- >是否多选</el-checkbox
1281
- >
1282
- <el-checkbox
1283
- v-model="data.options.props.checkStrictly"
1284
- v-if="['cascader'].includes(data.type)"
1285
- >选择任意一级选项</el-checkbox
1286
- >
1287
- <el-checkbox
1288
- v-model="data.options.collapseTags"
1289
- v-if="['select', 'cascader'].includes(data.type)"
1290
- >是否折叠展示Tag</el-checkbox
1291
- >
1292
- <el-checkbox
1293
- v-model="data.options.clearable"
1294
- v-if="Object.keys(data.options).indexOf('clearable') >= 0"
1295
- >显示清除按钮</el-checkbox
1296
- >
1297
- </el-form-item>
1298
-
1299
- <el-form-item label="校验">
1300
- <div v-if="Object.keys(data.options).indexOf('required') >= 0">
1301
- <el-checkbox v-model="data.options.required">必填</el-checkbox>
1302
- </div>
1303
- <el-select
1304
- v-if="Object.keys(data.options).indexOf('dataType') >= 0"
1305
- v-model="data.options.dataType"
1306
- size="mini"
1307
- >
1308
- <el-option value="string" label="字符串"></el-option>
1309
- <el-option value="number" label="数字"></el-option>
1310
- <el-option value="boolean" label="布尔值"></el-option>
1311
- <el-option value="integer" label="整数"></el-option>
1312
- <el-option value="float" label="浮点数"></el-option>
1313
- <el-option value="url" label="URL地址"></el-option>
1314
- <el-option value="email" label="邮箱地址"></el-option>
1315
- <el-option value="hex" label="十六进制"></el-option>
1316
- </el-select>
1317
-
1318
- <div v-if="Object.keys(data.options).indexOf('pattern') >= 0">
1319
- <el-input
1320
- size="mini"
1321
- class="config-pattern-input"
1322
- v-model.lazy="data.options.pattern"
1323
- style=" width: 240px;"
1324
- placeholder="填写正则表达式"
1325
- >
1326
- <template slot="prepend">/</template>
1327
- <template slot="append">/</template>
1328
- </el-input>
1329
- </div>
1330
- </el-form-item>
1331
- </template>
1332
- </el-form>
1333
- </div>
1334
- </template>
1335
-
1336
- <script>
1337
- import Draggable from "vuedraggable";
1338
-
1339
- export default {
1340
- components: {
1341
- Draggable
1342
- },
1343
- props: ["data", "remoteApis"],
1344
- data() {
1345
- return {
1346
- validator: {
1347
- type: null,
1348
- required: null,
1349
- pattern: null,
1350
- range: null,
1351
- length: null
1352
- }
1353
- };
1354
- },
1355
- computed: {
1356
- show() {
1357
- if (this.data && Object.keys(this.data).length > 0) {
1358
- return true;
1359
- }
1360
- return false;
1361
- }
1362
- },
1363
- methods: {
1364
- handleOptionsRemove(index) {
1365
- if (this.data.type === "grid") {
1366
- this.data.columns.splice(index, 1);
1367
- } else if (this.data.type === "rate") {
1368
- this.data.options.auxiliaryValue.splice(index, 1);
1369
- } else if (this.data.type === "tabs") {
1370
- this.data.tabs.splice(index, 1);
1371
- } else {
1372
- this.data.options.options.splice(index, 1);
1373
- }
1374
- },
1375
- handleAddOption() {
1376
- if (this.data.type === "grid") {
1377
- this.data.columns.push({
1378
- span: "",
1379
- list: []
1380
- });
1381
- return;
1382
- }
1383
- if (this.data.type === "tabs") {
1384
- this.data.tabs.push({
1385
- label: `选项${this.data.tabs.length + 1}`,
1386
- value: `tab_${this.data.tabs.length + 1}`,
1387
- list: []
1388
- });
1389
- return;
1390
- }
1391
- if (this.data.type === "rate") {
1392
- this.data.options.auxiliaryValue.push("新选项");
1393
- return;
1394
- }
1395
-
1396
- if (this.data.options.showLabel) {
1397
- this.data.options.options.push({
1398
- value: "新选项",
1399
- label: "新选项"
1400
- });
1401
- return;
1402
- }
1403
-
1404
- this.data.options.options.push({
1405
- value: "新选项"
1406
- });
1407
- },
1408
- generateRule() {
1409
- this.data.rules = [];
1410
- Object.keys(this.validator).forEach(key => {
1411
- if (this.validator[key]) {
1412
- this.data.rules.push(this.validator[key]);
1413
- }
1414
- });
1415
- },
1416
- handleSelectMuliple(value) {
1417
- if (value) {
1418
- if (this.data.options.defaultValue) {
1419
- this.data.options.defaultValue = [this.data.options.defaultValue];
1420
- } else {
1421
- this.data.options.defaultValue = [];
1422
- }
1423
- } else {
1424
- if (this.data.options.defaultValue.length > 0) {
1425
- this.data.options.defaultValue = this.data.options.defaultValue[0];
1426
- } else {
1427
- this.data.options.defaultValue = "";
1428
- }
1429
- }
1430
- },
1431
-
1432
- validateRequired(val) {
1433
- if (val) {
1434
- this.validator.required = {
1435
- required: true,
1436
- message: `${this.data.name}必须填写`
1437
- };
1438
- } else {
1439
- this.validator.required = null;
1440
- }
1441
-
1442
- this.$nextTick(() => {
1443
- this.generateRule();
1444
- });
1445
- },
1446
-
1447
- validateDataType(val) {
1448
- if (!this.show) {
1449
- return false;
1450
- }
1451
-
1452
- if (val) {
1453
- this.validator.type = {
1454
- type: val,
1455
- message: this.data.name + "格式不正确"
1456
- };
1457
- } else {
1458
- this.validator.type = null;
1459
- }
1460
-
1461
- this.generateRule();
1462
- },
1463
- valiatePattern(val) {
1464
- if (!this.show) {
1465
- return false;
1466
- }
1467
-
1468
- if (val) {
1469
- this.validator.pattern = {
1470
- pattern: val,
1471
- message: this.data.name + "格式不匹配"
1472
- };
1473
- } else {
1474
- this.validator.pattern = null;
1475
- }
1476
-
1477
- this.generateRule();
1478
- },
1479
- handleInputNumberChange() {
1480
- if (this.data.options.minRows > this.data.options.maxRows) {
1481
- this.data.options.maxRows = this.data.options.minRows;
1482
- }
1483
- },
1484
- handleImguploadType(val) {
1485
- if (val == "picture-card") {
1486
- this.data.options.drag = false;
1487
- }
1488
- },
1489
- handleImguploadDrag(val) {
1490
- if (val) {
1491
- this.data.options.listType = "default";
1492
- }
1493
- }
1494
- },
1495
- watch: {
1496
- "data.options.isRange": function(val) {
1497
- if (typeof val !== "undefined") {
1498
- if (val) {
1499
- this.data.options.defaultValue = null;
1500
- } else {
1501
- if (Object.keys(this.data.options).indexOf("defaultValue") >= 0)
1502
- this.data.options.defaultValue = "";
1503
- }
1504
- }
1505
- },
1506
- "data.options.required": function(val) {
1507
- this.validateRequired(val);
1508
- },
1509
- "data.options.dataType": function(val) {
1510
- this.validateDataType(val);
1511
- },
1512
- "data.options.pattern": function(val) {
1513
- this.valiatePattern(val);
1514
- },
1515
- "data.name": function(val) {
1516
- if (this.data.options) {
1517
- this.validateRequired(this.data.options.required);
1518
- this.validateDataType(this.data.options.dataType);
1519
- this.valiatePattern(this.data.options.pattern);
1520
- }
1521
- }
1522
- }
1523
- };
1524
- </script>
1525
-
1526
- <style lang="less" scoped>
1527
- .remoteApis {
1528
- width: 100%;
1529
- margin-bottom: 6px;
1530
- /deep/ .el-input--prefix .el-input__inner {
1531
- padding-left: 85px;
1532
- }
1533
- /deep/ .el-input__prefix {
1534
- left: 0;
1535
- width: 75px;
1536
- color: #999;
1537
- }
1538
- }
1539
- </style>