【更新】批量操作组件优化且加入图标颜色支持,上传组件优多文件上传且提供主动获取文件方法

pull/121/head v2.2.10
小诺 1 year ago committed by 俞宝山
parent ddae7f6ef3
commit 004bb60d86

@ -5,9 +5,9 @@
@visibleChange="batchVisibleChange" @visibleChange="batchVisibleChange"
@confirm="deleteBatch" @confirm="deleteBatch"
> >
<a-button :type="props.buttonType" :danger="props.buttonDanger"> <a-button :type="props.buttonType" :danger="props.buttonDanger" :size="props.size" :loading="buttonLoading">
<template #icon v-if="props.icon"> <template #icon v-if="props.icon">
<component :is="props.icon" /> <component :is="props.icon" :style="{ color: props.color }" />
</template> </template>
{{ props.buttonName }} {{ props.buttonName }}
</a-button> </a-button>
@ -18,6 +18,7 @@
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
const batchVisible = ref(false) const batchVisible = ref(false)
const emit = defineEmits({ batchCallBack: null }) const emit = defineEmits({ batchCallBack: null })
const buttonLoading = ref(false)
const props = defineProps({ const props = defineProps({
buttonName: { buttonName: {
type: String, type: String,
@ -35,9 +36,17 @@
type: String, type: String,
default: () => '' default: () => ''
}, },
size: {
type: String,
default: () => 'middle'
},
selectedRowKeys: { selectedRowKeys: {
type: Array, type: Array,
default: () => [] default: () => []
},
color: {
type: String,
default: () => ''
} }
}) })
// //
@ -64,4 +73,12 @@
// //
emit('batchCallBack', params) emit('batchCallBack', params)
} }
// loading
const loading = () => {
buttonLoading.value = true
}
// loading
const closeLoading = () => {
buttonLoading.value = true
}
</script> </script>

@ -5,11 +5,11 @@
name="file" name="file"
:action="action" :action="action"
:headers="headers" :headers="headers"
:maxCount="props.uploadMumber" :maxCount="props.uploadNumber"
@change="handleChange" @change="handleChange"
> >
<a-button> <a-button>
<upload-outlined></upload-outlined> <upload-outlined />
上传 上传
</a-button> </a-button>
</a-upload> </a-upload>
@ -21,11 +21,11 @@
:multiple="true" :multiple="true"
:action="action" :action="action"
:headers="headers" :headers="headers"
:maxCount="props.uploadMumber" :maxCount="props.uploadNumber"
@change="handleChange" @change="handleChange"
> >
<p class="ant-upload-drag-icon"> <p class="ant-upload-drag-icon">
<inbox-outlined></inbox-outlined> <inbox-outlined />
</p> </p>
<p class="ant-upload-text">单击或拖动文件到此区域上传</p> <p class="ant-upload-text">单击或拖动文件到此区域上传</p>
<p class="ant-upload-hint"></p> <p class="ant-upload-hint"></p>
@ -53,7 +53,7 @@
required: false required: false
}, },
// //
uploadMumber: { uploadNumber: {
type: Number, type: Number,
default: 1, default: 1,
required: false required: false
@ -61,11 +61,13 @@
}) })
const action = sysConfig.API_URL + props.action const action = sysConfig.API_URL + props.action
// 使
const handleChange = () => { const handleChange = () => {
// 使
let result = [] let result = []
for (let a = 0; a < props.uploadMumber; a++) { for (let a = 0; a < props.uploadNumber; a++) {
const file = fileList.value[a] const file = fileList.value[a]
if (file.status === 'done' && file.response && file.response.code === 200) { if (file && file.status === 'done' && file.response && file.response.code === 200) {
const resultObj = { const resultObj = {
name: file.name, name: file.name,
url: file.response.data url: file.response.data
@ -77,4 +79,27 @@
emit('uploadDone', result) emit('uploadDone', result)
} }
} }
// DOM
const uploadFileList = () => {
if (fileList.value) {
const result = []
//
fileList.value.forEach((item) => {
const obj = {
name: item.name,
type: item.type,
size: item.size,
url: item.response.data
}
result.push(obj)
})
return result
} else {
return []
}
}
//
defineExpose({
uploadFileList
})
</script> </script>

Loading…
Cancel
Save