giime 0.7.3 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/index.css +45 -45
  2. package/es/components/index.mjs +3 -1
  3. package/es/components/index.mjs.map +1 -1
  4. package/es/components/src/business/index.mjs +1 -1
  5. package/es/components/src/business/uploadPro/UploadPro.vue.mjs +1 -1
  6. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs +3 -3
  7. package/es/components/src/business/uploadPro/UploadPro.vue2.mjs.map +1 -1
  8. package/es/components/src/business/uploadPro/index.mjs +1 -1
  9. package/es/components/src/business/uploadPro/uploadPro.d.ts +1 -1
  10. package/es/components/src/business/uploadPro/uploadPro.mjs +2 -2
  11. package/es/components/src/business/uploadPro/uploadPro.mjs.map +1 -1
  12. package/es/components/src/composite/index.d.ts +1 -0
  13. package/es/components/src/composite/index.mjs +2 -0
  14. package/es/components/src/composite/index.mjs.map +1 -1
  15. package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +105 -49
  16. package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
  17. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +33 -29
  18. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
  19. package/es/components/src/composite/uploadFile/index.d.ts +215 -102
  20. package/es/components/src/composite/uploadFile/uploadFile.d.ts +49 -27
  21. package/es/components/src/composite/uploadFile/uploadFile.mjs +3 -0
  22. package/es/components/src/composite/uploadFile/uploadFile.mjs.map +1 -1
  23. package/es/giime/index.mjs +4 -1
  24. package/es/giime/index.mjs.map +1 -1
  25. package/es/giime/version.d.ts +1 -1
  26. package/es/giime/version.mjs +1 -1
  27. package/es/giime/version.mjs.map +1 -1
  28. package/es/hooks/index.mjs +1 -0
  29. package/es/hooks/index.mjs.map +1 -1
  30. package/es/hooks/store/index.d.ts +1 -0
  31. package/es/hooks/store/index.mjs +1 -0
  32. package/es/hooks/store/index.mjs.map +1 -1
  33. package/es/hooks/store/useUploadTask/index.d.ts +28 -0
  34. package/es/hooks/store/useUploadTask/index.mjs +32 -0
  35. package/es/hooks/store/useUploadTask/index.mjs.map +1 -0
  36. package/es/index.css +45 -45
  37. package/lib/components/index.js +19 -15
  38. package/lib/components/index.js.map +1 -1
  39. package/lib/components/src/business/index.js +1 -1
  40. package/lib/components/src/business/uploadPro/UploadPro.vue.js +1 -1
  41. package/lib/components/src/business/uploadPro/UploadPro.vue2.js +2 -2
  42. package/lib/components/src/business/uploadPro/UploadPro.vue2.js.map +1 -1
  43. package/lib/components/src/business/uploadPro/index.js +1 -1
  44. package/lib/components/src/business/uploadPro/uploadPro.d.ts +1 -1
  45. package/lib/components/src/business/uploadPro/uploadPro.js +2 -2
  46. package/lib/components/src/business/uploadPro/uploadPro.js.map +1 -1
  47. package/lib/components/src/composite/index.d.ts +1 -0
  48. package/lib/components/src/composite/index.js +4 -0
  49. package/lib/components/src/composite/index.js.map +1 -1
  50. package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +105 -49
  51. package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
  52. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +41 -37
  53. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
  54. package/lib/components/src/composite/uploadFile/index.d.ts +215 -102
  55. package/lib/components/src/composite/uploadFile/uploadFile.d.ts +49 -27
  56. package/lib/components/src/composite/uploadFile/uploadFile.js +3 -0
  57. package/lib/components/src/composite/uploadFile/uploadFile.js.map +1 -1
  58. package/lib/giime/index.js +81 -75
  59. package/lib/giime/index.js.map +1 -1
  60. package/lib/giime/version.d.ts +1 -1
  61. package/lib/giime/version.js +1 -1
  62. package/lib/giime/version.js.map +1 -1
  63. package/lib/hooks/index.js +2 -0
  64. package/lib/hooks/index.js.map +1 -1
  65. package/lib/hooks/store/index.d.ts +1 -0
  66. package/lib/hooks/store/index.js +2 -0
  67. package/lib/hooks/store/index.js.map +1 -1
  68. package/lib/hooks/store/useUploadTask/index.d.ts +28 -0
  69. package/lib/hooks/store/useUploadTask/index.js +34 -0
  70. package/lib/hooks/store/useUploadTask/index.js.map +1 -0
  71. package/lib/index.css +45 -45
  72. package/package.json +1 -1
  73. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +0 -521
  74. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.mjs +0 -6
  75. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.mjs.map +0 -1
  76. package/es/components/src/business/uploadMaterial/UploadMaterial.vue2.mjs +0 -71
  77. package/es/components/src/business/uploadMaterial/UploadMaterial.vue2.mjs.map +0 -1
  78. package/es/components/src/business/uploadMaterial/index.d.ts +0 -1110
  79. package/es/components/src/business/uploadMaterial/index.mjs +0 -10
  80. package/es/components/src/business/uploadMaterial/index.mjs.map +0 -1
  81. package/es/components/src/business/uploadMaterial/uploadMaterial.d.ts +0 -230
  82. package/es/components/src/business/uploadMaterial/uploadMaterial.mjs +0 -23
  83. package/es/components/src/business/uploadMaterial/uploadMaterial.mjs.map +0 -1
  84. package/es/utils/src/alioss/aliossPutHook.d.ts +0 -156
  85. package/es/utils/src/alioss/aliossPutHook.mjs +0 -261
  86. package/es/utils/src/alioss/aliossPutHook.mjs.map +0 -1
  87. package/es/utils/src/alioss/aliossToken.d.ts +0 -23
  88. package/es/utils/src/alioss/aliossToken.mjs +0 -51
  89. package/es/utils/src/alioss/aliossToken.mjs.map +0 -1
  90. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +0 -521
  91. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.js +0 -10
  92. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.js.map +0 -1
  93. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue2.js +0 -75
  94. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue2.js.map +0 -1
  95. package/lib/components/src/business/uploadMaterial/index.d.ts +0 -1110
  96. package/lib/components/src/business/uploadMaterial/index.js +0 -16
  97. package/lib/components/src/business/uploadMaterial/index.js.map +0 -1
  98. package/lib/components/src/business/uploadMaterial/uploadMaterial.d.ts +0 -230
  99. package/lib/components/src/business/uploadMaterial/uploadMaterial.js +0 -25
  100. package/lib/components/src/business/uploadMaterial/uploadMaterial.js.map +0 -1
  101. package/lib/utils/src/alioss/aliossPutHook.d.ts +0 -156
  102. package/lib/utils/src/alioss/aliossPutHook.js +0 -265
  103. package/lib/utils/src/alioss/aliossPutHook.js.map +0 -1
  104. package/lib/utils/src/alioss/aliossToken.d.ts +0 -23
  105. package/lib/utils/src/alioss/aliossToken.js +0 -55
  106. package/lib/utils/src/alioss/aliossToken.js.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  var elementPlus = require('element-plus');
