giime 0.6.3 → 0.6.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 (96) hide show
  1. package/dist/index.css +20 -20
  2. package/es/api/materialApi/cross/getAdFileExist.d.ts +1 -0
  3. package/es/api/materialApi/cross/getAdFileExist.mjs.map +1 -1
  4. package/es/components/src/base/chart/Chart.vue.d.ts +2 -2
  5. package/es/components/src/base/chart/index.d.ts +2 -2
  6. package/es/components/src/base/empty/Empty.vue.d.ts +1 -1
  7. package/es/components/src/base/empty/index.d.ts +3 -3
  8. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +4 -4
  9. package/es/components/src/business/uploadMaterial/index.d.ts +4 -4
  10. package/es/components/src/business/uploadMaterial/uploadMaterial.d.ts +2 -5
  11. package/es/components/src/business/uploadMaterial/uploadMaterial.mjs.map +1 -1
  12. package/es/components/src/composite/fileComponent/FileComponent.vue.d.ts +1 -1
  13. package/es/components/src/composite/fileComponent/index.d.ts +1 -1
  14. package/es/components/src/composite/importDialog/ImportDialog.vue.d.ts +9 -2
  15. package/es/components/src/composite/importDialog/ImportDialog.vue2.mjs +5 -4
  16. package/es/components/src/composite/importDialog/ImportDialog.vue2.mjs.map +1 -1
  17. package/es/components/src/composite/importDialog/index.d.ts +193 -49
  18. package/es/components/src/composite/previewFile/PreviewFile.vue.d.ts +1 -1
  19. package/es/components/src/composite/previewFile/index.d.ts +1 -1
  20. package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +5 -5
  21. package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
  22. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +159 -145
  23. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
  24. package/es/components/src/composite/uploadFile/index.d.ts +12 -12
  25. package/es/giime/index.mjs +2 -1
  26. package/es/giime/index.mjs.map +1 -1
  27. package/es/giime/version.d.ts +1 -1
  28. package/es/giime/version.mjs +1 -1
  29. package/es/giime/version.mjs.map +1 -1
  30. package/es/hooks/base/usePasteFile/index.d.ts +89 -0
  31. package/es/hooks/base/usePasteFile/index.mjs +109 -0
  32. package/es/hooks/base/usePasteFile/index.mjs.map +1 -0
  33. package/es/index.css +20 -20
  34. package/es/utils/index.d.ts +1 -0
  35. package/es/utils/index.mjs +2 -1
  36. package/es/utils/index.mjs.map +1 -1
  37. package/es/utils/src/alioss/aliossPutHook.d.ts +116 -41
  38. package/es/utils/src/alioss/aliossPutHook.mjs +165 -97
  39. package/es/utils/src/alioss/aliossPutHook.mjs.map +1 -1
  40. package/es/utils/src/file.d.ts +7 -0
  41. package/es/utils/src/file.mjs +39 -1
  42. package/es/utils/src/file.mjs.map +1 -1
  43. package/es/utils/src/http/createAxios.d.ts +1 -0
  44. package/es/utils/src/http/createAxios.mjs +5 -2
  45. package/es/utils/src/http/createAxios.mjs.map +1 -1
  46. package/es/utils/src/pasteFile/index.d.ts +33 -0
  47. package/es/utils/src/pasteFile/index.mjs +142 -0
  48. package/es/utils/src/pasteFile/index.mjs.map +1 -0
  49. package/lib/api/materialApi/cross/getAdFileExist.d.ts +1 -0
  50. package/lib/api/materialApi/cross/getAdFileExist.js.map +1 -1
  51. package/lib/components/src/base/chart/Chart.vue.d.ts +2 -2
  52. package/lib/components/src/base/chart/index.d.ts +2 -2
  53. package/lib/components/src/base/empty/Empty.vue.d.ts +1 -1
  54. package/lib/components/src/base/empty/index.d.ts +3 -3
  55. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +4 -4
  56. package/lib/components/src/business/uploadMaterial/index.d.ts +4 -4
  57. package/lib/components/src/business/uploadMaterial/uploadMaterial.d.ts +2 -5
  58. package/lib/components/src/business/uploadMaterial/uploadMaterial.js.map +1 -1
  59. package/lib/components/src/composite/fileComponent/FileComponent.vue.d.ts +1 -1
  60. package/lib/components/src/composite/fileComponent/index.d.ts +1 -1
  61. package/lib/components/src/composite/importDialog/ImportDialog.vue.d.ts +9 -2
  62. package/lib/components/src/composite/importDialog/ImportDialog.vue2.js +4 -3
  63. package/lib/components/src/composite/importDialog/ImportDialog.vue2.js.map +1 -1
  64. package/lib/components/src/composite/importDialog/index.d.ts +193 -49
  65. package/lib/components/src/composite/previewFile/PreviewFile.vue.d.ts +1 -1
  66. package/lib/components/src/composite/previewFile/index.d.ts +1 -1
  67. package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +5 -5
  68. package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
  69. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +163 -149
  70. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
  71. package/lib/components/src/composite/uploadFile/index.d.ts +12 -12
  72. package/lib/giime/index.js +334 -328
  73. package/lib/giime/index.js.map +1 -1
  74. package/lib/giime/version.d.ts +1 -1
  75. package/lib/giime/version.js +1 -1
  76. package/lib/giime/version.js.map +1 -1
  77. package/lib/hooks/base/usePasteFile/index.d.ts +89 -0
  78. package/lib/hooks/base/usePasteFile/index.js +111 -0
  79. package/lib/hooks/base/usePasteFile/index.js.map +1 -0
  80. package/lib/index.css +20 -20
  81. package/lib/utils/index.d.ts +1 -0
  82. package/lib/utils/index.js +6 -0
  83. package/lib/utils/index.js.map +1 -1
  84. package/lib/utils/src/alioss/aliossPutHook.d.ts +116 -41
  85. package/lib/utils/src/alioss/aliossPutHook.js +165 -97
  86. package/lib/utils/src/alioss/aliossPutHook.js.map +1 -1
  87. package/lib/utils/src/file.d.ts +7 -0
  88. package/lib/utils/src/file.js +40 -0
  89. package/lib/utils/src/file.js.map +1 -1
  90. package/lib/utils/src/http/createAxios.d.ts +1 -0
  91. package/lib/utils/src/http/createAxios.js +5 -2
  92. package/lib/utils/src/http/createAxios.js.map +1 -1
  93. package/lib/utils/src/pasteFile/index.d.ts +33 -0
  94. package/lib/utils/src/pasteFile/index.js +146 -0
  95. package/lib/utils/src/pasteFile/index.js.map +1 -0
  96. package/package.json +1 -1
