xs-common-plugins 1.2.3 → 1.2.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.
- package/README.md +298 -298
- package/common.js +110 -110
- package/index.js +1 -1
- package/package.json +16 -16
- package/src/App.vue +12 -12
- package/src/common/common.js +551 -549
- package/src/common/createMenuId.js +7 -7
- package/src/common/uploadImgToBase64.js +12 -12
- package/src/common/utils.js +95 -95
- package/src/components/Breadcrumb/index.vue +81 -81
- package/src/components/CheckBox_Cmp/index.vue +62 -62
- package/src/components/Col_TableCell/data.js +4 -4
- package/src/components/Col_TableCell/index.scss +77 -77
- package/src/components/Col_TableCell/index.vue +43 -43
- package/src/components/Col_TableCell/methods.js +19 -19
- package/src/components/FormItem/index.vue +92 -92
- package/src/components/Hamburger/index.vue +44 -44
- package/src/components/ReportCmp/data.js +3 -3
- package/src/components/ReportCmp/index.scss +29 -29
- package/src/components/ReportCmp/index.vue +76 -76
- package/src/components/ReportCmp/methods.js +30 -30
- package/src/components/Search/cascader/data.js +3 -3
- package/src/components/Search/cascader/index.scss +17 -17
- package/src/components/Search/cascader/index.vue +96 -96
- package/src/components/Search/cascader/methods.js +41 -41
- package/src/components/Search/data.js +5 -5
- package/src/components/Search/hk_cascader/index.vue +104 -104
- package/src/components/Search/hk_cascader_qudao/index.vue +94 -94
- package/src/components/Search/index.scss +219 -219
- package/src/components/Search/index.vue +410 -410
- package/src/components/Search/methods.js +86 -86
- package/src/components/Search/product_option/data.js +3 -3
- package/src/components/Search/product_option/index.scss +68 -68
- package/src/components/Search/product_option/index.vue +412 -412
- package/src/components/Search/product_option/methods.js +58 -58
- package/src/components/Search/select/data.js +3 -3
- package/src/components/Search/select/index.scss +2 -2
- package/src/components/Search/select/index.vue +114 -114
- package/src/components/Search/select/methods.js +51 -51
- package/src/components/Search_filter/data.js +5 -5
- package/src/components/Search_filter/index.scss +104 -104
- package/src/components/Search_filter/index.vue +88 -88
- package/src/components/Search_filter/methods.js +43 -43
- package/src/components/TableCmp/data.js +3 -3
- package/src/components/TableCmp/index.scss +22 -22
- package/src/components/TableCmp/index.vue +98 -98
- package/src/components/TableCmp/methods.js +35 -35
- package/src/components/TableItem/TableItem.vue +55 -55
- package/src/components/TextOVer/index.vue +55 -55
- package/src/components/UploadImg/index.vue +177 -177
- package/src/components/home/BarChart.vue +118 -118
- package/src/components/home/LineChart.vue +146 -146
- package/src/components/home/Panel.vue +135 -135
- package/src/components/home/PanelGroup.vue +146 -146
- package/src/components/home/PieChart.vue +81 -81
- package/src/components/home/RaddarChart.vue +119 -119
- package/src/components/home/TabLayout.vue +88 -88
- package/src/components/home/TableList.vue +158 -158
- package/src/components/home/Teng.vue +248 -248
- package/src/components/home/TransactionTable.vue +49 -49
- package/src/components/home/mixins/resize.js +55 -55
- package/src/components/im/index.vue +155 -155
- package/src/components/im/methods.js +25 -25
- package/src/components/im/pages/chatList/index.vue +45 -45
- package/src/components/im/pages/chatRoom/index.vue +159 -159
- package/src/components/image-singleUpload/data.js +3 -3
- package/src/components/image-singleUpload/index.scss +26 -26
- package/src/components/image-singleUpload/index.vue +56 -56
- package/src/components/image-singleUpload/methods.js +30 -30
- package/src/components/image-upload/data.js +7 -7
- package/src/components/image-upload/index.vue +41 -41
- package/src/components/image-upload/methods.js +80 -80
- package/src/components/multiple-image-upload/data.js +11 -11
- package/src/components/multiple-image-upload/index.scss +8 -8
- package/src/components/multiple-image-upload/index.vue +63 -63
- package/src/components/multiple-image-upload/methods.js +45 -45
- package/src/components/pro-upload/data.js +3 -3
- package/src/components/pro-upload/index.scss +4 -4
- package/src/components/pro-upload/index.vue +89 -89
- package/src/components/pro-upload/methods.js +86 -86
- package/src/components/report_set/index.scss +44 -44
- package/src/components/report_set/index.vue +153 -153
- package/src/components/search-page/src/index.scss +5 -5
- package/src/components/search-page/src/index.vue +76 -76
- package/src/components/search-page/src/methods.js +36 -36
- package/src/components/xsSelect/index.vue +125 -125
- package/src/mixin/dialog.js +31 -31
- package/src/mixin/dlg.js +46 -46
- package/src/mixin/keepAlive.js +53 -52
- package/src/mixin/newDialog.js +19 -19
- package/src/mixin/report.js +82 -82
- package/src/mixin/table.js +93 -93
- package/src/mixin/tableCell/colTableCell_analysis.js +103 -103
- package/src/mixin/upload.js +22 -22
- package/src/mixin/vmodel.js +26 -26
- package/src/plugins/im/components/chat/index.scss +163 -163
- package/src/plugins/im/components/chat/index.vue +144 -144
- package/src/plugins/im/components/chat/methods.js +149 -149
- package/src/plugins/im/components/conversation-list/index.css +91 -91
- package/src/plugins/im/components/conversation-list/index.json +3 -3
- package/src/plugins/im/components/conversation-list/index.vue +89 -89
- package/src/plugins/im/components/loading/loading.css +69 -69
- package/src/plugins/im/components/loading/loading.json +3 -3
- package/src/plugins/im/components/loading/loading.vue +14 -14
- package/src/plugins/im/components/msg-image/index.json +3 -3
- package/src/plugins/im/components/msg-image/index.vue +40 -40
- package/src/plugins/im/components/msg-text/index.json +3 -3
- package/src/plugins/im/components/msg-text/index.vue +24 -24
- package/src/plugins/im/components/send-msg/index.scss +164 -164
- package/src/plugins/im/components/send-msg/index.vue +107 -107
- package/src/plugins/im/components/send-msg/methods.js +125 -125
- package/src/plugins/im/components/template-message/index.vue +76 -76
- package/src/plugins/im/components/without.vue +19 -19
- package/src/plugins/im/im-plug-in/Protobuf-2.3.7.min.js +1 -1
- package/src/plugins/im/im-plug-in/RongCallLib-3.1.5.min.js +74 -74
- package/src/plugins/im/im-plug-in/RongIMLib-4.1.0.js +17420 -17420
- package/src/plugins/im/im-plug-in/init.js +216 -216
- package/src/plugins/im/im-plug-in/qiniu.js +266 -266
- package/src/plugins/im/im-plug-in/send-data.js +431 -431
- package/src/plugins/im/im-plug-in/upload.js +232 -232
- package/src/plugins/im/index.js +31 -31
- package/src/plugins/im/lib/RongIMEmoji-2.2.6.js +332 -332
- package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.js +11635 -11635
- package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.min.js +6 -6
- package/src/plugins/im/utils/services.js +625 -625
- package/src/plugins/im/utils/underscore-1.8.3.js +1531 -1531
- package/src/plugins/im/utils/utils.js +149 -149
- package/src/plugins/index.js +60 -60
- package/src/plugins/row-col-cmp/colCmp/data.js +3 -3
- package/src/plugins/row-col-cmp/colCmp/index.scss +50 -50
- package/src/plugins/row-col-cmp/colCmp/index.vue +53 -53
- package/src/plugins/row-col-cmp/colCmp/methods.js +25 -25
- package/src/plugins/row-col-cmp/index.js +20 -20
- package/src/plugins/row-col-cmp/rowCmp/data.js +3 -3
- package/src/plugins/row-col-cmp/rowCmp/index.scss +3 -3
- package/src/plugins/row-col-cmp/rowCmp/index.vue +43 -43
- package/src/plugins/row-col-cmp/rowCmp/methods.js +29 -29
- package/src/router/index.js +58 -58
- package/src/router/permission.js +126 -126
- package/src/store/getters.js +13 -13
- package/src/store/index.js +60 -60
- package/src/store/modules/app.js +55 -55
- package/src/store/modules/dic.js +74 -74
- package/src/store/modules/oss.js +40 -40
- package/src/store/modules/settings.js +28 -28
- package/src/store/modules/tagsView.js +160 -160
- package/src/store/modules/user.js +94 -94
- package/src/store/modules/widgetdata.js +42 -42
- package/src/styles/element-ui.scss +49 -49
- package/src/styles/index.scss +91 -91
- package/src/styles/mixin.scss +28 -28
- package/src/styles/sidebar.scss +210 -210
- package/src/styles/table.scss +90 -90
- package/src/styles/transition.scss +48 -48
- package/src/styles/variables.scss +25 -25
- package/src/utils/api.js +54 -54
- package/src/utils/auth.js +38 -38
- package/src/utils/concat_batch_btns.js +88 -88
- package/src/utils/enum.js +150 -150
- package/src/utils/filter.js +5 -5
- package/src/utils/filterRules.js +55 -55
- package/src/utils/get-page-title.js +10 -10
- package/src/utils/getMenu.js +82 -82
- package/src/utils/global-config.js +15 -15
- package/src/utils/global_directive.js +10 -10
- package/src/utils/index.js +332 -332
- package/src/utils/localStorage.js +21 -21
- package/src/utils/ossService.js +55 -55
- package/src/utils/prototype.js +46 -46
- package/src/utils/search.js +33 -33
- package/src/utils/signalR.js +24 -24
- package/src/utils/validate.js +20 -20
- package/src/views/callback/index.vue +35 -35
- package/src/views/home/index.vue +25 -25
- package/src/views/layout/components/AllSearch/index.vue +44 -44
- package/src/views/layout/components/AppMain.vue +66 -66
- package/src/views/layout/components/Sidebar/FixiOSBug.js +26 -26
- package/src/views/layout/components/Sidebar/Item.vue +28 -28
- package/src/views/layout/components/Sidebar/Link.vue +34 -34
- package/src/views/layout/components/Sidebar/Logo.vue +79 -79
- package/src/views/layout/components/Sidebar/SidebarItem.vue +67 -67
- package/src/views/layout/components/Sidebar/index.vue +114 -114
- package/src/views/layout/components/TagsView/ScrollPane.vue +94 -94
- package/src/views/layout/components/TagsView/index.vue +330 -330
- package/src/views/layout/components/index.js +3 -3
- package/src/views/layout/index.vue +107 -107
- package/src/views/redirect/index.vue +12 -12
- package/src/views/slienceAuth/index.vue +42 -42
|
@@ -1,233 +1,233 @@
|
|
|
1
|
-
(function(win) {
|
|
2
|
-
|
|
3
|
-
var dataType = {
|
|
4
|
-
form: getFormData,
|
|
5
|
-
json: getJsonData,
|
|
6
|
-
data: getData
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
function genUId() {
|
|
10
|
-
var date = new Date().getTime();
|
|
11
|
-
var uuid = 'xxxxxx4xxxyxxxxxxx'.replace(/[xy]/g, function(c) {
|
|
12
|
-
var r = (date + Math.random() * 16) % 16 | 0;
|
|
13
|
-
date = Math.floor(date / 16);
|
|
14
|
-
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
|
|
15
|
-
});
|
|
16
|
-
return uuid;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
function mergeOption(opts) {
|
|
20
|
-
var options = {
|
|
21
|
-
domain: '',
|
|
22
|
-
method: 'POST',
|
|
23
|
-
file_data_name: 'file',
|
|
24
|
-
unique_key: 'key',
|
|
25
|
-
base64_size: 4 * 1024 * 1024,
|
|
26
|
-
chunk_size: 4 * 1024 * 1024,
|
|
27
|
-
bos_chunk_size: 4 * 1024 * 1024 * 1024, // 上传超过5GB大小的文件
|
|
28
|
-
headers: {},
|
|
29
|
-
multi_parmas: {},
|
|
30
|
-
query: {},
|
|
31
|
-
support_options: true,
|
|
32
|
-
data: dataType.form,
|
|
33
|
-
genUId: genUId
|
|
34
|
-
};
|
|
35
|
-
if (!opts || !opts.domain) {
|
|
36
|
-
throw new Error('domain is null');
|
|
37
|
-
}
|
|
38
|
-
for (var key in opts) {
|
|
39
|
-
options[key] = opts[key];
|
|
40
|
-
}
|
|
41
|
-
return options;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function mEach(m, callback) {
|
|
45
|
-
for (var key in m) {
|
|
46
|
-
callback(key, m[key]);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function getFormData(file, opts) {
|
|
51
|
-
var form = new FormData();
|
|
52
|
-
if (opts.unique_key) {
|
|
53
|
-
var suffix = file.name.substr(file.name.lastIndexOf('.'));
|
|
54
|
-
var unique_value = genUId() + suffix;
|
|
55
|
-
form.append(opts.unique_key, unique_value); // 设置 key
|
|
56
|
-
opts.unique_value = unique_value;
|
|
57
|
-
}
|
|
58
|
-
form.append(opts.file_data_name, file); // 设置 file
|
|
59
|
-
mEach(opts.multi_parmas, function(key, value) { // 设置 token
|
|
60
|
-
form.append(key, value);
|
|
61
|
-
});
|
|
62
|
-
return form;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function getJsonData(file, opts) {
|
|
66
|
-
var data = {};
|
|
67
|
-
if (opts.unique_key) {
|
|
68
|
-
var suffix = file.name.substr(file.name.lastIndexOf('.'));
|
|
69
|
-
var unique_value = genUId() + suffix;
|
|
70
|
-
data[opts.unique_key] = unique_value;
|
|
71
|
-
opts.unique_value = unique_value;
|
|
72
|
-
}
|
|
73
|
-
data[opts.file_data_name] = file;
|
|
74
|
-
mEach(opts.multi_parmas, function(key, value) {
|
|
75
|
-
data[key] = value;
|
|
76
|
-
});
|
|
77
|
-
return JSON.stringify(data);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function getData(file, opts) {
|
|
81
|
-
return file;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
var preLoaded = 0, realLoaded;
|
|
85
|
-
|
|
86
|
-
function Upload(options) {
|
|
87
|
-
this.options = mergeOption(options);
|
|
88
|
-
|
|
89
|
-
this.setOptions = function(opts) {
|
|
90
|
-
var me = this;
|
|
91
|
-
mEach(opts, function(key, value) {
|
|
92
|
-
me.options[key] = value;
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
this.upload = function(file, callback) {
|
|
97
|
-
if (!file) {
|
|
98
|
-
callback.onError('upload file is null.');
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
var me = this;
|
|
102
|
-
uploadProcess(file, this.options, {
|
|
103
|
-
onProgress: function(loaded, total, isBosProcess) {
|
|
104
|
-
realLoaded = loaded;
|
|
105
|
-
if(isBosProcess){ //说明启动了 bos 上传
|
|
106
|
-
realIncrease = loaded/total * (total-preLoaded);
|
|
107
|
-
realLoaded = preLoaded + realIncrease;
|
|
108
|
-
}
|
|
109
|
-
callback.onProgress(realLoaded, total);
|
|
110
|
-
if(!isBosProcess) {
|
|
111
|
-
preLoaded = realLoaded;
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
onCompleted: function(data) {
|
|
115
|
-
callback.onCompleted(data);
|
|
116
|
-
},
|
|
117
|
-
onError: function(errorCode) {
|
|
118
|
-
callback.onError(errorCode);
|
|
119
|
-
},
|
|
120
|
-
onOpen: function(xhr) {
|
|
121
|
-
me.xhr = xhr;
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
this.cancel = function() {
|
|
127
|
-
this.xhr && this.xhr.abort();
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
function init(options) {
|
|
132
|
-
return new Upload(options);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function getResizeRatio(imageInfo,config){
|
|
136
|
-
//hasOwnProperty?
|
|
137
|
-
|
|
138
|
-
var ratio = 1;
|
|
139
|
-
|
|
140
|
-
var oWidth = imageInfo.width;
|
|
141
|
-
var maxWidth = config.maxWidth || 0;
|
|
142
|
-
if(maxWidth > 0 && oWidth > maxWidth){
|
|
143
|
-
ratio = maxWidth/oWidth;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
var oHeight = imageInfo.height;
|
|
147
|
-
var maxHeight = config.maxHeight || 0;
|
|
148
|
-
if(maxHeight > 0 && oHeight > maxHeight){
|
|
149
|
-
var ratioHeight = maxHeight/oHeight;
|
|
150
|
-
ratio = Math.min(ratio,ratioHeight);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
var maxSize = config.maxSize || 0;
|
|
155
|
-
var oSize = Math.ceil(imageInfo.size/1000); //K,Math.ceil(0.3) = 1;
|
|
156
|
-
if(oSize > maxSize){
|
|
157
|
-
ratioSize = maxSize/oSize;
|
|
158
|
-
ratio = Math.min(ratio,ratioSize);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return ratio;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function resize(file,config,callback){
|
|
165
|
-
//file对象没有高宽
|
|
166
|
-
var type = file.type; //image format
|
|
167
|
-
var canvas = document.createElement("canvas");
|
|
168
|
-
|
|
169
|
-
var reader = new FileReader();
|
|
170
|
-
|
|
171
|
-
reader.readAsDataURL(file);
|
|
172
|
-
reader.onload = function(evt){
|
|
173
|
-
var imageData = evt.target.result;
|
|
174
|
-
var img = new Image();
|
|
175
|
-
img.src = imageData;
|
|
176
|
-
var width = img.width;
|
|
177
|
-
var height = img.height;
|
|
178
|
-
var imageInfo = {
|
|
179
|
-
width : width,
|
|
180
|
-
height : height,
|
|
181
|
-
size : evt.total
|
|
182
|
-
}
|
|
183
|
-
var ratio = getResizeRatio(imageInfo,config);
|
|
184
|
-
var newImageData = imageData;
|
|
185
|
-
if(ratio < 1){
|
|
186
|
-
newImageData = compress(img, width*ratio, height*ratio);;
|
|
187
|
-
}
|
|
188
|
-
callback(newImageData);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
function compress(img, width, height){
|
|
192
|
-
canvas.width = width;
|
|
193
|
-
canvas.height = height;
|
|
194
|
-
|
|
195
|
-
var context = canvas.getContext('2d');
|
|
196
|
-
context.drawImage(img, 0, 0, width, height);
|
|
197
|
-
|
|
198
|
-
/*
|
|
199
|
-
If the height or width of the canvas is 0, the string "data:," is returned.
|
|
200
|
-
If the requested type is not image/png, but the returned value starts with data:image/png, then the requested type is not supported.
|
|
201
|
-
Chrome also supports the image/webp type.
|
|
202
|
-
*/
|
|
203
|
-
|
|
204
|
-
var supportTypes = {
|
|
205
|
-
"image/jpg" : true,
|
|
206
|
-
"image/png" : true,
|
|
207
|
-
"image/webp" : supportWebP()
|
|
208
|
-
};
|
|
209
|
-
// var exportType = "image/png";
|
|
210
|
-
// if(supportTypes[type]){
|
|
211
|
-
// exportType = type;
|
|
212
|
-
// }
|
|
213
|
-
// 多端一致,缩略图必须是 jpg
|
|
214
|
-
var exportType = "image/jpg";
|
|
215
|
-
var newImageData = canvas.toDataURL(exportType);
|
|
216
|
-
return newImageData;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
function supportWebP(){
|
|
220
|
-
try{
|
|
221
|
-
return (canvas.toDataURL('image/webp').indexOf('data:image/webp') == 0);
|
|
222
|
-
}catch(err) {
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
win.UploadFile = {
|
|
229
|
-
init: init,
|
|
230
|
-
dataType: dataType,
|
|
231
|
-
resize : resize
|
|
232
|
-
};
|
|
1
|
+
(function(win) {
|
|
2
|
+
|
|
3
|
+
var dataType = {
|
|
4
|
+
form: getFormData,
|
|
5
|
+
json: getJsonData,
|
|
6
|
+
data: getData
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
function genUId() {
|
|
10
|
+
var date = new Date().getTime();
|
|
11
|
+
var uuid = 'xxxxxx4xxxyxxxxxxx'.replace(/[xy]/g, function(c) {
|
|
12
|
+
var r = (date + Math.random() * 16) % 16 | 0;
|
|
13
|
+
date = Math.floor(date / 16);
|
|
14
|
+
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
|
|
15
|
+
});
|
|
16
|
+
return uuid;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
function mergeOption(opts) {
|
|
20
|
+
var options = {
|
|
21
|
+
domain: '',
|
|
22
|
+
method: 'POST',
|
|
23
|
+
file_data_name: 'file',
|
|
24
|
+
unique_key: 'key',
|
|
25
|
+
base64_size: 4 * 1024 * 1024,
|
|
26
|
+
chunk_size: 4 * 1024 * 1024,
|
|
27
|
+
bos_chunk_size: 4 * 1024 * 1024 * 1024, // 上传超过5GB大小的文件
|
|
28
|
+
headers: {},
|
|
29
|
+
multi_parmas: {},
|
|
30
|
+
query: {},
|
|
31
|
+
support_options: true,
|
|
32
|
+
data: dataType.form,
|
|
33
|
+
genUId: genUId
|
|
34
|
+
};
|
|
35
|
+
if (!opts || !opts.domain) {
|
|
36
|
+
throw new Error('domain is null');
|
|
37
|
+
}
|
|
38
|
+
for (var key in opts) {
|
|
39
|
+
options[key] = opts[key];
|
|
40
|
+
}
|
|
41
|
+
return options;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function mEach(m, callback) {
|
|
45
|
+
for (var key in m) {
|
|
46
|
+
callback(key, m[key]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function getFormData(file, opts) {
|
|
51
|
+
var form = new FormData();
|
|
52
|
+
if (opts.unique_key) {
|
|
53
|
+
var suffix = file.name.substr(file.name.lastIndexOf('.'));
|
|
54
|
+
var unique_value = genUId() + suffix;
|
|
55
|
+
form.append(opts.unique_key, unique_value); // 设置 key
|
|
56
|
+
opts.unique_value = unique_value;
|
|
57
|
+
}
|
|
58
|
+
form.append(opts.file_data_name, file); // 设置 file
|
|
59
|
+
mEach(opts.multi_parmas, function(key, value) { // 设置 token
|
|
60
|
+
form.append(key, value);
|
|
61
|
+
});
|
|
62
|
+
return form;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function getJsonData(file, opts) {
|
|
66
|
+
var data = {};
|
|
67
|
+
if (opts.unique_key) {
|
|
68
|
+
var suffix = file.name.substr(file.name.lastIndexOf('.'));
|
|
69
|
+
var unique_value = genUId() + suffix;
|
|
70
|
+
data[opts.unique_key] = unique_value;
|
|
71
|
+
opts.unique_value = unique_value;
|
|
72
|
+
}
|
|
73
|
+
data[opts.file_data_name] = file;
|
|
74
|
+
mEach(opts.multi_parmas, function(key, value) {
|
|
75
|
+
data[key] = value;
|
|
76
|
+
});
|
|
77
|
+
return JSON.stringify(data);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function getData(file, opts) {
|
|
81
|
+
return file;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var preLoaded = 0, realLoaded;
|
|
85
|
+
|
|
86
|
+
function Upload(options) {
|
|
87
|
+
this.options = mergeOption(options);
|
|
88
|
+
|
|
89
|
+
this.setOptions = function(opts) {
|
|
90
|
+
var me = this;
|
|
91
|
+
mEach(opts, function(key, value) {
|
|
92
|
+
me.options[key] = value;
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
this.upload = function(file, callback) {
|
|
97
|
+
if (!file) {
|
|
98
|
+
callback.onError('upload file is null.');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
var me = this;
|
|
102
|
+
uploadProcess(file, this.options, {
|
|
103
|
+
onProgress: function(loaded, total, isBosProcess) {
|
|
104
|
+
realLoaded = loaded;
|
|
105
|
+
if(isBosProcess){ //说明启动了 bos 上传
|
|
106
|
+
realIncrease = loaded/total * (total-preLoaded);
|
|
107
|
+
realLoaded = preLoaded + realIncrease;
|
|
108
|
+
}
|
|
109
|
+
callback.onProgress(realLoaded, total);
|
|
110
|
+
if(!isBosProcess) {
|
|
111
|
+
preLoaded = realLoaded;
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
onCompleted: function(data) {
|
|
115
|
+
callback.onCompleted(data);
|
|
116
|
+
},
|
|
117
|
+
onError: function(errorCode) {
|
|
118
|
+
callback.onError(errorCode);
|
|
119
|
+
},
|
|
120
|
+
onOpen: function(xhr) {
|
|
121
|
+
me.xhr = xhr;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
this.cancel = function() {
|
|
127
|
+
this.xhr && this.xhr.abort();
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function init(options) {
|
|
132
|
+
return new Upload(options);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
function getResizeRatio(imageInfo,config){
|
|
136
|
+
//hasOwnProperty?
|
|
137
|
+
|
|
138
|
+
var ratio = 1;
|
|
139
|
+
|
|
140
|
+
var oWidth = imageInfo.width;
|
|
141
|
+
var maxWidth = config.maxWidth || 0;
|
|
142
|
+
if(maxWidth > 0 && oWidth > maxWidth){
|
|
143
|
+
ratio = maxWidth/oWidth;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
var oHeight = imageInfo.height;
|
|
147
|
+
var maxHeight = config.maxHeight || 0;
|
|
148
|
+
if(maxHeight > 0 && oHeight > maxHeight){
|
|
149
|
+
var ratioHeight = maxHeight/oHeight;
|
|
150
|
+
ratio = Math.min(ratio,ratioHeight);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
var maxSize = config.maxSize || 0;
|
|
155
|
+
var oSize = Math.ceil(imageInfo.size/1000); //K,Math.ceil(0.3) = 1;
|
|
156
|
+
if(oSize > maxSize){
|
|
157
|
+
ratioSize = maxSize/oSize;
|
|
158
|
+
ratio = Math.min(ratio,ratioSize);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return ratio;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function resize(file,config,callback){
|
|
165
|
+
//file对象没有高宽
|
|
166
|
+
var type = file.type; //image format
|
|
167
|
+
var canvas = document.createElement("canvas");
|
|
168
|
+
|
|
169
|
+
var reader = new FileReader();
|
|
170
|
+
|
|
171
|
+
reader.readAsDataURL(file);
|
|
172
|
+
reader.onload = function(evt){
|
|
173
|
+
var imageData = evt.target.result;
|
|
174
|
+
var img = new Image();
|
|
175
|
+
img.src = imageData;
|
|
176
|
+
var width = img.width;
|
|
177
|
+
var height = img.height;
|
|
178
|
+
var imageInfo = {
|
|
179
|
+
width : width,
|
|
180
|
+
height : height,
|
|
181
|
+
size : evt.total
|
|
182
|
+
}
|
|
183
|
+
var ratio = getResizeRatio(imageInfo,config);
|
|
184
|
+
var newImageData = imageData;
|
|
185
|
+
if(ratio < 1){
|
|
186
|
+
newImageData = compress(img, width*ratio, height*ratio);;
|
|
187
|
+
}
|
|
188
|
+
callback(newImageData);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
function compress(img, width, height){
|
|
192
|
+
canvas.width = width;
|
|
193
|
+
canvas.height = height;
|
|
194
|
+
|
|
195
|
+
var context = canvas.getContext('2d');
|
|
196
|
+
context.drawImage(img, 0, 0, width, height);
|
|
197
|
+
|
|
198
|
+
/*
|
|
199
|
+
If the height or width of the canvas is 0, the string "data:," is returned.
|
|
200
|
+
If the requested type is not image/png, but the returned value starts with data:image/png, then the requested type is not supported.
|
|
201
|
+
Chrome also supports the image/webp type.
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
var supportTypes = {
|
|
205
|
+
"image/jpg" : true,
|
|
206
|
+
"image/png" : true,
|
|
207
|
+
"image/webp" : supportWebP()
|
|
208
|
+
};
|
|
209
|
+
// var exportType = "image/png";
|
|
210
|
+
// if(supportTypes[type]){
|
|
211
|
+
// exportType = type;
|
|
212
|
+
// }
|
|
213
|
+
// 多端一致,缩略图必须是 jpg
|
|
214
|
+
var exportType = "image/jpg";
|
|
215
|
+
var newImageData = canvas.toDataURL(exportType);
|
|
216
|
+
return newImageData;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function supportWebP(){
|
|
220
|
+
try{
|
|
221
|
+
return (canvas.toDataURL('image/webp').indexOf('data:image/webp') == 0);
|
|
222
|
+
}catch(err) {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
win.UploadFile = {
|
|
229
|
+
init: init,
|
|
230
|
+
dataType: dataType,
|
|
231
|
+
resize : resize
|
|
232
|
+
};
|
|
233
233
|
})(window);
|
package/src/plugins/im/index.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import Chat from './components/chat';
|
|
2
|
-
import ConversationList from './components/conversation-list';
|
|
3
|
-
import chatCom from './components/chat';
|
|
4
|
-
import TextMessage from './components/msg-text';
|
|
5
|
-
import ImageMessage from './components/msg-image';
|
|
6
|
-
|
|
7
|
-
const components = {
|
|
8
|
-
ConversationList,
|
|
9
|
-
chatCom,
|
|
10
|
-
TextMessage,
|
|
11
|
-
ImageMessage
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
function Service(Config) {
|
|
15
|
-
return require("./utils/services.js")(Config);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function install(Vue) {
|
|
19
|
-
Vue.prototype.$Service = Service()
|
|
20
|
-
Object.keys(components).forEach((key) => {
|
|
21
|
-
Vue.component(key, components[key]);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (typeof window !== 'undefined' && window.Vue) install(window.Vue);
|
|
26
|
-
|
|
27
|
-
export default {
|
|
28
|
-
install,
|
|
29
|
-
...components
|
|
30
|
-
};
|
|
31
|
-
|
|
1
|
+
import Chat from './components/chat';
|
|
2
|
+
import ConversationList from './components/conversation-list';
|
|
3
|
+
import chatCom from './components/chat';
|
|
4
|
+
import TextMessage from './components/msg-text';
|
|
5
|
+
import ImageMessage from './components/msg-image';
|
|
6
|
+
|
|
7
|
+
const components = {
|
|
8
|
+
ConversationList,
|
|
9
|
+
chatCom,
|
|
10
|
+
TextMessage,
|
|
11
|
+
ImageMessage
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
function Service(Config) {
|
|
15
|
+
return require("./utils/services.js")(Config);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function install(Vue) {
|
|
19
|
+
Vue.prototype.$Service = Service()
|
|
20
|
+
Object.keys(components).forEach((key) => {
|
|
21
|
+
Vue.component(key, components[key]);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (typeof window !== 'undefined' && window.Vue) install(window.Vue);
|
|
26
|
+
|
|
27
|
+
export default {
|
|
28
|
+
install,
|
|
29
|
+
...components
|
|
30
|
+
};
|
|
31
|
+
|