|
|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
+ <div class="content">
|
|
|
<div class="tabs">
|
|
|
<ul>
|
|
|
<li v-for="(tab,i) in tabs" @click="goTab(tab.url)" :class="{'active':tabIndex == i}">
|
|
|
@@ -12,134 +12,146 @@
|
|
|
<div class="uploadContainer">
|
|
|
<el-upload
|
|
|
class="upload-demo"
|
|
|
- action="https://jsonplaceholder.typicode.com/posts/"
|
|
|
+ action="/v1/AdminSettings/FirmwareUpdate"
|
|
|
:on-change="handleChange"
|
|
|
+ :auto-upload="true"
|
|
|
:file-list="fileList">
|
|
|
<el-button size="small" type="primary">点击上传</el-button>
|
|
|
</el-upload>
|
|
|
<em class="addMemo" v-show="fileList.length == 0" @click="addMemo">
|
|
|
- <i></i>
|
|
|
- 添加备注
|
|
|
+ <i></i>添加备注
|
|
|
</em>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="hardwareList">
|
|
|
<h5>设备列表</h5>
|
|
|
- <div class="panel">
|
|
|
- <div class="panel-body">
|
|
|
- <div class=" panel_control">
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="4">
|
|
|
- <em>所属区域:</em>
|
|
|
- <el-select v-model="panel.taskstatus">
|
|
|
- <el-option
|
|
|
- v-for="item in panel.options"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <em>固件版本:</em>
|
|
|
- <el-input v-model="panel.keyword" placeholder="请输入固件版本"></el-input>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="4">
|
|
|
- <el-button size="small" type="primary" @click="query">查询</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <div class="panel">
|
|
|
+ <div class="panel-body">
|
|
|
+ <div class=" panel_control">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="4">
|
|
|
+ <em>标签名:</em>
|
|
|
+ <el-input v-model="panel.tagname" placeholder="请输入标签名"></el-input>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4">
|
|
|
+ <em>所属区域:</em>
|
|
|
+ <el-select v-model="panel.regionid">
|
|
|
+ <el-option
|
|
|
+ v-for="item in panel.regionidOptions"
|
|
|
+ :key="item.Id"
|
|
|
+ :label="item.Name"
|
|
|
+ :value="item.Id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4">
|
|
|
+ <em>固件版本:</em>
|
|
|
+ <el-input v-model="panel.keyword" placeholder="请输入固件版本"></el-input>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4">
|
|
|
+ <el-button size="small" type="primary" @click="query">查询</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="contorl">
|
|
|
- <el-button size="small" type="primary" @click="startUpdate">开始更新</el-button>
|
|
|
- <div class="version">
|
|
|
- <em>NEW</em>
|
|
|
- <span>最新固件版本:v.2.0.1版本固件</span>
|
|
|
- </div>
|
|
|
- <el-tooltip class="item" effect="dark" content="一键更新全部设备固件" placement="top">
|
|
|
- <i class="question"></i>
|
|
|
- </el-tooltip>
|
|
|
- <el-button class="allItem" size="small" type="primary" @click="changeList">全部更新</el-button>
|
|
|
+ <div class="contorl">
|
|
|
+ <el-button size="small" type="primary" @click="startUpdate">开始更新</el-button>
|
|
|
+ <div class="version">
|
|
|
+ <em>NEW</em>
|
|
|
+ <span>最新固件版本:v.2.0.1版本固件</span>
|
|
|
+ </div>
|
|
|
+ <el-tooltip class="item" effect="dark" content="一键更新全部设备固件" placement="top">
|
|
|
+ <i class="question"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-button class="allItem" size="small" type="primary" @click="changeList">全部更新</el-button>
|
|
|
|
|
|
- </div>
|
|
|
- <el-table
|
|
|
- :data="tableData"
|
|
|
- class=""
|
|
|
- stripe
|
|
|
- @selection-change="handleSelectionChange"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- type="selection"
|
|
|
- width="55">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="设备名称"
|
|
|
- >
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="设备安装位置"
|
|
|
- width="180">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="name"
|
|
|
- label="旧固件版本"
|
|
|
+ </div>
|
|
|
+ <br>
|
|
|
+ <el-table
|
|
|
+ :data="tableData"
|
|
|
+ is-horizontal-resize
|
|
|
+ :default-sort="{prop: 'date', order: 'descending'}"
|
|
|
+ v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.8)"
|
|
|
+ class=""
|
|
|
+ stripe
|
|
|
>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="date"
|
|
|
- label="旧版本更新时间"
|
|
|
- width="180">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="address"
|
|
|
- label="最新固件版本">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="date"
|
|
|
- label="最新版本更新时间">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="address"
|
|
|
- label="信号强度">
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="address"
|
|
|
- label="操作记录">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span @click="goRecord(scope.row)">探测记录</span>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <br>
|
|
|
- <el-pagination
|
|
|
- background
|
|
|
- :total="pageination.total"
|
|
|
- :page-size="pageination.pageItem"
|
|
|
- @current-change="pageChange"
|
|
|
- ></el-pagination>
|
|
|
+ <el-table-column
|
|
|
+ type="selection"
|
|
|
+ width="55">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="Mac"
|
|
|
+ label="Mac"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="TagName"
|
|
|
+ label="标签名"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="Location"
|
|
|
+ label="位置"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="FirmwareVersion"
|
|
|
+ label="软件版本"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="HardwareVersion"
|
|
|
+ label="硬件版本"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="LastOnline"
|
|
|
+ label="最近上线"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="Memo"
|
|
|
+ label="备注"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="Status"
|
|
|
+ label="状态"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span v-if="scope.row.Status == 0">已禁用</span>
|
|
|
+ <span v-if="scope.row.Status == 1">已启用</span>
|
|
|
+ <span v-if="scope.row.Status == 2">已离线</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <br>
|
|
|
+ <el-pagination
|
|
|
+ background
|
|
|
+ :total="pageination.total"
|
|
|
+ :page-size="pageination.pageItem"
|
|
|
+ @current-change="pageChange"
|
|
|
+ ></el-pagination>
|
|
|
|
|
|
- <dialog_referrer_list
|
|
|
- :show="dialog_state"
|
|
|
- :title="dialog_title"
|
|
|
- :large="true"
|
|
|
- @dialog_cancel="dialog_cancel"
|
|
|
- @dialog_ok="dialog_ok"
|
|
|
- >
|
|
|
- <div class="dialogContent">
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="20">
|
|
|
- <label>
|
|
|
- 备注
|
|
|
- </label>
|
|
|
- <el-input type="textarea" v-model="dialog.memo"></el-input>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </dialog_referrer_list>
|
|
|
+ <dialog_referrer_list
|
|
|
+ :show="dialog_state"
|
|
|
+ :title="dialog_title"
|
|
|
+ :large="true"
|
|
|
+ @dialog_cancel="dialog_cancel"
|
|
|
+ @dialog_ok="dialog_ok"
|
|
|
+ >
|
|
|
+ <div class="dialogContent">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="20">
|
|
|
+ <label>
|
|
|
+ 备注
|
|
|
+ </label>
|
|
|
+ <el-input type="textarea" v-model="dialog.memo"></el-input>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </dialog_referrer_list>
|
|
|
<el-dialog
|
|
|
title="提示"
|
|
|
:visible.sync="dialogVisible"
|
|
|
@@ -152,14 +164,20 @@
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import Global from '../Global.js'
|
|
|
import dialog_referrer_list from '../components/dialog_referrer_list'
|
|
|
-
|
|
|
+ import {
|
|
|
+ DetectorQuery,
|
|
|
+ GetChildRegionSelect,
|
|
|
+ GetLastVerionFirmwareinfo,
|
|
|
+ RegionPictureGetByRegionId,
|
|
|
+ } from '../api/getApiRes.js'
|
|
|
+ let qs = require('qs');
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
@@ -188,6 +206,10 @@
|
|
|
keyword: '',
|
|
|
USERCODE: '',
|
|
|
taskstatus: 99,
|
|
|
+ regionid: 0,
|
|
|
+ regionid2: '',
|
|
|
+ regionidOptions: [],
|
|
|
+ regionidOptions2: [],
|
|
|
options: [
|
|
|
{value: 99, label: '全部'},
|
|
|
{value: 1, label: '进行中'},
|
|
|
@@ -206,30 +228,85 @@
|
|
|
region: 10,
|
|
|
memo: '',
|
|
|
},
|
|
|
+ draw: 1,
|
|
|
+ start: 0,
|
|
|
+ recordsTotal: 0,
|
|
|
+ tableData: [],
|
|
|
+ allTableData: [],
|
|
|
+ limit: '10',
|
|
|
+ multipleSort: false,
|
|
|
+ loading: true,
|
|
|
multipleSelection: [],
|
|
|
- tableData: [{
|
|
|
- date: '2016-05-02',
|
|
|
- name: '王小虎',
|
|
|
- address: '上海市普陀区金沙江路 1518 弄'
|
|
|
- }, {
|
|
|
- date: '2016-05-04',
|
|
|
- name: '王小虎',
|
|
|
- address: '上海市普陀区金沙江路 1517 弄'
|
|
|
- }, {
|
|
|
- date: '2016-05-01',
|
|
|
- name: '王小虎',
|
|
|
- address: '上海市普陀区金沙江路 1519 弄'
|
|
|
- }, {
|
|
|
- date: '2016-05-03',
|
|
|
- name: '王小虎',
|
|
|
- address: '上海市普陀区金沙江路 1516 弄'
|
|
|
- }]
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
this.getTableQuery();
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 页面数据查询
|
|
|
+ getTableQuery() {
|
|
|
+ let that = this;
|
|
|
+ that.loading = true;
|
|
|
+ this.getGetChildRegionSelect(0, 1);
|
|
|
+ // 查询检测设备。上级区域id,区域id必传。regionid传0,查询supregionid对应所有子区域的检测设备。 如果supregionid,regionid都传0,默认查询企业ID下所有检测设备
|
|
|
+ let param = {
|
|
|
+ token: localStorage.token,
|
|
|
+ supregionid: 0,//
|
|
|
+ regionid: this.panel.regionid,//
|
|
|
+ comid: 1,//
|
|
|
+ tagname: that.panel.tagname,//标签名
|
|
|
+ start: 1,//
|
|
|
+ tableMax: 300,//
|
|
|
+ };
|
|
|
+ let postdata = qs.stringify(param);
|
|
|
+ DetectorQuery(postdata).then(res => {
|
|
|
+ let json = res;
|
|
|
+ if (json.Code == 0) {
|
|
|
+ that.loading = false;
|
|
|
+ if (json.Rs) {
|
|
|
+ that.allTableData = json.Rs;
|
|
|
+ that.recordsTotal = json.Rs.length;
|
|
|
+ } else {
|
|
|
+ that.allTableData = [];
|
|
|
+ that.recordsTotal = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置分页数据
|
|
|
+ that.setPaginations();
|
|
|
+ } else {
|
|
|
+ that.$message.error(json.Memo);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 获取下级列表
|
|
|
+ getGetChildRegionSelect(regionId, level) {
|
|
|
+ let that = this;
|
|
|
+ let param = {
|
|
|
+ token: localStorage.token,
|
|
|
+ regionId: regionId,
|
|
|
+ };
|
|
|
+ let postdata = qs.stringify(param);
|
|
|
+ GetChildRegionSelect(postdata).then(res => {
|
|
|
+ let json = res;
|
|
|
+ if (json.Code == 0) {
|
|
|
+ if (level == 1) {
|
|
|
+ that.panel.regionidOptions = json.Rs;
|
|
|
+ that.panel.regionidOptions.unshift({Id: 0, Name: "全部"});
|
|
|
+ } else {
|
|
|
+ if (json.Rs) {
|
|
|
+ that.panel.regionidOptions2 = json.Rs;
|
|
|
+ that.panel.regionid2 = json.Rs[0].Id;
|
|
|
+ } else {
|
|
|
+ that.panel.regionidOptions2 = [];
|
|
|
+ that.panel.regionid2 = '';
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ that.$message.error(json.Memo);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
// 跳转tab页面
|
|
|
goTab(url) {
|
|
|
this.$router.push({path: url});
|
|
|
@@ -244,34 +321,15 @@
|
|
|
console.log(val);
|
|
|
},
|
|
|
handleChange(file, fileList) {
|
|
|
+ console.log(123);
|
|
|
this.fileList = fileList.slice(-3);
|
|
|
},
|
|
|
- // 页面数据查询
|
|
|
- getTableQuery() {
|
|
|
- // let that = this;
|
|
|
- // that.loading = true;
|
|
|
- // let url = headapi + '?ctl=ajax&mod=dial&act=taskListQuery';//获取
|
|
|
- // let param = {
|
|
|
- // 'taskstatus': that.panel.taskstatus,
|
|
|
- // 'bt': globaltime2String(that.panel.time1[0]),
|
|
|
- // 'et': globaltime2String(that.panel.time1[1]),
|
|
|
- // 'KEYWORD': that.panel.keyword,
|
|
|
- // 'USERCODE': that.panel.USERCODE,
|
|
|
- // };
|
|
|
- // let JSON = '';
|
|
|
- // let postdata = qs.stringify(param);
|
|
|
- // axios.post(url, postdata)
|
|
|
- // .then(function (response) {
|
|
|
- // JSON = response.data;
|
|
|
- // that.loading = false;
|
|
|
- // that.allTableData = JSON.rs;
|
|
|
- // that.recordsTotal = JSON.rs.length;
|
|
|
- // // 设置分页数据
|
|
|
- // that.setPaginations();
|
|
|
- // })
|
|
|
- // .catch(function (error) {
|
|
|
- // console.log(error);
|
|
|
- // });
|
|
|
+ handleClose() {
|
|
|
+ console.log(123);
|
|
|
+ },
|
|
|
+ handleImgbefore(file) {
|
|
|
+ console.log(file);
|
|
|
+ this.dialog.image = file;
|
|
|
},
|
|
|
// 设置分页数据
|
|
|
setPaginations() {
|
|
|
@@ -370,11 +428,11 @@
|
|
|
let id = that.field_id;
|
|
|
},
|
|
|
// 添加备注
|
|
|
- addMemo(){
|
|
|
+ addMemo() {
|
|
|
this.dialog_state = true;
|
|
|
},
|
|
|
// 开始更新
|
|
|
- startUpdate(){
|
|
|
+ startUpdate() {
|
|
|
// checkNum
|
|
|
if (!this.multipleSelection.length) {
|
|
|
this.$message({
|
|
|
@@ -397,19 +455,29 @@
|
|
|
@import "../assets/css/panel.css";
|
|
|
@import "../assets/css/dialog.css";
|
|
|
|
|
|
+ .content {
|
|
|
+ width: 100%;
|
|
|
+ overflow: hidden;
|
|
|
+ display: block;
|
|
|
+ margin: 0 auto;
|
|
|
+ padding-left: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
.tabs ul {
|
|
|
- width: 800px;
|
|
|
+ width: 500px;
|
|
|
}
|
|
|
|
|
|
table span {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+
|
|
|
.upload {
|
|
|
width: 100%;
|
|
|
overflow: hidden;
|
|
|
display: block;
|
|
|
margin: 0 auto;
|
|
|
}
|
|
|
+
|
|
|
.upload h5 {
|
|
|
width: 100%;
|
|
|
overflow: hidden;
|
|
|
@@ -420,37 +488,45 @@
|
|
|
text-align: left;
|
|
|
font-weight: normal;
|
|
|
}
|
|
|
+
|
|
|
.uploadContainer {
|
|
|
width: 100%;
|
|
|
overflow: hidden;
|
|
|
display: block;
|
|
|
margin: 0 auto;
|
|
|
- background: rgba(27,86,200,0.14);
|
|
|
+ background: rgba(27, 86, 200, 0.14);
|
|
|
border: 1px solid #005EA2;
|
|
|
border-radius: 0;
|
|
|
margin-top: 11px;
|
|
|
padding: 10px 0;
|
|
|
}
|
|
|
+
|
|
|
/deep/ .el-upload {
|
|
|
float: left;
|
|
|
margin-left: 27px;
|
|
|
}
|
|
|
+
|
|
|
/deep/ .el-upload-list {
|
|
|
width: 200px;
|
|
|
float: left;
|
|
|
}
|
|
|
+
|
|
|
/deep/ .el-upload-list__item-name [class^=el-icon] {
|
|
|
- color:#6DC1FF ;
|
|
|
+ color: #6DC1FF;
|
|
|
}
|
|
|
- /deep/ .el-upload-list__item-name {
|
|
|
- color:#6DC1FF ;
|
|
|
+
|
|
|
+ /deep/ .el-upload-list__item-name {
|
|
|
+ color: #6DC1FF;
|
|
|
}
|
|
|
+
|
|
|
/deep/ .el-upload-list__item:first-child {
|
|
|
margin-top: 5px;
|
|
|
}
|
|
|
+
|
|
|
/deep/ .el-upload-list__item:hover {
|
|
|
background: none;
|
|
|
}
|
|
|
+
|
|
|
.addMemo {
|
|
|
width: 120px;
|
|
|
height: 30px;
|
|
|
@@ -466,17 +542,19 @@
|
|
|
margin-top: 2px;
|
|
|
margin-left: 20px;
|
|
|
}
|
|
|
+
|
|
|
.addMemo i {
|
|
|
width: 14px;
|
|
|
height: 14px;
|
|
|
overflow: hidden;
|
|
|
float: left;
|
|
|
- background: url("../assets/img/icon/addMemo.png")top center no-repeat;
|
|
|
+ background: url("../assets/img/icon/addMemo.png") top center no-repeat;
|
|
|
background-size: 100% 100%;
|
|
|
margin-top: 8px;
|
|
|
margin-left: 20px;
|
|
|
margin-right: 10px;
|
|
|
}
|
|
|
+
|
|
|
.hardwareList {
|
|
|
width: 100%;
|
|
|
overflow: hidden;
|
|
|
@@ -484,6 +562,7 @@
|
|
|
margin: 0 auto;
|
|
|
margin-top: 35px;
|
|
|
}
|
|
|
+
|
|
|
.hardwareList h5 {
|
|
|
width: 100%;
|
|
|
overflow: hidden;
|
|
|
@@ -495,6 +574,7 @@
|
|
|
font-weight: normal;
|
|
|
margin-bottom: 10px;
|
|
|
}
|
|
|
+
|
|
|
.contorl {
|
|
|
/*width: 100%;*/
|
|
|
overflow: hidden;
|
|
|
@@ -502,9 +582,11 @@
|
|
|
margin: 0 auto;
|
|
|
padding: 17px 23px;
|
|
|
}
|
|
|
+
|
|
|
em {
|
|
|
font-style: normal;
|
|
|
}
|
|
|
+
|
|
|
.version {
|
|
|
float: left;
|
|
|
color: #6DC1FF;
|
|
|
@@ -513,14 +595,16 @@
|
|
|
margin-left: 30px;
|
|
|
line-height: 30px;
|
|
|
}
|
|
|
+
|
|
|
.allItem {
|
|
|
float: right;
|
|
|
}
|
|
|
+
|
|
|
.question {
|
|
|
width: 18px;
|
|
|
height: 18px;
|
|
|
cursor: pointer;
|
|
|
- background: url("../assets/img/icon/question_icon.png")top center no-repeat;
|
|
|
+ background: url("../assets/img/icon/question_icon.png") top center no-repeat;
|
|
|
float: right;
|
|
|
margin-top: 7px;
|
|
|
margin-left: 13px;
|