three-trees-ui 1.0.93 → 1.0.95

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.
@@ -16,33 +16,23 @@
16
16
  @click="showDialog"
17
17
  >
18
18
  <div
19
- ref="tagSpans"
20
- style="width: calc(100% - 25px);"
21
- :class="{
22
- 'el-select__tags_readonly': !inputWriteable,
23
- 'el-select__tags': inputWriteable,
24
- }"
19
+ v-if="inputWriteable"
20
+ class="el-input el-input--suffix"
21
+ :class="{ 'custom-selector-mobile': isMobile }"
25
22
  >
26
- <span class="tag-wrap">
27
- <span
23
+ <div v-if="isMobile" class="custom-selector-mobile-box">
24
+ <div
28
25
  v-for="(item, index) in demensions"
29
26
  :key="index"
30
- class="el-tag el-tag--info el-tag--small"
31
- @click.stop
27
+ class="common-selector-tag"
32
28
  >
33
- <span class="el-select__tags-text">{{ item.name }}</span>
34
- <i
35
- v-if="inputWriteable"
36
- class="el-tag__close el-icon-close"
37
- @click="handleRemove(item)"
38
- ></i>
39
- </span>
40
- </span>
41
- </div>
42
- <div v-if="inputWriteable" class="el-input el-input--suffix">
29
+ <span>{{ item.name }}</span>
30
+ <i class="el-icon-error" @click.stop="handleRemove(item)"></i>
31
+ </div>
32
+ </div>
43
33
  <input
44
34
  ref="inputEl"
45
- v-model="value"
35
+ v-model="calcInputValue"
46
36
  v-validate="inputValidate"
47
37
  type="text"
48
38
  readonly="readonly"
@@ -50,10 +40,6 @@
50
40
  autocomplete="off"
51
41
  class="el-input__inner"
52
42
  :placeholder="placeholder"
53
- :style="{
54
- height: inputSuffixHeight + 'px',
55
- lineHeight: inputSuffixHeight + 'px',
56
- }"
57
43
  />
58
44
  <span class="el-input__suffix">
59
45
  <span class="el-input__suffix-inner">
@@ -62,9 +48,13 @@
62
48
  </span>
63
49
  </span>
64
50
  </div>
51
+ <div v-else class="el-select__tags_readonly">
52
+ <span>{{ calcInputValue }}</span>
53
+ </div>
65
54
  </div>
66
55
  <ht-field-tail :field-name="inputName" :input-value="value" />
67
56
  <el-dialog
57
+ v-if="dialogVisible"
68
58
  title="选择维度"
69
59
  :visible.sync="dialogVisible"
70
60
  class="dialog-selector__wrapper"
@@ -216,6 +206,10 @@
216
206
  mode: {
217
207
  type: String,
218
208
  },
209
+ formInputsDisplay: {
210
+ type: String,
211
+ default: 'inline',
212
+ },
219
213
  },
220
214
  data() {
221
215
  return {
@@ -227,6 +221,17 @@
227
221
  }
228
222
  },
229
223
  computed: {
224
+ calcInputValue: function() {
225
+ let name = ''
226
+ if (this.demensions) {
227
+ name = this.demensions
228
+ .map((k) => {
229
+ return k.name
230
+ })
231
+ .join(',')
232
+ }
233
+ return name
234
+ },
230
235
  primaryField: function() {
231
236
  return this.config && this.config.hasOwnProperty('id')
232
237
  ? 'id'
@@ -285,14 +290,8 @@
285
290
  // 通过valueChange事件发布值变更消息
286
291
  this.$emit('valueChange', ary.join(','), newVal)
287
292
  setTimeout(() => {
288
- if (newVal.length > 0) {
289
- this.calacInputSuffixHeight()
290
- } else {
291
- this.inputSuffixHeight = 30
292
- }
293
293
  if (this.$refs.inputEl) {
294
- this.$refs.inputEl.focus()
295
- this.$refs.inputEl.blur()
294
+ this.$validator.validate(this.inputName)
296
295
  }
297
296
  }, 10)
298
297
  },
@@ -371,14 +370,13 @@
371
370
  this.demensions = tmpAry
372
371
  }
373
372
  },
