n20-common-lib 1.2.8 → 1.2.9

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 (189) hide show
  1. package/README.md +2 -2
  2. package/package.json +87 -87
  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 +454 -454
  18. package/src/assets/css/cl-general-card.scss +11 -11
  19. package/src/assets/css/cl-layout-aside.scss +88 -88
  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 +65 -65
  29. package/src/assets/css/cl-secondary-tab.scss +39 -39
  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 +9 -9
  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 +232 -232
  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 +81 -81
  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 +68 -68
  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 +174 -174
  81. package/src/components/FileUploadTable/index.vue +484 -484
  82. package/src/components/Filters/index.vue +369 -369
  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 +153 -153
  88. package/src/components/InputNumber/numberRange.vue +47 -47
  89. package/src/components/InputSearch/index.vue +75 -75
  90. package/src/components/Layout/.DS_Store +0 -0
  91. package/src/components/Layout/AsideNav/index.vue +119 -119
  92. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  93. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  94. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  95. package/src/components/Layout/HeaderWrap/index.vue +348 -348
  96. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -300
  97. package/src/components/Layout/SubContent/index.vue +131 -131
  98. package/src/components/Layout/TabsNav/index.vue +170 -170
  99. package/src/components/Layout/index.vue +529 -529
  100. package/src/components/Layout/utils.js +12 -12
  101. package/src/components/LoginTemporary/form.vue +537 -537
  102. package/src/components/LoginTemporary/index.vue +122 -122
  103. package/src/components/LoginTemporary/qrcode.vue +90 -90
  104. package/src/components/LoginTemporary/retrievePw.vue +28 -28
  105. package/src/components/LoginTemporary/utils.js +73 -73
  106. package/src/components/MicroApp/index.js +67 -67
  107. package/src/components/MicroFrame/index.vue +95 -95
  108. package/src/components/MoreTab/index.vue +232 -232
  109. package/src/components/NavMenu/index.vue +60 -60
  110. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  111. package/src/components/PageLayout/page.vue +15 -15
  112. package/src/components/Pagination/index.vue +96 -96
  113. package/src/components/SecondaryTab/index.vue +58 -58
  114. package/src/components/SelectLazy/index.vue +75 -75
  115. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  116. package/src/components/SelectTree/index.vue +205 -205
  117. package/src/components/ShowColumn/index.vue +204 -204
  118. package/src/components/Sifting/index.vue +99 -99
  119. package/src/components/Statis/index.vue +97 -97
  120. package/src/components/Statis/statisItem.vue +54 -54
  121. package/src/components/Statis/statisPopover.vue +55 -55
  122. package/src/components/Step/index.vue +38 -38
  123. package/src/components/Suspend/index.vue +72 -72
  124. package/src/components/Table/index.vue +179 -179
  125. package/src/components/Table/indexO.vue +149 -149
  126. package/src/components/Task/index.vue +26 -26
  127. package/src/components/TertiaryTab/index.vue +53 -53
  128. package/src/components/TimePicker/index.vue +28 -28
  129. package/src/components/Upload/index.vue +242 -242
  130. package/src/components/WornPagination/index.vue +73 -73
  131. package/src/directives/VClickOutside/index.js +19 -19
  132. package/src/directives/VHas/index.js +32 -32
  133. package/src/directives/VMove/index.js +42 -42
  134. package/src/directives/VTitle/index.js +64 -64
  135. package/src/directives/VTitle/tooltip.vue +21 -21
  136. package/src/index.js +225 -225
  137. package/src/plugins/CompatibleOld/index.js +57 -57
  138. package/src/plugins/Print/index.js +4 -4
  139. package/src/plugins/Print/print-js/.babelrc +12 -12
  140. package/src/plugins/Print/print-js/LICENSE +21 -21
  141. package/src/plugins/Print/print-js/README.md +98 -98
  142. package/src/plugins/Print/print-js/dist/print.css +96 -96
  143. package/src/plugins/Print/print-js/dist/print.js +990 -990
  144. package/src/plugins/Print/print-js/package.json +60 -60
  145. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  146. package/src/plugins/Print/print-js/src/index.js +10 -10
  147. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  148. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  149. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  150. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  151. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  152. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  153. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  154. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  155. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  156. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  157. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  158. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  159. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  160. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  161. package/src/plugins/Print/print.js +2 -2
  162. package/src/plugins/Print/print.scss +1 -1
  163. package/src/plugins/SetMenuTree/index.vue +41 -41
  164. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  165. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  166. package/src/plugins/SetMenuTree/utils.js +74 -74
  167. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  168. package/src/plugins/Sign/index.js +65 -65
  169. package/src/plugins/Sign/sign.js +1 -1
  170. package/src/plugins/setTabsForSub.js +2 -2
  171. package/src/utils/auth.js +53 -53
  172. package/src/utils/axios.js +203 -203
  173. package/src/utils/downloadBlob.js +19 -19
  174. package/src/utils/forEachs.js +16 -16
  175. package/src/utils/getScrollContainer.js +43 -43
  176. package/src/utils/i18n/cn2hk.json +1270 -1270
  177. package/src/utils/i18n/index.js +54 -54
  178. package/src/utils/list2tree.js +36 -36
  179. package/src/utils/msgboxPor.js +26 -26
  180. package/src/utils/print.js +161 -161
  181. package/src/utils/relaNo.js +69 -69
  182. package/src/utils/repairElementUI.js +66 -66
  183. package/src/utils/urlToGo.js +82 -82
  184. package/style/css/normalize.scss +723 -726
  185. package/style/pageDemo/demo-1.vue +130 -131
  186. package/style/pageDemo/demo-2.vue +35 -35
  187. package/style/pageDemo/demo-3.vue +22 -22
  188. package/style/pageDemo/seeCode.js +20 -20
  189. package/style/server-config.jsonc +663 -596
