icve-urc 1.0.0

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 (57) hide show
  1. package/README.en.md +36 -0
  2. package/README.md +24 -0
  3. package/dist/demo.html +10 -0
  4. package/dist/icve-urc.common.js +114103 -0
  5. package/dist/icve-urc.common.js.map +1 -0
  6. package/dist/icve-urc.css +1 -0
  7. package/dist/icve-urc.umd.js +114113 -0
  8. package/dist/icve-urc.umd.js.map +1 -0
  9. package/dist/icve-urc.umd.min.js +75 -0
  10. package/dist/icve-urc.umd.min.js.map +1 -0
  11. package/package.json +33 -0
  12. package/src/App copy.vue +116 -0
  13. package/src/App.vue +125 -0
  14. package/src/api/resourceManagement/index.js +33 -0
  15. package/src/assets/img/error.png +0 -0
  16. package/src/assets/img/file.png +0 -0
  17. package/src/assets/img/icon-pic.png +0 -0
  18. package/src/assets/img/icon_audio.png +0 -0
  19. package/src/assets/img/icon_excel.png +0 -0
  20. package/src/assets/img/icon_other.png +0 -0
  21. package/src/assets/img/icon_pdf.png +0 -0
  22. package/src/assets/img/icon_ppt.png +0 -0
  23. package/src/assets/img/icon_txt_s.png +0 -0
  24. package/src/assets/img/icon_vedio.png +0 -0
  25. package/src/assets/img/icon_word.png +0 -0
  26. package/src/assets/img/icon_zip.png +0 -0
  27. package/src/assets/img/loading.gif +0 -0
  28. package/src/assets/logo.png +0 -0
  29. package/src/assets/styles/btn.scss +99 -0
  30. package/src/assets/styles/element-ui.scss +92 -0
  31. package/src/assets/styles/element-variables.scss +31 -0
  32. package/src/assets/styles/icon/demo.css +539 -0
  33. package/src/assets/styles/icon/demo_index.html +556 -0
  34. package/src/assets/styles/icon/iconfont.css +79 -0
  35. package/src/assets/styles/icon/iconfont.js +1 -0
  36. package/src/assets/styles/icon/iconfont.json +121 -0
  37. package/src/assets/styles/icon/iconfont.ttf +0 -0
  38. package/src/assets/styles/icon/iconfont.woff +0 -0
  39. package/src/assets/styles/icon/iconfont.woff2 +0 -0
  40. package/src/assets/styles/index.scss +252 -0
  41. package/src/assets/styles/mixin.scss +66 -0
  42. package/src/assets/styles/ruoyi.scss +273 -0
  43. package/src/assets/styles/sidebar.scss +249 -0
  44. package/src/assets/styles/transition.scss +53 -0
  45. package/src/assets/styles/variables.scss +54 -0
  46. package/src/components/AliPlayer.vue +158 -0
  47. package/src/components/Pagination/index.vue +119 -0
  48. package/src/components/fileImport.vue +466 -0
  49. package/src/components/filePreview.vue +670 -0
  50. package/src/components/fileUpload.vue +752 -0
  51. package/src/components/treeCompontent.vue +277 -0
  52. package/src/main.js +26 -0
  53. package/src/router/index.js +22 -0
  54. package/src/utils/auth.js +15 -0
  55. package/src/utils/errorCode.js +6 -0
  56. package/src/utils/request.js +63 -0
  57. package/src/utils/scroll-to.js +58 -0