4
4
 
5
- const uploadFileProps = {
5
+ const uploadFileProProps = {
6
6
  ...elementPlus.uploadProps,
7
7
  // ...previewFileProps,
8
8
  listType: {
@@ -74,5 +74,5 @@ const uploadFileProps = {
74
74
  }
75
75
  };
76
76
 
77
- exports.uploadFileProps = uploadFileProps;
77
+ exports.uploadFileProProps = uploadFileProProps;
78
78
  //# sourceMappingURL=uploadPro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploadPro.js","sources":["../../../../../../../packages/components/src/business/uploadPro/uploadPro.ts"],"sourcesContent":["import { type PropType } from 'vue';\nimport { type UploadFile, type UploadProps, uploadProps, type UploadUserFile } from 'element-plus';\nimport type { ResourceUrlResponse } from '@giime/api/resource/interface';\n// import { previewFileProps } from '../../composite/previewFile/previewFile';\n\nexport const uploadFileProps = {\n ...uploadProps,\n // ...previewFileProps,\n listType: {\n type: String as PropType<UploadProps['listType']>,\n default: 'picture-card',\n },\n drag: {\n type: Boolean,\n default: true,\n },\n /**领域编码 */\n domainCode: {\n type: String,\n },\n /**场景编码 */\n sceneCode: {\n type: String,\n },\n /** 文件权限,默认继承桶 */\n acl: {\n type: String,\n default: 'default',\n },\n /**上传中是否loading */\n showLoading: {\n type: Boolean,\n default: false,\n },\n /** 是否展示删除按钮 */\n showDelete: {\n type: Boolean,\n default: true,\n },\n /**禁用删除按钮的uid列表 */\n disabledDeleteUids: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n /** 删除时提示 */\n deleteTip: {\n type: Boolean,\n default: false,\n },\n /** 是否开启文件多选 */\n checkbox: {\n type: Boolean,\n default: false,\n },\n /**禁用多选按钮的uid列表 */\n disabledCheckboxUids: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n /** 缩略图宽度 */\n width: {\n type: Number,\n default: 120,\n },\n /** 缩略图高度 */\n height: {\n type: Number,\n default: 120,\n },\n /**全部文件上传完成事件 */\n onAllComplete: {\n type: Function as PropType<() => void>,\n default: () => {},\n },\n};\n\nexport type GmUploadProUserFileResponse = ResourceUrlResponse;\n\nexport type GmUploadProUserFile = Omit<UploadUserFile, 'response'> & { response?: GmUploadProUserFileResponse };\n"],"names":["uploadProps"],"mappings":";;;;AAKO,MAAM,eAAkB,GAAA;AAAA,EAC7B,GAAGA,uBAAA;AAAA;AAAA,EAEH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,GACX;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAEA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,GACX;AAAA;AAAA,EAEA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,kBAAoB,EAAA;AAAA,IAClB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,oBAAsB,EAAA;AAAA,IACpB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA;AAAA,EAEA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,QAAA;AAAA,IACN,SAAS,MAAM;AAAA,KAAC;AAAA,GAClB;AACF;;;;"}
1
+ {"version":3,"file":"uploadPro.js","sources":["../../../../../../../packages/components/src/business/uploadPro/uploadPro.ts"],"sourcesContent":["import { type PropType } from 'vue';\nimport { type UploadFile, type UploadProps, uploadProps, type UploadUserFile } from 'element-plus';\nimport type { ResourceUrlResponse } from '@giime/api/resource/interface';\n// import { previewFileProps } from '../../composite/previewFile/previewFile';\n\nexport const uploadFileProProps = {\n ...uploadProps,\n // ...previewFileProps,\n listType: {\n type: String as PropType<UploadProps['listType']>,\n default: 'picture-card',\n },\n drag: {\n type: Boolean,\n default: true,\n },\n /**领域编码 */\n domainCode: {\n type: String,\n },\n /**场景编码 */\n sceneCode: {\n type: String,\n },\n /** 文件权限,默认继承桶 */\n acl: {\n type: String,\n default: 'default',\n },\n /**上传中是否loading */\n showLoading: {\n type: Boolean,\n default: false,\n },\n /** 是否展示删除按钮 */\n showDelete: {\n type: Boolean,\n default: true,\n },\n /**禁用删除按钮的uid列表 */\n disabledDeleteUids: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n /** 删除时提示 */\n deleteTip: {\n type: Boolean,\n default: false,\n },\n /** 是否开启文件多选 */\n checkbox: {\n type: Boolean,\n default: false,\n },\n /**禁用多选按钮的uid列表 */\n disabledCheckboxUids: {\n type: Array as PropType<number[]>,\n default: () => [],\n },\n /** 缩略图宽度 */\n width: {\n type: Number,\n default: 120,\n },\n /** 缩略图高度 */\n height: {\n type: Number,\n default: 120,\n },\n /**全部文件上传完成事件 */\n onAllComplete: {\n type: Function as PropType<() => void>,\n default: () => {},\n },\n};\n\nexport type GmUploadProUserFileResponse = ResourceUrlResponse;\n\nexport type GmUploadProUserFile = Omit<UploadUserFile, 'response'> & { response?: GmUploadProUserFileResponse };\n"],"names":["uploadProps"],"mappings":";;;;AAKO,MAAM,kBAAqB,GAAA;AAAA,EAChC,GAAGA,uBAAA;AAAA;AAAA,EAEH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,GACX;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA,EAEA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,SAAA;AAAA,GACX;AAAA;AAAA,EAEA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,kBAAoB,EAAA;AAAA,IAClB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,oBAAsB,EAAA;AAAA,IACpB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,GAAA;AAAA,GACX;AAAA;AAAA,EAEA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,QAAA;AAAA,IACN,SAAS,MAAM;AAAA,KAAC;AAAA,GAClB;AACF;;;;"}
@@ -11,3 +11,4 @@ export * from './fileComponent';
11
11
  export * from './previewFile';
12
12
  export * from './tableCustom';
13
13
  export * from './ruleEditor';
14
+ export * from './uploadFile';
@@ -13,6 +13,7 @@ var index$l = require('./fileComponent/index.js');
13
13
  var index$m = require('./previewFile/index.js');
14
14
  var index$n = require('./tableCustom/index.js');
15
15
  var index$q = require('./ruleEditor/index.js');
16
+ var index$r = require('./uploadFile/index.js');
16
17
  var searchForm = require('./searchForm/searchForm.js');
17
18
  var common = require('./searchForm/searchFormItems/common.js');
18
19
  var searchFormInput = require('./searchForm/searchFormItems/input/searchFormInput.js');
@@ -53,6 +54,7 @@ var index$o = require('./tableCustom/tableCustomHeader/index.js');
53
54
  var customOperate = require('./tableCustom/customOperate/customOperate.js');
54
55
  var index$p = require('./tableCustom/customOperate/index.js');
55
56
  var ruleEditor = require('./ruleEditor/ruleEditor.js');
57
+ var uploadFile = require('./uploadFile/uploadFile.js');
56
58
 
57
59
 
58
60
 
@@ -69,6 +71,7 @@ exports.GmFileComponent = index$l.GmFileComponent;
69
71
  exports.GmPreviewFile = index$m.GmPreviewFile;
70
72
  exports.GmTableCustom = index$n.GmTableCustom;
71
73
  exports.GmRuleEditor = index$q.GmRuleEditor;
74
+ exports.GmUploadFile = index$r.GmUploadFile;
72
75
  exports.searchFormEmits = searchForm.searchFormEmits;
73
76
  exports.searchFormItemList = searchForm.searchFormItemList;
74
77
  exports.searchFormProps = searchForm.searchFormProps;
@@ -133,4 +136,5 @@ exports.customOperateProps = customOperate.customOperateProps;
133
136
  exports.GmCustomOperate = index$p.GmCustomOperate;
134
137
  exports.ruleEditorEmits = ruleEditor.ruleEditorEmits;
135
138
  exports.ruleEditorProps = ruleEditor.ruleEditorProps;
139
+ exports.uploadFileProps = uploadFile.uploadFileProps;
136
140
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,4 @@
1
1
  import type { UploadFile, UploadFiles, UploadRawFile, UploadStatus } from 'element-plus';
2
- import type { AliOssResponse } from '../../../../utils/src/alioss/aliossPutHook';
3
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
4
3
  fileList: {
5
4
  required: true;
@@ -86,37 +85,31 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
86
85
  type: NumberConstructor;
87
86
  default: number;
88
87
  };
89
- file: {
90
- type: import("vue").PropType<Partial<UploadFile>>;
91
- default: () => {};
92
- };
93
- url: {
88
+ domainCode: {
94
89
  type: StringConstructor;
95
- default: string;
96
90
  };
97
- size: {
98
- type: NumberConstructor;
99
- default: number;
91
+ sceneCode: {
92
+ type: StringConstructor;
100
93
  };
101
- field: {
102
- type: import("vue").PropType<keyof UploadFile>;
94
+ acl: {
95
+ type: StringConstructor;
103
96
  default: string;
104
97
  };
105
- controls: {
98
+ showLoading: {
106
99
  type: BooleanConstructor;
107
100
  default: boolean;
108
101
  };
109
- controlslist: {
110
- type: StringConstructor;
111
- default: string;
102
+ disabledDeleteUids: {
103
+ type: import("vue").PropType<number[]>;
104
+ default: () => never[];
112
105
  };
113
- oncontextmenu: {
114
- type: BooleanConstructor;
115
- default: boolean;
106
+ disabledCheckboxUids: {
107
+ type: import("vue").PropType<number[]>;
108
+ default: () => never[];
116
109
  };
117
- showIcon: {
118
- type: BooleanConstructor;
119
- default: boolean;
110
+ onAllComplete: {
111
+ type: import("vue").PropType<() => void>;
112
+ default: () => void;
120
113
  };
121
114
  beforeUpload: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (rawFile: UploadRawFile) => import("element-plus/es/utils").Awaitable<boolean | void | Blob | File | null | undefined>) | (() => (rawFile: UploadRawFile) => import("element-plus/es/utils").Awaitable<boolean | void | Blob | File | null | undefined>) | {
122
115
  (): (rawFile: UploadRawFile) => import("element-plus/es/utils").Awaitable<boolean | void | Blob | File | null | undefined>;
@@ -194,6 +187,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
194
187
  } | ((new (...args: any[]) => (files: File[], uploadFiles: import("element-plus").UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: import("element-plus").UploadUserFile[]) => void) | {
195
188
  (): (files: File[], uploadFiles: import("element-plus").UploadUserFile[]) => void;
196
189
  new (): any;
190
+ /** 预览 */
197
191
  readonly prototype: any;
198
192
  })[], unknown, unknown, () => void, boolean>;
199
193
  crossorigin: {
@@ -225,6 +219,38 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
225
219
  })[], unknown, unknown, import("element-plus").UploadRequestHandler, boolean>;
226
220
  disabled: BooleanConstructor;
227
221
  limit: NumberConstructor;
222
+ file: {
223
+ type: import("vue").PropType<Partial<UploadFile>>;
224
+ default: () => {};
225
+ };
226
+ url: {
227
+ type: StringConstructor;
228
+ default: string;
229
+ };
230
+ size: {
231
+ type: NumberConstructor;
232
+ default: number;
233
+ };
234
+ field: {
235
+ type: import("vue").PropType<keyof UploadFile>;
236
+ default: string;
237
+ };
238
+ controls: {
239
+ type: BooleanConstructor;
240
+ default: boolean;
241
+ };
242
+ controlslist: {
243
+ type: StringConstructor;
244
+ default: string;
245
+ };
246
+ oncontextmenu: {
247
+ type: BooleanConstructor;
248
+ default: boolean;
249
+ };
250
+ showIcon: {
251
+ type: BooleanConstructor;
252
+ default: boolean;
253
+ };
228
254
  }, {
229
255
  submit: () => void;
230
256
  abort: (file: UploadFile) => void;
@@ -712,7 +738,6 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
712
738
  file: UploadFile;
713
739
  index: number;
714
740
  }) => void;
715
- handleSaveFileSuccess: (file: AliOssResponse) => void;
716
741
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
717
742
  fileList: {
718
743
  required: true;
@@ -799,37 +824,31 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
799
824
  type: NumberConstructor;
800
825
  default: number;
801
826
  };
802
- file: {
803
- type: import("vue").PropType<Partial<UploadFile>>;
804
- default: () => {};
805
- };
806
- url: {
827
+ domainCode: {
807
828
  type: StringConstructor;
808
- default: string;
809
829
  };
810
- size: {
811
- type: NumberConstructor;
812
- default: number;
830
+ sceneCode: {
831
+ type: StringConstructor;
813
832
  };
814
- field: {
815
- type: import("vue").PropType<keyof UploadFile>;
833
+ acl: {
834
+ type: StringConstructor;
816
835
  default: string;
817
836
  };
818
- controls: {
837
+ showLoading: {
819
838
  type: BooleanConstructor;
820
839
  default: boolean;
821
840
  };
822
- controlslist: {
823
- type: StringConstructor;
824
- default: string;
841
+ disabledDeleteUids: {
842
+ type: import("vue").PropType<number[]>;
843
+ default: () => never[];
825
844
  };
826
- oncontextmenu: {
827
- type: BooleanConstructor;
828
- default: boolean;
845
+ disabledCheckboxUids: {
846
+ type: import("vue").PropType<number[]>;
847
+ default: () => never[];
829
848
  };
830
- showIcon: {
831
- type: BooleanConstructor;
832
- default: boolean;
849
+ onAllComplete: {
850
+ type: import("vue").PropType<() => void>;
851
+ default: () => void;
833
852
  };
834
853
  beforeUpload: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (rawFile: UploadRawFile) => import("element-plus/es/utils").Awaitable<boolean | void | Blob | File | null | undefined>) | (() => (rawFile: UploadRawFile) => import("element-plus/es/utils").Awaitable<boolean | void | Blob | File | null | undefined>) | {
835
854
  (): (rawFile: UploadRawFile) => import("element-plus/es/utils").Awaitable<boolean | void | Blob | File | null | undefined>;
@@ -907,6 +926,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
907
926
  } | ((new (...args: any[]) => (files: File[], uploadFiles: import("element-plus").UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: import("element-plus").UploadUserFile[]) => void) | {
908
927
  (): (files: File[], uploadFiles: import("element-plus").UploadUserFile[]) => void;
909
928
  new (): any;
929
+ /** 预览 */
910
930
  readonly prototype: any;
911
931
  })[], unknown, unknown, () => void, boolean>;
912
932
  crossorigin: {
@@ -938,6 +958,38 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
938
958
  })[], unknown, unknown, import("element-plus").UploadRequestHandler, boolean>;
939
959
  disabled: BooleanConstructor;
940
960
  limit: NumberConstructor;
961
+ file: {
962
+ type: import("vue").PropType<Partial<UploadFile>>;
963
+ default: () => {};
964
+ };
965
+ url: {
966
+ type: StringConstructor;
967
+ default: string;
968
+ };
969
+ size: {
970
+ type: NumberConstructor;
971
+ default: number;
972
+ };
973
+ field: {
974
+ type: import("vue").PropType<keyof UploadFile>;
975
+ default: string;
976
+ };
977
+ controls: {
978
+ type: BooleanConstructor;
979
+ default: boolean;
980
+ };
981
+ controlslist: {
982
+ type: StringConstructor;
983
+ default: string;
984
+ };
985
+ oncontextmenu: {
986
+ type: BooleanConstructor;
987
+ default: boolean;
988
+ };
989
+ showIcon: {
990
+ type: BooleanConstructor;
991
+ default: boolean;
992
+ };
941
993
  }>> & {
942
994
  "onUpdate:fileList"?: ((fileList: UploadFile[]) => any) | undefined;
943
995
  onHandleRemove?: ((file: {
@@ -945,7 +997,6 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
945
997
  index: number;
946
998
  }) => any) | undefined;
947
999
  "onUpdate:checkoutFiles"?: ((checkoutFiles: any[]) => any) | undefined;
948
- onHandleSaveFileSuccess?: ((file: AliOssResponse) => any) | undefined;
949
1000
  }, {
950
1001
  size: number;
951
1002
  options: Record<string, any>;
@@ -977,20 +1028,25 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
977
1028
  autoUpload: boolean;
978
1029
  listType: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "text" | "picture" | "picture-card", unknown>;
979
1030
  httpRequest: import("element-plus").UploadRequestHandler;
1031
+ acl: string;
1032
+ showLoading: boolean;
980
1033
  showDelete: boolean;
1034
+ disabledDeleteUids: number[];
981
1035
  deleteTip: boolean;
1036
+ disabledCheckboxUids: number[];
1037
+ onAllComplete: () => void;
982
1038
  field: keyof UploadFile;
983
1039
  controlslist: string;
984
1040
  oncontextmenu: boolean;
985
- fileName: string;
986
- platform: string;
987
- parallel: number;
988
1041
  folder: string;
989
1042
  seat: string;
1043
+ parallel: number;
990
1044
  partSize: number;
991
1045
  bucket: string;
992
- cdn: string;
1046
+ fileName: string;
993
1047
  saveStore: boolean;
1048
+ platform: string;
1049
+ cdn: string;
994
1050
  }, {}>, {
995
1051
  default?(_: {}): any;
996
1052
  file?(_: {
@@ -7,7 +7,7 @@ require('./UploadFile.vue3.js');
7
7
  require('./UploadFile.vue4.js');
8
8
  var _pluginVue_exportHelper = require('../../../../_virtual/_plugin-vue_export-helper.js');
9
9
 
10
- var UploadFile = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadFile_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-62eb3199"]]);
10
+ var UploadFile = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadFile_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-12e65ac7"]]);
11
11
 
12
12
  exports.default = UploadFile;
13
13
  //# sourceMappingURL=UploadFile.vue.js.map
@@ -4,16 +4,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
6
  var elementPlus = require('element-plus');
7
- var aliossPutHook = require('../../../../utils/src/alioss/aliossPutHook.js');
8
- var file = require('../../../../utils/src/file.js');
9
- var index$1 = require('../../../../hooks/base/usePasteFile/index.js');
10
- var index = require('../../plugins/confirmBox/index.js');
7
+ var index = require('../../../../hooks/store/useUploadTask/index.js');
8
+ var index$2 = require('../../../../hooks/base/usePasteFile/index.js');
9
+ var index$1 = require('../../plugins/confirmBox/index.js');
11
10
  var iconsVue = require('@element-plus/icons-vue');
12
- var index$2 = require('../fileComponent/index.js');
13
- var index$3 = require('../previewFile/index.js');
11
+ var index$3 = require('../fileComponent/index.js');
12
+ var index$4 = require('../previewFile/index.js');
14
13
  var uploadFile = require('./uploadFile.js');
15
14
 
16
- const _withScopeId = (n) => (vue.pushScopeId("data-v-62eb3199"), n = n(), vue.popScopeId(), n);
15
+ const _withScopeId = (n) => (vue.pushScopeId("data-v-12e65ac7"), n = n(), vue.popScopeId(), n);
17
16
  const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode(
18
17
  "div",
19
18
  { class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
@@ -38,39 +37,42 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
38
37
  "checkoutFiles": { default: () => [] },
39
38
  "checkoutFilesModifiers": {}
40
39
  }),
41
- emits: /* @__PURE__ */ vue.mergeModels(["handleRemove", "handleSaveFileSuccess"], ["update:fileList", "update:checkoutFiles"]),
40
+ emits: /* @__PURE__ */ vue.mergeModels(["handleRemove"], ["update:fileList", "update:checkoutFiles"]),
42
41
  setup(__props, { expose: __expose, emit: __emit }) {
43
42
  const props = __props;
44
43
  const emit = __emit;
45
- const { uploadFile, saveFileResult } = aliossPutHook.useAliossHookStore();
46
- saveFileResult((res) => {
47
- emit("handleSaveFileSuccess", res);
48
- });
44
+ const { uploadFileTask } = index.useUploadTaskStore();
49
45
  const fileList = vue.useModel(__props, "fileList");
50
46
  const checkoutFiles = vue.useModel(__props, "checkoutFiles");
51
- const httpRequest = async (params) => {
52
- const { file: file$1 } = params;
53
- if (props.accept && props.accept !== "*") {
54
- const isValidType = file.fileValidType(file$1, props.accept);
55
- if (!isValidType) {
56
- throw new Error(`\u6587\u4EF6\u7C7B\u578B\u4E0D\u652F\u6301\uFF0C\u8BF7\u4E0A\u4F20 ${props.accept} \u683C\u5F0F\u7684\u6587\u4EF6`);
57
- }
58
- }
59
- const res = await uploadFile({
60
- file: file$1,
61
- fileName: props.fileName,
62
- folder: props.folder,
63
- seat: props.seat,
64
- partSize: props.partSize,
65
- parallel: props.parallel,
66
- options: props.options,
67
- bucket: props.bucket,
68
- saveStore: props.saveStore,
69
- platform: props.platform,
70
- cdn: props.cdn
47
+ const loadingUids = vue.ref(/* @__PURE__ */ new Set());
48
+ const httpRequest = async (options) => {
49
+ loadingUids.value.add(options.file.uid);
50
+ const { file } = options;
51
+ const res = await uploadFileTask(file, {
52
+ domainCode: props.domainCode,
53
+ sceneCode: props.sceneCode,
54
+ accept: props.accept,
55
+ acl: props.acl,
56
+ elOptions: options
71
57
  });
72
58
  return res;
73
59
  };
60
+ const checkAllUploadComplete = () => {
61
+ if (loadingUids.value.size === 0) {
62
+ props.onAllComplete?.();
63
+ }
64
+ };
65
+ const coverFileSuccess = (response, uploadFile, uploadFiles) => {
66
+ loadingUids.value.delete(uploadFile.uid);
67
+ uploadFile.url = response.url;
68
+ props.onSuccess?.(response, uploadFile, uploadFiles);
69
+ checkAllUploadComplete();
70
+ };
71
+ const coverFileError = (error, uploadFile, uploadFiles) => {
72
+ loadingUids.value.delete(uploadFile.uid);
73
+ props.onError?.(error, uploadFile, uploadFiles);
74
+ checkAllUploadComplete();
75
+ };
74
76
  const beforeRemove = (file, files) => {
75
77
  if (props.disabled) {
76
78
  return false;
@@ -87,7 +89,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
87
89
  };
88
90
  const handleRemove = async (file, uploadFiles) => {
89
91
  if (props.deleteTip) {
90
- await index.GmConfirmBox({ message: "\u786E\u5B9A\u5220\u9664\u8BE5\u6587\u4EF6\u5417\uFF1F" }, async () => {
92
+ await index$1.GmConfirmBox({ message: "\u786E\u5B9A\u5220\u9664\u8BE5\u6587\u4EF6\u5417\uFF1F" }, async () => {
91
93
  });
92
94
  }
93
95
  removeFile(file, uploadFiles);
@@ -112,7 +114,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
112
114
  fileIndex.value = fileList.value.indexOf(file);
113
115
  dialogVisible.value = true;
114
116
  };
115
- const { onSuccess, onError } = index$1.usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });
117
+ const { onSuccess, onError } = index$2.usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });
116
118
  onSuccess((files) => {
117
119
  if (Array.isArray(files) && files.length > 0) {
118
120
  files.forEach((file) => {
@@ -167,7 +169,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
167
169
  "onUpdate:fileList": _cache[0] || (_cache[0] = ($event) => fileList.value = $event),
168
170
  "before-remove": beforeRemove,
169
171
  action: "",
170
- "http-request": httpRequest
172
+ "http-request": httpRequest,
173
+ "on-success": coverFileSuccess,
174
+ "on-error": coverFileError
171
175
  }), vue.createSlots({
172
176
  default: vue.withCtx(() => [
173
177
  !_ctx.disabled ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }, () => [
@@ -224,7 +228,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
224
228
  style: vue.normalizeStyle({ width: _ctx.width + "px", height: _ctx.height + "px" })
225
229
  },
226
230
  [
227
- vue.createVNode(vue.unref(index$2.GmFileComponent), {
231
+ vue.createVNode(vue.unref(index$3.GmFileComponent), {
228
232
  file,
229
233
  size: _ctx.width - 40,
230
234
  url: _ctx.url,
@@ -272,7 +276,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
272
276
  _: 3
273
277
  /* FORWARDED */
274
278
  }, 8, ["modelValue"]),
275
- vue.createVNode(vue.unref(index$3.GmPreviewFile), {
279
+ vue.createVNode(vue.unref(index$4.GmPreviewFile), {
276
280
  dialogVisible: dialogVisible.value,
277
281
  "onUpdate:dialogVisible": _cache[2] || (_cache[2] = ($event) => dialogVisible.value = $event),
278
282
  "file-index": fileIndex.value,
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFile.vue2.js","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\n <div>\n <div\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\"\n class=\"gm-upload-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" :show-icon=\"true\" :field=\"field\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile\n v-model:dialogVisible=\"dialogVisible\"\n v-model:file-index=\"fileIndex\"\n :file-list=\"fileList\"\n :controls=\"controls\"\n :oncontextmenu=\"oncontextmenu\"\n :controlslist=\"controlslist\"\n :field=\"field\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElMessageBox } from 'element-plus';\nimport { useAliossHookStore } from '@giime/utils/src/alioss/aliossPutHook';\nimport { fileValidType } from '@giime/utils/src/file';\n// import { pasteFile } from '@giime/utils/src/pasteFile';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../fileComponent';\nimport GmPreviewFile from '../previewFile';\nimport { uploadFileProps } from './uploadFile';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\nimport type { AliOssResponse } from '@giime/utils/src/alioss/aliossPutHook';\n\ndefineOptions({\n name: 'GmUploadFile',\n});\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\", \"handleSaveFileSuccess\"]);\n\nconst { uploadFile, saveFileResult } = useAliossHookStore();\n\nsaveFileResult((res: AliOssResponse) => {\n emit('handleSaveFileSuccess', res);\n});\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n\n/* 上传 */\nconst httpRequest = async (params: UploadRequestOptions) => {\n const { file } = params;\n\n // 验证文件类型\n if (props.accept && props.accept !== '*') {\n const isValidType = fileValidType(file, props.accept);\n if (!isValidType) {\n throw new Error(`文件类型不支持,请上传 ${props.accept} 格式的文件`);\n }\n }\n\n const res = await uploadFile({\n file,\n fileName: props.fileName,\n folder: props.folder,\n seat: props.seat,\n partSize: props.partSize,\n parallel: props.parallel,\n options: props.options,\n bucket: props.bucket,\n saveStore: props.saveStore,\n platform: props.platform,\n cdn: props.cdn,\n });\n return res;\n};\n\n/* 删除文件前 */\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\n if (props.disabled) {\n return false;\n }\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst pasteFileRef = ref<HTMLElement>();\n/* 手动上传 */\nconst submit = () => {\n uploadFileRef.value!.submit();\n};\n\n/** 取消上传 */\nconst abort = (file: UploadFile) => {\n uploadFileRef.value!.abort(file);\n};\n\n/** 清空已上传的文件列表 */\nconst clearFiles = (status?: UploadStatus[]) => {\n uploadFileRef.value!.clearFiles(status);\n};\n\n/** 手动选择文件 */\nconst handleStart = (rawFile: UploadRawFile) => {\n uploadFileRef.value!.handleStart(rawFile);\n};\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n submit();\n }\n }\n });\n }\n});\n\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\n\ndefineExpose({\n submit,\n abort,\n clearFiles,\n handleStart,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-file {\n line-height: normal;\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: normal;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["useAliossHookStore","_useModel","file","fileValidType","GmConfirmBox","ref","usePasteFile","ElMessageBox"],"mappings":"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"}
1
+ {"version":3,"file":"UploadFile.vue2.js","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\n <div>\n <div\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\"\n class=\"gm-upload-file\"\n >\n <el-checkbox-group v-model=\"checkoutFiles\">\n <el-upload\n ref=\"uploadFileRef\"\n v-bind=\"props\"\n v-model:file-list=\"fileList\"\n :before-remove=\"beforeRemove\"\n action=\"\"\n :http-request=\"httpRequest\"\n :on-success=\"coverFileSuccess\"\n :on-error=\"coverFileError\"\n >\n <slot v-if=\"!disabled\">\n <template v-if=\"listType === 'picture-card'\">\n <div\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-border gm-border-dashed gm-p-1\"\n style=\"flex-direction: column\"\n :style=\"{ width: width + 'px', height: height + 'px' }\"\n >\n <el-icon :size=\"30\" color=\"#999\">\n <UploadFilled />\n </el-icon>\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\n 将文件拖到此处,复制粘贴,或 <em class=\"gm-text-blue-700\">点击上传</em>\n </div>\n </div>\n </template>\n <template v-else>\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\n </template>\n </slot>\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\n <slot name=\"file\" :file=\"file\">\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" :show-icon=\"true\" :field=\"field\" />\n </div>\n <div class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\n <el-icon><View /></el-icon>\n </span>\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file, fileList)\">\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile\n v-model:dialogVisible=\"dialogVisible\"\n v-model:file-index=\"fileIndex\"\n :file-list=\"fileList\"\n :controls=\"controls\"\n :oncontextmenu=\"oncontextmenu\"\n :controlslist=\"controlslist\"\n :field=\"field\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ElMessageBox } from 'element-plus';\nimport { useUploadTaskStore } from '@giime/hooks/store/useUploadTask';\nimport { usePasteFile } from '@giime/hooks/base/usePasteFile';\nimport { GmConfirmBox } from '@giime/components/src/plugins/confirmBox';\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\nimport GmFileComponent from '../fileComponent';\nimport GmPreviewFile from '../previewFile';\nimport { uploadFileProps } from './uploadFile';\nimport type { GmUploadProUserFileResponse } from './uploadFile';\nimport type { UploadFile, UploadFiles, UploadInstance, UploadProps, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\n\ndefineOptions({\n name: 'GmUploadFile',\n});\n\nconst props = defineProps(uploadFileProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\nconst { uploadFileTask } = useUploadTaskStore();\n\n/** 上传文件 */\nconst fileList = defineModel<UploadFile[]>('fileList', { required: true, default: () => [] });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n\nconst loadingUids = ref<Set<number>>(new Set());\n\n/* 上传 */\nconst httpRequest = async (options: UploadRequestOptions) => {\n loadingUids.value.add(options.file.uid);\n const { file } = options;\n\n const res = await uploadFileTask(file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\n\n return res;\n};\n\n/**判断是否全部上传完成 并触发事件 */\nconst checkAllUploadComplete = () => {\n if (loadingUids.value.size === 0) {\n // 全部文件上传完成\n props.onAllComplete?.();\n }\n};\n// 上传成功\nconst coverFileSuccess: UploadProps['onSuccess'] = (response: GmUploadProUserFileResponse, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n uploadFile.url = response.url;\n props.onSuccess?.(response, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n// 上传失败\nconst coverFileError: UploadProps['onError'] = (error, uploadFile, uploadFiles) => {\n loadingUids.value.delete(uploadFile.uid);\n props.onError?.(error, uploadFile, uploadFiles);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n};\n\n/* 删除文件前 */\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\n if (props.disabled) {\n return false;\n }\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n const index = fileList.value.indexOf(file);\n if (index > -1) {\n fileList.value.splice(index, 1);\n emit('handleRemove', { file, index });\n return props.onRemove?.(file, uploadFiles);\n }\n};\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadFiles) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst pasteFileRef = ref<HTMLElement>();\n/* 手动上传 */\nconst submit = () => {\n uploadFileRef.value!.submit();\n};\n\n/** 取消上传 */\nconst abort = (file: UploadFile) => {\n uploadFileRef.value!.abort(file);\n};\n\n/** 清空已上传的文件列表 */\nconst clearFiles = (status?: UploadStatus[]) => {\n uploadFileRef.value!.clearFiles(status);\n};\n\n/** 手动选择文件 */\nconst handleStart = (rawFile: UploadRawFile) => {\n uploadFileRef.value!.handleStart(rawFile);\n};\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\nconst handlePreview = (file: UploadFile) => {\n fileIndex.value = fileList.value.indexOf(file);\n dialogVisible.value = true;\n};\n\n//** 复制粘贴 */\nconst { onSuccess, onError } = usePasteFile(pasteFileRef, { accept: props.accept, disabled: props.disabled });\nonSuccess((files: File[]) => {\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n submit();\n }\n }\n });\n }\n});\n\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\n\ndefineExpose({\n submit,\n abort,\n clearFiles,\n handleStart,\n uploadFileRef,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-file-picture-card {\n :deep(.el-upload-list__item),\n :deep(.el-upload--picture-card) {\n width: auto;\n height: auto;\n }\n}\n</style>\n<style lang=\"scss\">\n.gm-upload-file {\n line-height: normal;\n .el-checkbox {\n position: absolute;\n left: 10px;\n top: 0;\n z-index: 9;\n }\n .el-upload-list--picture-card {\n gap: 10px;\n }\n .el-upload-list__item {\n margin: 0;\n }\n .el-upload-list__item-file-name {\n line-height: normal;\n }\n .el-upload-dragger {\n padding: 0;\n border: none;\n width: 100%;\n height: 100%;\n display: flex;\n }\n .el-upload--picture-card {\n border: none;\n }\n}\n.gm-upload-file-disabled {\n .el-upload--picture-card {\n display: none;\n }\n .el-upload-list__item-status-label {\n display: none;\n }\n}\n</style>\n"],"names":["useUploadTaskStore","_useModel","ref","GmConfirmBox","usePasteFile","ElMessageBox"],"mappings":"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"}