From 929d4915345bd6f34b408a324517d83b2061d65a Mon Sep 17 00:00:00 2001
From: 梁灏 <admin@aresn.com>
Date: Mon, 9 Jul 2018 18:15:17 +0800
Subject: [PATCH] Upload add paste prop

---
 examples/routers/upload.vue      | 176 +++++++++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 src/components/upload/upload.vue |  10 ++++++++++
 2 files changed, 19 insertions(+), 167 deletions(-)

diff --git a/examples/routers/upload.vue b/examples/routers/upload.vue
index 87bf378..3412083 100644
--- a/examples/routers/upload.vue
+++ b/examples/routers/upload.vue
@@ -1,175 +1,17 @@
 <template>
-    <div>
-        <div class="demo-upload-list" v-for="item in uploadList">
-            <template v-if="item.status === 'finished'">
-                <img :src="item.url">
-                <div class="demo-upload-list-cover">
-                    <Icon type="ios-eye-outline" @click.native="handleView(item.name)"></Icon>
-                    <Icon type="ios-trash-outline" @click.native="handleRemove(item)"></Icon>
-                </div>
-            </template>
-            <template v-else>
-                <i-progress v-if="item.showProgress" :percent="item.percentage" hide-info></i-progress>
-            </template>
+    <Upload
+            multiple
+            type="drag"
+            paste
+            action="//jsonplaceholder.typicode.com/posts/">
+        <div style="padding: 20px 0">
+            <Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
+            <p>Click or drag files here to upload</p>
         </div>
-        <Upload
-                ref="upload"
-                :show-upload-list="false"
-                :default-file-list="defaultList"
-                :on-success="handleSuccess"
-                :format="['jpg','jpeg','png']"
-                :max-size="2048"
-                :on-format-error="handleFormatError"
-                :on-exceeded-size="handleMaxSize"
-                @on-progress="handleProgress"
-                :before-upload="handleBeforeUpload"
-                multiple
-                type="drag"
-                action="//jsonplaceholder.typicode.com/posts/"
-                style="display: inline-block;width:58px;">
-            <div style="width: 58px;height:58px;line-height: 58px;">
-                <Icon type="camera" size="20"></Icon>
-            </div>
-        </Upload>
-        {{ visible }}
-    </div>
+    </Upload>
 </template>
 <script>
     export default {
-        data () {
-            return {
-                defaultList: [
-                    {
-                        'name': 'a42bdcc1178e62b4694c830f028db5c0',
-                        'url': 'https://o5wwk8baw.qnssl.com/a42bdcc1178e62b4694c830f028db5c0/avatar'
-                    },
-                    {
-                        'name': 'bc7521e033abdd1e92222d733590f104',
-                        'url': 'https://o5wwk8baw.qnssl.com/bc7521e033abdd1e92222d733590f104/avatar'
-                    }
-                ],
-                imgName: '',
-                visible: false,
-                uploadList: []
-            }
-        },
-        computed: {
-//            uploadList () {
-//                return this.$refs.upload ? this.$refs.upload.fileList : [];
-//            }
-        },
-        watch: {
 
-        },
-        mounted () {
-            this.uploadList = this.$refs.upload.fileList;
-//            console.log(this.$refs.upload.fileList)
-        },
-        methods: {
-            handleView (name) {
-                this.imgName = name;
-                this.visible = true;
-            },
-            handleRemove (file) {
-                // 从 upload 实例删除数据
-                const fileList = this.$refs.upload.fileList;
-                this.$refs.upload.fileList.splice(fileList.indexOf(file), 1);
-            },
-            handleSuccess (res, file) {
-                // 因为上传过程为实例,这里模拟添加 url
-                file.url = 'https://o5wwk8baw.qnssl.com/7eb99afb9d5f317c912f08b5212fd69a/avatar';
-                file.name = '7eb99afb9d5f317c912f08b5212fd69a';
-            },
-            handleFormatError (file) {
-                this.$Notice.warning({
-                    title: '文件格式不正确',
-                    desc: '文件 ' + file.name + ' 格式不正确,请上传 jpg 或 png 格式的图片。'
-                });
-            },
-            handleMaxSize (file) {
-                this.$Notice.warning({
-                    title: '超出文件大小限制',
-                    desc: '文件 ' + file.name + ' 太大,不能超过 2M。'
-                });
-            },
-            handleBeforeUpload () {
-                const check = this.uploadList.length < 5;
-                if (!check) {
-                    this.$Notice.warning({
-                        title: '最多只能上传 5 张图片。'
-                    });
-                }
-                return check;
-            },
-            handleProgress (s) {
-                console.log(s)
-            }
-        }
     }
 </script>
