tianheng-ui 0.0.55 → 0.0.57

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 (238) 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 +29 -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/variable.scss +80 -0
  41. package/lib/tianheng-ui.js +71 -9
  42. package/package.json +24 -4
  43. package/packages/Button/index.js +8 -0
  44. package/packages/Button/index.vue +80 -0
  45. package/packages/Card/index.js +8 -0
  46. package/packages/Card/index.vue +37 -0
  47. package/packages/{cell → Cell}/index.js +0 -0
  48. package/packages/Cell/index.vue +68 -0
  49. package/packages/{codeEditor → CodeEditor}/index.js +0 -0
  50. package/packages/{codeEditor → CodeEditor}/index.vue +73 -108
  51. package/packages/Col/index.js +8 -0
  52. package/packages/Col/index.vue +41 -0
  53. package/packages/{dialog → Dialog}/index.js +0 -0
  54. package/packages/{dialog → Dialog}/index.vue +19 -10
  55. package/packages/Empty/images/notData.png +0 -0
  56. package/packages/{empty → Empty}/index.js +0 -0
  57. package/packages/Empty/index.vue +35 -0
  58. package/packages/FormMaking/Container.vue +1907 -0
  59. package/packages/{formMaking → FormMaking}/FormConfig.vue +22 -6
  60. package/packages/FormMaking/GenerateForm.vue +246 -0
  61. package/packages/{formMaking → FormMaking}/GenerateFormItem.vue +340 -172
  62. package/packages/FormMaking/GenerateFormItemH5.vue +828 -0
  63. package/packages/{formMaking → FormMaking}/Upload/index.vue +0 -0
  64. package/packages/FormMaking/WidgetConfig.vue +473 -0
  65. package/packages/{formMaking → FormMaking}/WidgetForm.vue +49 -31
  66. package/packages/FormMaking/WidgetFormItem.vue +157 -0
  67. package/packages/{formMaking/componentsConfig.js → FormMaking/custom/config.js} +379 -163
  68. package/packages/FormMaking/custom/configs/alliance.vue +0 -0
  69. package/packages/FormMaking/custom/configs/blank.vue +54 -0
  70. package/packages/FormMaking/custom/configs/button.vue +144 -0
  71. package/packages/FormMaking/custom/configs/cascader.vue +182 -0
  72. package/packages/FormMaking/custom/configs/cell.vue +81 -0
  73. package/packages/FormMaking/custom/configs/checkbox.vue +237 -0
  74. package/packages/FormMaking/custom/configs/color.vue +137 -0
  75. package/packages/FormMaking/custom/configs/date.vue +158 -0
  76. package/packages/FormMaking/custom/configs/divider.vue +61 -0
  77. package/packages/FormMaking/custom/configs/editor.vue +71 -0
  78. package/packages/FormMaking/custom/configs/filler.vue +52 -0
  79. package/packages/FormMaking/custom/configs/grid.vue +103 -0
  80. package/packages/FormMaking/custom/configs/image.vue +148 -0
  81. package/packages/FormMaking/custom/configs/input.vue +176 -0
  82. package/packages/FormMaking/custom/configs/number.vue +140 -0
  83. package/packages/FormMaking/custom/configs/radio.vue +215 -0
  84. package/packages/FormMaking/custom/configs/rate.vue +109 -0
  85. package/packages/FormMaking/custom/configs/select.vue +308 -0
  86. package/packages/FormMaking/custom/configs/slider.vue +142 -0
  87. package/packages/FormMaking/custom/configs/switch.vue +130 -0
  88. package/packages/FormMaking/custom/configs/table.vue +105 -0
  89. package/packages/FormMaking/custom/configs/table_h5.vue +102 -0
  90. package/packages/FormMaking/custom/configs/tabs.vue +175 -0
  91. package/packages/FormMaking/custom/configs/text.vue +71 -0
  92. package/packages/FormMaking/custom/configs/textarea.vue +167 -0
  93. package/packages/FormMaking/custom/configs/time.vue +153 -0
  94. package/packages/FormMaking/custom/configs/upload.vue +150 -0
  95. package/packages/FormMaking/custom/index.js +33 -0
  96. package/packages/FormMaking/custom/items/alliance.vue +132 -0
  97. package/packages/FormMaking/custom/items/blank.vue +16 -0
  98. package/packages/FormMaking/custom/items/button.vue +27 -0
  99. package/packages/FormMaking/custom/items/cascader.vue +29 -0
  100. package/packages/FormMaking/custom/items/cell.vue +18 -0
  101. package/packages/FormMaking/custom/items/checkbox.vue +46 -0
  102. package/packages/FormMaking/custom/items/color.vue +19 -0
  103. package/packages/FormMaking/custom/items/date.vue +29 -0
  104. package/packages/FormMaking/custom/items/divider.vue +14 -0
  105. package/packages/FormMaking/custom/items/editor.vue +22 -0
  106. package/packages/FormMaking/custom/items/filler.vue +17 -0
  107. package/packages/FormMaking/custom/items/grid.vue +129 -0
  108. package/packages/FormMaking/custom/items/image.vue +42 -0
  109. package/packages/FormMaking/custom/items/input.vue +36 -0
  110. package/packages/FormMaking/custom/items/login.vue +13 -0
  111. package/packages/FormMaking/custom/items/number.vue +24 -0
  112. package/packages/FormMaking/custom/items/radio.vue +44 -0
  113. package/packages/FormMaking/custom/items/rate.vue +20 -0
  114. package/packages/FormMaking/custom/items/select.vue +32 -0
  115. package/packages/FormMaking/custom/items/slider.vue +34 -0
  116. package/packages/FormMaking/custom/items/switch.vue +22 -0
  117. package/packages/FormMaking/custom/items/table.vue +106 -0
  118. package/packages/FormMaking/custom/items/table_h5.vue +126 -0
  119. package/packages/FormMaking/custom/items/tabs.vue +145 -0
  120. package/packages/FormMaking/custom/items/text.vue +18 -0
  121. package/packages/FormMaking/custom/items/textarea.vue +37 -0
  122. package/packages/FormMaking/custom/items/time.vue +32 -0
  123. package/packages/FormMaking/custom/items/upload.vue +83 -0
  124. package/packages/FormMaking/custom/mixins/index.js +61 -0
  125. package/packages/FormMaking/custom/register.js +18 -0
  126. package/packages/{formMaking → FormMaking}/iconfont/demo.css +0 -0
  127. package/packages/{formMaking → FormMaking}/iconfont/demo_index.html +0 -0
  128. package/packages/{formMaking → FormMaking}/iconfont/iconfont.css +0 -0
  129. package/packages/{formMaking → FormMaking}/iconfont/iconfont.eot +0 -0
  130. package/packages/{formMaking → FormMaking}/iconfont/iconfont.js +0 -0
  131. package/packages/{formMaking → FormMaking}/iconfont/iconfont.svg +0 -0
  132. package/{lib → packages/FormMaking/iconfont}/iconfont.ttf +0 -0
  133. package/{lib → packages/FormMaking/iconfont}/iconfont.woff +0 -0
  134. package/packages/{formMaking → FormMaking}/iconfont/iconfont.woff2 +0 -0
  135. package/packages/FormMaking/index.js +35 -0
  136. package/packages/{formMaking → FormMaking}/lang/en-US.js +1 -1
  137. package/packages/{formMaking → FormMaking}/lang/zh-CN.js +1 -1
  138. package/packages/{formMaking → FormMaking}/styles/cover.scss +1 -1
  139. package/packages/{formMaking → FormMaking}/styles/index.scss +445 -429
  140. package/packages/{formMaking → FormMaking/util}/generateCode.js +5 -5
  141. package/packages/{formMaking → FormMaking}/util/index.js +0 -0
  142. package/packages/{formMaking → FormMaking}/util/request.js +0 -0
  143. package/packages/{icons → Icons}/index.js +0 -0
  144. package/packages/{icons → Icons}/index.vue +26 -9
  145. package/packages/Image/index.js +8 -0
  146. package/packages/Image/index.vue +146 -0
  147. package/packages/ImagePreview/index.js +8 -0
  148. package/packages/ImagePreview/index.vue +386 -0
  149. package/packages/Row/index.js +8 -0
  150. package/packages/Row/index.vue +35 -0
  151. package/packages/{table → Table}/action.js +0 -0
  152. package/packages/{table → Table}/action.vue +1 -1
  153. package/packages/Table/column.vue +63 -0
  154. package/packages/{table → Table}/index.js +0 -0
  155. package/packages/{table → Table}/index.vue +25 -23
  156. package/packages/{table → Table}/search.js +0 -0
  157. package/packages/{table → Table}/search.vue +1 -1
  158. package/packages/{table → Table}/tools.js +0 -0
  159. package/packages/{table → Table}/tools.vue +0 -0
  160. package/packages/Workflow/Log.js +99 -0
  161. package/packages/Workflow/designer/ProcessDesigner.vue +628 -0
  162. package/packages/Workflow/designer/index.js +7 -0
  163. package/packages/Workflow/designer/plugins/content-pad/contentPadProvider.js +390 -0
  164. package/packages/Workflow/designer/plugins/content-pad/index.js +6 -0
  165. package/packages/Workflow/designer/plugins/defaultEmpty.js +24 -0
  166. package/packages/Workflow/designer/plugins/descriptor/activitiDescriptor.json +1071 -0
  167. package/packages/Workflow/designer/plugins/descriptor/camundaDescriptor.json +1087 -0
  168. package/packages/Workflow/designer/plugins/descriptor/flowableDescriptor.json +1215 -0
  169. package/packages/Workflow/designer/plugins/extension-moddle/activiti/activitiExtension.js +74 -0
  170. package/packages/Workflow/designer/plugins/extension-moddle/activiti/index.js +9 -0
  171. package/packages/Workflow/designer/plugins/extension-moddle/camunda/extension.js +148 -0
  172. package/packages/Workflow/designer/plugins/extension-moddle/camunda/index.js +6 -0
  173. package/packages/Workflow/designer/plugins/extension-moddle/flowable/flowableExtension.js +74 -0
  174. package/packages/Workflow/designer/plugins/extension-moddle/flowable/index.js +9 -0
  175. package/packages/Workflow/designer/plugins/palette/CustomPalette.js +156 -0
  176. package/packages/Workflow/designer/plugins/palette/index.js +6 -0
  177. package/packages/Workflow/designer/plugins/palette/paletteProvider.js +160 -0
  178. package/packages/Workflow/designer/plugins/translate/customTranslate.js +41 -0
  179. package/packages/Workflow/designer/plugins/translate/zh.js +238 -0
  180. package/packages/Workflow/highlight/index.js +5 -0
  181. package/packages/Workflow/index.js +26 -0
  182. package/packages/Workflow/index.vue +394 -0
  183. package/packages/Workflow/modules/auto-place/CustomAutoPlace.js +81 -0
  184. package/packages/Workflow/modules/auto-place/index.js +6 -0
  185. package/packages/Workflow/modules/custom-renderer/CustomRenderer.js +17 -0
  186. package/packages/Workflow/modules/custom-renderer/index.js +6 -0
  187. package/packages/Workflow/modules/rules/CustomRules.js +16 -0
  188. package/packages/Workflow/modules/rules/index.js +6 -0
  189. package/packages/Workflow/palette/ProcessPalette.vue +106 -0
  190. package/packages/Workflow/palette/index.js +7 -0
  191. package/packages/Workflow/penal/PropertiesPanel.vue +247 -0
  192. package/packages/Workflow/penal/base/ElementBaseInfo.vue +80 -0
  193. package/packages/Workflow/penal/flow-condition/FlowCondition.vue +142 -0
  194. package/packages/Workflow/penal/form/ElementForm.vue +367 -0
  195. package/packages/Workflow/penal/index.js +7 -0
  196. package/packages/Workflow/penal/listeners/ElementListeners.vue +299 -0
  197. package/packages/Workflow/penal/listeners/UserTaskListeners.vue +322 -0
  198. package/packages/Workflow/penal/listeners/template.js +178 -0
  199. package/packages/Workflow/penal/listeners/utilSelf.js +62 -0
  200. package/packages/Workflow/penal/multi-instance/ElementMultiInstance.vue +200 -0
  201. package/packages/Workflow/penal/other/ElementOtherConfig.vue +59 -0
  202. package/packages/Workflow/penal/properties/ElementProperties.vue +135 -0
  203. package/packages/Workflow/penal/signal-message/SignalAndMessage.vue +104 -0
  204. package/packages/Workflow/penal/task/ElementTask.vue +73 -0
  205. package/packages/Workflow/penal/task/task-components/ReceiveTask.vue +97 -0
  206. package/packages/Workflow/penal/task/task-components/ScriptTask.vue +85 -0
  207. package/packages/Workflow/penal/task/task-components/UserTask.vue +535 -0
  208. package/packages/Workflow/theme/element-variables.scss +70 -0
  209. package/packages/Workflow/theme/index.scss +2 -0
  210. package/packages/Workflow/theme/process-designer.scss +157 -0
  211. package/packages/Workflow/theme/process-panel.scss +107 -0
  212. package/packages/Workflow/translations.js +25 -0
  213. package/packages/Workflow/utils.js +71 -0
  214. package/packages/upload/ajax.js +85 -0
  215. package/packages/upload/index.js +8 -0
  216. package/packages/upload/index.vue +325 -0
  217. package/packages/upload/locale.js +9 -0
  218. package/packages/upload/upload-dragger.vue +70 -0
  219. package/packages/upload/upload-list.vue +101 -0
  220. package/packages/upload/upload.vue +211 -0
  221. package/lib/03250ed25fc1b305e9980cf7cf0dfb09.js +0 -1
  222. package/lib/theme-chalk/cell.css +0 -53
  223. package/lib/theme-chalk/dialog.css +0 -41
  224. package/lib/theme-chalk/empty.css +0 -27
  225. package/lib/theme-chalk/index.css +0 -6
  226. package/lib/theme-chalk/reset.css +0 -4
  227. package/lib/tianheng-ui.js.map +0 -1
  228. package/packages/cell/index.vue +0 -116
  229. package/packages/empty/index.vue +0 -33
  230. package/packages/formMaking/Container.vue +0 -591
  231. package/packages/formMaking/CusDialog.vue +0 -134
  232. package/packages/formMaking/GenerateForm.vue +0 -174
  233. package/packages/formMaking/WidgetConfig.vue +0 -1539
  234. package/packages/formMaking/WidgetFormItem.vue +0 -817
  235. package/packages/formMaking/iconfont/iconfont.ttf +0 -0
  236. package/packages/formMaking/iconfont/iconfont.woff +0 -0
  237. package/packages/formMaking/index.js +0 -77
  238. package/packages/table/column.vue +0 -111
