Commit c2dccd7dd0ed048726704a87ace5c8f665b47634
Merge branch 'dev-ft' into 'main'
refractor:重新抽取所有页面样式问题,feat:通知详情新增图片显示 See merge request huang/thingskit-app!16
Showing
35 changed files
with
2008 additions
and
1498 deletions
... | ... | @@ -57,7 +57,7 @@ |
57 | 57 | // 主页页面的页面路径 |
58 | 58 | // 关联功能:打开的页面只有一个的时候右上角自动显示返回首页按钮,下面这个数组是排除显示返回首页的页面。 |
59 | 59 | // 主页使用场景:小程序分享出去的页面,用户点击开是分享页面,很多情况下是没有返回首页按钮的 |
60 | - const mainPagePath = ['pages/index/index', 'pages/goods/goods', 'pages/device/device', 'pages/personal/personal','pages/alert/alert', ]; | |
60 | + const mainPagePath = ['pages/index/index', 'pages/goods/goods', 'pages/device/device', 'pages/personal/personal','pages/alarm/alarm', ]; | |
61 | 61 | //返回首页的地址 |
62 | 62 | const homePath = '/pages/index/index'; |
63 | 63 | //白色表达值 | ... | ... |
... | ... | @@ -97,7 +97,7 @@ export default { |
97 | 97 | }, |
98 | 98 | { |
99 | 99 | name: '告警', |
100 | - url: 'pages/alert/alert', | |
100 | + url: 'pages/alarm/alarm', | |
101 | 101 | icon: '../../../static/alert-un.png', |
102 | 102 | iconFill: '../../../static/alert-yes.png', |
103 | 103 | badge: 0 |
... | ... | @@ -141,7 +141,7 @@ export default { |
141 | 141 | }, |
142 | 142 | onTabbar(index) { |
143 | 143 | if (index !== 5) { |
144 | - this.loadData(); | |
144 | + // this.loadData(); | |
145 | 145 | } |
146 | 146 | if (this.path !== this.list[index].url) { |
147 | 147 | uni.switchTab({ | ... | ... |
... | ... | @@ -5,6 +5,7 @@ let baseUrl = ""; |
5 | 5 | if (process.env.NODE_ENV === 'development') { |
6 | 6 | // 开发环境 |
7 | 7 | baseUrl = 'http://47.99.141.212:8080/api' |
8 | + // baseUrl = 'http://192.168.10.103:8080/api' | |
8 | 9 | // baseUrl = 'http://192.168.1.228/fan_php/public/index.php' |
9 | 10 | } else if (process.env.NODE_ENV === 'production') { |
10 | 11 | // 生产环境 | ... | ... |
... | ... | @@ -21,13 +21,13 @@ |
21 | 21 | } |
22 | 22 | }, |
23 | 23 | { |
24 | - "path": "pages/alert/alert", | |
24 | + "path": "pages/alarm/alarm", | |
25 | 25 | "style": { |
26 | 26 | "navigationBarTitleText": "告警" |
27 | 27 | } |
28 | 28 | }, |
29 | 29 | { |
30 | - "path": "pages/alert/alertDetail", | |
30 | + "path": "pages/alarm/alarmDetail", | |
31 | 31 | "style": { |
32 | 32 | "navigationBarTitleText": "告警详情" |
33 | 33 | } |
... | ... | @@ -93,7 +93,7 @@ |
93 | 93 | "navigationBarTitleText": "组织筛选" |
94 | 94 | } |
95 | 95 | }, { |
96 | - "path": "pages/index/orgStatus/orgStatus", | |
96 | + "path": "pages/index/configuration/configuration", | |
97 | 97 | "style": { |
98 | 98 | "navigationBarTitleText": "查看组态" |
99 | 99 | } |
... | ... | @@ -107,14 +107,14 @@ |
107 | 107 | |
108 | 108 | }, |
109 | 109 | { |
110 | - "path": "pages/index/orgStatus/statusDetail", | |
110 | + "path": "pages/index/configuration/configurationDetail", | |
111 | 111 | "style": { |
112 | 112 | "navigationBarTitleText": "组态详情" |
113 | 113 | } |
114 | 114 | |
115 | 115 | }, |
116 | 116 | { |
117 | - "path": "pages/alert/org/org", | |
117 | + "path": "pages/alarm/org/org", | |
118 | 118 | "style": { |
119 | 119 | "navigationBarTitleText": "组织筛选" |
120 | 120 | } |
... | ... | @@ -148,7 +148,7 @@ |
148 | 148 | "text": "设备" |
149 | 149 | }, |
150 | 150 | { |
151 | - "pagePath": "pages/alert/alert", | |
151 | + "pagePath": "pages/alarm/alarm", | |
152 | 152 | "iconPath": "static/basics.png", |
153 | 153 | "selectedIconPath": "static/basics.png", |
154 | 154 | "text": "告警" | ... | ... |
pages/alarm/alarm.vue
0 → 100644
1 | +<template> | |
2 | + <view class="alert-page"> | |
3 | + <f-navbar> | |
4 | + <view class="u-flex filter" slot="right"> | |
5 | + <view class="filter-input"><u--input prefixIcon="search" placeholder="输入设备SN或名称搜索" border="surround" shape="circle"></u--input></view> | |
6 | + <view class="filter-text"> | |
7 | + <view><text class="text">筛选</text></view> | |
8 | + </view> | |
9 | + <view class="filter-icon"><image class="image" @click="openSearchDialog" src="../../static/shaixuan.png"></image></view> | |
10 | + </view> | |
11 | + </f-navbar> | |
12 | + <!-- 公共组件-每个页面必须引入 --> | |
13 | + <public-module></public-module> | |
14 | + <view @click="openOrg" class="org-sty"> | |
15 | + <view class="org-item"> | |
16 | + <view class="u-flex item"><text class="text">组织关系</text></view> | |
17 | + <view class="u-flex item-child"> | |
18 | + <image class="image" src="../../static/org.png" mode=""></image> | |
19 | + <text class="text">告警数:{{ alertTotal }}</text> | |
20 | + </view> | |
21 | + </view> | |
22 | + <view class="org-item "><image class="org-image" src="../../static/right-arrow.png"></image></view> | |
23 | + </view> | |
24 | + <!-- 自带分页组件 --> | |
25 | + <mescroll-body ref="mescrollRef" :up="upOption" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback"> | |
26 | + <view class="device-list"> | |
27 | + <view @click="openAlertDetail(item)" class="list-item" v-for="(item, index) in list" :key="index"> | |
28 | + <view class="u-flex item"> | |
29 | + <view class="item-text"> | |
30 | + <text class="text-three">{{ item.deviceName == null ? '暂无数据' : item.deviceName }}</text> | |
31 | + </view> | |
32 | + <view class="item-text"> | |
33 | + <text class="text">{{ item.details == null ? '暂无数据' : item.details.data }}</text> | |
34 | + </view> | |
35 | + <view class="item-text"> | |
36 | + <text class="text"> | |
37 | + {{ | |
38 | + item.status == 'CLEARED_UNACK' | |
39 | + ? '清除未确认' | |
40 | + : item.status == 'ACTIVE_UNACK' | |
41 | + ? '激活未确认' | |
42 | + : item.status == 'CLEARED_ACK' | |
43 | + ? '清除已确认' | |
44 | + : '激活已确认' | |
45 | + }} | |
46 | + </text> | |
47 | + </view> | |
48 | + <view class="item-text"> | |
49 | + <text class="text-nine">{{ item.createdTime }}</text> | |
50 | + </view> | |
51 | + </view> | |
52 | + <view class="item"> | |
53 | + <view class="u-flex item-right"> | |
54 | + <image class="right-image" :src="bindImageUrl(item.severity)"></image> | |
55 | + <view class="right-text"> | |
56 | + <text | |
57 | + :style="[ | |
58 | + item.severity == 'CRITICAL' | |
59 | + ? { color: '#DE4437' } | |
60 | + : item.severity == 'MAJOR' | |
61 | + ? { color: '#DE7337' } | |
62 | + : item.severity == 'MINOR' | |
63 | + ? { color: '#FFC107' } | |
64 | + : item.severity == 'WARNING' | |
65 | + ? { color: '#DE4437' } | |
66 | + : { color: '#00C9A7' } | |
67 | + ]" | |
68 | + > | |
69 | + {{ | |
70 | + item.severity == 'CRITICAL' | |
71 | + ? '危险' | |
72 | + : item.severity == 'MAJOR' | |
73 | + ? '重要' | |
74 | + : item.severity == 'MINOR' | |
75 | + ? '次要' | |
76 | + : item.severity == 'WARNING' | |
77 | + ? '警告' | |
78 | + : '不确定' | |
79 | + }} | |
80 | + </text> | |
81 | + </view> | |
82 | + </view> | |
83 | + </view> | |
84 | + </view> | |
85 | + </view> | |
86 | + </mescroll-body> | |
87 | + <!-- 自带分页组件 --> | |
88 | + <view style="height: 20rpx"></view> | |
89 | + <!-- 告警筛选 --> | |
90 | + <u-popup @close="close" closeable bgColor="transparent" :overlay="true" :show="show" mode="bottom"> | |
91 | + <view class="popup-page"> | |
92 | + <view class="popup-text"><text class="text">筛选条件</text></view> | |
93 | + <view class="popup-alarm-page u-flex"> | |
94 | + <view> | |
95 | + <view class="popup-alarm-text"><text class="text">告警状态</text></view> | |
96 | + <view class="u-flex popup-alarm-child"> | |
97 | + <view | |
98 | + class="alarm-text" | |
99 | + @click="getAlertStatus(item, index)" | |
100 | + :style="[index == current1 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
101 | + v-for="(item, index) in alertStatus" | |
102 | + :key="index" | |
103 | + > | |
104 | + <text class="text">{{ item.name }}</text> | |
105 | + </view> | |
106 | + </view> | |
107 | + <view style="margin-top: 120rpx;"> | |
108 | + <view class="popup-alarm-text"><text class="text">设备类型</text></view> | |
109 | + <view class="u-flex popup-alarm-child"> | |
110 | + <view | |
111 | + class="alarm-text" | |
112 | + @click="getTypeStatus(item, index)" | |
113 | + :style="[index == current2 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
114 | + v-for="(item, index) in deviceType" | |
115 | + :key="index" | |
116 | + > | |
117 | + <text class="text">{{ item.name }}</text> | |
118 | + </view> | |
119 | + </view> | |
120 | + | |
121 | + <view style="margin-top: 120rpx;"> | |
122 | + <view class="popup-alarm-text"><text class="text">告警等级</text></view> | |
123 | + <view class="u-flex popup-alarm-child"> | |
124 | + <view | |
125 | + class="alarm-text" | |
126 | + @click="getLevelStatus(item, index)" | |
127 | + :style="[index == current3 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
128 | + v-for="(item, index) in alertLevel" | |
129 | + :key="index" | |
130 | + > | |
131 | + <text class="text">{{ item.name }}</text> | |
132 | + </view> | |
133 | + </view> | |
134 | + <view style="margin-top: 120rpx;"> | |
135 | + <view class="popup-alarm-text"><text class="text">选择时间</text></view> | |
136 | + <view class="u-flex popup-alarm-child"> | |
137 | + <view | |
138 | + class="alarm-text" | |
139 | + @click="getTimeStatus(item, index)" | |
140 | + :style="[index == current4 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
141 | + v-for="(item, index) in timeArea" | |
142 | + :key="index" | |
143 | + > | |
144 | + <text class="text">{{ item.name }}</text> | |
145 | + </view> | |
146 | + </view> | |
147 | + <view style="margin-top: 120rpx;"> | |
148 | + <view class="u-flex popup-alarm-child"> | |
149 | + <view> | |
150 | + <u--form | |
151 | + :label-style="{ 'font-size': '29rpx', 'margin-left': '10rpx' }" | |
152 | + labelPosition="left" | |
153 | + :model="timeData" | |
154 | + :rules="rules" | |
155 | + ref="form1" | |
156 | + > | |
157 | + <u-form-item | |
158 | + style="font-size: 14px" | |
159 | + label="选择日期" | |
160 | + prop="selectTime" | |
161 | + labelWidth="80" | |
162 | + borderBottom | |
163 | + @click=" | |
164 | + showCalendar = true; | |
165 | + hideKeyboard(); | |
166 | + " | |
167 | + > | |
168 | + <u--input v-model="timeData.selectTime" placeholder="请选择日期" border="none"></u--input> | |
169 | + </u-form-item> | |
170 | + </u--form> | |
171 | + </view> | |
172 | + </view> | |
173 | + </view> | |
174 | + <view class="u-flex" style="flex-direction: row; margin-top: 128rpx; margin-left: 10rpx"> | |
175 | + <view style="width: 300rpx"><u-button @click="resetData" type="info" shape="circle" text="重置"></u-button></view> | |
176 | + <view style="width: 300rpx; margin-left: 46rpx"><u-button @click="queryData" type="primary" shape="circle" text="确认"></u-button></view> | |
177 | + </view> | |
178 | + <view style="height: 30rpx;"></view> | |
179 | + </view> | |
180 | + </view> | |
181 | + </view> | |
182 | + </view> | |
183 | + </view> | |
184 | + </view> | |
185 | + </u-popup> | |
186 | + <u-calendar | |
187 | + :show="showCalendar" | |
188 | + mode="range" | |
189 | + @confirm="calendarConfirm" | |
190 | + @close="calendarClose" | |
191 | + startText="开始时间" | |
192 | + endText="结束时间" | |
193 | + confirmDisabledText="请选择日期" | |
194 | + :formatter="formatter" | |
195 | + ></u-calendar> | |
196 | + <f-tabbar></f-tabbar> | |
197 | + </view> | |
198 | +</template> | |
199 | + | |
200 | +<script> | |
201 | +import fTabbar from '@/components/module/f-tabbar/f-tabbar'; | |
202 | +import fNavbar from '@/components/module/f-navbar/f-navbar'; | |
203 | +import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js'; | |
204 | +import { pageNumber, pageSize } from '@/config/constant.js'; | |
205 | +import { alertStatus, deviceType, alertLevel, timeArea } from './static/data.js'; | |
206 | + | |
207 | +export default { | |
208 | + mixins: [MescrollMixin], // 使用mixin (在main.js注册全局组件) | |
209 | + components: { | |
210 | + fTabbar, | |
211 | + fNavbar | |
212 | + }, | |
213 | + data() { | |
214 | + return { | |
215 | + alertStatusVal: '', | |
216 | + deviceTypeVal: '', | |
217 | + alertLevelVal: '', | |
218 | + selectTimeVal: '', | |
219 | + startTime: '', | |
220 | + endTime: '', | |
221 | + current1: 0, | |
222 | + current2: 0, | |
223 | + current3: 0, | |
224 | + current4: 0, | |
225 | + page: { | |
226 | + num: 0, | |
227 | + size: 10 | |
228 | + }, | |
229 | + downOption: { | |
230 | + auto: false //是否在初始化后,自动执行downCallback; 默认true | |
231 | + }, | |
232 | + upOption: { | |
233 | + auto: false // 不自动加载 | |
234 | + }, | |
235 | + timeData: { | |
236 | + selectTime: '', | |
237 | + getTimeGap: '', | |
238 | + getDateVal: '' | |
239 | + }, | |
240 | + showCalendar: false, | |
241 | + show: false, | |
242 | + list: [], | |
243 | + alertStatus, | |
244 | + deviceType, | |
245 | + alertLevel, | |
246 | + timeArea, | |
247 | + ordId: '', | |
248 | + detailStatus: false, | |
249 | + alertTotal: 0 | |
250 | + }; | |
251 | + }, | |
252 | + onShow() { | |
253 | + if (this.detailStatus) { | |
254 | + this.loadData(1, null, null, null, null, null, null); | |
255 | + } | |
256 | + if (this.ordId == '') { | |
257 | + } else { | |
258 | + this.loadData(1, null, null, null, null, null, this.ordId); | |
259 | + } | |
260 | + }, | |
261 | + onHide() { | |
262 | + this.ordId = ''; | |
263 | + this.detailStatus = false; | |
264 | + this.loadData(1, null, null, null, null, null, null); | |
265 | + }, | |
266 | + onLoad(e) { | |
267 | + // 隐藏原生的tabbar | |
268 | + uni.hideTabBar(); | |
269 | + if (e.type !== undefined) { | |
270 | + let params = JSON.parse(e.type); | |
271 | + let type; | |
272 | + if (Array.isArray(params)) { | |
273 | + // type = params.join(','); | |
274 | + type = params[0]; | |
275 | + } else { | |
276 | + type = params; | |
277 | + } | |
278 | + this.loadData(1, type, null, null, null, null, null); | |
279 | + } else { | |
280 | + this.loadData(1, null, null, null, null, null, null); | |
281 | + } | |
282 | + }, | |
283 | + methods: { | |
284 | + getAlertStatus(e, i) { | |
285 | + this.current1 = i; | |
286 | + this.alertStatusVal = e.value; | |
287 | + }, | |
288 | + getTypeStatus(e, i) { | |
289 | + this.current2 = i; | |
290 | + this.deviceTypeVal = e.value; | |
291 | + }, | |
292 | + getLevelStatus(e, i) { | |
293 | + this.current3 = i; | |
294 | + this.alertLevelVal = e.value; | |
295 | + }, | |
296 | + getTimeStatus(e, i) { | |
297 | + this.current4 = i; | |
298 | + this.selectTimeVal = e.value; | |
299 | + }, | |
300 | + queryData() { | |
301 | + let date1 = new Date(this.timeData.getDateVal[0]); | |
302 | + let date2 = new Date(this.timeData.getDateVal[this.timeData.getDateVal.length - 1]); | |
303 | + let startTimeVa, endTimeVa; | |
304 | + if (this.timeData.getDateVal.length == 0) { | |
305 | + startTimeVa = ''; | |
306 | + endTimeVa = ''; | |
307 | + } else { | |
308 | + startTimeVa = date1.getTime(); | |
309 | + endTimeVa = date2.getTime(); | |
310 | + } | |
311 | + this.loadData(1, this.alertStatusVal, startTimeVa, endTimeVa, this.alertLevelVal, this.deviceTypeVal); | |
312 | + this.show = false; | |
313 | + }, | |
314 | + resetData() { | |
315 | + this.current1 = 0; | |
316 | + this.alertStatusVal = ''; | |
317 | + this.current2 = 0; | |
318 | + this.deviceTypeVal = ''; | |
319 | + this.current3 = 0; | |
320 | + this.alertLevelVal = ''; | |
321 | + this.current4 = 0; | |
322 | + this.selectTimeVal = ''; | |
323 | + this.timeData.getDateVal = ''; | |
324 | + this.timeData.selectTime = ''; | |
325 | + }, | |
326 | + bindImageUrl(e) { | |
327 | + switch (e) { | |
328 | + case 'CRITICAL': | |
329 | + return '../../static/danger.png'; | |
330 | + break; | |
331 | + case 'MAJOR': | |
332 | + return '../../static/major.png'; | |
333 | + break; | |
334 | + case 'MINOR': | |
335 | + return '../../static/secondary.png'; | |
336 | + break; | |
337 | + case 'WARNING': | |
338 | + return '../../static/danger.png'; | |
339 | + break; | |
340 | + case 'INDETERMINATE': | |
341 | + return '../../static/noshue.png'; | |
342 | + break; | |
343 | + default: | |
344 | + return ''; | |
345 | + break; | |
346 | + } | |
347 | + }, | |
348 | + /*下拉刷新的回调 */ | |
349 | + downCallback() { | |
350 | + //联网加载数据 | |
351 | + this.list.length = 0; | |
352 | + this.page.num = 1; | |
353 | + this.loadData(1); | |
354 | + }, | |
355 | + /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */ | |
356 | + upCallback() { | |
357 | + //联网加载数据 | |
358 | + this.page.num += 1; | |
359 | + this.loadData(this.page.num); | |
360 | + }, | |
361 | + loadData(pageNo, statusV, startTimeV, endTimeV, severityV, deviceTypeV, organizationV) { | |
362 | + let httpData = { | |
363 | + page: pageNo, | |
364 | + pageSize: 10, | |
365 | + status: statusV, | |
366 | + startTime: startTimeV, | |
367 | + endTime: endTimeV, | |
368 | + severity: severityV, | |
369 | + deviceType: deviceTypeV, | |
370 | + organizationId: organizationV | |
371 | + }; | |
372 | + uni.$u.http | |
373 | + .get('/yt/alarm', { params: httpData, custom: { load: false } }) | |
374 | + .then(res => { | |
375 | + uni.stopPullDownRefresh(); | |
376 | + this.mescroll.endByPage(res.items.length, res.total); | |
377 | + this.alertTotal = res.total; | |
378 | + if (pageNo == 1) { | |
379 | + this.list = res.items; | |
380 | + } else { | |
381 | + this.list = this.list.concat(res.items); | |
382 | + } | |
383 | + }) | |
384 | + .catch(e => { | |
385 | + uni.$u.toast(e.data.message); | |
386 | + //联网失败, 结束加载 | |
387 | + this.mescroll.endErr(); | |
388 | + }); | |
389 | + }, | |
390 | + openOrg() { | |
391 | + uni.navigateTo({ | |
392 | + url: './org/org' | |
393 | + }); | |
394 | + }, | |
395 | + open() {}, | |
396 | + close() { | |
397 | + this.show = false; | |
398 | + }, | |
399 | + openSearchDialog() { | |
400 | + this.show = true; | |
401 | + this.resetData(); | |
402 | + }, | |
403 | + hideKeyboard() { | |
404 | + uni.hideKeyboard(); | |
405 | + }, | |
406 | + calendarConfirm(e) { | |
407 | + this.showCalendar = false; | |
408 | + this.timeData.selectTime = `${e[0]} / ${e[e.length - 1]}`; | |
409 | + this.timeData.getDateVal = e; | |
410 | + }, | |
411 | + calendarClose() { | |
412 | + this.showCalendar = false; | |
413 | + }, | |
414 | + //跳转告警详情 | |
415 | + openAlertDetail(e) { | |
416 | + let obj = { | |
417 | + id: e.id, | |
418 | + deviceName: e.deviceName, | |
419 | + severity: e.severity, | |
420 | + originatorType: e.originatorType, | |
421 | + details: e.details, | |
422 | + createdTime: e.createdTime, | |
423 | + status: e.status | |
424 | + }; | |
425 | + uni.navigateTo({ | |
426 | + url: './alarmDetail?data=' + JSON.stringify(obj) | |
427 | + }); | |
428 | + } | |
429 | + } | |
430 | +}; | |
431 | +</script> | |
432 | + | |
433 | +<style lang="scss" scoped> | |
434 | +@import './static/alarm.scss'; | |
435 | +</style> | ... | ... |
pages/alarm/alarmDetail.vue
renamed from
pages/alert/alertDetail.vue
1 | 1 | <template> |
2 | - <view class="alert-detail-page"> | |
2 | + <view class="alarm-detail-page"> | |
3 | 3 | <!-- 公共组件-每个页面必须引入 --> |
4 | 4 | <public-module></public-module> |
5 | - <view style="border-radius: 20px;width: 688rpx;height: 573rpx;background-color: #FFFFFF;"> | |
6 | - <view class="u-flex" style="height: 573rpx;justify-content:space-between;flex-direction: column;align-items: center;"> | |
7 | - <view | |
8 | - class="u-flex" | |
9 | - style="flex-direction: row;justify-content: space-between;margin-top: 10rpx;line-height:68rpx;width: 614rpx;height:90rpx;text-align: left;border-bottom: 0.1rpx solid #F0F0F0;" | |
10 | - > | |
11 | - <text style="color:#333333;font-size: 15px;">{{ list.deviceName == null ? '暂无数据' : list.deviceName }}</text> | |
12 | - <image style="width: 30rpx;height: 30rpx;" src="../../static/alert-detail.png" mode=""></image> | |
5 | + <view class="alarm-detail-column"> | |
6 | + <view class="u-flex detail-column"> | |
7 | + <view class="u-flex column"> | |
8 | + <text class="text">{{ list.deviceName == null ? '暂无数据' : list.deviceName }}</text> | |
9 | + <image class="image" src="../../static/alert-detail.png"></image> | |
13 | 10 | </view> |
14 | - <view style="margin-top: 10rpx;line-height:68rpx;width: 614rpx;height:90rpx;text-align: left;border-bottom: 0.1rpx solid #F0F0F0;"> | |
15 | - <text style="color:#333333;font-size: 14px;">告警级别:</text> | |
16 | - <text style="color:#DE4437"> | |
11 | + <view class="column"> | |
12 | + <text class="text-alarm-level">告警级别:</text> | |
13 | + <text class="text-alarm-level" style="color:#DE4437"> | |
17 | 14 | {{ |
18 | 15 | list.severity == 'CRITICAL' |
19 | 16 | ? '危险' |
... | ... | @@ -27,21 +24,21 @@ |
27 | 24 | }} |
28 | 25 | </text> |
29 | 26 | </view> |
30 | - <view style="margin-top: 10rpx;line-height:68rpx;width: 614rpx;height:90rpx;text-align: left;border-bottom: 0.1rpx solid #F0F0F0;"> | |
31 | - <text style="color:#333333;font-size: 15px;">所属组织:</text> | |
32 | - <text style="color:#666666;font-size: 14px;">{{ list.originatorType }}</text> | |
27 | + <view class="column"> | |
28 | + <text class="text-alarm-level-lg">所属组织:</text> | |
29 | + <text class="text-alarm-lg">{{ list.originatorType }}</text> | |
33 | 30 | </view> |
34 | - <view style="margin-top: 10rpx;line-height:68rpx;width: 614rpx;height:90rpx;text-align: left;border-bottom: 0.1rpx solid #F0F0F0;"> | |
35 | - <text style="color:#333333;font-size: 15px;">告警值:</text> | |
36 | - <text style="color:#666666;font-size: 14px;">{{ list.details == null ? '暂无数据' : list.details.data }}</text> | |
31 | + <view class="column"> | |
32 | + <text class="text-alarm-level-lg">告警值:</text> | |
33 | + <text class="text-alarm-lg">{{ list.details == null ? '暂无数据' : list.details.data }}</text> | |
37 | 34 | </view> |
38 | - <view style="margin-top: 10rpx;line-height:68rpx;width: 614rpx;height:90rpx;text-align: left;border-bottom: 0.1rpx solid #F0F0F0;"> | |
39 | - <text style="color:#333333;font-size: 15px;">告警时间:</text> | |
40 | - <text style="color:#666666;font-size: 14px;">{{ list.createdTime }}</text> | |
35 | + <view class="column"> | |
36 | + <text class="text-alarm-level-lg">告警时间:</text> | |
37 | + <text class="text-alarm-lg">{{ list.createdTime }}</text> | |
41 | 38 | </view> |
42 | - <view style="margin-top: 10rpx;line-height:68rpx;width: 614rpx;height:90rpx;text-align: left;border-bottom: 0.1rpx solid #F0F0F0;"> | |
43 | - <text style="color:#333333;font-size: 15px;">告警状态:</text> | |
44 | - <text style="color:#DE4437;font-size: 14px;"> | |
39 | + <view class="column"> | |
40 | + <text class="text-alarm-level-lg">告警状态:</text> | |
41 | + <text class="text-alarm-status"> | |
45 | 42 | {{ |
46 | 43 | list.status == 'CLEARED_UNACK' |
47 | 44 | ? '清除未确认' |
... | ... | @@ -56,8 +53,8 @@ |
56 | 53 | </view> |
57 | 54 | </view> |
58 | 55 | <!-- #ifdef MP --> |
59 | - <view style="color:#333333,font-size:15px;margin-top: 20rpx;">处理结果</view> | |
60 | - <view style="margin-top: 20rpx;;border-radius: 20px;width: 688rpx;height: 273rpx;background-color: #FFFFFF;"> | |
56 | + <view class="handle-result" style="">处理结果</view> | |
57 | + <view class="hanle-main"> | |
61 | 58 | <u--form :label-style="{ 'font-size': '0rpx' }" style="padding-left: 26rpx;" labelPosition="left" :model="formModel" ref="form1"> |
62 | 59 | <u-form-item label="." prop="result" ref="item3"> |
63 | 60 | <view style="margin-left: -60rpx;"><u--textarea border="none" height="96" placeholder="请输入处理结果" v-model="formModel.result" count></u--textarea></view> |
... | ... | @@ -66,12 +63,14 @@ |
66 | 63 | </view> |
67 | 64 | <!-- #endif --> |
68 | 65 | <!-- #ifdef APP-PLUS --> |
69 | - <view style="color:#333333,font-size:15px;margin-top: 20rpx;">处理结果</view> | |
70 | - <view style="margin-top: 20rpx;;border-radius: 20px;width: 688rpx;height: 273rpx;background-color: #FFFFFF;"> | |
66 | + <view class="handle-result">处理结果</view> | |
67 | + <view class="hanle-main"> | |
71 | 68 | <view><u--textarea border="none" height="96" placeholder="请输入处理结果" v-model="formModel.result" count></u--textarea></view> |
72 | 69 | </view> |
73 | 70 | <!-- #endif --> |
74 | - <view style="width: 500rpx;margin-left: 80rpx;margin-top: 44rpx;"><u-button @click="handleSubmit" type="primary" shape="circle" text="处理"></u-button></view> | |
71 | + <view v-if="list.status !== 'CLEARED_ACK'" style="width: 500rpx;margin-left: 80rpx;margin-top: 44rpx;"> | |
72 | + <u-button @click="handleSubmit" type="primary" shape="circle" text="处理"></u-button> | |
73 | + </view> | |
75 | 74 | <f-tabbar></f-tabbar> |
76 | 75 | </view> |
77 | 76 | </template> |
... | ... | @@ -100,18 +99,24 @@ export default { |
100 | 99 | }, |
101 | 100 | methods: { |
102 | 101 | handleSubmit() { |
103 | - // console.log(this.formModel); | |
104 | 102 | uni.$u.http |
105 | 103 | .post(`/alarm/${this.list.id}/ack`) |
106 | 104 | .then(res => { |
107 | - uni.$u.toast('处理成功'); | |
108 | - let pages = getCurrentPages(); //获取所有页面栈实例列表 | |
109 | - let nowPage = pages[pages.length - 1]; //当前页页面实例 | |
110 | - let prevPage = pages[pages.length - 2]; //上一页页面实例 | |
111 | - prevPage.$vm.detailStatus = true; | |
112 | - uni.navigateBack({ | |
113 | - delta: 1 | |
114 | - }); | |
105 | + if (res == '') { | |
106 | + uni.showToast({ | |
107 | + title: '处理成功~', | |
108 | + icon: 'none' | |
109 | + }); | |
110 | + let pages = getCurrentPages(); //获取所有页面栈实例列表 | |
111 | + let nowPage = pages[pages.length - 1]; //当前页页面实例 | |
112 | + let prevPage = pages[pages.length - 2]; //上一页页面实例 | |
113 | + prevPage.$vm.detailStatus = true; | |
114 | + setTimeout(() => { | |
115 | + uni.navigateBack({ | |
116 | + delta: 1 | |
117 | + }); | |
118 | + }, 500); | |
119 | + } | |
115 | 120 | }) |
116 | 121 | .catch(e => { |
117 | 122 | uni.$u.toast(e.data?.message); |
... | ... | @@ -122,7 +127,5 @@ export default { |
122 | 127 | </script> |
123 | 128 | |
124 | 129 | <style lang="scss" scoped> |
125 | -.alert-detail-page { | |
126 | - padding: 30rpx; | |
127 | -} | |
130 | +@import './static/alarmDetail.scss'; | |
128 | 131 | </style> | ... | ... |
pages/alarm/org/org.vue
renamed from
pages/alert/org/org.vue
pages/alarm/static/alarm.scss
0 → 100644
1 | +.alert-page { | |
2 | + margin-top: 5rpx; | |
3 | + | |
4 | + .filter { | |
5 | + justify-content: space-between; | |
6 | + flex-direction: row; | |
7 | + | |
8 | + .filter-input { | |
9 | + width: 580rpx; | |
10 | + visibility: hidden; | |
11 | + } | |
12 | + | |
13 | + .filter-text { | |
14 | + margin-left: 7rpx; | |
15 | + | |
16 | + .text { | |
17 | + color: #333333; | |
18 | + font-size: 14px; | |
19 | + } | |
20 | + } | |
21 | + | |
22 | + .filter-icon { | |
23 | + margin-left: 7rpx; | |
24 | + | |
25 | + .image { | |
26 | + width: 40rpx; | |
27 | + height: 40rpx; | |
28 | + } | |
29 | + } | |
30 | + } | |
31 | +} | |
32 | + | |
33 | +.org-sty { | |
34 | + width: 750rpx; | |
35 | + height: 150rpx; | |
36 | + background-color: #fff; | |
37 | + display: flex; | |
38 | + flex-direction: row; | |
39 | + justify-content: space-between; | |
40 | + | |
41 | + .org-item { | |
42 | + width: 350rpx; | |
43 | + height: 200rpx; | |
44 | + | |
45 | + .item { | |
46 | + flex-direction: row; | |
47 | + margin-top: 26rpx; | |
48 | + margin-left: 15rpx; | |
49 | + | |
50 | + .text { | |
51 | + color: #333333; | |
52 | + font-size: 15px; | |
53 | + margin-left: 14rpx; | |
54 | + } | |
55 | + } | |
56 | + | |
57 | + .item-child { | |
58 | + margin-top: 5rpx; | |
59 | + margin-left: 15rpx; | |
60 | + flex-direction: row; | |
61 | + | |
62 | + .image { | |
63 | + margin-left: 14rpx; | |
64 | + width: 30rpx; | |
65 | + height: 30rpx; | |
66 | + } | |
67 | + | |
68 | + .text { | |
69 | + margin-left: 10rpx; | |
70 | + color: #666666; | |
71 | + font-size: 12px; | |
72 | + } | |
73 | + } | |
74 | + | |
75 | + .org-image { | |
76 | + width: 6px; | |
77 | + height: 10px; | |
78 | + float: right; | |
79 | + margin-right: 34rpx; | |
80 | + margin-top: 58rpx; | |
81 | + } | |
82 | + } | |
83 | +} | |
84 | + | |
85 | +.device-list { | |
86 | + display: flex; | |
87 | + flex-direction: column; | |
88 | + padding-left: 18rpx; | |
89 | + justify-content: flex-start; | |
90 | + | |
91 | + .list-item { | |
92 | + width: 713rpx; | |
93 | + height: 233rpx; | |
94 | + background-color: #fff; | |
95 | + margin-top: 24rpx; | |
96 | + display: flex; | |
97 | + flex-direction: row; | |
98 | + border-radius: 10px; | |
99 | + justify-content: space-between; | |
100 | + | |
101 | + .item { | |
102 | + margin: 30rpx; | |
103 | + justify-content: flex-start; | |
104 | + flex-direction: column; | |
105 | + align-items: center; | |
106 | + | |
107 | + .item-text { | |
108 | + width: 400rpx; | |
109 | + text-align: left; | |
110 | + | |
111 | + .text { | |
112 | + color: #666666; | |
113 | + font-size: 15px; | |
114 | + } | |
115 | + | |
116 | + .text-three { | |
117 | + color: #333333; | |
118 | + font-size: 15px; | |
119 | + } | |
120 | + | |
121 | + .text-nine { | |
122 | + color: #999999; | |
123 | + font-size: 15px; | |
124 | + } | |
125 | + } | |
126 | + | |
127 | + .item-right { | |
128 | + flex-direction: row; | |
129 | + margin-top: -15rpx; | |
130 | + | |
131 | + .right-image { | |
132 | + width: 30rpx; | |
133 | + height: 30rpx; | |
134 | + margin-top: 20rpx; | |
135 | + margin-right: 5rpx; | |
136 | + } | |
137 | + | |
138 | + .right-text { | |
139 | + color: #333333; | |
140 | + font-size: 13px; | |
141 | + margin-left: 5rpx; | |
142 | + margin-top: 20rpx; | |
143 | + } | |
144 | + } | |
145 | + } | |
146 | + } | |
147 | +} | |
148 | + | |
149 | +.popup-page { | |
150 | + height: 1100rpx; | |
151 | + background: #ffffff; | |
152 | + border-radius: 20rpx; | |
153 | + overflow-y: scroll; | |
154 | + | |
155 | + .popup-text { | |
156 | + text-align: center; | |
157 | + position: relative; | |
158 | + top: 68rpx; | |
159 | + margin-top: -40rpx; | |
160 | + | |
161 | + .text { | |
162 | + font-size: 16px; | |
163 | + color: #333333; | |
164 | + } | |
165 | + } | |
166 | + | |
167 | + .popup-alarm-page { | |
168 | + margin-top: 97rpx; | |
169 | + margin-left: 98rpx; | |
170 | + flex-direction: column; | |
171 | + justify-content: space-between; | |
172 | + | |
173 | + .popup-alarm-text { | |
174 | + width: 750rpx; | |
175 | + margin-left: 14rpx; | |
176 | + | |
177 | + .text { | |
178 | + color: #333333; | |
179 | + font-size: 14px; | |
180 | + } | |
181 | + } | |
182 | + | |
183 | + .popup-alarm-child { | |
184 | + margin-top: 15rpx; | |
185 | + width: 650rpx; | |
186 | + height: 60rpx; | |
187 | + flex-direction: row; | |
188 | + flex-wrap: wrap; | |
189 | + justify-content: space-between; | |
190 | + align-content: space-between; | |
191 | + | |
192 | + .alarm-text { | |
193 | + margin: 10rpx; | |
194 | + line-height: 50rpx; | |
195 | + text-align: center; | |
196 | + width: 180rpx; | |
197 | + height: 60rpx; | |
198 | + background-color: #f6f6f6; | |
199 | + border-radius: 32px; | |
200 | + | |
201 | + .text { | |
202 | + color: #333333; | |
203 | + font-size: 13px; | |
204 | + } | |
205 | + } | |
206 | + } | |
207 | + } | |
208 | +} | |
209 | + | |
210 | +.u-form { | |
211 | + width: 618rpx !important; | |
212 | +} | ... | ... |
pages/alarm/static/alarmDetail.scss
0 → 100644
1 | +.alarm-detail-page { | |
2 | + padding: 30rpx; | |
3 | +} | |
4 | +.alarm-detail-column { | |
5 | + border-radius: 20px; | |
6 | + width: 688rpx; | |
7 | + height: 573rpx; | |
8 | + background-color: #ffffff; | |
9 | + .detail-column { | |
10 | + height: 573rpx; | |
11 | + justify-content: space-between; | |
12 | + flex-direction: column; | |
13 | + align-items: center; | |
14 | + .column { | |
15 | + flex-direction: row; | |
16 | + justify-content: space-between; | |
17 | + margin-top: 10rpx; | |
18 | + line-height: 68rpx; | |
19 | + width: 614rpx; | |
20 | + height: 90rpx; | |
21 | + text-align: left; | |
22 | + border-bottom: 0.1rpx solid #f0f0f0; | |
23 | + .text { | |
24 | + color: #333333; | |
25 | + font-size: 15px; | |
26 | + } | |
27 | + .image { | |
28 | + width: 30rpx; | |
29 | + height: 30rpx; | |
30 | + } | |
31 | + .text-alarm-level { | |
32 | + color: #333333; | |
33 | + font-size: 14px; | |
34 | + } | |
35 | + .text-alarm-level-lg { | |
36 | + color: #333333; | |
37 | + font-size: 15px; | |
38 | + } | |
39 | + .text-alarm-lg { | |
40 | + color: #666666; | |
41 | + font-size: 14px; | |
42 | + } | |
43 | + .text-alarm-status { | |
44 | + color: #de4437; | |
45 | + font-size: 14px; | |
46 | + } | |
47 | + } | |
48 | + } | |
49 | +} | |
50 | +.handle-result { | |
51 | + color: #333333; | |
52 | + font-size: 15px; | |
53 | + margin-top: 20rpx; | |
54 | +} | |
55 | +.hanle-main { | |
56 | + margin-top: 20rpx; | |
57 | + border-radius: 20px; | |
58 | + width: 688rpx; | |
59 | + height: 273rpx; | |
60 | + background-color: #ffffff; | |
61 | +} | ... | ... |
pages/alarm/static/data.js
0 → 100644
1 | +const alertStatus = [{ | |
2 | + index: 0, | |
3 | + name: '全部', | |
4 | + value: '', | |
5 | + bgColor: '#377DFF', | |
6 | + textColor: '#377DFF' | |
7 | + }, | |
8 | + { | |
9 | + index: 1, | |
10 | + name: '激活未确认', | |
11 | + value: 'ACTIVE_UNACK', | |
12 | + bgColor: '#F6F6F6', | |
13 | + textColor: '#F6F6F6' | |
14 | + }, | |
15 | + { | |
16 | + index: 2, | |
17 | + name: '激活已确认', | |
18 | + value: 'ACTIVE_ACK', | |
19 | + bgColor: '#F6F6F6', | |
20 | + textColor: '#F6F6F6' | |
21 | + }, | |
22 | + { | |
23 | + index: 3, | |
24 | + name: '清除未确认', | |
25 | + value: 'CLEARED_UNACK', | |
26 | + bgColor: '#F6F6F6', | |
27 | + textColor: '#F6F6F6' | |
28 | + }, | |
29 | + { | |
30 | + index: 4, | |
31 | + name: '清除已确认', | |
32 | + value: 'CLEARED_ACK', | |
33 | + bgColor: '#F6F6F6', | |
34 | + textColor: '#F6F6F6' | |
35 | + } | |
36 | +] | |
37 | +const deviceType = [{ | |
38 | + index: 1, | |
39 | + name: '全部', | |
40 | + value: '', | |
41 | + bgColor: '#377DFF', | |
42 | + textColor: '#377DFF' | |
43 | + }, | |
44 | + { | |
45 | + index: 2, | |
46 | + name: '网关设备', | |
47 | + value: 'GATEWAY', | |
48 | + bgColor: '#F6F6F6', | |
49 | + textColor: '#F6F6F6' | |
50 | + }, | |
51 | + { | |
52 | + index: 3, | |
53 | + name: '网关子设备', | |
54 | + value: 'SENSOR', | |
55 | + bgColor: '#F6F6F6', | |
56 | + textColor: '#F6F6F6' | |
57 | + }, | |
58 | + { | |
59 | + index: 4, | |
60 | + name: '直连设备', | |
61 | + value: 'DIRECT_CONNECTION', | |
62 | + bgColor: '#F6F6F6', | |
63 | + textColor: '#F6F6F6' | |
64 | + } | |
65 | +] | |
66 | +const alertLevel = [{ | |
67 | + index: 1, | |
68 | + name: '全部', | |
69 | + value: '', | |
70 | + bgColor: '#377DFF', | |
71 | + textColor: '#377DFF' | |
72 | + }, | |
73 | + { | |
74 | + index: 2, | |
75 | + name: '危险', | |
76 | + value: 'CRITICAL', | |
77 | + bgColor: '#F6F6F6', | |
78 | + textColor: '#F6F6F6' | |
79 | + }, | |
80 | + { | |
81 | + index: 3, | |
82 | + name: '重要', | |
83 | + value: 'MAJOR', | |
84 | + bgColor: '#F6F6F6', | |
85 | + textColor: '#F6F6F6' | |
86 | + }, | |
87 | + { | |
88 | + index: 4, | |
89 | + name: '次要', | |
90 | + value: 'MINOR', | |
91 | + bgColor: '#F6F6F6', | |
92 | + textColor: '#F6F6F6' | |
93 | + }, | |
94 | + { | |
95 | + index: 5, | |
96 | + name: '警告', | |
97 | + value: 'WARNING', | |
98 | + bgColor: '#F6F6F6', | |
99 | + textColor: '#F6F6F6' | |
100 | + }, | |
101 | + { | |
102 | + index: 6, | |
103 | + name: '不确定', | |
104 | + value: 'INDETERMINATE', | |
105 | + bgColor: '#F6F6F6', | |
106 | + textColor: '#F6F6F6' | |
107 | + } | |
108 | +] | |
109 | + | |
110 | +const timeArea = [{ | |
111 | + index: 1, | |
112 | + name: '全部', | |
113 | + value: '全部', | |
114 | + bgColor: '#F6F6F6', | |
115 | + textColor: '#F6F6F6' | |
116 | + }, | |
117 | + { | |
118 | + index: 2, | |
119 | + name: '30分钟', | |
120 | + value: '30', | |
121 | + bgColor: '#F6F6F6', | |
122 | + textColor: '#F6F6F6' | |
123 | + }, | |
124 | + { | |
125 | + index: 3, | |
126 | + name: '1小时', | |
127 | + value: '30', | |
128 | + bgColor: '#F6F6F6', | |
129 | + textColor: '#F6F6F6' | |
130 | + }, | |
131 | + { | |
132 | + index: 4, | |
133 | + name: '2小时', | |
134 | + value: '120', | |
135 | + bgColor: '#F6F6F6', | |
136 | + textColor: '#F6F6F6' | |
137 | + }, | |
138 | + { | |
139 | + index: 5, | |
140 | + name: '近一天', | |
141 | + value: '24', | |
142 | + bgColor: '#F6F6F6', | |
143 | + textColor: '#F6F6F6' | |
144 | + } | |
145 | +] | |
146 | +export { | |
147 | + alertStatus, | |
148 | + deviceType, | |
149 | + alertLevel, | |
150 | + timeArea | |
151 | +} | ... | ... |
pages/alert/alert.vue
deleted
100644 → 0
1 | -<template> | |
2 | - <view class="alert-page"> | |
3 | - <f-navbar> | |
4 | - <view class="u-flex" slot="right" style="justify-content: space-between;flex-direction: row;"> | |
5 | - <view style="width: 580rpx;visibility: hidden;"><u--input prefixIcon="search" placeholder="输入设备SN或名称搜索" border="surround" shape="circle"></u--input></view> | |
6 | - <view style="margin-left: 7rpx;"> | |
7 | - <view class=""><text style="color:#333333;font-size: 14px;">筛选</text></view> | |
8 | - </view> | |
9 | - <view style="margin-left: 7rpx;"><image @click="openSearchDialog" style="width: 40rpx;height: 40rpx;" src="../../static/shaixuan.png" mode=""></image></view> | |
10 | - </view> | |
11 | - </f-navbar> | |
12 | - <!-- 公共组件-每个页面必须引入 --> | |
13 | - <public-module></public-module> | |
14 | - <view @click="openOrg" class="org-sty"> | |
15 | - <view class="org-item"> | |
16 | - <view class="u-flex" style="flex-direction: row;margin-top: 26rpx;margin-left: 15rpx;"> | |
17 | - <text style="color:#333333;font-size: 15px;margin-left: 14rpx;">组织关系</text> | |
18 | - </view> | |
19 | - <view style="margin-top: 5rpx;margin-left: 15rpx;flex-direction: row;" class="u-flex"> | |
20 | - <image style="margin-left: 14rpx;width: 30rpx;height: 30rpx;" src="../../static/org.png" mode=""></image> | |
21 | - <text style="margin-left: 10rpx;color:#666666;font-size: 12px;">告警数:{{ alertTotal }}</text> | |
22 | - </view> | |
23 | - </view> | |
24 | - <view class="org-item" style=""> | |
25 | - <image style="width: 6px;height: 10px;float: right; margin-right: 34rpx; margin-top: 58rpx;" src="../../static/right-arrow.png" mode=""></image> | |
26 | - </view> | |
27 | - </view> | |
28 | - <mescroll-body ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback"> | |
29 | - <view class="device-list"> | |
30 | - <view @click="openAlertDetail(item)" class="list-item" v-for="(item, index) in list" :key="index"> | |
31 | - <view class="u-flex item" style="justify-content: flex-start;flex-direction: column;align-items: center;"> | |
32 | - <view style="width: 400rpx;text-align: left;"> | |
33 | - <text style="color:#333333;font-size: 15px;">{{ item.deviceName == null ? '暂无数据' : item.deviceName }}</text> | |
34 | - </view> | |
35 | - <view style="width: 400rpx;text-align: left;"> | |
36 | - <text style="color:#666666;font-size: 15px;">{{ item.details == null ? '暂无数据' : item.details.data }}</text> | |
37 | - </view> | |
38 | - <view style="width: 400rpx;text-align: left;"> | |
39 | - <text style="color:#666666;font-size: 15px;"> | |
40 | - {{ | |
41 | - item.status == 'CLEARED_UNACK' | |
42 | - ? '清除未确认' | |
43 | - : item.status == 'ACTIVE_UNACK' | |
44 | - ? '激活未确认' | |
45 | - : item.status == 'CLEARED_ACK' | |
46 | - ? '清除已确认' | |
47 | - : '激活已确认' | |
48 | - }} | |
49 | - </text> | |
50 | - </view> | |
51 | - <view style="width: 400rpx;text-align: left;"> | |
52 | - <text style="color:#999999;font-size: 15px;">{{ item.createdTime }}</text> | |
53 | - </view> | |
54 | - </view> | |
55 | - <view class="item"> | |
56 | - <view class="u-flex" style="flex-direction: row;margin-top: -6rpx;"> | |
57 | - <image style="width: 30rpx;height: 30rpx;margin-top: 5rpx;margin-right: 5rpx;" :src="bindImageUrl(item.severity)" mode=""></image> | |
58 | - <view class=""> | |
59 | - <text | |
60 | - :style="[ | |
61 | - item.severity == 'CRITICAL' | |
62 | - ? { color: '#DE4437' } | |
63 | - : item.severity == 'MAJOR' | |
64 | - ? { color: '#DE7337' } | |
65 | - : item.severity == 'MINOR' | |
66 | - ? { color: '#FFC107' } | |
67 | - : item.severity == 'WARNING' | |
68 | - ? { color: '#DE4437' } | |
69 | - : { color: '#00C9A7' } | |
70 | - ]" | |
71 | - style="color: #333333;font-size: 13px;margin-left: 5rpx;margin-top: 20rpx;" | |
72 | - > | |
73 | - {{ | |
74 | - item.severity == 'CRITICAL' | |
75 | - ? '危险' | |
76 | - : item.severity == 'MAJOR' | |
77 | - ? '重要' | |
78 | - : item.severity == 'MINOR' | |
79 | - ? '次要' | |
80 | - : item.severity == 'WARNING' | |
81 | - ? '警告' | |
82 | - : '不确定' | |
83 | - }} | |
84 | - </text> | |
85 | - </view> | |
86 | - </view> | |
87 | - </view> | |
88 | - </view> | |
89 | - </view> | |
90 | - </mescroll-body> | |
91 | - <view style="height:20rpx"></view> | |
92 | - <!-- 告警筛选 --> | |
93 | - <u-popup @close="close" closeable bgColor="transparent" :overlay="true" :show="show" mode="bottom"> | |
94 | - <view style="height: 1100rpx;background:#FFFFFF;border-radius: 20rpx;overflow-y: scroll;"> | |
95 | - <view style="text-align: center;position: relative;top: 68rpx;margin-top: -40rpx;"><text style="font-size: 16px;color: #333333;">筛选条件</text></view> | |
96 | - <view style="margin-top: 97rpx;margin-left: 43rpx;"> | |
97 | - <view style="width: 750rpx;margin-left: 14rpx;" class=""><text style="color: #333333;font-size: 14px;">告警状态</text></view> | |
98 | - <view | |
99 | - class="u-flex" | |
100 | - style="margin-top: 15rpx;width:650rpx;height: 60rpx;flex-direction: row; | |
101 | - flex-wrap: wrap;justify-content: space-between; align-content: space-between;" | |
102 | - > | |
103 | - <view | |
104 | - @click="getAlertStatus(item, index)" | |
105 | - :style="[index == current1 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
106 | - v-for="(item, index) in alertStatus" | |
107 | - :key="index" | |
108 | - style="margin: 10rpx;line-height: 50rpx;text-align: center; | |
109 | - width:180rpx;height: 60rpx; | |
110 | - background-color:#F6F6F6;border-radius:32px" | |
111 | - > | |
112 | - <text style="color:#333333;font-size: 13px;">{{ item.name }}</text> | |
113 | - </view> | |
114 | - </view> | |
115 | - </view> | |
116 | - <view style="margin-top: 145rpx;margin-left: 43rpx;"> | |
117 | - <view style="width: 750rpx;margin-left: 14rpx;" class=""><text style="color: #333333;font-size: 14px;">设备类型</text></view> | |
118 | - <view | |
119 | - class="u-flex" | |
120 | - style="margin-top: 15rpx;width:650rpx;height: 60rpx;flex-direction: row; | |
121 | - flex-wrap: wrap;justify-content: space-between; align-content: space-between;" | |
122 | - > | |
123 | - <view | |
124 | - @click="getTypeStatus(item, index)" | |
125 | - :style="[index == current2 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
126 | - v-for="(item, index) in deviceType" | |
127 | - :key="index" | |
128 | - style="margin: 10rpx;line-height: 50rpx;text-align: center; | |
129 | - width:180rpx;height: 60rpx; | |
130 | - background-color:#F6F6F6;border-radius:32px" | |
131 | - > | |
132 | - <text style="color:#333333;font-size: 13px;">{{ item.name }}</text> | |
133 | - </view> | |
134 | - </view> | |
135 | - </view> | |
136 | - <view style="margin-top: 136rpx;margin-left: 43rpx;"> | |
137 | - <view style="width: 750rpx;margin-left: 14rpx;" class=""><text style="color: #333333;font-size: 14px;">告警等级</text></view> | |
138 | - <view | |
139 | - class="u-flex" | |
140 | - style="margin-top: 15rpx;width:650rpx;height: 60rpx;flex-direction: row; | |
141 | - flex-wrap: wrap;justify-content: space-between; align-content: space-between;" | |
142 | - > | |
143 | - <view | |
144 | - @click="getLevelStatus(item, index)" | |
145 | - :style="[index == current3 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
146 | - v-for="(item, index) in alertLevel" | |
147 | - :key="index" | |
148 | - style="margin: 10rpx;line-height: 50rpx;text-align: center; | |
149 | - width:180rpx;height: 60rpx; | |
150 | - background-color:#F6F6F6;border-radius:32px" | |
151 | - > | |
152 | - <text style="color:#333333;font-size: 13px;">{{ item.name }}</text> | |
153 | - </view> | |
154 | - </view> | |
155 | - </view> | |
156 | - <view style="margin-top: 136rpx;margin-left: 43rpx;"> | |
157 | - <view style="width: 750rpx;margin-left: 14rpx;" class=""><text style="color: #333333;font-size: 14px;">选择时间</text></view> | |
158 | - <view | |
159 | - class="u-flex" | |
160 | - style="margin-top: 15rpx;width:650rpx;height: 60rpx;flex-direction: row; | |
161 | - flex-wrap: wrap;justify-content: space-between; align-content: space-between;" | |
162 | - > | |
163 | - <view | |
164 | - @click="getTimeStatus(item, index)" | |
165 | - :style="[index == current4 ? { background: '#377DFF' } : { background: '#F6F6F6' }]" | |
166 | - v-for="(item, index) in timeArea" | |
167 | - :key="index" | |
168 | - style="margin: 10rpx;line-height: 50rpx;text-align: center; | |
169 | - width:180rpx;height: 60rpx; | |
170 | - background-color:#F6F6F6;border-radius:32px" | |
171 | - > | |
172 | - <text style="color:#333333;font-size: 13px;">{{ item.name }}</text> | |
173 | - </view> | |
174 | - </view> | |
175 | - </view> | |
176 | - <view style="margin-top: 136rpx;margin-left: 43rpx;"> | |
177 | - <view class="u-flex" style="margin-left: 10rpx;margin-top: 15rpx;width:750rpx;height: 60rpx;flex-direction: row;"> | |
178 | - <u--form labelPosition="left" :model="timeData" :rules="rules" ref="form1" style="padding-left: 26rpx;width: 617rpx!important;"> | |
179 | - <u-form-item | |
180 | - style="font-size: 14px;" | |
181 | - label="选择日期" | |
182 | - prop="selectTime" | |
183 | - labelWidth="80" | |
184 | - borderBottom | |
185 | - @click=" | |
186 | - showCalendar = true; | |
187 | - hideKeyboard(); | |
188 | - " | |
189 | - > | |
190 | - <u--input v-model="timeData.selectTime" placeholder="请选择日期" border="none"></u--input> | |
191 | - </u-form-item> | |
192 | - </u--form> | |
193 | - </view> | |
194 | - </view> | |
195 | - <view class="u-flex" style="flex-direction: row;margin-top: 128rpx;margin-left: 55rpx;"> | |
196 | - <view style="width: 300rpx"><u-button @click="resetData" type="info" shape="circle" text="重置"></u-button></view> | |
197 | - <view style="width: 300rpx;margin-left:46rpx ;"><u-button @click="queryData" type="primary" shape="circle" text="确认"></u-button></view> | |
198 | - </view> | |
199 | - <view style="height: 30rpx;"></view> | |
200 | - </view> | |
201 | - </u-popup> | |
202 | - <u-calendar | |
203 | - :show="showCalendar" | |
204 | - mode="range" | |
205 | - @confirm="calendarConfirm" | |
206 | - @close="calendarClose" | |
207 | - startText="开始时间" | |
208 | - endText="结束时间" | |
209 | - confirmDisabledText="请选择日期" | |
210 | - :formatter="formatter" | |
211 | - ></u-calendar> | |
212 | - <f-tabbar></f-tabbar> | |
213 | - </view> | |
214 | -</template> | |
215 | - | |
216 | -<script> | |
217 | -import fTabbar from '@/components/module/f-tabbar/f-tabbar'; | |
218 | -import fNavbar from '@/components/module/f-navbar/f-navbar'; | |
219 | -import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js'; | |
220 | -import { pageNumber, pageSize } from '@/config/constant.js'; | |
221 | - | |
222 | -export default { | |
223 | - mixins: [MescrollMixin], // 使用mixin (在main.js注册全局组件) | |
224 | - components: { | |
225 | - fTabbar, | |
226 | - fNavbar | |
227 | - }, | |
228 | - data() { | |
229 | - return { | |
230 | - alertStatusVal: '', | |
231 | - deviceTypeVal: '', | |
232 | - alertLevelVal: '', | |
233 | - selectTimeVal: '', | |
234 | - startTime: '', | |
235 | - endTime: '', | |
236 | - current1: 0, | |
237 | - current2: 0, | |
238 | - current3: 0, | |
239 | - current4: 0, | |
240 | - page: { | |
241 | - num: 0, | |
242 | - size: 10 | |
243 | - }, | |
244 | - downOption: { | |
245 | - auto: false //是否在初始化后,自动执行downCallback; 默认true | |
246 | - }, | |
247 | - timeData: { | |
248 | - selectTime: '', | |
249 | - getTimeGap: '', | |
250 | - getDateVal: '' | |
251 | - }, | |
252 | - showCalendar: false, | |
253 | - show: false, | |
254 | - list: [], | |
255 | - alertStatus: [ | |
256 | - { | |
257 | - index: 0, | |
258 | - name: '全部', | |
259 | - value: '', | |
260 | - bgColor: '#377DFF', | |
261 | - textColor: '#377DFF' | |
262 | - }, | |
263 | - { | |
264 | - index: 1, | |
265 | - name: '激活未确认', | |
266 | - value: 'ACTIVE_UNACK', | |
267 | - bgColor: '#F6F6F6', | |
268 | - textColor: '#F6F6F6' | |
269 | - }, | |
270 | - { | |
271 | - index: 2, | |
272 | - name: '激活已确认', | |
273 | - value: 'ACTIVE_ACK', | |
274 | - bgColor: '#F6F6F6', | |
275 | - textColor: '#F6F6F6' | |
276 | - }, | |
277 | - { | |
278 | - index: 3, | |
279 | - name: '清除未确认', | |
280 | - value: 'CLEARED_UNACK', | |
281 | - bgColor: '#F6F6F6', | |
282 | - textColor: '#F6F6F6' | |
283 | - }, | |
284 | - { | |
285 | - index: 4, | |
286 | - name: '清除已确认', | |
287 | - value: 'CLEARED_ACK', | |
288 | - bgColor: '#F6F6F6', | |
289 | - textColor: '#F6F6F6' | |
290 | - } | |
291 | - ], | |
292 | - deviceType: [ | |
293 | - { | |
294 | - index: 1, | |
295 | - name: '全部', | |
296 | - value: '', | |
297 | - bgColor: '#377DFF', | |
298 | - textColor: '#377DFF' | |
299 | - }, | |
300 | - { | |
301 | - index: 2, | |
302 | - name: '网关设备', | |
303 | - value: 'GATEWAY', | |
304 | - bgColor: '#F6F6F6', | |
305 | - textColor: '#F6F6F6' | |
306 | - }, | |
307 | - { | |
308 | - index: 3, | |
309 | - name: '网关子设备', | |
310 | - value: 'SENSOR', | |
311 | - bgColor: '#F6F6F6', | |
312 | - textColor: '#F6F6F6' | |
313 | - }, | |
314 | - { | |
315 | - index: 4, | |
316 | - name: '直连设备', | |
317 | - value: 'DIRECT_CONNECTION', | |
318 | - bgColor: '#F6F6F6', | |
319 | - textColor: '#F6F6F6' | |
320 | - } | |
321 | - ], | |
322 | - alertLevel: [ | |
323 | - { | |
324 | - index: 1, | |
325 | - name: '全部', | |
326 | - value: '', | |
327 | - bgColor: '#377DFF', | |
328 | - textColor: '#377DFF' | |
329 | - }, | |
330 | - { | |
331 | - index: 2, | |
332 | - name: '危险', | |
333 | - value: 'CRITICAL', | |
334 | - bgColor: '#F6F6F6', | |
335 | - textColor: '#F6F6F6' | |
336 | - }, | |
337 | - { | |
338 | - index: 3, | |
339 | - name: '重要', | |
340 | - value: 'MAJOR', | |
341 | - bgColor: '#F6F6F6', | |
342 | - textColor: '#F6F6F6' | |
343 | - }, | |
344 | - { | |
345 | - index: 4, | |
346 | - name: '次要', | |
347 | - value: 'MINOR', | |
348 | - bgColor: '#F6F6F6', | |
349 | - textColor: '#F6F6F6' | |
350 | - }, | |
351 | - { | |
352 | - index: 5, | |
353 | - name: '警告', | |
354 | - value: 'WARNING', | |
355 | - bgColor: '#F6F6F6', | |
356 | - textColor: '#F6F6F6' | |
357 | - }, | |
358 | - { | |
359 | - index: 6, | |
360 | - name: '不确定', | |
361 | - value: 'INDETERMINATE', | |
362 | - bgColor: '#F6F6F6', | |
363 | - textColor: '#F6F6F6' | |
364 | - } | |
365 | - ], | |
366 | - timeArea: [ | |
367 | - { | |
368 | - index: 1, | |
369 | - name: '全部', | |
370 | - value: '全部', | |
371 | - bgColor: '#F6F6F6', | |
372 | - textColor: '#F6F6F6' | |
373 | - }, | |
374 | - { | |
375 | - index: 2, | |
376 | - name: '30分钟', | |
377 | - value: '30', | |
378 | - bgColor: '#F6F6F6', | |
379 | - textColor: '#F6F6F6' | |
380 | - }, | |
381 | - { | |
382 | - index: 3, | |
383 | - name: '1小时', | |
384 | - value: '30', | |
385 | - bgColor: '#F6F6F6', | |
386 | - textColor: '#F6F6F6' | |
387 | - }, | |
388 | - { | |
389 | - index: 4, | |
390 | - name: '2小时', | |
391 | - value: '120', | |
392 | - bgColor: '#F6F6F6', | |
393 | - textColor: '#F6F6F6' | |
394 | - }, | |
395 | - { | |
396 | - index: 5, | |
397 | - name: '近一天', | |
398 | - value: '24', | |
399 | - bgColor: '#F6F6F6', | |
400 | - textColor: '#F6F6F6' | |
401 | - } | |
402 | - ], | |
403 | - ordId: '', | |
404 | - detailStatus: false, | |
405 | - alertTotal: 0 | |
406 | - }; | |
407 | - }, | |
408 | - onShow() { | |
409 | - if (this.detailStatus) { | |
410 | - this.loadData(1); | |
411 | - } | |
412 | - if (this.ordId == '') { | |
413 | - } else { | |
414 | - this.loadData(1, null, null, null, null, null, this.ordId); | |
415 | - } | |
416 | - }, | |
417 | - onHide() { | |
418 | - this.ordId = ''; | |
419 | - this.detailStatus = false; | |
420 | - }, | |
421 | - onLoad(e) { | |
422 | - // 隐藏原生的tabbar | |
423 | - uni.hideTabBar(); | |
424 | - }, | |
425 | - methods: { | |
426 | - getAlertStatus(e, i) { | |
427 | - this.current1 = i; | |
428 | - this.alertStatusVal = e.value; | |
429 | - }, | |
430 | - getTypeStatus(e, i) { | |
431 | - this.current2 = i; | |
432 | - this.deviceTypeVal = e.value; | |
433 | - }, | |
434 | - getLevelStatus(e, i) { | |
435 | - this.current3 = i; | |
436 | - this.alertLevelVal = e.value; | |
437 | - }, | |
438 | - getTimeStatus(e, i) { | |
439 | - this.current4 = i; | |
440 | - this.selectTimeVal = e.value; | |
441 | - }, | |
442 | - queryData() { | |
443 | - let date1 = new Date(this.timeData.getDateVal[0]); | |
444 | - let date2 = new Date(this.timeData.getDateVal[this.timeData.getDateVal.length - 1]); | |
445 | - let startTimeVa, endTimeVa; | |
446 | - if (this.timeData.getDateVal.length == 0) { | |
447 | - startTimeVa = ''; | |
448 | - endTimeVa = ''; | |
449 | - } else { | |
450 | - startTimeVa = date1.getTime(); | |
451 | - endTimeVa = date2.getTime(); | |
452 | - } | |
453 | - this.loadData(1, this.alertStatusVal, startTimeVa, endTimeVa, this.alertLevelVal, this.deviceTypeVal); | |
454 | - this.show = false; | |
455 | - }, | |
456 | - resetData() { | |
457 | - this.current1 = 0; | |
458 | - this.alertStatusVal = ''; | |
459 | - this.current2 = 0; | |
460 | - this.deviceTypeVal = ''; | |
461 | - this.current3 = 0; | |
462 | - this.alertLevelVal = ''; | |
463 | - this.current4 = 0; | |
464 | - this.selectTimeVal = ''; | |
465 | - }, | |
466 | - bindImageUrl(e) { | |
467 | - switch (e) { | |
468 | - case 'CRITICAL': | |
469 | - return '../../static/danger.png'; | |
470 | - break; | |
471 | - case 'MAJOR': | |
472 | - return '../../static/major.png'; | |
473 | - break; | |
474 | - case 'MINOR': | |
475 | - return '../../static/secondary.png'; | |
476 | - break; | |
477 | - case 'WARNING': | |
478 | - return '../../static/danger.png'; | |
479 | - break; | |
480 | - case 'INDETERMINATE': | |
481 | - return '../../static/noshue.png'; | |
482 | - break; | |
483 | - default: | |
484 | - return ''; | |
485 | - break; | |
486 | - } | |
487 | - }, | |
488 | - /*下拉刷新的回调 */ | |
489 | - downCallback() { | |
490 | - //联网加载数据 | |
491 | - this.list.length = 0; | |
492 | - this.page.num = 1; | |
493 | - this.loadData(1); | |
494 | - }, | |
495 | - /*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */ | |
496 | - upCallback() { | |
497 | - //联网加载数据 | |
498 | - this.page.num += 1; | |
499 | - this.loadData(this.page.num); | |
500 | - }, | |
501 | - loadData(pageNo, statusV, startTimeV, endTimeV, severityV, deviceTypeV, organizationV) { | |
502 | - let httpData = { | |
503 | - page: pageNo, | |
504 | - pageSize: 10, | |
505 | - status: statusV, | |
506 | - startTime: startTimeV, | |
507 | - endTime: endTimeV, | |
508 | - severity: severityV, | |
509 | - deviceType: deviceTypeV, | |
510 | - organizationId: organizationV | |
511 | - }; | |
512 | - uni.$u.http | |
513 | - .get('/yt/alarm', { params: httpData, custom: { load: false } }) | |
514 | - .then(res => { | |
515 | - uni.stopPullDownRefresh(); | |
516 | - this.mescroll.endByPage(res.items.length, res.total); | |
517 | - this.alertTotal = res.total; | |
518 | - if (pageNo == 1) { | |
519 | - this.list = res.items; | |
520 | - } else { | |
521 | - this.list = this.list.concat(res.items); | |
522 | - } | |
523 | - }) | |
524 | - .catch(e => { | |
525 | - uni.$u.toast(e.data.message); | |
526 | - //联网失败, 结束加载 | |
527 | - this.mescroll.endErr(); | |
528 | - }); | |
529 | - }, | |
530 | - openOrg() { | |
531 | - uni.navigateTo({ | |
532 | - url: './org/org' | |
533 | - }); | |
534 | - }, | |
535 | - open() {}, | |
536 | - close() { | |
537 | - this.show = false; | |
538 | - }, | |
539 | - openSearchDialog() { | |
540 | - this.show = true; | |
541 | - this.resetData(); | |
542 | - }, | |
543 | - hideKeyboard() { | |
544 | - uni.hideKeyboard(); | |
545 | - }, | |
546 | - calendarConfirm(e) { | |
547 | - this.showCalendar = false; | |
548 | - this.timeData.selectTime = `${e[0]} / ${e[e.length - 1]}`; | |
549 | - this.timeData.getDateVal = e; | |
550 | - }, | |
551 | - calendarClose() { | |
552 | - this.showCalendar = false; | |
553 | - }, | |
554 | - openAlertDetail(e) { | |
555 | - let obj = { | |
556 | - id: e.id, | |
557 | - deviceName: e.deviceName, | |
558 | - severity: e.severity, | |
559 | - originatorType: e.originatorType, | |
560 | - details: e.details, | |
561 | - createdTime: e.createdTime, | |
562 | - status: e.status | |
563 | - }; | |
564 | - uni.navigateTo({ | |
565 | - url: './alertDetail?data=' + JSON.stringify(obj) | |
566 | - }); | |
567 | - } | |
568 | - } | |
569 | -}; | |
570 | -</script> | |
571 | - | |
572 | -<style lang="scss" scoped> | |
573 | -.alert-page { | |
574 | - margin-top: 5rpx; | |
575 | -} | |
576 | -.device-list { | |
577 | - display: flex; | |
578 | - flex-direction: column; | |
579 | - padding-left: 18rpx; | |
580 | - justify-content: flex-start; | |
581 | - .list-item { | |
582 | - width: 713rpx; | |
583 | - height: 233rpx; | |
584 | - background-color: #fff; | |
585 | - margin-top: 24rpx; | |
586 | - display: flex; | |
587 | - flex-direction: row; | |
588 | - border-radius: 10px; | |
589 | - justify-content: space-between; | |
590 | - .item { | |
591 | - margin: 30rpx; | |
592 | - } | |
593 | - } | |
594 | -} | |
595 | -.org-sty { | |
596 | - width: 750rpx; | |
597 | - height: 150rpx; | |
598 | - background-color: #fff; | |
599 | - display: flex; | |
600 | - flex-direction: row; | |
601 | - justify-content: space-between; | |
602 | - .org-item { | |
603 | - width: 350rpx; | |
604 | - height: 200rpx; | |
605 | - } | |
606 | -} | |
607 | -.u-form { | |
608 | - width: 618rpx !important; | |
609 | -} | |
610 | -</style> |
... | ... | @@ -4,35 +4,20 @@ |
4 | 4 | <public-module></public-module> |
5 | 5 | <view class="org-sty"> |
6 | 6 | <view @click="openOrg" class="org-item"> |
7 | - <view class="u-flex" style="flex-direction: row;margin-top: 26rpx;margin-left: 15rpx;"> | |
8 | - <text style="color:#333333;font-size: 15px;margin-left: 14rpx;">组织关系</text> | |
7 | + <view class="u-flex org-contact"><text class="text">组织关系</text></view> | |
8 | + <view class="u-flex org-device"> | |
9 | + <image class="device-image" src="../../../static/org.png"></image> | |
10 | + <text class="device-text">设备数:{{ deviceTotal }}</text> | |
9 | 11 | </view> |
10 | - <view style="margin-top: 5rpx;margin-left: 15rpx;flex-direction: row;" class="u-flex"> | |
11 | - <image style="margin-left: 14rpx;width: 30rpx;height: 30rpx;" src="../../../static/org.png" mode=""></image> | |
12 | - <text style="margin-left: 10rpx;color:#666666;font-size: 12px;">设备数:{{ deviceTotal }}</text> | |
13 | - </view> | |
14 | - </view> | |
15 | - <view class="org-item" style=""> | |
16 | - <image style="width: 6px;height: 10px;float: right; margin-right: 34rpx; margin-top: 58rpx;" src="../../../static/right-arrow.png" mode=""></image> | |
17 | 12 | </view> |
13 | + <view class="org-item"><image class="image" src="../../../static/right-arrow.png"></image></view> | |
18 | 14 | </view> |
19 | - <!-- <view class="camera-container"> | |
20 | - <view class="container-item"> | |
21 | - <view @click="openCameraDetail(item.url)" v-for="(item, index) in list" :key="index" class="item"> | |
22 | - <video style="border-radius: 20px;width:300rpx ;height: 200rpx;" :src="item.url" controls></video> | |
23 | - <view style="position: relative;top: 8rpx;text-align: center;"> | |
24 | - <text style="color: #333333;font-size: 13px;">{{ item.name }}</text> | |
25 | - </view> | |
26 | - </view> | |
27 | - </view> | |
28 | - </view> --> | |
29 | - | |
30 | 15 | <view class="camera-container"> |
31 | 16 | <view class="container-item"> |
32 | 17 | <view @click="openCameraDetail(item.url)" v-for="(item, index) in list" :key="index" class="item"> |
33 | - <video style="border-radius: 20px;width:300rpx ;height: 200rpx;" :src="item.url" controls></video> | |
34 | - <view style="position: relative;top: 8rpx;text-align: center;"> | |
35 | - <text style="color: #333333;font-size: 13px;">{{ item.name }}</text> | |
18 | + <video class="video" :src="item.url" controls></video> | |
19 | + <view class="bottom-text"> | |
20 | + <text class="text">{{ item.name }}</text> | |
36 | 21 | </view> |
37 | 22 | </view> |
38 | 23 | </view> |
... | ... | @@ -127,45 +112,5 @@ export default { |
127 | 112 | </script> |
128 | 113 | |
129 | 114 | <style lang="scss" scoped> |
130 | -.camera-page { | |
131 | - min-height: 100vh; | |
132 | - background-color: #f0f2f5; | |
133 | -} | |
134 | -.org-sty { | |
135 | - width: 750rpx; | |
136 | - height: 150rpx; | |
137 | - margin-top: 1rpx; | |
138 | - background-color: #fff; | |
139 | - display: flex; | |
140 | - flex-direction: row; | |
141 | - justify-content: space-between; | |
142 | - .org-item { | |
143 | - width: 350rpx; | |
144 | - height: 200rpx; | |
145 | - } | |
146 | -} | |
147 | -.camera-item { | |
148 | - height: 200rpx; | |
149 | - border: 0.1px solid gray; | |
150 | -} | |
151 | -.camera-container { | |
152 | - padding: 0 28rpx; | |
153 | - margin-top: -27rpx; | |
154 | - .container-item { | |
155 | - width: 717rpx; | |
156 | - display: flex; | |
157 | - justify-content: space-between; | |
158 | - flex-direction: row; | |
159 | - flex-wrap: wrap; | |
160 | - margin-left: -42rpx; | |
161 | - .item { | |
162 | - margin-top: 83rpx; | |
163 | - width: 300rpx; | |
164 | - height: 200rpx; | |
165 | - background-color: #fff; | |
166 | - border-radius: 20px; | |
167 | - margin-left: 58rpx; | |
168 | - } | |
169 | - } | |
170 | -} | |
115 | +@import '../static/camera.scss'; | |
171 | 116 | </style> | ... | ... |
pages/index/configuration/configuration.vue
renamed from
pages/index/orgStatus/orgStatus.vue
1 | 1 | <template> |
2 | 2 | <view class="status-page"> |
3 | 3 | <f-navbar navbarType="2" @leftClick="leftClick"> |
4 | - <view class="u-flex" slot="left" style="justify-content: space-between;flex-direction: row;"> | |
5 | - <view style="width: 700rpx;"><u--input prefixIcon="search" placeholder="请输入组态名称" border="surround" shape="circle"></u--input></view> | |
4 | + <view class="u-flex search-top" slot="left"> | |
5 | + <view class="search-main"><u--input prefixIcon="search" placeholder="请输入组态名称" border="surround" shape="circle"></u--input></view> | |
6 | 6 | </view> |
7 | 7 | </f-navbar> |
8 | 8 | <!-- 公共组件-每个页面必须引入 --> |
9 | 9 | <public-module></public-module> |
10 | 10 | <view class="status-container"> |
11 | - <view @click="openStatusDetail(item.id)" v-for="(item, index) in list" :key="index" class="status-item u-flex" style="flex-direction: column;justify-content: space-between;"> | |
12 | - <view style="margin-top: 38rpx;"><image style="width: 198rpx;height: 119rpx;" :src="item.icon" mode=""></image></view> | |
13 | - <view style="position: relative;top: -25rpx;"> | |
14 | - <text style="color: #333333;font-size: 14px;">{{ item.name }}</text> | |
11 | + <view @click="openStatusDetail(item.id)" v-for="(item, index) in list" :key="index" class="status-item u-flex"> | |
12 | + <view class="item-image"><image class="image" :src="item.icon"></image></view> | |
13 | + <view class="item-text"> | |
14 | + <text class="text">{{ item.name }}</text> | |
15 | 15 | </view> |
16 | 16 | </view> |
17 | 17 | </view> |
... | ... | @@ -32,15 +32,15 @@ export default { |
32 | 32 | return { |
33 | 33 | list: [ |
34 | 34 | { |
35 | - id:1, | |
35 | + id: 1, | |
36 | 36 | name: '智慧办公室1', |
37 | 37 | icon: '../../../static/test.png' |
38 | 38 | }, |
39 | 39 | { |
40 | - id:2, | |
40 | + id: 2, | |
41 | 41 | name: '智慧办公室2', |
42 | 42 | icon: '../../../static/test.png' |
43 | - }, | |
43 | + } | |
44 | 44 | ] |
45 | 45 | }; |
46 | 46 | }, |
... | ... | @@ -52,34 +52,15 @@ export default { |
52 | 52 | leftClick() { |
53 | 53 | return false; |
54 | 54 | }, |
55 | - openStatusDetail(e){ | |
56 | - console.log(e); | |
55 | + openStatusDetail(e) { | |
57 | 56 | uni.navigateTo({ |
58 | - url:'statusDetail' | |
59 | - }) | |
57 | + url: 'configurationDetail' | |
58 | + }); | |
60 | 59 | } |
61 | 60 | } |
62 | 61 | }; |
63 | 62 | </script> |
64 | 63 | |
65 | 64 | <style lang="scss" scoped> |
66 | -.status-page { | |
67 | - padding: 15rpx 15rpx; | |
68 | -} | |
69 | -.status-container { | |
70 | - width: 700rpx; | |
71 | - height: 250rpx; | |
72 | - display: flex; | |
73 | - flex-wrap: wrap; | |
74 | - align-content: space-between; | |
75 | - justify-content: space-between; | |
76 | - flex-direction: row; | |
77 | - .status-item { | |
78 | - width: 300rpx; | |
79 | - height: 250rpx; | |
80 | - margin: 23rpx; | |
81 | - background-color: #ffffff; | |
82 | - border-radius: 20px; | |
83 | - } | |
84 | -} | |
65 | +@import '../static/configuration.scss'; | |
85 | 66 | </style> | ... | ... |
pages/index/configuration/configurationDetail.vue
renamed from
pages/index/orgStatus/statusDetail.vue
... | ... | @@ -5,96 +5,91 @@ |
5 | 5 | <view> |
6 | 6 | <!-- 基础统计 --> |
7 | 7 | <view class="basic-sty"> |
8 | - <view class=""><text style="font-size: 15px;color:#333333">基础统计</text></view> | |
9 | - <view class="basic" style="margin-top: 25rpx;"> | |
8 | + <view class="basic-text"><text class="text">基础统计</text></view> | |
9 | + <view class="basic"> | |
10 | 10 | <view class="basic-item"> |
11 | - <view class="item-child u-flex" style="justify-content: space-between;padding: 30rpx;"> | |
12 | - <image style="width: 50rpx;height: 50rpx;" src="../../static/device-total.png" mode=""></image> | |
13 | - <text style="color:#333333;font-size: 14px;margin-left: 10rpx;">设备统计</text> | |
11 | + <view class="item-child-top u-flex"> | |
12 | + <image class="item-image" src="../../static/device-total.png"></image> | |
13 | + <text class="item-text" style="">设备统计</text> | |
14 | 14 | </view> |
15 | - <view class="item-child u-flex" style="justify-content: space-between;align-items: center;"> | |
16 | - <view style="width: 200rpx;height: 150rpx;justify-content: space-between;flex-direction: column;" class="u-flex"> | |
17 | - <view style="height: 70rpx;font-size:14px;color:#333333;font-weight:500"> | |
15 | + <view class="item-child-bottom u-flex"> | |
16 | + <view class="u-flex sigle-child"> | |
17 | + <view class="sigle-text"> | |
18 | 18 | <text>{{ deviceData.onLine }}</text> |
19 | 19 | </view> |
20 | - <view style="position:relative;top:-40rpx;height: 60rpx;font-size:12px;color:#999999"><text>在线</text></view> | |
20 | + <view class="sigle-value"><text>在线</text></view> | |
21 | 21 | </view> |
22 | - <view style="margin-left: 45rpx;width: 200rpx;height: 150rpx;justify-content: space-between;flex-direction: column;" class="u-flex"> | |
23 | - <view style="height: 70rpx;font-size:14px;color:#333333;font-weight:500"> | |
22 | + <view class="u-flex sigle-child"> | |
23 | + <view class="sigle-text"> | |
24 | 24 | <text>{{ deviceData.unLine }}</text> |
25 | 25 | </view> |
26 | - <view style="position:relative;top:-40rpx;height: 60rpx;font-size:12px;color:#999999"><text>离线</text></view> | |
26 | + <view class="sigle-value"><text>离线</text></view> | |
27 | 27 | </view> |
28 | - <view style="margin-left: 45rpx;width: 200rpx;height: 150rpx;justify-content: space-between;flex-direction: column;" class="u-flex"> | |
29 | - <view style="height: 70rpx;font-size:14px;color:#333333;font-weight:500"> | |
28 | + <view class="u-flex sigle-child"> | |
29 | + <view class="sigle-text"> | |
30 | 30 | <text>{{ deviceData.noActive }}</text> |
31 | 31 | </view> |
32 | - <view style="position:relative;top:-40rpx;height: 60rpx;font-size:12px;color:#999999"><text>未激活</text></view> | |
32 | + <view class="sigle-value"><text>未激活</text></view> | |
33 | 33 | </view> |
34 | 34 | </view> |
35 | 35 | </view> |
36 | 36 | <view class="basic-item"> |
37 | - <view class="item-child u-flex" style="justify-content: space-between;padding: 30rpx;"> | |
38 | - <image style="width: 50rpx;height: 50rpx;" src="../../static/alert.png" mode=""></image> | |
39 | - <text style="color:#333333;font-size: 14px;margin-left: 10rpx;">告警统计</text> | |
37 | + <view class="item-child-top u-flex"> | |
38 | + <image class="item-image" src="../../static/alert.png"></image> | |
39 | + <text class="item-text">告警统计</text> | |
40 | 40 | </view> |
41 | - <view class="item-child u-flex" style="justify-content: space-between;align-items: center;"> | |
42 | - <view style="width: 200rpx;height: 150rpx;justify-content: space-between;flex-direction: column;" class="u-flex"> | |
43 | - <view style="height: 70rpx;font-size:14px;color:#333333;font-weight:500"> | |
41 | + <view class="item-child-bottom u-flex"> | |
42 | + <view @click="navatorAlertUnhandle()" class="u-flex sigle-child"> | |
43 | + <view class="sigle-text"> | |
44 | 44 | <text>{{ alertData.noHandle }}</text> |
45 | 45 | </view> |
46 | - <view style="position:relative;top:-40rpx;height: 60rpx;font-size:12px;color:#999999"><text>未处理</text></view> | |
46 | + <view class="sigle-value"><text>未处理</text></view> | |
47 | 47 | </view> |
48 | - <view style="margin-left: 45rpx;width: 200rpx;height: 150rpx;justify-content: space-between;flex-direction: column;" class="u-flex"> | |
49 | - <view style="height: 70rpx;font-size:14px;color:#333333;font-weight:500"> | |
48 | + <view @click="navatorAlertHandle('CLEARED_ACK')" class="u-flex sigle-child"> | |
49 | + <view class="sigle-text"> | |
50 | 50 | <text>{{ alertData.doneHandle }}</text> |
51 | 51 | </view> |
52 | - <view style="position:relative;top:-40rpx;height: 60rpx;font-size:12px;color:#999999"><text>已处理</text></view> | |
52 | + <view class="sigle-value"><text>已处理</text></view> | |
53 | 53 | </view> |
54 | - <view style="margin-left: 45rpx;width: 200rpx;height: 150rpx;justify-content: space-between;flex-direction: column;" class="u-flex"> | |
55 | - <view style="height: 70rpx;font-size:14px;color:#333333;font-weight:500"> | |
54 | + <view @click="navatorAlertFalseAlarm('CLEARED_UNACK')" class="u-flex sigle-child"> | |
55 | + <view class="sigle-text"> | |
56 | 56 | <text>{{ alertData.errorReport }}</text> |
57 | 57 | </view> |
58 | - <view style="position:relative;top:-40rpx;height: 60rpx;font-size:12px;color:#999999"><text>误报</text></view> | |
58 | + <view class="sigle-value"><text>误报</text></view> | |
59 | 59 | </view> |
60 | 60 | </view> |
61 | 61 | </view> |
62 | 62 | </view> |
63 | 63 | </view> |
64 | + <!-- 基础统计 --> | |
65 | + <!-- 四宫格 --> | |
64 | 66 | <view class="grid-container"> |
65 | 67 | <view class="grid-item"> |
66 | 68 | <view class="item-center"> |
67 | - <view class="center"><image style="width: 100rpx;height: 100rpx;margin-top: 20rpx;" src="../../static/form.png" mode=""></image></view> | |
68 | - <view class="center" style="position:relative;left:-34rpx;text-align: center;font-size: 13px;line-height: 144rpx;"> | |
69 | - <text style="font-size:13px;color:#333333">维修工单</text> | |
70 | - </view> | |
69 | + <view class="center"><image class="image" src="../../static/form.png"></image></view> | |
70 | + <view class="center-text"><text class="text">维修工单</text></view> | |
71 | 71 | </view> |
72 | 72 | </view> |
73 | 73 | <view @click="openCamera" class="grid-item"> |
74 | 74 | <view class="item-center"> |
75 | - <view class="center"><image style="width: 100rpx;height: 100rpx;margin-top: 20rpx;" src="../../static/camer.png" mode=""></image></view> | |
76 | - <view class="center" style="position:relative;left:-34rpx;text-align: center;font-size: 13px;line-height: 144rpx;"> | |
77 | - <text style="font-size:13px;color:#333333">摄像头管理</text> | |
78 | - </view> | |
75 | + <view class="center"><image class="image" src="../../static/camer.png"></image></view> | |
76 | + <view class="center-text"><text class="text" style="">摄像头管理</text></view> | |
79 | 77 | </view> |
80 | 78 | </view> |
81 | 79 | <view class="grid-item"> |
82 | 80 | <view class="item-center"> |
83 | - <view class="center"><image style="width: 100rpx;height: 100rpx;margin-top: 20rpx;" src="../../static/device.png" mode=""></image></view> | |
84 | - <view class="center" style="position:relative;left:-34rpx;text-align: center;font-size: 13px;line-height: 144rpx;"> | |
85 | - <text style="font-size:13px;color:#333333">设备接入</text> | |
86 | - </view> | |
81 | + <view class="center"><image class="image" src="../../static/device.png"></image></view> | |
82 | + <view class="center-text"><text class="text">设备接入</text></view> | |
87 | 83 | </view> |
88 | 84 | </view> |
89 | 85 | <view @click="openOrgStatus" class="grid-item"> |
90 | 86 | <view class="item-center"> |
91 | - <view class="center"><image style="width: 100rpx;height: 100rpx;margin-top: 20rpx;" src="../../static/status.png" mode=""></image></view> | |
92 | - <view class="center" style="position:relative;left:-34rpx;text-align: center;font-size: 13px;line-height: 144rpx;"> | |
93 | - <text style="font-size:13px;color:#333333">组态</text> | |
94 | - </view> | |
87 | + <view class="center"><image class="image" src="../../static/status.png"></image></view> | |
88 | + <view class="center-text"><text class="text">组态</text></view> | |
95 | 89 | </view> |
96 | 90 | </view> |
97 | 91 | </view> |
92 | + <!-- 四宫格 --> | |
98 | 93 | </view> |
99 | 94 | <f-tabbar></f-tabbar> |
100 | 95 | </view> |
... | ... | @@ -128,20 +123,16 @@ export default { |
128 | 123 | }, |
129 | 124 | methods: { |
130 | 125 | getDeviceTotalData() { |
131 | - let httpData = { | |
132 | - page: 1, | |
133 | - pageSize: 10 | |
134 | - }; | |
135 | 126 | uni.$u.http |
136 | - .get('/yt/homepage/left/top', { params: httpData, custom: { load: false } }) | |
127 | + .get('/yt/homepage/app') | |
137 | 128 | .then(res => { |
138 | 129 | if (res) { |
139 | - this.deviceData.onLine = res.deviceInfo.onLine; | |
140 | - this.deviceData.unLine = res.deviceInfo.offLine; | |
141 | - this.deviceData.noActive = res.deviceInfo.inActive; | |
142 | - this.alertData.noHandle = res.alarmInfo.todayAdd; | |
143 | - this.alertData.doneHandle = res.alarmInfo.sumCount; | |
144 | - this.alertData.errorReport = res.alarmInfo.todayAdd; | |
130 | + this.deviceData.onLine = res.totalDevice.onLine; | |
131 | + this.deviceData.unLine = res.totalDevice.offLine; | |
132 | + this.deviceData.noActive = res.totalDevice.inActive; | |
133 | + this.alertData.noHandle = res.totalAlarm.activedAlarm; | |
134 | + this.alertData.doneHandle = res.totalAlarm.clearedAck; | |
135 | + this.alertData.errorReport = res.totalAlarm.clearedUnack; | |
145 | 136 | } |
146 | 137 | }) |
147 | 138 | .catch(e => { |
... | ... | @@ -155,7 +146,23 @@ export default { |
155 | 146 | }, |
156 | 147 | openOrgStatus() { |
157 | 148 | uni.navigateTo({ |
158 | - url: 'orgStatus/orgStatus' | |
149 | + url: 'configuration/configuration' | |
150 | + }); | |
151 | + }, | |
152 | + navatorAlertUnhandle() { | |
153 | + let obj = ['ACTIVE_UNACK', 'ACTIVE_ACK']; | |
154 | + uni.reLaunch({ | |
155 | + url: '../alarm/alarm?type=' + JSON.stringify(obj) | |
156 | + }); | |
157 | + }, | |
158 | + navatorAlertHandle(e) { | |
159 | + uni.reLaunch({ | |
160 | + url: '../alarm/alarm?type=' + JSON.stringify(e) | |
161 | + }); | |
162 | + }, | |
163 | + navatorAlertFalseAlarm(e) { | |
164 | + uni.reLaunch({ | |
165 | + url: '../alarm/alarm?type=' + JSON.stringify(e) | |
159 | 166 | }); |
160 | 167 | } |
161 | 168 | } |
... | ... | @@ -163,61 +170,5 @@ export default { |
163 | 170 | </script> |
164 | 171 | |
165 | 172 | <style lang="scss" scoped> |
166 | -.index-page { | |
167 | - padding: 27rpx 15rpx; | |
168 | - min-height: 100vh; | |
169 | - background-color: #f8f9fa; | |
170 | -} | |
171 | -.grid-container { | |
172 | - display: grid; | |
173 | - width: 750rpx; | |
174 | - height: 400rpx; | |
175 | - grid-template-columns: repeat(2, 350rpx); | |
176 | - grid-template-rows: repeat(2, 200rpx); | |
177 | - grid-gap: 20rpx; | |
178 | - margin-top: 50rpx; | |
179 | -} | |
180 | - | |
181 | -.grid-item { | |
182 | - background-color: #fff; | |
183 | - border: 0.01rpx solid #fff; | |
184 | - padding: 40rpx; | |
185 | - border-radius: 7px; | |
186 | - .item-center { | |
187 | - width: 290rpx; | |
188 | - height: 150rpx; | |
189 | - margin: -15rpx; | |
190 | - display: flex; | |
191 | - flex-direction: row; | |
192 | - justify-content: space-between; | |
193 | - align-items: center; | |
194 | - .center { | |
195 | - width: 130rpx; | |
196 | - height: 150rpx; | |
197 | - } | |
198 | - } | |
199 | -} | |
200 | -.basic-sty { | |
201 | - padding: 0 10rpx; | |
202 | - // margin-top: 50rpx; | |
203 | - .basic { | |
204 | - width: 750rpx; | |
205 | - height: 500rpx; | |
206 | - display: flex; | |
207 | - justify-content: space-between; | |
208 | - align-items: flex-start; | |
209 | - flex-direction: column; | |
210 | - .basic-item { | |
211 | - width: 700rpx; | |
212 | - height: 240rpx; | |
213 | - background-color: #fff; | |
214 | - display: flex; | |
215 | - justify-content: space-between; | |
216 | - align-items: flex-start; | |
217 | - flex-direction: column; | |
218 | - .item-child { | |
219 | - } | |
220 | - } | |
221 | - } | |
222 | -} | |
173 | +@import './static/index.scss'; | |
223 | 174 | </style> | ... | ... |
pages/index/special.vue
deleted
100644 → 0
1 | -<template> | |
2 | - <view> | |
3 | - <view class="head"> | |
4 | - <view class="search_input"> | |
5 | - <image src="../../static/img/search.png"></image> | |
6 | - <input type="text" placeholder="请输入想搜索的文章" /> | |
7 | - </view> | |
8 | - </view> | |
9 | - <tab :lists="lists" :tab_color="tab_color" @switchover="switchover" :gauge="gauge"></tab> | |
10 | - <!-- 占位符 --> | |
11 | - <view style="width: 100%;height: 220rpx;"></view> | |
12 | - <view class="special"> | |
13 | - <view class="special_list"> | |
14 | - <view class="special_list_top"> | |
15 | - <view class="left"> | |
16 | - 标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题标题 标题标题标题 | |
17 | - </view> | |
18 | - <view class="right"> | |
19 | - <image src="../../static/img/banner.png"></image> | |
20 | - </view> | |
21 | - </view> | |
22 | - <view class="special_list_bottom"> | |
23 | - <text> | |
24 | - 来源:法院法院法院 | |
25 | - </text> | |
26 | - <text> | |
27 | - 2021-03-21 19:40 | |
28 | - </text> | |
29 | - | |
30 | - </view> | |
31 | - </view> | |
32 | - </view> | |
33 | - </view> | |
34 | -</template> | |
35 | - | |
36 | -<script> | |
37 | - import Tab from '../../components/Tab.vue'; | |
38 | - export default { | |
39 | - components:{ | |
40 | - Tab | |
41 | - }, | |
42 | - data() { | |
43 | - return { | |
44 | - //tab切换数组 | |
45 | - lists:[ | |
46 | - {id:1,name:'普法文章'}, | |
47 | - {id:2,name:'测试数据1'}, | |
48 | - {id:3,name:'测试数据测试数据'}, | |
49 | - {id:4,name:'测试数据阿萨德'}, | |
50 | - {id:5,name:'测试数据阿萨德'}, | |
51 | - {id:6,name:'测试数据大声道'}, | |
52 | - {id:7,name:'测试数据fff'}, | |
53 | - {id:8,name:'测试数据1'}, | |
54 | - | |
55 | - ], | |
56 | - //tab切换选中的颜色 | |
57 | - tab_color:'#3b87f6', | |
58 | - // tab组件position: fixed布局距离头部的位置大小(rpx) | |
59 | - gauge:120 | |
60 | - }; | |
61 | - }, | |
62 | - methods:{ | |
63 | - switchover:function(id){ | |
64 | - console.log(id) | |
65 | - } | |
66 | - } | |
67 | - } | |
68 | -</script> | |
69 | - | |
70 | -<style lang="scss"> | |
71 | - | |
72 | - .head{ | |
73 | - width: 100%; | |
74 | - height: 120rpx; | |
75 | - padding: 0rpx 30rpx; | |
76 | - box-sizing: border-box; | |
77 | - background: #3b87f6; | |
78 | - display: flex; | |
79 | - align-items: center; | |
80 | - position: fixed; | |
81 | - top: 0rpx; | |
82 | - z-index: 99; | |
83 | - .search_input { | |
84 | - width: 100%; | |
85 | - height: 60rpx; | |
86 | - background: #fff; | |
87 | - border-radius: 50rpx; | |
88 | - display: flex; | |
89 | - align-items: center; | |
90 | - | |
91 | - image { | |
92 | - width: 28rpx; | |
93 | - height: 28rpx; | |
94 | - margin-left: 26rpx; | |
95 | - } | |
96 | - | |
97 | - input { | |
98 | - font-size: 26rpx; | |
99 | - margin-left: 25rpx; | |
100 | - } | |
101 | - } | |
102 | - } | |
103 | - .special{ | |
104 | - width: 100%; | |
105 | - padding: 0rpx 30rpx; | |
106 | - box-sizing: border-box; | |
107 | - .special_list{ | |
108 | - width: 100%; | |
109 | - height: 270rpx; | |
110 | - border-bottom: 2rpx solid #e7e7e7; | |
111 | - padding: 40rpx 0rpx; | |
112 | - box-sizing: border-box; | |
113 | - .special_list_top{ | |
114 | - display: flex; | |
115 | - justify-content: space-between; | |
116 | - .left{ | |
117 | - width: 65%; | |
118 | - height: 140rpx; | |
119 | - line-height: 46rpx; | |
120 | - overflow : hidden; | |
121 | - text-overflow: ellipsis; | |
122 | - display: -webkit-box; | |
123 | - -webkit-line-clamp: 3; | |
124 | - -webkit-box-orient: vertical; | |
125 | - } | |
126 | - .right{ | |
127 | - width: 30%; | |
128 | - height: 140rpx; | |
129 | - image{ | |
130 | - width: 100%; | |
131 | - height: 100%; | |
132 | - } | |
133 | - } | |
134 | - } | |
135 | - .special_list_bottom{ | |
136 | - width: 100%; | |
137 | - height: 100rpx; | |
138 | - line-height: 100rpx; | |
139 | - display: flex; | |
140 | - justify-content: space-between; | |
141 | - font-size: 24rpx; | |
142 | - color: #999999; | |
143 | - } | |
144 | - } | |
145 | - } | |
146 | -</style> |
pages/index/static/camera.scss
0 → 100644
1 | +.camera-page { | |
2 | + min-height: 100vh; | |
3 | + background-color: #f0f2f5; | |
4 | +} | |
5 | +.org-sty { | |
6 | + width: 750rpx; | |
7 | + height: 150rpx; | |
8 | + margin-top: 1rpx; | |
9 | + background-color: #fff; | |
10 | + display: flex; | |
11 | + flex-direction: row; | |
12 | + justify-content: space-between; | |
13 | + .org-item { | |
14 | + width: 350rpx; | |
15 | + height: 200rpx; | |
16 | + .org-contact { | |
17 | + flex-direction: row; | |
18 | + margin-top: 26rpx; | |
19 | + margin-left: 15rpx; | |
20 | + .text { | |
21 | + color: #333333; | |
22 | + font-size: 15px; | |
23 | + margin-left: 14rpx; | |
24 | + } | |
25 | + } | |
26 | + .org-device { | |
27 | + margin-top: 5rpx; | |
28 | + margin-left: 15rpx; | |
29 | + flex-direction: row; | |
30 | + .device-image { | |
31 | + margin-left: 14rpx; | |
32 | + width: 30rpx; | |
33 | + height: 30rpx; | |
34 | + } | |
35 | + .device-text { | |
36 | + margin-left: 10rpx; | |
37 | + color: #666666; | |
38 | + font-size: 12px; | |
39 | + } | |
40 | + } | |
41 | + .image { | |
42 | + width: 6px; | |
43 | + height: 10px; | |
44 | + float: right; | |
45 | + margin-right: 34rpx; | |
46 | + margin-top: 58rpx; | |
47 | + } | |
48 | + } | |
49 | +} | |
50 | +.camera-item { | |
51 | + height: 200rpx; | |
52 | + border: 0.1px solid gray; | |
53 | +} | |
54 | +.camera-container { | |
55 | + padding: 0 28rpx; | |
56 | + margin-top: -27rpx; | |
57 | + .container-item { | |
58 | + width: 717rpx; | |
59 | + display: flex; | |
60 | + justify-content: space-between; | |
61 | + flex-direction: row; | |
62 | + flex-wrap: wrap; | |
63 | + margin-left: -42rpx; | |
64 | + .item { | |
65 | + margin-top: 83rpx; | |
66 | + width: 300rpx; | |
67 | + height: 200rpx; | |
68 | + background-color: #fff; | |
69 | + border-radius: 20px; | |
70 | + margin-left: 58rpx; | |
71 | + .video { | |
72 | + border-radius: 20px; | |
73 | + width: 300rpx; | |
74 | + height: 200rpx; | |
75 | + } | |
76 | + .bottom-text { | |
77 | + position: relative; | |
78 | + top: 8rpx; | |
79 | + text-align: center; | |
80 | + .text { | |
81 | + color: #333333; | |
82 | + font-size: 13px; | |
83 | + } | |
84 | + } | |
85 | + } | |
86 | + } | |
87 | +} | ... | ... |
pages/index/static/configuration.scss
0 → 100644
1 | +.status-page { | |
2 | + padding: 15rpx 15rpx; | |
3 | + .search-top { | |
4 | + justify-content: space-between; | |
5 | + flex-direction: row; | |
6 | + .search-main { | |
7 | + width: 700rpx; | |
8 | + } | |
9 | + } | |
10 | +} | |
11 | +.status-container { | |
12 | + width: 700rpx; | |
13 | + height: 250rpx; | |
14 | + display: flex; | |
15 | + flex-wrap: wrap; | |
16 | + align-content: space-between; | |
17 | + justify-content: space-between; | |
18 | + flex-direction: row; | |
19 | + .status-item { | |
20 | + width: 300rpx; | |
21 | + height: 250rpx; | |
22 | + margin: 23rpx; | |
23 | + background-color: #ffffff; | |
24 | + border-radius: 20px; | |
25 | + flex-direction: column; | |
26 | + justify-content: space-between; | |
27 | + .item-image { | |
28 | + margin-top: 38rpx; | |
29 | + .image { | |
30 | + width: 198rpx; | |
31 | + height: 119rpx; | |
32 | + } | |
33 | + } | |
34 | + .item-text { | |
35 | + position: relative; | |
36 | + top: -25rpx; | |
37 | + .text { | |
38 | + color: #333333; | |
39 | + font-size: 14px; | |
40 | + } | |
41 | + } | |
42 | + } | |
43 | +} | ... | ... |
pages/index/static/index.scss
0 → 100644
1 | +.index-page { | |
2 | + padding: 27rpx 15rpx; | |
3 | + min-height: 100vh; | |
4 | + background-color: #f8f9fa; | |
5 | +} | |
6 | +.grid-container { | |
7 | + display: grid; | |
8 | + width: 750rpx; | |
9 | + height: 400rpx; | |
10 | + grid-template-columns: repeat(2, 350rpx); | |
11 | + grid-template-rows: repeat(2, 200rpx); | |
12 | + grid-gap: 20rpx; | |
13 | + margin-top: 50rpx; | |
14 | +} | |
15 | + | |
16 | +.grid-item { | |
17 | + background-color: #fff; | |
18 | + border: 0.01rpx solid #fff; | |
19 | + padding: 40rpx; | |
20 | + border-radius: 7px; | |
21 | + .item-center { | |
22 | + width: 290rpx; | |
23 | + height: 150rpx; | |
24 | + margin: -15rpx; | |
25 | + display: flex; | |
26 | + flex-direction: row; | |
27 | + justify-content: space-between; | |
28 | + align-items: center; | |
29 | + .center { | |
30 | + width: 130rpx; | |
31 | + height: 150rpx; | |
32 | + .image { | |
33 | + width: 100rpx; | |
34 | + height: 100rpx; | |
35 | + margin-top: 20rpx; | |
36 | + } | |
37 | + } | |
38 | + .center-text { | |
39 | + position: relative; | |
40 | + left: -34rpx; | |
41 | + text-align: left; | |
42 | + width: 140rpx; | |
43 | + font-size: 13px; | |
44 | + line-height: 144rpx; | |
45 | + .text { | |
46 | + font-size: 13px; | |
47 | + color: #333333; | |
48 | + } | |
49 | + } | |
50 | + } | |
51 | +} | |
52 | +.basic-sty { | |
53 | + padding: 0 10rpx; | |
54 | + .basic-text { | |
55 | + .text { | |
56 | + font-size: 15px; | |
57 | + color: #333333; | |
58 | + } | |
59 | + } | |
60 | + .basic { | |
61 | + width: 750rpx; | |
62 | + height: 500rpx; | |
63 | + display: flex; | |
64 | + justify-content: space-between; | |
65 | + align-items: flex-start; | |
66 | + flex-direction: column; | |
67 | + margin-top: 25rpx; | |
68 | + .basic-item { | |
69 | + width: 700rpx; | |
70 | + height: 240rpx; | |
71 | + background-color: #fff; | |
72 | + display: flex; | |
73 | + justify-content: space-between; | |
74 | + align-items: flex-start; | |
75 | + flex-direction: column; | |
76 | + .item-child-top { | |
77 | + justify-content: space-between; | |
78 | + padding: 30rpx; | |
79 | + .item-image { | |
80 | + width: 50rpx; | |
81 | + height: 50rpx; | |
82 | + } | |
83 | + .item-text { | |
84 | + color: #333333; | |
85 | + font-size: 14px; | |
86 | + margin-left: 10rpx; | |
87 | + } | |
88 | + } | |
89 | + .item-child-bottom { | |
90 | + justify-content: space-between; | |
91 | + align-items: center; | |
92 | + .sigle-child { | |
93 | + width: 223rpx; | |
94 | + height: 150rpx; | |
95 | + justify-content: space-between; | |
96 | + flex-direction: column; | |
97 | + .sigle-text { | |
98 | + height: 70rpx; | |
99 | + font-size: 14px; | |
100 | + color: #333333; | |
101 | + font-weight: 500; | |
102 | + } | |
103 | + .sigle-value { | |
104 | + position: relative; | |
105 | + top: -40rpx; | |
106 | + height: 60rpx; | |
107 | + font-size: 12px; | |
108 | + color: #999999; | |
109 | + } | |
110 | + } | |
111 | + } | |
112 | + } | |
113 | + } | |
114 | +} | ... | ... |
... | ... | @@ -4,8 +4,8 @@ |
4 | 4 | <public-module></public-module> |
5 | 5 | <view class="f__login"> |
6 | 6 | <view class="loginPhone"> |
7 | - <view style="margin-top: 173rpx;"> | |
8 | - <text style="font-size: 22px;color: #3A4759 ;position: relative;">手机验证码登录</text> | |
7 | + <view class="phone-main" style="margin-top: 173rpx;"> | |
8 | + <text class="text" style="">手机验证码登录</text> | |
9 | 9 | <view class="circleStyle"></view> |
10 | 10 | </view> |
11 | 11 | <view class="form-row"> |
... | ... | @@ -15,13 +15,13 @@ |
15 | 15 | <view class="form-row"> |
16 | 16 | <input class="input" type="number" v-model="vCode" placeholder="请输入验证码" |
17 | 17 | placeholder-style="font-weight:normal;color:#bbbbbb;"></input> |
18 | - <view style="color:#6299ff" class="getvcode" :class="{forhidden:readonly}" @click="getVcode">{{ codeText }}</view> | |
18 | + <view class="getvcode" :class="{forhidden:readonly}" @click="getVcode">{{ codeText }}</view> | |
19 | 19 | </view> |
20 | 20 | <button class="submit" size="default" @click="onSubmit"> |
21 | - <text style="color:#FFFFFF">登录</text> | |
21 | + <text class="text">登录</text> | |
22 | 22 | </button> |
23 | - <view class="u-flex" style="flex-direction: row;margin-top: 20rpx;justify-content: space-between;"> | |
24 | - <view style="color: #999999;font-size: 13px;" @click="openAccountFunc">账号密码登录</view> | |
23 | + <view class="u-flex account-style"> | |
24 | + <view class="content" @click="openAccountFunc">账号密码登录</view> | |
25 | 25 | </view> |
26 | 26 | <view class="circleStyleBottom"></view> |
27 | 27 | </view> |
... | ... | @@ -139,85 +139,5 @@ |
139 | 139 | </script> |
140 | 140 | |
141 | 141 | <style lang="scss" scoped> |
142 | - .code-page{ | |
143 | - min-height: 100vh; | |
144 | - background-color: #fff; | |
145 | - } | |
146 | - .f__login { | |
147 | - padding: 48rpx 32rpx; | |
148 | - border-radius: 18rpx 18rpx 0 0; | |
149 | - z-index: 99; | |
150 | - position: relative; | |
151 | - } | |
152 | - | |
153 | - .loginPhone { | |
154 | - .circleStyle { | |
155 | - position: absolute; | |
156 | - width: 145rpx; | |
157 | - height: 300rpx; | |
158 | - left: -31rpx; | |
159 | - top: 10rpx; | |
160 | - border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
161 | - background-color: #f0f2f5; | |
162 | - opacity: 0.5; | |
163 | - } | |
164 | - .form-row { | |
165 | - position: relative; | |
166 | - border-bottom: 1rpx solid #e8e8e8; | |
167 | - .input { | |
168 | - font-size: 34rpx; | |
169 | - line-height: 102rpx; | |
170 | - height: 94rpx; | |
171 | - width: 100%; | |
172 | - box-sizing: border-box; | |
173 | - font-size: 30rpx; | |
174 | - padding: 0; | |
175 | - font-weight: bold; | |
176 | - } | |
177 | - | |
178 | - .getvcode { | |
179 | - font-size: 26rpx; | |
180 | - height: 80rpx; | |
181 | - color: #333; | |
182 | - line-height: 80rpx; | |
183 | - // background: #eee; | |
184 | - min-width: 188rpx; | |
185 | - text-align: center; | |
186 | - border-radius: 8rpx; | |
187 | - position: absolute; | |
188 | - top: 50%; | |
189 | - transform: translateY(-50%); | |
190 | - right: 0; | |
191 | - z-index: 11; | |
192 | - | |
193 | - &.forhidden { | |
194 | - // background: #eee; | |
195 | - // color: #cccccc; | |
196 | - } | |
197 | - } | |
198 | - } | |
199 | - | |
200 | - | |
201 | - .submit { | |
202 | - margin-top: 60rpx; | |
203 | - width: 100%; | |
204 | - position: relative; | |
205 | - background: linear-gradient(90deg, #5DC2FC 0%, #377DFF 100%); | |
206 | - border-radius: 46px; | |
207 | - } | |
208 | - .circleStyleBottom { | |
209 | - position: absolute; | |
210 | - width: 145rpx; | |
211 | - height: 300rpx; | |
212 | - right: -31rpx; | |
213 | - top: 804rpx; | |
214 | - //#ifndef MP | |
215 | - top: 804rpx; | |
216 | - //#endif | |
217 | - border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
218 | - background: linear-gradient(241deg, #00c9a7 0%, rgba(0, 223, 252, 0.5) 100%); | |
219 | - opacity: 0.1; | |
220 | - transform: rotate(180deg); | |
221 | - } | |
222 | - } | |
142 | + @import './static/code.scss'; | |
223 | 143 | </style> | ... | ... |
1 | 1 | <template> |
2 | 2 | <view class="find-password-page"> |
3 | 3 | <public-module></public-module> |
4 | - <view class="top u-flex" style="justify-content: space-between;flex-direction: row;align-items: center;"> | |
4 | + <view class="top u-flex" > | |
5 | 5 | <view @click="showPhone" :style="{color:!nextStatus?'#0079fe':''}" class="item">1.验证手机号码</view> |
6 | 6 | <view :style="{color:!nextStatus?'':'#0079fe'}" class="item">2.设置新密码</view> |
7 | 7 | </view> |
... | ... | @@ -15,7 +15,7 @@ |
15 | 15 | <view class="form-row"> |
16 | 16 | <input class="input" type="number" v-model="vCode" placeholder="请输入短信验证码" |
17 | 17 | placeholder-style="font-weight:normal"></input> |
18 | - <view style="color:#6299ff" class="getvcode" :class="{forhidden:readonly}" @click="getVcode">{{ codeText }}</view> | |
18 | + <view class="getvcode" :class="{forhidden:readonly}" @click="getVcode">{{ codeText }}</view> | |
19 | 19 | </view> |
20 | 20 | <button class="submit" size="default" @click="onNextSubmit"> |
21 | 21 | <text style="color:#fff">下一步</text> |
... | ... | @@ -132,66 +132,5 @@ |
132 | 132 | </script> |
133 | 133 | |
134 | 134 | <style lang="scss" scoped> |
135 | - .find-password-page{ | |
136 | - min-height: 100vh; | |
137 | - background-color: #fff; | |
138 | - } | |
139 | - .top { | |
140 | - width: 750rpx; | |
141 | - height: 100rpx; | |
142 | - border: 0.1px solid #f7f9ff; | |
143 | - | |
144 | - .item { | |
145 | - width: 375rpx; | |
146 | - height: 100rpx; | |
147 | - border: 0.1px solid #f7f9ff; | |
148 | - text-align: center; | |
149 | - line-height: 90rpx; | |
150 | - } | |
151 | - } | |
152 | - | |
153 | - .f__login { | |
154 | - padding: 0 30rpx; | |
155 | - | |
156 | - .loginPhone { | |
157 | - .form-row { | |
158 | - position: relative; | |
159 | - border-bottom: 1px solid #e5e5e5; | |
160 | - .input { | |
161 | - font-size: 34rpx; | |
162 | - line-height: 102rpx; | |
163 | - height: 94rpx; | |
164 | - width: 100%; | |
165 | - box-sizing: border-box; | |
166 | - font-size: 30rpx; | |
167 | - font-weight: bold; | |
168 | - } | |
169 | - | |
170 | - .getvcode { | |
171 | - font-size: 26rpx; | |
172 | - height: 80rpx; | |
173 | - color: #333; | |
174 | - line-height: 80rpx; | |
175 | - min-width: 188rpx; | |
176 | - text-align: center; | |
177 | - border-radius: 8rpx; | |
178 | - position: absolute; | |
179 | - top: 50%; | |
180 | - transform: translateY(-50%); | |
181 | - right: 0; | |
182 | - z-index: 11; | |
183 | - &.forhidden { | |
184 | - } | |
185 | - } | |
186 | - } | |
187 | - | |
188 | - | |
189 | - .submit { | |
190 | - margin-top: 60rpx; | |
191 | - width: 100%; | |
192 | - background: #377DFF; | |
193 | - border-radius: 48px; | |
194 | - } | |
195 | - } | |
196 | - } | |
135 | + @import './static/findPassword.scss'; | |
197 | 136 | </style> | ... | ... |
... | ... | @@ -2,10 +2,10 @@ |
2 | 2 | <view class="login-page"> |
3 | 3 | <!-- 公共组件-每个页面必须引入 --> |
4 | 4 | <public-module></public-module> |
5 | - <view class="u-flex" style="flex-direction: column;"> | |
6 | - <view style="height: 250rpx;margin-top: 90rpx;margin-left: -107rpx;"> | |
7 | - <view style="font-size: 30px;color:#3A4759">您好,</view> | |
8 | - <view style="position: relative;font-size: 30px;color:#3A4759" class="">欢迎来到ThingsKit!</view> | |
5 | + <view class="u-flex login-main"> | |
6 | + <view class="content"> | |
7 | + <view class="hello">您好,</view> | |
8 | + <view class="hello-welcome">欢迎来到ThingsKit!</view> | |
9 | 9 | <view class="circleStyle"></view> |
10 | 10 | </view> |
11 | 11 | </view> |
... | ... | @@ -29,16 +29,15 @@ |
29 | 29 | </template> |
30 | 30 | </u-input> |
31 | 31 | </view> |
32 | - <button class="submit" size="default" @click="onSubmitFunc"><text style="color:#FFFFFF">登录</text></button> | |
33 | - <view class="u-flex" style="flex-direction: row;margin-top: 20rpx;justify-content: space-between;"> | |
34 | - <view style="color: #999999;font-size: 13px;" @click="openCodeFunc">手机验证码登录</view> | |
35 | - <view style="color: #999999;font-size: 13px;position: relative;" @click="findPassrordFunc">忘记密码</view> | |
32 | + <button class="submit" size="default" @click="onSubmitFunc"><text class="text">登录</text></button> | |
33 | + <view class="u-flex row-item"> | |
34 | + <view class="row-phone" @click="openCodeFunc">手机验证码登录</view> | |
35 | + <view class="row-reset" @click="findPassrordFunc">忘记密码</view> | |
36 | 36 | </view> |
37 | - <!-- <button class="button marginT" @click="onAuthorization" :style="{background:PrimaryColor}">微信授权登录</button> --> | |
38 | - <view @click="onAuthorization" class="u-flex" style="justify-content: center;flex-direction: column;margin-top: 220rpx;"> | |
39 | - <view style="color:#999999;font-size: 13px;">第三方账号登录</view> | |
37 | + <view @click="onAuthorization" class="u-flex link-login"> | |
38 | + <view class="link-text">第三方账号登录</view> | |
40 | 39 | <view style="height:20rpx"></view> |
41 | - <view><image style="width: 75rpx;height: 75rpx;" src="../../static/weixin.png" mode="aspectFill"></image></view> | |
40 | + <view class="link-image"><image class="image" src="../../static/weixin.png" mode="aspectFill"></image></view> | |
42 | 41 | <view class="circleStyleBottom"></view> |
43 | 42 | </view> |
44 | 43 | </view> |
... | ... | @@ -169,63 +168,5 @@ export default { |
169 | 168 | </script> |
170 | 169 | |
171 | 170 | <style lang="scss" scoped> |
172 | -.login-page { | |
173 | - min-height: 100vh; | |
174 | - background-color: #fff; | |
175 | - .circleStyle { | |
176 | - position: absolute; | |
177 | - width: 145rpx; | |
178 | - height: 300rpx; | |
179 | - left: -31rpx; | |
180 | - top: 10rpx; | |
181 | - border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
182 | - background-color: #f0f2f5; | |
183 | - opacity: 0.5; | |
184 | - } | |
185 | -} | |
186 | - | |
187 | -.f__login { | |
188 | - padding: 8rpx 32rpx; | |
189 | - border-radius: 18rpx 18rpx 0 0; | |
190 | - z-index: 99; | |
191 | - position: relative; | |
192 | -} | |
193 | - | |
194 | -.loginPhone { | |
195 | - .form-row { | |
196 | - position: relative; | |
197 | - | |
198 | - .input { | |
199 | - font-size: 34rpx; | |
200 | - line-height: 102rpx; | |
201 | - height: 114rpx; | |
202 | - width: 100%; | |
203 | - box-sizing: border-box; | |
204 | - font-size: 30rpx; | |
205 | - padding: 0; | |
206 | - font-weight: bold; | |
207 | - } | |
208 | - } | |
209 | - | |
210 | - .submit { | |
211 | - margin-top: 60rpx; | |
212 | - background: linear-gradient(90deg, #5dc2fc 0%, #377dff 100%); | |
213 | - width: 100%; | |
214 | - border-radius: 46px; | |
215 | - } | |
216 | - .circleStyleBottom { | |
217 | - position: absolute; | |
218 | - width: 145rpx; | |
219 | - height: 300rpx; | |
220 | - right: -31rpx; | |
221 | - top: 404rpx; | |
222 | - //#ifndef MP | |
223 | - top: 504rpx; | |
224 | - //#endif | |
225 | - border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
226 | - background: linear-gradient(241deg, #00c9a7 0%, rgba(0, 223, 252, 0.5) 100%); | |
227 | - opacity: 0.1; | |
228 | - transform: rotate(180deg); | |
229 | - } | |
230 | -} | |
171 | +@import './static/login.scss'; | |
231 | 172 | </style> | ... | ... |
... | ... | @@ -10,25 +10,21 @@ |
10 | 10 | <view @click="openPersonalInfo" class="u-m-r-20"><image class="avatar" mode="aspectFill" :src="userInfo.avatar || '/static/logo.png'"></image></view> |
11 | 11 | <view @click="openPersonalInfo" class="u-flex-1"> |
12 | 12 | <view class="nickName u-flex"> |
13 | - <view class="name u-m-r-10" v-if="userInfo.realName">{{ userInfo.realName }}</view> | |
13 | + <view class="name u-m-r-10" v-if="userInfo.realName"> | |
14 | + <text style="#FFFFFF;font-size: 18px;">{{ userInfo.realName }}</text> | |
15 | + </view> | |
14 | 16 | </view> |
15 | - <view class="detail" v-if="userInfo.phoneNum">手机号:{{ userInfo.phoneNum | phone }}</view> | |
16 | - <view class="detail" v-else>手机号:未绑定</view> | |
17 | + <view style="#FFFFFF;font-size: 14px;" v-if="userInfo.phoneNumber">手机号:{{ userInfo.phoneNumber | phone }}</view> | |
18 | + <view v-else><text style="#FFFFFF;font-size: 14px;">手机号:未绑定</text></view> | |
17 | 19 | </view> |
18 | 20 | </block> |
19 | 21 | <block v-else> |
20 | 22 | <view class="u-m-r-20"> |
21 | - <view class="avatar u-flex" style="justify-content: center;"><u-icon name="account-fill" color="black" size="30"></u-icon></view> | |
23 | + <view class="avatar u-flex"><u-icon name="account-fill" color="black" size="30"></u-icon></view> | |
22 | 24 | </view> |
23 | 25 | <view class="u-flex-1"> |
24 | - <view @click="openLoginFunc" class="u-font-lg" style="color:black;font-weight: bold;">请点击登录</view> | |
25 | - <view | |
26 | - @click="clickAccountFunc" | |
27 | - style="margin-top: 15rpx;text-align: center;border-radius: 22px;;background-color: #FFFFFF;width: 150rpx;height: 50rpx;" | |
28 | - class="detail" | |
29 | - > | |
30 | - <text style="color:#3388FF;font-size: 12px;">绑定账号</text> | |
31 | - </view> | |
26 | + <view @click="openLoginFunc" class="u-font-lg click-login">请点击登录</view> | |
27 | + <view @click="clickAccountFunc" class="detail"><text class="text">绑定账号</text></view> | |
32 | 28 | </view> |
33 | 29 | </block> |
34 | 30 | <view><u-icon name="arrow-right" color="black" size="13"></u-icon></view> |
... | ... | @@ -40,9 +36,13 @@ |
40 | 36 | <block v-if="userInfo.isToken"> |
41 | 37 | <view @click="openPersonalInfo" class="u-m-r-20"><image class="avatar" mode="aspectFill" :src="userInfo.avatar"></image></view> |
42 | 38 | <view @click="openPersonalInfo" class="u-flex-1"> |
43 | - <view class="nickName">{{ userInfo.realName }}</view> | |
44 | - <view class="detail" v-if="userInfo.phoneNum">手机号:{{ userInfo.phoneNum | phone }}</view> | |
45 | - <view class="detail" v-else>手机号:未绑定</view> | |
39 | + <view class="nickName u-flex"> | |
40 | + <view class="name u-m-r-10" v-if="userInfo.realName"> | |
41 | + <text style="#FFFFFF;font-size: 18px;">{{ userInfo.realName }}</text> | |
42 | + </view> | |
43 | + </view> | |
44 | + <view style="#FFFFFF;font-size: 14px;" v-if="userInfo.phoneNumber">手机号:{{ userInfo.phoneNumber | phone }}</view> | |
45 | + <view v-else><text style="#FFFFFF;font-size: 14px;">手机号:未绑定</text></view> | |
46 | 46 | </view> |
47 | 47 | </block> |
48 | 48 | <block v-else> |
... | ... | @@ -58,41 +58,30 @@ |
58 | 58 | </view> |
59 | 59 | <!-- #endif --> |
60 | 60 | </view> |
61 | - <view | |
62 | - class="u-flex" | |
63 | - style="overflow-x: hidden;position: relative;top:-25rpx;z-index:54;background: #FFFFFF;;border-radius: 17px 17px 0px 0px;;height: 835rpx;width: 750rpx;flex-direction: column;justify-content: space-between;" | |
64 | - > | |
65 | - <view style="margin-top: 100rpx;"> | |
66 | - <view @click="onTokenJump('../systemNotify/systemNotify')" class="u-flex" style="flex-direction: row;justify-content: space-between;align-content: space-between;"> | |
67 | - <view style="width: 125rpx;"><image style="width:35rpx;height: 35rpx;" src="../../static/sys-not.png" mode=""></image></view> | |
68 | - <view style="position: relative;left: -58rpx;width: 420rpx;"><text style="color: #333333;font-size: 15px;">系统通知</text></view> | |
69 | - <view style="position: relative;right: -112rpx;width: 100rpx;"> | |
70 | - <image style="width: 13rpx;height: 17rpx;" src="../../static/arrow-right.png" mode=""></image> | |
71 | - </view> | |
61 | + <view class="u-flex my-nav"> | |
62 | + <view class="nav-main"> | |
63 | + <view @click="onTokenJump('../systemNotify/systemNotify')" class="u-flex nav-link"> | |
64 | + <view class="nav-image"><image class="image" src="../../static/sys-not.png"></image></view> | |
65 | + <view class="nav-center"><text class="text">系统通知</text></view> | |
66 | + <view class="nav-right"><image class="image" src="../../static/arrow-right.png"></image></view> | |
72 | 67 | </view> |
73 | - <view | |
74 | - @click="onTokenJump('../feedback/feedback')" | |
75 | - class="u-flex" | |
76 | - style="margin-top: 60rpx;flex-direction: row;justify-content: space-between;align-content: space-between;" | |
77 | - > | |
78 | - <view style="width: 125rpx;"><image style="width:35rpx;height: 35rpx;" src="../../static/find-sugg.png" mode=""></image></view> | |
79 | - <view style="position: relative;left: -58rpx;width: 420rpx;"><text style="color: #333333;font-size: 15px;">意见反馈</text></view> | |
80 | - <view style="position: relative;right: -112rpx;width: 100rpx;"> | |
81 | - <image style="width: 13rpx;height: 17rpx;" src="../../static/arrow-right.png" mode=""></image> | |
82 | - </view> | |
68 | + <view @click="onTokenJump('../feedback/feedback')" class="u-flex nav-link"> | |
69 | + <view class="nav-image"><image class="image" src="../../static/find-sugg.png"></image></view> | |
70 | + <view class="nav-center"><text class="text">意见反馈</text></view> | |
71 | + <view class="nav-right"><image class="image" src="../../static/arrow-right.png"></image></view> | |
83 | 72 | </view> |
84 | 73 | </view> |
85 | - <view class="u-flex" style="justify-content: center;width: 600rpx;"><u-button @click="onLoginoutFunc" type="primary" shape="circle" text="退出账号"></u-button></view> | |
74 | + <view v-if="userInfo.isToken" class="u-flex" style="justify-content: center;width: 600rpx;"> | |
75 | + <u-button @click="onLoginoutFunc" type="primary" shape="circle" text="退出账号"></u-button> | |
76 | + </view> | |
86 | 77 | </view> |
87 | 78 | <f-tabbar></f-tabbar> |
88 | 79 | <!-- 绑定账号 --> |
89 | 80 | <view> |
90 | 81 | <u-modal :showConfirmButton="false" :show="show" :title="title"> |
91 | 82 | <view v-if="!bindPhone" class="loginPhone"> |
92 | - <view class="form-row" style="background:#F7F9FF;border-radius: 48px;width: 532rpx;height: 80rpx;"> | |
93 | - <u--input shape="circle" class="input" prefixIcon="account-fill" type="text" placeholder="登录账号" v-model="account"></u--input> | |
94 | - </view> | |
95 | - <view class="form-row" style="margin-top: 20rpx;background: #F7F9FF;border-radius: 48px;width: 532rpx;height: 80rpx;"> | |
83 | + <view class="form-row"><u--input shape="circle" class="input" prefixIcon="account-fill" type="text" placeholder="登录账号" v-model="account"></u--input></view> | |
84 | + <view class="form-row item-bind"> | |
96 | 85 | <u--input |
97 | 86 | class="input" |
98 | 87 | shape="circle" |
... | ... | @@ -105,13 +94,13 @@ |
105 | 94 | @change="passwordChange" |
106 | 95 | ></u--input> |
107 | 96 | </view> |
108 | - <view class="u-flex" style="flex-direction: row;margin-top: 20rpx;"> | |
109 | - <view style="visibility: hidden;">手机验证码登录</view> | |
110 | - <view style="color: #0079fe;font-size: 14px;" @click="bindPhoneFunc">手机绑定</view> | |
97 | + <view class="u-flex item-phone"> | |
98 | + <view class="phone-hide">手机验证码登录</view> | |
99 | + <view class="bind-phone-text" @click="bindPhoneFunc">手机绑定</view> | |
111 | 100 | </view> |
112 | 101 | </view> |
113 | 102 | <view v-else class="loginPhone"> |
114 | - <view class="form-row" style="background:#F7F9FF;border-radius: 48px;width: 532rpx;height: 80rpx;"> | |
103 | + <view class="form-row"> | |
115 | 104 | <u--input |
116 | 105 | shape="circle" |
117 | 106 | class="input" |
... | ... | @@ -121,7 +110,7 @@ |
121 | 110 | placeholder-style="font-weight:normal;color:#bbbbbb;" |
122 | 111 | ></u--input> |
123 | 112 | </view> |
124 | - <view class="form-row" style="margin-top: 20rpx;background:#F7F9FF;border-radius: 48px;width: 532rpx;height: 80rpx;"> | |
113 | + <view class="form-row row-top"> | |
125 | 114 | <u--input |
126 | 115 | shape="circle" |
127 | 116 | class="input" |
... | ... | @@ -132,15 +121,15 @@ |
132 | 121 | ></u--input> |
133 | 122 | <view style="color:#377DFF" class="getvcode" :class="{ forhidden: readonly }" @click="getVcode">{{ codeText }}</view> |
134 | 123 | </view> |
135 | - <view class="u-flex" style="flex-direction: row;margin-top: 20rpx;"> | |
136 | - <view style="visibility: hidden;">手机验证码登录</view> | |
137 | - <view style="color: #0079fe;font-size: 14px;" @click="bindAccountFunc">账号绑定</view> | |
124 | + <view class="u-flex item-phone"> | |
125 | + <view class="phone-hide">手机验证码登录</view> | |
126 | + <view class="bind-phone-text" @click="bindAccountFunc">账号绑定</view> | |
138 | 127 | </view> |
139 | 128 | </view> |
140 | - <view class=""> | |
141 | - <view class="u-flex" style="flex-direction: row;margin-top: 288rpx;margin-left: -538rpx;"> | |
142 | - <view style="width: 230rpx"><u-button @click="show = false" type="info" shape="circle" text="取消"></u-button></view> | |
143 | - <view style="width: 230rpx;margin-left: 65rpx;"><u-button @click="bindConfirm" type="primary" shape="circle" text="确认"></u-button></view> | |
129 | + <view class="bottom-content"> | |
130 | + <view class="u-flex content"> | |
131 | + <view class="cancel"><u-button @click="show = false" type="info" shape="circle" text="取消"></u-button></view> | |
132 | + <view class="confrim"><u-button @click="bindConfirm" type="primary" shape="circle" text="确认"></u-button></view> | |
144 | 133 | </view> |
145 | 134 | </view> |
146 | 135 | </u-modal> |
... | ... | @@ -148,17 +137,14 @@ |
148 | 137 | <!-- 退出登录 --> |
149 | 138 | <view> |
150 | 139 | <u-popup bgColor="transparent" :overlay="true" :show="showLogout" mode="bottom"> |
151 | - <view class="u-flex" style="flex-direction: column;height: 300rpx;margin: 30rpx 40rpx;background:#f5f5f5;border-radius: 20rpx;"> | |
152 | - <view style="width:669rpx;height: 100rpx;border-bottom: 1rpx solid #d6d6d6;text-align: center;line-height: 86rpx;"> | |
153 | - <text style="color:#999999">确定要退出当前账号?</text> | |
154 | - </view> | |
155 | - <view @click="logoutBtn" style="width:669rpx;height: 100rpx;border-bottom: 1rpx solid #d6d6d6;text-align: center;line-height: 86rpx;"> | |
156 | - <text style="color:#f95e5a">退出登录</text> | |
157 | - </view> | |
158 | - <view style="width:669rpx;height: 100rpx;text-align: center;line-height: 86rpx;"><text @click="closeLogout" style="color:#3478f7">取消</text></view> | |
140 | + <view class="u-flex logout-main"> | |
141 | + <view class="main"><text style="color:#999999">确定要退出当前账号?</text></view> | |
142 | + <view @click="logoutBtn" class="main"><text style="color:#f95e5a">退出登录</text></view> | |
143 | + <view class="main"><text @click="closeLogout" style="color:#3478f7">取消</text></view> | |
159 | 144 | </view> |
160 | 145 | </u-popup> |
161 | 146 | </view> |
147 | + <!-- 退出登录 --> | |
162 | 148 | </view> |
163 | 149 | </template> |
164 | 150 | |
... | ... | @@ -334,134 +320,5 @@ export default { |
334 | 320 | </script> |
335 | 321 | |
336 | 322 | <style lang="scss" scoped> |
337 | -.personal { | |
338 | - background-color: #ffffff; | |
339 | -} | |
340 | -.headBox { | |
341 | - background: linear-gradient(90deg, #8c9ef2 0%, #5f6ee6 100%); | |
342 | - border-top: 0.01px solid #f5f5f5; | |
343 | - height: 250rpx; | |
344 | - | |
345 | - .avatar { | |
346 | - width: 50px; | |
347 | - height: 50px; | |
348 | - border-radius: 25px; | |
349 | - background-color: #ccc; | |
350 | - } | |
351 | - | |
352 | - .nickName { | |
353 | - .btn { | |
354 | - font-size: 22rpx; | |
355 | - font-weight: normal; | |
356 | - color: #666; | |
357 | - background: #fff; | |
358 | - border-radius: 5rpx; | |
359 | - height: 45rpx; | |
360 | - line-height: 45rpx; | |
361 | - padding: 0 10rpx; | |
362 | - position: relative; | |
363 | - | |
364 | - .itemButton { | |
365 | - border-radius: 0; | |
366 | - text-align: left; | |
367 | - opacity: 0; | |
368 | - width: 100%; | |
369 | - height: 100%; | |
370 | - position: absolute; | |
371 | - left: 0; | |
372 | - top: 0; | |
373 | - } | |
374 | - } | |
375 | - | |
376 | - .name { | |
377 | - color: #fff; | |
378 | - font-weight: bold; | |
379 | - font-size: 32rpx; | |
380 | - } | |
381 | - | |
382 | - .placardVip { | |
383 | - background: #2a2e44; | |
384 | - color: #f4d6a1; | |
385 | - font-size: 22rpx; | |
386 | - padding: 4rpx 10rpx; | |
387 | - text-align: center; | |
388 | - border-radius: 4rpx; | |
389 | - } | |
390 | - } | |
391 | - | |
392 | - .detail { | |
393 | - color: #fff; | |
394 | - font-size: 24rpx; | |
395 | - padding-top: 6rpx; | |
396 | - } | |
397 | -} | |
398 | - | |
399 | -.cell-group { | |
400 | - .cell-item { | |
401 | - border-bottom: 2rpx solid #eee; | |
402 | - background-color: #fff; | |
403 | - border-radius: 30rpx; | |
404 | - padding: 20rpx 24rpx; | |
405 | - | |
406 | - .title { | |
407 | - color: #333; | |
408 | - font-size: 28rpx; | |
409 | - padding: 0 10rpx; | |
410 | - font-weight: bold; | |
411 | - margin: 0; | |
412 | - } | |
413 | - | |
414 | - .more { | |
415 | - font-size: 24rpx; | |
416 | - color: #999; | |
417 | - } | |
418 | - } | |
419 | -} | |
420 | - | |
421 | -.submit { | |
422 | - margin-top: 160rpx; | |
423 | - color: #fff; | |
424 | - width: 650rpx; | |
425 | - border: none; | |
426 | -} | |
427 | - | |
428 | -.loginPhone { | |
429 | - // width: 750rpx; | |
430 | - // padding: 0rpx 10rpx; | |
431 | - | |
432 | - .form-row { | |
433 | - position: relative; | |
434 | - | |
435 | - .input { | |
436 | - font-size: 34rpx; | |
437 | - line-height: 102rpx; | |
438 | - height: 94rpx; | |
439 | - box-sizing: border-box; | |
440 | - font-size: 30rpx; | |
441 | - padding: 0; | |
442 | - font-weight: bold; | |
443 | - } | |
444 | - | |
445 | - .getvcode { | |
446 | - font-size: 26rpx; | |
447 | - height: 50rpx; | |
448 | - color: #333; | |
449 | - line-height: 52rpx; | |
450 | - // background: #eee; | |
451 | - min-width: 188rpx; | |
452 | - text-align: center; | |
453 | - border-radius: 8rpx; | |
454 | - position: absolute; | |
455 | - top: 50%; | |
456 | - transform: translateY(-50%); | |
457 | - right: 17rpx; | |
458 | - z-index: 11; | |
459 | - | |
460 | - &.forhidden { | |
461 | - // background: #eee; | |
462 | - // color: #cccccc; | |
463 | - } | |
464 | - } | |
465 | - } | |
466 | -} | |
323 | +@import './static/personal.scss'; | |
467 | 324 | </style> | ... | ... |
... | ... | @@ -2,15 +2,12 @@ |
2 | 2 | <view class="set-page"> |
3 | 3 | <!-- 公共组件-每个页面必须引入 --> |
4 | 4 | <public-module></public-module> |
5 | - <view | |
6 | - class="u-flex" | |
7 | - style="border-radius: 20px;margin-top: 37rpx;padding-left: 15rpx;;justify-content: space-between;width: 690rpx;height: 200rpx;background-color: #FFFFFF;" | |
8 | - > | |
9 | - <view style=""><image style="border-radius: 50px;width: 130rpx;height: 130rpx;" :src="avatar" mode=""></image></view> | |
10 | - <view style="margin-right: 40rpx;"><image style="width: 13rpx;height: 17rpx;" src="../../static/arrow-right.png" mode=""></image></view> | |
5 | + <view class="u-flex set-main"> | |
6 | + <view class="main-image"><image class="image" :src="avatar"></image></view> | |
7 | + <view class="main-right-image"><image class="image" src="../../static/arrow-right.png"></image></view> | |
11 | 8 | </view> |
12 | - <view class="u-m-t-20"><text style="color:#8f9ca2;font-size: 14px;">基本资料</text></view> | |
13 | - <view style="background-color: #FFFFFF;border-radius: 20px;margin-top: 20rpx;padding-left: 15rpx;"> | |
9 | + <view class="u-m-t-20 basic-text"><text class="text">基本资料</text></view> | |
10 | + <view class="basic-main"> | |
14 | 11 | <u--form labelPosition="left" :model="myInfoModel" :rules="rules" ref="myInfoFormRef"> |
15 | 12 | <u-form-item labelWidth="80px" label="真实姓名" prop="userInfo.realName" borderBottom ref="item1"> |
16 | 13 | <u--input placeholder="请输入真实姓名" v-model="myInfoModel.userInfo.realName" border="none"></u--input> |
... | ... | @@ -49,7 +46,7 @@ |
49 | 46 | </u-form-item> |
50 | 47 | </u--form> |
51 | 48 | </view> |
52 | - <view style="width: 500rpx;margin-left: 86rpx;"><button class="submit" size="default" @click="onSubmitFunc" :style="{ background: PrimaryColor }">确认</button></view> | |
49 | + <view class="basic-bottom"><button class="submit" size="default" @click="onSubmitFunc" :style="{ background: PrimaryColor }">确认</button></view> | |
53 | 50 | <!-- #ifdef MP --> |
54 | 51 | <view class="u-m-t-40"><text style="visibility: hidden;">#</text></view> |
55 | 52 | <!-- #endif --> |
... | ... | @@ -207,15 +204,5 @@ export default { |
207 | 204 | </script> |
208 | 205 | |
209 | 206 | <style lang="scss" scoped> |
210 | -.set-page { | |
211 | - padding: 0rpx 30rpx; | |
212 | - | |
213 | - .submit { | |
214 | - margin-top: 60rpx; | |
215 | - color: #fff; | |
216 | - width: 100%; | |
217 | - border: none; | |
218 | - border-radius: 40rpx; | |
219 | - } | |
220 | -} | |
207 | +@import './static/set.scss'; | |
221 | 208 | </style> | ... | ... |
pages/personal/static/code.scss
0 → 100644
1 | +.code-page { | |
2 | + min-height: 100vh; | |
3 | + background-color: #fff; | |
4 | +} | |
5 | +.f__login { | |
6 | + padding: 48rpx 32rpx; | |
7 | + border-radius: 18rpx 18rpx 0 0; | |
8 | + z-index: 99; | |
9 | + position: relative; | |
10 | +} | |
11 | + | |
12 | +.loginPhone { | |
13 | + .phone-main { | |
14 | + .text { | |
15 | + font-size: 22px; | |
16 | + color: #3a4759; | |
17 | + position: relative; | |
18 | + } | |
19 | + .circleStyle { | |
20 | + position: absolute; | |
21 | + width: 145rpx; | |
22 | + height: 300rpx; | |
23 | + left: -31rpx; | |
24 | + top: 10rpx; | |
25 | + border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
26 | + background-color: #f0f2f5; | |
27 | + opacity: 0.5; | |
28 | + } | |
29 | + } | |
30 | + | |
31 | + .form-row { | |
32 | + position: relative; | |
33 | + border-bottom: 1rpx solid #e8e8e8; | |
34 | + .input { | |
35 | + font-size: 34rpx; | |
36 | + line-height: 102rpx; | |
37 | + height: 94rpx; | |
38 | + width: 100%; | |
39 | + box-sizing: border-box; | |
40 | + font-size: 30rpx; | |
41 | + padding: 0; | |
42 | + font-weight: bold; | |
43 | + } | |
44 | + | |
45 | + .getvcode { | |
46 | + font-size: 26rpx; | |
47 | + height: 80rpx; | |
48 | + color: #6299ff; | |
49 | + line-height: 80rpx; | |
50 | + // background: #eee; | |
51 | + min-width: 188rpx; | |
52 | + text-align: center; | |
53 | + border-radius: 8rpx; | |
54 | + position: absolute; | |
55 | + top: 50%; | |
56 | + transform: translateY(-50%); | |
57 | + right: 0; | |
58 | + z-index: 11; | |
59 | + | |
60 | + &.forhidden { | |
61 | + // background: #eee; | |
62 | + // color: #cccccc; | |
63 | + } | |
64 | + } | |
65 | + } | |
66 | + | |
67 | + .submit { | |
68 | + margin-top: 60rpx; | |
69 | + width: 100%; | |
70 | + position: relative; | |
71 | + background: linear-gradient(90deg, #5dc2fc 0%, #377dff 100%); | |
72 | + border-radius: 46px; | |
73 | + .text { | |
74 | + color: #ffffff; | |
75 | + } | |
76 | + } | |
77 | + .circleStyleBottom { | |
78 | + position: absolute; | |
79 | + width: 145rpx; | |
80 | + height: 300rpx; | |
81 | + right: -31rpx; | |
82 | + top: 804rpx; | |
83 | + //#ifndef MP | |
84 | + top: 804rpx; | |
85 | + //#endif | |
86 | + border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
87 | + background: linear-gradient(241deg, #00c9a7 0%, rgba(0, 223, 252, 0.5) 100%); | |
88 | + opacity: 0.1; | |
89 | + transform: rotate(180deg); | |
90 | + } | |
91 | + .account-style { | |
92 | + flex-direction: row; | |
93 | + margin-top: 20rpx; | |
94 | + justify-content: space-between; | |
95 | + .content { | |
96 | + color: #999999; | |
97 | + font-size: 13px; | |
98 | + } | |
99 | + } | |
100 | +} | ... | ... |
pages/personal/static/findPassword.scss
0 → 100644
1 | +.find-password-page { | |
2 | + min-height: 100vh; | |
3 | + background-color: #fff; | |
4 | +} | |
5 | +.top { | |
6 | + width: 750rpx; | |
7 | + height: 100rpx; | |
8 | + border: 0.1px solid #f7f9ff; | |
9 | + justify-content: space-between; | |
10 | + flex-direction: row; | |
11 | + align-items: center; | |
12 | + | |
13 | + .item { | |
14 | + width: 375rpx; | |
15 | + height: 100rpx; | |
16 | + border: 0.1px solid #f7f9ff; | |
17 | + text-align: center; | |
18 | + line-height: 90rpx; | |
19 | + } | |
20 | +} | |
21 | + | |
22 | +.f__login { | |
23 | + padding: 0 30rpx; | |
24 | + | |
25 | + .loginPhone { | |
26 | + .form-row { | |
27 | + position: relative; | |
28 | + border-bottom: 1px solid #e5e5e5; | |
29 | + .input { | |
30 | + font-size: 34rpx; | |
31 | + line-height: 102rpx; | |
32 | + height: 94rpx; | |
33 | + width: 100%; | |
34 | + box-sizing: border-box; | |
35 | + font-size: 30rpx; | |
36 | + font-weight: bold; | |
37 | + } | |
38 | + | |
39 | + .getvcode { | |
40 | + font-size: 26rpx; | |
41 | + height: 80rpx; | |
42 | + color: #6299ff; | |
43 | + line-height: 80rpx; | |
44 | + min-width: 188rpx; | |
45 | + text-align: center; | |
46 | + border-radius: 8rpx; | |
47 | + position: absolute; | |
48 | + top: 50%; | |
49 | + transform: translateY(-50%); | |
50 | + right: 0; | |
51 | + z-index: 11; | |
52 | + &.forhidden { | |
53 | + } | |
54 | + } | |
55 | + } | |
56 | + | |
57 | + .submit { | |
58 | + margin-top: 60rpx; | |
59 | + width: 100%; | |
60 | + background: #377dff; | |
61 | + border-radius: 48px; | |
62 | + } | |
63 | + } | |
64 | +} | ... | ... |
pages/personal/static/login.scss
0 → 100644
1 | +.login-page { | |
2 | + min-height: 100vh; | |
3 | + background-color: #fff; | |
4 | + .login-main { | |
5 | + flex-direction: column; | |
6 | + .content { | |
7 | + height: 250rpx; | |
8 | + margin-top: 90rpx; | |
9 | + margin-left: -107rpx; | |
10 | + .hello { | |
11 | + font-size: 30px; | |
12 | + color: #3a4759; | |
13 | + } | |
14 | + .hello-welcome { | |
15 | + position: relative; | |
16 | + font-size: 30px; | |
17 | + color: #3a4759; | |
18 | + } | |
19 | + } | |
20 | + } | |
21 | + .circleStyle { | |
22 | + position: absolute; | |
23 | + width: 145rpx; | |
24 | + height: 300rpx; | |
25 | + left: -31rpx; | |
26 | + top: 10rpx; | |
27 | + border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
28 | + background-color: #f0f2f5; | |
29 | + opacity: 0.5; | |
30 | + } | |
31 | +} | |
32 | + | |
33 | +.f__login { | |
34 | + padding: 8rpx 32rpx; | |
35 | + border-radius: 18rpx 18rpx 0 0; | |
36 | + z-index: 99; | |
37 | + position: relative; | |
38 | +} | |
39 | + | |
40 | +.loginPhone { | |
41 | + .form-row { | |
42 | + position: relative; | |
43 | + | |
44 | + .input { | |
45 | + font-size: 34rpx; | |
46 | + line-height: 102rpx; | |
47 | + height: 114rpx; | |
48 | + width: 100%; | |
49 | + box-sizing: border-box; | |
50 | + font-size: 30rpx; | |
51 | + padding: 0; | |
52 | + font-weight: bold; | |
53 | + } | |
54 | + } | |
55 | + | |
56 | + .submit { | |
57 | + margin-top: 60rpx; | |
58 | + background: linear-gradient(90deg, #5dc2fc 0%, #377dff 100%); | |
59 | + width: 100%; | |
60 | + border-radius: 46px; | |
61 | + .text { | |
62 | + color: #ffffff; | |
63 | + } | |
64 | + } | |
65 | + .row-item { | |
66 | + flex-direction: row; | |
67 | + margin-top: 20rpx; | |
68 | + justify-content: space-between; | |
69 | + .row-phone { | |
70 | + color: #999999; | |
71 | + font-size: 13px; | |
72 | + } | |
73 | + .row-reset { | |
74 | + color: #999999; | |
75 | + font-size: 13px; | |
76 | + position: relative; | |
77 | + } | |
78 | + } | |
79 | + .link-login { | |
80 | + justify-content: center; | |
81 | + flex-direction: column; | |
82 | + margin-top: 220rpx; | |
83 | + .link-text { | |
84 | + color: #999999; | |
85 | + font-size: 13px; | |
86 | + } | |
87 | + .link-image { | |
88 | + .image { | |
89 | + width: 75rpx; | |
90 | + height: 75rpx; | |
91 | + } | |
92 | + } | |
93 | + } | |
94 | + .circleStyleBottom { | |
95 | + position: absolute; | |
96 | + width: 145rpx; | |
97 | + height: 300rpx; | |
98 | + right: -31rpx; | |
99 | + top: 404rpx; | |
100 | + //#ifndef MP | |
101 | + top: 504rpx; | |
102 | + //#endif | |
103 | + border-radius: 0 100rpx 100rpx 0/0 150rpx 150rpx 0; | |
104 | + background: linear-gradient(241deg, #00c9a7 0%, rgba(0, 223, 252, 0.5) 100%); | |
105 | + opacity: 0.1; | |
106 | + transform: rotate(180deg); | |
107 | + } | |
108 | +} | ... | ... |
pages/personal/static/personal.scss
0 → 100644
1 | +.personal { | |
2 | + background-color: #ffffff; | |
3 | +} | |
4 | +.headBox { | |
5 | + background: linear-gradient(90deg, #8c9ef2 0%, #5f6ee6 100%); | |
6 | + border-top: 0.01px solid #f5f5f5; | |
7 | + height: 250rpx; | |
8 | + | |
9 | + .avatar { | |
10 | + width: 50px; | |
11 | + height: 50px; | |
12 | + border-radius: 25px; | |
13 | + background-color: #ccc; | |
14 | + justify-content: center; | |
15 | + } | |
16 | + .click-login { | |
17 | + color: black; | |
18 | + font-weight: bold; | |
19 | + } | |
20 | + | |
21 | + .nickName { | |
22 | + .btn { | |
23 | + font-size: 22rpx; | |
24 | + font-weight: normal; | |
25 | + color: #666; | |
26 | + background: #fff; | |
27 | + border-radius: 5rpx; | |
28 | + height: 45rpx; | |
29 | + line-height: 45rpx; | |
30 | + padding: 0 10rpx; | |
31 | + position: relative; | |
32 | + | |
33 | + .itemButton { | |
34 | + border-radius: 0; | |
35 | + text-align: left; | |
36 | + opacity: 0; | |
37 | + width: 100%; | |
38 | + height: 100%; | |
39 | + position: absolute; | |
40 | + left: 0; | |
41 | + top: 0; | |
42 | + } | |
43 | + } | |
44 | + | |
45 | + .name { | |
46 | + color: #fff; | |
47 | + font-weight: bold; | |
48 | + font-size: 32rpx; | |
49 | + } | |
50 | + | |
51 | + .placardVip { | |
52 | + background: #2a2e44; | |
53 | + color: #f4d6a1; | |
54 | + font-size: 22rpx; | |
55 | + padding: 4rpx 10rpx; | |
56 | + text-align: center; | |
57 | + border-radius: 4rpx; | |
58 | + } | |
59 | + } | |
60 | + | |
61 | + .detail { | |
62 | + color: #fff; | |
63 | + font-size: 24rpx; | |
64 | + padding-top: 6rpx; | |
65 | + margin-top: 15rpx; | |
66 | + text-align: center; | |
67 | + border-radius: 22px; | |
68 | + background-color: #ffffff; | |
69 | + width: 150rpx; | |
70 | + height: 50rpx; | |
71 | + .text { | |
72 | + color: #3388ff; | |
73 | + font-size: 12px; | |
74 | + } | |
75 | + } | |
76 | +} | |
77 | +.my-nav { | |
78 | + overflow-x: hidden; | |
79 | + position: relative; | |
80 | + top: -25rpx; | |
81 | + z-index: 54; | |
82 | + background: #ffffff; | |
83 | + border-radius: 17px 17px 0px 0px; | |
84 | + height: 835rpx; | |
85 | + width: 750rpx; | |
86 | + flex-direction: column; | |
87 | + justify-content: space-between; | |
88 | + .nav-main { | |
89 | + margin-top: 100rpx; | |
90 | + display: flex; | |
91 | + flex-direction: column; | |
92 | + justify-content: space-between; | |
93 | + height: 147rpx; | |
94 | + } | |
95 | + .nav-link { | |
96 | + flex-direction: row; | |
97 | + justify-content: space-between; | |
98 | + align-content: space-between; | |
99 | + .nav-image { | |
100 | + width: 125rpx; | |
101 | + .image { | |
102 | + width: 35rpx; | |
103 | + height: 35rpx; | |
104 | + } | |
105 | + } | |
106 | + .nav-center { | |
107 | + position: relative; | |
108 | + left: -58rpx; | |
109 | + width: 420rpx; | |
110 | + .text { | |
111 | + color: #333333; | |
112 | + font-size: 15px; | |
113 | + } | |
114 | + } | |
115 | + .nav-right { | |
116 | + position: relative; | |
117 | + right: -112rpx; | |
118 | + width: 100rpx; | |
119 | + .image { | |
120 | + width: 13rpx; | |
121 | + height: 17rpx; | |
122 | + } | |
123 | + } | |
124 | + } | |
125 | +} | |
126 | + | |
127 | +.cell-group { | |
128 | + .cell-item { | |
129 | + border-bottom: 2rpx solid #eee; | |
130 | + background-color: #fff; | |
131 | + border-radius: 30rpx; | |
132 | + padding: 20rpx 24rpx; | |
133 | + | |
134 | + .title { | |
135 | + color: #333; | |
136 | + font-size: 28rpx; | |
137 | + padding: 0 10rpx; | |
138 | + font-weight: bold; | |
139 | + margin: 0; | |
140 | + } | |
141 | + | |
142 | + .more { | |
143 | + font-size: 24rpx; | |
144 | + color: #999; | |
145 | + } | |
146 | + } | |
147 | +} | |
148 | + | |
149 | +.submit { | |
150 | + margin-top: 160rpx; | |
151 | + color: #fff; | |
152 | + width: 650rpx; | |
153 | + border: none; | |
154 | +} | |
155 | + | |
156 | +.loginPhone { | |
157 | + // width: 750rpx; | |
158 | + // padding: 0rpx 10rpx; | |
159 | + | |
160 | + .form-row { | |
161 | + position: relative; | |
162 | + background: #f7f9ff; | |
163 | + border-radius: 48px; | |
164 | + width: 532rpx; | |
165 | + height: 80rpx; | |
166 | + .input { | |
167 | + font-size: 34rpx; | |
168 | + line-height: 102rpx; | |
169 | + height: 94rpx; | |
170 | + box-sizing: border-box; | |
171 | + font-size: 30rpx; | |
172 | + padding: 0; | |
173 | + font-weight: bold; | |
174 | + } | |
175 | + | |
176 | + .getvcode { | |
177 | + font-size: 26rpx; | |
178 | + height: 50rpx; | |
179 | + color: #333; | |
180 | + line-height: 52rpx; | |
181 | + // background: #eee; | |
182 | + min-width: 188rpx; | |
183 | + text-align: center; | |
184 | + border-radius: 8rpx; | |
185 | + position: absolute; | |
186 | + top: 50%; | |
187 | + transform: translateY(-50%); | |
188 | + right: 17rpx; | |
189 | + z-index: 11; | |
190 | + | |
191 | + &.forhidden { | |
192 | + // background: #eee; | |
193 | + // color: #cccccc; | |
194 | + } | |
195 | + } | |
196 | + } | |
197 | + .row-top { | |
198 | + margin-top: 20rpx; | |
199 | + } | |
200 | + .item-bind { | |
201 | + margin-top: 20rpx; | |
202 | + background: #f7f9ff; | |
203 | + border-radius: 48px; | |
204 | + width: 532rpx; | |
205 | + height: 80rpx; | |
206 | + } | |
207 | + .item-phone { | |
208 | + flex-direction: row; | |
209 | + margin-top: 20rpx; | |
210 | + .phone-hide { | |
211 | + visibility: hidden; | |
212 | + } | |
213 | + .bind-phone-text { | |
214 | + color: #0079fe; | |
215 | + font-size: 14px; | |
216 | + } | |
217 | + } | |
218 | +} | |
219 | +.bottom-content { | |
220 | + .content { | |
221 | + flex-direction: row; | |
222 | + margin-top: 288rpx; | |
223 | + margin-left: -538rpx; | |
224 | + .cancel { | |
225 | + width: 230rpx; | |
226 | + } | |
227 | + .confrim { | |
228 | + width: 230rpx; | |
229 | + margin-left: 65rpx; | |
230 | + } | |
231 | + } | |
232 | +} | |
233 | +.logout-main { | |
234 | + flex-direction: column; | |
235 | + height: 300rpx; | |
236 | + margin: 30rpx 40rpx; | |
237 | + background: #f5f5f5; | |
238 | + border-radius: 20rpx; | |
239 | + .main { | |
240 | + width: 669rpx; | |
241 | + height: 100rpx; | |
242 | + border-bottom: 1rpx solid #d6d6d6; | |
243 | + text-align: center; | |
244 | + line-height: 86rpx; | |
245 | + } | |
246 | +} | ... | ... |
pages/personal/static/set.scss
0 → 100644
1 | +.set-page { | |
2 | + padding: 0rpx 30rpx; | |
3 | + .submit { | |
4 | + margin-top: 60rpx; | |
5 | + color: #fff; | |
6 | + width: 100%; | |
7 | + border: none; | |
8 | + border-radius: 40rpx; | |
9 | + } | |
10 | +} | |
11 | +.set-main { | |
12 | + border-radius: 20px; | |
13 | + margin-top: 37rpx; | |
14 | + padding-left: 15rpx; | |
15 | + justify-content: space-between; | |
16 | + width: 690rpx; | |
17 | + height: 200rpx; | |
18 | + background-color: #ffffff; | |
19 | + .main-image { | |
20 | + .image { | |
21 | + border-radius: 50px; | |
22 | + width: 130rpx; | |
23 | + height: 130rpx; | |
24 | + } | |
25 | + } | |
26 | + .main-right-image { | |
27 | + margin-right: 40rpx; | |
28 | + .image { | |
29 | + width: 13rpx; | |
30 | + height: 17rpx; | |
31 | + } | |
32 | + } | |
33 | +} | |
34 | +.basic-text { | |
35 | + .text { | |
36 | + color: #8f9ca2; | |
37 | + font-size: 14px; | |
38 | + } | |
39 | +} | |
40 | +.basic-main { | |
41 | + background-color: #ffffff; | |
42 | + border-radius: 20px; | |
43 | + margin-top: 20rpx; | |
44 | + padding-left: 15rpx; | |
45 | +} | |
46 | +.basic-bottom { | |
47 | + width: 500rpx; | |
48 | + margin-left: 86rpx; | |
49 | +} | ... | ... |
... | ... | @@ -2,20 +2,20 @@ |
2 | 2 | <view class="notify-detail-page"> |
3 | 3 | <!-- 公共组件-每个页面必须引入 --> |
4 | 4 | <public-module></public-module> |
5 | - <view> | |
6 | - <view class="u-flex" style="margin-top: 10rpx;justify-content: center;"> | |
7 | - <text style="color: #2E384D;font-size: 18px;">{{ notifyList.receiverName }}</text> | |
5 | + <view class="notify-column"> | |
6 | + <view class="u-flex column"> | |
7 | + <text class="text">{{ notifyList.receiverName }}</text> | |
8 | 8 | </view> |
9 | - <view style="border-radius: 20px;;margin-top: 20rpx;width: 696rpx;height: 1000rpx;background-color: #FFFFFF;"> | |
9 | + <view class="column-list"> | |
10 | 10 | <u-list height="140rpx"> |
11 | 11 | <u-list-item> |
12 | 12 | <u-cell :value="`${notifyList.createTime}`" :title="`${notifyList.receiverName}`"> |
13 | - <u-avatar slot="icon" shape="circle" size="35" :src="1111"></u-avatar> | |
13 | + <u-avatar slot="icon" shape="circle" size="35" :src="avatar"></u-avatar> | |
14 | 14 | </u-cell> |
15 | 15 | </u-list-item> |
16 | 16 | </u-list> |
17 | - <view class=""> | |
18 | - <text style="color: #2E384D;font-size: 15px;">{{ notifyList.receiverName }}</text> | |
17 | + <view class="bottom-text"> | |
18 | + <text class="text">{{ notifyList.receiverName }}</text> | |
19 | 19 | </view> |
20 | 20 | </view> |
21 | 21 | </view> |
... | ... | @@ -32,15 +32,17 @@ export default { |
32 | 32 | }, |
33 | 33 | data() { |
34 | 34 | return { |
35 | - notifyList: {} | |
35 | + notifyList: {}, | |
36 | + avatar: '' | |
36 | 37 | }; |
37 | 38 | }, |
38 | 39 | onLoad(e) { |
39 | 40 | // 隐藏原生的tabbar |
40 | 41 | uni.hideTabBar(); |
41 | 42 | if (e.data !== null) { |
42 | - let params = e.data; | |
43 | - this.loadData(params); | |
43 | + let params = JSON.parse(e.data); | |
44 | + this.avatar = params.avatar; | |
45 | + this.loadData(params.id); | |
44 | 46 | } |
45 | 47 | }, |
46 | 48 | methods: { |
... | ... | @@ -53,7 +55,7 @@ export default { |
53 | 55 | } |
54 | 56 | }) |
55 | 57 | .catch(e => { |
56 | - uni.$u.toast(e.data.message); | |
58 | + uni.$u.toast(e.data?.message); | |
57 | 59 | }); |
58 | 60 | } |
59 | 61 | } |
... | ... | @@ -61,10 +63,5 @@ export default { |
61 | 63 | </script> |
62 | 64 | |
63 | 65 | <style lang="scss" scoped> |
64 | -.notify-detail-page { | |
65 | - min-height: 100vh; | |
66 | - background-color: #f8f9fa; | |
67 | - padding-top: 10rpx; | |
68 | - padding-left: 27rpx; | |
69 | -} | |
66 | +@import './static/notifyDetail.scss'; | |
70 | 67 | </style> | ... | ... |
pages/systemNotify/static/notifyDetail.scss
0 → 100644
1 | +.notify-detail-page { | |
2 | + min-height: 100vh; | |
3 | + background-color: #f8f9fa; | |
4 | + padding-top: 10rpx; | |
5 | + padding-left: 27rpx; | |
6 | +} | |
7 | +.notify-column { | |
8 | + .column { | |
9 | + margin-top: 10rpx; | |
10 | + justify-content: center; | |
11 | + .text { | |
12 | + color: #2e384d; | |
13 | + font-size: 18px; | |
14 | + } | |
15 | + } | |
16 | + .column-list { | |
17 | + border-radius: 20px; | |
18 | + margin-top: 20rpx; | |
19 | + width: 696rpx; | |
20 | + height: 1000rpx; | |
21 | + background-color: #ffffff; | |
22 | + .bottom-text { | |
23 | + .text { | |
24 | + color: #2e384d; | |
25 | + font-size: 15px; | |
26 | + } | |
27 | + } | |
28 | + } | |
29 | +} | ... | ... |
pages/systemNotify/static/systemNotify.scss
0 → 100644
1 | +.notify-page { | |
2 | + min-height: 100vh; | |
3 | + background-color: #f8f9fa; | |
4 | + padding-top: 10rpx; | |
5 | + padding-left: 27rpx; | |
6 | +} | |
7 | +/deep/.u-list-item { | |
8 | + background: #ffffff; | |
9 | + width: 695rpx; | |
10 | + border-radius: 20px; | |
11 | + margin-top: 20rpx; | |
12 | +} | |
13 | +.notify-main { | |
14 | + .main { | |
15 | + flex-direction: column; | |
16 | + margin-left: -22rpx; | |
17 | + .main-item { | |
18 | + justify-content: space-between; | |
19 | + flex-direction: row; | |
20 | + margin: 15rpx; | |
21 | + width: 700rpx; | |
22 | + height: 136rpx; | |
23 | + background: #ffffff; | |
24 | + border-radius: 20px; | |
25 | + .item { | |
26 | + justify-content: space-between; | |
27 | + flex-direction: row; | |
28 | + .item-avatar { | |
29 | + margin-left: 30rpx; | |
30 | + .avatar { | |
31 | + margin-left: 30rpx; | |
32 | + } | |
33 | + } | |
34 | + .item-content { | |
35 | + margin-left: 30rpx; | |
36 | + text-align: left; | |
37 | + justify-content: space-between; | |
38 | + flex-direction: column; | |
39 | + .text-top { | |
40 | + width: 400rpx; | |
41 | + color: #2e384d; | |
42 | + font-size: 15px; | |
43 | + } | |
44 | + .text-bottom { | |
45 | + width: 400rpx; | |
46 | + color: #999999; | |
47 | + font-size: 13px; | |
48 | + } | |
49 | + } | |
50 | + } | |
51 | + .item-right { | |
52 | + .text { | |
53 | + margin-right: 30rpx; | |
54 | + color: #999999; | |
55 | + font-size: 13px; | |
56 | + } | |
57 | + } | |
58 | + } | |
59 | + } | |
60 | +} | ... | ... |
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <view class="notify-page"> |
3 | 3 | <!-- 公共组件-每个页面必须引入 --> |
4 | 4 | <public-module></public-module> |
5 | - <view style=""> | |
5 | + <view> | |
6 | 6 | <u--form labelPosition="left" :model="model1" :rules="rules" ref="form1"> |
7 | 7 | <u-form-item |
8 | 8 | label="类型" |
... | ... | @@ -20,25 +20,19 @@ |
20 | 20 | </u--form> |
21 | 21 | <u-action-sheet :show="showType" :actions="actions" title="请选择类型" @close="showType = false" @select="typeSelect"></u-action-sheet> |
22 | 22 | </view> |
23 | - <view> | |
23 | + <view class="notify-main"> | |
24 | 24 | <mescroll-body ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback"> |
25 | - <view class="u-flex" style="flex-direction: column;margin-left: -22rpx;"> | |
26 | - <view | |
27 | - @click="clickNotifyDetail(item.id)" | |
28 | - class="u-flex" | |
29 | - v-for="(item, index) in list" | |
30 | - :key="index" | |
31 | - style="justify-content: space-between;flex-direction: row;margin: 15rpx;width: 700rpx;height:136rpx;background: #FFFFFF;border-radius: 20px;" | |
32 | - > | |
33 | - <view class="u-flex" style="justify-content: space-between;flex-direction: row;"> | |
34 | - <view style="margin-left: 30rpx;"><u-avatar style="margin-left: 30rpx;" shape="circle" size="40" :src="item.avatar"></u-avatar></view> | |
35 | - <view class="u-flex" style="margin-left: 30rpx;text-align: left;justify-content: space-between;flex-direction: column;"> | |
36 | - <text style="width:400rpx;color:#2E384D;font-size: 15px;">{{ item.title }}</text> | |
37 | - <text style="width:400rpx;color:#999999;font-size: 13px;">{{ item.createTime }}</text> | |
25 | + <view class="u-flex main"> | |
26 | + <view @click="clickNotifyDetail(item)" class="u-flex main-item" v-for="(item, index) in list" :key="index"> | |
27 | + <view class="u-flex item"> | |
28 | + <view class="item-avatar"><u-avatar class="avatar" shape="circle" size="40" :src="item.avatar"></u-avatar></view> | |
29 | + <view class="u-flex item-content"> | |
30 | + <text class="text-top">{{ item.title }}</text> | |
31 | + <text class="text-bottom">{{ item.createTime }}</text> | |
38 | 32 | </view> |
39 | 33 | </view> |
40 | - <view class=""> | |
41 | - <text style="margin-right: 30rpx;color:#999999;font-size: 13px;">{{ item.type == 'OTHER' ? '其他' : item.type == 'MEETING' ? '会议' : '公告' }}</text> | |
34 | + <view class="item-right"> | |
35 | + <text class="text">{{ item.type == 'OTHER' ? '其他' : item.type == 'MEETING' ? '会议' : '公告' }}</text> | |
42 | 36 | </view> |
43 | 37 | </view> |
44 | 38 | </view> |
... | ... | @@ -149,25 +143,16 @@ export default { |
149 | 143 | }, |
150 | 144 | clickNotifyDetail(e) { |
151 | 145 | let obj = e; |
152 | - uni.navigateTo({ | |
153 | - url: './notifyDetail?data=' + obj | |
154 | - }); | |
146 | + setTimeout(() => { | |
147 | + uni.navigateTo({ | |
148 | + url: './notifyDetail?data=' + JSON.stringify(obj) | |
149 | + }); | |
150 | + }, 500); | |
155 | 151 | } |
156 | 152 | } |
157 | 153 | }; |
158 | 154 | </script> |
159 | 155 | |
160 | 156 | <style lang="scss" scoped> |
161 | -.notify-page { | |
162 | - min-height: 100vh; | |
163 | - background-color: #f8f9fa; | |
164 | - padding-top: 10rpx; | |
165 | - padding-left: 27rpx; | |
166 | -} | |
167 | -/deep/.u-list-item { | |
168 | - background: #ffffff; | |
169 | - width: 695rpx; | |
170 | - border-radius: 20px; | |
171 | - margin-top: 20rpx; | |
172 | -} | |
157 | +@import './static/systemNotify.scss'; | |
173 | 158 | </style> | ... | ... |
static/empty-data.png
0 → 100644
9 KB
... | ... | @@ -19,7 +19,7 @@ const GlobalOption = { |
19 | 19 | }, |
20 | 20 | empty: { |
21 | 21 | use: true, // 是否显示空布局 |
22 | - icon: "https://www.mescroll.com/img/mescroll-empty.png" // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) | |
22 | + icon: "../../../../../static/empty-data.png" // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png ) | |
23 | 23 | } |
24 | 24 | }, |
25 | 25 | // 国际化配置 | ... | ... |