simple-frame-unit 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/.env.dev +14 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +24 -0
  4. package/dist/ed-frame-vue.common.1.js +11046 -0
  5. package/dist/ed-frame-vue.common.1.js.map +1 -0
  6. package/dist/ed-frame-vue.common.2.js +1715 -0
  7. package/dist/ed-frame-vue.common.2.js.map +1 -0
  8. package/dist/ed-frame-vue.common.js +53427 -0
  9. package/dist/ed-frame-vue.common.js.map +1 -0
  10. package/dist/ed-frame-vue.umd.1.js +11046 -0
  11. package/dist/ed-frame-vue.umd.1.js.map +1 -0
  12. package/dist/ed-frame-vue.umd.2.js +1715 -0
  13. package/dist/ed-frame-vue.umd.2.js.map +1 -0
  14. package/dist/ed-frame-vue.umd.js +53437 -0
  15. package/dist/ed-frame-vue.umd.js.map +1 -0
  16. package/dist/ed-frame-vue.umd.min.1.js +17 -0
  17. package/dist/ed-frame-vue.umd.min.1.js.map +1 -0
  18. package/dist/ed-frame-vue.umd.min.2.js +4 -0
  19. package/dist/ed-frame-vue.umd.min.2.js.map +1 -0
  20. package/dist/ed-frame-vue.umd.min.js +470 -0
  21. package/dist/ed-frame-vue.umd.min.js.map +1 -0
  22. package/import.easydata.js +46 -0
  23. package/lib/CHANGELOG.md +18 -0
  24. package/lib/README.md +27 -0
  25. package/lib/api/ds/index.js +124 -0
  26. package/lib/api/easyData.js +90 -0
  27. package/lib/api/easyform/easyForm.js +32 -0
  28. package/lib/api/index.js +61 -0
  29. package/lib/api/interface/index.js +32 -0
  30. package/lib/api/system.js +20 -0
  31. package/lib/index.js +80 -0
  32. package/lib/packages/BasicTemplate/EasyDataTemplate.vue +189 -0
  33. package/lib/packages/BasicTemplate/Props.js +64 -0
  34. package/lib/packages/BasicTemplate/components/TemplateComp.vue +263 -0
  35. package/lib/packages/BasicTemplate/components/TemplateViews.vue +292 -0
  36. package/lib/packages/BasicTemplate/hooks/business.js +74 -0
  37. package/lib/packages/BasicTemplate/hooks/getFormData.js +89 -0
  38. package/lib/packages/BasicTemplate/hooks/queryFormData.js +194 -0
  39. package/lib/packages/BasicTemplate/hooks/submitForm.js +53 -0
  40. package/lib/packages/BasicTemplate/hooks/useEmits.js +15 -0
  41. package/lib/packages/BasicTemplate/hooks/validate.js +42 -0
  42. package/lib/packages/EasyDataForm/EasyDataForm.vue +597 -0
  43. package/lib/packages/EasyDataForm/Props.js +22 -0
  44. package/lib/packages/EasyDataForm/components/FormItem.vue +228 -0
  45. package/lib/packages/EasyDataForm/hooks/useChosePopup.js +85 -0
  46. package/lib/packages/EasyDataForm/hooks/useEmits.js +19 -0
  47. package/lib/packages/EasyDataForm/hooks/useForm.js +169 -0
  48. package/lib/packages/EasyDataForm/hooks/useUpload.js +168 -0
  49. package/lib/packages/EasyDataList/EasyDataList.vue +348 -0
  50. package/lib/packages/EasyDataList/Props.js +116 -0
  51. package/lib/packages/EasyDataList/components/BasicModal.vue +150 -0
  52. package/lib/packages/EasyDataList/components/FormAction.vue +63 -0
  53. package/lib/packages/EasyDataList/hooks/useEmits.js +30 -0
  54. package/lib/packages/EasyDataList/hooks/useForm.js +62 -0
  55. package/lib/packages/EasyDataList/hooks/useTable.js +314 -0
  56. package/lib/packages/EasyDataTable/EasyDataTable.vue +233 -0
  57. package/lib/packages/EasyDataView/EasyDataView.vue +105 -0
  58. package/lib/packages/EdRichPreview/index.js +32 -0
  59. package/lib/packages/EdRichText/index.vue +167 -0
  60. package/lib/packages/EdRichText/replaceUrl.js +49 -0
  61. package/lib/packages/components/FileView.vue +97 -0
  62. package/lib/packages/index.js +11 -0
  63. package/lib/packages/mixins/EasyDataMixins.js +133 -0
  64. package/lib/packages/mixins/useTable.jsx +130 -0
  65. package/lib/pages/DataSource/index.js +8 -0
  66. package/lib/pages/DataSource/src/components/ControlViews/BaseProps.js +103 -0
  67. package/lib/pages/DataSource/src/components/ControlViews/control.js +1089 -0
  68. package/lib/pages/DataSource/src/components/ControlViews/index.vue +301 -0
  69. package/lib/pages/DataSource/src/components/TableOperationModal.vue +225 -0
  70. package/lib/pages/DataSource/src/components/TablePropsModal.vue +367 -0
  71. package/lib/pages/DataSource/src/components/ViewPropsModal.vue +737 -0
  72. package/lib/pages/DataSource/src/components/modal/ChooseDict.vue +119 -0
  73. package/lib/pages/DataSource/src/hooks/useTable.js +138 -0
  74. package/lib/pages/DataSource/src/index.vue +431 -0
  75. package/lib/pages/Interface/index.js +8 -0
  76. package/lib/pages/Interface/src/components/InterfaceCall.vue +73 -0
  77. package/lib/pages/Interface/src/components/InterfaceDepend.vue +299 -0
  78. package/lib/pages/Interface/src/components/InterfaceFee.vue +131 -0
  79. package/lib/pages/Interface/src/components/InterfaceMessage.vue +878 -0
  80. package/lib/pages/Interface/src/components/InterfaceMock.vue +203 -0
  81. package/lib/pages/Interface/src/components/InterfaceParam.vue +308 -0
  82. package/lib/pages/Interface/src/components/InterfaceRepeat.vue +281 -0
  83. package/lib/pages/Interface/src/components/InterfaceVariable.vue +31 -0
  84. package/lib/pages/Interface/src/index.vue +216 -0
  85. package/lib/pages/Template/index.js +8 -0
  86. package/lib/pages/Template/src/components/DefineModal.vue +524 -0
  87. package/lib/pages/Template/src/components/TemplatePreview.vue +109 -0
  88. package/lib/pages/Template/src/components/model/AddDialog.vue +60 -0
  89. package/lib/pages/Template/src/components/model/TemplatePreview2.vue +101 -0
  90. package/lib/pages/Template/src/hooks/index.js +3 -0
  91. package/lib/pages/Template/src/hooks/useEmits.js +64 -0
  92. package/lib/pages/Template/src/index.vue +124 -0
  93. package/lib/popup/index.js +8 -0
  94. package/lib/popup/src/DataSourceChoose.vue +44 -0
  95. package/lib/popup/src/DataSourceViewIdChoose.vue +67 -0
  96. package/lib/popup/src/DictChoose.vue +104 -0
  97. package/lib/popup/src/InterfaceChoose.vue +46 -0
  98. package/lib/popup/src/OrgChoose.vue +121 -0
  99. package/lib/popup/src/RoleChoose.vue +101 -0
  100. package/lib/popup/src/TemplateChoose.vue +43 -0
  101. package/lib/popup/src/UserChoose.vue +161 -0
  102. package/lib/popup//347/273/204/344/273/266/345/274/200/345/217/221/350/247/204/350/214/203.md +25 -0
  103. package/lib/style/custom.scss +126 -0
  104. package/lib/style/deep.scss +109 -0
  105. package/lib/style/index.scss +4 -0
  106. package/lib/utils/MapLoader.js +48 -0
  107. package/lib/utils/dateUtils.js +58 -0
  108. package/lib/utils/index.js +8 -0
  109. package/lib/utils/setting.js +25 -0
  110. package/lib/utils/sortable/index.js +3784 -0
  111. package/lib/utils/useBusiness.js +212 -0
  112. package/lib/utils/utils.js +588 -0
  113. package/package.json +77 -0
  114. package/src/App.vue +12 -0
  115. package/src/assets/Vue.png +0 -0
  116. package/src/assets/avatar.png +0 -0
  117. package/src/assets/images/bg.png +0 -0
  118. package/src/assets/images/logo-bills.png +0 -0
  119. package/src/assets/images/pic.png +0 -0
  120. package/src/assets/images/weplus-logo.png +0 -0
  121. package/src/assets/marker.png +0 -0
  122. package/src/assets/styles/common.scss +359 -0
  123. package/src/assets/styles/ele-docs.css +3278 -0
  124. package/src/assets/styles/fonts/icomoon.eot +0 -0
  125. package/src/assets/styles/fonts/icomoon.svg +14 -0
  126. package/src/assets/styles/fonts/icomoon.ttf +0 -0
  127. package/src/assets/styles/fonts/icomoon.woff +0 -0
  128. package/src/assets/styles/fonts/style.css +39 -0
  129. package/src/assets/styles/higtlightEle.css +84 -0
  130. package/src/assets/svg/code.svg +7 -0
  131. package/src/assets/svg/password.svg +1 -0
  132. package/src/components/Popups/DiyCompDictChoose.vue +112 -0
  133. package/src/components/Popups/index.js +28 -0
  134. package/src/components/ed-base-vue/global/variable.js +8 -0
  135. package/src/components/ed-base-vue/index.js +81 -0
  136. package/src/components/ed-base-vue/package/EdCard/index.js +7 -0
  137. package/src/components/ed-base-vue/package/EdCard/src/index.vue +87 -0
  138. package/src/components/ed-base-vue/package/EdCodeEditor/index.js +8 -0
  139. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/AceConfig.js +71 -0
  140. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Editor.vue +137 -0
  141. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Toolbar.vue +68 -0
  142. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/index.vue +119 -0
  143. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/webpack-resolver.js +51 -0
  144. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/Toolbar.vue +57 -0
  145. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/config.js +64 -0
  146. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/index.vue +309 -0
  147. package/src/components/ed-base-vue/package/EdCodeEditor/src/EdCodeEditor.vue +238 -0
  148. package/src/components/ed-base-vue/package/EdDate/index.js +8 -0
  149. package/src/components/ed-base-vue/package/EdDate/src/index.js +50 -0
  150. package/src/components/ed-base-vue/package/EdDescriptions/index.js +8 -0
  151. package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptions.vue +46 -0
  152. package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptionsItem.js +20 -0
  153. package/src/components/ed-base-vue/package/EdDescriptions/src/Props.js +20 -0
  154. package/src/components/ed-base-vue/package/EdDialog/index.js +8 -0
  155. package/src/components/ed-base-vue/package/EdDialog/src/EdDialog.vue +138 -0
  156. package/src/components/ed-base-vue/package/EdDialog/src/Props.js +91 -0
  157. package/src/components/ed-base-vue/package/EdDialog/src/components/DialogFooter.vue +42 -0
  158. package/src/components/ed-base-vue/package/EdDialog/src/components/DialogWrapper.vue +53 -0
  159. package/src/components/ed-base-vue/package/EdDrawer/index.js +8 -0
  160. package/src/components/ed-base-vue/package/EdDrawer/src/DrawerFooter.vue +41 -0
  161. package/src/components/ed-base-vue/package/EdDrawer/src/EdDrawer.vue +150 -0
  162. package/src/components/ed-base-vue/package/EdDrawer/src/props.js +71 -0
  163. package/src/components/ed-base-vue/package/EdFlow/index.js +8 -0
  164. package/src/components/ed-base-vue/package/EdFlow/src/EdFlowItem.vue +733 -0
  165. package/src/components/ed-base-vue/package/EdFlow/src/index.vue +148 -0
  166. package/src/components/ed-base-vue/package/EdForm/index.js +8 -0
  167. package/src/components/ed-base-vue/package/EdForm/src/EdForm.vue +172 -0
  168. package/src/components/ed-base-vue/package/EdForm/src/Props.js +33 -0
  169. package/src/components/ed-base-vue/package/EdForm/src/components/EdFormItem.vue +34 -0
  170. package/src/components/ed-base-vue/package/EdIcons/index.js +8 -0
  171. package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons.js +406 -0
  172. package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons1.js +830 -0
  173. package/src/components/ed-base-vue/package/EdIcons/src/index.vue +13 -0
  174. package/src/components/ed-base-vue/package/EdImage/index.js +8 -0
  175. package/src/components/ed-base-vue/package/EdImage/src/index.vue +28 -0
  176. package/src/components/ed-base-vue/package/EdInputArray/index.js +8 -0
  177. package/src/components/ed-base-vue/package/EdInputArray/src/Props.js +26 -0
  178. package/src/components/ed-base-vue/package/EdInputArray/src/index.vue +97 -0
  179. package/src/components/ed-base-vue/package/EdInputColor/index.js +8 -0
  180. package/src/components/ed-base-vue/package/EdInputColor/src/InputColor.vue +81 -0
  181. package/src/components/ed-base-vue/package/EdInputMap/index.js +9 -0
  182. package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMap.vue +246 -0
  183. package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMapProps.js +6 -0
  184. package/src/components/ed-base-vue/package/EdInputPop/index.js +13 -0
  185. package/src/components/ed-base-vue/package/EdInputPop/src/EdInputPop.vue +144 -0
  186. package/src/components/ed-base-vue/package/EdInputPop/src/Props.js +48 -0
  187. package/src/components/ed-base-vue/package/EdInputTable/index.js +8 -0
  188. package/src/components/ed-base-vue/package/EdInputTable/src/EdInputTable.vue +368 -0
  189. package/src/components/ed-base-vue/package/EdInputTable/src/Fetch.js +40 -0
  190. package/src/components/ed-base-vue/package/EdJsonEditor/index.js +13 -0
  191. package/src/components/ed-base-vue/package/EdJsonEditor/src/EdJsonEditor.vue +198 -0
  192. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/img/jsoneditor-icons.svg +749 -0
  193. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/jsoneditor.css +2031 -0
  194. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/plus.svg +1 -0
  195. package/src/components/ed-base-vue/package/EdJsonEditor/src/hooks.js +63 -0
  196. package/src/components/ed-base-vue/package/EdJsonViewer/index.js +8 -0
  197. package/src/components/ed-base-vue/package/EdJsonViewer/src/EdJsonViewer.vue +44 -0
  198. package/src/components/ed-base-vue/package/EdLable/index.js +8 -0
  199. package/src/components/ed-base-vue/package/EdLable/src/index.vue +34 -0
  200. package/src/components/ed-base-vue/package/EdLink/index.js +8 -0
  201. package/src/components/ed-base-vue/package/EdLink/src/index.vue +43 -0
  202. package/src/components/ed-base-vue/package/EdMarkEditor/index.js +15 -0
  203. package/src/components/ed-base-vue/package/EdMarkEditor/src/EdMarkEditor.vue +368 -0
  204. package/src/components/ed-base-vue/package/EdMarkEditor/src/extra-function.js +538 -0
  205. package/src/components/ed-base-vue/package/EdMarkEditor/src/highlight.js +95 -0
  206. package/src/components/ed-base-vue/package/EdTable/index.js +8 -0
  207. package/src/components/ed-base-vue/package/EdTable/src/EdTable.vue +240 -0
  208. package/src/components/ed-base-vue/package/EdTable/src/Props.js +97 -0
  209. package/src/components/ed-base-vue/package/EdTable/src/components/TableColumnItem.js +24 -0
  210. package/src/components/ed-base-vue/package/EdTable/src/components/TablePagination.vue +73 -0
  211. package/src/components/ed-base-vue/package/EdTableEditor/index.js +8 -0
  212. package/src/components/ed-base-vue/package/EdTableEditor/src/EdTableEditor.vue +282 -0
  213. package/src/components/ed-base-vue/package/EdTableEditor/src/Props.js +107 -0
  214. package/src/components/ed-base-vue/package/EdTableEditor/src/hooks/validate.js +90 -0
  215. package/src/components/ed-base-vue/package/EdUpload/index.js +8 -0
  216. package/src/components/ed-base-vue/package/EdUpload/src/Props.js +90 -0
  217. package/src/components/ed-base-vue/package/EdUpload/src/index.vue +88 -0
  218. package/src/components/ed-base-vue/package/EdViewer/index.js +8 -0
  219. package/src/components/ed-base-vue/package/EdViewer/src/EdViewer.vue +310 -0
  220. package/src/components/ed-base-vue/package/EdWangEditor/index.js +14 -0
  221. package/src/components/ed-base-vue/package/EdWangEditor/src/EdWangEditor.vue +127 -0
  222. package/src/components/ed-base-vue/package/ExtendSlot.js +12 -0
  223. package/src/components/ed-base-vue/package/OptionSlot.js +65 -0
  224. package/src/components/ed-base-vue/plugin/Message/index.js +2 -0
  225. package/src/components/ed-base-vue/plugin/Message/src/main.js +91 -0
  226. package/src/components/ed-base-vue/plugin/Message/src/main.vue +253 -0
  227. package/src/components/ed-base-vue/plugin/print/index.js +156 -0
  228. package/src/components/ed-base-vue/plugin/sortable/index.js +3784 -0
  229. package/src/components/ed-base-vue/style/custom.scss +107 -0
  230. package/src/components/ed-base-vue/style/deep.scss +100 -0
  231. package/src/components/ed-base-vue/style/index.scss +4 -0
  232. package/src/components/ed-base-vue/tools/date-format.js +315 -0
  233. package/src/components/ed-base-vue/tools/utils.js +124 -0
  234. package/src/layouts/components/AppMain.vue +17 -0
  235. package/src/layouts/components/Header.vue +256 -0
  236. package/src/layouts/components/Logo.vue +56 -0
  237. package/src/layouts/components/Navbar.vue +169 -0
  238. package/src/layouts/components/SideBar.vue +107 -0
  239. package/src/layouts/components/index.js +5 -0
  240. package/src/layouts/index.vue +57 -0
  241. package/src/main.js +42 -0
  242. package/src/request/config.js +6 -0
  243. package/src/request/index.js +85 -0
  244. package/src/request/request.js +147 -0
  245. package/src/router/index.js +65 -0
  246. package/src/router/modules/baseRouter.js +43 -0
  247. package/src/router/modules/easydata.js +49 -0
  248. package/src/views/base/BaseRichPreview.vue +23 -0
  249. package/src/views/base/BaseRichText.vue +28 -0
  250. package/src/views/base/EdFormView.vue +54 -0
  251. package/src/views/base/EdTable.vue +98 -0
  252. package/src/views/base/inputTable.vue +103 -0
  253. package/src/views/easydata/Interface.vue +3 -0
  254. package/src/views/easydata/dataSource.vue +13 -0
  255. package/src/views/easydata/dataSourceView.vue +71 -0
  256. package/src/views/easydata/templateDemo.vue +89 -0
  257. package/src/views/easydata/templateInfo.vue +13 -0
  258. package/src/views/index.vue +17 -0
  259. package/src/views/login.vue +208 -0
  260. package/src/views/redirect.vue +15 -0
