Showing
8 changed files
with
297 additions
and
278 deletions
| @@ -5,32 +5,28 @@ | @@ -5,32 +5,28 @@ | ||
| 5 | <public-module></public-module> | 5 | <public-module></public-module> |
| 6 | <view class="form-page"> | 6 | <view class="form-page"> |
| 7 | <u--form labelPosition="left" :model="feedbackData" :rules="rules" ref="myfeedBackFormRef"> | 7 | <u--form labelPosition="left" :model="feedbackData" :rules="rules" ref="myfeedBackFormRef"> |
| 8 | - <u-form-item required label="主题" prop="feedbackInfo.title" borderBottom ref="item1"> | 8 | + <u-form-item required label="主题" prop="feedbackInfo.title" borderBottom> |
| 9 | <u--input placeholder="请输入主题" v-model="feedbackData.feedbackInfo.title" border="none"> | 9 | <u--input placeholder="请输入主题" v-model="feedbackData.feedbackInfo.title" border="none"> |
| 10 | </u--input> | 10 | </u--input> |
| 11 | </u-form-item> | 11 | </u-form-item> |
| 12 | - <u-form-item required label="姓名" prop="feedbackInfo.name" borderBottom ref="item1"> | 12 | + <u-form-item required label="姓名" prop="feedbackInfo.name" borderBottom> |
| 13 | <u--input placeholder="请输入姓名" v-model="feedbackData.feedbackInfo.name" border="none"></u--input> | 13 | <u--input placeholder="请输入姓名" v-model="feedbackData.feedbackInfo.name" border="none"></u--input> |
| 14 | </u-form-item> | 14 | </u-form-item> |
| 15 | - <view class="info"> | ||
| 16 | - <view class="info-contain"> | ||
| 17 | - <u-form-item required label="反馈" prop="feedbackInfo.message" borderBottom ref="item1"> | ||
| 18 | - <u--textarea placeholder="请输入反馈信息" v-model="feedbackData.feedbackInfo.message" count> | ||
| 19 | - </u--textarea> | ||
| 20 | - </u-form-item> | ||
| 21 | - </view> | ||
| 22 | - </view> | 15 | + <u-form-item required label="反馈" prop="feedbackInfo.message" borderBottom> |
| 16 | + <u--textarea placeholder="请输入反馈信息" v-model="feedbackData.feedbackInfo.message" count> | ||
| 17 | + </u--textarea> | ||
| 18 | + </u-form-item> | ||
| 23 | <view class="feed-back-text" style="margin: 15px 0px 0px -16rpx;">上传图片(最多6张)</view> | 19 | <view class="feed-back-text" style="margin: 15px 0px 0px -16rpx;">上传图片(最多6张)</view> |
| 24 | <view class="info" style="margin-top: 15rpx;background: rgba(1, 1, 1, 0);"> | 20 | <view class="info" style="margin-top: 15rpx;background: rgba(1, 1, 1, 0);"> |
| 25 | <view class="info-contain"> | 21 | <view class="info-contain"> |
| 26 | - <u-form-item label="图片" prop="feedbackInfo.images" borderBottom ref="item1"> | 22 | + <u-form-item label="图片" prop="feedbackInfo.images" borderBottom> |
| 27 | <u-upload :capture="capture" :fileList="fileList1" @afterRead="afterRead" | 23 | <u-upload :capture="capture" :fileList="fileList1" @afterRead="afterRead" |
| 28 | @delete="deletePic" name="1" multiple :maxCount="6"></u-upload> | 24 | @delete="deletePic" name="1" multiple :maxCount="6"></u-upload> |
| 29 | </u-form-item> | 25 | </u-form-item> |
| 30 | </view> | 26 | </view> |
| 31 | <view style="width:427rpx;margin:0 auto;"> | 27 | <view style="width:427rpx;margin:0 auto;"> |
| 32 | <u-button class="buttonSty button-sty" shape="circle" type="primary" text="提交" | 28 | <u-button class="buttonSty button-sty" shape="circle" type="primary" text="提交" |
| 33 | - customStyle="margin-top: 129rpx" @click="submit"></u-button> | 29 | + customStyle="margin-top: 200rpx" @click="submit"></u-button> |
| 34 | </view> | 30 | </view> |
| 35 | </view> | 31 | </view> |
| 36 | </u--form> | 32 | </u--form> |
| @@ -153,7 +149,7 @@ | @@ -153,7 +149,7 @@ | ||
| 153 | // #endif | 149 | // #endif |
| 154 | if (!token) return uni.$u.toast('请登录后上传图片'); | 150 | if (!token) return uni.$u.toast('请登录后上传图片'); |
| 155 | return new Promise((resolve, reject) => { | 151 | return new Promise((resolve, reject) => { |
| 156 | - let a = uni.uploadFile({ | 152 | + uni.uploadFile({ |
| 157 | url: `${baseUrl.baseUrl}/yt/oss/upload`, | 153 | url: `${baseUrl.baseUrl}/yt/oss/upload`, |
| 158 | filePath: url, | 154 | filePath: url, |
| 159 | name: 'file', | 155 | name: 'file', |
| @@ -186,7 +182,7 @@ | @@ -186,7 +182,7 @@ | ||
| 186 | .validate() | 182 | .validate() |
| 187 | .then(async res => { | 183 | .then(async res => { |
| 188 | if (res) { | 184 | if (res) { |
| 189 | - let httpData = { | 185 | + let data = { |
| 190 | title: this.feedbackData.feedbackInfo.title, | 186 | title: this.feedbackData.feedbackInfo.title, |
| 191 | name: this.feedbackData.feedbackInfo.name, | 187 | name: this.feedbackData.feedbackInfo.name, |
| 192 | images: this.feedbackData.feedbackInfo.images.length == 0 ? '' : JSON | 188 | images: this.feedbackData.feedbackInfo.images.length == 0 ? '' : JSON |
| @@ -194,11 +190,8 @@ | @@ -194,11 +190,8 @@ | ||
| 194 | this.feedbackData.feedbackInfo.images), | 190 | this.feedbackData.feedbackInfo.images), |
| 195 | message: this.feedbackData.feedbackInfo.message | 191 | message: this.feedbackData.feedbackInfo.message |
| 196 | }; | 192 | }; |
| 197 | - const res = await api.feedbackApi.postFeedBackApi(httpData) | ||
| 198 | - uni.showToast({ | ||
| 199 | - title: '意见反馈提交成功~', | ||
| 200 | - icon: 'none' | ||
| 201 | - }); | 193 | + const res = await api.feedbackApi.postFeedBackApi(data) |
| 194 | + uni.$u.toast('意见反馈提交成功~'); | ||
| 202 | setTimeout(() => { | 195 | setTimeout(() => { |
| 203 | uni.navigateBack(); | 196 | uni.navigateBack(); |
| 204 | }, 500); | 197 | }, 500); |
| @@ -213,58 +206,7 @@ | @@ -213,58 +206,7 @@ | ||
| 213 | </script> | 206 | </script> |
| 214 | 207 | ||
| 215 | <style lang="scss" scoped> | 208 | <style lang="scss" scoped> |
| 216 | - .feedback-page { | ||
| 217 | - min-height: 100vh; | ||
| 218 | - background-color: #f8f9fa; | ||
| 219 | - padding-top: 9rpx; | ||
| 220 | - padding-left: 27rpx; | ||
| 221 | - overflow-y: scroll; | ||
| 222 | - overflow: hidden; | ||
| 223 | - } | ||
| 224 | - | ||
| 225 | - .form-page { | ||
| 226 | - width: 700rpx; | ||
| 227 | - background-color: #ffffff; | ||
| 228 | - border-radius: 10px; | ||
| 229 | - margin-top: 20rpx; | ||
| 230 | - padding-left: 15rpx; | ||
| 231 | - padding: 0 20rpx; | ||
| 232 | - height: 500rpx; | ||
| 233 | - | ||
| 234 | - .info { | ||
| 235 | - width: 700rpx; | ||
| 236 | - background-color: #ffffff; | ||
| 237 | - border-radius: 10px; | ||
| 238 | - margin-top: 100rpx; | ||
| 239 | - height: 256rpx; | ||
| 240 | - margin-left: -20rpx; | ||
| 241 | - | ||
| 242 | - .info-contain { | ||
| 243 | - margin: 0rpx 27rpx; | ||
| 244 | - | ||
| 245 | - /deep/ .u-line { | ||
| 246 | - display: none !important; | ||
| 247 | - } | ||
| 248 | - | ||
| 249 | - /deep/ .u-form-item__body__left__content__label { | ||
| 250 | - display: none !important; | ||
| 251 | - } | ||
| 252 | - | ||
| 253 | - /deep/.u-form-item__body__right { | ||
| 254 | - margin-left: -106rpx; | ||
| 255 | - } | ||
| 256 | - | ||
| 257 | - /deep/.u-textarea--radius { | ||
| 258 | - border: none !important; | ||
| 259 | - } | ||
| 260 | - } | ||
| 261 | - } | ||
| 262 | - | ||
| 263 | - /deep/.u-button--primary { | ||
| 264 | - background-color: #377DFF !important; | ||
| 265 | - border-color: #377DFF !important; | ||
| 266 | - } | ||
| 267 | - } | 209 | + @import "./static/feedback.scss"; |
| 268 | 210 | ||
| 269 | //#ifndef MP | 211 | //#ifndef MP |
| 270 | .buttonSty { | 212 | .buttonSty { |
| @@ -272,4 +214,4 @@ | @@ -272,4 +214,4 @@ | ||
| 272 | } | 214 | } |
| 273 | 215 | ||
| 274 | //#endif | 216 | //#endif |
| 275 | -</style> | 217 | +</style> |
| 1 | +.feedback-page { | ||
| 2 | + min-height: 100vh; | ||
| 3 | + background-color: #f8f9fa; | ||
| 4 | + padding-top: 9rpx; | ||
| 5 | + padding-left: 27rpx; | ||
| 6 | + overflow-y: scroll; | ||
| 7 | + overflow: hidden; | ||
| 8 | + } | ||
| 9 | + | ||
| 10 | + .form-page { | ||
| 11 | + width: 700rpx; | ||
| 12 | + background-color: #ffffff; | ||
| 13 | + border-radius: 10px; | ||
| 14 | + margin-top: 20rpx; | ||
| 15 | + padding-left: 15rpx; | ||
| 16 | + padding: 0 20rpx; | ||
| 17 | + height: 860rpx; | ||
| 18 | + | ||
| 19 | + .info { | ||
| 20 | + width: 700rpx; | ||
| 21 | + background-color: #ffffff; | ||
| 22 | + border-radius: 10px; | ||
| 23 | + margin-top: 100rpx; | ||
| 24 | + height: 256rpx; | ||
| 25 | + margin-left: -20rpx; | ||
| 26 | + | ||
| 27 | + .info-contain { | ||
| 28 | + margin: 0rpx 27rpx; | ||
| 29 | + | ||
| 30 | + /deep/ .u-line { | ||
| 31 | + display: none !important; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + /deep/ .u-form-item__body__left__content__label { | ||
| 35 | + display: none !important; | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + /deep/.u-form-item__body__right { | ||
| 39 | + margin-left: -106rpx; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + /deep/.u-textarea--radius { | ||
| 43 | + border: none !important; | ||
| 44 | + } | ||
| 45 | + } | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + /deep/.u-button--primary { | ||
| 49 | + background-color: #377DFF !important; | ||
| 50 | + border-color: #377DFF !important; | ||
| 51 | + } | ||
| 52 | + } |
| 1 | <template> | 1 | <template> |
| 2 | - <view class="status-page"> | ||
| 3 | - <view style="margin-left:15rpx;background-color: #f8f9fa;position:fixed;top:0rpx;z-index: 99999;"> | ||
| 4 | - <view style="height:35rpx;background-color: #f8f9fa;"></view> | 2 | + <view class="configuation-page"> |
| 3 | + <!-- 公共组件-每个页面必须引入 --> | ||
| 4 | + <public-module></public-module> | ||
| 5 | + <view class="configuation-header"> | ||
| 6 | + <view class="header-gap"></view> | ||
| 5 | <view class="u-flex search-top"> | 7 | <view class="u-flex search-top"> |
| 6 | <view class="search-main"> | 8 | <view class="search-main"> |
| 7 | <u--input @change="inputChanged" prefixIcon="search" placeholder="请输入组态名称" border="surround" | 9 | <u--input @change="inputChanged" prefixIcon="search" placeholder="请输入组态名称" border="surround" |
| @@ -10,8 +12,6 @@ | @@ -10,8 +12,6 @@ | ||
| 10 | </view> | 12 | </view> |
| 11 | </view> | 13 | </view> |
| 12 | <view style="height:35rpx"></view> | 14 | <view style="height:35rpx"></view> |
| 13 | - <!-- 公共组件-每个页面必须引入 --> | ||
| 14 | - <public-module></public-module> | ||
| 15 | <!-- 自带分页组件 --> | 15 | <!-- 自带分页组件 --> |
| 16 | <mescroll-body ref="mescrollRef" :up="upOption" @init="mescrollInit" :down="downOption" @down="downCallback" | 16 | <mescroll-body ref="mescrollRef" :up="upOption" @init="mescrollInit" :down="downOption" @down="downCallback" |
| 17 | @up="upCallback"> | 17 | @up="upCallback"> |
| @@ -25,7 +25,6 @@ | @@ -25,7 +25,6 @@ | ||
| 25 | </view> | 25 | </view> |
| 26 | <mescroll-empty v-if="!list.length" /> | 26 | <mescroll-empty v-if="!list.length" /> |
| 27 | </mescroll-body> | 27 | </mescroll-body> |
| 28 | - <!-- 自带分页组件 --> | ||
| 29 | <view style="height: 60rpx;"></view> | 28 | <view style="height: 60rpx;"></view> |
| 30 | </view> | 29 | </view> |
| 31 | </template> | 30 | </template> |
| @@ -38,7 +37,7 @@ | @@ -38,7 +37,7 @@ | ||
| 38 | mixins: [MescrollMixin], // 使用mixin (在main.js注册全局组件) | 37 | mixins: [MescrollMixin], // 使用mixin (在main.js注册全局组件) |
| 39 | data() { | 38 | data() { |
| 40 | return { | 39 | return { |
| 41 | - defaultConfigImage: '../../../static/test.png', | 40 | + defaultConfigImage: '/static/test.png', |
| 42 | page: { | 41 | page: { |
| 43 | num: 0, | 42 | num: 0, |
| 44 | size: 10 | 43 | size: 10 |
| @@ -117,4 +116,4 @@ | @@ -117,4 +116,4 @@ | ||
| 117 | 116 | ||
| 118 | <style lang="scss" scoped> | 117 | <style lang="scss" scoped> |
| 119 | @import '../static/configuration.scss'; | 118 | @import '../static/configuration.scss'; |
| 120 | -</style> | 119 | +</style> |
| 1 | -<template> | ||
| 2 | - <view class="index-page"> | ||
| 3 | - <!-- 公共组件-每个页面必须引入 --> | ||
| 4 | - <public-module></public-module> | ||
| 5 | - <view> | ||
| 6 | - <!-- 基础统计 --> | ||
| 7 | - <view class="basic-sty"> | ||
| 8 | - <view class="basic-text"><text class="text text-bold">基础统计</text></view> | ||
| 9 | - <view class="basic"> | ||
| 10 | - <view class="basic-item"> | ||
| 11 | - <view class="item-child-top u-flex"> | ||
| 12 | - <image class="item-image" src="../../static/device-total.png"></image> | ||
| 13 | - <text class="item-text home-text-muted">设备统计</text> | ||
| 14 | - </view> | ||
| 15 | - <view class="item-child-bottom u-flex"> | ||
| 16 | - <view @click="navigatorDeviceStatus('ONLINE')" class="u-flex sigle-child"> | ||
| 17 | - <view class="sigle-text"> | ||
| 18 | - <text class="home-text-total">{{ deviceData.onLine }}</text> | ||
| 19 | - </view> | ||
| 20 | - <view class="sigle-value"><text class="home-text-total-bottom">在线</text></view> | ||
| 21 | - </view> | ||
| 22 | - <view @click="navigatorDeviceStatus('OFFLINE')" class="u-flex sigle-child"> | ||
| 23 | - <view class="sigle-text"> | ||
| 24 | - <text class="home-text-total">{{ deviceData.offLine }}</text> | ||
| 25 | - </view> | ||
| 26 | - <view class="sigle-value"><text class="home-text-total-bottom">离线</text></view> | ||
| 27 | - </view> | ||
| 28 | - <view @click="navigatorDeviceStatus('INACTIVE')" class="u-flex sigle-child"> | ||
| 29 | - <view class="sigle-text"> | ||
| 30 | - <text class="home-text-total">{{ deviceData.inActive }}</text> | ||
| 31 | - </view> | ||
| 32 | - <view class="sigle-value"><text class="home-text-total-bottom">待激活</text></view> | ||
| 33 | - </view> | ||
| 34 | - </view> | ||
| 35 | - </view> | ||
| 36 | - <view class="basic-item"> | ||
| 37 | - <view class="item-child-top u-flex"> | ||
| 38 | - <image class="item-image" src="../../static/alert.png"></image> | ||
| 39 | - <text class="item-text home-text-muted">告警统计</text> | ||
| 40 | - </view> | ||
| 41 | - <view class="item-child-bottom u-flex"> | ||
| 42 | - <view @click="navigatorAlarmStatus(['ACTIVE_UNACK'])" | ||
| 43 | - class="u-flex sigle-child"> | ||
| 44 | - <view class="sigle-text"> | ||
| 45 | - <text class="home-text-total">{{ alertData.activedAlarm }}</text> | ||
| 46 | - </view> | ||
| 47 | - <view class="sigle-value"><text class="home-text-total-bottom">未处理</text></view> | ||
| 48 | - </view> | ||
| 49 | - <view @click="navigatorAlarmStatus('CLEARED_ACK')" class="u-flex sigle-child"> | ||
| 50 | - <view class="sigle-text"> | ||
| 51 | - <text class="home-text-total">{{ alertData.clearedAck }}</text> | ||
| 52 | - </view> | ||
| 53 | - <view class="sigle-value"><text class="home-text-total-bottom">已处理</text></view> | ||
| 54 | - </view> | ||
| 55 | - <view @click="navigatorAlarmStatus('CLEARED_UNACK')" class="u-flex sigle-child"> | ||
| 56 | - <view class="sigle-text"> | ||
| 57 | - <text class="home-text-total">{{ alertData.clearedUnack }}</text> | ||
| 58 | - </view> | ||
| 59 | - <view class="sigle-value"><text class="home-text-total-bottom">误报</text></view> | ||
| 60 | - </view> | ||
| 61 | - </view> | ||
| 62 | - </view> | ||
| 63 | - </view> | ||
| 64 | - </view> | ||
| 65 | - <!-- 基础统计 --> | ||
| 66 | - <!-- 四宫格CSS最新网格布局--> | ||
| 67 | - <view class="grid-container"> | ||
| 68 | - <!-- <view class="grid-item" @click="showToastWip()"> | ||
| 69 | - <view class="item-center"> | ||
| 70 | - <view class="center"><image class="image" src="../../static/form.png"></image></view> | ||
| 71 | - <view class="center-text"><text class="text text-muted">维修工单</text></view> | ||
| 72 | - </view> | ||
| 73 | - </view> --> | ||
| 74 | - <view @click="openCamera" class="grid-item"> | ||
| 75 | - <view class="item-center"> | ||
| 76 | - <view class="center"> | ||
| 77 | - <image class="image" src="../../static/camer.png"></image> | ||
| 78 | - </view> | ||
| 79 | - <view class="center-text"><text class="text text-muted" style="">摄像头管理</text></view> | ||
| 80 | - </view> | ||
| 81 | - </view> | ||
| 82 | - <!-- <view class="grid-item" @click="showToastWip()"> | ||
| 83 | - <view class="item-center"> | ||
| 84 | - <view class="center"><image class="image" src="../../static/device.png"></image></view> | ||
| 85 | - <view class="center-text"><text class="text text-muted">设备接入</text></view> | ||
| 86 | - </view> | ||
| 87 | - </view> --> | ||
| 88 | - <view @click="openOrgStatus" class="grid-item"> | ||
| 89 | - <view class="item-center"> | ||
| 90 | - <view class="center"> | ||
| 91 | - <image class="image" src="../../static/status.png"></image> | ||
| 92 | - </view> | ||
| 93 | - <view class="center-text"><text class="text text-muted">组态</text></view> | ||
| 94 | - </view> | ||
| 95 | - </view> | ||
| 96 | - </view> | ||
| 97 | - <!-- 四宫格 --> | ||
| 98 | - </view> | ||
| 99 | - <f-tabbar></f-tabbar> | ||
| 100 | - </view> | ||
| 101 | -</template> | ||
| 102 | - | ||
| 103 | -<script> | ||
| 104 | - import fTabbar from '@/components/module/f-tabbar/f-tabbar'; | ||
| 105 | - import { | ||
| 106 | - mapActions | ||
| 107 | - } from 'vuex'; | 1 | +<template> |
| 2 | + <view class="index-page"> | ||
| 3 | + <!-- 公共组件-每个页面必须引入 --> | ||
| 4 | + <public-module></public-module> | ||
| 5 | + <view> | ||
| 6 | + <!-- 基础统计 --> | ||
| 7 | + <view class="basic-sty"> | ||
| 8 | + <view class="basic-text"><text class="text text-bold">基础统计</text></view> | ||
| 9 | + <view class="basic"> | ||
| 10 | + <view class="basic-item" v-for="(item,index) in basicStatistics" :key="index"> | ||
| 11 | + <view class="item-child-top u-flex"> | ||
| 12 | + <image class="item-image" :src="item.icon"></image> | ||
| 13 | + <text class="item-text home-text-muted">{{item.text}}</text> | ||
| 14 | + </view> | ||
| 15 | + <view class="item-child-bottom u-flex"> | ||
| 16 | + <view @click="navigatorPage(item,item.leftParam)" class="u-flex sigle-child"> | ||
| 17 | + <view class="sigle-text"> | ||
| 18 | + <text class="home-text-total">{{item.value.leftValue}}</text> | ||
| 19 | + </view> | ||
| 20 | + <view class="sigle-value"><text | ||
| 21 | + class="home-text-total-bottom">{{item.label.leftText}}</text></view> | ||
| 22 | + </view> | ||
| 23 | + <view @click="navigatorPage(item,item.centerParam)" class="u-flex sigle-child"> | ||
| 24 | + <view class="sigle-text"> | ||
| 25 | + <text class="home-text-total">{{item.value.centerValue}}</text> | ||
| 26 | + </view> | ||
| 27 | + <view class="sigle-value"><text | ||
| 28 | + class="home-text-total-bottom">{{item.label.centerText}}</text></view> | ||
| 29 | + </view> | ||
| 30 | + <view @click="navigatorPage(item,item.rightParam)" class="u-flex sigle-child"> | ||
| 31 | + <view class="sigle-text"> | ||
| 32 | + <text class="home-text-total">{{item.value.rightrValue}}</text> | ||
| 33 | + </view> | ||
| 34 | + <view class="sigle-value"><text | ||
| 35 | + class="home-text-total-bottom">{{item.label.rightText}}</text></view> | ||
| 36 | + </view> | ||
| 37 | + </view> | ||
| 38 | + </view> | ||
| 39 | + </view> | ||
| 40 | + </view> | ||
| 41 | + <!-- 网格信息 --> | ||
| 42 | + <view class="grid-container"> | ||
| 43 | + <view v-for="(item,index) in basicGridList" :key="index" @click="handleEvent(item.event)" | ||
| 44 | + class="grid-item"> | ||
| 45 | + <view class="item-center"> | ||
| 46 | + <view class="center"> | ||
| 47 | + <image class="image" :src="item.icon"></image> | ||
| 48 | + </view> | ||
| 49 | + <view class="center-text"><text class="text text-muted" style="">{{item.text}}</text></view> | ||
| 50 | + </view> | ||
| 51 | + </view> | ||
| 52 | + </view> | ||
| 53 | + </view> | ||
| 54 | + <f-tabbar></f-tabbar> | ||
| 55 | + </view> | ||
| 56 | +</template> | ||
| 57 | + | ||
| 58 | +<script> | ||
| 59 | + import fTabbar from '@/components/module/f-tabbar/f-tabbar'; | ||
| 60 | + import { | ||
| 61 | + mapActions | ||
| 62 | + } from 'vuex'; | ||
| 108 | import api from '@/api/index.js' | 63 | import api from '@/api/index.js' |
| 109 | - import { useNavigateTo } from '@/plugins/utils.js' | ||
| 110 | - | ||
| 111 | - export default { | ||
| 112 | - components: { | ||
| 113 | - fTabbar | ||
| 114 | - }, | ||
| 115 | - data() { | ||
| 116 | - return { | ||
| 117 | - deviceData: { | ||
| 118 | - onLine: 0, | ||
| 119 | - offLine: 0, | ||
| 120 | - inActive: 0 | ||
| 121 | - }, | ||
| 122 | - alertData: { | ||
| 123 | - activedAlarm: 0, | ||
| 124 | - clearedAck: 0, | ||
| 125 | - clearedUnack: 0 | ||
| 126 | - } | ||
| 127 | - }; | ||
| 128 | - }, | ||
| 129 | - onLoad() { | ||
| 130 | - // 隐藏原生的tabbar | ||
| 131 | - uni.hideTabBar(); | ||
| 132 | - if(getApp().getBindNot()){ | ||
| 133 | - return | ||
| 134 | - } | ||
| 135 | - this.getDeviceTotalData(); | ||
| 136 | - uni.setStorageSync('getConfiguration', { | ||
| 137 | - isConfiguration: false | ||
| 138 | - }); | ||
| 139 | - uni.removeStorageSync('getConfiguration'); | 64 | + import { |
| 65 | + useNavigateTo | ||
| 66 | + } from '@/plugins/utils.js' | ||
| 67 | + | ||
| 68 | + export default { | ||
| 69 | + components: { | ||
| 70 | + fTabbar | ||
| 71 | + }, | ||
| 72 | + data() { | ||
| 73 | + return { | ||
| 74 | + basicGridList: [{ | ||
| 75 | + event: 'openCamera', | ||
| 76 | + icon: '/static/camer.png', | ||
| 77 | + text: '摄像头管理' | ||
| 78 | + }, | ||
| 79 | + { | ||
| 80 | + event: 'openConfiguration', | ||
| 81 | + icon: '/static/status.png', | ||
| 82 | + text: '组态' | ||
| 83 | + }, | ||
| 84 | + ], | ||
| 85 | + basicStatistics: [{ | ||
| 86 | + text: '设备统计', | ||
| 87 | + icon: '/static/device-total.png', | ||
| 88 | + leftParam: 'ONLINE', | ||
| 89 | + centerParam: 'OFFLINE', | ||
| 90 | + rightParam: 'INACTIVE', | ||
| 91 | + value: { | ||
| 92 | + leftValue: 0, | ||
| 93 | + centerValue: 0, | ||
| 94 | + rightrValue: 0 | ||
| 95 | + }, | ||
| 96 | + label: { | ||
| 97 | + leftText: "在线", | ||
| 98 | + centerText: "离线", | ||
| 99 | + rightText: "待激活" | ||
| 100 | + } | ||
| 101 | + }, | ||
| 102 | + { | ||
| 103 | + text: '告警统计', | ||
| 104 | + icon: '/static/alert.png', | ||
| 105 | + leftParam: ['ACTIVE_UNACK'], | ||
| 106 | + centerParam: 'CLEARED_ACK', | ||
| 107 | + rightParam: 'CLEARED_UNACK', | ||
| 108 | + value: { | ||
| 109 | + leftValue: 0, | ||
| 110 | + centerValue: 0, | ||
| 111 | + rightrValue: 0 | ||
| 112 | + }, | ||
| 113 | + label: { | ||
| 114 | + leftText: "未处理", | ||
| 115 | + centerText: "已处理", | ||
| 116 | + rightText: "误报" | ||
| 117 | + } | ||
| 118 | + }, | ||
| 119 | + ] | ||
| 120 | + }; | ||
| 121 | + }, | ||
| 122 | + onLoad() { | ||
| 123 | + // 隐藏原生的tabbar | ||
| 124 | + uni.hideTabBar(); | ||
| 125 | + if (getApp().getBindNot()) { | ||
| 126 | + return | ||
| 127 | + } | ||
| 128 | + this.getDeviceTotalData(); | ||
| 129 | + uni.setStorageSync('getConfiguration', { | ||
| 130 | + isConfiguration: false | ||
| 131 | + }); | ||
| 132 | + uni.removeStorageSync('getConfiguration'); | ||
| 140 | }, | 133 | }, |
| 141 | onPullDownRefresh() { | 134 | onPullDownRefresh() { |
| 142 | this.getDeviceTotalData(); | 135 | this.getDeviceTotalData(); |
| 143 | - setTimeout(function () { | 136 | + setTimeout(function() { |
| 144 | uni.stopPullDownRefresh(); | 137 | uni.stopPullDownRefresh(); |
| 145 | uni.$u.toast('下拉刷新成功...'); | 138 | uni.$u.toast('下拉刷新成功...'); |
| 146 | - }, 1000); | ||
| 147 | - }, | ||
| 148 | - methods: { | ||
| 149 | - ...mapActions(['updateBadgeTotal']), | ||
| 150 | - async getDeviceTotalData() { | ||
| 151 | - const res = await api.homeApi.getHomeStatisticsApi() | 139 | + }, 800); |
| 140 | + }, | ||
| 141 | + methods: { | ||
| 142 | + ...mapActions(['updateBadgeTotal']), | ||
| 143 | + async getDeviceTotalData() { | ||
| 144 | + const res = await api.homeApi.getHomeStatisticsApi() | ||
| 152 | if (res) { | 145 | if (res) { |
| 153 | - for(let i in this.deviceData) Reflect.set(this.deviceData,i,res.totalDevice[i]) | ||
| 154 | - for(let i in this.alertData) Reflect.set(this.alertData,i,res.totalAlarm[i]) | ||
| 155 | - //异步实时更新告警徽标数 | ||
| 156 | - this.updateBadgeTotal(res.totalAlarm?.activedAlarm); | ||
| 157 | - } | ||
| 158 | - }, | ||
| 159 | - showToastWip() { | ||
| 160 | - uni.$u.toast('拼命开发中 ...'); | ||
| 161 | - }, | 146 | + this.basicStatistics[0].value.leftValue = res.totalDevice.onLine |
| 147 | + this.basicStatistics[0].value.centerValue = res.totalDevice.offLine | ||
| 148 | + this.basicStatistics[0].value.rightrValue = res.totalDevice.inActive | ||
| 149 | + this.basicStatistics[1].value.leftValue = res.totalAlarm.activedAlarm | ||
| 150 | + this.basicStatistics[1].value.centerValue = res.totalAlarm.clearedAck | ||
| 151 | + this.basicStatistics[1].value.rightrValue = res.totalAlarm.clearedUnack | ||
| 152 | + //异步实时更新告警徽标数 | ||
| 153 | + this.updateBadgeTotal(res.totalAlarm?.activedAlarm); | ||
| 154 | + } | ||
| 155 | + }, | ||
| 162 | openCamera() { | 156 | openCamera() { |
| 163 | - useNavigateTo('camera/camera') | ||
| 164 | - }, | ||
| 165 | - openOrgStatus() { | ||
| 166 | - useNavigateTo('configuration/configuration') | ||
| 167 | - }, | ||
| 168 | - //告警状态查询 | ||
| 169 | - navigatorAlarmStatus(e) { | ||
| 170 | - uni.reLaunch({ | ||
| 171 | - url: '../alarm/alarm?type=' + JSON.stringify(e) | ||
| 172 | - }); | ||
| 173 | - }, | ||
| 174 | - //设备状态查询 | ||
| 175 | - navigatorDeviceStatus(e) { | ||
| 176 | - uni.reLaunch({ | ||
| 177 | - url: `../device/device?deviceState=${e}` | ||
| 178 | - }); | ||
| 179 | - } | ||
| 180 | - } | ||
| 181 | - }; | ||
| 182 | -</script> | ||
| 183 | - | ||
| 184 | -<style lang="scss" scoped> | ||
| 185 | - @import './static/index.scss'; | ||
| 186 | -</style> | 157 | + useNavigateTo('camera/camera') |
| 158 | + }, | ||
| 159 | + openConfiguration() { | ||
| 160 | + useNavigateTo('configuration/configuration') | ||
| 161 | + }, | ||
| 162 | + handleEvent(event) { | ||
| 163 | + if (event === 'openCamera') { | ||
| 164 | + this.openCamera() | ||
| 165 | + } else { | ||
| 166 | + this.openConfiguration() | ||
| 167 | + } | ||
| 168 | + }, | ||
| 169 | + navigatorPage(item, type) { | ||
| 170 | + const { | ||
| 171 | + text | ||
| 172 | + } = item | ||
| 173 | + if (text === '设备统计') { | ||
| 174 | + this.navigatorDeviceStatus(type) | ||
| 175 | + } else { | ||
| 176 | + this.navigatorAlarmStatus(type) | ||
| 177 | + } | ||
| 178 | + }, | ||
| 179 | + //告警状态查询 | ||
| 180 | + navigatorAlarmStatus(e) { | ||
| 181 | + uni.reLaunch({ | ||
| 182 | + url: '../alarm/alarm?type=' + JSON.stringify(e) | ||
| 183 | + }); | ||
| 184 | + }, | ||
| 185 | + //设备状态查询 | ||
| 186 | + navigatorDeviceStatus(e) { | ||
| 187 | + uni.reLaunch({ | ||
| 188 | + url: `../device/device?deviceState=${e}` | ||
| 189 | + }); | ||
| 190 | + } | ||
| 191 | + } | ||
| 192 | + }; | ||
| 193 | +</script> | ||
| 194 | + | ||
| 195 | +<style lang="scss" scoped> | ||
| 196 | + @import './static/index.scss'; | ||
| 197 | +</style> |
| @@ -12,6 +12,7 @@ | @@ -12,6 +12,7 @@ | ||
| 12 | mapState | 12 | mapState |
| 13 | } from 'vuex'; | 13 | } from 'vuex'; |
| 14 | import api from '@/api/index.js' | 14 | import api from '@/api/index.js' |
| 15 | + import { useReLaunch } from '@/plugins/utils.js' | ||
| 15 | 16 | ||
| 16 | export default { | 17 | export default { |
| 17 | data() { | 18 | data() { |
| @@ -29,16 +30,12 @@ | @@ -29,16 +30,12 @@ | ||
| 29 | created() { | 30 | created() { |
| 30 | if (!this.userInfo.isToken) { | 31 | if (!this.userInfo.isToken) { |
| 31 | setTimeout(() => { | 32 | setTimeout(() => { |
| 32 | - uni.reLaunch({ | ||
| 33 | - url: '/publicLoginSubPage/public/login' | ||
| 34 | - }); | ||
| 35 | - }, 1500); | 33 | + useReLaunch('/publicLoginSubPage/public/login') |
| 34 | + }, 1000); | ||
| 36 | } else { | 35 | } else { |
| 37 | setTimeout(() => { | 36 | setTimeout(() => { |
| 38 | - uni.reLaunch({ | ||
| 39 | - url: '/pages/index/index' | ||
| 40 | - }); | ||
| 41 | - }, 1500); | 37 | + useReLaunch('/pages/index/index') |
| 38 | + }, 1000); | ||
| 42 | } | 39 | } |
| 43 | }, | 40 | }, |
| 44 | computed: { | 41 | computed: { |
| 1 | -.status-page { | 1 | +.configuation-page { |
| 2 | background: #f8f9fa; | 2 | background: #f8f9fa; |
| 3 | padding: 15rpx 15rpx; | 3 | padding: 15rpx 15rpx; |
| 4 | min-height: 100vh; | 4 | min-height: 100vh; |
| 5 | - .search-top { | ||
| 6 | - justify-content: space-between; | ||
| 7 | - flex-direction: row; | ||
| 8 | - .search-main { | ||
| 9 | - width: 700rpx; | ||
| 10 | - margin-top: -34rpx; | 5 | + .configuation-header{ |
| 6 | + margin-left:15rpx; | ||
| 7 | + background-color: #f8f9fa; | ||
| 8 | + position:fixed; | ||
| 9 | + top:0rpx; | ||
| 10 | + z-index: 99999; | ||
| 11 | + .header-gap{ | ||
| 12 | + height:35rpx; | ||
| 13 | + background-color: #f8f9fa; | ||
| 14 | + } | ||
| 15 | + .search-top { | ||
| 16 | + justify-content: space-between; | ||
| 17 | + flex-direction: row; | ||
| 18 | + .search-main { | ||
| 19 | + width: 700rpx; | ||
| 20 | + margin-top: -34rpx; | ||
| 21 | + } | ||
| 11 | } | 22 | } |
| 12 | } | 23 | } |
| 24 | + | ||
| 13 | .configuation-container { | 25 | .configuation-container { |
| 14 | .configuation-item { | 26 | .configuation-item { |
| 15 | width: 750rpx; | 27 | width: 750rpx; |
| @@ -159,10 +159,17 @@ export const useNavigateTo = (path, param) => { | @@ -159,10 +159,17 @@ export const useNavigateTo = (path, param) => { | ||
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | //封装uniapp跳转 reLaunch | 161 | //封装uniapp跳转 reLaunch |
| 162 | -export const useReLaunch = (url) => { | ||
| 163 | - uni.reLaunch({ | ||
| 164 | - url | ||
| 165 | - }); | 162 | +export const useReLaunch = (path, param) => { |
| 163 | + if (!path) return | ||
| 164 | + if (param) { | ||
| 165 | + uni.reLaunch({ | ||
| 166 | + url: path + encodeURIComponent(JSON.stringify(param)) | ||
| 167 | + }); | ||
| 168 | + } else { | ||
| 169 | + uni.reLaunch({ | ||
| 170 | + url: path | ||
| 171 | + }); | ||
| 172 | + } | ||
| 166 | } | 173 | } |
| 167 | 174 | ||
| 168 | //封装uniapp showToast | 175 | //封装uniapp showToast |