liuyg
2021-10-13 6b5c7f553667bedddd7068e594134ed3de9ec858
二维码
8 files modified
285 ■■■■■ changed files
public/securityPrint.html 50 ●●●● patch | view | raw | blame | history
src/api/logs.js 10 ●●●●● patch | view | raw | blame | history
src/page/login/index.vue 190 ●●●● patch | view | raw | blame | history
src/styles/login.scss 21 ●●●● patch | view | raw | blame | history
src/views/securityGuard/securityCertificate.vue 4 ●●●● patch | view | raw | blame | history
src/views/securityGuard/securityGuard.vue 2 ●●● patch | view | raw | blame | history
src/views/securityGuard/securityGuardDetail.vue 4 ●●●● patch | view | raw | blame | history
src/views/securityMan/index.vue 4 ●●●● patch | view | raw | blame | history
public/securityPrint.html
@@ -13,7 +13,7 @@
            align-items: center;
            justify-content: center;
        }
        .print {
            position: relative;
            left: 45%;
@@ -26,7 +26,7 @@
            color: #fff;
            letter-spacing: 4px;
        }
        #table {
            margin-left: 26%;
            color: #000;
@@ -41,7 +41,7 @@
            background: url(./img/bazbj.png) no-repeat;
            background-size: 100% 100%;
        }
        #table1 {
            margin-left: 26%;
            color: #000;
