haiwei-ui 1.0.2 → 1.0.4

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 (211) hide show
  1. package/.prettierrc +6 -4
  2. package/README.md +10 -0
  3. package/package.json +1 -1
  4. package/packages/components/box/index.vue +116 -125
  5. package/packages/components/box-col/index.vue +30 -33
  6. package/packages/components/box-row/index.vue +17 -17
  7. package/packages/components/box-small/index.vue +38 -38
  8. package/packages/components/button/index.vue +29 -42
  9. package/packages/components/button-copy/index.vue +46 -62
  10. package/packages/components/button-delete/index.vue +64 -77
  11. package/packages/components/button-delete-batch/index.vue +82 -95
  12. package/packages/components/button-has/index.vue +29 -42
  13. package/packages/components/checkbox-group/index.vue +85 -85
  14. package/packages/components/color-picker/index.vue +41 -50
  15. package/packages/components/container/index.vue +8 -8
  16. package/packages/components/date-range-picker/index.vue +92 -103
  17. package/packages/components/details/index.vue +72 -79
  18. package/packages/components/dialog/index.vue +281 -294
  19. package/packages/components/drag-sort/index.vue +36 -36
  20. package/packages/components/drag-sort-dialog/index.vue +58 -58
  21. package/packages/components/drawer/index.vue +157 -166
  22. package/packages/components/enums/sex/index.vue +1 -1
  23. package/packages/components/flex/index.vue +33 -33
  24. package/packages/components/form/index.vue +123 -138
  25. package/packages/components/form-dialog/index.vue +184 -217
  26. package/packages/components/form-page/index.vue +134 -151
  27. package/packages/components/icon/index.vue +6 -6
  28. package/packages/components/icon-picker/index.vue +30 -30
  29. package/packages/components/icon-picker/panel.vue +58 -58
  30. package/packages/components/label/index.vue +22 -30
  31. package/packages/components/list/components/export/index.vue +101 -99
  32. package/packages/components/list/components/footer/index.vue +42 -51
  33. package/packages/components/list/components/header/index.vue +34 -34
  34. package/packages/components/list/components/querybar/index.vue +145 -124
  35. package/packages/components/list/components/select-column/index.vue +30 -30
  36. package/packages/components/list/components/table/index.vue +169 -188
  37. package/packages/components/list/index.vue +336 -395
  38. package/packages/components/list-agile/index.vue +145 -145
  39. package/packages/components/list-dialog/index.vue +70 -84
  40. package/packages/components/listbox/index.vue +48 -48
  41. package/packages/components/login-default/index.vue +107 -107
  42. package/packages/components/login-neon/index.vue +104 -104
  43. package/packages/components/map/index.vue +229 -229
  44. package/packages/components/map-coord-picking/index.vue +220 -219
  45. package/packages/components/map-search/index.vue +75 -72
  46. package/packages/components/scrollbar/index.vue +11 -11
  47. package/packages/components/select-whether/index.vue +30 -30
  48. package/packages/components/split/index.vue +141 -141
  49. package/packages/components/split/trigger.vue +15 -15
  50. package/packages/components/tabnav/index.vue +125 -89
  51. package/packages/components/tabs/index.vue +31 -31
  52. package/packages/components/toolbar/components/fullscreen/index.vue +10 -10
  53. package/packages/components/toolbar/components/logout/index.vue +13 -13
  54. package/packages/components/toolbar/components/skin-toggle/form.vue +59 -59
  55. package/packages/components/toolbar/components/skin-toggle/index.vue +12 -12
  56. package/packages/components/toolbar/components/userInfo/index.vue +18 -18
  57. package/packages/components/toolbar/index.vue +12 -12
  58. package/packages/components/tree-select/mixins.vue +261 -270
  59. package/packages/components/txt/index.vue +17 -17
  60. package/packages/components/update-password/index.vue +45 -57
  61. package/packages/layout.vue +18 -18
  62. package/packages/mixins/components/checkbox.vue +71 -82
  63. package/packages/mixins/components/radio.vue +69 -69
  64. package/packages/page/403/index.vue +32 -28
  65. package/packages/page/404/index.vue +32 -28
  66. package/packages/page/default/index.vue +17 -13
  67. package/packages/page/iframe/index.vue +6 -6
  68. package/packages/page/login/index.vue +9 -9
  69. package/packages/page/userInfo/index.vue +5 -5
  70. package/packages/router/index.js +1 -9
  71. package/packages/skins/pretty/components/header/components/breadcrumb/index.vue +29 -29
  72. package/packages/skins/pretty/components/header/components/theme/index.vue +22 -21
  73. package/packages/skins/pretty/components/header/index.vue +12 -12
  74. package/packages/skins/pretty/components/main/index.vue +27 -27
  75. package/packages/skins/pretty/components/menus/index.vue +28 -28
  76. package/packages/skins/pretty/components/menus/item.vue +23 -23
  77. package/packages/skins/pretty/components/sidebar/index.vue +7 -7
  78. package/packages/skins/pretty/index.vue +6 -6
  79. package/packages/skins/pretty/styles/themes/blue-light/_index.scss +2 -2
  80. package/packages/skins/pretty/styles/themes/default/_index.scss +1 -1
  81. package/packages/skins/pretty/styles/themes/green/_index.scss +2 -2
  82. package/packages/skins/pretty/styles/themes/green-light/_index.scss +2 -2
  83. package/packages/styles/_mixins.scss +24 -25
  84. package/packages/styles/animation/_index.scss +22 -23
  85. package/packages/styles/animation/breadcrumb.scss +6 -6
  86. package/packages/styles/animation/fade.scss +11 -11
  87. package/packages/styles/animation/move.scss +98 -98
  88. package/packages/styles/components/box-small/_index.scss +58 -58
  89. package/packages/styles/components/button/_index.scss +7 -7
  90. package/packages/styles/components/container/_index.scss +26 -26
  91. package/packages/styles/components/date-range-picker/_index.scss +4 -4
  92. package/packages/styles/components/details/_index.scss +66 -67
  93. package/packages/styles/components/details-dialog/_index.scss +13 -13
  94. package/packages/styles/components/drag-sort/_index.scss +20 -20
  95. package/packages/styles/components/drag-sort-dialog/_index.scss +7 -7
  96. package/packages/styles/components/flex/_index.scss +56 -56
  97. package/packages/styles/components/form-dialog/_index.scss +11 -11
  98. package/packages/styles/components/icon/_index.scss +6 -6
  99. package/packages/styles/components/label/_index.scss +245 -245
  100. package/packages/styles/components/listbox/_index.scss +47 -47
  101. package/packages/styles/components/split/_index.scss +102 -102
  102. package/packages/styles/components/toolbar/_index.scss +98 -98
  103. package/packages/styles/components/txt/_index.scss +13 -13
  104. package/packages/styles/components/upload-dialog/_index.scss +44 -44
  105. package/packages/styles/components/upload-multiple/_index.scss +19 -19
  106. package/packages/styles/components/upload-single/_index.scss +16 -16
  107. package/packages/utils/resize-event.js +3 -3
  108. package/packages/vuter/attributes.json +30 -40
  109. package/packages/vuter/tags.json +11 -27
  110. package/public/lib/font/iconfont.js +47 -1
  111. package/src/api/config.js +1 -1
  112. package/src/components/code-preview/index.vue +56 -56
  113. package/src/components/tmpl/components/attributes/index.vue +3 -3
  114. package/src/components/tmpl/components/events/index.vue +3 -3
  115. package/src/components/tmpl/components/methods/index.vue +3 -3
  116. package/src/components/tmpl/components/slots/index.vue +3 -3
  117. package/src/components/tmpl/index.vue +42 -42
  118. package/src/style/element-ui.scss +4 -4
  119. package/src/views/components/advanced/details/_index/index.vue +16 -16
  120. package/src/views/components/advanced/details/demo1/demo.vue +42 -42
  121. package/src/views/components/advanced/details/demo1/index.vue +11 -11
  122. package/src/views/components/advanced/drag-sort/_index/index.vue +16 -16
  123. package/src/views/components/advanced/drag-sort/demo1/demo.vue +18 -18
  124. package/src/views/components/advanced/drag-sort/demo1/index.vue +11 -11
  125. package/src/views/components/advanced/drag-sort-dialog/_index/index.vue +16 -16
  126. package/src/views/components/advanced/drag-sort-dialog/demo1/demo.vue +24 -24
  127. package/src/views/components/advanced/drag-sort-dialog/demo1/index.vue +11 -11
  128. package/src/views/components/advanced/list/_index/index.vue +21 -21
  129. package/src/views/components/advanced/list/demo1/demo.vue +65 -65
  130. package/src/views/components/advanced/list/demo1/index.vue +11 -11
  131. package/src/views/components/advanced/list/demo2/demo.vue +52 -52
  132. package/src/views/components/advanced/list/demo2/index.vue +11 -11
  133. package/src/views/components/advanced/list/demo4/demo.vue +28 -28
  134. package/src/views/components/advanced/list/demo4/index.vue +11 -11
  135. package/src/views/components/advanced/list-dialog/_index/index.vue +21 -21
  136. package/src/views/components/advanced/list-dialog/demo1/demo.vue +48 -48
  137. package/src/views/components/advanced/list-dialog/demo1/index.vue +11 -11
  138. package/src/views/components/advanced/listbox/_index/index.vue +19 -19
  139. package/src/views/components/advanced/listbox/demo1/demo.vue +47 -47
  140. package/src/views/components/advanced/listbox/demo1/index.vue +11 -11
  141. package/src/views/components/base/box/_index/index.vue +22 -28
  142. package/src/views/components/base/box/demo1/index.vue +11 -11
  143. package/src/views/components/base/box/demo2/index.vue +11 -11
  144. package/src/views/components/base/box/demo3/demo.vue +15 -15
  145. package/src/views/components/base/box/demo3/index.vue +11 -11
  146. package/src/views/components/base/box/demo4/demo.vue +18 -24
  147. package/src/views/components/base/box/demo4/index.vue +11 -11
  148. package/src/views/components/base/box-col/_index/index.vue +17 -17
  149. package/src/views/components/base/box-col/demo1/index.vue +11 -11
  150. package/src/views/components/base/box-row/_index/index.vue +17 -17
  151. package/src/views/components/base/box-row/demo1/index.vue +11 -11
  152. package/src/views/components/base/box-small/_index/index.vue +17 -17
  153. package/src/views/components/base/box-small/demo1/demo.vue +30 -30
  154. package/src/views/components/base/box-small/demo1/index.vue +11 -11
  155. package/src/views/components/base/button/_index/index.vue +18 -18
  156. package/src/views/components/base/button/demo1/index.vue +11 -11
  157. package/src/views/components/base/button/demo2/demo.vue +53 -48
  158. package/src/views/components/base/button/demo2/index.vue +11 -11
  159. package/src/views/components/base/container/_index/index.vue +15 -15
  160. package/src/views/components/base/dialog/_index/index.vue +20 -20
  161. package/src/views/components/base/dialog/demo1/demo.vue +37 -37
  162. package/src/views/components/base/dialog/demo1/index.vue +11 -11
  163. package/src/views/components/base/drawer/_index/index.vue +18 -18
  164. package/src/views/components/base/drawer/demo1/demo.vue +8 -8
  165. package/src/views/components/base/drawer/demo1/index.vue +11 -11
  166. package/src/views/components/base/flex/_index/index.vue +17 -17
  167. package/src/views/components/base/flex/demo1/demo.vue +6 -6
  168. package/src/views/components/base/flex/demo1/index.vue +14 -14
  169. package/src/views/components/base/label/_index/index.vue +17 -17
  170. package/src/views/components/base/label/demo1/index.vue +14 -14
  171. package/src/views/components/base/scrollbar/_index/index.vue +17 -17
  172. package/src/views/components/base/scrollbar/demo1/demo.vue +47 -47
  173. package/src/views/components/base/scrollbar/demo1/index.vue +11 -11
  174. package/src/views/components/base/split/_index/index.vue +17 -17
  175. package/src/views/components/base/split/demo1/demo.vue +6 -6
  176. package/src/views/components/base/split/demo1/index.vue +11 -11
  177. package/src/views/components/base/tabs/_index/index.vue +21 -21
  178. package/src/views/components/base/tabs/demo1/demo.vue +47 -47
  179. package/src/views/components/base/tabs/demo1/index.vue +14 -14
  180. package/src/views/components/base/txt/_index/index.vue +17 -17
  181. package/src/views/components/base/txt/demo1/index.vue +14 -14
  182. package/src/views/components/form/checkbox-group/_index/index.vue +20 -20
  183. package/src/views/components/form/checkbox-group/demo1/demo.vue +35 -35
  184. package/src/views/components/form/checkbox-group/demo1/index.vue +11 -11
  185. package/src/views/components/form/color-picker/_index/index.vue +16 -16
  186. package/src/views/components/form/color-picker/demo1/demo.vue +10 -10
  187. package/src/views/components/form/color-picker/demo1/index.vue +11 -11
  188. package/src/views/components/form/date-range-picker/_index/index.vue +17 -17
  189. package/src/views/components/form/date-range-picker/demo1/demo.vue +21 -21
  190. package/src/views/components/form/date-range-picker/demo1/index.vue +11 -11
  191. package/src/views/components/form/form/_index/index.vue +18 -18
  192. package/src/views/components/form/form/demo1/demo.vue +33 -33
  193. package/src/views/components/form/form/demo1/index.vue +11 -11
  194. package/src/views/components/form/form-dialog/_index/index.vue +18 -18
  195. package/src/views/components/form/form-dialog/demo1/demo.vue +39 -39
  196. package/src/views/components/form/form-dialog/demo1/index.vue +14 -14
  197. package/src/views/components/form/form-page/_index/index.vue +18 -18
  198. package/src/views/components/form/form-page/demo1/demo.vue +19 -19
  199. package/src/views/components/form/form-page/demo1/index.vue +11 -11
  200. package/src/views/components/form/icon-picker/_index/index.vue +18 -17
  201. package/src/views/components/form/icon-picker/demo1/demo.vue +20 -20
  202. package/src/views/components/form/icon-picker/demo1/index.vue +11 -11
  203. package/src/views/components/form/select/_index/index.vue +19 -19
  204. package/src/views/components/form/select/demo1/demo.vue +39 -39
  205. package/src/views/components/form/select/demo1/index.vue +11 -11
  206. package/src/views/components/form/select/demo2/index.vue +6 -6
  207. package/src/views/components/map/map-coord-picking/_index/index.vue +22 -22
  208. package/src/views/components/map/map-coord-picking/demo1/demo.vue +23 -23
  209. package/src/views/components/map/map-coord-picking/demo1/index.vue +11 -11
  210. package/src/views/run/index.vue +37 -37
  211. package/vue.config.js +1 -1
