imatrix-ui 0.2.6-up → 0.2.7-up

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 (206) hide show
  1. package/README.md +7 -7
  2. package/index.html +13 -13
  3. package/lib/super-ui.css +1 -1
  4. package/lib/super-ui.js +2724 -1932
  5. package/lib/super-ui.umd.cjs +24 -24
  6. package/package.json +1 -1
  7. package/packages/IntervalSelection/index.js +6 -6
  8. package/packages/IntervalSelection/src/quarterScope.vue +405 -405
  9. package/packages/IntervalSelection/src/sectionDate.vue +475 -475
  10. package/packages/breadcrumb/index.js +6 -6
  11. package/packages/breadcrumb/src/breadcrumb.vue +81 -81
  12. package/packages/department-tree/index.js +6 -6
  13. package/packages/department-tree/src/department-tree.vue +113 -113
  14. package/packages/department-tree-inline/index.js +6 -6
  15. package/packages/department-tree-inline/src/department-multi-tree-inline.vue +472 -472
  16. package/packages/department-tree-inline/src/department-single-tree-inline.vue +340 -340
  17. package/packages/department-tree-inline/src/department-tree-inline.vue +86 -86
  18. package/packages/department-tree-inline/src/department-tree-service.js +344 -344
  19. package/packages/department-tree-inline/src/search-result.vue +235 -235
  20. package/packages/department-user-tree/index.js +6 -6
  21. package/packages/department-user-tree/src/department-user-multiple-tree.vue +129 -129
  22. package/packages/department-user-tree/src/department-user-single-tree.vue +94 -94
  23. package/packages/department-user-tree/src/department-user-tree.vue +114 -114
  24. package/packages/department-user-tree-inline/index.js +9 -9
  25. package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +731 -731
  26. package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +334 -334
  27. package/packages/department-user-tree-inline/src/department-user-tree-inline.vue +87 -87
  28. package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +309 -309
  29. package/packages/department-user-tree-inline/src/department-user-tree-single-service.js +179 -179
  30. package/packages/department-user-tree-inline/src/search-result.vue +273 -273
  31. package/packages/directives/prevent-reclick.js +22 -22
  32. package/packages/dynamic-source-select/index.js +6 -6
  33. package/packages/dynamic-source-select/src/dynamic-source-select-service.js +106 -106
  34. package/packages/dynamic-source-select/src/dynamic-source-select.vue +675 -675
  35. package/packages/dynamic-source-select/src/events.js +78 -78
  36. package/packages/fs-preview/index.js +6 -6
  37. package/packages/fs-preview/src/fs-preview.vue +287 -287
  38. package/packages/fs-upload/index.js +6 -6
  39. package/packages/fs-upload/src/fs-upload-multi.vue +443 -443
  40. package/packages/fs-upload/src/fs-upload-single.vue +353 -353
  41. package/packages/fs-upload/src/fs-upload.vue +191 -191
  42. package/packages/fs-upload/src/see-big-picture.vue +67 -67
  43. package/packages/fs-upload-list/index.js +6 -6
  44. package/packages/fs-upload-list/src/fs-upload-list.vue +372 -372
  45. package/packages/hamburger/index.js +6 -6
  46. package/packages/hamburger/src/hamburger.vue +40 -40
  47. package/packages/index.js +123 -123
  48. package/packages/multipart-upload/index.js +6 -6
  49. package/packages/multipart-upload/src/index.vue +66 -66
  50. package/packages/multipart-upload/src/multipart-upload-form.vue +377 -377
  51. package/packages/multipart-upload/src/multipart-upload-list.vue +517 -517
  52. package/packages/organization-input/index.js +6 -6
  53. package/packages/organization-input/src/organization-input.vue +583 -583
  54. package/packages/plugins/export-data-new.js +623 -623
  55. package/packages/plugins/export-data.js +431 -431
  56. package/packages/plugins/index.js +15 -15
  57. package/packages/plugins/public-method.js +47 -47
  58. package/packages/remove-department/index.js +6 -6
  59. package/packages/remove-department/src/remove-department.vue +200 -200
  60. package/packages/remove-department/src/remove-dept-service.js +31 -31
  61. package/packages/remove-user/index.js +6 -6
  62. package/packages/remove-user/src/remove-user-service.js +31 -31
  63. package/packages/remove-user/src/remove-user.vue +226 -226
  64. package/packages/remove-workgroup/index.js +6 -6
  65. package/packages/remove-workgroup/src/remove-workgroup-service.js +31 -31
  66. package/packages/remove-workgroup/src/remove-workgroup.vue +183 -183
  67. package/packages/rich-editor/index.js +7 -7
  68. package/packages/rich-editor/index.vue +297 -297
  69. package/packages/rich-editor/langs/zh-Hans.js +438 -438
  70. package/packages/rich-editor/viewer.vue +105 -105
  71. package/packages/scan-code-input/index.js +6 -6
  72. package/packages/scan-code-input/src/events.js +34 -34
  73. package/packages/scan-code-input/src/scan-code-input-colse.vue +140 -140
  74. package/packages/scan-code-input/src/scan-code-input.vue +132 -132
  75. package/packages/secret-info/index.js +7 -7
  76. package/packages/secret-info/index.vue +100 -100
  77. package/packages/super-grid/index.js +7 -7
  78. package/packages/super-grid/src/apis.js +1092 -1092
  79. package/packages/super-grid/src/columns-config.vue +427 -427
  80. package/packages/super-grid/src/custom-formatter.js +394 -394
  81. package/packages/super-grid/src/eventBus.js +2 -2
  82. package/packages/super-grid/src/events.js +56 -56
  83. package/packages/super-grid/src/formValidatorUtil.js +300 -300
  84. package/packages/super-grid/src/formatter.js +196 -196
  85. package/packages/super-grid/src/group-column.vue +99 -99
  86. package/packages/super-grid/src/header-context-menu.vue +82 -82
  87. package/packages/super-grid/src/index-column.vue +69 -69
  88. package/packages/super-grid/src/public-methods.js +30 -30
  89. package/packages/super-grid/src/row-operation.vue +193 -193
  90. package/packages/super-grid/src/search-button.vue +74 -74
  91. package/packages/super-grid/src/search-condition-input.vue +73 -73
  92. package/packages/super-grid/src/search-condition-list.vue +68 -68
  93. package/packages/super-grid/src/search-form-advancedQuery.vue +819 -819
  94. package/packages/super-grid/src/search-form-dialog.vue +77 -77
  95. package/packages/super-grid/src/search-form-item.vue +495 -495
  96. package/packages/super-grid/src/search-form-number.vue +111 -111
  97. package/packages/super-grid/src/search-form-ordinarySearch.vue +239 -239
  98. package/packages/super-grid/src/search-form.vue +762 -762
  99. package/packages/super-grid/src/search-methods.js +592 -592
  100. package/packages/super-grid/src/selection-column.vue +46 -46
  101. package/packages/super-grid/src/store.js +3 -3
  102. package/packages/super-grid/src/super-grid-service.js +728 -728
  103. package/packages/super-grid/src/super-grid.vue +3011 -3011
  104. package/packages/super-grid/src/utils.js +880 -880
  105. package/packages/super-grid/src/view-image-dialog.vue +176 -176
  106. package/packages/super-nine-grid/index.js +7 -7
  107. package/packages/super-nine-grid/src/apis.js +108 -108
  108. package/packages/super-nine-grid/src/custom-formatter.js +73 -73
  109. package/packages/super-nine-grid/src/formatter.js +134 -134
  110. package/packages/super-nine-grid/src/search-form-number.vue +35 -35
  111. package/packages/super-nine-grid/src/search-form.vue +700 -700
  112. package/packages/super-nine-grid/src/search-methods.js +151 -151
  113. package/packages/super-nine-grid/src/store.js +3 -3
  114. package/packages/super-nine-grid/src/super-grid-service.js +107 -107
  115. package/packages/svg-icon/index.js +6 -6
  116. package/packages/svg-icon/src/svg-icon.vue +43 -43
  117. package/packages/utils/date-util.js +292 -292
  118. package/packages/utils/dom.js +227 -227
  119. package/packages/utils/gogocodeTransfer.js +59 -59
  120. package/packages/utils/memory-cache-utils.js +117 -117
  121. package/packages/utils/utils.js +180 -180
  122. package/packages/utils/value-set.js +97 -97
  123. package/packages/valid-code/index.js +7 -7
  124. package/packages/valid-code/src/valid-code.vue +104 -104
  125. package/packages/workflow-button/index.js +6 -6
  126. package/packages/workflow-button/src/workflow-button.vue +550 -550
  127. package/packages/workflow-history-list/index.js +6 -6
  128. package/packages/workflow-history-list/src/api.js +7 -7
  129. package/packages/workflow-history-list/src/workflow-history-list.vue +291 -291
  130. package/packages/workgroup-tree/index.js +6 -6
  131. package/packages/workgroup-tree/src/workgroup-tree.vue +86 -86
  132. package/packages/workgroup-tree-inline/index.js +6 -6
  133. package/packages/workgroup-tree-inline/src/search-result.vue +222 -222
  134. package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +516 -516
  135. package/packages/workgroup-tree-inline/src/workgroup-tree-service.js +93 -93
  136. package/packages/workgroup-user-tree/index.js +6 -6
  137. package/packages/workgroup-user-tree/src/workgroup-user-tree.vue +103 -103
  138. package/packages/workgroup-user-tree-inline/index.js +9 -9
  139. package/packages/workgroup-user-tree-inline/src/search-result.vue +266 -266
  140. package/packages/workgroup-user-tree-inline/src/workgroup-tree-inline-service.js +239 -239
  141. package/packages/workgroup-user-tree-inline/src/workgroup-user-tree-inline.vue +657 -657
  142. package/packages/year-range-picker/index.js +6 -6
  143. package/packages/year-range-picker/src/year-range-picker.vue +53 -53
  144. package/src/api/sso-service.js +172 -172
  145. package/src/api/tab.js +36 -36
  146. package/src/api/user-service.js +11 -11
  147. package/src/directives/permission/index.js +13 -13
  148. package/src/directives/permission/permission.js +20 -20
  149. package/src/i18n/langs/cn.js +259 -259
  150. package/src/i18n/langs/en.js +269 -269
  151. package/src/index.js +93 -93
  152. package/src/plugins.js +18 -18
  153. package/src/router/index.js +8 -26
  154. package/src/store/getters.js +15 -15
  155. package/src/store/index.js +19 -19
  156. package/src/store/modules/app.js +54 -54
  157. package/src/store/modules/tab-content.js +36 -36
  158. package/src/store/modules/user.js +285 -285
  159. package/src/utils/auth.js +61 -61
  160. package/src/utils/calculator/calculator-factory-wf.js +558 -558
  161. package/src/utils/calculator/calculator-factory.js +145 -145
  162. package/src/utils/calculator/calculator-util.js +166 -166
  163. package/src/utils/eventBus.js +2 -2
  164. package/src/utils/iconUtils.js +28 -28
  165. package/src/utils/index.js +102 -102
  166. package/src/utils/jump-page-utils.js +824 -824
  167. package/src/utils/menu.js +19 -19
  168. package/src/utils/permission.js +31 -31
  169. package/src/utils/permissionAuth.js +96 -96
  170. package/src/utils/range-selector.js +188 -188
  171. package/src/utils/request.js +269 -269
  172. package/src/utils/restful-interface-utils.js +57 -57
  173. package/src/utils/util.js +703 -703
  174. package/src/utils/validate.js +34 -34
  175. package/src/utils/watermark.js +108 -108
  176. package/src/utils/workflow-util.js +93 -93
  177. package/src/views/404.vue +248 -248
  178. package/src/views/dsc-component/Sidebar/Item.vue +84 -84
  179. package/src/views/dsc-component/Sidebar/Link.vue +38 -38
  180. package/src/views/dsc-component/Sidebar/SidebarItem.vue +198 -198
  181. package/src/views/dsc-component/Sidebar/index.vue +229 -229
  182. package/src/views/dsc-component/tabs/tab-content.vue +203 -203
  183. package/src/views/error-page/401.vue +106 -106
  184. package/src/views/error-page/404.vue +248 -248
  185. package/src/views/layout/EmptyLayout.vue +3 -3
  186. package/src/views/layout/Layout.vue +81 -81
  187. package/src/views/layout/NewLayout.vue +18 -18
  188. package/src/views/layout/components/AppMain.vue +39 -39
  189. package/src/views/layout/components/Breadcrumb/index.vue +158 -158
  190. package/src/views/layout/components/Menubar/Item.vue +79 -79
  191. package/src/views/layout/components/Menubar/Link.vue +38 -38
  192. package/src/views/layout/components/Menubar/index.vue +210 -210
  193. package/src/views/layout/components/Sidebar/Item.vue +53 -53
  194. package/src/views/layout/components/Sidebar/Link.vue +38 -38
  195. package/src/views/layout/components/Sidebar/index.vue +141 -141
  196. package/src/views/layout/components/iframe-page.vue +38 -38
  197. package/src/views/layout/components/index.js +4 -4
  198. package/src/views/layout/components/tabs/tab-content.vue +207 -207
  199. package/src/views/layout/mixin/ResizeHandler.js +41 -41
  200. package/src/views/layout/tab-content-iframe-index.vue +38 -38
  201. package/src/views/layout/tab-content-index.vue +93 -93
  202. package/src/views/login/authredirect.vue +10 -10
  203. package/src/views/login/index.vue +296 -296
  204. package/src/views/login/update-password.vue +243 -243
  205. package/src/views/redirect/index.vue +14 -14
  206. package/src/views/wf-history/tache-subprocess-history.vue +45 -45