374
- showDialog() {
373
+ async showDialog() {
375
374
  if (!this.inputWriteable) {
376
375
  return
377
376
  }
378
377
  this.dialogVisible = true
379
- setTimeout(() => {
380
- this.$refs.selector.onShow()
381
- })
378
+ await this.$nextTick()
379
+ this.$refs.selector.onShow()
382
380
  },
383
381
  handleClose(done) {
384
382
  this.$refs.selector.onHide()
@@ -401,12 +399,12 @@
401
399
  },
402
400
  // 更新当前输入框的高度来适配已选数据的高度
403
401
  calacInputSuffixHeight() {
404
- if (!this.$refs.tagSpans) return
405
- if (this.$refs.tagSpans.offsetHeight) {
406
- this.inputSuffixHeight = this.$refs.tagSpans.offsetHeight + 5
407
- } else {
408
- this.inputSuffixHeight = 30
409
- }
402
+ // if (!this.$refs.tagSpans) return
403
+ // if (this.$refs.tagSpans.offsetHeight) {
404
+ // this.inputSuffixHeight = this.$refs.tagSpans.offsetHeight + 5
405
+ // } else {
406
+ // this.inputSuffixHeight = 30
407
+ // }
410
408
  },
411
409
  },
412
410
  }
@@ -427,7 +425,10 @@
427
425
  position: relative;
428
426
  top: 50%;
429
427
  }
430
-
428
+ .el-input__inner {
429
+ height: 32px;
430
+ line-height: 32px;
431
+ }
431
432
  .el-input__inner[aria-invalid='true'] {
432
433
  border-color: #f56c6c;
433
434
  }
@@ -16,33 +16,23 @@
16
16
  @click="showDialog"
17
17
  >
18
18
  <div
19
- ref="tagSpans"
20
- style="width: calc(100% - 25px);"
21
- :class="{
22
- 'el-select__tags_readonly': !inputWriteable,
23
- 'el-select__tags': inputWriteable,
24
- }"
19
+ v-if="inputWriteable"
20
+ class="el-input el-input--suffix"
21
+ :class="{ 'custom-selector-mobile': isMobile }"
25
22
  >
26
- <span class="tag-wrap">
27
- <span
23
+ <div v-if="isMobile" class="custom-selector-mobile-box">
24
+ <div
28
25
  v-for="(item, index) in selectors"
29
26
  :key="index"
30
- class="el-tag el-tag--info el-tag--small"
31
- @click.stop
27
+ class="common-selector-tag"
32
28
  >
33
- <span class="el-select__tags-text">{{ item.name }}</span>
34
- <i
35
- v-if="inputWriteable"
36
- class="el-tag__close el-icon-close"
37
- @click="handleRemove(item)"
38
- ></i>
39
- </span>
40
- </span>
41
- </div>
42
- <div v-if="inputWriteable" class="el-input el-input--suffix">
29
+ <span>{{ item.name }}</span>
30
+ <i class="el-icon-error" @click.stop="handleRemove(item)"></i>
31
+ </div>
32
+ </div>
43
33
  <input
44
34
  ref="inputEl"
45
- v-model="value"
35
+ v-model="calcInputValue"
46
36
  v-validate="inputValidate"
47
37
  type="text"
48
38
  readonly="readonly"
@@ -50,10 +40,6 @@
50
40
  autocomplete="off"
51
41
  class="el-input__inner"
52
42
  :placeholder="placeholder"
53
- :style="{
54
- height: inputSuffixHeight + 'px',
55
- lineHeight: inputSuffixHeight + 'px',
56
- }"
57
43
  />
58
44
  <span class="el-input__suffix">
59
45
  <span class="el-input__suffix-inner">
@@ -62,49 +48,54 @@
62
48
  </span>
63
49
  </span>
64
50
  </div>
51
+ <div v-else class="el-select__tags_readonly">
52
+ <span>{{ calcInputValue }}</span>
53
+ </div>
65
54
  </div>
66
55
  <ht-field-tail :field-name="inputName" :input-value="value" />