@@ -1,18 +1,5 @@
1
1
  <template>
2
- <el-dialog
3
- ref="dialog"
4
- :id="id"
5
- :class="class_"
6
- :top="draggable_ ? '' : top"
7
- :modal="modal"
8
- :close-on-click-modal="closeOnClickModal_"
9
- :fullscreen="hasFullscreen"
10
- :visible.sync="visible_"
11
- :show-close="false"
12
- :append-to-body="true"
13
- :destroy-on-close="destroyOnClose"
14
- v-on="on"
15
- >
2
+ <el-dialog ref="dialog" :id="id" :class="class_" :top="draggable_ ? '' : top" :modal="modal" :close-on-click-modal="closeOnClickModal_" :fullscreen="hasFullscreen" :visible.sync="visible_" :show-close="false" :append-to-body="true" :destroy-on-close="destroyOnClose" v-on="on">
16
3
  <!--头部-->
17
4
  <template v-slot:title>
18
5
  <section v-if="icon" class="nm-dialog-icon">
@@ -55,310 +42,310 @@
55
42
  </el-dialog>
56
43
  </template>
57
44
  <script>
58
- import { mapState, mapActions } from 'vuex'
59
- import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event'
60
- import { on, off } from '../../utils/dom'
61
- import visible from '../../mixins/components/visible.js'
62
- export default {
63
- name: 'Dialog',
64
- mixins: [visible],
65
- data() {
66
- return {
67
- id: '',
68
- // 是否已全屏
69
- hasFullscreen: false,
70
- // 距顶部高度
71
- top: '',
72
- // 是否点击拖拽
73
- isDragDown: false,
74
- on: {
75
- open: this.onOpen,
76
- opened: this.onOpened,
77
- close: this.onClose,
78
- closed: this.onClosed
79
- },
80
- // 拖拽点击时的状态
81
- dragDownState: {},
82
- // 已初始化
83
- hasInit: false
84
- }
85
- },
86
- props: {
87
- /**
88
- * @description 显示头部
89
- */
90
- header: {
91
- type: Boolean,
92
- default: true
93
- },
94
- /** Dialog 的标题,也可通过具名 title传入 */
95
- title: String,
96
- /** 图标 */
97
- icon: String,
98
- /**图标颜色 */
99
- iconColor: String,
100
- /** Dialog 的宽度 */
101
- width: {
102
- type: [Number, String],
103
- default: '50%'
104
- },
105
- /** Dialog 的高度 */
106
- height: [Number, String],
107
- /** 内边距 */
108
- padding: Number,
109
- /** 显示尾部 */
110
- footer: Boolean,
111
- /** 是否需要遮罩层 */
112
- modal: {
113
- type: Boolean,
114
- default: true
115
- },
116
- /** 是否可以通过点击 modal 关闭 Dialog */
117
- closeOnClickModal: {
118
- type: Boolean,
119
- default: null
120
- },
121
- /** 是否显示关闭按钮 */
122
- showClose: {
123
- type: Boolean,
124
- default: true
125
- },
126
- /** 关闭前的回调,会暂停 Dialog 的关闭 */
127
- beforeClose: Function,
128
- /** 是否显示全屏按钮 */
129
- fullscreen: Boolean,
130
- /** 不包含滚动条 */
131
- noScrollbar: Boolean,
132
- /** 显示加载动画 */
133
- loading: Boolean,
134
- /** 可拖拽的 */
135
- draggable: {
136
- type: Boolean,
137
- default: null
138
- },
139
- /** 是否可拖出页面 */
140
- dragOutPage: Boolean,
141
- /** 拖拽出页面后保留的最小宽度 */
142
- dragMinWidth: {
143
- type: Number,
144
- default: 100
145
- },
146
- /** 是否显示底部关闭按钮 */
147
- footerCloseButton: Boolean,
148
- /**关闭时销毁 Dialog 中的元素 */
149
- destroyOnClose: Boolean
150
- },
151
- computed: {
152
- ...mapState('app/config', { config: s => s.component.dialog }),
153
- ...mapState('app/loading', { loadingText: 'text', loadingBackground: 'background', loadingSpinner: 'spinner' }),
154
- elScrollbarViewEl() {
155
- return this.$refs.dialog.$el.querySelector('.el-scrollbar__view')
156
- },
157
- class_() {
158
- return ['nm-dialog', this.draggable_ ? 'draggable' : '', this.header ? '' : 'no-header']
159
- },
160
- width_() {
161
- return typeof this.width === 'number' ? (this.width > 0 ? this.width + 'px' : '50%') : this.width
162
- },
163
- closeOnClickModal_() {
164
- if (this.closeOnClickModal === null) {
165
- return this.config.closeOnClickModal
166
- }
167
- return this.closeOnClickModal
168
- },
169
- draggable_() {
170
- if (this.draggable === null) {
171
- return this.config.draggable
45
+ import { mapState, mapActions } from 'vuex'
46
+ import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event'
47
+ import { on, off } from '../../utils/dom'
48
+ import visible from '../../mixins/components/visible.js'
49
+ export default {
50
+ name: 'Dialog',
51
+ mixins: [visible],
52
+ data() {
53
+ return {
54
+ id: '',
55
+ // 是否已全屏
56
+ hasFullscreen: false,
57
+ // 距顶部高度
58
+ top: '',
59
+ // 是否点击拖拽
60
+ isDragDown: false,
61
+ on: {
62
+ open: this.onOpen,
63
+ opened: this.onOpened,
64
+ close: this.onClose,
65
+ closed: this.onClosed
66
+ },
67
+ // 拖拽点击时的状态
68
+ dragDownState: {},
69
+ // 已初始化
70
+ hasInit: false
172
71
  }
173
- return this.draggable
174
72
  },
175
- dialogEl() {
176
- return this.$refs.dialog.$el.querySelector('.el-dialog')
73
+ props: {
74
+ /**
75
+ * @description 显示头部
76
+ */
77
+ header: {
78
+ type: Boolean,
79
+ default: true
80
+ },
81
+ /** Dialog 的标题,也可通过具名 title传入 */
82
+ title: String,
83
+ /** 图标 */
84
+ icon: String,
85
+ /**图标颜色 */
86
+ iconColor: String,
87
+ /** Dialog 的宽度 */
88
+ width: {
89
+ type: [Number, String],
90
+ default: '50%'
91
+ },
92
+ /** Dialog 的高度 */
93
+ height: [Number, String],
94
+ /** 内边距 */
95
+ padding: Number,
96
+ /** 显示尾部 */
97
+ footer: Boolean,
98
+ /** 是否需要遮罩层 */
99
+ modal: {
100
+ type: Boolean,
101
+ default: true
102
+ },
103
+ /** 是否可以通过点击 modal 关闭 Dialog */
104
+ closeOnClickModal: {
105
+ type: Boolean,
106
+ default: null
107
+ },
108
+ /** 是否显示关闭按钮 */
109
+ showClose: {
110
+ type: Boolean,
111
+ default: true
112
+ },
113
+ /** 关闭前的回调,会暂停 Dialog 的关闭 */
114
+ beforeClose: Function,
115
+ /** 是否显示全屏按钮 */
116
+ fullscreen: Boolean,
117
+ /** 不包含滚动条 */
118
+ noScrollbar: Boolean,
119
+ /** 显示加载动画 */
120
+ loading: Boolean,
121
+ /** 可拖拽的 */
122
+ draggable: {
123
+ type: Boolean,
124
+ default: null
125
+ },
126
+ /** 是否可拖出页面 */
127
+ dragOutPage: Boolean,
128
+ /** 拖拽出页面后保留的最小宽度 */
129
+ dragMinWidth: {
130
+ type: Number,
131
+ default: 100
132
+ },
133
+ /** 是否显示底部关闭按钮 */
134
+ footerCloseButton: Boolean,
135
+ /**关闭时销毁 Dialog 中的元素 */
136
+ destroyOnClose: Boolean
177
137
  },
178
- titleEl() {
179
- return this.$refs.title
180
- }
181
- },
182
- methods: {
183
- ...mapActions('app/dialog', ['open']),
184
- /** 全屏切换 */
185
- triggerFullscreen() {
186
- if (this.hasFullscreen) {
187
- this.closeFullscreen()
188
- } else {
189
- this.openFullscreen()
138
+ computed: {
139
+ ...mapState('app/config', { config: s => s.component.dialog }),
140
+ ...mapState('app/loading', { loadingText: 'text', loadingBackground: 'background', loadingSpinner: 'spinner' }),
141
+ elScrollbarViewEl() {
142
+ return this.$refs.dialog.$el.querySelector('.el-scrollbar__view')
143
+ },
144
+ class_() {
145
+ return ['nm-dialog', this.draggable_ ? 'draggable' : '', this.header ? '' : 'no-header']
146
+ },
147
+ width_() {
148
+ return typeof this.width === 'number' ? (this.width > 0 ? this.width + 'px' : '50%') : this.width
149
+ },
150
+ closeOnClickModal_() {
151
+ if (this.closeOnClickModal === null) {
152
+ return this.config.closeOnClickModal
153
+ }
154
+ return this.closeOnClickModal
155
+ },
156
+ draggable_() {
157
+ if (this.draggable === null) {
158
+ return this.config.draggable
159
+ }
160
+ return this.draggable
161
+ },
162
+ dialogEl() {
163
+ return this.$refs.dialog.$el.querySelector('.el-dialog')
164
+ },
165
+ titleEl() {
166
+ return this.$refs.title
190
167
  }
191
168
  },
192
- /** 开启全屏 */
193
- openFullscreen() {
194
- this.hasFullscreen = true
195
- this.$emit('fullscreen-change', this.hasFullscreen)
196
- },
197
- /** 关闭全屏 */
198
- closeFullscreen() {
199
- this.hasFullscreen = false
200
- this.$emit('fullscreen-change', this.hasFullscreen)
201
- },
202
- /** 关闭对话框 */
203
- close() {
204
- this.hide()
205
- },
206
- /**
207
- * 调整高度
208
- */
209
- resize() {
210
- // 对话框高度
211
- const dialogHeight = this.getDialogHeight()
212
- // 页面高度
213
- const bodyHeight = document.body.clientHeight
169
+ methods: {
170
+ ...mapActions('app/dialog', ['open']),
171
+ /** 全屏切换 */
172
+ triggerFullscreen() {
173
+ if (this.hasFullscreen) {
174
+ this.closeFullscreen()
175
+ } else {
176
+ this.openFullscreen()
177
+ }
178
+ },
179
+ /** 开启全屏 */
180
+ openFullscreen() {
181
+ this.hasFullscreen = true
182
+ this.$emit('fullscreen-change', this.hasFullscreen)
183
+ },
184
+ /** 关闭全屏 */
185
+ closeFullscreen() {
186
+ this.hasFullscreen = false
187
+ this.$emit('fullscreen-change', this.hasFullscreen)
188
+ },
189
+ /** 关闭对话框 */
190
+ close() {
191
+ this.hide()
192
+ },
193
+ /**
194
+ * 调整高度
195
+ */
196
+ resize() {
197
+ // 对话框高度
198
+ const dialogHeight = this.getDialogHeight()
199
+ // 页面高度
200
+ const bodyHeight = document.body.clientHeight
214
201
 
215
- let height
216
- if (dialogHeight.full + 20 > bodyHeight) {
217
- this.top = '10px'
218
- height = bodyHeight - dialogHeight.h - dialogHeight.f - 20 + 'px'
219
- } else {
220
- this.top = ((bodyHeight - dialogHeight.full) / 7) * 2.5 + 'px'
221
- height = dialogHeight.full + 'px'
222
- }
202
+ let height
203
+ if (dialogHeight.full + 20 > bodyHeight) {
204
+ this.top = '10px'
205
+ height = bodyHeight - dialogHeight.h - dialogHeight.f - 20 + 'px'
206
+ } else {
207
+ this.top = ((bodyHeight - dialogHeight.full) / 7) * 2.5 + 'px'
208
+ height = dialogHeight.full + 'px'
209
+ }
223
210
 
224
- this.dialogEl.style.height = height
225
- this.dialogEl.style.width = this.width_
211
+ this.dialogEl.style.height = height
212
+ this.dialogEl.style.width = this.width_
226
213
 
227
- if (!this.hasInit) {
228
- // 如果是可拖拽的,需要计算绝对定位
229
- if (this.draggable_) {
230
- this.dialogEl.style.left = (document.body.offsetWidth - this.dialogEl.offsetWidth) / 2 + 'px'
231
- this.dialogEl.style.top = this.top
232
- }
233
- // 设置内边距
234
- if (this.padding) {
235
- this.dialogEl.querySelector(this.noScrollbar ? '.nm-dialog-main' : '.el-scrollbar__view').style.padding = this.padding + 'px'
214
+ if (!this.hasInit) {
215
+ // 如果是可拖拽的,需要计算绝对定位
216
+ if (this.draggable_) {
217
+ this.dialogEl.style.left = (document.body.offsetWidth - this.dialogEl.offsetWidth) / 2 + 'px'
218
+ this.dialogEl.style.top = this.top
219
+ }
220
+ // 设置内边距
221
+ if (this.padding) {
222
+ this.dialogEl.querySelector(this.noScrollbar ? '.nm-dialog-main' : '.el-scrollbar__view').style.padding = this.padding + 'px'
223
+ }
224
+ this.hasInit = true
236
225
  }
237
- this.hasInit = true
238
- }
239
226
 
240
- this.updateScrollbar()
241
- },
242
- // 获取对话框的高度信息
243
- getDialogHeight() {
244
- const headerEl = this.dialogEl.querySelector('.el-dialog__header')
245
- const h = headerEl ? headerEl.offsetHeight : 0
246
- let b = this.elScrollbarViewEl ? this.elScrollbarViewEl.offsetHeight : 0
247
- const footerEl = this.dialogEl.querySelector('.nm-dialog-footer')
248
- const f = footerEl ? footerEl.offsetHeight : 0
227
+ this.updateScrollbar()
228
+ },
229
+ // 获取对话框的高度信息
230
+ getDialogHeight() {
231
+ const headerEl = this.dialogEl.querySelector('.el-dialog__header')
232
+ const h = headerEl ? headerEl.offsetHeight : 0
233
+ let b = this.elScrollbarViewEl ? this.elScrollbarViewEl.offsetHeight : 0
234
+ const footerEl = this.dialogEl.querySelector('.nm-dialog-footer')
235
+ const f = footerEl ? footerEl.offsetHeight : 0
249
236
 
250
- let full = h + b + f
251
- // 如果主动设置了高度
252
- if (this.height) {
253
- if (typeof this.height === 'number' && this.height > 0) {
254
- full = this.height
255
- } else {
256
- if (this.height.endsWith('px')) {
257
- full = parseFloat(this.height.replace('px', ''))
237
+ let full = h + b + f
238
+ // 如果主动设置了高度
239
+ if (this.height) {
240
+ if (typeof this.height === 'number' && this.height > 0) {
241
+ full = this.height
258
242
  } else {
259
- full = (document.body.clientHeight * parseFloat(this.height.replace('%', ''))) / 100 - h - f
243
+ if (this.height.endsWith('px')) {
244
+ full = parseFloat(this.height.replace('px', ''))
245
+ } else {
246
+ full = (document.body.clientHeight * parseFloat(this.height.replace('%', ''))) / 100 - h - f
247
+ }
260
248
  }
249
+ b = parseFloat(full - h - f)
261
250
  }
262
- b = parseFloat(full - h - f)
263
- }
264
-
265
- return { h, b, f, full: full }
266
- },
267
- /**
268
- * @description 更新滚动条
269
- */
270
- updateScrollbar() {
271
- // 如果有滚动条,需要更新下滚动条
272
- if (!this.noScrollbar) {
273
- this.$nextTick(() => {
274
- this.$refs.scrollbar.update()
275
- })
276
- }
277
- },
278
- /**
279
- * @description 处理拖拽点击
280
- */
281
- handleDragDown(e) {
282
- if (this.draggable_ && !this.hasFullscreen) {
283
- this.isDragDown = true
284
- this.dragDownState = e
285
251
 
286
- // 防止鼠标选中抽屉中文字,造成拖动trigger触发浏览器原生拖动行为
287
- window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty()
288
- on(document, 'mousemove', this.handleDragMove)
289
- on(document, 'mouseup', this.handleDragUp)
290
- }
291
- },
292
- /**
293
- * @description 处理拖拽移动
294
- */
295
- handleDragMove(e) {
296
- if (this.isDragDown) {
297
- let left = this.dialogEl.offsetLeft + (e.clientX - this.dragDownState.clientX)
298
- let top = this.dialogEl.offsetTop + (e.clientY - this.dragDownState.clientY)
299
- let leftMax = document.body.offsetWidth - this.dialogEl.offsetWidth
300
- let leftMin = 0
301
- let topMax = document.body.offsetHeight - this.dialogEl.offsetHeight
302
- let topMin = 0
252
+ return { h, b, f, full: full }
253
+ },
254
+ /**
255
+ * @description 更新滚动条
256
+ */
257
+ updateScrollbar() {
258
+ // 如果有滚动条,需要更新下滚动条
259
+ if (!this.noScrollbar) {
260
+ this.$nextTick(() => {
261
+ this.$refs.scrollbar.update()
262
+ })
263
+ }
264
+ },
265
+ /**
266
+ * @description 处理拖拽点击
267
+ */
268
+ handleDragDown(e) {
269
+ if (this.draggable_ && !this.hasFullscreen) {
270
+ this.isDragDown = true
271
+ this.dragDownState = e
303
272
 
304
- if (this.dragOutPage) {
305
- leftMax = document.body.offsetWidth - this.dragMinWidth
306
- leftMin = -this.dialogEl.offsetWidth + this.dragMinWidth
307
- topMax = document.body.offsetHeight - this.titleEl.offsetHeight
273
+ // 防止鼠标选中抽屉中文字,造成拖动trigger触发浏览器原生拖动行为
274
+ window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty()
275
+ on(document, 'mousemove', this.handleDragMove)
276
+ on(document, 'mouseup', this.handleDragUp)
308
277
  }
278
+ },
279
+ /**
280
+ * @description 处理拖拽移动
281
+ */
282
+ handleDragMove(e) {
283
+ if (this.isDragDown) {
284
+ let left = this.dialogEl.offsetLeft + (e.clientX - this.dragDownState.clientX)
285
+ let top = this.dialogEl.offsetTop + (e.clientY - this.dragDownState.clientY)
286
+ let leftMax = document.body.offsetWidth - this.dialogEl.offsetWidth
287
+ let leftMin = 0
288
+ let topMax = document.body.offsetHeight - this.dialogEl.offsetHeight
289
+ let topMin = 0
309
290
 
310
- this.dialogEl.style.left = Math.max(leftMin, Math.min(left, leftMax)) + 'px'
311
- this.dialogEl.style.top = Math.max(topMin, Math.min(top, topMax)) + 'px'
312
- this.dragDownState = e
313
- }
314
- },
315
- /**
316
- * @description 处理拖拽结束
317
- */
318
- handleDragUp() {
319
- this.isDragDown = false
320
- off(document, 'mousemove', this.handleDragMove)
321
- off(document, 'mouseup', this.handleDragUp)
322
- },
323
- onOpen() {
324
- this.$nextTick(() => {
325
- this.resize()
291
+ if (this.dragOutPage) {
292
+ leftMax = document.body.offsetWidth - this.dragMinWidth
293
+ leftMin = -this.dialogEl.offsetWidth + this.dragMinWidth
294
+ topMax = document.body.offsetHeight - this.titleEl.offsetHeight
295
+ }
326
296
 
327
- on(window, 'resize', this.resize)
328
- if (!this.noScrollbar) {
329
- addResizeListener(this.elScrollbarViewEl, this.resize)
297
+ this.dialogEl.style.left = Math.max(leftMin, Math.min(left, leftMax)) + 'px'
298
+ this.dialogEl.style.top = Math.max(topMin, Math.min(top, topMax)) + 'px'
299
+ this.dragDownState = e
330
300
  }
301
+ },
302
+ /**
303
+ * @description 处理拖拽结束
304
+ */
305
+ handleDragUp() {
306
+ this.isDragDown = false
307
+ off(document, 'mousemove', this.handleDragMove)
308
+ off(document, 'mouseup', this.handleDragUp)
309
+ },
310
+ onOpen() {
311
+ this.$nextTick(() => {
312
+ this.resize()
331
313
 
332
- if (!this.draggable_) return
333
- on(this.titleEl, 'mousedown', this.handleDragDown)
334
- })
314
+ on(window, 'resize', this.resize)
315
+ if (!this.noScrollbar) {
316
+ addResizeListener(this.elScrollbarViewEl, this.resize)
317
+ }
335
318
 
336
- this.$emit('open')
337
- },
338
- onOpened() {
339
- this.$emit('opened')
340
- },
341
- onClose() {
342
- off(window, 'resize', this.resize)
343
- if (!this.noScrollbar) {
344
- removeResizeListener(this.elScrollbarViewEl, this.resize)
319
+ if (!this.draggable_) return
320
+ on(this.titleEl, 'mousedown', this.handleDragDown)
321
+ })
322
+
323
+ this.$emit('open')
324
+ },
325
+ onOpened() {
326
+ this.$emit('opened')
327
+ },
328
+ onClose() {
329
+ off(window, 'resize', this.resize)
330
+ if (!this.noScrollbar) {
331
+ removeResizeListener(this.elScrollbarViewEl, this.resize)
332
+ }
333
+ off(this.titleEl, 'mousedown', this.handleDragDown)
334
+ this.$emit('close')
335
+ },
336
+ onClosed() {
337
+ this.$emit('closed')
345
338
  }
346
- off(this.titleEl, 'mousedown', this.handleDragDown)
347
- this.$emit('close')
348
339
  },
349
- onClosed() {
350
- this.$emit('closed')
340
+ mounted() {
341
+ // 打开对话框
342
+ this.open().then(id => {
343
+ this.id = 'nm-dialog-' + id
344
+ })
345
+ },
346
+ destroyed() {
347
+ off(document, 'mousemove', this.handleDragMove)
348
+ off(document, 'mouseup', this.handleDragUp)
351
349
  }
352
- },
353
- mounted() {
354
- // 打开对话框
355
- this.open().then(id => {
356
- this.id = 'nm-dialog-' + id
357
- })
358
- },
359
- destroyed() {
360
- off(document, 'mousemove', this.handleDragMove)
361
- off(document, 'mouseup', this.handleDragUp)
362
350
  }
363
- }
364
351
  </script>