vue2-client 1.2.51 → 1.2.54

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 (35) hide show
  1. package/.env +15 -14
  2. package/.eslintrc.js +82 -82
  3. package/CHANGELOG.md +5 -0
  4. package/package.json +1 -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/AddressSearchCombobox/index.js +3 -0
  8. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +111 -107
  9. package/src/base-client/components/common/CitySelect/CitySelect.vue +244 -0
  10. package/src/base-client/components/common/CitySelect/index.js +3 -0
  11. package/src/base-client/components/common/CitySelect/index.md +109 -0
  12. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +483 -1342
  13. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +770 -555
  14. package/src/base-client/components/common/Upload/Upload.vue +124 -124
  15. package/src/base-client/components/common/Upload/index.js +3 -3
  16. package/src/base-client/components/common/XAddForm/XAddForm.vue +38 -46
  17. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +316 -316
  18. package/src/base-client/components/common/XForm/XForm.vue +268 -275
  19. package/src/base-client/components/common/XForm/XFormItem.vue +348 -285
  20. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  21. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +131 -131
  22. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +205 -205
  23. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  24. package/src/base-client/plugins/AppData.js +72 -57
  25. package/src/config/CreateQueryConfig.js +298 -80
  26. package/src/pages/resourceManage/orgListManage.vue +40 -40
  27. package/src/router/async/config.async.js +26 -26
  28. package/src/router/index.js +27 -27
  29. package/src/services/api/manage.js +16 -14
  30. package/src/services/api/restTools.js +24 -24
  31. package/src/theme/default/style.less +47 -47
  32. package/src/utils/map-utils.js +28 -29
  33. package/src/utils/request.js +198 -198
  34. package/src/utils/util.js +222 -176
  35. package/vue.config.js +2 -2
