统计查询(集群)切换摄像机搜索节点信息,首页添加修改密码,轮询搜索集群节点信息
5个文件已修改
132 ■■■■ 已修改文件
src/Pool/TreeData.ts 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/serfDiagram/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/desktop/index/components/Tools.vue 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/desktop/index/components/ToolsEntry.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/settings/components/ClusterManagement.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
src/components/serfDiagram/index.vue
@@ -53,11 +53,10 @@
          name: v.nodeName,
          svgSym: RoleIcon[v.role],
          _color:
            this.agent === v.nodeName
              ? "red"
              : v.role === "master"
              v.role === "master"
                ? "orange"
                : ""
        });
      });
src/pages/desktop/index/components/Tools.vue
@@ -12,7 +12,12 @@
      </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"/>
@@ -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() {
    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() {
    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;
@@ -91,6 +155,32 @@
  
  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(
@@ -144,6 +234,7 @@
    },
    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;
@@ -255,7 +347,6 @@
  vertical-align: top;
  line-height: 56px;
  padding: 0 15px;
}
.tools-icon img{
  -webkit-user-drag: none;
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) {
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;
          });