tianheng-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/README.md +9 -18
  2. package/lib/039af9192b9bb277966ceb4e4ce29c41.js +16 -0
  3. package/lib/2d84c80112a372bc149cad3464e90fa3.js +1617 -0
  4. package/lib/5977b934a4c6b480790864ea01303173.js +10834 -0
  5. package/lib/7745f3e776488705a38e62f85adad54d.js +16 -0
  6. package/lib/de8dee841ffdaaede3a2254deef30376.js +15395 -0
  7. package/lib/e78eab250e7f8ccac3d918dfdb06ca10.js +8904 -0
  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/theme-chalk/fonts/iconfont.eot +0 -0
  20. package/lib/theme-chalk/fonts/iconfont.svg +155 -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/fonts/iconfont.woff2 +0 -0
  24. package/lib/theme-chalk/images/notData.png +0 -0
  25. package/lib/theme-chalk/index.scss +31 -0
  26. package/lib/theme-chalk/js/Log.js +99 -0
  27. package/lib/theme-chalk/js/axios.js +86 -0
  28. package/lib/theme-chalk/js/store/getters.js +5 -0
  29. package/lib/theme-chalk/js/store/modules/makingForm.js +21 -0
  30. package/lib/theme-chalk/js/store/store.js +26 -0
  31. package/lib/theme-chalk/styles/button.scss +501 -0
  32. package/lib/theme-chalk/styles/card.scss +29 -0
  33. package/lib/theme-chalk/styles/cell.scss +54 -0
  34. package/lib/theme-chalk/styles/codeEditor.scss +9 -0
  35. package/lib/theme-chalk/styles/col.scss +151 -0
  36. package/lib/theme-chalk/styles/dialog.scss +56 -0
  37. package/lib/theme-chalk/styles/empty.scss +22 -0
  38. package/lib/theme-chalk/styles/feature.scss +46 -0
  39. package/lib/theme-chalk/styles/font.css +7 -0
  40. package/lib/theme-chalk/styles/grid.scss +41 -0
  41. package/lib/theme-chalk/styles/icon.css +1944 -0
  42. package/lib/theme-chalk/styles/imagePreview.scss +113 -0
  43. package/lib/theme-chalk/styles/img.scss +35 -0
  44. package/lib/theme-chalk/styles/reset.scss +17 -0
  45. package/lib/theme-chalk/styles/root.css +64 -0
  46. package/lib/theme-chalk/styles/row.scss +23 -0
  47. package/lib/theme-chalk/styles/upload.scss +744 -0
  48. package/lib/theme-chalk/styles/variable.scss +80 -0
  49. package/lib/tianheng-ui.js +116 -0
  50. package/package.json +86 -48
  51. package/packages/Button/index.js +8 -0
  52. package/packages/Button/index.vue +80 -0
  53. package/packages/Card/index.js +8 -0
  54. package/packages/Card/index.vue +37 -0
  55. package/packages/Cell/index.js +8 -0
  56. package/packages/Cell/index.vue +68 -0
  57. package/packages/CodeEditor/index.js +8 -0
  58. package/packages/CodeEditor/index.vue +177 -0
  59. package/packages/Col/index.js +8 -0
  60. package/packages/Col/index.vue +43 -0
  61. package/packages/Dialog/index.js +8 -0
  62. package/packages/Dialog/index.vue +129 -0
  63. package/packages/Empty/index.js +8 -0
  64. package/packages/Empty/index.vue +35 -0
  65. package/packages/FormMaking/FormConfig.vue +60 -0
  66. package/packages/FormMaking/GenerateForm.vue +308 -0
  67. package/packages/FormMaking/GenerateFormItem.vue +887 -0
  68. package/packages/FormMaking/GenerateFormItemH5.vue +825 -0
  69. package/packages/FormMaking/Upload/index.vue +572 -0
  70. package/packages/FormMaking/WidgetConfig.vue +472 -0
  71. package/packages/FormMaking/WidgetForm.vue +159 -0
  72. package/packages/FormMaking/WidgetFormItem.vue +187 -0
  73. package/packages/FormMaking/custom/config.js +762 -0
  74. package/packages/FormMaking/custom/configs/alliance.vue +0 -0
  75. package/packages/FormMaking/custom/configs/blank.vue +54 -0
  76. package/packages/FormMaking/custom/configs/button.vue +172 -0
  77. package/packages/FormMaking/custom/configs/cascader.vue +175 -0
  78. package/packages/FormMaking/custom/configs/cell.vue +81 -0
  79. package/packages/FormMaking/custom/configs/checkbox.vue +234 -0
  80. package/packages/FormMaking/custom/configs/color.vue +137 -0
  81. package/packages/FormMaking/custom/configs/date.vue +158 -0
  82. package/packages/FormMaking/custom/configs/divider.vue +61 -0
  83. package/packages/FormMaking/custom/configs/editor.vue +71 -0
  84. package/packages/FormMaking/custom/configs/filler.vue +57 -0
  85. package/packages/FormMaking/custom/configs/grid.vue +103 -0
  86. package/packages/FormMaking/custom/configs/image.vue +138 -0
  87. package/packages/FormMaking/custom/configs/input.vue +176 -0
  88. package/packages/FormMaking/custom/configs/number.vue +140 -0
  89. package/packages/FormMaking/custom/configs/radio.vue +211 -0
  90. package/packages/FormMaking/custom/configs/rate.vue +109 -0
  91. package/packages/FormMaking/custom/configs/select.vue +305 -0
  92. package/packages/FormMaking/custom/configs/slider.vue +142 -0
  93. package/packages/FormMaking/custom/configs/switch.vue +130 -0
  94. package/packages/FormMaking/custom/configs/table.vue +105 -0
  95. package/packages/FormMaking/custom/configs/table_h5.vue +102 -0
  96. package/packages/FormMaking/custom/configs/tabs.vue +175 -0
  97. package/packages/FormMaking/custom/configs/text.vue +71 -0
  98. package/packages/FormMaking/custom/configs/textarea.vue +167 -0
  99. package/packages/FormMaking/custom/configs/time.vue +153 -0
  100. package/packages/FormMaking/custom/configs/upload.vue +155 -0
  101. package/packages/FormMaking/custom/index.js +32 -0
  102. package/packages/FormMaking/custom/items/alliance.vue +132 -0
  103. package/packages/FormMaking/custom/items/blank.vue +16 -0
  104. package/packages/FormMaking/custom/items/button.vue +27 -0
  105. package/packages/FormMaking/custom/items/cascader.vue +29 -0
  106. package/packages/FormMaking/custom/items/cell.vue +18 -0
  107. package/packages/FormMaking/custom/items/checkbox.vue +46 -0
  108. package/packages/FormMaking/custom/items/color.vue +19 -0
  109. package/packages/FormMaking/custom/items/date.vue +29 -0
  110. package/packages/FormMaking/custom/items/divider.vue +14 -0
  111. package/packages/FormMaking/custom/items/editor.vue +22 -0
  112. package/packages/FormMaking/custom/items/filler.vue +17 -0
  113. package/packages/FormMaking/custom/items/grid.vue +130 -0
  114. package/packages/FormMaking/custom/items/image.vue +70 -0
  115. package/packages/FormMaking/custom/items/input.vue +33 -0
  116. package/packages/FormMaking/custom/items/login.vue +13 -0
  117. package/packages/FormMaking/custom/items/number.vue +24 -0
  118. package/packages/FormMaking/custom/items/radio.vue +44 -0
  119. package/packages/FormMaking/custom/items/rate.vue +20 -0
  120. package/packages/FormMaking/custom/items/select.vue +32 -0
  121. package/packages/FormMaking/custom/items/slider.vue +34 -0
  122. package/packages/FormMaking/custom/items/switch.vue +22 -0
  123. package/packages/FormMaking/custom/items/table.vue +106 -0
  124. package/packages/FormMaking/custom/items/table_h5.vue +126 -0
  125. package/packages/FormMaking/custom/items/tabs.vue +145 -0
  126. package/packages/FormMaking/custom/items/text.vue +18 -0
  127. package/packages/FormMaking/custom/items/textarea.vue +37 -0
  128. package/packages/FormMaking/custom/items/time.vue +32 -0
  129. package/packages/FormMaking/custom/items/upload.vue +102 -0
  130. package/packages/FormMaking/custom/mixins/index.js +61 -0
  131. package/packages/FormMaking/custom/register.js +18 -0
  132. package/packages/FormMaking/generate.js +5 -0
  133. package/packages/FormMaking/iconfont/demo.css +539 -0
  134. package/packages/FormMaking/iconfont/demo_index.html +1159 -0
  135. package/packages/FormMaking/iconfont/iconfont.css +189 -0
  136. package/packages/FormMaking/iconfont/iconfont.eot +0 -0
  137. package/packages/FormMaking/iconfont/iconfont.js +1 -0
  138. package/packages/FormMaking/iconfont/iconfont.svg +155 -0
  139. package/packages/FormMaking/iconfont/iconfont.ttf +0 -0
  140. package/packages/FormMaking/iconfont/iconfont.woff +0 -0
  141. package/packages/FormMaking/iconfont/iconfont.woff2 +0 -0
  142. package/packages/FormMaking/index.js +33 -0
  143. package/packages/FormMaking/index.vue +807 -0
  144. package/packages/FormMaking/lang/en-US.js +187 -0
  145. package/packages/FormMaking/lang/zh-CN.js +187 -0
  146. package/packages/FormMaking/making.js +9 -0
  147. package/packages/FormMaking/styles/cover.scss +41 -0
  148. package/packages/FormMaking/styles/index.scss +785 -0
  149. package/packages/FormMaking/util/generateCode.js +163 -0
  150. package/packages/FormMaking/util/index.js +33 -0
  151. package/packages/FormMaking/util/request.js +28 -0
  152. package/packages/Grid/index.js +8 -0
  153. package/packages/Grid/index.vue +21 -0
  154. package/packages/GridItem/index.js +8 -0
  155. package/packages/GridItem/index.vue +69 -0
  156. package/packages/Icons/index.js +8 -0
  157. package/packages/Icons/index.vue +377 -0
  158. package/packages/Image/index.js +8 -0
  159. package/packages/Image/index.vue +146 -0
  160. package/packages/ImagePreview/index.js +8 -0
  161. package/packages/ImagePreview/index.vue +386 -0
  162. package/packages/Row/index.js +8 -0
  163. package/packages/Row/index.vue +33 -0
  164. package/packages/Table/action.js +8 -0
  165. package/packages/Table/action.vue +168 -0
  166. package/packages/Table/column.vue +63 -0
  167. package/packages/Table/index.js +8 -0
  168. package/packages/Table/index.vue +327 -0
  169. package/packages/Table/search.js +8 -0
  170. package/packages/Table/search.vue +163 -0
  171. package/packages/Table/tools.js +8 -0
  172. package/packages/Table/tools.vue +49 -0
  173. package/packages/TableMaking/custom/configs/fieldSearch.vue +17 -0
  174. package/packages/TableMaking/custom/configs/fieldTable.vue +15 -0
  175. package/packages/TableMaking/custom/items/search/index.vue +158 -0
  176. package/packages/TableMaking/custom/items/tools/index.vue +49 -0
  177. package/packages/TableMaking/generate.js +5 -0
  178. package/packages/TableMaking/generateTable.vue +560 -0
  179. package/packages/TableMaking/index.vue +234 -0
  180. package/packages/TableMaking/making.js +5 -0
  181. package/packages/TableMaking/util/index.js +433 -0
  182. package/packages/TableMaking/widgetConfig.vue +390 -0
  183. package/packages/TableMaking/widgetTable.vue +305 -0
  184. package/packages/Upload/ajax.js +85 -0
  185. package/packages/Upload/index.js +8 -0
  186. package/packages/Upload/index.vue +325 -0
  187. package/packages/Upload/upload-dragger.vue +70 -0
  188. package/packages/Upload/upload-list.vue +121 -0
  189. package/packages/Upload/upload.vue +193 -0
  190. package/packages/VueEditor/index.js +8 -0
  191. package/packages/VueEditor/index.vue +38 -0
  192. package/packages/Workflow/Log.js +99 -0
  193. package/packages/Workflow/designer/ProcessDesigner.vue +628 -0
  194. package/packages/Workflow/designer/index.js +7 -0
  195. package/packages/Workflow/designer/plugins/content-pad/contentPadProvider.js +390 -0
  196. package/packages/Workflow/designer/plugins/content-pad/index.js +6 -0
  197. package/packages/Workflow/designer/plugins/defaultEmpty.js +24 -0
  198. package/packages/Workflow/designer/plugins/descriptor/activitiDescriptor.json +1071 -0
  199. package/packages/Workflow/designer/plugins/descriptor/camundaDescriptor.json +1087 -0
  200. package/packages/Workflow/designer/plugins/descriptor/flowableDescriptor.json +1215 -0
  201. package/packages/Workflow/designer/plugins/extension-moddle/activiti/activitiExtension.js +74 -0
  202. package/packages/Workflow/designer/plugins/extension-moddle/activiti/index.js +9 -0
  203. package/packages/Workflow/designer/plugins/extension-moddle/camunda/extension.js +148 -0
  204. package/packages/Workflow/designer/plugins/extension-moddle/camunda/index.js +6 -0
  205. package/packages/Workflow/designer/plugins/extension-moddle/flowable/flowableExtension.js +74 -0
  206. package/packages/Workflow/designer/plugins/extension-moddle/flowable/index.js +9 -0
  207. package/packages/Workflow/designer/plugins/palette/CustomPalette.js +156 -0
  208. package/packages/Workflow/designer/plugins/palette/index.js +6 -0
  209. package/packages/Workflow/designer/plugins/palette/paletteProvider.js +160 -0
  210. package/packages/Workflow/designer/plugins/translate/customTranslate.js +41 -0
  211. package/packages/Workflow/designer/plugins/translate/zh.js +238 -0
  212. package/packages/Workflow/highlight/index.js +5 -0
  213. package/packages/Workflow/index.js +34 -0
  214. package/packages/Workflow/index.vue +399 -0
  215. package/packages/Workflow/modules/auto-place/CustomAutoPlace.js +81 -0
  216. package/packages/Workflow/modules/auto-place/index.js +6 -0
  217. package/packages/Workflow/modules/custom-renderer/CustomRenderer.js +17 -0
  218. package/packages/Workflow/modules/custom-renderer/index.js +6 -0
  219. package/packages/Workflow/modules/rules/CustomRules.js +16 -0
  220. package/packages/Workflow/modules/rules/index.js +6 -0
  221. package/packages/Workflow/palette/ProcessPalette.vue +106 -0
  222. package/packages/Workflow/palette/index.js +7 -0
  223. package/packages/Workflow/penal/PropertiesPanel.vue +245 -0
  224. package/packages/Workflow/penal/base/ElementBaseInfo.vue +80 -0
  225. package/packages/Workflow/penal/flow-condition/FlowCondition.vue +142 -0
  226. package/packages/Workflow/penal/form/ElementForm.vue +367 -0
  227. package/packages/Workflow/penal/index.js +7 -0
  228. package/packages/Workflow/penal/listeners/ElementListeners.vue +299 -0
  229. package/packages/Workflow/penal/listeners/UserTaskListeners.vue +322 -0
  230. package/packages/Workflow/penal/listeners/template.js +178 -0
  231. package/packages/Workflow/penal/listeners/utilSelf.js +64 -0
  232. package/packages/Workflow/penal/multi-instance/ElementMultiInstance.vue +200 -0
  233. package/packages/Workflow/penal/other/ElementOtherConfig.vue +59 -0
  234. package/packages/Workflow/penal/properties/ElementProperties.vue +135 -0
  235. package/packages/Workflow/penal/signal-message/SignalAndMessage.vue +104 -0
  236. package/packages/Workflow/penal/task/ElementTask.vue +73 -0
  237. package/packages/Workflow/penal/task/task-components/ReceiveTask.vue +97 -0
  238. package/packages/Workflow/penal/task/task-components/ScriptTask.vue +85 -0
  239. package/packages/Workflow/penal/task/task-components/UserTask.vue +535 -0
  240. package/packages/Workflow/theme/element-variables.scss +70 -0
  241. package/packages/Workflow/theme/index.scss +2 -0
  242. package/packages/Workflow/theme/process-designer.scss +157 -0
  243. package/packages/Workflow/theme/process-panel.scss +107 -0
  244. package/packages/Workflow/translations.js +25 -0
  245. package/packages/Workflow/utils.js +71 -0
  246. package/packages/index.js +160 -0
  247. package/babel.config.js +0 -15
  248. package/index.js +0 -11
  249. package/public/favicon.ico +0 -0
  250. package/public/index.html +0 -17
  251. package/src/App.vue +0 -28
  252. package/src/assets/logo.png +0 -0
  253. package/src/components/HelloWorld.vue +0 -58
  254. package/src/main.js +0 -8
