不如摸鱼去 201e7a12b9
feat: typescript类型支持增强 (#192)
* refactor: ♻️  typescript支持增强

* refactor: ♻️  typescript支持增强

* refactor: ♻️  typescript支持增强

* refactor: ♻️  typescript支持增强

* refactor: ♻️  typescript支持增强

---------

Co-authored-by: xuqingkai <xuqingkai@hd123.com>
2024-03-18 22:36:12 +08:00

214 lines
6.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>