@10yun/cv-mobile-ui 0.5.2 → 0.5.4

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 (37) hide show
  1. package/package.json +1 -1
  2. package/ui-cv/{cv-button/cv-button.vue → cv-btn-base/cv-btn-base.vue} +19 -14
  3. package/ui-cv/cv-checkbox-group/cv-checkbox-group.vue +89 -56
  4. package/ui-cv/cv-checkbox-opt-base/cv-checkbox-opt-base.vue +43 -3
  5. package/ui-cv/cv-checkbox-opt-tag/cv-checkbox-opt-tag.vue +6 -2
  6. package/ui-cv/cv-code-sms/cv-code-sms.vue +6 -4
  7. package/ui-cv/cv-date-base/cv-date-base.vue +27 -6
  8. package/ui-cv/cv-datetime-base/cv-datetime-base.vue +15 -5
  9. package/ui-cv/cv-datetime5-base/cv-datetime5-base.vue +24 -7
  10. package/ui-cv/cv-dialog-share/cv-dialog-share.vue +2 -0
  11. package/ui-cv/cv-editor-quill/cv-editor-quill.vue +1 -0
  12. package/ui-cv/cv-form-base/cv-form-base.vue +1 -1
  13. package/ui-cv/cv-form-item/cv-form-item.vue +5 -2
  14. package/ui-cv/cv-geo-local/cv-geo-local.vue +118 -27
  15. package/ui-cv/{cv-picker-region/cv-picker-region.vue → cv-geo-region/cv-geo-region.vue} +32 -10
  16. package/ui-cv/cv-input-digit/cv-input-digit.vue +69 -6
  17. package/ui-cv/cv-input-idcard/cv-input-idcard.vue +70 -7
  18. package/ui-cv/cv-input-number/cv-input-number.vue +56 -6
  19. package/ui-cv/cv-input-password/cv-input-password.vue +66 -5
  20. package/ui-cv/cv-input-text/cv-input-text.vue +74 -7
  21. package/ui-cv/cv-picker1/cv-picker1.vue +35 -8
  22. package/ui-cv/cv-picker2/cv-picker2.vue +48 -23
  23. package/ui-cv/cv-picker3/cv-picker3.vue +69 -44
  24. package/ui-cv/cv-radio-group/cv-radio-group.vue +35 -13
  25. package/ui-cv/cv-radio-opt-base/cv-radio-opt-base.vue +37 -3
  26. package/ui-cv/cv-radio-opt-tag/cv-radio-opt-tag.vue +1 -1
  27. package/ui-cv/cv-rate/cv-rate.vue +10 -5
  28. package/ui-cv/cv-search/cv-search.vue +7 -1
  29. package/ui-cv/cv-switch/cv-switch.vue +24 -9
  30. package/ui-cv/cv-textarea/cv-textarea.vue +18 -5
  31. package/ui-cv/cv-time-base/cv-time-base.vue +30 -3
  32. package/ui-cv/cv-treaty/cv-treaty.vue +18 -13
  33. package/ui-cv/cv-upload-avatar/cv-upload-avatar.vue +12 -5
  34. package/ui-cv/cv-upload-image/cv-upload-image.vue +18 -7
  35. package/ui-cv/cv-input-btn/cv-input-btn.vue +0 -124
  36. package/ui-cv/mixins/mixins-input.js +0 -75
  37. package/ui-cv/mixins/mixins-picker.js +0 -34
@@ -32,17 +32,17 @@
32
32
  </picker>
33
33
  </view>
34
34
  </template>
35
-
36
35
  <script>
