66 lines
1.2 KiB
Vue
66 lines
1.2 KiB
Vue
<template>
|
|
<nut-uploader
|
|
v-model:file-list="fileList"
|
|
:url="config.url"
|
|
:maximum="max"
|
|
:headers="config.headers"
|
|
@success="success"
|
|
@failure="failure"
|
|
:multiple="multiple"
|
|
>
|
|
</nut-uploader>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import {BASE_URL} from '@/utils/request'
|
|
import {computed, ref} from 'vue'
|
|
import Taro from '@tarojs/taro'
|
|
|
|
const props = defineProps({
|
|
list: {
|
|
type: Array,
|
|
default: () => []
|
|
},
|
|
max: {
|
|
type: Number,
|
|
default: 1
|
|
},
|
|
multiple: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
});
|
|
|
|
const emits = defineEmits(['update:list'])
|
|
|
|
const fileList = computed({
|
|
get: () => props.list,
|
|
set: (val) => emits('update:list', val)
|
|
});
|
|
|
|
const config = ref({
|
|
url: `${BASE_URL}/upload`,
|
|
headers: {
|
|
token: Taro.getStorageSync('token')
|
|
},
|
|
});
|
|
|
|
const success = (res: any) => {
|
|
const data = JSON.parse(res.responseText.data)
|
|
res.fileItem.url = data.data.data
|
|
Taro.showToast({
|
|
title: '上传成功',
|
|
icon: 'success'
|
|
});
|
|
};
|
|
|
|
const failure = () => {
|
|
Taro.showToast({
|
|
title: '上传失败',
|
|
icon: 'error'
|
|
});
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss"></style>
|