htui-yllkbz 1.2.54 → 1.2.58

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.
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "htui-yllkbz",
3
- "version": "1.2.54",
3
+ "version": "1.2.58",
4
4
  "typings": "types/index.d.ts",
5
5
  "main": "lib/htui.common.js",
6
6
  "style": "lib/htui.css",
@@ -5,7 +5,7 @@
5
5
  * @Author: hutao
6
6
  * @Date: 2021-11-11 11:23:24
7
7
  * @LastEditors: hutao
8
- * @LastEditTime: 2022-01-16 09:27:47
8
+ * @LastEditTime: 2022-02-14 11:07:24
9
9
  -->
10
10
  <template>
11
11
  <div v-loading="state.loading"
@@ -73,12 +73,12 @@
73
73
  {{(state.pageInfo.currentPage-1)*state.pageInfo.pageSize+(scope.$index+1)}}
74
74
  </template>
75
75
  </el-table-column>
76
- <template v-for="item in showColumns">
76
+ <template v-for="(item,index) in state.showColumns">
77
77
  <el-table-column :label="item.title"
78
- :key='item.key'
78
+ :key='`${item.key}_${index}`'
79
79
  :fixed="item.fixed"
80
80
  :align="item.align"
81
- v-if="!item.hide"
81
+ v-if="!item.hide&&item.checked"
82
82
  :resizable="item.resizable"
83
83
  :header-align="item.headerAlign"
84
84
  :column-key="item.columnKey"
@@ -104,6 +104,7 @@
104
104
  type="tag"></common-org-info>
105
105
  <span v-else>--</span>
106
106
  </template>
107
+ <!-- 处理基础数据 -->
107
108
  <template v-else-if="item.type==='common'">
108
109
 
109
110
  <div v-if="getPropByPath(row,item.key)"
@@ -137,7 +138,7 @@
137
138
  </div>
138
139
  <span v-else>--</span>
139
140
  </template>
140
- <!-- 处理部门人员 -->
141
+ <!-- 处理布尔值显示 -->
141
142
  <template v-else-if="item.type==='boolean'">
142
143
  <el-tag :type="'success'"
143
144
  :size="'small'"
@@ -146,15 +147,25 @@
146
147
  :size="'small'"
147
148
  v-else>否</el-tag>
148
149
  </template>
149
- <!-- 处理部门人员 -->
150
+ <!-- 处理图片显示 -->
150
151
  <template v-else-if="item.type==='img'">
151
- <span v-if="fileToken in getPropByPath(row,item.key).split(',')">
152
+ <span v-if="getPropByPath(row,item.key)">
152
153
  <el-image style="width: 38px; height: 38px;margin-right:5px"
154
+ :key="fileToken"
155
+ v-for="fileToken in getPropByPath(row,item.key).split(',')"
153
156
  :src="'/files/api/filing/file/download/'+fileToken"
154
157
  :preview-src-list="['/files/api/filing/file/download/'+fileToken]">
155
158
  </el-image>
156
159
  </span>
157
-
160
+ </template>
161
+ <!-- 处理附件显示 -->
162
+ <template v-else-if="item.type==='file'">
163
+ <span v-if="getPropByPath(row,item.key)">
164
+ <i class="el-icon-paperclip"
165
+ @click="showFiles(getPropByPath(row,item.key))"
166
+ style="color:var(--primary);cursor:pointer">{{getPropByPath(row,item.key).split(',').length}}</i>
167
+ </span>
168
+ <span v-else>--</span>
158
169
  </template>
159
170
  <!-- 其他 -->
160
171
  <span v-else>{{getPropByPath(row,item.key)}}</span>
@@ -194,13 +205,15 @@
194
205
  title="属性设置"
195
206
  :append-to-body="true"
196
207
  :close-on-click-modal="true"
