From 3b536106bb5bec0590338fa2484c118086272351 Mon Sep 17 00:00:00 2001
From: hanbaoshan <hanbaoshan@aiotlink.com>
Date: 星期一, 19 十月 2020 10:18:56 +0800
Subject: [PATCH] 统计查询(集群)切换摄像机搜索节点信息,首页添加修改密码,轮询搜索集群节点信息
---
src/pages/settings/components/ClusterManagement.vue | 10 +++
src/pages/desktop/index/components/ToolsEntry.vue | 1
src/pages/desktop/index/components/Tools.vue | 135 +++++++++++++++++++++++++++++++++++++-------
src/Pool/TreeData.ts | 7 +
src/components/serfDiagram/index.vue | 7 +-
5 files changed, 130 insertions(+), 30 deletions(-)
diff --git a/src/Pool/TreeData.ts b/src/Pool/TreeData.ts
index ee52310..2008d98 100644
--- a/src/Pool/TreeData.ts
+++ b/src/Pool/TreeData.ts
@@ -111,7 +111,6 @@
this.selectedNodes = [this.selectedNode.id];
return;
}
-
let _selected = this.selectedNodes;
function nodeFilter(node: any) {
if (node.type === "4" && node.selected) {
@@ -130,6 +129,11 @@
}
if (this.selectedNode.cameraType === 1) {
this.gb28181Data.forEach((n: any) => {
+ nodeFilter(n);
+ });
+ }
+ if (this.selectedNode.cameraType === -1) {
+ this.clusterData.forEach((n: any) => {
nodeFilter(n);
});
}
@@ -310,7 +314,6 @@
}
async fetchClusterTree (){
- debugger
const rsp: any = await getClusterTree({
searchType: this.searchCamType,
cameraName: this.searchInput
diff --git a/src/components/serfDiagram/index.vue b/src/components/serfDiagram/index.vue
index 0f5b367..9a03442 100644
--- a/src/components/serfDiagram/index.vue
+++ b/src/components/serfDiagram/index.vue
@@ -52,12 +52,11 @@
id: i,
name: v.nodeName,
svgSym: RoleIcon[v.role],
- _color:
- this.agent === v.nodeName
- ? "red"
- : v.role === "master"
+ _color:
+ v.role === "master"
? "orange"
: ""
+
});
});
diff --git a/src/pages/desktop/index/components/Tools.vue b/src/pages/desktop/index/components/Tools.vue
index 8bc66e7..f968873 100644
--- a/src/pages/desktop/index/components/Tools.vue
+++ b/src/pages/desktop/index/components/Tools.vue
@@ -12,10 +12,15 @@
</div>
</div>
<div class="tools-middle">
- <div v-for="dock in $store.state.desktop.minDocks" :key="dock.id" class="dock-item-wrap" :class="{'actived':dock.highlight}" >
+ <div
+ v-for="dock in $store.state.desktop.minDocks"
+ :key="dock.id"
+ class="dock-item-wrap"
+ :class="{'actived':dock.highlight}"
+ >
<a @click="dockClick(dock)">
<img class="dock-item" :src="dock.src" :alt="dock.alt" />
- <img class="dock-shot" :src="dock.screenshot" v-if="dock.screenshot"/>
+ <img class="dock-shot" :src="dock.screenshot" v-if="dock.screenshot" />
<!-- <iframe class="dock-shot" :src="dock.url" ></iframe> -->
</a>
</div>
@@ -36,37 +41,96 @@
<img :src="`${publicPath}images/desktop/header-icon/user.png`" alt />
<!-- <i class="el-icon-arrow-down el-icon--right"></i> -->
</span>
- <el-dropdown-menu slot="dropdown" style='top: 44px;'>
- <el-dropdown-item @click.native='toLogout'>
- 閫�鍑虹櫥褰�
+ <el-dropdown-menu slot="dropdown" style="top: 44px;">
+ <el-dropdown-item style="text-align:left">
+ <b>Hi {{userInfo.username}}</b>
</el-dropdown-item>
+ <el-dropdown-item @click.native="showPasswdForm = true">淇敼瀵嗙爜</el-dropdown-item>
+ <el-dropdown-item @click.native="toLogout">閫�鍑虹櫥褰�</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
-
</div>
</div>
+ <el-dialog title="淇敼瀵嗙爜" :visible.sync="showPasswdForm" :append-to-body="true" width="500px">
+ <el-form :model="passwdForm" ref="ruleForm" :rules="rules" label-width="90px">
+ <el-form-item label="鏃у瘑鐮�" prop="oldPwd">
+ <el-input show-password v-model="passwdForm.oldPwd" autocomplete="off" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="鏂板瘑鐮�" prop="newPwd">
+ <el-input show-password v-model="passwdForm.newPwd" autocomplete="off" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="纭瀵嗙爜" prop="checkPwd">
+ <el-input show-password v-model="passwdForm.checkPwd" autocomplete="off" size="small"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="info" @click="showPasswdForm = false" size="small">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm('ruleForm')" size="small">纭� 瀹�</el-button>
+ </div>
+ </el-dialog>
</div>
</template>
<script>
import html2canvas from 'html2canvas';
-import {logout} from "@/api/login";
+import { logout,updatePwd } from "@/api/login";
export default {
name: "Tools",
- data() {
+ data () {
+ var validatePass = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('璇疯緭鍏ュ瘑鐮�'));
+ } else {
+ if (this.passwdForm.checkPwd !== '') {
+ this.$refs.ruleForm.validateField('checkPwd');
+ }
+ callback();
+ }
+ };
+ var validatePass2 = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('璇峰啀娆¤緭鍏ュ瘑鐮�'));
+ } else if (value !== this.passwdForm.newPwd) {
+ callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+ } else {
+ callback();
+ }
+ };
return {
publicPath: process.env.BASE_URL,
notificationCenterVisible: false,
notificationCenterMessageCount: 0,
maxOrder: 0,
- maxOrderOne: ''
+ maxOrderOne: '',
+ userInfo: {},
+ showPasswdForm: false,
+ rules:{
+ oldPwd: [
+ {required: true, message: '璇疯緭鍏ユ棫瀵嗙爜', trigger: 'blur'}
+ ],
+ newPwd: [
+ { required: true, validator: validatePass, trigger: 'blur' }
+ ],
+ checkPwd: [
+ { required: true, validator: validatePass2, trigger: 'blur' }
+ ]
+ },
+ passwdForm: {
+ oldPwd: "",
+ newPwd: "",
+ checkPwd: ""
+ },
+
};
},
- created() {
+ created () {
let _that = this;
+ this.userInfo = sessionStorage.getItem("userInfo") && JSON.parse(sessionStorage.getItem("userInfo"));
+ console.log(this.userInfo)
if (window.toolIntervalArr) {
window.toolIntervalArr.forEach(item => clearInterval(item));
}
+
window.toolIntervalArr = [
setInterval(function () {
_that.notificationCenterMessageCount += 1;
@@ -89,8 +153,34 @@
// }
// },
-
+
methods: {
+ submitForm(formName) {
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ let json = {
+ oldPwd: this.passwdForm.oldPwd,
+ newPwd: this.passwdForm.checkPwd
+ }
+ updatePwd(json).then(res=>{
+ console.log(res,'淇敼瀵嗙爜')
+ this.$notify({
+ type:res.success?'success':'error',
+ message:res.msg
+ })
+ if(res.success){
+ this.showPasswdForm = false
+ // this.$nextTick(_=>{
+ // this.toLogout('淇敼瀵嗙爜鎴愬姛锛岃閲嶆柊鐧诲綍锛�')
+ // })
+ }
+ })
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ });
+ },
notificationCenterClick: function () {
this.notificationCenterVisible = !this.notificationCenterVisible;
this.$store.commit(
@@ -108,7 +198,7 @@
);
},
- togglePreference() {
+ togglePreference () {
//this.$store.commit("desktop/togglePreference");
//鏄剧ず妗岄潰,鏈�灏忓寲宸叉墦寮�鐨勫簲鐢�
;
@@ -122,8 +212,8 @@
});
})
},
- dockClick(dock) {
-
+ dockClick (dock) {
+
if (dock.type === "1") {
window.open(dock.url);
} else if (dock.type === "2") {
@@ -139,11 +229,12 @@
this.$store.commit("desktop/refreshFrame", dock);
}
},
- toolHover(dock){
+ toolHover (dock) {
//this.$parent.screenShot(dock)
},
- toLogout(){
+ toLogout () {
+ let _this = this;
this.$confirm("鎻愮ず锛氱‘瀹氶��鍑哄悧锛�", {
center: true,
cancelButtonClass: "comfirm-class-cancle",
@@ -152,6 +243,7 @@
logout().then(res => {
if (res === "閫�鍑烘垚鍔�") {
sessionStorage.removeItem("userInfo");
+ _this.userInfo = {};
location.assign('/view/index');
this.$notify({
title: "鎻愮ず",
@@ -205,7 +297,7 @@
.tools .tools-middle::before {
width: 1px;
height: 20px;
- content: "";
+ content: '';
position: absolute;
top: 10px;
left: 0;
@@ -220,11 +312,11 @@
border-bottom: 2px solid transparent;
position: relative;
}
-.tools .tools-middle .dock-item-wrap:hover{
+.tools .tools-middle .dock-item-wrap:hover {
color: white;
background-color: #98aabe;
}
-.tools-middle .dock-item-wrap.actived{
+.tools-middle .dock-item-wrap.actived {
border-color: #40c3ff;
background-color: #98aabe;
}
@@ -255,9 +347,8 @@
vertical-align: top;
line-height: 56px;
padding: 0 15px;
-
}
-.tools-icon img{
+.tools-icon img {
-webkit-user-drag: none;
}
.tools .tools-icon:not(.no-hover-style):hover,
@@ -272,7 +363,7 @@
height: 100%;
margin-right: 14px;
}
-.el-dropdown-menu{
+.el-dropdown-menu {
top: 40px !important;
}
</style>
\ No newline at end of file
diff --git a/src/pages/desktop/index/components/ToolsEntry.vue b/src/pages/desktop/index/components/ToolsEntry.vue
index c622e64..8ffbfc7 100644
--- a/src/pages/desktop/index/components/ToolsEntry.vue
+++ b/src/pages/desktop/index/components/ToolsEntry.vue
@@ -61,7 +61,6 @@
},
methods: {
dockClick(dock) {
- debugger
if (dock.type === '1') {
window.open(dock.url);
} else if (dock.type === '2' && !dock.isOpen) {
diff --git a/src/pages/settings/components/ClusterManagement.vue b/src/pages/settings/components/ClusterManagement.vue
index f9aa80c..51173b1 100644
--- a/src/pages/settings/components/ClusterManagement.vue
+++ b/src/pages/settings/components/ClusterManagement.vue
@@ -288,11 +288,19 @@
agentName: "",
members: [],
innerNodes: [],
+ intervalTimer: null,
};
},
mounted() {
this.findCluster();
+ let _this = this;
+ this.intervalTimer = setInterval(()=>{
+ _this.findCluster();
+ },30000);
this.getEsClusterNodes();
+ },
+ beforeDestroy(){
+ clearInterval(this.intervalTimer);
},
methods: {
cleanValue() {
@@ -505,7 +513,7 @@
obj.node_ip = i.node_ip;
obj.nodeName = i.node_name;
obj.Address = i.node_ip;
- obj.role = i.role ? i.role : "pc";
+ obj.role = i.drift_state ? i.drift_state : "pc";
return obj;
});
--
Gitblit v1.8.0