n20-common-lib 1.2.33 → 1.2.36

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 +39 -39
  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/.DS_Store +0 -0
  70. package/src/components/Empty/img/.DS_Store +0 -0
  71. package/src/components/Empty/img/abnormal.svg +108 -108
  72. package/src/components/Empty/img/dispose.svg +71 -71
  73. package/src/components/Empty/img/empty.svg +57 -57
  74. package/src/components/Empty/img/general.svg +58 -58
  75. package/src/components/Empty/img/lock.svg +57 -57
  76. package/src/components/Empty/img/network.svg +59 -59
  77. package/src/components/Empty/img/relevant.svg +68 -68
  78. package/src/components/Empty/img/search.svg +72 -72
  79. package/src/components/Empty/index.vue +92 -92
  80. package/src/components/Expandable/index.vue +49 -49
  81. package/src/components/Expandable/main.vue +52 -52
  82. package/src/components/FileExportAsync/index.vue +178 -178
  83. package/src/components/FileUploadTable/index.vue +484 -484
  84. package/src/components/Filters/index.vue +371 -371
  85. package/src/components/Filters/indexO.vue +104 -104
  86. package/src/components/FlowStep/index.vue +68 -68
  87. package/src/components/FooterBox/index.vue +21 -21
  88. package/src/components/GeneralCard/index.vue +15 -15
  89. package/src/components/InputNumber/index.vue +169 -169
  90. package/src/components/InputNumber/numberRange.vue +47 -47
  91. package/src/components/InputSearch/index.vue +75 -75
  92. package/src/components/Layout/.DS_Store +0 -0
  93. package/src/components/Layout/AsideNav/index.vue +119 -119
  94. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  95. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  96. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  97. package/src/components/Layout/HeaderWrap/index.vue +371 -371
  98. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -300
  99. package/src/components/Layout/SubContent/index.vue +127 -131
  100. package/src/components/Layout/TabsNav/index.vue +170 -170
  101. package/src/components/Layout/index.vue +518 -522
  102. package/src/components/Layout/utils.js +12 -12
  103. package/src/components/LoginTemporary/form.vue +570 -570
  104. package/src/components/LoginTemporary/index.vue +139 -139
  105. package/src/components/LoginTemporary/qrcode.vue +90 -90
  106. package/src/components/LoginTemporary/retrievePw.vue +372 -372
  107. package/src/components/LoginTemporary/utils.js +73 -73
  108. package/src/components/MicroApp/index.js +67 -67
  109. package/src/components/MicroFrame/index.vue +95 -95
  110. package/src/components/MoreTab/index.vue +232 -232
  111. package/src/components/NavMenu/index.vue +60 -60
  112. package/src/components/NstcG6Components/.DS_Store +0 -0
  113. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  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 +229 -229
  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 +66 -66
  186. package/src/utils/urlToGo.js +82 -82
  187. package/style/css/normalize.scss +726 -726
  188. package/style/index.css +3 -3
  189. package/style/pageDemo/demo-1.vue +131 -131
  190. package/style/pageDemo/demo-2.vue +35 -35
  191. package/style/pageDemo/demo-3.vue +22 -22
  192. package/style/pageDemo/seeCode.js +20 -20
  193. package/style/server-config.jsonc +717 -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