wechat
lgyg 2023-09-06 23:15:41 +08:00
parent f92cf4f051
commit 169e2016ea
7 changed files with 555 additions and 9 deletions

View File

@ -186,9 +186,17 @@
}
//
.secreen-section{
.slot-content{
padding: 30rpx;
}
.dropdown-box{
&.downClose{
.u-dropdown__content{
visibility: hidden;
}
}
}
.select-date{
padding: 30rpx;
display: flex;
@ -322,6 +330,12 @@
.top_box{
height: 96rpx;
padding: 0 40rpx;
.title{
padding: 20rpx;
text-align: center;
font-size: 32rpx;
font-weight: bold;
}
.handle-btns{
height: 100%;
display: flex;
@ -529,5 +543,6 @@
padding: 20rpx;
}
}
</style>

View File

@ -119,6 +119,16 @@
}
}
,{
"path" : "pages/device/index",
"style" :
{
"navigationBarTitleText": "设备管理",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "white",

View File

@ -0,0 +1,436 @@
<template>
<view class="bg-page">
<u-navbar title="设备管理" :background="background" :custom-back="goback"
:title-color="titleColor" :back-icon-color="titleColor">
<view class="nav_slot_right_box" slot="right">
<view class="custom_btn add_btn" @click="addBtn()"></view>
</view>
</u-navbar>
<view class="content-box">
<u-swipe-action class="tb_swipe_list"
v-for="(item, index) in list"
:show="item.show" :index="index" :key="item.id"
@click="click"
@open="open"
:options="options"
>
<view class="tb_body" @click="showInfo(index)">
<view class="row_box">
<view class="text">类型{{ item.type }}</view>
</view>
<view class="row_box">
<view class="text">设备编号{{item.sn}}</view>
</view>
<view class="row_box">
<view class="text">基地{{ item.base_name }}</view>
</view>
<view class="row_box">
<view class="text">监控点{{ item.monitoring_point }}</view>
</view>
<view class="row_box">
<view class="text">状态{{item.status}}</view>
</view>
</view>
</u-swipe-action>
<u-loadmore :status="loading" margin-top="60"/>
</view>
<!-- 编辑 -->
<u-popup v-model="editShow" border-radius="28" width="92%" height="70%"
mode="center" :closeable="true" :mask-close-able="false" z-index="910">
<view class="popup-form-ubox">
<view class="top_box">
<view class="title" v-if="setInfo.id"></view>
<view class="title" v-else></view>
</view>
<scroll-view class="scroll-y" scroll-y="true">
<view class="form_edit" style="padding-left: 50rpx;">
<u-form>
<u-form-item label="ID" label-width="140" v-if="setInfo.id">
<view class="input_box bg_colorf8 pdlr12">
<u-input v-model="setInfo.id" :disabled="true" />
</view>
</u-form-item>
<u-form-item label="设备类型" label-width="140" :required='true'>
<view class="input_box">
<u-input v-model="setInfo.type" />
</view>
</u-form-item>
<u-form-item label="排序" label-width="140" :required='true'>
<view class="input_box">
<u-input v-model="setInfo.sort" type="number"/>
</view>
</u-form-item>
<u-form-item label="基地" label-width="140" :required='true'>
<view class="input_box">
<u-input v-model="setInfo.base_name" />
</view>
</u-form-item>
<u-form-item label="设备编号" label-width="140" :required='true'>
<view class="input_box">
<u-input v-model="setInfo.sn" />
</view>
</u-form-item>
<u-form-item label="设备厂商" label-width="140" :required='true'>
<view class="input_box">
<u-input v-model="setInfo.supplier" type="number"/>
</view>
</u-form-item>
<u-form-item label="项目" label-width="140" :required='true'>
<view class="input_box">
<u-input v-model="setInfo.project" type="text"/>
</view>
</u-form-item>
<u-form-item label="监控点" label-width="140" :required='true'>
<view class="input_box">
<u-input v-model="setInfo.monitoring_point" type="text"/>
</view>
</u-form-item>
</u-form>
</view>
</scroll-view>
<view class="buttom_section">
<u-button class="btn" type="default" @click="editShow = false">取消</u-button>
<u-button class="btn" @click="editInfoBtn()" type="primary">确定</u-button>
</view>
</view>
</u-popup>
<u-popup v-model="popupShow" mode="bottom" border-radius="28" z-index="900">
<view class="popup-form-info">
<view class="top_box u-border-bottom">
<view class="handle-btns">
<view class="btn_del" @click="deleteInfoId(formInfo.id)"></view>
<view class="btn_edit" @click="editInfoId(formInfo.id)"></view>
</view>
</view>
<view class="section_c">
<view class="plist u-border-bottom">
<view class="label_t">类型</view>
<view class="flex-1">{{formInfo.type}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">排序</view>
<view class="flex-1">{{formInfo.sort}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">设备编号</view>
<view class="flex-1">{{formInfo.sn}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">基地</view>
<view class="flex-1">{{formInfo.base_name}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">监控点</view>
<view class="flex-1">{{formInfo.monitoring_point}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">设备厂商</view>
<view class="flex-1">{{formInfo.supplier}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">设备项目</view>
<view class="flex-1">{{formInfo.project}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">状态</view>
<view class="flex-1">{{formInfo.status}}</view>
</view>
</view>
</view>
</u-popup>
<u-select v-model="selectShow" :list="supplierlist"
:default-value="select1Value" mode="single-column"
@confirm="uselectConfirm"></u-select>
</view>
</template>
<script>
import {formatDate,navigateBack} from '@/com/utils.js'
export default {
data() {
return {
background: {
backgroundColor:'#2a7dc9',
},
titleColor:"#ffffff",
per_page:10,
page:1,
list:[],
loading:'loadmore',
options: [
{
text: '编辑',
style: {
backgroundColor: '#007aff'
}
},
{
text: '删除',
style: {
backgroundColor: '#dd524d'
}
}
],
popupShow:false,
cindex:-1,//
editShow:false,
formInfo:{},
setInfo:{
id:'',
type:'',
sort:'',
base_name:'',
sn:'',
supplier:'',
project:'',
monitoring_point:'',
},
dropDownShow:false,
supplierlist:[
{
label: '其它',
value: 'device-supplier-other',
},
{
label: '慧联无限',
value: 'device-supplier-linkos',
},
{
label: '比昂',
value: 'device-supplier-biang',
},
{
label: '云飞',
value: 'device-supplier-yunfei',
},
],
selectShow:false,
select1Value:[],
};
},
filters:{
timeFormat(val){
return formatDate(val*1000, 'yyyy-MM-dd hh:mm');
},
},
onLoad() {
this.queryDataList();
},
methods: {
uselectConfirm(){
},
dropdownClose(){
this.dropDownShow= false;
},
openDropDown(index){
this.dropDownShow= true;
},
typePopupShow(){
// this.select2 = true;
},
addBtn(){
this.setInfoKeys('add');
this.editShow = true;
},
showInfo(index){
this.cindex = index;
let _id = this.list[index].id;
this.queryInfo(_id);
this.formInfo = this.list[index];
this.popupShow = true;
},
open(index){
this.list[index].show = true;
},
click(index, index1) {
console.log(index,index1,this.list[index])
if(index1 == 1) {
this.cindex = index;
let _id = this.list[index].id;
this.deleteInfoId(_id);
} else {//
let _id = this.list[index].id;
this.queryInfo(_id);
this.formInfo = this.list[index];
this.setInfoKeys();
this.editShow = true;
this.list[index].show = false;
}
},
queryDataList(refresh){
if(refresh){
this.loading = 'loadmore';
this.page = 1;
}
if(this.loading=='nomore'){//
return false;
}
let params = {
per_page:this.per_page,
page: this.page ++,
_t: new Date().getTime()
}
this.loading = 'loading';
this.$http.get('/api/devices',{params:params}).then(({data})=>{
console.log(data)
if(refresh){
this.list = [];
}
this.loading = 'loadmore';
if(data.code==200){
let _list = data.data|| [];
for(let item of _list){
item.show = false;
}
this.list = this.list.concat(_list);
console.log(this.list);
if(this.list.length>= data.meta.total){
this.loading ='nomore';
}
}
}).catch(()=>{
this.loading = 'loadmore';
})
},
//
editInfoBtn(){
let {id,name,sort,is_iframe,is_recommend,is_show,type,content} = this.setInfo;
let params = {
name:name,
sort:sort,
is_iframe:is_iframe?1:0,
is_recommend:is_recommend?1:0,
is_show:is_show?1:0,
type:type,
content:content,
}
if(id){params['id'] = id;}
if(params['id']){
this.$http.put(`/api/devices/${id}`,params).then(({data})=>{
if(data.code==200){
this.editShow = false;
this.queryDataList(true);
uni.showToast({ title: data.message, icon: 'none' });
}
}).catch(()=>{
})
}else{
this.$http.post(`/api/devices`,params).then(({data})=>{
if(data.code==200){
this.queryDataList(true);
this.editShow = false;
uni.showToast({ title: data.message, icon: 'none' });
}else{
uni.showToast({ title: data.message, icon: 'none' });
}
}).catch(()=>{
})
}
},
editInfoId(id){
// this.queryInfo(id);
this.setInfoKeys();
this.editShow = true;
this.popupShow = false;
},
setInfoKeys(type){
let info = {
id:'',
type:'',
sort:'',
base_name:'',
sn:'',
supplier:'',
project:'',
monitoring_point:''
}
if(type=='add'){
this.setInfo = info;
}else{
let {id,type,sort,base_name,sn,supplier,project,monitoring_point} = this.formInfo;
info['id'] = id;
info['type'] = type;
info['sort'] = sort;
info['base_name'] = base_name;
info['sn'] = sn;
info['supplier'] = supplier;
info['project'] = project;
info['monitoring_point'] = monitoring_point;
this.setInfo = info;
}
},
//deleteInfoId
deleteInfoId(id){
uni.showModal({
title: '提示',
content: '是否确定删除?',
success: (res)=> {
if (res.confirm) {
console.log('用户点击确定');
this.$http.delete(`/api/devices/${id}`).then(({data})=>{
if(data.code==200){
this.formInfo = {};//
this.popupShow = false;
this.list.splice(this.cindex,1);
uni.showToast({ title: data.message, icon: 'none' });
}
}).catch(()=>{
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
queryInfo(id){
this.$http.get(`/api/devices/${id}`).then(({data})=>{
console.log(data,'queryInfo===')
if(data.code==200){
this.formInfo = data.data;
this.setInfoKeys();
}
}).catch((err)=>{
})
},
goback(){
navigateBack()
}
},
//
onReachBottom() {
if(this.loading=='loadmore'){
this.queryDataList();
}
},
}
</script>
<style lang="scss" scoped>
.content-box{
padding: 30rpx;
}
</style>

View File

@ -1,8 +1,9 @@
<template>
<view class="bg-page">
<u-sticky>
<u-sticky z-index="99">
<view class="secreen-section" style="background-color: #fff;">
<u-dropdown class="dropdown-box" ref="uDropdown">
<u-dropdown class="dropdown-box" :class="[!dropDownShow?'downClose':'']" ref="uDropdown"
@close="dropdownClose" @open="dropdownOpen">
<u-dropdown-item v-model="lvvalue" title="预警等级"
:options="lvList" @change="change1"></u-dropdown-item>
<u-dropdown-item v-model="typevalue" title="设备类型"
@ -30,10 +31,10 @@
<view class="text">设备类型{{ item.device_type }}</view>
</view> -->
<view class="row_box">
<view class="text">等级{{ item.lv }}</view>
<view class="text">等级{{ lvname[item.lv] }}</view>
</view>
<view class="row_box">
<view class="text">状态{{ item.status }}</view>
<view class="text">状态{{ statusname[item.status] }}</view>
</view>
<view class="row_box">
<view class="text">时间{{ item.created_at|timeFormat}}</view>
@ -42,6 +43,45 @@
</view>
<u-loadmore :status="loading" margin-top="60"/>
</view>
<u-popup v-model="popupShow" mode="bottom" border-radius="28" z-index="900">
<view class="popup-form-info">
<view class="top_box u-border-bottom">
<view class="title">警报明细</view>
</view>
<view class="section_c">
<view class="plist u-border-bottom">
<view class="label_t">基地</view>
<view class="flex-1">{{formInfo.base_name}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">监控点</view>
<view class="flex-1">{{formInfo.point_name}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">设备类型</view>
<view class="flex-1">{{devicetypename[formInfo.device_type]}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">等级</view>
<view class="flex-1">{{lvname[formInfo.lv]}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">状态</view>
<view class="flex-1">{{statusname[formInfo.status]}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">创建时间</view>
<view class="flex-1">{{formInfo.created_at|timeFormat}}</view>
</view>
<view class="plist u-border-bottom">
<view class="label_t">地址</view>
<view class="flex-1">{{formInfo.content}}</view>
</view>
</view>
</view>
</u-popup>
</view>
</template>
@ -50,6 +90,7 @@
export default {
data() {
return {
dropDownShow:false,
per_page:15,
page:1,
loglist:[],
@ -119,6 +160,25 @@
},
],
statusvalue:-1,
statusname:{
0:'未处理',
1:'已处理',
2:'已忽略'
},
lvname:{
1:'Ⅰ级预警',
2:'Ⅱ级预警',
3:'Ⅲ级预警',
4:'Ⅳ级预警'
},
devicetypename:{
1:'监控设备',
2:'土壤设备',
3:'水质设备',
4:'气象设备'
},
popupShow:false,
formInfo:{},
};
},
filters:{
@ -141,7 +201,9 @@
},
methods: {
showInfo(){
showInfo(index){
this.formInfo = this.loglist[index];
this.popupShow = true;
},
change1(val){
@ -156,6 +218,12 @@
console.log(val);
this.queryloglist(true);
},
dropdownClose(){
this.dropDownShow = false;
},
dropdownOpen(){
this.dropDownShow = true;
},
queryloglist(refresh){
if(refresh){
this.loading = 'loadmore';

View File

@ -90,6 +90,7 @@
children:[
{
label:'设备管理',
url:'/pages/device/index'
},
{
label:'警报明细',

View File

@ -6,8 +6,10 @@
<view class="custom_btn add_btn" @click="addBtn()"></view>
</view>
</u-navbar>
<u-sticky z-index="99">
<view class="secreen-section" style="background-color: #fff;">
<u-dropdown class="dropdown-box" ref="uDropdown" @open="openDropDown">
<u-dropdown class="dropdown-box" :class="[dropDownShow?'':'downClose']" ref="uDropdown"
@open="openDropDown" @close="dropdownClose">
<u-dropdown-item title="类型" v-model="q_type"
:options="typelist" @change="change1"></u-dropdown-item>
<u-dropdown-item title="时间范围">
@ -33,6 +35,7 @@
</u-dropdown-item>
</u-dropdown>
</view>
</u-sticky>
<!-- <view class="page-top-title-box">
<view class="title">链接列表</view>
<view class="handle-option">
@ -290,6 +293,7 @@
q_start_time:'',
q_end_time:'',
q_type:'',
dropDownShow:false,
};
},
filters:{
@ -320,8 +324,11 @@
this.start_date_c = '';
this.end_date_c = '';
},
dropdownClose(){
this.dropDownShow= false;
},
openDropDown(index){
this.dropDownShow= true;
if(index==1){//
this.start_date_c = this.q_start_time;
this.end_date_c = this.q_end_time;

View File

@ -1,8 +1,9 @@
<template>
<view class="bg-page">
<u-sticky>
<u-sticky z-index="99">
<view class="secreen-section" style="background-color: #fff;">
<u-dropdown class="dropdown-box" ref="uDropdown">
<u-dropdown class="dropdown-box" :class="[!dropDownShow?'downClose':'']" ref="uDropdown"
@close="dropdownClose" @open="dropdownOpen">
<u-dropdown-item v-model="typevalue" title="动作"
:options="typeList" @change="change"></u-dropdown-item>
<u-dropdown-item title="时间范围">
@ -110,6 +111,8 @@
end_date_c:'',
q_start_date:'',
q_end_date:'',
dropDownShow:false,
};
},
filters:{
@ -134,6 +137,12 @@
methods: {
showInfo(){
},
dropdownClose(){
this.dropDownShow = false;
},
dropdownOpen(){
this.dropDownShow = true;
},
change(val){
console.log(val);