更新 upload 插件

This commit is contained in:
神仙都没用 2024-03-16 10:43:11 +08:00
parent 6fc89bc7d7
commit 94dadcafc2
5 changed files with 86 additions and 10 deletions

View File

@ -77,22 +77,30 @@
<!-- 工具 --> <!-- 工具 -->
<div class="cl-upload-item__actions"> <div class="cl-upload-item__actions">
<template v-if="media.isMedia"> <template v-if="media.isMedia">
<el-icon @click.stop="media.pause()" v-if="item.isPlay"> <el-icon
class="action-pause"
@click.stop="media.pause()"
v-if="item.isPlay"
>
<video-pause /> <video-pause />
</el-icon> </el-icon>
<el-icon @click.stop="media.play()" v-else> <el-icon class="action-play" @click.stop="media.play()" v-else>
<video-play /> <video-play />
</el-icon> </el-icon>
</template> </template>
<template v-else> <template v-else>
<el-icon @click.stop="preview"> <el-icon class="action-preview" @click.stop="preview">
<zoom-in /> <zoom-in />
</el-icon> </el-icon>
</template> </template>
<el-icon @click.stop="remove" v-if="!disabled || deletable"> <el-icon
class="action-delete"
@click.stop="remove"
v-if="!disabled || deletable"
>
<delete /> <delete />
</el-icon> </el-icon>
</div> </div>

View File

@ -6,7 +6,8 @@
`cl-upload--${type}`, `cl-upload--${type}`,
{ {
'is-disabled': disabled, 'is-disabled': disabled,
'is-multiple': multiple 'is-multiple': multiple,
'is-small': small
} }
]" ]"
> >
@ -59,6 +60,7 @@
:disabled="disabled" :disabled="disabled"
> >
<slot> <slot>
<!-- 拖拽方式 -->
<div class="cl-upload__demo is-dragger" v-if="drag"> <div class="cl-upload__demo is-dragger" v-if="drag">
<el-icon :size="46"> <el-icon :size="46">
<upload-filled /> <upload-filled />
@ -68,6 +70,7 @@
</div> </div>
</div> </div>
<!-- 点击方式 -->
<div class="cl-upload__demo" v-else> <div class="cl-upload__demo" v-else>
<el-icon :size="36"> <el-icon :size="36">
<component :is="icon" v-if="icon" /> <component :is="icon" v-if="icon" />
@ -109,6 +112,15 @@
:deletable="deletable" :deletable="deletable"
@remove="remove(index)" @remove="remove(index)"
/> />
<!-- 小图模式 -->
<el-icon
class="cl-upload__item-remove"
v-if="small"
@click="remove(index)"
>
<circle-close-filled />
</el-icon>
</div> </div>
</slot> </slot>
</el-upload> </el-upload>
@ -123,7 +135,7 @@ import { computed, ref, watch, type PropType, nextTick } from "vue";
import { isArray, isEmpty, isNumber } from "lodash-es"; import { isArray, isEmpty, isNumber } from "lodash-es";
import VueDraggable from "vuedraggable"; import VueDraggable from "vuedraggable";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { PictureFilled, UploadFilled } from "@element-plus/icons-vue"; import { PictureFilled, UploadFilled, CircleCloseFilled } from "@element-plus/icons-vue";
import { useForm } from "@cool-vue/crud"; import { useForm } from "@cool-vue/crud";
import { useCool } from "/@/cool"; import { useCool } from "/@/cool";
import { useBase } from "/$/base"; import { useBase } from "/$/base";
@ -159,6 +171,8 @@ const props = defineProps({
}, },
// //
size: [String, Number, Array], size: [String, Number, Array],
//
small: Boolean,
// //
icon: null, icon: null,
// //
@ -476,7 +490,7 @@ defineExpose({
} }
&__list { &__list {
display: inline-flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
@ -558,9 +572,50 @@ defineExpose({
} }
&.is-multiple { &.is-multiple {
.cl-upload__list {
margin-bottom: -5px;
}
.cl-upload__item { .cl-upload__item {
margin: 0 5px 5px 0; margin: 0 5px 5px 0;
} }
.cl-upload__footer {
margin-bottom: 5px;
}
}
&.is-small {
.cl-upload__demo {
.el-icon {
font-size: 20px !important;
}
.text {
display: none;
}
}
.cl-upload__item-remove {
position: absolute;
right: 0px;
top: 0px;
color: var(--el-color-danger);
background-color: #fff;
border-radius: 100%;
}
:deep(.cl-upload-item) {
.cl-upload-item__progress-bar,
.cl-upload-item__actions,
.cl-upload-item__tag {
display: none;
}
.cl-upload-item__progress-value {
font-size: 12px;
}
}
} }
&:not(.is-disabled) { &:not(.is-disabled) {

View File

@ -5,8 +5,8 @@ export default (): ModuleConfig => {
label: "文件上传", label: "文件上传",
description: "基于 el-upload 封装的文件上传组件", description: "基于 el-upload 封装的文件上传组件",
author: "COOL", author: "COOL",
version: "1.1.3", version: "1.2.1",
updateTime: "2024-03-13", updateTime: "2024-03-15",
demo: [ demo: [
{ {
name: "基础用法", name: "基础用法",
@ -16,6 +16,10 @@ export default (): ModuleConfig => {
name: "多图上传", name: "多图上传",
component: () => import("./demo/multiple.vue") component: () => import("./demo/multiple.vue")
}, },
{
name: "小图模式",
component: () => import("./demo/small.vue")
},
{ {
name: "文件上传", name: "文件上传",
component: () => import("./demo/file.vue") component: () => import("./demo/file.vue")

View File

@ -18,7 +18,7 @@ import { Upload } from "@element-plus/icons-vue";
border: 1px solid var(--el-border-color); border: 1px solid var(--el-border-color);
border-radius: 4px; border-radius: 4px;
padding: 5px 10px; padding: 5px 10px;
margin-bottom: 10px; margin-bottom: 5px;
font-size: 12px; font-size: 12px;
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;

View File

@ -0,0 +1,9 @@
<template>
<cl-upload v-model="value" small multiple draggable :size="50" />
</template>
<script lang="ts" setup>
import { ref } from "vue";
const value = ref("");
</script>