@@ -0,0 +1,572 @@
1
+ <template>
2
+ <div class="fm-uplaod-container" :id="uploadId">
3
+ <draggable
4
+ class="drag-img-list"
5
+ v-model="fileList"
6
+ v-bind="{ group: uploadId, ghostClass: 'ghost', animation: 200 }"
7
+ :no-transition-on-drag="true"
8
+ >
9
+ <div
10
+ :id="item.key"
11
+ :style="{ width: width + 'px', height: height + 'px' }"
12
+ :class="{
13
+ uploading: item.status == 'uploading',
14
+ 'is-success': item.status == 'success',
15
+ 'is-diabled': disabled
16
+ }"
17
+ class="upload-file"
18
+ v-for="item in fileList"
19
+ :key="item.key"
20
+ >
21
+ <img :src="item.url" />
22
+
23
+ <el-progress
24
+ v-if="item.status == 'uploading'"
25
+ :width="miniWidth * 0.9"
26
+ class="upload-progress"
27
+ type="circle"
28
+ :percentage="item.percent"
29
+ ></el-progress>
30
+
31
+ <label class="item-status" v-if="item.status == 'success'">
32
+ <i class="el-icon-upload-success el-icon-check"></i>
33
+ </label>
34
+
35
+ <div
36
+ class="uplaod-action"
37
+ :style="{ height: miniWidth / 4 + 'px' }"
38
+ v-if="!disabled"
39
+ >
40
+ <i
41
+ class="iconfont icon-tupianyulan"
42
+ title="预览"
43
+ @click="handlePreviewFile(item.key)"
44
+ :style="{ 'font-size': miniWidth / 8 + 'px' }"
45
+ ></i>
46
+ <i
47
+ v-if="isEdit"
48
+ class="iconfont icon-sync1"
49
+ title="替换"
50
+ @click="handleEdit(item.key)"
51
+ :style="{ 'font-size': miniWidth / 8 + 'px' }"
52
+ ></i>
53
+ <i
54
+ v-if="isDelete && fileList.length > min"
55
+ class="iconfont icon-delete"
56
+ title="删除"
57
+ @click="handleRemove(item.key)"
58
+ :style="{ 'font-size': miniWidth / 8 + 'px' }"
59
+ ></i>
60
+ </div>
61
+ </div>
62
+ </draggable>
63
+
64
+ <div
65
+ class="el-upload el-upload--picture-card"
66
+ :class="{ 'is-disabled': disabled }"
67
+ v-show="(!isQiniu || (isQiniu && token)) && fileList.length < length"
68
+ :style="{ width: width + 'px', height: height + 'px' }"
69
+ @click.self="handleAdd"
70
+ >
71
+ <i
72
+ class="el-icon-plus"
73
+ @click.self="handleAdd"
74
+ :style="{
75
+ fontSize: miniWidth / 4 + 'px',
76
+ marginTop: -miniWidth / 8 + 'px',
77
+ marginLeft: -miniWidth / 8 + 'px'
78
+ }"
79
+ ></i>
80
+ <input
81
+ accept="image/*"
82
+ v-if="multiple"
83
+ multiple
84
+ ref="uploadInput"
85
+ @change="handleChange"
86
+ type="file"
87
+ :style="{ width: 0, height: 0 }"
88
+ name="file"
89
+ class="el-upload__input upload-input"
90
+ />
91
+ <input
92
+ accept="image/*"
93
+ v-else
94
+ ref="uploadInput"
95
+ @change="handleChange"
96
+ type="file"
97
+ :style="{ width: 0, height: 0 }"
98
+ name="file"
99
+ class="el-upload__input upload-input"
100
+ />
101
+ </div>
102
+ </div>
103
+ </template>
104
+
105
+ <script>
106
+ import Viewer from "viewerjs";
107
+ import Draggable from "vuedraggable";
108
+ // import * as qiniu from 'qiniu-js'
109
+ require("viewerjs/dist/viewer.css");
110
+ export default {
111
+ components: {
112
+ Draggable
113
+ },
114
+ props: {
115
+ value: {
116
+ type: Array,
117
+ default: () => []
118
+ },
119
+ width: {
120
+ type: Number,
121
+ default: 100
122
+ },
123
+ height: {
124
+ type: Number,
125
+ default: 100
126
+ },
127
+ token: {
128
+ type: String,
129
+ default: ""
130
+ },
131
+ domain: {
132
+ type: String,
133
+ default: ""
134
+ },
135
+ multiple: {
136
+ type: Boolean,
137
+ default: false
138
+ },
139
+ length: {
140
+ type: Number,
141
+ default: 9
142
+ },
143
+ isQiniu: {
144
+ type: Boolean,
145
+ default: false
146
+ },
147
+ isDelete: {
148
+ type: Boolean,
149
+ default: false
150
+ },
151
+ min: {
152
+ type: Number,
153
+ default: 0
154
+ },
155
+ meitu: {
156
+ type: Boolean,
157
+ default: false
158
+ },
159
+ isEdit: {
160
+ type: Boolean,
161
+ default: false
162
+ },
163
+ action: {
164
+ type: String,
165
+ default: ""
166
+ },
167
+ disabled: {
168
+ type: Boolean,
169
+ default: false
170
+ }
171
+ },
172
+ data() {
173
+ return {
174
+ fileList: this.value.map(item => {
175
+ return {
176
+ key: item.key
177
+ ? item.key
178
+ : new Date().getTime() + "_" + Math.ceil(Math.random() * 99999),
179
+ url: item.url,
180
+ percent: item.percent ? item.percent : 100,
181
+ status: item.status ? item.status : "success"
182
+ };
183
+ }),
184
+ viewer: null,
185
+ uploadId: "upload_" + new Date().getTime(),
186
+ editIndex: -1,
187
+ meituIndex: -1
188
+ };
189
+ },
190
+ computed: {
191
+ miniWidth() {
192
+ if (this.width > this.height) {
193
+ return this.height;
194
+ } else {
195
+ return this.width;
196
+ }
197
+ }
198
+ },
199
+ mounted() {
200
+ this.$emit("input", this.fileList);
201
+ },
202
+ methods: {
203
+ handleChange() {
204
+ console.log(this.$refs.uploadInput.files);
205
+ const files = this.$refs.uploadInput.files;
206
+
207
+ for (let i = 0; i < files.length; i++) {
208
+ const file = files[i];
209
+ const reader = new FileReader();
210
+ const key =
211
+ new Date().getTime() + "_" + Math.ceil(Math.random() * 99999);
212
+ reader.readAsDataURL(file);
213
+ reader.onload = () => {
214
+ if (this.editIndex >= 0) {
215
+ this.$set(this.fileList, this.editIndex, {
216
+ key,
217
+ url: reader.result,
218
+ percent: 0,
219
+ status: "uploading"
220
+ });
221
+
222
+ this.editIndex = -1;
223
+ } else {
224
+ this.fileList.push({
225
+ key,
226
+ url: reader.result,
227
+ percent: 0,
228
+ status: "uploading"
229
+ });
230
+ }
231
+
232
+ this.$nextTick(() => {
233
+ if (this.isQiniu) {
234
+ this.uplaodAction2(reader.result, file, key);
235
+ } else {
236
+ this.uplaodAction(reader.result, file, key);
237
+ }
238
+ });
239
+ };
240
+ }
241
+ this.$refs.uploadInput.value = [];
242
+ },
243
+ uplaodAction(res, file, key) {
244
+ let changeIndex = this.fileList.findIndex(item => item.key === key);
245
+ console.log(this.fileList.findIndex(item => item.key === key));
246
+ const xhr = new XMLHttpRequest();
247
+
248
+ const url = this.action;
249
+ xhr.open("POST", url, true);
250
+ // xhr.setRequestHeader('Content-Type', 'multipart/form-data')
251
+
252
+ let formData = new FormData();
253
+ formData.append("file", file);
254
+
255
+ xhr.onreadystatechange = () => {
256
+ console.log(xhr);
257
+ if (xhr.readyState === 4) {
258
+ let resData = JSON.parse(xhr.response);
259
+ if (resData && resData.url) {
260
+ this.$set(
261
+ this.fileList,
262
+ this.fileList.findIndex(item => item.key === key),
263
+ {
264
+ ...this.fileList[
265
+ this.fileList.findIndex(item => item.key === key)
266
+ ],
267
+ url: resData.url,
268
+ percent: 100
269
+ }
270
+ );
271
+ setTimeout(() => {
272
+ this.$set(
273
+ this.fileList,
274
+ this.fileList.findIndex(item => item.key === key),
275
+ {
276
+ ...this.fileList[
277
+ this.fileList.findIndex(item => item.key === key)
278
+ ],
279
+ status: "success"
280
+ }
281
+ );
282
+ this.$emit("input", this.fileList);
283
+ }, 200);
284
+ } else {
285
+ this.$set(
286
+ this.fileList,
287
+ this.fileList.findIndex(item => item.key === key),
288
+ {
289
+ ...this.fileList[
290
+ this.fileList.findIndex(item => item.key === key)
291
+ ],
292
+ status: "error"
293
+ }
294
+ );
295
+ this.fileList.splice(
296
+ this.fileList.findIndex(item => item.key === key),
297
+ 1
298
+ );
299
+ }
300
+ }
301
+ };
302
+ xhr.upload.onprogress = res => {
303
+ console.log("progress", res);
304
+ if (res.total && res.loaded) {
305
+ this.$set(
306
+ this.fileList[this.fileList.findIndex(item => item.key === key)],
307
+ "percent",
308
+ (res.loaded / res.total) * 100
309
+ );
310
+ }
311
+ };
312
+
313
+ xhr.send(formData);
314
+ },
315
+ uplaodAction2(res, file, key) {
316
+ const _this = this;
317
+ const observable = qiniu.upload(
318
+ file,
319
+ key,
320
+ this.token,
321
+ {
322
+ fname: key,
323
+ mimeType: []
324
+ },
325
+ {
326
+ useCdnDomain: true
327
+ }
328
+ );
329
+ observable.subscribe({
330
+ next(res) {
331
+ _this.$set(
332
+ _this.fileList[_this.fileList.findIndex(item => item.key === key)],
333
+ "percent",
334
+ parseInt(res.total.percent)
335
+ );
336
+ },
337
+ error(err) {
338
+ _this.$set(
339
+ _this.fileList,
340
+ _this.fileList.findIndex(item => item.key === key),
341
+ {
342
+ ..._this.fileList[
343
+ _this.fileList.findIndex(item => item.key === key)
344
+ ],
345
+ status: "error"
346
+ }
347
+ );
348
+ _this.fileList.splice(
349
+ _this.fileList.findIndex(item => item.key === key),
350
+ 1
351
+ );
352
+ },
353
+ complete(res) {
354
+ _this.$set(
355
+ _this.fileList,
356
+ _this.fileList.findIndex(item => item.key === key),
357
+ {
358
+ ..._this.fileList[
359
+ _this.fileList.findIndex(item => item.key === key)
360
+ ],
361
+ url: _this.domain + res.key,
362
+ percent: 100
363
+ }
364
+ );
365
+ setTimeout(() => {
366
+ _this.$set(
367
+ _this.fileList,
368
+ _this.fileList.findIndex(item => item.key === key),
369
+ {
370
+ ..._this.fileList[
371
+ _this.fileList.findIndex(item => item.key === key)
372
+ ],
373
+ status: "success"
374
+ }
375
+ );
376
+ _this.$emit("input", _this.fileList);
377
+ }, 200);
378
+ }
379
+ });
380
+ },
381
+ handleRemove(key) {
382
+ this.fileList.splice(
383
+ this.fileList.findIndex(item => item.key === key),
384
+ 1
385
+ );
386
+ },
387
+ handleEdit(key) {
388
+ this.editIndex = this.fileList.findIndex(item => item.key === key);
389
+
390
+ this.$refs.uploadInput.click();
391
+ },
392
+ handleMeitu(key) {
393
+ this.$emit(
394
+ "on-meitu",
395
+ this.fileList.findIndex(item => item.key === key)
396
+ );
397
+ },
398
+ handleAdd() {
399
+ if (!this.disabled) {
400
+ this.editIndex = -1;
401
+ this.$refs.uploadInput.click();
402
+ }
403
+ },
404
+ handlePreviewFile(key) {
405
+ this.viewer && this.viewer.destroy();
406
+ this.uploadId = "upload_" + new Date().getTime();
407
+
408
+ console.log(this.viewer);
409
+ this.$nextTick(() => {
410
+ this.viewer = new Viewer(document.getElementById(this.uploadId));
411
+ this.viewer.view(this.fileList.findIndex(item => item.key === key));
412
+ });
413
+ }
414
+ },
415
+ watch: {
416
+ fileList: {
417
+ deep: true,
418
+ handler(val) {
419
+ // this.$emit('input', this.fileList)
420
+ }
421
+ }
422
+ }
423
+ };
424
+ </script>
425
+
426
+ <style lang="scss">
427
+ .fm-uplaod-container {
428
+ .is-disabled {
429
+ position: relative;
430
+
431
+ &::after {
432
+ position: absolute;
433
+ top: 0;
434
+ bottom: 0;
435
+ left: 0;
436
+ right: 0;
437
+ // background: rgba(0,0,0,.1);
438
+ content: "";
439
+ display: block;
440
+ cursor: not-allowed;
441
+ }
442
+ }
443
+
444
+ .upload-file {
445
+ margin: 0 10px 10px 0;
446
+ display: inline-flex;
447
+ justify-content: center;
448
+ align-items: center;
449
+ // background: #fff;
450
+ overflow: hidden;
451
+ background-color: #fff;
452
+ border: 1px solid #c0ccda;
453
+ border-radius: 6px;
454
+ box-sizing: border-box;
455
+ position: relative;
456
+ vertical-align: top;
457
+ &:hover {
458
+ .uplaod-action {
459
+ display: flex;
460
+ }
461
+ }
462
+ .uplaod-action {
463
+ position: absolute;
464
+ // top: 0;
465
+ // height: 30px;
466
+ bottom: 0;
467
+ left: 0;
468
+ right: 0;
469
+ background: rgba(0, 0, 0, 0.6);
470
+ display: none;
471
+ justify-content: center;
472
+ align-items: center;
473
+ i {
474
+ color: #fff;
475
+ cursor: pointer;
476
+ margin: 0 5px;
477
+ }
478
+ }
479
+ &.is-success {
480
+ .item-status {
481
+ position: absolute;
482
+ right: -15px;
483
+ top: -6px;
484
+ width: 40px;
485
+ height: 24px;
486
+ background: #13ce66;
487
+ text-align: center;
488
+ transform: rotate(45deg);
489
+ box-shadow: 0 0 1pc 1px rgba(0, 0, 0, 0.2);
490
+ & > i {
491
+ font-size: 12px;
492
+ margin-top: 11px;
493
+ color: #fff;
494
+ transform: rotate(-45deg);
495
+ }
496
+ }
497
+ }
498
+ &.uploading {
499
+ &:before {
500
+ display: block;
501
+ content: "";
502
+ position: absolute;
503
+ top: 0;
504
+ left: 0;
505
+ right: 0;
506
+ bottom: 0;
507
+ background: rgba(0, 0, 0, 0.3);
508
+ }
509
+ }
510
+ .upload-progress {
511
+ position: absolute;
512
+ .el-progress__text {
513
+ color: #fff;
514
+ font-size: 16px !important;
515
+ }
516
+ }
517
+ img {
518
+ max-width: 100%;
519
+ max-height: 100%;
520
+ vertical-align: middle;
521
+ }
522
+ }
523
+ .el-upload--picture-card {
524
+ position: relative;
525
+ overflow: hidden;
526
+ .el-icon-plus {
527
+ position: absolute;
528
+ top: 50%;
529
+ left: 50%;
530
+ }
531
+ }
532
+ .upload-input {
533
+ position: absolute;
534
+ top: 0;
535
+ left: 0;
536
+ right: 0;
537
+ bottom: 0;
538
+ display: block;
539
+ opacity: 0;
540
+ cursor: pointer;
541
+ }
542
+
543
+ .drag-img-list {
544
+ display: inline;
545
+
546
+ .ghost {
547
+ position: relative;
548
+ &::after {
549
+ width: 100%;
550
+ height: 100%;
551
+ display: block;
552
+ content: "";
553
+ background: #fbfdff;
554
+ position: absolute;
555
+ top: 0;
556
+ bottom: 0;
557
+ left: 0;
558
+ right: 0;
559
+ border: 1px dashed #3bb3c2;
560
+ }
561
+ }
562
+
563
+ & > div {
564
+ cursor: move;
565
+ }
566
+ }
567
+ }
568
+
569
+ .viewer-container {
570
+ z-index: 9999 !important;
571
+ }
572
+ </style>