Compare commits

..

No commits in common. "00e662818956d88d7e84e04790802e988603bc9f" and "f697ade3bf2b7621eefc0e79b29cb6bdc05cf392" have entirely different histories.

49 changed files with 1060 additions and 1337 deletions

View File

@ -1,2 +1,2 @@
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title></title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel="stylesheet" href="https://lcny.sk797.cn/h5/static/index.97465e7b.css"></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id="app"></div><script src="https://lcny.sk797.cn/h5/static/js/chunk-vendors.959091ef.js"></script><script src="https://lcny.sk797.cn/h5/static/js/index.1b28d926.js"></script></body></html>
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel="stylesheet" href="https://lcny.sk797.cn/h5/static/index.97465e7b.css"></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id="app"></div><script src="https://lcny.sk797.cn/h5/static/js/chunk-vendors.959091ef.js"></script><script src="https://lcny.sk797.cn/h5/static/js/index.4daeafb1.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
<template>
<view class="relative video-box">
<view class="absolute top-0 left-0 w-full h-full">
<iframe class="w-full h-full" :src="url" v-if="type == 'iframe'"></iframe>
<div ref="muiPlayer" v-else></div>
</view>
<view class="h-full w-full">
<iframe class="w-full h-full" v-if="type=='iframe'" :src="url"></iframe>
<div ref="muiPlayer" v-else>
</div>
</view>
</template>
<script>
@ -27,7 +27,7 @@ export default {
methods: {
videoPlayer() {
if (this.type == 'iframe') {
console.log('=====')
console.log("=====");
} else {
let parse = {}
if (this.type == 'm3u8') {
@ -101,9 +101,4 @@ export default {
},
}
</script>
<style lang="scss">
.video-box {
width: 100%;
padding-top: 56.2%;
}
</style>
<style lang="scss"></style>

View File

@ -1,37 +1,10 @@
<template>
<view>
<!-- <u-dropdown-item v-if="filterable">
<u-input v-model="filterValue" placeholder="筛选"></u-input>
</u-dropdown-item> -->
<u-dropdown-item
:title="label"
v-model="status"
@change="handleChange"
:options="getOptions"
>
<view class="bg-white">
<view class="px-34rpx" v-if="filterable">
<u-input v-model="filterValue" placeholder="筛选"></u-input>
</view>
<scroll-view
scroll-y="true"
:style="{
height: $u.addUnit(getOptions.length > 8 ? 930 : 'auto'),
}"
>
<u-cell-group>
<u-cell-item
@click="handleSelect(item)"
v-for="(item, i) in getOptions"
:key="i"
:title="item.label"
:arrow="false"
></u-cell-item>
</u-cell-group>
</scroll-view>
</view>
</u-dropdown-item>
</view>
></u-dropdown-item>
</template>
<script>
import { omit } from 'lodash-es'
@ -60,10 +33,6 @@ export default {
type: String,
default: 'value',
},
filterable: {
type: Boolean,
default: false,
},
},
computed: {
status: {
@ -77,7 +46,7 @@ export default {
},
getOptions() {
const { labelField, valueField } = this
const arr = this.options.reduce((prev, next) => {
return this.options.reduce((prev, next) => {
if (next) {
const value = next[valueField]
prev.push({
@ -88,13 +57,10 @@ export default {
}
return prev
}, [])
if (!this.filterValue) return arr
return arr.filter((e) => e.label.includes(this.filterValue))
},
},
data() {
return {
filterValue: '',
options: [],
emitData: null,
isFirstLoad: true,
@ -104,10 +70,6 @@ export default {
this.fetch()
},
methods: {
handleSelect(e) {
this.status = e.value
this.$emit('close-dropdown', this.status)
},
async fetch() {
const api = this.api
if (!api || !this.isFunction(api)) return

View File

@ -1,7 +1,7 @@
<template>
<u-dropdown-item :title="label">
<view class="bg-white p-30rpx">
<u-input v-model="status" :placeholder="placeholder" :clearable="false" class="flex-1" />
<u-input v-model="status" :placeholder="placeholder" class="flex-1" />
<view class="my-20rpx">
<u-line></u-line>
</view>

View File

@ -239,9 +239,8 @@
"path" : "pages/basics/profile-detail",
"style" :
{
"navigationBarTitleText": "基地概况",
"enablePullDownRefresh": false,
"navigationStyle":"custom"
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},{
"path" : "pages/crop/town-crop",

View File

@ -86,6 +86,7 @@ export default {
const resData = data.data
Object.keys(resData).map((e) => {
const zindex = this.list.findIndex(({ key }) => key == e)
if (zindex >= 0) this.list[zindex].value = resData[e].slice(1)
})
})

View File

@ -13,12 +13,12 @@
<view class="flex items-center">
<view class="w-16rpx h-16rpx bg-hex-F7B379"></view>
<view class="ml-10rpx">离线</view>
<view class="ml-10rpx text-32rpx">{{ data.value[1] }}</view>
<view class="ml-10rpx text-32rpx">{{ data.value[0] }}</view>
</view>
<view class="flex items-center">
<view class="w-16rpx h-16rpx bg-hex-EB313E"></view>
<view class="ml-10rpx">故障</view>
<view class="ml-10rpx text-32rpx">{{ data.value[2] }}</view>
<view class="ml-10rpx text-32rpx">{{ data.value[0] }}</view>
</view>
</view>
</view>

View File

@ -8,17 +8,6 @@
<u-line></u-line>
</view>
<view class="py-20rpx">
<u-tabs
:list="desList"
bar-height="4"
height="50"
font-size="28"
gutter="18"
:current="current"
@change="changeTab"
></u-tabs>
</view>
<view class="pb-20rpx">
<qiun-data-charts
:loadingType="loadingType"
type="area"
@ -32,39 +21,6 @@
<script>
import QiunDataCharts from '@/components/qiun-data-charts/qiun-data-charts.vue'
import { http } from '@/api/index.js'
const desList = [
{
key: 'turbidity',
unit: 'NTU',
name: '浊度',
},
{
key: 'chlorine',
unit: 'mg/L',
name: '余氯',
},
{
key: 'ph',
unit: 'PH',
name: 'PH值',
},
{
key: 'temperature',
unit: '℃',
name: '温度',
},
{
key: 'oxygen',
unit: 'mg/L',
name: '溶解氧',
},
{
key: 'conductivity',
unit: 'uS/cm',
name: '电导率',
},
]
export default {
props: {
baseId: {
@ -74,8 +30,6 @@ export default {
components: { QiunDataCharts },
data() {
return {
desList,
current: 0,
loadingType: 1,
opts: {
dataLabel: false, //
@ -99,26 +53,16 @@ export default {
},
}
},
computed: {
currentTab() {
return this.desList[this.current]
},
},
mounted() {
this.init()
},
methods: {
changeTab(e) {
this.current = e
this.init()
},
async init() {
try {
const { data } = await http.get('/api/device-base-data-statics', {
params: {
base_id: this.baseId,
device_type: 3,
device_column: this.currentTab.key,
},
})
const resData = data.data

View File

@ -8,17 +8,6 @@
<u-line></u-line>
</view>
<view class="py-20rpx">
<u-tabs
:list="desList"
bar-height="4"
height="50"
font-size="28"
gutter="18"
:current="current"
@change="changeTab"
></u-tabs>
</view>
<view class="pb-20rpx">
<qiun-data-charts
:loadingType="loadingType"
type="area"
@ -73,8 +62,6 @@ export default {
components: { QiunDataCharts },
data() {
return {
desList,
current: 0,
loadingType: 1,
opts: {
dataLabel: false, //
@ -98,26 +85,16 @@ export default {
},
}
},
computed: {
currentTab() {
return this.desList[this.current]
},
},
mounted() {
this.init()
},
methods: {
changeTab(e) {
this.current = e
this.init()
},
async init() {
try {
const { data } = await http.get('/api/device-base-data-statics', {
params: {
base_id: this.baseId,
device_type: 2,
device_column: this.currentTab.key,
},
})
const resData = data.data

View File

@ -1,15 +1,5 @@
<template>
<view>
<u-navbar
:isBack="showAppbar"
:title="title"
:background="background"
:custom-back="goback"
:title-color="titleColor"
v-if="showAppbar"
:back-icon-color="titleColor"
>
</u-navbar>
<view class="space-y-20rpx">
<BaseChat
:baseId="id"
@ -28,7 +18,6 @@
</view>
</template>
<script>
import { navigateBack } from '@/com/utils.js'
import { http } from '@/api/index.js'
import BaseChat from './components/base-chat.vue'
import SBYXZT from './components/sbyxzt.vue'
@ -43,14 +32,10 @@ export default {
QXSJ,
TRJC,
SZJC,
JK,
JK
},
data() {
return {
background: {
backgroundColor: '#2a7dc9',
},
titleColor: '#ffffff',
id: '',
devices: [],
crops: [],
@ -72,7 +57,7 @@ export default {
},
isSB(){
return this.devices.length > 0
},
}
},
onLoad({ id }) {
this.id = id
@ -92,20 +77,8 @@ export default {
this.devices = devices
uni.setNavigationBarTitle({ title: name })
this.crops = crops
try {
uni.postMessage({
data: {
even:'xxxxxi'
}
});
} catch (error) {
}
})
},
goback() {
navigateBack()
},
},
}
</script>

View File

@ -1,13 +1,13 @@
<template>
<view>
<!-- <u-sticky :h5NavHeight="h5NavHeightP"> -->
<u-sticky :h5NavHeight="h5NavHeightP">
<view class="bg-white">
<SearchForm
:schemas="searchFormSchema"
@submit="handleSubmit"
></SearchForm>
</view>
<!-- </u-sticky> -->
</u-sticky>
<mescroll-body
@init="mescrollInit"
@up="upCallback"
@ -147,6 +147,14 @@ export default {
formShow: false,
baseShow: false,
searchFormSchema: [
{
field: 'name',
label: '名称',
component: 'Input',
componentProps: {
placeholder: '请输入名称',
},
},
{
field: 'industry',
label: '农业类型',
@ -164,36 +172,6 @@ export default {
}
},
},
{
field: 'name',
label: '名称',
component: 'ApiSelect',
componentProps: ({ formActionType }) => {
return {
api: async (e) => {
const { data } = await http.get('/api/agricultural-basic', {
params: {
page: 1,
per_page: 10000,
},
})
return [{name:'全部',key:''}].concat(data.data.map(e => ({name:e.name,key:e.name})))
},
filterable: true,
filterMethod: (e) => {},
labelField: 'name',
valueField: 'key',
}
},
},
// {
// field: 'name',
// label: '',
// component: 'Input',
// componentProps: {
// placeholder: ''
// },
// }
],
}
},

View File

@ -94,7 +94,7 @@ export default {
{
label: '基地概况',
url: '/pages/basics/profile',
permission: 'endpoint.agricultural_base_overview.index',
permission: 'super',
},
],
},

View File

@ -139,7 +139,7 @@
<view class="video_cd">
<!-- #ifdef H5 -->
<!-- {{ video.video_url }} -->
<LiveVideo :id="video.id" :key="video.id"></LiveVideo>
<LiveVideo :id="video.id"></LiveVideo>
<!-- <LiveVideo :url="video.video_url" :type="video.video_type"></LiveVideo> -->
<!-- <videoM3u8H5 v-if="video.video_type=='m3u8'" :url="video.video_url" :id="`m_${index}_refsM3u8`"></videoM3u8H5>
<video-flv-h5 v-else :url="video.video_url"></video-flv-h5> -->

View File

@ -3,75 +3,48 @@
<view class="content-box">
<view class="secreen-section">
<u-dropdown ref="uDropdown" @open="openDropDown">
<u-dropdown-item
v-model="addressValue"
title="基地"
:options="deviceAddressList"
@change="change"
></u-dropdown-item>
<u-dropdown-item
v-model="device_id"
title="检测点"
:options="options2"
@change="change2"
></u-dropdown-item>
<u-dropdown-item v-model="addressValue" title="基地"
:options="deviceAddressList" @change="change"></u-dropdown-item>
<u-dropdown-item v-model="device_id" title="检测点"
:options="options2" @change="change2"></u-dropdown-item>
<u-dropdown-item title="日期">
<view class="slot-content" style="background-color: #ffffff">
<view class="slot-content" style="background-color: #FFFFFF;">
<view class="select-date u-border-bottom" >
<view class="name" @click="calendarShow = true">
<u-icon name="calendar" color="#333" size="32"></u-icon>
<text style="margin-left: 6rpx">选择日期</text>
<text style="margin-left: 6rpx;">选择日期</text>
</view>
<view class="time_box">
<view
class="tip_txt"
v-if="!start_date_c"
@click="calendarShow = true"
>开始日期-结束日期</view
>
<view class="tile_val" v-else @click="calendarShow = true"
>{{ start_date_c }} ~ {{ end_date_c }}</view
>
<view
class="delete_btn"
v-if="start_date_c"
@click="deleteDateFn()"
>
<view class="tip_txt" v-if="!start_date_c"
@click="calendarShow = true">开始日期-结束日期</view>
<view class="tile_val" v-else
@click="calendarShow = true">{{start_date_c}} ~ {{end_date_c}}</view>
<view class="delete_btn" v-if="start_date_c" @click="deleteDateFn()">
<u-icon name="close-circle" color="#333" size="34"></u-icon>
</view>
</view>
</view>
<u-button type="primary" @click="selectedDateConform()"
>确定</u-button
>
<u-button type="primary" @click="selectedDateConform()"></u-button>
</view>
</u-dropdown-item>
</u-dropdown>
<view class="quick_times">
<view class="tab-section">
<view
class="tab-item"
:class="currentIndex == index ? 'active' : ''"
<view class="tab-item" :class="currentIndex==index?'active':''"
v-for="(item,index) in sublist"
@click="subChange1(index)"
:key="index"
>
@click="subChange1(index)" :key="index" >
<view class="name">{{item.name}}</view>
</view>
</view>
</view>
</view>
<view class="warning-section">
<view class="top_box">
<view class="tit">预警数据统计</view>
<view class="set_warning">
<u-button
v-auth="['endpoint.water.setting', 'endpoint.water.setting_edit']"
class="set_btn"
@click="setWarnInfo()"
size="mini"
>设置</u-button
>
<u-button v-auth="['endpoint.water.setting','endpoint.water.setting_edit']" class="set_btn" @click="setWarnInfo()" size="mini"></u-button>
</view>
</view>
<view class="mb-20rpx">
@ -80,37 +53,25 @@
<view class="cont-box">
<view class="warning-item" @click="warningClickFn(1)">
<view class="name">Ⅰ级预警</view>
<view class="val"
>{{ deviceWarning[1] ? deviceWarning[1] : 0
}}<text class="unit"></text></view
>
<view class="val">{{deviceWarning[1]?deviceWarning[1]:0}}<text class="unit"></text></view>
</view>
<view class="warning-item" @click="warningClickFn(2)">
<view class="name">Ⅱ级预警</view>
<view class="val"
>{{ deviceWarning[2] ? deviceWarning[2] : 0
}}<text class="unit"></text></view
>
<view class="val">{{deviceWarning[2]?deviceWarning[2]:0}}<text class="unit"></text></view>
</view>
<view class="warning-item" @click="warningClickFn(3)">
<view class="name">Ⅲ级预警</view>
<view class="val"
>{{ deviceWarning[3] ? deviceWarning[3] : 0
}}<text class="unit"></text></view
>
<view class="val">{{deviceWarning[3]?deviceWarning[3]:0}}<text class="unit"></text></view>
</view>
<view class="warning-item" @click="warningClickFn(4)">
<view class="name">Ⅳ级预警</view>
<view class="val"
>{{ deviceWarning[4] ? deviceWarning[4] : 0
}}<text class="unit"></text></view
>
<view class="val">{{deviceWarning[4]?deviceWarning[4]:0}}<text class="unit"></text></view>
</view>
</view>
</view>
<template v-if="loadingType!=0">
<!-- -->
<view class="chart_section" v-if="chart_chlorine">
<view class="chart_section">
<view class="top_box">
<view class="tit"><text class="unit">mg/L</text></view>
<view class="name">{{addressName}}</view>
@ -128,7 +89,7 @@
</view>
</view>
<!-- 电导率 -->
<view class="chart_section" v-if="chart_conductivity">
<view class="chart_section">
<view class="top_box">
<view class="tit">电导率<text class="unit">us/cm</text></view>
<view class="name">{{addressName}}</view>
@ -147,7 +108,7 @@
</view>
<!-- 氧气 -->
<view class="chart_section" v-if="chart_oxygen">
<view class="chart_section">
<view class="top_box">
<view class="tit">氧气<text class="unit">mg/L</text></view>
<view class="name">{{addressName}}</view>
@ -165,7 +126,7 @@
</view>
</view>
<!-- PH -->
<view class="chart_section" v-if="chart_ph">
<view class="chart_section">
<view class="top_box">
<view class="tit">PH<text class="unit"></text></view>
<view class="name">{{addressName}}</view>
@ -183,7 +144,7 @@
</view>
</view>
<!-- 温度 -->
<view class="chart_section" v-if="chart_temperature">
<view class="chart_section">
<view class="top_box">
<view class="tit">温度<text class="unit"></text></view>
<view class="name">{{addressName}}</view>
@ -201,7 +162,7 @@
</view>
</view>
<!-- 浊度 -->
<view class="chart_section" v-if="chart_turbidity">
<view class="chart_section">
<view class="top_box">
<view class="tit">浊度<text class="unit">NTU</text></view>
<view class="name">{{addressName}}</view>
@ -221,16 +182,8 @@
</template>
</view>
<!-- 设置预警值 -->
<u-popup
v-model="warningShow"
border-radius="28"
width="94%"
height="70%"
mode="center"
:closeable="true"
:mask-close-able="false"
z-index="910"
>
<u-popup v-model="warningShow" border-radius="28" width="94%" height="70%"
mode="center" :closeable="true" :mask-close-able="false" z-index="910">
<view class="u-popup-section">
<view class="top_box">
<view class="title">设置预警值</view>
@ -239,67 +192,39 @@
<view class="form_cont">
<u-form v-for="(info,k) in formInfo" :key="k">
<view class="title2 u-border-bottom">{{keyToName[k]}}</view>
<u-form-item
v-for="(cd2, k2) in info"
:label="numberToString[k2] + '级预警'"
label-width="140"
:key="k2"
>
<u-form-item v-for="(cd2,k2) in info"
:label="numberToString[k2]+'级预警'" label-width="140" :key="k2">
<view class="row" >
<view
class="input_box flex-row u-margin-bottom-20"
v-for="(item, index) in cd2"
:key="index"
>
<view class="input_box flex-row u-margin-bottom-20"
v-for="(item,index) in cd2" :key="index">
<view class="input_unit_ibox flex-row u-border">
<u-input
type="number"
v-model="item.min"
placeholder="请输入"
:clearable="false"
/>
<u-input type="number" v-model="item.min" placeholder="请输入" :clearable="false"/>
<view class="unit">{{keyToUnit[k]}}</view>
</view>
<view class="pdlr12">~</view>
<view class="input_unit_ibox flex-row u-border">
<u-input
type="number"
v-model="item.max"
placeholder="请输入"
:clearable="false"
/>
<u-input type="number" v-model="item.max" placeholder="请输入" :clearable="false"/>
<view class="unit">{{keyToUnit[k]}}</view>
</view>
</view>
</view>
</u-form-item>
</u-form>
</view>
</scroll-view>
<view class="buttom_section">
<u-button class="btn" type="default" @click="warningShow = false"
>取消</u-button
>
<u-button class="btn" @click="warningInfoBtn()" type="primary"
>确定</u-button
>
<u-button class="btn" type="default" @click="warningShow = false">取消</u-button>
<u-button class="btn" @click="warningInfoBtn()" type="primary">确定</u-button>
</view>
</view>
</u-popup>
<u-calendar
v-model="calendarShow"
:mode="'range'"
@change="calendarChange"
></u-calendar>
<u-calendar v-model="calendarShow" :mode="'range'" @change="calendarChange"></u-calendar>
</view>
</template>
<script>
import {
showLoading,
getLastWeekRange,
getLastMonthRange,
} from '@/com/utils.js'
import {showLoading,getLastWeekRange,getLastMonthRange} from '@/com/utils.js'
import QiunDataCharts from '@/components/qiun-data-charts/qiun-data-charts.vue'
export default {
components: { QiunDataCharts },
@ -313,23 +238,24 @@ export default {
xAxis: {
disableGrid: true,
labelCount:5,
},
yAxis: {
gridType: 'dash',
gridType: "dash",
data:[
{
min: 0,
},
],
min:0
}
]
},
extra: {
area: {
type: 'curve',
type: "curve",
opacity: 0.9,
addLine: true,
gradient: true,
},
},
}
},
chart_conductivity:{},//
chart_chlorine:{},//
@ -350,13 +276,13 @@ export default {
end_date_c:'',
sublist:[
{
name: '今天',
name: '今天'
},
{
name: '近一周',
name: '近一周'
},
{
name: '近一月',
name: '近一月'
},
],
currentIndex:0,
@ -383,183 +309,182 @@ export default {
1:'',
2:'Ⅱ',
3:'Ⅲ',
4: 'Ⅳ',
4:'Ⅳ'
},
device_type:3,
}
};
},
onLoad(){
this.queryDeviceBasics()
this.optsc = JSON.parse(JSON.stringify(this.opts))
this.queryDeviceBasics();
this.optsc = JSON.parse(JSON.stringify(this.opts));
},
onShow(){
},
onShow() {},
methods:{
warningClickFn(lv){
let urlparams = `?lv=${lv}&base=${this.addressValue}&device=${this.device_id}&title=水质监控`
let urlparams = `?lv=${lv}&base=${this.addressValue}&device=${this.device_id}&title=水质监控`;
uni.navigateTo({
url: `/pages/index/warning-list${urlparams}`,
url:`/pages/index/warning-list${urlparams}`
})
},
//
setWarnInfo(){
this.getDeviceWarningRules()
this.warningShow = true
this.getDeviceWarningRules();
this.warningShow = true;
},
//
change(val){
console.log(val)
let narray = this.deviceAddressList.filter((item) => {
return item.value == val
console.log(val);
let narray = this.deviceAddressList.filter(item=>{
return item.value==val;
})
console.log(narray)
this.addressName = narray[0].name
this.$refs.uDropdown.highlight(0)
this.queryAddressDevicePoints(val)
console.log(narray);
this.addressName = narray[0].name;
this.$refs.uDropdown.highlight(0);
this.queryAddressDevicePoints(val);
},
//id
change2(val){
this.$refs.uDropdown.highlight(1)
this.queryMonitoringData()
this.getDeviceWarningNums() //
this.$refs.uDropdown.highlight(1);
this.queryMonitoringData();
this.getDeviceWarningNums();//
},
//
calendarChange(e){
console.log(e,'日期范围')
this.start_date_c = e.startDate
this.end_date_c = e.endDate
this.start_date_c = e.startDate;
this.end_date_c = e.endDate;
},
selectedDateConform(){
this.q_start_time = this.start_date_c
this.q_end_time = this.end_date_c
this.queryMonitoringData()
this.$refs.uDropdown.close()
this.q_start_time = this.start_date_c;
this.q_end_time = this.end_date_c;
this.queryMonitoringData();
this.$refs.uDropdown.close();
if(this.q_start_time!=this.q_end_time){
this.currentIndex = -1
this.currentIndex = -1;
}else{
this.currentIndex = 0
this.currentIndex = 0;
}
},
//
deleteDateFn(){
this.start_date_c = ''
this.end_date_c = ''
this.start_date_c = '';
this.end_date_c = '';
},
//
openDropDown(index){
console.log(index, 'openDropDown')
if (index == 2) {
//
this.start_date_c = this.q_start_time
this.end_date_c = this.q_end_time
console.log(index,'openDropDown');
if(index==2){//
this.start_date_c = this.q_start_time;
this.end_date_c = this.q_end_time;
}
},
//
subChange1(index){
console.log(index)
this.currentIndex = index
this.currentIndex = index;
if(index==1){
let lastWeekDate = getLastWeekRange()
let startDate = this.$u.timeFormat(lastWeekDate.startDate, 'yyyy-mm-dd')
let endDate = this.$u.timeFormat(lastWeekDate.endDate, 'yyyy-mm-dd')
console.log(startDate, endDate)
this.q_start_time = startDate
this.q_end_time = endDate
let lastWeekDate = getLastWeekRange();
let startDate = this.$u.timeFormat(lastWeekDate.startDate, 'yyyy-mm-dd');
let endDate = this.$u.timeFormat(lastWeekDate.endDate, 'yyyy-mm-dd');
console.log(startDate,endDate);
this.q_start_time = startDate;
this.q_end_time = endDate;
}else if(index==2){
let lastMonthRange = getLastMonthRange()
let startDate = this.$u.timeFormat(
lastMonthRange.startDate,
'yyyy-mm-dd'
)
let endDate = this.$u.timeFormat(lastMonthRange.endDate, 'yyyy-mm-dd')
console.log(startDate, endDate)
this.q_start_time = startDate
this.q_end_time = endDate
let lastMonthRange = getLastMonthRange();
let startDate = this.$u.timeFormat(lastMonthRange.startDate, 'yyyy-mm-dd');
let endDate = this.$u.timeFormat(lastMonthRange.endDate, 'yyyy-mm-dd');
console.log(startDate,endDate);
this.q_start_time = startDate;
this.q_end_time = endDate;
}else{
this.q_start_time = ''
this.q_end_time = ''
this.q_start_time = '';
this.q_end_time = '';
}
this.queryMonitoringData()
this.queryMonitoringData();
},
//
warningInfoBtn(){
let params = {
slug: 'device_warning_rule_waterquality',
value: this.formInfo,
slug: "device_warning_rule_waterquality",
value:this.formInfo
}
this.$http
.put('/api/device-warning-rules', params)
.then(({ data }) => {
this.warningShow = false
this.$http.put('/api/device-warning-rules',params).then(({data})=>{
this.warningShow = false;
if(data.code==200){
uni.showToast({ title: '设置成功', icon: 'none' })
uni.showToast({ title: '设置成功', icon: 'none' });
}else{
uni.showToast({ title: '设置失败', icon: 'none' })
uni.showToast({ title: '设置失败', icon: 'none' });
}
})
.catch(() => {
uni.showToast({ title: '设置失败', icon: 'none' })
}).catch(()=>{
uni.showToast({ title: '设置失败', icon: 'none' });
})
},
//
queryDeviceBasics(){
let params = {
device_type:this.device_type,
_t: new Date().getTime(),
_t: new Date().getTime()
}
this.$http
.get('/api/agricultural-device-basic', { params: params })
.then(({ data }) => {
this.$http.get('/api/agricultural-device-basic',{params:params}).then(({data})=>{
console.log(data);
if(data.code==200){
let _data = data.data
let _data = data.data;
if(_data.length==0){
this.loadingType = 0
return this.$u.toast('没有关联基地')
return this.$u.toast('没有关联基地');
}
for(let item of _data){
item['label'] = item.name
item['value'] = item.id
item['label'] = item.name;
item['value'] = item.id;
}
this.deviceAddressList = _data
this.addressValue = _data[0].id
this.addressName = _data[0].name
this.deviceAddressList = _data;
this.addressValue = _data[0].id;
this.addressName = _data[0].name;
this.queryAddressDevicePoints(this.addressValue)
this.queryAddressDevicePoints(this.addressValue);
}
}).catch(()=>{
})
.catch(() => {})
},
//
queryAddressDevicePoints(id){
let params = {
device_type:this.device_type,
agricultural_basic:id,
_t: new Date().getTime(),
_t: new Date().getTime()
}
this.$http
.get(`/api/agricultural-device-point/${id}`, { params: params })
.then(({ data }) => {
console.log(data)
this.$http.get(`/api/agricultural-device-point/${id}`,{params:params}).then(({data})=>{
console.log(data);
if(data.code==200){
let _data = data.data
let _data = data.data;
if(_data.length==0){
// return this.$u.toast('');
}
let options = []
let options = [];
for(let k in _data){
let item = {}
item['label'] = _data[k]
item['value'] = k
options.push(item)
let item = {};
item['label'] = _data[k];
item['value'] = k;
options.push(item);
}
this.options2 = options
this.device_id = options[0].value
this.options2 = options;
this.device_id = options[0].value;
console.log(this.options2,this.device_id,'this.options2')
this.queryMonitoringData()
this.getDeviceWarningNums() //
this.queryMonitoringData();
this.getDeviceWarningNums();//
}
}).catch(()=>{
})
.catch(() => {})
},
//
queryMonitoringData(){
@ -567,81 +492,67 @@ export default {
device_id:this.device_id,
start_time:this.q_start_time,
end_time:this.q_end_time,
_t: new Date().getTime(),
_t: new Date().getTime()
}
this.$http
.get('/api/monitoring-data', { params: params })
.then(({ data }) => {
this.$http.get('/api/monitoring-data',{params:params}).then(({data})=>{
if(data.code==200){
let info = data.data
let chartInfo = {}
let info = data.data;
let chartInfo = {};
for(let fk in info){
let _item = {
categories: [],
data: [],
data:[]
}
if (info[fk]) {
for(let k in info[fk]){
_item.data.push(info[fk][k])
let timestamp = new Date(k).getTime()
_item.data.push(info[fk][k]);
let timestamp = new Date(k).getTime();
// let time1 = k.split(/\s+/);
if(params.start_time!=params.end_time){
let time1 = this.$u.timeFormat(timestamp, 'yyyy-mm-dd')
_item.categories.push(time1)
let time1 = this.$u.timeFormat(timestamp, 'yyyy-mm-dd');
_item.categories.push(time1);
}else{
let time2 = this.$u.timeFormat(timestamp, 'hh:ss')
_item.categories.push(time2)
let time2 = this.$u.timeFormat(timestamp, 'hh:ss');
_item.categories.push(time2);
}
}
chartInfo[fk] = _item
}
chartInfo[fk] = _item;
}
console.log(chartInfo,'chartDatas--')
if (params.start_time != params.end_time) {
//
this.opts.xAxis.labelCount = 3
this.optsc.xAxis.labelCount = 3
if(params.start_time!=params.end_time){//
this.opts.xAxis.labelCount = 3;
this.optsc.xAxis.labelCount = 3;
}else{
let len = chartInfo.oxygen.categories.length - 1
let v = 5
let aw = len > 10 ? len % 6 : len % 5
let len = chartInfo.conductivity.categories.length-1;
let v = 5;
let aw = len>10?len%6:len%5;
if(aw==3||aw==0||aw==1){
v = 4
v = 4;
}else if(aw==2){
v = 3
} else {
v = 5
}
this.opts.xAxis.labelCount = v
this.optsc.xAxis.labelCount = v
v = 3;
}else{v=5}
this.opts.xAxis.labelCount = v;
this.optsc.xAxis.labelCount = v;
console.log(this.opts,v,len,'配置',aw)
}
//start
if (chartInfo.chlorine) {
let res2 = {
categories: chartInfo.chlorine.categories,
series: [
{
name:'氯',
legendShape:'circle',
data: chartInfo.chlorine.data,
},
],
}
this.chart_chlorine = JSON.parse(JSON.stringify(res2))
}else{
this.chart_chlorine = null
data: chartInfo.chlorine.data
}
]
};
this.chart_chlorine = JSON.parse(JSON.stringify(res2));
//end
//start conductivity
if (chartInfo.conductivity) {
let res = {
categories: chartInfo.conductivity.categories,
series: [
@ -649,37 +560,30 @@ export default {
name:'电导率',
legendShape:'circle',
data: chartInfo.conductivity.data,
},
],
}
this.chart_conductivity = JSON.parse(JSON.stringify(res))
console.log(this.chart_conductivity, '电导率')
}else{
this.chart_conductivity = null
}
]
};
this.chart_conductivity = JSON.parse(JSON.stringify(res));
console.log(this.chart_conductivity,'电导率')
//end conductivity
//start oxygen
if (chartInfo.oxygen) {
let res3 = {
categories: chartInfo.oxygen.categories,
series: [
{
name:'氧气',
legendShape:'circle',
data: chartInfo.oxygen.data,
},
],
data: chartInfo.oxygen.data
}
]
};
this.chart_oxygen = JSON.parse(JSON.stringify(res3))
}else{
this.chart_oxygen = null
}
this.chart_oxygen = JSON.parse(JSON.stringify(res3));
//end
//start PH
if (chartInfo.ph) {
let res4 = {
categories: chartInfo.ph.categories,
series: [
@ -687,15 +591,11 @@ export default {
name:'PH',
legendShape:'circle',
data: chartInfo.ph.data,
},
],
}
this.chart_ph = JSON.parse(JSON.stringify(res4))
}else{
this.chart_ph = null
}
]
};
this.chart_ph = JSON.parse(JSON.stringify(res4));
//start temperature
if (chartInfo.temperature) {
let res5 = {
categories: chartInfo.temperature.categories,
series: [
@ -703,25 +603,21 @@ export default {
name:'温度',
legendShape:'circle',
data: chartInfo.temperature.data,
},
],
}
let min_temperature = 0
]
};
let min_temperature = 0;
for(let val of chartInfo.temperature.data){
if(val<0){
min_temperature = val
min_temperature = val;
}
}
if(min_temperature<0){
this.optsc.yAxis.data = []
}
this.chart_temperature = JSON.parse(JSON.stringify(res5))
}else{
this.chart_temperature = null
this.optsc.yAxis.data = [];
}
this.chart_temperature = JSON.parse(JSON.stringify(res5));
//end temperature
//start turbidity
if (chartInfo.turbidity) {
let res6 = {
categories: chartInfo.turbidity.categories,
series: [
@ -729,17 +625,17 @@ export default {
name:'浊度',
legendShape:'circle',
data: chartInfo.turbidity.data,
},
],
}
this.chart_turbidity = JSON.parse(JSON.stringify(res6))
}else{
this.chart_turbidity = null
}
]
};
this.chart_turbidity = JSON.parse(JSON.stringify(res6));
//end turbidity
}
}).catch(()=>{
})
.catch(() => {})
},
//
getDeviceWarningNums(){
@ -747,38 +643,35 @@ export default {
base:this.addressValue,
device:this.device_id,
status:0,
_t: new Date().getTime(),
_t: new Date().getTime()
}
this.$http
.get('/api/device-warning-nums', { params: params })
.then(({ data }) => {
this.$http.get('/api/device-warning-nums',{params:params}).then(({data})=>{
if(data.code==200){
this.deviceWarning = data.data
this.deviceWarning = data.data;
}
}).catch(()=>{
})
.catch(() => {})
},
//
getDeviceWarningRules(){
this.$http
.get('/api/device-warning-rules', { params: {} })
.then(({ data }) => {
this.$http.get('/api/device-warning-rules',{params:{}}).then(({data})=>{
if(data.code==200){
let _data = data.data
let info = {}
let _data = data.data;
let info = {};
for(let item of _data){
if (item.slug == 'device_warning_rule_waterquality') {
//
info = item
break
if(item.slug=='device_warning_rule_waterquality'){//
info = item;
break;
}
}
this.formInfo = info.value
this.formInfo = info.value;
}
}).catch(()=>{
})
.catch(() => {})
},
},
}
}
}
</script>
@ -809,6 +702,7 @@ export default {
.cont-box{
display: flex;
padding-bottom: 12rpx;
}
.warning-item{
flex: 1;

View File

@ -129,7 +129,7 @@
<view class="handle-btns">
<view v-auth="['endpoint.admin_users.destroy']" class="btn_del" @click="deleteInfoId(formInfo.id)"></view>
<view v-auth="['endpoint.admin_users.edit_password']" class="btn_edit" @click="editPwdPopup(formInfo.id)"></view>
<view v-if="formInfo.banned_at" v-auth="['endpoint.admin_users.unban']" class="btn_edit" @click="unlock(formInfo.id)"></view>
<view v-if="formInfo.banned_at" v-auth="['super']" class="btn_edit" @click="unlock(formInfo.id)"></view>
<view v-auth="['endpoint.admin_users.edit']" class="btn_edit" @click="editInfoId(formInfo.id)"></view>
</view>
</view>