按需添加升级状态

This commit is contained in:
熊丽君
2021-05-07 14:41:37 +08:00
parent 95381aabf3
commit 0bd054d5e4
2 changed files with 272 additions and 110 deletions

View File

@ -2,55 +2,148 @@
<section class="app-container">
<el-row>
<el-col :span="4">
<region @selectdRegionCode="selectdRegionCode" :currentNodeKey.sync="queryParams.provinceCode"></region>
<region
@selectdRegionCode="selectdRegionCode"
:currentNodeKey.sync="queryParams.provinceCode"
></region>
</el-col>
<el-col :span="20">
<el-form :size="size" :inline="true" v-show="showSearch">
<el-form-item label="产品">
<el-select v-model="queryParams.productId" clearable placeholder="请选择" @change="queryProductIdChange">
<el-option v-for="item in queryProductSelectList" :key="item.id" :label="item.productName" :value="item.productId">
<el-select
v-model="queryParams.productId"
clearable
placeholder="请选择"
@change="queryProductIdChange"
>
<el-option
v-for="item in queryProductSelectList"
:key="item.id"
:label="item.productName"
:value="item.productId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="节点">
<el-select v-model="queryParams.nodeId" clearable placeholder="请选择">
<el-option v-for="item in queryNodeSelectList" :key="item.id" :label="item.nodeName" :value="item.nodeSn">
<el-select
v-model="queryParams.nodeId"
clearable
placeholder="请选择"
>
<el-option
v-for="item in queryNodeSelectList"
:key="item.id"
:label="item.nodeName"
:value="item.nodeSn"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="客户">
<el-select v-model="queryParams.userId" clearable placeholder="请选择" @change="queryUserIdChange">
<el-option v-for="item in queryUserSelectList" :key="item.id" :label="item.nickName" :value="item.userId">
<el-select
v-model="queryParams.userId"
clearable
placeholder="请选择"
@change="queryUserIdChange"
>
<el-option
v-for="item in queryUserSelectList"
:key="item.id"
:label="item.nickName"
:value="item.userId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="项目">
<el-select v-model="queryParams.projectId" clearable placeholder="请选择">
<el-option v-for="item in queryProjectSelectList" :key="item.id" :label="item.projectName" :value="item.projectId">
<el-select
v-model="queryParams.projectId"
clearable
placeholder="请选择"
>
<el-option
v-for="item in queryProjectSelectList"
:key="item.id"
:label="item.projectName"
:value="item.projectId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="设备SN">
<el-input v-model="queryParams.deviceId" placeholder="请输入设备SN" @keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.deviceId"
placeholder="请输入设备SN"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="当前软件版本">
<el-input v-model="queryParams.nowVersion" placeholder="请输入当前软件版本" @keyup.enter.native="handleQuery" />
<el-input
v-model="queryParams.nowVersion"
placeholder="请输入当前软件版本"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="升级状态">
<el-select
v-model="queryParams.isUpdate"
clearable
placeholder="请选择"
>
<el-option
v-for="item in isUpdateList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button size="mini" type="primary" icon="el-icon-set-up" @click="handleOTAUpdate">批量升级</el-button>
<el-button
size="mini"
type="primary"
icon="el-icon-set-up"
@click="handleOTAUpdate"
>批量升级</el-button
>
</el-col>
<el-col :span="1.5">
<el-button size="mini" type="info" icon="el-icon-set-up" @click="nodeOTAHistoryExport">导出升级记录</el-button>
<el-button
size="mini"
type="info"
icon="el-icon-set-up"
@click="nodeOTAHistoryExport"
>导出升级记录</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column align="center" type="selection" width="55">
</el-table-column>
<el-table-column align="center" prop="nodeName" label="节点名称">
@ -67,68 +160,129 @@
</el-table-column>
<el-table-column align="center" label="设备类型">
<template slot-scope="scope">
{{ scope.row.deviceType ? deviceTypeList.find(v=> v.value == scope.row.deviceType).label : '' }}
{{
scope.row.deviceType
? deviceTypeList.find(v => v.value == scope.row.deviceType)
.label
: ''
}}
</template>
</el-table-column>
<el-table-column align="center" prop="nowVersions" label="当前软件版本">
<el-table-column
align="center"
prop="nowVersions"
label="当前软件版本"
>
</el-table-column>
<el-table-column align="center" prop="version" label="可升级软件版本">
</el-table-column>
<el-table-column align="center" label="升级状态">
<template slot-scope="scope">
{{ scope.row.isUpdate == 0 ? '已' : '可' }}升级
</template>
</el-table-column>
<el-table-column align="center" label="上次升级时间">
<template slot-scope="scope">
{{ scope.row.onUpdateTime | formatDate }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button v-if="scope.row.deviceType != 'tt'" size="mini" type="text" @click="handleOneOTAUpdate(scope.row)">
<el-button
v-if="scope.row.deviceType != 'tt'"
size="mini"
type="text"
@click="handleOneOTAUpdate(scope.row)"
>
升级
</el-button>
<el-button size="mini" type="text" @click="showHistory(scope.row)">
<el-button
size="mini"
type="text"
@click="showHistory(scope.row)"
>
升级历史
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
<el-dialog title="节点升级历史" :visible.sync="nodeOTAHistoryDialog">
<el-table :data="nodeOTAHistoryData">
<el-table-column align="center" prop="deviceId" label="设备SN"></el-table-column>
<el-table-column align="center" prop="nodeId" label="节点SN"></el-table-column>
<el-table-column align="center" prop="newVersion" label="节点当前版本"></el-table-column>
<el-table-column align="center" prop="oldVersion" label="节点上次版本"></el-table-column>
<el-table-column align="center" prop="createTimeStr" label="升级时间"></el-table-column>
<el-table-column
align="center"
prop="deviceId"
label="设备SN"
></el-table-column>
<el-table-column
align="center"
prop="nodeId"
label="节点SN"
></el-table-column>
<el-table-column
align="center"
prop="newVersion"
label="节点当前版本"
></el-table-column>
<el-table-column
align="center"
prop="oldVersion"
label="节点上次版本"
></el-table-column>
<el-table-column
align="center"
prop="createTimeStr"
label="升级时间"
></el-table-column>
</el-table>
</el-dialog>
</section>
</template>
<script>
import Region from "@/components/Region";
import { list, OTAUpdate, OTAUpdates, getNodeOTAHistory, nodeOTAHistoryExport } from "@/api/firmware/firmwareupdate";
import { select as projectSelect } from "@/api/hardware/project";
import { select as productSelect } from "@/api/hardware/product";
import { productNodeList, productNodeSelect } from "@/api/hardware/productNode";
import { userSelect } from "@/api/system/user";
import Region from '@/components/Region';
import {
list,
OTAUpdate,
OTAUpdates,
getNodeOTAHistory,
nodeOTAHistoryExport
} from '@/api/firmware/firmwareupdate';
import { select as projectSelect } from '@/api/hardware/project';
import { select as productSelect } from '@/api/hardware/product';
import { productNodeList, productNodeSelect } from '@/api/hardware/productNode';
import { userSelect } from '@/api/system/user';
export default {
name: "FirmwareUpdate",
name: 'FirmwareUpdate',
components: {
Region,
Region
},
data () {
data() {
return {
showSearch: true,
queryProductSelectList: [],
queryNodeSelectList: [],
queryUserSelectList: [],
queryProjectSelectList: [],
isUpdateList: [
{ label: '已升级', value: 0 },
{ label: '可升级', value: 1 }
],
value: '',
options: '',
input: '',
@ -140,47 +294,48 @@ export default {
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
pageSize: 10
},
deviceTypeList: [
{ 'label': '锐能设备', 'value': 'rn', },
{ 'label': '铁塔设备', 'value': 'tt', },
{ label: '锐能设备', value: 'rn' },
{ label: '铁塔设备', value: 'tt' }
],
nodeOTAHistoryDialog: false,
nodeOTAHistoryData: [],
}
nodeOTAHistoryData: []
};
},
created () {
created() {
productSelect().then(({ code, msg, select }) => {
if (code == 200) {
this.queryProductSelectList = select;
} else {
this.$message.error(msg);
}
})
});
userSelect().then(({ code, msg, select }) => {
if (code == 200) {
this.queryUserSelectList = select;
} else {
this.$message.error(msg);
}
})
});
this.getList();
},
methods: {
nodeOTAHistoryExport () {
this.$confirm('是否确认导出所有节点升级记录?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function () {
return nodeOTAHistoryExport();
}).then(response => {
this.download(response.msg);
nodeOTAHistoryExport() {
this.$confirm('是否确认导出所有节点升级记录?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(function() {
return nodeOTAHistoryExport();
})
.then(response => {
this.download(response.msg);
});
},
showHistory ({ id }) {
showHistory({ id }) {
this.nodeOTAHistoryDialog = true;
getNodeOTAHistory({ id }).then(({ rows, msg, code }) => {
if (code == 200) {
@ -188,9 +343,9 @@ export default {
} else {
this.$message.error(msg);
}
})
});
},
queryProductIdChange (productId) {
queryProductIdChange(productId) {
delete this.queryParams.nodeId;
productNodeSelect({ productId }).then(({ code, msg, select }) => {
if (code == 200) {
@ -198,9 +353,9 @@ export default {
} else {
this.$message.error(msg);
}
})
});
},
queryUserIdChange (userId) {
queryUserIdChange(userId) {
delete this.queryParams.projectId;
projectSelect({ userId }).then(({ code, msg, select }) => {
if (code == 200) {
@ -208,93 +363,100 @@ export default {
} else {
this.$message.error(msg);
}
})
});
},
selectdRegionCode ({ code }) {
selectdRegionCode({ code }) {
this.queryParams.provinceCode = code;
this.handleQuery();
},
/** 搜索按钮操作 */
handleQuery () {
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
handleOneOTAUpdate ({ productId, nodeId, deviceId }) {
this.$confirm(`是否确认升级${deviceId}?`, "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.OTAUpdate([{ productId, nodeId, deviceId }])
}).catch((res) => { });
handleOneOTAUpdate({ productId, nodeId, deviceId }) {
this.$confirm(`是否确认升级${deviceId}?`, '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.OTAUpdate([{ productId, nodeId, deviceId }]);
})
.catch(res => {});
},
handleOTAUpdate () {
handleOTAUpdate() {
if (this.ids.length) {
let snap = this.ids.map(({ productId, nodeId, deviceId }) => {
return { productId, nodeId, deviceId }
return { productId, nodeId, deviceId };
});
const h = this.$createElement;
this.$confirm(`是否确认批量升级\r\n${snap.map(v => v.deviceId).join(',\r\n')}?`, "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.OTAUpdate(snap);
}).catch((res) => { });
this.$confirm(
`是否确认批量升级\r\n${snap.map(v => v.deviceId).join(',\r\n')}?`,
'警告',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
this.OTAUpdate(snap);
})
.catch(res => {});
} else {
let snap = Object.assign({}, this.queryParams);
delete snap.pageNum;
delete snap.pageSize;
this.$confirm(`是否确认批量升级?`, "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.OTAUpdates(snap);
}).catch((res) => { });
this.$confirm(`是否确认批量升级?`, '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.OTAUpdates(snap);
})
.catch(res => {});
}
},
OTAUpdate (device) {
OTAUpdate(device) {
OTAUpdate({ device }).then(({ code, msg }) => {
if (200 == code) {
this.msgSuccess(msg)
this.msgSuccess(msg);
} else {
this.msgError(msg)
this.msgError(msg);
}
})
});
},
OTAUpdates (deviceNode) {
OTAUpdates(deviceNode) {
OTAUpdates(deviceNode).then(({ code, msg }) => {
if (200 == code) {
this.msgSuccess(msg)
this.msgSuccess(msg);
} else {
this.msgError(msg)
this.msgError(msg);
}
})
});
},
resetQuery () {
resetQuery() {
this.queryParams = { pageNum: 1, pageSize: 10 };
this.resetForm("queryForm");
this.resetForm('queryForm');
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange (selection) {
console.log(selection)
handleSelectionChange(selection) {
console.log(selection);
this.ids = selection;
},
getList () {
list(this.queryParams).then((response) => {
getList() {
list(this.queryParams).then(response => {
this.tableData = response.rows;
this.total = response.total;
});
},
handleUpdate () { },
handleUpdate() {}
}
}
};
</script>
<style>
</style>
<style></style>

View File

@ -30,7 +30,7 @@
<span>创建时间{{ info.createTime | formatDate }}</span>
</el-col>
<el-col :offset="1" :span="15">
<el-scrollbar style="height: 550px;" wrap-class="scrollbar-wrapper">
<el-scrollbar style="height: 810px;" wrap-class="scrollbar-wrapper">
<div v-for="v in signal" :key="v.id" class="row_div">
<el-row
type="flex"