hbte-saas-ui 0.0.1

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 (137) hide show
  1. package/.browserslistrc +3 -0
  2. package/.editorconfig +7 -0
  3. package/.env.development +1 -0
  4. package/.env.lib +1 -0
  5. package/.eslintrc.js +14 -0
  6. package/.prettierrc +3 -0
  7. package/README.md +53 -0
  8. package/babel.config.js +3 -0
  9. package/docs/.vuepress/config.js +23 -0
  10. package/docs/.vuepress/styles/index.styl +4 -0
  11. package/docs/AdvQuery.md +26 -0
  12. package/docs/CustomQuery.md +21 -0
  13. package/docs/EditArea.md +16 -0
  14. package/docs/FilterDrop.md +29 -0
  15. package/docs/FullTable.md +68 -0
  16. package/docs/Pagination.md +22 -0
  17. package/docs/QueryForm.md +27 -0
  18. package/docs/README.md +17 -0
  19. package/docs/Table.md +58 -0
  20. package/docs/ToolGroup.md +32 -0
  21. package/examples/App.vue +97 -0
  22. package/examples/image/hb-image-viewer/3k.jpg +0 -0
  23. package/examples/image/hb-image-viewer/a.jpg +0 -0
  24. package/examples/image/hb-image-viewer/b.jpg +0 -0
  25. package/examples/main.js +39 -0
  26. package/examples/mock/authority.js +1108 -0
  27. package/examples/mock/dept.js +4001 -0
  28. package/examples/mock/fulltable.js +407 -0
  29. package/examples/mock/organizeData.js +18965 -0
  30. package/examples/router/index.js +111 -0
  31. package/examples/views/ElementCpTest.vue +299 -0
  32. package/examples/views/Fragment.vue +196 -0
  33. package/examples/views/HBAdvQuery.vue +150 -0
  34. package/examples/views/HBAuthority.vue +339 -0
  35. package/examples/views/HBDialog.vue +39 -0
  36. package/examples/views/HBEditarea.vue +350 -0
  37. package/examples/views/HBFilterDrop.vue +72 -0
  38. package/examples/views/HBFloatFooter.vue +42 -0
  39. package/examples/views/HBFullTable.vue +751 -0
  40. package/examples/views/HBImageViewer.vue +57 -0
  41. package/examples/views/HBNavMenu.vue +37 -0
  42. package/examples/views/HBOrganizeDialog.vue +133 -0
  43. package/examples/views/HBPagination.vue +80 -0
  44. package/examples/views/HBSelectVague.vue +57 -0
  45. package/examples/views/HBToolgroup.vue +29 -0
  46. package/examples/views/HBTopBar.vue +16 -0
  47. package/lib/demo.html +10 -0
  48. package/lib/fonts/iconfont.9e99af35.ttf +0 -0
  49. package/lib/hbte-ui.common.js +38291 -0
  50. package/lib/hbte-ui.css +1 -0
  51. package/lib/hbte-ui.umd.js +38301 -0
  52. package/lib/hbte-ui.umd.min.js +21 -0
  53. package/lib/img/nodata.f87d17c1.png +0 -0
  54. package/lib/img/user-logo--default.a53bd193.png +0 -0
  55. package/package.json +40 -0
  56. package/packages/adv-query/index.js +5 -0
  57. package/packages/adv-query/src/main.vue +294 -0
  58. package/packages/area-select/index.js +7 -0
  59. package/packages/area-select/src/main.vue +37 -0
  60. package/packages/authority/index.js +5 -0
  61. package/packages/authority/src/main.vue +606 -0
  62. package/packages/config.js +3 -0
  63. package/packages/custom-query/index.js +5 -0
  64. package/packages/custom-query/src/main.vue +80 -0
  65. package/packages/dialog/index.js +7 -0
  66. package/packages/dialog/src/main.vue +176 -0
  67. package/packages/edit-area/index.js +13 -0
  68. package/packages/edit-area/src/config.js +3 -0
  69. package/packages/edit-area/src/main.vue +304 -0
  70. package/packages/edit-area/src/simulateEvent.js +219 -0
  71. package/packages/filter-drop/index.js +6 -0
  72. package/packages/filter-drop/src/main.vue +107 -0
  73. package/packages/float-footer/index.js +7 -0
  74. package/packages/float-footer/src/main.vue +40 -0
  75. package/packages/fragment/index.js +7 -0
  76. package/packages/fragment/src/main.vue +74 -0
  77. package/packages/fragment/src/old.vue +144 -0
  78. package/packages/full-table/index.js +6 -0
  79. package/packages/full-table/src/config.js +14 -0
  80. package/packages/full-table/src/main.vue +141 -0
  81. package/packages/image-viewer/index.js +8 -0
  82. package/packages/image-viewer/src/main.js +14 -0
  83. package/packages/image-viewer/src/main.vue +138 -0
  84. package/packages/image-viewer/src/svg/cancel.svg +2 -0
  85. package/packages/image-viewer/src/svg/delete.svg +2 -0
  86. package/packages/image-viewer/src/svg/download.svg +2 -0
  87. package/packages/image-viewer/src/svg/rotate.svg +77 -0
  88. package/packages/image-viewer/src/svg/scaledown.svg +71 -0
  89. package/packages/image-viewer/src/svg/scaleup.svg +72 -0
  90. package/packages/index.js +43 -0
  91. package/packages/nav-menu/index.js +7 -0
  92. package/packages/nav-menu/src/main.vue +277 -0
  93. package/packages/organize-dialog/index.js +5 -0
  94. package/packages/organize-dialog/src/main.vue +427 -0
  95. package/packages/pagination/index.js +6 -0
  96. package/packages/pagination/src/main.vue +145 -0
  97. package/packages/query-form/index.js +5 -0
  98. package/packages/query-form/src/main.vue +142 -0
  99. package/packages/select-vague/index.js +5 -0
  100. package/packages/select-vague/src/main.vue +80 -0
  101. package/packages/table/index.js +5 -0
  102. package/packages/table/src/main.vue +265 -0
  103. package/packages/theme-chalk/adv-query.scss +107 -0
  104. package/packages/theme-chalk/authority.scss +103 -0
  105. package/packages/theme-chalk/common/elementCover.scss +722 -0
  106. package/packages/theme-chalk/common/flex.scss +66 -0
  107. package/packages/theme-chalk/common/global.scss +147 -0
  108. package/packages/theme-chalk/common/reset.scss +92 -0
  109. package/packages/theme-chalk/common/var.scss +46 -0
  110. package/packages/theme-chalk/custom-query.scss +10 -0
  111. package/packages/theme-chalk/dialog.scss +9 -0
  112. package/packages/theme-chalk/edit-area.scss +119 -0
  113. package/packages/theme-chalk/filter-drop.scss +81 -0
  114. package/packages/theme-chalk/float-footer.scss +14 -0
  115. package/packages/theme-chalk/fonts/iconfont.ttf +0 -0
  116. package/packages/theme-chalk/fragment.scss +51 -0
  117. package/packages/theme-chalk/full-table.scss +40 -0
  118. package/packages/theme-chalk/icon.scss +96 -0
  119. package/packages/theme-chalk/image-viewer.scss +94 -0
  120. package/packages/theme-chalk/images/company-logo--default.png +0 -0
  121. package/packages/theme-chalk/images/nodata.png +0 -0
  122. package/packages/theme-chalk/images/user-logo--default.png +0 -0
  123. package/packages/theme-chalk/index.scss +21 -0
  124. package/packages/theme-chalk/nav-menu.scss +205 -0
  125. package/packages/theme-chalk/organize-dialog.scss +170 -0
  126. package/packages/theme-chalk/pagination.scss +91 -0
  127. package/packages/theme-chalk/select.scss +8 -0
  128. package/packages/theme-chalk/table.scss +102 -0
  129. package/packages/theme-chalk/tool-group.scss +105 -0
  130. package/packages/theme-chalk/top-bar.scss +195 -0
  131. package/packages/tool-group/index.js +13 -0
  132. package/packages/tool-group/src/config.js +40 -0
  133. package/packages/tool-group/src/main.vue +93 -0
  134. package/packages/top-bar/index.js +7 -0
  135. package/packages/top-bar/src/main.vue +280 -0
  136. package/public/index.html +20 -0
  137. package/vue.config.js +6 -0