@@ -0,0 +1,253 @@
1
+ <template>
2
+ <transition name="el-message-fade" @after-leave="handleAfterLeave">
3
+ <div
4
+ v-show="visible"
5
+ :class="[
6
+ 'el-message','ed-message',
7
+
8
+ center ? 'is-center' : '',
9
+ showClose ? 'is-closable' : '',
10
+ customClass
11
+ ]"
12
+ :style="positionStyle" role="alert"
13
+ @mouseenter="clearTimer"
14
+ @mouseleave="startTimer"
15
+ >
16
+ <div :class="['ed-message--content', type && !iconClass ? `el-message--${ type }` : '',]">
17
+ <i v-if="iconClass" :class="iconClass"></i>
18
+ <i v-else :class="typeClass"></i>
19
+ <slot>
20
+ <p v-if="!dangerouslyUseHTMLString" class="el-message__content">{{ message }}</p>
21
+ <p v-else class="el-message__content" v-html="message"></p>
22
+ </slot>
23
+ <p v-if="showExtData" class="ed-message__extData" @click="handleExtra">
24
+ <i>详情</i>
25
+ <i class="el-icon-arrow-right"></i>
26
+ </p>
27
+ <i v-if="showClose" class="el-message__closeBtn el-icon-close" @click="close"></i>
28
+ </div>
29
+
30
+ <div v-show="showExtData && visibleExtData" :class="[
31
+ 'ed-message--extra',
32
+ type && !iconClass ? `el-message--${ type }` : '',
33
+ ]">
34
+ <div class="el-message__cope" @click="handleCope">{{ copeText }}</div>
35
+ <div class="el-message__content" v-html="getExtraMsg"></div>
36
+ </div>
37
+ </div>
38
+ </transition>
39
+ </template>
40
+
41
+ <script type="text/babel">
42
+ const typeMap = {
43
+ success: 'success',
44
+ info: 'info',
45
+ warning: 'warning',
46
+ error: 'error'
47
+ };
48
+
49
+ export default {
50
+ data() {
51
+ return {
52
+ visible: false,
53
+ visibleExtData: false,
54
+ showExtData: false,
55
+ message: '',
56
+ extraMsg: "",
57
+ duration: 3000,
58
+ type: 'info',
59
+ iconClass: '',
60
+ customClass: '',
61
+ onClose: null,
62
+ showClose: false,
63
+ closed: false,
64
+ verticalOffset: 20,
65
+ timer: null,
66
+ dangerouslyUseHTMLString: false,
67
+ center: false,
68
+ zIndex: 0,
69
+ copeText: "复制",
70
+ copeClick: null
71
+ };
72
+ },
73
+
74
+ computed: {
75
+ typeClass() {
76
+ return this.type && !this.iconClass
77
+ ? `el-message__icon el-icon-${typeMap[this.type]}`
78
+ : '';
79
+ },
80
+ positionStyle() {
81
+ return {
82
+ 'top': `${this.verticalOffset}px`,
83
+ 'z-index': this.zIndex
84
+ };
85
+ },
86
+ getExtraMsg() {
87
+ return this.extraMsg.replace(/\r\n/g, '<br/>')
88
+ }
89
+ },
90
+
91
+ watch: {
92
+ closed(newVal) {
93
+ if (newVal) {
94
+ this.visible = false;
95
+ }
96
+ },
97
+ extraMsg: {
98
+ immediate: true,
99
+ handler(newVal) {
100
+ if (newVal) {
101
+ this.showExtData = true
102
+ }
103
+ }
104
+ }
105
+ },
106
+ methods: {
107
+ handleAfterLeave() {
108
+ this.$destroy(true);
109
+ this.$el.parentNode.removeChild(this.$el);
110
+ },
111
+
112
+ close() {
113
+ this.closed = true;
114
+ if (typeof this.onClose === 'function') {
115
+ this.onClose(this);
116
+ }
117
+ },
118
+
119
+ clearTimer() {
120
+ clearTimeout(this.timer);
121
+ },
122
+
123
+ startTimer() {
124
+ if (this.duration > 0) {
125
+ this.timer = setTimeout(() => {
126
+ if (!this.closed) {
127
+ this.close();
128
+ }
129
+ }, this.duration);
130
+ }
131
+ },
132
+ keydown(e) {
133
+ if (e.keyCode === 27) { // esc关闭消息
134
+ if (!this.closed) {
135
+ this.close();
136
+ }
137
+ }
138
+ },
139
+ handleExtra() {
140
+ this.visibleExtData = !this.visibleExtData
141
+ },
142
+ handleCope() {
143
+ if (this.copeClick && typeof this.copeClick === 'function') {
144
+ this.copeClick()
145
+ } else {
146
+ this.handleCopyValue(this.extraMsg).then(() => {
147
+ console.log("已经复制到剪切板")
148
+ }).catch(() => {
149
+ console.log('复制失败')
150
+ })
151
+ }
152
+ },
153
+ /**
154
+ * 复制到剪切板
155
+ * @param text
156
+ * @returns {Promise<never>|Promise<unknown>|Promise<void>}
157
+ */
158
+ handleCopyValue(text) {
159
+ //浏览器禁用了非安全域的 navigator.clipboard 对象
160
+ //在线上环境会报错 TypeError: Cannot read properties of undefined (reading 'writeText')
161
+ if (!navigator.clipboard && window.isSecureContext) {
162
+ return navigator.clipboard.writeText(text)
163
+ } else {
164
+ // 判断是否支持拷贝
165
+ if (!document.execCommand('copy')) return Promise.reject()
166
+ // 创建标签,并隐藏
167
+ const textArea = document.createElement('textarea')
168
+ textArea.style.position = 'fixed'
169
+ textArea.style.top = textArea.style.left = '-100vh'
170
+ textArea.style.opacity = '0'
171
+ textArea.value = text
172
+ document.body.appendChild(textArea)
173
+ // 聚焦、复制
174
+ textArea.focus()
175
+ textArea.select()
176
+ return new Promise((resolve, reject) => {
177
+ // 不知为何,必须写这个三目,不然copy不上
178
+ document.execCommand('copy') ? resolve() : reject()
179
+ textArea.remove()
180
+ })
181
+ }
182
+ }
183
+ },
184
+ mounted() {
185
+ this.startTimer();
186
+ document.addEventListener('keydown', this.keydown);
187
+ },
188
+ beforeDestroy() {
189
+ document.removeEventListener('keydown', this.keydown);
190
+ }
191
+ };
192
+ </script>
193
+ <style lang="scss" scoped>
194
+ .ed-message {
195
+ overflow: initial !important;
196
+ padding: 0;
197
+ }
198
+
199
+ .ed-message--content {
200
+ display: flex;
201
+ justify-content: space-between;
202
+ align-items: center;
203
+ position: relative;
204
+ width: 100%;
205
+ padding: 15px 15px 15px 20px;
206
+
207
+ .el-message__content {
208
+ width: 100%;
209
+ }
210
+
211
+ .ed-message__extData {
212
+ font-size: 12px;
213
+ color: #409EFF;
214
+ cursor: pointer;
215
+ min-width: 50px;
216
+
217
+ i {
218
+ font-style: normal;
219
+ }
220
+ }
221
+
222
+ .el-message__closeBtn {
223
+ width: 20px;
224
+ right: 0;
225
+ }
226
+ }
227
+
228
+
229
+ .ed-message--extra {
230
+ position: absolute;
231
+ top: 58px;
232
+ right: 0;
233
+ left: 0;
234
+ padding: 10px;
235
+ border-radius: 4px;
236
+
237
+
238
+ .el-message__content {
239
+ line-height: 20px;
240
+ word-wrap: break-word;
241
+ max-height: 40vh;
242
+ overflow-y: auto;
243
+ }
244
+
245
+ .el-message__cope {
246
+ text-align: right;
247
+ color: #409EFF;
248
+ font-size: 12px;
249
+ margin-bottom: 5px;
250
+ cursor: pointer;
251
+ }
252
+ }
253
+ </style>
@@ -0,0 +1,156 @@
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
+ 'noPrint': '.no-print'
8
+ }, options);
9
+
10
+ if ((typeof dom) === "string") {
11
+ this.dom = document.querySelector(dom);
12
+ } else {
13
+ this.isDOM(dom)
14
+ this.dom = this.isDOM(dom) ? dom : dom.$el;
15
+ }
16
+ this.init();
17
+ };
18
+ Print.prototype = {
19
+ init: function () {
20
+ var content = this.getStyle() + this.getHtml();
21
+ this.writeIframe(content);
22
+ },
23
+ extend: function (obj, obj2) {
24
+ for (var k in obj2) {
25
+ obj[k] = obj2[k];
26
+ }
27
+ return obj;
28
+ },
29
+
30
+ getStyle: function () {
31
+ var str = "",
32
+ styles = document.querySelectorAll('style,link');
33
+ for (var i = 0; i < styles.length; i++) {
34
+ str += styles[i].outerHTML;
35
+ }
36
+ str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";
37
+
38
+ return str;
39
+ },
40
+
41
+ getHtml: function () {
42
+ var inputs = document.querySelectorAll('input');
43
+ var textareas = document.querySelectorAll('textarea');
44
+ var selects = document.querySelectorAll('select');
45
+
46
+ for (var k = 0; k < inputs.length; k++) {
47
+ if (inputs[k].type == "checkbox" || inputs[k].type == "radio") {
48
+ if (inputs[k].checked == true) {
49
+ inputs[k].setAttribute('checked', "checked")
50
+ } else {
51
+ inputs[k].removeAttribute('checked')
52
+ }
53
+ } else if (inputs[k].type == "text") {
54
+ inputs[k].setAttribute('value', inputs[k].value)
55
+ } else {
56
+ inputs[k].setAttribute('value', inputs[k].value)
57
+ }
58
+ }
59
+
60
+ for (var k2 = 0; k2 < textareas.length; k2++) {
61
+ if (textareas[k2].type == 'textarea') {
62
+ textareas[k2].innerHTML = textareas[k2].value
63
+ }
64
+ }
65
+
66
+ for (var k3 = 0; k3 < selects.length; k3++) {
67
+ if (selects[k3].type == 'select-one') {
68
+ var child = selects[k3].children;
69
+ for (var i in child) {
70
+ if (child[i].tagName == 'OPTION') {
71
+ if (child[i].selected == true) {
72
+ child[i].setAttribute('selected', "selected")
73
+ } else {
74
+ child[i].removeAttribute('selected')
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ // 包裹要打印的元素
81
+ let outerHTML = this.wrapperRefDom(this.dom).outerHTML
82
+ return outerHTML;
83
+ },
84
+ // 向父级元素循环,包裹当前需要打印的元素
85
+ // 防止根级别开头的 css 选择器不生效
86
+ wrapperRefDom: function (refDom) {
87
+ let prevDom = null
88
+ let currDom = refDom
89
+ // 判断当前元素是否在 body 中,不在文档中则直接返回该节点
90
+ if (!this.isInBody(currDom)) return currDom
91
+
92
+ while (currDom) {
93
+ if (prevDom) {
94
+ let element = currDom.cloneNode(false)
95
+ element.appendChild(prevDom)
96
+ prevDom = element
97
+ } else {
98
+ prevDom = currDom.cloneNode(true)
99
+ }
100
+
101
+ currDom = currDom.parentElement
102
+ }
103
+
104
+ return prevDom
105
+ },
106
+
107
+ writeIframe: function (content) {
108
+ var w, doc, iframe = document.createElement('iframe'),
109
+ f = document.body.appendChild(iframe);
110
+ iframe.id = "myIframe";
111
+ //iframe.style = "position:absolute;width:0;height:0;top:-10px;left:-10px;";
112
+ iframe.setAttribute('style', 'position:absolute;width:0;height:0;top:-10px;left:-10px;');
113
+ w = f.contentWindow || f.contentDocument;
114
+ doc = f.contentDocument || f.contentWindow.document;
115
+ doc.open();
116
+ doc.write(content);
117
+ doc.close();
118
+ var _this = this
119
+ iframe.onload = function () {
120
+ _this.toPrint(w);
121
+ setTimeout(function () {
122
+ document.body.removeChild(iframe)
123
+ }, 100)
124
+ }
125
+ },
126
+
127
+ toPrint: function (frameWindow) {
128
+ try {
129
+ setTimeout(function () {
130
+ frameWindow.focus();
131
+ try {
132
+ if (!frameWindow.document.execCommand('print', false, null)) {
133
+ frameWindow.print();
134
+ }
135
+ } catch (e) {
136
+ frameWindow.print();
137
+ }
138
+ frameWindow.close();
139
+ }, 10);
140
+ } catch (err) {
141
+ console.log('err', err);
142
+ }
143
+ },
144
+ // 检查一个元素是否是 body 元素的后代元素且非 body 元素本身
145
+ isInBody: function (node) {
146
+ return (node === document.body) ? false : document.body.contains(node);
147
+ },
148
+ isDOM: (typeof HTMLElement === 'object') ?
149
+ function (obj) {
150
+ return obj instanceof HTMLElement;
151
+ } :
152
+ function (obj) {
153
+ return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string';
154
+ }
155
+ };
156
+ export default Print;