67
- <job-selector-mobile-dialog
68
- v-if="isMobile"
69
- ref="jobSelectorMobileDialog"
70
- v-model="selectors"
71
- :search-placeholder="searchPlaceholder"
72
- :single="single"
73
- :data="data"
74
- :pagination="pagination"
75
- :select-label="selectLabel"
76
- :quick-search-props="quickSearchProps"
77
- :append-to-body="appendToBody"
78
- :title="title"
79
- :primary-field="primaryField"
80
- @search="(word) => $emit('search', word)"
81
- @reset="() => $emit('reset')"
82
- @row-click="(row) => $emit('row-click', row)"
83
- @select-data="(data) => $emit('select-data', data)"
84
- @page-change="(page) => $emit('page-change', page)"
85
- />
86
- <job-selector-dialog
87
- v-else
88
- ref="jobSelectorDialog"
89
- v-model="selectors"
90
- :search-placeholder="searchPlaceholder"
91
- :single="single"
92
- :data="data"
93
- :table-columns="tableColumns"
94
- :pagination="pagination"
95
- :select-label="selectLabel"
96
- :quick-search-props="quickSearchProps"
97
- :append-to-body="appendToBody"
98
- :title="title"
99
- :primary-field="primaryField"
100
- :mode="mode"
101
- @search="(word) => $emit('search', word)"
102
- @reset="() => $emit('reset')"
103
- @row-click="(row) => $emit('row-click', row)"
104
- @select-data="(data) => $emit('select-data', data)"
105
- @page-change="(page) => $emit('page-change', page)"
106
- @size-change="(size) => $emit('size-change', size)"
107
- />
56
+ <template v-if="isDialogShow">
57
+ <job-selector-mobile-dialog
58
+ v-if="isMobile"
59
+ ref="jobSelectorMobileDialog"
60
+ v-model="selectors"
61
+ :search-placeholder="searchPlaceholder"
62
+ :single="single"
63
+ :data="data"
64
+ :pagination="pagination"
65
+ :select-label="selectLabel"
66
+ :quick-search-props="quickSearchProps"
67
+ :append-to-body="appendToBody"
68
+ :title="title"
69
+ :primary-field="primaryField"
70
+ @search="(word) => $emit('search', word)"
71
+ @reset="() => $emit('reset')"
72
+ @row-click="(row) => $emit('row-click', row)"
73
+ @select-data="(data) => $emit('select-data', data)"
74
+ @page-change="(page) => $emit('page-change', page)"
75
+ />
76
+ <job-selector-dialog
77
+ v-else
78
+ ref="jobSelectorDialog"
79
+ v-model="selectors"
80
+ :search-placeholder="searchPlaceholder"
81
+ :single="single"
82
+ :data="data"
83
+ :table-columns="tableColumns"
84
+ :pagination="pagination"
85
+ :select-label="selectLabel"
86
+ :quick-search-props="quickSearchProps"
87
+ :append-to-body="appendToBody"
88
+ :title="title"
89
+ :primary-field="primaryField"
90
+ :mode="mode"
91
+ @search="(word) => $emit('search', word)"
92
+ @reset="() => $emit('reset')"
93
+ @row-click="(row) => $emit('row-click', row)"
94
+ @select-data="(data) => $emit('select-data', data)"
95
+ @page-change="(page) => $emit('page-change', page)"
96
+ @size-change="(size) => $emit('size-change', size)"
97
+ />
98
+ </template>
108
99
  </div>
109
100
  </template>
110
101
  <script>
@@ -181,11 +172,23 @@
181
172
  },
182
173
  data() {
183
174
  return {
175
+ isDialogShow: false,
184
176
  inputSuffixHeight: 30,
185
177
  selectors: [],
186
178
  }
187
179
  },
188
180
  computed: {
181
+ calcInputValue: function() {
182
+ let name = ''
183
+ if (this.selectors) {
184
+ name = this.selectors
185
+ .map((k) => {
186
+ return k.name
187
+ })
188
+ .join(',')
189
+ }
190
+ return name
191
+ },
189
192
  primaryField: function() {
190
193
  return this.config && this.config.hasOwnProperty('id')
191
194
  ? 'id'
@@ -235,14 +238,8 @@
235
238
  // 通过valueChange事件发布值变更消息
236
239
  this.$emit('valueChange', ary.join(','), newVal)
237
240
  setTimeout(() => {
238
- if (newVal.length > 0) {
239
- this.calacInputSuffixHeight()
240
- } else {
241
- this.inputSuffixHeight = 30
242
- }
243
241
  if (this.$refs.inputEl) {
244
- this.$refs.inputEl.focus()
245
- this.$refs.inputEl.blur()
242
+ this.$validator.validate(this.inputName)
246
243
  }
247
244
  }, 10)
248
245
  },
@@ -296,10 +293,14 @@
296
293
  this.selectors = tmpAry
297
294
  }
298
295
  },
299
- showDialog() {
296
+ async showDialog() {
300
297
  if (!this.inputWriteable) {
301
298
  return
302
299
  }
300
+ if (this.isDialogShow === false) {
301
+ this.isDialogShow = true
302
+ await this.$nextTick()
303
+ }
303
304
  if (this.isMobile) {
304
305
  this.$refs.jobSelectorMobileDialog.showDialog()
305
306
  } else {
@@ -315,12 +316,12 @@
315
316
  },
316
317
  // 更新当前输入框的高度来适配已选数据的高度
317
318
  calacInputSuffixHeight() {
318
- if (!this.$refs.tagSpans) return
319
- if (this.$refs.tagSpans.offsetHeight) {
320
- this.inputSuffixHeight = this.$refs.tagSpans.offsetHeight + 5
321
- } else {
322
- this.inputSuffixHeight = 30
323
- }
319
+ // if (!this.$refs.tagSpans) return
320
+ // if (this.$refs.tagSpans.offsetHeight) {
321
+ // this.inputSuffixHeight = this.$refs.tagSpans.offsetHeight + 5
322
+ // } else {
323
+ // this.inputSuffixHeight = 30
324
+ // }
324
325
  },
325
326
  },
326
327
  }
