@netang/quasar 0.0.35 → 0.0.37

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.
@@ -8,6 +8,9 @@
8
8
  <!-- 提示信息 -->
9
9
  <q-tooltip anchor="center right" self="center left" v-if="tooltip">{{tooltip}}</q-tooltip>
10
10
  </q-badge>
11
+
12
+ <!-- 插槽 -->
13
+ <slot />
11
14
  </div>
12
15
  </template>
13
16
 
@@ -0,0 +1,23 @@
1
+ <template>
2
+ <slot :data="data" />
3
+ </template>
4
+
5
+ <script>
6
+ export default {
7
+ /**
8
+ * 标识
9
+ */
10
+ name: 'NData',
11
+
12
+ /**
13
+ * 传参
14
+ */
15
+ props: {
16
+ // 数据
17
+ data: {},
18
+ },
19
+ }
20
+ </script>
21
+
22
+ <style>
23
+ </style>
@@ -3,6 +3,7 @@
3
3
  <q-field
4
4
  class="n-field-table"
5
5
  :model-value="showValue"
6
+ :disable="disable"
6
7
  :readonly="readonly"
7
8
  :clearable="clearable && (! multiple || collapseTags)"
8
9
  @focus="onFieldFocus"
@@ -37,7 +38,7 @@
37
38
  :key="`options-${index}`"
38
39
  :label="currentFormatLabel(item)"
39
40
  dense
40
- removable
41
+ :removable="! readonly && ! disable"
41
42
  @remove="onRemoveSelected(index)"
42
43
  />
43
44
  </template>
@@ -58,13 +59,13 @@
58
59
  ref="inputRef"
59
60
  class="q-field__input q-placeholder col q-field__input--padding"
60
61
  v-model="inputValue"
61
- v-if="filter"
62
+ v-if="filter && ! readonly && ! disable"
62
63
  />
63
64
 
64
65
  </template>
65
66
 
66
67
  <!-- 弹出对话框图标 -->
67
- <template v-slot:append v-if="! noDialog">
68
+ <template v-slot:append v-if="! noDialog && ! readonly && ! disable">
68
69
  <q-icon
69
70
  class="cursor-pointer"
70
71
  name="search"