@@ -0,0 +1,102 @@
1
+ @import "common/var.scss";
2
+
3
+ .hb-table {
4
+ display: flex;
5
+ border-radius: 4px;
6
+ overflow: hidden;
7
+ .el-table--border,
8
+ .el-table--group {
9
+ border: 1px solid #dbdbdb;
10
+ }
11
+ // 单元格样式
12
+ .el-table {
13
+ &__empty-block {
14
+ min-height: 155px;
15
+ }
16
+ &__fixed-right-patch,
17
+ &__cell.gutter {
18
+ background-color: #eff1f5;
19
+ }
20
+
21
+ // th > cell
22
+ th.hb-table-header-cell {
23
+ position: relative;
24
+ padding: 7px 0;
25
+ font-size: 12px;
26
+ background-color: #eff1f5;
27
+ border-color: #eeeeee;
28
+ color: $mainColor;
29
+
30
+ > .cell {
31
+ color: inherit;
32
+ font-weight: bold;
33
+ line-height: 20px;
34
+ padding-left: 12px;
35
+ padding-right: 12px;
36
+ vertical-align: middle;
37
+ }
38
+ }
39
+
40
+ // tr > cell
41
+ .hb-table-cell {
42
+ position: relative;
43
+ padding: 6px 0;
44
+ font-size: 12px;
45
+ border-color: #eeeeee;
46
+ color: #222222;
47
+
48
+ > .cell {
49
+ color: inherit;
50
+ line-height: 18px;
51
+ min-height: 18px;
52
+ padding-left: 12px;
53
+ padding-right: 12px;
54
+ }
55
+ &:hover {
56
+ background-color: #ffffff;
57
+ }
58
+ }
59
+
60
+ // 序号列样式再调整
61
+ th.hb-table-index > .cell,
62
+ tr.hb-table-index > .cell {
63
+ padding-left: 8px;
64
+ padding-right: 8px;
65
+ }
66
+
67
+ // 无数据
68
+ .hb-table-nodata {
69
+ margin: 0 auto;
70
+ width: 140px;
71
+ height: 55px;
72
+ background: url("./images/nodata.png") no-repeat center;
73
+ background-size: 100% auto;
74
+ }
75
+ .hb-table-nodata-text {
76
+ height: 30px;
77
+ line-height: 30px;
78
+ font-size: 12px;
79
+ }
80
+
81
+ // 编辑单元格无边距,便于编辑区域填充整个单元格
82
+ .hb-table__edit {
83
+ position: absolute;
84
+ left: 0;
85
+ top: 0;
86
+ right: 0;
87
+ bottom: 0;
88
+ line-height: 31px;
89
+ }
90
+ .hb-table__keep {
91
+ position: relative;
92
+ // left: 0;
93
+ // top: 0;
94
+ // right: initial;
95
+ // bottom: initial;
96
+ display: block;
97
+ margin-left: -6px;
98
+ margin-right: -6px;
99
+ width: auto;
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,105 @@
1
+ @import "common/var.scss";
2
+
3
+ .hb-toolgroup {
4
+ padding: 10px 0;
5
+ height: 24px;
6
+ display: flex;
7
+ justify-content: space-around;
8
+
9
+ // 按钮
10
+ &-btn {
11
+ border-radius: 2px;
12
+ position: relative;
13
+ display: inline-block;
14
+ box-sizing: border-box;
15
+ margin-right: 10px;
16
+ padding-left: 24px;
17
+ height: 24px;
18
+ font-size: 12px;
19
+ line-height: 24px;
20
+ vertical-align: middle;
21
+ background: $primaryBg;
22
+ color: #ffffff;
23
+ cursor: pointer;
24
+ &:hover {
25
+ background: #2878ff;
26
+ }
27
+ &-shrink {
28
+ padding-left: 4px;
29
+ }
30
+ &:active {
31
+ background: darken($primaryBg, 10%);
32
+ }
33
+ & > i {
34
+ position: absolute;
35
+ left: 2px;
36
+ top: 0;
37
+ display: block;
38
+ height: 24px;
39
+ width: 24px;
40
+ font-size: 14px;
41
+ line-height: 24px;
42
+ text-align: center;
43
+ }
44
+ & > span {
45
+ padding: 0 6px 0 2px;
46
+ }
47
+ }
48
+ &__prefix {
49
+ flex: 1;
50
+ }
51
+ &__inner {
52
+ display: block;
53
+ padding: 0 10px;
54
+ }
55
+ &__suffix {
56
+ width: 200px;
57
+ border-radius: 2px;
58
+ // elementUI调整
59
+ .el-input > input {
60
+ border: {
61
+ width: 1px 0 1px 1px;
62
+ style: solid;
63
+ color: #e5e5e5;
64
+ }
65
+
66
+ border-radius: 2px 0 0 2px;
67
+ padding-left: 28px;
68
+ height: 24px;
69
+ line-height: 22px;
70
+ }
71
+
72
+ .el-input__prefix {
73
+ left: 2px;
74
+
75
+ .el-input__icon {
76
+ line-height: 24px;
77
+ font-size: 16px;
78
+ color: #999;
79
+ }
80
+ }
81
+
82
+ .el-input-group__append {
83
+ border: none;
84
+ border-radius: 0 2px 2px 0;
85
+ padding: 0;
86
+ height: 24px;
87
+ font-size: 12px;
88
+ line-height: 24px;
89
+ color: #fff;
90
+ background-color: $primaryBg;
91
+ cursor: pointer;
92
+ .append-text {
93
+ display: block;
94
+ height: 24px;
95
+ padding: 0 10px;
96
+ }
97
+ &:hover {
98
+ background: #2878ff;
99
+ }
100
+ &:active {
101
+ background: darken($primaryBg, 10%);
102
+ }
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,195 @@
1
+ @import "common/var.scss";
2
+ .hb-topbar {
3
+ width: 100%;
4
+ min-width: 1360px;
5
+ height: 60px;
6
+ background-color: #fff;
7
+ padding-right: 0;
8
+ position: relative;
9
+ z-index: 200;
10
+ // padding-right: 20px;
11
+ // top
12
+ &__top {
13
+ height: 32px;
14
+ line-height: 32px;
15
+ display: flex;
16
+ justify-content: space-between;
17
+ box-sizing: border-box;
18
+ border-bottom: 1px solid #f3f3f3;
19
+ padding-right: 20px;
20
+ }
21
+ &__wrap {
22
+ display: flex;
23
+ }
24
+ &__right {
25
+ display: flex;
26
+ .el-dropdown {
27
+ font-size: 12px;
28
+ }
29
+ &--dropdown-item {
30
+ font-size: 12px;
31
+ }
32
+ }
33
+ &__block {
34
+ height: 60px;
35
+ width: 70px;
36
+ padding: 12px 15px 0px 15px;
37
+ box-sizing: border-box;
38
+ background-color: #2878ff;
39
+ }
40
+ &__text {
41
+ margin-left: 13px;
42
+ font-weight: 400;
43
+ font-size: 14px;
44
+ color: #111;
45
+ }
46
+ &-logo {
47
+ width: 40px;
48
+ height: 40px;
49
+ }
50
+ &-avatar {
51
+ display: flex;
52
+ align-items: center;
53
+ img {
54
+ width: 20px;
55
+ height: 20px;
56
+ border-radius: 50%;
57
+ margin-left: 15px;
58
+ }
59
+ }
60
+ &-icon {
61
+ display: flex;
62
+ align-items: center;
63
+ margin: 0px 10px;
64
+ &__item {
65
+ width: 24px;
66
+ height: 24px;
67
+ margin: 0px 5px;
68
+ cursor: pointer;
69
+ display: flex;
70
+ justify-content: center;
71
+ align-items: center;
72
+ border-radius: 4px;
73
+ font-size: 16px;
74
+ &:hover {
75
+ color: $primaryBg;
76
+ background-color: #eef4ff;
77
+ }
78
+ }
79
+ &--active {
80
+ background: #ccc;
81
+ }
82
+ }
83
+ // 没用上?
84
+ &__slot {
85
+ display: flex;
86
+ }
87
+
88
+ &__bottom {
89
+ width: calc(100% - 70px);
90
+ margin-left: 70px;
91
+ display: flex;
92
+ justify-content: flex-start;
93
+ box-sizing: border-box;
94
+ border-bottom: 1px solid #f3f3f3;
95
+ padding-right: 20px;
96
+ }
97
+ &-routetab {
98
+ cursor: pointer;
99
+ display: flex;
100
+ justify-content: space-between;
101
+ width: 220px;
102
+ height: 28px;
103
+ line-height: 28px;
104
+ font-size: 12px;
105
+ color: #5e6479;
106
+ padding: 0px 10px;
107
+ box-sizing: border-box;
108
+ overflow: hidden;
109
+ white-space: nowrap;
110
+ text-overflow: ellipsis;
111
+ align-items: center;
112
+ position: relative;
113
+ &__line {
114
+ position: absolute;
115
+ top: 0;
116
+ right: 0;
117
+ height: 100%;
118
+ width: 1px;
119
+ background-color: #edeeef;
120
+ }
121
+ i.home {
122
+ margin-right: 10px;
123
+ margin-left: 6px;
124
+ }
125
+ &:hover {
126
+ background-color: #eff1f5;
127
+ }
128
+ &--active {
129
+ background-color: #eff1f5;
130
+ font-weight: 400;
131
+ .hb-topbar-routetab__title {
132
+ color: #111;
133
+ }
134
+ }
135
+ &__title {
136
+ width: calc(100%);
137
+ background: linear-gradient(to right, #111111 85%, #fff);
138
+ background-clip: text;
139
+ color: transparent !important;
140
+ overflow: hidden;
141
+ }
142
+
143
+ &__close {
144
+ width: 16px;
145
+ }
146
+ &__event {
147
+ cursor: pointer;
148
+ height: 24px;
149
+ font-size: 12px;
150
+ line-height: 24px;
151
+ text-align: center;
152
+ &:hover {
153
+ background-color: #eef4ff;
154
+ color: #488af8;
155
+ }
156
+ }
157
+ }
158
+ &__event {
159
+ position: absolute;
160
+ width: 128px;
161
+ max-height: 118px;
162
+ background: #ffffff;
163
+ border: 1px solid #eee;
164
+ box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.1);
165
+ border-radius: 4px;
166
+ padding: 10px 0px;
167
+ box-sizing: border-box;
168
+ }
169
+ // 没用上?
170
+ &__options {
171
+ text-align: center;
172
+ cursor: pointer;
173
+ height: 24px;
174
+ line-height: 24px;
175
+ font-size: 12px;
176
+ color: #111;
177
+
178
+ &:hover {
179
+ background: #eef4ff;
180
+ color: #488af8;
181
+ }
182
+ }
183
+ }
184
+ .el-dropdown-choose-system {
185
+ width: 118px;
186
+ .el-dropdown-menu__item {
187
+ padding: 0 12px;
188
+ .wrapper {
189
+ i {
190
+ margin-right: 10px;
191
+ font-size: 14px;
192
+ }
193
+ }
194
+ }
195
+ }
@@ -0,0 +1,13 @@
1
+ import HbToolgroup from "./src/main.vue";
2
+ import config from "./src/config.js"
3
+ HbToolgroup.install = function (Vue) {
4
+ Vue.component(HbToolgroup.name, HbToolgroup);
5
+ };
6
+ HbToolgroup.config = function (icons) {
7
+ // 合并传入的icon和默认的icons
8
+ config.iconConfig = config.iconConfig.concat(icons.filter(item => config.iconConfig.find(icon =>
9
+ icon.event !== item.event)));
10
+
11
+ };
12
+
13
+ export default HbToolgroup;
@@ -0,0 +1,40 @@
1
+ export default {
2
+ // 事件名
3
+ eventName: "event",
4
+ // 使用关键字
5
+ useKw: true,
6
+ // placehodler
7
+ defPlaceholder: "请输入关键字",
8
+ // icon配置
9
+ iconConfig: [
10
+ {
11
+ event: "add",
12
+ text: "新增",
13
+ icon: "hbui-zengjia",
14
+ },
15
+ { event: "edit", text: "编辑", icon: "icon-bianji" },
16
+ {
17
+ event: "delete",
18
+ text: "删除",
19
+ icon: "hbui-shanchu",
20
+ },
21
+ {
22
+ event: "upload",
23
+ text: "导入",
24
+ icon: "hbui-shangchuan",
25
+ },
26
+ { event: "download", text: "下载", icon: "icon-xiazai" },
27
+ {
28
+ event: "print",
29
+ text: "打印",
30
+ icon: "hbui-dayin",
31
+ },
32
+ {
33
+ event: "export",
34
+ text: "导出",
35
+ icon: "icon-i-daochu1",
36
+ },
37
+ ],
38
+ // 默认显示的icon
39
+ defIcons: [],
40
+ };
@@ -0,0 +1,93 @@
1
+ <template>
2
+ <div class="hb-toolgroup">
3
+ <div class="hb-toolgroup__prefix">
4
+ <div
5
+ class="hb-toolgroup-btn"
6
+ v-for="item in validIcons"
7
+ :class="{ 'hb-toolgroup-btn-shrink': !item.icon }"
8
+ :key="item.event"
9
+ @click="handleClickIcon(item)"
10
+ >
11
+ <i v-if="item.icon" :class="item.icon"></i>
12
+ <span>{{ item.text }}</span>
13
+ </div>
14
+ </div>
15
+ <div class="hb-toolgroup__inner">
16
+ <slot></slot>
17
+ </div>
18
+ <div v-if="useKw" class="hb-toolgroup__suffix">
19
+ <el-input
20
+ :placeholder="placeholder"
21
+ v-model="params[kwkey]"
22
+ prefix-icon="el-icon-search"
23
+ size="mini"
24
+ clearable
25
+ >
26
+ <template slot="append">
27
+ <span class="append-text" @click="handleSearch">搜索</span>
28
+ </template>
29
+ </el-input>
30
+ </div>
31
+ </div>
32
+ </template>
33
+ <script>
34
+ import CONFIG from "./config";
35
+ export default {
36
+ name: "HbToolgroup",
37
+ componentName: "HbToolgroup",
38
+ props: {
39
+ useKw: {
40
+ type: Boolean,
41
+ default: () => CONFIG.useKw,
42
+ },
43
+ icons: {
44
+ type: Array,
45
+ default: () => CONFIG.defIcons,
46
+ },
47
+ tools: {
48
+ type: Array,
49
+ default: () => [],
50
+ },
51
+ params: {
52
+ type: Object,
53
+ default: () => {},
54
+ },
55
+ kwkey: {
56
+ default: () => "name",
57
+ },
58
+ },
59
+ computed: {
60
+ // 按传入顺序排序
61
+ validIcons() {
62
+ const all = [...this.iconsConfig, ...this.tools];
63
+ const targets = [];
64
+ for (let i = 0; i < this.icons.length; i++) {
65
+ let target = all.find((item) => item.event === this.icons[i]);
66
+ target && targets.push(target);
67
+ }
68
+ return targets;
69
+ },
70
+ },
71
+ data() {
72
+ return {
73
+ iconsConfig: CONFIG.iconConfig,
74
+ placeholder: CONFIG.defPlaceholder,
75
+ };
76
+ },
77
+ methods: {
78
+ /** events */
79
+ /**
80
+ * @event handleClickIcon 点击图标
81
+ */
82
+ handleClickIcon(iconConfig) {
83
+ this.$emit(CONFIG.eventName, iconConfig.event);
84
+ },
85
+ /**
86
+ * @event handleSearch 搜索
87
+ */
88
+ handleSearch() {
89
+ this.$emit("search");
90
+ },
91
+ },
92
+ };
93
+ </script>
@@ -0,0 +1,7 @@
1
+ import HbTopBar from "./src/main.vue";
2
+
3
+ HbTopBar.install = function (Vue) {
4
+ Vue.component(HbTopBar.name, HbTopBar);
5
+ };
6
+
7
+ export default HbTopBar;