vue2-client 1.4.10 → 1.4.11

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.
@@ -1,244 +1,244 @@
1
- <template>
2
- <div>
3
- <a-cascader
4
- v-if="type === 'cascader'"
5
- :options="tagData.divisionsForTree"
6
- :placeholder="placeholder"
7
- style="width: 100%;"
8
- :size="size"
9
- />
10
- <a-select
11
- ref="select"
12
- :size="size"
13
- :value="valueView"
14
- style="width: 100%;"
15
- :dropdownMatchSelectWidth="false"
16
- :dropdownStyle="dropdownStyle"
17
- :placeholder="placeholder"
18
- @blur="selectBlurHandle"
19
- :getPopupContainer=" triggerNode => { return triggerNode.parentNode } "
20
- :style="inputStyle">
21
- <div slot="dropdownRender" @mousedown.prevent>
22
- <a-tabs v-model="activeKey" :size="size">
23
- <a-tab-pane
24
- :tab="view.key"
25
- v-for="(view,index) in viewArr"
26
- :key="view.key"
27
- v-if="contexts > index"
28
- :disabled="tagData[view.value].length === 0">
29
-
30
- <a-checkable-tag
31
- :style="tagStyle"
32
- v-for="item of tagData[view.value]"
33
- :key="item.code"
34
- @change="tagClick(view.key,item)">
35
- <a-tooltip
36
- placement="top"
37
- :mouseEnterDelay="0.5"
38
- :title="item.name"
39
- :getPopupContainer=" triggerNode => { return triggerNode.parentElement } "
40
- >
41
- {{ item.name.length > 8 ?`${item.name.slice(0, 8)}...`:item.name }}
42
- </a-tooltip>
43
- </a-checkable-tag>
44
- </a-tab-pane>
45
- </a-tabs>
46
- </div>
47
- </a-select>
48
- </div>
49
- </template>
50
-
51
- <script>
52
- const viewArr = [
53
- {
54
- key: '省/直辖市',
55
- value: 'divisionsForTree',
56
- }, {
57
- key: '市',
58
- value: 'cityData',
59
- }, {
60
- key: '区',
61
- value: 'areaData',
62
- }, {
63
- key: '街道',
64
- value: 'streetData',
65
- }
66
- ]
67
- export default {
68
- name: 'CitySelect',
69
- data () {
70
- return {
71
- open: false,
72
- tagData: {
73
- divisionsForTree: this.$appdata.getDivisionsOhChinaForTree(),
74
- // 市
75
- cityData: [],
76
- // 区
77
- areaData: [],
78
- // 街道
79
- streetData: [],
80
- },
81
- // model: {
82
- // provinceModel: { name: '', code: '' },
83
- // cityModel: { name: '', code: '' },
84
- // areaModel: { name: '', code: '' },
85
- // streetModel: { name: '', code: '' }
86
- // },
87
- model: [
88
- { name: '', code: '' },
89
- { name: '', code: '' },
90
- { name: '', code: '' },
91
- { name: '', code: '' }
92
- ],
93
- // 控制标签
94
- activeKey: '省/直辖市',
95
- // 遍历以渲染页面
96
- viewArr,
97
- // 框内显示值 valueView
98
- valueView: undefined
99
- }
100
- },
101
- mounted () {
102
-
103
- },
104
- model: {
105
- prop: 'value',
106
- event: 'onChange'
107
- },
108
- computed: {},
109
- props: {
110
- // 页面渲染内容 默认 省市区街道 四个 所以是4
111
- contexts: {
112
- type: Number,
113
- default: 3
114
- },
115
- placeholder: {
116
- type: String,
117
- default: '请选择省市区'
118
- },
119
- // small lage 输入框大小
120
- size: {
121
- type: String,
122
- default: undefined
123
- },
124
- // 类型 simple / undefined
125
- // simple 就是用的 cascader 不穿就是用的 自己封装的
126
- type: {
127
- type: String,
128
- default: undefined
129
- },
130
- // 框的样式
131
- inputStyle: {
132
- type: Object,
133
- default: () => {
134
- }
135
- },
136
- // 下拉框的样式
137
- dropdownStyle: {
138
- type: Object,
139
- default: () => {
140
- return {
141
- width: '35rem',
142
- padding: '1%'
143
- }
144
- }
145
- },
146
- // 标签的样式
147
- tagStyle: {
148
- type: Object,
149
- default: () => {
150
- return {
151
- fontSize: '0.88rem',
152
- width: '23%',
153
- textAlign: 'left',
154
- margin: '0.5%',
155
- cursor: 'pointer'
156
- }
157
- }
158
- },
159
- // 用于v-model 绑定
160
- value: {
161
- type: String,
162
- default: undefined
163
- },
164
- // 用于v-model 绑定 code :最后一级的code address: 所有级拼接的地址
165
- valueType: {
166
- type: String,
167
- default: 'address'
168
- }
169
- },
170
- watch: {},
171
- methods: {
172
- tagClick (e, item) {
173
- if (e === '省/直辖市') {
174
- // 如果是同一个标签
175
- if (this.model[0].name !== item.name) {
176
- this.tagData.cityData = item.children
177
- this.tagData.areaData = []
178
- this.tagData.streetData = []
179
- this.model[0].name = item.name
180
- this.model[0].code = item.code
181
- this.model[1] = { name: '', code: '' }
182
- this.model[2] = { name: '', code: '' }
183
- this.model[3] = { name: '', code: '' }
184
- }
185
- if (this.contexts !== 1) {
186
- this.activeKey = '市'
187
- }
188
- this.getResultText(1)
189
- } else if (e === '市') {
190
- if (this.model[1].name !== item.name) {
191
- this.tagData.areaData = item.children
192
- this.tagData.streetData = []
193
- this.model[1].name = item.name
194
- this.model[1].code = item.code
195
- this.model[2] = { name: '', code: '' }
196
- this.model[3] = { name: '', code: '' }
197
- }
198
- if (this.contexts !== 2) {
199
- this.activeKey = '区'
200
- }
201
- this.getResultText(2)
202
- } else if (e === '区') {
203
- if (this.model[2].name !== item.name) {
204
- this.tagData.streetData = item.children
205
- this.model[2].name = item.name
206
- this.model[2].code = item.code
207
- this.model[3] = { name: '', code: '' }
208
- }
209
- if (this.contexts !== 3) {
210
- this.activeKey = '街道'
211
- }
212
- this.getResultText(3)
213
- } else if (e === '街道') {
214
- if (this.model[3].name !== item.name) {
215
- this.model[3].name = item.name
216
- this.model[3].code = item.code
217
- }
218
- this.getResultText(4)
219
- }
220
- },
221
- getResultText (tag) {
222
- const address = []
223
- let code = ''
224
- for (let i = 0; i < this.contexts; i++) {
225
- if (this.model[i].name && this.model[i].name !== '') {
226
- address.push(this.model[i].name)
227
- }
228
- code = this.model[i].code ?? ''
229
- }
230
- this.valueView = this.valueType === 'address' ? address.join('/') : code
231
- if (tag === this.contexts) {
232
- this.$refs.select.blur()
233
- this.$emit('onChange', this.valueType === 'address' ? address.join('') : code)
234
- }
235
- },
236
- // 失去焦点回调
237
- selectBlurHandle () {
238
- if (!this.model[this.contexts - 1].code || this.model[this.contexts - 1].code === '') {
239
- this.valueView = undefined
240
- }
241
- }
242
- }
243
- }
244
- </script>
1
+ <template>
2
+ <div>
3
+ <a-cascader
4
+ v-if="type === 'cascader'"
5
+ :options="tagData.divisionsForTree"
6
+ :placeholder="placeholder"
7
+ style="width: 100%;"
8
+ :size="size"
9
+ />
10
+ <a-select
11
+ ref="select"
12
+ :size="size"
13
+ :value="valueView"
14
+ style="width: 100%;"
15
+ :dropdownMatchSelectWidth="false"
16
+ :dropdownStyle="dropdownStyle"
17
+ :placeholder="placeholder"
18
+ @blur="selectBlurHandle"
19
+ :getPopupContainer=" triggerNode => { return triggerNode.parentNode } "
20
+ :style="inputStyle">
21
+ <div slot="dropdownRender" @mousedown.prevent>
22
+ <a-tabs v-model="activeKey" :size="size">
23
+ <a-tab-pane
24
+ :tab="view.key"
25
+ v-for="(view,index) in viewArr"
26
+ :key="view.key"
27
+ v-if="contexts > index"
28
+ :disabled="tagData[view.value].length === 0">
29
+
30
+ <a-checkable-tag
31
+ :style="tagStyle"
32
+ v-for="item of tagData[view.value]"
33
+ :key="item.code"
34
+ @change="tagClick(view.key,item)">
35
+ <a-tooltip
36
+ placement="top"
37
+ :mouseEnterDelay="0.5"
38
+ :title="item.name"
39
+ :getPopupContainer=" triggerNode => { return triggerNode.parentElement } "
40
+ >
41
+ {{ item.name.length > 8 ?`${item.name.slice(0, 8)}...`:item.name }}
42
+ </a-tooltip>
43
+ </a-checkable-tag>
44
+ </a-tab-pane>
45
+ </a-tabs>
46
+ </div>
47
+ </a-select>
48
+ </div>
49
+ </template>
50
+
51
+ <script>
52
+ const viewArr = [
53
+ {
54
+ key: '省/直辖市',
55
+ value: 'divisionsForTree',
56
+ }, {
57
+ key: '市',
58
+ value: 'cityData',
59
+ }, {
60
+ key: '区',
61
+ value: 'areaData',
62
+ }, {
63
+ key: '街道',
64
+ value: 'streetData',
65
+ }
66
+ ]
67
+ export default {
68
+ name: 'CitySelect',
69
+ data () {
70
+ return {
71
+ open: false,
72
+ tagData: {
73
+ divisionsForTree: this.$appdata.getDivisionsOhChinaForTree(),
74
+ // 市
75
+ cityData: [],
76
+ // 区
77
+ areaData: [],
78
+ // 街道
79
+ streetData: [],
80
+ },
81
+ // model: {
82
+ // provinceModel: { name: '', code: '' },
83
+ // cityModel: { name: '', code: '' },
84
+ // areaModel: { name: '', code: '' },
85
+ // streetModel: { name: '', code: '' }
86
+ // },
87
+ model: [
88
+ { name: '', code: '' },
89
+ { name: '', code: '' },
90
+ { name: '', code: '' },
91
+ { name: '', code: '' }
92
+ ],
93
+ // 控制标签
94
+ activeKey: '省/直辖市',
95
+ // 遍历以渲染页面
96
+ viewArr,
97
+ // 框内显示值 valueView
98
+ valueView: undefined
99
+ }
100
+ },
101
+ mounted () {
102
+
103
+ },
104
+ model: {
105
+ prop: 'value',
106
+ event: 'onChange'
107
+ },
108
+ computed: {},
109
+ props: {
110
+ // 页面渲染内容 默认 省市区街道 四个 所以是4
111
+ contexts: {
112
+ type: Number,
113
+ default: 3
114
+ },
115
+ placeholder: {
116
+ type: String,
117
+ default: '请选择省市区'
118
+ },
119
+ // small lage 输入框大小
120
+ size: {
121
+ type: String,
122
+ default: undefined
123
+ },
124
+ // 类型 simple / undefined
125
+ // simple 就是用的 cascader 不穿就是用的 自己封装的
126
+ type: {
127
+ type: String,
128
+ default: undefined
129
+ },
130
+ // 框的样式
131
+ inputStyle: {
132
+ type: Object,
133
+ default: () => {
134
+ }
135
+ },
136
+ // 下拉框的样式
137
+ dropdownStyle: {
138
+ type: Object,
139
+ default: () => {
140
+ return {
141
+ width: '35rem',
142
+ padding: '1%'
143
+ }
144
+ }
145
+ },
146
+ // 标签的样式
147
+ tagStyle: {
148
+ type: Object,
149
+ default: () => {
150
+ return {
151
+ fontSize: '0.88rem',
152
+ width: '23%',
153
+ textAlign: 'left',
154
+ margin: '0.5%',
155
+ cursor: 'pointer'
156
+ }
157
+ }
158
+ },
159
+ // 用于v-model 绑定
160
+ value: {
161
+ type: String,
162
+ default: undefined
163
+ },
164
+ // 用于v-model 绑定 code :最后一级的code address: 所有级拼接的地址
165
+ valueType: {
166
+ type: String,
167
+ default: 'address'
168
+ }
169
+ },
170
+ watch: {},
171
+ methods: {
172
+ tagClick (e, item) {
173
+ if (e === '省/直辖市') {
174
+ // 如果是同一个标签
175
+ if (this.model[0].name !== item.name) {
176
+ this.tagData.cityData = item.children
177
+ this.tagData.areaData = []
178
+ this.tagData.streetData = []
179
+ this.model[0].name = item.name
180
+ this.model[0].code = item.code
181
+ this.model[1] = { name: '', code: '' }
182
+ this.model[2] = { name: '', code: '' }
183
+ this.model[3] = { name: '', code: '' }
184
+ }
185
+ if (this.contexts !== 1) {
186
+ this.activeKey = '市'
187
+ }
188
+ this.getResultText(1)
189
+ } else if (e === '市') {
190
+ if (this.model[1].name !== item.name) {
191
+ this.tagData.areaData = item.children
192
+ this.tagData.streetData = []
193
+ this.model[1].name = item.name
194
+ this.model[1].code = item.code
195
+ this.model[2] = { name: '', code: '' }
196
+ this.model[3] = { name: '', code: '' }
197
+ }
198
+ if (this.contexts !== 2) {
199
+ this.activeKey = '区'
200
+ }
201
+ this.getResultText(2)
202
+ } else if (e === '区') {
203
+ if (this.model[2].name !== item.name) {
204
+ this.tagData.streetData = item.children
205
+ this.model[2].name = item.name
206
+ this.model[2].code = item.code
207
+ this.model[3] = { name: '', code: '' }
208
+ }
209
+ if (this.contexts !== 3) {
210
+ this.activeKey = '街道'
211
+ }
212
+ this.getResultText(3)
213
+ } else if (e === '街道') {
214
+ if (this.model[3].name !== item.name) {
215
+ this.model[3].name = item.name
216
+ this.model[3].code = item.code
217
+ }
218
+ this.getResultText(4)
219
+ }
220
+ },
221
+ getResultText (tag) {
222
+ const address = []
223
+ let code = ''
224
+ for (let i = 0; i < this.contexts; i++) {
225
+ if (this.model[i].name && this.model[i].name !== '') {
226
+ address.push(this.model[i].name)
227
+ }
228
+ code = this.model[i].code ?? ''
229
+ }
230
+ this.valueView = this.valueType === 'address' ? address.join('/') : code
231
+ if (tag === this.contexts) {
232
+ this.$refs.select.blur()
233
+ this.$emit('onChange', this.valueType === 'address' ? address.join('') : code)
234
+ }
235
+ },
236
+ // 失去焦点回调
237
+ selectBlurHandle () {
238
+ if (!this.model[this.contexts - 1].code || this.model[this.contexts - 1].code === '') {
239
+ this.valueView = undefined
240
+ }
241
+ }
242
+ }
243
+ }
244
+ </script>
@@ -1,3 +1,3 @@
1
- import CitySelect from './CitySelect'
2
-
3
- export default CitySelect
1
+ import CitySelect from './CitySelect'
2
+
3
+ export default CitySelect