package/dist/index.css CHANGED
@@ -806,6 +806,13 @@ video {
806
806
  margin: 0;
807
807
  }
808
808
 
809
+ .gm-flex-center[data-v-2a79bac9] {
810
+ align-items: center;
811
+ }
812
+
813
+ .gm-flex-justify-between[data-v-2a79bac9] {
814
+ justify-content: space-between;
815
+ }
809
816
  .gm-number-interval-single[data-v-47a13fd0] {
810
817
  border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
811
818
  box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
@@ -855,23 +862,9 @@ video {
855
862
  stroke-dashoffset: -120px;
856
863
  }
857
864
  }
858
- .gm-flex-center[data-v-2a79bac9] {
859
- align-items: center;
860
- }
861
-
862
- .gm-flex-justify-between[data-v-2a79bac9] {
863
- justify-content: space-between;
864
- }
865
- .gm-upload-preview-dialog[data-v-142ef678] [data-v-142ef678] .el-dialog__body {
866
- padding: 0;
867
- }
868
-
869
- .gm-upload-file-picture-card[data-v-142ef678] [data-v-142ef678] .el-upload-list__item, .gm-upload-file-picture-card[data-v-142ef678] [data-v-142ef678] .el-upload--picture-card {
870
- width: 120px;
871
- height: 120px;
872
- display: flex;
873
- align-items: center;
874
- justify-content: center;
865
+ [data-v-7b6755e2] .gmSearchForm .el-form-item {
866
+ margin-right: 0;
867
+ margin-bottom: 4px;
875
868
  }
876
869
  .gm-upload-file {
877
870
  line-height: normal;
@@ -899,9 +892,16 @@ video {
899
892
  .gm-upload-file-disabled .el-upload-list__item-status-label {
900
893
  display: none;
901
894
  }
902
- [data-v-7b6755e2] .gmSearchForm .el-form-item {
903
- margin-right: 0;
904
- margin-bottom: 4px;
895
+ .gm-upload-preview-dialog[data-v-855a2d4b] [data-v-855a2d4b] .el-dialog__body {
896
+ padding: 0;
897
+ }
898
+
899
+ .gm-upload-file-picture-card[data-v-855a2d4b] [data-v-855a2d4b] .el-upload-list__item, .gm-upload-file-picture-card[data-v-855a2d4b] [data-v-855a2d4b] .el-upload--picture-card {
900
+ width: 120px;
901
+ height: 120px;
902
+ display: flex;
903
+ align-items: center;
904
+ justify-content: center;
905
905
  }
906
906
  [data-v-668dc408] .gmTableNoBorder .el-table__body .el-table__cell {
907
907
  border-right: none;
@@ -7,6 +7,7 @@ export interface GetAdFileExistResponse {
7
7
  export interface GetAdFileExistResponseData {
8
8
  count: number;
9
9
  url: string;
10
+ id: number;
10
11
  }
11
12
  /**
12
13
  * @description 检测广告素材是否已存在
@@ -1 +1 @@
1
- {"version":3,"file":"getAdFileExist.mjs","sources":["../../../../../../packages/api/materialApi/cross/getAdFileExist.ts"],"sourcesContent":["import { type AxiosRequestConfig } from 'axios';\r\nimport request from '../request';\r\n\r\nexport interface GetAdFileExistResponse {\r\n code: number;\r\n data: GetAdFileExistResponseData;\r\n comment: string;\r\n}\r\n\r\nexport interface GetAdFileExistResponseData {\r\n count: number;\r\n url: string;\r\n}\r\n\r\n/**\r\n * @description 检测广告素材是否已存在\r\n * @param {string} md5Code 文件md5\r\n * @param {string} ext 文件后缀名\r\n * @return {*}\r\n **/\r\n\r\nexport interface GetAdFileExistParams extends AxiosRequestConfig {\r\n md5Code: string;\r\n ext: string;\r\n}\r\n\r\nexport function getAdFileExist(params: GetAdFileExistParams) {\r\n return request.post<GetAdFileExistResponse>(`/material/work/adFilesExist`, params);\r\n}\r\n"],"names":["request"],"mappings":";;AA0BO,SAAS,eAAe,MAA8B,EAAA;AAC3D,EAAO,OAAAA,OAAA,CAAQ,IAA6B,CAAA,CAAA,2BAAA,CAAA,EAA+B,MAAM,CAAA,CAAA;AACnF;;;;"}
1
+ {"version":3,"file":"getAdFileExist.mjs","sources":["../../../../../../packages/api/materialApi/cross/getAdFileExist.ts"],"sourcesContent":["import { type AxiosRequestConfig } from 'axios';\r\nimport request from '../request';\r\n\r\nexport interface GetAdFileExistResponse {\r\n code: number;\r\n data: GetAdFileExistResponseData;\r\n comment: string;\r\n}\r\n\r\nexport interface GetAdFileExistResponseData {\r\n count: number;\r\n url: string;\r\n id: number;\r\n}\r\n\r\n/**\r\n * @description 检测广告素材是否已存在\r\n * @param {string} md5Code 文件md5\r\n * @param {string} ext 文件后缀名\r\n * @return {*}\r\n **/\r\n\r\nexport interface GetAdFileExistParams extends AxiosRequestConfig {\r\n md5Code: string;\r\n ext: string;\r\n}\r\n\r\nexport function getAdFileExist(params: GetAdFileExistParams) {\r\n return request.post<GetAdFileExistResponse>(`/material/work/adFilesExist`, params);\r\n}\r\n"],"names":["request"],"mappings":";;AA2BO,SAAS,eAAe,MAA8B,EAAA;AAC3D,EAAO,OAAAA,OAAA,CAAQ,IAA6B,CAAA,CAAA,2BAAA,CAAA,EAA+B,MAAM,CAAA,CAAA;AACnF;;;;"}
@@ -139,13 +139,13 @@ declare const _default: import("vue").DefineComponent<{
139
139
  dataIndexInside?: number | undefined;
140
140
  }, value: number[]) => boolean;
141
141
  getDataURL: (opts?: {
142
- type?: "svg" | "png" | "jpeg" | undefined;
142
+ type?: "png" | "svg" | "jpeg" | undefined;
143
143
  pixelRatio?: number | undefined;
144
144
  backgroundColor?: import("echarts/types/dist/shared").ZRColor | undefined;
145
145
  excludeComponents?: string[] | undefined;
146
146
  } | undefined) => string;
147
147
  getConnectedDataURL: (opts?: {
148
- type?: "svg" | "png" | "jpeg" | undefined;
148
+ type?: "png" | "svg" | "jpeg" | undefined;
149
149
  pixelRatio?: number | undefined;
150
150
  backgroundColor?: import("echarts/types/dist/shared").ZRColor | undefined;
151
151
  connectedBackgroundColor?: import("echarts/types/dist/shared").ZRColor | undefined;
@@ -138,13 +138,13 @@ export declare const GmChart: import("../../../../utils").SFCWithInstall<import(
138
138
  dataIndexInside?: number | undefined;
139
139
  }, value: number[]) => boolean;
140
140
  getDataURL: (opts?: {
141
- type?: "svg" | "png" | "jpeg" | undefined;
141
+ type?: "png" | "svg" | "jpeg" | undefined;
142
142
  pixelRatio?: number | undefined;
143
143
  backgroundColor?: import("echarts/types/dist/shared.js").ZRColor | undefined;
144
144
  excludeComponents?: string[] | undefined;
145
145
  } | undefined) => string;
146
146
  getConnectedDataURL: (opts?: {
147
- type?: "svg" | "png" | "jpeg" | undefined;
147
+ type?: "png" | "svg" | "jpeg" | undefined;
148
148
  pixelRatio?: number | undefined;
149
149
  backgroundColor?: import("echarts/types/dist/shared.js").ZRColor | undefined;
150
150
  connectedBackgroundColor?: import("echarts/types/dist/shared.js").ZRColor | undefined;
@@ -7,8 +7,8 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
7
7
  imageSize: NumberConstructor;
8
8
  description: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
9
9
  }>>, {
10
- description: string;
11
10
  image: string;
11
+ description: string;
12
12
  }, {}>, {
13
13
  default?(_: {}): any;
14
14
  image?(_: {}): any;
@@ -9,8 +9,8 @@ export declare const GmEmpty: import("../../../../utils").SFCWithInstall<{
9
9
  imageSize: NumberConstructor;
10
10
  description: import("element-plus/es/utils/index.js").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
11
11
  }>>, {
12
- description: string;
13
12
  image: string;
13
+ description: string;
14
14
  }, true, {}, {}, {
15
15
  P: {};
16
16
  B: {};
@@ -23,8 +23,8 @@ export declare const GmEmpty: import("../../../../utils").SFCWithInstall<{
23
23
  imageSize: NumberConstructor;
24
24
  description: import("element-plus/es/utils/index.js").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
25
25
  }>>, {}, {}, {}, {}, {
26
- description: string;
27
26
  image: string;
27
+ description: string;
28
28
  }>;
29
29
  __isFragment?: undefined;
30
30
  __isTeleport?: undefined;
@@ -34,8 +34,8 @@ export declare const GmEmpty: import("../../../../utils").SFCWithInstall<{
34
34
  imageSize: NumberConstructor;
35
35
  description: import("element-plus/es/utils/index.js").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
36
36
  }>>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
37
- description: string;
38
37
  image: string;
38
+ description: string;
39
39
  }, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
40
40
  $slots: {
41
41
  default?(_: {}): any;
@@ -222,7 +222,7 @@ declare const _default: import("vue").DefineComponent<{
222
222
  file: UploadFile;
223
223
  index: number;
224
224
  }) => void;
225
- handleSaveFileSuccess: (file: import("../../../../api/materialApi").PostSaveFileResourcesData) => void;
225
+ handleSaveFileSuccess: (file: import("../../../../utils/src/alioss/aliossPutHook").AliOssResponse) => void;
226
226
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
227
227
  fileList: import("vue").PropType<UploadFiles>;
228
228
  checkoutFiles: import("vue").PropType<any[]>;
@@ -440,7 +440,7 @@ declare const _default: import("vue").DefineComponent<{
440
440
  index: number;
441
441
  }) => any) | undefined;
442
442
  "onUpdate:checkoutFiles"?: ((checkoutFiles: any[]) => any) | undefined;
443
- onHandleSaveFileSuccess?: ((file: import("../../../../api/materialApi").PostSaveFileResourcesData) => any) | undefined;
443
+ onHandleSaveFileSuccess?: ((file: import("../../../../utils/src/alioss/aliossPutHook").AliOssResponse) => any) | undefined;
444
444
  }, {
445
445
  name: string;
446
446
  checkbox: boolean;
@@ -455,10 +455,10 @@ declare const _default: import("vue").DefineComponent<{
455
455
  url: string;
456
456
  method: string;
457
457
  withCredentials: boolean;
458
+ file: Partial<UploadFile>;
458
459
  onError: (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
459
460
  onChange: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
460
461
  controls: boolean;
461
- file: Partial<UploadFile>;
462
462
  beforeUpload: (rawFile: UploadRawFile) => import("element-plus/es/utils").Awaitable<boolean | void | Blob | File | null | undefined>;
463
463
  onRemove: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
464
464
  onPreview: (uploadFile: UploadFile) => void;
@@ -474,10 +474,10 @@ declare const _default: import("vue").DefineComponent<{
474
474
  field: keyof UploadFile;
475
475
  controlslist: string;
476
476
  oncontextmenu: boolean;
477
+ parallel: number;
477
478
  fileName: string;
478
479
  folder: string;
479
480
  seat: string;
480
- parallel: number;
481
481
  partSize: number;
482
482
  bucket: string;
483
483
  cdn: string;
@@ -222,7 +222,7 @@ export declare const GmUploadMaterial: import("../../../../utils").SFCWithInstal
222
222
  file: import("element-plus").UploadFile;
223
223
  index: number;
224
224
  }) => void;
225
- handleSaveFileSuccess: (file: import("../../../../api/materialApi/index.js").PostSaveFileResourcesData) => void;
225
+ handleSaveFileSuccess: (file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => void;
226
226
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
227
227
  fileList: import("vue").PropType<import("element-plus").UploadFiles>;
228
228
  checkoutFiles: import("vue").PropType<any[]>;
@@ -440,7 +440,7 @@ export declare const GmUploadMaterial: import("../../../../utils").SFCWithInstal
440
440
  index: number;
441
441
  }) => any) | undefined;
442
442
  "onUpdate:checkoutFiles"?: ((checkoutFiles: any[]) => any) | undefined;
443
- onHandleSaveFileSuccess?: ((file: import("../../../../api/materialApi/index.js").PostSaveFileResourcesData) => any) | undefined;
443
+ onHandleSaveFileSuccess?: ((file: import("../../../../utils/src/alioss/aliossPutHook.js").AliOssResponse) => any) | undefined;
444
444
  }, {
445
445
  name: string;
446
446
  checkbox: boolean;
@@ -455,10 +455,10 @@ export declare const GmUploadMaterial: import("../../../../utils").SFCWithInstal
455
455
  url: string;
456
456
  method: string;
457
457
  withCredentials: boolean;
458
+ file: Partial<import("element-plus").UploadFile>;
458
459
  onError: (error: Error, uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
459
460
  onChange: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
460
461
  controls: boolean;
461
- file: Partial<import("element-plus").UploadFile>;
462
462
  beforeUpload: (rawFile: import("element-plus").UploadRawFile) => import("element-plus/es/utils/typescript.js").Awaitable<boolean | void | Blob | File | null | undefined>;
463
463
  onRemove: (uploadFile: import("element-plus").UploadFile, uploadFiles: import("element-plus").UploadFiles) => void;
464
464
  onPreview: (uploadFile: import("element-plus").UploadFile) => void;
@@ -474,10 +474,10 @@ export declare const GmUploadMaterial: import("../../../../utils").SFCWithInstal
474
474
  field: keyof import("element-plus").UploadFile;
475
475
  controlslist: string;
476
476
  oncontextmenu: boolean;
477
+ parallel: number;
477
478
  fileName: string;
478
479
  folder: string;
479
480
  seat: string;
480
- parallel: number;
481
481
  partSize: number;
482
482
  bucket: string;
483
483
  cdn: string;
@@ -1,7 +1,6 @@
1
- import type { PostSaveFileResourcesData } from '../../../../api/materialApi';
2
1
  import type { AliOssResponse } from '../../../../utils/src/alioss/aliossPutHook';
3
2
  export type UploadMaterialResponse = AliOssResponse;
4
- export type SaveFileResourcesFile = PostSaveFileResourcesData;
3
+ export type SaveFileResourcesFile = AliOssResponse;
5
4
  export declare const uploadMaterialProps: {
6
5
  accept: {
7
6
  type: StringConstructor;
@@ -92,11 +91,9 @@ export declare const uploadMaterialProps: {
92
91
  size: {
93
92
  type: NumberConstructor;
94
93
  default: number;
95
- };
96
- /** 文件是否保存入库 */
94
+ }; /** 文件存储路径 */
97
95
  field: {
98
96
  type: import("vue").PropType<keyof import("element-plus").UploadFile>;
99
- /** 文件存储路径 */
100
97
  default: string;
101
98
  };
102
99
  controls: {
@@ -1 +1 @@
1
- {"version":3,"file":"uploadMaterial.mjs","sources":["../../../../../../../packages/components/src/business/uploadMaterial/uploadMaterial.ts"],"sourcesContent":["import { uploadFileProps } from '../../composite/uploadFile';\r\nimport type { PostSaveFileResourcesData } from '@giime/api/materialApi';\r\nimport type { AliOssResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\nexport type UploadMaterialResponse = AliOssResponse;\r\n\r\nexport type SaveFileResourcesFile = PostSaveFileResourcesData;\r\n\r\nexport const uploadMaterialProps = {\r\n ...uploadFileProps,\r\n accept: {\r\n type: String,\r\n default: '.jpeg,.png,.jpg,.mp4,.gif,.avi',\r\n },\r\n /** 文件是否保存入库 */\r\n saveStore: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /** 文件存储路径 */\r\n folder: {\r\n type: String,\r\n default: 'material',\r\n },\r\n};\r\n"],"names":[],"mappings":";;;AAQO,MAAM,mBAAsB,GAAA;AAAA,EACjC,GAAG,eAAA;AAAA,EACH,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,gCAAA;AAAA,GACX;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,UAAA;AAAA,GACX;AACF;;;;"}
1
+ {"version":3,"file":"uploadMaterial.mjs","sources":["../../../../../../../packages/components/src/business/uploadMaterial/uploadMaterial.ts"],"sourcesContent":["import { uploadFileProps } from '../../composite/uploadFile';\r\nimport type { AliOssResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\nexport type UploadMaterialResponse = AliOssResponse;\r\n\r\nexport type SaveFileResourcesFile = AliOssResponse;\r\n\r\nexport const uploadMaterialProps = {\r\n ...uploadFileProps,\r\n accept: {\r\n type: String,\r\n default: '.jpeg,.png,.jpg,.mp4,.gif,.avi',\r\n },\r\n /** 文件是否保存入库 */\r\n saveStore: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /** 文件存储路径 */\r\n folder: {\r\n type: String,\r\n default: 'material',\r\n },\r\n};\r\n"],"names":[],"mappings":";;;AAOO,MAAM,mBAAsB,GAAA;AAAA,EACjC,GAAG,eAAA;AAAA,EACH,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,gCAAA;AAAA,GACX;AAAA;AAAA,EAEA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,UAAA;AAAA,GACX;AACF;;;;"}
@@ -60,8 +60,8 @@ declare const _default: import("vue").DefineComponent<{
60
60
  }>>, {
61
61
  size: number;
62
62
  url: string;
63
- controls: boolean;
64
63
  file: Partial<UploadFile>;
64
+ controls: boolean;
65
65
  field: keyof UploadFile;
66
66
  controlslist: string;
67
67
  oncontextmenu: boolean;
@@ -60,8 +60,8 @@ export declare const GmFileComponent: import("../../../../utils").SFCWithInstall
60
60
  }>>, {
61
61
  size: number;
62
62
  url: string;
63
- controls: boolean;
64
63
  file: Partial<import("element-plus").UploadFile>;
64
+ controls: boolean;
65
65
  field: keyof import("element-plus").UploadFile;
66
66
  controlslist: string;
67
67
  oncontextmenu: boolean;
@@ -3,7 +3,7 @@ import type { UploadFile, UploadFiles, UploadRawFile } from 'element-plus';
3
3
  declare function closeDialog(): void;
4
4
  /** 表单重置 */
5
5
  declare function reset(): void;
6
- declare const _default: import("vue").DefineComponent<{
6
+ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
7
7
  onSuccess: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
8
8
  (): (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
9
9
  new (): any;
@@ -111,5 +111,12 @@ declare const _default: import("vue").DefineComponent<{
111
111
  accept: string;
112
112
  httpRequest: import("element-plus").UploadRequestHandler;
113
113
  errorReselect: boolean;
114
- }, {}>;
114
+ }, {}>, {
115
+ default?(_: {}): any;
116
+ }>;
115
117
  export default _default;
118
+ type __VLS_WithTemplateSlots<T, S> = T & {
119
+ new (): {
120
+ $slots: S;
121
+ };
122
+ };
@@ -1,4 +1,4 @@
1
- import { createElementVNode, createTextVNode, defineComponent, ref, resolveComponent, openBlock, createElementBlock, Fragment, createCommentVNode, createVNode, withCtx, unref, withModifiers } from 'vue';
1
+ import { createElementVNode, createTextVNode, defineComponent, ref, resolveComponent, openBlock, createElementBlock, Fragment, createCommentVNode, createVNode, withCtx, unref, withModifiers, renderSlot } from 'vue';
2
2
  import { genFileId } from 'element-plus';
3
3
  import { getGmExports } from '../../../../utils/src/elementPlus/exports.mjs';
4
4
  import { GmMessage } from '../../plugins/message/index.mjs';
@@ -6,7 +6,7 @@ import { Download, UploadFilled } from '@element-plus/icons-vue';
6
6
  import { importDialogProps, importDialogEmits } from './importDialog.mjs';
7
7
 
8
8
  const _hoisted_1 = { class: "" };
9
- const _hoisted_2 = { class: "gm-mb-3 gm-bg-[#f5f5f5] gm-p-4" };
9
+ const _hoisted_2 = { class: "gm-mb-2 gm-bg-[#f5f5f5] gm-p-4" };
10
10
  const _hoisted_3 = /* @__PURE__ */ createElementVNode(
11
11
  "p",
12
12
  { class: "gm-mb-3 gm-text-[13px]" },
@@ -147,6 +147,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
147
147
  /* STABLE */
148
148
  }, 8, ["icon"])
149
149
  ]),
150
+ renderSlot(_ctx.$slots, "default"),
150
151
  createVNode(_component_gm_upload, {
151
152
  ref_key: "uploadRef",
152
153
  ref: uploadRef,
@@ -180,8 +181,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
180
181
  }, 8, ["file-list", "accept", "before-upload"])
181
182
  ])
182
183
  ]),
183
- _: 1
184
- /* STABLE */
184
+ _: 3
185
+ /* FORWARDED */
185
186
  }, 8, ["modelValue"])
186
187
  ],
187
188
  2112
@@ -1 +1 @@
1
- {"version":3,"file":"ImportDialog.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/importDialog/ImportDialog.vue"],"sourcesContent":["<template>\r\n <!-- 导入对话框 -->\r\n <gm-dialog v-model=\"dialogVisible\" title=\"导入\" width=\"480px\" append-to-body>\r\n <div class=\" \">\r\n <div class=\"gm-mb-3 gm-bg-[#f5f5f5] gm-p-4\">\r\n <p class=\"gm-mb-3 gm-text-[13px]\">下载导入模板,根据模板提示完善内容</p>\r\n <gm-button :icon=\"Download\" @click.stop=\"emit('downloadTemplate')\"> 下载模板 </gm-button>\r\n </div>\r\n <gm-upload\r\n ref=\"uploadRef\"\r\n v-model:file-list=\"fileList\"\r\n action=\"\"\r\n :limit=\"1\"\r\n drag\r\n :accept=\"accept\"\r\n :http-request=\"httpRequest\"\r\n :on-exceed=\"handleExceed\"\r\n :on-success=\"handleSuccess\"\r\n :on-error=\"handleError\"\r\n :before-upload=\"beforeUpload\"\r\n :auto-upload=\"false\"\r\n class=\"gmUploadEl gm-mb-5\"\r\n >\r\n <el-icon class=\"el-icon--upload\"><upload-filled /></el-icon>\r\n <div class=\"el-upload__text\">将文件拖到此处,或 <em>点击上传</em></div>\r\n <div class=\"gm-text-[#999]\">限制1个文件,新文件将覆盖旧文件</div>\r\n </gm-upload>\r\n </div>\r\n\r\n <template #footer>\r\n <div class=\"dialog-footer\">\r\n <gm-button type=\"primary\" :loading=\"uploadLoading\" @click=\"submitUpload\">导 入</gm-button>\r\n <gm-button @click=\"closeDialog\">取 消</gm-button>\r\n </div>\r\n </template>\r\n </gm-dialog>\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { ref } from 'vue';\r\nimport { genFileId } from 'element-plus';\r\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\r\nimport { GmMessage } from '@giime/components/src/plugins/message';\r\nimport { Download, UploadFilled } from '@element-plus/icons-vue';\r\nimport { importDialogEmits, importDialogProps } from './importDialog';\r\nimport type { UploadInstance } from '../../base/upload';\r\nimport type { UploadFile, UploadFiles, UploadProps, UploadRawFile, UploadRequestOptions, UploadUserFile } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmImportDialog',\r\n});\r\nconst props = defineProps(importDialogProps);\r\nconst emit = defineEmits(importDialogEmits);\r\n\r\nconst fileList = ref<UploadUserFile[]>([]);\r\nconst uploadRef = ref<UploadInstance>();\r\n\r\nconst handleExceed: UploadProps['onExceed'] = files => {\r\n uploadRef.value!.clearFiles();\r\n const file = files[0] as UploadRawFile;\r\n file.uid = genFileId();\r\n uploadRef.value!.handleStart(file);\r\n};\r\n\r\nconst submitUpload = () => {\r\n if (fileList.value.length === 0) {\r\n return GmMessage.error('请选择文件');\r\n }\r\n uploadRef.value!.submit();\r\n};\r\n/**\r\n * 编辑表单\r\n */\r\n// const dialogVisible = defineModel<boolean>('dialogVisible', { required: true });\r\nconst dialogVisible = ref(false);\r\n\r\n/** 新增按钮操作 */\r\nconst openDialog = () => {\r\n dialogVisible.value = true;\r\n};\r\n/** 取消按钮 */\r\nfunction closeDialog() {\r\n dialogVisible.value = false;\r\n reset();\r\n}\r\n/** 表单重置 */\r\nfunction reset() {\r\n fileList.value = [];\r\n}\r\n\r\nconst uploadLoading = ref(false);\r\nconst httpRequest = (options: UploadRequestOptions) => {\r\n uploadLoading.value = true;\r\n return props.httpRequest(options);\r\n};\r\n// 上传成功\r\nfunction handleSuccess(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) {\r\n uploadLoading.value = false;\r\n return props.onSuccess(response, uploadFile, uploadFiles);\r\n}\r\n// 上传失败\r\nconst handleError = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => {\r\n const file = uploadFile.raw;\r\n if (props.errorReselect && file) {\r\n file.uid = genFileId();\r\n uploadRef.value?.handleStart(file);\r\n }\r\n uploadLoading.value = false;\r\n return props.onError(error, uploadFile, uploadFiles);\r\n};\r\n\r\nconst exposeNames = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\r\nconst { exposeFns } = getGmExports(uploadRef, exposeNames);\r\ndefineExpose({\r\n openDialog,\r\n closeDialog,\r\n reset,\r\n ...exposeFns,\r\n});\r\n</script>\r\n<!-- <style scoped lang=\"scss\">\r\n:deep(.gmUploadEl .el-upload-dragger) {\r\n // background-color: #f5f5f5;\r\n // border: none;\r\n}\r\n</style> -->\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImportDialog.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/importDialog/ImportDialog.vue"],"sourcesContent":["<template>\n <!-- 导入对话框 -->\n <gm-dialog v-model=\"dialogVisible\" title=\"导入\" width=\"480px\" append-to-body>\n <div class=\" \">\n <div class=\"gm-mb-2 gm-bg-[#f5f5f5] gm-p-4\">\n <p class=\"gm-mb-3 gm-text-[13px]\">下载导入模板,根据模板提示完善内容</p>\n <gm-button :icon=\"Download\" @click.stop=\"emit('downloadTemplate')\"> 下载模板 </gm-button>\n </div>\n <slot />\n <gm-upload\n ref=\"uploadRef\"\n v-model:file-list=\"fileList\"\n action=\"\"\n :limit=\"1\"\n drag\n :accept=\"accept\"\n :http-request=\"httpRequest\"\n :on-exceed=\"handleExceed\"\n :on-success=\"handleSuccess\"\n :on-error=\"handleError\"\n :before-upload=\"beforeUpload\"\n :auto-upload=\"false\"\n class=\"gmUploadEl gm-mb-5\"\n >\n <el-icon class=\"el-icon--upload\"><upload-filled /></el-icon>\n <div class=\"el-upload__text\">将文件拖到此处,或 <em>点击上传</em></div>\n <div class=\"gm-text-[#999]\">限制1个文件,新文件将覆盖旧文件</div>\n </gm-upload>\n </div>\n\n <template #footer>\n <div class=\"dialog-footer\">\n <gm-button type=\"primary\" :loading=\"uploadLoading\" @click=\"submitUpload\">导 入</gm-button>\n <gm-button @click=\"closeDialog\">取 消</gm-button>\n </div>\n </template>\n </gm-dialog>\n</template>\n<script lang=\"ts\" setup>\nimport { ref } from 'vue';\nimport { genFileId } from 'element-plus';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport { Download, UploadFilled } from '@element-plus/icons-vue';\nimport { importDialogEmits, importDialogProps } from './importDialog';\nimport type { UploadInstance } from '../../base/upload';\nimport type { UploadFile, UploadFiles, UploadProps, UploadRawFile, UploadRequestOptions, UploadUserFile } from 'element-plus';\n\ndefineOptions({\n name: 'GmImportDialog',\n});\nconst props = defineProps(importDialogProps);\nconst emit = defineEmits(importDialogEmits);\n\nconst fileList = ref<UploadUserFile[]>([]);\nconst uploadRef = ref<UploadInstance>();\n\nconst handleExceed: UploadProps['onExceed'] = files => {\n uploadRef.value!.clearFiles();\n const file = files[0] as UploadRawFile;\n file.uid = genFileId();\n uploadRef.value!.handleStart(file);\n};\n\nconst submitUpload = () => {\n if (fileList.value.length === 0) {\n return GmMessage.error('请选择文件');\n }\n uploadRef.value!.submit();\n};\n/**\n * 编辑表单\n */\n// const dialogVisible = defineModel<boolean>('dialogVisible', { required: true });\nconst dialogVisible = ref(false);\n\n/** 新增按钮操作 */\nconst openDialog = () => {\n dialogVisible.value = true;\n};\n/** 取消按钮 */\nfunction closeDialog() {\n dialogVisible.value = false;\n reset();\n}\n/** 表单重置 */\nfunction reset() {\n fileList.value = [];\n}\n\nconst uploadLoading = ref(false);\nconst httpRequest = (options: UploadRequestOptions) => {\n uploadLoading.value = true;\n return props.httpRequest(options);\n};\n// 上传成功\nfunction handleSuccess(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) {\n uploadLoading.value = false;\n return props.onSuccess(response, uploadFile, uploadFiles);\n}\n// 上传失败\nconst handleError = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => {\n const file = uploadFile.raw;\n if (props.errorReselect && file) {\n file.uid = genFileId();\n uploadRef.value?.handleStart(file);\n }\n uploadLoading.value = false;\n return props.onError(error, uploadFile, uploadFiles);\n};\n\nconst exposeNames = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadRef, exposeNames);\ndefineExpose({\n openDialog,\n closeDialog,\n reset,\n ...exposeFns,\n});\n</script>\n<!-- <style scoped lang=\"scss\">\n:deep(.gmUploadEl .el-upload-dragger) {\n // background-color: #f5f5f5;\n // border: none;\n}\n</style> -->\n"],"names":[],"mappings":"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"}