@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,199 @@
1
+ <template>
2
+ <div class="ui-advanced-filter-scene">
3
+ <div class="ui-advanced-filter-scene__list">
4
+ <advanced-filter-scene-item
5
+ v-for="scene in fixedShowSceneData"
6
+ :label="scene.name"
7
+ :key="scene.sceneId"
8
+ :active="value === scene.sceneId"
9
+ :active-dirty="currentSceneDirty"
10
+ @click="handleFixedSceneItemClick(scene)"
11
+ ></advanced-filter-scene-item>
12
+ </div>
13
+ <div class="ui-advanced-filter-scene__more">
14
+ <ui-popover
15
+ v-model="showMorePopover"
16
+ >
17
+ <template slot="reference">
18
+ <div class="ui-advanced-filter-scene__more-handle">
19
+ <template v-if="currentMoreScene">
20
+ <advanced-filter-scene-item
21
+ :active="true"
22
+ :active-dirty="currentSceneDirty"
23
+ :arrow="true"
24
+ :label="currentMoreScene.name"
25
+ ></advanced-filter-scene-item>
26
+ </template>
27
+ <template v-else>
28
+ <advanced-filter-scene-item :active="showMorePopover">
29
+ <i class="el-icon-arrow-down"></i>
30
+ </advanced-filter-scene-item>
31
+ </template>
32
+ </div>
33
+ </template>
34
+ <div class="ui-advanced-filter-scene__more-wrap">
35
+ <div class="ui-advanced-filter-scene__more-menu">
36
+ <div
37
+ class="ui-advanced-filter-scene__more-menu-item"
38
+ :class="{'is-active': scene.sceneId === value}"
39
+ v-for="scene in moreSceneData"
40
+ :key="scene.sceneId"
41
+ @click="handleMoreSceneItemClick(scene)"
42
+ >
43
+ {{ scene.name }}
44
+ </div>
45
+ </div>
46
+ <div class="ui-advanced-filter-scene__more-toolbar">
47
+ <ui-button @click="handleManageClick" icon="settings-4-line">场景设置</ui-button>
48
+ </div>
49
+ </div>
50
+ </ui-popover>
51
+ </div>
52
+ <ui-dialog
53
+ title="场景管理"
54
+ size="medium"
55
+ v-model="showManageDialog"
56
+ >
57
+ <advanced-filter-scene-manage
58
+ :field-data="fieldData"
59
+ :all-scene-data="allSceneData"
60
+ :hide-scene="hideScene"
61
+ :fetch-config-method="fetchConfigMethod"
62
+ :update-config-method="updateConfigMethod"
63
+ :update-scene-method="updateSceneMethod"
64
+ :create-scene-method="createSceneMethod"
65
+ :delete-scene-method="deleteSceneMethod"
66
+ :save-default-scene-method="saveDefaultSceneMethod"
67
+ >
68
+ </advanced-filter-scene-manage>
69
+ </ui-dialog>
70
+ </div>
71
+ </template>
72
+ <script>
73
+ import AdvancedFilterSceneItem from './advanced-filter-scene-item'
74
+ import AdvancedFilterSceneManage from './advanced-filter-scene-manage'
75
+
76
+ export default {
77
+ name: 'UiAdvancedFilterScene',
78
+ components: {
79
+ AdvancedFilterSceneItem,
80
+ AdvancedFilterSceneManage
81
+ },
82
+ props: {
83
+ value: {
84
+ type: String
85
+ },
86
+ sceneData: {
87
+ type: Array
88
+ },
89
+ allSceneData: {
90
+ type: Array
91
+ },
92
+ /**
93
+ * 当前选中场景是不是数据已经脏了,筛选条件的值和场景的值不一样就认为脏了,这个时候将选中的场景样式改一下
94
+ */
95
+ currentSceneDirty: {
96
+ type: Boolean,
97
+ default: false
98
+ },
99
+ fieldData: {
100
+ type: Array
101
+ },
102
+ hideScene: {
103
+ type: Array
104
+ },
105
+ fetchConfigMethod: {
106
+ type: Function
107
+ },
108
+ updateConfigMethod: {
109
+ type: Function
110
+ },
111
+ updateSceneMethod: {
112
+ type: Function
113
+ },
114
+ createSceneMethod: {
115
+ type: Function
116
+ },
117
+ deleteSceneMethod: {
118
+ type: Function
119
+ },
120
+ saveDefaultSceneMethod: {
121
+ type: Function
122
+ }
123
+ },
124
+ data () {
125
+ return {
126
+ showMorePopover: false,
127
+ showManageDialog: false
128
+ }
129
+ },
130
+ computed: {
131
+ showSceneData () {
132
+ return this.sceneData || []
133
+ },
134
+ moreSceneData () {
135
+ return (this.showSceneData || []).slice(5)
136
+ },
137
+ currentMoreScene () {
138
+ return this.moreSceneData.find(v => v.sceneId === this.value)
139
+ },
140
+ fixedShowSceneData () {
141
+ return (this.showSceneData || []).slice(0, 5)
142
+ }
143
+ },
144
+ methods: {
145
+ handleManageClick () {
146
+ this.showManageDialog = true
147
+ },
148
+ handleFixedSceneItemClick (item) {
149
+ this.$emit('input', item.sceneId)
150
+ this.$emit('change', {
151
+ scene: item
152
+ })
153
+ },
154
+ handleMoreSceneItemClick (item) {
155
+ this.$emit('input', item.sceneId)
156
+ this.$emit('change', {
157
+ scene: item
158
+ })
159
+ this.showMorePopover = false
160
+ }
161
+ }
162
+ }
163
+ </script>
164
+ <style lang="less">
165
+ .ui-advanced-filter-scene{
166
+ display: flex;
167
+ flex-direction: row;
168
+ align-items: center;
169
+ }
170
+ .ui-advanced-filter-scene__list{
171
+ display: flex;
172
+ flex-direction: row;
173
+ align-items: center;
174
+ }
175
+ .ui-advanced-filter-scene__more-menu{
176
+ max-height: 240px;
177
+ padding: 6px 0;
178
+ overflow: auto;
179
+ }
180
+ .ui-advanced-filter-scene__more-menu-item {
181
+ padding: 6px 12px;
182
+ color: #42526E;
183
+ cursor: pointer;
184
+ line-height: 24px;
185
+ transition: all .25s;
186
+ &:hover {
187
+ background-color: #e6eefa;
188
+ color: #0052CC;
189
+ }
190
+ &.is-active {
191
+ background-color: #e6eefa;
192
+ color: #0052CC;
193
+ }
194
+ }
195
+ .ui-advanced-filter-scene__more-toolbar{
196
+ border-top: 1px solid #ddd;
197
+ padding: 12px;
198
+ }
199
+ </style>
@@ -0,0 +1,114 @@
1
+ <template>
2
+ <div class="ui-advanced-filter" :class="{'is-expanded': expanded}">
3
+ <div class="ui-advanced-filter__main">
4
+ <div class="ui-advanced-filter__col is-full">
5
+ <div class="ui-advanced-filter__permanent">
6
+ <slot name="permanent"></slot>
7
+ </div>
8
+ <div class="ui-advanced-filter__scene">
9
+ <slot name="scene"></slot>
10
+ </div>
11
+ </div>
12
+ <div class="ui-advanced-filter__col">
13
+ <slot name="toolbar"></slot>
14
+ </div>
15
+ </div>
16
+ <div class="ui-advanced-filter__condition" v-show="expanded">
17
+ <slot name="condition"></slot>
18
+ </div>
19
+ <slot></slot>
20
+ </div>
21
+ </template>
22
+ <script>
23
+ export default {
24
+ name: 'UiAdvancedFilter',
25
+ props: {
26
+ /**
27
+ * [{
28
+ *
29
+ * }]
30
+ */
31
+ value: {
32
+ type: Array
33
+ },
34
+ expanded: {
35
+ type: Boolean,
36
+ default: false
37
+ },
38
+ /**
39
+ * {
40
+ * text: [{
41
+ * value: 'isNot',
42
+ * label: '不等于',
43
+ * type: 2
44
+ * },
45
+ * ...
46
+ * ]
47
+ * }
48
+ */
49
+ cnoditionOperate: {
50
+ type: Object
51
+ },
52
+ getValueComponent: {
53
+ type: Function
54
+ }
55
+ },
56
+ provide () {
57
+ return {
58
+ UiAdvancedFilter: this
59
+ }
60
+ },
61
+ data () {
62
+ return {
63
+ innerExpanded: this.expanded
64
+ }
65
+ },
66
+ watch: {
67
+ expanded () {
68
+ this.setExpanded(this.expanded)
69
+ }
70
+ },
71
+ methods: {
72
+ setExpanded (expanded) {
73
+ this.innerExpanded = !!expanded
74
+ },
75
+ /**
76
+ * 搜集条件选择的文本信息
77
+ */
78
+ collectConditionTextData (conditions) {
79
+ this.$emit('collect-condition-text-data', {
80
+ conditions
81
+ })
82
+ }
83
+ }
84
+ }
85
+ </script>
86
+ <style lang="less">
87
+ .ui-advanced-filter{
88
+ &.is-expanded {
89
+ .ui-advanced-filter__main{
90
+ margin-bottom: 12px;
91
+ }
92
+ }
93
+ }
94
+ .ui-advanced-filter__main{
95
+ display: flex;
96
+ flex-direction: row;
97
+ align-items: center;
98
+ }
99
+ .ui-advanced-filter__col{
100
+ display: flex;
101
+ flex-direction: row;
102
+ align-items: center;
103
+ &.is-full {
104
+ flex: 1;
105
+ }
106
+ }
107
+ .ui-advanced-filter__permanent{
108
+ margin-right: 12px;
109
+ }
110
+ .ui-advanced-filter__condition{
111
+ display: flex;
112
+ flex-direction: column;
113
+ }
114
+ </style>
@@ -0,0 +1,36 @@
1
+ import AdvancedFilter from './advanced-filter'
2
+ import AdvancedFilterScene from './advanced-filter-scene'
3
+ import AdvancedFilterSceneItem from './advanced-filter-scene-item'
4
+ import AdvancedFilterPermanent from './advanced-filter-permanent'
5
+ import AdvancedFilterPermanentItem from './advanced-filter-permanent-item'
6
+ import AdvancedFilterCondition from './advanced-filter-condition'
7
+ import AdvancedFilterConditionItem from './advanced-filter-condition-item/advanced-filter-condition-item'
8
+ import AdvancedFilterConditionToggle from './advanced-filter-condition-toggle'
9
+
10
+ import { defaultOperate, getBuiltinControl } from './utils'
11
+
12
+ export {
13
+ defaultOperate,
14
+ getBuiltinControl,
15
+ AdvancedFilter,
16
+ AdvancedFilterPermanent,
17
+ AdvancedFilterPermanentItem,
18
+ AdvancedFilterScene,
19
+ AdvancedFilterSceneItem,
20
+ AdvancedFilterCondition,
21
+ AdvancedFilterConditionItem,
22
+ AdvancedFilterConditionToggle
23
+ }
24
+
25
+ export default {
26
+ defaultOperate,
27
+ getBuiltinControl,
28
+ AdvancedFilter,
29
+ AdvancedFilterPermanent,
30
+ AdvancedFilterPermanentItem,
31
+ AdvancedFilterScene,
32
+ AdvancedFilterSceneItem,
33
+ AdvancedFilterCondition,
34
+ AdvancedFilterConditionItem,
35
+ AdvancedFilterConditionToggle
36
+ }
@@ -0,0 +1,132 @@
1
+ import AdvancedFilterConditionItemDate from './advanced-filter-condition-item/advanced-filter-condition-item-date'
2
+ import AdvancedFilterConditionItemDateRange from './advanced-filter-condition-item/advanced-filter-condition-item-date-range'
3
+ import AdvancedFilterConditionItemDatetime from './advanced-filter-condition-item/advanced-filter-condition-item-datetime'
4
+ import AdvancedFilterConditionItemDatetimeRange from './advanced-filter-condition-item/advanced-filter-condition-item-datetime-range'
5
+ import AdvancedFilterConditionItemNumber from './advanced-filter-condition-item/advanced-filter-condition-item-number'
6
+ import AdvancedFilterConditionItemNumberRange from './advanced-filter-condition-item/advanced-filter-condition-item-number-range'
7
+ import AdvancedFilterConditionItemBoolean from './advanced-filter-condition-item/advanced-filter-condition-item-boolean'
8
+ import AdvancedFilterConditionItemString from './advanced-filter-condition-item/advanced-filter-condition-item-string'
9
+
10
+ export const defaultOperate = {
11
+ string: {
12
+ items: [
13
+ { value: 'is', label: '等于', type: 1 },
14
+ { value: 'isNot', label: '不等于', type: 2 },
15
+ { value: 'contains', label: '包含', type: 3 },
16
+ { value: 'notContains', label: '不包含', type: 4 },
17
+ { value: 'isNull', label: '为空', type: 5 },
18
+ { value: 'isNotNull', label: '不为空', type: 6 }],
19
+ getValueComponent ({ condition }) {
20
+ if (condition && [5, 6].includes(condition.type)) {
21
+ return null
22
+ }
23
+ return AdvancedFilterConditionItemString
24
+ },
25
+ onChange: ({ condition, setValues }) => {
26
+ if (condition && [5, 6].includes(condition.type)) {
27
+ setValues('')
28
+ } else {
29
+ if (condition.values === '') {
30
+ setValues([])
31
+ }
32
+ }
33
+ }
34
+ },
35
+ date: {
36
+ items: [{ value: 'is', label: '等于', type: 1 },
37
+ { value: 'isNot', label: '不等于', type: 2 },
38
+ { value: 'lt', label: '早于', type: 9 },
39
+ { value: 'gt', label: '晚于', type: 7 },
40
+ { value: 'egt', label: '不早于', type: 8 },
41
+ { value: 'elt', label: '不晚于', type: 10 },
42
+ { value: 'range', label: '等于(时间段)', type: 14 },
43
+ { value: 'isNull', label: '为空', type: 5 },
44
+ { value: 'isNotNull', label: '不为空', type: 6 }],
45
+ getValueComponent ({ condition }) {
46
+ if (condition && [5, 6].includes(condition.type)) {
47
+ return null
48
+ }
49
+ if (condition && [14].includes(condition.type)) {
50
+ return AdvancedFilterConditionItemDateRange
51
+ }
52
+ return AdvancedFilterConditionItemDate
53
+ },
54
+ onChange: ({ condition, setValues }) => {
55
+ if (condition && [5, 6].includes(condition.type)) {
56
+ setValues('')
57
+ } else {
58
+ if (condition.values === '') {
59
+ setValues([])
60
+ }
61
+ }
62
+ }
63
+ },
64
+ datetime: {
65
+ items: [{ value: 'is', label: '等于', type: 1 },
66
+ { value: 'isNot', label: '不等于', type: 2 },
67
+ { value: 'lt', label: '早于', type: 9 },
68
+ { value: 'gt', label: '晚于', type: 7 },
69
+ { value: 'range', label: '范围', type: 14 }],
70
+ getValueComponent ({ condition }) {
71
+ if (condition && [5, 6].includes(condition.type)) {
72
+ return null
73
+ }
74
+ if (condition && [14].includes(condition.type)) {
75
+ return AdvancedFilterConditionItemDatetimeRange
76
+ }
77
+ return AdvancedFilterConditionItemDatetime
78
+ },
79
+ onChange: ({ condition, setValues }) => {
80
+ if (condition && [5, 6].includes(condition.type)) {
81
+ setValues('')
82
+ } else {
83
+ if (condition.values === '') {
84
+ setValues([])
85
+ }
86
+ }
87
+ }
88
+ },
89
+ number: {
90
+ items: [{ value: 'is', label: '等于', type: 1 },
91
+ { value: 'gt', label: '大于', type: 7 },
92
+ { value: 'lt', label: '小于', type: 9 }],
93
+ getValueComponent ({ condition }) {
94
+ if (condition && condition.type === 14) {
95
+ return AdvancedFilterConditionItemNumberRange
96
+ } else {
97
+ return AdvancedFilterConditionItemNumber
98
+ }
99
+ },
100
+ onChange: ({ condition, setValues }) => {
101
+ if ([condition && 5, 6].includes(condition.type)) {
102
+ setValues('')
103
+ } else {
104
+ if (condition.values === '') {
105
+ setValues([])
106
+ }
107
+ }
108
+ }
109
+ },
110
+ boolean: {
111
+ items: [
112
+ { value: 'is', label: '等于', type: 1 },
113
+ { value: 'isNot', label: '不等于', type: 2 }],
114
+ getValueComponent ({ condition }) {
115
+ return AdvancedFilterConditionItemBoolean
116
+ }
117
+ }
118
+ }
119
+
120
+ export function getBuiltinControl (name) {
121
+ if (name === 'string') {
122
+ return AdvancedFilterConditionItemString
123
+ } else if (name === 'date') {
124
+ return AdvancedFilterConditionItemDate
125
+ } else if (name === 'datetime') {
126
+ return AdvancedFilterConditionItemDatetime
127
+ } else if (name === 'number') {
128
+ return AdvancedFilterConditionItemNumber
129
+ } else if (name === 'boolean') {
130
+ return AdvancedFilterConditionItemBoolean
131
+ }
132
+ }
@@ -0,0 +1,121 @@
1
+ <template>
2
+ <el-autocomplete
3
+ class="ui-autocomplete"
4
+ ref="input"
5
+ size="small"
6
+ :value-key="valueField"
7
+ v-model="innerValue"
8
+ :maxlength="maxlength"
9
+ :placeholder="placeholder"
10
+ :fetch-suggestions="handleFetchSuggestions"
11
+ @select="handleSelect"
12
+ >
13
+ <ui-icon
14
+ name="sousuo"
15
+ slot="suffix"
16
+ class="ui-autocomplete__search"
17
+ v-if="!value"
18
+ ></ui-icon>
19
+ <ui-icon
20
+ v-else
21
+ name="close-circle-fill"
22
+ slot="suffix"
23
+ class="ui-autocomplete__clear"
24
+ :size="20"
25
+ @click="handleClearClick"
26
+ ></ui-icon>
27
+ <template slot-scope="scope">
28
+ <slot name="item" v-bind="scope"></slot>
29
+ </template>
30
+ </el-autocomplete>
31
+ </template>
32
+ <script>
33
+ import UiIcon from '../icon'
34
+ import ElAutocomplete from 'element-ui/lib/autocomplete'
35
+ import 'element-ui/lib/theme-chalk/autocomplete.css'
36
+
37
+ export default {
38
+ name: 'UiAutocomplete',
39
+ props: {
40
+ value: {
41
+ type: String
42
+ },
43
+ maxlength: {
44
+ type: Number
45
+ },
46
+ valueField: {
47
+ type: String
48
+ },
49
+ placeholder: {
50
+ type: String
51
+ },
52
+ fetchSuggestions: {
53
+ type: Function
54
+ }
55
+ },
56
+ components: {
57
+ UiIcon,
58
+ ElAutocomplete
59
+ },
60
+ computed: {
61
+ innerValue: {
62
+ get () {
63
+ return this.value
64
+ },
65
+ set (val) {
66
+ this.$emit('input', val)
67
+ }
68
+ }
69
+ },
70
+ methods: {
71
+ handleSelect (evt) {
72
+ this.$emit('select', evt)
73
+ },
74
+ handleClearClick () {
75
+ this.innerValue = ''
76
+ this.$refs.input.close()
77
+ this.$emit('clear')
78
+ },
79
+ handleFetchSuggestions (keyword, cb) {
80
+ if (!this.fetchSuggestions) {
81
+ return cb([])
82
+ } else {
83
+ this.fetchSuggestions(keyword).then(rs => {
84
+ cb(rs)
85
+ }, () => {
86
+ cb([])
87
+ })
88
+ }
89
+ }
90
+ }
91
+ }
92
+ </script>
93
+ <style lang="less">
94
+ .ui-autocomplete{
95
+ width: 100%;
96
+ .el-input__inner{
97
+ box-sizing: border-box;
98
+ &:focus{
99
+ border-color: #1aa2e8;
100
+ box-shadow: 0 0 0 0.2rem rgba(26, 162, 232,.25);
101
+ }
102
+ }
103
+ }
104
+ .ui-autocomplete__search,
105
+ .ui-autocomplete__clear{
106
+ display: inline-block;
107
+ vertical-align: top;
108
+ margin-top: 4px;
109
+ margin-right: 2px;
110
+ height: 24px;
111
+ line-height: 24px;
112
+ text-align: center;
113
+ width: 24px;
114
+ }
115
+ .ui-autocomplete__clear{
116
+ cursor: pointer;
117
+ &:hover{
118
+ color: #484848;
119
+ }
120
+ }
121
+ </style>
@@ -0,0 +1,7 @@
1
+ import AutoComplete from './autocomplete.vue'
2
+
3
+ AutoComplete.install = (Vue) => {
4
+ Vue.component(AutoComplete.name, AutoComplete)
5
+ }
6
+
7
+ export default AutoComplete
Binary file