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