n20-common-lib 2.5.5-beta.7 → 2.5.5-beta.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.5.5-beta.7",
3
+ "version": "2.5.5-beta.9",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,7 +1,7 @@
1
1
  $--s: 1024px;
2
2
  $--m: 1600px;
3
3
  $--l: 1920px;
4
- $--input-max: 300px;
4
+ $--input-max: 224px;
5
5
 
6
6
  .el-form-item[span],
7
7
  .el-form-item[span-s],
@@ -30,6 +30,7 @@ $--input-max: 300px;
30
30
 
31
31
  @media only screen and (max-width: $--l) {
32
32
  @for $i from 0 through 24 {
33
+
33
34
  .el-form-item[span-l='#{$i}'],
34
35
  .el-form-item[span-lg='#{$i}'] {
35
36
  width: (1 / 24 * $i * 100) * 1%;
@@ -108,10 +109,12 @@ $--input-max: 300px;
108
109
  .el-textarea__inner {
109
110
  padding-left: 10px;
110
111
  padding-right: 10px;
112
+
111
113
  &[oreadonly] {
112
114
  border-color: $--border-color-base;
113
115
  }
114
116
  }
117
+
115
118
  .el-input-number.is-without-controls .el-input__inner {
116
119
  padding-left: 10px;
117
120
  padding-right: 10px;
@@ -563,12 +566,14 @@ $--input-max: 300px;
563
566
  font-size: 16px;
564
567
  transition: all 0.3s;
565
568
  }
569
+
566
570
  &.has-value {
567
571
  &:hover {
568
572
  .el-range__icon {
569
573
  display: none;
570
574
  }
571
575
  }
576
+
572
577
  &.is-disabled {
573
578
  .el-range__icon {
574
579
  display: initial;
@@ -676,6 +681,7 @@ $--input-max: 300px;
676
681
  .el-input__suffix {
677
682
  font-size: 14px;
678
683
  }
684
+
679
685
  .el-icon-circle-close {
680
686
  pointer-events: all;
681
687
  cursor: pointer;
@@ -694,10 +700,12 @@ $--input-max: 300px;
694
700
  .el-select__input {
695
701
  margin-left: 10px;
696
702
  }
703
+
697
704
  .el-input__suffix {
698
705
  display: none;
699
706
  }
700
707
  }
708
+
701
709
  &.is-clearable {
702
710
  .el-select {
703
711
  .el-input__inner {
@@ -705,6 +713,7 @@ $--input-max: 300px;
705
713
  }
706
714
  }
707
715
  }
716
+
708
717
  .el-input__suffix {
709
718
  z-index: 1;
710
719
  }
@@ -728,6 +737,7 @@ $--input-max: 300px;
728
737
  /* 脱离form-item校验 */
729
738
  .rule-key__is-error {
730
739
  position: relative;
740
+
731
741
  .el-input__inner,
732
742
  .el-input__inner:focus,
733
743
  .el-textarea__inner,
@@ -735,6 +745,7 @@ $--input-max: 300px;
735
745
  border-color: $--color-danger;
736
746
  }
737
747
  }
748
+
738
749
  .rule-key__error_msg {
739
750
  color: $--color-danger;
740
751
  font-size: 12px;
@@ -750,8 +761,9 @@ $--input-max: 300px;
750
761
  }
751
762
 
752
763
  .n20-approval-Button {
764
+
753
765
  .el-form-item--small .el-form-item__content,
754
766
  .el-form-item--small .el-form-item__label {
755
767
  line-height: 1.5;
756
768
  }
757
- }
769
+ }
@@ -167,6 +167,12 @@ th.vxe-header--column {
167
167
  font-family: PingFang SC, Microsoft YaHei, Arial, sans-serif !important;
168
168
  color: #333;
169
169
  }
170
+
171
+ .vxe-header--column {
172
+ .vxe-cell {
173
+ justify-content: center !important;
174
+ }
175
+ }
170
176
  @import '../../components/TableSetSize/style.scss';
171
177
  .el-table-set-size-item {
172
178
  .icon-mini {
@@ -9,15 +9,19 @@
9
9
  align-items: center;
10
10
  flex: 1;
11
11
  padding: 8px;
12
+
12
13
  &-item.n20-advanced-filter-active {
13
14
  border-color: #b3d0ff;
14
15
  background: #e9f2ff !important;
15
16
  }
17
+
16
18
  &-body {
19
+
17
20
  .el-form-item,
18
21
  .el-form-item--small.el-form-item {
19
- margin-bottom: 10px;
22
+ margin-bottom: 16px;
20
23
  }
24
+
21
25
  .el-form-item__content {
22
26
  display: inline-block;
23
27
  vertical-align: middle;
@@ -38,6 +42,7 @@
38
42
  border-radius: 4px;
39
43
  white-space: nowrap;
40
44
  cursor: pointer;
45
+
41
46
  .el-form-item__label {
42
47
  padding: 0;
43
48
  display: inline-block;
@@ -48,23 +53,30 @@
48
53
  margin-right: 4px;
49
54
  }
50
55
 
51
- .n20-date-editor.el-input--prefix {
52
- max-width: 166px;
53
- }
56
+
54
57
  .el-range-editor.el-input__inner {
55
58
  min-width: 168px;
56
59
  max-width: 224px;
60
+
57
61
  .el-range-input {
58
62
  background-color: transparent;
59
63
  }
60
64
  }
61
65
 
66
+ .n20-date-editor.el-date-editor--datetimerange.el-range-editor--small.has-value {
67
+ min-width: 168px;
68
+ max-width: 380px;
69
+ }
70
+
62
71
  .el-input,
63
72
  .el-input__inner {
64
73
  border: none;
65
74
  width: 100%;
66
75
  background-color: transparent;
67
76
  }
77
+
78
+
79
+
68
80
  .el-input__inner:active,
69
81
  .el-input__inner:focus {
70
82
  box-shadow: none;
@@ -78,32 +90,45 @@
78
90
  vertical-align: middle;
79
91
  padding: 0 10px;
80
92
  }
93
+
81
94
  .el-radio-group {
82
95
  padding: 0 10px;
83
96
  }
84
97
 
85
98
  .n20-num-w {
99
+
86
100
  .el-input,
87
101
  .el-input__inner {
88
102
  padding-left: 0;
89
103
  }
90
104
  }
105
+
91
106
  &-close {
92
107
  display: none;
93
108
  position: absolute;
94
109
  top: -6px;
95
110
  right: -10px;
96
111
  }
112
+
97
113
  &:hover {
98
114
  .n20-advanced-filter-item-close {
99
115
  display: inline-block;
100
116
  }
101
117
  }
102
118
  }
119
+
120
+ &-item.el-form-item[disabled] {
121
+ background-color: #f5f5f5;
122
+ border-color: #e4e7ed;
123
+ color: #333333;
124
+ cursor: not-allowed;
125
+ }
126
+
103
127
  &-content {
104
128
  display: inline-block;
105
129
  white-space: nowrap;
106
130
  text-overflow: ellipsis;
131
+
107
132
  .el-select.el-select--small {
108
133
  .el-select__tags {
109
134
  max-width: 88px !important;
@@ -112,10 +137,12 @@
112
137
  }
113
138
  }
114
139
  }
140
+
115
141
  :hover {
116
142
  border-color: $--color-primary;
117
143
  cursor: pointer;
118
144
  }
145
+
119
146
  &-add {
120
147
  display: inline-block;
121
148
  vertical-align: middle;
@@ -125,4 +152,4 @@
125
152
  .popover-check-box {
126
153
  max-height: 300px;
127
154
  overflow-y: auto;
128
- }
155
+ }
@@ -1,20 +1,27 @@
1
1
  <template>
2
- <div class="popover-check-box">
3
- <el-checkbox-group v-model="checkList" class="flex-column" @change="checkChange">
4
- <el-checkbox
5
- v-for="(item, i) in filterList"
6
- :key="i"
7
- class="m-t-b"
8
- :disabled="checkList.includes(item.label)"
9
- :label="item.label"
10
- />
11
- </el-checkbox-group>
12
- </div>
2
+ <el-checkbox-group v-model="checkArrayCalc" class="popover-check-box" @change="checkChange">
3
+ <vue-draggable
4
+ :list="filterList"
5
+ :animation="200"
6
+ group="dragBox"
7
+ :handle="'.n20-icon-tuodong'"
8
+ @change="dragChange"
9
+ >
10
+ <div v-for="(item, index) in filterList" :key="index" class="n20-drag-list-item">
11
+ <el-checkbox :disabled="item.static" :label="item">{{ item.label }}</el-checkbox
12
+ ><i class="n20-drag-icon n20-icon-tuodong"></i>
13
+ </div>
14
+ </vue-draggable>
15
+ </el-checkbox-group>
13
16
  </template>
14
17
 
15
18
  <script>
19
+ import importGlobal from '../../utils/importGlobal.js'
16
20
  export default {
17
21
  name: 'FilterItem',
22
+ components: {
23
+ vueDraggable: () => importGlobal('vuedraggable', () => import(/*webpackChunkName: "vuedraggable"*/ 'vuedraggable'))
24
+ },
18
25
  props: {
19
26
  filterList: {
20
27
  type: Array,
@@ -25,22 +32,23 @@ export default {
25
32
  default: () => []
26
33
  }
27
34
  },
28
- data() {
29
- return {
30
- checkList: ''
31
- }
32
- },
33
- watch: {
34
- checkArray: {
35
- handler(val) {
36
- this.checkList = val
35
+ computed: {
36
+ checkArrayCalc: {
37
+ get() {
38
+ return this.checkArray
37
39
  },
38
- deep: true
40
+ set(value) {
41
+ this.$emit('update:checkArray', value)
42
+ return value
43
+ }
39
44
  }
40
45
  },
41
46
  methods: {
42
47
  checkChange(keys) {
43
48
  this.$emit('checked', keys)
49
+ },
50
+ dragChange() {
51
+ this.$emit('checked', this.checkArrayCalc)
44
52
  }
45
53
  }
46
54
  }
@@ -2,34 +2,42 @@
2
2
  <el-input
3
3
  v-if="item.type === 'text' || item.type === undefined"
4
4
  v-model="form[item.value]"
5
- :clearable="(item.props && item.props.clearable) || false"
5
+ v-rule-key
6
+ :ruleErrorHide="item.ruleErrorHide"
7
+ :rules="item.rules"
8
+ rule-form="ruleValidate"
9
+ :clearable="(item.props && item.props.clearable) ?? true"
6
10
  :style="{
7
11
  width:
8
12
  form[item.value] && form[item.value].length > 0
9
- ? (context.measureText(form[item.value]).width * 1.4 < 75
13
+ ? (context.measureText(form[item.value]).width * 1.4 + 45 < 75
10
14
  ? 75
11
- : context.measureText(form[item.value]).width * 1.4 > 396
15
+ : context.measureText(form[item.value]).width * 1.4 + 45 > 396
12
16
  ? 396
13
- : context.measureText(form[item.value]).width * 1.4 + 35) + 'px'
14
- : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
17
+ : context.measureText(form[item.value]).width * 1.4 + 45) + 'px'
18
+ : item.width || '100px'
15
19
  }"
20
+ :value-data="context.measureText(form[item.value]).width * 1.4 + 45 + 'px'"
16
21
  v-bind="item.props"
17
22
  :placeholder="item.props && item.props.placeholder ? item.props.placeholder : $lc('请输入')"
18
- v-on="item.on"
23
+ @blur="handleBlur"
19
24
  />
20
25
  <el-input
26
+ v-rule-key
27
+ :rules="item.rules"
28
+ rule-form="ruleValidate"
21
29
  v-else-if="item.type === 'search'"
22
30
  v-model="form[item.value]"
23
- :clearable="(item.props && item.props.clearable) || false"
31
+ :clearable="(item.props && item.props.clearable) ?? true"
24
32
  :style="{
25
33
  width:
26
34
  form[item.value] && form[item.value].length > 0
27
35
  ? context.measureText(form[item.value]).width * 1.4 + 40 + 'px'
28
- : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
36
+ : item.width || '100px'
29
37
  }"
30
38
  readonly
31
39
  v-bind="item.props"
32
- v-on="item.on"
40
+ @blur="handleBlur"
33
41
  >
34
42
  <i
35
43
  slot="suffix"
@@ -42,9 +50,12 @@
42
50
  ></i>
43
51
  </el-input>
44
52
  <el-select
53
+ v-rule-key
54
+ :rules="item.rules"
55
+ rule-form="ruleValidate"
45
56
  v-else-if="item.type === 'select'"
46
57
  v-model="form[item.value]"
47
- :clearable="(item.props && item.props.clearable) || false"
58
+ :clearable="(item.props && item.props.clearable) ?? true"
48
59
  :multiple="item.multiple"
49
60
  collapse-tags
50
61
  :style="{
@@ -55,15 +66,15 @@
55
66
  (r) =>
56
67
  r.value === form[item.value] ||
57
68
  (item.props && item.props.valueKey && r[item.props.valueKey] === form[item.value])
58
- ).label
69
+ )
59
70
  ).width *
60
71
  1.4 +
61
- 48 +
72
+ 68 +
62
73
  'px'
63
- : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
74
+ : item.width || '100px'
64
75
  }"
65
76
  v-bind="item.props"
66
- v-on="item.on"
77
+ @change="handleChange"
67
78
  >
68
79
  <template v-if="item.props && item.props.labelKey && item.props.valueKey">
69
80
  <el-option
@@ -85,56 +96,86 @@
85
96
  </template>
86
97
  </el-select>
87
98
  <inputNumber
99
+ v-rule-key
100
+ :rules="item.rules"
101
+ rule-form="ruleValidate"
88
102
  v-else-if="item.type === 'number'"
89
103
  v-model="form[item.value]"
90
104
  :style="{
91
105
  width:
92
106
  form[item.value] && Math.floor(Math.log10(form[item.value])) + 1 > 0
93
- ? (context.measureText(form[item.value]).width * 1.4 < 74
107
+ ? (context.measureText(form[item.value]).width * 1.6 + 60 < 74
94
108
  ? 74
95
- : context.measureText(form[item.value]).width * 1.4 > 396
109
+ : context.measureText(form[item.value]).width * 1.6 + 60 > 396
96
110
  ? 396
97
- : context.measureText(form[item.value]).width * 1.4 + 35) + 'px'
98
- : 120 - 18 - context.measureText(item.label).width * 1.4 + 'px'
111
+ : context.measureText(form[item.value]).width * 1.6 + 60) + 'px'
112
+ : item.width || '100px'
99
113
  }"
100
114
  v-bind="item.props"
101
- v-on="item.on"
115
+ @blur="handleChange"
102
116
  />
103
117
  <inputNumberRange
118
+ v-rule-key
119
+ :rules="item.rules"
120
+ rule-form="ruleValidate"
104
121
  v-else-if="item.type === 'numberrange'"
105
122
  :start-value.sync="form[item.startValue]"
106
123
  :end-value.sync="form[item.endValue]"
107
124
  :style="{
108
- width: (form[item.startValue] && Math.floor(Math.log10(form[item.startValue])) + 1 > 0 ? 202 : 166) + 'px'
125
+ width:
126
+ item.width ||
127
+ (form[item.startValue] && Math.floor(Math.log10(form[item.startValue])) + 1 > 0 ? 202 : 166) + 'px'
109
128
  }"
110
129
  v-bind="item.props"
111
- v-on="item.on"
130
+ @blur="handleChange"
112
131
  />
113
132
  <datePickerPor
133
+ v-rule-key
134
+ :rules="item.rules"
135
+ rule-form="ruleValidate"
114
136
  v-else-if="['date', 'datetime', 'year', 'month', 'week'].includes(item.type)"
115
137
  v-model="form[item.value]"
116
138
  :type="item.type"
117
- :clearable="(item.props && item.props.clearable) || false"
118
- :style="{ width: 166 + 'px' }"
139
+ :clearable="(item.props && item.props.clearable) ?? true"
140
+ :style="{ width: item.width || 175 + 'px' }"
119
141
  v-bind="item.props"
120
- v-on="item.on"
142
+ @change="handleChange"
121
143
  />
122
144
  <datePickerPor
145
+ v-rule-key
146
+ :rules="item.rules"
147
+ rule-form="ruleValidate"
123
148
  v-else-if="['daterange', 'datetimerange', ' monthrange'].includes(item.type)"
124
149
  :type="item.type"
125
150
  :start-date.sync="form[item.startDate]"
126
151
  :end-date.sync="form[item.endDate]"
127
- :clearable="(item.props && item.props.clearable) || false"
128
- style="width: 100%"
152
+ :clearable="(item.props && item.props.clearable) ?? true"
153
+ :style="{ width: item.width }"
129
154
  v-bind="item.props"
130
- v-on="item.on"
155
+ @change="handleChange"
131
156
  />
132
- <el-checkbox-group v-else-if="item.type === 'checkbox'" v-model="form[item.value]" v-bind="item.props" v-on="item.on">
157
+ <el-checkbox-group
158
+ v-rule-key
159
+ :rules="item.rules"
160
+ rule-form="ruleValidate"
161
+ v-else-if="item.type === 'checkbox'"
162
+ v-model="form[item.value]"
163
+ v-bind="item.props"
164
+ @change="handleChange"
165
+ >
133
166
  <el-checkbox v-for="c in item.options" :key="c.value" :label="c.value" :disabled="c.disabled">{{
134
167
  c.label
135
168
  }}</el-checkbox>
136
169
  </el-checkbox-group>
137
- <el-radio-group v-else-if="item.type === 'radio'" v-model="form[item.value]" v-bind="item.props" v-on="item.on">
170
+ <el-radio-group
171
+ v-rule-key
172
+ rule-form="ruleValidate"
173
+ :rules="item.rules"
174
+ v-else-if="item.type === 'radio'"
175
+ v-model="form[item.value]"
176
+ v-bind="item.props"
177
+ v-on="item.on"
178
+ >
138
179
  <el-radio v-for="c in item.options" :key="c.value" :label="c.value" :disabled="c.disabled">{{ c.label }}</el-radio>
139
180
  </el-radio-group>
140
181
  </template>
@@ -144,6 +185,7 @@ import axios from '../../utils/axios'
144
185
  import inputNumber from '../InputNumber/index.vue'
145
186
  import inputNumberRange from '../InputNumber/numberRange.vue'
146
187
  import datePickerPor from '../DatePicker/por.vue'
188
+ import { $lc } from '../../utils/i18n/index.js'
147
189
 
148
190
  const canvas = document.createElement('canvas')
149
191
  const context = canvas.getContext('2d')
@@ -169,12 +211,19 @@ export default {
169
211
  context
170
212
  }
171
213
  },
214
+
172
215
  created() {
173
216
  if (this.item.reqOptions) {
174
217
  this.getOptions()
175
218
  }
176
219
  },
177
220
  methods: {
221
+ handleBlur(fn, value) {
222
+ this.$emit('blur')
223
+ },
224
+ handleChange() {
225
+ this.$emit('blur')
226
+ },
178
227
  getOptions() {
179
228
  let reqOptions = this.item.reqOptions
180
229
  let url = reqOptions.url || ''