@@ -1,124 +1,124 @@
1
- <template>
2
- <div>
3
- <a-upload-dragger
4
- v-if="model.type === 'file'"
5
- name="file"
6
- :multiple="true"
7
- :remove="deleteFileItem"
8
- :customRequest="uploadFiles"
9
- :file-list="uploadedFileList">
10
- <p class="ant-upload-drag-icon">
11
- <a-icon type="inbox"/>
12
- </p>
13
- <p class="ant-upload-text">
14
- 点击或拖动文件到该区域上传
15
- </p>
16
- <p class="ant-upload-hint">
17
- 支持单个或多个文件
18
- </p>
19
- </a-upload-dragger>
20
- <a-upload
21
- v-if=" model.type === 'image'"
22
- list-type="picture-card"
23
- :customRequest="uploadFiles"
24
- :remove="deleteFileItem"
25
- :file-list="uploadedFileList">
26
- <a-icon type="plus"/>
27
- <div class="ant-upload-text">
28
- Upload
29
- </div>
30
- </a-upload>
31
- </div>
32
- </template>
33
-
34
- <script>
35
-
36
- import { post } from '@vue2-client/services/api'
37
- import { mapState } from 'vuex'
38
-
39
- export default {
40
- name: 'uploads',
41
- data () {
42
- return {
43
- uploadedFileList: [],
44
- }
45
- },
46
- props: {
47
- // 表单属性
48
- model: {
49
- type: Object,
50
- default: () => {
51
- return {}
52
- }
53
- }
54
- },
55
- computed: {
56
- ...mapState('account', { currUser: 'user' })
57
- },
58
- methods: {
59
- uploadFiles (info) {
60
- // 初始化文件信息
61
- const fileInfo = {
62
- uid: info.file.uid,
63
- name: info.file.name,
64
- status: 'uploading',
65
- response: '',
66
- url: '',
67
- }
68
- // 放入上传列表中,以便于显示上传进度
69
- this.uploadedFileList.push(fileInfo)
70
- // 组装上传数据
71
- const headers = {
72
- 'Content-Type': 'multipart/form-data',
73
- }
74
- const formData = new FormData()
75
- formData.append('avatar', info.file)
76
- formData.append('resUploadMode', this.model.resUploadMode)
77
- if (this.model.pathKey) {
78
- formData.append('pathKey', this.model.pathKey)
79
- }
80
- formData.append('stockAlias', this.model.stockAlias)
81
- formData.append('resUploadStock', this.model.resUploadStock)
82
- formData.append('filename', info.file.name)
83
- formData.append('filesize', (info.file.size / 1024 / 1024).toFixed(4))
84
- formData.append('f_operator', this.currUser.username)
85
-
86
- let url = '/webmeteruploadapi/upload'
87
- if (process.env.NODE_ENV === 'production') {
88
- url = `/${this.model.stockAlias}/webmeteruploadapi/upload`
89
- }
90
- post(url, formData, { headers }).then(res => {
91
- // 根据服务端返回的结果判断成功与否,设置文件条目的状态
92
- if (res.success) {
93
- fileInfo.status = 'done'
94
- fileInfo.response = JSON.parse(res.data)
95
- fileInfo.id = JSON.parse(res.data).id
96
- fileInfo.url = JSON.parse(res.data).f_downloadpath
97
- this.$emit('setFiles', this.uploadedFileList.filter(item => item.status === 'done').map(item => item.id))
98
- this.$message.success('上传成功!')
99
- } else {
100
- fileInfo.status = 'error'
101
- fileInfo.response = res.data
102
- this.$message.error('上传失败!')
103
- }
104
- }).catch((e) => {
105
- fileInfo.status = 'error'
106
- fileInfo.response = e
107
- this.$message.error(`请求失败!${e}`)
108
- })
109
- },
110
- // 删除文件
111
- deleteFileItem (file) {
112
- // 找到当前文件所在列表的索引
113
- const index = this.uploadedFileList.indexOf(file)
114
- // 从列表中移除该文件
115
- this.uploadedFileList.splice(index, 1)
116
- this.$emit('setFiles', this.uploadedFileList.filter(item => item.status === 'done').map(item => item.id))
117
- return true
118
- }
119
- }
120
- }
121
- </script>
122
- <style lang="less" scoped>
123
-
124
- </style>
1
+ <template>
2
+ <div>
3
+ <a-upload-dragger
4
+ v-if="model.type === 'file'"
5
+ name="file"
6
+ :multiple="true"
7
+ :remove="deleteFileItem"
8
+ :customRequest="uploadFiles"
9
+ :file-list="uploadedFileList">
10
+ <p class="ant-upload-drag-icon">
11
+ <a-icon type="inbox"/>
12
+ </p>
13
+ <p class="ant-upload-text">
14
+ 点击或拖动文件到该区域上传
15
+ </p>
16
+ <p class="ant-upload-hint">
17
+ 支持单个或多个文件
18
+ </p>
19
+ </a-upload-dragger>
20
+ <a-upload
21
+ v-if=" model.type === 'image'"
22
+ list-type="picture-card"
23
+ :customRequest="uploadFiles"
24
+ :remove="deleteFileItem"
25
+ :file-list="uploadedFileList">
26
+ <a-icon type="plus"/>
27
+ <div class="ant-upload-text">
28
+ Upload
29
+ </div>
30
+ </a-upload>
31
+ </div>
32
+ </template>
33
+
34
+ <script>
35
+
36
+ import { post } from '@vue2-client/services/api'
37
+ import { mapState } from 'vuex'
38
+
39
+ export default {
40
+ name: 'uploads',
41
+ data () {
42
+ return {
43
+ uploadedFileList: [],
44
+ }
45
+ },
46
+ props: {
47
+ // 表单属性
48
+ model: {
49
+ type: Object,
50
+ default: () => {
51
+ return {}
52
+ }
53
+ }
54
+ },
55
+ computed: {
56
+ ...mapState('account', { currUser: 'user' })
57
+ },
58
+ methods: {
59
+ uploadFiles (info) {
60
+ // 初始化文件信息
61
+ const fileInfo = {
62
+ uid: info.file.uid,
63
+ name: info.file.name,
64
+ status: 'uploading',
65
+ response: '',
66
+ url: '',
67
+ }
68
+ // 放入上传列表中,以便于显示上传进度
69
+ this.uploadedFileList.push(fileInfo)
70
+ // 组装上传数据
71
+ const headers = {
72
+ 'Content-Type': 'multipart/form-data',
73
+ }
74
+ const formData = new FormData()
75
+ formData.append('avatar', info.file)
76
+ formData.append('resUploadMode', this.model.resUploadMode)
77
+ if (this.model.pathKey) {
78
+ formData.append('pathKey', this.model.pathKey)
79
+ }
80
+ formData.append('stockAlias', this.model.stockAlias)
81
+ formData.append('resUploadStock', this.model.resUploadStock)
82
+ formData.append('filename', info.file.name)
83
+ formData.append('filesize', (info.file.size / 1024 / 1024).toFixed(4))
84
+ formData.append('f_operator', this.currUser.username)
85
+
86
+ let url = '/webmeteruploadapi/upload'
87
+ if (process.env.NODE_ENV === 'production') {
88
+ url = `/${this.model.stockAlias}/webmeteruploadapi/upload`
89
+ }
90
+ post(url, formData, { headers }).then(res => {
91
+ // 根据服务端返回的结果判断成功与否,设置文件条目的状态
92
+ if (res.success) {
93
+ fileInfo.status = 'done'
94
+ fileInfo.response = JSON.parse(res.data)
95
+ fileInfo.id = JSON.parse(res.data).id
96
+ fileInfo.url = JSON.parse(res.data).f_downloadpath
97
+ this.$emit('setFiles', this.uploadedFileList.filter(item => item.status === 'done').map(item => item.id))
98
+ this.$message.success('上传成功!')
99
+ } else {
100
+ fileInfo.status = 'error'
101
+ fileInfo.response = res.data
102
+ this.$message.error('上传失败!')
103
+ }
104
+ }).catch((e) => {
105
+ fileInfo.status = 'error'
106
+ fileInfo.response = e
107
+ this.$message.error(`请求失败!${e}`)
108
+ })
109
+ },
110
+ // 删除文件
111
+ deleteFileItem (file) {
112
+ // 找到当前文件所在列表的索引
113
+ const index = this.uploadedFileList.indexOf(file)
114
+ // 从列表中移除该文件
115
+ this.uploadedFileList.splice(index, 1)
116
+ this.$emit('setFiles', this.uploadedFileList.filter(item => item.status === 'done').map(item => item.id))
117
+ return true
118
+ }
119
+ }
120
+ }
121
+ </script>
122
+ <style lang="less" scoped>
123
+
124
+ </style>
@@ -1,3 +1,3 @@
1
- import Upload from './Upload'
2
-
3
- export default Upload
1
+ import Upload from './Upload'
2
+
3
+ export default Upload
@@ -25,20 +25,9 @@
25
25
  :disabled="itemDisabled(item)"
