Browse Source

fix(uploader): method clearUploadQueue #1597

richard1015 3 years ago
parent
commit
43e3b3bb9f

+ 13 - 7
src/packages/__VUE/uploader/demo.vue

@@ -40,15 +40,15 @@
     <nut-uploader :url="uploadUrl" maximum="5" :auto-upload="false" ref="uploadRef"></nut-uploader>
     <br />
     <nut-button type="success" size="small" @click="submitUpload">{{ translate('title11') }}</nut-button>
+    <nut-button type="danger" size="small" @click="clearUpload">{{ translate('title14') }}</nut-button>
     <h2>{{ translate('title12') }}</h2>
     <nut-uploader disabled></nut-uploader>
   </div>
 </template>
 
 <script lang="ts">
-import { ref, computed } from 'vue';
+import { ref, reactive } from 'vue';
 import { createComponent } from '@/packages/utils/create';
-import { FileItem } from './index.vue';
 const { createDemo, translate } = createComponent('uploader');
 import { useTranslate } from '@/sites/assets/util/useTranslate';
 const initTranslate = () =>
@@ -66,9 +66,10 @@ const initTranslate = () =>
       title8: '图片压缩(在 beforeupload 钩子中处理)',
       title9: '自定义数据 FormData 、 headers ',
       title10: '选中文件后,通过按钮手动执行上传',
-      title11: '执行上传',
+      title11: '手动执行上传',
       title12: '禁用状态',