197
- width="400px"
198
- :center="true">
199
- <div style='overflow:hidden;height:500px'>
200
- <el-scrollbar style='height: 517px'>
201
- <el-tree :data="columns"
208
+ width="400px">
209
+ <p slot="title"
210
+ style="font-weight:700;font-size:18px;float:left;margin:0">自定义列展示</p>
211
+ <div style='overflow:hidden;height:35vh;margin-top:12px'>
212
+ <el-scrollbar style='height: calc(35vh + 17px)'>
213
+ <el-tree :data="getAllColumns"
202
214
  ref="tree"
203
215
  show-checkbox
216
+ :expand-on-click-node="false"
204
217
  node-key="key"
205
218
  :check-on-click-node="false"
206
219
  @node-drag-start="handleDragStart"
@@ -209,7 +222,7 @@
209
222
  @node-drag-over="handleDragOver"
210
223
  @node-drag-end="handleDragEnd"
211
224
  @node-drop="handleDrop"
212
- :default-checked-keys="state.showColumnKeys"
225
+ :default-checked-keys="state.checkedColumnKeys"
213
226
  @check-change="changeColumns"
214
227
  :allow-drag="allowDrag"
215
228
  draggable
@@ -217,10 +230,33 @@
217
230
  <span class="custom-tree-node"
218
231
  slot-scope="{ node, data }">
219
232
  <slot :name="'header_'+data.key"
220
- :column="data">{{data.title}}</slot>
233
+ :column="data">{{data.title}}<span style="color:#C0C4CC">{{data.property?`(${data.property})`:''}}</span></slot>
221
234
  </span>
222
235
  </el-tree>
223
236
  </el-scrollbar>
237
+
238
+ </div>
239
+ <span slot="footer">
240
+ <el-button type="primary"
241
+ @click="confirmSortAndshow">确定</el-button>
242
+ <el-button @click="state.visibleFilter=false">取消</el-button>
243
+ </span>
244
+ </el-dialog>
245
+ <!-- 附件详情弹框 -->
246
+ <el-dialog :visible.sync="state.visibleFile"
247
+ title="附件查看"
248
+ :append-to-body="true"
249
+ :close-on-click-modal="true"
250
+ width="400px"
251
+ :center="true">
252
+ <p slot="title"
253
+ style="font-weight:700;font-size:18px;float:left;margin:0">附件查看</p>
254
+
255
+ <div style='overflow:hidden;height:calc(30vh)'>
256
+ <el-scrollbar style='height: calc(100% + 17px)'>
257
+ <HtUploadFiles :disabled="true"
258
+ v-model="state.files"></HtUploadFiles>
259
+ </el-scrollbar>
224
260
  </div>
225
261
  </el-dialog>
226
262
  </div>
@@ -229,21 +265,32 @@
229
265
  import { Component, Prop, Vue, Watch } from "vue-property-decorator";
230
266
  import { Column, PageInfoType } from "@/packages/type";
231
267
  import PageInfo from "@/packages/PageInfo/index.vue";
268
+ import HtUploadFiles from "@/packages/HtUploadFiles/index.vue";
232
269
  interface State {
233
270
  pageInfo: PageInfoType;
234
271
  loading: boolean;
235
272
  /** 展示出来的列表名 */
236
273
  showColumns: Column[];
274
+ /** 全部的列 */
275
+ allColumns: Column[];
276
+ /** 列表展示的列 */
237
277
  showColumnKeys: string[];
278
+ /** 自定义列表选中的列 */
279
+ checkedColumnKeys: string[];
238
280
  /** 是否展示筛选框 */
239
281
  visibleFilter: boolean;
282
+ /** 是否展示附件 */
283
+ visibleFile: boolean;
240
284
  /** 当前拖动的数据 */
241
285
  currentColumn?: Column;
286
+ /** 附件ids */
287
+ files?: string;
242
288
  }
243
289
  @Component({
244
290
  name: "HtTable",
245
291
  components: {
246
292
  PageInfo,
293
+ HtUploadFiles,
247
294
  },
248
295
  })
