66 lines
1.1 KiB
Vue
66 lines
1.1 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>
|