@aochuang/common 1.0.0 → 1.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 (194) hide show
  1. package/common/loading/index.js +7 -0
  2. package/common/loading/loading.vue +71 -0
  3. package/common/tips/index.js +7 -0
  4. package/common/tips/tips.vue +82 -0
  5. package/common/tooltip/index.js +7 -0
  6. package/common/tooltip/popper.js +18 -0
  7. package/common/tooltip/tooltip.vue +55 -0
  8. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-boolean.vue +33 -0
  9. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-date-range.vue +30 -0
  10. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-date.vue +41 -0
  11. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-datetime-range.vue +34 -0
  12. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-datetime.vue +41 -0
  13. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-number-range.vue +67 -0
  14. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-number.vue +35 -0
  15. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-string.vue +41 -0
  16. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-value.vue +73 -0
  17. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item.vue +226 -0
  18. package/components/advanced-filter/advanced-filter-condition-toggle.vue +112 -0
  19. package/components/advanced-filter/advanced-filter-condition.vue +352 -0
  20. package/components/advanced-filter/advanced-filter-permanent-item.vue +10 -0
  21. package/components/advanced-filter/advanced-filter-permanent.vue +10 -0
  22. package/components/advanced-filter/advanced-filter-scene-form.vue +95 -0
  23. package/components/advanced-filter/advanced-filter-scene-item.vue +64 -0
  24. package/components/advanced-filter/advanced-filter-scene-manage.vue +264 -0
  25. package/components/advanced-filter/advanced-filter-scene-transfer.vue +283 -0
  26. package/components/advanced-filter/advanced-filter-scene.vue +199 -0
  27. package/components/advanced-filter/advanced-filter.vue +114 -0
  28. package/components/advanced-filter/index.js +36 -0
  29. package/components/advanced-filter/utils.js +132 -0
  30. package/components/autocomplete/autocomplete.vue +121 -0
  31. package/components/autocomplete/index.js +7 -0
  32. package/components/avatar/avatar.png +0 -0
  33. package/components/avatar/avatar.vue +212 -0
  34. package/components/avatar/index.js +7 -0
  35. package/components/brick-wall/brick-wall-skeleton.vue +125 -0
  36. package/components/brick-wall/brick-wall.vue +293 -0
  37. package/components/brick-wall/index.js +7 -0
  38. package/components/button/button.vue +537 -0
  39. package/components/button/index.js +7 -0
  40. package/components/button/utils.js +20 -0
  41. package/components/cascader/cascader.vue +184 -0
  42. package/components/cascader/index.js +7 -0
  43. package/components/cascader/util.js +50 -0
  44. package/components/checkbox/checkbox.vue +114 -0
  45. package/components/checkbox/index.js +7 -0
  46. package/components/checkbox-button/index.js +8 -0
  47. package/components/checkbox-group/checkbox-group.vue +11 -0
  48. package/components/checkbox-group/index.js +7 -0
  49. package/components/date-picker/date-picker.vue +300 -0
  50. package/components/date-picker/index.js +7 -0
  51. package/components/dialog/dialog.vue +182 -0
  52. package/components/dialog/index.js +14 -0
  53. package/components/dialog/utils.js +20 -0
  54. package/components/drawer/drawer.vue +186 -0
  55. package/components/drawer/index.js +14 -0
  56. package/components/drawer/utils.js +36 -0
  57. package/components/dropdown/dropdown-item.vue +63 -0
  58. package/components/dropdown/dropdown.vue +286 -0
  59. package/components/dropdown/index.js +16 -0
  60. package/components/empty/empty.vue +62 -0
  61. package/components/empty/index.js +7 -0
  62. package/components/filter/filter-group.vue +44 -0
  63. package/components/filter/filter-item.vue +122 -0
  64. package/components/filter/filter-more.vue +114 -0
  65. package/components/filter/filter.vue +407 -0
  66. package/components/filter/index.js +20 -0
  67. package/components/filter/refresh-line.svg +1 -0
  68. package/components/filter/util.js +5 -0
  69. package/components/form/form-cell.vue +231 -0
  70. package/components/form/form-group.vue +147 -0
  71. package/components/form/form-row.vue +51 -0
  72. package/components/form/form.vue +256 -0
  73. package/components/form/index.js +13 -0
  74. package/components/grid/grid-card-view/grid-card-view.vue +157 -0
  75. package/components/grid/grid-column.vue +136 -0
  76. package/components/grid/grid-filter/grid-filter-group.vue +41 -0
  77. package/components/grid/grid-filter/grid-filter-item.vue +68 -0
  78. package/components/grid/grid-filter/grid-filter.vue +115 -0
  79. package/components/grid/grid-filter/util.js +7 -0
  80. package/components/grid/grid-filter-operate/grid-filter-operate-item.vue +55 -0
  81. package/components/grid/grid-filter-operate/grid-filter-operate.vue +46 -0
  82. package/components/grid/grid-sort/grid-sort-proxy.js +27 -0
  83. package/components/grid/grid-sort/grid-sort.vue +205 -0
  84. package/components/grid/grid-sort/icons/asc.png +0 -0
  85. package/components/grid/grid-sort/icons/desc.png +0 -0
  86. package/components/grid/grid-sort/index.js +7 -0
  87. package/components/grid/grid-table-view/grid-table-view.vue +178 -0
  88. package/components/grid/grid-table.vue +547 -0
  89. package/components/grid/grid-toolbar/grid-batch-toolbar-proxy.js +21 -0
  90. package/components/grid/grid-toolbar/grid-batch-toolbar.vue +129 -0
  91. package/components/grid/grid-toolbar/grid-global-toolbar-proxy.js +21 -0
  92. package/components/grid/grid-toolbar/grid-global-toolbar.vue +37 -0
  93. package/components/grid/grid-toolbar/grid-more-toolbar-proxy.js +21 -0
  94. package/components/grid/grid-toolbar/grid-more-toolbar.vue +138 -0
  95. package/components/grid/grid-toolbar/grid-row-toolbar.vue +279 -0
  96. package/components/grid/grid-view-select.vue +78 -0
  97. package/components/grid/grid.vue +1102 -0
  98. package/components/grid/icons/more-line.svg +1 -0
  99. package/components/grid/icons/refresh.svg +14 -0
  100. package/components/grid/index.js +61 -0
  101. package/components/grid/util.js +31 -0
  102. package/components/icon/demo.css +539 -0
  103. package/components/icon/demo_index.html +7433 -0
  104. package/components/icon/icon.vue +96 -0
  105. package/components/icon/iconfont.css +1275 -0
  106. package/components/icon/iconfont.eot +0 -0
  107. package/components/icon/iconfont.js +1 -0
  108. package/components/icon/iconfont.json +2214 -0
  109. package/components/icon/iconfont.svg +455 -0
  110. package/components/icon/iconfont.ttf +0 -0
  111. package/components/icon/iconfont.woff +0 -0
  112. package/components/icon/iconfont.woff2 +0 -0
  113. package/components/icon/index.js +7 -0
  114. package/components/image/image.vue +299 -0
  115. package/components/image/index.js +12 -0
  116. package/components/image/util.js +26 -0
  117. package/components/index.js +153 -0
  118. package/components/loading/index.js +7 -0
  119. package/components/loading/loading.vue +130 -0
  120. package/components/menu/index.js +14 -0
  121. package/components/menu/menu-group.vue +240 -0
  122. package/components/menu/menu-item.vue +215 -0
  123. package/components/menu/menu.vue +64 -0
  124. package/components/message/index.js +19 -0
  125. package/components/message/message.js +28 -0
  126. package/components/message/message.less +6 -0
  127. package/components/message-box/index.js +10 -0
  128. package/components/message-box/message-box.js +140 -0
  129. package/components/message-box/message-box.less +5 -0
  130. package/components/pagination/index.js +7 -0
  131. package/components/pagination/pagination.vue +193 -0
  132. package/components/panel/index.js +7 -0
  133. package/components/panel/panel.vue +44 -0
  134. package/components/popover/index.js +7 -0
  135. package/components/popover/popover.vue +140 -0
  136. package/components/popup-select/index.js +7 -0
  137. package/components/popup-select/popup-select.vue +114 -0
  138. package/components/radio/index.js +7 -0
  139. package/components/radio/radio.vue +92 -0
  140. package/components/radio-button/index.js +7 -0
  141. package/components/radio-button/radio-button.vue +20 -0
  142. package/components/radio-group/index.js +7 -0
  143. package/components/radio-group/radio-group.vue +22 -0
  144. package/components/searchbox/index.js +7 -0
  145. package/components/searchbox/searchbox.vue +260 -0
  146. package/components/select/index.js +9 -0
  147. package/components/select/select-load-more.vue +53 -0
  148. package/components/select/select.vue +572 -0
  149. package/components/skeleton/index.js +14 -0
  150. package/components/skeleton/skeleton-rows.vue +52 -0
  151. package/components/skeleton/skeleton.vue +72 -0
  152. package/components/sortable/index.js +9 -0
  153. package/components/sortable/sortable-item.vue +77 -0
  154. package/components/sortable/sortable.vue +62 -0
  155. package/components/spinner/index.js +7 -0
  156. package/components/spinner/spinner.vue +121 -0
  157. package/components/spinner-range/index.js +7 -0
  158. package/components/spinner-range/spinner-range.vue +97 -0
  159. package/components/spinner-textarea/index.js +7 -0
  160. package/components/spinner-textarea/spinner-textarea.vue +65 -0
  161. package/components/switch/index.js +7 -0
  162. package/components/switch/switch.vue +105 -0
  163. package/components/tabs/index.js +10 -0
  164. package/components/tabs/tabs.vue +115 -0
  165. package/components/tag/index.js +9 -0
  166. package/components/tag/tag.less +30 -0
  167. package/components/text/index.js +7 -0
  168. package/components/text/text.vue +69 -0
  169. package/components/textarea/index.js +7 -0
  170. package/components/textarea/textarea.vue +229 -0
  171. package/components/textbox/index.js +7 -0
  172. package/components/textbox/textbox.vue +275 -0
  173. package/components/time-picker/index.js +7 -0
  174. package/components/time-picker/time-picker.vue +77 -0
  175. package/components/toolbar/index.js +14 -0
  176. package/components/toolbar/toolbar-item.vue +43 -0
  177. package/components/toolbar/toolbar.vue +81 -0
  178. package/components/tooltip/index.js +9 -0
  179. package/components/tooltip/tooltip.vue +86 -0
  180. package/components/transfer/index.js +7 -0
  181. package/components/transfer/transfer-load-more.vue +53 -0
  182. package/components/transfer/transfer.vue +245 -0
  183. package/components/tree/index.js +7 -0
  184. package/components/tree/tree.vue +326 -0
  185. package/components/tree/utils.js +122 -0
  186. package/components/video/index.js +7 -0
  187. package/components/video/video.vue +53 -0
  188. package/package.json +4 -1
  189. package/utils/date.js +55 -0
  190. package/utils/emitter.js +3 -0
  191. package/utils/json.js +19 -0
  192. package/utils/resize-event.js +35 -0
  193. package/utils/util.js +12 -0
  194. package/utils/utils.js +0 -0