@@ -335,7 +336,10 @@
335
336
  position: relative;
336
337
  top: 50%;
337
338
  }
338
-
339
+ .el-input__inner {
340
+ height: 32px;
341
+ line-height: 32px;
342
+ }
339
343
  .el-input__inner[aria-invalid='true'] {
340
344
  border-color: #f56c6c;
341
345
  }
@@ -1,9 +1,9 @@
1
1
  <template>
2
- <div name="online-form">
2
+ <div name="online-form" :class="{ 'is-mobile-online-form': isMobile }">
3
3
  <el-skeleton v-if="loadStatus == 0" :rows="6" animated />
4
4
  <component
5
+ :is="currentComponent"
5
6
  v-else-if="loadStatus > 0"
6
- v-bind:is="currentComponent"
7
7
  :name="formName"
8
8
  :data="data"
9
9
  :permission="permission"
@@ -31,12 +31,13 @@
31
31
  import onlineSubtable from '@/mixins/onlineSubtable.js'
32
32
  import regionValidator from '@/mixins/regionValidator.js'
33
33
  import emitter from '@/mixins/emitter.js'
34
+ import mobileMode from '@/mixins/mobileMode.js'
34
35
 
35
36
  import Vue from 'vue'
36
37
  export default {
37
38
  name: 'HtOnlineForm',
38
39
  componentName: 'HtOnlineForm',
39
- mixins: [regionValidator, emitter],
40
+ mixins: [regionValidator, emitter, mobileMode],
40
41
  props: {
41
42
  html: String,
42
43
  data: Object,
@@ -182,6 +183,11 @@
182
183
  default: false,
183
184
  },
184
185
  },
186
+ data() {
187
+ return {
188
+ subDivCollapse: [],
189
+ }
190
+ },
185
191
  template: this.html,
186
192
  })
187
193
  },
@@ -189,6 +195,29 @@
189
195
  }
190
196
  </script>
191
197
  <style lang="scss">
198
+ .is-mobile-online-form {
199
+ .ht-form-item {
200
+ .el-form-item__label {
201
+ width: 76px !important;
202
+ overflow: hidden;
203
+ text-overflow: ellipsis;
204
+ white-space: nowrap;
205
+ text-align: left;
206
+ > span {
207
+ display: inline-block;
208
+ max-width: 100%;
209
+ font-size: 14px;
210
+ color: #656a72;
211
+ margin-left: 0 !important;
212
+ overflow: hidden;
213
+ text-overflow: ellipsis;
214
+ }
215
+ }
216
+ .el-form-item__content {
217
+ margin-left: 76px !important;
218
+ }
219
+ }
220
+ }
192
221
  .transition {
193
222
  outline: 1px dotted #85a5ff;
194
223
  outline-width: 2px;
@@ -308,7 +337,7 @@
308
337
  width: 100%;
309
338
  }
310
339
  .el-input {
311
- width: 100% !important;
340
+ width: 100%;
312
341
  }
313
342
  .amap-page-container {
314
343
  .amap-toolbar,
@@ -441,6 +470,7 @@
441
470
  }
442
471
 
443
472
  .el-icon-copy-document,
473
+ .el-icon-edit,
444
474
  .el-icon-delete {
445
475
  display: inline-block;
446
476
  border: 1px solid #409eff;
@@ -449,6 +479,9 @@
449
479
  color: #409eff;
450
480
  background: #fff;
451
481
  }
482
+ .el-button + .el-button {
483
+ margin-left: 4px;
484
+ }
452
485
  }
453
486
 
454
487
  .el-icon-arrow-right:before {
@@ -522,6 +555,7 @@
522
555
  }
523
556
 
524
557
  .el-icon-copy-document,
558
+ .el-icon-edit,
525
559
  .el-icon-delete {
526
560
  display: inline-block;
527
561
  border: 1px solid #409eff;
@@ -555,6 +589,24 @@
555
589
  }
556
590
  }
557
591
  }
592
+ .sonDetail_lable_box,
593
+ .sonDetail_lable_value {
594
+ width: calc(100% - 70px);
595
+ .sonDetail_lable_item {
596
+ font-weight: 500;
597
+ }
598
+ > div {
599
+ flex: 1;
600
+ display: -webkit-box;
601
+ -webkit-box-orient: vertical;
602
+ -webkit-line-clamp: 2;
603
+ overflow: hidden;
604
+ text-overflow: ellipsis;
605
+ word-break: break-all;
606
+ line-height: normal;
607
+ text-align: center;
608
+ }
609
+ }
558
610
  }
559
611
 
560
612
  ::v-deep .el-table__header {