haiwei-ui 1.0.3 → 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 (109) hide show
  1. package/README.md +10 -0
  2. package/package.json +1 -1
  3. package/packages/components/box/index.vue +116 -125
  4. package/packages/components/box-col/index.vue +30 -33
  5. package/packages/components/box-row/index.vue +17 -17
  6. package/packages/components/box-small/index.vue +38 -38
  7. package/packages/components/button/index.vue +29 -42
  8. package/packages/components/button-copy/index.vue +46 -62
  9. package/packages/components/button-delete/index.vue +64 -77
  10. package/packages/components/button-delete-batch/index.vue +82 -95
  11. package/packages/components/button-has/index.vue +29 -42
  12. package/packages/components/checkbox-group/index.vue +85 -85
  13. package/packages/components/color-picker/index.vue +41 -50
  14. package/packages/components/container/index.vue +8 -8
  15. package/packages/components/date-range-picker/index.vue +92 -103
  16. package/packages/components/details/index.vue +72 -79
  17. package/packages/components/dialog/index.vue +281 -294
  18. package/packages/components/drag-sort/index.vue +36 -36
  19. package/packages/components/drag-sort-dialog/index.vue +58 -58
  20. package/packages/components/drawer/index.vue +157 -166
  21. package/packages/components/enums/sex/index.vue +1 -1
  22. package/packages/components/flex/index.vue +33 -33
  23. package/packages/components/form/index.vue +123 -138
  24. package/packages/components/form-dialog/index.vue +184 -217
  25. package/packages/components/form-page/index.vue +134 -151
  26. package/packages/components/icon/index.vue +6 -6
  27. package/packages/components/icon-picker/index.vue +30 -30
  28. package/packages/components/icon-picker/panel.vue +58 -58
  29. package/packages/components/label/index.vue +22 -30
  30. package/packages/components/list/components/export/index.vue +101 -99
  31. package/packages/components/list/components/footer/index.vue +42 -51
  32. package/packages/components/list/components/header/index.vue +34 -34
  33. package/packages/components/list/components/querybar/index.vue +144 -144
  34. package/packages/components/list/components/select-column/index.vue +30 -30
  35. package/packages/components/list/components/table/index.vue +169 -188
  36. package/packages/components/list/index.vue +337 -391
  37. package/packages/components/list-agile/index.vue +145 -145
  38. package/packages/components/list-dialog/index.vue +70 -84
  39. package/packages/components/listbox/index.vue +48 -48
  40. package/packages/components/login-default/index.vue +107 -107
  41. package/packages/components/login-neon/index.vue +104 -104
  42. package/packages/components/map/index.vue +229 -229
  43. package/packages/components/map-coord-picking/index.vue +220 -219
  44. package/packages/components/map-search/index.vue +75 -72
  45. package/packages/components/scrollbar/index.vue +11 -11
  46. package/packages/components/select-whether/index.vue +30 -30
  47. package/packages/components/split/index.vue +141 -141
  48. package/packages/components/split/trigger.vue +15 -15
  49. package/packages/components/tabnav/index.vue +125 -89
  50. package/packages/components/tabs/index.vue +31 -31
  51. package/packages/components/toolbar/components/fullscreen/index.vue +10 -10
  52. package/packages/components/toolbar/components/logout/index.vue +13 -13
  53. package/packages/components/toolbar/components/skin-toggle/form.vue +59 -59
  54. package/packages/components/toolbar/components/skin-toggle/index.vue +12 -12
  55. package/packages/components/toolbar/components/userInfo/index.vue +18 -18
  56. package/packages/components/toolbar/index.vue +12 -12
  57. package/packages/components/tree-select/mixins.vue +261 -270
  58. package/packages/components/txt/index.vue +17 -17
  59. package/packages/components/update-password/index.vue +45 -57
  60. package/packages/layout.vue +18 -18
  61. package/packages/mixins/components/checkbox.vue +71 -82
  62. package/packages/mixins/components/radio.vue +69 -69
  63. package/packages/page/403/index.vue +32 -28
  64. package/packages/page/404/index.vue +32 -28
  65. package/packages/page/default/index.vue +17 -13
  66. package/packages/page/iframe/index.vue +6 -6
  67. package/packages/page/login/index.vue +9 -9
  68. package/packages/page/userInfo/index.vue +5 -5
  69. package/packages/router/index.js +1 -9
  70. package/packages/skins/pretty/components/header/components/breadcrumb/index.vue +29 -29
  71. package/packages/skins/pretty/components/header/components/theme/index.vue +22 -21
  72. package/packages/skins/pretty/components/header/index.vue +12 -12
  73. package/packages/skins/pretty/components/main/index.vue +27 -27
  74. package/packages/skins/pretty/components/menus/index.vue +28 -28
  75. package/packages/skins/pretty/components/menus/item.vue +23 -23
  76. package/packages/skins/pretty/components/sidebar/index.vue +7 -7
  77. package/packages/skins/pretty/index.vue +6 -6
  78. package/packages/skins/pretty/styles/themes/blue-light/_index.scss +2 -2
  79. package/packages/skins/pretty/styles/themes/default/_index.scss +1 -1
  80. package/packages/skins/pretty/styles/themes/green/_index.scss +2 -2
  81. package/packages/skins/pretty/styles/themes/green-light/_index.scss +2 -2
  82. package/packages/styles/_mixins.scss +24 -25
  83. package/packages/styles/animation/_index.scss +22 -23
  84. package/packages/styles/animation/breadcrumb.scss +6 -6
  85. package/packages/styles/animation/fade.scss +11 -11
  86. package/packages/styles/animation/move.scss +98 -98
  87. package/packages/styles/components/box-small/_index.scss +58 -58
  88. package/packages/styles/components/button/_index.scss +7 -7
  89. package/packages/styles/components/container/_index.scss +26 -26
  90. package/packages/styles/components/date-range-picker/_index.scss +4 -4
  91. package/packages/styles/components/details/_index.scss +66 -67
  92. package/packages/styles/components/details-dialog/_index.scss +13 -13
  93. package/packages/styles/components/drag-sort/_index.scss +20 -20
  94. package/packages/styles/components/drag-sort-dialog/_index.scss +7 -7
  95. package/packages/styles/components/flex/_index.scss +56 -56
  96. package/packages/styles/components/form-dialog/_index.scss +11 -11
  97. package/packages/styles/components/icon/_index.scss +6 -6
  98. package/packages/styles/components/label/_index.scss +245 -245
  99. package/packages/styles/components/listbox/_index.scss +47 -47
  100. package/packages/styles/components/split/_index.scss +102 -102
  101. package/packages/styles/components/toolbar/_index.scss +98 -98
  102. package/packages/styles/components/txt/_index.scss +13 -13
  103. package/packages/styles/components/upload-dialog/_index.scss +44 -44
  104. package/packages/styles/components/upload-multiple/_index.scss +19 -19
  105. package/packages/styles/components/upload-single/_index.scss +16 -16
  106. package/packages/utils/resize-event.js +3 -3
  107. package/packages/vuter/attributes.json +30 -40
  108. package/packages/vuter/tags.json +11 -27
  109. package/public/lib/font/iconfont.js +47 -1