26
26
  :xl="12"
27
27
  :xxl="8"
28
+ :selectsArray="SelectsArray"
29
+ @selectsItemCheck="selectsItemCheck"
28
30
  />
29
- <div v-for="group in realJsonSelectsData" :key="group[0].group">
30
- <x-form-col v-for="groupItem in group" :key="groupItem.group + groupItem.groupIndex" :xl="12" :xxl="8">
31
- <a-form-model-item :label="groupItem.name" :disabled="itemDisabled(groupItem)">
32
- <a-select v-model="form[groupItem.model]" :disabled="itemDisabledPlus(groupItem.group,groupItem.groupIndex)" :allowClear="true" @change="selectsItemCheck(groupItem.group,groupItem.groupIndex,form[groupItem.model],group)" placeholder="请选择">
33
- <template v-for="option in SelectsArray[groupItem.group][groupItem.groupIndex]">
34
- <a-select-option :key="option.label" :value="option.value">
35
- {{ option.label }}
36
- </a-select-option>
37
- </template>
38
- </a-select>
39
- </a-form-model-item>
40
- </x-form-col>
41
- </div>
42
31
  </a-row>
43
32
  </a-form-model>
44
33
  </div>
@@ -62,7 +51,7 @@ export default {
62
51
  // 表单Model
63
52
  form: undefined,
64
53
  // 多层下拉框组 数据储存
65
- SelectsArray: {},
54
+ SelectsArray: { },
66
55
  // 多层下拉框组 各组数量
67
56
  SelectsNumber: {},
68
57
  // 校验
@@ -78,35 +67,7 @@ export default {
78
67
  // 过滤出用于新增/修改场景的表单项
79
68
  realJsonData: function () {
80
69
  return this.jsonData.filter(function (item) {
81
- return item.addOrEdit && item.addOrEdit !== 'no' &&
82
- item.addOrEdit !== 'silenceAdd' && !item.group && item.addOrEdit !== 'version'
83
- })
84
- },
85
- // 过滤出多个下拉框分组级联得数据
86
- realJsonSelectsData: function () {
87
- const Selectsata = this.jsonData.filter(item => !item.isOnlyAddOrEdit && item.group)
88
- const groupName = [...new Set(Selectsata.map(item => item.group))]
89
- // 初始化数据组
90
- groupName.forEach(item => {
91
- this.SelectsArray[item] = []
92
- })
93
- return groupName.map(groupName => {
94
- const SelectsItem = Selectsata.filter(item => {
95
- if (item.groupIndex === 1) {
96
- if (item.keyName.substring(0, 6) === 'logic@') {
97
- // 请求logic
98
- post('/webmeterapi/' + item.keyName.substring(6), {}).then(res => {
99
- this.SelectsArray[item.group][item.groupIndex] = res
100
- })
101
- } else {
102
- this.SelectsArray[item.group][item.groupIndex] = JSON.parse(item.keyName)
103
- }
104
- }
105
- return item.group === groupName
106
- }
107
- )
108
- this.SelectsNumber[groupName] = SelectsItem.length ? SelectsItem.length : 0
109
- return SelectsItem
70
+ return item.addOrEdit && item.addOrEdit !== 'no' && item.addOrEdit !== 'silenceAdd' && item.addOrEdit !== 'version'
110
71
  })
111
72
  },
112
73
  // 过滤出用于静默新增场景的表单项
@@ -173,15 +134,46 @@ export default {
173
134
  visible (rel) {
174
135
  if (rel) {
175
136
  this.formItemLoad()
137
+ this.getSelectsArray()
176
138
  }
177
139
  }
178
140
  },
179
- mounted () {
141
+ created () {
180
142
  this.formItemLoad()
143
+ this.getSelectsArray()
181
144
  },
182
145
  methods: {
183
- selectsItemCheck (groupName, index, value, group) {
146
+ // 初始化级联框数据
147
+ getSelectsArray () {
148
+ const selectSate = this.jsonData.filter(item => !item.isOnlyAddOrEdit && item.group)
149
+ const groupName = [...new Set(selectSate.map(item => item.group))]
150
+ // 初始化数据组
151
+ groupName.forEach(groupName => {
152
+ this.SelectsArray[groupName] = []
153
+ const SelectsItem = selectSate.filter(item => {
154
+ if (item.groupIndex === 1) {
155
+ if (item.keyName.substring(0, 6) === 'logic@') {
156
+ // 请求logic
157
+ post('/webmeterapi/' + item.keyName.substring(6), {}).then(res => {
158
+ this.SelectsArray[item.group][item.groupIndex] = res
159
+ this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
160
+ })
161
+ } else {
162
+ this.SelectsArray[item.group][item.groupIndex] = JSON.parse(item.keyName)
163
+ this.SelectsArray = JSON.parse(JSON.stringify(this.SelectsArray))
164
+ }
165
+ }
166
+ return item.group === groupName
167
+ }
168
+ )
169
+ this.SelectsNumber[groupName] = SelectsItem.length ? SelectsItem.length : 0
170
+ }
171
+ )
172
+ this.loaded = true
173
+ },
174
+ selectsItemCheck (callback, groupName, index, value) {
184
175
  const tem = { }
176
+ const group = this.realJsonData.filter(item => item.addOrEdit && item.group && item.group === groupName)
185
177
  // 获取当前下拉框子下拉框的数据
186
178
  this.SelectsArray[groupName][index + 1] = this.SelectsArray[groupName][index].filter(item => item.value === value)[0].children
187
179
  // 清空子下拉框的子们的数据
@@ -193,6 +185,7 @@ export default {
193
185
  for (let i = index + 2; i <= this.SelectsNumber[groupName]; i++) {
194
186
  this.SelectsArray[groupName][i] = []
195
187
  }
188
+ callback(this.SelectsArray)
196
189
  },
197
190
  formItemLoad () {
198
191
  const formData = Object.assign({}, this.fixedAddForm)
@@ -262,7 +255,6 @@ export default {
262
255
  if (Object.keys(this.modifyModelData).length > 0) {
263
256
  this.getModifyModelData()
264
257
  }
265
- this.loaded = true
266
258
  },
267
259
  itemDisabled (value) {
268
260
  return (this.businessType === '新增' && value.addOrEdit === 'edit') ||