n20-common-lib 1.2.41 → 1.2.42

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 (187) 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/Anchor/AnchorItem.vue +29 -29
  52. package/src/components/Anchor/index.vue +185 -185
  53. package/src/components/ApprovalButtons/index.vue +233 -233
  54. package/src/components/ApprovalCard/index.vue +128 -128
  55. package/src/components/ApprovalRecord/approvalImg.vue +44 -44
  56. package/src/components/ApprovalRecord/flowDialog.vue +45 -45
  57. package/src/components/ApprovalRecord/index.vue +59 -59
  58. package/src/components/Button/button-group.vue +150 -150
  59. package/src/components/Button/icon-group-button.vue +61 -61
  60. package/src/components/Button/index.vue +56 -56
  61. package/src/components/CascaderArea/index.vue +103 -103
  62. package/src/components/ContentLoading/index.vue +41 -41
  63. package/src/components/ContentNull/index.vue +19 -19
  64. package/src/components/DatePicker/index.vue +27 -27
  65. package/src/components/DatePicker/por.vue +169 -169
  66. package/src/components/Dialog/index.vue +26 -26
  67. package/src/components/Dialog/indexO.vue +116 -116
  68. package/src/components/DragList/index.vue +75 -75
  69. package/src/components/Empty/img/abnormal.svg +108 -108
  70. package/src/components/Empty/img/dispose.svg +71 -71
  71. package/src/components/Empty/img/empty.svg +57 -57
  72. package/src/components/Empty/img/general.svg +58 -58
  73. package/src/components/Empty/img/lock.svg +57 -57
  74. package/src/components/Empty/img/network.svg +59 -59
  75. package/src/components/Empty/img/relevant.svg +68 -68
  76. package/src/components/Empty/img/search.svg +72 -72
  77. package/src/components/Empty/index.vue +92 -92
  78. package/src/components/Expandable/index.vue +49 -49
  79. package/src/components/Expandable/main.vue +52 -52
  80. package/src/components/FileExportAsync/index.vue +178 -178
  81. package/src/components/FileUploadTable/index.vue +484 -484
  82. package/src/components/Filters/index.vue +371 -371
  83. package/src/components/Filters/indexO.vue +104 -104
  84. package/src/components/FlowStep/index.vue +68 -68
  85. package/src/components/FooterBox/index.vue +21 -21
  86. package/src/components/GeneralCard/index.vue +15 -15
  87. package/src/components/InputNumber/index.vue +169 -169
  88. package/src/components/InputNumber/numberRange.vue +47 -47
  89. package/src/components/InputSearch/index.vue +75 -75
  90. package/src/components/Layout/AsideNav/index.vue +120 -119
  91. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  92. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  93. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  94. package/src/components/Layout/HeaderWrap/index.vue +371 -371
  95. package/src/components/Layout/HeaderWrap/noticePop.vue +316 -316
  96. package/src/components/Layout/SubContent/index.vue +127 -127
  97. package/src/components/Layout/TabsNav/index.vue +170 -170
  98. package/src/components/Layout/index.vue +518 -518
  99. package/src/components/Layout/utils.js +12 -12
  100. package/src/components/LoginTemporary/form.vue +570 -570
  101. package/src/components/LoginTemporary/index.vue +139 -139
  102. package/src/components/LoginTemporary/retrievePw.vue +372 -372
  103. package/src/components/MicroApp/index.js +67 -67
  104. package/src/components/MicroFrame/index.vue +95 -95
  105. package/src/components/MoreTab/index.vue +232 -232
  106. package/src/components/NavMenu/index.vue +60 -60
  107. package/src/components/PageLayout/page.vue +15 -15
  108. package/src/components/Pagination/index.vue +165 -165
  109. package/src/components/SecondaryTab/index.vue +58 -58
  110. package/src/components/SelectLazy/index.vue +75 -75
  111. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  112. package/src/components/SelectTree/index.vue +205 -205
  113. package/src/components/ShowColumn/index.vue +213 -213
  114. package/src/components/Sifting/index.vue +99 -99
  115. package/src/components/Statis/index.vue +97 -97
  116. package/src/components/Statis/statisItem.vue +54 -54
  117. package/src/components/Statis/statisPopover.vue +55 -55
  118. package/src/components/Step/index.vue +38 -38
  119. package/src/components/Suspend/index.vue +72 -72
  120. package/src/components/Table/index.vue +209 -209
  121. package/src/components/Table/indexO.vue +149 -149
  122. package/src/components/Task/index.vue +26 -26
  123. package/src/components/TertiaryTab/index.vue +63 -63
  124. package/src/components/TimePicker/index.vue +28 -28
  125. package/src/components/Upload/index.vue +242 -242
  126. package/src/components/WornPagination/index.vue +73 -73
  127. package/src/directives/VClickOutside/index.js +19 -19
  128. package/src/directives/VHas/index.js +58 -58
  129. package/src/directives/VMove/index.js +42 -42
  130. package/src/directives/VTitle/index.js +69 -69
  131. package/src/directives/VTitle/tooltip.vue +21 -21
  132. package/src/index.js +232 -232
  133. package/src/plugins/CompatibleOld/index.js +57 -57
  134. package/src/plugins/Print/index.js +4 -4
  135. package/src/plugins/Print/print-js/.babelrc +12 -12
  136. package/src/plugins/Print/print-js/LICENSE +21 -21
  137. package/src/plugins/Print/print-js/README.md +98 -98
  138. package/src/plugins/Print/print-js/dist/print.css +96 -96
  139. package/src/plugins/Print/print-js/dist/print.js +990 -990
  140. package/src/plugins/Print/print-js/package.json +60 -60
  141. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  142. package/src/plugins/Print/print-js/src/index.js +10 -10
  143. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  144. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  145. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  146. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  147. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  148. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  149. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  150. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  151. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  152. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  153. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  154. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  155. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  156. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  157. package/src/plugins/Print/print.js +2 -2
  158. package/src/plugins/Print/print.scss +1 -1
  159. package/src/plugins/SetMenuTree/index.vue +41 -41
  160. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  161. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  162. package/src/plugins/SetMenuTree/utils.js +74 -74
  163. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  164. package/src/plugins/Sign/index.js +65 -65
  165. package/src/plugins/Sign/sign.js +1 -1
  166. package/src/plugins/setTabsForSub.js +2 -2
  167. package/src/utils/auth.js +53 -53
  168. package/src/utils/axios.js +203 -203
  169. package/src/utils/downloadBlob.js +19 -19
  170. package/src/utils/forEachs.js +16 -16
  171. package/src/utils/getScrollContainer.js +43 -43
  172. package/src/utils/i18n/cn2hk.json +1270 -1270
  173. package/src/utils/i18n/index.js +50 -50
  174. package/src/utils/list2tree.js +36 -36
  175. package/src/utils/msgboxPor.js +26 -26
  176. package/src/utils/print.js +161 -161
  177. package/src/utils/relaNo.js +72 -72
  178. package/src/utils/repairElementUI.js +95 -66
  179. package/src/utils/urlToGo.js +82 -82
  180. package/style/css/normalize.scss +726 -726
  181. package/style/index.css +3 -3
  182. package/style/pageDemo/demo-1.vue +131 -131
  183. package/style/pageDemo/demo-2.vue +35 -35
  184. package/style/pageDemo/demo-3.vue +22 -22
  185. package/style/pageDemo/seeCode.js +20 -20
  186. package/style/server-config.jsonc +606 -607
  187. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +0 -185
@@ -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