vue2-client 1.2.46 → 1.2.47

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 (55) hide show
  1. package/docs/notice.md +22 -22
  2. package/package.json +1 -1
  3. package/src/App.vue +99 -99
  4. package/src/base-client/all.js +61 -61
  5. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +104 -104
  6. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  7. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  8. package/src/base-client/components/common/ScrollList/SrcollList.vue +113 -113
  9. package/src/base-client/components/common/ScrollList/index.js +3 -3
  10. package/src/base-client/components/common/XForm/XForm.vue +275 -275
  11. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +225 -225
  12. package/src/base-client/components/iot/DataAnalysisView/DataAnalysisView.vue +244 -244
  13. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +452 -452
  14. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +236 -236
  15. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +330 -330
  16. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +121 -121
  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/plugins/AppData.js +67 -67
  33. package/src/base-client/plugins/GetLoginInfoService.js +252 -252
  34. package/src/components/exception/ExceptionPage.vue +70 -70
  35. package/src/components/setting/Setting.vue +235 -235
  36. package/src/config/index.js +3 -3
  37. package/src/layouts/SinglePageView.vue +78 -78
  38. package/src/layouts/header/HeaderNotice.vue +97 -97
  39. package/src/pages/exception/403.vue +21 -21
  40. package/src/pages/exception/404.vue +21 -21
  41. package/src/pages/exception/500.vue +21 -21
  42. package/src/pages/report/ReportTableHome.vue +28 -28
  43. package/src/pages/resourceManage/depListManage.vue +23 -23
  44. package/src/pages/resourceManage/funListManage.vue +23 -23
  45. package/src/pages/resourceManage/index.js +15 -15
  46. package/src/pages/resourceManage/orgListManage.vue +98 -98
  47. package/src/pages/resourceManage/roleListManage.vue +23 -23
  48. package/src/pages/resourceManage/staffListManage.vue +23 -23
  49. package/src/pages/system/ticket/submitTicketSuccess.vue +248 -248
  50. package/src/services/api/common.js +47 -47
  51. package/src/services/api/index.js +39 -39
  52. package/src/services/user.js +34 -34
  53. package/src/utils/indexedDB.js +146 -146
  54. package/src/utils/map-utils.js +17 -0
  55. package/src/utils/routerUtil.js +359 -359
