whychdw
2021-12-31 1df4b11a9a3648e2961282c7f490a6421da27f88
内容修改
6个文件已修改
266 ■■■■■ 已修改文件
src/assets/js/api.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/apis/dischargeTest/ld9.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/config.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/login.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/pageSetting/realTime.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/userMager/userInfo.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/api.js
@@ -35,6 +35,35 @@
};
/**
 * 根据手机号获取动态口令
 * @param num   手机号
 * @returns {AxiosPromise}
 */
export const getVerifyCode = (num) =>{
    return axios({
        method: "post",
        url: "MessageAction!getDynamicPassword",
        data: "json="+num
    });
}
/**
 * 使用手机号登录
 * @param num
 * @param code
 * @returns {AxiosPromise}
 */
export const phoneVerifyCodeLogin = (num, code) => {
    return axios({
        method: "post",
        url: "MessageAction!validateDynamicPassword",
        data: "json="+JSON.stringify({
            UMobilephone: num,
            UNote: code
        })
    });
}
/**
 * 检测后台session
 * 无参
 */
src/assets/js/apis/dischargeTest/ld9.js
@@ -42,4 +42,16 @@
      data: 'json=' + JSON.stringify(data),
    });
  },
  /**
   * 发送指令停止
   * LD9_setparamAction_ld9action_serchbyDev_id
   */
  stop(data) {
    return axios({
      method: 'post',
      url: 'LD9_setparamAction_ld9action_serchbyDev_id',
      data: 'json=' + JSON.stringify(data),
    });
  }
}
src/assets/js/config.js
@@ -51,4 +51,9 @@
        des: '登录是否启用验证码',
        value: false,
    },
    messageCode: {
        label: '短信验证码',
        des: '登录是否启用短信验证码',
        value: false,
    }
};
src/pages/login.vue
@@ -9,13 +9,22 @@
        <img src="../assets/images/login-img.png" class="picImg" />
      </div>
      <div class="login_box">
        <div class="title">用户登录</div>
        <div class="login-tools">
          <el-tooltip
              effect="dark"
              :content="loginType.text"
              placement="top">
            <i v-if="showPhoneLogin" :class="loginType.icon" @click="showPsdLogin"></i>
          </el-tooltip>
        </div>
        <div class="title">{{ loginType.title }}</div>
        <!--  登录表单区 -->
        <el-form
          label-width="0px"
          class="login_from"
          :model="loginForm"
          ref="loginFormRef"
          v-if="psdLogin"
        >
          <!-- 用户名 -->
          <el-form-item prop="username">
@@ -58,6 +67,46 @@
          <el-form-item v-if="!register">
            <a href="javascript:;" @click="license.show = true" class="regBtn"
              >平台注册</a
            >
          </el-form-item>
          <el-form-item v-else>
            <a href="javascript:;" class="regBtn">已激活</a>
          </el-form-item>
        </el-form>
        <el-form
            label-width="0px"
            class="login_from"
            :model="loginForm"
            v-else>
          <!-- 手机号 -->
          <el-form-item>
            <el-input
              class="input"
              v-model="phoneInfo.phoneNum"
              prefix-icon="el-icon-phone">
            </el-input>
          </el-form-item>
          <div class="flex-row">
            <div class="flex-content">
              <!-- 验证码 -->
              <el-form-item>
                <el-input v-model="phoneInfo.code"></el-input>
              </el-form-item>
            </div>
            <div class="flex-footer">
              <el-button type="primary" @click="getVerifyCode" :disabled="codeBtn.disabled">{{codeBtn.text}}</el-button>
            </div>
          </div>
          <el-form-item class="btns">
            <el-button
              :loading="loading"
              type="primary"
              class="loginBtn"
              @click="phoneVerifyCodeLogin">登录</el-button>
          </el-form-item>
          <el-form-item v-if="!register">
            <a href="javascript:;" @click="license.show = true" class="regBtn"
            >平台注册</a
            >
          </el-form-item>
          <el-form-item v-else>