@@ -0,0 +1,466 @@
1
+ <template>
2
+ <div ref="box" class="box">
3
+ <!-- 文件上传输入框 -->
4
+ <!-- <input type="file" ref="fileInput" @change="onFileChange">-->
5
+ <div class="main">
6
+ <!-- 左侧树形菜单 -->
7
+ <div class="left">
8
+ <treeCompontent @handleNodeClick="handleNodeClick" :userId="userId" :productId="productId" />
9
+ </div>
10
+ <!-- 可拖拽分隔栏 -->
11
+ <div class="resize" title="收缩侧边栏">
12
+ <!-- ⋮ -->
13
+ </div>
14
+ <!-- 主内容区域 -->
15
+ <div class="mid">
16
+ <!-- 搜索表单 -->
17
+ <el-row>
18
+ <el-col :span="24" class="form">
19
+ <!-- 文件类型选择器 -->
20
+ <el-select v-model="test.code" collapse-tags multiple style="width: 200px; margin-right: 10px"
21
+ v-bind="$attrs" v-on="$listeners">
22
+ <!-- 全选复选框 -->
23
+ <el-checkbox v-model="check" :indeterminate="test.code.length !== options.length" class="m-l-20"
24
+ style="margin-left: 20px" @change="selectAll">
25
+ 全部
26
+ </el-checkbox>
27
+ <!-- 文件类型选项 -->
28
+ <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
29
+ </el-select>
30
+ <!-- 资源名称搜索框 -->
31
+ <el-input v-model="queryParams.fileName" placeholder="请输入资源名称"
32
+ style="width: 200px; margin-right: 10px"></el-input>
33
+ <!-- 查询按钮 -->
34
+ <el-button @click="onSubmit" class="addBlue" size="mini">查询</el-button>
35
+ </el-col>
36
+ </el-row>
37
+ <!-- 文件列表表格 -->
38
+ <el-table :data="tableData" style="width: 100%" tooltip-effect="dark" @selection-change="handleSelectionChange"
39
+ :row-key="(row) => {
40
+ return row.id
41
+ }
42
+ " ref="multipleTable">
43
+ <!-- 选择列 -->
44
+ <el-table-column align="center" type="selection" :reserve-selection="true" width="55">
45
+ </el-table-column>
46
+ <!-- 序号列 -->
47
+ <el-table-column align="center" label="序号" type="index" width="100">
48
+ <template slot-scope="scope">
49
+ <!-- 计算当前行在所有数据中的索引 -->
50
+ {{
51
+ (queryParams.pageNum - 1) * queryParams.pageSize +
52
+ scope.$index +
53
+ 1
54
+ }}
55
+ </template>
56
+ </el-table-column>
57
+ <!-- 文件名列 -->
58
+ <el-table-column align="center" label="文件名" prop="name" width="200px">
59
+ <template slot-scope="scope">
60
+ <div class="wj">
61
+ <!-- 图片文件图标 -->
62
+ <img v-if="scope.row.fileType == 1" alt="" src="../assets/img/icon-pic.png" />
63
+ <!-- PPT文件图标 -->
64
+ <img v-if="scope.row.fileType == 2" alt="" src="../assets/img/icon_ppt.png" />
65
+ <!-- 音频文件图标 -->
66
+ <img v-if="scope.row.fileType == 3" alt="" src="../assets/img/icon_audio.png" />
67
+ <!-- 视频文件图标 -->
68
+ <img v-if="scope.row.fileType == 4" alt="" src="../assets/img/icon_vedio.png" />
69
+ <!-- Word文件图标 -->
70
+ <img v-if="scope.row.fileType == 5" alt="" src="../assets/img/icon_word.png" />
71
+ <!-- PDF文件图标 -->
72
+ <img v-if="scope.row.fileType == 6" alt="" src="../assets/img/icon_pdf.png" />
73
+ <!-- Excel文件图标 -->
74
+ <img v-if="scope.row.fileType == 7" alt="" src="../assets/img/icon_excel.png" />
75
+ <!-- TXT文件图标 -->
76
+ <img v-if="scope.row.fileType == 8" alt="" src="../assets/img/icon_txt_s.png" />
77
+ <!-- 压缩包文件图标 -->
78
+ <img v-if="scope.row.fileType == 9" alt="" src="../assets/img/icon_zip.png" />
79
+ <!-- 其他文件图标 -->
80
+ <img v-if="scope.row.fileType == 10" alt="" src="../assets/img/icon_other.png" />
81
+ <!-- 文件名称提示 -->
82
+ <el-tooltip :content="scope.row.fileName" :open-delay="1000" class="item" effect="light"
83
+ placement="bottom">
84
+ <a class="gl" style="cursor: pointer">{{ scope.row.fileName }}</a>
85
+ </el-tooltip>
86
+ </div>
87
+ </template>
88
+ </el-table-column>
89
+ <!-- 媒体类型列 -->
90
+ <el-table-column align="center" label="媒体类型" prop="province">
91
+ <template slot-scope="scope">
92
+ <span>{{
93
+ scope.row.fileTypeShow ? scope.row.fileTypeShow : '文件夹'
94
+ }}</span>
95
+ </template>
96
+ </el-table-column>
97
+ <!-- 文件大小列 -->
98
+ <el-table-column align="center" label="文件大小">
99
+ <template slot-scope="{ row }">
100
+ {{ row.fileSizeShow || '--' }}
101
+ </template>
102
+ </el-table-column>
103
+ </el-table>
104
+ <!-- 分页组件 -->
105
+ <Pagination :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNum" :total="total"
106
+ @pagination="getList(false)" />
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </template>
111
+ <script>
112
+ // 导入API方法
113
+ // 导入树形组件
114
+ import { myResourceList } from '@/api/resourceManagement'
115
+ import treeCompontent from './treeCompontent.vue'
116
+ export default {
117
+ name: 'FileImport',
118
+ props: {
119
+ userId: {
120
+ type: String,
121
+ default: '',
122
+ },
123
+ productId: {
124
+ type: String,
125
+ default: '',
126
+ },
127
+ },
128
+ components: {
129
+ treeCompontent,
130
+ },
131
+ data() {
132
+ return {
133
+ // 查询参数
134
+ queryParams: {
135
+ pageNum: 1,
136
+ pageSize: 10,
137
+ parentId: 0,
138
+ region: '',
139
+ isDir: 0,
140
+ userId: this.userId,
141
+ productId: this.productId,
142
+ },
143
+ // 分页参数
144
+ page: {
145
+ pageNum: 1,
146
+ pageSize: 10,
147
+ },
148
+ // 表格数据
149
+ tableData: [],
150
+ // 总数
151
+ total: 0,
152
+ // 选中ID数组
153
+ ids: [],
154
+ // 是否多选
155
+ multiple: true,
156
+ // 文件类型选择
157
+ test: {
158
+ code: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
159
+ },
160
+ // 文件类型选项
161
+ options: [
162
+ { value: 1, label: '图片' },
163
+ { value: 2, label: 'PPT' },
164
+ { value: 3, label: '音频' },
165
+ { value: 4, label: '视频' },
166
+ { value: 5, label: 'Word' },
167
+ { value: 6, label: 'Pdf' },
168
+ { value: 7, label: 'Excel' },
169
+ { value: 8, label: 'txt' },
170
+ { value: 9, label: '压缩包' },
171
+ { value: 10, label: '其他' },
172
+ ],
173
+ }
174
+ },
175
+ mounted() {
176
+ // 初始化拖拽功能
177
+ this.$nextTick(() => {
178
+ this.dragControllerDiv()
179
+ })
180
+ // 隐藏滚动条
181
+ document.querySelector('html').style.overflowY = 'hidden'
182
+ },
183
+ beforeDestroy() {
184
+ // 恢复滚动条
185
+ document.querySelector('html').style.overflowY = 'auto'
186
+ },
187
+ computed: {
188
+ // 全选状态计算属性
189
+ check: {
190
+ get() {
191
+ if (this.test.code.length === this.options.length) {
192
+ return true
193
+ }
194
+ return false
195
+ },
196
+ set() { },
197
+ },
198
+ },
199
+ methods: {
200
+ // 拖拽控制器
201
+ dragControllerDiv() {
202
+ var resize = document.getElementsByClassName('resize')
203
+ var left = document.getElementsByClassName('left')
204
+ var mid = document.getElementsByClassName('mid')
205
+ var box = document.getElementsByClassName('box')
206
+ for (let i = 0; i < resize.length; i++) {
207
+ // 鼠标按下事件
208
+ resize[i].onmousedown = function (e) {
209
+ //颜色改变提醒
210
+ // resize[i].style.background = "#818181";
211
+ var startX = e.clientX
212
+ resize[i].left = resize[i].offsetLeft
213
+ // 鼠标拖动事件
214
+ document.onmousemove = function (e) {
215
+ var endX = e.clientX
216
+ var moveLen = resize[i].left + (endX - startX) // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
217
+ var maxT = box[i].clientWidth - resize[i].offsetWidth // 容器宽度 - 左边区域的宽度 = 右边区域的宽度
218
+
219
+ if (moveLen < 200) moveLen = 200 // 左边区域的最小宽度为32px
220
+ if (moveLen > 400) moveLen = 400 //右边区域最小宽度为150px
221
+
222
+ resize[i].style.left = moveLen // 设置左侧区域的宽度
223
+
224
+ for (let j = 0; j < left.length; j++) {
225
+ left[j].style.width = moveLen + 'px'
226
+ mid[j].style.width = box[i].clientWidth - moveLen - 10 + 'px'
227
+ }
228
+ }
229
+ // 鼠标松开事件
230
+ document.onmouseup = function (evt) {
231
+ //颜色恢复
232
+ // resize[i].style.background = "#d6d6d6";
233
+ document.onmousemove = null
234
+ document.onmouseup = null
235
+ resize[i].releaseCapture && resize[i].releaseCapture() //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
236
+ }
237
+ resize[i].setCapture && resize[i].setCapture() //该函数在属于当前线程的指定窗口里设置鼠标捕获
238
+ return false
239
+ }
240
+ }
241
+ },
242
+ // 获取资源列表
243
+ async getList(flag, test) {
244
+ if (flag) {
245
+ this.dialogVisible = true
246
+ this.Test = test
247
+ }
248
+ this.wjOpen = false
249
+ this.bjOpen = false
250
+ this.queryParams.fileType = this.test.code
251
+ myResourceList(this.queryParams).then((res) => {
252
+ this.tableData = res.rows
253
+ this.total = res.total
254
+ })
255
+ },
256
+ // 全选
257
+ selectAll(checked) {
258
+ if (checked) {
259
+ this.test.code = this.options.map((d) => d.value)
260
+ } else {
261
+ this.test.code = []
262
+ }
263
+ },
264
+ // 提交查询
265
+ onSubmit() {
266
+ this.queryParams.pageNum = 1
267
+ this.getList()
268
+ },
269
+ // 当前页改变
270
+ handleCurrentChange(val) { },
271
+ // 序号计算方法
272
+ indexMethod(index) {
273
+ let curpage = this.page.pageNum
274
+ let limitpage = this.page.pageSize
275
+ return index + 1 + (curpage - 1) * limitpage
276
+ },
277
+ // 选择改变事件
278
+ handleSelectionChange(selection) {
279
+ this.ids = selection.map((item) => item.id)
280
+ this.multiple = !selection.length
281
+ this.$emit('selectionChange', selection)
282
+ },
283
+
284
+ // 树节点事件
285
+ handleNodeClick(data) {
286
+ this.queryParams.pageNum = 1
287
+ this.queryParams.parentId = data.id
288
+ this.getList()
289
+ },
290
+ },
291
+ async created() {
292
+ this.getList()
293
+ },
294
+ }
295
+ </script>
296
+ <style lang="scss">
297
+ // /* 滚动条整体部分 */
298
+ ::-webkit-scrollbar {
299
+ width: 6px !important;
300
+ height: 6px !important;
301
+ }
302
+
303
+ /* 滚动条的轨道 */
304
+ ::-webkit-scrollbar-track {
305
+ background-color: #f5f5f5 !important;
306
+ border-radius: 3px !important;
307
+ }
308
+
309
+ /* 滚动条里面的小方块 */
310
+ ::-webkit-scrollbar-thumb {
311
+ background-color: #c1c1c1 !important;
312
+ border-radius: 3px !important;
313
+ }
314
+
315
+ /* 滚动条鼠标移上去 */
316
+ ::-webkit-scrollbar-thumb:hover {
317
+ background-color: #a8a8a8 !important;
318
+ }
319
+
320
+ .addBlue {
321
+ background: #ebf1fe;
322
+ // border: 1px solid #145fdf;
323
+ // border-color: #145fdf;
324
+ color: #145fdf;
325
+ }
326
+
327
+ .el-select-dropdown__list {
328
+ padding-bottom: 20px;
329
+ }
330
+
331
+ .el-tree .el-tree-node__expand-icon.expanded {
332
+ -webkit-transform: rotate(0deg);
333
+ transform: rotate(0deg);
334
+ }
335
+
336
+ .el-tree .el-icon-caret-right:before {
337
+ content: '';
338
+ }
339
+
340
+ .el-tree .el-tree-node__expand-icon.expanded.el-icon-caret-right:before {
341
+ content: '';
342
+ }
343
+
344
+ .wj {
345
+ display: flex;
346
+ align-items: center;
347
+
348
+ a {
349
+ //flex: 1;
350
+ //width: 100%;
351
+ padding-left: 6px;
352
+ color: rgba(0, 0, 0, 1);
353
+ overflow: hidden;
354
+ white-space: nowrap;
355
+ text-overflow: ellipsis;
356
+ }
357
+ }
358
+ </style>
359
+ <style scoped>
360
+ /* 拖拽相关样式 */
361
+ /*包围div样式*/
362
+ .addBlue {
363
+ margin-left: 20px;
364
+ }
365
+
366
+ .el-col {
367
+ margin-bottom: 10px;
368
+ }
369
+
370
+ .right {
371
+ display: flex;
372
+ justify-content: end;
373
+ }
374
+
375
+ .box {
376
+ width: 100%;
377
+ height: 100%;
378
+ background: #fff;
379
+ padding-right: 20px;
380
+ }
381
+
382
+ .main {
383
+ display: flex;
384
+ width: 100%;
385
+ height: 100%;
386
+ /* height: 100%;
387
+ min-height: 100vh; */
388
+ box-sizing: border-box;
389
+ }
390
+
391
+ /*左侧div样式*/
392
+ .left {
393
+ width: 200px;
394
+ background: #ffffff;
395
+ color: rgba(0, 0, 0, 1);
396
+ overflow: auto;
397
+ padding: 20px;
398
+ /* 设置固定宽度200px,但由于flex布局的影响,宽度可能会被覆盖 */
399
+ flex-shrink: 0;
400
+ /* 防止flex布局下被压缩 */
401
+ min-width: 200px;
402
+ /* 设置最小宽度确保不会小于200px */
403
+ }
404
+
405
+ /*拖拽区div样式*/
406
+ .resize {
407
+ cursor: col-resize;
408
+ float: left;
409
+ position: relative;
410
+ top: 0;
411
+ height: 100%;
412
+ border-radius: 5px;
413
+ width: 10px;
414
+ background-size: cover;
415
+ background-position: center;
416
+ font-size: 32px;
417
+ color: white;
418
+ }
419
+
420
+ /*拖拽区鼠标悬停样式*/
421
+ .resize:hover {
422
+ color: #444444;
423
+ }
424
+
425
+ /*右侧div'样式*/
426
+ .mid {
427
+ flex: 1;
428
+ background: #fff;
429
+ box-shadow: -1px 4px 5px 3px rgba(0, 0, 0, 0.11);
430
+ padding: 20px;
431
+ overflow: auto;
432
+ height: auto;
433
+ box-sizing: border-box;
434
+ resize: horizontal;
435
+ }
436
+ </style>
437
+ <style lang="scss" scoped>
438
+ ::v-deep .el-input__icon {
439
+ line-height: 33px;
440
+ }
441
+
442
+ .left_tree {
443
+ ::v-deep.el-scrollbar__wrap {
444
+ overflow: auto !important;
445
+ overflow-x: hidden !important;
446
+ }
447
+ }
448
+
449
+ ::v-deep body {
450
+ overflow: hidden;
451
+ }
452
+
453
+ .form {
454
+ display: flex;
455
+ flex-wrap: wrap;
456
+ }
457
+
458
+ .icon {
459
+ display: flex;
460
+ align-items: center;
461
+ }
462
+
463
+ .wj:hover {
464
+ color: #1c84c6;
465
+ }
466
+ </style>