@@ -1,236 +1,236 @@
1
- <template>
2
- <a-drawer
3
- title="设备详情"
4
- placement="right"
5
- :width="isMobile ? screenWidth : screenWidth * 0.85"
6
- :visible="visible"
7
- @close="onClose"
8
- >
9
- <a-spin :spinning="loadDeviceDetails">
10
- <a-page-header :title="'设备号:' + details.f_device_no">
11
- <div class="row">
12
- <div class="content">
13
- <a-descriptions size="small" :column="isMobile ? 1 : 2">
14
- <a-descriptions-item label="设备IOT标识">{{ details.deviceid }}</a-descriptions-item>
15
- <<a-descriptions-item/>
16
- <a-descriptions-item label="创建时间">{{ details.f_input_date }}</a-descriptions-item>
17
- <a-descriptions-item label="创建人">{{ details.f_inputtor }}</a-descriptions-item>
18
- </a-descriptions>
19
- </div>
20
- <div class="extra">
21
- <a-row class="status-list">
22
- <a-col :xs="12" :sm="24">
23
- <div class="text">设备状态</div>
24
- <div class="heading">
25
- <x-badge badge-key="deviceStateMap" :value="details.f_state" :is-external-text="true"/>
26
- </div>
27
- </a-col>
28
- </a-row>
29
- <p></p>
30
- </div>
31
- </div>
32
- <!-- actions -->
33
- <template v-slot:extra>
34
- <a-button-group style="margin-right: 4px;">
35
- <a-button type="dashed" @click="initView" :loading="loadDeviceDetails">刷新</a-button>
36
- </a-button-group>
37
- <a-button-group style="margin-right: 4px;">
38
- </a-button-group>
39
- </template>
40
- <template slot="footer">
41
- <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
42
- <template v-for="value in tabList">
43
- <a-tab-pane :key="value.key" :tab="value.tab"/>
44
- </template>
45
- </a-tabs>
46
- <div v-if="!loadDeviceDetails">
47
- <device-details-main :details="details" v-if="tabActiveKey === '1'"/>
48
- <device-details-read :device-id="details.id" v-if="tabActiveKey === '2'"/>
49
- <device-details-instruct :device-no="details.f_device_no" v-if="tabActiveKey === '3'"/>
50
- <device-details-singular :device-id="details.id" v-if="tabActiveKey === '4'"/>
51
- <device-details-instruct-operate :device="details" v-if="tabActiveKey === '5'"/>
52
- <AmapPointRendering :markers="details" :describeList="describeList" v-if="tabActiveKey === '6'"/>
53
- </div>
54
- </template>
55
- </a-page-header>
56
- </a-spin>
57
- </a-drawer>
58
- </template>
59
-
60
- <script>
61
- import { DeviceDetailsMain, DeviceDetailsCount, DeviceDetailsInstruct, DeviceDetailsRead, DeviceDetailsSingular, DeviceDetailsInstructOperate } from '@vue2-client/base-client/components/iot/DeviceDetailsView/part'
62
- import { DeviceDetailsViewApi, post } from '@vue2-client/services/api'
63
- import { mapState } from 'vuex'
64
-
65
- export default {
66
- name: 'DeviceDetailsView',
67
- components: {
68
- DeviceDetailsMain,
69
- DeviceDetailsCount,
70
- DeviceDetailsInstruct,
71
- DeviceDetailsRead,
72
- DeviceDetailsSingular,
73
- DeviceDetailsInstructOperate
74
- },
75
- data () {
76
- return {
77
- // 页面宽度
78
- screenWidth: document.documentElement.clientWidth,
79
- // Tab页签
80
- tabActiveKey: '1',
81
- // 设备详情
82
- details: {
83
- f_device_no: '',
84
- f_imei: '',
85
- f_imsi: '',
86
- f_state: '正常',
87
- f_device_id: '',
88
- f_manufactor: '',
89
- f_brand: '',
90
- f_alias: '',
91
- f_model: '',
92
- f_input_date: '',
93
- f_inputtor: ''
94
- },
95
- tabList: [
96
- { key: '1', tab: '基本' },
97
- { key: '2', tab: '抄表' },
98
- { key: '3', tab: '指令' },
99
- { key: '4', tab: '异常' },
100
- { key: '5', tab: '指令操作' },
101
- { key: '6', tab: '设备位置' }
102
- ],
103
- // 设备详情加载
104
- loadDeviceDetails: true,
105
- describeList: [
106
- { describe: '设备号', field: 'f_device_no' },
107
- { describe: '设备型号', field: 'f_brand' }
108
- ]
109
- }
110
- },
111
- mounted () {
112
- this.initView()
113
- },
114
- computed: {
115
- ...mapState('account', { currUser: 'user' }),
116
- ...mapState('setting', ['isMobile'])
117
- },
118
- props: {
119
- deviceNo: {
120
- type: String,
121
- required: true
122
- },
123
- visible: {
124
- type: Boolean,
125
- default: false
126
- }
127
- },
128
- methods: {
129
- // 初始化组件
130
- initView () {
131
- this.tabActiveKey = '1'
132
- this.getIotDevice(this.deviceNo)
133
- },
134
- onClose () {
135
- this.$emit('update:visible', false)
136
- },
137
- // 获取设备详情信息
138
- getIotDevice (deviceNo) {
139
- this.loadDeviceDetails = true
140
- return post(DeviceDetailsViewApi.getDeviceDetails, {
141
- id: deviceNo
142
- }).then(res => {
143
- this.details = res
144
- this.loadDeviceDetails = false
145
- }, err => {
146
- this.loadDeviceDetails = false
147
- console.error(err)
148
- })
149
- },
150
- // Tab切换
151
- handleTabChange (key) {
152
- this.tabActiveKey = key
153
- }
154
- },
155
- watch: {
156
- 'visible' (val) {
157
- if (val) {
158
- this.initView()
159
- }
160
- }
161
- }
162
- }
163
- </script>
164
-
165
- <style lang="less" scoped>
166
- .business {
167
- color: #ffffff;
168
- }
169
- .business:enabled:hover {
170
- background-color: #85CE61 !important;
171
- border-color: #85CE61 !important;
172
- }
173
- .business:enabled {
174
- background-color: #67c23a;
175
- border-color: #67c23a;
176
- }
177
- .business:disabled {
178
- color: rgba(0, 0, 0, 0.25);
179
- }
180
- .detail-layout {
181
- margin-left: 44px;
182
- }
183
- .text {
184
- color: rgba(0, 0, 0, .45);
185
- }
186
-
187
- .heading {
188
- color: rgba(0, 0, 0, .85);
189
- font-size: 20px;
190
- }
191
-
192
- .no-data {
193
- color: rgba(0, 0, 0, .25);
194
- text-align: center;
195
- line-height: 64px;
196
- font-size: 16px;
197
-
198
- i {
199
- font-size: 24px;
200
- margin-right: 16px;
201
- position: relative;
202
- top: 3px;
203
- }
204
- }
205
-
206
- .mobile {
207
- .detail-layout {
208
- margin-left: unset;
209
- }
210
- .text {
211
-
212
- }
213
- .status-list {
214
- text-align: left;
215
- }
216
- }
217
-
218
- .row {
219
- display: flex;
220
-
221
- .content {
222
- -webkit-box-flex: 1;
223
- flex: auto;
224
- -ms-flex: auto;
225
- }
226
-
227
- .extra {
228
- flex: 0 1 auto;
229
- -webkit-box-flex: 0;
230
- -ms-flex: 0 1 auto;
231
- min-width: 242px;
232
- margin-left: 88px;
233
- text-align: right;
234
- }
235
- }
236
- </style>
1
+ <template>
2
+ <a-drawer
3
+ title="设备详情"
4
+ placement="right"
5
+ :width="isMobile ? screenWidth : screenWidth * 0.85"
6
+ :visible="visible"
7
+ @close="onClose"
8
+ >
9
+ <a-spin :spinning="loadDeviceDetails">
10
+ <a-page-header :title="'设备号:' + details.f_device_no">
11
+ <div class="row">
12
+ <div class="content">
13
+ <a-descriptions size="small" :column="isMobile ? 1 : 2">
14
+ <a-descriptions-item label="设备IOT标识">{{ details.deviceid }}</a-descriptions-item>
15
+ <<a-descriptions-item/>
16
+ <a-descriptions-item label="创建时间">{{ details.f_input_date }}</a-descriptions-item>
17
+ <a-descriptions-item label="创建人">{{ details.f_inputtor }}</a-descriptions-item>
18
+ </a-descriptions>
19
+ </div>
20
+ <div class="extra">
21
+ <a-row class="status-list">
22
+ <a-col :xs="12" :sm="24">
23
+ <div class="text">设备状态</div>
24
+ <div class="heading">
25
+ <x-badge badge-key="deviceStateMap" :value="details.f_state" :is-external-text="true"/>
26
+ </div>
27
+ </a-col>
28
+ </a-row>
29
+ <p></p>
30
+ </div>
31
+ </div>
32
+ <!-- actions -->
33
+ <template v-slot:extra>
34
+ <a-button-group style="margin-right: 4px;">
35
+ <a-button type="dashed" @click="initView" :loading="loadDeviceDetails">刷新</a-button>
36
+ </a-button-group>
37
+ <a-button-group style="margin-right: 4px;">
38
+ </a-button-group>
39
+ </template>
40
+ <template slot="footer">
41
+ <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
42
+ <template v-for="value in tabList">
43
+ <a-tab-pane :key="value.key" :tab="value.tab"/>
44
+ </template>
45
+ </a-tabs>
46
+ <div v-if="!loadDeviceDetails">
47
+ <device-details-main :details="details" v-if="tabActiveKey === '1'"/>
48
+ <device-details-read :device-id="details.id" v-if="tabActiveKey === '2'"/>
49
+ <device-details-instruct :device-no="details.f_device_no" v-if="tabActiveKey === '3'"/>
50
+ <device-details-singular :device-id="details.id" v-if="tabActiveKey === '4'"/>
51
+ <device-details-instruct-operate :device="details" v-if="tabActiveKey === '5'"/>
52
+ <AmapPointRendering :markers="details" :describeList="describeList" v-if="tabActiveKey === '6'"/>
53
+ </div>
54
+ </template>
55
+ </a-page-header>
56
+ </a-spin>
57
+ </a-drawer>
58
+ </template>
59
+
60
+ <script>
61
+ import { DeviceDetailsMain, DeviceDetailsCount, DeviceDetailsInstruct, DeviceDetailsRead, DeviceDetailsSingular, DeviceDetailsInstructOperate } from '@vue2-client/base-client/components/iot/DeviceDetailsView/part'
62
+ import { DeviceDetailsViewApi, post } from '@vue2-client/services/api'
63
+ import { mapState } from 'vuex'
64
+
65
+ export default {
66
+ name: 'DeviceDetailsView',
67
+ components: {
68
+ DeviceDetailsMain,
69
+ DeviceDetailsCount,
70
+ DeviceDetailsInstruct,
71
+ DeviceDetailsRead,
72
+ DeviceDetailsSingular,
73
+ DeviceDetailsInstructOperate
74
+ },
75
+ data () {
76
+ return {
77
+ // 页面宽度
78
+ screenWidth: document.documentElement.clientWidth,
79
+ // Tab页签
80
+ tabActiveKey: '1',
81
+ // 设备详情
82
+ details: {
83
+ f_device_no: '',
84
+ f_imei: '',
85
+ f_imsi: '',
86
+ f_state: '正常',
87
+ f_device_id: '',
88
+ f_manufactor: '',
89
+ f_brand: '',
90
+ f_alias: '',
91
+ f_model: '',
92
+ f_input_date: '',
93
+ f_inputtor: ''
94
+ },
95
+ tabList: [
96
+ { key: '1', tab: '基本' },
97
+ { key: '2', tab: '抄表' },
98
+ { key: '3', tab: '指令' },
99
+ { key: '4', tab: '异常' },
100
+ { key: '5', tab: '指令操作' },
101
+ { key: '6', tab: '设备位置' }
102
+ ],
103
+ // 设备详情加载
104
+ loadDeviceDetails: true,
105
+ describeList: [
106
+ { describe: '设备号', field: 'f_device_no' },
107
+ { describe: '设备型号', field: 'f_brand' }
108
+ ]
109
+ }
110
+ },
111
+ mounted () {
112
+ this.initView()
113
+ },
114
+ computed: {
115
+ ...mapState('account', { currUser: 'user' }),
116
+ ...mapState('setting', ['isMobile'])
117
+ },
118
+ props: {
119
+ deviceNo: {
120
+ type: String,
121
+ required: true
122
+ },
123
+ visible: {
124
+ type: Boolean,
125
+ default: false
126
+ }
127
+ },
128
+ methods: {
129
+ // 初始化组件
130
+ initView () {
131
+ this.tabActiveKey = '1'
132
+ this.getIotDevice(this.deviceNo)
133
+ },
134
+ onClose () {
135
+ this.$emit('update:visible', false)
136
+ },
137
+ // 获取设备详情信息
138
+ getIotDevice (deviceNo) {
139
+ this.loadDeviceDetails = true
140
+ return post(DeviceDetailsViewApi.getDeviceDetails, {
141
+ id: deviceNo
142
+ }).then(res => {
143
+ this.details = res
144
+ this.loadDeviceDetails = false
145
+ }, err => {
146
+ this.loadDeviceDetails = false
147
+ console.error(err)
148
+ })
149
+ },
150
+ // Tab切换
151
+ handleTabChange (key) {
152
+ this.tabActiveKey = key
153
+ }
154
+ },
155
+ watch: {
156
+ 'visible' (val) {
157
+ if (val) {
158
+ this.initView()
159
+ }
160
+ }
161
+ }
162
+ }
163
+ </script>
164
+
165
+ <style lang="less" scoped>
166
+ .business {
167
+ color: #ffffff;
168
+ }
169
+ .business:enabled:hover {
170
+ background-color: #85CE61 !important;
171
+ border-color: #85CE61 !important;
172
+ }
173
+ .business:enabled {
174
+ background-color: #67c23a;
175
+ border-color: #67c23a;
176
+ }
177
+ .business:disabled {
178
+ color: rgba(0, 0, 0, 0.25);
179
+ }
180
+ .detail-layout {
181
+ margin-left: 44px;
182
+ }
183
+ .text {
184
+ color: rgba(0, 0, 0, .45);
185
+ }
186
+
187
+ .heading {
188
+ color: rgba(0, 0, 0, .85);
189
+ font-size: 20px;
190
+ }
191
+
192
+ .no-data {
193
+ color: rgba(0, 0, 0, .25);
194
+ text-align: center;
195
+ line-height: 64px;
196
+ font-size: 16px;
197
+
198
+ i {
199
+ font-size: 24px;
200
+ margin-right: 16px;
201
+ position: relative;
202
+ top: 3px;
203
+ }
204
+ }
205
+
206
+ .mobile {
207
+ .detail-layout {
208
+ margin-left: unset;
209
+ }
210
+ .text {
211
+
212
+ }
213
+ .status-list {
214
+ text-align: left;
215
+ }
216
+ }
217
+
218
+ .row {
219
+ display: flex;
220
+
221
+ .content {
222
+ -webkit-box-flex: 1;
223
+ flex: auto;
224
+ -ms-flex: auto;
225
+ }
226
+
227
+ .extra {
228
+ flex: 0 1 auto;
229
+ -webkit-box-flex: 0;
230
+ -ms-flex: 0 1 auto;
231
+ min-width: 242px;
232
+ margin-left: 88px;
233
+ text-align: right;
234
+ }
235
+ }
236
+ </style>