249
296
  export default class HtTable extends Vue {
@@ -281,12 +328,14 @@ export default class HtTable extends Vue {
281
328
  @Prop() emptyText?: string | number;
282
329
  @Prop() headerRowStyle?: any;
283
330
  @Prop() headerRowClassName?: any;
331
+ @Prop() headerCellClassName?: any;
284
332
  @Prop() headerCellStyle?: any;
285
333
 
286
334
  /** 分页的所有额外信息通过此参数传递 */
287
335
  @Prop() pagination?: any;
288
336
  state: State = {
289
337
  loading: false,
338
+ files: undefined,
290
339
  pageInfo: {
291
340
  currentPage: 1,
292
341
  pageSize: 10,
@@ -294,42 +343,65 @@ export default class HtTable extends Vue {
294
343
  totalCount: 0,
295
344
  },
296
345
  showColumns: [],
346
+ allColumns: [],
297
347
  currentColumn: undefined,
298
348
  visibleFilter: false,
349
+ visibleFile: false,
299
350
  showColumnKeys: [],
351
+ checkedColumnKeys: [],
300
352
  };
301
353
  created() {
302
354
  this.setPageInfo(this.pageInfo);
303
- this.state.showColumns = this.columns;
355
+ //this.setColumns(this.columns);
304
356
  if (this.uuId) {
305
357
  //通过uuid获取缓存起来的header显示信息
306
- const showKeys: string | null = window.localStorage.getItem(
358
+ //-todo
359
+ //---columns 要改变
360
+ //---showColumnKeys 要改变
361
+ //---排列顺序要改变 todo
362
+ const allColumns: string | null = window.localStorage.getItem(
307
363
  "table_" + this.uuId
308
364
  );
309
- if (showKeys) {
310
- this.state.showColumnKeys = JSON.parse(showKeys);
365
+ if (allColumns) {
366
+ this.state.allColumns = JSON.parse(allColumns);
367
+ this.state.showColumns = JSON.parse(allColumns);
368
+ this.getShowKeys(this.state.allColumns);
311
369
  } else {
312
- this.creatInitColumnKey();
370
+ this.creatInitColumnKey(this.columns || []);
313
371
  }
314
372
  } else {
315
- this.creatInitColumnKey();
373
+ this.creatInitColumnKey(this.columns || []);
316
374
  }
317
375
  }
318
- creatInitColumnKey() {
319
- this.state.showColumnKeys = this.columns.reduce((arr: string[], item) => {
320
- arr.push(item.key);
321
- return arr;
322
- }, []);
376
+ /** 获取展示的keys值 */
377
+ getShowKeys(data: Column[]) {
378
+ const arr: string[] = [];
379
+ data.forEach((item) => {
380
+ if (item.checked) {
381
+ arr.push(item.key);
382
+ }
383
+ });
384
+ this.state.showColumnKeys = arr;
323
385
  }
324
- changeColumns(node: any, checked: boolean) {
325
- let { showColumnKeys } = this.state;
326
- if (checked) {
327
- showColumnKeys.push(node.key);
328
- } else {
329
- showColumnKeys = showColumnKeys.filter((item) => item !== node.key);
330
- }
331
- this.state.showColumnKeys = showColumnKeys;
386
+ /** 初始化columns */
387
+ creatInitColumnKey(columns: Column[]) {
388
+ this.state.allColumns = columns;
389
+ this.state.showColumns = columns;
390
+ this.state.allColumns.forEach((item) => {
391
+ item.checked = true;
392
+ });
393
+ this.getShowKeys(this.state.allColumns);
394
+ // this.state.showColumnKeys = this.columns.reduce((arr: string[], item) => {
395
+ // arr.push(item.key);
396
+ // return arr;
397
+ // }, []);
398
+ }
399
+ /** 展示附件信息 */
400
+ showFiles(val = "") {
401
+ this.state.files = val;
402
+ this.state.visibleFile = true;
332
403
  }
404
+
333
405
  handleDragStart(node: any) {
334
406
  this.state.currentColumn = node.data;
335
407
  }
@@ -343,7 +415,7 @@ export default class HtTable extends Vue {
343
415
  // console.log("tree drag over: ", dropNode.label);
344
416
  }
345
417
  handleDragEnd(draggingNode: any, dropNode: any, dropType: string) {
346
- const { showColumns, currentColumn, showColumnKeys } = this.state;
418
+ const { showColumns, currentColumn, checkedColumnKeys } = this.state;
347
419
  // if ((dropType === "before" || dropType === "after") && currentColumn) {
348
420
  // const data = showColumns.filter(
349
421
  // (item) => item.key !== currentColumn?.key
@@ -353,11 +425,12 @@ export default class HtTable extends Vue {
353
425
  // ? data.splice(index, 0, currentColumn)
354
426
  // : data.splice(index + 1, 0, currentColumn);
355
427
  // console.log("tree drag end: ", currentColumn, showColumnKeys);
356
- if (currentColumn && showColumnKeys.includes(currentColumn.key)) {
428
+ if (currentColumn && checkedColumnKeys.includes(currentColumn.key)) {
357
429
  setTimeout(() => {
358
430
  (this.$refs.tree as any).setChecked(currentColumn, true);
359
431
  }, 0);
360
432
  }
433
+ //console.log("handleDragEnd", this.columns);
361
434
 
362
435
  // }
363
436
  }
@@ -399,8 +472,46 @@ export default class HtTable extends Vue {
399
472
  // };
400
473
  return tempObj ? tempObj[keyArr[i]] : null;
401
474
  }
475
+ /** 现在自定义列弹窗 */
402
476
  showFilterModel() {
403
477
  this.state.visibleFilter = true;
478
+ this.state.checkedColumnKeys = this.state.showColumnKeys;
479
+ this.state.allColumns = JSON.parse(JSON.stringify(this.state.showColumns));
480
+ }
481
+ /** 自定义列表时候选中列 */
482
+ changeColumns(node: any, checked: boolean) {
483
+ let { checkedColumnKeys } = this.state;
484
+ if (checked) {
485
+ checkedColumnKeys.push(node.key);
486
+ } else {
487
+ checkedColumnKeys = checkedColumnKeys.filter((item) => item !== node.key);
488
+ }
489
+ this.state.checkedColumnKeys = checkedColumnKeys;
490
+ }
491
+ /** 自定义列排序的确定功能 */
492
+ confirmSortAndshow() {
493
+ this.state.loading = true;
494
+ this.state.showColumns = [];
495
+ const { allColumns, checkedColumnKeys } = this.state;
496
+ //对列表check复制
497
+ allColumns.forEach(
498
+ (item) => (item.checked = checkedColumnKeys.includes(item.key))
499
+ );
500
+ //将复选框选中行展示到列中 */
501
+ this.state.showColumnKeys = checkedColumnKeys;
502
+ //将列的顺序进行处理已经存储
503
+
504
+ if (this.uuId) {
505
+ window.localStorage.setItem(
506
+ "table_" + this.uuId,
507
+ JSON.stringify(allColumns)
508
+ );
509
+ }
510
+ this.state.showColumns = allColumns;
511
+ this.state.visibleFilter = false;
512
+ this.state.loading = false;
513
+ /** 自定义列回调 */
514
+ this.$emit("customColumn", allColumns);
404
515
  }
405
516
  /** 遍历循环展示row数据 */
406
517
  showValue(row: any, key: string) {
@@ -458,9 +569,47 @@ export default class HtTable extends Vue {
458
569
  };
459
570
  }
460
571
  }
572
+ get getAllColumns() {
573
+ const { allColumns } = this.state;
574
+ return allColumns.filter((item) => !item.hide);
575
+ }
461
576
  @Watch("columns")
462
577
  setColumns(columns?: Column[]) {
463
- this.state.showColumns = columns || [];
578
+ const { showColumns } = this.state;
579
+ /** 当前所有key */
580
+ let allKeys: any = {};
581
+ /** 新来的所有key */
582
+ let newKeys: any = {};
583
+ showColumns.forEach((item) => {
584
+ allKeys = { ...allKeys, [item.key]: true };
585
+ });
586
+ columns?.forEach((item) => {
587
+ newKeys = { ...newKeys, [item.key]: true };
588
+ });
589
+ /** 查找出所有的当前不存在的key */
590
+ const newColumns = columns?.filter((item) => !allKeys[item.key]);
591
+ /** 查找出当前已有的key */
592
+ const successColumns = showColumns?.filter((item) => newKeys[item.key]);
593
+ const tempColumns: Column[] = [];
594
+ const lastColumn: Column[] = [];
595
+ successColumns.forEach((item, index) => {
596
+ /** 去除操作列 */
597
+ if (item.key !== "handel") {
598
+ tempColumns.push(item);
599
+ } else {
600
+ lastColumn.push(item);
601
+ }
602
+ });
603
+ newColumns?.forEach((item, index) => {
604
+ /** 去除操作列 */
605
+ if (item.key !== "handel") {
606
+ tempColumns.push(item);
607
+ } else {
608
+ lastColumn.push(item);
609
+ }
610
+ });
611
+ /** 去除多余并且添加新增的 */
612
+ this.creatInitColumnKey([...tempColumns, ...lastColumn]);
464
613
  }
465
614
  }
466
615
  </script>
@@ -0,0 +1,14 @@
1
+ /*
2
+ * @Descripttion:
3
+ * @version:
4
+ * @Author: hutao
5
+ * @Date: 2021-11-15 15:00:57
6
+ * @LastEditors: hutao
7
+ * @LastEditTime: 2022-02-11 14:26:45
8
+ */
9
+ import HtUploadFiles from "./index.vue";
10
+ (HtUploadFiles as any).install = function (Vue: any) {
11
+
12
+ Vue.component("HtUploadFiles", HtUploadFiles);
13
+ };
14
+ export default HtUploadFiles;
@@ -0,0 +1,234 @@
1
+ <!--
2
+ * @Descripttion:
3
+ * @version:
4
+ * @Author: hutao
5
+ * @Date: 2022-02-11 14:26:23
6
+ * @LastEditors: hutao
7
+ * @LastEditTime: 2022-02-11 14:36:54
8
+ -->
9
+ <!--
10
+ * @Descripttion: 附件列表 ------没有搞完
11
+ * @version:
12
+ * @Author: hutao
13
+ * @Date: 2021-12-30 16:07:59
14
+ * @LastEditors: hutao
15
+ * @LastEditTime: 2022-02-10 15:11:11
16
+ -->
17
+ <template>
18
+ <div>
19
+ <el-upload class="ht-upload"
20
+ v-if="!disabled"
21
+ style="width:368px;height:108px"
22
+ :show-file-list="false"
23
+ :disabled="disabled"
24
+ :on-success="onSuccess"
25
+ :before-upload="beforeUpload"
26
+ drag
27
+ action="/files/api/filing/file/upload"
28
+ multiple>
29
+ <!-- <i class="el-icon-upload"></i> -->
30
+ <div style="margin-top:8px;font-size:12px;color:#999"
31
+ class="el-upload__text">拖动文件到此处,或<br /><em>点击上传</em></div>
32
+ <!-- <div class="el-upload__tip"
33
+ slot="tip">只能上传jpg/png文件,且不超过5M</div> -->
34
+ </el-upload>
35
+ <ul class="ht-ul-upload">
36
+ <li :key="item.fileToken"
37
+ v-for=" (item,index) in state.filesInfo">
38
+ <a @click="downLoadFile(item)"><i class="le-icon el-icon-document"
39
+ style="margin-right:7px"></i>{{item.fileName}}</a>
40
+ <span>
41
+
42
+ <i v-if="!disabled"
43
+ class="el-icon el-icon-circle-check"></i>
44
+ <i v-if="!disabled"
45
+ class="el-icon el-icon-close"
46
+ @click="delItem(item,index)"
47
+ title="删除"></i>
48
+ <i class="el-icon el-icon-download"
49
+ style="margin-right:24px"
50
+ @click="downLoadFile(item)"
51
+ title="下载"></i>
52
+ </span>
53
+
54
+ </li>
55
+ </ul>
56
+ <a :href="state.fileSrc"
57
+ target="_blank"
58
+ v-show="false"
59
+ ref="download1"></a>
60
+ </div>
61
+ </template>
62
+ <script lang='ts'>
63
+ import { _axios } from "vue-kst-auth";
64
+ import { Component, Prop, Vue, Watch } from "vue-property-decorator";
65
+ interface State {
66
+ /** 数据状态 */
67
+ loading: boolean;
68
+ fileSrc: string;
69
+ /** 图片地址 */
70
+ fileToken: string[];
71
+ dialogVisible: boolean;
72
+ /** 附件详情列表 */
73
+ filesInfo: CreateAttachmentDto[];
74
+ }
75
+ interface FileType {
76
+ fileName: string;
77
+ fileSize?: number;
78
+ fileToken?: string;
79
+ fileType?: string;
80
+ }
81
+ interface CreateAttachmentDto {
82
+ fileToken?: string | undefined;
83
+ fileName?: string | undefined;
84
+ fileSize?: number;
85
+ fileType?: string | undefined;
86
+ sortNum?: number;
87
+ }
88
+ @Component({
89
+ name: "HtUploadFiles",
90
+ })
91
+ export default class HtUploadFiles extends Vue {
92
+ @Prop() value!: string;
93
+ /* 是否只读 */
94
+ @Prop({ default: false }) readonly?: boolean;
95
+ /** 是否禁用 */
96
+ @Prop() disabled?: boolean;
97
+ /** 数据 */
98
+ state: State = {
99
+ loading: false,
100
+ fileSrc: "",
101
+ fileToken: [],
102
+ filesInfo: [],
103
+ dialogVisible: false,
104
+ };
105
+ /** 生命周期 */
106
+ created() {
107
+ this.onValue(this.value);
108
+ }
109
+ /** 方法 */
110
+ /** 上传文件前验证 */
111
+
112
+ /** 附件上传之前的判断 */
113
+ beforeUpload(file: File) {
114
+ const isLt10MB = file.size / 1024 / 1024 < 5;
115
+ const arr = ["jpg", "png", "xlsx", "lsx", "doc", "pdf"];
116
+ const lastArr = file.name.split(".");
117
+ const type = lastArr[lastArr.length - 1];
118
+ if (!isLt10MB) {
119
+ this.$message.error("大小不能超过 5MB!");
120
+ }
121
+ if (arr.includes(type)) {
122
+ return true;
123
+ } else {
124
+ this.$notify.error(`只能上传${arr.toString()}格式文件`);
125
+ return false;
126
+ }
127
+ }
128
+ /**下载文件 */
129
+ downLoadFile(item: any) {
130
+ this.state.fileSrc = `/files/api/filing/file/download/${item.fileToken}`;
131
+ setTimeout(() => {
132
+ const adom: any = this.$refs.download1;
133
+ adom.click();
134
+ }, 100);
135
+ }
136
+ /** 附件上传成功 */
137
+ onSuccess(response: { fileToken: string }) {
138
+ console.log("response, file, fileList", response.fileToken);
139
+ //this.state.files.push(response.fileToken);
140
+ this.getFileInfo(response.fileToken);
141
+ }
142
+ /** 获取到的附件列表详情 */
143
+ getFileInfo(id: string) {
144
+ _axios.get("/files/api/filing/file/" + id).then((res) => {
145
+ this.state.filesInfo.push(res.data);
146
+ });
147
+ }
148
+ /** 删除附件列表 */
149
+ delItem(item: FileType, index: number) {
150
+ const { filesInfo } = this.state;
151
+ if (item.fileToken) {
152
+ filesInfo.splice(index, 1);
153
+ this.state.filesInfo = filesInfo;
154
+ }
155
+ }
156
+ /** 请求所有的附件信息 */
157
+ async getAllFileInfo() {
158
+ const { fileToken } = this.state;
159
+ //this.state.filesInfo = [];
160
+ for (let i = 0; i < fileToken.length; i++) {
161
+ if (
162
+ this.state.filesInfo.findIndex(
163
+ (item) => item.fileToken === fileToken[i]
164
+ ) < 0
165
+ ) {
166
+ await _axios
167
+ .get("/files/api/filing/file/" + fileToken[i])
168
+ .then((res) => {
169
+ this.state.filesInfo.push(res.data);
170
+ });
171
+ }
172
+ }
173
+ }
174
+ /** 监听 */
175
+ /** 计算属性 */
176
+ get fileList() {
177
+ return [];
178
+ }
179
+ @Watch("state.filesInfo")
180
+ onFileToken(val: CreateAttachmentDto[], old: string) {
181
+ const arr: string[] = [];
182
+ val.forEach((item) => {
183
+ if (item.fileToken) arr.push(item.fileToken);
184
+ });
185
+ this.$emit("input", arr.toString());
186
+ }
187
+ @Watch("value")
188
+ onValue(val: string) {
189
+ if (val) {
190
+ this.state.fileToken = val.split(",");
191
+ this.getAllFileInfo();
192
+ } else {
193
+ this.state.fileToken = [];
194
+ }
195
+ }
196
+ }
197
+ </script>
198
+ <style lang='scss' scoped>
199
+ .ht-ul-upload {
200
+ li {
201
+ width: 100%;
202
+ list-style: none;
203
+ height: 40px;
204
+ line-height: 40px;
205
+ padding: 0 8px;
206
+ display: flex;
207
+ justify-content: space-between;
208
+ cursor: pointer;
209
+ a {
210
+ color: #606266;
211
+ font-size: 12px;
212
+ }
213
+ .el-icon-close {
214
+ display: none;
215
+ }
216
+ &:hover {
217
+ background: #eee;
218
+ a {
219
+ color: var(--primary);
220
+ }
221
+ .el-icon-close {
222
+ display: block;
223
+ line-height: 40px;
224
+ }
225
+ .el-icon-circle-check {
226
+ display: none;
227
+ }
228
+ }
229
+ .el-icon-circle-check {
230
+ color: var(--primary);
231
+ }
232
+ }
233
+ }
234
+ </style>
@@ -4,7 +4,7 @@
4
4
  * @Author: hutao
5
5
  * @Date: 2021-10-21 10:08:41
6
6
  * @LastEditors: hutao
7
- * @LastEditTime: 2022-01-04 09:47:12
7
+ * @LastEditTime: 2022-02-11 14:29:18
8
8
  */
9
9
 
10
10
  // 导入组件
@@ -18,10 +18,11 @@ import HtExport from './HtExport/index'
18
18
  import HtUpload from './HtUpload/index'
19
19
  import HtMd from './HtMd/index'
20
20
  import HtCountDown from './HtCountDown/index'
21
+ import HtUploadFiles from './HtUploadFiles/index'
21
22
 
22
23
 
23
24
  // 存储组件列表
24
- const components = [HtSelectTable, HtPagination, HtTable, HtExport, HtUpload, HtMd, HtCountDown]
25
+ const components = [HtSelectTable, HtPagination, HtTable, HtExport, HtUpload, HtMd, HtCountDown, HtUploadFiles]
25
26
  // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
26
27
  const install = function (Vue: any) {
27
28
  // 判断是否安装
@@ -37,6 +38,6 @@ export default {
37
38
  // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
38
39
  install,
39
40
  // 以下是具体的组件列表
40
- HtSelectTable, HtPagination, HtTable, HtExport, HtUpload, HtMd, HtCountDown
41
+ HtSelectTable, HtPagination, HtTable, HtExport, HtUpload, HtMd, HtCountDown, HtUploadFiles
41
42
  }
42
43