-      title13: '自定义 xhr 上传方式(before-xhr-upload)'
+      title13: '自定义 xhr 上传方式(before-xhr-upload)',
+      title14: '手动清空上传'
     },
     'en-US': {
       basic: 'Basic Usage',
@@ -83,9 +84,10 @@ const initTranslate = () =>
       title8: 'Image compression (handled in the beforeupload hook)',
       title9: 'Custom data FormData , headers',
       title10: 'Once the file is selected, manually perform the upload via the button',
-      title11: 'Perform upload',
+      title11: 'Manual upload',
       title12: 'Disabled state',
-      title13: 'Customize XHR upload (before-xhr-upload)'
+      title13: 'Customize XHR upload (before-xhr-upload)',
+      title14: 'Clear upload manually'
     }
   });
 export default createDemo({
@@ -97,7 +99,7 @@ export default createDemo({
       custom: 'test'
     };
 
-    const defaultFileList = computed(() => [
+    const defaultFileList = reactive([
       {
         name: 'file 1.png',
         url: 'https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif',
@@ -174,6 +176,9 @@ export default createDemo({
     const submitUpload = () => {
       uploadRef.value.submit();
     };
+    const clearUpload = () => {
+      uploadRef.value.clearUploadQueue();
+    };
     return {
       onOversize,
       beforeUpload,
@@ -186,6 +191,7 @@ export default createDemo({
       formData,
       uploadRef,
       submitUpload,
+      clearUpload,
       translate
     };
   }

+ 11 - 6
src/packages/__VUE/uploader/doc.en-US.md

@@ -35,11 +35,11 @@ app.use(Progress);
   <nut-uploader :url="uploadUrl" v-model:file-list="defaultFileList" maximum="3" multiple></nut-uploader>
 </template>
 <script lang="ts">
-import { ref } from 'vue';
+import { reactive } from 'vue';
 export default {
   setup() {
      const uploadUrl = 'https://xxxxx';
-     const defaultFileList = ref([
+     const defaultFileList = reactive([
       {
         name: 'file 1.png',
         url: 'https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif',
@@ -81,11 +81,11 @@ export default {
   </nut-uploader>
 </template>
 <script lang="ts">
-import { ref } from 'vue';
+import { reactive } from 'vue';
 export default {
   setup() {
      const uploadUrl = 'https://xxxxx';
-     const defaultFileList = ref([
+     const defaultFileList = reactive([
       {
         name: 'file 1.png',
         url: 'https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif',
@@ -325,6 +325,7 @@ export default {
   <nut-uploader :url="uploadUrl" maximum="5" :auto-upload="false" ref="uploadRef"></nut-uploader>
   <br />
   <nut-button type="success" size="small" @click="submitUpload">Perform upload</nut-button>
+  <nut-button type="danger" size="small" @click="clearUpload">Clear upload</nut-button>
 </template>
 <script lang="ts">
 import { ref } from 'vue';
@@ -335,10 +336,14 @@ export default {
     const submitUpload = () => {
       uploadRef.value.submit();
     };
+    const clearUpload = () => {
+      uploadRef.value.clearUploadQueue();
+    };
     return {
       uploadUrl,
       uploadRef,
-      submitUpload
+      submitUpload,
+      clearUpload
     };
   }
 }
@@ -419,4 +424,4 @@ Use [ref](https://vuejs.org/guide/essentials/template-refs.html#template-refs) t
 | Name             | Description                                                                                 | Arguments | Return value |
 |------------------|---------------------------------------------------------------------------------------------|-----------|--------------|
 | submit           | Manual upload mode, perform upload operation                                                | -         | -            |
-| clearUploadQueue | Empty the selected file queue (this method is generally used when uploading in manual mode) | -         | -            |
+| clearUploadQueue | Empty the selected file queue (this method is generally used when uploading in manual mode) | index         | -            |

+ 42 - 37
src/packages/__VUE/uploader/doc.md

@@ -35,11 +35,11 @@ app.use(Progress);
   <nut-uploader :url="uploadUrl" v-model:file-list="defaultFileList" maximum="3" multiple></nut-uploader>
 </template>
 <script lang="ts">
-import { ref } from 'vue';
+import { reactive } from 'vue';
 export default {
   setup() {
      const uploadUrl = 'https://xxxxx';
-     const defaultFileList = ref([
+     const defaultFileList = reactive([
       {
         name: '文件1.png',
         url: 'https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif',
@@ -81,11 +81,11 @@ export default {
   </nut-uploader>
 </template>
 <script lang="ts">
-import { ref } from 'vue';
+import { reactive } from 'vue';
 export default {
   setup() {
      const uploadUrl = 'https://xxxxx';
-     const defaultFileList = ref([
+     const defaultFileList = reactive([
       {
         name: '文件1.png',
         url: 'https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif',
@@ -324,7 +324,8 @@ export default {
 <template>
   <nut-uploader :url="uploadUrl" maximum="5" :auto-upload="false" ref="uploadRef"></nut-uploader>
   <br />
-  <nut-button type="success" size="small" @click="submitUpload">执行上传</nut-button>
+  <nut-button type="success" size="small" @click="submitUpload">手动执行上传</nut-button>
+  <nut-button type="danger" size="small" @click="clearUpload">手动清空上传</nut-button>
 </template>
 <script lang="ts">
 import { ref } from 'vue';
@@ -335,10 +336,14 @@ export default {
     const submitUpload = () => {
       uploadRef.value.submit();
     };
+    const clearUpload = () => {
+      uploadRef.value.clearUploadQueue();
+    };
     return {
       uploadUrl,
       uploadRef,
-      submitUpload
+      submitUpload,
+      clearUpload
     };
   }
 }
@@ -358,33 +363,33 @@ export default {
 
 ### Prop
 
-| 字段              | 说明                                                                                                                                                                                   | 类型                              | 默认值           |
-|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------|------------------|
-| auto-upload       | 是否在选取文件后立即进行上传,false 时需要手动执行 ref submit 方法进行上传                                                                                                             | Boolean                           | true             |
-| name              | `input` 标签 `name` 的名称,发到后台的文件参数名                                                                                                                                       | String                            | "file"           |
-| url               | 上传服务器的接口地址                                                                                                                                                                   | String                            | -                |
-| v-model:file-list | 默认已经上传的文件列表                                                                                                                                                                 | FileItem[]                        | []               |
-| is-preview        | 是否上传成功后展示预览图                                                                                                                                                               | Boolean                           | true             |
-| is-deletable      | 是否展示删除按钮                                                                                                                                                                       | Boolean                           | true             |
-| method            | 上传请求的 http method                                                                                                                                                                 | String                            | "post"           |
-| list-type         | 上传列表的内建样式,支持两种基本样式 picture、list                                                                                                                                     | String                            | "picture"        |
-| capture           | 图片[选取模式](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#htmlattrdefcapture),直接调起摄像头                                                                     | String                            | false            |
-| maximize          | 可以设定最大上传文件的大小(字节)                                                                                                                                                     | Number丨String                    | Number.MAX_VALUE |
-| maximum           | 文件上传数量限制                                                                                                                                                                       | Number丨String                    | 1                |
-| clear-input       | 是否需要清空`input`内容,设为`true`支持重复选择上传同一个文件                                                                                                                          | Boolean                           | true             |
-| accept            | 允许上传的文件类型,[详细说明](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#%E9%99%90%E5%88%B6%E5%85%81%E8%AE%B8%E7%9A%84%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B) | String                            | *                |
-| headers           | 设置上传的请求头部                                                                                                                                                                     | Object                            | {}               |
-| data              | 附加上传的信息 formData                                                                                                                                                                | Object                            | {}               |
-| upload-icon       | 上传区域[图标名称](#/icon)或图片链接                                                                                                                                                   | String                            | "photograph"     |
-| upload-icon-size  | 上传区域[图标尺寸](#/icon)大小,如 `20px` `2em` `2rem`                                                                                                                                 | String or Number                  | -                |
-| xhr-state         | 接口响应的成功状态(status)值                                                                                                                                                         | Number                            | 200              |
-| with-credentials  | 支持发送 cookie 凭证信息                                                                                                                                                               | Boolean                           | false            |
-| multiple          | 是否支持文件多选                                                                                                                                                                       | Boolean                           | false            |
-| disabled          | 是否禁用文件上传                                                                                                                                                                       | Boolean                           | false            |
-| timeout           | 超时时间,单位为毫秒                                                                                                                                                                   | Number丨String                    | 1000 * 30        |
-| before-upload     | 上传前的函数需要返回一个`Promise`对象                                                                                                                                                  | Function                          | null             |
-| before-xhr-upload`v3.2.1` | 执行 XHR 上传时,自定义方式                                                                                                                                                                          | Function(xhr,option)                          | null             |
-| before-delete     | 除文件时的回调,返回值为 false 时不移除。支持返回一个 `Promise` 对象,`Promise` 对象 resolve(false) 或 reject 时不移除                                                                 | Function(file): boolean 丨Promise | -                |
+| 字段                      | 说明                                                                                                                                                                                   | 类型                              | 默认值           |
+|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------|------------------|
+| auto-upload               | 是否在选取文件后立即进行上传,false 时需要手动执行 ref submit 方法进行上传                                                                                                             | Boolean                           | true             |
+| name                      | `input` 标签 `name` 的名称,发到后台的文件参数名                                                                                                                                       | String                            | "file"           |
+| url                       | 上传服务器的接口地址                                                                                                                                                                   | String                            | -                |
+| v-model:file-list         | 默认已经上传的文件列表                                                                                                                                                                 | FileItem[]                        | []               |
+| is-preview                | 是否上传成功后展示预览图                                                                                                                                                               | Boolean                           | true             |
+| is-deletable              | 是否展示删除按钮                                                                                                                                                                       | Boolean                           | true             |
+| method                    | 上传请求的 http method                                                                                                                                                                 | String                            | "post"           |
+| list-type                 | 上传列表的内建样式,支持两种基本样式 picture、list                                                                                                                                     | String                            | "picture"        |
+| capture                   | 图片[选取模式](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#htmlattrdefcapture),直接调起摄像头                                                                     | String                            | false            |
+| maximize                  | 可以设定最大上传文件的大小(字节)                                                                                                                                                     | Number丨String                    | Number.MAX_VALUE |
+| maximum                   | 文件上传数量限制                                                                                                                                                                       | Number丨String                    | 1                |
+| clear-input               | 是否需要清空`input`内容,设为`true`支持重复选择上传同一个文件                                                                                                                          | Boolean                           | true             |
+| accept                    | 允许上传的文件类型,[详细说明](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/file#%E9%99%90%E5%88%B6%E5%85%81%E8%AE%B8%E7%9A%84%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B) | String                            | *                |
+| headers                   | 设置上传的请求头部                                                                                                                                                                     | Object                            | {}               |
+| data                      | 附加上传的信息 formData                                                                                                                                                                | Object                            | {}               |
+| upload-icon               | 上传区域[图标名称](#/icon)或图片链接                                                                                                                                                   | String                            | "photograph"     |
+| upload-icon-size          | 上传区域[图标尺寸](#/icon)大小,如 `20px` `2em` `2rem`                                                                                                                                 | String or Number                  | -                |
+| xhr-state                 | 接口响应的成功状态(status)值                                                                                                                                                         | Number                            | 200              |
+| with-credentials          | 支持发送 cookie 凭证信息                                                                                                                                                               | Boolean                           | false            |
+| multiple                  | 是否支持文件多选                                                                                                                                                                       | Boolean                           | false            |
+| disabled                  | 是否禁用文件上传                                                                                                                                                                       | Boolean                           | false            |
+| timeout                   | 超时时间,单位为毫秒                                                                                                                                                                   | Number丨String                    | 1000 * 30        |
+| before-upload             | 上传前的函数需要返回一个`Promise`对象                                                                                                                                                  | Function                          | null             |
+| before-xhr-upload`v3.2.1` | 执行 XHR 上传时,自定义方式                                                                                                                                                            | Function(xhr,option)             | null             |
+| before-delete             | 除文件时的回调,返回值为 false 时不移除。支持返回一个 `Promise` 对象,`Promise` 对象 resolve(false) 或 reject 时不移除                                                                 | Function(file): boolean 丨Promise | -                |
 
 
 
@@ -416,7 +421,7 @@ export default {
 
 通过 [ref](https://vuejs.org/guide/essentials/template-refs.html#template-refs) 可以获取到 Uploader 实例并调用实例方法
 
-| 方法名           | 说明                                                       | 参数 | 返回值 |
-|------------------|------------------------------------------------------------|------|--------|
-| submit           | 手动上传模式,执行上传操作                                 | -    | -      |
-| clearUploadQueue | 清空已选择的文件队列(该方法一般配合在手动模式上传时使用) | -    | -      |
+| 方法名           | 说明                                                       | 参数  | 返回值 |
+|------------------|------------------------------------------------------------|-------|--------|
+| submit           | 手动上传模式,执行上传操作                                 | -     | -      |
+| clearUploadQueue | 清空已选择的文件队列(该方法一般配合在手动模式上传时使用) | index | -      |

+ 38 - 33
src/packages/__VUE/uploader/doc.taro.md

@@ -137,7 +137,8 @@ export default {
 ``` html 
 <nut-uploader :url="uploadUrl" maximum="5" :auto-upload="false" ref="uploadRef"></nut-uploader>
 <br />
-<nut-button type="success" size="small" @click="submitUpload">执行上传</nut-button>
+<nut-button type="success" size="small" @click="submitUpload">手动执行上传</nut-button>
+<nut-button type="success" size="small" @click="clearUpload">手动清空上传</nut-button>
 ```
 
 ### 禁用状态
@@ -147,14 +148,14 @@ export default {
 ```
 
 ``` javascript
-import { ref } from 'vue';
+import { ref,reactive } from 'vue';
 setup() {
   const uploadUrl = 'http://服务器地址';
   const progressPercentage = ref<string | number>(0);
   const formData = {
     custom: 'test'
   };
-  const defaultFileList = ref([
+  const defaultFileList = reactive([
     {
       name: '文件1.png',
       url: 'https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif',
@@ -208,6 +209,9 @@ setup() {
   const submitUpload = () => {
     uploadRef.value.submit();
   };
+  const clearUpload = () => {
+    uploadRef.value.clearUploadQueue();
+  };
   return {
     onOversize,
     onDelete,
@@ -217,37 +221,38 @@ setup() {
     defaultFileList,
     formData,
     uploadRef,
-    submitUpload
+    submitUpload,
+    clearUpload
   };
 }
 ```
 
 ### Prop
 
-| 字段              | 说明                                                                                                                   | 类型                              | 默认值                    |
-|-------------------|------------------------------------------------------------------------------------------------------------------------|-----------------------------------|---------------------------|
-| auto-upload       | 是否在选取文件后立即进行上传,false 时需要手动执行 ref submit 方法进行上传                                             | Boolean                           | true                      |
-| name              | 发到后台的文件参数名                                                                                                   | String                            | "file"                    |
-| url               | 上传服务器的接口地址                                                                                                   | String                            | -                         |
-| v-model:file-list | 默认已经上传的文件列表                                                                                                 | FileItem[]                        | []                        |
-| is-preview        | 是否上传成功后展示预览图                                                                                               | Boolean                           | true                      |
-| is-deletable      | 是否展示删除按钮                                                                                                       | Boolean                           | true                      |
-| method            | 上传请求的 http method                                                                                                 | String                            | "post"                    |
-| list-type         | 上传列表的内建样式,支持两种基本样式 picture、list                                                                     | String                            | "picture"                 |
-| source-type       | [选择图片的来源](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)                 | String                            | ['album','camera']        |
-| maximize          | 可以设定最大上传文件的大小(字节)                                                                                     | Number丨String                    | 9                         |
-| maximum           | 文件上传数量限制                                                                                                       | Number丨String                    | 1                         |
-| size-type         | 选择图片的来源,[详细说明](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)       | String                            | ['original','compressed'] |
-| headers           | 设置上传的请求头部                                                                                                     | Object                            | {}                        |
-| data              | 附加上传的信息 formData                                                                                                | Object                            | {}                        |
-| upload-icon       | 上传区域[图标名称](#/icon)或图片链接                                                                                   | String                            | "photograph"              |
-| upload-icon-size  | 上传区域[图标尺寸](#/icon)大小,如 `20px` `2em` `2rem`                                                                 | String or Number                  | -                         |
-| xhr-state         | 接口响应的成功状态(status)值                                                                                         | Number                            | 200                       |
-| disabled          | 是否禁用文件上传                                                                                                       | Boolean                           | false                     |
-| timeout           | 超时时间,单位为毫秒                                                                                                   | Number丨String                    | 1000 * 30                 |
-| before-upload     | 上传前的函数需要返回一个`Promise`对象                                                                                                                                                  | Function                          | null             |
-| before-xhr-upload`v3.2.1` | 执行 Taro.uploadFile 上传时,自定义方式                                                                                                                                                                          | Function(Taro.uploadFile,option)                          | null             |
-| before-delete     | 除文件时的回调,返回值为 false 时不移除。支持返回一个 `Promise` 对象,`Promise` 对象 resolve(false) 或 reject 时不移除 | Function(file): boolean 丨Promise | -                         |
+| 字段                      | 说明                                                                                                                   | 类型                              | 默认值                    |
+|---------------------------|------------------------------------------------------------------------------------------------------------------------|-----------------------------------|---------------------------|
+| auto-upload               | 是否在选取文件后立即进行上传,false 时需要手动执行 ref submit 方法进行上传                                             | Boolean                           | true                      |
+| name                      | 发到后台的文件参数名                                                                                                   | String                            | "file"                    |
+| url                       | 上传服务器的接口地址                                                                                                   | String                            | -                         |
+| v-model:file-list         | 默认已经上传的文件列表                                                                                                 | FileItem[]                        | []                        |
+| is-preview                | 是否上传成功后展示预览图                                                                                               | Boolean                           | true                      |
+| is-deletable              | 是否展示删除按钮                                                                                                       | Boolean                           | true                      |
+| method                    | 上传请求的 http method                                                                                                 | String                            | "post"                    |
+| list-type                 | 上传列表的内建样式,支持两种基本样式 picture、list                                                                     | String                            | "picture"                 |
+| source-type               | [选择图片的来源](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)                 | String                            | ['album','camera']        |
+| maximize                  | 可以设定最大上传文件的大小(字节)                                                                                     | Number丨String                    | 9                         |
+| maximum                   | 文件上传数量限制                                                                                                       | Number丨String                    | 1                         |
+| size-type                 | 选择图片的来源,[详细说明](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)       | String                            | ['original','compressed'] |
+| headers                   | 设置上传的请求头部                                                                                                     | Object                            | {}                        |
+| data                      | 附加上传的信息 formData                                                                                                | Object                            | {}                        |
+| upload-icon               | 上传区域[图标名称](#/icon)或图片链接                                                                                   | String                            | "photograph"              |
+| upload-icon-size          | 上传区域[图标尺寸](#/icon)大小,如 `20px` `2em` `2rem`                                                                 | String or Number                  | -                         |
+| xhr-state                 | 接口响应的成功状态(status)值                                                                                         | Number                            | 200                       |
+| disabled                  | 是否禁用文件上传                                                                                                       | Boolean                           | false                     |
+| timeout                   | 超时时间,单位为毫秒                                                                                                   | Number丨String                    | 1000 * 30                 |
+| before-upload             | 上传前的函数需要返回一个`Promise`对象                                                                                  | Function                          | null                      |
+| before-xhr-upload`v3.2.1` | 执行 Taro.uploadFile 上传时,自定义方式                                                                                | Function(Taro.uploadFile,option) | null                      |
+| before-delete             | 除文件时的回调,返回值为 false 时不移除。支持返回一个 `Promise` 对象,`Promise` 对象 resolve(false) 或 reject 时不移除 | Function(file): boolean 丨Promise | -                         |
 
 
 
@@ -271,7 +276,7 @@ setup() {
 | success         | 上传成功               | {data,option,fileItem}    |
 | failure         | 上传失败               | {data,option,fileItem}    |
 | change          | 上传文件改变时的状态   | {fileList,event}          |
-| delete          | 文件删除事件     | {files,fileList,index}          |
+| delete          | 文件删除事件           | {files,fileList,index}    |
 | file-item-click | 文件上传成功后点击触发 | {fileItem}                |
 
 
@@ -279,7 +284,7 @@ setup() {
 
 通过 [ref](https://vuejs.org/guide/essentials/template-refs.html#template-refs) 可以获取到 Uploader 实例并调用实例方法
 
-| 方法名           | 说明                                                       | 参数 | 返回值 |
-|------------------|------------------------------------------------------------|------|--------|
-| submit           | 手动上传模式,执行上传操作                                 | -    | -      |
-| clearUploadQueue | 清空已选择的文件队列(该方法一般配合在手动模式上传时使用) | -    | -      |
+| 方法名           | 说明                                                       | 参数  | 返回值 |
+|------------------|------------------------------------------------------------|-------|--------|
+| submit           | 手动上传模式,执行上传操作                                 | -     | -      |
+| clearUploadQueue | 清空已选择的文件队列(该方法一般配合在手动模式上传时使用) | index | -      |

+ 1 - 0
src/packages/__VUE/uploader/index.taro.vue

@@ -220,6 +220,7 @@ export default create({
         uploadQueue.splice(index, 1);
       } else {
         uploadQueue = [];
+        fileList.splice(0, fileList.length);
       }
     };
     const submit = () => {

+ 1 - 0
src/packages/__VUE/uploader/index.vue

@@ -241,6 +241,7 @@ export default create({
         uploadQueue.splice(index, 1);
       } else {
         uploadQueue = [];
+        fileList.splice(0, fileList.length);
       }
     };
     const submit = () => {

+ 8 - 3
src/sites/mobile-taro/vue/src/dentry/pages/uploader/index.vue

@@ -45,14 +45,15 @@
     <h2>选中文件后,通过按钮手动执行上传 </h2>
     <nut-uploader :url="uploadUrl" maximum="5" :auto-upload="false" ref="uploadRef"></nut-uploader>
     <br />
-    <nut-button type="success" size="small" @click="submitUpload">执行上传</nut-button>
+    <nut-button type="success" size="small" @click="submitUpload">手动执行上传</nut-button>
+    <nut-button type="danger" size="small" @click="clearUpload">手动清空上传</nut-button>
     <h2>禁用状态</h2>
     <nut-uploader disabled></nut-uploader>
   </div>
 </template>
 
 <script lang="ts">
-import { ref } from 'vue';
+import { ref, reactive } from 'vue';
 export default {
   setup() {
     const uploadUrl = 'https://my-json-server.typicode.com/linrufeng/demo/posts';
@@ -60,7 +61,7 @@ export default {
     const formData = {
       custom: 'test'
     };
-    const defaultFileList = ref([
+    const defaultFileList = reactive([
       {
         name: '文件1.png',
         url: 'https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif',
@@ -97,6 +98,9 @@ export default {
     const submitUpload = () => {
       uploadRef.value.submit();
     };
+    const clearUpload = () => {
+      uploadRef.value.clearUploadQueue();
+    };
 
     const beforeXhrUpload = (taroUploadFile: any, options: any) => {
       //taroUploadFile  是 Taro.uploadFile , 你也可以自定义设置其它函数
@@ -141,6 +145,7 @@ export default {
       formData,
       uploadRef,
       submitUpload,
+      clearUpload,
       beforeXhrUpload
     };
   }