hd-idevvue3 3.0.0 → 3.0.2
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/.env.development +5 -0
- package/.env.production +5 -0
- package/README.md +22 -191
- package/dist/assets/index.774ef40e.css +1 -0
- package/dist/hd-idevvue3.mjs +45697 -0
- package/dist/hd-idevvue3.umd.js +153 -0
- package/index.html +1 -0
- package/npminstall-debug.log +10 -2
- package/package.json +35 -40
- package/pnpm-lock.yaml +2631 -0
- package/src/App.vue +15 -0
- package/src/assets/sound/notify.wav +0 -0
- package/src/demo/demo.vue +43 -0
- package/src/demo/dropdemo.vue +43 -0
- package/src/demo/extsets.vue +107 -0
- package/src/demo/formedit.vue +145 -0
- package/src/demo/hightquery.vue +169 -0
- package/src/demo/inlineedit.vue +88 -0
- package/src/demo/selfdrop.vue +41 -0
- package/src/demo//350/241/214/345/206/205/347/272/247/350/201/224.txt +2 -0
- package/src/directive/el-dragDialog/drag.js +124 -0
- package/src/directive/el-dragDialog/index.js +13 -0
- package/src/errorLog.js +16 -0
- package/src/hdcom/BigGrid.js +173 -0
- package/src/hdcom/BillShow.vue +90 -0
- package/src/hdcom/BillUpload.vue +253 -0
- package/src/hdcom/BtnRight.vue +98 -0
- package/src/hdcom/ErrHint.vue +30 -0
- package/src/hdcom/ExtendColumn.vue +108 -0
- package/src/hdcom/ExtendCommon.js +29 -0
- package/src/hdcom/ExtendForm.vue +114 -0
- package/src/hdcom/FacePicUpload.vue +71 -0
- package/src/hdcom/FaceRecTest.vue +104 -0
- package/src/hdcom/GridChart.vue +194 -0
- package/src/hdcom/GridExField.vue +281 -0
- package/src/hdcom/GridShow.vue +238 -0
- package/src/hdcom/HdAside.vue +178 -0
- package/src/hdcom/HdBtn.vue +113 -0
- package/src/hdcom/HdButton.vue +137 -0
- package/src/hdcom/HdComFaceRec.vue +58 -0
- package/src/hdcom/HdComGrid.vue +776 -0
- package/src/hdcom/HdComQuery.vue +273 -0
- package/src/hdcom/HdComQueryDetail.vue +161 -0
- package/src/hdcom/HdComSortDetail.vue +155 -0
- package/src/hdcom/HdDatePicker.vue +78 -0
- package/src/hdcom/HdDialog.vue +63 -0
- package/src/hdcom/HdDrop.vue +163 -0
- package/src/hdcom/HdFileUpload.vue +148 -0
- package/src/hdcom/HdFilterBox.vue +90 -0
- package/src/hdcom/HdFooter.vue +149 -0
- package/src/hdcom/HdForm.vue +278 -0
- package/src/hdcom/HdFormBtn.vue +89 -0
- package/src/hdcom/HdFormItem.vue +35 -0
- package/src/hdcom/HdGctosGrid +0 -0
- package/src/hdcom/HdGrid.vue +825 -0
- package/src/hdcom/HdGridEditBtn.vue +44 -0
- package/src/hdcom/HdGridExt.js +219 -0
- package/src/hdcom/HdGridSel.vue +223 -0
- package/src/hdcom/HdHeader.vue +148 -0
- package/src/hdcom/HdHotKey.vue +81 -0
- package/src/hdcom/HdInputHint.vue +49 -0
- package/src/hdcom/HdMain.vue +43 -0
- package/src/hdcom/HdMessage.vue +192 -0
- package/src/hdcom/HdNum.vue +69 -0
- package/src/hdcom/HdPopSel.vue +58 -0
- package/src/hdcom/HdRightMenu.vue +61 -0
- package/src/hdcom/HdSel/SelGridFieldcod.vue +36 -0
- package/src/hdcom/HdTableColumn.vue +334 -0
- package/src/hdcom/HdTempSave.vue +140 -0
- package/src/hdcom/HdTree.vue +86 -0
- package/src/hdcom/HdTreeTable/eval.js +34 -0
- package/src/hdcom/HdTreeTable/index.vue +174 -0
- package/src/hdcom/ImportExcel.vue +143 -0
- package/src/hdcom/index.js +80 -0
- package/src/idev.common.js +72 -0
- package/src/index.js +14 -0
- package/src/utils/HdQuery.js +54 -0
- package/src/utils/comutils.js +98 -0
- package/src/utils/utils.js +105 -0
- package/src/vendor/Blob.js +179 -0
- package/src/vendor/Export2Excel.js +220 -0
- package/src/vendor/Export2Zip.js +22 -0
- package/src/views/layout/AppMain.vue +32 -0
- package/src/views/layout/HdLayout.vue +78 -0
- package/src/views/layout/header/ElasticSearch.vue +225 -0
- package/src/views/layout/header/HZRecorder.js +231 -0
- package/src/views/layout/header/HeaderSearch.vue +198 -0
- package/src/views/layout/header/Levelbar.vue +49 -0
- package/src/views/layout/header/MainHeader.vue +271 -0
- package/src/views/layout/header/Navbar.vue +105 -0
- package/src/views/layout/header/ScrollPane.vue +81 -0
- package/src/views/layout/header/TagsView.vue +210 -0
- package/src/views/layout/header/VocRec.vue +97 -0
- package/src/views/layout/header/changepswform.vue +96 -0
- package/src/views/layout/index.js +12 -0
- package/src/views/layout/menu/Hamburger.vue +45 -0
- package/src/views/layout/menu/HdMenu.vue +167 -0
- package/src/views/layout/menu/css/menu.css +288 -0
- package/src/views/layout/menu/index.vue +25 -0
- package/src/views/privilege/commsg/commsg.vue +78 -0
- package/src/views/privilege/commsg/commsgOrgn.vue +42 -0
- package/src/views/privilege/commsg/commsgRole.vue +149 -0
- package/src/views/privilege/commsg/commsgform.vue +160 -0
- package/src/views/privilege/commsg/commsgiframe.vue +33 -0
- package/src/views/privilege/commsg/commsgto.vue +120 -0
- package/src/views/privilege/commsg/commsgtoform.vue +108 -0
- package/src/views/privilege/commsg/commsgtrans.vue +155 -0
- package/src/views/privilege/exfield/comexcolumn.vue +71 -0
- package/src/views/privilege/exfield/comexcolumnform.vue +101 -0
- package/src/views/privilege/exfield/comexfield.vue +31 -0
- package/src/views/privilege/exfield/comexfieldform.vue +94 -0
- package/src/views/privilege/exfield/comexfieldsub.vue +72 -0
- package/src/views/privilege/index.js +42 -0
- package/src/views/privilege/menu/comMenu.vue +41 -0
- package/src/views/privilege/menu/menu.vue +133 -0
- package/src/views/privilege/menu/menuinfo.vue +56 -0
- package/src/views/privilege/menu/rolelist.vue +47 -0
- package/src/views/privilege/menu/userlist.vue +49 -0
- package/src/views/privilege/mobile/authmobileupdate.vue +69 -0
- package/src/views/privilege/mobile/authmobileupdateform.vue +90 -0
- package/src/views/privilege/orgDept/authOrgn.vue +96 -0
- package/src/views/privilege/orgDept/authorgnform.vue +145 -0
- package/src/views/privilege/orgDept/orgDept.vue +37 -0
- package/src/views/privilege/orgDept/orgTree.vue +88 -0
- package/src/views/privilege/orgDept/orgnselect.vue +134 -0
- package/src/views/privilege/personDept/authuser.vue +123 -0
- package/src/views/privilege/personDept/authuserform.vue +154 -0
- package/src/views/privilege/personDept/facerec.vue +117 -0
- package/src/views/privilege/personDept/orgncascader.vue +125 -0
- package/src/views/privilege/personDept/personDept.vue +31 -0
- package/src/views/privilege/quartz/comquartzjob.vue +65 -0
- package/src/views/privilege/quartz/comquartzjobform.vue +99 -0
- package/src/views/privilege/quartz/comquartzlog.vue +59 -0
- package/src/views/privilege/role/btnRole.vue +117 -0
- package/src/views/privilege/role/menuRole.vue +64 -0
- package/src/views/privilege/role/orgnRole.vue +56 -0
- package/src/views/privilege/role/role.vue +67 -0
- package/src/views/privilege/role/rolelist.vue +67 -0
- package/src/views/privilege/role/roleselect.vue +57 -0
- package/src/views/privilege/search/comsearch.vue +105 -0
- package/src/views/privilege/search/menu.vue +52 -0
- package/src/views/privilege/syscode/syscode.vue +103 -0
- package/src/views/privilege/syscode/sysfield.vue +66 -0
- package/src/views/privilege/syscode/sysfieldframe.vue +30 -0
- package/src/views/privilege/syslog/menulog.vue +52 -0
- package/src/views/privilege/syslog/syslog.vue +115 -0
- package/src/views/privilege/syslog/syslogconfig.vue +61 -0
- package/src/views/privilege/syslog/syslogform.vue +83 -0
- package/src/views/privilege/syslog/syslogframe.vue +26 -0
- package/src/views/privilege/userRole/userRole.vue +122 -0
- package/src/views/privilege.zip +0 -0
- package/vite.config.js +93 -0
- package/.babelrc +0 -17
- package/.editorconfig +0 -14
- package/.eslintignore +0 -3
- package/.npminstall.done +0 -1
- package/.postcssrc.js +0 -8
- package/LICENSE +0 -21
- package/Listening +0 -28
- package/build/build.js +0 -70
- package/build/check-versions.js +0 -45
- package/build/config.js +0 -81
- package/build/dev-client.js +0 -9
- package/build/dev-server.js +0 -93
- package/build/utils.js +0 -78
- package/build/vue-loader.conf.js +0 -12
- package/build/webpack.common.js +0 -37
- package/build/webpack.component.js +0 -36
- package/build/webpack.prod.conf.js +0 -38
- package/components.json +0 -8
- package/conf.js +0 -42
- package/config/dev.env.js +0 -6
- package/config/index.js +0 -43
- package/config/prod.env.js +0 -6
- package/config/sit.env.js +0 -6
- package/favicon.ico +0 -0
- package/jsdoc-vue.js +0 -12
- package/lib/0.index.js +0 -12573
- package/lib/1.index.js +0 -6
- package/lib/2.index.js +0 -2
- package/lib/idev.common.js +0 -1
- package/lib/idv8.common.js +0 -1
- package/lib/index.js +0 -49170
- package/lib/js/ErrHint.js +0 -1
- package/lib/js/HdAside.js +0 -1
- package/lib/js/HdBtn.js +0 -1
- package/lib/js/HdButton.js +0 -1
- package/lib/js/HdComFaceRec.js +0 -1
- package/lib/js/HdComGrid.js +0 -1
- package/lib/js/HdDatePicker.js +0 -1
- package/lib/js/HdDialog.js +0 -1
- package/lib/js/HdDrop.js +0 -1
- package/lib/js/HdFileUpload.js +0 -1
- package/lib/js/HdFooter.js +0 -1
- package/lib/js/HdForm.js +0 -1
- package/lib/js/HdFormBtn.js +0 -1
- package/lib/js/HdFormItem.js +0 -1
- package/lib/js/HdGrid.js +0 -1
- package/lib/js/HdGridEditBtn.js +0 -1
- package/lib/js/HdGridSel.js +0 -1
- package/lib/js/HdHeader.js +0 -1
- package/lib/js/HdHotkey.js +0 -1
- package/lib/js/HdLayout.js +0 -1
- package/lib/js/HdMain.js +0 -1
- package/lib/js/HdMessage.js +0 -1
- package/lib/js/HdNum.js +0 -1
- package/lib/js/HdPopSel.js +0 -1
- package/lib/js/HdSearch.js +0 -1
- package/lib/js/HdTableColumn.js +0 -1
- package/lib/js/HdTempSave.js +0 -1
- package/lib/js/HdTree.js +0 -1
- package/lib/js/HdTreeTable.js +0 -1
- package/lib/js/authmobileupdate.js +0 -1
- package/lib/js/comexfield.js +0 -1
- package/lib/js/commsg.js +0 -1
- package/lib/js/commsgto.js +0 -1
- package/lib/js/comquartzjob.js +0 -1
- package/lib/js/comquartzlog.js +0 -1
- package/lib/js/comsearch.js +0 -1
- package/lib/js/menu.js +0 -1
- package/lib/js/menuinfo.js +0 -1
- package/lib/js/orgDept.js +0 -1
- package/lib/js/orgTree.js +0 -1
- package/lib/js/personDept.js +0 -1
- package/lib/js/role.js +0 -1
- package/lib/js/sysfieldframe.js +0 -1
- package/lib/js/syslog.js +0 -1
- package/lib/js/syslogframe.js +0 -1
- package/lib/js/userRole.js +0 -1
- package/ytgvue.rar +0 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
Date.prototype.format = function (format) {
|
|
2
|
+
var args = {
|
|
3
|
+
'M+': this.getMonth() + 1,
|
|
4
|
+
'd+': this.getDate(),
|
|
5
|
+
'H+': this.getHours(),
|
|
6
|
+
'm+': this.getMinutes(),
|
|
7
|
+
's+': this.getSeconds(),
|
|
8
|
+
'q+': Math.floor((this.getMonth() + 3) / 3), // quarter
|
|
9
|
+
'S': this.getMilliseconds()
|
|
10
|
+
}
|
|
11
|
+
if (/(y+)/.test(format)) {
|
|
12
|
+
format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
|
|
13
|
+
}
|
|
14
|
+
for (var i in args) {
|
|
15
|
+
var n = args[i]
|
|
16
|
+
if (new RegExp('(' + i + ')').test(format)) {
|
|
17
|
+
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? n : ('00' + n).substr(('' + n).length))
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return format
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
String.prototype.formatStr = function (format) {
|
|
24
|
+
var date = this
|
|
25
|
+
if (!format) format = 'yyyy-MM-dd'
|
|
26
|
+
switch (typeof date) {
|
|
27
|
+
case 'string':
|
|
28
|
+
date = new Date(date.replace(/-/, '/'))
|
|
29
|
+
break
|
|
30
|
+
case 'number':
|
|
31
|
+
date = new Date(date)
|
|
32
|
+
break
|
|
33
|
+
default:
|
|
34
|
+
date = new Date(date.toString().replace(/-/, '/'))
|
|
35
|
+
break
|
|
36
|
+
}
|
|
37
|
+
if (!date instanceof Date) return
|
|
38
|
+
var dict = {
|
|
39
|
+
'yyyy': date.getFullYear(),
|
|
40
|
+
'M': date.getMonth() + 1,
|
|
41
|
+
'd': date.getDate(),
|
|
42
|
+
'H': date.getHours(),
|
|
43
|
+
'm': date.getMinutes(),
|
|
44
|
+
's': date.getSeconds(),
|
|
45
|
+
'MM': ('' + (date.getMonth() + 101)).substr(1),
|
|
46
|
+
'dd': ('' + (date.getDate() + 100)).substr(1),
|
|
47
|
+
'HH': ('' + (date.getHours() + 100)).substr(1),
|
|
48
|
+
'mm': ('' + (date.getMinutes() + 100)).substr(1),
|
|
49
|
+
'ss': ('' + (date.getSeconds() + 100)).substr(1)
|
|
50
|
+
}
|
|
51
|
+
return format.replace(/(yyyy|MM?|dd?|HH?|ss?|mm?)/g, function () {
|
|
52
|
+
return dict[arguments[0]]
|
|
53
|
+
})
|
|
54
|
+
}
|
|
55
|
+
String.prototype.replaceAll = function (oldStr, newStr) {
|
|
56
|
+
return this.replace(new RegExp(oldStr, 'gm'), newStr)
|
|
57
|
+
}
|
|
58
|
+
// 遍历整个数组,移除匹配item的元素,使用强比较===,给第二个参数的话就从头开始找到第一个匹配item元素移除后返回;
|
|
59
|
+
// 如有找到元素返回处理后的数组自身,如果没有找到过就返回undefined;
|
|
60
|
+
Array.prototype.remove = function (item, all) {
|
|
61
|
+
let result, isType = Object.prototype.toString, i, len, start, hasLast = arguments[2]
|
|
62
|
+
start = 0, len = this.length
|
|
63
|
+
for (i = start; i < len;) {
|
|
64
|
+
var isPass = true, inx
|
|
65
|
+
if (!hasLast) {
|
|
66
|
+
inx = i
|
|
67
|
+
} else {
|
|
68
|
+
inx = len - 1
|
|
69
|
+
}
|
|
70
|
+
if (isType.call(item) == '[object Array]') {
|
|
71
|
+
for (var ii = 0, iimax = item.length; ii < iimax; ii++) {
|
|
72
|
+
if (this[inx] === item[ii]) {
|
|
73
|
+
isPass = false
|
|
74
|
+
break
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
} else if (this[inx] === item) {
|
|
78
|
+
isPass = false
|
|
79
|
+
}
|
|
80
|
+
if (!isPass) {
|
|
81
|
+
result = true
|
|
82
|
+
this.splice(inx, 1)
|
|
83
|
+
if (all) {
|
|
84
|
+
break
|
|
85
|
+
}
|
|
86
|
+
} else if (!hasLast) {
|
|
87
|
+
len = this.length
|
|
88
|
+
i++
|
|
89
|
+
} else {
|
|
90
|
+
len--
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return result ? this : void 0
|
|
94
|
+
}
|
|
95
|
+
// 删除一个并返回当前位置,匹配不到返回-1
|
|
96
|
+
Array.prototype.removeone = function (item) {
|
|
97
|
+
for (let i = 0; i < this.length; i++) {
|
|
98
|
+
if (this[i] === item) {
|
|
99
|
+
this.splice(i, 1)
|
|
100
|
+
return i
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return -1
|
|
104
|
+
}
|
|
105
|
+
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/* Blob.js
|
|
3
|
+
* A Blob implementation.
|
|
4
|
+
* 2014-05-27
|
|
5
|
+
*
|
|
6
|
+
* By Eli Grey, http://eligrey.com
|
|
7
|
+
* By Devin Samarin, https://github.com/eboyjr
|
|
8
|
+
* License: X11/MIT
|
|
9
|
+
* See LICENSE.md
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/*global self, unescape */
|
|
13
|
+
/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
|
|
14
|
+
plusplus: true */
|
|
15
|
+
|
|
16
|
+
/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
|
|
17
|
+
|
|
18
|
+
(function (view) {
|
|
19
|
+
"use strict";
|
|
20
|
+
|
|
21
|
+
view.URL = view.URL || view.webkitURL;
|
|
22
|
+
|
|
23
|
+
if (view.Blob && view.URL) {
|
|
24
|
+
try {
|
|
25
|
+
new Blob;
|
|
26
|
+
return;
|
|
27
|
+
} catch (e) {}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Internally we use a BlobBuilder implementation to base Blob off of
|
|
31
|
+
// in order to support older browsers that only have BlobBuilder
|
|
32
|
+
var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) {
|
|
33
|
+
var
|
|
34
|
+
get_class = function(object) {
|
|
35
|
+
return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
|
|
36
|
+
}
|
|
37
|
+
, FakeBlobBuilder = function BlobBuilder() {
|
|
38
|
+
this.data = [];
|
|
39
|
+
}
|
|
40
|
+
, FakeBlob = function Blob(data, type, encoding) {
|
|
41
|
+
this.data = data;
|
|
42
|
+
this.size = data.length;
|
|
43
|
+
this.type = type;
|
|
44
|
+
this.encoding = encoding;
|
|
45
|
+
}
|
|
46
|
+
, FBB_proto = FakeBlobBuilder.prototype
|
|
47
|
+
, FB_proto = FakeBlob.prototype
|
|
48
|
+
, FileReaderSync = view.FileReaderSync
|
|
49
|
+
, FileException = function(type) {
|
|
50
|
+
this.code = this[this.name = type];
|
|
51
|
+
}
|
|
52
|
+
, file_ex_codes = (
|
|
53
|
+
"NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
|
|
54
|
+
+ "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
|
|
55
|
+
).split(" ")
|
|
56
|
+
, file_ex_code = file_ex_codes.length
|
|
57
|
+
, real_URL = view.URL || view.webkitURL || view
|
|
58
|
+
, real_create_object_URL = real_URL.createObjectURL
|
|
59
|
+
, real_revoke_object_URL = real_URL.revokeObjectURL
|
|
60
|
+
, URL = real_URL
|
|
61
|
+
, btoa = view.btoa
|
|
62
|
+
, atob = view.atob
|
|
63
|
+
|
|
64
|
+
, ArrayBuffer = view.ArrayBuffer
|
|
65
|
+
, Uint8Array = view.Uint8Array
|
|
66
|
+
;
|
|
67
|
+
FakeBlob.fake = FB_proto.fake = true;
|
|
68
|
+
while (file_ex_code--) {
|
|
69
|
+
FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
|
|
70
|
+
}
|
|
71
|
+
if (!real_URL.createObjectURL) {
|
|
72
|
+
URL = view.URL = {};
|
|
73
|
+
}
|
|
74
|
+
URL.createObjectURL = function(blob) {
|
|
75
|
+
var
|
|
76
|
+
type = blob.type
|
|
77
|
+
, data_URI_header
|
|
78
|
+
;
|
|
79
|
+
if (type === null) {
|
|
80
|
+
type = "application/octet-stream";
|
|
81
|
+
}
|
|
82
|
+
if (blob instanceof FakeBlob) {
|
|
83
|
+
data_URI_header = "data:" + type;
|
|
84
|
+
if (blob.encoding === "base64") {
|
|
85
|
+
return data_URI_header + ";base64," + blob.data;
|
|
86
|
+
} else if (blob.encoding === "URI") {
|
|
87
|
+
return data_URI_header + "," + decodeURIComponent(blob.data);
|
|
88
|
+
} if (btoa) {
|
|
89
|
+
return data_URI_header + ";base64," + btoa(blob.data);
|
|
90
|
+
} else {
|
|
91
|
+
return data_URI_header + "," + encodeURIComponent(blob.data);
|
|
92
|
+
}
|
|
93
|
+
} else if (real_create_object_URL) {
|
|
94
|
+
return real_create_object_URL.call(real_URL, blob);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
URL.revokeObjectURL = function(object_URL) {
|
|
98
|
+
if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
|
|
99
|
+
real_revoke_object_URL.call(real_URL, object_URL);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
FBB_proto.append = function(data/*, endings*/) {
|
|
103
|
+
var bb = this.data;
|
|
104
|
+
// decode data to a binary string
|
|
105
|
+
if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
|
|
106
|
+
var
|
|
107
|
+
str = ""
|
|
108
|
+
, buf = new Uint8Array(data)
|
|
109
|
+
, i = 0
|
|
110
|
+
, buf_len = buf.length
|
|
111
|
+
;
|
|
112
|
+
for (; i < buf_len; i++) {
|
|
113
|
+
str += String.fromCharCode(buf[i]);
|
|
114
|
+
}
|
|
115
|
+
bb.push(str);
|
|
116
|
+
} else if (get_class(data) === "Blob" || get_class(data) === "File") {
|
|
117
|
+
if (FileReaderSync) {
|
|
118
|
+
var fr = new FileReaderSync;
|
|
119
|
+
bb.push(fr.readAsBinaryString(data));
|
|
120
|
+
} else {
|
|
121
|
+
// async FileReader won't work as BlobBuilder is sync
|
|
122
|
+
throw new FileException("NOT_READABLE_ERR");
|
|
123
|
+
}
|
|
124
|
+
} else if (data instanceof FakeBlob) {
|
|
125
|
+
if (data.encoding === "base64" && atob) {
|
|
126
|
+
bb.push(atob(data.data));
|
|
127
|
+
} else if (data.encoding === "URI") {
|
|
128
|
+
bb.push(decodeURIComponent(data.data));
|
|
129
|
+
} else if (data.encoding === "raw") {
|
|
130
|
+
bb.push(data.data);
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
if (typeof data !== "string") {
|
|
134
|
+
data += ""; // convert unsupported types to strings
|
|
135
|
+
}
|
|
136
|
+
// decode UTF-16 to binary string
|
|
137
|
+
bb.push(unescape(encodeURIComponent(data)));
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
FBB_proto.getBlob = function(type) {
|
|
141
|
+
if (!arguments.length) {
|
|
142
|
+
type = null;
|
|
143
|
+
}
|
|
144
|
+
return new FakeBlob(this.data.join(""), type, "raw");
|
|
145
|
+
};
|
|
146
|
+
FBB_proto.toString = function() {
|
|
147
|
+
return "[object BlobBuilder]";
|
|
148
|
+
};
|
|
149
|
+
FB_proto.slice = function(start, end, type) {
|
|
150
|
+
var args = arguments.length;
|
|
151
|
+
if (args < 3) {
|
|
152
|
+
type = null;
|
|
153
|
+
}
|
|
154
|
+
return new FakeBlob(
|
|
155
|
+
this.data.slice(start, args > 1 ? end : this.data.length)
|
|
156
|
+
, type
|
|
157
|
+
, this.encoding
|
|
158
|
+
);
|
|
159
|
+
};
|
|
160
|
+
FB_proto.toString = function() {
|
|
161
|
+
return "[object Blob]";
|
|
162
|
+
};
|
|
163
|
+
FB_proto.close = function() {
|
|
164
|
+
this.size = this.data.length = 0;
|
|
165
|
+
};
|
|
166
|
+
return FakeBlobBuilder;
|
|
167
|
+
}(view));
|
|
168
|
+
|
|
169
|
+
view.Blob = function Blob(blobParts, options) {
|
|
170
|
+
var type = options ? (options.type || "") : "";
|
|
171
|
+
var builder = new BlobBuilder();
|
|
172
|
+
if (blobParts) {
|
|
173
|
+
for (var i = 0, len = blobParts.length; i < len; i++) {
|
|
174
|
+
builder.append(blobParts[i]);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return builder.getBlob(type);
|
|
178
|
+
};
|
|
179
|
+
}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import { saveAs } from 'file-saver'
|
|
3
|
+
import * as XLSX from 'xlsx'
|
|
4
|
+
|
|
5
|
+
function generateArray(table) {
|
|
6
|
+
var out = [];
|
|
7
|
+
var rows = table.querySelectorAll('tr');
|
|
8
|
+
var ranges = [];
|
|
9
|
+
for (var R = 0; R < rows.length; ++R) {
|
|
10
|
+
var outRow = [];
|
|
11
|
+
var row = rows[R];
|
|
12
|
+
var columns = row.querySelectorAll('td');
|
|
13
|
+
for (var C = 0; C < columns.length; ++C) {
|
|
14
|
+
var cell = columns[C];
|
|
15
|
+
var colspan = cell.getAttribute('colspan');
|
|
16
|
+
var rowspan = cell.getAttribute('rowspan');
|
|
17
|
+
var cellValue = cell.innerText;
|
|
18
|
+
if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
|
|
19
|
+
|
|
20
|
+
//Skip ranges
|
|
21
|
+
ranges.forEach(function (range) {
|
|
22
|
+
if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
|
|
23
|
+
for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
//Handle Row Span
|
|
28
|
+
if (rowspan || colspan) {
|
|
29
|
+
rowspan = rowspan || 1;
|
|
30
|
+
colspan = colspan || 1;
|
|
31
|
+
ranges.push({
|
|
32
|
+
s: {
|
|
33
|
+
r: R,
|
|
34
|
+
c: outRow.length
|
|
35
|
+
},
|
|
36
|
+
e: {
|
|
37
|
+
r: R + rowspan - 1,
|
|
38
|
+
c: outRow.length + colspan - 1
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
//Handle Value
|
|
44
|
+
outRow.push(cellValue !== "" ? cellValue : null);
|
|
45
|
+
|
|
46
|
+
//Handle Colspan
|
|
47
|
+
if (colspan)
|
|
48
|
+
for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
|
|
49
|
+
}
|
|
50
|
+
out.push(outRow);
|
|
51
|
+
}
|
|
52
|
+
return [out, ranges];
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
function datenum(v, date1904) {
|
|
56
|
+
if (date1904) v += 1462;
|
|
57
|
+
var epoch = Date.parse(v);
|
|
58
|
+
return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function sheet_from_array_of_arrays(data, opts) {
|
|
62
|
+
var ws = {};
|
|
63
|
+
var range = {
|
|
64
|
+
s: {
|
|
65
|
+
c: 10000000,
|
|
66
|
+
r: 10000000
|
|
67
|
+
},
|
|
68
|
+
e: {
|
|
69
|
+
c: 0,
|
|
70
|
+
r: 0
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
for (var R = 0; R != data.length; ++R) {
|
|
74
|
+
for (var C = 0; C != data[R].length; ++C) {
|
|
75
|
+
if (range.s.r > R) range.s.r = R;
|
|
76
|
+
if (range.s.c > C) range.s.c = C;
|
|
77
|
+
if (range.e.r < R) range.e.r = R;
|
|
78
|
+
if (range.e.c < C) range.e.c = C;
|
|
79
|
+
var cell = {
|
|
80
|
+
v: data[R][C]
|
|
81
|
+
};
|
|
82
|
+
if (cell.v == null) continue;
|
|
83
|
+
var cell_ref = XLSX.utils.encode_cell({
|
|
84
|
+
c: C,
|
|
85
|
+
r: R
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
if (typeof cell.v === 'number') cell.t = 'n';
|
|
89
|
+
else if (typeof cell.v === 'boolean') cell.t = 'b';
|
|
90
|
+
else if (cell.v instanceof Date) {
|
|
91
|
+
cell.t = 'n';
|
|
92
|
+
cell.z = XLSX.SSF._table[14];
|
|
93
|
+
cell.v = datenum(cell.v);
|
|
94
|
+
} else cell.t = 's';
|
|
95
|
+
|
|
96
|
+
ws[cell_ref] = cell;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
|
|
100
|
+
return ws;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function Workbook() {
|
|
104
|
+
if (!(this instanceof Workbook)) return new Workbook();
|
|
105
|
+
this.SheetNames = [];
|
|
106
|
+
this.Sheets = {};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function s2ab(s) {
|
|
110
|
+
var buf = new ArrayBuffer(s.length);
|
|
111
|
+
var view = new Uint8Array(buf);
|
|
112
|
+
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
|
|
113
|
+
return buf;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function export_table_to_excel(id) {
|
|
117
|
+
var theTable = document.getElementById(id);
|
|
118
|
+
var oo = generateArray(theTable);
|
|
119
|
+
var ranges = oo[1];
|
|
120
|
+
|
|
121
|
+
/* original data */
|
|
122
|
+
var data = oo[0];
|
|
123
|
+
var ws_name = "SheetJS";
|
|
124
|
+
|
|
125
|
+
var wb = new Workbook(),
|
|
126
|
+
ws = sheet_from_array_of_arrays(data);
|
|
127
|
+
|
|
128
|
+
/* add ranges to worksheet */
|
|
129
|
+
// ws['!cols'] = ['apple', 'banan'];
|
|
130
|
+
ws['!merges'] = ranges;
|
|
131
|
+
|
|
132
|
+
/* add worksheet to workbook */
|
|
133
|
+
wb.SheetNames.push(ws_name);
|
|
134
|
+
wb.Sheets[ws_name] = ws;
|
|
135
|
+
|
|
136
|
+
var wbout = XLSX.write(wb, {
|
|
137
|
+
bookType: 'xlsx',
|
|
138
|
+
bookSST: false,
|
|
139
|
+
type: 'binary'
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
saveAs(new Blob([s2ab(wbout)], {
|
|
143
|
+
type: "application/octet-stream"
|
|
144
|
+
}), "test.xlsx")
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export function export_json_to_excel({
|
|
148
|
+
multiHeader = [],
|
|
149
|
+
header,
|
|
150
|
+
data,
|
|
151
|
+
filename,
|
|
152
|
+
merges = [],
|
|
153
|
+
autoWidth = true,
|
|
154
|
+
bookType = 'xlsx'
|
|
155
|
+
} = {}) {
|
|
156
|
+
/* original data */
|
|
157
|
+
filename = filename || 'excel-list'
|
|
158
|
+
data = [...data]
|
|
159
|
+
data.unshift(header);
|
|
160
|
+
|
|
161
|
+
for (let i = multiHeader.length - 1; i > -1; i--) {
|
|
162
|
+
data.unshift(multiHeader[i])
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
var ws_name = "SheetJS";
|
|
166
|
+
var wb = new Workbook(),
|
|
167
|
+
ws = sheet_from_array_of_arrays(data);
|
|
168
|
+
|
|
169
|
+
if (merges.length > 0) {
|
|
170
|
+
if (!ws['!merges']) ws['!merges'] = [];
|
|
171
|
+
merges.forEach(item => {
|
|
172
|
+
ws['!merges'].push(XLSX.utils.decode_range(item))
|
|
173
|
+
})
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (autoWidth) {
|
|
177
|
+
/*设置worksheet每列的最大宽度*/
|
|
178
|
+
const colWidth = data.map(row => row.map(val => {
|
|
179
|
+
/*先判断是否为null/undefined*/
|
|
180
|
+
if (val == null) {
|
|
181
|
+
return {
|
|
182
|
+
'wch': 10
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/*再判断是否为中文*/
|
|
186
|
+
else if (val.toString().charCodeAt(0) > 255) {
|
|
187
|
+
return {
|
|
188
|
+
'wch': val.toString().length * 2
|
|
189
|
+
};
|
|
190
|
+
} else {
|
|
191
|
+
return {
|
|
192
|
+
'wch': val.toString().length
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}))
|
|
196
|
+
/*以第一行为初始值*/
|
|
197
|
+
let result = colWidth[0];
|
|
198
|
+
for (let i = 1; i < colWidth.length; i++) {
|
|
199
|
+
for (let j = 0; j < colWidth[i].length; j++) {
|
|
200
|
+
if (result[j]['wch'] < colWidth[i][j]['wch']) {
|
|
201
|
+
result[j]['wch'] = colWidth[i][j]['wch'];
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
ws['!cols'] = result;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/* add worksheet to workbook */
|
|
209
|
+
wb.SheetNames.push(ws_name);
|
|
210
|
+
wb.Sheets[ws_name] = ws;
|
|
211
|
+
|
|
212
|
+
var wbout = XLSX.write(wb, {
|
|
213
|
+
bookType: bookType,
|
|
214
|
+
bookSST: false,
|
|
215
|
+
type: 'binary'
|
|
216
|
+
});
|
|
217
|
+
saveAs(new Blob([s2ab(wbout)], {
|
|
218
|
+
type: "application/octet-stream"
|
|
219
|
+
}), `${filename}.${bookType}`);
|
|
220
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
require('script-loader!file-saver');
|
|
3
|
+
import JSZip from 'jszip'
|
|
4
|
+
|
|
5
|
+
export function export_txt_to_zip(th, jsonData, txtName, zipName) {
|
|
6
|
+
const zip = new JSZip()
|
|
7
|
+
const txt_name = txtName || 'file'
|
|
8
|
+
const zip_name = zipName || 'file'
|
|
9
|
+
const data = jsonData
|
|
10
|
+
let txtData = `${th}\r\n`
|
|
11
|
+
data.forEach((row) => {
|
|
12
|
+
let tempStr = ''
|
|
13
|
+
tempStr = row.toString()
|
|
14
|
+
txtData += `${tempStr}\r\n`
|
|
15
|
+
})
|
|
16
|
+
zip.file(`${txt_name}.txt`, txtData)
|
|
17
|
+
zip.generateAsync({type:"blob"}).then((blob) => {
|
|
18
|
+
saveAs(blob, `${zip_name}.zip`)
|
|
19
|
+
}, (err) => {
|
|
20
|
+
alert('导出失败')
|
|
21
|
+
})
|
|
22
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="app-main">
|
|
3
|
+
<transition mode="out-in" name="fade">
|
|
4
|
+
<keep-alive :include="cachedViews">
|
|
5
|
+
<router-view :key="key" v-if="reload"/>
|
|
6
|
+
</keep-alive>
|
|
7
|
+
</transition>
|
|
8
|
+
</div>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
export default {
|
|
13
|
+
name: 'AppMain',
|
|
14
|
+
computed: {
|
|
15
|
+
cachedViews() {
|
|
16
|
+
return this.$store.state.app.cachedViews
|
|
17
|
+
},
|
|
18
|
+
key() {
|
|
19
|
+
return this.$route.name
|
|
20
|
+
},
|
|
21
|
+
reload() { // 刷新页面
|
|
22
|
+
return this.$store.state.app.refreshPage !== true
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
<style rel="stylesheet/scss" lang="scss">
|
|
28
|
+
.app-main {
|
|
29
|
+
height: 100%;
|
|
30
|
+
overflow: auto;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="[{hideSidebar:!sidebar.opened}, $store.state.user.skin]" class="hd-layout app-wrapper"
|
|
3
|
+
v-if="!onlyContent">
|
|
4
|
+
<main-header class="hd-header mainHeader" v-if="$store.state.app.headerShow!=false"></main-header>
|
|
5
|
+
<div class="hd-content">
|
|
6
|
+
<hdmenu class="hd-menu sidebar-container"></hdmenu>
|
|
7
|
+
<div class="hd-main main-container">
|
|
8
|
+
<Navbar></Navbar>
|
|
9
|
+
<AppMain style="flex:1"></AppMain>
|
|
10
|
+
<slot></slot>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<app-main :class="[{hideSidebar:!sidebar.opened}, $store.state.user.skin]" class="app-wrapper" v-else></app-main>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
import Navbar from './header/Navbar'
|
|
19
|
+
import TagsView from './header/TagsView'
|
|
20
|
+
import MainHeader from './header/MainHeader'
|
|
21
|
+
import AppMain from './AppMain'
|
|
22
|
+
import hdmenu from './menu'
|
|
23
|
+
|
|
24
|
+
export default {
|
|
25
|
+
name: 'layout',
|
|
26
|
+
components: {
|
|
27
|
+
MainHeader,
|
|
28
|
+
Navbar,
|
|
29
|
+
hdmenu,
|
|
30
|
+
AppMain,
|
|
31
|
+
TagsView,
|
|
32
|
+
},
|
|
33
|
+
computed: {
|
|
34
|
+
sidebar() {
|
|
35
|
+
return this.$store.state.app.sidebar
|
|
36
|
+
},
|
|
37
|
+
onlyContent() {
|
|
38
|
+
return this.$route.query.onlycontent == 1
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
watch: {
|
|
42
|
+
'$store.state.user.skin': {//弹窗的因为和#app平级,无法换肤
|
|
43
|
+
handler: function (newVal, oldVal) {
|
|
44
|
+
document.getElementsByTagName('body')[0].className = 'body-' + newVal;
|
|
45
|
+
this.$emit("chgTheme", newVal)
|
|
46
|
+
},
|
|
47
|
+
immediate: true
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
</script>
|
|
52
|
+
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
53
|
+
.hd-layout {
|
|
54
|
+
display: flex;
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
|
|
57
|
+
.hd-header {
|
|
58
|
+
height: 52px;
|
|
59
|
+
width: 100%
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.hd-content {
|
|
63
|
+
flex: 1;
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: row;
|
|
66
|
+
|
|
67
|
+
.hd-menu {
|
|
68
|
+
width: 50px
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.hd-main {
|
|
72
|
+
flex: 1;
|
|
73
|
+
display: flex;
|
|
74
|
+
flex-direction: column;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
</style>
|