@@ -1,817 +0,0 @@
1
- <template>
2
- <el-form-item
3
- class="widget-view"
4
- v-if="element && element.key"
5
- :class="{
6
- active: selectWidget.key == element.key,
7
- is_req: element.options.required,
8
- 'widget-col': ['grid','tabs','table'].includes(element.type),
9
- [element.model]: true
10
- }"
11
- :label="
12
- data.type == 'table' || element.options.hideLabel ? '' : element.name
13
- "
14
- :label-width="
15
- element.options.hideLabel
16
- ? '0'
17
- : element.options.isLabelWidth
18
- ? `${element.options.labelWidth}px`
19
- : ''
20
- "
21
- @click.native.stop="handleSelectWidget(index)"
22
- >
23
- <div v-if="data.type == 'table'">{{ element.name || "-" }}</div>
24
-
25
- <template v-if="element.type == 'input'">
26
- <el-input
27
- v-model="element.options.defaultValue"
28
- :style="{ width: element.options.width }"
29
- :placeholder="element.options.placeholder"
30
- :disabled="element.options.disabled"
31
- :maxlength="element.options.maxlength"
32
- :show-word-limit="element.options.showWordLimit"
33
- :show-password="element.options.showPassword"
34
- :clearable="element.options.clearable"
35
- :suffix-icon="element.options.suffixIcon"
36
- :prefix-icon="element.options.prefixIcon"
37
- >
38
- <template v-if="element.options.prepend" slot="prepend">
39
- <span v-html="element.options.prepend"></span>
40
- </template>
41
- <template v-if="element.options.append" slot="append">
42
- <span v-html="element.options.append"></span>
43
- </template>
44
- </el-input>
45
- </template>
46
-
47
- <template v-if="element.type == 'textarea'">
48
- <el-input
49
- type="textarea"
50
- v-model="element.options.defaultValue"
51
- :style="{ width: element.options.width }"
52
- :disabled="element.options.disabled"
53
- :placeholder="element.options.placeholder"
54
- :maxlength="element.options.maxlength"
55
- :show-word-limit="element.options.showWordLimit"
56
- :clearable="element.options.clearable"
57
- :autosize="{
58
- minRows: element.options.minRows,
59
- maxRows: element.options.maxRows
60
- }"
61
- ></el-input>
62
- </template>
63
-
64
- <template v-if="element.type == 'number'">
65
- <el-input-number
66
- v-model="element.options.defaultValue"
67
- :disabled="element.options.disabled"
68
- :controls-position="element.options.controlsPosition ? 'right' : ''"
69
- :style="{ width: element.options.width }"
70
- :min="element.options.min"
71
- :max="element.options.max"
72
- :step="element.options.step"
73
- :precision="element.options.precision"
74
- ></el-input-number>
75
- </template>
76
-
77
- <template v-if="element.type == 'radio'">
78
- <el-radio-group
79
- v-model="element.options.defaultValue"
80
- :style="{ width: element.options.width }"
81
- :disabled="element.options.disabled"
82
- >
83
- <template v-if="element.options.buttonType">
84
- <el-radio-button
85
- :style="{
86
- display: element.options.inline ? 'inline-block' : 'block'
87
- }"
88
- :label="item.value"
89
- :border="element.options.border"
90
- v-for="(item, index) in element.options.options"
91
- :key="item.value + index"
92
- >
93
- {{ element.options.showLabel ? item.label : item.value }}
94
- </el-radio-button>
95
- </template>
96
- <template v-else>
97
- <el-radio
98
- :style="{
99
- display: element.options.inline ? 'inline-block' : 'block'
100
- }"
101
- :label="item.value"
102
- :border="element.options.border"
103
- v-for="(item, index) in element.options.options"
104
- :key="item.value + index"
105
- >
106
- {{ element.options.showLabel ? item.label : item.value }}
107
- </el-radio>
108
- </template>
109
- </el-radio-group>
110
- </template>
111
-
112
- <template v-if="element.type == 'checkbox'">
113
- <el-checkbox-group
114
- v-model="element.options.defaultValue"
115
- :style="{ width: element.options.width }"
116
- :disabled="element.options.disabled"
117
- :min="element.options.min"
118
- :max="element.options.max"
119
- >
120
- <template v-if="element.options.buttonType">
121
- <el-checkbox-button
122
- :style="{
123
- display: element.options.inline ? 'inline-block' : 'block'
124
- }"
125
- :label="item.value"
126
- :border="element.options.border"
127
- v-for="(item, index) in element.options.options"
128
- :key="item.value + index"
129
- >
130
- {{ element.options.showLabel ? item.label : item.value }}
131
- </el-checkbox-button>
132
- </template>
133
- <template v-else>
134
- <el-checkbox
135
- :style="{
136
- display: element.options.inline ? 'inline-block' : 'block'
137
- }"
138
- :label="item.value"
139
- :border="element.options.border"
140
- v-for="(item, index) in element.options.options"
141
- :key="item.value + index"
142
- >
143
- {{ element.options.showLabel ? item.label : item.value }}
144
- </el-checkbox>
145
- </template>
146
- </el-checkbox-group>
147
- </template>
148
-
149
- <template v-if="element.type == 'time'">
150
- <el-time-picker
151
- v-if="element.options.timeType"
152
- v-model="element.options.defaultValue"
153
- :is-range="element.options.isRange"
154
- :placeholder="element.options.placeholder"
155
- :start-placeholder="element.options.startPlaceholder"
156
- :end-placeholder="element.options.endPlaceholder"
157
- :readonly="element.options.readonly"
158
- :disabled="element.options.disabled"
159
- :editable="element.options.editable"
160
- :clearable="element.options.clearable"
161
- :arrowControl="element.options.arrowControl"
162
- :style="{ width: element.options.width }"
163
- >
164
- </el-time-picker>
165
- <template v-else>
166
- <el-time-select
167
- v-model="element.options.selectStartTime"
168
- :is-range="element.options.isRange"
169
- :placeholder="
170
- element.options.selectRange
171
- ? element.options.startPlaceholder
172
- : element.options.placeholder
173
- "
174
- :readonly="element.options.readonly"
175
- :disabled="element.options.disabled"
176
- :editable="element.options.editable"
177
- :clearable="element.options.clearable"
178
- :arrowControl="element.options.arrowControl"
179
- :style="{ width: element.options.width }"
180
- :picker-options="element.options.stretTimePickerOptions"
181
- >
182
- </el-time-select>
183
- <el-time-select
184
- v-if="element.options.selectRange"
185
- v-model="element.options.selectEndTime"
186
- :is-range="element.options.isRange"
187
- :placeholder="element.options.endPlaceholder"
188
- :readonly="element.options.readonly"
189
- :disabled="element.options.disabled"
190
- :editable="element.options.editable"
191
- :clearable="element.options.clearable"
192
- :arrowControl="element.options.arrowControl"
193
- :style="{ width: element.options.width }"
194
- :picker-options="element.options.endTimePickerOptions"
195
- >
196
- </el-time-select>
197
- </template>
198
- </template>
199
-
200
- <template v-if="element.type == 'date'">
201
- <el-date-picker
202
- v-model="element.options.defaultValue"
203
- :type="element.options.type"
204
- :is-range="element.options.isRange"
205
- :placeholder="element.options.placeholder"
206
- :start-placeholder="element.options.startPlaceholder"
207
- :end-placeholder="element.options.endPlaceholder"
208
- :readonly="element.options.readonly"
209
- :disabled="element.options.disabled"
210
- :editable="element.options.editable"
211
- :clearable="element.options.clearable"
212
- :style="{ width: element.options.width }"
213
- >
214
- </el-date-picker>
215
- </template>
216
-
217
- <template v-if="element.type == 'rate'">
218
- <el-rate
219
- v-model="element.options.defaultValue"
220
- :max="element.options.max"
221
- :disabled="element.options.disabled"
222
- :allow-half="element.options.allowHalf"
223
- :show-text="element.options.showText"
224
- :texts="element.options.auxiliaryValue"
225
- ></el-rate>
226
- </template>
227
-
228
- <template v-if="element.type == 'color'">
229
- <el-color-picker
230
- v-model="element.options.defaultValue"
231
- :disabled="element.options.disabled"
232
- :show-alpha="element.options.showAlpha"
233
- ></el-color-picker>
234
- </template>
235
-
236
- <template v-if="element.type == 'select'">
237
- <el-select
238
- v-model="element.options.defaultValue"
239
- :disabled="element.options.disabled"
240
- :multiple="element.options.multiple"
241
- :collapseTags="element.options.collapseTags"
242
- :allowCreate="element.options.allowCreate"
243
- :clearable="element.options.clearable"
244
- :placeholder="element.options.placeholder"
245
- :style="{ width: element.options.width }"
246
- :filterable="
247
- element.options.allowCreate ? true : element.options.filterable
248
- "
249
- >
250
- <el-option
251
- v-for="item in element.options.options"
252
- :key="item.value"
253
- :value="item.value"
254
- :label="element.options.showLabel ? item.label : item.value"
255
- ></el-option>
256
- </el-select>
257
- </template>
258
-
259
- <template v-if="element.type == 'switch'">
260
- <el-switch
261
- v-model="element.options.defaultValue"
262
- :disabled="element.options.disabled"
263
- :inactive-text="element.options.switchInactiveText"
264
- :active-text="element.options.switchActiveText"
265
- :inactive-color="element.options.switchInactiveColor"
266
- :active-color="element.options.switchActiveColor"
267
- >
268
- </el-switch>
269
- </template>
270
-
271
- <template v-if="element.type == 'slider'">
272
- <el-slider
273
- v-model="element.options.defaultValue"
274
- :min="element.options.min"
275
- :max="element.options.max"
276
- :disabled="element.options.disabled"
277
- :step="element.options.step"
278
- :show-input="element.options.showInput"
279
- :range="element.options.range"
280
- :style="{
281
- width: element.options.width,
282
- height: element.options.height
283
- }"
284
- :show-tooltip="element.options.showTooltip"
285
- :format-tooltip="
286
- val => formatTooltip(val, element.options.formatTooltip)
287
- "
288
- :show-stops="element.options.showStops"
289
- :vertical="element.options.vertical"
290
- ></el-slider>
291
- </template>
292
-
293
- <template v-if="element.type == 'imgupload'">
294
- <!-- <fm-upload
295
- v-model="element.options.defaultValue"
296
- :disabled="element.options.disabled"
297
- :style="{ width: element.options.width }"
298
- :width="element.options.size.width"
299
- :height="element.options.size.height"
300
- token="xxx"
301
- domain="xxx"
302
- >
303
- </fm-upload> -->
304
-
305
- <el-upload
306
- class="upload-demo"
307
- :action="element.options.remoteFunc"
308
- :on-preview="
309
- file => handlePictureCardPreview(file, element.options.listType)
310
- "
311
- :on-remove="handleRemove"
312
- :multiple="element.options.multiple"
313
- :limit="element.options.length"
314
- :width="element.options.size.width"
315
- :height="element.options.size.height"
316
- :list-type="element.options.listType"
317
- :file-list="element.options.defaultValue"
318
- :drag="element.options.drag"
319
- :on-change="handleAvatar"
320
- :on-error="handleAvatarError"
321
- :disabled="element.options.disabled"
322
- >
323
- <el-button
324
- size="small"
325
- type="primary"
326
- :disabled="element.options.disabled"
327
- v-if="
328
- ['default', 'picture'].includes(element.options.listType) &&
329
- !element.options.drag
330
- "
331
- >点击上传</el-button
332
- >
333
- <i
334
- slot="default"
335
- class="el-icon-plus"
336
- v-if="
337
- element.options.listType === 'picture-card' && !element.options.drag
338
- "
339
- ></i>
340
- <i class="el-icon-upload" v-if="element.options.drag"></i>
341
- <div class="el-upload__text" v-if="element.options.drag">
342
- 将文件拖到此处,或<em>点击上传</em>
343
- </div>
344
- <div
345
- slot="tip"
346
- class="el-upload__tip"
347
- v-html="element.options.elUploadTip"
348
- ></div>
349
- </el-upload>
350
- </template>
351
-
352
- <template v-if="element.type == 'cascader'">
353
- <el-cascader
354
- v-model="element.options.defaultValue"
355
- :disabled="element.options.disabled"
356
- :clearable="element.options.clearable"
357
- :placeholder="element.options.placeholder"
358
- :style="{ width: element.options.width }"
359
- :options="element.options.remoteOptions"
360
- :props="element.options.props"
361
- :show-all-levels="element.options.showAllLevels ? false : true"
362
- :collapse-tags="element.options.collapseTags"
363
- >
364
- <template slot-scope="{ data }">
365
- <span v-html="element.options.prepend"></span>
366
- <span>{{ data.label }}</span>
367
- <span v-html="element.options.append"></span>
368
- </template>
369
- </el-cascader>
370
- </template>
371
-
372
- <template v-if="element.type == 'editor'">
373
- <vue-editor
374
- v-model="element.options.defaultValue"
375
- :style="{
376
- width: element.options.width,
377
- height: element.options.height
378
- }"
379
- :disabled="element.options.disabled"
380
- >
381
- </vue-editor>
382
- </template>
383
-
384
- <template v-if="element.type == 'blank'">
385
- <div
386
- style="height: 50px;color: #999;background: #eee;line-height:50px;text-align:center;"
387
- >
388
- 自定义区域
389
- </div>
390
- </template>
391
-
392
- <template v-if="element.type == 'text'">
393
- <span>{{ element.options.defaultValue }}</span>
394
- </template>
395
-
396
- <template v-if="element.type == 'grid'">
397
- <el-row
398
- type="flex"
399
- :class="{ active: selectWidget.key == element.key }"
400
- :gutter="element.options.gutter ? element.options.gutter : 0"
401
- :justify="element.options.justify"
402
- :align="element.options.align"
403
- @click.native="handleSelectWidget(index)"
404
- >
405
- <el-col
406
- v-for="(col, colIndex) in element.columns"
407
- :key="colIndex"
408
- :span="col.span ? col.span : 0"
409
- >
410
- <draggable
411
- v-model="col.list"
412
- :no-transition-on-drag="true"
413
- v-bind="{
414
- group: 'people',
415
- ghostClass: 'ghost',
416
- animation: 200,
417
- handle: '.drag-widget'
418
- }"
419
- @end="handleMoveEnd"
420
- @add="handleWidgetColAdd($event, element, colIndex)"
421
- >
422
- <transition-group name="fade" tag="div" class="widget-col-list">
423
- <template v-for="(el, i) in col.list">
424
- <widget-form-item
425
- :key="el.key"
426
- v-if="el.key"
427
- :element="el"
428
- :select.sync="selectWidget"
429
- :index="i"
430
- :data="col"
431
- >
432
- </widget-form-item>
433
- </template>
434
- </transition-group>
435
- </draggable>
436
- </el-col>
437
- </el-row>
438
- </template>
439
-
440
- <template v-if="element.type == 'table'">
441
- <draggable
442
- v-model="element.list"
443
- :no-transition-on-drag="true"
444
- v-bind="{
445
- group: 'people',
446
- ghostClass: 'ghost',
447
- animation: 200,
448
- handle: '.drag-widget'
449
- }"
450
- @end="handleMoveEnd"
451
- @add="handleWidgetTableAdd($event, element)"
452
- >
453
- <transition-group name="fade" tag="div" class="widget-table-list">
454
- <template v-for="(el, i) in element.list">
455
- <widget-form-item
456
- class="widget-table-list-item"
457
- :key="el.key"
458
- v-if="el.key"
459
- :element="el"
460
- :select.sync="selectWidget"
461
- :index="i"
462
- :data="element"
463
- >
464
- </widget-form-item>
465
- </template>
466
- </transition-group>
467
- </draggable>
468
- </template>
469
-
470
- <template v-if="element.type == 'tabs'">
471
- <el-tabs
472
- v-model="element.options.defaultValue"
473
- :type="element.options.type"
474
- :tab-position="element.options.tabPosition"
475
- >
476
- <el-tab-pane
477
- v-for="(tabItem, tabIndex) in element.tabs"
478
- :key="tabItem.value"
479
- :label="tabItem.label"
480
- :name="tabItem.value"
481
- >
482
- <draggable
483
- v-model="tabItem.list"
484
- :no-transition-on-drag="true"
485
- v-bind="{
486
- group: 'people',
487
- ghostClass: 'ghost',
488
- animation: 200,
489
- handle: '.drag-widget'
490
- }"
491
- @end="handleMoveEnd"
492
- @add="handleWidgetTabAdd($event, element, tabIndex)"
493
- >
494
- <transition-group name="fade" tag="div" class="widget-col-list">
495
- <template v-for="(el, i) in tabItem.list">
496
- <widget-form-item
497
- v-if="el && el.key"
498
- :key="el.key"
499
- :element="el"
500
- :select.sync="selectWidget"
501
- :index="i"
502
- :data="tabItem"
503
- ></widget-form-item>
504
- </template>
505
- </transition-group>
506
- </draggable>
507
- </el-tab-pane>
508
- </el-tabs>
509
- </template>
510
-
511
- <template v-if="element.type == 'divider'">
512
- <el-divider :content-position="element.options.contentPosition">
513
- {{ element.name }}
514
- </el-divider>
515
- </template>
516
-
517
- <div class="widget-view-action" v-if="selectWidget.key == element.key">
518
- <i
519
- class="iconfont icon-icon_clone"
520
- @click.stop="handleWidgetClone(index)"
521
- ></i>
522
- <i
523
- class="iconfont icon-trash"
524
- @click.stop="handleWidgetDelete(index)"
525
- ></i>
526
- </div>
527
-
528
- <div class="widget-view-drag" v-if="selectWidget.key == element.key">
529
- <i class="iconfont icon-drag drag-widget"></i>
530
- </div>
531
-
532
- <el-dialog :visible.sync="dialogVisible">
533
- <img width="100%" :src="dialogImageUrl" alt="" />
534
- </el-dialog>
535
- </el-form-item>
536
- </template>
537
-
538
- <script>
539
- import Draggable from "vuedraggable";
540
- import FmUpload from "./Upload";
541
- import { VueEditor } from "vue2-editor";
542
- export default {
543
- name: "widget-form-item",
544
- props: ["element", "select", "index", "data"],
545
- components: { Draggable, FmUpload, VueEditor },
546
- data() {
547
- return {
548
- selectWidget: this.select,
549
- dialogVisible: false,
550
- dialogImageUrl: "",
551
- config: {}
552
- };
553
- },
554
- mounted() {
555
- if (this.element.type == "tabs") {
556
- this.config[this.element.model] = this.element.options.defaultValue;
557
- }
558
- },
559
- methods: {
560
- handleSelectWidget(index) {
561
- this.selectWidget = this.data.list[index];
562
- },
563
- handleWidgetDelete(index) {
564
- if (this.data.list.length - 1 === index) {
565
- if (index === 0) {
566
- this.selectWidget = {};
567
- } else {
568
- this.selectWidget = this.data.list[index - 1];
569
- }
570
- } else {
571
- this.selectWidget = this.data.list[index + 1];
572
- }
573
-
574
- this.$nextTick(() => {
575
- this.data.list.splice(index, 1);
576
- });
577
- },
578
- formatTooltip(val, num) {
579
- return val / num;
580
- },
581
- handleWidgetClone(index) {
582
- const key =
583
- Date.parse(new Date().toString()) +
584
- "_" +
585
- Math.ceil(Math.random() * 99999);
586
- let cloneData = {
587
- ...this.data.list[index],
588
- options: {
589
- ...this.data.list[index].options,
590
- remoteFunc: "func_" + key
591
- },
592
- key,
593
- model: this.data.list[index].type + "_" + key,
594
- rules: this.data.list[index].rules || []
595
- };
596
-
597
- if (
598
- this.data.list[index].type === "radio" ||
599
- this.data.list[index].type === "checkbox" ||
600
- this.data.list[index].type === "select"
601
- ) {
602
- cloneData = {
603
- ...cloneData,
604
- options: {
605
- ...cloneData.options,
606
- options: cloneData.options.options.map(item => ({ ...item }))
607
- }
608
- };
609
- }
610
-
611
- this.data.list.splice(index, 0, cloneData);
612
-
613
- this.$nextTick(() => {
614
- this.selectWidget = this.data.list[index + 1];
615
- });
616
- },
617
- handlePictureCardPreview(file, listType) {
618
- if (listType === "picture-card") {
619
- this.dialogImageUrl = file.url;
620
- this.dialogVisible = true;
621
- }
622
- },
623
- handleRemove(file, fileList) {
624
- this.data.options.defaultValue = fileList;
625
- },
626
- handleAvatar(res, file) {
627
- this.data.options.defaultValue = file;
628
- },
629
- handleAvatarError() {
630
- console.log("上传失败!");
631
- },
632
- handleMoveEnd({ newIndex, oldIndex }) {},
633
- handleWidgetColAdd($event, row, colIndex) {
634
- const newIndex = $event.newIndex;
635
- const oldIndex = $event.oldIndex;
636
- const item = $event.item;
637
-
638
- // 防止布局元素的嵌套拖拽
639
- if (item.className.indexOf("data-grid") >= 0) {
640
- // 如果是列表中拖拽的元素需要还原到原来位置
641
- item.tagName === "DIV" &&
642
- this.data.list.splice(
643
- oldIndex,
644
- 0,
645
- row.columns[colIndex].list[newIndex]
646
- );
647
-
648
- row.columns[colIndex].list.splice(newIndex, 1);
649
-
650
- return false;
651
- }
652
-
653
- const key =
654
- Date.parse(new Date()) + "_" + Math.ceil(Math.random() * 99999);
655
-
656
- this.$set(row.columns[colIndex].list, newIndex, {
657
- ...row.columns[colIndex].list[newIndex],
658
- options: {
659
- ...row.columns[colIndex].list[newIndex].options
660
- // remoteFunc: "func_" + key
661
- },
662
- key,
663
- // 绑定键值
664
- model: row.columns[colIndex].list[newIndex].type + "_" + key,
665
- rules: []
666
- });
667
-
668
- if (
669
- row.columns[colIndex].list[newIndex].type === "radio" ||
670
- row.columns[colIndex].list[newIndex].type === "checkbox" ||
671
- row.columns[colIndex].list[newIndex].type === "select"
672
- ) {
673
- this.$set(row.columns[colIndex].list, newIndex, {
674
- ...row.columns[colIndex].list[newIndex],
675
- options: {
676
- ...row.columns[colIndex].list[newIndex].options,
677
- options: row.columns[colIndex].list[newIndex].options.options.map(
678
- item => ({
679
- ...item
680
- })
681
- )
682
- }
683
- });
684
- }
685
-
686
- this.selectWidget = row.columns[colIndex].list[newIndex];
687
- },
688
- handleWidgetTabAdd($event, row, colIndex) {
689
- const newIndex = $event.newIndex;
690
- const oldIndex = $event.oldIndex;
691
- const item = $event.item;
692
-
693
- // 防止布局元素的嵌套拖拽
694
- if (item.className.indexOf("data-grid") >= 0) {
695
- // 如果是列表中拖拽的元素需要还原到原来位置
696
- item.tagName === "DIV" &&
697
- this.data.list.splice(oldIndex, 0, row.tabs[colIndex].list[newIndex]);
698
-
699
- row.tabs[colIndex].list.splice(newIndex, 1);
700
-
701
- return false;
702
- }
703
-
704
- const key =
705
- Date.parse(new Date()) + "_" + Math.ceil(Math.random() * 99999);
706
-
707
- this.$set(row.tabs[colIndex].list, newIndex, {
708
- ...row.tabs[colIndex].list[newIndex],
709
- options: {
710
- ...row.tabs[colIndex].list[newIndex].options
711
- // remoteFunc: "func_" + key
712
- },
713
- key,
714
- // 绑定键值
715
- model: row.tabs[colIndex].list[newIndex].type + "_" + key,
716
- rules: []
717
- });
718
-
719
- if (
720
- row.tabs[colIndex].list[newIndex].type === "radio" ||
721
- row.tabs[colIndex].list[newIndex].type === "checkbox" ||
722
- row.tabs[colIndex].list[newIndex].type === "select"
723
- ) {
724
- this.$set(row.tabs[colIndex].list, newIndex, {
725
- ...row.tabs[colIndex].list[newIndex],
726
- options: {
727
- ...row.tabs[colIndex].list[newIndex].options,
728
- options: row.tabs[colIndex].list[newIndex].options.options.map(
729
- item => ({
730
- ...item
731
- })
732
- )
733
- }
734
- });
735
- }
736
-
737
- if (row.tabs[colIndex].list[newIndex].type === "grid") {
738
- this.$set(
739
- row.tabs[colIndex].list,
740
- newIndex,
741
- JSON.parse(JSON.stringify(row.tabs[colIndex].list[newIndex]))
742
- );
743
- }
744
-
745
- if (row.tabs[colIndex].list[newIndex].type === "table") {
746
- this.$set(row.tabs[colIndex].list, newIndex, {
747
- ...row.tabs[colIndex].list[newIndex],
748
- list: row.tabs[colIndex].list[newIndex].list.map(item => ({
749
- ...item
750
- }))
751
- });
752
- }
753
-
754
- this.selectWidget = row.tabs[colIndex].list[newIndex];
755
- },
756
- handleWidgetTableAdd($event, row) {
757
- const newIndex = $event.newIndex;
758
- const oldIndex = $event.oldIndex;
759
- const item = $event.item;
760
- // 防止布局元素的嵌套拖拽
761
- if (item.className.indexOf("no-put") >= 0) {
762
- // 如果是列表中拖拽的元素需要还原到原来位置
763
- item.tagName === "DIV" &&
764
- this.data.list.splice(oldIndex, 0, row.list[newIndex]);
765
-
766
- row.list.splice(newIndex, 1);
767
-
768
- return false;
769
- }
770
-
771
- const key =
772
- Date.parse(new Date()) + "_" + Math.ceil(Math.random() * 99999);
773
-
774
- this.$set(row.list, newIndex, {
775
- ...row.list[newIndex],
776
- options: {
777
- ...row.list[newIndex].options
778
- // remoteFunc: "func_" + key
779
- },
780
- key,
781
- // 绑定键值
782
- model: row.list[newIndex].type + "_" + key,
783
- rules: []
784
- });
785
-
786
- if (
787
- row.list[newIndex].type === "radio" ||
788
- row.list[newIndex].type === "checkbox" ||
789
- row.list[newIndex].type === "select"
790
- ) {
791
- this.$set(row.list, newIndex, {
792
- ...row.list[newIndex],
793
- options: {
794
- ...row.list[newIndex].options,
795
- options: row.list[newIndex].options.options.map(item => ({
796
- ...item
797
- }))
798
- }
799
- });
800
- }
801
-
802
- this.selectWidget = row.list[newIndex];
803
- }
804
- },
805
- watch: {
806
- select(val) {
807
- this.selectWidget = val;
808
- },
809
- selectWidget: {
810
- handler(val) {
811
- this.$emit("update:select", val);
812
- },
813
- deep: true
814
- }
815
- }
816
- };
817
- </script>