package/README.md CHANGED
@@ -5,30 +5,35 @@ HaiWei.UI 是一个基于 Vue2 + ElementUI 的业务模块化前端快速开发
5
5
  ## 主要特性
6
6
 
7
7
  ### 🎯 核心架构
8
+
8
9
  - **模块化设计** - 支持业务模块的独立开发和集成
9
10
  - **组件化开发** - 基于 Vue2 的组件化开发模式
10
11
  - **统一状态管理** - 使用 Vuex 进行全局状态管理
11
12
  - **路由管理** - 支持动态路由和权限控制
12
13
 
13
14
  ### 🎨 UI 组件库
15
+
14
16
  - **基础组件** - 丰富的表单、表格、弹窗等基础组件
15
17
  - **业务组件** - 针对常见业务场景封装的专用组件
16
18
  - **布局组件** - 灵活的页面布局和导航组件
17
19
  - **图表组件** - 数据可视化图表组件
18
20
 
19
21
  ### 🔧 开发工具
22
+
20
23
  - **开发服务器** - 内置开发服务器,支持热重载
21
24
  - **构建工具** - 基于 Vue CLI 的现代化构建流程
22
25
  - **代码规范** - 集成 ESLint 和 Prettier 代码规范
23
26
  - **TypeScript 支持** - 可选 TypeScript 支持