@@ -173,7 +222,7 @@
  checkLoginSession,
  uKeyLogin,
  getRandomFromServer,
  loginSignVerity,
  loginSignVerity, phoneVerifyCodeLogin,
} from "@/assets/js/api";
import ConfigInfo from "@/pages/configInfo";
import UkeyBind from "@/components/UKeyBind";
@@ -189,6 +238,10 @@
import randomString from "@/assets/js/tools/randomString";
import pwdChange from "@/components/PwdChange";
import const_user from "@/assets/js/const/const_user";
import {
  getVerifyCode
} from "@/assets/js/api";
import {formatSeconds} from "@/assets/js/tools";
export default {
  components: {
@@ -200,6 +253,7 @@
    pwdChange,
  },
  data() {
    let readSeconds = Number(sessionStorage.getItem("readSeconds"));
    return {
      sysConfig: sysConfig,
      register: false,
@@ -237,7 +291,15 @@
        show: false,
      },
      userType: const_user.type,
      userStatus: const_user.status
      userStatus: const_user.status,
      showPhoneLogin: platform.messageCode.value,
      psdLogin: true,
      phoneInfo: {
        phoneNum: "",
        code: ""
      },
      readSeconds: readSeconds?readSeconds:0,
      codeBtnLoading: false,
    };
  },
  created() {
@@ -358,13 +420,68 @@
        this.$message.error("用户名或密码不能为空");
      }
    },
    handleLogin(res) {
    getVerifyCode() {
      let num = this.phoneInfo.phoneNum;
      if (!this.register && process.env.NODE_ENV != "dev") {
        this.$layer.msg("平台未注册,请先注册平台!");
        return;
      }
      if(num.trim() == "") {
        this.$message.error("手机号不能为空");
        return;
      }
      this.codeBtnLoading = true;
      getVerifyCode(num).then(res=>{
        let rs = JSON.parse(res.data.result);
        this.codeBtnLoading = false;
        if(rs.code==1) {
          this.$message.success("发送成功!");
          this.readSeconds = 360;
          this.startReadSeconds();
        }else {
          this.$message.error(rs.msg);
        }
      }).catch(error=>{
        this.codeBtnLoading = false;
        console.log(error);
      });
    },
    phoneVerifyCodeLogin() {
      let num = this.phoneInfo.phoneNum;
      let code = this.phoneInfo.code;
      if (!this.register && process.env.NODE_ENV != "dev") {
        this.$layer.msg("平台未注册,请先注册平台!");
        return;
      }
      if(num.trim() == "") {
        this.$message.error("手机号不能为空");
        return;
      }
      if(code.trim() == "") {
        this.$message.error("验证码不能为空");
        return;
      }
      this.loading = true;
      phoneVerifyCodeLogin(num, code).then(res=>{
        this.handleLogin(res, true)
      }).catch(error => {
        // 关闭等待
        this.loading = false;
        console.log(error);
        this.$message.error("网络异常");
      });
    },
    handleLogin(res, phoneLogin) {
      // 关闭等待
      this.loading = false;
      let rs = JSON.parse(res.data.result);
      if (rs.code == 1) {
        this.$message.success("登录成功");
        sessionStorage.setItem("username", this.loginForm.username);
        if(phoneLogin) {
          sessionStorage.setItem("username", rs.msgN);
        }else {
          sessionStorage.setItem("username", this.loginForm.username);
        }
        sessionStorage.setItem("userId", rs.data);
        sessionStorage.setItem("userPower", rs.data2);
        // 自动登录无法返回登录页
@@ -481,6 +598,9 @@
      // 初始化登录状态
      sessionStorage.setItem("username", "");
      this.checkServeLicense();
      if(this.readSeconds > 0) {
        this.startReadSeconds();
      }
      // 初始化置动
      this.$store.dispatch("user/changeAutoLogin", 0);
@@ -489,6 +609,20 @@
    changeVerifyCode() {
      this.verifyCode = randomString(4);
      this.loginForm.verify = "";
    },
    showPsdLogin() {
      this.psdLogin = this.psdLogin?false:true;
    },
    startReadSeconds() {
      let timer = "";
      timer = setInterval(()=>{
        if(this.readSeconds == 0) {
          clearInterval(timer);
        }else {
          this.readSeconds--;
          sessionStorage.setItem("readSeconds", this.readSeconds);
        }
      }, 1000);
    }
  },
  computed: {
@@ -544,6 +678,35 @@
      }
      return image;
    },
    loginType() {
      if(this.psdLogin) {
        return {
          text: "手机号登录",
          title: "账号密码登录",
          icon: "el-icon-mobile-phone"
        }
      }else {
        return {
          text: "账号密码登录",
          title: "手机号登录",
          icon: "el-icon-lock"
        }
      }
    },
    codeBtn() {
      let seconds = this.readSeconds;
      if(seconds<=0) {
        return {
          text: "获取验证码",
          disabled: false
        }
      }else {
        return {
          text: formatSeconds(seconds),
          disabled: true,
        }
      }
    }
  },
  mounted() {
    let autoLogin = this.$route.query.autoLogin;
@@ -584,6 +747,7 @@
  width: 100%;
  height: 100%;
}
/* 登录大盒子背景 */
.login_container {
  width: 100%;
@@ -688,6 +852,23 @@
  }
}
.login-tools {
  position: absolute;
  top: 25px;
  right: 16px;
  font-size: 26px;
  z-index: 999;
}
.el-icon-mobile-phone,
.el-icon-lock {
  color: #0b388a;
}
.el-icon-mobile-phone:hover,
.el-icon-lock:hover {
  cursor: pointer;
  color: #ff0000;
}
/* 登录按钮 */
.btns {
  text-align: center;
@@ -730,4 +911,14 @@
  z-index: 999;
  font-size: 12px;
}
.flex-row {
  display: flex;
  flex-direction: row;
}
.flex-row .flex-content {
  flex: 1;
}
.flex-row .flex-footer {
  margin-left: 8px;
}
</style>
src/pages/pageSetting/realTime.vue
@@ -37,19 +37,19 @@
            <el-tab-pane label="平台名称">
              <platform-name></platform-name>
            </el-tab-pane>
            <el-tab-pane label="扫描策略">
            <el-tab-pane label="扫描策略" v-if="isSystemAdmin">
              <scan-strategy></scan-strategy>
            </el-tab-pane>
            <el-tab-pane label="限制/锁定">
            <el-tab-pane label="限制/锁定" v-if="isSystemAdmin">
              <limit-lock></limit-lock>
            </el-tab-pane>
            <el-tab-pane label="访问时间限制">
            <el-tab-pane label="访问时间限制" v-if="isSystemAdmin">
              <time-limit></time-limit>
            </el-tab-pane>
            <el-tab-pane label="IP白名单">
            <el-tab-pane label="IP白名单" v-if="isSystemAdmin">
              <ip-limit></ip-limit>
            </el-tab-pane>
            <el-tab-pane label="导航配置审批">
            <el-tab-pane label="导航配置审批" v-if="isSystemAdmin">
              <menu-approve></menu-approve>
            </el-tab-pane>
        </el-tabs>
