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成功之后,再调用上传图片的函数
      }    
    }
  });
};

好了,参考代码试试吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装 tdesign-miniprogram 可以通过以下步骤: 1. 首先在微信开发者工具中新建一个小程序项目,并将项目目录设置为合适的路径。 2. 打开命令行工具(如终端或者 Git Bash),在项目目录下运行以下命令安装 tdesign-miniprogram: ``` npm install --save tdesign-miniprogram ``` 3. 安装完成后,在微信开发者工具中打开项目,将 tdesign-miniprogram 中的 dist 文件夹和 utils 文件夹复制到项目目录下。 4. 在 app.json 文件中添加以下内容: ``` { "style": "app.wxss", "usingComponents": { "van-icon": "/utils/vant/icon/index", "van-button": "/utils/vant/button/index", "van-dialog": "/utils/vant/dialog/index", "van-toast": "/utils/vant/toast/index", "van-loading": "/utils/vant/loading/index", "van-cell": "/utils/vant/cell/index", "van-cell-group": "/utils/vant/cell-group/index", "van-form": "/utils/vant/form/index", "van-field": "/utils/vant/field/index", "van-checkbox": "/utils/vant/checkbox/index", "van-checkbox-group": "/utils/vant/checkbox-group/index", "van-radio": "/utils/vant/radio/index", "van-radio-group": "/utils/vant/radio-group/index", "van-switch": "/utils/vant/switch/index", "van-dialog-style": "/dist/vant/dialog/dialog.wxss", "van-cell-style": "/dist/vant/cell/cell.wxss", "vant-css": "/dist/vant/index.wxss" } } ``` 5. 在 app.wxss 中添加以下代码: ``` @import "/utils/vant/index.wxss"; ``` 6. 至此,tdesign-miniprogram 的安装就完成了。你可以在需要使用组件的页面中,使用如下代码进行调用: ``` <van-button type="primary">按钮</van-button> ``` 这样可以在页面中添加一个主题为 primary 的按钮组件。更多组件的使用方法可以参考 tdesign-miniprogram 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值