vue2-client 1.2.84 → 1.2.85

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 (26) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/package.json +94 -94
  3. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +225 -225
  4. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  5. package/src/base-client/components/common/ScrollList/SrcollList.vue +113 -113
  6. package/src/base-client/components/common/ScrollList/index.js +3 -3
  7. package/src/base-client/components/common/XTable/XTable.vue +269 -269
  8. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +232 -232
  9. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +678 -678
  10. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsException.vue +57 -57
  11. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsRead.vue +131 -131
  12. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +300 -300
  13. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +770 -770
  14. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +532 -532
  15. package/src/base-client/plugins/AppData.js +0 -2
  16. package/src/base-client/plugins/compatible/LoginServiceOA.js +20 -20
  17. package/src/pages/login/Login.vue +2 -2
  18. package/src/pages/resourceManage/orgListManage.vue +98 -98
  19. package/src/router/async/config.async.js +26 -26
  20. package/src/router/index.js +27 -27
  21. package/src/services/api/WebmeterAnalysisViewApi.js +20 -20
  22. package/src/services/api/index.js +39 -39
  23. package/src/services/api/iot/DeviceDetailsView/DeviceDetailsCountApi.js +18 -18
  24. package/src/theme/default/style.less +47 -47
  25. package/src/utils/map-utils.js +31 -31
  26. package/src/utils/request.js +13 -4
@@ -33,8 +33,6 @@ const GetAppDataService = {
33
33
  // 追加参数
34
34
  localStorage.setItem(process.env.VUE_APP_DICTIONARY_KEY, JSON.stringify(params))
35
35
  localStorage.setItem(process.env.VUE_APP_BADGE_KEY, JSON.stringify(badgeItemArray))
36
- // 清除compatible
37
- localStorage.removeItem('compatible')
38
36
  })
39
37
  // 获取省市区数据