@@ -0,0 +1,326 @@
1
+ <template>
2
+ <div class="ui-tree" :class="{'has-border': border}" :style="{height: height, width: width}">
3
+ <el-tree
4
+ class="ui-tree__control"
5
+ :class="{'is-hide-root-check': hideRootCheck}"
6
+ ref="tree"
7
+ :data="innerData"
8
+ :default-expanded-keys="defaultExpandedKeys"
9
+ :default-checked-keys="checkedKeys"
10
+ :node-key="idField"
11
+ :show-checkbox="multiple"
12
+ :highlight-current="highlightCurrent"
13
+ :expand-on-click-node="false"
14
+ :current-node-key="current"
15
+ @current-change="handleCurrentChange"
16
+ :filter-node-method="handleFilterNode"
17
+ :check-strictly="checkStrictly"
18
+ :default-expand-all="defaultExpandAll"
19
+ :allow-drop="allowDrop"
20
+ @check="handleNodeCheck"
21
+ >
22
+ <div class="ui-tree__node" slot-scope="{ node, data }" :style="{'height': itemHeight, 'line-height': itemHeight}">
23
+ <slot name="node" :data="data">
24
+ <component
25
+ :is="handleRenderLevelIcon(node)"
26
+ ></component>
27
+ <span
28
+ :title="data[textField]"
29
+ class="ui-tree__node-text"
30
+ >{{ data[textField] }}</span>
31
+ <span class="ui-tree__node-tool" v-if="$slots['node-toolbar']">
32
+ <slot name="node-toolbar" :data="data"></slot>
33
+ </span>
34
+ <slot name="node-append" :current="node.isCurrent"></slot>
35
+ </slot>
36
+ </div>
37
+ </el-tree>
38
+ <div class="ui-tree__loading" v-if="loading">
39
+ <ui-loading></ui-loading>
40
+ </div>
41
+ </div>
42
+ </template>
43
+ <script>
44
+ import ElTree from 'element-ui/lib/tree'
45
+ import 'element-ui/lib/theme-chalk/tree.css'
46
+ import UiIcon from '../icon'
47
+ import { getNodesByLevel, getCheckLeastFatherNodes } from './utils'
48
+
49
+ export default {
50
+ name: 'UiTree',
51
+ components: {
52
+ ElTree
53
+ },
54
+ props: {
55
+ height: {
56
+ type: String
57
+ },
58
+ width: {
59
+ type: String
60
+ },
61
+ border: {
62
+ type: Boolean
63
+ },
64
+ queryMethod: {
65
+ type: Function
66
+ },
67
+ defaultExpandAll: {
68
+ type: Boolean,
69
+ default: false
70
+ },
71
+ checkStrictly: {
72
+ type: Boolean,
73
+ default: false
74
+ },
75
+ checkLeastFather: {
76
+ type: Boolean,
77
+ default: false
78
+ },
79
+ multiple: {
80
+ type: Boolean,
81
+ default: false
82
+ },
83
+ hideRootCheck: {
84
+ type: Boolean,
85
+ default: false
86
+ },
87
+ current: {
88
+ type: [String, Number]
89
+ },
90
+ data: {
91
+ type: Array,
92
+ default: () => []
93
+ },
94
+ idField: {
95
+ type: String
96
+ },
97
+ highlightCurrent: {
98
+ type: Boolean,
99
+ default: false
100
+ },
101
+ showLevelIcon: {
102
+ type: Boolean,
103
+ default: false
104
+ },
105
+ textField: {
106
+ type: String,
107
+ default: 'label'
108
+ },
109
+ levelIcons: {
110
+ type: Array,
111
+ default: () => []
112
+ },
113
+ checkedKeys: {
114
+ type: Array,
115
+ default: () => []
116
+ },
117
+ defaultExpandedLevel: {
118
+ type: Number
119
+ },
120
+ draggable: {
121
+ type: Boolean,
122
+ default: false
123
+ },
124
+ filterKeyword: {
125
+ type: String
126
+ },
127
+ allowDrop: {
128
+ type: Function
129
+ },
130
+ itemHeight: {
131
+ type: String,
132
+ default: '32px'
133
+ }
134
+ },
135
+ data () {
136
+ return {
137
+ loading: false,
138
+ innerData: this.data
139
+ }
140
+ },
141
+ computed: {
142
+ levelIconsMap () {
143
+ const map = {}
144
+ if (this.levelIcons && this.levelIcons.length) {
145
+ this.levelIcons.forEach((v, i) => {
146
+ if (v.level) {
147
+ map[v.level] = v
148
+ } else {
149
+ map[i + 1] = v
150
+ }
151
+ })
152
+ }
153
+ return map
154
+ },
155
+ defaultExpandedKeys () {
156
+ return getNodesByLevel(this.innerData, this.defaultExpandedLevel).map(v => {
157
+ return v[this.idField]
158
+ })
159
+ }
160
+ },
161
+ watch: {
162
+ data () {
163
+ this.innerData = this.data
164
+ },
165
+ current (val) {
166
+ this.$nextTick(() => {
167
+ this.$refs.tree.setCurrentKey(val)
168
+ })
169
+ },
170
+ filterKeyword (val) {
171
+ this.$refs.tree && this.$refs.tree.filter(val)
172
+ },
173
+ checkedKeys () {
174
+ this.$nextTick(() => {
175
+ this.$refs.tree.setCheckedKeys(this.checkedKeys)
176
+ })
177
+ }
178
+ },
179
+ created () {
180
+ if (this.queryMethod) {
181
+ this.loading = true
182
+ this.queryMethod().then(rs => {
183
+ this.innerData = rs
184
+ }).finally(() => {
185
+ this.loading = false
186
+ })
187
+ }
188
+ },
189
+ mounted () {
190
+ this.$refs.tree.filter(this.filterKeyword)
191
+ },
192
+ methods: {
193
+ handleRenderLevelIcon (node) {
194
+ if (!this.showLevelIcon || !node.level) {
195
+ return
196
+ }
197
+ if (!this.levelIcons) {
198
+ return
199
+ }
200
+ const index = node.level
201
+ let item = this.levelIconsMap[index]
202
+ if (!item) {
203
+ item = this.levelIconsMap['*']
204
+ }
205
+ if (!item || !item.icon) {
206
+ return
207
+ }
208
+ return {
209
+ render: (h) => {
210
+ return h(UiIcon, {
211
+ class: ['ui-tree__node-icon'],
212
+ props: {
213
+ size: 14,
214
+ name: item.icon,
215
+ title: item.label
216
+ }
217
+ })
218
+ }
219
+ }
220
+ },
221
+ handleCurrentChange (item) {
222
+ this.$emit('current-change', {
223
+ item
224
+ })
225
+ },
226
+ handleFilterNode (value, data) {
227
+ if (typeof this.filterKeyword === 'undefined' || this.filterKeyword === null || this.filterKeyword === '') {
228
+ return true
229
+ }
230
+ return (data[this.textField] || '').toString().toLowerCase().indexOf(value) >= 0
231
+ },
232
+ handleNodeCheck (data, check) {
233
+ let checkedKeys = check.checkedKeys
234
+ if (this.checkLeastFather) {
235
+ const node = this.$refs.tree.getNode(data)
236
+ checkedKeys = getCheckLeastFatherNodes(node, check.checkedKeys, this.data, this.idField)
237
+ this.$refs.tree.setCheckedKeys(checkedKeys)
238
+ }
239
+ this.$emit('check-change', {
240
+ data,
241
+ checkedKeys
242
+ })
243
+ },
244
+ setCurrentKeyFn (val) {
245
+ this.$nextTick(() => {
246
+ this.$refs.tree.setCurrentKey(val)
247
+ })
248
+ }
249
+ }
250
+ }
251
+ </script>
252
+ <style lang="less">
253
+ .ui-tree {
254
+ display: flex;
255
+ flex-direction: column;
256
+ position: relative;
257
+ &.has-border {
258
+ border: 1px solid #ddd;
259
+ border-radius: 3px;
260
+ }
261
+ .el-tree-node:focus>.el-tree-node__content{
262
+ transition: all .25s;
263
+ }
264
+ .el-tree-node__content{
265
+ height: auto;
266
+ &:hover{
267
+ color: #404040;
268
+ background-color: transparent;
269
+ }
270
+ }
271
+ &.is-hide-root-check{
272
+ > .el-tree-node{
273
+ > .el-tree-node__content{
274
+ .el-checkbox{
275
+ display: none;
276
+ }
277
+ }
278
+ }
279
+ }
280
+ &.el-tree--highlight-current{
281
+ .el-tree-node .is-current{
282
+ > .el-tree-node__content{
283
+ background-color: #f6f7fa!important;
284
+ color: #4d9fe7;
285
+ font-weight: bold;
286
+ }
287
+ }
288
+ }
289
+ }
290
+ .ui-tree__control {
291
+ flex: 1;
292
+ min-height: 0;
293
+ overflow: auto;
294
+ }
295
+ .ui-tree__node{
296
+ flex: 1;
297
+ display: flex;
298
+ flex-direction: row;
299
+ align-items: center;
300
+ min-width: 0;
301
+ }
302
+ .ui-tree__node-text{
303
+ flex: 1;
304
+ display: inline-block;
305
+ text-overflow: ellipsis;
306
+ overflow: hidden;
307
+ white-space: nowrap;
308
+ min-width: 0;
309
+ }
310
+ .ui-tree__node-icon{
311
+ margin-right: 6px;
312
+ display: inline-block;
313
+ }
314
+ .ui-tree__loading{
315
+ position: absolute;
316
+ left: 1px;
317
+ top: 1px;
318
+ bottom: 1px;
319
+ right: 1px;
320
+ display: flex;
321
+ flex-direction: column;
322
+ justify-content: center;
323
+ align-items: center;
324
+ background-color: #fff;
325
+ }
326
+ </style>
@@ -0,0 +1,122 @@
1
+ export function getNodesByLevel (treeData, level) {
2
+ const nodes = []
3
+ if (!treeData || !treeData.length || !level) {
4
+ return nodes
5
+ }
6
+ const loop = (data, lv) => {
7
+ if (lv >= level) {
8
+ return
9
+ }
10
+ if (!data) {
11
+ return
12
+ }
13
+ data.forEach(v => {
14
+ nodes.push(v)
15
+ if (v.children) {
16
+ loop(v.children, lv + 1)
17
+ }
18
+ })
19
+ }
20
+ loop(treeData, 0)
21
+ return nodes
22
+ }
23
+
24
+ export function getParentsNode (key, data, idField) {
25
+ const rs = []
26
+ if (!key || !data) {
27
+ return rs
28
+ }
29
+ const loop = (data) => {
30
+ if (!data || !data.length) {
31
+ return
32
+ }
33
+ return data.some(v => {
34
+ if (v[idField] === key) {
35
+ return true
36
+ } else if (v.children) {
37
+ if (loop(v.children)) {
38
+ rs.push(v)
39
+ return true
40
+ }
41
+ }
42
+ })
43
+ }
44
+ loop(data)
45
+ return rs
46
+ }
47
+
48
+ export function findNode (key, data, idField) {
49
+ let rs = null
50
+ if (!key || !data) {
51
+ return rs
52
+ }
53
+ const loop = (data) => {
54
+ if (!data || !data.length) {
55
+ return
56
+ }
57
+ return data.some(v => {
58
+ if (v[idField] === key) {
59
+ rs = v
60
+ return true
61
+ } else if (v.children) {
62
+ return loop(v.children)
63
+ }
64
+ })
65
+ }
66
+ loop(data)
67
+ return rs
68
+ }
69
+
70
+ export function getChildrensNode (key, data, idField) {
71
+ if (!key || !data) {
72
+ return []
73
+ }
74
+ const node = findNode(key, data, idField)
75
+ if (!node) {
76
+ return []
77
+ }
78
+ const loop = (nodes) => {
79
+ let rs = []
80
+ if (nodes && nodes.length) {
81
+ nodes.forEach(v => {
82
+ rs.push(v)
83
+ rs = rs.concat(loop(v.children))
84
+ })
85
+ }
86
+ return rs
87
+ }
88
+ return loop(node.children)
89
+ }
90
+
91
+ /**
92
+ * 获取保留父级节点后的节点集合
93
+ */
94
+ export function getCheckLeastFatherNodes (node, checkedList, data, idField) {
95
+ if (!node) {
96
+ return
97
+ }
98
+ const checkedMap = (checkedList || []).reduce((rs, v) => {
99
+ rs[v] = true
100
+ return rs
101
+ }, {})
102
+ const childrens = getChildrensNode(node.data[idField], data, idField)
103
+ childrens.forEach(v => {
104
+ if (node.checked) {
105
+ checkedMap[v[idField]] = true
106
+ } else {
107
+ checkedMap[v[idField]] = false
108
+ }
109
+ })
110
+ const parents = getParentsNode(node.data[idField], data, idField)
111
+ parents.forEach(v => {
112
+ if (!v[idField]) {
113
+ return
114
+ }
115
+ if (v.children.some(vv => checkedMap[vv[idField]])) {
116
+ checkedMap[v[idField]] = true
117
+ } else {
118
+ // checkedMap[v[idField]] = false
119
+ }
120
+ })
121
+ return Object.keys(checkedMap).filter(v => checkedMap[v])
122
+ }
@@ -0,0 +1,7 @@
1
+ import Video from './video'
2
+
3
+ Video.install = (Vue) => {
4
+ Vue.component(Video.name, Video)
5
+ }
6
+
7
+ export default Video
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <video class="ui-video" :autoplay="autoplay" :width="width" :poster="poster" :preload="preload" :height="height" :controls="controls">
3
+ <source :src="innerSrc">
4
+ 您的浏览器不支持 video 标签。
5
+ </video>
6
+ </template>
7
+ <script>
8
+ export default {
9
+ name: 'UiVideo',
10
+ props: {
11
+ width: {
12
+ type: String
13
+ },
14
+ height: {
15
+ type: String
16
+ },
17
+ poster: {
18
+ type: String
19
+ },
20
+ preload: {
21
+ type: String
22
+ },
23
+ controls: {
24
+ type: Boolean,
25
+ default: true
26
+ },
27
+ autoplay: {
28
+ type: Boolean,
29
+ default: false
30
+ },
31
+ src: {
32
+ type: String
33
+ }
34
+ },
35
+ computed: {
36
+ style () {
37
+ return {
38
+ width: this.width,
39
+ height: this.height
40
+ }
41
+ },
42
+ innerSrc () {
43
+ return this.src
44
+ }
45
+ }
46
+ }
47
+ </script>
48
+ <style lang="less">
49
+ .ui-video {
50
+ background-color: #000;
51
+ object-fit: contain;
52
+ }
53
+ </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aochuang/common",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -9,6 +9,9 @@
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1"
11
11
  },
