giime 0.7.9 → 0.7.11
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.
- package/dist/index.css +64 -61
- package/es/components/index.mjs +2 -0
- package/es/components/index.mjs.map +1 -1
- package/es/components/src/business/uploadPro/UploadPro.vue.mjs +1 -1
- package/es/components/src/business/uploadPro/UploadPro.vue2.mjs +1 -8
- package/es/components/src/business/uploadPro/UploadPro.vue2.mjs.map +1 -1
- package/es/components/src/composite/fileComponent/FileComponent.vue.d.ts +3 -3
- package/es/components/src/composite/fileComponent/fileComponent.d.ts +1 -1
- package/es/components/src/composite/fileComponent/fileComponent.mjs.map +1 -1
- package/es/components/src/composite/fileComponent/index.d.ts +3 -3
- package/es/components/src/composite/fileList2/FileList.vue.d.ts +95 -0
- package/es/components/src/composite/fileList2/FileList.vue.mjs +6 -0
- package/es/components/src/composite/fileList2/FileList.vue.mjs.map +1 -0
- package/es/components/src/composite/fileList2/FileList.vue2.mjs +62 -0
- package/es/components/src/composite/fileList2/FileList.vue2.mjs.map +1 -0
- package/es/components/src/composite/fileList2/fileList.d.ts +47 -0
- package/es/components/src/composite/fileList2/fileList.mjs +24 -0
- package/es/components/src/composite/fileList2/fileList.mjs.map +1 -0
- package/es/components/src/composite/fileList2/index.d.ts +98 -0
- package/es/components/src/composite/fileList2/index.mjs +10 -0
- package/es/components/src/composite/fileList2/index.mjs.map +1 -0
- package/es/components/src/composite/index.d.ts +1 -0
- package/es/components/src/composite/index.mjs +2 -0
- package/es/components/src/composite/index.mjs.map +1 -1
- package/es/components/src/composite/previewFile/PreviewFile.vue.d.ts +3 -3
- package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +3 -2
- package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -1
- package/es/components/src/composite/previewFile/index.d.ts +3 -3
- package/es/components/src/composite/previewFile/previewFile.d.ts +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +3 -3
- package/es/components/src/composite/uploadFile/index.d.ts +7 -7
- package/es/components/src/composite/uploadFile/uploadFile.d.ts +1 -1
- package/es/giime/component.mjs +4 -0
- package/es/giime/component.mjs.map +1 -1
- package/es/giime/index.mjs +2 -0
- package/es/giime/index.mjs.map +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/index.css +64 -61
- package/es/utils/src/file.d.ts +7 -5
- package/es/utils/src/file.mjs +26 -4
- package/es/utils/src/file.mjs.map +1 -1
- package/global.d.ts +2 -0
- package/lib/components/index.js +18 -14
- package/lib/components/index.js.map +1 -1
- package/lib/components/src/business/uploadPro/UploadPro.vue.js +1 -1
- package/lib/components/src/business/uploadPro/UploadPro.vue2.js +1 -8
- package/lib/components/src/business/uploadPro/UploadPro.vue2.js.map +1 -1
- package/lib/components/src/composite/fileComponent/FileComponent.vue.d.ts +3 -3
- package/lib/components/src/composite/fileComponent/fileComponent.d.ts +1 -1
- package/lib/components/src/composite/fileComponent/fileComponent.js.map +1 -1
- package/lib/components/src/composite/fileComponent/index.d.ts +3 -3
- package/lib/components/src/composite/fileList2/FileList.vue.d.ts +95 -0
- package/lib/components/src/composite/fileList2/FileList.vue.js +10 -0
- package/lib/components/src/composite/fileList2/FileList.vue.js.map +1 -0
- package/lib/components/src/composite/fileList2/FileList.vue2.js +66 -0
- package/lib/components/src/composite/fileList2/FileList.vue2.js.map +1 -0
- package/lib/components/src/composite/fileList2/fileList.d.ts +47 -0
- package/lib/components/src/composite/fileList2/fileList.js +26 -0
- package/lib/components/src/composite/fileList2/fileList.js.map +1 -0
- package/lib/components/src/composite/fileList2/index.d.ts +98 -0
- package/lib/components/src/composite/fileList2/index.js +16 -0
- package/lib/components/src/composite/fileList2/index.js.map +1 -0
- package/lib/components/src/composite/index.d.ts +1 -0
- package/lib/components/src/composite/index.js +4 -0
- package/lib/components/src/composite/index.js.map +1 -1
- package/lib/components/src/composite/previewFile/PreviewFile.vue.d.ts +3 -3
- package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +3 -2
- package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -1
- package/lib/components/src/composite/previewFile/index.d.ts +3 -3
- package/lib/components/src/composite/previewFile/previewFile.d.ts +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +3 -3
- package/lib/components/src/composite/uploadFile/index.d.ts +7 -7
- package/lib/components/src/composite/uploadFile/uploadFile.d.ts +1 -1
- package/lib/giime/component.js +32 -28
- package/lib/giime/component.js.map +1 -1
- package/lib/giime/index.js +80 -76
- package/lib/giime/index.js.map +1 -1
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/index.css +64 -61
- package/lib/utils/src/file.d.ts +7 -5
- package/lib/utils/src/file.js +26 -4
- package/lib/utils/src/file.js.map +1 -1
- package/package.json +1 -1
package/es/index.css
CHANGED
|
@@ -590,6 +590,9 @@ video {
|
|
|
590
590
|
.gm-h-1 {
|
|
591
591
|
height: 0.25rem;
|
|
592
592
|
}
|
|
593
|
+
.gm-h-32 {
|
|
594
|
+
height: 8rem;
|
|
595
|
+
}
|
|
593
596
|
.gm-h-\[30px\] {
|
|
594
597
|
height: 30px;
|
|
595
598
|
}
|
|
@@ -909,14 +912,6 @@ video {
|
|
|
909
912
|
stroke-dashoffset: -120px;
|
|
910
913
|
}
|
|
911
914
|
}
|
|
912
|
-
.gm-upload-pro-preview-dialog[data-v-40d129e4] [data-v-40d129e4] .el-dialog__body {
|
|
913
|
-
padding: 0;
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
.gm-upload-pro-file-picture-card[data-v-40d129e4] [data-v-40d129e4] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-40d129e4] [data-v-40d129e4] .el-upload--picture-card {
|
|
917
|
-
width: auto;
|
|
918
|
-
height: auto;
|
|
919
|
-
}
|
|
920
915
|
.gm-upload-pro-file {
|
|
921
916
|
line-height: normal;
|
|
922
917
|
}
|
|
@@ -955,9 +950,13 @@ video {
|
|
|
955
950
|
.gm-upload-pro-file-disabled .el-upload-list__item-status-label {
|
|
956
951
|
display: none;
|
|
957
952
|
}
|
|
958
|
-
[data-v-
|
|
959
|
-
|
|
960
|
-
|
|
953
|
+
.gm-upload-pro-preview-dialog[data-v-9ac30390] [data-v-9ac30390] .el-dialog__body {
|
|
954
|
+
padding: 0;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
.gm-upload-pro-file-picture-card[data-v-9ac30390] [data-v-9ac30390] .el-upload-list__item, .gm-upload-pro-file-picture-card[data-v-9ac30390] [data-v-9ac30390] .el-upload--picture-card {
|
|
958
|
+
width: auto;
|
|
959
|
+
height: auto;
|
|
961
960
|
}
|
|
962
961
|
.gm-flex-center[data-v-c17deec9] {
|
|
963
962
|
align-items: center;
|
|
@@ -966,32 +965,6 @@ video {
|
|
|
966
965
|
.gm-flex-justify-between[data-v-c17deec9] {
|
|
967
966
|
justify-content: space-between;
|
|
968
967
|
}
|
|
969
|
-
.gm-number-interval-single[data-v-4e6f4d6f] {
|
|
970
|
-
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
971
|
-
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
972
|
-
background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
|
|
973
|
-
}
|
|
974
|
-
.gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
|
|
975
|
-
box-shadow: none;
|
|
976
|
-
background: none;
|
|
977
|
-
}
|
|
978
|
-
|
|
979
|
-
.gm-number-interval-close[data-v-4e6f4d6f] {
|
|
980
|
-
display: none;
|
|
981
|
-
color: var(--el-input-icon-color, var(--el-text-color-placeholder));
|
|
982
|
-
}
|
|
983
|
-
|
|
984
|
-
.gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
|
|
985
|
-
display: flex;
|
|
986
|
-
}
|
|
987
|
-
.gm-upload-preview-dialog[data-v-312f9322] [data-v-312f9322] .el-dialog__body {
|
|
988
|
-
padding: 0;
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
.gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload-list__item, .gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload--picture-card {
|
|
992
|
-
width: auto;
|
|
993
|
-
height: auto;
|
|
994
|
-
}
|
|
995
968
|
[data-v-2c351ff8] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
996
969
|
border-right: none;
|
|
997
970
|
}
|
|
@@ -1015,6 +988,28 @@ video {
|
|
|
1015
988
|
[data-v-2c351ff8] .gmTableNoBorder .el-table__border-left-patch {
|
|
1016
989
|
height: 0;
|
|
1017
990
|
}
|
|
991
|
+
.gm-number-interval-single[data-v-4e6f4d6f] {
|
|
992
|
+
border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
|
|
993
|
+
box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color)) inset;
|
|
994
|
+
background-color: var(--el-input-bg-color, var(--el-fill-color-blank));
|
|
995
|
+
}
|
|
996
|
+
.gm-number-interval-single[data-v-4e6f4d6f] [data-v-4e6f4d6f] .el-input__wrapper {
|
|
997
|
+
box-shadow: none;
|
|
998
|
+
background: none;
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
.gm-number-interval-close[data-v-4e6f4d6f] {
|
|
1002
|
+
display: none;
|
|
1003
|
+
color: var(--el-input-icon-color, var(--el-text-color-placeholder));
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
.gm-number-interval-single[data-v-4e6f4d6f]:hover .gm-number-interval-close[data-v-4e6f4d6f] {
|
|
1007
|
+
display: flex;
|
|
1008
|
+
}
|
|
1009
|
+
[data-v-488ca110] .gmSearchForm .el-form-item {
|
|
1010
|
+
margin-right: 0;
|
|
1011
|
+
margin-bottom: 4px;
|
|
1012
|
+
}
|
|
1018
1013
|
[data-v-98c2e804] .gmTableNoBorder .el-table__body .el-table__cell {
|
|
1019
1014
|
border-right: none;
|
|
1020
1015
|
}
|
|
@@ -1038,6 +1033,14 @@ video {
|
|
|
1038
1033
|
[data-v-98c2e804] .gmTableNoBorder .el-table__border-left-patch {
|
|
1039
1034
|
height: 0;
|
|
1040
1035
|
}
|
|
1036
|
+
.gm-upload-preview-dialog[data-v-312f9322] [data-v-312f9322] .el-dialog__body {
|
|
1037
|
+
padding: 0;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
.gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload-list__item, .gm-upload-file-picture-card[data-v-312f9322] [data-v-312f9322] .el-upload--picture-card {
|
|
1041
|
+
width: auto;
|
|
1042
|
+
height: auto;
|
|
1043
|
+
}
|
|
1041
1044
|
.gm-upload-file {
|
|
1042
1045
|
line-height: normal;
|
|
1043
1046
|
}
|
|
@@ -1083,112 +1086,112 @@ video {
|
|
|
1083
1086
|
}
|
|
1084
1087
|
|
|
1085
1088
|
@charset "UTF-8";
|
|
1086
|
-
.custom-
|
|
1089
|
+
.table-custom-header-drawer .el-drawer__header {
|
|
1087
1090
|
padding: 10px 15px;
|
|
1088
1091
|
margin: 0;
|
|
1089
1092
|
border-bottom: 1px solid #ebeef5;
|
|
1090
1093
|
}
|
|
1091
|
-
.custom-
|
|
1094
|
+
.table-custom-header-drawer .el-drawer__title {
|
|
1092
1095
|
font-size: 14px;
|
|
1093
1096
|
color: #333;
|
|
1094
1097
|
}
|
|
1095
|
-
.custom-
|
|
1098
|
+
.table-custom-header-drawer .el-drawer__body {
|
|
1096
1099
|
padding: 15px;
|
|
1097
1100
|
}
|
|
1098
|
-
.custom-
|
|
1101
|
+
.table-custom-header-drawer .el-drawer__footer {
|
|
1099
1102
|
padding: 10px 15px;
|
|
1100
1103
|
border-top: 1px solid #ebeef5;
|
|
1101
1104
|
}
|
|
1102
|
-
.custom-
|
|
1105
|
+
.table-custom-header-drawer .el-checkbox {
|
|
1103
1106
|
display: flex;
|
|
1104
1107
|
align-items: center;
|
|
1105
1108
|
}
|
|
1106
|
-
.custom-
|
|
1109
|
+
.table-custom-header-drawer .el-input__inner {
|
|
1107
1110
|
text-align: center;
|
|
1108
1111
|
}
|
|
1109
|
-
.custom-
|
|
1112
|
+
.table-custom-header-drawer .el-input__suffix {
|
|
1110
1113
|
position: absolute;
|
|
1111
1114
|
right: 10px;
|
|
1112
1115
|
}
|
|
1113
|
-
.custom-
|
|
1116
|
+
.table-custom-header-drawer .custom-content li {
|
|
1114
1117
|
display: flex;
|
|
1115
1118
|
align-items: center;
|
|
1116
1119
|
justify-content: center;
|
|
1117
1120
|
height: 44px;
|
|
1118
1121
|
}
|
|
1119
|
-
.custom-
|
|
1122
|
+
.table-custom-header-drawer .custom-group {
|
|
1120
1123
|
max-height: calc(100vh - 226px);
|
|
1121
1124
|
overflow-y: auto;
|
|
1122
1125
|
}
|
|
1123
|
-
.custom-
|
|
1126
|
+
.table-custom-header-drawer .custom-group::-webkit-scrollbar {
|
|
1124
1127
|
/*滚动条整体样式*/
|
|
1125
1128
|
width: 4px;
|
|
1126
1129
|
/*高宽分别对应横竖滚动条的尺寸*/
|
|
1127
1130
|
height: 1px;
|
|
1128
1131
|
}
|
|
1129
|
-
.custom-
|
|
1132
|
+
.table-custom-header-drawer .custom-group::-webkit-scrollbar-thumb {
|
|
1130
1133
|
/*滚动条里面小方块*/
|
|
1131
1134
|
border-radius: 10px;
|
|
1132
1135
|
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
|
|
1133
1136
|
background: #999;
|
|
1134
1137
|
}
|
|
1135
|
-
.custom-
|
|
1138
|
+
.table-custom-header-drawer .custom-group::-webkit-scrollbar-track {
|
|
1136
1139
|
/*滚动条里面轨道*/
|
|
1137
1140
|
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
|
|
1138
1141
|
border-radius: 10px;
|
|
1139
1142
|
background: #eee;
|
|
1140
1143
|
}
|
|
1141
1144
|
@charset "UTF-8";
|
|
1142
|
-
.
|
|
1145
|
+
.custom-operate-drawer .el-drawer__header {
|
|
1143
1146
|
padding: 10px 15px;
|
|
1144
1147
|
margin: 0;
|
|
1145
1148
|
border-bottom: 1px solid #ebeef5;
|
|
1146
1149
|
}
|
|
1147
|
-
.
|
|
1150
|
+
.custom-operate-drawer .el-drawer__title {
|
|
1148
1151
|
font-size: 14px;
|
|
1149
1152
|
color: #333;
|
|
1150
1153
|
}
|
|
1151
|
-
.
|
|
1154
|
+
.custom-operate-drawer .el-drawer__body {
|
|
1152
1155
|
padding: 15px;
|
|
1153
1156
|
}
|
|
1154
|
-
.
|
|
1157
|
+
.custom-operate-drawer .el-drawer__footer {
|
|
1155
1158
|
padding: 10px 15px;
|
|
1156
1159
|
border-top: 1px solid #ebeef5;
|
|
1157
1160
|
}
|
|
1158
|
-
.
|
|
1161
|
+
.custom-operate-drawer .el-checkbox {
|
|
1159
1162
|
display: flex;
|
|
1160
1163
|
align-items: center;
|
|
1161
1164
|
}
|
|
1162
|
-
.
|
|
1165
|
+
.custom-operate-drawer .el-input__inner {
|
|
1163
1166
|
text-align: center;
|
|
1164
1167
|
}
|
|
1165
|
-
.
|
|
1168
|
+
.custom-operate-drawer .el-input__suffix {
|
|
1166
1169
|
position: absolute;
|
|
1167
1170
|
right: 10px;
|
|
1168
1171
|
}
|
|
1169
|
-
.
|
|
1172
|
+
.custom-operate-drawer .custom-content li {
|
|
1170
1173
|
display: flex;
|
|
1171
1174
|
align-items: center;
|
|
1172
1175
|
justify-content: center;
|
|
1173
1176
|
height: 44px;
|
|
1174
1177
|
}
|
|
1175
|
-
.
|
|
1178
|
+
.custom-operate-drawer .custom-group {
|
|
1176
1179
|
max-height: calc(100vh - 226px);
|
|
1177
1180
|
overflow-y: auto;
|
|
1178
1181
|
}
|
|
1179
|
-
.
|
|
1182
|
+
.custom-operate-drawer .custom-group::-webkit-scrollbar {
|
|
1180
1183
|
/*滚动条整体样式*/
|
|
1181
1184
|
width: 4px;
|
|
1182
1185
|
/*高宽分别对应横竖滚动条的尺寸*/
|
|
1183
1186
|
height: 1px;
|
|
1184
1187
|
}
|
|
1185
|
-
.
|
|
1188
|
+
.custom-operate-drawer .custom-group::-webkit-scrollbar-thumb {
|
|
1186
1189
|
/*滚动条里面小方块*/
|
|
1187
1190
|
border-radius: 10px;
|
|
1188
1191
|
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);
|
|
1189
1192
|
background: #999;
|
|
1190
1193
|
}
|
|
1191
|
-
.
|
|
1194
|
+
.custom-operate-drawer .custom-group::-webkit-scrollbar-track {
|
|
1192
1195
|
/*滚动条里面轨道*/
|
|
1193
1196
|
box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);
|
|
1194
1197
|
border-radius: 10px;
|
package/es/utils/src/file.d.ts
CHANGED
|
@@ -73,13 +73,15 @@ export declare function fileValidType(file: File, validTypes: string): boolean;
|
|
|
73
73
|
export declare const fileMd5: (file: File) => Promise<string>;
|
|
74
74
|
/**
|
|
75
75
|
* 获取图片宽高信息
|
|
76
|
-
* @param
|
|
76
|
+
* @param source 图片文件或图片链接
|
|
77
77
|
* @returns 图片宽高信息
|
|
78
78
|
*/
|
|
79
|
-
export declare
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
export declare function getImageInfo(source: File, options?: {
|
|
80
|
+
hideMessage?: boolean;
|
|
81
|
+
}): Promise<HTMLImageElement>;
|
|
82
|
+
export declare function getImageInfo(source: string, options?: {
|
|
83
|
+
hideMessage?: boolean;
|
|
84
|
+
}): Promise<HTMLImageElement>;
|
|
83
85
|
/**
|
|
84
86
|
* 获取视频信息
|
|
85
87
|
* @param url 视频链接
|
package/es/utils/src/file.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { GmMessage } from '../../components/src/plugins/message/index.mjs';
|
|
1
2
|
import { md5 } from 'js-md5';
|
|
2
3
|
export { genFileId } from 'element-plus';
|
|
3
4
|
|
|
@@ -88,14 +89,35 @@ const fileMd5 = (file) => {
|
|
|
88
89
|
reader.readAsArrayBuffer(file);
|
|
89
90
|
});
|
|
90
91
|
};
|
|
91
|
-
|
|
92
|
+
function getImageInfo(source, options) {
|
|
92
93
|
return new Promise((resolve, reject) => {
|
|
93
94
|
const img = new Image();
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
let url;
|
|
96
|
+
let shouldRevokeUrl = false;
|
|
97
|
+
if (source instanceof File) {
|
|
98
|
+
url = URL.createObjectURL(source);
|
|
99
|
+
shouldRevokeUrl = true;
|
|
100
|
+
} else {
|
|
101
|
+
url = source;
|
|
102
|
+
}
|
|
103
|
+
img.onload = () => {
|
|
104
|
+
if (shouldRevokeUrl) {
|
|
105
|
+
URL.revokeObjectURL(url);
|
|
106
|
+
}
|
|
107
|
+
resolve(img);
|
|
108
|
+
};
|
|
109
|
+
img.onerror = () => {
|
|
110
|
+
if (shouldRevokeUrl) {
|
|
111
|
+
URL.revokeObjectURL(url);
|
|
112
|
+
}
|
|
113
|
+
if (!options?.hideMessage) {
|
|
114
|
+
GmMessage.error("\u56FE\u7247\u4FE1\u606F\u83B7\u53D6\u5931\u8D25");
|
|
115
|
+
}
|
|
116
|
+
reject();
|
|
117
|
+
};
|
|
96
118
|
img.src = url;
|
|
97
119
|
});
|
|
98
|
-
}
|
|
120
|
+
}
|
|
99
121
|
const getVideoInfo = (url) => {
|
|
100
122
|
return new Promise((resolve, reject) => {
|
|
101
123
|
const video = document.createElement("video");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.mjs","sources":["../../../../../packages/utils/src/file.ts"],"sourcesContent":["import { md5 } from 'js-md5';\n\nexport { genFileId } from 'element-plus';\n\nexport interface FileConversionOptions {\n mimeType?: string;\n}\n/**\n * 将 URL 转换为 Blob\n * @param url\n * @returns\n */\nexport async function urlToBlob(url: string): Promise<Blob> {\n const response = await fetch(url);\n return response.blob();\n}\n\n/**\n * 将 URL 转换为 File\n * @param url\n * @param filename\n * @param options\n * @returns\n */\nexport async function urlToFile(url: string, filename: string, options?: FileConversionOptions): Promise<File> {\n const blob = await urlToBlob(url);\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 File\n * @param base64\n * @param filename\n * @param options\n * @returns\n */\nexport function base64ToFile(base64: string, filename: string, options?: FileConversionOptions): File {\n const bolb = base64ToBlob(base64, { mimeType: options?.mimeType });\n return blobToFile(bolb, filename);\n}\n\n/**\n * 将 File 转换为 Base64 字符串\n * @param file\n * @returns\n */\nexport function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * 将 Blob 转换为 Base64 字符串\n * @param blob\n * @returns\n */\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\n/**\n * 将 File 转换为 Blob\n * @param file\n * @param options\n * @returns\n */\nexport function fileToBlob(file: File, options?: FileConversionOptions): Blob {\n return new Blob([file], { type: options?.mimeType ?? file.type });\n}\n\n/**\n * 将 Blob 转换为 File\n * @param blob\n * @param filename\n * @param options\n * @returns\n */\nexport function blobToFile(blob: Blob, filename: string, options?: FileConversionOptions): File {\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 Blob\n * @param base64\n * @param options\n * @returns\n */\nexport function base64ToBlob(base64: string, options?: FileConversionOptions): Blob {\n const matches = base64.match(/^data:(.+);base64,(.*)$/);\n\n if (!matches || matches.length !== 3) {\n throw new Error('Invalid Base64 string');\n }\n\n const mimeType = options?.mimeType ?? matches[1];\n const byteString = atob(matches[2]);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const intArray = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([intArray], { type: mimeType });\n}\n/**\n * 文件转本地url\n * @param file\n * @returns\n */\nexport function fileToUrl(file: File | Blob) {\n return URL.createObjectURL(file);\n}\n\n// 导出一个函数,用于检查文件类型是否合法\nexport function fileValidType(file: File, validTypes: string) {\n // 获取文件的 MIME 类型\n const fileType = file.type || '';\n // 获取文件的扩展名\n const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf('.')));\n // 将合法的文件类型字符串分割成数组\n const acceptTypes = validTypes.split(',').map(type => type.trim());\n // 遍历合法的文件类型数组,检查文件类型是否合法\n return acceptTypes.some(type => {\n // 如果文件类型以 . 开头,则检查文件扩展名\n if (type.startsWith('.')) {\n // 检查文件扩展名是否与合法的文件类型匹配\n return fileExtension.toLowerCase() === type.toLowerCase();\n // 如果文件类型包含 /*,则检查 MIME 类型组,如 image/*\n } else if (type.includes('/*')) {\n // 检查 MIME 类型组,如 image/*\n const [mainType] = type.split('/');\n return fileType.startsWith(`${mainType}/`);\n } else {\n // 检查具体 MIME 类型\n return fileType === type;\n }\n });\n}\n\n/**\n * 计算文件的MD5哈希值\n * @param file 要计算哈希值的文件\n * @returns 文件的MD5哈希值\n */\nexport const fileMd5 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = e => {\n try {\n const binary = (e.target as FileReader).result;\n if (binary) {\n resolve(md5(binary));\n } else {\n reject(new Error('读取文件内容失败'));\n }\n } catch (error) {\n reject(new Error(`计算MD5失败: ${error instanceof Error ? error.message : String(error)}`));\n }\n };\n\n reader.onerror = () => {\n reject(new Error('读取文件失败'));\n };\n\n reader.readAsArrayBuffer(file);\n });\n};\n\n/**\n * 获取图片宽高信息\n * @param url 图片链接\n * @returns 图片宽高信息\n */\nexport const getImageInfo = (url: string): Promise<{ width: number; height: number }> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve({ width: img.width, height: img.height });\n img.onerror = reject;\n img.src = url;\n });\n};\n\n/**\n * 获取视频信息\n * @param url 视频链接\n * @returns 视频宽高信息\n */\nexport const getVideoInfo = (url: string): Promise<{ width: number; height: number; duration: number }> => {\n return new Promise((resolve, reject) => {\n const video = document.createElement('video');\n video.onloadedmetadata = () => resolve({ width: video.videoWidth, height: video.videoHeight, duration: video.duration });\n video.onerror = reject;\n video.src = url;\n });\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file.mjs","sources":["../../../../../packages/utils/src/file.ts"],"sourcesContent":["import { GmMessage } from '@giime/components/src/plugins/message';\nimport { md5 } from 'js-md5';\n\nexport { genFileId } from 'element-plus';\n\nexport interface FileConversionOptions {\n mimeType?: string;\n}\n/**\n * 将 URL 转换为 Blob\n * @param url\n * @returns\n */\nexport async function urlToBlob(url: string): Promise<Blob> {\n const response = await fetch(url);\n return response.blob();\n}\n\n/**\n * 将 URL 转换为 File\n * @param url\n * @param filename\n * @param options\n * @returns\n */\nexport async function urlToFile(url: string, filename: string, options?: FileConversionOptions): Promise<File> {\n const blob = await urlToBlob(url);\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 File\n * @param base64\n * @param filename\n * @param options\n * @returns\n */\nexport function base64ToFile(base64: string, filename: string, options?: FileConversionOptions): File {\n const bolb = base64ToBlob(base64, { mimeType: options?.mimeType });\n return blobToFile(bolb, filename);\n}\n\n/**\n * 将 File 转换为 Base64 字符串\n * @param file\n * @returns\n */\nexport function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * 将 Blob 转换为 Base64 字符串\n * @param blob\n * @returns\n */\nexport function blobToBase64(blob: Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n}\n\n/**\n * 将 File 转换为 Blob\n * @param file\n * @param options\n * @returns\n */\nexport function fileToBlob(file: File, options?: FileConversionOptions): Blob {\n return new Blob([file], { type: options?.mimeType ?? file.type });\n}\n\n/**\n * 将 Blob 转换为 File\n * @param blob\n * @param filename\n * @param options\n * @returns\n */\nexport function blobToFile(blob: Blob, filename: string, options?: FileConversionOptions): File {\n return new File([blob], filename, { type: options?.mimeType ?? blob.type });\n}\n\n/**\n * 将 Base64 字符串转换为 Blob\n * @param base64\n * @param options\n * @returns\n */\nexport function base64ToBlob(base64: string, options?: FileConversionOptions): Blob {\n const matches = base64.match(/^data:(.+);base64,(.*)$/);\n\n if (!matches || matches.length !== 3) {\n throw new Error('Invalid Base64 string');\n }\n\n const mimeType = options?.mimeType ?? matches[1];\n const byteString = atob(matches[2]);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const intArray = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([intArray], { type: mimeType });\n}\n/**\n * 文件转本地url\n * @param file\n * @returns\n */\nexport function fileToUrl(file: File | Blob) {\n return URL.createObjectURL(file);\n}\n\n// 导出一个函数,用于检查文件类型是否合法\nexport function fileValidType(file: File, validTypes: string) {\n // 获取文件的 MIME 类型\n const fileType = file.type || '';\n // 获取文件的扩展名\n const fileExtension = file.name.slice(Math.max(0, file.name.lastIndexOf('.')));\n // 将合法的文件类型字符串分割成数组\n const acceptTypes = validTypes.split(',').map(type => type.trim());\n // 遍历合法的文件类型数组,检查文件类型是否合法\n return acceptTypes.some(type => {\n // 如果文件类型以 . 开头,则检查文件扩展名\n if (type.startsWith('.')) {\n // 检查文件扩展名是否与合法的文件类型匹配\n return fileExtension.toLowerCase() === type.toLowerCase();\n // 如果文件类型包含 /*,则检查 MIME 类型组,如 image/*\n } else if (type.includes('/*')) {\n // 检查 MIME 类型组,如 image/*\n const [mainType] = type.split('/');\n return fileType.startsWith(`${mainType}/`);\n } else {\n // 检查具体 MIME 类型\n return fileType === type;\n }\n });\n}\n\n/**\n * 计算文件的MD5哈希值\n * @param file 要计算哈希值的文件\n * @returns 文件的MD5哈希值\n */\nexport const fileMd5 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = e => {\n try {\n const binary = (e.target as FileReader).result;\n if (binary) {\n resolve(md5(binary));\n } else {\n reject(new Error('读取文件内容失败'));\n }\n } catch (error) {\n reject(new Error(`计算MD5失败: ${error instanceof Error ? error.message : String(error)}`));\n }\n };\n\n reader.onerror = () => {\n reject(new Error('读取文件失败'));\n };\n\n reader.readAsArrayBuffer(file);\n });\n};\n\n/**\n * 获取图片宽高信息\n * @param source 图片文件或图片链接\n * @returns 图片宽高信息\n */\nexport function getImageInfo(source: File, options?: { hideMessage?: boolean }): Promise<HTMLImageElement>;\nexport function getImageInfo(source: string, options?: { hideMessage?: boolean }): Promise<HTMLImageElement>;\nexport function getImageInfo(source: File | string, options?: { hideMessage?: boolean }): Promise<HTMLImageElement> {\n return new Promise<HTMLImageElement>((resolve, reject) => {\n const img = new Image();\n let url: string;\n let shouldRevokeUrl = false;\n\n if (source instanceof File) {\n url = URL.createObjectURL(source);\n shouldRevokeUrl = true;\n } else {\n url = source;\n }\n\n img.onload = () => {\n if (shouldRevokeUrl) {\n URL.revokeObjectURL(url);\n }\n resolve(img);\n };\n\n img.onerror = () => {\n if (shouldRevokeUrl) {\n URL.revokeObjectURL(url);\n }\n if (!options?.hideMessage) {\n GmMessage.error('图片信息获取失败');\n }\n reject();\n };\n\n img.src = url;\n });\n}\n\n/**\n * 获取视频信息\n * @param url 视频链接\n * @returns 视频宽高信息\n */\nexport const getVideoInfo = (url: string): Promise<{ width: number; height: number; duration: number }> => {\n return new Promise((resolve, reject) => {\n const video = document.createElement('video');\n video.onloadedmetadata = () => resolve({ width: video.videoWidth, height: video.videoHeight, duration: video.duration });\n video.onerror = reject;\n video.src = url;\n });\n};\n"],"names":[],"mappings":"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"}
|
package/global.d.ts
CHANGED
|
@@ -125,6 +125,8 @@ declare module 'vue' {
|
|
|
125
125
|
GmPreviewFile: typeof import('giime')['GmPreviewFile']
|
|
126
126
|
GmFileComponent: typeof import('giime')['GmFileComponent']
|
|
127
127
|
GmRuleEditor: typeof import('giime')['GmRuleEditor']
|
|
128
|
+
GmUploadFile: typeof import('giime')['GmUploadFile']
|
|
129
|
+
GmFileList: typeof import('giime')['GmFileList']
|
|
128
130
|
GmTablePro: typeof import('giime')['GmTablePro']
|
|
129
131
|
GmTableColumnPro: typeof import('giime')['GmTableColumnPro']
|
|
130
132
|
GmTableHeaderForm: typeof import('giime')['GmTableHeaderForm']
|
package/lib/components/index.js
CHANGED
|
@@ -279,16 +279,18 @@ var ruleEditor = require('./src/composite/ruleEditor/ruleEditor.js');
|
|
|
279
279
|
var index$29 = require('./src/composite/ruleEditor/index.js');
|
|
280
280
|
var uploadFile = require('./src/composite/uploadFile/uploadFile.js');
|
|
281
281
|
var index$2a = require('./src/composite/uploadFile/index.js');
|
|
282
|
+
var fileList = require('./src/composite/fileList2/fileList.js');
|
|
283
|
+
var index$2b = require('./src/composite/fileList2/index.js');
|
|
282
284
|
var method = require('./src/plugins/message/method.js');
|
|
283
|
-
var index$
|
|
284
|
-
var index$
|
|
285
|
-
var index$
|
|
286
|
-
var index$
|
|
287
|
-
var index$
|
|
285
|
+
var index$2c = require('./src/plugins/message/index.js');
|
|
286
|
+
var index$2d = require('./src/plugins/loading/index.js');
|
|
287
|
+
var index$2e = require('./src/plugins/messageBox/index.js');
|
|
288
|
+
var index$2f = require('./src/plugins/notification/index.js');
|
|
289
|
+
var index$2g = require('./src/plugins/copy/index.js');
|
|
288
290
|
var method$1 = require('./src/plugins/copy/method.js');
|
|
289
|
-
var index$
|
|
291
|
+
var index$2h = require('./src/plugins/confirmBox/index.js');
|
|
290
292
|
var directive = require('./src/directives/see/directive.js');
|
|
291
|
-
var index$
|
|
293
|
+
var index$2i = require('./src/directives/see/index.js');
|
|
292
294
|
|
|
293
295
|
|
|
294
296
|
|
|
@@ -671,15 +673,17 @@ exports.ruleEditorProps = ruleEditor.ruleEditorProps;
|
|
|
671
673
|
exports.GmRuleEditor = index$29.GmRuleEditor;
|
|
672
674
|
exports.uploadFileProps = uploadFile.uploadFileProps;
|
|
673
675
|
exports.GmUploadFile = index$2a.GmUploadFile;
|
|
676
|
+
exports.fileProProps = fileList.fileProProps;
|
|
677
|
+
exports.GmFileList = index$2b.GmFileList;
|
|
674
678
|
exports.messageTypes = method.messageTypes;
|
|
675
679
|
exports.normalizeMessageOptions = method.normalizeMessageOptions;
|
|
676
|
-
exports.GmMessage = index$
|
|
677
|
-
exports.GmLoading = index$
|
|
678
|
-
exports.GmMessageBox = index$
|
|
679
|
-
exports.GmNotification = index$
|
|
680
|
-
exports.GmCopy = index$
|
|
680
|
+
exports.GmMessage = index$2c.GmMessage;
|
|
681
|
+
exports.GmLoading = index$2d.GmLoading;
|
|
682
|
+
exports.GmMessageBox = index$2e.GmMessageBox;
|
|
683
|
+
exports.GmNotification = index$2f.GmNotification;
|
|
684
|
+
exports.GmCopy = index$2g.GmCopy;
|
|
681
685
|
exports.useClipboard = method$1.useClipboard;
|
|
682
|
-
exports.GmConfirmBox = index$
|
|
686
|
+
exports.GmConfirmBox = index$2h.GmConfirmBox;
|
|
683
687
|
exports.vSee = directive.vSee;
|
|
684
|
-
exports.GmVSeeDirective = index$
|
|
688
|
+
exports.GmVSeeDirective = index$2i.GmVSeeDirective;
|
|
685
689
|
//# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,7 +7,7 @@ require('./UploadPro.vue3.js');
|
|
|
7
7
|
require('./UploadPro.vue4.js');
|
|
8
8
|
var _pluginVue_exportHelper = require('../../../../_virtual/_plugin-vue_export-helper.js');
|
|
9
9
|
|
|
10
|
-
var UploadPro = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadPro_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-
|
|
10
|
+
var UploadPro = /* @__PURE__ */ _pluginVue_exportHelper.default(UploadPro_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-9ac30390"]]);
|
|
11
11
|
|
|
12
12
|
exports.default = UploadPro;
|
|
13
13
|
//# sourceMappingURL=UploadPro.vue.js.map
|
|
@@ -13,7 +13,7 @@ var uploadPro = require('./uploadPro.js');
|
|
|
13
13
|
var exports$1 = require('../../../../utils/src/elementPlus/exports.js');
|
|
14
14
|
var index = require('../../../../hooks/base/useUploadFile/index.js');
|
|
15
15
|
|
|
16
|
-
const _withScopeId = (n) => (vue.pushScopeId("data-v-
|
|
16
|
+
const _withScopeId = (n) => (vue.pushScopeId("data-v-9ac30390"), n = n(), vue.popScopeId(), n);
|
|
17
17
|
const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode(
|
|
18
18
|
"div",
|
|
19
19
|
{ class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
|
|
@@ -76,13 +76,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
76
76
|
checkAllUploadComplete();
|
|
77
77
|
};
|
|
78
78
|
const beforeRemove = async (file, files) => {
|
|
79
|
-
if (props.disabled) {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
if (props.deleteTip) {
|
|
83
|
-
await index$1.GmConfirmBox({ message: "\u786E\u5B9A\u5220\u9664\u8BE5\u6587\u4EF6\u5417\uFF1F" }, async () => {
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
79
|
if (file.status === "uploading" || loadingUids.value.has(file.uid)) {
|
|
87
80
|
cancelUpload(file.uid);
|
|
88
81
|
loadingUids.value.delete(file.uid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadPro.vue2.js","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-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 && !disabledCheckboxUids.includes(file.uid)\" :value=\"file\" />\n\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 <el-progress\n v-if=\"file.status === 'uploading' || loadingUids.has(file.uid)\"\n :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n :percentage=\"Number(file.percentage)\"\n :style=\"\n listType === 'picture-card'\n ? {\n width: width - 20 + 'px',\n height: width - 20 + 'px',\n }\n : 'margin-top: 0.5rem'\n \"\n :width=\"width - 20\"\n />\n\n <GmFileComponent v-else :file=\"file\" :size=\"width - 40\" :controls=\"false\" :show-icon=\"true\" />\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\n v-if=\"showDelete && !disabledDeleteUids.includes(file.uid)\"\n class=\"el-upload-list__item-delete\"\n @click=\"handleRemove(file, fileList)\"\n >\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { 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 '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFile, GmUploadProUserFileResponse, uploadFileProProps } from './uploadPro';\nimport type { UploadInstance, UploadProps } from 'element-plus';\nimport type { UploadFile, UploadFiles, UploadRawFile, UploadUserFile } from '@giime/hooks/base/useUploadFile';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadUserFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n/**上传功能 */\nconst { uploadFile, cancelUpload } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\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: UploadProps['beforeRemove'] = async (file, files) => {\n if (props.disabled) {\n return false;\n }\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n }\n return props.beforeRemove?.(file, files) ?? true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n }\n\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};\n/**点击删除图标 */\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadUserFile[]) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles as UploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\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 (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n loadingUids,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-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-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\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: 1.7;\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-pro-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":["useSlots","_useModel","useUploadFile","ref","computed","uploadFile","GmConfirmBox","getGmExports","usePasteFile","ElMessageBox"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHA,IAAA,MAAM,QAAQA,YAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAGb,IAAM,MAAA,QAAA,GAAWC,YAA6B,CAAA,OAAA,EAAC,UAA8B,CAAA,CAAA;AAE7E,IAAM,MAAA,aAAA,GAAgBA,sBAAmB,eAAsC,CAAA,CAAA;AAE/E,IAAA,MAAM,EAAE,UAAA,EAAY,YAAa,EAAA,GAAIC,mBAAc,EAAA,CAAA;AAEnD,IAAA,MAAM,WAAc,GAAAC,OAAA,iBAAqB,IAAA,GAAA,EAAK,CAAA,CAAA;AAC9C,IAAM,MAAA,aAAA,GAAgBC,aAAS,MAAM,KAAA,CAAM,eAAe,WAAY,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAGpF,IAAM,MAAA,WAAA,GAA0C,OAAM,OAAW,KAAA;AAC/D,MAAA,WAAA,CAAY,KAAM,CAAA,GAAA,CAAI,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACtC,MAAO,OAAA,UAAA,CAAW,QAAQ,IAAM,EAAA;AAAA,QAC9B,YAAY,KAAM,CAAA,UAAA;AAAA,QAClB,WAAW,KAAM,CAAA,SAAA;AAAA,QACjB,QAAQ,KAAM,CAAA,MAAA;AAAA,QACd,KAAK,KAAM,CAAA,GAAA;AAAA,QACX,SAAW,EAAA,OAAA;AAAA,OACZ,CAAA,CAAA;AAAA,KACH,CAAA;AAGA,IAAA,MAAM,yBAAyB,MAAM;AACnC,MAAI,IAAA,WAAA,CAAY,KAAM,CAAA,IAAA,KAAS,CAAG,EAAA;AAEhC,QAAA,KAAA,CAAM,aAAgB,IAAA,CAAA;AAAA,OACxB;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,gBAA6C,GAAA,CAAC,QAAuCC,EAAAA,WAAAA,EAAY,WAAgB,KAAA;AACrH,MAAY,WAAA,CAAA,KAAA,CAAM,MAAOA,CAAAA,WAAAA,CAAW,GAAG,CAAA,CAAA;AACvC,MAAAA,WAAAA,CAAW,MAAM,QAAS,CAAA,GAAA,CAAA;AAC1B,MAAM,KAAA,CAAA,SAAA,GAAY,QAAUA,EAAAA,WAAAA,EAAY,WAAW,CAAA,CAAA;AAEnD,MAAuB,sBAAA,EAAA,CAAA;AAAA,KACzB,CAAA;AAEA,IAAA,MAAM,cAAyC,GAAA,CAAC,KAAOA,EAAAA,WAAAA,EAAY,WAAgB,KAAA;AACjF,MAAY,WAAA,CAAA,KAAA,CAAM,MAAOA,CAAAA,WAAAA,CAAW,GAAG,CAAA,CAAA;AACvC,MAAM,KAAA,CAAA,OAAA,GAAU,KAAOA,EAAAA,WAAAA,EAAY,WAAW,CAAA,CAAA;AAE9C,MAAuB,sBAAA,EAAA,CAAA;AAAA,KACzB,CAAA;AAGA,IAAM,MAAA,YAAA,GAA4C,OAAO,IAAA,EAAM,KAAU,KAAA;AACvE,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,MAAMC,oBAAa,CAAA,EAAE,OAAS,EAAA,wDAAA,IAAe,YAAY;AAAA,SAAE,CAAA,CAAA;AAAA,OAC7D;AAEA,MAAI,IAAA,IAAA,CAAK,WAAW,WAAe,IAAA,WAAA,CAAY,MAAM,GAAI,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA;AAClE,QAAA,YAAA,CAAa,KAAK,GAAG,CAAA,CAAA;AACrB,QAAY,WAAA,CAAA,KAAA,CAAM,MAAO,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAEjC,QAAuB,sBAAA,EAAA,CAAA;AAAA,OACzB;AACA,MAAA,OAAO,KAAM,CAAA,YAAA,GAAe,IAAM,EAAA,KAAK,CAAK,IAAA,IAAA,CAAA;AAAA,KAC9C,CAAA;AAGA,IAAM,MAAA,UAAA,GAAa,CAAC,IAAA,EAAkB,WAA6B,KAAA;AAEjE,MAAI,IAAA,IAAA,CAAK,WAAW,WAAe,IAAA,WAAA,CAAY,MAAM,GAAI,CAAA,IAAA,CAAK,GAAG,CAAG,EAAA;AAClE,QAAA,YAAA,CAAa,KAAK,GAAG,CAAA,CAAA;AACrB,QAAY,WAAA,CAAA,KAAA,CAAM,MAAO,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAEjC,QAAuB,sBAAA,EAAA,CAAA;AAAA,OACzB;AAEA,MAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACzC,MAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,QAAS,QAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAC9B,QAAA,IAAA,CAAK,cAAgB,EAAA,EAAE,IAAM,EAAA,KAAA,EAAO,CAAA,CAAA;AACpC,QAAO,OAAA,KAAA,CAAM,QAAW,GAAA,IAAA,EAAM,WAAW,CAAA,CAAA;AAAA,OAC3C;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,OAAO,IAAA,EAAkB,WAAkC,KAAA;AAC9E,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,MAAMA,oBAAa,CAAA,EAAE,OAAS,EAAA,wDAAA,IAAe,YAAY;AAAA,SAAE,CAAA,CAAA;AAAA,OAC7D;AAEA,MAAA,UAAA,CAAW,MAAM,WAA0B,CAAA,CAAA;AAAA,KAC7C,CAAA;AAEA,IAAA,MAAM,gBAAgBH,OAAoB,EAAA,CAAA;AAC1C,IAAA,MAAM,eAAe,CAAC,OAAA,EAAS,QAAU,EAAA,YAAA,EAAc,eAAe,cAAc,CAAA,CAAA;AACpF,IAAA,MAAM,EAAE,SAAA,EAAc,GAAAI,sBAAA,CAAa,eAAe,YAAY,CAAA,CAAA;AAE9D,IAAA,MAAM,eAAeJ,OAAiB,EAAA,CAAA;AAGtC,IAAM,MAAA,aAAA,GAAgBA,QAAI,KAAK,CAAA,CAAA;AAC/B,IAAM,MAAA,SAAA,GAAYA,QAAI,CAAC,CAAA,CAAA;AAEvB,IAAM,MAAA,aAAA,GAAgB,CAAC,IAAqB,KAAA;AAC1C,MAAA,SAAA,CAAU,KAAQ,GAAA,QAAA,CAAS,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAC7C,MAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAA;AAAA,KACxB,CAAA;AAGA,IAAA,MAAM,EAAE,SAAA,EAAW,OAAQ,EAAA,GAAIK,oBAAa,CAAA,YAAA,EAAc,EAAE,MAAA,EAAQ,KAAM,CAAA,MAAA,EAAQ,QAAU,EAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAC5G,IAAA,SAAA,CAAU,CAAC,KAAkB,KAAA;AAC3B,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAA,OAAA;AAAA,OACF;AACA,MAAA,IAAI,MAAM,OAAQ,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AAC5C,QAAA,KAAA,CAAM,QAAQ,CAAQ,IAAA,KAAA;AACpB,UAAA,IAAI,gBAAgB,IAAM,EAAA;AACxB,YAAA,MAAM,OAAU,GAAA,IAAA,CAAA;AAChB,YAAc,aAAA,CAAA,KAAA,EAAO,YAAY,OAAO,CAAA,CAAA;AAGxC,YAAA,IAAI,MAAM,UAAY,EAAA;AACpB,cAAA,aAAA,CAAc,OAAO,MAAO,EAAA,CAAA;AAAA,aAC9B;AAAA,WACF;AAAA,SACD,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAA,CAAQ,CAAC,KAAiB,KAAA;AACxB,MAAQ,OAAA,CAAA,KAAA,CAAM,6BAAS,KAAK,CAAA,CAAA;AAC5B,MAAaC,wBAAA,CAAA,KAAA,CAAM,KAAM,CAAA,OAAA,EAAS,cAAM,EAAA;AAAA,QACtC,IAAM,EAAA,OAAA;AAAA,OACP,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AACD,IAAa,QAAA,CAAA;AAAA,MACX,GAAG,SAAA;AAAA,MACH,aAAA;AAAA,MACA,WAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"UploadPro.vue2.js","sources":["../../../../../../../packages/components/src/business/uploadPro/UploadPro.vue"],"sourcesContent":["<template>\n <div>\n <div\n v-loading=\"uploadLoading\"\n ref=\"pasteFileRef\"\n :class=\"{ 'gm-upload-pro-file-picture-card': listType === 'picture-card', 'gm-upload-pro-file-disabled': disabled }\"\n class=\"gm-upload-pro-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 && !disabledCheckboxUids.includes(file.uid)\" :value=\"file\" />\n\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 <el-progress\n v-if=\"file.status === 'uploading' || loadingUids.has(file.uid)\"\n :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n :percentage=\"Number(file.percentage)\"\n :style=\"\n listType === 'picture-card'\n ? {\n width: width - 20 + 'px',\n height: width - 20 + 'px',\n }\n : 'margin-top: 0.5rem'\n \"\n :width=\"width - 20\"\n />\n\n <GmFileComponent v-else :file=\"file\" :size=\"width - 40\" :controls=\"false\" :show-icon=\"true\" />\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\n v-if=\"showDelete && !disabledDeleteUids.includes(file.uid)\"\n class=\"el-upload-list__item-delete\"\n @click=\"handleRemove(file, fileList)\"\n >\n <el-icon><Delete /></el-icon>\n </span>\n </div>\n </slot>\n </template>\n <template v-else #file=\"slotValue\">\n <slot name=\"file\" v-bind=\"slotValue\" />\n </template>\n <template v-if=\"slots.trigger\" #trigger>\n <slot name=\"trigger\" />\n </template>\n <template v-if=\"slots.tip\" #tip>\n <div class=\"gm-text-sm\">\n <slot name=\"tip\" />\n </div>\n </template>\n </el-upload>\n </el-checkbox-group>\n\n <GmPreviewFile v-model:dialogVisible=\"dialogVisible\" v-model:file-index=\"fileIndex\" :file-list=\"fileList\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessageBox } from 'element-plus';\nimport { computed, ref, useSlots } from 'vue';\n// import { 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 '../../composite/fileComponent';\nimport GmPreviewFile from '../../composite/previewFile';\nimport { GmUploadProUserFile, GmUploadProUserFileResponse, uploadFileProProps } from './uploadPro';\nimport type { UploadInstance, UploadProps } from 'element-plus';\nimport type { UploadFile, UploadFiles, UploadRawFile, UploadUserFile } from '@giime/hooks/base/useUploadFile';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { useUploadFile } from '@giime/hooks/base/useUploadFile';\n\ndefineOptions({\n name: 'GmUploadPro',\n});\nconst slots = useSlots();\n\nconst props = defineProps(uploadFileProProps);\nconst emit = defineEmits([\"handleRemove\"]);\n\n/** 上传文件 */\nconst fileList = defineModel<UploadUserFile[]>('fileList', { required: true });\n/** 多选数据 */\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: () => [] });\n/**上传功能 */\nconst { uploadFile, cancelUpload } = useUploadFile();\n\nconst loadingUids = ref<Set<number>>(new Set());\nconst uploadLoading = computed(() => props.showLoading && loadingUids.value.size > 0);\n\n/* 上传 */\nconst httpRequest: UploadProps['httpRequest'] = async options => {\n loadingUids.value.add(options.file.uid);\n return uploadFile(options.file, {\n domainCode: props.domainCode,\n sceneCode: props.sceneCode,\n accept: props.accept,\n acl: props.acl,\n elOptions: options,\n });\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: UploadProps['beforeRemove'] = async (file, files) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n }\n return props.beforeRemove?.(file, files) ?? true;\n};\n\n/* 删除文件 */\nconst removeFile = (file: UploadFile, uploadFiles: UploadFiles) => {\n // 如果文件正在上传,取消上传请求\n if (file.status === 'uploading' || loadingUids.value.has(file.uid)) {\n cancelUpload(file.uid);\n loadingUids.value.delete(file.uid);\n // 判断是否全部上传完成\n checkAllUploadComplete();\n }\n\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};\n/**点击删除图标 */\nconst handleRemove = async (file: UploadFile, uploadFiles: UploadUserFile[]) => {\n if (props.deleteTip) {\n await GmConfirmBox({ message: '确定删除该文件吗?' }, async () => {});\n }\n\n removeFile(file, uploadFiles as UploadFiles);\n};\n\nconst uploadFileRef = ref<UploadInstance>();\nconst exposeEvents = ['abort', 'submit', 'clearFiles', 'handleStart', 'handleRemove'] as const;\nconst { exposeFns } = getGmExports(uploadFileRef, exposeEvents);\n\nconst pasteFileRef = ref<HTMLElement>();\n\n/** 预览 */\nconst dialogVisible = ref(false);\nconst fileIndex = ref(0);\n/**点击预览 */\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 (props.disabled) {\n return;\n }\n if (Array.isArray(files) && files.length > 0) {\n files.forEach(file => {\n if (file instanceof File) {\n const rawFile = file as UploadRawFile;\n uploadFileRef.value?.handleStart(rawFile);\n\n // 粘贴成功自动上传\n if (props.autoUpload) {\n uploadFileRef.value?.submit();\n }\n }\n });\n }\n});\n/**粘贴失败 */\nonError((error: Error) => {\n console.error('粘贴错误:', error);\n ElMessageBox.alert(error.message, '提示', {\n type: 'error',\n });\n});\ndefineExpose({\n ...exposeFns,\n uploadFileRef,\n loadingUids,\n});\n</script>\n\n<style scoped lang=\"scss\">\n.gm-upload-pro-preview-dialog {\n :deep(.el-dialog__body) {\n padding: 0;\n }\n}\n.gm-upload-pro-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-pro-file {\n line-height: normal;\n .el-checkbox-group {\n font-size: unset;\n }\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: 1.7;\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-pro-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":["useSlots","_useModel","useUploadFile","ref","computed","uploadFile","GmConfirmBox","getGmExports","usePasteFile","ElMessageBox"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
13
13
|
default: number;
|
|
14
14
|
};
|
|
15
15
|
field: {
|
|
16
|
-
type:
|
|
16
|
+
type: StringConstructor;
|
|
17
17
|
default: string;
|
|
18
18
|
};
|
|
19
19
|
controls: {
|
|
@@ -46,7 +46,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
46
46
|
default: number;
|
|
47
47
|
};
|
|
48
48
|
field: {
|
|
49
|
-
type:
|
|
49
|
+
type: StringConstructor;
|
|
50
50
|
default: string;
|
|
51
51
|
};
|
|
52
52
|
controls: {
|
|
@@ -71,7 +71,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
71
71
|
file: Partial<UploadFile>;
|
|
72
72
|
showIcon: boolean;
|
|
73
73
|
controls: boolean;
|
|
74
|
-
field:
|
|
74
|
+
field: string;
|
|
75
75
|
controlslist: string;
|
|
76
76
|
oncontextmenu: boolean;
|
|
77
77
|
}, {}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileComponent.js","sources":["../../../../../../../packages/components/src/composite/fileComponent/fileComponent.ts"],"sourcesContent":["import { type PropType } from 'vue';\nimport { type UploadFile } from 'element-plus';\n\n/** 视频控制器 */\nexport type Controls = 'nodownload' | 'nofullscreen' | 'noremoteplayback' | 'noplaybackrate';\n\nexport const fileComponentProps = {\n /** 文件 */\n file: {\n type: Object as PropType<Partial<UploadFile>>,\n default: () => ({}),\n },\n /** 文件链接字段 */\n url: {\n type: String,\n default: 'url',\n },\n /** 图标大小 */\n size: {\n type: Number,\n default: 80,\n },\n /** 文件类型判断字段 */\n field: {\n type: String
|
|
1
|
+
{"version":3,"file":"fileComponent.js","sources":["../../../../../../../packages/components/src/composite/fileComponent/fileComponent.ts"],"sourcesContent":["import { type PropType } from 'vue';\nimport { type UploadFile } from 'element-plus';\n\n/** 视频控制器 */\nexport type Controls = 'nodownload' | 'nofullscreen' | 'noremoteplayback' | 'noplaybackrate';\n\nexport const fileComponentProps = {\n /** 文件 */\n file: {\n type: Object as PropType<Partial<UploadFile>>,\n default: () => ({}),\n },\n /** 文件链接字段 */\n url: {\n type: String,\n default: 'url',\n },\n /** 图标大小 */\n size: {\n type: Number,\n default: 80,\n },\n /** 文件类型判断字段 */\n field: {\n type: String,\n default: 'name',\n },\n /** 视频是否显示操作按钮 */\n controls: {\n type: Boolean,\n default: true,\n },\n /** 视频控制器选项 */\n controlslist: {\n type: String,\n default: '',\n },\n /** 视频是否显示右键菜单 */\n oncontextmenu: {\n type: Boolean,\n default: true,\n },\n /** 是否显示icon */\n showIcon: {\n type: Boolean,\n default: false,\n },\n};\n"],"names":[],"mappings":";;AAMO,MAAM,kBAAqB,GAAA;AAAA;AAAA,EAEhC,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAS,OAAO,EAAC,CAAA;AAAA,GACnB;AAAA;AAAA,EAEA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA;AAAA,EAEA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA;AAAA,EAEA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AACF;;;;"}
|
|
@@ -13,7 +13,7 @@ export declare const GmFileComponent: import("../../../../utils").SFCWithInstall
|
|
|
13
13
|
default: number;
|
|
14
14
|
};
|
|
15
15
|
field: {
|
|
16
|
-
type:
|
|
16
|
+
type: StringConstructor;
|
|
17
17
|
default: string;
|
|
18
18
|
};
|
|
19
19
|
controls: {
|
|
@@ -46,7 +46,7 @@ export declare const GmFileComponent: import("../../../../utils").SFCWithInstall
|
|
|
46
46
|
default: number;
|
|
47
47
|
};
|
|
48
48
|
field: {
|
|
49
|
-
type:
|
|
49
|
+
type: StringConstructor;
|
|
50
50
|
default: string;
|
|
51
51
|
};
|
|
52
52
|
controls: {
|
|
@@ -71,7 +71,7 @@ export declare const GmFileComponent: import("../../../../utils").SFCWithInstall
|
|
|
71
71
|
file: Partial<import("element-plus").UploadFile>;
|
|
72
72
|
showIcon: boolean;
|
|
73
73
|
controls: boolean;
|
|
74
|
-
field:
|
|
74
|
+
field: string;
|
|
75
75
|
controlslist: string;
|
|
76
76
|
oncontextmenu: boolean;
|
|
77
77
|
}, {}>> & Record<string, any>;
|