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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.5.7",
3
+ "version": "2.5.9",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -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
- // if (this.item.reqOptions) {
177
- // this.getOptions()
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
- <div v-if="!visible && $slots.prefix" class="n20-advanced-filter-item" style="margin-bottom: 11px">
3
+ <el-form v-if="visible" :class="prefixCls + '-body'">
4
4
  <slot name="prefix"></slot>
5
- </div>
6
- <div v-if="!visible && $slots.suffix" class="n20-advanced-filter-item" style="border: none; margin-bottom: 11px">
7
- <slot name="suffix"></slot>
8
- </div>
9
- <filterList
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
- <slot name="suffix"></slot>
40
- </div>
41
- </filterList>
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 filterList from './filterList.vue'
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
- filterList
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 = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖') //汉字的数字
9
- var cnIntRadice = new Array('', '拾', '佰', '仟') //基本单位
10
- var cnIntUnits = new Array('', '万', '亿', '兆') //对应整数部分扩展单位
11
- var cnDecUnits = new Array('角', '分', '毫', '厘') //对应小数部分单位
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>