@@ -80,6 +80,8 @@
      ContentBox
    },
    data() {
        let isSystemAdmin = sessionStorage.getItem("userId");
        return {
            status: {
                props: {
@@ -105,6 +107,7 @@
                value: [],
                data: []
            },
            isSystemAdmin: isSystemAdmin==1?true: false,
        }
    },
    methods: {
src/pages/userMager/userInfo.vue
@@ -41,7 +41,7 @@
                  </template>
                </el-table-column>
                <!-- <el-table-column prop="UNote" width="90px" align="center"  label="备注"></el-table-column> -->
                <el-table-column prop="UId" align="center" label="权限组"></el-table-column>
                <!--<el-table-column prop="UId" align="center" label="权限组"></el-table-column>-->
                <el-table-column prop="cztime" fixed="right" width="180px" align="center" label="操作">
                    <template slot-scope="scope">
                        <el-button :disabled="!isCanEdit" type="primary" size="mini"
@@ -243,9 +243,9 @@
                      item.typeText = getLabelByValue(item.type, this.userType);
                      item.statusText = getLabelByValue(item.status, this.userStatus);
                      return item;
                    }).filter(item=>{
                      return item.UId>100
                    });
                    console.log(data);
                    console.log(this.userList);
                }).catch(error => {
                    console.log(error);
                });