vue2-client 1.2.49 → 1.2.52

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.
Files changed (62) hide show
  1. package/.env +15 -14
  2. package/.eslintrc.js +82 -82
  3. package/CHANGELOG.md +8 -0
  4. package/package.json +2 -1
  5. package/src/base-client/all.js +64 -61
  6. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -0
  7. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +36 -29
  8. package/src/base-client/components/common/CitySelect/CitySelect.vue +244 -0
  9. package/src/base-client/components/common/CitySelect/index.js +3 -0
  10. package/src/base-client/components/common/CitySelect/index.md +109 -0
  11. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +483 -1342
  12. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +770 -555
  13. package/src/base-client/components/common/Upload/Upload.vue +124 -124
  14. package/src/base-client/components/common/Upload/index.js +3 -3
  15. package/src/base-client/components/common/XAddForm/XAddForm.vue +38 -46
  16. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +316 -316
  17. package/src/base-client/components/common/XForm/XForm.vue +268 -275
  18. package/src/base-client/components/common/XForm/XFormItem.vue +348 -280
  19. package/src/base-client/components/common/XFormTable/XFormTable.vue +0 -2
  20. package/src/base-client/components/iot/CustomerDetailsView/index.md +1 -2
  21. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +1 -1
  22. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +2 -7
  23. package/src/base-client/components/iot/DeviceDetailsView/index.md +0 -2
  24. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  25. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsMain.vue +240 -196
  26. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +131 -131
  27. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +1 -5
  28. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +6 -14
  29. package/src/base-client/components/iot/InstructDetailsView/index.md +0 -2
  30. package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +6 -13
  31. package/src/base-client/components/iot/LogDetailsView/index.md +0 -2
  32. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +17 -24
  33. package/src/base-client/components/iot/MeterDetailsView/index.md +0 -2
  34. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +0 -5
  35. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +0 -5
  36. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +0 -6
  37. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +0 -6
  38. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +1 -6
  39. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +1 -6
  40. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +213 -288
  41. package/src/base-client/components/iot/WebmeterAnalysisView/index.md +0 -6
  42. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +853 -853
  43. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  44. package/src/base-client/plugins/AppData.js +16 -1
  45. package/src/base-client/plugins/compatible/LoginServiceOA.js +19 -0
  46. package/src/config/CreateQueryConfig.js +298 -80
  47. package/src/config/default/setting.config.js +2 -2
  48. package/src/layouts/header/HeaderNotice.vue +96 -96
  49. package/src/layouts/tabs/TabsView.vue +0 -3
  50. package/src/pages/login/Login.vue +53 -22
  51. package/src/pages/resourceManage/orgListManage.vue +40 -40
  52. package/src/pages/system/ticket/submitTicketSuccess.vue +268 -268
  53. package/src/router/async/config.async.js +26 -26
  54. package/src/router/index.js +27 -27
  55. package/src/services/api/manage.js +16 -14
  56. package/src/services/api/restTools.js +24 -24
  57. package/src/theme/default/style.less +47 -47
  58. package/src/utils/map-utils.js +22 -11
  59. package/src/utils/request.js +198 -198
  60. package/src/utils/routerUtil.js +1 -10
  61. package/src/utils/util.js +222 -176
  62. package/vue.config.js +2 -2
@@ -0,0 +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>
@@ -0,0 +1,3 @@
1
+ import CitySelect from './CitySelect'
2
+
3
+ export default CitySelect
@@ -0,0 +1,109 @@
1
+ # 省市区修改组件
2
+
3
+ > 下拉框数据从库里查询 divisions_of_china 表
4
+ > 省市区数据存储格式
5
+
6
+ +---------+-----+------------+--------+--------+----------+
7
+ |code |name |provinceCode|cityCode|areaCode|parentCode|
8
+ +---------+-----+------------+--------+--------+----------+
9
+ |11 |北京市 |NULL |NULL |NULL |NULL |
10
+ |1101 |市辖区 |11 |NULL |NULL |11 |
11
+ |110101 |东城区 |11 |1101 |NULL |1101 |
12
+ |110101001|东华门街道|11 |1101 |110101 |1101 |
13
+ |110101002|景山街道 |11 |1101 |110101 |1101 |
14
+ +---------+-----+------------+--------+--------+----------+
15
+
16
+
17
+ 查询出来之后转成tree 作为数据 (截取了一段数据)
18
+
19
+ ```json
20
+ [
21
+ {
22
+ "code": "11",
23
+ "name": "北京",
24
+ "label": "北京",
25
+ "value": "北京",
26
+ "children":
27
+ [
28
+ {
29
+ "code": "1101",
30
+ "parentcode": "11",
31
+ "name": "辖区",
32
+ "label": "辖区",
33
+ "value": "辖区",
34
+ "children":
35
+ [
36
+ {
37
+ "code": "110101",
38
+ "parentcode": "1101",
39
+ "name": "东城区",
40
+ "label": "东城区",
41
+ "value": "东城区"
42
+ }
43
+ ]}]}]
44
+ ```
45
+
46
+ 可传递参数
47
+ ```js
48
+ props = {
49
+ // 页面渲染内容 默认 省市区街道 四个 所以是4
50
+ contexts: {
51
+ type: Number,
52
+ default: 3
53
+ },
54
+ placeholder: {
55
+ type: String,
56
+ default: '请选择省市区'
57
+ },
58
+ // small lage 输入框大小
59
+ size: {
60
+ type: String,
61
+ default: undefined
62
+ },
63
+ // 类型 simple / undefined
64
+ // simple 就是用的 cascader 不穿就是用的 自己封装的
65
+ type: {
66
+ type: String,
67
+ default: undefined
68
+ },
69
+ // 框的样式
70
+ inputStyle: {
71
+ type: Object,
72
+ default: () => {
73
+ }
74
+ },
75
+ // 下拉框的样式
76
+ dropdownStyle: {
77
+ type: Object,
78
+ default: () => {
79
+ return {
80
+ width: '35rem',
81
+ padding: '1%'
82
+ }
83
+ }
84
+ },
85
+ // 标签的样式
86
+ tagStyle: {
87
+ type: Object,
88
+ default: () => {
89
+ return {
90
+ fontSize: '0.88rem',
91
+ width: '23%',
92
+ textAlign: 'left',
93
+ margin: '0.5%',
94
+ cursor: 'pointer'
95
+ }
96
+ }
97
+ },
98
+ // 用于v-model 绑定
99
+ value: {
100
+ type: String,
101
+ default: undefined
102
+ },
103
+ // 用于v-model 绑定 code :最后一级的code address: 所有级拼接的地址
104
+ valueType: {
105
+ type: String,
106
+ default: 'address'
107
+ }
108
+ }
109
+ ```