n20-common-lib 1.2.43 → 1.2.44

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