n20-common-lib 2.5.7 → 2.5.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
|
@@ -158,10 +158,6 @@ export default {
|
|
|
158
158
|
type: Object,
|
|
159
159
|
default: undefined
|
|
160
160
|
},
|
|
161
|
-
data: {
|
|
162
|
-
type: Array,
|
|
163
|
-
default: undefined
|
|
164
|
-
},
|
|
165
161
|
item: {
|
|
166
162
|
type: Object,
|
|
167
163
|
default: undefined
|
|
@@ -173,16 +169,15 @@ export default {
|
|
|
173
169
|
}
|
|
174
170
|
},
|
|
175
171
|
created() {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
172
|
+
if (this.item.reqOptions) {
|
|
173
|
+
this.getOptions()
|
|
174
|
+
}
|
|
179
175
|
},
|
|
180
176
|
methods: {
|
|
181
177
|
getOptions() {
|
|
182
178
|
let reqOptions = this.item.reqOptions
|
|
183
179
|
let url = reqOptions.url || ''
|
|
184
180
|
url = url.includes('?') ? `${url}r=${Math.random()}` : `${url}?r=${Math.random()}`
|
|
185
|
-
|
|
186
181
|
axios({
|
|
187
182
|
...reqOptions,
|
|
188
183
|
url: url,
|
|
@@ -1,57 +1,54 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div :class="prefixCls">
|
|
3
|
-
<
|
|
3
|
+
<el-form v-if="visible" :class="prefixCls + '-body'">
|
|
4
4
|
<slot name="prefix"></slot>
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
v-if="visible"
|
|
11
|
-
:width="width"
|
|
12
|
-
:form="model"
|
|
13
|
-
class="custom-advance-filter"
|
|
14
|
-
:prefix-cls="prefixCls"
|
|
15
|
-
:filter-id="filterId"
|
|
16
|
-
:filter-list="filterList"
|
|
17
|
-
@change="$emit('change', model)"
|
|
18
|
-
@clear="$emit('clear')"
|
|
19
|
-
>
|
|
20
|
-
<div
|
|
21
|
-
v-if="$slots.prefix"
|
|
22
|
-
slot="prefix"
|
|
23
|
-
class="el-form-item el-form-item--small n20-advanced-filter-item"
|
|
24
|
-
style="margin-bottom: 11px"
|
|
25
|
-
>
|
|
26
|
-
<slot name="prefix"></slot>
|
|
27
|
-
</div>
|
|
28
|
-
<template v-for="item in GroupData">
|
|
29
|
-
<template v-if="item && item.slotName" :slot="item.slotName">
|
|
30
|
-
<slot :name="item.slotName"></slot>
|
|
31
|
-
</template>
|
|
32
|
-
</template>
|
|
33
|
-
<div
|
|
34
|
-
v-if="$slots.suffix"
|
|
35
|
-
slot="suffix"
|
|
36
|
-
class="el-form-item el-form-item--small n20-advanced-filter-item"
|
|
37
|
-
style="border: none; margin-bottom: 11px"
|
|
5
|
+
<el-form-item
|
|
6
|
+
v-for="(item, i) in dataC"
|
|
7
|
+
:key="i"
|
|
8
|
+
:class="[prefixCls + '-item', activeClass(item)]"
|
|
9
|
+
:label="item.label"
|
|
38
10
|
>
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
11
|
+
<div :class="prefixCls + '-content'">
|
|
12
|
+
<slot v-if="item.slotName" :name="item.slotName"></slot>
|
|
13
|
+
<formItemInput v-else :form="model" :item="item" @change="$emit('change')" />
|
|
14
|
+
</div>
|
|
15
|
+
<i :key="i" :class="[prefixCls + '-item-close', 'n20-icon-yichu']" @click="handleClose(item)"></i>
|
|
16
|
+
</el-form-item>
|
|
17
|
+
<slot name="suffix"></slot>
|
|
18
|
+
<el-form-item :class="prefixCls + '-add'">
|
|
19
|
+
<el-button v-popover:advanced_popover onlyicon plain icon="el-icon-plus" />
|
|
20
|
+
<el-popover ref="advanced_popover" placement="bottom-start" trigger="click">
|
|
21
|
+
<el-form>
|
|
22
|
+
<InputSearch
|
|
23
|
+
v-model="search"
|
|
24
|
+
clearable
|
|
25
|
+
class="input-w m-b-s"
|
|
26
|
+
:placeholder="$l('搜索筛选条件')"
|
|
27
|
+
@change="searchFn"
|
|
28
|
+
/>
|
|
29
|
+
<filterItem :filter-list="filterListC" :check-array.sync="checkList" @checked="check" />
|
|
30
|
+
</el-form>
|
|
31
|
+
</el-popover>
|
|
32
|
+
<el-link class="m-l-s f-s-s" :underline="false" icon="n20-icon-qingchu" @click="cleared"> 清除条件</el-link>
|
|
33
|
+
</el-form-item>
|
|
34
|
+
</el-form>
|
|
42
35
|
<div v-else :width="width"></div>
|
|
43
36
|
</div>
|
|
44
37
|
</template>
|
|
45
38
|
|
|
46
39
|
<script>
|
|
47
|
-
import
|
|
40
|
+
import formItemInput from './form-item-input.vue'
|
|
41
|
+
import InputSearch from '../InputSearch/index.vue'
|
|
42
|
+
import filterItem from './filterItem.vue'
|
|
48
43
|
|
|
49
44
|
import mixins from './mixins/index.js'
|
|
50
45
|
const prefixCls = 'n20-advanced-filter'
|
|
51
46
|
export default {
|
|
52
47
|
name: 'AdvancedFilter',
|
|
53
48
|
components: {
|
|
54
|
-
|
|
49
|
+
formItemInput,
|
|
50
|
+
InputSearch,
|
|
51
|
+
filterItem
|
|
55
52
|
},
|
|
56
53
|
mixins: [mixins],
|
|
57
54
|
props: {
|
|
@@ -94,17 +91,96 @@ export default {
|
|
|
94
91
|
showPop: false,
|
|
95
92
|
showPopC: false,
|
|
96
93
|
prefixCls,
|
|
94
|
+
dataC: [],
|
|
95
|
+
filterListC: [],
|
|
97
96
|
remoteList: [],
|
|
98
97
|
checkList: []
|
|
99
98
|
}
|
|
100
99
|
},
|
|
101
|
-
|
|
100
|
+
watch: {
|
|
101
|
+
GroupData: {
|
|
102
|
+
handler(value) {
|
|
103
|
+
this.dataC = value
|
|
104
|
+
},
|
|
105
|
+
immediate: true
|
|
106
|
+
},
|
|
107
|
+
filterList: {
|
|
108
|
+
handler(value) {
|
|
109
|
+
this.filterListC = value
|
|
110
|
+
},
|
|
111
|
+
deep: true,
|
|
112
|
+
immediate: true
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
mounted() {
|
|
116
|
+
this.getFilterList()
|
|
117
|
+
},
|
|
102
118
|
methods: {
|
|
103
119
|
setOptions(key, opts) {
|
|
104
120
|
let item = this.filterList.find((f) => f.value === key)
|
|
105
121
|
if (item) {
|
|
106
122
|
item.options = opts || []
|
|
107
123
|
}
|
|
124
|
+
},
|
|
125
|
+
activeClass(item) {
|
|
126
|
+
console.log(item)
|
|
127
|
+
let flag = ''
|
|
128
|
+
switch (item.type) {
|
|
129
|
+
case 'text':
|
|
130
|
+
case 'search':
|
|
131
|
+
case 'select':
|
|
132
|
+
case 'number':
|
|
133
|
+
case 'date':
|
|
134
|
+
case 'datetime':
|
|
135
|
+
case 'year':
|
|
136
|
+
case 'month':
|
|
137
|
+
case 'week':
|
|
138
|
+
case 'checkbox':
|
|
139
|
+
case 'radio':
|
|
140
|
+
flag = this.model[item.value] ? this.prefixCls + '-active' : ''
|
|
141
|
+
break
|
|
142
|
+
case 'numberrange':
|
|
143
|
+
flag = this.model[item.startValue] && this.model[item.endValue] ? this.prefixCls + '-active' : ''
|
|
144
|
+
break
|
|
145
|
+
case 'daterange':
|
|
146
|
+
case 'datetimerange':
|
|
147
|
+
case ' monthrange':
|
|
148
|
+
flag = this.model[item.startDate] && this.model[item.endDate] ? this.prefixCls + '-active' : ''
|
|
149
|
+
break
|
|
150
|
+
}
|
|
151
|
+
return flag
|
|
152
|
+
},
|
|
153
|
+
handleClose(item) {
|
|
154
|
+
let data = this.GroupData.filter((s) => {
|
|
155
|
+
return s.label !== item.label || s.value !== item.value
|
|
156
|
+
})
|
|
157
|
+
this.saveFilter(data).then(({ code }) => {
|
|
158
|
+
if (code === 200) {
|
|
159
|
+
this.getFilterList()
|
|
160
|
+
}
|
|
161
|
+
})
|
|
162
|
+
},
|
|
163
|
+
searchFn() {
|
|
164
|
+
this.filterListC = this.cloneDeepFList.filter((r) => {
|
|
165
|
+
return r.label.includes(this.search)
|
|
166
|
+
})
|
|
167
|
+
},
|
|
168
|
+
cleared() {
|
|
169
|
+
this.$emit('clear')
|
|
170
|
+
},
|
|
171
|
+
check(keys) {
|
|
172
|
+
this.checkList = keys
|
|
173
|
+
let groupFilter = []
|
|
174
|
+
if (keys.length > 0) {
|
|
175
|
+
keys.forEach((k) => {
|
|
176
|
+
groupFilter.push(this.filterList.find((s) => s.label === k))
|
|
177
|
+
})
|
|
178
|
+
}
|
|
179
|
+
this.saveFilter(groupFilter).then(({ code }) => {
|
|
180
|
+
if (code === 200) {
|
|
181
|
+
this.getFilterList()
|
|
182
|
+
}
|
|
183
|
+
})
|
|
108
184
|
}
|
|
109
185
|
}
|
|
110
186
|
}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
:height="height"
|
|
9
9
|
:class="{ 'cell-default-set--': cellDefault }"
|
|
10
10
|
:checkbox-config="{ checkField: 'checked', checkMethod: forbidSelect }"
|
|
11
|
-
v-bind="Object.assign({ size: size }, $attrs, sizeBind)"
|
|
12
11
|
show-overflow
|
|
13
12
|
show-header-overflow
|
|
14
13
|
:row-config="{ isHover: true, useKey: true, ...$attrs.rowConfig }"
|
|
@@ -22,6 +21,7 @@
|
|
|
22
21
|
iconDesc: 'n20-icon-shunxu'
|
|
23
22
|
}"
|
|
24
23
|
:filter-config="{ remote: true, iconNone: 'n20-icon-xiala-moren', iconMatch: 'n20-icon-xiala-moren' }"
|
|
24
|
+
v-bind="Object.assign({ size: size }, $attrs, sizeBind)"
|
|
25
25
|
v-on="$listeners"
|
|
26
26
|
@sort-change="(val) => customSortMethod(val)"
|
|
27
27
|
@filter-change="filterChange"
|
|
@@ -5,10 +5,10 @@ const CHINESE_NUMERALS = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒'
|
|
|
5
5
|
* @param {number|string} amount 需转换的金额
|
|
6
6
|
*/
|
|
7
7
|
export const convert = (money) => {
|
|
8
|
-
var cnNums =
|
|
9
|
-
var cnIntRadice =
|
|
10
|
-
var cnIntUnits =
|
|
11
|
-
var cnDecUnits =
|
|
8
|
+
var cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'] //汉字的数字
|
|
9
|
+
var cnIntRadice = ['', '拾', '佰', '仟'] //基本单位
|
|
10
|
+
var cnIntUnits = ['', '万', '亿', '兆'] //对应整数部分扩展单位
|
|
11
|
+
var cnDecUnits = ['角', '分', '毫', '厘'] //对应小数部分单位
|
|
12
12
|
var cnInteger = '整' //整数金额时后面跟的字符
|
|
13
13
|
var cnIntLast = '元' //整数完以后的单位
|
|
14
14
|
//最大处理的数字
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<el-form :class="prefixCls + '-body'">
|
|
3
|
-
<slot name="prefix"></slot>
|
|
4
|
-
<el-form-item
|
|
5
|
-
v-for="(item, i) in dataC"
|
|
6
|
-
:key="i"
|
|
7
|
-
:class="[prefixCls + '-item', activeClass(item)]"
|
|
8
|
-
:label="item.label"
|
|
9
|
-
>
|
|
10
|
-
<div :class="prefixCls + '-content'">
|
|
11
|
-
<slot v-if="item.slotName" :name="item.slotName"></slot>
|
|
12
|
-
<formItemInput v-else :form="form" :item="item" @change="$emit('change')" />
|
|
13
|
-
</div>
|
|
14
|
-
<i :key="i" :class="[prefixCls + '-item-close', 'n20-icon-yichu']" @click="handleClose(item)"></i>
|
|
15
|
-
</el-form-item>
|
|
16
|
-
<slot name="suffix"></slot>
|
|
17
|
-
<el-form-item :class="prefixCls + '-add'">
|
|
18
|
-
<el-button v-popover:advanced_popover onlyicon plain icon="el-icon-plus" />
|
|
19
|
-
<el-popover ref="advanced_popover" placement="bottom-start" trigger="click">
|
|
20
|
-
<el-form>
|
|
21
|
-
<InputSearch
|
|
22
|
-
v-model="search"
|
|
23
|
-
clearable
|
|
24
|
-
class="input-w m-b-s"
|
|
25
|
-
:placeholder="$l('搜索筛选条件')"
|
|
26
|
-
@change="searchFn"
|
|
27
|
-
/>
|
|
28
|
-
<filterItem :filter-list="filterListC" :check-array.sync="checkList" @checked="check" />
|
|
29
|
-
</el-form>
|
|
30
|
-
</el-popover>
|
|
31
|
-
<el-link class="m-l-s f-s-s" :underline="false" icon="n20-icon-qingchu" @click="cleared"> 清除条件</el-link>
|
|
32
|
-
</el-form-item>
|
|
33
|
-
</el-form>
|
|
34
|
-
</template>
|
|
35
|
-
|
|
36
|
-
<script>
|
|
37
|
-
import formItemInput from './form-item-input.vue'
|
|
38
|
-
import InputSearch from '../InputSearch/index.vue'
|
|
39
|
-
import filterItem from './filterItem.vue'
|
|
40
|
-
import mixins from './mixins/index.js'
|
|
41
|
-
|
|
42
|
-
export default {
|
|
43
|
-
name: 'FilterList',
|
|
44
|
-
components: {
|
|
45
|
-
filterItem,
|
|
46
|
-
InputSearch,
|
|
47
|
-
formItemInput
|
|
48
|
-
},
|
|
49
|
-
mixins: [mixins],
|
|
50
|
-
props: {
|
|
51
|
-
data: {
|
|
52
|
-
type: Array,
|
|
53
|
-
default: () => []
|
|
54
|
-
},
|
|
55
|
-
form: {
|
|
56
|
-
type: Object,
|
|
57
|
-
default: () => ({})
|
|
58
|
-
},
|
|
59
|
-
width: {
|
|
60
|
-
type: String,
|
|
61
|
-
default: '90%'
|
|
62
|
-
},
|
|
63
|
-
filterList: {
|
|
64
|
-
type: Array,
|
|
65
|
-
default: () => []
|
|
66
|
-
},
|
|
67
|
-
filterId: {
|
|
68
|
-
type: String,
|
|
69
|
-
default: ''
|
|
70
|
-
},
|
|
71
|
-
prefixCls: {
|
|
72
|
-
type: String,
|
|
73
|
-
default: ''
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
data() {
|
|
77
|
-
return {
|
|
78
|
-
search: '',
|
|
79
|
-
dataC: [],
|
|
80
|
-
filterListC: []
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
watch: {
|
|
84
|
-
GroupData: {
|
|
85
|
-
handler(value) {
|
|
86
|
-
this.dataC = value
|
|
87
|
-
},
|
|
88
|
-
immediate: true
|
|
89
|
-
},
|
|
90
|
-
filterList: {
|
|
91
|
-
handler(value) {
|
|
92
|
-
this.filterListC = value
|
|
93
|
-
},
|
|
94
|
-
deep: true,
|
|
95
|
-
immediate: true
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
mounted() {
|
|
99
|
-
this.getFilterList()
|
|
100
|
-
},
|
|
101
|
-
methods: {
|
|
102
|
-
handleClose(item) {
|
|
103
|
-
let data = this.GroupData.filter((s) => {
|
|
104
|
-
return s.label !== item.label || s.value !== item.value
|
|
105
|
-
})
|
|
106
|
-
this.saveFilter(data).then(({ code }) => {
|
|
107
|
-
if (code === 200) {
|
|
108
|
-
this.getFilterList()
|
|
109
|
-
}
|
|
110
|
-
})
|
|
111
|
-
},
|
|
112
|
-
searchFn() {
|
|
113
|
-
this.filterListC = this.cloneDeepFList.filter((r) => {
|
|
114
|
-
return r.label.includes(this.search)
|
|
115
|
-
})
|
|
116
|
-
},
|
|
117
|
-
check(keys) {
|
|
118
|
-
this.checkList = keys
|
|
119
|
-
let groupFilter = []
|
|
120
|
-
if (keys.length > 0) {
|
|
121
|
-
keys.forEach((k) => {
|
|
122
|
-
groupFilter.push(this.filterList.find((s) => s.label === k))
|
|
123
|
-
})
|
|
124
|
-
}
|
|
125
|
-
this.saveFilter(groupFilter).then(({ code }) => {
|
|
126
|
-
if (code === 200) {
|
|
127
|
-
this.getFilterList()
|
|
128
|
-
}
|
|
129
|
-
})
|
|
130
|
-
},
|
|
131
|
-
activeClass(item) {
|
|
132
|
-
let flag = ''
|
|
133
|
-
switch (item.type) {
|
|
134
|
-
case 'text':
|
|
135
|
-
case 'search':
|
|
136
|
-
case 'select':
|
|
137
|
-
case 'number':
|
|
138
|
-
case 'date':
|
|
139
|
-
case 'datetime':
|
|
140
|
-
case 'year':
|
|
141
|
-
case 'month':
|
|
142
|
-
case 'week':
|
|
143
|
-
case 'checkbox':
|
|
144
|
-
case 'radio':
|
|
145
|
-
flag = this.form[item.value] && this.form[item.value].length > 0 ? this.prefixCls + '-active' : ''
|
|
146
|
-
break
|
|
147
|
-
case 'numberrange':
|
|
148
|
-
flag = this.form[item.startValue] && this.form[item.endValue] ? this.prefixCls + '-active' : ''
|
|
149
|
-
break
|
|
150
|
-
case 'daterange':
|
|
151
|
-
case 'datetimerange':
|
|
152
|
-
case ' monthrange':
|
|
153
|
-
flag = this.form[item.startDate] && this.form[item.endDate] ? this.prefixCls + '-active' : ''
|
|
154
|
-
break
|
|
155
|
-
}
|
|
156
|
-
return flag
|
|
157
|
-
},
|
|
158
|
-
cleared() {
|
|
159
|
-
this.$emit('clear')
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
</script>
|