From 66d2c8d8c97e19fdbd969f97dd3d6a28f27c415f Mon Sep 17 00:00:00 2001
From: quanyawei <401863037@qq.com>
Date: Wed, 01 Nov 2023 16:07:03 +0800
Subject: [PATCH] fix:小程序分享功能和秒级数据
---
pages/actionChange/workOrderDetails/index.vue | 64 ++++++-
pages/actionChange/agencyPage/index.vue | 2
utils/permission.js | 55 ++++++
pages/actionChange/secondLevelData/index.vue | 189 +++++++++++------------
manifest.json | 8 -
pages.json | 135 ++++++----------
utils/share.js | 2
App.vue | 12 +
8 files changed, 263 insertions(+), 204 deletions(-)
diff --git a/App.vue b/App.vue
index 1e09fad..3380106 100644
--- a/App.vue
+++ b/App.vue
@@ -3,6 +3,7 @@
getDic
} from '@/utils/login.js' // ������������
import store from '@/store/index.js'
+ import routingIntercept from '@/utils/permission.js'
import {
httpPost,
httpGet
@@ -20,6 +21,7 @@
httpGet('/AppUser/wx/login', {
'code': loginRes.code
}).then(result => {
+ routingIntercept()
try {
if (result.data.code === 0) {
uni.clearStorageSync()
@@ -55,6 +57,7 @@
title: errors,
icon: 'none',
})
+ this.$isResolve()
})
}
})
@@ -149,4 +152,13 @@
line-height: 30px !important;
}
}
+
+ .ridoaBox {
+ text-align: center;
+ padding: 10px 0px;
+
+ /deep/.u-radio {
+ padding-right: 10px;
+ }
+ }
</style>
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index e69eee1..3c45bf9 100644
--- a/manifest.json
+++ b/manifest.json
@@ -5,7 +5,6 @@
"versionName": "1.0.0",
"versionCode": "100",
"transformPx": false,
- /* 5+App������������ */
"app-plus": {
"usingComponents": true,
"nvueStyleCompiler": "uni-app",
@@ -16,11 +15,8 @@
"autoclose": true,
"delay": 0
},
- /* ������������ */
"modules": {},
- /* ������������������ */
"distribute": {
- /* android������������ */
"android": {
"permissions": ["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
@@ -39,15 +35,11 @@
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
- /* ios������������ */
"ios": {},
- /* SDK������ */
"sdkConfigs": {}
}
},
- /* ��������������������� */
"quickapp": {},
- /* ��������������������� */
"mp-weixin": {
"appid": "wxf95fb77e0b1f8c09",
"__usePrivacyCheck__": true,
diff --git a/pages.json b/pages.json
index 395274f..4db1e4e 100644
--- a/pages.json
+++ b/pages.json
@@ -1,88 +1,53 @@
{
- "pages": [
- //pages���������������������������������������������������https://uniapp.dcloud.io/collocation/pages
- {
- "path": "pages/index/index",
- "style": {
- "navigationBarTitleText": "������",
- "enablePullDownRefresh": false,
- "disableSwipeBack": true,
- "navigationStyle": "custom"
- }
- }, {
- "path": "pages/actionChange/agencyPage/index",
- "style": {
- "navigationBarTitleText": "������",
- "navigationStyle": "custom",
- "enablePullDownRefresh": false
- }
- }, {
- "path": "pages/login/login"
- }, {
- "path": "pages/login/register/register",
- "style": {
- "navigationBarTitleText": "������",
- "enablePullDownRefresh": false
- }
- }, {
- "path": "pages/actionChange/newPage/index", //���������������������������
- "style": {
- "navigationBarTitleText": "���������������",
- "enablePullDownRefresh": false
- }
- }, {
- "path": "pages/actionChange/workOrderDetails/index", //���������������������������
- "style": {
- "navigationBarTitleText": "���������������",
- "enablePullDownRefresh": false
- }
- }, {
- "path": "pages/actionChange/myInfor/index",
- "style": {
- "navigationBarTitleText": "������",
- "enablePullDownRefresh": false,
- "disableSwipeBack": true,
- "navigationStyle": "custom"
- }
- }, {
- "path": "pages/actionChange/secondLevelData/index",
- "style": {
- "navigationBarTitleText": "������������",
- "enablePullDownRefresh": false,
- "disableSwipeBack": true
- }
+ "pages": [{
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "������",
+ "enablePullDownRefresh": false,
+ "disableSwipeBack": true,
+ "navigationStyle": "custom"
}
- ]
- // "tabBar": {
- // "color": "#515151",
- // "height": "60px",
- // "fontSize": "60px",
- // "selectedFontSize": 20,
- // "selectedColor": "#3875C5",
- // "list": [{
- // "text": "������",
- // "pagePath": "pages/actionChange/agencyPage/index",
- // "iconPath": "static/img/shouye.png",
- // "selectedIconPath": "static/img/shouyeClick.png",
- // "textStyle": {
- // "fontSize": "60px"
- // }
- // }, {
- // "text": "���������������",
- // "pagePath": "pages/actionChange/newPage/index",
- // "iconPath": "static/img/xinjian.png",
- // "selectedIconPath": "static/img/xinjianClick.png",
- // "textStyle": {
- // "fontSize": "20px"
- // }
- // }, {
- // "text": "������",
- // "iconPath": "static/img/wode-.png",
- // "selectedIconPath": "static/img/wodeClick.png",
- // "pagePath": "pages/actionChange/myInfor/index",
- // "textStyle": {
- // "fontSize": "20px"
- // }
- // }]
- // }
+ }, {
+ "path": "pages/actionChange/agencyPage/index",
+ "style": {
+ "navigationBarTitleText": "������",
+ "navigationStyle": "custom",
+ "enablePullDownRefresh": false
+ }
+ }, {
+ "path": "pages/login/login"
+ }, {
+ "path": "pages/login/register/register",
+ "style": {
+ "navigationBarTitleText": "������",
+ "enablePullDownRefresh": false
+ }
+ }, {
+ "path": "pages/actionChange/newPage/index",
+ "style": {
+ "navigationBarTitleText": "���������������",
+ "enablePullDownRefresh": false
+ }
+ }, {
+ "path": "pages/actionChange/workOrderDetails/index",
+ "style": {
+ "navigationBarTitleText": "���������������",
+ "enablePullDownRefresh": false
+ }
+ }, {
+ "path": "pages/actionChange/myInfor/index",
+ "style": {
+ "navigationBarTitleText": "������",
+ "enablePullDownRefresh": false,
+ "disableSwipeBack": true,
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "pages/actionChange/secondLevelData/index",
+ "style": {
+ "navigationBarTitleText": "������������",
+ "enablePullDownRefresh": false,
+ "disableSwipeBack": true
+ }
+ }]
}
\ No newline at end of file
diff --git a/pages/actionChange/agencyPage/index.vue b/pages/actionChange/agencyPage/index.vue
index 68b842e..1313d84 100644
--- a/pages/actionChange/agencyPage/index.vue
+++ b/pages/actionChange/agencyPage/index.vue
@@ -352,7 +352,7 @@
data.pageState = e.stateName === '���������' ? pageState : 'view'
let myData = JSON.stringify(data)
uni.navigateTo({
- url: '/pages/actionChange/workOrderDetails/index?infor=' + myData,
+ url: '/pages/actionChange/workOrderDetails/index?infor=' + myData + '&type=jump',
})
})
},
diff --git a/pages/actionChange/secondLevelData/index.vue b/pages/actionChange/secondLevelData/index.vue
index e6b8a30..69fc5ea 100644
--- a/pages/actionChange/secondLevelData/index.vue
+++ b/pages/actionChange/secondLevelData/index.vue
@@ -1,31 +1,44 @@
<template>
<view class="rootBg">
<view class="">
- <view class="ridoa">
+ <view class="ridoaBox">
<u-radio-group v-model="value" placement="row" :size='radioOption.size'
:labelColor='radioOption.labelColor' :labelSize='radioOption.labelSize' @change='changeSearchType'>
- <u-radio activeColor="#19be6b" label="������������������" name="0" :labelSize='radioOption.labelSize'
+ <u-radio activeColor="#19be6b" label="Mac������" name="1" :labelSize='radioOption.labelSize'
:labelColor='radioOption.labelColor'></u-radio>
- <u-radio activeColor="#19be6b" label="������������������" name="1" :labelSize='radioOption.labelSize'
+ <u-radio activeColor="#19be6b" label="������������" name="0" :labelSize='radioOption.labelSize'
+ :labelColor='radioOption.labelColor'></u-radio>
+ <u-radio activeColor="#19be6b" label="������������������" name="2" :labelSize='radioOption.labelSize'
:labelColor='radioOption.labelColor'></u-radio>
</u-radio-group>
</view>
<view class="" v-if="value==='1'">
- <u-input placeholder="���������Mac���" :placeholderStyle='placeholderStyle' color="#fff" v-model='macName'>
+ <u-input placeholder="���������Mac���" :placeholderStyle='placeholderStyle' color="#fff"
+ customStyle="margin: 0 5px;" v-model='macName'>
<template slot="suffix">
<u-button @tap="searchMacList" text="������" type="success" size="small"></u-button>
</template>
</u-input>
</view>
- <view class="" v-else>
+ <view class="orgSearch" v-else-if="value==='0'">
<u-form ref="uForm" label-width="80" :model="form">
<u-form-item border-bottom @click="showeEscalationTime = true ;hideKeyboard('orgName','orgId')">
- <u-input v-model="form.orgName" disabled disabled-color="#ffffff" placeholder="���������������"
- type="select" />
+ <u-input v-model="form.orgName" disabled disabled-color="#ffffff" customStyle="margin: 0 5px;"
+ placeholder="���������������" type="select" />
</u-form-item>
<u-form-item border-bottom @click="selectSite">
- <u-input v-model="form.siteName" disabled disabled-color="#ffffff" placeholder="���������������"
- type="select" />
+ <u-input v-model="form.siteName" disabled disabled-color="#ffffff" customStyle="margin: 0 5px;"
+ placeholder="���������������" type="select" />
+ </u-form-item>
+ </u-form>
+ <u-picker :show="showeEscalationTime" :columns="columns" @confirm="selectBack" keyName="name"
+ @cancel="showeEscalationTime = false"></u-picker>
+ </view>
+ <view class="" v-else-if="value==='2'">
+ <u-form ref="uForm" label-width="80" :model="form">
+ <u-form-item border-bottom @click="selecSpecial">
+ <u-input v-model="form.specialName" disabled disabled-color="#ffffff"
+ customStyle="margin: 0 5px;" placeholder="���������������" type="select" />
</u-form-item>
</u-form>
<u-picker :show="showeEscalationTime" :columns="columns" @confirm="selectBack" keyName="name"
@@ -55,9 +68,11 @@
<u-toast ref="uToast"></u-toast>
<u-modal :show="showModel" title='���������Mac���' showCancelButton @cancel='showModel=false' @confirm='selectMac'>
<view class="slot-content">
- <u-radio-group v-model="modeleMacSelect" iconPlacement="right" placement='column' borderBottom='true'>
+ <u-radio-group v-model="modeleMacSelect" iconPlacement="right" placement='column' borderBottom='true'
+ @change='clickMac'>
<view v-for="(item,index) in macList" :key="index" class="ridioBox">
- <u-radio activeColor="#19be6b" :label="item.mac" :name="item.mac"></u-radio>
+ <u-radio activeColor="#19be6b" :label="`${item.typeName}: ${item.mac}`"
+ :name="item.mac"></u-radio>
</view>
</u-radio-group>
</view>
@@ -71,7 +86,7 @@
data() {
return {
modeleMacSelect: '',
- value: '0',
+ value: '1',
showModel: false,
showeEscalationTime: false,
columns: [],
@@ -79,7 +94,9 @@
orgName: '',
orgId: '',
siteName: '',
- siteId: ''
+ siteId: '',
+ specialName: '',
+ specialid: ''
},
selectForm: {
name: '',
@@ -89,7 +106,7 @@
radioOption: {
size: '20px',
labelColor: '#fff',
- labelSize: '18px'
+ labelSize: '18px',
},
placeholderStyle: 'color: #fff',
macName: '',
@@ -111,7 +128,8 @@
// ������������������
alarmBg: {},
timer: '',
- isLoading: true
+ isLoading: true,
+ specialType: '3'
}
},
filters: {
@@ -124,14 +142,13 @@
computed: {
windDirData() {
if (this.wsData2) {
- console.log('this.windDir', this.windDir)
return `${this.windDir} (${this.wsData2.a01008})`
} else {
return ''
}
},
showData() {
- return [...this.defaultMonitorItems, ...this.coreMonitorItems]
+ return [...this.coreMonitorItems, ...this.defaultMonitorItems]
}
},
created() {
@@ -144,6 +161,10 @@
that.timer = ''
},
methods: {
+ clickMac(e) {
+ this.specialType = this.macList.find(item => item.mac === e).specialType
+ console.log('specialType', this.specialType)
+ },
getData() {
this.queryAlarmByMac()
this.getHourlyAqi()
@@ -151,12 +172,18 @@
},
changeSearchType() {
this.macName = ''
+ if (this.value === '2') {
+ this.getSpeciallist()
+ }
+ if (this.value === '0') {
+ this.getOrgs()
+ }
},
selectMac() {
this.macName = this.modeleMacSelect
this.showModel = false
if (this.socketTask) {
- this.socketTask.onClose()
+ this.socketTask.close()
}
this.getData()
},
@@ -164,9 +191,12 @@
this.$http.httpGet('/AppDevice/fuzzySearch', {
mac: this.macName
}).then(res => {
- this.showModel = true
- if (res.data && res.data.length > 10) {
- this.macList = res.data.slice(0, 10)
+ this.macList = []
+ if (res.data && res.data.length > 0) {
+ this.macList = res.data
+ this.showModel = true
+ } else {
+ uni.$u.toast('������������')
}
}).catch(res => {
uni.$u.toast(res)
@@ -186,12 +216,18 @@
this.getSites()
}
},
+ selecSpecial() {
+ this.selectForm = {
+ name: 'specialName',
+ id: 'specialId'
+ }
+ this.showeEscalationTime = true
+ },
hideKeyboard(name, id) {
this.selectForm = {
'name': name,
'id': id
}
- this.getOrgs()
},
selectBack(e) {
if (this.selectForm.name === 'orgName') {
@@ -204,12 +240,13 @@
} else {
this.macName = e.value[0].mac
if (this.socketTask) {
- this.socketTask.onClose()
+ this.socketTask.close()
}
this.getData()
}
this.form[this.selectForm.name] = e.value[0].name
this.form[this.selectForm.id] = e.value[0].id
+ this.specialType = e.value[0].specialType
this.showeEscalationTime = false
},
getOrgs() {
@@ -222,16 +259,14 @@
},
getSites() {
let params = {
- organizationId: this.form.orgId
+ monitorPointId: this.form.orgId
}
this.$http.httpGet('/AppDevice/selectDevice', params).then(res => {
- console.log(res)
this.columns = []
this.columns.push(res.data)
this.showeEscalationTime = true
}).catch(res => {
uni.$u.toast(res)
- console.log(res)
})
},
sensorLayout() {
@@ -245,8 +280,21 @@
this.fixedMonitorItems = res.data.fixedMonitorItems
this.totalArray.push(...this.coreMonitorItems, ...this.defaultMonitorItems, ...this
.fixedMonitorItems)
- this.getSensorMonthAvg()
- this.connectSocket()
+ if (this.chartSensorKey.length > 0) {
+ this.getSensorMonthAvg()
+ this.connectSocket()
+ } else {
+ uni.$u.toast('������������')
+ }
+ }).catch(res => {
+ uni.$u.toast(res)
+ })
+ },
+ // ������������������
+ getSpeciallist() {
+ this.$http.httpGet('/AppDevice/specialDevice').then(res => {
+ this.columns = []
+ this.columns.push(res.data)
}).catch(res => {
uni.$u.toast(res)
console.log(res)
@@ -418,8 +466,6 @@
this.totalArray[i].alarm = this.alarmProgress[key]
}
}
- console.log('this.totalArray', this.totalArray)
- console.log('this.alarmColour', this.alarmColour)
for (const key in this.alarmColour) {
if (this.totalArray[i].sensorCode === key) {
this.totalArray[i].colour = this.alarmColour[key]
@@ -434,15 +480,18 @@
},
//������websocket
connectSocket() {
- if (!this.isLoading) {
+ if (this.socketTask) {
this.socketTask.close()
this.socketTask = null
}
this.baseUrl = this.$storage.get('baseUrl')
let that = this
let socketUrl = this.baseUrl + '/singleDevice/' + this.macName
+ if (this.specialType === '0') {
+ socketUrl = this.baseUrl + '/cruiserWebsocket/' + this.macName
+ }
socketUrl = socketUrl.replace('https', 'wss').replace('http', 'ws')
- console.log('������������websocket')
+ console.log('������������websocket', socketUrl)
this.socketTask = uni.connectSocket({
url: socketUrl,
success(res) {
@@ -463,77 +512,16 @@
console.log('������������������������' + res.data)
that.handlerMsg(res) //������������������������������������������
})
- this.socketTask.onError(function(res) {
- console.log('WebSocket���������������������������������')
- console.log(res)
- // this.isSuccess = false
- // that.connectSocket()
- //������������������
- that.reconnect()
- })
// // ������������������ -
this.socketTask.onClose(e => {
console.log('WebSocket���������������')
- clearInterval(that.timer)
- that.timer = ''
- if (!that.isClose) {
- that.reconnect()
- }
})
console.log(this.socketTask)
- },
- //������������������
- reconnect() {
- console.log('������������������')
- this.socketTask.close()
- this.socketTask = null
- if (this.isLoading) {
- this.connectSocket()
- }
- },
- //������������
- sendSocketMessage(msg) {
- console.log('������������')
- console.log(msg)
- return new Promise((reslove, reject) => {
- this.socketTask.send({
- data: msg,
- success(res) {
- console.log('������������')
- reslove(res)
- },
- fail(res) {
- console.log('������������')
- console.log(res)
- reject(res)
- }
- })
- })
- },
- //������
- heart() {
- let that = this
- clearInterval(this.timer)
- this.timer = ''
- let msg = {
- 'type': 'heartbeat',
- }
- this.timer = setInterval(() => {
- that.sendSocketMessage(JSON.stringify(msg)).then(res => {
- console.log('������������')
- }).catch(res => {
- console.log('������������')
- console.log((res))
- })
- }, 2000)
},
beforeDestroy() {
if (this.socketTask) {
this.socketTask.close()
this.socketTask = null
- }
- if (this.timer) {
- clearInterval(this.timer) // ���Vue������������������������������������������
}
},
}
@@ -566,7 +554,7 @@
justify-content: center;
}
- .ridoa {
+ .ridoaBox {
text-align: center;
padding: 10px 0px;
}
@@ -575,9 +563,11 @@
color: #fff;
}
- /deep/.u-form {
- display: flex;
- justify-content: space-evenly;
+ .orgSearch {
+ /deep/.u-form {
+ display: flex;
+ justify-content: space-evenly;
+ }
}
.slot-content {
@@ -593,4 +583,9 @@
.ridioBox {
margin-bottom: 10px;
}
+
+ /deep/.u-modal__content {
+ max-height: 300px;
+ overflow: auto;
+ }
</style>
\ No newline at end of file
diff --git a/pages/actionChange/workOrderDetails/index.vue b/pages/actionChange/workOrderDetails/index.vue
index 2520f8d..3bfbe07 100644
--- a/pages/actionChange/workOrderDetails/index.vue
+++ b/pages/actionChange/workOrderDetails/index.vue
@@ -14,6 +14,8 @@
<u-button shape="square" type="primary" @click="submit"> ������ </u-button>
</view>
</view>
+ <u-overlay :show="show" :mask-click-able='false' opacity='0.8'>
+ </u-overlay>
</view>
</template>
<script>
@@ -28,27 +30,65 @@
},
data() {
return {
- basicInfor: {}
+ basicInfor: {},
+ unitListL: [],
+ userInfor: null,
+ show: false
}
},
computed: {
pageState() {
return this.basicInfor.pageState
- }
+ },
+ },
+ created() {
+ this.getUnitList()
},
onLoad: function(option) {
- console.log('option', option)
//option���object������������������������������������������������
this.basicInfor = JSON.parse(option.infor)
- this.share.title = '���������������'
- },
- onBackPress(e) {
- uni.navigateBack({
- delta: 1, //������������������������������������������2
- })
- return false
+ // let type = JSON.parse(option.type)
+ console.log('option', option)
+ this.userInfor = JSON.parse(uni.getStorageSync('userInfor') || 'null')
+ if (option.type === 'share' && this.userInfor) {
+ let params = {
+ allocationNum: this.basicInfor.allocationNum,
+ userId: this.userInfor.userId
+ }
+ this.$http.httpGet('/allocationApp/authority', params).then(res => {
+ res.data = false
+ if (!res.data) {
+ uni.showModal({
+ content: '���������������������������������������������',
+ showCancel: false,
+ confirmText: '������',
+ success: res => {
+ if (res.confirm) {
+ uni.reLaunch({
+ url: '/pages/index/index',
+ })
+ }
+ },
+ })
+ }
+ })
+ }
+ console.log('this.basicInfor ', this.basicInfor)
},
methods: {
+ closePop() {},
+ getUnitList() {
+ this.$http.httpGet('/allocation/unit').then(res => {
+ this.unitList = res.data
+ let data = ''
+ if (this.basicInfor.unitId && this.unitList.length > 0) {
+ data = this.unitList && this.unitList.find(a => Number(a.unitId) === Number(this.basicInfor
+ .unitId)).unitName
+ let time = this.basicInfor.time.slice(5)
+ this.share.title = `${data}-${time}������������`
+ }
+ })
+ },
radioGroupChange(e) {
console.log('radioGroupe���e', this.workForme.isChange)
},
@@ -59,8 +99,8 @@
showTabBar: true
}
})
- uni.navigateBack({
- delta: 1, //������������������������������������������2
+ uni.redirectTo({
+ url: '/pages/index/index',
})
},
refuse() {
diff --git a/utils/permission.js b/utils/permission.js
new file mode 100644
index 0000000..3470425
--- /dev/null
+++ b/utils/permission.js
@@ -0,0 +1,55 @@
+// ���������
+const whiteList = [, // ������������������������������ '/'
+ '/pages/login/login'
+]
+export default async function() {
+ const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
+ // ������������������������
+ list.forEach(item => {
+ uni.addInterceptor(item, {
+ // ���������������
+ invoke(args) {
+ console.log('navigateTo������������������', args)
+ const token = uni.getStorageSync('tonken')
+ const url = args.url.split('?')[0]
+ if (token) {
+ if (args.url.includes('/pages/login/login')) {
+ //���������������
+ uni.navigateTo({ url: '/pages/index/index', })
+ return false
+ }
+ return args
+ } else {
+ let pass
+ if (whiteList) {
+ pass = whiteList.some(whiteItem => {
+ if (typeof(whiteItem) === 'object' && whiteItem.pattern) {
+ return whiteItem.pattern.test(url)
+ }
+ return url === whiteItem
+ })
+ }
+ console.log('pass', pass)
+ if (!pass) {
+ uni.showModal({
+ title: '���������',
+ content: '������������������������������������������',
+ showCancel: false,
+ confirmText: '������',
+ success: res => {
+ if (res.confirm) {
+ uni.reLaunch({ url: '/pages/login/login', })
+ }
+ },
+ })
+ return false
+ }
+ return args
+ }
+ },
+ // ���������������
+ success(res) {},
+ fail(err) {}
+ })
+ })
+}
\ No newline at end of file
diff --git a/utils/share.js b/utils/share.js
index 721afd2..85d74d5 100644
--- a/utils/share.js
+++ b/utils/share.js
@@ -19,7 +19,7 @@
// console.log("���������������������", pages);
this.share.path = `/${page.route}`
if (page.options.infor) {
- this.share.path = `/${page.route}?infor=${page.options.infor}`
+ this.share.path = `/${page.route}?infor=${page.options.infor}&type=share`
}
console.log('page.options', page.options)
return {
--
Gitblit v1.8.0