24
27
 
25
28
  ### 🛠️ 功能模块
29
+
26
30
  - **权限管理** - 基于角色的权限控制系统
27
31
  - **皮肤主题** - 支持自定义皮肤和主题切换
28
32
  - **登录页面** - 可定制的登录页面组件
29
33
  - **数据管理** - 统一的数据请求和状态管理
30
34
 
31
35
  ### 📦 部署与发布
36
+
32
37
  - **npm 发布** - 支持作为 npm 包发布和分发
33
38
  - **模块集成** - 模块化的集成和依赖管理
34
39
  - **构建优化** - 生产环境构建优化和代码压缩
@@ -36,25 +41,30 @@ HaiWei.UI 是一个基于 Vue2 + ElementUI 的业务模块化前端快速开发
36
41
  ## 快速开始
37
42
 
38
43
  ### 环境要求
44
+
39
45
  - Node.js >= 12.0.0
40
46
  - npm >= 6.0.0
41
47
 
42
48
  ### 安装依赖
49
+
43
50
  ```bash
44
51
  npm install
45
52
  ```
46
53
 
47
54
  ### 开发模式
55
+
48
56
  ```bash
49
57
  npm run serve
50
58
  ```
51
59
 
52
60
  ### 构建生产版本
61
+
53
62
  ```bash
54
63
  npm run build
55
64
  ```
56
65
 
57
66
  ### 代码检查