@@ -1,54 +1,54 @@
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
- import langCN from 'element-ui/lib/locale/lang/zh-CN'
5
- langCN?.el?.pagination?.goto && (langCN.el.pagination.goto = '到第')
6
-
7
- import zhHk from './cn2hk.json' // 简体繁体映射
8
- // 语言枚举
9
- // const langEm = { 中文: 'zh', 中文简体: 'zh-cn', 中文繁体: 'zh-hk', 英文: 'en', 德文: 'de', 法文: 'fr' }
10
-
11
- let pageLang = window.localStorage.getItem('pageLang') // 当前页面的语言
12
- let $i18n_map_root = undefined // 全局的国际化
13
-
14
- export function $l(zh, map = {}) {
15
- if (!pageLang || pageLang === 'zh-cn') {
16
- return zh
17
- } else if (pageLang === 'zh-hk') {
18
- return cn2hk(zh)
19
- } else {
20
- let key = pageLang
21
- let valMap = map[zh] || $i18n_map_root[zh] || {}
22
- let val = valMap[key] || zh
23
-
24
- return val
25
- }
26
- }
27
- function cn2hk(zh = '') {
28
- let _zh = ''
29
- for (let i = 0; i < zh.length; i++) {
30
- let v = zh[i]
31
- let v_hk = zhHk[v]
32
- v_hk ? (_zh += v_hk) : (_zh += v)
33
- }
34
- return _zh
35
- }
36
-
37
- const directive = {}
38
- directive.install = (Vue, map = {}) => {
39
- if (pageLang === 'en') {
40
- locale.use(langEn)
41
- } else if (pageLang === 'zh-hk') {
42
- locale.use(langTw)
43
- } else {
44
- locale.use(langCN)
45
- }
46
-
47
- $i18n_map_root = map
48
-
49
- Vue.prototype.$i18n_map_root = $i18n_map_root
50
- Vue.prototype.$l = $l
51
- Vue.filter('$l', $l)
52
- }
53
-
54
- 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
+ import langCN from 'element-ui/lib/locale/lang/zh-CN'
5
+ langCN?.el?.pagination?.goto && (langCN.el.pagination.goto = '到第')
6
+
7
+ import zhHk from './cn2hk.json' // 简体繁体映射
8
+ // 语言枚举
9
+ // const langEm = { 中文: 'zh', 中文简体: 'zh-cn', 中文繁体: 'zh-hk', 英文: 'en', 德文: 'de', 法文: 'fr' }
10
+
11
+ let pageLang = window.localStorage.getItem('pageLang') // 当前页面的语言
12
+ let $i18n_map_root = undefined // 全局的国际化
13
+
14
+ export function $l(zh, map = {}) {
15
+ if (!pageLang || pageLang === 'zh-cn') {
16
+ return zh
17
+ } else if (pageLang === 'zh-hk') {
18
+ return cn2hk(zh)
19
+ } else {
20
+ let key = pageLang
21
+ let valMap = map[zh] || $i18n_map_root[zh] || {}
22
+ let val = valMap[key] || zh
23
+
24
+ return val
25
+ }
26
+ }
27
+ function cn2hk(zh = '') {
28
+ let _zh = ''
29
+ for (let i = 0; i < zh.length; i++) {
30
+ let v = zh[i]
31
+ let v_hk = zhHk[v]
32
+ v_hk ? (_zh += v_hk) : (_zh += v)
33
+ }
34
+ return _zh
35
+ }
36
+
37
+ const directive = {}
38
+ directive.install = (Vue, map = {}) => {
39
+ if (pageLang === 'en') {
40
+ locale.use(langEn)
41
+ } else if (pageLang === 'zh-hk') {
42
+ locale.use(langTw)
43
+ } else {
44
+ locale.use(langCN)
45
+ }
46
+
47
+ $i18n_map_root = map
48
+
49
+ Vue.prototype.$i18n_map_root = $i18n_map_root
50
+ Vue.prototype.$l = $l
51
+ Vue.filter('$l', $l)
52
+ }
53
+
54
+ 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