-<style>
-    .demo-upload-list{
-        display: inline-block;
-        width: 60px;
-        height: 60px;
-        text-align: center;
-        line-height: 60px;
-        border: 1px solid transparent;
-        border-radius: 4px;
-        overflow: hidden;
-        background: #fff;
-        position: relative;
-        box-shadow: 0 1px 1px rgba(0,0,0,.2);
-        margin-right: 4px;
-    }
-    .demo-upload-list img{
-        width: 100%;
-        height: 100%;
-    }
-    .demo-upload-list-cover{
-        display: none;
-        position: absolute;
-        top: 0;
-        bottom: 0;
-        left: 0;
-        right: 0;
-        background: rgba(0,0,0,.6);
-    }
-    .demo-upload-list:hover .demo-upload-list-cover{
-        display: block;
-    }
-    .demo-upload-list-cover i{
-        color: #fff;
-        font-size: 20px;
-        cursor: pointer;
-        margin: 0 2px;
-    }
-</style>
-
-
-<!--<template>-->
-    <!--<div>-->
-        <!--<Upload action="//jsonplaceholder.typicode.com/posts/" :before-upload="handleBeforeUpload" ref="file">-->
-            <!--<i-button type="ghost" icon="ios-cloud-upload-outline">选择文件</i-button>-->
-        <!--</Upload>-->
-        <!--<i-button @click.native="handleUpload">上传</i-button>-->
-    <!--</div>-->
-<!--</template>-->
-<!--<script>-->
-    <!--export default {-->
-        <!--data () {-->
-            <!--return {-->
-                <!--file: null-->
-            <!--}-->
-        <!--},-->
-        <!--methods: {-->
-            <!--handleBeforeUpload (file) {-->
-                <!--this.file = file;-->
-                <!--return false;-->
-            <!--},-->
-            <!--handleUpload () {-->
-                <!--this.$refs.file.post(this.file);-->
-            <!--}-->
-        <!--}-->
-    <!--}-->
-<!--</script>-->
diff --git a/src/components/upload/upload.vue b/src/components/upload/upload.vue
index e2af151..e44c8ec 100644
--- a/src/components/upload/upload.vue
+++ b/src/components/upload/upload.vue
@@ -4,6 +4,7 @@
             :class="classes"
             @click="handleClick"
             @drop.prevent="onDrop"
+            @paste="handlePaste"
             @dragover.prevent="dragOver = true"
             @dragleave.prevent="dragOver = false">
             <input
@@ -132,6 +133,10 @@
                 default() {
                     return [];
                 }
+            },
+            paste: {
+                type: Boolean,
+                default: false
             }
         },
         data () {
@@ -172,6 +177,11 @@
                 this.dragOver = false;
                 this.uploadFiles(e.dataTransfer.files);
             },
+            handlePaste (e) {
+                if (this.paste) {
+                    this.uploadFiles(e.clipboardData.files);
+                }
+            },
             uploadFiles (files) {
                 let postFiles = Array.prototype.slice.call(files);
                 if (!this.multiple) postFiles = postFiles.slice(0, 1);
--
libgit2 0.21.4