37
- import MixinsPicker from '../mixins/mixins-picker.js';
38
36
  export default {
39
- mixins: [MixinsPicker],
40
37
  name: 'cvPicker3',
41
38
  props: {
42
- //默认输入框内容
43
39
  value: {
44
- type: Array,
45
- default: () => {}
40
+ type: [Array],
41
+ default: () => []
42
+ },
43
+ modelValue: {
44
+ type: [Array],
45
+ default: () => []
46
46
  },
47
47
  dataType: {
48
48
  type: String,
@@ -63,13 +63,18 @@ export default {
63
63
  type: String,
64
64
  default: 'text'
65
65
  },
66
- free: {
66
+ dataTree: {
67
67
  type: String,
68
- default: 'free'
68
+ default: 'tree'
69
69
  },
70
70
  joint: {
71
71
  type: String,
72
72
  default: ''
73
+ },
74
+ // 占位符
75
+ placeholder: {
76
+ type: String,
77
+ default: '请选择'
73
78
  }
74
79
  },
75
80
  watch: {
@@ -82,12 +87,16 @@ export default {
82
87
  value(newVal) {
83
88
  this.localVal = newVal;
84
89
  this.itemsSortOut();
90
+ },
91
+ modelValue(newVal) {
92
+ this.localVal = newVal;
93
+ this.itemsSortOut();
85
94
  }
86
95
  },
87
96
  data() {
88
97
  return {
89
98
  iconTop: false,
90
- localVal: '',
99
+ localVal: [],
91
100
  items: [], //全部数据
92
101
  range_data: [], //弹窗临时数组
93
102
  last_range_data: [], //最终显示页面数组
@@ -95,15 +104,26 @@ export default {
95
104
  items_sub2: [],
96
105
  items_index: [0, 0, 0], //当前下标
97
106
  lastRetDataIndex: [0, 0, 0], // 最终确定选中的下标
98
- localDataType: ''
107
+ localDataType: 'value',
108
+ localDataValue: 'value',
109
+ localDataText: 'label'
99
110
  };
100
111
  },
101
112
  created() {
102
- this.localVal = this.value;
113
+ this.localVal = this.doValueGet();
103
114
  this.localDataType = this.dataType != 'text' ? 'value' : 'text';
104
115
  this.itemsSortOut();
105
116
  },
106
117
  methods: {
118
+ doValueGet() {
119
+ if (this.value === '' || (Array.prototype.isPrototypeOf(this.value) && this.value.length === 0)) {
120
+ return this.modelValue;
121
+ }
122
+ if (this.modelValue === '' || (Array.prototype.isPrototypeOf(this.modelValue) && this.modelValue.length === 0)) {
123
+ return this.value;
124
+ }
125
+ return this.value;
126
+ },
107
127
  itemsSortOut() {
108
128
  let original = [];
109
129
  original = this.dataLists || [];
@@ -111,40 +131,41 @@ export default {
111
131
  if (typeof original == 'string') {
112
132
  original = JSON.parse(original);
113
133
  }
114
- if (!original) {
134
+ if (!original || original.length <= 0) {
135
+ console.warn('original 暂无数据', original);
115
136
  return;
116
137
  }
117
138
  //整理数据
118
139
  let items = [];
119
140
  let dataValue = this.dataValue ? this.dataValue : 'value';
120
141
  let dataText = this.dataText ? this.dataText : 'text';
121
- let free = this.free;
142
+
143
+ let tree = this.dataTree;
122
144
  let items_index = this.items_index;
123
145
  let dataType = this.localDataType;
124
146
  for (let i in original) {
125
147
  let data = original[i];
126
148
  //查找一级绑定参数
127
149
 
128
- if (this.localVal.length >= 1) {
150
+ if (this.localVal && this.localVal.length >= 1) {
129
151
  if (dataType == 'text' && this.localVal[0] == data[dataText]) {
130
152
  items_index[0] = i;
131
153
  } else if (dataType == 'value' && this.localVal[0] == data[dataValue]) {
132
154
  items_index[0] = i;
133
155
  }
134
156
  }
135
-
136
157
  items.push({
137
158
  value: data[dataValue].toString(),
138
159
  text: data[dataText]
139
160
  });
140
- if (original[i][free]) {
141
- let free_data = original[i][free];
161
+ if (original[i][tree]) {
162
+ let tree_data = original[i][tree];
142
163
  let temp = [];
143
- for (const ii in free_data) {
144
- let data = free_data[ii];
164
+ for (const ii in tree_data) {
165
+ let data = tree_data[ii];
145
166
 
146
167
  //查找二级绑定参数
147
- if (this.localVal.length >= 2) {
168
+ if (this.localVal && this.localVal.length >= 2) {
148
169
  if (dataType == 'text' && this.localVal[1] == data[dataText]) {
149
170
  items_index[1] = ii;
150
171
  } else if (dataType == 'value' && this.localVal[1] == data[dataValue]) {
@@ -155,16 +176,16 @@ export default {
155
176
  value: data[dataValue].toString(),
156
177
  text: data[dataText]
157
178
  });
158
- if (free_data[ii][free] == undefined) {
159
- free_data[ii][free] = [{}];
179
+ if (tree_data[ii][tree] == undefined) {
180
+ tree_data[ii][tree] = [{}];
160
181
  }
161
- if (free_data[ii][free]) {
162
- let free_data2 = free_data[ii][free];
182
+ if (tree_data[ii][tree]) {
183
+ let tree_data2 = tree_data[ii][tree];
163
184
  let temp2 = [];
164
- for (const iii in free_data2) {
165
- let data = free_data2[iii];
185
+ for (const iii in tree_data2) {
186
+ let data = tree_data2[iii];
166
187
  //查找三级绑定参数
167
- if (this.localVal.length >= 3) {
188
+ if (this.localVal && this.localVal.length >= 3) {
168
189
  if (dataType == 'text' && this.localVal[2] == data[dataText]) {
169
190
  items_index[2] = iii;
170
191
  } else if (dataType == 'value' && this.localVal[2] == data[dataValue]) {
@@ -183,10 +204,10 @@ export default {
183
204
  text: data[dataText]
184
205
  });
185
206
  }
186
- temp[ii].free = temp2;
207
+ temp[ii].tree = temp2;
187
208
  }
188
209
  }
189
- items[i].free = temp;
210
+ items[i].tree = temp;
190
211
  }
191
212
  }
192
213
  if (!items) {
@@ -194,21 +215,24 @@ export default {
194
215
  }
195
216
  //默认Value
196
217
  this.items = items;
197
- this.items_sub = items[items_index[0] ?? 0].free;
198
- this.items_sub2 = this.items_sub[items_index[1] ?? 0].free;
218
+ this.items_sub = items[items_index[0] ?? 0].tree;
219
+ this.items_sub2 = this.items_sub[items_index[1] ?? 0].tree;
199
220
  this.range_data = [items, this.items_sub, this.items_sub2];
200
221
  this.items_index = items_index;
201
222
  this.last_range_data = [...this.range_data];
202
- if (this.value.length == 3) {
223
+ if (this.localVal && this.localVal.length == 3) {
203
224
  this.lastRetDataIndex = [...this.items_index];
204
225
  }
205
226
  },
206
227
  bindPickerChange: function (e) {
207
228
  let items_index = e.detail.value;
208
229
  this.items_index = items_index;
209
- this.updatelocalVal();
230
+ this.updateLocalVal();
210
231
  this.iconTop = false;
211
232
  },
233
+ changeIconTop() {
234
+ this.iconTop = true;
235
+ },
212
236
  /* 取消选择 */
213
237
  onCancel(e) {
214
238
  this.iconTop = false;
@@ -225,15 +249,15 @@ export default {
225
249
  //滑动二级
226
250
  items_index[1] = e.detail.value;
227
251
  items_index[2] = 0;
228
- range_data[2] = range_data[1][items_index[1]].free || [];
252
+ range_data[2] = range_data[1][items_index[1]].tree || [];
229
253
  // this.range_data = range_data;
230
254
  } else if (e.detail.column == 0) {
231
255
  //滑动一级
232
256
  items_index[0] = e.detail.value;
233
257
  items_index[1] = 0;
234
258
  items_index[2] = 0;
235
- range_data[1] = range_data[0][items_index[0]].free || [];
236
- range_data[2] = range_data[1][items_index[1]].free || [];
259
+ range_data[1] = range_data[0][items_index[0]].tree || [];
260
+ range_data[2] = range_data[1][items_index[1]].tree || [];
237
261
  // this.range_data = range_data;
238
262
  }
239
263
  this.$set(this, 'range_data', range_data);
@@ -242,26 +266,27 @@ export default {
242
266
  this.$forceUpdate();
243
267
  // this.funcOnInput();
244
268
  },
245
- updatelocalVal() {
269
+ updateLocalVal() {
246
270
  let items_index = this.items_index;
247
271
  this.last_range_data = [...this.range_data];
248
272
  this.lastRetDataIndex = [...items_index];
249
273
  let value = [];
250
274
  let items = this.items;
251
275
  // 2022-07-22,修复三级选项为空时取值异常
252
- if (!items[items_index[0]].free[items_index[1]].free || items[items_index[0]].free[items_index[1]].free.length == 0) {
253
- items[items_index[0]].free[items_index[1]].free = [{ text: '', value: '' }];
276
+ if (!items[items_index[0]].tree[items_index[1]].tree || items[items_index[0]].tree[items_index[1]].tree.length == 0) {
277
+ items[items_index[0]].tree[items_index[1]].tree = [{ text: '', value: '' }];
254
278
  }
255
- if (this.dataType == 'text') {
279
+ if (this.localDataType == 'text') {
256
280
  value[0] = items[items_index[0]].text;
257
- value[1] = items[items_index[0]].free[items_index[1]].text;
258
- value[2] = items[items_index[0]].free[items_index[1]].free[items_index[2]].text;
281
+ value[1] = items[items_index[0]].tree[items_index[1]].text;
282
+ value[2] = items[items_index[0]].tree[items_index[1]].tree[items_index[2]].text;
259
283
  } else {
260
284
  value[0] = items[items_index[0]].value;
261
- value[1] = items[items_index[0]].free[items_index[1]].value;
262
- value[2] = items[items_index[0]].free[items_index[1]].free[items_index[2]].value;
285
+ value[1] = items[items_index[0]].tree[items_index[1]].value;
286
+ value[2] = items[items_index[0]].tree[items_index[1]].tree[items_index[2]].value;
263
287
  }
264
288
  this.$emit('input', value);
289
+ this.$emit('update:modelValue', value);
265
290
  }
266
291
  }
267
292
  };
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <view class="cv-radio-group-wrap">
3
- <radio-group @change="radioChange" class="cv-radio-group__box">
3
+ <radio-group @change="radioChange" class="cv-radio-group__box" :style="localStyle">
4
4
  <slot>
5
5
  <cv-radio-opt-base
6
6
  v-if="type == 'base'"
@@ -41,14 +41,21 @@ export default {
41
41
  cvRadioOptTag
42
42
  },
43
43
  props: {
44
+ value: {
45
+ type: [Number, String],
46
+ default: ''
47
+ },
48
+ modelValue: {
49
+ type: [Number, String],
50
+ default: ''
51
+ },
44
52
  type: {
45
53
  type: [String],
46
54
  default: 'base'
47
55
  },
48
- //默认内容
49
- value: {
50
- type: [String, Number],
51
- default: ''
56
+ align: {
57
+ type: [String],
58
+ default: 'left'
52
59
  },
53
60
  dataType: {
54
61
  type: String,
@@ -56,7 +63,7 @@ export default {
56
63
  },
57
64
  //选项数组
58
65
  dataLists: {
59
- type: [Array, String],
66
+ type: [Array, String, Object],
60
67
  default: () => {
61
68
  return [];
62
69
  }
@@ -75,6 +82,8 @@ export default {
75
82
  data() {
76
83
  return {
77
84
  localVal: '',
85
+ localList: [],
86
+ localStyle: '',
78
87
  items: [],
79
88
  itemsValue: ''
80
89
  };
@@ -84,21 +93,36 @@ export default {
84
93
  this.localVal = newVal;
85
94
  this._dealValue();
86
95
  },
96
+ modelValue(newVal) {
97
+ this.localVal = newVal;
98
+ this._dealValue();
99
+ },
87
100
  dataLists(newVal) {
88
- this.dataLists = newVal;
101
+ this.localList = newVal || [];
89
102
  this.items = this.itemsSortOut();
90
103
  this._dealValue();
91
104
  }
92
105
  },
93
106
  created() {
94
- this.localVal = this.value;
107
+ this.localVal = this.doValueGet();
95
108
  if (this.dataLists) {
109
+ this.localList = this.dataLists || [];
96
110
  this.items = this.itemsSortOut();
97
111
  }
98
- //默认Value
112
+ // 默认Value
99
113
  this._dealValue();
114
+ this._dealStyle();
100
115
  },
101
116
  methods: {
117
+ doValueGet() {
118
+ if (this.value === '') return this.modelValue;
119
+ if (this.modelValue === '') return this.value;
120
+ return this.value;
121
+ },
122
+ _dealStyle() {
123
+ let alignStyle = this.align == 'right' ? 'flex-end' : 'flex-start';
124
+ this.localStyle = `justify-content:${alignStyle};`;
125
+ },
102
126
  _dealValue() {
103
127
  //默认Value
104
128
  let items = this.items;
@@ -114,12 +138,10 @@ export default {
114
138
  },
115
139
  itemsSortOut() {
116
140
  let original = [];
117
- original = this.dataLists || [];
118
-
141
+ original = this.localList || [];
119
142
  if (typeof original == 'string') {
120
143
  original = JSON.parse(original);
121
144
  }
122
-
123
145
  //整理数据
124
146
  let items = [];
125
147
  let dataValue = this.dataValue ? this.dataValue : 'value';
@@ -147,6 +169,7 @@ export default {
147
169
  }
148
170
  this.localVal = localVal;
149
171
  this.$emit('input', this.localVal);
172
+ this.$emit('update:modelValue', this.localVal);
150
173
  }
151
174
  }
152
175
  };
@@ -155,7 +178,6 @@ export default {
155
178
  <style>
156
179
  .cv-radio-group-wrap {
157
180
  min-height: 35px;
158
- float: left;
159
181
  }
160
182
  .cv-radio-group__box {
161
183
  display: flex;
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <view class="cv-radio-opt-base">
3
3
  <label class="cv-radio-opt__label">
4
- <radio :value="localVal" :checked="checked" style="transform: scale(0.7)" />
4
+ <radio :value="localVal" :checked="localChecked" style="transform: scale(0.7)" />
5
5
  <view>
6
6
  <slot>{{ label }}</slot>
7
7
  </view>
@@ -27,18 +27,52 @@ export default {
27
27
  },
28
28
  data() {
29
29
  return {
30
- localVal: ''
30
+ localVal: '',
31
+ localChecked: false,
32
+ parentObj: null
31
33
  };
32
34
  },
33
35
  watch: {
34
36
  value(newVal) {
35
37
  this.localVal = String(newVal);
38
+ },
39
+ checked(newVal) {
40
+ this.localChecked = newVal;
41
+ },
42
+ 'parentObj.localVal'(newVal) {
43
+ // console.log('----', newVal);
44
+ this.localChecked = newVal == this.value ? true : false;
36
45
  }
37
46
  },
38
47
  created() {
39
48
  this.localVal = String(this.value);
49
+ this.localChecked = this.checked;
50
+ },
51
+ mounted() {
52
+ this.parentObj = this.getParent();
40
53
  },
41
- methods: {}
54
+ methods: {
55
+ funcOnClick() {
56
+ // let parentObj = this.getParent();
57
+ // console.log(parentObj.$children);
58
+ // let { value } = parentObj;
59
+ // console.log(value, this.localVal);
60
+ // this.localChecked = newVal == this.value ? true : false;
61
+ },
62
+ /**
63
+ * 获取父元素实例
64
+ */
65
+ getParent(name = 'cvRadioGroup') {
66
+ let parent = this.$parent;
67
+ let parentName = parent.$options.name;
68
+ while (parentName !== name) {
69
+ parent = parent.$parent;
70
+ if (!parent) return false;
71
+ parentName = parent.$options.name;
72
+ }
73
+ return parent;
74
+ }
75
+ }
42
76
  };
43
77
  </script>
44
78
 
@@ -39,7 +39,7 @@ export default {
39
39
  checked(newVal) {
40
40
  this.localChecked = newVal;
41
41
  },
42
- 'parentObj.value'(newVal) {
42
+ 'parentObj.localVal'(newVal) {
43
43
  // console.log('----', newVal);
44
44
  this.localChecked = newVal == this.value ? true : false;
45
45
  }
@@ -25,6 +25,15 @@ export default {
25
25
  }
26
26
  },
27
27
  props: {
28
+ // 当前评分
29
+ value: {
30
+ type: [Number, String],
31
+ default: 1
32
+ },
33
+ modelValue: {
34
+ type: [Number, String],
35
+ default: 1
36
+ },
28
37
  isFill: {
29
38
  // 星星的类型,是否镂空
30
39
  type: [Boolean, String],
@@ -45,11 +54,6 @@ export default {
45
54
  type: [Number, String],
46
55
  default: 24
47
56
  },
48
- value: {
49
- // 当前评分
50
- type: [Number, String],
51
- default: 1
52
- },
53
57
  max: {
54
58
  // 最大评分
55
59
  type: [Number, String],
@@ -97,6 +101,7 @@ export default {
97
101
  let value = e.target.dataset.value;
98
102
  this.locaValue = value;
99
103
  this.$emit('input', value);
104
+ this.$emit('update:modelValue', value);
100
105
  }
101
106
  }
102
107
  };
@@ -39,7 +39,11 @@ export default {
39
39
  },
40
40
  props: {
41
41
  value: {
42
- type: String,
42
+ type: [Number, String],
43
+ default: ''
44
+ },
45
+ modelValue: {
46
+ type: [Number, String],
43
47
  default: ''
44
48
  },
45
49
  placeholder: {
@@ -72,6 +76,7 @@ export default {
72
76
  /* 判断是否禁止实时更新父级数据 */
73
77
  if (this.disableRealTime === false) {
74
78
  this.$emit('input', this.localVal);
79
+ this.$emit('update:modelValue', this.localVal);
75
80
  }
76
81
  },
77
82
  onEmpty() {
@@ -81,6 +86,7 @@ export default {
81
86
  onSearch() {
82
87
  this.$emit('search', this.localVal);
83
88
  this.$emit('input', this.localVal);
89
+ this.$emit('update:modelValue', this.localVal);
84
90
  }
85
91
  }
86
92
  };
@@ -13,14 +13,17 @@ export default {
13
13
  }
14
14
  },
15
15
  props: {
16
+ value: {
17
+ type: [Number, String, Boolean],
18
+ default: 0
19
+ },
20
+ modelValue: {
21
+ type: [Number, String, Boolean],
22
+ default: 0
23
+ },
16
24
  disabled: {
17
25
  type: Boolean,
18
26
  default: false
19
- },
20
- //默认输入框内容
21
- value: {
22
- type: [String, Number, Boolean],
23
- default: 0
24
27
  }
25
28
  },
26
29
  data() {
@@ -33,29 +36,40 @@ export default {
33
36
  },
34
37
  watch: {
35
38
  value(newVal) {
39
+ this.localVal = newVal;
40
+ this._dealDataList();
41
+ },
42
+ modelValue(newVal) {
43
+ this.localVal = newVal;
36
44
  this._dealDataList();
37
45
  }
38
46
  },
39
47
  created() {
48
+ this.localVal = this.doValueGet();
40
49
  this._dealDataList();
41
50
  },
42
51
  methods: {
52
+ doValueGet() {
53
+ if (this.value === '') return this.modelValue;
54
+ if (this.modelValue === '') return this.value;
55
+ return this.value;
56
+ },
43
57
  /* 整理数据 */
44
58
  _dealDataList() {
45
- this.dataType = typeof this.value;
59
+ this.dataType = typeof this.localVal;
46
60
  switch (this.dataType) {
47
61
  case 'boolean':
48
- this.checked = this.value;
62
+ this.checked = this.localVal;
49
63
  break;
50
64
  case 'number':
51
- if (this.value === 1) {
65
+ if (this.localVal === 1) {
52
66
  this.checked = true;
53
67
  } else {
54
68
  this.checked = false;
55
69
  }
56
70
  break;
57
71
  case 'string':
58
- if (this.value === '1') {
72
+ if (this.localVal === '1') {
59
73
  this.checked = true;
60
74
  } else {
61
75
  this.checked = false;
@@ -88,6 +102,7 @@ export default {
88
102
  break;
89
103
  }
90
104
  this.$emit('input', this.localVal);
105
+ this.$emit('update:modelValue', this.localVal);
91
106
  }
92
107
  }
93
108
  };
@@ -33,17 +33,21 @@ export default {
33
33
  },
34
34
  props: {
35
35
  value: {
36
- type: String,
36
+ type: [Number, String],
37
37
  default: ''
38
38
  },
39
- maxlength: {
39
+ modelValue: {
40
40
  type: [Number, String],
41
- default: -1
41
+ default: ''
42
42
  },
43
43
  placeholder: {
44
44
  type: [String],
45
45
  default: '请输入文本'
46
46
  },
47
+ maxlength: {
48
+ type: [Number, String],
49
+ default: -1
50
+ },
47
51
  clearable: {
48
52
  type: Boolean,
49
53
  default: false
@@ -53,7 +57,6 @@ export default {
53
57
  default: true
54
58
  }
55
59
  },
56
-
57
60
  data() {
58
61
  return {
59
62
  localVal: '',
@@ -64,15 +67,25 @@ export default {
64
67
  value(newVal) {
65
68
  this.localVal = newVal;
66
69
  this.tempLength = this.localVal.length;
70
+ },
71
+ modelValue(newVal) {
72
+ this.localVal = newVal;
73
+ this.tempLength = this.localVal.length;
67
74
  }
68
75
  },
69
76
  created() {
70
- this.localVal = this.value;
77
+ this.localVal = this.doValueGet();
71
78
  },
72
79
  methods: {
80
+ doValueGet() {
81
+ if (this.value === '') return this.modelValue;
82
+ if (this.modelValue === '') return this.value;
83
+ return this.value;
84
+ },
73
85
  funcOnInput(e) {
74
86
  this.tempLength = this.localVal.length;
75
87
  this.$emit('input', this.localVal);
88
+ this.$emit('update:modelValue', this.localVal);
76
89
  },
77
90
  /* 监听自己清除按钮点击事件 */
78
91
  onEmpty() {