n20-common-lib 1.2.42 → 1.2.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +2 -2
  2. package/package.json +88 -88
  3. package/src/_qiankun/index.js +113 -113
  4. package/src/_qiankun/postMessage.js +48 -48
  5. package/src/assets/css/_coreLib.scss +35 -35
  6. package/src/assets/css/cl-anchor.scss +23 -23
  7. package/src/assets/css/cl-approve-card.scss +58 -58
  8. package/src/assets/css/cl-dialog.scss +99 -99
  9. package/src/assets/css/cl-drag-list.scss +22 -22
  10. package/src/assets/css/cl-empty.scss +10 -10
  11. package/src/assets/css/cl-expandable-pane.scss +26 -26
  12. package/src/assets/css/cl-expandable.scss +24 -24
  13. package/src/assets/css/cl-file-upload-table.scss +11 -11
  14. package/src/assets/css/cl-filter.scss +4 -4
  15. package/src/assets/css/cl-flow-step.scss +185 -185
  16. package/src/assets/css/cl-footer-box.scss +10 -10
  17. package/src/assets/css/cl-form-item.scss +612 -612
  18. package/src/assets/css/cl-general-card.scss +11 -11
  19. package/src/assets/css/cl-layout-aside.scss +92 -92
  20. package/src/assets/css/cl-layout-content.scss +16 -16
  21. package/src/assets/css/cl-layout-header.scss +73 -73
  22. package/src/assets/css/cl-layout-tabs.scss +87 -87
  23. package/src/assets/css/cl-layout.scss +97 -97
  24. package/src/assets/css/cl-login-temporary.scss +37 -37
  25. package/src/assets/css/cl-message.scss +75 -75
  26. package/src/assets/css/cl-more-tab.scss +98 -98
  27. package/src/assets/css/cl-nav-menu.scss +5 -5
  28. package/src/assets/css/cl-pagination.scss +128 -128
  29. package/src/assets/css/cl-secondary-tab.scss +53 -53
  30. package/src/assets/css/cl-showcolumn.scss +23 -23
  31. package/src/assets/css/cl-sifting.scss +51 -51
  32. package/src/assets/css/cl-statis.scss +42 -42
  33. package/src/assets/css/cl-step.scss +73 -73
  34. package/src/assets/css/cl-suspend.scss +19 -19
  35. package/src/assets/css/cl-tertiary-tab.scss +54 -54
  36. package/src/assets/css/cl-upload.scss +41 -41
  37. package/src/assets/css/cl-worn-pagination.scss +50 -50
  38. package/src/assets/css/el-button.scss +173 -173
  39. package/src/assets/css/el-table.scss +79 -79
  40. package/src/assets/css/element-variables.scss +1061 -1061
  41. package/src/assets/css/element.dev.scss +21 -21
  42. package/src/assets/css/font-icon.scss +27 -27
  43. package/src/assets/css/index.dev.scss +4 -4
  44. package/src/assets/css/index.scss +11 -11
  45. package/src/assets/css/normalize.scss +726 -726
  46. package/src/assets/css/rootvar.scss +139 -139
  47. package/src/assets/css/select.scss +25 -25
  48. package/src/assets/css/title-pop.scss +4 -4
  49. package/src/assets/getJsonc.js +50 -50
  50. package/src/assets/realUrl.js +12 -12
  51. package/src/components/.DS_Store +0 -0
  52. package/src/components/Anchor/AnchorItem.vue +29 -29
  53. package/src/components/Anchor/index.vue +185 -185
  54. package/src/components/ApprovalButtons/index.vue +233 -233
  55. package/src/components/ApprovalCard/index.vue +128 -128
  56. package/src/components/ApprovalRecord/approvalImg.vue +44 -44
  57. package/src/components/ApprovalRecord/flowDialog.vue +45 -45
  58. package/src/components/ApprovalRecord/index.vue +59 -59
  59. package/src/components/Button/button-group.vue +150 -150
  60. package/src/components/Button/icon-group-button.vue +61 -61
  61. package/src/components/Button/index.vue +56 -56
  62. package/src/components/CascaderArea/index.vue +103 -103
  63. package/src/components/ContentLoading/index.vue +41 -41
  64. package/src/components/ContentNull/index.vue +19 -19
  65. package/src/components/DatePicker/index.vue +27 -27
  66. package/src/components/DatePicker/por.vue +169 -169
  67. package/src/components/Dialog/index.vue +26 -26
  68. package/src/components/Dialog/indexO.vue +116 -116
  69. package/src/components/DragList/index.vue +75 -75
  70. package/src/components/Empty/.DS_Store +0 -0
  71. package/src/components/Empty/img/.DS_Store +0 -0
  72. package/src/components/Empty/img/abnormal.svg +108 -108
  73. package/src/components/Empty/img/dispose.svg +71 -71
  74. package/src/components/Empty/img/empty.svg +57 -57
  75. package/src/components/Empty/img/general.svg +58 -58
  76. package/src/components/Empty/img/lock.svg +57 -57
  77. package/src/components/Empty/img/network.svg +59 -59
  78. package/src/components/Empty/img/relevant.svg +68 -68
  79. package/src/components/Empty/img/search.svg +72 -72
  80. package/src/components/Empty/index.vue +92 -92
  81. package/src/components/Expandable/index.vue +49 -49
  82. package/src/components/Expandable/main.vue +52 -52
  83. package/src/components/FileExportAsync/index.vue +178 -178
  84. package/src/components/FileUploadTable/index.vue +484 -484
  85. package/src/components/Filters/index.vue +371 -371
  86. package/src/components/Filters/indexO.vue +104 -104
  87. package/src/components/FlowStep/index.vue +68 -68
  88. package/src/components/FooterBox/index.vue +21 -21
  89. package/src/components/GeneralCard/index.vue +15 -15
  90. package/src/components/InputNumber/index.vue +169 -169
  91. package/src/components/InputNumber/numberRange.vue +47 -47
  92. package/src/components/InputSearch/index.vue +75 -75
  93. package/src/components/Layout/.DS_Store +0 -0
  94. package/src/components/Layout/AsideNav/index.vue +120 -120
  95. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  96. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  97. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  98. package/src/components/Layout/HeaderWrap/index.vue +371 -371
  99. package/src/components/Layout/HeaderWrap/noticePop.vue +316 -316
  100. package/src/components/Layout/SubContent/index.vue +127 -127
  101. package/src/components/Layout/TabsNav/index.vue +170 -170
  102. package/src/components/Layout/index.vue +518 -518
  103. package/src/components/Layout/utils.js +12 -12
  104. package/src/components/LoginTemporary/form.vue +566 -570
  105. package/src/components/LoginTemporary/index.vue +139 -139
  106. package/src/components/LoginTemporary/qrcode.vue +90 -90
  107. package/src/components/LoginTemporary/retrievePw.vue +372 -372
  108. package/src/components/LoginTemporary/utils.js +73 -73
  109. package/src/components/MicroApp/index.js +67 -67
  110. package/src/components/MicroFrame/index.vue +95 -95
  111. package/src/components/MoreTab/index.vue +232 -232
  112. package/src/components/NavMenu/index.vue +60 -60
  113. package/src/components/NstcG6Components/.DS_Store +0 -0
  114. package/src/components/PageLayout/page.vue +15 -15
  115. package/src/components/Pagination/index.vue +165 -165
  116. package/src/components/SecondaryTab/index.vue +58 -58
  117. package/src/components/SelectLazy/index.vue +75 -75
  118. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  119. package/src/components/SelectTree/index.vue +205 -205
  120. package/src/components/ShowColumn/index.vue +213 -213
  121. package/src/components/Sifting/index.vue +99 -99
  122. package/src/components/Statis/index.vue +97 -97
  123. package/src/components/Statis/statisItem.vue +54 -54
  124. package/src/components/Statis/statisPopover.vue +55 -55
  125. package/src/components/Step/index.vue +38 -38
  126. package/src/components/Suspend/index.vue +72 -72
  127. package/src/components/Table/index.vue +209 -209
  128. package/src/components/Table/indexO.vue +149 -149
  129. package/src/components/Task/index.vue +26 -26
  130. package/src/components/TertiaryTab/index.vue +63 -63
  131. package/src/components/TimePicker/index.vue +28 -28
  132. package/src/components/Upload/index.vue +242 -242
  133. package/src/components/WornPagination/index.vue +73 -73
  134. package/src/directives/VClickOutside/index.js +19 -19
  135. package/src/directives/VHas/index.js +58 -58
  136. package/src/directives/VMove/index.js +42 -42
  137. package/src/directives/VTitle/index.js +69 -69
  138. package/src/directives/VTitle/tooltip.vue +21 -21
  139. package/src/index.js +232 -232
  140. package/src/plugins/CompatibleOld/index.js +57 -57
  141. package/src/plugins/Print/index.js +4 -4
  142. package/src/plugins/Print/print-js/.babelrc +12 -12
  143. package/src/plugins/Print/print-js/LICENSE +21 -21
  144. package/src/plugins/Print/print-js/README.md +98 -98
  145. package/src/plugins/Print/print-js/dist/print.css +96 -96
  146. package/src/plugins/Print/print-js/dist/print.js +990 -990
  147. package/src/plugins/Print/print-js/package.json +60 -60
  148. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  149. package/src/plugins/Print/print-js/src/index.js +10 -10
  150. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  151. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  152. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  153. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  154. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  155. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  156. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  157. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  158. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  159. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  160. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  161. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  162. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  163. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  164. package/src/plugins/Print/print.js +2 -2
  165. package/src/plugins/Print/print.scss +1 -1
  166. package/src/plugins/SetMenuTree/index.vue +41 -41
  167. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  168. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  169. package/src/plugins/SetMenuTree/utils.js +74 -74
  170. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  171. package/src/plugins/Sign/index.js +65 -65
  172. package/src/plugins/Sign/sign.js +1 -1
  173. package/src/plugins/setTabsForSub.js +2 -2
  174. package/src/utils/auth.js +53 -53
  175. package/src/utils/axios.js +203 -203
  176. package/src/utils/downloadBlob.js +19 -19
  177. package/src/utils/forEachs.js +16 -16
  178. package/src/utils/getScrollContainer.js +43 -43
  179. package/src/utils/i18n/cn2hk.json +1270 -1270
  180. package/src/utils/i18n/index.js +50 -50
  181. package/src/utils/list2tree.js +36 -36
  182. package/src/utils/msgboxPor.js +26 -26
  183. package/src/utils/print.js +161 -161
  184. package/src/utils/relaNo.js +72 -72
  185. package/src/utils/repairElementUI.js +95 -95
  186. package/src/utils/urlToGo.js +82 -82
  187. package/style/index.css +3 -3
  188. package/style/css/normalize.scss +0 -726
  189. package/style/pageDemo/demo-1.vue +0 -131
  190. package/style/pageDemo/demo-2.vue +0 -35
  191. package/style/pageDemo/demo-3.vue +0 -22
  192. package/style/pageDemo/seeCode.js +0 -20
  193. package/style/server-config.jsonc +0 -606