67
+
58
68
  ```bash
59
69
  npm run lint
60
70
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haiwei-ui",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "HaiWei前端组件库",
5
5
  "author": "Eric",
6
6
  "license": "ISC",
@@ -45,137 +45,128 @@
45
45
  </section>
46
46
  </template>
47
47
  <script>
48
- import { mapState } from 'vuex'
49
- export default {
50
- name: 'Box',
51
- data() {
52
- return {
53
- collapse_: false,
54
- fullscreen_: false
55
- }
56
- },
57
- props: {
58
- /** 标题 */
59
- title: String,
60
- /** 图标 */
61
- icon: String,
62
- /** 是否显示头部 */
63
- header: Boolean,
64
- /** 是否显示底部 */
65
- footer: Boolean,
66
- /** 底部对齐方式 */
67
- footerAlign: {
68
- type: String,
69
- default: 'right'
70
- },
71
- /** 高度 */
72
- height: String,
73
- /** 是否显示顶部边框 */
74
- border: Boolean,
75
- /** 顶部边框的颜色 */
76
- borderColor: {
77
- type: String,
78
- default: 'success'
79
- },
80
- /** 标题是否加粗 */
81
- titleBold: Boolean,
82
- /** 是否显示水平滚动条 */
83
- horizontal: Boolean,
84
- /** loading */
85
- loading: Boolean,
86
- /** 是否页模式 */
87
- page: Boolean,
88
- /** 是否显示全屏按钮 */
89
- fullscreen: Boolean,
90
- /** 是否显示折叠按钮 */
91
- collapse: Boolean,
92
- /** 自定义折叠事件 */
93
- customCollapseEvent: Function,
94
- /** 不显示滚动条 */
95
- noScrollbar: Boolean,
96
- /** 没有内边距 */
97
- noPadding: Boolean,
98
- /** 是否显示刷新按钮 */
99
- refresh: Boolean
100
- },
101
- computed: {
102
- ...mapState('app/loading', { loadingText: 'text', loadingBackground: 'background', loadingSpinner: 'spinner' }),
103
- /** 生成class */
104
- class_() {
105
- let classArr = [
106
- 'nm-box',
107
- this.fontSize,
108
- this.fullscreen_ ? 'fullscreen' : '',
109
- this.height ? 'has-height' : '',
110
- this.page ? 'page' : '',
111
- this.noPadding ? 'no-padding' : '',
112
- this.border ? 'border' : '',
113
- this.titleBold ? 'title-bold' : ''
114
- ]
115
-
116
- if (['success', 'primary', 'info', 'warning', 'danger'].includes(this.borderColor)) {
117
- classArr.push(this.borderColor)
48
+ import { mapState } from 'vuex'
49
+ export default {
50
+ name: 'Box',
51
+ data() {
52
+ return {
53
+ collapse_: false,
54
+ fullscreen_: false
118
55
  }
119
- return classArr
120
56
  },
121
- style_() {
122
- let style = { height: this.height }
123
- if (!['success', 'primary', 'info', 'warning', 'danger'].includes(this.borderColor)) {
124
- style.borderTopCoder = this.borderColor
125
- }
126
- return style
127
- },
128
- /** 是否有滚动条 */
129
- hasScrollbar() {
130
- return !this.noScrollbar && (this.height || this.page)
57
+ props: {
58
+ /** 标题 */
59
+ title: String,
60
+ /** 图标 */
61
+ icon: String,
62
+ /** 是否显示头部 */
63
+ header: Boolean,
64
+ /** 是否显示底部 */
65
+ footer: Boolean,
66
+ /** 底部对齐方式 */
67
+ footerAlign: {
68
+ type: String,
69
+ default: 'right'
70
+ },
71
+ /** 高度 */
72
+ height: String,
73
+ /** 是否显示顶部边框 */
74
+ border: Boolean,
75
+ /** 顶部边框的颜色 */
76
+ borderColor: {
77
+ type: String,
78
+ default: 'success'
79
+ },
80
+ /** 标题是否加粗 */
81
+ titleBold: Boolean,
82
+ /** 是否显示水平滚动条 */
83
+ horizontal: Boolean,
84
+ /** loading */
85
+ loading: Boolean,
86
+ /** 是否页模式 */
87
+ page: Boolean,
88
+ /** 是否显示全屏按钮 */
89
+ fullscreen: Boolean,
90
+ /** 是否显示折叠按钮 */
91
+ collapse: Boolean,
92
+ /** 自定义折叠事件 */
93
+ customCollapseEvent: Function,
94
+ /** 不显示滚动条 */
95
+ noScrollbar: Boolean,
96
+ /** 没有内边距 */
97
+ noPadding: Boolean,
98
+ /** 是否显示刷新按钮 */
99
+ refresh: Boolean
131
100
  },
132
- /** 是否可以折叠 */
133
- isCollapse() {
134
- return this.collapse && !this.page
135
- }
136
- },
137
- methods: {
138
- /** 开启全屏 */
139
- openFullscreen() {
140
- this.fullscreen_ = true
141
- // 全屏事件
142
- this.$emit('fullscreen-change', this.fullscreen_)
143
- },
144
- /** 关闭全屏 */
145
- closeFullscreen() {
146
- this.fullscreen_ = false
147
- // 全屏事件
148
- this.$emit('fullscreen-change', this.fullscreen_)
149
- },
150
- /** 滚动条重置 */
151
- scrollbarResize() {
152
- if (this.hasScrollbar) {
153
- this.$refs.scrollbar.update()
154
- }
155
- },
156
- /** 折叠事件 */
157
- onCollapse() {
158
- // 如果设置了自定义折叠事件,则覆盖默认的
159
- if (this.customCollapseEvent) {
160
- this.collapse_ = this.customCollapseEvent()
161
- } else if (this.isCollapse) {
162
- this.collapse_ = !this.collapse_
101
+ computed: {
102
+ ...mapState('app/loading', { loadingText: 'text', loadingBackground: 'background', loadingSpinner: 'spinner' }),
103
+ /** 生成class */
104
+ class_() {
105
+ let classArr = ['nm-box', this.fontSize, this.fullscreen_ ? 'fullscreen' : '', this.height ? 'has-height' : '', this.page ? 'page' : '', this.noPadding ? 'no-padding' : '', this.border ? 'border' : '', this.titleBold ? 'title-bold' : '']
106
+
107
+ if (['success', 'primary', 'info', 'warning', 'danger'].includes(this.borderColor)) {
108
+ classArr.push(this.borderColor)
109
+ }
110
+ return classArr
111
+ },
112
+ style_() {
113
+ let style = { height: this.height }
114
+ if (!['success', 'primary', 'info', 'warning', 'danger'].includes(this.borderColor)) {
115
+ style.borderTopCoder = this.borderColor
116
+ }
117
+ return style
118
+ },
119
+ /** 是否有滚动条 */
120
+ hasScrollbar() {
121
+ return !this.noScrollbar && (this.height || this.page)
122
+ },
123
+ /** 是否可以折叠 */
124
+ isCollapse() {
125
+ return this.collapse && !this.page
163
126
  }
164
- // 折叠事件
165
- this.$emit('collapse-change', this.collapse_)
166
127
  },
167
- /** 全屏事件 */
168
- onFullscreen() {
169
- if (this.fullscreen_) {
170
- this.closeFullscreen()
171
- } else {
172
- this.openFullscreen()
128
+ methods: {
129
+ /** 开启全屏 */
130
+ openFullscreen() {
131
+ this.fullscreen_ = true
132
+ // 全屏事件
133
+ this.$emit('fullscreen-change', this.fullscreen_)
134
+ },
135
+ /** 关闭全屏 */
136
+ closeFullscreen() {
137
+ this.fullscreen_ = false
138
+ // 全屏事件
139
+ this.$emit('fullscreen-change', this.fullscreen_)
140
+ },
141
+ /** 滚动条重置 */
142
+ scrollbarResize() {
143
+ if (this.hasScrollbar) {
144
+ this.$refs.scrollbar.update()
145
+ }
146
+ },
147
+ /** 折叠事件 */
148
+ onCollapse() {
149
+ // 如果设置了自定义折叠事件,则覆盖默认的
150
+ if (this.customCollapseEvent) {
151
+ this.collapse_ = this.customCollapseEvent()
152
+ } else if (this.isCollapse) {
153
+ this.collapse_ = !this.collapse_
154
+ }
155
+ // 折叠事件
156
+ this.$emit('collapse-change', this.collapse_)
157
+ },
158
+ /** 全屏事件 */
159
+ onFullscreen() {
160
+ if (this.fullscreen_) {
161
+ this.closeFullscreen()
162
+ } else {
163
+ this.openFullscreen()
164
+ }
165
+ },
166
+ /** 刷新按钮事件 */
167
+ onRefresh() {
168
+ this.$emit('refresh')
173
169
  }
174
- },
175
- /** 刷新按钮事件 */
176
- onRefresh() {
177
- this.$emit('refresh')
178
170
  }
179
171
  }
180
- }
181
172
  </script>
@@ -1,43 +1,40 @@
1
1
  <template>
2
- <section
3
- :class="['nm-box-col', span ? 'nm-box-col-' + span : '', offset ? 'nm-box-col-offset-' + offset : '', push ? 'nm-box-col-push-' + push : '', pull ? 'nm-box-col-pull-' + pull : '']"
4
- :style="style"
5
- >
2
+ <section :class="['nm-box-col', span ? 'nm-box-col-' + span : '', offset ? 'nm-box-col-offset-' + offset : '', push ? 'nm-box-col-push-' + push : '', pull ? 'nm-box-col-pull-' + pull : '']" :style="style">
6
3
  <slot />
7
4
  </section>
8
5
  </template>
9
6
  <script>
10
- export default {
11
- name: 'BoxCol',
12
- props: {
13
- // 栅格占据的列数
14
- span: {
15
- type: Number,
16
- default: 24
17
- },
18
- // 栅格左侧的间隔格数
19
- offset: {
20
- type: Number,
21
- default: 0
22
- },
23
- // 栅格向右移动格数
24
- push: {
25
- type: Number,
26
- default: 0
7
+ export default {
8
+ name: 'BoxCol',
9
+ props: {
10
+ // 栅格占据的列数
11
+ span: {
12
+ type: Number,
13
+ default: 24
14
+ },
15
+ // 栅格左侧的间隔格数
16
+ offset: {
17
+ type: Number,
18
+ default: 0
19
+ },
20
+ // 栅格向右移动格数
21
+ push: {
22
+ type: Number,
23
+ default: 0
24
+ },
25
+ // 栅格向左移动格数
26
+ pull: {
27
+ type: Number,
28
+ default: 0
29
+ }
27
30
  },
28
- // 栅格向左移动格数
29
- pull: {
30
- type: Number,
31
- default: 0
32
- }
33
- },
34
- computed: {
35
- style() {
36
- return {
37
- paddingLeft: this.$parent.gutter_,
38
- paddingRight: this.$parent.gutter_
31
+ computed: {
32
+ style() {
33
+ return {
34
+ paddingLeft: this.$parent.gutter_,
35
+ paddingRight: this.$parent.gutter_
36
+ }
39
37
  }
40
38
  }
41
39
  }
42
- }
43
40
  </script>
@@ -4,24 +4,24 @@
4
4
  </section>
5
5
  </template>
6
6
  <script>
7
- export default {
8
- name: 'BoxRow',
9
- props: {
10
- /** 间隔 */
11
- gutter: {
12
- type: Number,
13
- default: 5
7
+ export default {
8
+ name: 'BoxRow',
9
+ props: {
10
+ /** 间隔 */
11
+ gutter: {
12
+ type: Number,
13
+ default: 5
14
+ },
15
+ /** 高度 */
16
+ height: {
17
+ type: String,
18
+ required: true
19
+ }
14
20
  },
15
- /** 高度 */
16
- height: {
17
- type: String,
18
- required: true
19
- }
20
- },
21
- computed: {
22
- gutter_() {
23
- return this.gutter / 2 + 'px'
21
+ computed: {
22
+ gutter_() {
23
+ return this.gutter / 2 + 'px'
24
+ }
24
25
  }
25
26
  }
26
- }
27
27
  </script>
@@ -17,48 +17,48 @@
17
17
  </div>
18
18
  </template>
19
19
  <script>
20
- export default {
21
- name: 'BoxSmall',
22
- props: {
23
- /** 文本 */
24
- label: String,
25
- /** 值 */
26
- value: [String, Number],
27
- /** 单位 */
28
- unit: String,
29
- /** 图标 */
30
- icon: String,
31
- /** 显示更多 */
32
- more: Boolean,
33
- /** 背景色 */
34
- bgColor: {
35
- type: String,
36
- default: 'success'
37
- }
38
- },
39
- computed: {
40
- class_() {
41
- let classArr = ['nm-box-small']
42
- if (this.includeBgColor) {
43
- classArr.push(`nm-bg-${this.bgColor}`)
20
+ export default {
21
+ name: 'BoxSmall',
22
+ props: {
23
+ /** 文本 */
24
+ label: String,
25
+ /** 值 */
26
+ value: [String, Number],
27
+ /** 单位 */
28
+ unit: String,
29
+ /** 图标 */
30
+ icon: String,
31
+ /** 显示更多 */
32
+ more: Boolean,
33
+ /** 背景色 */
34
+ bgColor: {
35
+ type: String,
36
+ default: 'success'
44
37
  }
45
- return classArr
46
38
  },
47
- style_() {
48
- let style = {}
49
- if (!this.includeBgColor) {
50
- style.backgroundColor = this.bgColor
39
+ computed: {
40
+ class_() {
41
+ let classArr = ['nm-box-small']
42
+ if (this.includeBgColor) {
43
+ classArr.push(`nm-bg-${this.bgColor}`)
44
+ }
45
+ return classArr
46
+ },
47
+ style_() {
48
+ let style = {}
49
+ if (!this.includeBgColor) {
50
+ style.backgroundColor = this.bgColor
51
+ }
52
+ return style
53
+ },
54
+ includeBgColor() {
55
+ return ['success', 'primary', 'info', 'warning', 'danger'].includes(this.bgColor)
51
56
  }
52
- return style
53
57
  },
54
- includeBgColor() {
55
- return ['success', 'primary', 'info', 'warning', 'danger'].includes(this.bgColor)
56
- }
57
- },
58
- methods: {
59
- onMore() {
60
- this.$emit('more')
58
+ methods: {
59
+ onMore() {
60
+ this.$emit('more')
61
+ }
61
62
  }
62
63
  }
63
- }
64
64
  </script>
@@ -1,18 +1,5 @@
1
1
  <template>
2
- <el-button
3
- class="nm-button"
4
- :type="type"
5
- :size="size || fontSize"
6
- :plain="plain"
7
- :round="round"
8
- :circle="circle"
9
- :loading="loading"
10
- :disabled="disabled"
11
- :autofocus="autofocus"
12
- :native-type="nativeType"
13
- v-nm-has="code"
14
- @click="$emit('click')"
15
- >
2
+ <el-button class="nm-button" :type="type" :size="size || fontSize" :plain="plain" :round="round" :circle="circle" :loading="loading" :disabled="disabled" :autofocus="autofocus" :native-type="nativeType" v-nm-has="code" @click="$emit('click')">
16
3
  <nm-icon v-if="!loading && icon" :name="icon" />
17
4
  <slot>
18
5
  <span v-if="!circle && text" class="nm-button-text" v-html="text" />
@@ -20,33 +7,33 @@
20
7
  </el-button>
21
8
  </template>
22
9
  <script>
23
- export default {
24
- name: 'Button',
25
- props: {
26
- /** 尺寸,默认按照框架的字号设置 */
27
- size: String,
28
- /** 类型 primary/success/warning/danger/info/text */
29
- type: String,
30
- /** 是否朴素按钮 */
31
- plain: Boolean,
32
- /** 是否圆角按钮 */
33
- round: Boolean,
34
- /** 是否圆形按钮 */
35
- circle: Boolean,
36
- /** 是否加载中状态 */
37
- loading: Boolean,
38
- /** 是否禁用状态 */
39
- disabled: Boolean,
40
- /** 是否默认聚焦 */
41
- autofocus: Boolean,
42
- /** 原生 type 属性 button/submit/reset */
43
- nativeType: String,
44
- /** 图标 */
45
- icon: String,
46
- // 文本
47
- text: String,
48
- // 按钮编码,用于按钮权限控制
49
- code: String
10
+ export default {
11
+ name: 'Button',
12
+ props: {
13
+ /** 尺寸,默认按照框架的字号设置 */
14
+ size: String,
15
+ /** 类型 primary/success/warning/danger/info/text */
16
+ type: String,
17
+ /** 是否朴素按钮 */
18
+ plain: Boolean,
19
+ /** 是否圆角按钮 */
20
+ round: Boolean,
21
+ /** 是否圆形按钮 */
22
+ circle: Boolean,
23
+ /** 是否加载中状态 */
24
+ loading: Boolean,
25
+ /** 是否禁用状态 */
26
+ disabled: Boolean,
27
+ /** 是否默认聚焦 */
28
+ autofocus: Boolean,
29
+ /** 原生 type 属性 button/submit/reset */
30
+ nativeType: String,
31
+ /** 图标 */
32
+ icon: String,
33
+ // 文本
34
+ text: String,
35
+ // 按钮编码,用于按钮权限控制
36
+ code: String
37
+ }
50
38
  }
51
- }
52
39
  </script>