vue2-client 1.2.76 → 1.2.79
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.
- package/CHANGELOG.md +215 -206
- package/package.json +20 -17
- package/src/base-client/components/common/Upload/Upload.vue +1 -1
- package/src/base-client/components/common/XFormTable/XFormTable.vue +0 -2
- package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +149 -94
- package/src/services/api/iot/DeviceDetailsView/DeviceDetailsCountApi.js +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,206 +1,215 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
> 所有关于本项目的变化都在该文档里。
|
|
3
|
-
|
|
4
|
-
**1.2.
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
**1.2.
|
|
10
|
-
- 功能修改:
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
**1.2.
|
|
14
|
-
- 功能修改:
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
**1.2.
|
|
23
|
-
- 功能修改:
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
**1.2.
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
|
|
80
|
-
**1.2.
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
|
|
120
|
-
**##1.2.
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
**##1.2.
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
|
|
139
|
-
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
-
|
|
147
|
-
- [
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
|
|
154
|
-
**##1.2.
|
|
155
|
-
- 功能修改:
|
|
156
|
-
- [
|
|
157
|
-
|
|
158
|
-
**##1.2.
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
- [
|
|
166
|
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
- [
|
|
170
|
-
|
|
171
|
-
**##1.2.
|
|
172
|
-
- 功能修改:
|
|
173
|
-
- [
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
-
|
|
177
|
-
- [
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
-
|
|
188
|
-
- [
|
|
189
|
-
- [
|
|
190
|
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
-
|
|
196
|
-
-
|
|
197
|
-
- [查询配置生成]
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
-
|
|
201
|
-
- [
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
1
|
+
# Change Log
|
|
2
|
+
> 所有关于本项目的变化都在该文档里。
|
|
3
|
+
|
|
4
|
+
**1.2.79 -2022-06-24 @苗艳强**
|
|
5
|
+
- 问题修复:
|
|
6
|
+
- x-form-table:
|
|
7
|
+
- 修复fixedQueryForm属性变化时查询表单异常清空问题
|
|
8
|
+
|
|
9
|
+
**1.2.78 -2022-06-24 @江超**
|
|
10
|
+
- 功能修改:
|
|
11
|
+
- 更新物联网设备统计页面
|
|
12
|
+
|
|
13
|
+
**1.2.75 - 1.2.77 -2022-06-18 @江超**
|
|
14
|
+
- 功能修改:
|
|
15
|
+
- 依赖更新
|
|
16
|
+
- 提交物联网设备统计(完成60%)
|
|
17
|
+
|
|
18
|
+
**1.2.74 -2022-06-17 @张振宇**
|
|
19
|
+
- 功能修改:
|
|
20
|
+
- 拖拽样式修改
|
|
21
|
+
|
|
22
|
+
**1.2.73 -2022-06-16 @江超**
|
|
23
|
+
- 功能修改:
|
|
24
|
+
- 现在表格列排序不再通过前端判断,而是从后端生成了
|
|
25
|
+
|
|
26
|
+
**1.2.71 - 1.2.72 2022-06-16 @张振宇**
|
|
27
|
+
- 功能修改:
|
|
28
|
+
- 基础表单bug修改
|
|
29
|
+
- 数据字段可以拖拽了
|
|
30
|
+
|
|
31
|
+
**1.2.71 2022-06-15 @苗艳强**
|
|
32
|
+
- 功能修改:
|
|
33
|
+
- 优化工单详情页面移交功能
|
|
34
|
+
- 新增操作工单时获取当前登录用户信息
|
|
35
|
+
- 删除多余的 api
|
|
36
|
+
|
|
37
|
+
**1.2.69 - 1.2.70 2022-06-09 @张振宇**
|
|
38
|
+
- 功能修改:
|
|
39
|
+
- 表单增加刷新以及选择keys刷新函数
|
|
40
|
+
- 业务逻辑数据源 修改时不展示 logic@
|
|
41
|
+
- 父节点验证框消不掉bug修改
|
|
42
|
+
- 级联选择框的父级框从禁用变可输入的过度状态取消
|
|
43
|
+
- 修改数据字段时校验类型不显示bug
|
|
44
|
+
- 表单水印显示时机修改
|
|
45
|
+
- 字段默认值显示时机修改
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
**1.2.66 - 1.2.68 -2022-06-08 @江超**
|
|
49
|
+
- 功能修改:
|
|
50
|
+
- 设备类型详情页新增设备查询配置
|
|
51
|
+
|
|
52
|
+
**1.2.64 - 1.2.65 -2022-05-25 @张振宇**
|
|
53
|
+
- 功能修改:
|
|
54
|
+
- 建档表单配置 bug修改
|
|
55
|
+
- 文件上传框 文件类型以及个数限制可以生效了
|
|
56
|
+
- 表单增加按钮插槽
|
|
57
|
+
|
|
58
|
+
**1.2.64 -2022-05-26 @苗艳强**
|
|
59
|
+
- 功能修改:
|
|
60
|
+
- x-form-table:
|
|
61
|
+
- 修改 afterSubmit 事件增加操作类型
|
|
62
|
+
- 新增 afterDelete 事件
|
|
63
|
+
|
|
64
|
+
**1.2.57 - 1.2.63 -2022-05-25 @张振宇**
|
|
65
|
+
- 功能修改:
|
|
66
|
+
- 文件上传 基础表单相关修改
|
|
67
|
+
- 简单表单生成 数据字段提取出来
|
|
68
|
+
- 新增修改表单加载时不带出 文件属性
|
|
69
|
+
- 查询表单页面按钮配置
|
|
70
|
+
|
|
71
|
+
**1.2.55 -2022-05-20 @江超**
|
|
72
|
+
- 问题修复:
|
|
73
|
+
- 解决OA兼容模式下登录取不到字典的问题
|
|
74
|
+
|
|
75
|
+
**1.2.54-5 -2022-05-20 @张振宇**
|
|
76
|
+
- 功能修改:
|
|
77
|
+
- 运行编译错误修改
|
|
78
|
+
- 我觉得在座的各位都推脱不了责任
|
|
79
|
+
|
|
80
|
+
**1.2.50 - 1.2.51 -2022-05-11 @何文强**
|
|
81
|
+
- 功能修改:
|
|
82
|
+
- 新增地址搜索框表单项
|
|
83
|
+
- 新增省市区选择框表单项
|
|
84
|
+
|
|
85
|
+
**1.2.50 - 1.2.51 -2022-05-11 @何文强**
|
|
86
|
+
- 功能修改:
|
|
87
|
+
- 整理地图组件
|
|
88
|
+
|
|
89
|
+
**1.2.49 -2022-05-07 @江超**
|
|
90
|
+
- 问题修复:
|
|
91
|
+
- 解决售后工单定时器内存泄露问题
|
|
92
|
+
|
|
93
|
+
**1.2.48 -2022-05-07 @江超**
|
|
94
|
+
- 功能修改:
|
|
95
|
+
- 登录后不再请求加载燃气公司列表,以及燃气设备报警信息了
|
|
96
|
+
|
|
97
|
+
**1.2.47 -2022-04-27 @何文强**
|
|
98
|
+
- 功能修改:
|
|
99
|
+
- 新增根据地址串获取经纬度
|
|
100
|
+
|
|
101
|
+
**1.2.46 -2022-04-26 @陈栋扬**
|
|
102
|
+
- 问题修复:
|
|
103
|
+
- 主题颜色可以替换即时生效了
|
|
104
|
+
|
|
105
|
+
**1.2.44 - 1.2.45 -2022-04-26 @苗艳强**
|
|
106
|
+
- 问题修复:
|
|
107
|
+
- 修复单页面刷新无效的问题
|
|
108
|
+
- 修复单页面关闭再打开不重载的问题
|
|
109
|
+
|
|
110
|
+
**##1.2.41 - 1.2.43 -2022-04-24 @江超**
|
|
111
|
+
- 功能修改:
|
|
112
|
+
- 全局滚动条样式替换
|
|
113
|
+
- 问题修复:
|
|
114
|
+
- 修复`XaddForm.vue`和`XaddNativeForm.vue`将版本号渲染为表单项的问题
|
|
115
|
+
|
|
116
|
+
**##1.2.40 -2022-04-24 @苗艳强**
|
|
117
|
+
- 问题修复:
|
|
118
|
+
- 修复 singlepage 页面不能缓存的问题
|
|
119
|
+
|
|
120
|
+
**##1.2.39 -2022-04-22 @朱子峰**
|
|
121
|
+
- 问题修复:
|
|
122
|
+
- [工单提交] 修复数据库时区问题,正确显示时间
|
|
123
|
+
|
|
124
|
+
**##1.2.38 -2022-04-22 @朱子峰**
|
|
125
|
+
- 功能修改:
|
|
126
|
+
- [工单提交] 要求联系方式必须明确填写,不再从vuex中获取
|
|
127
|
+
- [工单提交] 添加远程链接使用说明
|
|
128
|
+
|
|
129
|
+
**##1.2.37 -2022-04-21 @张振宇**
|
|
130
|
+
- `CreateQuery.vue` 还原不小心删除的内容
|
|
131
|
+
- `CreateQuery.vue` 调整v_if的位置
|
|
132
|
+
|
|
133
|
+
**##1.2.36 -2022-04-21 @苗艳强**
|
|
134
|
+
- 样式修改:
|
|
135
|
+
- 修正了一处布局问题
|
|
136
|
+
- 布局配置:
|
|
137
|
+
- 默认开启 TabsHead 固定位置
|
|
138
|
+
|
|
139
|
+
**##1.2.35 -2022-04-13 @江超**
|
|
140
|
+
- 功能修改:
|
|
141
|
+
- [工单提交] 页面不再需要登录,而是通过路径传参获取信息
|
|
142
|
+
- 生成环境不再使用CDN加速
|
|
143
|
+
|
|
144
|
+
**##1.2.34 -2022-04-11 @张振宇**
|
|
145
|
+
- 功能修改:
|
|
146
|
+
- 文件上传组件完善
|
|
147
|
+
- [request.js] post请求可以自定义请求头参数了
|
|
148
|
+
- [.eslint] 不限制json结尾的逗号了
|
|
149
|
+
|
|
150
|
+
**##1.2.33 -2022-04-11 @朱子峰**
|
|
151
|
+
- 功能修改:
|
|
152
|
+
- [XFormTable]:临时表数据插入BUG修复,增加不需要数据初始化的判断
|
|
153
|
+
|
|
154
|
+
**##1.2.32 -2022-04-07 @朱子峰**
|
|
155
|
+
- 功能修改:
|
|
156
|
+
- [XFormTable]:新增判断,如果表名以##开始,则在查询时为其创建临时表
|
|
157
|
+
|
|
158
|
+
**##1.2.30 - 1.2.31 -2022-04-02 @张振宇**
|
|
159
|
+
- 功能修改:
|
|
160
|
+
- 查询配置页面bug修改
|
|
161
|
+
- 表单配置页面bug修改
|
|
162
|
+
|
|
163
|
+
**##1.2.28 -2022-03-29 @朱子峰**
|
|
164
|
+
- 功能修改:
|
|
165
|
+
- [Cookie]:去除自定义Cookie
|
|
166
|
+
|
|
167
|
+
**##1.2.27 -2022-03-29 @朱子峰**
|
|
168
|
+
- 功能新增:
|
|
169
|
+
- [XAddNativeForm]:将XAddForm从模态框中抽取,用于页面直接展示Form
|
|
170
|
+
|
|
171
|
+
**##1.2.25 -2022-03-26 @江超**
|
|
172
|
+
- 功能修改:
|
|
173
|
+
- [查询配置生成]:表单[新增/修改场景]增加[version(版本号)]类型
|
|
174
|
+
- [api.js]:移除[跨域代理前缀]
|
|
175
|
+
- 问题修复:
|
|
176
|
+
- [查询配置生成]:修复修改已有查询配置时,部分数据显示状态不一致的问题
|
|
177
|
+
- [设备详情页]:修复设备抄表记录,异常记录查询报错的问题
|
|
178
|
+
- [XFormItem]:修复非懒加载搜索的下拉框显示问题
|
|
179
|
+
|
|
180
|
+
**##1.2.20 - 1.2.24 -2022-03-25 @朱子峰**
|
|
181
|
+
- 功能修改:
|
|
182
|
+
- [工单关闭/开始处理]:工单关闭和开始处理时,不由id来进行判断,改由姓名进行判断是否为同一个人
|
|
183
|
+
|
|
184
|
+
**##1.2.17 - 1.2.19 -2022-03-25 @朱子峰**
|
|
185
|
+
- 问题修复:
|
|
186
|
+
- [钉钉消息推送]:将类别字段从int修改为String,直接传字典中的值
|
|
187
|
+
- 功能修改:
|
|
188
|
+
- [问题描述]:如果用户没有填写描述,新增默认值:“该用户没有填写描述信息”
|
|
189
|
+
- [问题描述]:展示问题描述时,按时间倒序展示,最新的信息显示在最上面
|
|
190
|
+
|
|
191
|
+
**##1.2.16 -2022-03-25 @张振宇**
|
|
192
|
+
- 功能修改:
|
|
193
|
+
- [查询配置生成]:逻辑修改,取消选择组和顺序,用户新增数组字段时需要选择是否为根节点,根节点index为1,不是根节点得数据字段index默认为父节点index+1
|
|
194
|
+
|
|
195
|
+
**##1.2.9 - 1.2.15 -2022-03-24 @江超**
|
|
196
|
+
- 功能新增:
|
|
197
|
+
- [查询配置生成]:下拉框表单选择业务逻辑作为数据源时,可以选择数据源加载方式
|
|
198
|
+
- [XFormItem]:当数据源加载方式为懒加载搜索时,将渲染一个可以根据关键词实时查询的选择框
|
|
199
|
+
- 问题修复:
|
|
200
|
+
- [查询配置生成]:修复修改已有查询配置时,显示状态不一致的问题
|
|
201
|
+
- [指令详情页]:修复操作记录查询报错的问题
|
|
202
|
+
|
|
203
|
+
**##1.2.8 -2022-03-24 @江超**
|
|
204
|
+
- 问题修复:
|
|
205
|
+
- [登录页面]:修复登录后欢迎提示出现undefined的问题
|
|
206
|
+
- [查询配置生成]:修复修改表单查询方式下拉框报错的问题
|
|
207
|
+
|
|
208
|
+
**##1.2.7 -2022-03-24 @江超**
|
|
209
|
+
- 功能新增:
|
|
210
|
+
- [系统设置]:新增 [工单提交] 功能(submitTicket),用户在操作业务时如发现系统异常,可使用该功能反馈问题
|
|
211
|
+
- [登录页面]:登陆人部门为 [用户工单登记] 时会直接跳转到[工单提交]页面(在基于新架构的营收全面使用时,会取消该限制,并将[工单提交]作为常驻功能)
|
|
212
|
+
|
|
213
|
+
**##1.0.0 - 1.2.6 -2022-03-23 @陈栋扬**
|
|
214
|
+
- 初始化:
|
|
215
|
+
- 公共组件和配置抽取完成
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vue2-client",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.79",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"serve": "vue-cli-service serve",
|
|
@@ -12,38 +12,40 @@
|
|
|
12
12
|
"@amap/amap-jsapi-loader": "^1.0.1",
|
|
13
13
|
"@antv/data-set": "^0.11.8",
|
|
14
14
|
"@antv/f2": "^3.8.11",
|
|
15
|
-
"@antv/g2plot": "^2.4.
|
|
15
|
+
"@antv/g2plot": "^2.4.20",
|
|
16
|
+
"@babel/core": "^7.18.5",
|
|
16
17
|
"@logicflow/core": "^1.1.20",
|
|
17
18
|
"@logicflow/extension": "^1.1.20",
|
|
18
19
|
"@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
|
|
19
20
|
"@vue/babel-preset-jsx": "^1.2.4",
|
|
20
21
|
"animate.css": "^4.1.1",
|
|
21
|
-
"ant-design-vue": "1.7.8",
|
|
22
|
+
"ant-design-vue": "^1.7.8",
|
|
22
23
|
"axios": "^0.27.2",
|
|
23
24
|
"clipboard": "^2.0.11",
|
|
24
|
-
"core-js": "^3.23.
|
|
25
|
+
"core-js": "^3.23.2",
|
|
26
|
+
"webpack": "^4.46.0",
|
|
25
27
|
"date-fns": "^2.28.0",
|
|
26
28
|
"default-passive-events": "^2.0.0",
|
|
27
29
|
"enquire.js": "^2.1.6",
|
|
28
30
|
"file-saver": "^2.0.5",
|
|
29
|
-
"highlight.js": "^
|
|
30
|
-
"js-cookie": "^
|
|
31
|
+
"highlight.js": "^11.5.1",
|
|
32
|
+
"js-cookie": "^3.0.1",
|
|
31
33
|
"jsencrypt": "^3.2.1",
|
|
32
34
|
"lodash.get": "^4.4.2",
|
|
33
35
|
"mockjs": "^1.1.0",
|
|
34
36
|
"nprogress": "^0.2.0",
|
|
35
37
|
"viser-vue": "^2.4.8",
|
|
36
38
|
"vue": "^2.6.14",
|
|
37
|
-
"vue-i18n": "^8.27.
|
|
39
|
+
"vue-i18n": "^8.27.2",
|
|
38
40
|
"vue-infinite-scroll": "^2.0.2",
|
|
39
41
|
"vue-json-viewer": "^2.2.22",
|
|
40
42
|
"vue-router": "^3.5.4",
|
|
41
43
|
"vuedraggable": "^2.24.3",
|
|
42
44
|
"vuex": "^3.6.2",
|
|
43
|
-
"xlsx": "0.18.5"
|
|
45
|
+
"xlsx": "^0.18.5"
|
|
44
46
|
},
|
|
45
47
|
"devDependencies": {
|
|
46
|
-
"@ant-design/colors": "^
|
|
48
|
+
"@ant-design/colors": "^6.0.0",
|
|
47
49
|
"@vue/cli-plugin-babel": "^4.5.18",
|
|
48
50
|
"@vue/cli-plugin-eslint": "^4.5.18",
|
|
49
51
|
"@vue/cli-plugin-router": "^4.5.18",
|
|
@@ -52,13 +54,13 @@
|
|
|
52
54
|
"@vue/cli-service": "^4.5.18",
|
|
53
55
|
"@vue/eslint-config-standard": "^4.0.0",
|
|
54
56
|
"@vue/test-utils": "^1.3.0",
|
|
55
|
-
"@vue/vue2-jest": "^
|
|
57
|
+
"@vue/vue2-jest": "^27.0.0",
|
|
56
58
|
"@vuepress/plugin-back-to-top": "^1.9.7",
|
|
57
59
|
"babel-eslint": "^10.1.0",
|
|
58
|
-
"babel-jest": "^
|
|
60
|
+
"babel-jest": "^27.1.0",
|
|
59
61
|
"babel-plugin-transform-remove-console": "^6.9.4",
|
|
60
62
|
"babel-polyfill": "^6.26.0",
|
|
61
|
-
"compression-webpack-plugin": "^
|
|
63
|
+
"compression-webpack-plugin": "^5.0.2",
|
|
62
64
|
"deepmerge": "^4.2.2",
|
|
63
65
|
"echarts": "^5.3.3",
|
|
64
66
|
"eslint": "^6.8.0",
|
|
@@ -68,19 +70,20 @@
|
|
|
68
70
|
"eslint-plugin-vue": "^6.2.2",
|
|
69
71
|
"fast-deep-equal": "^3.1.3",
|
|
70
72
|
"gh-pages": "^3.2.3",
|
|
71
|
-
"jest": "^
|
|
72
|
-
"less
|
|
73
|
+
"jest": "^27.1.0",
|
|
74
|
+
"less": "^3.13.1",
|
|
75
|
+
"less-loader": "^7.3.0",
|
|
73
76
|
"react-bmap": "^1.0.130",
|
|
74
77
|
"script-loader": "^0.7.2",
|
|
75
78
|
"style-resources-loader": "^1.5.0",
|
|
76
79
|
"vue-amap": "^0.5.10",
|
|
77
80
|
"vue-baidu-map": "^0.21.22",
|
|
78
|
-
"vue-bmap-gl": "0.0.30",
|
|
81
|
+
"vue-bmap-gl": "^0.0.30",
|
|
79
82
|
"vue-cli-plugin-style-resources-loader": "^0.1.5",
|
|
80
|
-
"vue-mapvgl": "0.0.34",
|
|
83
|
+
"vue-mapvgl": "^0.0.34",
|
|
81
84
|
"vue-template-compiler": "^2.6.14",
|
|
82
85
|
"vuepress": "^1.9.7",
|
|
83
|
-
"webpack-theme-color-replacer": "1.4.1",
|
|
86
|
+
"webpack-theme-color-replacer": "^1.4.1",
|
|
84
87
|
"whatwg-fetch": "^3.6.2"
|
|
85
88
|
},
|
|
86
89
|
"browserslist": [
|
|
@@ -104,7 +104,7 @@ export default {
|
|
|
104
104
|
formData.append('resUploadStock', this.model.resUploadStock)
|
|
105
105
|
formData.append('filename', info.file.name)
|
|
106
106
|
formData.append('filesize', (info.file.size / 1024 / 1024).toFixed(4))
|
|
107
|
-
formData.append('f_operator', this.currUser.username)
|
|
107
|
+
formData.append('f_operator', this.currUser ? this.currUser.username : '')
|
|
108
108
|
|
|
109
109
|
// const url = '/webmeteruploadapi/resource'
|
|
110
110
|
// if (process.env.NODE_ENV === 'production') {
|
|
@@ -192,13 +192,11 @@ export default {
|
|
|
192
192
|
},
|
|
193
193
|
fixedQueryForm: {
|
|
194
194
|
handler () {
|
|
195
|
-
this.mainLoading = true
|
|
196
195
|
this.form = {}
|
|
197
196
|
indexedDB.getByWeb(this.queryParamsName, commonApi.getColumnsJson, { str: this.queryParamsName }, (ret) => {
|
|
198
197
|
this.tableColumns = ret.columnJson
|
|
199
198
|
this.formItems = ret.formJson
|
|
200
199
|
this.buttonState = ret.buttonState
|
|
201
|
-
this.mainLoading = false
|
|
202
200
|
this.loaded = true
|
|
203
201
|
})
|
|
204
202
|
},
|
|
@@ -66,10 +66,10 @@
|
|
|
66
66
|
|
|
67
67
|
<a-card :body-style="{padding: '0'}" :bordered="false" :loading="loading">
|
|
68
68
|
<div class="salesCard">
|
|
69
|
-
<a-tabs :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}"
|
|
69
|
+
<a-tabs :activeKey="tabActiveKey" :default-active-key="tabActiveKey" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}" size="large" @change="handleTabChange">
|
|
70
70
|
<div slot="tabBarExtraContent" class="extra-wrapper">
|
|
71
71
|
<div class="extra-item">
|
|
72
|
-
<a-radio-group v-model="
|
|
72
|
+
<a-radio-group v-model="countMode" button-style="solid" @change="toggleCountMode">
|
|
73
73
|
<a-radio-button value="now">最近24小时</a-radio-button>
|
|
74
74
|
<a-radio-button value="week">近一周</a-radio-button>
|
|
75
75
|
<a-radio-button value="month">近一个月</a-radio-button>
|
|
@@ -88,10 +88,14 @@
|
|
|
88
88
|
<a-tab-pane key="2" tab="失联情况分析">
|
|
89
89
|
<a-row>
|
|
90
90
|
<a-col :lg="12" :md="12" :sm="24" :xl="16" :xs="24">
|
|
91
|
-
<
|
|
91
|
+
<x-card :loadState="lostContactLoadState" :retry="getDeviceLostContactCountData">
|
|
92
|
+
<div id="lostContactContainer" style="padding: 0 0 0 20px;height: 370px" />
|
|
93
|
+
</x-card>
|
|
92
94
|
</a-col>
|
|
93
95
|
<a-col :lg="12" :md="12" :sm="24" :xl="8" :xs="24">
|
|
94
|
-
<
|
|
96
|
+
<x-card :loadState="lostContactRankLoadState" :retry="getDeviceLostContactCountData">
|
|
97
|
+
<rank-list :list="lostContactRank" title="失联天数排行"/>
|
|
98
|
+
</x-card>
|
|
95
99
|
</a-col>
|
|
96
100
|
</a-row>
|
|
97
101
|
</a-tab-pane>
|
|
@@ -102,26 +106,26 @@
|
|
|
102
106
|
<div :class="!isMobile && 'desktop'" class="antd-pro-pages-dashboard-analysis-twoColLayout">
|
|
103
107
|
<a-row :gutter="24" :style="{ marginTop: '24px' }" type="flex">
|
|
104
108
|
<a-col :lg="24" :md="24" :sm="24" :xl="12" :xs="24">
|
|
105
|
-
<a-card :bordered="false" :loading="loading" :style="{ height: '100%' }" title="
|
|
109
|
+
<a-card :bordered="false" :loading="loading" :style="{ height: '100%' }" title="异常报警分析">
|
|
106
110
|
<a-dropdown slot="extra" :trigger="['click']" placement="bottomLeft">
|
|
107
111
|
<a class="ant-dropdown-link" href="#">
|
|
108
112
|
<a-icon type="ellipsis" />
|
|
109
113
|
</a>
|
|
110
114
|
<a-menu slot="overlay">
|
|
111
115
|
<a-menu-item>
|
|
112
|
-
<a href="javascript:"
|
|
116
|
+
<a href="javascript:">异常处理</a>
|
|
113
117
|
</a-menu-item>
|
|
114
118
|
<a-menu-item>
|
|
115
|
-
<a href="javascript;"
|
|
119
|
+
<a href="javascript;">转向异常</a>
|
|
116
120
|
</a-menu-item>
|
|
117
121
|
</a-menu>
|
|
118
122
|
</a-dropdown>
|
|
119
123
|
<a-row :gutter="68">
|
|
120
124
|
<a-col :sm="12" :style="{ marginBottom: ' 24px'}" :xs="24">
|
|
121
|
-
<number-info :sub-total="
|
|
125
|
+
<number-info :sub-total="0" :total="0">
|
|
122
126
|
<span slot="subtitle">
|
|
123
|
-
<span
|
|
124
|
-
<a-tooltip slot="action" title="
|
|
127
|
+
<span>异常发生次数</span>
|
|
128
|
+
<a-tooltip slot="action" title="近一年内发生异常的次数">
|
|
125
129
|
<a-icon :style="{ marginLeft: '8px' }" type="info-circle-o" />
|
|
126
130
|
</a-tooltip>
|
|
127
131
|
</span>
|
|
@@ -132,10 +136,10 @@
|
|
|
132
136
|
</div>
|
|
133
137
|
</a-col>
|
|
134
138
|
<a-col :sm="12" :style="{ marginBottom: ' 24px'}" :xs="24">
|
|
135
|
-
<number-info :sub-total="0
|
|
139
|
+
<number-info :sub-total="0" :total="0" status="up">
|
|
136
140
|
<span slot="subtitle">
|
|
137
|
-
<span
|
|
138
|
-
<a-tooltip slot="action" title="
|
|
141
|
+
<span>报警发生次数</span>
|
|
142
|
+
<a-tooltip slot="action" title="近一年内发生报警的次数">
|
|
139
143
|
<a-icon :style="{ marginLeft: '8px' }" type="info-circle-o" />
|
|
140
144
|
</a-tooltip>
|
|
141
145
|
</span>
|
|
@@ -209,32 +213,11 @@ import {
|
|
|
209
213
|
MiniSmoothArea
|
|
210
214
|
} from '@vue2-client/components'
|
|
211
215
|
import { formatDate } from '@vue2-client/utils/util'
|
|
212
|
-
import { Line } from '@antv/g2plot'
|
|
216
|
+
import { Line, Column } from '@antv/g2plot'
|
|
213
217
|
import { mapState } from 'vuex'
|
|
214
218
|
import { post } from '@vue2-client/services/api'
|
|
215
219
|
import { DeviceDetailsCountApi } from '@vue2-client/services/api/iot/DeviceDetailsView/DeviceDetailsCountApi'
|
|
216
220
|
|
|
217
|
-
const barData = []
|
|
218
|
-
const barData2 = []
|
|
219
|
-
for (let i = 0; i < 12; i += 1) {
|
|
220
|
-
barData.push({
|
|
221
|
-
x: `${i + 1}月`,
|
|
222
|
-
y: Math.floor(Math.random() * 1000) + 200
|
|
223
|
-
})
|
|
224
|
-
barData2.push({
|
|
225
|
-
x: `${i + 1}月`,
|
|
226
|
-
y: Math.floor(Math.random() * 1000) + 200
|
|
227
|
-
})
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
const rankList = []
|
|
231
|
-
for (let i = 0; i < 7; i++) {
|
|
232
|
-
rankList.push({
|
|
233
|
-
name: '白鹭岛 ' + (i + 1) + ' 号店',
|
|
234
|
-
total: 1234.56 - i * 100
|
|
235
|
-
})
|
|
236
|
-
}
|
|
237
|
-
|
|
238
221
|
const searchUserData = []
|
|
239
222
|
for (let i = 0; i < 7; i++) {
|
|
240
223
|
searchUserData.push({
|
|
@@ -249,7 +232,7 @@ const searchUserScale = [
|
|
|
249
232
|
},
|
|
250
233
|
{
|
|
251
234
|
dataKey: 'y',
|
|
252
|
-
alias: '
|
|
235
|
+
alias: '发生次数',
|
|
253
236
|
min: 0,
|
|
254
237
|
max: 10
|
|
255
238
|
}]
|
|
@@ -257,46 +240,25 @@ const searchUserScale = [
|
|
|
257
240
|
const searchTableColumns = [
|
|
258
241
|
{
|
|
259
242
|
dataIndex: 'index',
|
|
260
|
-
title: '
|
|
243
|
+
title: '异常类型',
|
|
261
244
|
width: 90
|
|
262
245
|
},
|
|
263
246
|
{
|
|
264
247
|
dataIndex: 'keyword',
|
|
265
|
-
title: '
|
|
248
|
+
title: '异常说明'
|
|
266
249
|
},
|
|
267
250
|
{
|
|
268
251
|
dataIndex: 'count',
|
|
269
|
-
title: '
|
|
252
|
+
title: '发生时间'
|
|
270
253
|
},
|
|
271
254
|
{
|
|
272
255
|
dataIndex: 'range',
|
|
273
|
-
title: '
|
|
274
|
-
align: 'right'
|
|
275
|
-
sorter: (a, b) => a.range - b.range,
|
|
276
|
-
scopedSlots: { customRender: 'range' }
|
|
256
|
+
title: '是否处理',
|
|
257
|
+
align: 'right'
|
|
277
258
|
}
|
|
278
259
|
]
|
|
279
260
|
|
|
280
|
-
const userInfoArray = [
|
|
281
|
-
'德昌鸿公司2',
|
|
282
|
-
'瑞鑫宇公司',
|
|
283
|
-
'保康县熊绎中学',
|
|
284
|
-
'文康置业有限公司',
|
|
285
|
-
'湖北省旗星文化旅游实业有限公司'
|
|
286
|
-
]
|
|
287
|
-
|
|
288
261
|
const searchData = []
|
|
289
|
-
let j = 0
|
|
290
|
-
for (let i = 0; i < 5; i += 1) {
|
|
291
|
-
searchData.push({
|
|
292
|
-
index: Math.floor(Math.random() * 10000000),
|
|
293
|
-
keyword: userInfoArray[j],
|
|
294
|
-
count: Math.floor(Math.random() * 1000),
|
|
295
|
-
range: Math.floor(Math.random() * 10),
|
|
296
|
-
status: Math.floor((Math.random() * 10) % 2)
|
|
297
|
-
})
|
|
298
|
-
j++
|
|
299
|
-
}
|
|
300
262
|
|
|
301
263
|
const DataSet = require('@antv/data-set')
|
|
302
264
|
|
|
@@ -381,16 +343,27 @@ export default {
|
|
|
381
343
|
deviceInstructRateOfColor: 'rgb(19, 194, 194)',
|
|
382
344
|
// 设备指令下发成功率加载状态
|
|
383
345
|
deviceInstructRateOfSuccessLoadState: 'loading',
|
|
346
|
+
|
|
347
|
+
// 是否刷新加载中
|
|
348
|
+
loading: false,
|
|
349
|
+
// 统计模式
|
|
350
|
+
countMode: 'now',
|
|
351
|
+
// 统计类型
|
|
352
|
+
tabActiveKey: '1',
|
|
384
353
|
// >> 设备上报情况统计
|
|
385
|
-
// 上报统计模式
|
|
386
|
-
uploadCountMode: 'now',
|
|
387
354
|
// 上报统计图表
|
|
388
355
|
uploadCountPlot: undefined,
|
|
389
356
|
// 抄表情况分析Loading
|
|
390
357
|
radarLoadState: 'loading',
|
|
391
|
-
//
|
|
392
|
-
|
|
393
|
-
|
|
358
|
+
// >> 设备失联情况统计
|
|
359
|
+
// 失联统计图表
|
|
360
|
+
lostContactCountPlot: undefined,
|
|
361
|
+
// 失联情况分析Loading
|
|
362
|
+
lostContactLoadState: 'loading',
|
|
363
|
+
// 失联天数排行榜
|
|
364
|
+
lostContactRank: [],
|
|
365
|
+
// 失联天数排行榜Loading
|
|
366
|
+
lostContactRankLoadState: 'loading',
|
|
394
367
|
|
|
395
368
|
// 搜索用户数
|
|
396
369
|
searchUserData,
|
|
@@ -398,9 +371,6 @@ export default {
|
|
|
398
371
|
searchTableColumns,
|
|
399
372
|
searchData,
|
|
400
373
|
|
|
401
|
-
barData,
|
|
402
|
-
barData2,
|
|
403
|
-
|
|
404
374
|
//
|
|
405
375
|
pieScale,
|
|
406
376
|
pieData,
|
|
@@ -513,6 +483,30 @@ export default {
|
|
|
513
483
|
format (date, format) {
|
|
514
484
|
return formatDate(date, format)
|
|
515
485
|
},
|
|
486
|
+
/**
|
|
487
|
+
* 切换周期
|
|
488
|
+
*/
|
|
489
|
+
toggleCountMode () {
|
|
490
|
+
this.updateDataByKey()
|
|
491
|
+
},
|
|
492
|
+
/**
|
|
493
|
+
* Tab切换
|
|
494
|
+
*/
|
|
495
|
+
handleTabChange (key) {
|
|
496
|
+
this.tabActiveKey = key + ''
|
|
497
|
+
this.updateDataByKey()
|
|
498
|
+
},
|
|
499
|
+
/**
|
|
500
|
+
* 根据模式更新数据
|
|
501
|
+
*/
|
|
502
|
+
updateDataByKey () {
|
|
503
|
+
if (this.tabActiveKey === '1') {
|
|
504
|
+
this.getDeviceUploadCountData()
|
|
505
|
+
} else {
|
|
506
|
+
this.getDeviceLostContactCountData()
|
|
507
|
+
this.getDeviceLostContactRankData()
|
|
508
|
+
}
|
|
509
|
+
},
|
|
516
510
|
/**
|
|
517
511
|
* 获取设备上报情况
|
|
518
512
|
*/
|
|
@@ -522,46 +516,107 @@ export default {
|
|
|
522
516
|
method: 'POST',
|
|
523
517
|
body: JSON.stringify({
|
|
524
518
|
deviceId: this.deviceId,
|
|
525
|
-
type: this.
|
|
519
|
+
type: this.countMode
|
|
526
520
|
})
|
|
527
521
|
}).then((res) => res.json())
|
|
528
522
|
.then((data) => {
|
|
523
|
+
const count = data.count
|
|
524
|
+
const plotOption = {
|
|
525
|
+
data: count,
|
|
526
|
+
xField: 'date',
|
|
527
|
+
yField: 'value',
|
|
528
|
+
seriesField: 'name',
|
|
529
|
+
yAxis: {
|
|
530
|
+
label: {
|
|
531
|
+
// 数值格式化为千分位
|
|
532
|
+
formatter: (v) => `${v}`.replace(/\d{1,3}(?=(\d{3})+$)/g, (s) => `${s},`)
|
|
533
|
+
}
|
|
534
|
+
},
|
|
535
|
+
tooltip: {
|
|
536
|
+
shared: true
|
|
537
|
+
},
|
|
538
|
+
interactions: [{ type: 'brush' }],
|
|
539
|
+
slider: {
|
|
540
|
+
start: 0,
|
|
541
|
+
end: 1
|
|
542
|
+
},
|
|
543
|
+
legend: {
|
|
544
|
+
position: 'top',
|
|
545
|
+
radio: true,
|
|
546
|
+
flipPage: false
|
|
547
|
+
},
|
|
548
|
+
smooth: true
|
|
549
|
+
}
|
|
550
|
+
if (data.legendStyle) {
|
|
551
|
+
plotOption.legend.selected = data.legendStyle
|
|
552
|
+
}
|
|
529
553
|
if (this.uploadCountPlot) {
|
|
530
|
-
this.uploadCountPlot.
|
|
554
|
+
this.uploadCountPlot.update(plotOption)
|
|
531
555
|
} else {
|
|
532
|
-
this.uploadCountPlot = new Line('container',
|
|
556
|
+
this.uploadCountPlot = new Line('container', plotOption)
|
|
557
|
+
this.uploadCountPlot.render()
|
|
558
|
+
}
|
|
559
|
+
this.radarLoadState = 'success'
|
|
560
|
+
})
|
|
561
|
+
.catch((ex) => {
|
|
562
|
+
console.error(ex)
|
|
563
|
+
this.radarLoadState = 'error'
|
|
564
|
+
})
|
|
565
|
+
},
|
|
566
|
+
/**
|
|
567
|
+
* 获取设备失联情况
|
|
568
|
+
*/
|
|
569
|
+
getDeviceLostContactCountData () {
|
|
570
|
+
this.lostContactLoadState = 'loading'
|
|
571
|
+
fetch(DeviceDetailsCountApi.getDeviceLostContactCountData, {
|
|
572
|
+
method: 'POST',
|
|
573
|
+
body: JSON.stringify({
|
|
574
|
+
deviceId: this.deviceId,
|
|
575
|
+
type: this.countMode
|
|
576
|
+
})
|
|
577
|
+
}).then((res) => res.json())
|
|
578
|
+
.then((data) => {
|
|
579
|
+
if (this.lostContactCountPlot) {
|
|
580
|
+
this.lostContactCountPlot.changeData(data)
|
|
581
|
+
} else {
|
|
582
|
+
this.lostContactCountPlot = new Column('lostContactContainer', {
|
|
533
583
|
data,
|
|
534
|
-
xField: '
|
|
535
|
-
yField: '
|
|
536
|
-
|
|
537
|
-
yAxis: {
|
|
584
|
+
xField: '失联日期',
|
|
585
|
+
yField: '失联天数',
|
|
586
|
+
xAxis: {
|
|
538
587
|
label: {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
}
|
|
588
|
+
autoRotate: false,
|
|
589
|
+
},
|
|
542
590
|
},
|
|
543
|
-
tooltip: {
|
|
544
|
-
shared: true
|
|
545
|
-
},
|
|
546
|
-
interactions: [{ type: 'brush' }],
|
|
547
591
|
slider: {
|
|
548
|
-
start: 0
|
|
592
|
+
start: 0,
|
|
549
593
|
end: 1
|
|
550
|
-
}
|
|
551
|
-
legend: {
|
|
552
|
-
position: 'top',
|
|
553
|
-
radio: true
|
|
554
|
-
},
|
|
555
|
-
smooth: true
|
|
594
|
+
}
|
|
556
595
|
})
|
|
557
|
-
this.
|
|
596
|
+
this.lostContactCountPlot.render()
|
|
558
597
|
}
|
|
559
|
-
this.
|
|
598
|
+
this.lostContactLoadState = 'success'
|
|
560
599
|
})
|
|
561
600
|
.catch((ex) => {
|
|
562
601
|
console.error(ex)
|
|
563
|
-
this.
|
|
602
|
+
this.lostContactLoadState = 'error'
|
|
564
603
|
})
|
|
604
|
+
},
|
|
605
|
+
/**
|
|
606
|
+
* 获取设备失联排行榜
|
|
607
|
+
*/
|
|
608
|
+
getDeviceLostContactRankData () {
|
|
609
|
+
this.lostContactRankLoadState = 'loading'
|
|
610
|
+
post(DeviceDetailsCountApi.getDeviceLostContactRankData, {
|
|
611
|
+
deviceId: this.deviceId,
|
|
612
|
+
type: this.countMode
|
|
613
|
+
}).then(res => {
|
|
614
|
+
this.lostContactRank = res
|
|
615
|
+
this.lostContactRankLoadState = 'success'
|
|
616
|
+
}, err => {
|
|
617
|
+
console.warn(err)
|
|
618
|
+
this.lostContactRankLoadState = 'error'
|
|
619
|
+
})
|
|
565
620
|
}
|
|
566
621
|
}
|
|
567
622
|
}
|
|
@@ -8,7 +8,11 @@ const DeviceDetailsCountApi = {
|
|
|
8
8
|
// 获取设备指令下发成功率
|
|
9
9
|
getInstructRateOfSuccess: '/webmeterapi/getInstructRateOfSuccess',
|
|
10
10
|
// 获取设备上报情况
|
|
11
|
-
getDeviceUploadCountData: '/webmeterapi/getDeviceUploadCountData'
|
|
11
|
+
getDeviceUploadCountData: '/webmeterapi/getDeviceUploadCountData',
|
|
12
|
+
// 获取设备失联情况
|
|
13
|
+
getDeviceLostContactCountData: '/webmeterapi/getDeviceLostContactCountData',
|
|
14
|
+
// 获取设备失联排行榜
|
|
15
|
+
getDeviceLostContactRankData: '/webmeterapi/getDeviceLostContactRankData'
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
export { DeviceDetailsCountApi }
|