n20-common-lib 1.2.8 → 1.2.9

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 (189) hide show
  1. package/README.md +2 -2
  2. package/package.json +87 -87
  3. package/src/_qiankun/index.js +113 -113
  4. package/src/_qiankun/postMessage.js +48 -48
  5. package/src/assets/css/_coreLib.scss +35 -35
  6. package/src/assets/css/cl-anchor.scss +23 -23
  7. package/src/assets/css/cl-approve-card.scss +58 -58
  8. package/src/assets/css/cl-dialog.scss +99 -99
  9. package/src/assets/css/cl-drag-list.scss +22 -22
  10. package/src/assets/css/cl-empty.scss +10 -10
  11. package/src/assets/css/cl-expandable-pane.scss +26 -26
  12. package/src/assets/css/cl-expandable.scss +24 -24
  13. package/src/assets/css/cl-file-upload-table.scss +11 -11
  14. package/src/assets/css/cl-filter.scss +4 -4
  15. package/src/assets/css/cl-flow-step.scss +185 -185
  16. package/src/assets/css/cl-footer-box.scss +10 -10
  17. package/src/assets/css/cl-form-item.scss +454 -454
  18. package/src/assets/css/cl-general-card.scss +11 -11
  19. package/src/assets/css/cl-layout-aside.scss +88 -88
  20. package/src/assets/css/cl-layout-content.scss +16 -16
  21. package/src/assets/css/cl-layout-header.scss +73 -73
  22. package/src/assets/css/cl-layout-tabs.scss +87 -87
  23. package/src/assets/css/cl-layout.scss +97 -97
  24. package/src/assets/css/cl-login-temporary.scss +37 -37
  25. package/src/assets/css/cl-message.scss +75 -75
  26. package/src/assets/css/cl-more-tab.scss +98 -98
  27. package/src/assets/css/cl-nav-menu.scss +5 -5
  28. package/src/assets/css/cl-pagination.scss +65 -65
  29. package/src/assets/css/cl-secondary-tab.scss +39 -39
  30. package/src/assets/css/cl-showcolumn.scss +23 -23
  31. package/src/assets/css/cl-sifting.scss +51 -51
  32. package/src/assets/css/cl-statis.scss +42 -42
  33. package/src/assets/css/cl-step.scss +73 -73
  34. package/src/assets/css/cl-suspend.scss +19 -19
  35. package/src/assets/css/cl-tertiary-tab.scss +9 -9
  36. package/src/assets/css/cl-upload.scss +41 -41
  37. package/src/assets/css/cl-worn-pagination.scss +50 -50
  38. package/src/assets/css/el-button.scss +173 -173
  39. package/src/assets/css/el-table.scss +79 -79
  40. package/src/assets/css/element-variables.scss +1061 -1061
  41. package/src/assets/css/element.dev.scss +21 -21
  42. package/src/assets/css/font-icon.scss +27 -27
  43. package/src/assets/css/index.dev.scss +4 -4
  44. package/src/assets/css/index.scss +11 -11
  45. package/src/assets/css/normalize.scss +726 -726
  46. package/src/assets/css/rootvar.scss +139 -139
  47. package/src/assets/css/select.scss +25 -25
  48. package/src/assets/css/title-pop.scss +4 -4
  49. package/src/assets/getJsonc.js +50 -50
  50. package/src/assets/realUrl.js +12 -12
  51. package/src/components/.DS_Store +0 -0
  52. package/src/components/Anchor/AnchorItem.vue +29 -29
  53. package/src/components/Anchor/index.vue +185 -185
  54. package/src/components/ApprovalButtons/index.vue +232 -232
  55. package/src/components/ApprovalCard/index.vue +128 -128
  56. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  57. package/src/components/ApprovalRecord/index.vue +59 -59
  58. package/src/components/Button/button-group.vue +150 -150
  59. package/src/components/Button/icon-group-button.vue +61 -61
  60. package/src/components/Button/index.vue +56 -56
  61. package/src/components/CascaderArea/index.vue +81 -81
  62. package/src/components/ContentLoading/index.vue +41 -41
  63. package/src/components/ContentNull/index.vue +19 -19
  64. package/src/components/DatePicker/index.vue +27 -27
  65. package/src/components/DatePicker/por.vue +169 -169
  66. package/src/components/Dialog/index.vue +26 -26
  67. package/src/components/Dialog/indexO.vue +116 -116
  68. package/src/components/DragList/index.vue +68 -68
  69. package/src/components/Empty/img/abnormal.svg +108 -108
  70. package/src/components/Empty/img/dispose.svg +71 -71
  71. package/src/components/Empty/img/empty.svg +57 -57
  72. package/src/components/Empty/img/general.svg +58 -58
  73. package/src/components/Empty/img/lock.svg +57 -57
  74. package/src/components/Empty/img/network.svg +59 -59
  75. package/src/components/Empty/img/relevant.svg +68 -68
  76. package/src/components/Empty/img/search.svg +72 -72
  77. package/src/components/Empty/index.vue +92 -92
  78. package/src/components/Expandable/index.vue +49 -49
  79. package/src/components/Expandable/main.vue +52 -52
  80. package/src/components/FileExportAsync/index.vue +174 -174
  81. package/src/components/FileUploadTable/index.vue +484 -484
  82. package/src/components/Filters/index.vue +369 -369
  83. package/src/components/Filters/indexO.vue +104 -104
  84. package/src/components/FlowStep/index.vue +68 -68
  85. package/src/components/FooterBox/index.vue +21 -21
  86. package/src/components/GeneralCard/index.vue +15 -15
  87. package/src/components/InputNumber/index.vue +153 -153
  88. package/src/components/InputNumber/numberRange.vue +47 -47
  89. package/src/components/InputSearch/index.vue +75 -75
  90. package/src/components/Layout/.DS_Store +0 -0
  91. package/src/components/Layout/AsideNav/index.vue +119 -119
  92. package/src/components/Layout/AsideNav/menuItem.vue +34 -34
  93. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -26
  94. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  95. package/src/components/Layout/HeaderWrap/index.vue +348 -348
  96. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -300
  97. package/src/components/Layout/SubContent/index.vue +131 -131
  98. package/src/components/Layout/TabsNav/index.vue +170 -170
  99. package/src/components/Layout/index.vue +529 -529
  100. package/src/components/Layout/utils.js +12 -12
  101. package/src/components/LoginTemporary/form.vue +537 -537
  102. package/src/components/LoginTemporary/index.vue +122 -122
  103. package/src/components/LoginTemporary/qrcode.vue +90 -90
  104. package/src/components/LoginTemporary/retrievePw.vue +28 -28
  105. package/src/components/LoginTemporary/utils.js +73 -73
  106. package/src/components/MicroApp/index.js +67 -67
  107. package/src/components/MicroFrame/index.vue +95 -95
  108. package/src/components/MoreTab/index.vue +232 -232
  109. package/src/components/NavMenu/index.vue +60 -60
  110. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  111. package/src/components/PageLayout/page.vue +15 -15
  112. package/src/components/Pagination/index.vue +96 -96
  113. package/src/components/SecondaryTab/index.vue +58 -58
  114. package/src/components/SelectLazy/index.vue +75 -75
  115. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  116. package/src/components/SelectTree/index.vue +205 -205
  117. package/src/components/ShowColumn/index.vue +204 -204
  118. package/src/components/Sifting/index.vue +99 -99
  119. package/src/components/Statis/index.vue +97 -97
  120. package/src/components/Statis/statisItem.vue +54 -54
  121. package/src/components/Statis/statisPopover.vue +55 -55
  122. package/src/components/Step/index.vue +38 -38
  123. package/src/components/Suspend/index.vue +72 -72
  124. package/src/components/Table/index.vue +179 -179
  125. package/src/components/Table/indexO.vue +149 -149
  126. package/src/components/Task/index.vue +26 -26
  127. package/src/components/TertiaryTab/index.vue +53 -53
  128. package/src/components/TimePicker/index.vue +28 -28
  129. package/src/components/Upload/index.vue +242 -242
  130. package/src/components/WornPagination/index.vue +73 -73
  131. package/src/directives/VClickOutside/index.js +19 -19
  132. package/src/directives/VHas/index.js +32 -32
  133. package/src/directives/VMove/index.js +42 -42
  134. package/src/directives/VTitle/index.js +64 -64
  135. package/src/directives/VTitle/tooltip.vue +21 -21
  136. package/src/index.js +225 -225
  137. package/src/plugins/CompatibleOld/index.js +57 -57
  138. package/src/plugins/Print/index.js +4 -4
  139. package/src/plugins/Print/print-js/.babelrc +12 -12
  140. package/src/plugins/Print/print-js/LICENSE +21 -21
  141. package/src/plugins/Print/print-js/README.md +98 -98
  142. package/src/plugins/Print/print-js/dist/print.css +96 -96
  143. package/src/plugins/Print/print-js/dist/print.js +990 -990
  144. package/src/plugins/Print/print-js/package.json +60 -60
  145. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  146. package/src/plugins/Print/print-js/src/index.js +10 -10
  147. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  148. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  149. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  150. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  151. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  152. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  153. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  154. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  155. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  156. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  157. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  158. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  159. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  160. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  161. package/src/plugins/Print/print.js +2 -2
  162. package/src/plugins/Print/print.scss +1 -1
  163. package/src/plugins/SetMenuTree/index.vue +41 -41
  164. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  165. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  166. package/src/plugins/SetMenuTree/utils.js +74 -74
  167. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  168. package/src/plugins/Sign/index.js +65 -65
  169. package/src/plugins/Sign/sign.js +1 -1
  170. package/src/plugins/setTabsForSub.js +2 -2
  171. package/src/utils/auth.js +53 -53
  172. package/src/utils/axios.js +203 -203
  173. package/src/utils/downloadBlob.js +19 -19
  174. package/src/utils/forEachs.js +16 -16
  175. package/src/utils/getScrollContainer.js +43 -43
  176. package/src/utils/i18n/cn2hk.json +1270 -1270
  177. package/src/utils/i18n/index.js +54 -54
  178. package/src/utils/list2tree.js +36 -36
  179. package/src/utils/msgboxPor.js +26 -26
  180. package/src/utils/print.js +161 -161
  181. package/src/utils/relaNo.js +69 -69
  182. package/src/utils/repairElementUI.js +66 -66
  183. package/src/utils/urlToGo.js +82 -82
  184. package/style/css/normalize.scss +723 -726
  185. package/style/pageDemo/demo-1.vue +130 -131
  186. package/style/pageDemo/demo-2.vue +35 -35
  187. package/style/pageDemo/demo-3.vue +22 -22
  188. package/style/pageDemo/seeCode.js +20 -20
  189. package/style/server-config.jsonc +663 -596
