Skip to content

Commit 94dadca

Browse files
committed
更新 upload 插件
1 parent 6fc89bc commit 94dadca

File tree

5 files changed

+86
-10
lines changed

5 files changed

+86
-10
lines changed

src/plugins/upload/components/upload-item/index.vue

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,30 @@
7777
<!-- 工具 -->
7878
<div class="cl-upload-item__actions">
7979
<template v-if="media.isMedia">
80-
<el-icon @click.stop="media.pause()" v-if="item.isPlay">
80+
<el-icon
81+
class="action-pause"
82+
@click.stop="media.pause()"
83+
v-if="item.isPlay"
84+
>
8185
<video-pause />
8286
</el-icon>
8387

84-
<el-icon @click.stop="media.play()" v-else>
88+
<el-icon class="action-play" @click.stop="media.play()" v-else>
8589
<video-play />
8690
</el-icon>
8791
</template>
8892

8993
<template v-else>
90-
<el-icon @click.stop="preview">
94+
<el-icon class="action-preview" @click.stop="preview">
9195
<zoom-in />
9296
</el-icon>
9397
</template>
9498

95-
<el-icon @click.stop="remove" v-if="!disabled || deletable">
99+
<el-icon
100+
class="action-delete"
101+
@click.stop="remove"
102+
v-if="!disabled || deletable"
103+
>
96104
<delete />
97105
</el-icon>
98106
</div>

src/plugins/upload/components/upload.vue

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
`cl-upload--${type}`,
77
{
88
'is-disabled': disabled,
9-
'is-multiple': multiple
9+
'is-multiple': multiple,
10+
'is-small': small
1011
}
1112
]"
1213
>
@@ -59,6 +60,7 @@
5960
:disabled="disabled"
6061
>
6162
<slot>
63+
<!-- 拖拽方式 -->
6264
<div class="cl-upload__demo is-dragger" v-if="drag">
6365
<el-icon :size="46">
6466
<upload-filled />
@@ -68,6 +70,7 @@
6870
</div>
6971
</div>
7072

73+
<!-- 点击方式 -->
7174
<div class="cl-upload__demo" v-else>
7275
<el-icon :size="36">
7376
<component :is="icon" v-if="icon" />
@@ -109,6 +112,15 @@
109112
:deletable="deletable"
110113
@remove="remove(index)"
111114
/>
115+
116+
<!-- 小图模式 -->
117+
<el-icon
118+
class="cl-upload__item-remove"
119+
v-if="small"
120+
@click="remove(index)"
121+
>
122+
<circle-close-filled />
123+
</el-icon>
112124
</div>
113125
</slot>
114126
</el-upload>
@@ -123,7 +135,7 @@ import { computed, ref, watch, type PropType, nextTick } from "vue";
123135
import { isArray, isEmpty, isNumber } from "lodash-es";
124136
import VueDraggable from "vuedraggable";
125137
import { ElMessage } from "element-plus";
126-
import { PictureFilled, UploadFilled } from "@element-plus/icons-vue";
138+
import { PictureFilled, UploadFilled, CircleCloseFilled } from "@element-plus/icons-vue";
127139
import { useForm } from "@cool-vue/crud";
128140
import { useCool } from "/@/cool";
129141
import { useBase } from "/$/base";
@@ -159,6 +171,8 @@ const props = defineProps({
159171
},
160172
// 元素大小
161173
size: [String, Number, Array],
174+
// 小图模式
175+
small: Boolean,
162176
// 显示图标
163177
icon: null,
164178
// 显示文案
@@ -476,7 +490,7 @@ defineExpose({
476490
}
477491
478492
&__list {
479-
display: inline-flex;
493+
display: flex;
480494
flex-wrap: wrap;
481495
}
482496
@@ -558,9 +572,50 @@ defineExpose({
558572
}
559573
560574
&.is-multiple {
575+
.cl-upload__list {
576+
margin-bottom: -5px;
577+
}
578+
561579
.cl-upload__item {
562580
margin: 0 5px 5px 0;
563581
}
582+
583+
.cl-upload__footer {
584+
margin-bottom: 5px;
585+
}
586+
}
587+
588+
&.is-small {
589+
.cl-upload__demo {
590+
.el-icon {
591+
font-size: 20px !important;
592+
}
593+
594+
.text {
595+
display: none;
596+
}
597+
}
598+
599+
.cl-upload__item-remove {
600+
position: absolute;
601+
right: 0px;
602+
top: 0px;
603+
color: var(--el-color-danger);
604+
background-color: #fff;
605+
border-radius: 100%;
606+
}
607+
608+
:deep(.cl-upload-item) {
609+
.cl-upload-item__progress-bar,
610+
.cl-upload-item__actions,
611+
.cl-upload-item__tag {
612+
display: none;
613+
}
614+
615+
.cl-upload-item__progress-value {
616+
font-size: 12px;
617+
}
618+
}
564619
}
565620
566621
&:not(.is-disabled) {

src/plugins/upload/config.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ export default (): ModuleConfig => {
55
label: "文件上传",
66
description: "基于 el-upload 封装的文件上传组件",
77
author: "COOL",
8-
version: "1.1.3",
9-
updateTime: "2024-03-13",
8+
version: "1.2.1",
9+
updateTime: "2024-03-15",
1010
demo: [
1111
{
1212
name: "基础用法",
@@ -16,6 +16,10 @@ export default (): ModuleConfig => {
1616
name: "多图上传",
1717
component: () => import("./demo/multiple.vue")
1818
},
19+
{
20+
name: "小图模式",
21+
component: () => import("./demo/small.vue")
22+
},
1923
{
2024
name: "文件上传",
2125
component: () => import("./demo/file.vue")

src/plugins/upload/demo/custom.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { Upload } from "@element-plus/icons-vue";
1818
border: 1px solid var(--el-border-color);
1919
border-radius: 4px;
2020
padding: 5px 10px;
21-
margin-bottom: 10px;
21+
margin-bottom: 5px;
2222
font-size: 12px;
2323
width: 100%;
2424
box-sizing: border-box;

src/plugins/upload/demo/small.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<template>
2+
<cl-upload v-model="value" small multiple draggable :size="50" />
3+
</template>
4+
5+
<script lang="ts" setup>
6+
import { ref } from "vue";
7+
8+
const value = ref("");
9+
</script>

0 commit comments

Comments
 (0)