122 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
| import { tuple } from '../_util/type';
 | |
| import PropsTypes from '../_util/vue-types';
 | |
| 
 | |
| export const UploadFileStatus = PropsTypes.oneOf(
 | |
|   tuple('error', 'success', 'done', 'uploading', 'removed'),
 | |
| );
 | |
| 
 | |
| export interface HttpRequestHeader {
 | |
|   [key: string]: string;
 | |
| }
 | |
| 
 | |
| export interface VcFile extends File {
 | |
|   uid: string;
 | |
|   readonly lastModifiedDate: Date;
 | |
|   readonly webkitRelativePath: string;
 | |
| }
 | |
| 
 | |
| // export const UploadFile = PropsTypes.shape({
 | |
| //   uid: PropsTypes.oneOfType([
 | |
| //     PropsTypes.string,
 | |
| //     PropsTypes.number,
 | |
| //   ]),
 | |
| //   size: PropsTypes.number,
 | |
| //   name: PropsTypes.string,
 | |
| //   filename: PropsTypes.string,
 | |
| //   lastModified: PropsTypes.number,
 | |
| //   lastModifiedDate: PropsTypes.any,
 | |
| //   url: PropsTypes.string,
 | |
| //   status: UploadFileStatus,
 | |
| //   percent: PropsTypes.number,
 | |
| //   thumbUrl: PropsTypes.string,
 | |
| //   originFileObj: PropsTypes.any,
 | |
| //   response: PropsTypes.any,
 | |
| //   error: PropsTypes.any,
 | |
| //   linkProps: PropsTypes.any,
 | |
| //   type: PropsTypes.string,
 | |
| // }).loose
 | |
| 
 | |
| function UploadFile({ uid, name }) {
 | |
|   if (!uid && uid !== 0) return false;
 | |
|   if (!['string', 'number'].includes(typeof uid)) return false;
 | |
|   if (name === '' || typeof name !== 'string') return false;
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| export const UploadChangeParam = {
 | |
|   file: PropsTypes.custom(UploadFile),
 | |
|   fileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),
 | |
|   event: PropsTypes.object,
 | |
| };
 | |
| 
 | |
| export const ShowUploadListInterface = PropsTypes.shape({
 | |
|   showRemoveIcon: PropsTypes.looseBool,
 | |
|   showPreviewIcon: PropsTypes.looseBool,
 | |
| }).loose;
 | |
| 
 | |
| export const UploadLocale = PropsTypes.shape({
 | |
|   uploading: PropsTypes.string,
 | |
|   removeFile: PropsTypes.string,
 | |
|   downloadFile: PropsTypes.string,
 | |
|   uploadError: PropsTypes.string,
 | |
|   previewFile: PropsTypes.string,
 | |
| }).loose;
 | |
| 
 | |
| export const UploadProps = {
 | |
|   type: PropsTypes.oneOf(tuple('drag', 'select')),
 | |
|   name: PropsTypes.string,
 | |
|   defaultFileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),
 | |
|   fileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),
 | |
|   action: PropsTypes.oneOfType([PropsTypes.string, PropsTypes.func]),
 | |
|   directory: PropsTypes.looseBool,
 | |
|   data: PropsTypes.oneOfType([PropsTypes.object, PropsTypes.func]),
 | |
|   method: PropsTypes.oneOf(tuple('POST', 'PUT', 'post', 'put')),
 | |
|   headers: PropsTypes.object,
 | |
|   showUploadList: PropsTypes.oneOfType([PropsTypes.looseBool, ShowUploadListInterface]),
 | |
|   multiple: PropsTypes.looseBool,
 | |
|   accept: PropsTypes.string,
 | |
|   beforeUpload: PropsTypes.func,
 | |
|   listType: PropsTypes.oneOf(tuple('text', 'picture', 'picture-card')),
 | |
|   // className: PropsTypes.string,
 | |
|   remove: PropsTypes.func,
 | |
|   supportServerRender: PropsTypes.looseBool,
 | |
|   // style: PropsTypes.object,
 | |
|   disabled: PropsTypes.looseBool,
 | |
|   prefixCls: PropsTypes.string,
 | |
|   customRequest: PropsTypes.func,
 | |
|   withCredentials: PropsTypes.looseBool,
 | |
|   openFileDialogOnClick: PropsTypes.looseBool,
 | |
|   locale: UploadLocale,
 | |
|   height: PropsTypes.number,
 | |
|   id: PropsTypes.string,
 | |
|   previewFile: PropsTypes.func,
 | |
|   transformFile: PropsTypes.func,
 | |
|   onChange: PropsTypes.func,
 | |
|   onPreview: PropsTypes.func,
 | |
|   onRemove: PropsTypes.func,
 | |
|   onDownload: PropsTypes.func,
 | |
|   'onUpdate:fileList': PropsTypes.func,
 | |
| };
 | |
| 
 | |
| export const UploadState = {
 | |
|   fileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),
 | |
|   dragState: PropsTypes.string,
 | |
| };
 | |
| 
 | |
| export const UploadListProps = {
 | |
|   listType: PropsTypes.oneOf(tuple('text', 'picture', 'picture-card')),
 | |
|   // items: PropsTypes.arrayOf(UploadFile),
 | |
|   items: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),
 | |
|   // items: PropsTypes.any,
 | |
|   progressAttr: PropsTypes.object,
 | |
|   prefixCls: PropsTypes.string,
 | |
|   showRemoveIcon: PropsTypes.looseBool,
 | |
|   showDownloadIcon: PropsTypes.looseBool,
 | |
|   showPreviewIcon: PropsTypes.looseBool,
 | |
|   locale: UploadLocale,
 | |
|   previewFile: PropsTypes.func,
 | |
|   onPreview: PropsTypes.func,
 | |
|   onRemove: PropsTypes.func,
 | |
|   onDownload: PropsTypes.func,
 | |
| };
 |