vue2-client 1.2.45 → 1.2.48

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 (61) hide show
  1. package/CHANGELOG.md +126 -114
  2. package/docs/notice.md +22 -22
  3. package/package.json +1 -1
  4. package/src/App.vue +13 -7
  5. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +1 -1
  6. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  7. package/src/base-client/components/common/XAddForm/XAddForm.vue +339 -339
  8. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +316 -316
  9. package/src/base-client/components/common/XForm/XForm.vue +275 -275
  10. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +225 -225
  11. package/src/base-client/components/iot/DataAnalysisView/DataAnalysisView.vue +244 -244
  12. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +452 -452
  13. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +330 -330
  14. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  15. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +121 -121
  16. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +131 -131
  17. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +276 -276
  18. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +469 -469
  19. package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +379 -379
  20. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +359 -359
  21. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +335 -335
  22. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +184 -184
  23. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +291 -291
  24. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +236 -236
  25. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +256 -256
  26. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +189 -189
  27. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +722 -722
  28. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +231 -231
  29. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +247 -247
  30. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +370 -370
  31. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
  32. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  33. package/src/base-client/plugins/AppData.js +17 -27
  34. package/src/base-client/plugins/GetLoginInfoService.js +252 -252
  35. package/src/components/exception/ExceptionPage.vue +70 -70
  36. package/src/components/setting/Setting.vue +235 -235
  37. package/src/config/default/setting.config.js +39 -39
  38. package/src/config/index.js +3 -3
  39. package/src/layouts/SinglePageView.vue +78 -78
  40. package/src/layouts/header/HeaderNotice.vue +0 -1
  41. package/src/pages/exception/403.vue +21 -21
  42. package/src/pages/exception/404.vue +21 -21
  43. package/src/pages/exception/500.vue +21 -21
  44. package/src/pages/report/ReportTableHome.vue +28 -28
  45. package/src/pages/resourceManage/depListManage.vue +23 -23
  46. package/src/pages/resourceManage/funListManage.vue +23 -23
  47. package/src/pages/resourceManage/index.js +15 -15
  48. package/src/pages/resourceManage/orgListManage.vue +98 -98
  49. package/src/pages/resourceManage/roleListManage.vue +23 -23
  50. package/src/pages/resourceManage/staffListManage.vue +23 -23
  51. package/src/pages/system/ticket/submitTicketSuccess.vue +248 -248
  52. package/src/router/async/config.async.js +26 -26
  53. package/src/router/index.js +27 -27
  54. package/src/services/api/common.js +47 -47
  55. package/src/services/api/index.js +39 -39
  56. package/src/services/user.js +34 -34
  57. package/src/theme/default/style.less +47 -47
  58. package/src/utils/indexedDB.js +146 -146
  59. package/src/utils/map-utils.js +17 -0
  60. package/src/utils/routerUtil.js +359 -359
  61. package/vue.config.js +143 -143
