mirror of
https://gitee.com/wot-design-uni/wot-design-uni.git
synced 2025-12-06 09:08:51 +08:00
* refactor: ♻️ typescript支持增强 * refactor: ♻️ typescript支持增强 * refactor: ♻️ typescript支持增强 * refactor: ♻️ typescript支持增强 * refactor: ♻️ typescript支持增强 --------- Co-authored-by: xuqingkai <xuqingkai@hd123.com>
214 lines
6.1 KiB
Vue
214 lines
6.1 KiB
Vue
<template>
|
||
<page-wraper>
|
||
<!-- #ifdef MP-WEIXIN -->
|
||
<wd-privacy-popup></wd-privacy-popup>
|
||
<!-- #endif -->
|
||
<wd-message-box></wd-message-box>
|
||
<wd-toast id="wd-toast"></wd-toast>
|
||
<demo-block title="基本用法">
|
||
<wd-upload :file-list="fileList1" :action="action" @change="handleChange1"></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="多选上传">
|
||
<wd-upload :file-list="fileList2" multiple :action="action" @change="handleChange2"></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="最大上传数限制">
|
||
<wd-upload :file-list="fileList3" :limit="3" :action="action" @change="handleChange3"></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="拦截预览图片操作">
|
||
<wd-upload :file-list="fileList4" :action="action" @change="handleChange4" :before-preview="beforePreview"></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="上传前置处理">
|
||
<wd-upload :file-list="fileList5" :action="action" @change="handleChange5" :before-upload="beforeUpload"></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="移除图片前置处理">
|
||
<wd-upload :file-list="fileList6" :action="action" @change="handleChange6" :before-remove="beforeRemove"></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="上传状态钩子">
|
||
<wd-upload
|
||
:file-list="fileList7"
|
||
:action="action"
|
||
@change="handleChange7"
|
||
@success="handleSuccess"
|
||
@fail="handleFail"
|
||
@progress="handleProgess"
|
||
></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="禁用">
|
||
<wd-upload :file-list="fileList8" disabled :action="action" @change="handleChange8"></wd-upload>
|
||
</demo-block>
|
||
<demo-block title="自定义唤起上传样式">
|
||
<wd-upload :file-list="fileList9" :action="action" @change="handleChange9" use-default-slot>
|
||
<wd-button>自定义唤起样式</wd-button>
|
||
</wd-upload>
|
||
</demo-block>
|
||
<demo-block title="选择文件前置处理">
|
||
<wd-upload :file-list="fileList10" :action="action" @change="handleChange10" :before-choose="beforeChoose"></wd-upload>
|
||
</demo-block>
|
||
|
||
<!-- <demo-block title="上传至oss">
|
||
<wd-upload :file-list="fileList11" action="https://xxx.aliyuncs.com" :build-form-data="buildFormData" @change="handleChange11"></wd-upload>
|
||
</demo-block> -->
|
||
</page-wraper>
|
||
</template>
|
||
<script lang="ts" setup>
|
||
import { useToast, useMessage } from '@/uni_modules/wot-design-uni'
|
||
import { ref } from 'vue'
|
||
|
||
const action: string = 'https://ftf.jd.com/api/uploadImg'
|
||
const fileList1 = ref<any[]>([
|
||
{
|
||
url: 'https://img12.360buyimg.com//n0/jfs/t1/29118/6/4823/55969/5c35c16bE7c262192/c9fdecec4b419355.jpg'
|
||
}
|
||
])
|
||
const fileList2 = ref<any[]>([
|
||
{
|
||
url: 'https://img12.360buyimg.com//n0/jfs/t1/29118/6/4823/55969/5c35c16bE7c262192/c9fdecec4b419355.jpg'
|
||
}
|
||
])
|
||
const fileList3 = ref([])
|
||
const fileList4 = ref([])
|
||
const fileList5 = ref([])
|
||
const fileList6 = ref([])
|
||
const fileList7 = ref([])
|
||
const fileList8 = ref([])
|
||
const fileList9 = ref([])
|
||
const fileList10 = ref([])
|
||
const fileList11 = ref([])
|
||
|
||
const messageBox = useMessage()
|
||
const toast = useToast()
|
||
|
||
const beforeChoose = ({ file, resolve }: any) => {
|
||
messageBox
|
||
.confirm({
|
||
msg: '是否选择',
|
||
title: '提示'
|
||
})
|
||
.then(() => {
|
||
resolve(true)
|
||
})
|
||
.catch(() => {
|
||
toast.show('取消选择操作')
|
||
})
|
||
}
|
||
|
||
const beforePreview = ({ resolve }: any) => {
|
||
messageBox
|
||
.confirm({
|
||
msg: '是否预览图片',
|
||
title: '提示'
|
||
})
|
||
.then(() => {
|
||
resolve(true)
|
||
})
|
||
.catch(() => {
|
||
toast.show('取消预览操作')
|
||
})
|
||
}
|
||
const beforeUpload = ({ files, resolve }: any) => {
|
||
messageBox
|
||
.confirm({
|
||
msg: '是否上传',
|
||
title: '提示'
|
||
})
|
||
.then(() => {
|
||
console.log(files, 'files')
|
||
resolve(true)
|
||
})
|
||
.catch(() => {
|
||
toast.show('取消上传操作')
|
||
})
|
||
}
|
||
const beforeRemove = ({ file, fileList, resolve }: any) => {
|
||
messageBox
|
||
.confirm({
|
||
msg: '是否删除',
|
||
title: '提示'
|
||
})
|
||
.then(() => {
|
||
toast.success('删除成功')
|
||
resolve(true)
|
||
})
|
||
.catch(() => {
|
||
toast.show('取消删除操作')
|
||
})
|
||
}
|
||
|
||
const buildFormData = ({ file, formData, resolve }: any) => {
|
||
let imageName = file.url.substring(file.url.lastIndexOf('/') + 1)
|
||
// #ifdef H5
|
||
// h5端url中不包含扩展名,可以拼接一下name
|
||
imageName = imageName + file.name
|
||
// #endif
|
||
const signature = 'your <signatureString>'
|
||
const ossAccessKeyId = 'your ossAccessKeyId'
|
||
const policy = 'your <policyBase64Str>'
|
||
const key = `20231120/${imageName}`
|
||
const success_action_status = '200' // 将上传成功状态码设置为200,默认状态码为204
|
||
|
||
formData = {
|
||
...formData,
|
||
key: key,
|
||
OSSAccessKeyId: ossAccessKeyId,
|
||
policy: policy,
|
||
signature: signature,
|
||
success_action_status: success_action_status
|
||
}
|
||
resolve(formData)
|
||
}
|
||
|
||
const handleSuccess1 = (res: any) => {
|
||
console.log('成功', res)
|
||
}
|
||
const handleFail1 = (res: any) => {
|
||
console.log('失败', res)
|
||
}
|
||
const handleProgess1 = (res: any) => {
|
||
console.log('加载中', res)
|
||
}
|
||
|
||
function handleSuccess(event: any) {
|
||
console.log('成功', event)
|
||
}
|
||
function handleFail(event: any) {
|
||
console.log('失败', event)
|
||
}
|
||
function handleProgess(event: any) {
|
||
console.log('加载中', event)
|
||
}
|
||
function handleChange1({ fileList }: any) {
|
||
fileList1.value = fileList
|
||
}
|
||
function handleChange2({ fileList }: any) {
|
||
fileList2.value = fileList
|
||
}
|
||
function handleChange3({ fileList }: any) {
|
||
fileList3.value = fileList
|
||
}
|
||
function handleChange4({ fileList }: any) {
|
||
fileList4.value = fileList
|
||
}
|
||
function handleChange5({ fileList }: any) {
|
||
fileList5.value = fileList
|
||
}
|
||
function handleChange6({ fileList }: any) {
|
||
fileList6.value = fileList
|
||
}
|
||
function handleChange7({ fileList }: any) {
|
||
fileList7.value = fileList
|
||
}
|
||
function handleChange8({ fileList }: any) {
|
||
fileList8.value = fileList
|
||
}
|
||
function handleChange9({ fileList }: any) {
|
||
fileList9.value = fileList
|
||
}
|
||
function handleChange10({ fileList }: any) {
|
||
fileList10.value = fileList
|
||
}
|
||
function handleChange11({ fileList }: any) {
|
||
fileList11.value = fileList
|
||
}
|
||
</script>
|
||
<style lang="scss" scoped></style>
|