@@ -1,50 +1,50 @@
1
- import locale from 'element-ui/lib/locale'
2
- import langEn from 'element-ui/lib/locale/lang/en'
3
- import langTw from 'element-ui/lib/locale/lang/zh-TW'
4
-
5
- import zhHk from './cn2hk.json' // 简体繁体映射
6
- // 语言枚举
7
- // const langEm = { 中文: 'zh', 中文简体: 'zh-cn', 中文繁体: 'zh-hk', 英文: 'en', 德文: 'de', 法文: 'fr' }
8
-
9
- let pageLang = window.localStorage.getItem('pageLang') // 当前页面的语言
10
- let $i18n_map_root = undefined // 全局的国际化
11
-
12
- export function $l(zh, map = {}) {
13
- if (!pageLang || pageLang === 'zh-cn') {
14
- return zh
15
- } else if (pageLang === 'zh-hk') {
16
- return cn2hk(zh)
17
- } else {
18
- let key = pageLang
19
- let valMap = map[zh] || $i18n_map_root[zh] || {}
20
- let val = valMap[key] || zh
21
-
22
- return val
23
- }
24
- }
25
- function cn2hk(zh = '') {
26
- let _zh = ''
27
- for (let i = 0; i < zh.length; i++) {
28
- let v = zh[i]
29
- let v_hk = zhHk[v]
30
- v_hk ? (_zh += v_hk) : (_zh += v)
31
- }
32
- return _zh
33
- }
34
-
35
- const directive = {}
36
- directive.install = (Vue, map = {}) => {
37
- if (pageLang === 'en') {
38
- locale.use(langEn)
39
- } else if (pageLang === 'zh-hk') {
40
- locale.use(langTw)
41
- }
42
-
43
- $i18n_map_root = map
44
-
45
- Vue.prototype.$i18n_map_root = $i18n_map_root
46
- Vue.prototype.$l = $l
47
- Vue.filter('$l', $l)
48
- }
49
-
50
- export default directive
1
+ import locale from 'element-ui/lib/locale'
2
+ import langEn from 'element-ui/lib/locale/lang/en'
3
+ import langTw from 'element-ui/lib/locale/lang/zh-TW'
4
+
5
+ import zhHk from './cn2hk.json' // 简体繁体映射
6
+ // 语言枚举
7
+ // const langEm = { 中文: 'zh', 中文简体: 'zh-cn', 中文繁体: 'zh-hk', 英文: 'en', 德文: 'de', 法文: 'fr' }
8
+
9
+ let pageLang = window.localStorage.getItem('pageLang') // 当前页面的语言
10
+ let $i18n_map_root = undefined // 全局的国际化
11
+
12
+ export function $l(zh, map = {}) {
13
+ if (!pageLang || pageLang === 'zh-cn') {
14
+ return zh
15
+ } else if (pageLang === 'zh-hk') {
16
+ return cn2hk(zh)
17
+ } else {
18
+ let key = pageLang
19
+ let valMap = map[zh] || $i18n_map_root[zh] || {}
20
+ let val = valMap[key] || zh
21
+
22
+ return val
23
+ }
24
+ }
25
+ function cn2hk(zh = '') {
26
+ let _zh = ''
27
+ for (let i = 0; i < zh.length; i++) {
28
+ let v = zh[i]
29
+ let v_hk = zhHk[v]
30
+ v_hk ? (_zh += v_hk) : (_zh += v)
31
+ }
32
+ return _zh
33
+ }
34
+
35
+ const directive = {}
36
+ directive.install = (Vue, map = {}) => {
37
+ if (pageLang === 'en') {
38
+ locale.use(langEn)
39
+ } else if (pageLang === 'zh-hk') {
40
+ locale.use(langTw)
41
+ }
42
+
43
+ $i18n_map_root = map
44
+
45
+ Vue.prototype.$i18n_map_root = $i18n_map_root
46
+ Vue.prototype.$l = $l
47
+ Vue.filter('$l', $l)
48
+ }
49
+
50
+ export default directive
@@ -1,36 +1,36 @@
1
- function list2tree(arr, id = 'id', pid = 'pId', children = 'children', sortk) {
2
- let r = []
3
- let hash = {}
4
-
5
- arr.forEach((item) => {
6
- hash[item[id]] = item
7
- })
8
-
9
- arr.forEach((item) => {
10
- let aVal = item
11
- let hashVP = hash[aVal[pid]]
12
- if (hashVP) {
13
- !hashVP[children] && (hashVP[children] = [])
14
- hashVP[children].push(aVal)
15
- } else {
16
- r.push(aVal)
17
- }
18
- })
19
- if (sortk !== undefined) {
20
- arr.forEach((item) => {
21
- if (hash[item[id]][children]) {
22
- hash[item[id]][children].sort(function (n1, n2) {
23
- return n1[sortk] - n2[sortk]
24
- })
25
- }
26
- })
27
-
28
- r.sort(function (n1, n2) {
29
- return n1[sortk] - n2[sortk]
30
- })
31
- }
32
-
33
- return r
34
- }
35
-
36
- export default list2tree
1
+ function list2tree(arr, id = 'id', pid = 'pId', children = 'children', sortk) {
2
+ let r = []
3
+ let hash = {}
4
+
5
+ arr.forEach((item) => {
6
+ hash[item[id]] = item
7
+ })
8
+
9
+ arr.forEach((item) => {
10
+ let aVal = item
11
+ let hashVP = hash[aVal[pid]]
12
+ if (hashVP) {
13
+ !hashVP[children] && (hashVP[children] = [])
14
+ hashVP[children].push(aVal)
15
+ } else {
16
+ r.push(aVal)
17
+ }
18
+ })
19
+ if (sortk !== undefined) {
20
+ arr.forEach((item) => {
21
+ if (hash[item[id]][children]) {
22
+ hash[item[id]][children].sort(function (n1, n2) {
23
+ return n1[sortk] - n2[sortk]
24
+ })
25
+ }
26
+ })
27
+
28
+ r.sort(function (n1, n2) {
29
+ return n1[sortk] - n2[sortk]
30
+ })
31
+ }
32
+
33
+ return r
34
+ }
35
+
36
+ export default list2tree
@@ -1,26 +1,26 @@
1
- export function msgPor(opt = {}) {
2
- let { title, message, customClass = '' } = opt
3
- const h = this.$createElement
4
- Object.assign(opt, {
5
- message: h('div', null, [
6
- h('div', { class: 'message-por__header' }, title),
7
- h('div', { class: 'message-por__content' }, message)
8
- ]),
9
- customClass: customClass + ' message-por'
10
- })
11
- return this.$message(opt)
12
- }
13
-
14
- export function msgboxPor(opt = {}) {
15
- let { type, center, customClass = '' } = opt
16
- opt = Object.assign({ showClose: false, showCancelButton: true, showConfirmButton: true }, opt)
17
- if (type && !center) {
18
- Object.assign(opt, {
19
- customClass: customClass + ' header-show-icon',
20
- center: true,
21
- showClose: false
22
- })
23
- }
24
-
25
- return this.$msgbox(opt)
26
- }
1
+ export function msgPor(opt = {}) {
2
+ let { title, message, customClass = '' } = opt
3
+ const h = this.$createElement
4
+ Object.assign(opt, {
5
+ message: h('div', null, [
6
+ h('div', { class: 'message-por__header' }, title),
7
+ h('div', { class: 'message-por__content' }, message)
8
+ ]),
9
+ customClass: customClass + ' message-por'
10
+ })
11
+ return this.$message(opt)
12
+ }
13
+
14
+ export function msgboxPor(opt = {}) {
15
+ let { type, center, customClass = '' } = opt
16
+ opt = Object.assign({ showClose: false, showCancelButton: true, showConfirmButton: true }, opt)
17
+ if (type && !center) {
18
+ Object.assign(opt, {
19
+ customClass: customClass + ' header-show-icon',
20
+ center: true,
21
+ showClose: false
22
+ })
23
+ }
24
+
25
+ return this.$msgbox(opt)
26
+ }
@@ -1,161 +1,161 @@
1
- // 打印类属性、方法定义
2
- /* eslint-disable */
3
- const Print = function (dom, options) {
4
- if (!(this instanceof Print)) return new Print(dom, options)
5
-
6
- this.options = this.extend(
7
- {
8
- noPrint: '.no-print'
9
- },
10
- options
11
- )
12
-
13
- if (typeof dom === 'string') {
14
- this.dom = document.querySelector(dom)
15
- } else {
16
- this.isDOM(dom)
17
- this.dom = this.isDOM(dom) ? dom : dom.$el
18
- }
19
- this.init()
20
- }
21
- Print.prototype = {
22
- init: function () {
23
- var content = this.getStyle() + this.getHtml()
24
- this.writeIframe(content)
25
- },
26
- extend: function (obj, obj2) {
27
- for (var k in obj2) {
28
- obj[k] = obj2[k]
29
- }
30
- return obj
31
- },
32
-
33
- getStyle: function () {
34
- var str = '',
35
- styles = document.querySelectorAll('style,link')
36
- for (var i = 0; i < styles.length; i++) {
37
- str += styles[i].outerHTML
38
- }
39
- str += '<style>' + (this.options.noPrint ? this.options.noPrint : '.no-print') + '{display:none;}</style>'
40
-
41
- return str
42
- },
43
-
44
- getHtml: function () {
45
- var inputs = document.querySelectorAll('input')
46
- var textareas = document.querySelectorAll('textarea')
47
- var selects = document.querySelectorAll('select')
48
-
49
- for (var k = 0; k < inputs.length; k++) {
50
- if (inputs[k].type === 'checkbox' || inputs[k].type === 'radio') {
51
- if (inputs[k].checked === true) {
52
- inputs[k].setAttribute('checked', 'checked')
53
- } else {
54
- inputs[k].removeAttribute('checked')
55
- }
56
- } else if (inputs[k].type === 'text') {
57
- inputs[k].setAttribute('value', inputs[k].value)
58
- } else {
59
- inputs[k].setAttribute('value', inputs[k].value)
60
- }
61
- }
62
-
63
- for (var k2 = 0; k2 < textareas.length; k2++) {
64
- if (textareas[k2].type === 'textarea') {
65
- textareas[k2].innerHTML = textareas[k2].value
66
- }
67
- }
68
-
69
- for (var k3 = 0; k3 < selects.length; k3++) {
70
- if (selects[k3].type === 'select-one') {
71
- var child = selects[k3].children
72
- for (var i in child) {
73
- if (child[i].tagName === 'OPTION') {
74
- if (child[i].selected === true) {
75
- child[i].setAttribute('selected', 'selected')
76
- } else {
77
- child[i].removeAttribute('selected')
78
- }
79
- }
80
- }
81
- }
82
- }
83
- // 包裹要打印的元素
84
- return this.wrapperRefDom(this.dom).outerHTML
85
- },
86
- // 向父级元素循环,包裹当前需要打印的元素
87
- // 防止根级别开头的 css 选择器不生效
88
- wrapperRefDom: function (refDom) {
89
- let prevDom = null
90
- let currDom = refDom
91
- // 判断当前元素是否在 body 中,不在文档中则直接返回该节点
92
- if (!this.isInBody(currDom)) return currDom
93
-
94
- while (currDom) {
95
- if (prevDom) {
96
- let element = currDom.cloneNode(false)
97
- element.appendChild(prevDom)
98
- prevDom = element
99
- } else {
100
- prevDom = currDom.cloneNode(true)
101
- }
102
-
103
- currDom = currDom.parentElement
104
- }
105
-
106
- return prevDom
107
- },
108
-
109
- writeIframe: function (content) {
110
- var w,
111
- doc,
112
- iframe = document.createElement('iframe'),
113
- f = document.body.appendChild(iframe)
114
- iframe.id = 'myIframe'
115
- //iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";
116
- iframe.setAttribute('style', 'position:absolute;width:0;height:0;top:-10px;left:-10px;')
117
- w = f.contentWindow || f.contentDocument
118
- doc = f.contentDocument || f.contentWindow.document
119
- doc.open()
120
- doc.write(content)
121
- doc.close()
122
- var _this = this
123
- iframe.onload = function () {
124
- _this.toPrint(w)
125
- setTimeout(function () {
126
- document.body.removeChild(iframe)
127
- }, 100)
128
- }
129
- },
130
-
131
- toPrint: function (frameWindow) {
132
- try {
133
- setTimeout(function () {
134
- frameWindow.focus()
135
- try {
136
- if (!frameWindow.document.execCommand('print', false, null)) {
137
- frameWindow.print()
138
- }
139
- } catch (e) {
140
- frameWindow.print()
141
- }
142
- frameWindow.close()
143
- }, 10)
144
- } catch (err) {
145
- console.log('err', err)
146
- }
147
- },
148
- // 检查一个元素是否是 body 元素的后代元素且非 body 元素本身
149
- isInBody: function (node) {
150
- return node === document.body ? false : document.body.contains(node)
151
- },
152
- isDOM:
153
- typeof HTMLElement === 'object'
154
- ? function (obj) {
155
- return obj instanceof HTMLElement
156
- }
157
- : function (obj) {
158
- return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string'
159
- }
160
- }
161
- export default Print
1
+ // 打印类属性、方法定义
2
+ /* eslint-disable */
3
+ const Print = function (dom, options) {
4
+ if (!(this instanceof Print)) return new Print(dom, options)
5
+
6
+ this.options = this.extend(
7
+ {
8
+ noPrint: '.no-print'
9
+ },
10
+ options
11
+ )
12
+
13
+ if (typeof dom === 'string') {
14
+ this.dom = document.querySelector(dom)
15
+ } else {
16
+ this.isDOM(dom)
17
+ this.dom = this.isDOM(dom) ? dom : dom.$el
18
+ }
19
+ this.init()
20
+ }
21
+ Print.prototype = {
22
+ init: function () {
23
+ var content = this.getStyle() + this.getHtml()
24
+ this.writeIframe(content)
25
+ },
26
+ extend: function (obj, obj2) {
27
+ for (var k in obj2) {
28
+ obj[k] = obj2[k]
29
+ }
30
+ return obj
31
+ },
32
+
33
+ getStyle: function () {
34
+ var str = '',
35
+ styles = document.querySelectorAll('style,link')
36
+ for (var i = 0; i < styles.length; i++) {
37
+ str += styles[i].outerHTML
38
+ }
39
+ str += '<style>' + (this.options.noPrint ? this.options.noPrint : '.no-print') + '{display:none;}</style>'
40
+
41
+ return str
42
+ },
43
+
44
+ getHtml: function () {
45
+ var inputs = document.querySelectorAll('input')
46
+ var textareas = document.querySelectorAll('textarea')
47
+ var selects = document.querySelectorAll('select')
48
+
49
+ for (var k = 0; k < inputs.length; k++) {
50
+ if (inputs[k].type === 'checkbox' || inputs[k].type === 'radio') {
51
+ if (inputs[k].checked === true) {
52
+ inputs[k].setAttribute('checked', 'checked')
53
+ } else {
54
+ inputs[k].removeAttribute('checked')
55
+ }
56
+ } else if (inputs[k].type === 'text') {
57
+ inputs[k].setAttribute('value', inputs[k].value)
58
+ } else {
59
+ inputs[k].setAttribute('value', inputs[k].value)
60
+ }
61
+ }
62
+
63
+ for (var k2 = 0; k2 < textareas.length; k2++) {
64
+ if (textareas[k2].type === 'textarea') {
65
+ textareas[k2].innerHTML = textareas[k2].value
66
+ }
67
+ }
68
+
69
+ for (var k3 = 0; k3 < selects.length; k3++) {
70
+ if (selects[k3].type === 'select-one') {
71
+ var child = selects[k3].children
72
+ for (var i in child) {
73
+ if (child[i].tagName === 'OPTION') {
74
+ if (child[i].selected === true) {
75
+ child[i].setAttribute('selected', 'selected')
76
+ } else {
77
+ child[i].removeAttribute('selected')
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ // 包裹要打印的元素
84
+ return this.wrapperRefDom(this.dom).outerHTML
85
+ },
86
+ // 向父级元素循环,包裹当前需要打印的元素
87
+ // 防止根级别开头的 css 选择器不生效
88
+ wrapperRefDom: function (refDom) {
89
+ let prevDom = null
90
+ let currDom = refDom
91
+ // 判断当前元素是否在 body 中,不在文档中则直接返回该节点
92
+ if (!this.isInBody(currDom)) return currDom
93
+
94
+ while (currDom) {
95
+ if (prevDom) {
96
+ let element = currDom.cloneNode(false)
97
+ element.appendChild(prevDom)
98
+ prevDom = element
99
+ } else {
100
+ prevDom = currDom.cloneNode(true)
101
+ }
102
+
103
+ currDom = currDom.parentElement
104
+ }
105
+
106
+ return prevDom
107
+ },
108
+
109
+ writeIframe: function (content) {
110
+ var w,
111
+ doc,
112
+ iframe = document.createElement('iframe'),
113
+ f = document.body.appendChild(iframe)
114
+ iframe.id = 'myIframe'
115
+ //iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";
116
+ iframe.setAttribute('style', 'position:absolute;width:0;height:0;top:-10px;left:-10px;')
117
+ w = f.contentWindow || f.contentDocument
118
+ doc = f.contentDocument || f.contentWindow.document
119
+ doc.open()
120
+ doc.write(content)
121
+ doc.close()
122
+ var _this = this
123
+ iframe.onload = function () {
124
+ _this.toPrint(w)
125
+ setTimeout(function () {
126
+ document.body.removeChild(iframe)
127
+ }, 100)
128
+ }
129
+ },
130
+
131
+ toPrint: function (frameWindow) {
132
+ try {
133
+ setTimeout(function () {
134
+ frameWindow.focus()
135
+ try {
136
+ if (!frameWindow.document.execCommand('print', false, null)) {
137
+ frameWindow.print()
138
+ }
139
+ } catch (e) {
140
+ frameWindow.print()
141
+ }
142
+ frameWindow.close()
143
+ }, 10)
144
+ } catch (err) {
145
+ console.log('err', err)
146
+ }
147
+ },
148
+ // 检查一个元素是否是 body 元素的后代元素且非 body 元素本身
149
+ isInBody: function (node) {
150
+ return node === document.body ? false : document.body.contains(node)
151
+ },
152
+ isDOM:
153
+ typeof HTMLElement === 'object'
154
+ ? function (obj) {
155
+ return obj instanceof HTMLElement
156
+ }
157
+ : function (obj) {
158
+ return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string'
159
+ }
160
+ }
161
+ export default Print