@@ -1,247 +1,247 @@
1
- <template>
2
- <div>
3
- <a-drawer
4
- title="查询配置详情"
5
- placement="right"
6
- :width="isMobile ? screenWidth : screenWidth * 0.85"
7
- :visible="visible"
8
- @close="onClose"
9
- >
10
- <create-query
11
- :to-edit-json="getColumnJson()"
12
- :visible.sync="createQueryVisible"
13
- @saveQueryParams="saveQueryParams"
14
- />
15
- <a-spin :spinning="loadDetails">
16
- <a-page-header :title="details.f_name+(details.f_remark ? '(' + details.f_remark + ')' : '')">
17
- <div class="row">
18
- <div class="content">
19
- <a-descriptions size="small" :column="isMobile ? 1 : 2">
20
- <a-descriptions-item label="所属模块">{{ details.f_module }}</a-descriptions-item>
21
- <a-descriptions-item label="创建人">{{ details.f_inputtor }}</a-descriptions-item>
22
- <a-descriptions-item label="创建时间">{{ details.f_input_date }}</a-descriptions-item>
23
- <a-descriptions-item label="描述">{{ details.f_remark }}</a-descriptions-item>
24
- </a-descriptions>
25
- </div>
26
- </div>
27
- <!-- actions -->
28
- <template v-slot:extra>
29
- <a-button-group style="margin-right: 4px;">
30
- <a-button type="dashed" @click="initView" :loading="loadDetails">刷新</a-button>
31
- </a-button-group>
32
- <a-button-group style="margin-right: 4px;">
33
- </a-button-group>
34
- </template>
35
- <template slot="footer">
36
- <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
37
- <template v-for="value in tabList">
38
- <a-tab-pane :key="value.key" :tab="value.tab"/>
39
- </template>
40
- </a-tabs>
41
- <div v-if="!loadDetails">
42
- <div v-if="tabActiveKey === '1'">
43
- <a-button type="primary" @click="toCreateQuery">
44
- <a-icon :style="iconStyle" type="api"/>编辑查询配置
45
- </a-button>
46
- <a-card title="查询配置预览" :bordered="true" size="small" style="margin-top: 20px;">
47
- <json-viewer :copyable="{copyText: '复制', copiedText: '已复制'}" :value="getColumnJson()" :expand-depth="parseInt('100')" style="overflow: auto;max-height: 440px"></json-viewer>
48
- </a-card>
49
- </div>
50
- </div>
51
- </template>
52
- </a-page-header>
53
- </a-spin>
54
- </a-drawer>
55
- </div>
56
- </template>
57
-
58
- <script>
59
- import JsonViewer from 'vue-json-viewer'
60
- import { mapState, mapGetters } from 'vuex'
61
- import { QueryParamsDetailsViewApi, post } from '@vue2-client/services/api'
62
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
63
-
64
- export default {
65
- name: 'DeviceTypeDetailsView',
66
- components: {
67
- JsonViewer,
68
- XFormTable
69
- },
70
- data () {
71
- return {
72
- // 页面宽度
73
- screenWidth: document.documentElement.clientWidth,
74
- // Tab页签
75
- tabActiveKey: '1',
76
- // 图标样式
77
- iconStyle: {
78
- position: 'relative',
79
- top: '1px'
80
- },
81
- // 是否显示生成查询配置抽屉
82
- createQueryVisible: false,
83
- // 设备类型详情
84
- details: {
85
- f_module: '',
86
- f_name: '',
87
- f_remark: '',
88
- f_content: '',
89
- f_input_date: '',
90
- f_inputtor: ''
91
- },
92
- tabList: [
93
- { key: '1', tab: '编辑查询配置' }
94
- ],
95
- // 详情加载
96
- loadDetails: false
97
- }
98
- },
99
- mounted () {
100
- this.initView()
101
- },
102
- computed: {
103
- ...mapGetters(['account/user']),
104
- ...mapState('account', { currUser: 'user' }),
105
- ...mapState('setting', ['isMobile'])
106
- },
107
- props: {
108
- id: {
109
- type: String,
110
- required: true
111
- },
112
- visible: {
113
- type: Boolean,
114
- default: false
115
- }
116
- },
117
- methods: {
118
- // 初始化组件
119
- initView () {
120
- this.tabActiveKey = '1'
121
- this.getDetails(this.id)
122
- },
123
- toCreateQuery () {
124
- this.createQueryVisible = true
125
- },
126
- getColumnJson () {
127
- if (this.details.f_content) {
128
- return JSON.parse(this.details.f_content)
129
- } else {
130
- return {}
131
- }
132
- },
133
- onClose () {
134
- this.$emit('update:visible', false)
135
- },
136
- // 获取详情信息
137
- getDetails (id) {
138
- this.loadDetails = true
139
- return post(QueryParamsDetailsViewApi.getQueryParamsDetails, {
140
- id: id
141
- }).then(res => {
142
- this.details = res
143
- this.loadDetails = false
144
- }, err => {
145
- this.loadDetails = false
146
- console.error(err)
147
- })
148
- },
149
- // 存储查询配置信息
150
- saveQueryParams (source) {
151
- return post('/webmeterapi/updateQueryParamsData', {
152
- id: this.id,
153
- source: source
154
- }).then(res => {
155
- this.$message.success('保存查询配置成功')
156
- this.getDetails(this.id)
157
- }, err => {
158
- console.error(err)
159
- })
160
- },
161
- // Tab切换
162
- handleTabChange (key) {
163
- this.tabActiveKey = key
164
- }
165
- },
166
- watch: {
167
- 'visible' (val) {
168
- if (val) {
169
- this.initView()
170
- }
171
- }
172
- }
173
- }
174
- </script>
175
-
176
- <style lang="less" scoped>
177
- .business {
178
- color: #ffffff;
179
- }
180
- .business:enabled:hover {
181
- background-color: #85CE61 !important;
182
- border-color: #85CE61 !important;
183
- }
184
- .business:enabled {
185
- background-color: #67c23a;
186
- border-color: #67c23a;
187
- }
188
- .business:disabled {
189
- color: rgba(0, 0, 0, 0.25);
190
- }
191
- .detail-layout {
192
- margin-left: 44px;
193
- }
194
- .text {
195
- color: rgba(0, 0, 0, .45);
196
- }
197
-
198
- .heading {
199
- color: rgba(0, 0, 0, .85);
200
- font-size: 20px;
201
- }
202
-
203
- .no-data {
204
- color: rgba(0, 0, 0, .25);
205
- text-align: center;
206
- line-height: 64px;
207
- font-size: 16px;
208
-
209
- i {
210
- font-size: 24px;
211
- margin-right: 16px;
212
- position: relative;
213
- top: 3px;
214
- }
215
- }
216
-
217
- .mobile {
218
- .detail-layout {
219
- margin-left: unset;
220
- }
221
- .text {
222
-
223
- }
224
- .status-list {
225
- text-align: left;
226
- }
227
- }
228
-
229
- .row {
230
- display: flex;
231
-
232
- .content {
233
- -webkit-box-flex: 1;
234
- flex: auto;
235
- -ms-flex: auto;
236
- }
237
-
238
- .extra {
239
- flex: 0 1 auto;
240
- -webkit-box-flex: 0;
241
- -ms-flex: 0 1 auto;
242
- min-width: 242px;
243
- margin-left: 88px;
244
- text-align: right;
245
- }
246
- }
247
- </style>
1
+ <template>
2
+ <div>
3
+ <a-drawer
4
+ title="查询配置详情"
5
+ placement="right"
6
+ :width="isMobile ? screenWidth : screenWidth * 0.85"
7
+ :visible="visible"
8
+ @close="onClose"
9
+ >
10
+ <create-query
11
+ :to-edit-json="getColumnJson()"
12
+ :visible.sync="createQueryVisible"
13
+ @saveQueryParams="saveQueryParams"
14
+ />
15
+ <a-spin :spinning="loadDetails">
16
+ <a-page-header :title="details.f_name+(details.f_remark ? '(' + details.f_remark + ')' : '')">
17
+ <div class="row">
18
+ <div class="content">
19
+ <a-descriptions size="small" :column="isMobile ? 1 : 2">
20
+ <a-descriptions-item label="所属模块">{{ details.f_module }}</a-descriptions-item>
21
+ <a-descriptions-item label="创建人">{{ details.f_inputtor }}</a-descriptions-item>
22
+ <a-descriptions-item label="创建时间">{{ details.f_input_date }}</a-descriptions-item>
23
+ <a-descriptions-item label="描述">{{ details.f_remark }}</a-descriptions-item>
24
+ </a-descriptions>
25
+ </div>
26
+ </div>
27
+ <!-- actions -->
28
+ <template v-slot:extra>
29
+ <a-button-group style="margin-right: 4px;">
30
+ <a-button type="dashed" @click="initView" :loading="loadDetails">刷新</a-button>
31
+ </a-button-group>
32
+ <a-button-group style="margin-right: 4px;">
33
+ </a-button-group>
34
+ </template>
35
+ <template slot="footer">
36
+ <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
37
+ <template v-for="value in tabList">
38
+ <a-tab-pane :key="value.key" :tab="value.tab"/>
39
+ </template>
40
+ </a-tabs>
41
+ <div v-if="!loadDetails">
42
+ <div v-if="tabActiveKey === '1'">
43
+ <a-button type="primary" @click="toCreateQuery">
44
+ <a-icon :style="iconStyle" type="api"/>编辑查询配置
45
+ </a-button>
46
+ <a-card title="查询配置预览" :bordered="true" size="small" style="margin-top: 20px;">
47
+ <json-viewer :copyable="{copyText: '复制', copiedText: '已复制'}" :value="getColumnJson()" :expand-depth="parseInt('100')" style="overflow: auto;max-height: 440px"></json-viewer>
48
+ </a-card>
49
+ </div>
50
+ </div>
51
+ </template>
52
+ </a-page-header>
53
+ </a-spin>
54
+ </a-drawer>
55
+ </div>
56
+ </template>
57
+
58
+ <script>
59
+ import JsonViewer from 'vue-json-viewer'
60
+ import { mapState, mapGetters } from 'vuex'
61
+ import { QueryParamsDetailsViewApi, post } from '@vue2-client/services/api'
62
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
63
+
64
+ export default {
65
+ name: 'DeviceTypeDetailsView',
66
+ components: {
67
+ JsonViewer,
68
+ XFormTable
69
+ },
70
+ data () {
71
+ return {
72
+ // 页面宽度
73
+ screenWidth: document.documentElement.clientWidth,
74
+ // Tab页签
75
+ tabActiveKey: '1',
76
+ // 图标样式
77
+ iconStyle: {
78
+ position: 'relative',
79
+ top: '1px'
80
+ },
81
+ // 是否显示生成查询配置抽屉
82
+ createQueryVisible: false,
83
+ // 设备类型详情
84
+ details: {
85
+ f_module: '',
86
+ f_name: '',
87
+ f_remark: '',
88
+ f_content: '',
89
+ f_input_date: '',
90
+ f_inputtor: ''
91
+ },
92
+ tabList: [
93
+ { key: '1', tab: '编辑查询配置' }
94
+ ],
95
+ // 详情加载
96
+ loadDetails: false
97
+ }
98
+ },
99
+ mounted () {
100
+ this.initView()
101
+ },
102
+ computed: {
103
+ ...mapGetters(['account/user']),
104
+ ...mapState('account', { currUser: 'user' }),
105
+ ...mapState('setting', ['isMobile'])
106
+ },
107
+ props: {
108
+ id: {
109
+ type: String,
110
+ required: true
111
+ },
112
+ visible: {
113
+ type: Boolean,
114
+ default: false
115
+ }
116
+ },
117
+ methods: {
118
+ // 初始化组件
119
+ initView () {
120
+ this.tabActiveKey = '1'
121
+ this.getDetails(this.id)
122
+ },
123
+ toCreateQuery () {
124
+ this.createQueryVisible = true
125
+ },
126
+ getColumnJson () {
127
+ if (this.details.f_content) {
128
+ return JSON.parse(this.details.f_content)
129
+ } else {
130
+ return {}
131
+ }
132
+ },
133
+ onClose () {
134
+ this.$emit('update:visible', false)
135
+ },
136
+ // 获取详情信息
137
+ getDetails (id) {
138
+ this.loadDetails = true
139
+ return post(QueryParamsDetailsViewApi.getQueryParamsDetails, {
140
+ id: id
141
+ }).then(res => {
142
+ this.details = res
143
+ this.loadDetails = false
144
+ }, err => {
145
+ this.loadDetails = false
146
+ console.error(err)
147
+ })
148
+ },
149
+ // 存储查询配置信息
150
+ saveQueryParams (source) {
151
+ return post('/webmeterapi/updateQueryParamsData', {
152
+ id: this.id,
153
+ source: source
154
+ }).then(res => {
155
+ this.$message.success('保存查询配置成功')
156
+ this.getDetails(this.id)
157
+ }, err => {
158
+ console.error(err)
159
+ })
160
+ },
161
+ // Tab切换
162
+ handleTabChange (key) {
163
+ this.tabActiveKey = key
164
+ }
165
+ },
166
+ watch: {
167
+ 'visible' (val) {
168
+ if (val) {
169
+ this.initView()
170
+ }
171
+ }
172
+ }
173
+ }
174
+ </script>
175
+
176
+ <style lang="less" scoped>
177
+ .business {
178
+ color: #ffffff;
179
+ }
180
+ .business:enabled:hover {
181
+ background-color: #85CE61 !important;
182
+ border-color: #85CE61 !important;
183
+ }
184
+ .business:enabled {
185
+ background-color: #67c23a;
186
+ border-color: #67c23a;
187
+ }
188
+ .business:disabled {
189
+ color: rgba(0, 0, 0, 0.25);
190
+ }
191
+ .detail-layout {
192
+ margin-left: 44px;
193
+ }
194
+ .text {
195
+ color: rgba(0, 0, 0, .45);
196
+ }
197
+
198
+ .heading {
199
+ color: rgba(0, 0, 0, .85);
200
+ font-size: 20px;
201
+ }
202
+
203
+ .no-data {
204
+ color: rgba(0, 0, 0, .25);
205
+ text-align: center;
206
+ line-height: 64px;
207
+ font-size: 16px;
208
+
209
+ i {
210
+ font-size: 24px;
211
+ margin-right: 16px;
212
+ position: relative;
213
+ top: 3px;
214
+ }
215
+ }
216
+
217
+ .mobile {
218
+ .detail-layout {
219
+ margin-left: unset;
220
+ }
221
+ .text {
222
+
223
+ }
224
+ .status-list {
225
+ text-align: left;
226
+ }
227
+ }
228
+
229
+ .row {
230
+ display: flex;
231
+
232
+ .content {
233
+ -webkit-box-flex: 1;
234
+ flex: auto;
235
+ -ms-flex: auto;
236
+ }
237
+
238
+ .extra {
239
+ flex: 0 1 auto;
240
+ -webkit-box-flex: 0;
241
+ -ms-flex: 0 1 auto;
242
+ min-width: 242px;
243
+ margin-left: 88px;
244
+ text-align: right;
245
+ }
246
+ }
247
+ </style>