TDesign----上传组件,批量上传但不自动上传

首先,我解释一下,什么叫批量上传但不自动长传。类似于一个表单,有文字有图片,后端要求,点击提交时,先发送文字部分的内容,返回一个id给你,再通过这个id上传一张或几张图片。

1.TDesign的上传组件

TDesign确实有批量上传但不自动上传的组件,但是他会多两个按钮"取消上传","点击上传",我当时也是想通过这个组件来实现,但是我再怎么也去不掉这两个按钮,或者去掉了,就自动上传了。也不能说,让两个按钮留着,让用户点击完”提交“再点一下"点击上传"吧

最后通过这个组件来进行改造的。

2.改造组件

不想批量上传,auto-upload设置为"false"
然后解释一下其他几个参数的意思:

  1. multiple: 这是一个布尔属性,如果设置为true,则允许用户在文件选择对话框中选择多个文件。如果设置为false,用户只能选择一个文件。这通常用于指定是否支持批量上传。
  2. allow-upload-duplicate-file: 这也是一个布尔属性,如果设置为true,则允许用户上传相同的文件多次。如果设置为false,则不允许上传重复的文件。这通常用于确定是否允许上传文件的重复副本。
  3. one-file-success: 多文件上传,一个文件一个请求场景,每个文件也会单独触发上传成功的事件。

  4. showThumbnail: 这是一个布尔属性,如果设置为true,则在上传组件中显示文件的缩略图(通常用于图像文件)。如果设置为false,则不显示文件的缩略图。
<div class="upload">
          <p>上传截图:</p>
          <t-upload
            ref="uploadRef"
            v-model="files"
            :action="upload.actionUrl"
            :data="upload.data"
            :multiple="multiple"
            :auto-upload="false"
            :size-limit="{ size: 10, unit: 'MB' }"
            :max="3"
            :allow-upload-duplicate-file="true"
            @fail="handleFail"
            @success="handleSuccess"
            @one-file-success="onOneFileSuccess"
            :theme="'image'"
            :showThumbnail="true"
            @remove="deleteImg"
            class="upload_image"
          />
        </div>
        <div class="btn">
            <t-button @click="submit" v-else>提交反馈</t-button>
        </div>
const uploadRef = ref();
const files = ref([]);
const multiple = ref(true);
const upload = reactive({
  actionUrl: window.location.origin + `这里写后端给的接口`,
  data: {
    意见反馈id: "",
  },//data里面是上传图片时,需要带的参数
});
const uploadFiles = () => {
  uploadRef.value.uploadFiles();
};
const handleFail = ({ file }) => {
  MessagePlugin.error(`文件 ${file.name} 上传失败`);
};
const handleSuccess = (params) => {
  MessagePlugin.success("提交成功");//这个函数是在uploadFiles 成功调用之后才会调用
};
const onOneFileSuccess = (params) => {
  //   console.log("onOneFileSuccess", params);
};

//删除图片
const deleteImg = (e) => {
  
};

//提交反馈
const submit = () => {
  //这里先请求文字内容部分的接口,获取后端返回的id
  $_updateFeedbackDetail({
    意见反馈id: "",
    data: {
      子系统名: palte.value,
      内容: textareaValue.value,
    },
  }).then((res) => {
    if (res.data.msg == "成功") {
      upload.data.意见反馈id = res.data.data;
      if (files.value.length > 0) {//为什么要写>0,因为有可能用户不上传图片,那就不需要调用上传图片的函数了
        uploadFiles();//后端返回id成功之后,再调用上传图片的函数
      }    
    }
  });
};

好了,参考代码试试吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值