提交app代码

This commit is contained in:
guanj
2026-04-01 10:00:04 +08:00
parent 66cee2922d
commit 966d6d342c
12 changed files with 234 additions and 149 deletions

View File

@@ -182,6 +182,7 @@ export default {
engineeringName: '',
equipmentName: '',
runStatus: 1,
connection: false,
}
},
onLoad(options) {
@@ -617,10 +618,11 @@ export default {
mask: true,
})
this.clear()
this.connection = false
await getBaseRealData(this.lineId)
.then((res) => {
if (res.code == 'A0000') {
this.connection = true
this.$util.toast(e == 0 ? '连接成功!' : '刷新成功!')
if (this.timer) {
clearInterval(this.timer)
@@ -628,16 +630,24 @@ export default {
}
this.timer = setInterval(() => {
getBaseRealData(this.lineId).then((res) => {
console.log(res, '获取基础实时数据')
})
getBaseRealData(this.lineId)
.then((res) => {
this.connection = true
console.log(res, '获取基础实时数据')
})
.catch(() => {
this.connection = false
this.clear()
})
}, 30000)
} else {
this.countdown = 60 // 重置倒计时
this.disabled = false
}
})
.catch(() => {})
.catch(() => {
this.countdown = 60 // 重置倒计时
this.disabled = false
this.connection = false
this.clear()
})
},
initMqtt() {
@@ -690,6 +700,8 @@ export default {
.on('message', (topic, message) => {
// console.log('接收推送信息:', JSON.parse(message.toString()), topic)
// console.log('🚀 ~ .on ~ topic:', topic)
if (!this.connection) return
if (topic === `/Web/RealData/${this.userInfo.userIndex}`) {
let list = JSON.parse(message.toString())
if (list.lineId == this.lineId) {
@@ -857,6 +869,9 @@ export default {
// 监测点变化
async lineChange(e) {
await this.clear()
this.disabled = false
this.countdown = 60
this.lineKey = e.detail.value
this.lineId = this.lineList[e.detail.value].lineId
await (this.client && this.client.end())

View File

@@ -152,6 +152,7 @@ export default {
uni.setStorageSync('messageParams', {
name: item.engineeringName,
id: item.engineeringId,
type: '',
})
uni.switchTab({
url: '/pages/index/message1',

View File

@@ -53,7 +53,7 @@
<view style="padding: 20rpx 20rpx 0">
<Cn-grid title="" :auto-fill="false">
<Cn-grid-item src="/static/device2.png" text="设备注册" @click="registerDevice(4)"></Cn-grid-item>
<Cn-grid-item
<!-- <Cn-grid-item
src="/static/device2.png"
text="功能调试"
@click="registerDevice(2)"
@@ -64,12 +64,12 @@
text="出厂调试"
@click="registerDevice(3)"
v-if="config.factory"
></Cn-grid-item>
<Cn-grid-item background="#fff" v-if="!config.feature"></Cn-grid-item>
<Cn-grid-item background="#fff" v-if="!config.factory"></Cn-grid-item>
></Cn-grid-item> -->
<!-- <Cn-grid-item background="#fff" v-if="!config.feature"></Cn-grid-item>
<Cn-grid-item background="#fff" v-if="!config.factory"></Cn-grid-item> -->
<Cn-grid-item background="#fff"></Cn-grid-item>
<Cn-grid-item background="#fff"></Cn-grid-item>
<Cn-grid-item background="#fff"></Cn-grid-item>
<!-- <Cn-grid-item background="#fff"></Cn-grid-item>
<Cn-grid-item background="#fff"></Cn-grid-item> -->
<!-- <Cn-grid-item src="/static/gateway2.png" text="网关注册" @click="registerGateway"></Cn-grid-item> -->
<!-- <Cn-grid-item src="/static/feedback2.png" text="问题反馈" @click="submitFeedBack"></Cn-grid-item>-->
</Cn-grid>

View File

@@ -34,6 +34,14 @@
<view class="header-item-value">{{ devCount.currentOffLineDevCount || 0 }}</view>
<view class="header-item-label">离线设备</view>
</view>
<view class="header-item" @click="jumpMessage('0')">
<view class="header-item-value">{{ devCount.eventCount || 0 }}</view>
<view class="header-item-label">暂态事件</view>
</view>
<view class="header-item" @click="jumpMessage('1')">
<view class="header-item-value">{{ devCount.harmonicCount || 0 }}</view>
<view class="header-item-label">稳态事件</view>
</view>
</view>
<view class="canneng-index-title mt20">常用功能</view>
<view style="padding: 20rpx 20rpx 0">
@@ -113,9 +121,9 @@ export default {
},
confirm(value) {
// if (this.devCount.engineeringListLength > 0) {
uni.navigateTo({
url: '/pages/device/new?type=4',
})
uni.navigateTo({
url: '/pages/device/new?type=4',
})
// } else {
// uni.navigateTo({
// url: '/pages/engineering/new?from=index',
@@ -134,6 +142,16 @@ export default {
url: '/pages/device/list?type=' + type,
})
},
jumpMessage(type) {
uni.setStorageSync('messageParams', {
name:'',
id: '',
type: type,
})
uni.switchTab({
url: '/pages/index/message1',
})
},
},
}
</script>

View File

@@ -22,7 +22,7 @@
refresher-enabled="true"
class="event-list mt20"
v-if="eventList.length != 0"
:style="{ height: 'calc(100vh - ' + height + 'px)', overflow: 'auto' }"
:style="{ height: 'calc(100vh - ' + (navHeight + height) + 'px)', overflow: 'auto' }"
>
<!-- 循环渲染事件项 -->
<uni-card class="event-item" :class="item.type" v-for="(item, index) in store.data" :key="index">
@@ -106,10 +106,10 @@ export default {
.boundingClientRect((rect) => {
//
// #ifdef H5
this.height = rect?.height + 130 || 0
this.height = rect?.height + 20 || 0
// #endif
// #ifdef APP-PLUS
this.height = rect?.height + 75 || 0
this.height = rect?.height + 30 || 0
// #endif
})
.exec()
@@ -157,58 +157,67 @@ export default {
startTime: item.startTime,
time: '',
timeType: this.selectValue.report,
}).then((res) => {
// 下载文件资源到本地
uni.downloadFile({
url: res.data, // 后端返回的线上文件路径
success: function (res) {
if (res.statusCode === 200) {
// 文件到本地
uni.saveFile({
tempFilePath: res.tempFilePath, //临时路径
success: function (data) {
var savedFilePath = data.savedFilePath
// 在app端执行
// #ifdef APP-PLUS
let osname = plus.os.name
// 如果是安卓的话弹出提示
uni.showToast({
icon: 'success',
mask: true,
title: '下载成功!',
duration: 1000,
})
// #endif
//ios手机直接打开文件手动存储文件到手机Android手机从根目录创建文件夹保存文件并改名
setTimeout(() => {
//打开文档查看
uni.openDocument({
filePath: data.savedFilePath,
success: function (ress) {
console.log('成功打开文件')
},
fail() {
console.log('打开文件失败')
},
})
}, 500)
},
})
console.log('下载成功')
} else {
uni.showToast({
icon: 'error',
mask: true,
title: '下载失败!',
duration: 1000,
})
}
},
fail: function (res) {},
})
})
.then((res) => {
// 下载文件资源到本地
uni.downloadFile({
url: res.data, // 后端返回的线上文件路径
success: function (res) {
if (res.statusCode === 200) {
// 文件到本地
uni.saveFile({
tempFilePath: res.tempFilePath, //临时路径
success: function (data) {
var savedFilePath = data.savedFilePath
// 在app端执行
// #ifdef APP-PLUS
let osname = plus.os.name
// 如果是安卓的话弹出提示
uni.showToast({
icon: 'success',
mask: true,
title: '下载成功!',
duration: 1000,
})
// #endif
//ios手机直接打开文件手动存储文件到手机Android手机从根目录创建文件夹保存文件并改名
setTimeout(() => {
//打开文档查看
uni.openDocument({
filePath: data.savedFilePath,
success: function (ress) {
console.log('成功打开文件')
},
fail() {
console.log('打开文件失败')
},
})
}, 500)
},
})
console.log('下载成功')
} else {
uni.showToast({
icon: 'none',
mask: true,
title: '下载失败!',
duration: 1000,
})
}
},
fail: function (res) {},
})
})
.catch((err) => {
uni.showToast({
icon: 'none',
mask: true,
title: err.message,
duration: 1000,
})
})
},
// 下拉
refresherrefresh() {
@@ -233,7 +242,7 @@ export default {
.event-tags {
display: flex;
font-size: 27rpx !important ;
line-height: 50rpx;
line-height: 50rpx;
}
.event-detail {

View File

@@ -208,58 +208,67 @@ export default {
})
downloadEventReport({
id: item.eventId,
}).then((res) => {
// 下载文件资源到本地
uni.downloadFile({
url: res.data, // 后端返回的线上文件路径
success: function (res) {
if (res.statusCode === 200) {
// 文件到本地
uni.saveFile({
tempFilePath: res.tempFilePath, //临时路径
success: function (data) {
var savedFilePath = data.savedFilePath
// 在app端执行
// #ifdef APP-PLUS
let osname = plus.os.name
// 如果是安卓的话弹出提示
uni.showToast({
icon: 'success',
mask: true,
title: '下载成功!',
duration: 1000,
})
// #endif
//ios手机直接打开文件手动存储文件到手机Android手机从根目录创建文件夹保存文件并改名
setTimeout(() => {
//打开文档查看
uni.openDocument({
filePath: data.savedFilePath,
success: function (ress) {
console.log('成功打开文件')
},
fail() {
console.log('打开文件失败')
},
})
}, 500)
},
})
console.log('下载成功')
} else {
uni.showToast({
icon: 'error',
mask: true,
title: '下载失败!',
duration: 1000,
})
}
},
fail: function (res) {},
})
})
.then((res) => {
// 下载文件资源到本地
uni.downloadFile({
url: res.data, // 后端返回的线上文件路径
success: function (res) {
if (res.statusCode === 200) {
// 文件到本地
uni.saveFile({
tempFilePath: res.tempFilePath, //临时路径
success: function (data) {
var savedFilePath = data.savedFilePath
// 在app端执行
// #ifdef APP-PLUS
let osname = plus.os.name
// 如果是安卓的话弹出提示
uni.showToast({
icon: 'success',
mask: true,
title: '下载成功!',
duration: 1000,
})
// #endif
//ios手机直接打开文件手动存储文件到手机Android手机从根目录创建文件夹保存文件并改名
setTimeout(() => {
//打开文档查看
uni.openDocument({
filePath: data.savedFilePath,
success: function (ress) {
console.log('成功打开文件')
},
fail() {
console.log('打开文件失败')
},
})
}, 500)
},
})
console.log('下载成功')
} else {
uni.showToast({
icon: 'none',
mask: true,
title: '下载失败!',
duration: 1000,
})
}
},
fail: function (res) {},
})
})
.catch((err) => {
uni.showToast({
icon: 'none',
mask: true,
title: err.message,
duration: 1000,
})
})
},
},
watch: {},

View File

@@ -44,7 +44,7 @@
<!-- 工程列表 -->
<template v-show="engineeringList.length" v-if="userInfo.authorities === 'engineering_user'">
<view class="canneng-index-title mt20">工程列表</view>
<Engineering ref="engineering" :store="store" @refresh="store.search()"/>
<Engineering ref="engineering" :store="store" @refresh="store.search()" />
</template>
<!-- 设备列表 -->
<template v-else v-show="engineeringList.length">
@@ -271,6 +271,22 @@ export default {
this.init()
}
},
mounted() {
uni.setTabBarItem({
index: 2,
visible: true,
})
if (uni.getStorageSync(this.$cacheKey.userInfo).authorities === 'tourist') {
uni.setTabBarItem({
index: 2,
visible: false,
})
uni.showToast({
title: '已同步设备历史数据',
icon: 'none',
})
}
},
}
</script>
<style lang="scss">

View File

@@ -117,10 +117,15 @@ export default {
},
onShow() {
if (uni.getStorageSync(this.$cacheKey.userInfo).authorities === 'operation_manager') {
this.items = ['暂态事件', '稳态事件', '运行告警', '运行事件']
}
const params = uni.getStorageSync('messageParams')
console.log('🚀 ~ params:', params)
this.getDevCount()
this.$nextTick(() => {
if (params.type != '') {
this.current = params.type - 0
}
if (params.name != '') {
this.$refs.cnFilterCriteria && this.$refs.cnFilterCriteria.external(params.name, params.id)
}
@@ -133,6 +138,7 @@ export default {
uni.setStorageSync('messageParams', {
name: '',
id: '',
type: '',
})
},
methods: {
@@ -244,9 +250,13 @@ export default {
position: relative;
background-color: #fff;
.segmented-control {
height: 49px;
// height: 40px;
background-color: #fff;
border-bottom: 1px solid #cccccc70;
.segmented-control__item {
align-items: baseline;
margin-top: 5px;
}
}
.segmented-control__text {
@@ -255,6 +265,7 @@ export default {
}
.segmented-control__item--text {
font-weight: bold;
padding: 0 0 5rpx;
}
.choose {
// padding: 20rpx;

View File

@@ -10,7 +10,6 @@
@clickItem="onClickItem"
/>
</view>
</view>
<!-- 稳态报表 -->
<SteadyState
@@ -44,14 +43,14 @@ export default {
data() {
return {
curTabs: 0,
total: 6,
loading: false,
items: ['稳态报表', '暂降报告'],
status: 'more', //more加载前 loading加载中 noMore加载后
navHeight: 0,
indexList: [
{
name: '测试监测点',
@@ -102,7 +101,7 @@ export default {
this.navHeight = rect.height + 65
// #endif
// #ifdef APP-PLUS
this.navHeight = rect.height + 10
this.navHeight = rect.height + 25
// #endif
})
.exec()
@@ -115,7 +114,6 @@ export default {
}
},
scrolltolower() {
if (this.total != this.indexList.length) {
this.status = 'loading'
@@ -153,10 +151,14 @@ export default {
width: 80% !important;
}
/deep/.tabsBox {
border-bottom: 1px solid #cccccc70;
.segmented-control {
height: 49px;
// height: 40px;
background-color: #fff;
border-bottom: 1px solid #cccccc70;
.segmented-control__item {
align-items: baseline;
margin-top: 5px;
}
}
.segmented-control__text {
@@ -165,6 +167,7 @@ export default {
}
.segmented-control__item--text {
font-weight: bold;
padding: 0 0 5rpx;
}
}
}

View File

@@ -51,13 +51,7 @@
</uni-collapse-item>
</uni-collapse> -->
<view class="event-list">
<uni-card
class="event-item"
:class="item.type"
v-for="(item, index) in list"
:key="index"
@click="jump(item)"
>
<uni-card class="event-item" :class="item.type" v-for="(item, index) in list" :key="index">
<!-- 头部图标 + 信息 + 操作 -->
<view class="event-header">
<view class="event-icon">
@@ -83,13 +77,17 @@
</view>
<!-- 详情区域 -->
<view class="event-detail">
<uni-collapse accordion>
<uni-collapse>
<uni-collapse-item
:title="
item.interruptCounts == 0 ? '通讯正常' : `通讯中断 ${item.interruptCounts} 次`
"
>
<view v-for="date in item.interruptDetails" class="textBox mb10">{{ date }}</view>
<view
v-for="date in String(item.interruptDetails || '').split('')"
class="textBox mb10"
>{{ date }}</view
>
</uni-collapse-item>
<uni-collapse-item
:title="
@@ -185,9 +183,11 @@ export default {
border-bottom: 1px solid #eee;
font-size: 26rpx;
color: #666666;
text-indent: 2em;
}
.event-list {
background: #fff;
padding-bottom: 10rpx;
.event-icon {
width: 90rpx;
height: 90rpx;

View File

@@ -11,9 +11,12 @@
<view class="mb5"> 项目名称{{ detail.projectName }} </view>
<view class="mb5"> 工程名称{{ detail.engineeringName }} </view>
<view class="mb5"> 暂态类型{{ detail.showName }}</view>
<view class="mb5" v-for="(item, textIndex) in detail.dataSet" :key="textIndex">
<view class="mb5"> 持续时间{{ detail.evtParamTm }}</view>
<view class="mb5"> 幅值{{ detail.evtParamVVaDepth }}</view>
<view class="mb5"> 相别{{ detail.evtParamPhase }}</view>
<!-- <view class="mb5" v-for="(item, textIndex) in detail.dataSet" :key="textIndex">
{{ item.showName + '' + (item.value == 3.1415926 ? '-' : item.value) + (item.unit || '') }}
</view>
</view> -->
</view>
<view class="detail-content">
<view class="detail-content-title mb20">瞬时波形图</view>