108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
| <template>
 | ||
|   <transition-group
 | ||
|     tag="ul"
 | ||
|     :class="[
 | ||
|       'el-upload-list',
 | ||
|       'el-upload-list--' + listType,
 | ||
|       { 'is-disabled': disabled }
 | ||
|     ]"
 | ||
|     name="el-list"
 | ||
|   >
 | ||
|     <li
 | ||
|       v-for="file in files"
 | ||
|       :class="['el-upload-list__item', 'is-' + file.status, focusing ? 'focusing' : '']"
 | ||
|       :key="file.uid"
 | ||
|       tabindex="0"
 | ||
|       @keydown.delete="!disabled && $emit('remove', file)"
 | ||
|       @focus="focusing = true"
 | ||
|       @blur="focusing = false"
 | ||
|       @click="focusing = false"
 | ||
|     >
 | ||
|       <slot :file="file">
 | ||
|         <img
 | ||
|           class="el-upload-list__item-thumbnail"
 | ||
|           v-if="file.status !== 'uploading' && ['picture-card', 'picture'].indexOf(listType) > -1"
 | ||
|           :src="OSSclientConfig.basePath + file.url" alt=""
 | ||
|         >
 | ||
|         <a class="el-upload-list__item-name" @click="handleClick(file)">
 | ||
|           <i class="el-icon-document"></i>{{file.name}}
 | ||
|         </a>
 | ||
|         <label class="el-upload-list__item-status-label">
 | ||
|           <i :class="{
 | ||
|             'el-icon-upload-success': true,
 | ||
|             'el-icon-circle-check': listType === 'text',
 | ||
|             'el-icon-check': ['picture-card', 'picture'].indexOf(listType) > -1
 | ||
|           }"></i>
 | ||
|         </label>
 | ||
|         <i class="el-icon-close" v-if="!disabled" @click="$emit('remove', file)"></i>
 | ||
|         <i class="el-icon-close-tip" v-if="!disabled">{{ t('el.upload.deleteTip') }}</i> <!--因为close按钮只在li:focus的时候 display, li blur后就不存在了,所以键盘导航时永远无法 focus到 close按钮上-->
 | ||
|         <el-progress
 | ||
|           v-if="file.status === 'uploading'"
 | ||
|           :type="listType === 'picture-card' ? 'circle' : 'line'"
 | ||
|           :stroke-width="listType === 'picture-card' ? 6 : 2"
 | ||
|           :percentage="parsePercentage(file.percentage)">
 | ||
|         </el-progress>
 | ||
|         <span class="el-upload-list__item-actions" v-if="listType === 'picture-card'">
 | ||
|           <span
 | ||
|             class="el-upload-list__item-preview"
 | ||
|             v-if="handlePreview && listType === 'picture-card'"
 | ||
|             @click="handlePreview(file)"
 | ||
|           >
 | ||
|             <i class="el-icon-zoom-in"></i>
 | ||
|           </span>
 | ||
|           <span
 | ||
|             v-if="!disabled"
 | ||
|             class="el-upload-list__item-delete"
 | ||
|             @click="$emit('remove', file)"
 | ||
|           >
 | ||
|             <i class="el-icon-delete"></i>
 | ||
|           </span>
 | ||
|         </span>
 | ||
|       </slot>
 | ||
|     </li>
 | ||
|   </transition-group>
 | ||
| </template>
 | ||
| <script>
 | ||
|   import Locale from 'element-ui/src/mixins/locale';
 | ||
|   import ElProgress from 'element-ui/packages/progress';
 | ||
| 
 | ||
|   export default {
 | ||
| 
 | ||
|     name: 'ElUploadList',
 | ||
| 
 | ||
|     mixins: [Locale],
 | ||
| 
 | ||
|     data() {
 | ||
|       return {
 | ||
|         focusing: false
 | ||
|       };
 | ||
|     },
 | ||
|     components: { ElProgress },
 | ||
| 
 | ||
|     props: {
 | ||
|       files: {
 | ||
|         type: Array,
 | ||
|         default() {
 | ||
|           return [];
 | ||
|         }
 | ||
|       },
 | ||
|       disabled: {
 | ||
|         type: Boolean,
 | ||
|         default: false
 | ||
|       },
 | ||
|       handlePreview: Function,
 | ||
|       listType: String
 | ||
|     },
 | ||
|     methods: {
 | ||
|       parsePercentage(val) {
 | ||
|         return parseInt(val, 10);
 | ||
|       },
 | ||
|       handleClick(file) {
 | ||
|         console.log(file)
 | ||
|         window.open(this.OSSclientConfig.basePath + file.url)
 | ||
|         // this.handlePreview && this.handlePreview(file);
 | ||
|       }
 | ||
|     }
 | ||
|   };
 | ||
| </script>
 |