40
38
  await post(manageApi.getDivisionsOhChina, {}).then((res) => {
@@ -1,20 +1,20 @@
1
- import { get } from '@vue2-client/services/api'
2
- import Vue from 'vue'
3
-
4
- async function loginStart (name, password) {
5
- const resource = await get(`/rs/user/${name}/${password}/智慧OA`, {})
6
- console.log('登陆获取', resource)
7
- Vue.$login.f = resource
8
- await Promise.all([Vue.$appdata.load()])
9
- const login = {
10
- f: Vue.$login.f,
11
- jwt: Vue.$login.f.id,
12
- r: Vue.$login.r
13
- }
14
- Vue.$store.commit('account/setLogin', login)
15
- return resource
16
- }
17
-
18
- export {
19
- loginStart
20
- }
1
+ import { get } from '@vue2-client/services/api'
2
+ import Vue from 'vue'
3
+
4
+ async function loginStart (name, password) {
5
+ const resource = await get(`/rs/user/${name}/${password}/智慧OA`, {})
6
+ console.log('登陆获取', resource)
7
+ Vue.$login.f = resource
8
+ await Promise.all([Vue.$appdata.load()])
9
+ const login = {
10
+ f: Vue.$login.f,
11
+ jwt: Vue.$login.f.id,
12
+ r: Vue.$login.r
13
+ }
14
+ Vue.$store.commit('account/setLogin', login)
15
+ return resource
16
+ }
17
+
18
+ export {
19
+ loginStart
20
+ }
@@ -116,11 +116,11 @@ export default {
116
116
  const password = this.form.getFieldValue('password')
117
117
  this.logging = false
118
118
  const loginRes = res
119
- const V4Token = { token: res.data.access_token, expire: res.data.expires_in }
119
+ const V4Token = { token: res.access_token, expire: res.expires_in }
120
120
  this.setV4AccessToken(V4Token)
121
121
  // 向本地缓存中临时存储compatible
122
122
  localStorage.setItem('compatible', this.compatible)
123
- if (loginRes.code === 200) {
123
+ if (loginRes.access_token) {
124
124
  const encrypt = new JSEncrypt()
125
125
  encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqPvovSfXcwBbW8cKMCgwqNpsYuzF8RPAPFb7LGsnVo44JhM/xxzDyzoYtdfNmtbIuKVi9PzIsyp6rg+09gbuI6UGwBZ5DWBDBMqv5MPdOF5dCQkB2Bbr5yPfURPENypUz+pBFBg41d+BC+rwRiXELwKy7Y9caD/MtJyHydj8OUwIDAQAB')
126
126
  const data = encrypt.encrypt(JSON.stringify({ username: name, password: password }))
@@ -1,98 +1,98 @@
1
- <template>
2
- <div id="orgListManage">
3
- <a-card :bordered="false">
4
- <!--<a-row :gutter="48">-->
5
- <!--<a-col>-->
6
- <!--<a-space>-->
7
- <!--<a-button type="primary" @click="addItem" v-if="!buttonState || buttonState.add">-->
8
- <!--<a-icon :style="iconStyle" type="plus"/>新增-->
9
- <!--</a-button>-->
10
- <!--<a-button-->
11
- <!--v-if="!buttonState || buttonState.edit"-->
12
- <!--:loading="editDataLoading"-->
13
- <!--:disabled="!isModify"-->
14
- <!--class="btn-success"-->
15
- <!--type="dashed"-->
16
- <!--@click="editItem">-->
17
- <!--<a-icon :style="iconStyle" type="edit"/>修改-->
18
- <!--</a-button>-->
19
- <!--<a-button :disabled="!isDelete" type="danger" @click="deleteItem" v-if="!buttonState || buttonState.delete">-->
20
- <!--<a-icon :style="iconStyle" type="delete"/>删除-->
21
- <!--</a-button>-->
22
- <!--</a-space>-->
23
- <!--<span :style="{ float: 'right', overflow: 'hidden', marginBottom: '8px' }">-->
24
- <!--<a-button-group>-->
25
- <!--<a-button @click="toggleIsFormShow">-->
26
- <!--<a-icon :style="iconStyle" type="vertical-align-top"/>-->
27
- <!--</a-button>-->
28
- <!--<a-button @click="refresh(true)">-->
29
- <!--<a-icon :style="iconStyle" type="reload" />-->
30
- <!--</a-button>-->
31
- <!--<a-button @click="showDrawer">-->
32
- <!--<a-icon :style="iconStyle" type="table" />-->
33
- <!--</a-button>-->
34
- <!--<a-button @click="exports">-->
35
- <!--<a-icon :style="iconStyle" type="cloud-download"/>-->
36
- <!--</a-button>-->
37
- <!--</a-button-group>-->
38
- <!--</span>-->
39
- <!--</a-col>-->
40
- <!--</a-row>-->
41
- <a-table
42
- :columns="columns"
43
- :data-source="funTree"
44
- :pagination="false"
45
- bordered
46
- rowKey="id"
47
- size="middle">
48
- </a-table>
49
- </a-card>
50
- </div>
51
- </template>
52
-
53
- <script>
54
- import { getOrganization, searchFun } from '@vue2-client/base-client/plugins/GetLoginInfoService'
55
- import { getColumnsJson } from '@vue2-client/services/api'
56
- export default {
57
- // 组织管理
58
- name: 'orgListManage',
59
- data () {
60
- return {
61
- columnsJson: [],
62
- funTree: [],
63
- columns: [
64
- {
65
- title: '组织名称',
66
- dataIndex: 'name'
67
- },
68
- {
69
- title: '排序',
70
- dataIndex: 'position'
71
- },
72
- {
73
- title: '组件目录',
74
- dataIndex: 'f_dir'
75
- },
76
- {
77
- title: '描述',
78
- dataIndex: 'f_description'
79
- }
80
- ]
81
- }
82
- },
83
- created () {
84
- },
85
- async mounted () {
86
- getColumnsJson('orgListManage', (res) => {
87
- this.columnsJson = res
88
- })
89
- const fun = await getOrganization()
90
- this.funTree = searchFun(fun, '组织机构')
91
- },
92
- methods: {
93
- }
94
- }
95
- </script>
96
-
97
- <style lang="less">
98
- </style>
1
+ <template>
2
+ <div id="orgListManage">
3
+ <a-card :bordered="false">
4
+ <!--<a-row :gutter="48">-->
5
+ <!--<a-col>-->
6
+ <!--<a-space>-->
7
+ <!--<a-button type="primary" @click="addItem" v-if="!buttonState || buttonState.add">-->
8
+ <!--<a-icon :style="iconStyle" type="plus"/>新增-->
9
+ <!--</a-button>-->
10
+ <!--<a-button-->
11
+ <!--v-if="!buttonState || buttonState.edit"-->
12
+ <!--:loading="editDataLoading"-->
13
+ <!--:disabled="!isModify"-->
14
+ <!--class="btn-success"-->
15
+ <!--type="dashed"-->
16
+ <!--@click="editItem">-->
17
+ <!--<a-icon :style="iconStyle" type="edit"/>修改-->
18
+ <!--</a-button>-->
19
+ <!--<a-button :disabled="!isDelete" type="danger" @click="deleteItem" v-if="!buttonState || buttonState.delete">-->
20
+ <!--<a-icon :style="iconStyle" type="delete"/>删除-->
21
+ <!--</a-button>-->
22
+ <!--</a-space>-->
23
+ <!--<span :style="{ float: 'right', overflow: 'hidden', marginBottom: '8px' }">-->
24
+ <!--<a-button-group>-->
25
+ <!--<a-button @click="toggleIsFormShow">-->
26
+ <!--<a-icon :style="iconStyle" type="vertical-align-top"/>-->
27
+ <!--</a-button>-->
28
+ <!--<a-button @click="refresh(true)">-->
29
+ <!--<a-icon :style="iconStyle" type="reload" />-->
30
+ <!--</a-button>-->
31
+ <!--<a-button @click="showDrawer">-->
32
+ <!--<a-icon :style="iconStyle" type="table" />-->
33
+ <!--</a-button>-->
34
+ <!--<a-button @click="exports">-->
35
+ <!--<a-icon :style="iconStyle" type="cloud-download"/>-->
36
+ <!--</a-button>-->
37
+ <!--</a-button-group>-->
38
+ <!--</span>-->
39
+ <!--</a-col>-->
40
+ <!--</a-row>-->
41
+ <a-table
42
+ :columns="columns"
43
+ :data-source="funTree"
44
+ :pagination="false"
45
+ bordered
46
+ rowKey="id"
47
+ size="middle">
48
+ </a-table>
49
+ </a-card>
50
+ </div>
51
+ </template>
52
+
53
+ <script>
54
+ import { getOrganization, searchFun } from '@vue2-client/base-client/plugins/GetLoginInfoService'
55
+ import { getColumnsJson } from '@vue2-client/services/api'
56
+ export default {
57
+ // 组织管理
58
+ name: 'orgListManage',
59
+ data () {
60
+ return {
61
+ columnsJson: [],
62
+ funTree: [],
63
+ columns: [
64
+ {
65
+ title: '组织名称',
66
+ dataIndex: 'name'
67
+ },
68
+ {
69
+ title: '排序',
70
+ dataIndex: 'position'
71
+ },
72
+ {
73
+ title: '组件目录',
74
+ dataIndex: 'f_dir'
75
+ },
76
+ {
77
+ title: '描述',
78
+ dataIndex: 'f_description'
79
+ }
80
+ ]
81
+ }
82
+ },
83
+ created () {
84
+ },
85
+ async mounted () {
86
+ getColumnsJson('orgListManage', (res) => {
87
+ this.columnsJson = res
88
+ })
89
+ const fun = await getOrganization()
90
+ this.funTree = searchFun(fun, '组织机构')
91
+ },
92
+ methods: {
93
+ }
94
+ }
95
+ </script>
96
+
97
+ <style lang="less">
98
+ </style>
@@ -1,26 +1,26 @@
1
- import routerMap from './router.map'
2
- import { parseRoutes } from '@vue2-client/utils/routerUtil'
3
-
4
- // 异步路由配置
5
- const routesConfig = [
6
- 'login',
7
- 'submitTicket',
8
- 'root',
9
- {
10
- router: 'exp404',
11
- path: '*',
12
- name: '404'
13
- },
14
- {
15
- router: 'exp403',
16
- path: '/403',
17
- name: '403'
18
- }
19
- ]
20
-
21
- const options = {
22
- mode: 'history',
23
- routes: parseRoutes(routesConfig, routerMap)
24
- }
25
-
26
- export default options
1
+ import routerMap from './router.map'
2
+ import { parseRoutes } from '@vue2-client/utils/routerUtil'
3
+
4
+ // 异步路由配置
5
+ const routesConfig = [
6
+ 'login',
7
+ 'submitTicket',
8
+ 'root',
9
+ {
10
+ router: 'exp404',
11
+ path: '*',
12
+ name: '404'
13
+ },
14
+ {
15
+ router: 'exp403',
16
+ path: '/403',
17
+ name: '403'
18
+ }
19
+ ]
20
+
21
+ const options = {
22
+ mode: 'history',
23
+ routes: parseRoutes(routesConfig, routerMap)
24
+ }
25
+
26
+ export default options
@@ -1,27 +1,27 @@
1
- import { formatRoutes } from '@vue2-client/utils/routerUtil'
2
-
3
- // 不需要登录拦截的路由配置
4
- const loginIgnore = {
5
- names: ['404', '403'], // 根据路由名称匹配
6
- paths: ['/login', '/submitTicket'], // 根据路由fullPath匹配
7
- /**
8
- * 判断路由是否包含在该配置中
9
- * @param route vue-router 的 route 对象
10
- * @returns {boolean}
11
- */
12
- includes (route) {
13
- return this.names.includes(route.name) || this.paths.includes(route.path)
14
- }
15
- }
16
-
17
- /**
18
- * 初始化路由实例
19
- * @param isAsync 是否异步路由模式
20
- * @returns {RouterOptions}
21
- */
22
- function initRouter (isAsync) {
23
- const options = require('./async/config.async').default
24
- formatRoutes(options.routes)
25
- return options
26
- }
27
- export { loginIgnore, initRouter }
1
+ import { formatRoutes } from '@vue2-client/utils/routerUtil'
2
+
3
+ // 不需要登录拦截的路由配置
4
+ const loginIgnore = {
5
+ names: ['404', '403'], // 根据路由名称匹配
6
+ paths: ['/login', '/submitTicket'], // 根据路由fullPath匹配
7
+ /**
8
+ * 判断路由是否包含在该配置中
9
+ * @param route vue-router 的 route 对象
10
+ * @returns {boolean}
11
+ */
12
+ includes (route) {
13
+ return this.names.includes(route.name) || this.paths.includes(route.path)
14
+ }
15
+ }
16
+
17
+ /**
18
+ * 初始化路由实例
19
+ * @param isAsync 是否异步路由模式
20
+ * @returns {RouterOptions}
21
+ */
22
+ function initRouter (isAsync) {
23
+ const options = require('./async/config.async').default
24
+ formatRoutes(options.routes)
25
+ return options
26
+ }
27
+ export { loginIgnore, initRouter }
@@ -1,20 +1,20 @@
1
- const WebmeterAnalysisViewApi = {
2
- // 查询:指令数统计
3
- instructSumCount: '/webmeterapi/foreignaidInstructSumCountData',
4
- // 查询:抄表数统计
5
- meteReadSumCount: '/webmeterapi/foreignaidMetereadSumCountData',
6
- // 查询:近一周抄表量数据
7
- meteReadDataByWeek: '/webmeterapi/foreignaidMetereadDataByWeekData',
8
- // 查询:在用表具数
9
- usingMeterSumCount: '/webmeterapi/foreignaidUsingMeterSumCountData',
10
- // 查询:近一周在用表具数数据
11
- usingMeterDataByWeek: '/webmeterapi/foreignaidUsingMeterDataByWeekData',
12
- // 查询:指令成功率统计
13
- instructRateOfSuccess: '/webmeterapi/foreignaidInstructRateOfSuccessData',
14
- // 查询:按表厂抄表量统计
15
- handMeterSumCountData: '/webmeterapi/foreignaidHandMeterSumCountData',
16
- // 查询:统计用气量数据
17
- useGasSumCount: '/webmeterapi/foreignaidUseGasSumCountData'
18
- }
19
-
20
- export { WebmeterAnalysisViewApi }
1
+ const WebmeterAnalysisViewApi = {
2
+ // 查询:指令数统计
3
+ instructSumCount: '/webmeterapi/foreignaidInstructSumCountData',
4
+ // 查询:抄表数统计
5
+ meteReadSumCount: '/webmeterapi/foreignaidMetereadSumCountData',
6
+ // 查询:近一周抄表量数据
7
+ meteReadDataByWeek: '/webmeterapi/foreignaidMetereadDataByWeekData',
8
+ // 查询:在用表具数
9
+ usingMeterSumCount: '/webmeterapi/foreignaidUsingMeterSumCountData',
10
+ // 查询:近一周在用表具数数据
11
+ usingMeterDataByWeek: '/webmeterapi/foreignaidUsingMeterDataByWeekData',
12
+ // 查询:指令成功率统计
13
+ instructRateOfSuccess: '/webmeterapi/foreignaidInstructRateOfSuccessData',
14
+ // 查询:按表厂抄表量统计
15
+ handMeterSumCountData: '/webmeterapi/foreignaidHandMeterSumCountData',
16
+ // 查询:统计用气量数据
17
+ useGasSumCount: '/webmeterapi/foreignaidUseGasSumCountData'
18
+ }
19
+
20
+ export { WebmeterAnalysisViewApi }
@@ -1,39 +1,39 @@
1
- import { commonApi, getColumnsJson, query, addOrModify, remove } from '@vue2-client/services/api/common'
2
- import { CustomerDetailsViewApi } from '@vue2-client/services/api/CustomerDetailsViewApi'
3
- import { DeviceBrandDetailsViewApi } from '@vue2-client/services/api/DeviceBrandDetailsViewApi'
4
- import { DeviceDetailsViewApi } from '@vue2-client/services/api/DeviceDetailsViewApi'
5
- import { DeviceTypeDetailsViewApi } from '@vue2-client/services/api/DeviceTypeDetailsViewApi'
6
- import { DictionaryDetailsViewApi } from '@vue2-client/services/api/DictionaryDetailsViewApi'
7
- import { EmployeeDetailsViewApi } from '@vue2-client/services/api/EmployeeDetailsViewApi'
8
- import { FormGroupEditApi } from '@vue2-client/services/api/FormGroupEditApi'
9
- import { InstructDetailsViewApi } from '@vue2-client/services/api/InstructDetailsViewApi'
10
- import { iotApi } from '@vue2-client/services/api/iot'
11
- import { LogDetailsViewApi } from '@vue2-client/services/api/LogDetailsViewApi'
12
- import { manageApi } from '@vue2-client/services/api/manage'
13
- import { MeterDetailsViewApi } from '@vue2-client/services/api/MeterDetailsViewApi'
14
- import { QueryParamsDetailsViewApi } from '@vue2-client/services/api/QueryParamsDetailsViewApi'
15
- import { get, post } from '@vue2-client/services/api/restTools'
16
- import { serviceApi } from '@vue2-client/services/api/service'
17
- import { TicketDetailsViewApi } from '@vue2-client/services/api/TicketDetailsViewApi'
18
- import { WebmeterAnalysisViewApi } from '@vue2-client/services/api/WebmeterAnalysisViewApi'
19
-
20
- export {
21
- commonApi, getColumnsJson, query, addOrModify, remove,
22
- CustomerDetailsViewApi,
23
- DeviceBrandDetailsViewApi,
24
- DeviceDetailsViewApi,
25
- DeviceTypeDetailsViewApi,
26
- DictionaryDetailsViewApi,
27
- EmployeeDetailsViewApi,
28
- FormGroupEditApi,
29
- InstructDetailsViewApi,
30
- iotApi,
31
- LogDetailsViewApi,
32
- manageApi,
33
- MeterDetailsViewApi,
34
- QueryParamsDetailsViewApi,
35
- get, post,
36
- serviceApi,
37
- TicketDetailsViewApi,
38
- WebmeterAnalysisViewApi
39
- }
1
+ import { commonApi, getColumnsJson, query, addOrModify, remove } from '@vue2-client/services/api/common'
2
+ import { CustomerDetailsViewApi } from '@vue2-client/services/api/CustomerDetailsViewApi'
3
+ import { DeviceBrandDetailsViewApi } from '@vue2-client/services/api/DeviceBrandDetailsViewApi'
4
+ import { DeviceDetailsViewApi } from '@vue2-client/services/api/DeviceDetailsViewApi'
5
+ import { DeviceTypeDetailsViewApi } from '@vue2-client/services/api/DeviceTypeDetailsViewApi'
6
+ import { DictionaryDetailsViewApi } from '@vue2-client/services/api/DictionaryDetailsViewApi'
7
+ import { EmployeeDetailsViewApi } from '@vue2-client/services/api/EmployeeDetailsViewApi'
8
+ import { FormGroupEditApi } from '@vue2-client/services/api/FormGroupEditApi'
9
+ import { InstructDetailsViewApi } from '@vue2-client/services/api/InstructDetailsViewApi'
10
+ import { iotApi } from '@vue2-client/services/api/iot'
11
+ import { LogDetailsViewApi } from '@vue2-client/services/api/LogDetailsViewApi'
12
+ import { manageApi } from '@vue2-client/services/api/manage'
13
+ import { MeterDetailsViewApi } from '@vue2-client/services/api/MeterDetailsViewApi'
14
+ import { QueryParamsDetailsViewApi } from '@vue2-client/services/api/QueryParamsDetailsViewApi'
15
+ import { get, post } from '@vue2-client/services/api/restTools'
16
+ import { serviceApi } from '@vue2-client/services/api/service'
17
+ import { TicketDetailsViewApi } from '@vue2-client/services/api/TicketDetailsViewApi'
18
+ import { WebmeterAnalysisViewApi } from '@vue2-client/services/api/WebmeterAnalysisViewApi'
19
+
20
+ export {
21
+ commonApi, getColumnsJson, query, addOrModify, remove,
22
+ CustomerDetailsViewApi,
23
+ DeviceBrandDetailsViewApi,
24
+ DeviceDetailsViewApi,
25
+ DeviceTypeDetailsViewApi,
26
+ DictionaryDetailsViewApi,
27
+ EmployeeDetailsViewApi,
28
+ FormGroupEditApi,
29
+ InstructDetailsViewApi,
30
+ iotApi,
31
+ LogDetailsViewApi,
32
+ manageApi,
33
+ MeterDetailsViewApi,
34
+ QueryParamsDetailsViewApi,
35
+ get, post,
36
+ serviceApi,
37
+ TicketDetailsViewApi,
38
+ WebmeterAnalysisViewApi
39
+ }
@@ -1,18 +1,18 @@
1
- const DeviceDetailsCountApi = {
2
- // 获取设备使用天数
3
- getDeviceUsedDaySum: '/webmeterapi/getDeviceUsedDaySum',
4
- // 获取设备累计上报次数和近七天上报情况
5
- getDeviceUploadTimesCount: '/webmeterapi/getDeviceUploadTimesCount',
6
- // 获取设备累计失联次数和近三个月失联情况
7
- getDeviceLostContactCount: '/webmeterapi/getDeviceLostContactCount',
8
- // 获取设备指令下发成功率
9
- getInstructRateOfSuccess: '/webmeterapi/getInstructRateOfSuccess',
10
- // 获取设备上报情况
11
- getDeviceUploadCountData: '/webmeterapi/getDeviceUploadCountData',
12
- // 获取设备失联情况
13
- getDeviceLostContactCountData: '/webmeterapi/getDeviceLostContactCountData',
14
- // 获取设备失联排行榜
15
- getDeviceLostContactRankData: '/webmeterapi/getDeviceLostContactRankData'
16
- }
17
-
18
- export { DeviceDetailsCountApi }
1
+ const DeviceDetailsCountApi = {
2
+ // 获取设备使用天数
3
+ getDeviceUsedDaySum: '/webmeterapi/getDeviceUsedDaySum',
4
+ // 获取设备累计上报次数和近七天上报情况
5
+ getDeviceUploadTimesCount: '/webmeterapi/getDeviceUploadTimesCount',
6
+ // 获取设备累计失联次数和近三个月失联情况
7
+ getDeviceLostContactCount: '/webmeterapi/getDeviceLostContactCount',
8
+ // 获取设备指令下发成功率
9
+ getInstructRateOfSuccess: '/webmeterapi/getInstructRateOfSuccess',
10
+ // 获取设备上报情况
11
+ getDeviceUploadCountData: '/webmeterapi/getDeviceUploadCountData',
12
+ // 获取设备失联情况
13
+ getDeviceLostContactCountData: '/webmeterapi/getDeviceLostContactCountData',
14
+ // 获取设备失联排行榜
15
+ getDeviceLostContactRankData: '/webmeterapi/getDeviceLostContactRankData'
16
+ }
17
+
18
+ export { DeviceDetailsCountApi }
@@ -1,47 +1,47 @@
1
- .week-mode{
2
- overflow: hidden;
3
- filter: invert(80%);
4
- }
5
- .beauty-scroll{
6
- scrollbar-color: @primary-color @primary-2;
7
- scrollbar-width: thin;
8
- -ms-overflow-style:none;
9
- position: relative;
10
- &::-webkit-scrollbar{
11
- width: 3px;
12
- height: 1px;
13
- }
14
- &::-webkit-scrollbar-thumb {
15
- border-radius: 3px;
16
- background: @primary-color;
17
- }
18
- &::-webkit-scrollbar-track {
19
- -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
20
- border-radius: 3px;
21
- background: @primary-3;
22
- }
23
- }
24
- .split-right{
25
- &:not(:last-child) {
26
- border-right: 1px solid rgba(98, 98, 98, 0.2);
27
- }
28
- }
29
- .disabled{
30
- cursor: not-allowed;
31
- color: @disabled-color;
32
- pointer-events: none;
33
- }
34
-
35
- ::-webkit-scrollbar{
36
- width: 5px;
37
- height: 5px;
38
- }
39
- ::-webkit-scrollbar-thumb {
40
- border-radius: 3px;
41
- background: @primary-3;
42
- }
43
- ::-webkit-scrollbar-track {
44
- -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
45
- border-radius: 3px;
46
- background: @primary-1;
47
- }
1
+ .week-mode{
2
+ overflow: hidden;
3
+ filter: invert(80%);
4
+ }
5
+ .beauty-scroll{
6
+ scrollbar-color: @primary-color @primary-2;
7
+ scrollbar-width: thin;
8
+ -ms-overflow-style:none;
9
+ position: relative;
10
+ &::-webkit-scrollbar{
11
+ width: 3px;
12
+ height: 1px;
13
+ }
14
+ &::-webkit-scrollbar-thumb {
15
+ border-radius: 3px;
16
+ background: @primary-color;
17
+ }
18
+ &::-webkit-scrollbar-track {
19
+ -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
20
+ border-radius: 3px;
21
+ background: @primary-3;
22
+ }
23
+ }
24
+ .split-right{
25
+ &:not(:last-child) {
26
+ border-right: 1px solid rgba(98, 98, 98, 0.2);
27
+ }
28
+ }
29
+ .disabled{
30
+ cursor: not-allowed;
31
+ color: @disabled-color;
32
+ pointer-events: none;
33
+ }
34
+
35
+ ::-webkit-scrollbar{
36
+ width: 5px;
37
+ height: 5px;
38
+ }
39
+ ::-webkit-scrollbar-thumb {
40
+ border-radius: 3px;
41
+ background: @primary-3;
42
+ }
43
+ ::-webkit-scrollbar-track {
44
+ -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0);
45
+ border-radius: 3px;
46
+ background: @primary-1;
47
+ }