@@ -1,369 +1,369 @@
1
- <template>
2
- <el-popover
3
- v-model="showPop"
4
- trigger="manual"
5
- :width="width"
6
- title="筛选"
7
- placement="bottom-end"
8
- @show="showPopC = true"
9
- @after-leave="
10
- showPopC = false
11
- showMore = false
12
- "
13
- >
14
- <template slot="reference">
15
- <el-button
16
- icon="n20-icon-iconfontshaixuan"
17
- plain
18
- onlyicon
19
- size="mini"
20
- @click="clickBtn"
21
- />
22
- </template>
23
-
24
- <el-form
25
- v-if="showPopC"
26
- v-click-outside="clickOut"
27
- class="n20-filter p-a-s p-b-0"
28
- :label-width="labelWidth"
29
- @submit.native.prevent
30
- >
31
- <el-form-item
32
- v-for="(item, i) in minList"
33
- :key="i"
34
- class="m-b"
35
- :label="item.label"
36
- >
37
- <slot v-if="item.slotName" :name="item.slotName"></slot>
38
- <el-input
39
- v-else-if="item.type === 'text' || item.type === undefined"
40
- v-model="form[item.value]"
41
- :clearable="item | clearableF"
42
- style="width: 100%"
43
- v-bind="item.props"
44
- v-on="item.on"
45
- />
46
- <el-select
47
- v-else-if="item.type === 'select'"
48
- v-model="form[item.value]"
49
- :clearable="item | clearableF"
50
- :multiple="item.multiple"
51
- style="width: 100%"
52
- v-bind="item.props"
53
- v-on="item.on"
54
- >
55
- <template
56
- v-if="item.props && item.props.labelKey && item.props.valueKey"
57
- >
58
- <el-option
59
- v-for="(c, i) in item.options"
60
- :key="i"
61
- :label="c[item.props.labelKey]"
62
- :value="c[item.props.valueKey]"
63
- :disabled="c.disabled"
64
- />
65
- </template>
66
- <template v-else>
67
- <el-option
68
- v-for="c in item.options"
69
- :key="c.value + '_' + c.label"
70
- :label="c.label"
71
- :value="c.value"
72
- :disabled="c.disabled"
73
- />
74
- </template>
75
- </el-select>
76
- <inputNumber
77
- v-else-if="item.type === 'number'"
78
- v-model="form[item.value]"
79
- style="width: 100%"
80
- v-bind="item.props"
81
- v-on="item.on"
82
- />
83
- <inputNumberRange
84
- v-else-if="item.type === 'numberrange'"
85
- :start-value.sync="form[item.startValue]"
86
- :end-value.sync="form[item.endValue]"
87
- style="width: 100%"
88
- v-bind="item.props"
89
- v-on="item.on"
90
- />
91
- <datePickerPor
92
- v-else-if="item.type === 'date'"
93
- v-model="form[item.value]"
94
- type="date"
95
- :clearable="item | clearableF"
96
- style="width: 100%"
97
- v-bind="item.props"
98
- v-on="item.on"
99
- />
100
- <datePickerPor
101
- v-else-if="item.type === 'daterange'"
102
- type="daterange"
103
- :start-date.sync="form[item.startDate]"
104
- :end-date.sync="form[item.endDate]"
105
- :clearable="item | clearableF"
106
- style="width: 100%"
107
- v-bind="item.props"
108
- v-on="item.on"
109
- />
110
- <el-checkbox-group
111
- v-else-if="item.type === 'checkbox'"
112
- v-model="form[item.value]"
113
- v-bind="item.props"
114
- v-on="item.on"
115
- >
116
- <el-checkbox
117
- v-for="c in item.options"
118
- :key="c.value"
119
- :label="c.value"
120
- :disabled="c.disabled"
121
- >{{ c.label }}</el-checkbox
122
- >
123
- </el-checkbox-group>
124
- <el-radio-group
125
- v-else-if="item.type === 'radio'"
126
- v-model="form[item.value]"
127
- v-bind="item.props"
128
- v-on="item.on"
129
- >
130
- <el-radio
131
- v-for="c in item.options"
132
- :key="c.value"
133
- :label="c.value"
134
- :disabled="c.disabled"
135
- >{{ c.label }}</el-radio
136
- >
137
- </el-radio-group>
138
- </el-form-item>
139
- <template v-if="filterList.length > defaultShow">
140
- <div :style="{ paddingLeft: labelWidth }">
141
- <el-button
142
- class="p-t-0 m-b-s color-primary"
143
- type="text"
144
- @click="showMore = !showMore"
145
- ><span>更多条件</span
146
- ><i
147
- :class="showMore ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"
148
- ></i
149
- ></el-button>
150
- </div>
151
- <el-collapse-transition>
152
- <div v-if="showMore">
153
- <el-form-item
154
- v-for="(item, i) in moreList"
155
- :key="i"
156
- :label="item.label"
157
- >
158
- <slot v-if="item.slotName" :name="item.slotName"></slot>
159
- <el-input
160
- v-else-if="item.type === 'text' || item.type === undefined"
161
- v-model="form[item.value]"
162
- :clearable="item | clearableF"
163
- style="width: 100%"
164
- v-bind="item.props"
165
- v-on="item.on"
166
- />
167
- <el-select
168
- v-else-if="item.type === 'select'"
169
- v-model="form[item.value]"
170
- :clearable="item | clearableF"
171
- :multiple="item.multiple"
172
- style="width: 100%"
173
- v-bind="item.props"
174
- v-on="item.on"
175
- >
176
- <template
177
- v-if="
178
- item.props && item.props.labelKey && item.props.valueKey
179
- "
180
- >
181
- <el-option
182
- v-for="(c, i) in item.options"
183
- :key="i"
184
- :label="c[item.props.labelKey]"
185
- :value="c[item.props.valueKey]"
186
- :disabled="c.disabled"
187
- />
188
- </template>
189
- <template v-else>
190
- <el-option
191
- v-for="c in item.options"
192
- :key="c.value + '_' + c.label"
193
- :label="c.label"
194
- :value="c.value"
195
- :disabled="c.disabled"
196
- />
197
- </template>
198
- </el-select>
199
- <inputNumber
200
- v-else-if="item.type === 'number'"
201
- v-model="form[item.value]"
202
- style="width: 100%"
203
- v-bind="item.props"
204
- v-on="item.on"
205
- />
206
- <inputNumberRange
207
- v-else-if="item.type === 'numberrange'"
208
- :start-value.sync="form[item.startValue]"
209
- :end-value.sync="form[item.endValue]"
210
- style="width: 100%"
211
- v-bind="item.props"
212
- v-on="item.on"
213
- />
214
- <datePickerPor
215
- v-else-if="item.type === 'date'"
216
- v-model="form[item.value]"
217
- type="date"
218
- :clearable="item | clearableF"
219
- style="width: 100%"
220
- v-bind="item.props"
221
- v-on="item.on"
222
- />
223
- <datePickerPor
224
- v-else-if="item.type === 'daterange'"
225
- type="daterange"
226
- :start-date.sync="form[item.startDate]"
227
- :end-date.sync="form[item.endDate]"
228
- :clearable="item | clearableF"
229
- style="width: 100%"
230
- v-bind="item.props"
231
- v-on="item.on"
232
- />
233
- <el-checkbox-group
234
- v-else-if="item.type === 'checkbox'"
235
- v-model="form[item.value]"
236
- v-bind="item.props"
237
- v-on="item.on"
238
- >
239
- <el-checkbox
240
- v-for="c in item.options"
241
- :key="c.value"
242
- :label="c.value"
243
- :disabled="c.disabled"
244
- >{{ c.label }}</el-checkbox
245
- >
246
- </el-checkbox-group>
247
- <el-radio-group
248
- v-else-if="item.type === 'radio'"
249
- v-model="form[item.value]"
250
- v-bind="item.props"
251
- v-on="item.on"
252
- >
253
- <el-radio
254
- v-for="c in item.options"
255
- :key="c.value"
256
- :label="c.value"
257
- :disabled="c.disabled"
258
- >{{ c.label }}</el-radio
259
- >
260
- </el-radio-group>
261
- </el-form-item>
262
- </div>
263
- </el-collapse-transition>
264
- </template>
265
- <footerBox class="text-c">
266
- <el-button type="primary" @click="filter">筛选</el-button>
267
- <el-button plain @click="clear">重置</el-button>
268
- </footerBox>
269
- </el-form>
270
- </el-popover>
271
- </template>
272
-
273
- <script>
274
- import inputNumber from '../InputNumber/index.vue'
275
- import inputNumberRange from '../InputNumber/numberRange.vue'
276
- import datePickerPor from '../DatePicker/por.vue'
277
- import footerBox from '../FooterBox/index.vue'
278
- export default {
279
- name: 'Filters',
280
- components: {
281
- inputNumber,
282
- inputNumberRange,
283
- datePickerPor,
284
- footerBox
285
- },
286
- filters: {
287
- clearableF(item) {
288
- if (item.props && item.props.clearable === false) {
289
- return false
290
- } else {
291
- return true
292
- }
293
- }
294
- },
295
- props: {
296
- width: {
297
- type: Number,
298
- default: 310
299
- },
300
- defaultShow: {
301
- type: Number,
302
- default: 5
303
- },
304
- filterList: {
305
- type: Array,
306
- default: () => []
307
- },
308
- form: {
309
- type: Object,
310
- default: () => ({})
311
- },
312
- labelWidth: {
313
- type: [String, Number],
314
- default: '5em'
315
- }
316
- },
317
- data() {
318
- return {
319
- showPop: false,
320
- showPopC: false,
321
- showMore: false
322
- }
323
- },
324
- computed: {
325
- minList() {
326
- return this.filterList.slice(0, this.defaultShow)
327
- },
328
- moreList() {
329
- return this.filterList.slice(this.defaultShow)
330
- }
331
- },
332
- methods: {
333
- clear() {
334
- this.$emit('clear')
335
- },
336
- filter() {
337
- this.$emit('filter')
338
- this.$nextTick(() => {
339
- this.showPop = false
340
- })
341
- },
342
- clickBtn() {
343
- if (!this.showPop) {
344
- setTimeout(() => {
345
- this.showPop = true
346
- }, 60)
347
- }
348
- },
349
- clickOut() {
350
- let elPoppers = []
351
- document
352
- .querySelectorAll('.el-popper,.el-dialog__wrapper')
353
- .forEach((e) => {
354
- e.style.display !== 'none' && elPoppers.push(e)
355
- })
356
-
357
- if (elPoppers.length <= 1) {
358
- this.showPop = false
359
- }
360
- },
361
- setOptions(key, opts) {
362
- let item = this.filterList.find((f) => f.value === key)
363
- if (item) {
364
- item.options = opts || []
365
- }
366
- }
367
- }
368
- }
369
- </script>
1
+ <template>
2
+ <el-popover
3
+ v-model="showPop"
4
+ trigger="manual"
5
+ :width="width"
6
+ title="筛选"
7
+ placement="bottom-end"
8
+ @show="showPopC = true"
9
+ @after-leave="
10
+ showPopC = false
11
+ showMore = false
12
+ "
13
+ >
14
+ <template slot="reference">
15
+ <el-button
16
+ icon="n20-icon-iconfontshaixuan"
17
+ plain
18
+ onlyicon
19
+ size="mini"
20
+ @click="clickBtn"
21
+ />
22
+ </template>
23
+
24
+ <el-form
25
+ v-if="showPopC"
26
+ v-click-outside="clickOut"
27
+ class="n20-filter p-a-s p-b-0"
28
+ :label-width="labelWidth"
29
+ @submit.native.prevent
30
+ >
31
+ <el-form-item
32
+ v-for="(item, i) in minList"
33
+ :key="i"
34
+ class="m-b"
35
+ :label="item.label"
36
+ >
37
+ <slot v-if="item.slotName" :name="item.slotName"></slot>
38
+ <el-input
39
+ v-else-if="item.type === 'text' || item.type === undefined"
40
+ v-model="form[item.value]"
41
+ :clearable="item | clearableF"
42
+ style="width: 100%"
43
+ v-bind="item.props"
44
+ v-on="item.on"
45
+ />
46
+ <el-select
47
+ v-else-if="item.type === 'select'"
48
+ v-model="form[item.value]"
49
+ :clearable="item | clearableF"
50
+ :multiple="item.multiple"
51
+ style="width: 100%"
52
+ v-bind="item.props"
53
+ v-on="item.on"
54
+ >
55
+ <template
56
+ v-if="item.props && item.props.labelKey && item.props.valueKey"
57
+ >
58
+ <el-option
59
+ v-for="(c, i) in item.options"
60
+ :key="i"
61
+ :label="c[item.props.labelKey]"
62
+ :value="c[item.props.valueKey]"
63
+ :disabled="c.disabled"
64
+ />
65
+ </template>
66
+ <template v-else>
67
+ <el-option
68
+ v-for="c in item.options"
69
+ :key="c.value + '_' + c.label"
70
+ :label="c.label"
71
+ :value="c.value"
72
+ :disabled="c.disabled"
73
+ />
74
+ </template>
75
+ </el-select>
76
+ <inputNumber
77
+ v-else-if="item.type === 'number'"
78
+ v-model="form[item.value]"
79
+ style="width: 100%"
80
+ v-bind="item.props"
81
+ v-on="item.on"
82
+ />
83
+ <inputNumberRange
84
+ v-else-if="item.type === 'numberrange'"
85
+ :start-value.sync="form[item.startValue]"
86
+ :end-value.sync="form[item.endValue]"
87
+ style="width: 100%"
88
+ v-bind="item.props"
89
+ v-on="item.on"
90
+ />
91
+ <datePickerPor
92
+ v-else-if="item.type === 'date'"
93
+ v-model="form[item.value]"
94
+ type="date"
95
+ :clearable="item | clearableF"
96
+ style="width: 100%"
97
+ v-bind="item.props"
98
+ v-on="item.on"
99
+ />
100
+ <datePickerPor
101
+ v-else-if="item.type === 'daterange'"
102
+ type="daterange"
103
+ :start-date.sync="form[item.startDate]"
104
+ :end-date.sync="form[item.endDate]"
105
+ :clearable="item | clearableF"
106
+ style="width: 100%"
107
+ v-bind="item.props"
108
+ v-on="item.on"
109
+ />
110
+ <el-checkbox-group
111
+ v-else-if="item.type === 'checkbox'"
112
+ v-model="form[item.value]"
113
+ v-bind="item.props"
114
+ v-on="item.on"
115
+ >
116
+ <el-checkbox
117
+ v-for="c in item.options"
118
+ :key="c.value"
119
+ :label="c.value"
120
+ :disabled="c.disabled"
121
+ >{{ c.label }}</el-checkbox
122
+ >
123
+ </el-checkbox-group>
124
+ <el-radio-group
125
+ v-else-if="item.type === 'radio'"
126
+ v-model="form[item.value]"
127
+ v-bind="item.props"
128
+ v-on="item.on"
129
+ >
130
+ <el-radio
131
+ v-for="c in item.options"
132
+ :key="c.value"
133
+ :label="c.value"
134
+ :disabled="c.disabled"
135
+ >{{ c.label }}</el-radio
136
+ >
137
+ </el-radio-group>
138
+ </el-form-item>
139
+ <template v-if="filterList.length > defaultShow">
140
+ <div :style="{ paddingLeft: labelWidth }">
141
+ <el-button
142
+ class="p-t-0 m-b-s color-primary"
143
+ type="text"
144
+ @click="showMore = !showMore"
145
+ ><span>更多条件</span
146
+ ><i
147
+ :class="showMore ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"
148
+ ></i
149
+ ></el-button>
150
+ </div>
151
+ <el-collapse-transition>
152
+ <div v-if="showMore">
153
+ <el-form-item
154
+ v-for="(item, i) in moreList"
155
+ :key="i"
156
+ :label="item.label"
157
+ >
158
+ <slot v-if="item.slotName" :name="item.slotName"></slot>
159
+ <el-input
160
+ v-else-if="item.type === 'text' || item.type === undefined"
161
+ v-model="form[item.value]"
162
+ :clearable="item | clearableF"
163
+ style="width: 100%"
164
+ v-bind="item.props"
165
+ v-on="item.on"
166
+ />
167
+ <el-select
168
+ v-else-if="item.type === 'select'"
169
+ v-model="form[item.value]"
170
+ :clearable="item | clearableF"
171
+ :multiple="item.multiple"
172
+ style="width: 100%"
173
+ v-bind="item.props"
174
+ v-on="item.on"
175
+ >
176
+ <template
177
+ v-if="
178
+ item.props && item.props.labelKey && item.props.valueKey
179
+ "
180
+ >
181
+ <el-option
182
+ v-for="(c, i) in item.options"
183
+ :key="i"
184
+ :label="c[item.props.labelKey]"
185
+ :value="c[item.props.valueKey]"
186
+ :disabled="c.disabled"
187
+ />
188
+ </template>
189
+ <template v-else>
190
+ <el-option
191
+ v-for="c in item.options"
192
+ :key="c.value + '_' + c.label"
193
+ :label="c.label"
194
+ :value="c.value"
195
+ :disabled="c.disabled"
196
+ />
197
+ </template>
198
+ </el-select>
199
+ <inputNumber
200
+ v-else-if="item.type === 'number'"
201
+ v-model="form[item.value]"
202
+ style="width: 100%"
203
+ v-bind="item.props"
204
+ v-on="item.on"
205
+ />
206
+ <inputNumberRange
207
+ v-else-if="item.type === 'numberrange'"
208
+ :start-value.sync="form[item.startValue]"
209
+ :end-value.sync="form[item.endValue]"
210
+ style="width: 100%"
211
+ v-bind="item.props"
212
+ v-on="item.on"
213
+ />
214
+ <datePickerPor
215
+ v-else-if="item.type === 'date'"
216
+ v-model="form[item.value]"
217
+ type="date"
218
+ :clearable="item | clearableF"
219
+ style="width: 100%"
220
+ v-bind="item.props"
221
+ v-on="item.on"
222
+ />
223
+ <datePickerPor
224
+ v-else-if="item.type === 'daterange'"
225
+ type="daterange"
226
+ :start-date.sync="form[item.startDate]"
227
+ :end-date.sync="form[item.endDate]"
228
+ :clearable="item | clearableF"
229
+ style="width: 100%"
230
+ v-bind="item.props"
231
+ v-on="item.on"
232
+ />
233
+ <el-checkbox-group
234
+ v-else-if="item.type === 'checkbox'"
235
+ v-model="form[item.value]"
236
+ v-bind="item.props"
237
+ v-on="item.on"
238
+ >
239
+ <el-checkbox
240
+ v-for="c in item.options"
241
+ :key="c.value"
242
+ :label="c.value"
243
+ :disabled="c.disabled"
244
+ >{{ c.label }}</el-checkbox
245
+ >
246
+ </el-checkbox-group>
247
+ <el-radio-group
248
+ v-else-if="item.type === 'radio'"
249
+ v-model="form[item.value]"
250
+ v-bind="item.props"
251
+ v-on="item.on"
252
+ >
253
+ <el-radio
254
+ v-for="c in item.options"
255
+ :key="c.value"
256
+ :label="c.value"
257
+ :disabled="c.disabled"
258
+ >{{ c.label }}</el-radio
259
+ >
260
+ </el-radio-group>
261
+ </el-form-item>
262
+ </div>
263
+ </el-collapse-transition>
264
+ </template>
265
+ <footerBox class="text-c">
266
+ <el-button type="primary" @click="filter">筛选</el-button>
267
+ <el-button plain @click="clear">重置</el-button>
268
+ </footerBox>
269
+ </el-form>
270
+ </el-popover>
271
+ </template>
272
+
273
+ <script>
274
+ import inputNumber from '../InputNumber/index.vue'
275
+ import inputNumberRange from '../InputNumber/numberRange.vue'
276
+ import datePickerPor from '../DatePicker/por.vue'
277
+ import footerBox from '../FooterBox/index.vue'
278
+ export default {
279
+ name: 'Filters',
280
+ components: {
281
+ inputNumber,
282
+ inputNumberRange,
283
+ datePickerPor,
284
+ footerBox
285
+ },
286
+ filters: {
287
+ clearableF(item) {
288
+ if (item.props && item.props.clearable === false) {
289
+ return false
290
+ } else {
291
+ return true
292
+ }
293
+ }
294
+ },
295
+ props: {
296
+ width: {
297
+ type: Number,
298
+ default: 310
299
+ },
300
+ defaultShow: {
301
+ type: Number,
302
+ default: 5
303
+ },
304
+ filterList: {
305
+ type: Array,
306
+ default: () => []
307
+ },
308
+ form: {
309
+ type: Object,
310
+ default: () => ({})
311
+ },
312
+ labelWidth: {
313
+ type: [String, Number],
314
+ default: '5em'
315
+ }
316
+ },
317
+ data() {
318
+ return {
319
+ showPop: false,
320
+ showPopC: false,
321
+ showMore: false
322
+ }
323
+ },
324
+ computed: {
325
+ minList() {
326
+ return this.filterList.slice(0, this.defaultShow)
327
+ },
328
+ moreList() {
329
+ return this.filterList.slice(this.defaultShow)
330
+ }
331
+ },
332
+ methods: {
333
+ clear() {
334
+ this.$emit('clear')
335
+ },
336
+ filter() {
337
+ this.$emit('filter')
338
+ this.$nextTick(() => {
339
+ this.showPop = false
340
+ })
341
+ },
342
+ clickBtn() {
343
+ if (!this.showPop) {
344
+ setTimeout(() => {
345
+ this.showPop = true
346
+ }, 60)
347
+ }
348
+ },
349
+ clickOut() {
350
+ let elPoppers = []
351
+ document
352
+ .querySelectorAll('.el-popper,.el-dialog__wrapper')
353
+ .forEach((e) => {
354
+ e.style.display !== 'none' && elPoppers.push(e)
355
+ })
356
+
357
+ if (elPoppers.length <= 1) {
358
+ this.showPop = false
359
+ }
360
+ },
361
+ setOptions(key, opts) {
362
+ let item = this.filterList.find((f) => f.value === key)
363
+ if (item) {
364
+ item.options = opts || []
365
+ }
366
+ }
367
+ }
368
+ }
369
+ </script>