@@ -222,6 +223,8 @@ export default {
222
223
  placeholder: String,
223
224
  // 是否可清除
224
225
  clearable: Boolean,
226
+ // 是否禁用
227
+ disable: Boolean,
225
228
  // 是否只读
226
229
  readonly: Boolean,
227
230
  // 输入防抖(毫秒)
@@ -32,8 +32,12 @@ export default {
32
32
  modelValue: {
33
33
  required: false,
34
34
  },
35
- // 格式化值
36
- format: [Function, String],
35
+ // 值是否为数组
36
+ valueArray: Boolean,
37
+ // 修改前值
38
+ formatBefore: [Function, Object, Boolean],
39
+ // 修改后值
40
+ formatAfter: [Function, Object, Boolean],
37
41
  },
38
42
 
39
43
  /**
@@ -61,7 +65,7 @@ export default {
61
65
  // ==========【数据】============================================================================================
62
66
 
63
67
  // 当前值
64
- const currentValue = ref(props.modelValue)
68
+ const currentValue = ref(formatModelValue(props.modelValue))
65
69
 
66
70
  // ==========【监听数据】=========================================================================================
67
71
 
@@ -69,11 +73,148 @@ export default {
69
73
  * 监听声明值
70
74
  */
71
75
  watch(()=>props.modelValue, function (val) {
72
- currentValue.value = val
76
+
77
+ // 格式化声明值
78
+ currentValue.value = formatModelValue(val)
79
+ }, {
80
+ // 深度监听
81
+ deep: true,
73
82
  })
74
83
 
75
84
  // ==========【方法】=============================================================================================
76
85
 
86
+ /**
87
+ * 格式化声明值
88
+ */
89
+ function formatModelValue(val) {
90
+
91
+ if (props.formatBefore) {
92
+
93
+ // 如果是方法
94
+ if (_.isFunction(props.formatBefore)) {
95
+ return props.formatBefore(val)
96
+ }
97
+
98
+ // 如果是参数
99
+ if (props.formatBefore === true || utils.isValidObject(props.formatBefore)) {
100
+
101
+ // 如果值是数组
102
+ if (Array.isArray(val)) {
103
+
104
+ // 格式化数组值
105
+ return formatArrayValue(val, props.formatBefore === true ? {} : props.formatBefore)
106
+ }
107
+
108
+ // 如果是有效值
109
+ if (utils.isValidValue(val)) {
110
+
111
+ // 格式化字符串值
112
+ return formatStringValue(val, props.formatBefore === true ? {} : props.formatBefore, false)
113
+ }
114
+
115
+ return ''
116
+ }
117
+ }
118
+
119
+ return val
120
+ }
121
+
122
+ /**
123
+ * 格式化数组值
124
+ */
125
+ function formatArrayValue(val, params) {
126
+
127
+ // 如果数组有值
128
+ if (val.length) {
129
+
130
+ const o = Object.assign({
131
+ // 是否去重
132
+ unique: true,
133
+ // 分隔符
134
+ separator: ',',
135
+ // 是否给每个值去除首位空格
136
+ trim: true,
137
+ // 验证每个值是否为有效字符串/数字
138
+ isValidValue: true,
139
+ }, params)
140
+
141
+ // 是否给每个值去除首位空格
142
+ if (o.trim) {
143
+ val = val.map(e => utils.trimString(e))
144
+ }
145
+
146
+ // 是否验证每个值是否为有效字符串/数字
147
+ if (o.isValidValue) {
148
+ val = val.filter(val => utils.isValidValue(val))
149
+ }
150
+
151
+ // 去重
152
+ if (o.unique) {
153
+ val = _.uniq(val)
154
+ }
155
+
156
+ // 合并为字符串
157
+ return val.join(o.separator)
158
+ }
159
+
160
+ return ''
161
+ }
162
+
163
+ /**
164
+ * 格式化字符串值
165
+ */
166
+ function formatStringValue(val, params, valueArray) {
167
+
168
+ console.log(val, params, valueArray)
169
+
170
+ const o = Object.assign({
171
+ // 替换内容
172
+ replace: /\n|\,|\s+/g,
173
+ // 是否去重
174
+ unique: true,
175
+ // 分隔符
176
+ separator: ',',
177
+ // 验证每个值是否为有效字符串/数字
178
+ isValidValue: true,
179
+ }, params)
180
+
181
+ // 去除首位空格
182
+ val = utils.trimString(val)
183
+
184
+ // 如果有分割符
185
+ if (utils.isValidValue(o.separator, true)) {
186
+
187
+ o.separator = String(o.separator)
188
+
189
+ // 是否替换
190
+ if (o.replace) {
191
+ val = val.replace(o.replace, o.separator)
192
+ }
193
+
194
+ // 分隔成数组
195
+ val = utils.split(val, o.separator)
196
+
197
+ // 去重
198
+ if (o.unique) {
199
+ val = _.uniq(val)
200
+ }
201
+
202
+ // 如果验证每个值是否为有效字符串/数字
203
+ if (o.isValidValue) {
204
+ val = val.filter(val => utils.isValidValue(val))
205
+ }
206
+
207
+ // 如果值不是数组
208
+ if (! valueArray) {
209
+ val = val.join(o.separator)
210
+ }
211
+
212
+ return val
213
+ }
214
+
215
+ return valueArray ? [ val ] : ''
216
+ }
217
+
77
218
  /**
78
219
  * 失去焦点触发
79
220
  */
@@ -81,11 +222,19 @@ export default {
81
222
 
82
223
  let val = currentValue.value
83
224
 
84
- if (
85
- props.format
86
- && _.isFunction(props.format)
87
- ) {
88
- val = props.format(val)
225
+ // 如果修改值
226
+ if (props.formatAfter) {
227
+
228
+ // 如果是方法
229
+ if (_.isFunction(props.formatAfter)) {
230
+ val = props.formatAfter(val)
231
+
232
+ // 如果是参数
233
+ } else if (props.formatAfter === true || utils.isValidObject(props.formatAfter)) {
234
+
235
+ // 格式化字符串值
236
+ val = formatStringValue(val, props.formatAfter === true ? {} : props.formatAfter, props.valueArray)
237
+ }
89
238
  }
90
239
 
91
240
  // 更新值
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netang/quasar",
3
- "version": "0.0.35",
3
+ "version": "0.0.37",
4
4
  "description": "netang-quasar",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
package/sass/var.scss ADDED
@@ -0,0 +1,141 @@
1
+ // ==========【quasar 重定义】=====================================================================================================
2
+
3
+ $primary : #4380fa;
4
+ $secondary : #19be6b;
5
+ $accent : #9C27B0;
6
+
7
+ $dark : #27282e;
8
+ $dark-page : #1b1c21;
9
+
10
+ $positive : #19be6b;
11
+ $negative : #ff3750;
12
+ $info : #2db7f5;
13
+ $warning : #ff9900;
14
+
15
+ //$shadow-color : #000000 !default;
16
+ //$elevation-umbra : rgba($shadow-color, 0.1) !default;
17
+ //$elevation-penumbra : rgba($shadow-color, 0.1) !default;
18
+ //$elevation-ambient : rgba($shadow-color, 0.1) !default;
19
+
20
+ // 按钮紧凑内边距
21
+ $button-dense-padding: 0.285em 16px !important;
22
+
23
+ // ==========【自定义】=====================================================================================================
24
+
25
+ $color-gray-dark: $dark-page;
26
+ $color-gray-white: #ffffff;
27
+
28
+ $color-gray-99: mix($color-gray-dark, $color-gray-white, 99%);
29
+ $color-gray-98: mix($color-gray-dark, $color-gray-white, 98%);
30
+ $color-gray-97: mix($color-gray-dark, $color-gray-white, 97%);
31
+ $color-gray-96: mix($color-gray-dark, $color-gray-white, 96%);
32
+ $color-gray-95: mix($color-gray-dark, $color-gray-white, 95%);
33
+ $color-gray-94: mix($color-gray-dark, $color-gray-white, 94%);
34
+ $color-gray-93: mix($color-gray-dark, $color-gray-white, 93%);
35
+ $color-gray-92: mix($color-gray-dark, $color-gray-white, 92%);
36
+ $color-gray-91: mix($color-gray-dark, $color-gray-white, 91%);
37
+ $color-gray-90: mix($color-gray-dark, $color-gray-white, 90%);
38
+ $color-gray-89: mix($color-gray-dark, $color-gray-white, 89%);
39
+ $color-gray-88: mix($color-gray-dark, $color-gray-white, 88%);
40
+ $color-gray-87: mix($color-gray-dark, $color-gray-white, 87%);
41
+ $color-gray-86: mix($color-gray-dark, $color-gray-white, 86%);
42
+ $color-gray-85: mix($color-gray-dark, $color-gray-white, 85%);
43
+ $color-gray-84: mix($color-gray-dark, $color-gray-white, 84%);
44
+ $color-gray-83: mix($color-gray-dark, $color-gray-white, 83%);
45
+ $color-gray-82: mix($color-gray-dark, $color-gray-white, 82%);
46
+ $color-gray-81: mix($color-gray-dark, $color-gray-white, 81%);
47
+ $color-gray-80: mix($color-gray-dark, $color-gray-white, 80%);
48
+ $color-gray-79: mix($color-gray-dark, $color-gray-white, 79%);
49
+ $color-gray-78: mix($color-gray-dark, $color-gray-white, 78%);
50
+ $color-gray-77: mix($color-gray-dark, $color-gray-white, 77%);
51
+ $color-gray-76: mix($color-gray-dark, $color-gray-white, 76%);
52
+ $color-gray-75: mix($color-gray-dark, $color-gray-white, 75%);
53
+ $color-gray-74: mix($color-gray-dark, $color-gray-white, 74%);
54
+ $color-gray-73: mix($color-gray-dark, $color-gray-white, 73%);
55
+ $color-gray-72: mix($color-gray-dark, $color-gray-white, 72%);
56
+ $color-gray-71: mix($color-gray-dark, $color-gray-white, 71%);
57
+ $color-gray-70: mix($color-gray-dark, $color-gray-white, 70%);
58
+ $color-gray-69: mix($color-gray-dark, $color-gray-white, 69%);
59
+ $color-gray-68: mix($color-gray-dark, $color-gray-white, 68%);
60
+ $color-gray-67: mix($color-gray-dark, $color-gray-white, 67%);
61
+ $color-gray-66: mix($color-gray-dark, $color-gray-white, 66%);
62
+ $color-gray-65: mix($color-gray-dark, $color-gray-white, 65%);
63
+ $color-gray-64: mix($color-gray-dark, $color-gray-white, 64%);
64
+ $color-gray-63: mix($color-gray-dark, $color-gray-white, 63%);
65
+ $color-gray-62: mix($color-gray-dark, $color-gray-white, 62%);
66
+ $color-gray-61: mix($color-gray-dark, $color-gray-white, 61%);
67
+ $color-gray-60: mix($color-gray-dark, $color-gray-white, 60%);
68
+ $color-gray-59: mix($color-gray-dark, $color-gray-white, 59%);
69
+ $color-gray-58: mix($color-gray-dark, $color-gray-white, 58%);
70
+ $color-gray-57: mix($color-gray-dark, $color-gray-white, 57%);
71
+ $color-gray-56: mix($color-gray-dark, $color-gray-white, 56%);
72
+ $color-gray-55: mix($color-gray-dark, $color-gray-white, 55%);
73
+ $color-gray-54: mix($color-gray-dark, $color-gray-white, 54%);
74
+ $color-gray-53: mix($color-gray-dark, $color-gray-white, 53%);
75
+ $color-gray-52: mix($color-gray-dark, $color-gray-white, 52%);
76
+ $color-gray-51: mix($color-gray-dark, $color-gray-white, 51%);
77
+ $color-gray-50: mix($color-gray-dark, $color-gray-white, 50%);
78
+ $color-gray-49: mix($color-gray-dark, $color-gray-white, 49%);
79
+ $color-gray-48: mix($color-gray-dark, $color-gray-white, 48%);
80
+ $color-gray-47: mix($color-gray-dark, $color-gray-white, 47%);
81
+ $color-gray-46: mix($color-gray-dark, $color-gray-white, 46%);
82
+ $color-gray-45: mix($color-gray-dark, $color-gray-white, 45%);
83
+ $color-gray-44: mix($color-gray-dark, $color-gray-white, 44%);
84
+ $color-gray-43: mix($color-gray-dark, $color-gray-white, 43%);
85
+ $color-gray-42: mix($color-gray-dark, $color-gray-white, 42%);
86
+ $color-gray-41: mix($color-gray-dark, $color-gray-white, 41%);
87
+ $color-gray-40: mix($color-gray-dark, $color-gray-white, 40%);
88
+ $color-gray-39: mix($color-gray-dark, $color-gray-white, 39%);
89
+ $color-gray-38: mix($color-gray-dark, $color-gray-white, 38%);
90
+ $color-gray-37: mix($color-gray-dark, $color-gray-white, 37%);
91
+ $color-gray-36: mix($color-gray-dark, $color-gray-white, 36%);
92
+ $color-gray-35: mix($color-gray-dark, $color-gray-white, 35%);
93
+ $color-gray-34: mix($color-gray-dark, $color-gray-white, 34%);
94
+ $color-gray-33: mix($color-gray-dark, $color-gray-white, 33%);
95
+ $color-gray-32: mix($color-gray-dark, $color-gray-white, 32%);
96
+ $color-gray-31: mix($color-gray-dark, $color-gray-white, 31%);
97
+ $color-gray-30: mix($color-gray-dark, $color-gray-white, 30%);
98
+ $color-gray-29: mix($color-gray-dark, $color-gray-white, 29%);
99
+ $color-gray-28: mix($color-gray-dark, $color-gray-white, 28%);
100
+ $color-gray-27: mix($color-gray-dark, $color-gray-white, 27%);
101
+ $color-gray-26: mix($color-gray-dark, $color-gray-white, 26%);
102
+ $color-gray-25: mix($color-gray-dark, $color-gray-white, 25%);
103
+ $color-gray-24: mix($color-gray-dark, $color-gray-white, 24%);
104
+ $color-gray-23: mix($color-gray-dark, $color-gray-white, 23%);
105
+ $color-gray-22: mix($color-gray-dark, $color-gray-white, 22%);
106
+ $color-gray-21: mix($color-gray-dark, $color-gray-white, 21%);
107
+ $color-gray-20: mix($color-gray-dark, $color-gray-white, 20%);
108
+ $color-gray-16: mix($color-gray-dark, $color-gray-white, 16%);
109
+ $color-gray-19: mix($color-gray-dark, $color-gray-white, 19%);
110
+ $color-gray-18: mix($color-gray-dark, $color-gray-white, 18%);
111
+ $color-gray-17: mix($color-gray-dark, $color-gray-white, 17%);
112
+ $color-gray-16: mix($color-gray-dark, $color-gray-white, 16%);
113
+ $color-gray-15: mix($color-gray-dark, $color-gray-white, 15%);
114
+ $color-gray-14: mix($color-gray-dark, $color-gray-white, 14%);
115
+ $color-gray-13: mix($color-gray-dark, $color-gray-white, 13%);
116
+ $color-gray-12: mix($color-gray-dark, $color-gray-white, 12%);
117
+ $color-gray-11: mix($color-gray-dark, $color-gray-white, 11%);
118
+ $color-gray-10: mix($color-gray-dark, $color-gray-white, 10%);
119
+ $color-gray-9: mix($color-gray-dark, $color-gray-white, 9%);
120
+ $color-gray-8: mix($color-gray-dark, $color-gray-white, 8%);
121
+ $color-gray-7: mix($color-gray-dark, $color-gray-white, 7%);
122
+ $color-gray-6: mix($color-gray-dark, $color-gray-white, 6%);
123
+ $color-gray-5: mix($color-gray-dark, $color-gray-white, 5%);
124
+ $color-gray-4: mix($color-gray-dark, $color-gray-white, 4%);
125
+ $color-gray-3: mix($color-gray-dark, $color-gray-white, 3%);
126
+ $color-gray-2: mix($color-gray-dark, $color-gray-white, 2%);
127
+ $color-gray-1: mix($color-gray-dark, $color-gray-white, 1%);
128
+
129
+ $color-ccc: #cccccc;
130
+ $color-999: #999999;
131
+ $color-888: #888888;
132
+ $color-777: #777777;
133
+ $color-666: #666666;
134
+ $color-555: #555555;
135
+ $color-444: #444444;
136
+ $color-333: #333333;
137
+ $color-222: #222222;
138
+ $color-111: #111111;
139
+ $color-000: $color-gray-dark;
140
+
141
+ @import "~quasar/src/css/variables.sass";
package/utils/price.js CHANGED
@@ -1,13 +1,13 @@
1
- /**
2
- * 换算金额
3
- */
4
- utils.price = function(value, params) {
5
- return utils.decimal(value, Object.assign({
6
- // 最小值
7
- min: 0,
8
- // 小数点位数
9
- decimalLength: 2,
10
- // 是否开启人民币分转元(如值 189 -> 1.89)
11
- centToYuan: utils.config('priceCent') === true,
12
- }, params))
13
- }
1
+ /**
2
+ * 换算金额
3
+ */
4
+ utils.price = function(value, params) {
5
+ return utils.decimal(value, Object.assign({
6
+ // 最小值
7
+ min: 0,
8
+ // 小数点位数
9
+ decimalLength: 2,
10
+ // 是否开启人民币分转元(如值 189 -> 1.89)
11
+ centToYuan: utils.config('priceCent') === true,
12
+ }, params))
13
+ }