修改视频联动问题及首页视频报警

main
jinna 3 years ago
parent eabb939ad2
commit edf7a8b669
  1. 45
      src/api/wirelessintrusion/wirelessintrusion.js
  2. 1
      src/page/index/index.vue
  3. 44
      src/views/components/h5Player/player.vue
  4. 108
      src/views/h5Player/player.vue
  5. 30
      src/views/wirelessintrusion/deployment/list.vue
  6. 644
      src/views/wirelessintrusion/oneClick/list.vue
  7. 80
      src/views/wirelessintrusion/warn/index.html

@ -70,7 +70,12 @@ export const cornJobList = (params) => {
};
//定时任务新增
export const cornJobSave = (data) => {
data.executeTime = data.executeTime + ":00";
if (data.isRegular == 1) {
console.log();
if (data.executeTime.length == 5) {
data.executeTime = data.executeTime + ":00";
}
}
return request({
url: "/api/cornJob/save",
method: "post",
@ -79,7 +84,25 @@ export const cornJobSave = (data) => {
};
//定时任务编辑
export const cornJobUpdate = (data) => {
data.executeTime = data.executeTime + ":00";
if (data.isRegular == 1) {
data.executeTime = data.executeTime + ":00";
}
return request({
url: "/api/cornJob/update",
method: "post",
data: data,
});
};
//任务新增
export const save = (data) => {
return request({
url: "/api/cornJob/save",
method: "post",
data: data,
});
};
//任务编辑
export const deviceUpdate = (data) => {
return request({
url: "/api/cornJob/update",
method: "post",
@ -220,3 +243,21 @@ export const getCameraCode = (params) => {
params: params,
});
};
// 进行布防
export const setUpDecive = (data) => {
return request({
url: "/api/appData/setup",
method: "post",
params: data,
});
};
// 进行撤防
export const closeDecive = (data) => {
return request({
url: "/api/appData/close",
method: "post",
params: data,
});
};

@ -187,6 +187,7 @@
getSocketData(res) {
console.log(res)
this.cameraCode = []
this.videoData = []
// this.times++;
let dom = document.querySelector('#play_audio')
// console.log('dom ===>',dom)

@ -348,22 +348,34 @@ export default {
queryLive() {
console.log("视频流查询", this.cameraList);
let playUrlList = [];
this.cameraList.map((code, index) => {
// console.log('code ===>',code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code)
queryLivePreview({ cameraIndexCode: code.code }).then((res) => {
console.log('res ====>',res)
if (res.data.code === 0 || res.data.code == 200) {
playUrlList.push({name:code.name ? code.name : '', code: code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code, url: res.data.data });
this.playUrlList = playUrlList;
this.realplay(index, res.data.data);
}
// else{
// playUrlList.push({name:code.name ? code.name : '', code: code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code, url: 'ws://171.16.8.60:559/openUrl/QKCBP32' });
// this.playUrlList = playUrlList;
// this.realplay(index, 'ws://171.16.8.60:559/openUrl/QKCBP32');
// }
});
});
console.log('player ====>',this.player)
this.player.JS_StopRealPlayAll().then(
() => {
console.info('停止播放成功====>,JS_StopRealPlayAll success');
// do you want...
this.cameraList.map((code, index) => {
// console.log('code ===>',code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code)
queryLivePreview({ cameraIndexCode: code.code }).then((res) => {
console.log('res ====>',res)
if (res.data.code === 0 || res.data.code == 200) {
playUrlList.push({name:code.name ? code.name : '', code: code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code, url: res.data.data });
this.playUrlList = playUrlList;
this.realplay(index, res.data.data);
}
// else{
// playUrlList.push({name:code.name ? code.name : '', code: code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code, url: 'ws://171.16.8.60:559/openUrl/QKCBP32' });
// this.playUrlList = playUrlList;
// this.realplay(index, 'ws://171.16.8.60:559/openUrl/QKCBP32');
// }
});
});
},
(err) => {
console.info('JS_StopRealPlayAll failed');
// do you want...
}
);
},
/* 回放 */

@ -80,6 +80,20 @@
>抓取BMP</el-button
>
</el-form-item>
<div>
<div>排序</div>
<div v-for="(item,index) in playUrlList" :key="index" style="display:flex;align-items:center;margin-bottom:20px">
<div>
摄像头名称:{{item.name}}
</div>
<div style="width:10%;margin-left:20px">
<el-input v-model="item.num" placeholder="序号"></el-input>
</div>
</div>
<el-button @click="orderBy">排序</el-button>
</div>
</el-form>
</div>
@ -146,7 +160,7 @@ export default {
},
created() {
// this.qrcodeData1 = this.$route.query.category
console.log('list ===============>',JSON.parse(this.$route.query.list), this.$route.query.showLeft)
// console.log('list ===============>',JSON.parse(this.$route.query.list), this.$route.query.showLeft)
// console.log('list ===>',this.list)
this.list = JSON.parse(this.$route.query.list);
this.showLeft = this.$route.query.showLeft
@ -156,13 +170,16 @@ export default {
this.list.map(item =>{
console.log('code ====>',JSON.parse(item.tags).cameraIndexCode)
if(JSON.parse(item.tags).cameraCode){
if(JSON.parse(item.tags).cameraCode.indexOf('-') != -1){
if(JSON.parse(item.tags).cameraCode.indexOf('-') > -1){
JSON.parse(item.tags).cameraCode.split('-').map(item1=>{
this.cameraList.push({name:item.name,code:item1})
})
}else{
this.cameraList.push({name:item.name,code:item.cameraCode})
}
}else{
this.cameraList.push({name:item.name,code:JSON.parse(item.tags).cameraIndexCode})
}
})
}else{
@ -174,10 +191,90 @@ export default {
setTimeout(() => {
this.init();
this.createPlayer();
// this.orderBy()
// this.arrangeWindow();
// let list = document.querySelector('.sub-wnd')
// let currentLi
// document.getElementsByClassName('sub-wnd').forEach((item,index) =>{
// item.setAttribute("draggable", true);
// })
// list.addEventListener('dragstart',(e)=>{
// e.dataTransfer.effectAllowed = 'move' // "move"
// currentLi = e.target
// currentLi.classList.add('moving')
// })
// list.addEventListener('dragenter',(e)=>{
// console.log('e===========>',e)
// e.preventDefault()
// if(e.target === currentLi||e.target === list){
// return
// }
// let liArray = Array.from(list.childNodes)
// let currentIndex = liArray.indexOf(currentLi)
// let targetindex = liArray.indexOf(e.target)
// if(currentIndex<targetindex){
// list.insertBefore(currentLi,e.target.nextElementSibling)
// }else{
// list.insertBefore(currentLi,e.target)
// }
// })
// list.addEventListener('dragover',(e)=>{
// e.preventDefault()
// })
// list.addEventListener('dragend',(e)=>{
// currentLi.classList.remove('moving')
// })
});
},
mounted(){
},
methods: {
isRepeat(arr, key) {
for (let i = 0; i < arr.length; i ++) {
for (let j = i + 1; j < arr.length; j ++) {
if (arr[i][key] == arr[j][key]) {
return true;
}
}
}
return false;
},
orderBy(){
if(this.isRepeat(this.playUrlList,'num')){
this.$message.error('顺序不能存在相同数')
}else{
console.log('split ===>',this.splitNum)
this.playUrlList = this.playUrlList.sort((a,b) => a.num - b.num)
console.log(this.playUrlList)
if(this.playUrlList[this.playUrlList.length - 1].num > this.splitNum * this.splitNum){
this.$message.error('顺序数不可大于当前窗口数')
}else{
this.player.JS_StopRealPlayAll().then(
() => {
console.info('停止播放成功====>,JS_StopRealPlayAll success');
// do you want...
this.playUrlList.map(item =>{
this.realplay(parseInt(item.num) - 1,item.url)
})
},
(err) => {
console.info('JS_StopRealPlayAll failed');
// do you want...
}
);
}
}
},
getYestDayOrNextDay() {
//
const today = new Date();
@ -360,12 +457,15 @@ export default {
queryLivePreview({ cameraIndexCode: code.code }).then((res) => {
console.log('res ====>',res)
if (res.data.code === 0 || res.data.code == 200) {
playUrlList.push({name:code.name ? code.name : '', code: code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code, url: res.data.data });
playUrlList.push({name:code.name ? code.name : '', code: code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code, url: res.data.data,num:parseInt(index) + 1 });
this.playUrlList = playUrlList;
this.realplay(index, res.data.data);
}
// else{
// playUrlList.push({name:code.name ? code.name : '', code: code.tags ? JSON.parse(code.tags).cameraIndexCode : code.code, url: 'ws://171.16.8.60:559/openUrl/QKCBP32' });
// playUrlList = [
// {name:'hk02', code: "748d84750e3a4a5bbad3cd4af9ed5101", url: 'ws://171.16.8.60:559/openUrl/QKCBP32',num:1 },
// {name:'hk01', code: "748d84750e3a4a5bbad3cd4af9ed5101", url: 'ws://171.16.8.60:559/openUrl/QKCBP31',num:2}
// ]
// this.playUrlList = playUrlList;
// this.realplay(index, 'ws://171.16.8.60:559/openUrl/QKCBP32');
// }

@ -1,4 +1,5 @@
<template>
<!-- 原来的定时布/撤防页面 -->
<basic-container>
<avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form"
:permission="permissionList" :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
@ -290,12 +291,13 @@ export default {
this.multipleSelection.forEach(ele => {
let tags = JSON.parse(ele.tags)
ids.push(ele.id);
deviceId.push(tags.sectorNo);
deviceId.push(tags.pmac);
hostSerialNumber.push(tags.hostNumber);
});
this.addForm.ids = ids.join(",");
this.addForm.deviceId = deviceId.join(",");
this.addForm.hostSerialNumber = hostSerialNumber.join(",");
this.addForm.isRegular = 1
}
this.submitLoading = true;
if (this.addForm.id > 0) {
@ -312,13 +314,19 @@ export default {
})
} else {
cornJobSave(this.addForm).then(res => {
this.submitLoading = false;
this.dialogVisible = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
if(res.data.code == 200){
this.submitLoading = false;
this.dialogVisible = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
}else if(res.data.code == 400){
this.submitLoading = false;
this.$message.error(res.data.msg)
}
}, () => {
this.submitLoading = false;
})
@ -421,7 +429,7 @@ export default {
...this.query
};
this.loading = true;
cornJobList({ current: page.currentPage, size: page.pageSize, ...values }).then(res => {
cornJobList({ current: page.currentPage, size: page.pageSize, ...values,isRegular:1 }).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
@ -442,7 +450,7 @@ export default {
if (token == 'undefined' || !token) {
bizLogin({ appKey: 'Arf7bd4f26', appSecret: 'kb207044c8' }).then(res => {
window.sessionStorage.setItem('bizToken', res.data.data.token);
bizDeviceList(res.data.data.token, { ...values, pageSize: page.pageSize, pageNum: page.currentPage }).then(res2 => {
bizDeviceList(res.data.data.token, { ...values, pageSize: page.pageSize, pageNum: page.currentPage,'params[type]':3 }).then(res2 => {
const data = res2.data;
this.diaPage.total = data.total;
data.rows.map(item => {
@ -468,7 +476,7 @@ export default {
});
})
} else {
bizDeviceList(token, { ...values, pageSize: page.pageSize, pageNum: page.currentPage, pid: 100 }).then(res2 => {
bizDeviceList(token, { ...values, pageSize: page.pageSize, pageNum: page.currentPage, pid: 100,'params[type]':3 }).then(res2 => {
if (res2.data.code == 401) {
window.sessionStorage.removeItem('bizToken');
this.queryDeviceList();

@ -0,0 +1,644 @@
<template>
<!-- 新增的一键布/撤防页面 -->
<basic-container>
<avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" v-model="form"
:permission="permissionList" :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad" :selecttable="selectable1">
<template slot="menuLeft">
<el-button type="primary" icon="el-icon-plus" size="small" @click="handleAdd">
</el-button>
<el-button type="danger" icon="el-icon-delete" size="small" plain @click="handleDelete">
</el-button>
</template>
<template slot-scope="{row}" slot="status">
<el-tag type="danger" v-show="row.status == 0">关闭</el-tag>
<el-tag type="success" v-show="row.status == 1">开启</el-tag>
</template>
<template #menu="{ size, row, index }">
<el-button type="text" icon="el-icon-view" size="small" @click="handleDetail(row, index)">详情</el-button>
<el-button type="text" icon="el-icon-edit" size="small" @click="handleEdit(row, index)">编辑</el-button>
<el-button type="text" icon="el-icon-delete" size="small" v-show="row.status == 1 && row.type == 1" @click="handleSetup(row, index)">布防</el-button>
<el-button type="text" icon="el-icon-delete" size="small" v-show="row.status == 1 && row.type == 2" @click="handleClose(row, index)">撤防</el-button>
<el-button type="text" icon="el-icon-delete" size="small" @click="handleDeleteRow(row, index)">删除</el-button>
<!-- <el-button type="text" icon="el-icon-view" size="small" v-show="row.status == 1" @click="handleDetail(row, index)">停用</el-button>
<el-button type="text" icon="el-icon-edit" size="small" v-show="row.status == 0" @click="handleEdit(row, index)">启用</el-button> -->
</template>
</avue-crud>
<el-dialog title="布/撤防设置" :visible.sync="dialogVisible" v-if="dialogVisible" :append-to-body="true"
:close-on-click-modal="false" :close-on-press-escape="false" custom-class="dia_box" width="950px">
<el-form :model="addForm" ref="addform" :rules="addRules" label-width="100px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="任务标题:" prop="taskTitle">
<el-input v-model="addForm.taskTitle" placeholder="请输入任务标题" :disabled="isDetail ? true : false"
maxlength="30" clearable>
</el-input>
</el-form-item>
<!-- <el-form-item label="任务时间:" prop="executeTime">
<el-time-picker v-model="addForm.executeTime" placeholder="请选择任务时间" :disabled="isDetail ? true : false"
value-format="HH:mm" format="HH:mm" style="width:100%;">
</el-time-picker>
</el-form-item> -->
<el-form-item label="是否启用:" prop="status">
<el-switch v-model="addForm.status" active-value="1" inactive-value="0" :disabled="isDetail ? true : false">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务类型:" prop="type">
<el-radio-group v-model="addForm.type" :disabled="isDetail ? true : false">
<el-radio :label="1">布防</el-radio>
<el-radio :label="2">撤防</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="选择设备:">
<el-table class="table_box" ref="multipleTable" row-key="id" :data="tableData" tooltip-effect="dark"
style="width: 100%" @selection-change="handleSelectionChange" size="small">
<el-table-column type="selection" width="55" align="center" reserve-selection :selectable="selectable">
</el-table-column>
<el-table-column prop="name" label="设备名称">
<template slot-scope="scope">
{{ scope.row.name }}/{{ scope.row.remark }}
</template>
</el-table-column>
<el-table-column prop="productName" label="设备所属产品">
</el-table-column>
<el-table-column prop="nodeLabel" label="节点类型">
</el-table-column>
<el-table-column prop="gateway" label="网关信息">
</el-table-column>
<el-table-column prop="statusLabel" label="设备状态">
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160px">
</el-table-column>
</el-table>
<div class="page_box">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page="diaPage.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="diaPage.pageSize" background
layout="total, sizes, prev, pager, next, jumper" :total="diaPage.total">
</el-pagination>
</div>
</el-form-item>
<el-form-item label="任务描述:" prop="taskDescribe">
<el-input type="textarea" v-model="addForm.taskDescribe" placeholder="请输入任务描述"
:disabled="isDetail ? true : false" maxlength="200" show-word-limit>
</el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submitForm" v-if="!isDetail"> </el-button>
</div>
</el-dialog>
</basic-container>
</template>
<script>
import { mapGetters } from "vuex";
import { bizLogin, bizDeviceList, bizDeviceStatus, bizNodeType, cornJobList, cornJobSave, cornJobUpdate, cornJobRemove,setUpDecive,closeDecive } from "@/api/wirelessintrusion/wirelessintrusion";
export default {
data() {
return {
form: {},
query: {},
dialogVisible: false,
loading: true,
page: {
pageSize: 10,
currentPage: 1,
total: 0
},
diaPage: {
pageSize: 10,
currentPage: 1,
total: 10,
},
addForm: {},
addRules: {
taskTitle: [
{ required: true, message: "请输入任务标题", trigger: "blur,change" },
],
// executeTime: [
// { required: true, message: "", trigger: "change" },
// ],
},
selectionList: [],
option: {
height: 'auto',
menuWidth: 200,
calcHeight: 30,
dialogWidth: 950,
tip: false,
searchShow: true,
searchMenuSpan: 6,
searchLabelWidth: 100,
border: true,
addBtn: false,
viewBtn: false,
editBtn: false,
delBtn: false,
selection: true,
excelBtn: false,
dialogClickModal: false,
column: [
// {
// label: "",
// prop: "deviceId",
// overHidden: true,
// },
{
label: "模板名称",
prop: "taskTitle",
minWidth: 200,
overHidden: true,
},
{
label: "模板说明",
prop: "taskDescribe",
minWidth: 200,
overHidden: true,
},
// {
// label: "/",
// prop: "executeTime",
// addDisplay: false,
// editDisplay: false,
// viewDisplay: false,
// formatter: (data) => {
// let time = data.executeTime.split(":");
// return time[0] + ':' + time[1];
// }
// },
{
label: "任务类型",
type: "select",
prop: "type",
dicData: [
{ value: 1, label: '布防' }, { value: 2, label: '撤防' }
],
search: true,
// hide: true
},
{
label: "模板状态",
prop: "status",
align: "center",
slot: true,
},
{
label: "创建时间",
prop: "createTime",
align: "center",
width: 150
},
]
},
tableData: [],
data: [],
multipleSelection: [],
isDetail: false
};
},
computed: {
...mapGetters(["permission"]),
permissionList() {
return {
addBtn: this.vaildData(this.permission.notice_add, false),
viewBtn: this.vaildData(this.permission.notice_view, false),
delBtn: this.vaildData(this.permission.notice_delete, false),
editBtn: this.vaildData(this.permission.notice_edit, false)
};
},
},
mounted() {
this.loadDict();
},
methods: {
//
loadDict() {
let token = window.sessionStorage.getItem('bizToken');
if (token == 'undefined' || !token) {
bizLogin({ appKey: 'Arf7bd4f26', appSecret: 'kb207044c8' }).then(res => {
window.sessionStorage.setItem('bizToken', res.data.data.token);
bizDeviceStatus(res.data.data.token).then(res => {
this.bizDeviceStatus = res.data.data;
})
bizNodeType(res.data.data.token).then(res => {
this.bizNodeType = res.data.data;
})
})
} else {
bizDeviceStatus(token).then(res => {
if (res.data.code == 401) {
window.sessionStorage.removeItem('bizToken');
this.loadDict();
}
else if (res.data.code == 200) {
this.bizDeviceStatus = res.data.data;
}
})
bizNodeType(token).then(res => {
this.bizNodeType = res.data.data;
})
}
},
//
renderLabel(node, col) {
const dicData = this[col];
let idx = dicData.findIndex(item => item.dictValue == node);
return idx > -1 ? dicData[idx].dictLabel : '';
},
//
selectable() {
return this.isDetail ? false : true;
},
//
selectable1(row, index) {
return row.status == 1 ? false : true;
},
//
handleAdd() {
this.addForm = {
taskTitle: '',
taskDescribe: '',
type: 1,
ids: '',
deviceId: '',
status: '1'
}
this.multipleSelection = [];
this.dialogVisible = true;
this.isDetail = false;
this.diaPage.currentPage = 1;
this.$nextTick(() => {
this.$refs.multipleTable.clearSelection();
this.queryDeviceList(this.diaPage);
})
},
//
handleSelectionChange(val) {
this.multipleSelection = val;
},
//
submitForm() {
this.$refs.addform.validate((valid) => {
if (valid) {
if (this.multipleSelection.length === 0 && this.addForm.deviceId == '') {
this.$message({
type: "warning",
message: "请选择关联设备"
})
return;
}
if (this.multipleSelection.length > 0) {
let ids = [], deviceId = [], hostSerialNumber = [];
this.multipleSelection.forEach(ele => {
let tags = JSON.parse(ele.tags)
ids.push(ele.id);
deviceId.push(tags.pmac);
hostSerialNumber.push(tags.hostNumber);
});
this.addForm.ids = ids.join(",");
this.addForm.deviceId = deviceId.join(",");
this.addForm.hostSerialNumber = hostSerialNumber.join(",");
this.addForm.isRegular = 0
}
this.submitLoading = true;
console.log('addForm ===>',this.addForm)
if (this.addForm.id > 0) {
cornJobUpdate(this.addForm).then((res) => {
this.submitLoading = false;
this.dialogVisible = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
}, () => {
this.submitLoading = false;
})
} else {
cornJobSave(this.addForm).then(res => {
console.log('res ====>',res)
if(res.data.code == 200){
this.submitLoading = false;
this.dialogVisible = false;
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
}else if(res.data.code == 400){
this.submitLoading = false;
this.$message.error(res.data.msg)
}
}, () => {
this.submitLoading = false;
})
}
}
})
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
console.log(list)
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
//
handleDetail(row) {
row.status = row.status + '';
this.addForm = row;
this.dialogVisible = true;
this.isDetail = true;
console.log('diaPage ====>',this.diaPage)
this.$nextTick(() => {
this.queryDeviceList(this.diaPage);
})
},
//
handleEdit(row, index) {
row.status = row.status + '';
// let time = row.executeTime.split(":");
// row.executeTime = time[0] + ':' + time[1];
this.addForm = JSON.parse(JSON.stringify(row)) ;
this.dialogVisible = true;
this.isDetail = false;
this.$nextTick(() => {
this.$refs.multipleTable.clearSelection();
this.queryDeviceList(this.diaPage);
})
},
handleDelete() {
if (this.selectionList.length === 0) {
this.$message.warning("请选择至少一条数据");
return;
}
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return cornJobRemove({ ids: this.ids.join(",") });
})
.then(() => {
this.onLoad(this.page);
this.selectionClear();
this.$message({
type: "success",
message: "操作成功!"
});
});
},
handleSetup(row){
let arr = []
if(row.deviceId.indexOf(',') > -1){
row.deviceId.split(',').map(item =>{
arr.push(item)
})
}else{
arr.push(row.deviceId.substr(-1))
}
console.log('arr =========>',arr.join(','))
this.$confirm("确定进行布防吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() =>{
setUpDecive({hostSerialNumber:row.hostSerialNumber,num:arr.join(',')}).then(res =>{
if(res.data.code == 200){
this.$message.success('布防成功');
this.onLoad(this.page);
}else{
this.$message.error('布防失败')
}
})
})
},
//
handleClose(row){
let arr = []
if(row.deviceId.indexOf(',') > -1){
row.deviceId.split(',').map(item =>{
arr.push(item)
})
}else{
arr.push(row.deviceId.substr(-1))
}
console.log('arr =========>',arr.join(','))
this.$confirm("确定进行撤防吗?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() =>{
closeDecive({hostSerialNumber:row.hostSerialNumber,num:arr.join(',')}).then(res =>{
if(res.data.code == 200){
this.$message.success('撤防成功');
this.onLoad(this.page);
}else{
this.$message.error('撤防失败')
}
})
})
},
handleDeleteRow(row) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
return cornJobRemove({ ids: row.id });
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: "success",
message: "操作成功!"
});
});
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
let values = {
...params,
...this.query
};
this.loading = true;
cornJobList({ current: page.currentPage, size: page.pageSize, ...values,isRegular:0 }).then(res => {
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();
}, err => {
this.loading = false;
this.selectionClear();
});
},
//
queryDeviceList(page, params = {}) {
let values = {
...params,
pid: 100
};
let token = window.sessionStorage.getItem('bizToken');
if (token == 'undefined' || !token) {
bizLogin({ appKey: 'Arf7bd4f26', appSecret: 'kb207044c8' }).then(res => {
window.sessionStorage.setItem('bizToken', res.data.data.token);
bizDeviceList(res.data.data.token, { ...values, pageSize: page.pageSize, pageNum: page.currentPage,'params[type]':3}).then(res2 => {
const data = res2.data;
this.diaPage.total = data.total;
data.rows.map(item => {
item.node = item.bizProduct.node;
item.nodeLabel = this.renderLabel(item.node, 'bizNodeType');
item.statusLabel = this.renderLabel(item.status, 'bizDeviceStatus')
item.productName = item.bizProduct.name;
})
this.tableData = data.records;
let multipleSelection = this.addForm.ids ? this.addForm.ids.split(",") : [];
if (multipleSelection.length > 0) { //
this.$nextTick(() => {
this.tableData.forEach(row => { //
multipleSelection.forEach(item => { //
if (row.id === parseInt(item)) {
this.$refs.multipleTable.toggleRowSelection(row, true); //
}
});
})
})
}
});
})
} else {
bizDeviceList(token, { ...values, pageSize: page.pageSize, pageNum: page.currentPage, pid: 100,'params[type]':3 }).then(res2 => {
if (res2.data.code == 401) {
window.sessionStorage.removeItem('bizToken');
this.queryDeviceList();
}
else if (res2.data.code == 200) {
const data = res2.data;
this.diaPage.total = data.total;
data.rows.map(item => {
item.node = item.bizProduct.node;
item.nodeLabel = this.renderLabel(item.node, 'bizNodeType');
item.statusLabel = this.renderLabel(item.status, 'bizDeviceStatus')
item.productName = item.bizProduct.name;
})
this.tableData = data.rows;
let multipleSelection = this.addForm.ids ? this.addForm.ids.split(",") : [];
if (multipleSelection.length > 0) { //
this.$nextTick(() => {
this.tableData.forEach(row => { //
multipleSelection.forEach(item => { //
if (row.id === parseInt(item)) {
this.$refs.multipleTable.toggleRowSelection(row, true); //
}
});
})
})
}
}
}, err => {
});
}
}
}
};
</script>
<style lang="scss" scoped>
::v-deep .cancel_item {
background: url('~@/assets/image/cancel_iten.png') center no-repeat; // url
font-size: 12px;
background-size: cover;
}
::v-deep .cancel_item:before {
content: "替";
font-size: 12px;
visibility: hidden;
}
::v-deep .add_item {
background: url('~@/assets/image/add.png') center no-repeat; // url
font-size: 12px;
background-size: cover;
}
::v-deep .add_item:before {
content: "替";
font-size: 12px;
visibility: hidden;
}
.table_box {
th.el-table__cell {
background: #F7F8FA;
}
}
.dia_box {
height: 700px;
overflow: auto;
.el-table {
width: 100% !important;
border: 1px solid #D6D8DF;
}
.el-table th.el-table__cell {
background: #F7F8FA;
}
.dialog-footer {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.page_box {
width: 90%;
margin-left: 9%;
display: flex;
align-items: center;
justify-content: center;
margin-top: 15px;
}
}
</style>

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
ul{
margin: 200px auto;
width: 200px;
list-style-type: none;
}
li{
margin: 5px;
text-align: center;
width: 200px;
height: 30px;
background: skyblue;
}
.list .moving{
background: transparent;
color: transparent;
border: 1px dashed #ccc;
}
</style>
</head>
<body>
<ul class="list">
<li draggable="true">1</li>
<li draggable="true">2</li>
<li draggable="true">3</li>
<li draggable="true">4</li>
<li draggable="true">5</li>
</ul>
<script>
let list = document.querySelector('.list')
let currentLi
list.addEventListener('dragstart',(e)=>{
e.dataTransfer.effectAllowed = 'move'
currentLi = e.target
setTimeout(()=>{
currentLi.classList.add('moving')
})
})
list.addEventListener('dragenter',(e)=>{
console.log('e===========>',e)
e.preventDefault()
if(e.target === currentLi||e.target === list){
return
}
let liArray = Array.from(list.childNodes)
let currentIndex = liArray.indexOf(currentLi)
let targetindex = liArray.indexOf(e.target)
if(currentIndex<targetindex){
list.insertBefore(currentLi,e.target.nextElementSibling)
}else{
list.insertBefore(currentLi,e.target)
}
})
list.addEventListener('dragover',(e)=>{
e.preventDefault()
})
list.addEventListener('dragend',(e)=>{
currentLi.classList.remove('moving')
})
</script>
</body>
</html>
Loading…
Cancel
Save