@@ -1,377 +1,377 @@
1
- <template>
2
- <div>
3
- <template v-if="!disabled">
4
- <el-input
5
- ref="item"
6
- :readonly="true"
7
- :disabled="disabled"
8
- :model-value="value"
9
- :placeholder="$t('imatrixUIMessage.fileUpload')"
10
- >
11
- <template v-slot:append>
12
- <el-button
13
- v-if="!disabled"
14
- size="mini"
15
- :icon="ElIconUpload2"
16
- @click="openAnnexUpload"
17
- />
18
- <el-button size="mini" :icon="ElIconZoomIn" @click="preview" />
19
- </template>
20
- </el-input>
21
-
22
- <el-dialog
23
- :title="$t('imatrixUIMessage.tips')"
24
- v-model="annexUploadFlag"
25
- :append-to-body="true"
26
- :show-close="true"
27
- width="30%"
28
- >
29
- <el-upload
30
- v-if="annexUploadFlag"
31
- :action="defaultAction"
32
- :accept="fileSetObj.accept ? fileSetObj.accept : null"
33
- :on-success="uploadOnSuccess"
34
- :headers="headers"
35
- :before-upload="handleBeforeUpload"
36
- :with-credentials="true"
37
- name="file"
38
- >
39
- <el-button>{{ $t('imatrixUIMessage.upload') }}</el-button>
40
- </el-upload>
41
- </el-dialog>
42
- <el-dialog
43
- :append-to-body="true"
44
- :show-close="true"
45
- :title="$t('imatrixUIPublicModel.previewImage')"
46
- v-model="showPreviewSingleImage"
47
- @close="$emit('close')"
48
- >
49
- <template v-slot:title>
50
- <span
51
- >{{ $t('imatrixUIPublicModel.previewImage') }}
52
- <!-- <i v-if="downloadable" class="el-icon-download" style="padding-left:5px;cursor:pointer;color:#409EFF" @click="downloadFile()" /> -->
53
- <!-- <i v-if="deleteable" class="el-icon-delete" style="padding-left:5px;cursor:pointer;color:#F56C6C" @click="deleteFile()" /> -->
54
- </span>
55
- </template>
56
- <el-image
57
- v-if="previewImageInfo && previewImageInfo.isImg"
58
- :preview-src-list="[previewImageInfo.src]"
59
- :src="previewImageInfo.src"
60
- />
61
- </el-dialog>
62
- <el-dialog
63
- :append-to-body="true"
64
- :show-close="true"
65
- :title="$t('imatrixUIPublicModel.preview')"
66
- v-model="showPreviewMulti"
67
- width="30%"
68
- @close="$emit('close')"
69
- >
70
- <template v-slot:title>
71
- <span
72
- >{{ $t('imatrixUIPublicModel.preview') }}
73
- <!-- <i v-if="downloadable" class="el-icon-download" style="padding-left:5px;cursor:pointer;color:#409EFF" @click="downloadFile()" /> -->
74
- <!-- <i v-if="deleteable" class="el-icon-delete" style="padding-left:5px;cursor:pointer;color:#F56C6C" @click="deleteFile()" /> -->
75
- </span>
76
- </template>
77
- <el-table :show-header="false" :data="showFileList">
78
- <el-table-column width="300" prop="showName" />
79
- <el-table-column align="right">
80
- <template v-slot="scope">
81
- <el-tooltip
82
- :content="$t('imatrixUIPublicModel.preview')"
83
- class="item"
84
- effect="dark"
85
- placement="top"
86
- >
87
- <el-icon style="cursor: pointer" @click="previewSingle(scope.row)"><el-icon-view /></el-icon>
88
- </el-tooltip>
89
- </template>
90
- </el-table-column>
91
- <el-table-column v-if="!disabled">
92
- <template v-slot="scope">
93
- <el-tooltip
94
- :content="$t('imatrixUIPublicModel.delete')"
95
- class="item"
96
- effect="dark"
97
- placement="top"
98
- >
99
- <el-icon style="cursor: pointer" @click="deleteRow(scope.$index)"><el-icon-delete /></el-icon>
100
- </el-tooltip>
101
- </template>
102
- </el-table-column>
103
- </el-table>
104
- </el-dialog>
105
- </template>
106
- <template v-else>
107
- <fs-preview :label="value" :file-list="showFileList" />
108
- </template>
109
- </div>
110
- </template>
111
-
112
- <script>
113
- import {
114
- View as ElIconView,
115
- Delete as ElIconDelete,
116
- Upload as ElIconUpload2,
117
- ZoomIn as ElIconZoomIn,
118
- } from '@element-plus/icons-vue'
119
- import { $on, $off, $once, $emit } from '../../utils/gogocodeTransfer'
120
-
121
- import { getToken } from '../../../src/utils/auth'
122
- import { isImage } from '../../../src/utils/util'
123
- import {
124
- isPlateSys,
125
- getSystemFrontendUrl,
126
- } from '../../../src/utils/common-util'
127
- import * as Vue from 'vue'
128
- import FsPreview from '../../fs-preview/src/fs-preview.vue'
129
- export default {
130
- data() {
131
- const headers = { Authorization: getToken() }
132
- let defaultAction =
133
- window.$vueApp.config.globalProperties.baseURL + '/common/fs-upload'
134
- if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
135
- defaultAction =
136
- window.$vueApp.config.globalProperties.baseAPI +
137
- '/component/super-form/uploads'
138
- }
139
- return {
140
- deleteUuids: [],
141
- headers,
142
- defaultAction,
143
- annexUploadFlag: false,
144
- showPreviewSingleImage: false,
145
- showPreviewMulti: false,
146
- lastFileName: null,
147
- previewImageInfo: {},
148
- showFileList: this.fileList,
149
- ElIconUpload2,
150
- ElIconZoomIn,
151
- }
152
- },
153
- components: {
154
- FsPreview,
155
- ElIconView,
156
- ElIconDelete,
157
- },
158
- name: 'MultipartUploadForm',
159
- props: {
160
- value: {
161
- type: String,
162
- default: null,
163
- },
164
- // name ','分隔的名称 和serverPath
165
- fileInfo: {
166
- type: Object,
167
- default: () => {
168
- return {
169
- name: null,
170
- serverPath: null,
171
- }
172
- },
173
- },
174
- fileSetObj: {
175
- type: Object,
176
- default: () => {
177
- return { limitFileSize: 30, multiple: false, accept: null }
178
- },
179
- },
180
- customViewUrl: {
181
- type: Boolean,
182
- default: false,
183
- },
184
- disabled: {
185
- type: Boolean,
186
- default: false,
187
- },
188
- uploadAble: {
189
- type: Boolean,
190
- default: true,
191
- },
192
- deletaAble: {
193
- type: Boolean,
194
- default: true,
195
- },
196
- // 文件详细消息
197
- fileList: {
198
- type: Array,
199
- default: () => {
200
- return []
201
- },
202
- },
203
- },
204
- created() {},
205
- mounted() {
206
- this.getFileList()
207
- },
208
- methods: {
209
- openAnnexUpload() {
210
- this.annexUploadFlag = true
211
- },
212
- handleBeforeUpload(file) {
213
- let limitFileSize = this.fileSetObj.limitFileSize
214
- if (limitFileSize === undefined) {
215
- // 默认是30M
216
- limitFileSize = 30
217
- }
218
- if (file.size > limitFileSize * 1024 * 1024) {
219
- // 超过最大限制
220
- this.$message({
221
- type: 'warning',
222
- message: this.$t('imatrixUIMessage.exceedFileSize', {
223
- fileSize: limitFileSize,
224
- }),
225
- showClose: true,
226
- })
227
- // 返回false停止上传
228
- return false
229
- }
230
- },
231
- // 上传成功
232
- uploadOnSuccess(response, file) {
233
- if (response) {
234
- $emit(this, 'upload-success', {
235
- showName: response.name,
236
- serverPath: response.serverPath,
237
- })
238
- if (this.fileSetObj.multiple) {
239
- if (this.fileInfo.showName) {
240
- const nameArr = this.fileInfo.showName.split(',')
241
- const serverPathArr = this.fileInfo.serverPath.split(',')
242
- nameArr.push(response.name)
243
- serverPathArr.push(response.serverPath)
244
- this.fileInfo.showName = nameArr.join(',')
245
- this.fileInfo.serverPath = serverPathArr.join(',')
246
- } else {
247
- this.fileInfo.showName = response.name
248
- this.fileInfo.serverPath = response.serverPath
249
- }
250
- } else {
251
- this.fileInfo.showName = response.name
252
- this.fileInfo.serverPath = response.serverPath
253
- }
254
- }
255
- this.annexUploadFlag = false
256
- },
257
- preview() {
258
- this.getFileList()
259
- this.showPreviewMulti = true
260
- },
261
- previewSingle(file) {
262
- if (isImage(file.showName)) {
263
- this.previewImageInfo = file
264
- this.showPreviewSingleImage = true
265
- } else {
266
- this.previewDoc(file)
267
- }
268
- },
269
- getFileList() {
270
- if (!this.customViewUrl) {
271
- const nameArr = this.fileInfo.showName.split(',')
272
- const serverPath = this.fileInfo.serverPath.split(',')
273
- if (
274
- nameArr.length === 0 ||
275
- serverPath.length === 0 ||
276
- nameArr.length !== serverPath.length
277
- ) {
278
- return
279
- }
280
- const fileList = []
281
- const url =
282
- window.$vueApp.config.globalProperties.baseURL +
283
- '/common/super-form/downloads?jwt=' +
284
- getToken()
285
- for (let index = 0; index < nameArr.length; index++) {
286
- const tempName = nameArr[index]
287
- if (tempName && serverPath[index]) {
288
- const standardFile = {
289
- showName: tempName,
290
- serverPath: serverPath[index],
291
- src:
292
- url +
293
- '&showName=' +
294
- tempName +
295
- '&serverPath=' +
296
- serverPath[index],
297
- }
298
- if (isImage(tempName)) {
299
- standardFile.isImg = true
300
- } else {
301
- standardFile.isImg = false
302
- }
303
- fileList.push(standardFile)
304
- }
305
- }
306
- this.showFileList = fileList
307
- } else {
308
- this.showFileList = this.fileList
309
- }
310
- },
311
- previewDoc(file) {
312
- const token = getToken()
313
- let previewUrl =
314
- window.$vueApp.config.globalProperties.baseURL +
315
- '/common/fs-upload/preview?jwt=' +
316
- token
317
- if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
318
- previewUrl =
319
- window.$vueApp.config.globalProperties.baseAPI +
320
- '/component/fs-upload/preview?jwt=' +
321
- token
322
- }
323
- if (window.$vueApp.config.globalProperties.customPreviewUrl) {
324
- window.open(
325
- getSystemFrontendUrl(
326
- window.$vueApp.config.globalProperties.portalUrl
327
- ) +
328
- '/#/file-service/preview?serverPath=' +
329
- file.serverPath +
330
- '&showName=' +
331
- encodeURI(file.showName),
332
- file.showName
333
- )
334
- } else {
335
- window.open(
336
- previewUrl +
337
- '&showName=' +
338
- encodeURI(file.showName) +
339
- '&serverPath=' +
340
- file.serverPath
341
- )
342
- }
343
- },
344
- deleteRow(index) {
345
- const deleteFile = this.showFileList[index]
346
- // this.fileList.splice(index, 1)
347
- const nameArr = []
348
- const pathArr = []
349
- for (let i = 0; i < this.showFileList.length; i++) {
350
- if (i !== index) {
351
- nameArr.push(this.showFileList[i].showName)
352
- pathArr.push(this.showFileList[i].serverPath)
353
- }
354
- }
355
- this.fileInfo.showName = nameArr.join(',')
356
- this.fileInfo.serverPath = pathArr.join(',')
357
- this.getFileList()
358
- $emit(this, 'delete-success', {
359
- deleteFile: deleteFile,
360
- all: this.showFileList,
361
- })
362
- $emit(this, 'delete', this.showFileList, index)
363
- },
364
- },
365
- emits: [
366
- 'close',
367
- 'upload-success',
368
- 'delete-success',
369
- 'delete',
370
- 'update:value',
371
- ,
372
- 'close',
373
- ,
374
- 'update:value',
375
- ],
376
- }
377
- </script>
1
+ <template>
2
+ <div>
3
+ <template v-if="!disabled">
4
+ <el-input
5
+ ref="item"
6
+ :readonly="true"
7
+ :disabled="disabled"
8
+ :model-value="value"
9
+ :placeholder="$t('imatrixUIMessage.fileUpload')"
10
+ >
11
+ <template v-slot:append>
12
+ <el-button
13
+ v-if="!disabled"
14
+ size="mini"
15
+ :icon="ElIconUpload2"
16
+ @click="openAnnexUpload"
17
+ />
18
+ <el-button size="mini" :icon="ElIconZoomIn" @click="preview" />
19
+ </template>
20
+ </el-input>
21
+
22
+ <el-dialog
23
+ :title="$t('imatrixUIMessage.tips')"
24
+ v-model="annexUploadFlag"
25
+ :append-to-body="true"
26
+ :show-close="true"
27
+ width="30%"
28
+ >
29
+ <el-upload
30
+ v-if="annexUploadFlag"
31
+ :action="defaultAction"
32
+ :accept="fileSetObj.accept ? fileSetObj.accept : null"
33
+ :on-success="uploadOnSuccess"
34
+ :headers="headers"
35
+ :before-upload="handleBeforeUpload"
36
+ :with-credentials="true"
37
+ name="file"
38
+ >
39
+ <el-button>{{ $t('imatrixUIMessage.upload') }}</el-button>
40
+ </el-upload>
41
+ </el-dialog>
42
+ <el-dialog
43
+ :append-to-body="true"
44
+ :show-close="true"
45
+ :title="$t('imatrixUIPublicModel.previewImage')"
46
+ v-model="showPreviewSingleImage"
47
+ @close="$emit('close')"
48
+ >
49
+ <template v-slot:title>
50
+ <span
51
+ >{{ $t('imatrixUIPublicModel.previewImage') }}
52
+ <!-- <i v-if="downloadable" class="el-icon-download" style="padding-left:5px;cursor:pointer;color:#409EFF" @click="downloadFile()" /> -->
53
+ <!-- <i v-if="deleteable" class="el-icon-delete" style="padding-left:5px;cursor:pointer;color:#F56C6C" @click="deleteFile()" /> -->
54
+ </span>
55
+ </template>
56
+ <el-image
57
+ v-if="previewImageInfo && previewImageInfo.isImg"
58
+ :preview-src-list="[previewImageInfo.src]"
59
+ :src="previewImageInfo.src"
60
+ />
61
+ </el-dialog>
62
+ <el-dialog
63
+ :append-to-body="true"
64
+ :show-close="true"
65
+ :title="$t('imatrixUIPublicModel.preview')"
66
+ v-model="showPreviewMulti"
67
+ width="30%"
68
+ @close="$emit('close')"
69
+ >
70
+ <template v-slot:title>
71
+ <span
72
+ >{{ $t('imatrixUIPublicModel.preview') }}
73
+ <!-- <i v-if="downloadable" class="el-icon-download" style="padding-left:5px;cursor:pointer;color:#409EFF" @click="downloadFile()" /> -->
74
+ <!-- <i v-if="deleteable" class="el-icon-delete" style="padding-left:5px;cursor:pointer;color:#F56C6C" @click="deleteFile()" /> -->
75
+ </span>
76
+ </template>
77
+ <el-table :show-header="false" :data="showFileList">
78
+ <el-table-column width="300" prop="showName" />
79
+ <el-table-column align="right">
80
+ <template v-slot="scope">
81
+ <el-tooltip
82
+ :content="$t('imatrixUIPublicModel.preview')"
83
+ class="item"
84
+ effect="dark"
85
+ placement="top"
86
+ >
87
+ <el-icon style="cursor: pointer" @click="previewSingle(scope.row)"><el-icon-view /></el-icon>
88
+ </el-tooltip>
89
+ </template>
90
+ </el-table-column>
91
+ <el-table-column v-if="!disabled">
92
+ <template v-slot="scope">
93
+ <el-tooltip
94
+ :content="$t('imatrixUIPublicModel.delete')"
95
+ class="item"
96
+ effect="dark"
97
+ placement="top"
98
+ >
99
+ <el-icon style="cursor: pointer" @click="deleteRow(scope.$index)"><el-icon-delete /></el-icon>
100
+ </el-tooltip>
101
+ </template>
102
+ </el-table-column>
103
+ </el-table>
104
+ </el-dialog>
105
+ </template>
106
+ <template v-else>
107
+ <fs-preview :label="value" :file-list="showFileList" />
108
+ </template>
109
+ </div>
110
+ </template>
111
+
112
+ <script>
113
+ import {
114
+ View as ElIconView,
115
+ Delete as ElIconDelete,
116
+ Upload as ElIconUpload2,
117
+ ZoomIn as ElIconZoomIn,
118
+ } from '@element-plus/icons-vue'
119
+ import { $on, $off, $once, $emit } from '../../utils/gogocodeTransfer'
120
+
121
+ import { getToken } from '../../../src/utils/auth'
122
+ import { isImage } from '../../../src/utils/util'
123
+ import {
124
+ isPlateSys,
125
+ getSystemFrontendUrl,
126
+ } from '../../../src/utils/common-util'
127
+ import * as Vue from 'vue'
128
+ import FsPreview from '../../fs-preview/src/fs-preview.vue'
129
+ export default {
130
+ data() {
131
+ const headers = { Authorization: getToken() }
132
+ let defaultAction =
133
+ window.$vueApp.config.globalProperties.baseURL + '/common/fs-upload'
134
+ if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
135
+ defaultAction =
136
+ window.$vueApp.config.globalProperties.baseAPI +
137
+ '/component/super-form/uploads'
138
+ }
139
+ return {
140
+ deleteUuids: [],
141
+ headers,
142
+ defaultAction,
143
+ annexUploadFlag: false,
144
+ showPreviewSingleImage: false,
145
+ showPreviewMulti: false,
146
+ lastFileName: null,
147
+ previewImageInfo: {},
148
+ showFileList: this.fileList,
149
+ ElIconUpload2,
150
+ ElIconZoomIn,
151
+ }
152
+ },
153
+ components: {
154
+ FsPreview,
155
+ ElIconView,
156
+ ElIconDelete,
157
+ },
158
+ name: 'MultipartUploadForm',
159
+ props: {
160
+ value: {
161
+ type: String,
162
+ default: null,
163
+ },
164
+ // name ','分隔的名称 和serverPath
165
+ fileInfo: {
166
+ type: Object,
167
+ default: () => {
168
+ return {
169
+ name: null,
170
+ serverPath: null,
171
+ }
172
+ },
173
+ },
174
+ fileSetObj: {
175
+ type: Object,
176
+ default: () => {
177
+ return { limitFileSize: 30, multiple: false, accept: null }
178
+ },
179
+ },
180
+ customViewUrl: {
181
+ type: Boolean,
182
+ default: false,
183
+ },
184
+ disabled: {
185
+ type: Boolean,
186
+ default: false,
187
+ },
188
+ uploadAble: {
189
+ type: Boolean,
190
+ default: true,
191
+ },
192
+ deletaAble: {
193
+ type: Boolean,
194
+ default: true,
195
+ },
196
+ // 文件详细消息
197
+ fileList: {
198
+ type: Array,
199
+ default: () => {
200
+ return []
201
+ },
202
+ },
203
+ },
204
+ created() {},
205
+ mounted() {
206
+ this.getFileList()
207
+ },
208
+ methods: {
209
+ openAnnexUpload() {
210
+ this.annexUploadFlag = true
211
+ },
212
+ handleBeforeUpload(file) {
213
+ let limitFileSize = this.fileSetObj.limitFileSize
214
+ if (limitFileSize === undefined) {
215
+ // 默认是30M
216
+ limitFileSize = 30
217
+ }
218
+ if (file.size > limitFileSize * 1024 * 1024) {
219
+ // 超过最大限制
220
+ this.$message({
221
+ type: 'warning',
222
+ message: this.$t('imatrixUIMessage.exceedFileSize', {
223
+ fileSize: limitFileSize,
224
+ }),
225
+ showClose: true,
226
+ })
227
+ // 返回false停止上传
228
+ return false
229
+ }
230
+ },
231
+ // 上传成功
232
+ uploadOnSuccess(response, file) {
233
+ if (response) {
234
+ $emit(this, 'upload-success', {
235
+ showName: response.name,
236
+ serverPath: response.serverPath,
237
+ })
238
+ if (this.fileSetObj.multiple) {
239
+ if (this.fileInfo.showName) {
240
+ const nameArr = this.fileInfo.showName.split(',')
241
+ const serverPathArr = this.fileInfo.serverPath.split(',')
242
+ nameArr.push(response.name)
243
+ serverPathArr.push(response.serverPath)
244
+ this.fileInfo.showName = nameArr.join(',')
245
+ this.fileInfo.serverPath = serverPathArr.join(',')
246
+ } else {
247
+ this.fileInfo.showName = response.name
248
+ this.fileInfo.serverPath = response.serverPath
249
+ }
250
+ } else {
251
+ this.fileInfo.showName = response.name
252
+ this.fileInfo.serverPath = response.serverPath
253
+ }
254
+ }
255
+ this.annexUploadFlag = false
256
+ },
257
+ preview() {
258
+ this.getFileList()
259
+ this.showPreviewMulti = true
260
+ },
261
+ previewSingle(file) {
262
+ if (isImage(file.showName)) {
263
+ this.previewImageInfo = file
264
+ this.showPreviewSingleImage = true
265
+ } else {
266
+ this.previewDoc(file)
267
+ }
268
+ },
269
+ getFileList() {
270
+ if (!this.customViewUrl) {
271
+ const nameArr = this.fileInfo.showName.split(',')
272
+ const serverPath = this.fileInfo.serverPath.split(',')
273
+ if (
274
+ nameArr.length === 0 ||
275
+ serverPath.length === 0 ||
276
+ nameArr.length !== serverPath.length
277
+ ) {
278
+ return
279
+ }
280
+ const fileList = []
281
+ const url =
282
+ window.$vueApp.config.globalProperties.baseURL +
283
+ '/common/super-form/downloads?jwt=' +
284
+ getToken()
285
+ for (let index = 0; index < nameArr.length; index++) {
286
+ const tempName = nameArr[index]
287
+ if (tempName && serverPath[index]) {
288
+ const standardFile = {
289
+ showName: tempName,
290
+ serverPath: serverPath[index],
291
+ src:
292
+ url +
293
+ '&showName=' +
294
+ tempName +
295
+ '&serverPath=' +
296
+ serverPath[index],
297
+ }
298
+ if (isImage(tempName)) {
299
+ standardFile.isImg = true
300
+ } else {
301
+ standardFile.isImg = false
302
+ }
303
+ fileList.push(standardFile)
304
+ }
305
+ }
306
+ this.showFileList = fileList
307
+ } else {
308
+ this.showFileList = this.fileList
309
+ }
310
+ },
311
+ previewDoc(file) {
312
+ const token = getToken()
313
+ let previewUrl =
314
+ window.$vueApp.config.globalProperties.baseURL +
315
+ '/common/fs-upload/preview?jwt=' +
316
+ token
317
+ if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
318
+ previewUrl =
319
+ window.$vueApp.config.globalProperties.baseAPI +
320
+ '/component/fs-upload/preview?jwt=' +
321
+ token
322
+ }
323
+ if (window.$vueApp.config.globalProperties.customPreviewUrl) {
324
+ window.open(
325
+ getSystemFrontendUrl(
326
+ window.$vueApp.config.globalProperties.portalUrl
327
+ ) +
328
+ '/#/file-service/preview?serverPath=' +
329
+ file.serverPath +
330
+ '&showName=' +
331
+ encodeURI(file.showName),
332
+ file.showName
333
+ )
334
+ } else {
335
+ window.open(
336
+ previewUrl +
337
+ '&showName=' +
338
+ encodeURI(file.showName) +
339
+ '&serverPath=' +
340
+ file.serverPath
341
+ )
342
+ }
343
+ },
344
+ deleteRow(index) {
345
+ const deleteFile = this.showFileList[index]
346
+ // this.fileList.splice(index, 1)
347
+ const nameArr = []
348
+ const pathArr = []
349
+ for (let i = 0; i < this.showFileList.length; i++) {
350
+ if (i !== index) {
351
+ nameArr.push(this.showFileList[i].showName)
352
+ pathArr.push(this.showFileList[i].serverPath)
353
+ }
354
+ }
355
+ this.fileInfo.showName = nameArr.join(',')
356
+ this.fileInfo.serverPath = pathArr.join(',')
357
+ this.getFileList()
358
+ $emit(this, 'delete-success', {
359
+ deleteFile: deleteFile,
360
+ all: this.showFileList,
361
+ })
362
+ $emit(this, 'delete', this.showFileList, index)
363
+ },
364
+ },
365
+ emits: [
366
+ 'close',
367
+ 'upload-success',
368
+ 'delete-success',
369
+ 'delete',
370
+ 'update:value',
371
+ ,
372
+ 'close',
373
+ ,
374
+ 'update:value',
375
+ ],
376
+ }
377
+ </script>