12
+ "peerDependencies": {
13
+ "element-ui": "git+https://gitee.com/devi001/wk-element.git#v2.15.10"
14
+ },
12
15
  "author": "",
13
16
  "license": "ISC"
14
17
  }
package/utils/date.js ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * 格式化日期
3
+ */
4
+ export function formatDate (date, fmt = 'YYYY-mm-dd HH:MM:SS') {
5
+ if (!date) {
6
+ return
7
+ }
8
+ if (typeof date === 'string' && /^[0-9]+$/.test(date)) {
9
+ date = Number(date)
10
+ }
11
+ if (typeof date === 'string' || typeof date === 'number') {
12
+ date = new Date(date)
13
+ }
14
+ if (isNaN(date.getTime())) {
15
+ return
16
+ }
17
+ let ret
18
+ const opt = {
19
+ 'Y+': date.getFullYear().toString(),
20
+ 'm+': (date.getMonth() + 1).toString(),
21
+ 'd+': date.getDate().toString(),
22
+ 'H+': date.getHours().toString(),
23
+ 'M+': date.getMinutes().toString(),
24
+ 'S+': date.getSeconds().toString()
25
+ }
26
+ for (const k in opt) {
27
+ ret = new RegExp('(' + k + ')').exec(fmt)
28
+ if (ret) {
29
+ fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
30
+ }
31
+ }
32
+ return fmt
33
+ }
34
+
35
+ /**
36
+ * 将时间戳或者日期字符串转为日期对象
37
+ */
38
+ export function parseDate (date) {
39
+ if (!date) {
40
+ return
41
+ }
42
+ if (date.getTime) {
43
+ return date
44
+ }
45
+ if (typeof date === 'number') {
46
+ return new Date(date)
47
+ }
48
+ if (typeof date === 'string') {
49
+ const ds = date.split(/\D+/)
50
+ if (ds.length > 0) {
51
+ return new Date(ds[0], ds[1] ? (ds[1] - 1) : 0, ds[2] || 1, ds[3] || 0, ds[4] || 0, ds[5] || 0)
52
+ }
53
+ }
54
+ }
55
+
@@ -0,0 +1,3 @@
1
+ import Emitter from 'element-ui/src/mixins/emitter'
2
+
3
+ export default Emitter
package/utils/json.js ADDED
@@ -0,0 +1,19 @@
1
+ export function stringify (data, ag1, ag2) {
2
+ if (data && typeof data === 'object') {
3
+ data = JSON.stringify(data, ag1, ag2)
4
+ }
5
+ return data
6
+ }
7
+
8
+ export function parse (data) {
9
+ try {
10
+ if (typeof data === 'string') {
11
+ data = JSON.parse(data)
12
+ }
13
+ } catch (e) {}
14
+ return data
15
+ }
16
+
17
+ export function clone (data) {
18
+ return JSON.parse(JSON.stringify(data))
19
+ }
@@ -0,0 +1,35 @@
1
+ import ResizeObserver from 'resize-observer-polyfill'
2
+
3
+ const isServer = typeof window === 'undefined'
4
+
5
+ /* istanbul ignore next */
6
+ const resizeHandler = function (entries) {
7
+ for (const entry of entries) {
8
+ const listeners = entry.target.__resizeListeners__ || []
9
+ if (listeners.length) {
10
+ listeners.forEach(fn => {
11
+ fn()
12
+ })
13
+ }
14
+ }
15
+ }
16
+
17
+ /* istanbul ignore next */
18
+ export const addResizeListener = function (element, fn) {
19
+ if (isServer) return
20
+ if (!element.__resizeListeners__) {
21
+ element.__resizeListeners__ = []
22
+ element.__ro__ = new ResizeObserver(resizeHandler)
23
+ element.__ro__.observe(element)
24
+ }
25
+ element.__resizeListeners__.push(fn)
26
+ }
27
+
28
+ /* istanbul ignore next */
29
+ export const removeResizeListener = function (element, fn) {
30
+ if (!element || !element.__resizeListeners__) return
31
+ element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1)
32
+ if (!element.__resizeListeners__.length) {
33
+ element.__ro__.disconnect()
34
+ }
35
+ }
package/utils/util.js ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 获取唯一字符串
3
+ */
4
+ let _unique = 1587813800524
5
+ export function unique (prefix = 'unique_') {
6
+ _unique++
7
+ return (prefix || '') + _unique
8
+ }
9
+
10
+ export function isEmpty (value) {
11
+ return value === null || value === undefined || value === ''
12
+ }
package/utils/utils.js DELETED
File without changes