@@ -51,7 +51,7 @@
            border-radius: 7px;
            margin-top: 100px;
        }
        .user-info-table {
            margin-top: 30px;
            width: 90%;
@@ -59,7 +59,7 @@
            border: 1px solid #000;
            background-color: #fff;
        }
        .table-top {
            width: 100%;
            height: 16%;
@@ -68,19 +68,19 @@
            font-size: 4rem;
            letter-spacing: 15px;
        }
        .table-center {
            font-size: 2rem;
            width: 100%;
            height: 60%;
            font-weight: 200;
        }
        .img-title {
            width: 100%;
            font-size: 14px;
        }
        .table-center-right {
            width: 152px;
            height: 205px;
@@ -91,7 +91,7 @@
            /* border: 1px solid; */
            text-align: center;
        }
        .table-center-right img {
            width: 100%;
            height: 100%;
@@ -99,57 +99,57 @@
            vertical-align: middle;
            border-radius: 10px;
        }
        .security-info {
            margin-left: 5rem;
            margin-top: 1.8rem;
        }
        .table-down {
            font-size: 14px;
            width: 100%;
            margin-top: -40px;
        }
        .paper-unit {
            margin-left: 20px;
            float: left;
        }
        .paper-date {
            margin-left: 215px;
        }
        .user-info-tr {
            height: 50px;
            font-size: 14px;
        }
        .avatar {
            width: 140px;
            height: 190px;
        }
        .title {
            margin-top: 20px;
            font-size: 28px;
            font-weight: 500;
        }
        .avatar {
            width: 140px;
            height: 190px;
        }
        .my-picture {
            width: 150px;
            /* height: 200px; */
        }
        .avatar {
            width: 100%;
        }
        .qrCode {
            margin-top: 0px;
            margin-left: 25px;
@@ -210,7 +210,7 @@
        </div>
    </div>
    <script>
        var getData = function(name) {
        var getData = function (name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return unescape(r[2]);
@@ -222,11 +222,11 @@
        var securityName = JSON.parse(getData("data")).securityName;
        // console.log(JSON.parse(getData("data")), 111);
        axios.get('http://223.82.109.183:2080/api/apply/userDetail?id=' + id).then(function(res) {
        axios.get('http://223.82.109.183:2080/api/apply/userDetail?id=' + id).then(function (res) {
            var data = res.data.data;
            var img = data.avatar ? `<div class="avatar"><img src="${data.avatar}"></div>` : `<div class="img-title">暂无照片</div>`
            axios.get('http://223.82.109.183:2080/api/qrCode/getQrCodeBase64?securityNumber=' + data.securitynumber).then(function(res1) {
            axios.get('http://223.82.109.183:2080/api/qrCode/getQrCodeBase64?securityNumber=' + data.securitynumber).then(function (res1) {
                console.log(res1.data, 333);
                var qrCode = res1.data ? `<div class="qrCode"><img src="${res1.data}"></div>` : `<div"></div>`
                var str = `<div id="table1"></div>
@@ -242,7 +242,7 @@
                        </div>
                        <div class="security-info">
                            <span>性别:</span>
                            <span>&nbsp;${data.sex==1?"男":(data.sex==2?"女":"")}</span>
                            <span>&nbsp;${data.sex == 1 ? "男" : (data.sex == 2 ? "女" : "")}</span>
                        </div>
                        <div class="security-info">
                            <span>编号:</span>
@@ -264,7 +264,7 @@
                </div>
            </div>
        </div>`
                    // <img src="${data.avatar}">
                // <img src="${data.avatar}">
                var dom = $('#print');
                dom.empty();
                dom.append(str);
src/api/logs.js
@@ -62,3 +62,13 @@
  })
}
export const geterweima = (type) => {
  return request({
    url: '/api/blade-resource/attach/detail',
    method: 'get',
    params: {
      type,
    }
  })
}
src/page/login/index.vue
@@ -1,20 +1,21 @@
<template>
  <div class="login-container"
       ref="login"
       @keyup.enter.native="handleLogin">
  <div class="login-container" ref="login" @keyup.enter.native="handleLogin">
    <top-color v-show="false"></top-color>
    <div class="login-weaper animated bounceInDown">
      <div class="login-left">
        <div class="login-time">
          {{time}}
          {{ time }}
        </div>
        <img class="img" src="/img/logo.png" alt="">
        <p class="title">{{ $t('login.info') }}</p>
        <img class="img" src="/img/logo.png" alt="" />
        <p class="title">{{ $t("login.info") }}</p>
      </div>
      <div class="login-border">
        <div class="login-erweima">
          <img :src="link" alt="" />
        </div>
        <div class="login-main">
          <h4 class="login-title">
            {{ $t('login.title') }}
            {{ $t("login.title") }}
            <!--            <top-lang></top-lang>-->
          </h4>
          <h4 class="login-title-child">IoT security cloud service platform</h4>
@@ -23,11 +24,10 @@
          <!--    <thirdLogin v-else-if="activeName==='third'"></thirdLogin>-->
          <div class="login-menu">
            <!--    <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>-->
            <a href="#" @click.stop="zShow">{{ $t('login.phoneLogin') }}</a>
            <a href="#" @click.stop="zShow">{{ $t("login.phoneLogin") }}</a>
            <!--   <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>-->
          </div>
        </div>
      </div>
    </div>
    <div class="z" v-show="activeName == 'code'">
@@ -36,89 +36,103 @@
  </div>
</template>
<script>
  import userLogin from "./userlogin";
  import codeLogin from "./codelogin";
  import thirdLogin from "./thirdlogin";
  import {mapGetters} from "vuex";
  import {dateFormat} from "@/util/date";
  import {validatenull} from "@/util/validate";
  import topLang from "@/page/index/top/top-lang";
  import topColor from "@/page/index/top/top-color";
  import {getQueryString, getTopUrl} from "@/util/util";
import userLogin from "./userlogin";
import codeLogin from "./codelogin";
import thirdLogin from "./thirdlogin";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import { validatenull } from "@/util/validate";
import topLang from "@/page/index/top/top-lang";
import topColor from "@/page/index/top/top-color";
import { getQueryString, getTopUrl } from "@/util/util";
import { geterweima } from "@/api/logs";
  export default {
    name: "login",
    components: {
      userLogin,
      codeLogin,
      thirdLogin,
      topLang,
      topColor
    },
    data() {
      return {
        time: "",
        activeName: "user",
        socialForm: {
          tenantId: "000000",
          source: "",
          code: "",
          state: "",
        }
      };
    },
    watch: {
      $route() {
        this.handleLogin();
      }
    },
    created() {
export default {
  name: "login",
  components: {
    userLogin,
    codeLogin,
    thirdLogin,
    topLang,
    topColor,
  },
  data() {
    return {
      time: "",
      activeName: "user",
      socialForm: {
        tenantId: "000000",
        source: "",
        code: "",
        state: "",
        link: "",
      },
    };
  },
  watch: {
    $route() {
      this.handleLogin();
      this.getTime();
    },
    mounted() {
  },
  created() {
    this.handleLogin();
    this.getTime();
    geterweima(9).then((res) => {
      this.link = res.data.data.link;
    });
  },
  mounted() {},
  computed: {
    ...mapGetters(["website", "tagWel"]),
  },
  props: [],
  methods: {
    getTime() {
      setInterval(() => {
        this.time = dateFormat(new Date());
      }, 1000);
    },
    computed: {
      ...mapGetters(["website", "tagWel"])
    },
    props: [],
    methods: {
      getTime() {
        setInterval(() => {
          this.time = dateFormat(new Date());
        }, 1000);
      },
      handleLogin() {
        const topUrl = getTopUrl();
        const redirectUrl = "/oauth/redirect/";
        this.socialForm.source = getQueryString("source");
        this.socialForm.code = getQueryString("code");
        this.socialForm.state = getQueryString("state");
        if (validatenull(this.socialForm.source) && topUrl.includes(redirectUrl)) {
          let source = topUrl.split("?")[0];
          source = source.split(redirectUrl)[1];
          this.socialForm.source = source;
        }
        if (!validatenull(this.socialForm.source) && !validatenull(this.socialForm.code) && !validatenull(this.socialForm.state)) {
          const loading = this.$loading({
            lock: true,
            text: '第三方系统登录中,请稍后。。。',
            spinner: "el-icon-loading"
          });
          this.$store.dispatch("LoginBySocial", this.socialForm).then(() => {
            window.location.href = topUrl.split(redirectUrl)[0];
            this.$router.push({path: this.tagWel.value});
            loading.close();
          }).catch(() => {
            loading.close();
          });
        }
      },
      zShow() {
        document.querySelector('.z').style.display = 'block';
    handleLogin() {
      const topUrl = getTopUrl();
      const redirectUrl = "/oauth/redirect/";
      this.socialForm.source = getQueryString("source");
      this.socialForm.code = getQueryString("code");
      this.socialForm.state = getQueryString("state");
      if (
        validatenull(this.socialForm.source) &&
        topUrl.includes(redirectUrl)
      ) {
        let source = topUrl.split("?")[0];
        source = source.split(redirectUrl)[1];
        this.socialForm.source = source;
      }
    }
  };
      if (
        !validatenull(this.socialForm.source) &&
        !validatenull(this.socialForm.code) &&
        !validatenull(this.socialForm.state)
      ) {
        const loading = this.$loading({
          lock: true,
          text: "第三方系统登录中,请稍后。。。",
          spinner: "el-icon-loading",
        });
        this.$store
          .dispatch("LoginBySocial", this.socialForm)
          .then(() => {
            window.location.href = topUrl.split(redirectUrl)[0];
            this.$router.push({ path: this.tagWel.value });
            loading.close();
          })
          .catch(() => {
            loading.close();
          });
      }
    },
    zShow() {
      document.querySelector(".z").style.display = "block";
    },
  },
};
</script>
<style lang="scss">
@@ -148,5 +162,5 @@
  color: #fff;
  font-size: 15px;
}
  @import "@/styles/login.scss";
@import "@/styles/login.scss";
</style>
src/styles/login.scss
@@ -32,7 +32,7 @@
  border-bottom-left-radius: 5px;
  justify-content: center;
  flex-direction: column;
  background-color: #409EFF;
  background-color: #409eff;
  color: #fff;
  float: left;
  width: 50%;
@@ -73,8 +73,19 @@
  width: 50%;
  float: left;
  box-sizing: border-box;
  position: relative;
}
.login-erweima {
  position: absolute;
  right: 0;
  color: #333;
  top: 0;
  width: 130px;
  img {
    width: 100%;
    height: 100%;
  }
}
.login-main {
  margin: 0 auto;
  width: 65%;
@@ -113,12 +124,12 @@
.login-submit {
  width: 100%;
  height: 45px;
  border: 1px solid #409EFF;
  border: 1px solid #409eff;
  background: none;
  font-size: 18px;
  letter-spacing: 2px;
  font-weight: 300;
  color: #409EFF;
  color: #409eff;
  cursor: pointer;
  margin-top: 30px;
  font-family: "neo";
@@ -180,5 +191,5 @@
  line-height: 38px;
  text-indent: 5px;
  text-align: center;
  cursor:pointer!important;
  cursor: pointer !important;
}
src/views/securityGuard/securityCertificate.vue
@@ -115,8 +115,8 @@
  justify-content: center;
}
.security_m_r_img img {
  width: 125px;
  height: 160px;
  width: calc(358px / 2.2);
  height: calc(441px / 2.2);
}
.security_m_r_once {
  position: relative;
src/views/securityGuard/securityGuard.vue
@@ -589,7 +589,7 @@
                  ratio: 0.1,
                },
                action: "/api/blade-resource/oss/endpoint/put-files",
                tip: "只能上传jpg/png个人头像,且不超过500kb",
                tip: "上传二代身份证一寸近期彩色正面免冠图象, (358像素(宽) × 441像素(高)、分辨率350dpi)且不超过500kb",
                span: 12,
                // row: true,
                prop: "avatar",
src/views/securityGuard/securityGuardDetail.vue
@@ -538,8 +538,8 @@
    top: 20px;
  }
  .img {
    width: 152px;
    height: 205px;
    width: 358px;
    height: 441px;
    border-radius: 10px;
    position: absolute;
    // border: 1px solid rgba($color: #888888, $alpha: 0.5);
src/views/securityMan/index.vue
@@ -508,8 +508,8 @@
    top: 20px;
  }
  .img {
    width: 152px;
    height: 205px;
    width: calc(358px / 2.3);
    height: calc(441px / 2.3);
    border-radius: 10px;
    position: absolute;
    // border: 1px solid rgba($color: #888888, $alpha: 0.5);