@xuekl/cli-components 1.2.6 → 1.2.8

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.
package/XklForm.vue CHANGED
@@ -52,6 +52,10 @@
52
52
  <el-form-item label-width="0">
53
53
  <div class="query-action">
54
54
  <slot name="_action"></slot>
55
+ <span class="collapsible" v-if="opts.collapsible" @click="doCollapse()">
56
+ {{ isCollapse ? '展开' : '收起' }}
57
+ <icon-svg name="down" :class="[isCollapse ? '' : 'rotate']"></icon-svg>
58
+ </span>
55
59
  </div>
56
60
  </el-form-item>
57
61
  </el-col>
@@ -74,11 +78,17 @@ import XklDict from './XklDict.vue'
74
78
  import XklDatePicker from './XklDatePicker.vue'
75
79
  import { componentGlobal } from '@xuekl/cli-base/global'
76
80
 
81
+ import { slice } from 'lodash'
77
82
  const props = defineProps(['form'])
78
83
  const XklFormRef = ref(null)
79
84
  const { form } = props
80
- const formList: FormItem[] = []
85
+ const sourceFormList: FormItem[] = []
86
+ const formList: FormItem[] = ref([])
81
87
  const opts = form._opts || {}
88
+ const isCollapse = ref(true)
89
+ if (typeof opts.defaultCollapse !== 'undefined') {
90
+ isCollapse.value = opts.defaultCollapse
91
+ }
82
92
 
83
93
  // 获取符合mode的字段
84
94
  const modeFields: any = {}
@@ -149,10 +159,12 @@ Object.keys(form).forEach(prop => {
149
159
  }
150
160
  if (opts.mode) {
151
161
  if (field.mode && field.mode.includes(opts.mode)) {
152
- formList.push(item)
162
+ formList.value.push(item)
163
+ sourceFormList.push(item)
153
164
  }
154
165
  } else {
155
- formList.push(item)
166
+ formList.value.push(item)
167
+ sourceFormList.push(item)
156
168
  }
157
169
  }
158
170
  })
@@ -160,18 +172,63 @@ Object.keys(form).forEach(prop => {
160
172
  //计算按钮所占span
161
173
  let toalSpan = 0
162
174
  const searchSpan = ref(0)
163
- formList.forEach(res => {
175
+ const spans: number[] = []
176
+ formList.value.forEach(res => {
164
177
  if (res.show && res.show()) {
165
178
  if (res.span) {
179
+ spans.push(res.span)
166
180
  toalSpan = toalSpan + res.span
167
181
  } else {
182
+ spans.push(opts.span)
168
183
  toalSpan = toalSpan + opts.span
169
184
  }
170
185
  }
171
186
 
172
187
  })
173
- searchSpan.value = 24 - toalSpan % 24
174
188
 
189
+ let stepLength = 0
190
+ let collapseTotalSpan = 0
191
+ if (opts.collapsible) {
192
+ let step = 0
193
+ for (let i = 0; i < spans.length; i++) {
194
+ if (step >= 24) {
195
+ stepLength = i
196
+ break
197
+ }
198
+ if (spans[i] === 24) {
199
+ step = step + 0
200
+ } else {
201
+ step = step + spans[i]
202
+ }
203
+ }
204
+
205
+ for (let i = 0; i < stepLength - 1; i++) {
206
+ collapseTotalSpan = collapseTotalSpan + spans[i]
207
+ }
208
+
209
+ }
210
+
211
+ if (opts.collapsible) {
212
+ searchSpan.value = 24 - collapseTotalSpan % 24
213
+ formList.value = sourceFormList.slice(0, stepLength - 1)
214
+ } else {
215
+ searchSpan.value = 24 - toalSpan % 24
216
+ formList.value = sourceFormList
217
+ }
218
+
219
+
220
+
221
+ const doCollapse = () => {
222
+ isCollapse.value = !isCollapse.value
223
+ if (isCollapse.value) {
224
+ searchSpan.value = 24 - collapseTotalSpan % 24
225
+ formList.value = sourceFormList.slice(0, stepLength - 1)
226
+ } else {
227
+ searchSpan.value = 24 - toalSpan % 24
228
+ formList.value = sourceFormList
229
+ }
230
+
231
+ }
175
232
 
176
233
  const regProto = () => {
177
234
  if (XklFormRef.value) {
@@ -189,7 +246,7 @@ const regProto = () => {
189
246
  componentGlobal.enableFormSubmit = true
190
247
  enableSubmit = true
191
248
  }, 3000)
192
- formList.forEach(field => {
249
+ formList.value.forEach(field => {
193
250
  modeFields[field.prop] = (form as any)[field.prop]
194
251
  });
195
252
  (XklFormRef.value as any).validate((valid: boolean) => {
@@ -208,7 +265,7 @@ const regProto = () => {
208
265
  }
209
266
 
210
267
  form.setBinds(() => {
211
- formList.forEach(field => {
268
+ formList.value.forEach(field => {
212
269
  modeFields[field.prop] = (form as any)[field.prop]
213
270
  });
214
271
  return modeFields
@@ -228,6 +285,19 @@ onMounted(() => {
228
285
  .query-action {
229
286
  width: 100%;
230
287
  text-align: right;
288
+ display: flex;
289
+ align-items: center;
290
+ justify-content: flex-end;
291
+
292
+ .collapsible {
293
+ margin-left: 12px;
294
+ cursor: pointer;
295
+ color: $primary--color;
296
+
297
+ .rotate {
298
+ transform: rotate(180deg);
299
+ }
300
+ }
231
301
  }
232
302
 
233
303
  .hide-input {
package/XklFormInfo.vue CHANGED
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <el-form ref="XklFormInfoRef" :model="form" :label-width="opts.labelWidth">
2
+ <el-form class="xkl-form-info" ref="XklFormInfoRef" :model="form" :label-width="opts.labelWidth">
3
3
  <el-row>
4
4
  <template v-for="item in formList" :key="item.prop">
5
5
  <el-col :span="item.span" v-if="item.show()">
@@ -57,4 +57,10 @@ Object.keys(form).forEach(prop => {
57
57
 
58
58
 
59
59
  </script>
60
- <style lang="scss" scoped></style>
60
+ <style lang="scss" scoped>
61
+ .xkl-form-info {
62
+ .el-form-item {
63
+ margin-bottom: 5px;
64
+ }
65
+ }
66
+ </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuekl/cli-components",
3
- "version": "1.2.6",
3
+ "version": "1.2.8",
4
4
  "description": "",
5
5
  "main": "index.ts",
6
6
  "scripts": {