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,372 +1,372 @@
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
108
- :label="value"
109
- :entity="row"
110
- :is-sql="isSql"
111
- :file-set-obj="fileSetObj"
112
- />
113
- </template>
114
- </div>
115
- </template>
116
-
117
- <script>
118
- import {
119
- View as ElIconView,
120
- Delete as ElIconDelete,
121
- Upload as ElIconUpload2,
122
- ZoomIn as ElIconZoomIn,
123
- } from '@element-plus/icons-vue'
124
- import { $on, $off, $once, $emit } from '../../utils/gogocodeTransfer'
125
-
126
- import { getToken } from '../../../src/utils/auth'
127
- import { isImage } from '../../../src/utils/util'
128
- import {
129
- isPlateSys,
130
- getSystemFrontendUrl,
131
- } from '../../../src/utils/common-util'
132
- import * as Vue from 'vue'
133
- import FsPreview from '../../fs-preview/src/fs-preview.vue'
134
- import { packageFile } from '../../super-grid/src/utils'
135
- export default {
136
- data() {
137
- const headers = { Authorization: getToken() }
138
- let defaultAction =
139
- window.$vueApp.config.globalProperties.baseURL + '/common/fs-upload'
140
- if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
141
- defaultAction =
142
- window.$vueApp.config.globalProperties.baseAPI +
143
- '/component/super-form/uploads'
144
- }
145
- return {
146
- deleteUuids: [],
147
- headers,
148
- defaultAction,
149
- annexUploadFlag: false,
150
- showPreviewSingleImage: false,
151
- showPreviewMulti: false,
152
- lastFileName: null,
153
- previewImageInfo: {},
154
- showFileList: this.fileList,
155
- ElIconUpload2,
156
- ElIconZoomIn,
157
- }
158
- },
159
- components: {
160
- FsPreview,
161
- ElIconView,
162
- ElIconDelete,
163
- },
164
- name: 'FsUploadList',
165
- props: {
166
- value: {
167
- type: String,
168
- default: null,
169
- },
170
- // name ','分隔的名称 和serverPath
171
- fileInfo: {
172
- type: Object,
173
- default: () => {
174
- return {
175
- name: null,
176
- serverPath: null,
177
- }
178
- },
179
- },
180
- fileSetObj: {
181
- type: Object,
182
- default: () => {
183
- return { limitFileSize: 30, multiple: false, accept: null }
184
- },
185
- },
186
- customViewUrl: {
187
- type: Boolean,
188
- default: false,
189
- },
190
- disabled: {
191
- type: Boolean,
192
- default: false,
193
- },
194
- uploadAble: {
195
- type: Boolean,
196
- default: true,
197
- },
198
- deletaAble: {
199
- type: Boolean,
200
- default: true,
201
- },
202
- // 文件详细消息
203
- fileList: {
204
- type: Array,
205
- default: () => {
206
- return []
207
- },
208
- },
209
- row: {
210
- type: Object,
211
- default: () => {
212
- return {}
213
- },
214
- },
215
- isSql: {
216
- type: Boolean,
217
- default: false,
218
- },
219
- },
220
- created() {},
221
- mounted() {},
222
- methods: {
223
- openAnnexUpload() {
224
- this.annexUploadFlag = true
225
- },
226
- handleBeforeUpload(file) {
227
- let limitFileSize = this.fileSetObj.limitFileSize
228
- if (limitFileSize === undefined) {
229
- // 默认是30M
230
- limitFileSize = 30
231
- }
232
- if (file.size > limitFileSize * 1024 * 1024) {
233
- // 超过最大限制
234
- this.$message({
235
- type: 'warning',
236
- message: this.$t('imatrixUIMessage.exceedFileSize', {
237
- fileSize: limitFileSize,
238
- }),
239
- showClose: true,
240
- })
241
- // 返回false停止上传
242
- return false
243
- }
244
- },
245
- // 上传成功
246
- uploadOnSuccess(response, file) {
247
- if (response) {
248
- $emit(this, 'upload-success', {
249
- showName: response.name,
250
- serverPath: response.serverPath,
251
- })
252
- if (this.fileSetObj.multiple) {
253
- if (this.fileInfo.showName) {
254
- this.fileInfo.showName =
255
- this.fileInfo.showName + ',' + response.name
256
- this.fileInfo.serverPath =
257
- this.fileInfo.serverPath + ',' + response.serverPath
258
- } else {
259
- this.fileInfo.showName = response.name
260
- this.fileInfo.serverPath = response.serverPath
261
- }
262
- } else {
263
- this.fileInfo.showName = response.name
264
- this.fileInfo.serverPath = response.serverPath
265
- }
266
- }
267
- this.annexUploadFlag = false
268
- },
269
- preview() {
270
- this.fileList.length = 0
271
- const uuids = this.fileInfo.serverPath.split(',')
272
- this.$http
273
- .post(
274
- window.$vueApp.config.globalProperties.baseURL +
275
- '/common/fs-upload/search-file-names',
276
- uuids
277
- )
278
- .then((result) => {
279
- uuids.forEach((uuid) => {
280
- this.fileList.push({ showName: result[uuid], serverPath: uuid })
281
- })
282
- this.showFileList = this.fileList
283
- this.showPreviewMulti = true
284
- })
285
- },
286
- previewSingle(fileInfo) {
287
- fileInfo = packageFile(fileInfo.showName, fileInfo.serverPath)
288
- if (isImage(fileInfo.showName)) {
289
- this.previewImageInfo = fileInfo
290
- this.showPreviewSingleImage = true
291
- } else {
292
- this.previewDoc(fileInfo)
293
- }
294
- },
295
- previewDoc(file) {
296
- const showName = file.showName
297
- .replace('#', '~~')
298
- .replace('?', '~$')
299
- .replace('&', '$')
300
- const token = getToken()
301
- let previewUrl =
302
- window.$vueApp.config.globalProperties.baseURL +
303
- '/common/fs-upload/preview?jwt=' +
304
- token
305
- if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
306
- previewUrl =
307
- window.$vueApp.config.globalProperties.baseAPI +
308
- '/component/fs-upload/preview?jwt=' +
309
- token
310
- }
311
- if (window.$vueApp.config.globalProperties.customPreviewUrl) {
312
- window.open(
313
- getSystemFrontendUrl(
314
- window.$vueApp.config.globalProperties.portalUrl
315
- ) +
316
- '/#/file-service/preview?serverPath=' +
317
- file.serverPath +
318
- '&showName=' +
319
- encodeURI(showName),
320
- file.showName
321
- )
322
- } else {
323
- window.open(
324
- previewUrl +
325
- '&showName=' +
326
- encodeURI(showName) +
327
- '&serverPath=' +
328
- file.serverPath
329
- )
330
- }
331
- },
332
- deleteRow(index) {
333
- const deleteFile = this.showFileList[index]
334
- // this.fileList.splice(index, 1)
335
- const nameArr = []
336
- const pathArr = []
337
- for (let i = 0; i < this.showFileList.length; i++) {
338
- if (i !== index) {
339
- nameArr.push(this.showFileList[i].showName)
340
- pathArr.push(this.showFileList[i].serverPath)
341
- }
342
- }
343
- if (nameArr.length === 0) {
344
- this.fileInfo.showName = null
345
- this.fileInfo.serverPath = null
346
- this.showFileList = []
347
- $emit(this, 'delete-success', { deleteFile: deleteFile, all: [] })
348
- $emit(this, 'delete', [], index)
349
- } else {
350
- this.fileInfo.showName = nameArr.join(',')
351
- this.fileInfo.serverPath = pathArr.join(',')
352
- $emit(this, 'delete-success', {
353
- deleteFile: deleteFile,
354
- all: this.showFileList,
355
- })
356
- $emit(this, 'delete', this.showFileList, index)
357
- }
358
- },
359
- },
360
- emits: [
361
- 'close',
362
- 'upload-success',
363
- 'delete-success',
364
- 'delete',
365
- 'update:value',
366
- ,
367
- 'close',
368
- ,
369
- 'update:value',
370
- ],
371
- }
372
- </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
108
+ :label="value"
109
+ :entity="row"
110
+ :is-sql="isSql"
111
+ :file-set-obj="fileSetObj"
112
+ />
113
+ </template>
114
+ </div>
115
+ </template>
116
+
117
+ <script>
118
+ import {
119
+ View as ElIconView,
120
+ Delete as ElIconDelete,
121
+ Upload as ElIconUpload2,
122
+ ZoomIn as ElIconZoomIn,
123
+ } from '@element-plus/icons-vue'
124
+ import { $on, $off, $once, $emit } from '../../utils/gogocodeTransfer'
125
+
126
+ import { getToken } from '../../../src/utils/auth'
127
+ import { isImage } from '../../../src/utils/util'
128
+ import {
129
+ isPlateSys,
130
+ getSystemFrontendUrl,
131
+ } from '../../../src/utils/common-util'
132
+ import * as Vue from 'vue'
133
+ import FsPreview from '../../fs-preview/src/fs-preview.vue'
134
+ import { packageFile } from '../../super-grid/src/utils'
135
+ export default {
136
+ data() {
137
+ const headers = { Authorization: getToken() }
138
+ let defaultAction =
139
+ window.$vueApp.config.globalProperties.baseURL + '/common/fs-upload'
140
+ if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
141
+ defaultAction =
142
+ window.$vueApp.config.globalProperties.baseAPI +
143
+ '/component/super-form/uploads'
144
+ }
145
+ return {
146
+ deleteUuids: [],
147
+ headers,
148
+ defaultAction,
149
+ annexUploadFlag: false,
150
+ showPreviewSingleImage: false,
151
+ showPreviewMulti: false,
152
+ lastFileName: null,
153
+ previewImageInfo: {},
154
+ showFileList: this.fileList,
155
+ ElIconUpload2,
156
+ ElIconZoomIn,
157
+ }
158
+ },
159
+ components: {
160
+ FsPreview,
161
+ ElIconView,
162
+ ElIconDelete,
163
+ },
164
+ name: 'FsUploadList',
165
+ props: {
166
+ value: {
167
+ type: String,
168
+ default: null,
169
+ },
170
+ // name ','分隔的名称 和serverPath
171
+ fileInfo: {
172
+ type: Object,
173
+ default: () => {
174
+ return {
175
+ name: null,
176
+ serverPath: null,
177
+ }
178
+ },
179
+ },
180
+ fileSetObj: {
181
+ type: Object,
182
+ default: () => {
183
+ return { limitFileSize: 30, multiple: false, accept: null }
184
+ },
185
+ },
186
+ customViewUrl: {
187
+ type: Boolean,
188
+ default: false,
189
+ },
190
+ disabled: {
191
+ type: Boolean,
192
+ default: false,
193
+ },
194
+ uploadAble: {
195
+ type: Boolean,
196
+ default: true,
197
+ },
198
+ deletaAble: {
199
+ type: Boolean,
200
+ default: true,
201
+ },
202
+ // 文件详细消息
203
+ fileList: {
204
+ type: Array,
205
+ default: () => {
206
+ return []
207
+ },
208
+ },
209
+ row: {
210
+ type: Object,
211
+ default: () => {
212
+ return {}
213
+ },
214
+ },
215
+ isSql: {
216
+ type: Boolean,
217
+ default: false,
218
+ },
219
+ },
220
+ created() {},
221
+ mounted() {},
222
+ methods: {
223
+ openAnnexUpload() {
224
+ this.annexUploadFlag = true
225
+ },
226
+ handleBeforeUpload(file) {
227
+ let limitFileSize = this.fileSetObj.limitFileSize
228
+ if (limitFileSize === undefined) {
229
+ // 默认是30M
230
+ limitFileSize = 30
231
+ }
232
+ if (file.size > limitFileSize * 1024 * 1024) {
233
+ // 超过最大限制
234
+ this.$message({
235
+ type: 'warning',
236
+ message: this.$t('imatrixUIMessage.exceedFileSize', {
237
+ fileSize: limitFileSize,
238
+ }),
239
+ showClose: true,
240
+ })
241
+ // 返回false停止上传
242
+ return false
243
+ }
244
+ },
245
+ // 上传成功
246
+ uploadOnSuccess(response, file) {
247
+ if (response) {
248
+ $emit(this, 'upload-success', {
249
+ showName: response.name,
250
+ serverPath: response.serverPath,
251
+ })
252
+ if (this.fileSetObj.multiple) {
253
+ if (this.fileInfo.showName) {
254
+ this.fileInfo.showName =
255
+ this.fileInfo.showName + ',' + response.name
256
+ this.fileInfo.serverPath =
257
+ this.fileInfo.serverPath + ',' + response.serverPath
258
+ } else {
259
+ this.fileInfo.showName = response.name
260
+ this.fileInfo.serverPath = response.serverPath
261
+ }
262
+ } else {
263
+ this.fileInfo.showName = response.name
264
+ this.fileInfo.serverPath = response.serverPath
265
+ }
266
+ }
267
+ this.annexUploadFlag = false
268
+ },
269
+ preview() {
270
+ this.fileList.length = 0
271
+ const uuids = this.fileInfo.serverPath.split(',')
272
+ this.$http
273
+ .post(
274
+ window.$vueApp.config.globalProperties.baseURL +
275
+ '/common/fs-upload/search-file-names',
276
+ uuids
277
+ )
278
+ .then((result) => {
279
+ uuids.forEach((uuid) => {
280
+ this.fileList.push({ showName: result[uuid], serverPath: uuid })
281
+ })
282
+ this.showFileList = this.fileList
283
+ this.showPreviewMulti = true
284
+ })
285
+ },
286
+ previewSingle(fileInfo) {
287
+ fileInfo = packageFile(fileInfo.showName, fileInfo.serverPath)
288
+ if (isImage(fileInfo.showName)) {
289
+ this.previewImageInfo = fileInfo
290
+ this.showPreviewSingleImage = true
291
+ } else {
292
+ this.previewDoc(fileInfo)
293
+ }
294
+ },
295
+ previewDoc(file) {
296
+ const showName = file.showName
297
+ .replace('#', '~~')
298
+ .replace('?', '~$')
299
+ .replace('&', '$')
300
+ const token = getToken()
301
+ let previewUrl =
302
+ window.$vueApp.config.globalProperties.baseURL +
303
+ '/common/fs-upload/preview?jwt=' +
304
+ token
305
+ if (isPlateSys(window.$vueApp.config.globalProperties.systemCode)) {
306
+ previewUrl =
307
+ window.$vueApp.config.globalProperties.baseAPI +
308
+ '/component/fs-upload/preview?jwt=' +
309
+ token
310
+ }
311
+ if (window.$vueApp.config.globalProperties.customPreviewUrl) {
312
+ window.open(
313
+ getSystemFrontendUrl(
314
+ window.$vueApp.config.globalProperties.portalUrl
315
+ ) +
316
+ '/#/file-service/preview?serverPath=' +
317
+ file.serverPath +
318
+ '&showName=' +
319
+ encodeURI(showName),
320
+ file.showName
321
+ )
322
+ } else {
323
+ window.open(
324
+ previewUrl +
325
+ '&showName=' +
326
+ encodeURI(showName) +
327
+ '&serverPath=' +
328
+ file.serverPath
329
+ )
330
+ }
331
+ },
332
+ deleteRow(index) {
333
+ const deleteFile = this.showFileList[index]
334
+ // this.fileList.splice(index, 1)
335
+ const nameArr = []
336
+ const pathArr = []
337
+ for (let i = 0; i < this.showFileList.length; i++) {
338
+ if (i !== index) {
339
+ nameArr.push(this.showFileList[i].showName)
340
+ pathArr.push(this.showFileList[i].serverPath)
341
+ }
342
+ }
343
+ if (nameArr.length === 0) {
344
+ this.fileInfo.showName = null
345
+ this.fileInfo.serverPath = null
346
+ this.showFileList = []
347
+ $emit(this, 'delete-success', { deleteFile: deleteFile, all: [] })
348
+ $emit(this, 'delete', [], index)
349
+ } else {
350
+ this.fileInfo.showName = nameArr.join(',')
351
+ this.fileInfo.serverPath = pathArr.join(',')
352
+ $emit(this, 'delete-success', {
353
+ deleteFile: deleteFile,
354
+ all: this.showFileList,
355
+ })
356
+ $emit(this, 'delete', this.showFileList, index)
357
+ }
358
+ },
359
+ },
360
+ emits: [
361
+ 'close',
362
+ 'upload-success',
363
+ 'delete-success',
364
+ 'delete',
365
+ 'update:value',
366
+ ,
367
+ 'close',
368
+ ,
369
+ 'update:value',
370
+ ],
371
+ }
372
+ </script>