<!DOCTYPE html><html style="font-family: Microsoft YaHei, PingFangSC-Regular, PingFang SC, sans-serif;" >
<head>
    <title>登录 - 江西青年职业学院</title>
    <meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><link rel="icon" href="/cas/file/ico/webFavicon.ico" type="image/x-icon"/><script type="text/javascript" >
    // var hmSiteId = "d605d8df6bf5ca8a54fe078683196518";
    var hmSiteId = "d605d8df6bf5ca8a54fe078683196518";
    if (hmSiteId) {
      var _hmt = _hmt || [];
      (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?"+hmSiteId;
        var s = document.getElementsByTagName("script")[0]; 
        s.parentNode.insertBefore(hm, s);
      })();
    }
    </script>

    <script type="text/javascript" src="/cas/webjars/jquery/3.6.0/jquery.min.js"></script>

  <script src="/cas/deps/js/babel.min.js"></script>
  <script src="/cas/deps/js/babel.polyfill.js"></script>
  <script src="/cas/deps/js/vue/dist/vue.min.js"></script>

  <script src="/cas/deps/js/vant/vant.min.js"></script>

  <script src="/cas/deps/js/sw-ui/lib/index.js"></script>

    <link rel="stylesheet" type="text/css" href="/cas/deps/js/sw-ui/lib/theme-chalk/index.css"><link rel="stylesheet" type="text/css" href="/cas/schemes/409EFF/index.css"><style>
    [v-cloak] {
      display: none;
    }
  </style>

<script src="https://passport.jxqy.edu.cn/mf/right/remoteEntry.js"></script>

<script src='/cas/deps/js/jsencrypt/3.0.0-rc.1/jsencrypt.min.js' type="text/javascript"></script>

<script type="text/javascript">
  var encryptEnabled = true;

  var encrypt = new JSEncrypt();
  
  var url = "\/cas\/jwt\/publicKey";
  $.get(url, function(publicKey){
    // console.log(publicKey);
    encrypt.setPublicKey(publicKey);
  });
  </script>

<script type="text/javascript">
  var loginError = {};
  </script>

<link rel="stylesheet" type="text/css" href="https://passport.jxqy.edu.cn/mf/right/style.css"><link rel="stylesheet" type="text/css" href="/cas/themes/mf/css/mfa.css"><style>
    [v-cloak] {
      display: none;
    }
  </style>

</head>

<body>


<main role="main">
    <div id="content">

<div id="vue_main" v-cloak>

  <div style="display:none;">
    <el-button id="showErrorMessageUsername" :plain="true" @click="showErrorMessageUsername">打开消息提示</el-button>
    <el-button id="showErrorMessagePassword" :plain="true" @click="showErrorMessagePassword">打开消息提示</el-button>

    <el-button id="showErrorMessageCaptcha" :plain="true" @click="showErrorMessageCaptcha">打开消息提示</el-button>

    <el-button id="showErrorMessageMobile" :plain="true" @click="showErrorMessageMobile">打开消息提示</el-button>
    <el-button id="showErrorMessageDynamicCode" :plain="true" @click="showErrorMessageDynamicCode">打开消息提示</el-button>

    <el-button id="showSuccessMessageSendCode" :plain="true" @click="showSuccessMessageSendCode">打开消息提示</el-button>
    <el-button id="showFailureMessageSendCode" :plain="true" @click="showFailureMessageSendCode">打开消息提示</el-button>

    <el-button id="showGuardDialog" :plain="true" @click="showGuardDialog">打开消息提示</el-button>
  </div>

  <div>

    <div class="card">

    <el-dialog v-if="drcomIPLoginEnabled"
      class="dialog-wrap"
      title="城市热点快速登录"
      :visible.sync="drcomIPDialogVisible"
      :close-on-click-modal="false"
      width="506px"
      height="420px">

      <div class="check-tips" style="font-size: 14px;">
        <img src="/cas/themes/mf/images/tip.svg"></img>
        <div>您正在使用<span>城市热点</span>接入上网，可直接使用<span>城市热点</span>上网账号快速登录。</div>
      </div>

      <div class="app-style" style="height: 102px; padding: 20px 0 20px;">
        <div style="font-size: 16px;">请确认是否使用该账号进行登录。</div>
        <div class="code-wrap">
          <div style="position: relative; text-align: center; font-size: 20px; margin-top: 15px;">上网IP：<span></span></div>
          <div style="position: relative; text-align: center; font-size: 20px; margin-top: 15px;">上网账号：<span></span></div>
        </div>
      </div>

      <span slot="footer" class="dialog-footer" style="height: 50px; display: block;">
        <div id="drcomIPClose" style="display: inline-block; width: 20%;"><el-button @click="drcomIPDialogVisible = false">关闭</el-button></div>
        <div id="drcomIPLogin" style="display: inline-block; width: 75%;"><el-button type="primary" @click="drcomIPLogin">上网账号快速登录</el-button></div>
        <el-checkbox v-model="drcomIPLoginAutoEnabled">下次自动登录</el-checkbox>
      </span>

              <form style="display: none; width:0; height:0; border:0; margin: 0; padding: 0;" method="post" id="fm9" action="login">
                        <input type="hidden" name="drcomUsername" value="" autocomplete="new-username"/><input type="hidden" name="execution" value="13e49e21-7857-4e3f-b342-23bed7350fd7_ZXlKaGJHY2lPaUpJVXpVeE1pSjkuWE1PUHR3akFyTjhQL0gxOTZPWXJkZFdLRTJMb3p3RHFMZnVhcmNaK2RRd1FjcFkzNUZkaFAxcS8xRnRKUUs1cWgvRUF0eXphRHBPU1drMTBpRG5jVG0zRFFoT0M2WjhDL091WkMrVWRkRUFPTVI1a2lIQWdBZnhkejBjVzR4N1k0Z3duZDRHR2ZnL1VYQVJoOGNwUnZ0Y2tSRjFRcWFHbkwzSHc3VnlVeTIvNzFHQ1orc3dXWXhHdDY3dDJIa2d4L2twVnFnUEQ5YTl5MjVZNkRYTmlvcGhzWHo1M3hMeUU0cWlrVHFFN3ZhdURCODhQZ0RMdzdWNWQ5TTMxc2wvWnJLZFNkRTljQ0lXUDMySE5xdUZxcXVSWStod1hkWlFQOUd6czBZNERZUkpZVnl5c0RIVmFFdnlCRE84SGMxZkQxL1g0OGpHV29TNE1aV01MZ01BdVk3UVhhWUdpVDV4ejQ5dFdNRzhmYVArd292TkNnNi9sVVdFcFdaWEJoSStIOXBQSWNEeGFsclYyMkVXdUVTdFVvVGp0c0V4QmhLREJDVEdiQURVOUs3dTFxYjFWVTk2VjcyZVlTYmU0bTArREdNZnVad1J4ZHJkUE4xL1RuUks4TkxjZGRMOUlVN2pnSDhBSjh2L3lISWZXdEh0ajdkaGRlbDl5YVQ0YWZaeFU4OUU5aFlTeVBTSHczQlRUNHhsU21mVFZYZy9rSHRvVUdiRTFuMjFQUlFDVG1xZVg1Q0VOMUJFd1ZQRTR5eWlxT0prWEhpNzRxQmxpYnVoZU9tcktwUU9mcDZCb25QODRLMFFmTy9lRzJwL3crNGV5cjA5bTkvODZsNTcwUlN2QWI2Y1czSzhNeXN5S3pTazlVZU9JZ3lreXh4cG9FVkYwckFNS1g5ck5RMWd4dUJMOFNKSjhtOUZIdGNDNEpVczZ3TE96eWZ3UUczRDk4SUpZL3BSa1FIYmt4STlXQnVwR1UzS25aZ0VvZlE4VzdBQzVLRlJzNlN3UHhrc25yVEpoSE1vcTA2cnJQSW1tdHdDQzBRVGhYTGlRQTlYR3VXbFVxREFEWTBtSXVHNG1jakJwNlpZNVQremhSYy94b1owYXh3RVk1RSt3aVRpMHV1NFBuM2ZLaGRXUERQZHV1QjcwT09vRllIS0c0T3QxYUh0bGhSUDJpV0VTWHh3MmQzS3R3eExmcktRcjBKYmprVWN5UENhRDZRZm1iMFYvL2pvdnc3MElrUGhodTBTSGRkWUc5L3R5S1FHWDNJaTl0cmh6MDZEbkhCSDZzZFZRcTd1Q2lkVDk1b0pOYnREWEwxSUxyV3MxNndjV3lEQXRVZm5MK0FuZk1QQmlYYm1GWStDQVFyWEVyTDIrT1BMSXJ6REJzcnEvMlEvZW5KYTNZSUtCODBQV0F0WmxhZ1ZjK3lNL3VtM002N1A5eUViOUd6NnkrWkVXWjl3RGc0ODBsUzBRYlVrejgvTWhLS084SndTakdEaGFsdXdqZmZ4ZER1VDJ3aEJ1ckY0cXNXYXBxR0NQZDRzbGZyU0RzRm9QR2lpSkRMaXR0d3FCVlJKQUhLSGZQNGZsVWdFeDljdDhINUJJWkJES2EyT0kzVmEzeVAxQU5QVnlheGF1aGFkdm1sV0ZERTRlQ0thMmpvbHRrM0c3cjlBQTZqZVFTdkNxZllxelZHdElnU01QY1BCN21hN3lVci94TkFHNEs4RTJJQWdkTmdlT1NUa1Y4aVlFNjdhNWZWM05COTI0VW1NMnFZb3ZOU3d2Z2lsREpzYW5Idkx6RXpQenZPTUJZaTFYTXFnQklna1N1TE9xME9xMXhTRU1aQWRkY1FrOXEySU9UMytUOG90cU5SV2VuZTZha1B1M25vMjVQVi92NXUrTWZ0UUdLbHo0T2UyZE5UcGN0NWJ3Tk9iK2MzdjhOWUlUblNPUGtaWTA0eW13VEw1VmRnQnZrM25MVmtneTZMVUNNMGVURVAxbGt0WmFJY1FHWG1FZFFKNS90aGJIT2pZc09yYWo5S2hzNUZHQlZQc09aTWNIb21sVkNLRkg4OExNbGVyS29ZODJqM1NoZ3Z3VHVsYndqMXlpZjR6MmZwRVR6d1JNTmIwSGxXSEx4L0h6Y0tWalNjT25KSDl3NDhwUDRkQXRuSUtQMktqMTAvVWZwYmtaVWg1V21CSjVLQkdVL2ExRkRHVkMzdVdlRFBaakhJbFphRWkwM3hrTWIwNXE4b2lzTzdFdkVkeUg0NFdBeGxCL3p1dUQ5WkpRcHlTMjF3bFAxZ3pHNU9wODUrV0dTbkVTQ0tieEwva1RkVi8vb0dWSTF4eGtEVU9FcUtNenB6TmRBT2pYZnRRYkZNc21zZHdSU2xZbS9QbE1PQnlBZGxKSmh0aVgxWHhIMjd6YmYwcWp2QUpZbW9rRFgvSGhCclZOYXBESDRHSVZOS29MbnFCTVNNU21mcUtZeGhsemcxZzNaODVKakxieXk3cWl5ZGdpVlA1aWRFMzJFR2ttaStqOFlUc28xeER2MzVsMll0UjM5MEtJU01vMWhyOXV6T29ZMUdKSW10NzlsTVBlQUd2TnpiY00vQnZlOWRMeVVvYzJoV295RnNSNHNrN2dKaHlZMjNBZW5pajhMakkrQ1paUkxqNFBhcWR6dWgxaEY1aG1YYS9mMnhKczJtalRvSU5YQmUxTVErYzR0NkNILysvZWhkcUZrVjNDNXlxSVdmMDZEbGhqcDJuVmlJZWF4K0xZRjhEWkN3N1V0WDRLV0VZcWRLQy8yM2E5OWJ2VUh6N0VBcVVrNmJtY3hVMHB4RHhLUXN1TG5OV2JlZitLUkFRZWpCdkt3WVBoUlFyOE1SRW5IZ0sranJmMUdCUk13MUxnbkdnaUdRUGMzQzRkemQxaEw0N3BaUlowdUpKRTRIR2xrSWZRVVR3RzR6UDNaR2Y2TTh0aWhHYzR4S2JOcTI4WnhlbjB1dUlxU1VqS1ZxNm15dTFjL1hmdVJpbDl3aktLRUxCZlRoNENyRERMcHI2bjRzbStLRVdPSlViT3F0aHZZa1IyZmoxdjR5RkphRzdJVFpuRHFOWjh4dmdFMG1ucElVYlVrSnk0RXFxcGs5MkcrdUlYRmF0VFFKa2FxWHVhQ2FCaVNVYTBla0t0dHZkbU9vSHB1QkN1OUlXS3MxcDkySzN3Q0IyMFBOd3J5L3c1aFN4ZWVLSklBa3hlVGxTVXVyWU05YmgyVlRNbVpkZHpvaUZsa0JVU2U0NDVDUjV3NXdlRVRQVmpCNDF1TzRhNkRvZWo4Y3Y4Ukw4TGhvUjRzQ1pzanlIRVpjZ0c0SXo4ZElGcktnSkFhWGhLUnJFT2tpdmJsQlRnOG9EeW9xT01iOHd0bjcvbFBkUFNHVC9yNU5jREp0L213OU02bGVaV0dSelB3WXk1WVkvYVV1OHIvYURUMXpueFExb3JrMnZHM0cxUjcvUzdGUngvZzhOaDhhYldXNnRlRm5lbHR0U0NINysyM2s1c0JWcFNYNXd1a3Jvb3QxaW1nNFZGcDVyOWFKa0psc3E1V2hXTytidkdUcXZRTmpVVUYyZ1ZTci9UQzRGZUlBcCtZVzUwbHMrbjUwUkg5aU5zT2NMSW5QSFV3YzNvU25rODFGc0VNZ2l3eHY1SDUzRmxiV1M5bmloTTFyVDV6TFlnaWVxTTYrQ25NYWVXUjgrbjM4czZSSjVuQjhHU3B4MVcwQiszTE9WNEFoaVBWNDhHM201KzhuMFlYTlViM05vcUFpY00rcUFRRFQ4ZHlNd1ZkWWRLUnlUbEZQSzFpaUFyclMzVkM2K0J0c0RxcXI2TCtxTkxSMjNvallvNlhhM2IrR0prTUxSakg3U3ZtR1pQZlRMalV0b0tOb2I2d0hnaWdCdmxTNlVzL2MxRmZXcHBYWmxrQUhZZ3h6OEdZclBCN2dOTDluVUg5QkFmeGtISzBPOXk4c0kvSk1jL2VKdXRSdlJTYWFoSlNRUDAwZ1lsVnpWbSt1UDJVYnd3aERFd2JQL2lCRDBPdkVLU1NmVFpsZmdWQmEyd2hHMXJtWWl1NjRoUWdsN05EVk0wbDJydFNEZXhOWkRDN1ZGNncwUU1jL0N3RFI3NjZHK3JvLzlvbnhDS0tFTjlvcHYxQnRSMitGc0hHR2dJMEVkem9oYXRsRU5FNU50T2ljK2NQYzFnTldwbkc2L2J3cmxGdzhUSEpsM28xTjBTem9DL2xRZzJCV1VtRjBFZkl6RDY1KzFmU2h5eVYwNk1LUEw1bUt3ZjVYWEpjdFJGY29UTUVVTVNZL05BNGtucGdUMUpMeEw1NmlVQjJscGc0UzBzQzRxUWdURGh1dk1SVEVxaWxrelY0Q0JqbkpXZWlwdFBvUVlWMjVDd0Y2U3U4TnBoRnRUd3VWbXpycXRKMjJVUE5FQVVadDRiRXFENGorZzdWaXhabElvNEEwZmJtak96MTZGcXFNTU9XeUVyeGdIdm9ZRFlzaUVOSkVTTnlHdjNhSWFmYUVkSCtoN3ZyQzFwTGtPM0tCSnZuVDlQQXpXOTNRUHJLNWtrMC92T3VtVlhpYURRa3ErbnpTSEYybXZ1Zld1WHJDcjdjR3Z3b0oza1ArcUVjZGkwbjlBVWZjQmpqL2R4V0RPdFFBL3NrVXlqdFpKY1FheWF6akdWVXNITzVqTjdQZkY2OVhvRmxLTGdIY3lJZGswNHNGZFVmWkVraGREaTV0VUFEVXBaUEtRRFNZM3ZiNTY2Q082MU4vTUN2cDMxN3NiSDdWZmZwS2FRUERGaEJjcExjeTFLcUE1cUtpcHdBV2w3R1lnZCsrc1FPeGtua09FUElYbFVaUnV5ai9SeUN6QVlvRlBXSXQyaXMxMzcvU0k1R0tFdk1uYkdDV0owYW1vZk85bndwbmlHOHpNTUpWNDI4MnNWUjE2VXRCYWJ1a3lSL0ZIVFZ0TDBjWlI4d3VIRlZpNDdPb0pBeDd2WW1aaWdqVVJXS3JyR2FMb1VSME03c043cytzSTNuaDNXanlTK2lsaGRacWV6Y3pUOGdvalZhRmtYWU5GaDNkMWh6RnBvSkk0SitKYzJxZFBnSjN1ZGM3czZzVmhZWjM4c2dtb1VwRzBBWkxCamR5L1MrbHBYNmhGRVhhUWxyckI5YkNzQ0FOQ3RQc2hlcERvQjVHSGpqRjVtUjVibFIxR3p3Zk42Qm1kUitFT09GYnFpZGt3ZHR0THk2Zzh4bkRubWQzYk9Pa01JdWJzMzErOVp0c3VlcHQzTXBKUE5nRXcxUE51SXBKQm9vaEhsM2pjTUdpMVo2NlZXUnZsRlpMMmh5Um9oNWdNT1dHU2ZWUFVqUk5Xb1lzekpjMU83MzRNV3g5aFgxKy9vbWJDanZLRTZFWkp2YkMyQm1WVTlQRTVzc3lveUVGblhOaTZNbmdXazdTSWJ4ZVl5a1Y1bWNwVjBraUtFQ2hFcGFrQWVhc0hmcllneTNmMVJtL3VBUHNOSzl3b3BIYmk0YnQ0WFF1VU92YzBLMzA2TnNmbmZ6TXFIRkFjSmNHVGozOXNmRFhNc0I2VUxJVlFxOEx6d2VXalV4WVRHOUZOOWNHZmp6ZUdwMlJGWFRnYjZnVFZCdURvc2txSFBJR0R4dXhVZ0xJV3dNMU0rNGxuWlBaRUxXaUpWOTZyVk5ZQnZ4VFdDaFJDRFBBLzI2aS82M0VpdHo5ek1KSzJzTTdkakNDemlRMVpFSnNZWm5mczIrOFcwZTVrMXZMd09zTU5RNTRPaElhbFdPMGlvdDAvM0o2RmY4WEM4ZUhoWlVKd240YjRJNHBLbGUvcUtFWnBvbktzVlFHTkR3WUJIWVRQa3NCWlJrQVpwbG9EakxpNG5rMCtTWDgzdy9uZzI1c0Zia2RkZlQwMWx6UXhOS01qQ1I2S0xvb0dpd3Uways0N2ZLb3lYUTdDV3BGbXV3SFNwVVBNZlB6aGp1d1hDalcxSnREeTNpTlpEN0FqQ01mbWQ4dmNiZVQ4TmlXcWRaWmtqTWFjTmxUWU1YSEVOdEVybEJRQjN2ekNFMmIrNE1nSGxpazVqNXpVZldqelVJaTlDSHV3dkhMVXM2TXlCcWNNMVR3ckhudHlQQjZONzZDY1laMEx2OUVBRGZqRzhjZWNZalhHYThBNmFQYklvYXd0VzB5ejA1SjlmYU5ySE5NZEVxVmJKZlRGTnFETzZkTHF6RXg1eThyNXUrNVVrZDAxWFRKOGNrYkR2T01nLytZSFh1b2hNd0VIWkdQdjhkM1A5c29nY3VaZHNNajRnM0gweVVkNG04NFJXcHJneDlNb05MdW9ESnFZeFVKUXlPQ3UyZS9vckpESnA2K3BDNFBHTE9UWGJiTjZCd3V2dkh6S2pKUlQzZ0x3SHBScEQyUTR6V2plOG9FcnBwUkYzK0drTE5FTDM4RDFoTnZhbUFQa0hER01JdnJIT2REYTFPY0RDOU9LYjczZkwxMnBycllkaFNDeTN0NU9OS25ZalRkUUhsK0JwNmxndXljNU5VVWU3RTFxOE1wSmxGdFd4TTF3U0duUkYrNjZCQTMvTVhnWW1sTmNHVFpLTlFwV3Z1bHgwcUgxaDRXcC9SOUtLTjk4R3RuRDBxVmtxZElydHN6NllsbU1jTU1PY3RPVy84OStnZW9mdENVVXE1ZzNKYlRUajdhS005YS9aMFc1OVdBcFFGRkM4SmxBZzl2R0NNdXJNN050NWNCZ1NKL2tHSEJtSWJJTmljYVBYTDlHaVBGL3owaDNSVEdkT0ZLQUR0N0RqeU9xdVc4bURWYVhmbzJDNWpzZzNMS1ZHZUZtTldITzQzb0x6MExzNkJNOEt3UUFCd2F5d29jWUZJMmtTWjh0QlN3OHpZVHUwZFBnR2FsVjM2WmkwSnJXakNVZ01abjNEWTZpOGlHVEtwQ29UNEQvOVVpclgyUnlraDE1Qm5UazE0VVpHWWVpR3VSSWFBWEdkYTNKVmw4MStlamJHeE82bWVrQlhBWEZHTStYQ25EOUxYN1lnSjdBWllMQ0hjdDRaYnhqcjUzbkJCM0c0cDNveUpRanRiWExSd3V3OFJFcW81UERTcFlMUDZaOHRGOGdWSDdSOU4va1FvdGNlWWRFcG9sYm9sd2NOM3lodk5jVXBGTW9NRXc4bGVOSE5jZVdzeGgvL05jTGRQa1RTKytTYXhUVzlDT3NuYVdzSXg1RW5YVi8yNVdqZE9hN0RwOVhpTEI1RTlQcnc2MGFjUFhDM0lkdXpaaXppcXBPOFRsaWFZMU4wQTE3bkZ3ZGV3RExjSXBOaThFNTBJK3V1R2M2OXRVeXBqZERXZHdLZzFPcE1MUTVob2x2L2pDdXQ5YnMvNk1nQlBWc2J5bGhrbnV6VUh4NXZrUHp3aTVISnU3ZTQ1NHAwTVpreFRyNlMrRUNaM1lUdGV5UGE3MHhkTWFLMUNGNFY5YVFxU3JXejNFTVNUUVA0TlZ4UEFudnFZNktNR2liTEdIU012YXk5Zlhnb2I5ZDI3MFRhTWlEVzVxbnN1QURlZ2Y5bTdndWtvcEgwOGVpR2ZpRlludkZHdVdHbmZCdVN1Wk9OcmN4ekE4dWsvTDNhQTc1alcvR09VSERXZ0VBZllJL3FZODFVNCtCRzZCcmhPWlFqUytpaXVoYzJ5a3hEU1Nob3EvNzFEZkRBdW5ZTGppaVFCUHJtRW5wTnVqbXpZSmV5ckptUnJyUGRHdFgvODRUT09wdE9BTmhKZjRpWXVvaXpqdXUzNzl2c1NxVkZPdFFsNTZ2ZjRhZHJ0V2RjcVlwTEpWdDdLVXFVVEJraGxXY1lHUUVhZ1ltekdvY2cwclZNMjQzcnpEVUwvNmErV0N0dTZlYUhyMWcyNm12MHMzRVNNdWppZlRmQjkxU3VtNkNEbnRLTjhlQkoyTWZ2blN0eGJkcllIWVFKaFVFSEZ6b25RbHhXakR5SWFIUDZnMjBTb1ZSU05pK0ZQamR5emJSdkNYWTdSTU91U1BsamJKeStYSlB6RnpWTXVUYUJ6aDZzek9tekdTamtZZDJWczdmSnhlb0NMRjk4clNURUxYek5BNjdCUmdCVHQwL0krRVRRUXdoUnliZDJqc0dEbUtveC83ZFk0UmpURVRtN2RxWVRiU1M0aTJpb244a3p4eFRucUpSUkxTMTArTFBOU2JVSG4rdWQ0NklDa0dYMksvSWFHdEhrNnVYU3VLQWhaN0NyWGUzK2hQR3M4WE4rMy9jRmFDWVYrSHg0bklnNFRiZVFKZzI1OHVoOTBnQ2V1ZS9hN2tvYW9SanVnVGdpRnRTZGZibU42clBOVFhkQmlJakVBM1I2NmEwQ2xPSzVxTEx4WVZieVlNc3JJTk1adFpvOC9lb1Q3alZzL1UrSVRCUmVCdWxQSUpHVXBQOUFRQmdqanlBUVpYMFQ0cW82cDB6SVRia1h0MjgwaE00K3NySjE5SWlDVk0wWEZCYW1BZExLQzhabUFYaGtWeUtJTnVwRnZCbTRVc2YvZnNNaERPaS9PK3R1U3R1Nnp1THFQVXpoTmphRGVzcnFYRjRxd21yL3hQczdqSEtIbTAvWWtmUkpKY1pUNUl4RG81UTFxem5ubHIzSzltUVprd1ozcDdVY0RkQmVvaWFNTkZ5WGdMNEo1WXhVODNuY1FxSUVWaG0zRDljQ3FLOTV0V1ZNcEpBa2kzV2tpV3hNeUFLMGZIa3dvRXU0N1NyV1BONTNhRXNPS0QvUGNuL3FQRllud2NqRjdKOUV4Q3Z6MkZxdjhpTFNBQVpORHNndjV6eWtFZDRQMkd0eGpyVy9xNm8yejdsN1BkN0YvcC93MWxvZTE0RGhGRHlKREFEa0NEbU82ZHozN0hBdXZKdDUzUVE0TnRaY2F1L1VoU1g3OUwvU1JpWlVvcWt0dlRBOTd6K0xHVFJBVFQ5WUprMmprREJicUdDQzFCR1VTbnNncS9lYzZBcXZwN0JlOGlUQ1J0NzVaUWhnMWx1elBZd1VvNjZZMjFuTDZCSXhSemo4MmVSYkE1aVJaVUtZSjdXV0N1K0sxYUlLNTdoMHJrNm5yVVFCZ3oxMzdyVmpZTFRVUDRLaEJCREhlUjBQM3BveUY3VHRQWVJEOE9YT1M4RENWdWdwZVJTRHg5SStqSFBybXd0Y3RxK1hlenBpdDN1ZTlIcFUyR3UzZDBCTk9EaXAxZmJlbk1yeTRjc0UvVWtQNHZjeG5wL0ZOdzlRL1JMUG84cFRVd0N6V0QvUmRrYzNvemJLZFNkUEsxZW41NzRrT1pwV2pWLzNlUU1RUnlPSE1zaDhhY244bERvZm5FRXpwdHYzSWl4NnVlMW43WUdoWlludkp0NDBMZi9PSU5uNktoWU1iMVpZcTdSYjBIQUF2Rzl2SlFMNXE1YnJwOTJaVVRlZE43L3daeGNBOTdjOUpzL2xuM2RJdmx6RnNUbFlHcGorRTY3UThDMW9odmt0Uk5rTmJ1bE5jalZPT3NwVGI3bFRBMlQ0VDdBdE5Md0ZGMTlkOHM5VHJsNzdTWFd1ZjlpMC9OeG5DV1RDQUZJRGd6ZVM4cytmaDVtZi9lZnFGZzUrSzRMemlPZUtwSW1Dbi8wOHM4aytGQ0cxcXNiVlpoRmNZMzhOaDB5RVRrMy9QdThtQ2xDODA5anNvazlzR2Y1dVJ6VStiRmdsR1NlSDJsdlZ1QXlPMXptUFlRcGRtWVFEZ3Y3ZmI2cVZmQXZBakQ5VUpiajAzUHBNWkJDSE1QMFpiQzJ2VjNjNld0Qk5zTlNNUU01NndIekE2Y1BnY0YxdEtsV01qSTEvTVRvK3YrUkd4aHNQdWNnWXoyRXhTeko0Mk1SSC9HK1dWU0xEdWxlaDZyenEvM0l1UC9Nbmx5bFJwaTFaUndPUjZYK2tVZTdRL0x2cTMwdmliMkpUcGhHT3g0ZmxlSlVhKzc2Uk1zVWpXbHJxVlR6azBWQTRSRW5zbW4ybGJPbE90WklmVVFyMWxCV0QrRHFZZWtTbTlqT2RpNUFoRUx0MlVoN3cvOGxib3hSb3FFNFlOWE5FZGtFUmhDRy8rUnErQUpWTXh2RHpMNDFMdjU0SS9hUjZjR2RMK3FEUUlVMEUrckdQQTB3SXp2VjBvZFdDWURvSzdIZEg1MER5V1VoV2x2Lzc4Qm5XeWxnWU54VHBXeG5HSUFQSVN2emprcTl6SXg1Y0c2V29TL01EZm5wVkNBMVJUMlZwczB2NDhCdmxsRmJRemVGWkRhcEtCRy9qak5odkVVd1RKTTY1WG5xRWJ1YTQrSkZuZzFRYjZveXM0cW1FWFVMSHpxVnRSQzNWdVdSRlVFR3BTaFVOak04VHBmQW5qRzEycWxzOE5qT1ZDdURObVdGeUdGT3AyTU8vSWpaemt4alFmNm5KalNIRUU3TE9yVzlhVHl3N05KaUJweTVNSmQxa0VLbmFmaUg1YkF2S2hoVGVEMDMzbGZ6YmhUeXF0Vnlid2Q5a1VxUjBURE1yUEZON0pxbnpNYlFDM0Jkb1NXd1BFSXB5YlFTeFk1MXo1bHFrUEU5SjM0cFpTUHFyRzQxK1JKS0lndStWTW8xWjNVN1NDaC9sTlY3OHFnTDB4SDBpZjFldzVXUG5JT3RkSWhRVm9BaEQzdHVsZHZFQm9kM2g1Sm5iZDZrbnRqaDdSVWFGSHU3TEZiUFJHczR2RzBGaXF4M0pXa0xOQjFFZDZUVloyaVh4bWNHUG05aVVUOGJyN2ZkdCs1dzZ5ZEtyWXJkK29LWlJIZzlDT3JvdjBWK3h6K094NTlXQVVIQ0t0MlM4TFRoV3ZsdjdsMHAzMjlRN1V3dnFlQ0JJNzVNWGRWSC9Sd0FNRVNWbzJQbkJ3TGVpTGlybS9icHk3T0JXUk8xZlBwL2RZTWQ0VTc2b1ZsV2hWR3pNaFN3ckVncXRwSG9iZSs3bEZWYmFGUTUxNUJnNEVXZXNQMW1ZbWljQmViVnArNTZXUUZNRloxOFMzUVNIMHpqaFp1NGpiQUNUTGFlaTZDbEhscmxGeTJ3NGx2d1NQV3JYdzVSYmNRMzV4eUhGV012Uk43NXh6Rm1LWTlGbWFDQ3N6dTdlZ2NTQy40S0Rwd0hKdkE5V25WVDZiUThCTzdhQWt5OW1ZdDhpQktnbVZodmtMbU43SEtvaHZDMEpZVE9QRlNRQUl6RW9Fay1kenpyWTVEQ0I1cTF1aC1wODNPUQ=="/><input type="hidden" name="_eventId" value="submitDrcomIPLogin"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input 
                               name="submit"
                               type="submit"
                               value="Login9"
                               style="display:none; width: 100%"
                        /></form>

    </el-dialog>

            </div>

    <!-- /* <sw-dialog
      title="公告"
      width="500px"
      :visible.sync="dialogVisible"
      :before-close="handleClose" 
      th:utext="${noticeContent}">
    </sw-dialog> */ --><!-- 通知公告弹框 --><!-- /* <el-dialog
      class="notice-dialog-wrap"
      :visible.sync="noticeDialogVisible"
      width="450px"
      :before-close="closeNotice">
      <div>
        <div class="notice-title">通知公告</div>
        <el-scrollbar>
          <div class="content" th:utext="${loginNoticeContent}"></div>
        </el-scrollbar>
        <div class="notice-btn">
          <sw-button size="small" type="primary" simple round @click="noticeDialogVisible=false">我知道了</sw-button>
        </div>
      </div>
    </el-dialog> */ --><div id="layout"></div>

            <form method="post" id="fm1" action="login" style="display: none;">
                <input type="hidden" id="username" name="username" v-model="passwordLoginUsername" autocomplete="off"/><input type="hidden" id="password" name="password" v-model="passwordLoginPassword" autocomplete="off"/><input type="hidden" id="captcha" name="captcha" v-model="passwordLoginCaptcha" autocomplete="new-captcha" /><input type="checkbox" id="rememberMe" name="rememberMe" v-model="passwordLoginRememberMe" /><input type="hidden" name="currentMenu" value="1"/><input type="hidden" name="failN" value="-1"/><input type="hidden" name="mfaState" value=""/><input type="hidden" name="execution" value="13e49e21-7857-4e3f-b342-23bed7350fd7_ZXlKaGJHY2lPaUpJVXpVeE1pSjkuWE1PUHR3akFyTjhQL0gxOTZPWXJkZFdLRTJMb3p3RHFMZnVhcmNaK2RRd1FjcFkzNUZkaFAxcS8xRnRKUUs1cWgvRUF0eXphRHBPU1drMTBpRG5jVG0zRFFoT0M2WjhDL091WkMrVWRkRUFPTVI1a2lIQWdBZnhkejBjVzR4N1k0Z3duZDRHR2ZnL1VYQVJoOGNwUnZ0Y2tSRjFRcWFHbkwzSHc3VnlVeTIvNzFHQ1orc3dXWXhHdDY3dDJIa2d4L2twVnFnUEQ5YTl5MjVZNkRYTmlvcGhzWHo1M3hMeUU0cWlrVHFFN3ZhdURCODhQZ0RMdzdWNWQ5TTMxc2wvWnJLZFNkRTljQ0lXUDMySE5xdUZxcXVSWStod1hkWlFQOUd6czBZNERZUkpZVnl5c0RIVmFFdnlCRE84SGMxZkQxL1g0OGpHV29TNE1aV01MZ01BdVk3UVhhWUdpVDV4ejQ5dFdNRzhmYVArd292TkNnNi9sVVdFcFdaWEJoSStIOXBQSWNEeGFsclYyMkVXdUVTdFVvVGp0c0V4QmhLREJDVEdiQURVOUs3dTFxYjFWVTk2VjcyZVlTYmU0bTArREdNZnVad1J4ZHJkUE4xL1RuUks4TkxjZGRMOUlVN2pnSDhBSjh2L3lISWZXdEh0ajdkaGRlbDl5YVQ0YWZaeFU4OUU5aFlTeVBTSHczQlRUNHhsU21mVFZYZy9rSHRvVUdiRTFuMjFQUlFDVG1xZVg1Q0VOMUJFd1ZQRTR5eWlxT0prWEhpNzRxQmxpYnVoZU9tcktwUU9mcDZCb25QODRLMFFmTy9lRzJwL3crNGV5cjA5bTkvODZsNTcwUlN2QWI2Y1czSzhNeXN5S3pTazlVZU9JZ3lreXh4cG9FVkYwckFNS1g5ck5RMWd4dUJMOFNKSjhtOUZIdGNDNEpVczZ3TE96eWZ3UUczRDk4SUpZL3BSa1FIYmt4STlXQnVwR1UzS25aZ0VvZlE4VzdBQzVLRlJzNlN3UHhrc25yVEpoSE1vcTA2cnJQSW1tdHdDQzBRVGhYTGlRQTlYR3VXbFVxREFEWTBtSXVHNG1jakJwNlpZNVQremhSYy94b1owYXh3RVk1RSt3aVRpMHV1NFBuM2ZLaGRXUERQZHV1QjcwT09vRllIS0c0T3QxYUh0bGhSUDJpV0VTWHh3MmQzS3R3eExmcktRcjBKYmprVWN5UENhRDZRZm1iMFYvL2pvdnc3MElrUGhodTBTSGRkWUc5L3R5S1FHWDNJaTl0cmh6MDZEbkhCSDZzZFZRcTd1Q2lkVDk1b0pOYnREWEwxSUxyV3MxNndjV3lEQXRVZm5MK0FuZk1QQmlYYm1GWStDQVFyWEVyTDIrT1BMSXJ6REJzcnEvMlEvZW5KYTNZSUtCODBQV0F0WmxhZ1ZjK3lNL3VtM002N1A5eUViOUd6NnkrWkVXWjl3RGc0ODBsUzBRYlVrejgvTWhLS084SndTakdEaGFsdXdqZmZ4ZER1VDJ3aEJ1ckY0cXNXYXBxR0NQZDRzbGZyU0RzRm9QR2lpSkRMaXR0d3FCVlJKQUhLSGZQNGZsVWdFeDljdDhINUJJWkJES2EyT0kzVmEzeVAxQU5QVnlheGF1aGFkdm1sV0ZERTRlQ0thMmpvbHRrM0c3cjlBQTZqZVFTdkNxZllxelZHdElnU01QY1BCN21hN3lVci94TkFHNEs4RTJJQWdkTmdlT1NUa1Y4aVlFNjdhNWZWM05COTI0VW1NMnFZb3ZOU3d2Z2lsREpzYW5Idkx6RXpQenZPTUJZaTFYTXFnQklna1N1TE9xME9xMXhTRU1aQWRkY1FrOXEySU9UMytUOG90cU5SV2VuZTZha1B1M25vMjVQVi92NXUrTWZ0UUdLbHo0T2UyZE5UcGN0NWJ3Tk9iK2MzdjhOWUlUblNPUGtaWTA0eW13VEw1VmRnQnZrM25MVmtneTZMVUNNMGVURVAxbGt0WmFJY1FHWG1FZFFKNS90aGJIT2pZc09yYWo5S2hzNUZHQlZQc09aTWNIb21sVkNLRkg4OExNbGVyS29ZODJqM1NoZ3Z3VHVsYndqMXlpZjR6MmZwRVR6d1JNTmIwSGxXSEx4L0h6Y0tWalNjT25KSDl3NDhwUDRkQXRuSUtQMktqMTAvVWZwYmtaVWg1V21CSjVLQkdVL2ExRkRHVkMzdVdlRFBaakhJbFphRWkwM3hrTWIwNXE4b2lzTzdFdkVkeUg0NFdBeGxCL3p1dUQ5WkpRcHlTMjF3bFAxZ3pHNU9wODUrV0dTbkVTQ0tieEwva1RkVi8vb0dWSTF4eGtEVU9FcUtNenB6TmRBT2pYZnRRYkZNc21zZHdSU2xZbS9QbE1PQnlBZGxKSmh0aVgxWHhIMjd6YmYwcWp2QUpZbW9rRFgvSGhCclZOYXBESDRHSVZOS29MbnFCTVNNU21mcUtZeGhsemcxZzNaODVKakxieXk3cWl5ZGdpVlA1aWRFMzJFR2ttaStqOFlUc28xeER2MzVsMll0UjM5MEtJU01vMWhyOXV6T29ZMUdKSW10NzlsTVBlQUd2TnpiY00vQnZlOWRMeVVvYzJoV295RnNSNHNrN2dKaHlZMjNBZW5pajhMakkrQ1paUkxqNFBhcWR6dWgxaEY1aG1YYS9mMnhKczJtalRvSU5YQmUxTVErYzR0NkNILysvZWhkcUZrVjNDNXlxSVdmMDZEbGhqcDJuVmlJZWF4K0xZRjhEWkN3N1V0WDRLV0VZcWRLQy8yM2E5OWJ2VUh6N0VBcVVrNmJtY3hVMHB4RHhLUXN1TG5OV2JlZitLUkFRZWpCdkt3WVBoUlFyOE1SRW5IZ0sranJmMUdCUk13MUxnbkdnaUdRUGMzQzRkemQxaEw0N3BaUlowdUpKRTRIR2xrSWZRVVR3RzR6UDNaR2Y2TTh0aWhHYzR4S2JOcTI4WnhlbjB1dUlxU1VqS1ZxNm15dTFjL1hmdVJpbDl3aktLRUxCZlRoNENyRERMcHI2bjRzbStLRVdPSlViT3F0aHZZa1IyZmoxdjR5RkphRzdJVFpuRHFOWjh4dmdFMG1ucElVYlVrSnk0RXFxcGs5MkcrdUlYRmF0VFFKa2FxWHVhQ2FCaVNVYTBla0t0dHZkbU9vSHB1QkN1OUlXS3MxcDkySzN3Q0IyMFBOd3J5L3c1aFN4ZWVLSklBa3hlVGxTVXVyWU05YmgyVlRNbVpkZHpvaUZsa0JVU2U0NDVDUjV3NXdlRVRQVmpCNDF1TzRhNkRvZWo4Y3Y4Ukw4TGhvUjRzQ1pzanlIRVpjZ0c0SXo4ZElGcktnSkFhWGhLUnJFT2tpdmJsQlRnOG9EeW9xT01iOHd0bjcvbFBkUFNHVC9yNU5jREp0L213OU02bGVaV0dSelB3WXk1WVkvYVV1OHIvYURUMXpueFExb3JrMnZHM0cxUjcvUzdGUngvZzhOaDhhYldXNnRlRm5lbHR0U0NINysyM2s1c0JWcFNYNXd1a3Jvb3QxaW1nNFZGcDVyOWFKa0psc3E1V2hXTytidkdUcXZRTmpVVUYyZ1ZTci9UQzRGZUlBcCtZVzUwbHMrbjUwUkg5aU5zT2NMSW5QSFV3YzNvU25rODFGc0VNZ2l3eHY1SDUzRmxiV1M5bmloTTFyVDV6TFlnaWVxTTYrQ25NYWVXUjgrbjM4czZSSjVuQjhHU3B4MVcwQiszTE9WNEFoaVBWNDhHM201KzhuMFlYTlViM05vcUFpY00rcUFRRFQ4ZHlNd1ZkWWRLUnlUbEZQSzFpaUFyclMzVkM2K0J0c0RxcXI2TCtxTkxSMjNvallvNlhhM2IrR0prTUxSakg3U3ZtR1pQZlRMalV0b0tOb2I2d0hnaWdCdmxTNlVzL2MxRmZXcHBYWmxrQUhZZ3h6OEdZclBCN2dOTDluVUg5QkFmeGtISzBPOXk4c0kvSk1jL2VKdXRSdlJTYWFoSlNRUDAwZ1lsVnpWbSt1UDJVYnd3aERFd2JQL2lCRDBPdkVLU1NmVFpsZmdWQmEyd2hHMXJtWWl1NjRoUWdsN05EVk0wbDJydFNEZXhOWkRDN1ZGNncwUU1jL0N3RFI3NjZHK3JvLzlvbnhDS0tFTjlvcHYxQnRSMitGc0hHR2dJMEVkem9oYXRsRU5FNU50T2ljK2NQYzFnTldwbkc2L2J3cmxGdzhUSEpsM28xTjBTem9DL2xRZzJCV1VtRjBFZkl6RDY1KzFmU2h5eVYwNk1LUEw1bUt3ZjVYWEpjdFJGY29UTUVVTVNZL05BNGtucGdUMUpMeEw1NmlVQjJscGc0UzBzQzRxUWdURGh1dk1SVEVxaWxrelY0Q0JqbkpXZWlwdFBvUVlWMjVDd0Y2U3U4TnBoRnRUd3VWbXpycXRKMjJVUE5FQVVadDRiRXFENGorZzdWaXhabElvNEEwZmJtak96MTZGcXFNTU9XeUVyeGdIdm9ZRFlzaUVOSkVTTnlHdjNhSWFmYUVkSCtoN3ZyQzFwTGtPM0tCSnZuVDlQQXpXOTNRUHJLNWtrMC92T3VtVlhpYURRa3ErbnpTSEYybXZ1Zld1WHJDcjdjR3Z3b0oza1ArcUVjZGkwbjlBVWZjQmpqL2R4V0RPdFFBL3NrVXlqdFpKY1FheWF6akdWVXNITzVqTjdQZkY2OVhvRmxLTGdIY3lJZGswNHNGZFVmWkVraGREaTV0VUFEVXBaUEtRRFNZM3ZiNTY2Q082MU4vTUN2cDMxN3NiSDdWZmZwS2FRUERGaEJjcExjeTFLcUE1cUtpcHdBV2w3R1lnZCsrc1FPeGtua09FUElYbFVaUnV5ai9SeUN6QVlvRlBXSXQyaXMxMzcvU0k1R0tFdk1uYkdDV0owYW1vZk85bndwbmlHOHpNTUpWNDI4MnNWUjE2VXRCYWJ1a3lSL0ZIVFZ0TDBjWlI4d3VIRlZpNDdPb0pBeDd2WW1aaWdqVVJXS3JyR2FMb1VSME03c043cytzSTNuaDNXanlTK2lsaGRacWV6Y3pUOGdvalZhRmtYWU5GaDNkMWh6RnBvSkk0SitKYzJxZFBnSjN1ZGM3czZzVmhZWjM4c2dtb1VwRzBBWkxCamR5L1MrbHBYNmhGRVhhUWxyckI5YkNzQ0FOQ3RQc2hlcERvQjVHSGpqRjVtUjVibFIxR3p3Zk42Qm1kUitFT09GYnFpZGt3ZHR0THk2Zzh4bkRubWQzYk9Pa01JdWJzMzErOVp0c3VlcHQzTXBKUE5nRXcxUE51SXBKQm9vaEhsM2pjTUdpMVo2NlZXUnZsRlpMMmh5Um9oNWdNT1dHU2ZWUFVqUk5Xb1lzekpjMU83MzRNV3g5aFgxKy9vbWJDanZLRTZFWkp2YkMyQm1WVTlQRTVzc3lveUVGblhOaTZNbmdXazdTSWJ4ZVl5a1Y1bWNwVjBraUtFQ2hFcGFrQWVhc0hmcllneTNmMVJtL3VBUHNOSzl3b3BIYmk0YnQ0WFF1VU92YzBLMzA2TnNmbmZ6TXFIRkFjSmNHVGozOXNmRFhNc0I2VUxJVlFxOEx6d2VXalV4WVRHOUZOOWNHZmp6ZUdwMlJGWFRnYjZnVFZCdURvc2txSFBJR0R4dXhVZ0xJV3dNMU0rNGxuWlBaRUxXaUpWOTZyVk5ZQnZ4VFdDaFJDRFBBLzI2aS82M0VpdHo5ek1KSzJzTTdkakNDemlRMVpFSnNZWm5mczIrOFcwZTVrMXZMd09zTU5RNTRPaElhbFdPMGlvdDAvM0o2RmY4WEM4ZUhoWlVKd240YjRJNHBLbGUvcUtFWnBvbktzVlFHTkR3WUJIWVRQa3NCWlJrQVpwbG9EakxpNG5rMCtTWDgzdy9uZzI1c0Zia2RkZlQwMWx6UXhOS01qQ1I2S0xvb0dpd3Uways0N2ZLb3lYUTdDV3BGbXV3SFNwVVBNZlB6aGp1d1hDalcxSnREeTNpTlpEN0FqQ01mbWQ4dmNiZVQ4TmlXcWRaWmtqTWFjTmxUWU1YSEVOdEVybEJRQjN2ekNFMmIrNE1nSGxpazVqNXpVZldqelVJaTlDSHV3dkhMVXM2TXlCcWNNMVR3ckhudHlQQjZONzZDY1laMEx2OUVBRGZqRzhjZWNZalhHYThBNmFQYklvYXd0VzB5ejA1SjlmYU5ySE5NZEVxVmJKZlRGTnFETzZkTHF6RXg1eThyNXUrNVVrZDAxWFRKOGNrYkR2T01nLytZSFh1b2hNd0VIWkdQdjhkM1A5c29nY3VaZHNNajRnM0gweVVkNG04NFJXcHJneDlNb05MdW9ESnFZeFVKUXlPQ3UyZS9vckpESnA2K3BDNFBHTE9UWGJiTjZCd3V2dkh6S2pKUlQzZ0x3SHBScEQyUTR6V2plOG9FcnBwUkYzK0drTE5FTDM4RDFoTnZhbUFQa0hER01JdnJIT2REYTFPY0RDOU9LYjczZkwxMnBycllkaFNDeTN0NU9OS25ZalRkUUhsK0JwNmxndXljNU5VVWU3RTFxOE1wSmxGdFd4TTF3U0duUkYrNjZCQTMvTVhnWW1sTmNHVFpLTlFwV3Z1bHgwcUgxaDRXcC9SOUtLTjk4R3RuRDBxVmtxZElydHN6NllsbU1jTU1PY3RPVy84OStnZW9mdENVVXE1ZzNKYlRUajdhS005YS9aMFc1OVdBcFFGRkM4SmxBZzl2R0NNdXJNN050NWNCZ1NKL2tHSEJtSWJJTmljYVBYTDlHaVBGL3owaDNSVEdkT0ZLQUR0N0RqeU9xdVc4bURWYVhmbzJDNWpzZzNMS1ZHZUZtTldITzQzb0x6MExzNkJNOEt3UUFCd2F5d29jWUZJMmtTWjh0QlN3OHpZVHUwZFBnR2FsVjM2WmkwSnJXakNVZ01abjNEWTZpOGlHVEtwQ29UNEQvOVVpclgyUnlraDE1Qm5UazE0VVpHWWVpR3VSSWFBWEdkYTNKVmw4MStlamJHeE82bWVrQlhBWEZHTStYQ25EOUxYN1lnSjdBWllMQ0hjdDRaYnhqcjUzbkJCM0c0cDNveUpRanRiWExSd3V3OFJFcW81UERTcFlMUDZaOHRGOGdWSDdSOU4va1FvdGNlWWRFcG9sYm9sd2NOM3lodk5jVXBGTW9NRXc4bGVOSE5jZVdzeGgvL05jTGRQa1RTKytTYXhUVzlDT3NuYVdzSXg1RW5YVi8yNVdqZE9hN0RwOVhpTEI1RTlQcnc2MGFjUFhDM0lkdXpaaXppcXBPOFRsaWFZMU4wQTE3bkZ3ZGV3RExjSXBOaThFNTBJK3V1R2M2OXRVeXBqZERXZHdLZzFPcE1MUTVob2x2L2pDdXQ5YnMvNk1nQlBWc2J5bGhrbnV6VUh4NXZrUHp3aTVISnU3ZTQ1NHAwTVpreFRyNlMrRUNaM1lUdGV5UGE3MHhkTWFLMUNGNFY5YVFxU3JXejNFTVNUUVA0TlZ4UEFudnFZNktNR2liTEdIU012YXk5Zlhnb2I5ZDI3MFRhTWlEVzVxbnN1QURlZ2Y5bTdndWtvcEgwOGVpR2ZpRlludkZHdVdHbmZCdVN1Wk9OcmN4ekE4dWsvTDNhQTc1alcvR09VSERXZ0VBZllJL3FZODFVNCtCRzZCcmhPWlFqUytpaXVoYzJ5a3hEU1Nob3EvNzFEZkRBdW5ZTGppaVFCUHJtRW5wTnVqbXpZSmV5ckptUnJyUGRHdFgvODRUT09wdE9BTmhKZjRpWXVvaXpqdXUzNzl2c1NxVkZPdFFsNTZ2ZjRhZHJ0V2RjcVlwTEpWdDdLVXFVVEJraGxXY1lHUUVhZ1ltekdvY2cwclZNMjQzcnpEVUwvNmErV0N0dTZlYUhyMWcyNm12MHMzRVNNdWppZlRmQjkxU3VtNkNEbnRLTjhlQkoyTWZ2blN0eGJkcllIWVFKaFVFSEZ6b25RbHhXakR5SWFIUDZnMjBTb1ZSU05pK0ZQamR5emJSdkNYWTdSTU91U1BsamJKeStYSlB6RnpWTXVUYUJ6aDZzek9tekdTamtZZDJWczdmSnhlb0NMRjk4clNURUxYek5BNjdCUmdCVHQwL0krRVRRUXdoUnliZDJqc0dEbUtveC83ZFk0UmpURVRtN2RxWVRiU1M0aTJpb244a3p4eFRucUpSUkxTMTArTFBOU2JVSG4rdWQ0NklDa0dYMksvSWFHdEhrNnVYU3VLQWhaN0NyWGUzK2hQR3M4WE4rMy9jRmFDWVYrSHg0bklnNFRiZVFKZzI1OHVoOTBnQ2V1ZS9hN2tvYW9SanVnVGdpRnRTZGZibU42clBOVFhkQmlJakVBM1I2NmEwQ2xPSzVxTEx4WVZieVlNc3JJTk1adFpvOC9lb1Q3alZzL1UrSVRCUmVCdWxQSUpHVXBQOUFRQmdqanlBUVpYMFQ0cW82cDB6SVRia1h0MjgwaE00K3NySjE5SWlDVk0wWEZCYW1BZExLQzhabUFYaGtWeUtJTnVwRnZCbTRVc2YvZnNNaERPaS9PK3R1U3R1Nnp1THFQVXpoTmphRGVzcnFYRjRxd21yL3hQczdqSEtIbTAvWWtmUkpKY1pUNUl4RG81UTFxem5ubHIzSzltUVprd1ozcDdVY0RkQmVvaWFNTkZ5WGdMNEo1WXhVODNuY1FxSUVWaG0zRDljQ3FLOTV0V1ZNcEpBa2kzV2tpV3hNeUFLMGZIa3dvRXU0N1NyV1BONTNhRXNPS0QvUGNuL3FQRllud2NqRjdKOUV4Q3Z6MkZxdjhpTFNBQVpORHNndjV6eWtFZDRQMkd0eGpyVy9xNm8yejdsN1BkN0YvcC93MWxvZTE0RGhGRHlKREFEa0NEbU82ZHozN0hBdXZKdDUzUVE0TnRaY2F1L1VoU1g3OUwvU1JpWlVvcWt0dlRBOTd6K0xHVFJBVFQ5WUprMmprREJicUdDQzFCR1VTbnNncS9lYzZBcXZwN0JlOGlUQ1J0NzVaUWhnMWx1elBZd1VvNjZZMjFuTDZCSXhSemo4MmVSYkE1aVJaVUtZSjdXV0N1K0sxYUlLNTdoMHJrNm5yVVFCZ3oxMzdyVmpZTFRVUDRLaEJCREhlUjBQM3BveUY3VHRQWVJEOE9YT1M4RENWdWdwZVJTRHg5SStqSFBybXd0Y3RxK1hlenBpdDN1ZTlIcFUyR3UzZDBCTk9EaXAxZmJlbk1yeTRjc0UvVWtQNHZjeG5wL0ZOdzlRL1JMUG84cFRVd0N6V0QvUmRrYzNvemJLZFNkUEsxZW41NzRrT1pwV2pWLzNlUU1RUnlPSE1zaDhhY244bERvZm5FRXpwdHYzSWl4NnVlMW43WUdoWlludkp0NDBMZi9PSU5uNktoWU1iMVpZcTdSYjBIQUF2Rzl2SlFMNXE1YnJwOTJaVVRlZE43L3daeGNBOTdjOUpzL2xuM2RJdmx6RnNUbFlHcGorRTY3UThDMW9odmt0Uk5rTmJ1bE5jalZPT3NwVGI3bFRBMlQ0VDdBdE5Md0ZGMTlkOHM5VHJsNzdTWFd1ZjlpMC9OeG5DV1RDQUZJRGd6ZVM4cytmaDVtZi9lZnFGZzUrSzRMemlPZUtwSW1Dbi8wOHM4aytGQ0cxcXNiVlpoRmNZMzhOaDB5RVRrMy9QdThtQ2xDODA5anNvazlzR2Y1dVJ6VStiRmdsR1NlSDJsdlZ1QXlPMXptUFlRcGRtWVFEZ3Y3ZmI2cVZmQXZBakQ5VUpiajAzUHBNWkJDSE1QMFpiQzJ2VjNjNld0Qk5zTlNNUU01NndIekE2Y1BnY0YxdEtsV01qSTEvTVRvK3YrUkd4aHNQdWNnWXoyRXhTeko0Mk1SSC9HK1dWU0xEdWxlaDZyenEvM0l1UC9Nbmx5bFJwaTFaUndPUjZYK2tVZTdRL0x2cTMwdmliMkpUcGhHT3g0ZmxlSlVhKzc2Uk1zVWpXbHJxVlR6azBWQTRSRW5zbW4ybGJPbE90WklmVVFyMWxCV0QrRHFZZWtTbTlqT2RpNUFoRUx0MlVoN3cvOGxib3hSb3FFNFlOWE5FZGtFUmhDRy8rUnErQUpWTXh2RHpMNDFMdjU0SS9hUjZjR2RMK3FEUUlVMEUrckdQQTB3SXp2VjBvZFdDWURvSzdIZEg1MER5V1VoV2x2Lzc4Qm5XeWxnWU54VHBXeG5HSUFQSVN2emprcTl6SXg1Y0c2V29TL01EZm5wVkNBMVJUMlZwczB2NDhCdmxsRmJRemVGWkRhcEtCRy9qak5odkVVd1RKTTY1WG5xRWJ1YTQrSkZuZzFRYjZveXM0cW1FWFVMSHpxVnRSQzNWdVdSRlVFR3BTaFVOak04VHBmQW5qRzEycWxzOE5qT1ZDdURObVdGeUdGT3AyTU8vSWpaemt4alFmNm5KalNIRUU3TE9yVzlhVHl3N05KaUJweTVNSmQxa0VLbmFmaUg1YkF2S2hoVGVEMDMzbGZ6YmhUeXF0Vnlid2Q5a1VxUjBURE1yUEZON0pxbnpNYlFDM0Jkb1NXd1BFSXB5YlFTeFk1MXo1bHFrUEU5SjM0cFpTUHFyRzQxK1JKS0lndStWTW8xWjNVN1NDaC9sTlY3OHFnTDB4SDBpZjFldzVXUG5JT3RkSWhRVm9BaEQzdHVsZHZFQm9kM2g1Sm5iZDZrbnRqaDdSVWFGSHU3TEZiUFJHczR2RzBGaXF4M0pXa0xOQjFFZDZUVloyaVh4bWNHUG05aVVUOGJyN2ZkdCs1dzZ5ZEtyWXJkK29LWlJIZzlDT3JvdjBWK3h6K094NTlXQVVIQ0t0MlM4TFRoV3ZsdjdsMHAzMjlRN1V3dnFlQ0JJNzVNWGRWSC9Sd0FNRVNWbzJQbkJ3TGVpTGlybS9icHk3T0JXUk8xZlBwL2RZTWQ0VTc2b1ZsV2hWR3pNaFN3ckVncXRwSG9iZSs3bEZWYmFGUTUxNUJnNEVXZXNQMW1ZbWljQmViVnArNTZXUUZNRloxOFMzUVNIMHpqaFp1NGpiQUNUTGFlaTZDbEhscmxGeTJ3NGx2d1NQV3JYdzVSYmNRMzV4eUhGV012Uk43NXh6Rm1LWTlGbWFDQ3N6dTdlZ2NTQy40S0Rwd0hKdkE5V25WVDZiUThCTzdhQWt5OW1ZdDhpQktnbVZodmtMbU43SEtvaHZDMEpZVE9QRlNRQUl6RW9Fay1kenpyWTVEQ0I1cTF1aC1wODNPUQ=="/><input type="hidden" name="_eventId" value="submit"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input type="hidden" name="trustAgent" value="" /><input 
                       name="submit1"
                       type="submit"
                       value="Login1"
                       style="display:none; width: 100%"
                /><div id="loginError1">
                        </div>

  <script type="text/javascript">
    var currentMenu = null;
    if (currentMenu == "1") {
      var containerFormInput = $("#fm1Input");
      var containerForm = $("#fm1");
      var originalUsername = null;
      if (originalUsername == null) {
        originalUsername = null;
      }
      var hasErrors = false;
      var errors = [];

      // console.log("trigger processLoginError, passwordLogin");
      // processLoginError(containerFormInput, containerForm, originalUsername, hasErrors, errors, "passwordLogin");
      console.log("init processLoginError", "passwordLogin");
      loginError = {
          containerFormInput: containerFormInput,
          containerForm: containerForm,
          originalUsername: originalUsername,
          hasErrors: hasErrors,
          errors: errors,
          loginType: "passwordLogin",
      };
    }
  </script>

            </form>

            <form method="post" id="fm2" action="login" style="display: none;">
                <input type="hidden" id="username" name="username" v-model="smsCodeLoginUsername" autocomplete="new-username"/><input type="hidden" id="password" name="password" v-model="smsCodeLoginPassword" autocomplete="new-password"/><input type="hidden" name="currentMenu" value="2"/><input type="hidden" name="failN" value="-1"/><input type="hidden" name="execution" value="13e49e21-7857-4e3f-b342-23bed7350fd7_ZXlKaGJHY2lPaUpJVXpVeE1pSjkuWE1PUHR3akFyTjhQL0gxOTZPWXJkZFdLRTJMb3p3RHFMZnVhcmNaK2RRd1FjcFkzNUZkaFAxcS8xRnRKUUs1cWgvRUF0eXphRHBPU1drMTBpRG5jVG0zRFFoT0M2WjhDL091WkMrVWRkRUFPTVI1a2lIQWdBZnhkejBjVzR4N1k0Z3duZDRHR2ZnL1VYQVJoOGNwUnZ0Y2tSRjFRcWFHbkwzSHc3VnlVeTIvNzFHQ1orc3dXWXhHdDY3dDJIa2d4L2twVnFnUEQ5YTl5MjVZNkRYTmlvcGhzWHo1M3hMeUU0cWlrVHFFN3ZhdURCODhQZ0RMdzdWNWQ5TTMxc2wvWnJLZFNkRTljQ0lXUDMySE5xdUZxcXVSWStod1hkWlFQOUd6czBZNERZUkpZVnl5c0RIVmFFdnlCRE84SGMxZkQxL1g0OGpHV29TNE1aV01MZ01BdVk3UVhhWUdpVDV4ejQ5dFdNRzhmYVArd292TkNnNi9sVVdFcFdaWEJoSStIOXBQSWNEeGFsclYyMkVXdUVTdFVvVGp0c0V4QmhLREJDVEdiQURVOUs3dTFxYjFWVTk2VjcyZVlTYmU0bTArREdNZnVad1J4ZHJkUE4xL1RuUks4TkxjZGRMOUlVN2pnSDhBSjh2L3lISWZXdEh0ajdkaGRlbDl5YVQ0YWZaeFU4OUU5aFlTeVBTSHczQlRUNHhsU21mVFZYZy9rSHRvVUdiRTFuMjFQUlFDVG1xZVg1Q0VOMUJFd1ZQRTR5eWlxT0prWEhpNzRxQmxpYnVoZU9tcktwUU9mcDZCb25QODRLMFFmTy9lRzJwL3crNGV5cjA5bTkvODZsNTcwUlN2QWI2Y1czSzhNeXN5S3pTazlVZU9JZ3lreXh4cG9FVkYwckFNS1g5ck5RMWd4dUJMOFNKSjhtOUZIdGNDNEpVczZ3TE96eWZ3UUczRDk4SUpZL3BSa1FIYmt4STlXQnVwR1UzS25aZ0VvZlE4VzdBQzVLRlJzNlN3UHhrc25yVEpoSE1vcTA2cnJQSW1tdHdDQzBRVGhYTGlRQTlYR3VXbFVxREFEWTBtSXVHNG1jakJwNlpZNVQremhSYy94b1owYXh3RVk1RSt3aVRpMHV1NFBuM2ZLaGRXUERQZHV1QjcwT09vRllIS0c0T3QxYUh0bGhSUDJpV0VTWHh3MmQzS3R3eExmcktRcjBKYmprVWN5UENhRDZRZm1iMFYvL2pvdnc3MElrUGhodTBTSGRkWUc5L3R5S1FHWDNJaTl0cmh6MDZEbkhCSDZzZFZRcTd1Q2lkVDk1b0pOYnREWEwxSUxyV3MxNndjV3lEQXRVZm5MK0FuZk1QQmlYYm1GWStDQVFyWEVyTDIrT1BMSXJ6REJzcnEvMlEvZW5KYTNZSUtCODBQV0F0WmxhZ1ZjK3lNL3VtM002N1A5eUViOUd6NnkrWkVXWjl3RGc0ODBsUzBRYlVrejgvTWhLS084SndTakdEaGFsdXdqZmZ4ZER1VDJ3aEJ1ckY0cXNXYXBxR0NQZDRzbGZyU0RzRm9QR2lpSkRMaXR0d3FCVlJKQUhLSGZQNGZsVWdFeDljdDhINUJJWkJES2EyT0kzVmEzeVAxQU5QVnlheGF1aGFkdm1sV0ZERTRlQ0thMmpvbHRrM0c3cjlBQTZqZVFTdkNxZllxelZHdElnU01QY1BCN21hN3lVci94TkFHNEs4RTJJQWdkTmdlT1NUa1Y4aVlFNjdhNWZWM05COTI0VW1NMnFZb3ZOU3d2Z2lsREpzYW5Idkx6RXpQenZPTUJZaTFYTXFnQklna1N1TE9xME9xMXhTRU1aQWRkY1FrOXEySU9UMytUOG90cU5SV2VuZTZha1B1M25vMjVQVi92NXUrTWZ0UUdLbHo0T2UyZE5UcGN0NWJ3Tk9iK2MzdjhOWUlUblNPUGtaWTA0eW13VEw1VmRnQnZrM25MVmtneTZMVUNNMGVURVAxbGt0WmFJY1FHWG1FZFFKNS90aGJIT2pZc09yYWo5S2hzNUZHQlZQc09aTWNIb21sVkNLRkg4OExNbGVyS29ZODJqM1NoZ3Z3VHVsYndqMXlpZjR6MmZwRVR6d1JNTmIwSGxXSEx4L0h6Y0tWalNjT25KSDl3NDhwUDRkQXRuSUtQMktqMTAvVWZwYmtaVWg1V21CSjVLQkdVL2ExRkRHVkMzdVdlRFBaakhJbFphRWkwM3hrTWIwNXE4b2lzTzdFdkVkeUg0NFdBeGxCL3p1dUQ5WkpRcHlTMjF3bFAxZ3pHNU9wODUrV0dTbkVTQ0tieEwva1RkVi8vb0dWSTF4eGtEVU9FcUtNenB6TmRBT2pYZnRRYkZNc21zZHdSU2xZbS9QbE1PQnlBZGxKSmh0aVgxWHhIMjd6YmYwcWp2QUpZbW9rRFgvSGhCclZOYXBESDRHSVZOS29MbnFCTVNNU21mcUtZeGhsemcxZzNaODVKakxieXk3cWl5ZGdpVlA1aWRFMzJFR2ttaStqOFlUc28xeER2MzVsMll0UjM5MEtJU01vMWhyOXV6T29ZMUdKSW10NzlsTVBlQUd2TnpiY00vQnZlOWRMeVVvYzJoV295RnNSNHNrN2dKaHlZMjNBZW5pajhMakkrQ1paUkxqNFBhcWR6dWgxaEY1aG1YYS9mMnhKczJtalRvSU5YQmUxTVErYzR0NkNILysvZWhkcUZrVjNDNXlxSVdmMDZEbGhqcDJuVmlJZWF4K0xZRjhEWkN3N1V0WDRLV0VZcWRLQy8yM2E5OWJ2VUh6N0VBcVVrNmJtY3hVMHB4RHhLUXN1TG5OV2JlZitLUkFRZWpCdkt3WVBoUlFyOE1SRW5IZ0sranJmMUdCUk13MUxnbkdnaUdRUGMzQzRkemQxaEw0N3BaUlowdUpKRTRIR2xrSWZRVVR3RzR6UDNaR2Y2TTh0aWhHYzR4S2JOcTI4WnhlbjB1dUlxU1VqS1ZxNm15dTFjL1hmdVJpbDl3aktLRUxCZlRoNENyRERMcHI2bjRzbStLRVdPSlViT3F0aHZZa1IyZmoxdjR5RkphRzdJVFpuRHFOWjh4dmdFMG1ucElVYlVrSnk0RXFxcGs5MkcrdUlYRmF0VFFKa2FxWHVhQ2FCaVNVYTBla0t0dHZkbU9vSHB1QkN1OUlXS3MxcDkySzN3Q0IyMFBOd3J5L3c1aFN4ZWVLSklBa3hlVGxTVXVyWU05YmgyVlRNbVpkZHpvaUZsa0JVU2U0NDVDUjV3NXdlRVRQVmpCNDF1TzRhNkRvZWo4Y3Y4Ukw4TGhvUjRzQ1pzanlIRVpjZ0c0SXo4ZElGcktnSkFhWGhLUnJFT2tpdmJsQlRnOG9EeW9xT01iOHd0bjcvbFBkUFNHVC9yNU5jREp0L213OU02bGVaV0dSelB3WXk1WVkvYVV1OHIvYURUMXpueFExb3JrMnZHM0cxUjcvUzdGUngvZzhOaDhhYldXNnRlRm5lbHR0U0NINysyM2s1c0JWcFNYNXd1a3Jvb3QxaW1nNFZGcDVyOWFKa0psc3E1V2hXTytidkdUcXZRTmpVVUYyZ1ZTci9UQzRGZUlBcCtZVzUwbHMrbjUwUkg5aU5zT2NMSW5QSFV3YzNvU25rODFGc0VNZ2l3eHY1SDUzRmxiV1M5bmloTTFyVDV6TFlnaWVxTTYrQ25NYWVXUjgrbjM4czZSSjVuQjhHU3B4MVcwQiszTE9WNEFoaVBWNDhHM201KzhuMFlYTlViM05vcUFpY00rcUFRRFQ4ZHlNd1ZkWWRLUnlUbEZQSzFpaUFyclMzVkM2K0J0c0RxcXI2TCtxTkxSMjNvallvNlhhM2IrR0prTUxSakg3U3ZtR1pQZlRMalV0b0tOb2I2d0hnaWdCdmxTNlVzL2MxRmZXcHBYWmxrQUhZZ3h6OEdZclBCN2dOTDluVUg5QkFmeGtISzBPOXk4c0kvSk1jL2VKdXRSdlJTYWFoSlNRUDAwZ1lsVnpWbSt1UDJVYnd3aERFd2JQL2lCRDBPdkVLU1NmVFpsZmdWQmEyd2hHMXJtWWl1NjRoUWdsN05EVk0wbDJydFNEZXhOWkRDN1ZGNncwUU1jL0N3RFI3NjZHK3JvLzlvbnhDS0tFTjlvcHYxQnRSMitGc0hHR2dJMEVkem9oYXRsRU5FNU50T2ljK2NQYzFnTldwbkc2L2J3cmxGdzhUSEpsM28xTjBTem9DL2xRZzJCV1VtRjBFZkl6RDY1KzFmU2h5eVYwNk1LUEw1bUt3ZjVYWEpjdFJGY29UTUVVTVNZL05BNGtucGdUMUpMeEw1NmlVQjJscGc0UzBzQzRxUWdURGh1dk1SVEVxaWxrelY0Q0JqbkpXZWlwdFBvUVlWMjVDd0Y2U3U4TnBoRnRUd3VWbXpycXRKMjJVUE5FQVVadDRiRXFENGorZzdWaXhabElvNEEwZmJtak96MTZGcXFNTU9XeUVyeGdIdm9ZRFlzaUVOSkVTTnlHdjNhSWFmYUVkSCtoN3ZyQzFwTGtPM0tCSnZuVDlQQXpXOTNRUHJLNWtrMC92T3VtVlhpYURRa3ErbnpTSEYybXZ1Zld1WHJDcjdjR3Z3b0oza1ArcUVjZGkwbjlBVWZjQmpqL2R4V0RPdFFBL3NrVXlqdFpKY1FheWF6akdWVXNITzVqTjdQZkY2OVhvRmxLTGdIY3lJZGswNHNGZFVmWkVraGREaTV0VUFEVXBaUEtRRFNZM3ZiNTY2Q082MU4vTUN2cDMxN3NiSDdWZmZwS2FRUERGaEJjcExjeTFLcUE1cUtpcHdBV2w3R1lnZCsrc1FPeGtua09FUElYbFVaUnV5ai9SeUN6QVlvRlBXSXQyaXMxMzcvU0k1R0tFdk1uYkdDV0owYW1vZk85bndwbmlHOHpNTUpWNDI4MnNWUjE2VXRCYWJ1a3lSL0ZIVFZ0TDBjWlI4d3VIRlZpNDdPb0pBeDd2WW1aaWdqVVJXS3JyR2FMb1VSME03c043cytzSTNuaDNXanlTK2lsaGRacWV6Y3pUOGdvalZhRmtYWU5GaDNkMWh6RnBvSkk0SitKYzJxZFBnSjN1ZGM3czZzVmhZWjM4c2dtb1VwRzBBWkxCamR5L1MrbHBYNmhGRVhhUWxyckI5YkNzQ0FOQ3RQc2hlcERvQjVHSGpqRjVtUjVibFIxR3p3Zk42Qm1kUitFT09GYnFpZGt3ZHR0THk2Zzh4bkRubWQzYk9Pa01JdWJzMzErOVp0c3VlcHQzTXBKUE5nRXcxUE51SXBKQm9vaEhsM2pjTUdpMVo2NlZXUnZsRlpMMmh5Um9oNWdNT1dHU2ZWUFVqUk5Xb1lzekpjMU83MzRNV3g5aFgxKy9vbWJDanZLRTZFWkp2YkMyQm1WVTlQRTVzc3lveUVGblhOaTZNbmdXazdTSWJ4ZVl5a1Y1bWNwVjBraUtFQ2hFcGFrQWVhc0hmcllneTNmMVJtL3VBUHNOSzl3b3BIYmk0YnQ0WFF1VU92YzBLMzA2TnNmbmZ6TXFIRkFjSmNHVGozOXNmRFhNc0I2VUxJVlFxOEx6d2VXalV4WVRHOUZOOWNHZmp6ZUdwMlJGWFRnYjZnVFZCdURvc2txSFBJR0R4dXhVZ0xJV3dNMU0rNGxuWlBaRUxXaUpWOTZyVk5ZQnZ4VFdDaFJDRFBBLzI2aS82M0VpdHo5ek1KSzJzTTdkakNDemlRMVpFSnNZWm5mczIrOFcwZTVrMXZMd09zTU5RNTRPaElhbFdPMGlvdDAvM0o2RmY4WEM4ZUhoWlVKd240YjRJNHBLbGUvcUtFWnBvbktzVlFHTkR3WUJIWVRQa3NCWlJrQVpwbG9EakxpNG5rMCtTWDgzdy9uZzI1c0Zia2RkZlQwMWx6UXhOS01qQ1I2S0xvb0dpd3Uways0N2ZLb3lYUTdDV3BGbXV3SFNwVVBNZlB6aGp1d1hDalcxSnREeTNpTlpEN0FqQ01mbWQ4dmNiZVQ4TmlXcWRaWmtqTWFjTmxUWU1YSEVOdEVybEJRQjN2ekNFMmIrNE1nSGxpazVqNXpVZldqelVJaTlDSHV3dkhMVXM2TXlCcWNNMVR3ckhudHlQQjZONzZDY1laMEx2OUVBRGZqRzhjZWNZalhHYThBNmFQYklvYXd0VzB5ejA1SjlmYU5ySE5NZEVxVmJKZlRGTnFETzZkTHF6RXg1eThyNXUrNVVrZDAxWFRKOGNrYkR2T01nLytZSFh1b2hNd0VIWkdQdjhkM1A5c29nY3VaZHNNajRnM0gweVVkNG04NFJXcHJneDlNb05MdW9ESnFZeFVKUXlPQ3UyZS9vckpESnA2K3BDNFBHTE9UWGJiTjZCd3V2dkh6S2pKUlQzZ0x3SHBScEQyUTR6V2plOG9FcnBwUkYzK0drTE5FTDM4RDFoTnZhbUFQa0hER01JdnJIT2REYTFPY0RDOU9LYjczZkwxMnBycllkaFNDeTN0NU9OS25ZalRkUUhsK0JwNmxndXljNU5VVWU3RTFxOE1wSmxGdFd4TTF3U0duUkYrNjZCQTMvTVhnWW1sTmNHVFpLTlFwV3Z1bHgwcUgxaDRXcC9SOUtLTjk4R3RuRDBxVmtxZElydHN6NllsbU1jTU1PY3RPVy84OStnZW9mdENVVXE1ZzNKYlRUajdhS005YS9aMFc1OVdBcFFGRkM4SmxBZzl2R0NNdXJNN050NWNCZ1NKL2tHSEJtSWJJTmljYVBYTDlHaVBGL3owaDNSVEdkT0ZLQUR0N0RqeU9xdVc4bURWYVhmbzJDNWpzZzNMS1ZHZUZtTldITzQzb0x6MExzNkJNOEt3UUFCd2F5d29jWUZJMmtTWjh0QlN3OHpZVHUwZFBnR2FsVjM2WmkwSnJXakNVZ01abjNEWTZpOGlHVEtwQ29UNEQvOVVpclgyUnlraDE1Qm5UazE0VVpHWWVpR3VSSWFBWEdkYTNKVmw4MStlamJHeE82bWVrQlhBWEZHTStYQ25EOUxYN1lnSjdBWllMQ0hjdDRaYnhqcjUzbkJCM0c0cDNveUpRanRiWExSd3V3OFJFcW81UERTcFlMUDZaOHRGOGdWSDdSOU4va1FvdGNlWWRFcG9sYm9sd2NOM3lodk5jVXBGTW9NRXc4bGVOSE5jZVdzeGgvL05jTGRQa1RTKytTYXhUVzlDT3NuYVdzSXg1RW5YVi8yNVdqZE9hN0RwOVhpTEI1RTlQcnc2MGFjUFhDM0lkdXpaaXppcXBPOFRsaWFZMU4wQTE3bkZ3ZGV3RExjSXBOaThFNTBJK3V1R2M2OXRVeXBqZERXZHdLZzFPcE1MUTVob2x2L2pDdXQ5YnMvNk1nQlBWc2J5bGhrbnV6VUh4NXZrUHp3aTVISnU3ZTQ1NHAwTVpreFRyNlMrRUNaM1lUdGV5UGE3MHhkTWFLMUNGNFY5YVFxU3JXejNFTVNUUVA0TlZ4UEFudnFZNktNR2liTEdIU012YXk5Zlhnb2I5ZDI3MFRhTWlEVzVxbnN1QURlZ2Y5bTdndWtvcEgwOGVpR2ZpRlludkZHdVdHbmZCdVN1Wk9OcmN4ekE4dWsvTDNhQTc1alcvR09VSERXZ0VBZllJL3FZODFVNCtCRzZCcmhPWlFqUytpaXVoYzJ5a3hEU1Nob3EvNzFEZkRBdW5ZTGppaVFCUHJtRW5wTnVqbXpZSmV5ckptUnJyUGRHdFgvODRUT09wdE9BTmhKZjRpWXVvaXpqdXUzNzl2c1NxVkZPdFFsNTZ2ZjRhZHJ0V2RjcVlwTEpWdDdLVXFVVEJraGxXY1lHUUVhZ1ltekdvY2cwclZNMjQzcnpEVUwvNmErV0N0dTZlYUhyMWcyNm12MHMzRVNNdWppZlRmQjkxU3VtNkNEbnRLTjhlQkoyTWZ2blN0eGJkcllIWVFKaFVFSEZ6b25RbHhXakR5SWFIUDZnMjBTb1ZSU05pK0ZQamR5emJSdkNYWTdSTU91U1BsamJKeStYSlB6RnpWTXVUYUJ6aDZzek9tekdTamtZZDJWczdmSnhlb0NMRjk4clNURUxYek5BNjdCUmdCVHQwL0krRVRRUXdoUnliZDJqc0dEbUtveC83ZFk0UmpURVRtN2RxWVRiU1M0aTJpb244a3p4eFRucUpSUkxTMTArTFBOU2JVSG4rdWQ0NklDa0dYMksvSWFHdEhrNnVYU3VLQWhaN0NyWGUzK2hQR3M4WE4rMy9jRmFDWVYrSHg0bklnNFRiZVFKZzI1OHVoOTBnQ2V1ZS9hN2tvYW9SanVnVGdpRnRTZGZibU42clBOVFhkQmlJakVBM1I2NmEwQ2xPSzVxTEx4WVZieVlNc3JJTk1adFpvOC9lb1Q3alZzL1UrSVRCUmVCdWxQSUpHVXBQOUFRQmdqanlBUVpYMFQ0cW82cDB6SVRia1h0MjgwaE00K3NySjE5SWlDVk0wWEZCYW1BZExLQzhabUFYaGtWeUtJTnVwRnZCbTRVc2YvZnNNaERPaS9PK3R1U3R1Nnp1THFQVXpoTmphRGVzcnFYRjRxd21yL3hQczdqSEtIbTAvWWtmUkpKY1pUNUl4RG81UTFxem5ubHIzSzltUVprd1ozcDdVY0RkQmVvaWFNTkZ5WGdMNEo1WXhVODNuY1FxSUVWaG0zRDljQ3FLOTV0V1ZNcEpBa2kzV2tpV3hNeUFLMGZIa3dvRXU0N1NyV1BONTNhRXNPS0QvUGNuL3FQRllud2NqRjdKOUV4Q3Z6MkZxdjhpTFNBQVpORHNndjV6eWtFZDRQMkd0eGpyVy9xNm8yejdsN1BkN0YvcC93MWxvZTE0RGhGRHlKREFEa0NEbU82ZHozN0hBdXZKdDUzUVE0TnRaY2F1L1VoU1g3OUwvU1JpWlVvcWt0dlRBOTd6K0xHVFJBVFQ5WUprMmprREJicUdDQzFCR1VTbnNncS9lYzZBcXZwN0JlOGlUQ1J0NzVaUWhnMWx1elBZd1VvNjZZMjFuTDZCSXhSemo4MmVSYkE1aVJaVUtZSjdXV0N1K0sxYUlLNTdoMHJrNm5yVVFCZ3oxMzdyVmpZTFRVUDRLaEJCREhlUjBQM3BveUY3VHRQWVJEOE9YT1M4RENWdWdwZVJTRHg5SStqSFBybXd0Y3RxK1hlenBpdDN1ZTlIcFUyR3UzZDBCTk9EaXAxZmJlbk1yeTRjc0UvVWtQNHZjeG5wL0ZOdzlRL1JMUG84cFRVd0N6V0QvUmRrYzNvemJLZFNkUEsxZW41NzRrT1pwV2pWLzNlUU1RUnlPSE1zaDhhY244bERvZm5FRXpwdHYzSWl4NnVlMW43WUdoWlludkp0NDBMZi9PSU5uNktoWU1iMVpZcTdSYjBIQUF2Rzl2SlFMNXE1YnJwOTJaVVRlZE43L3daeGNBOTdjOUpzL2xuM2RJdmx6RnNUbFlHcGorRTY3UThDMW9odmt0Uk5rTmJ1bE5jalZPT3NwVGI3bFRBMlQ0VDdBdE5Md0ZGMTlkOHM5VHJsNzdTWFd1ZjlpMC9OeG5DV1RDQUZJRGd6ZVM4cytmaDVtZi9lZnFGZzUrSzRMemlPZUtwSW1Dbi8wOHM4aytGQ0cxcXNiVlpoRmNZMzhOaDB5RVRrMy9QdThtQ2xDODA5anNvazlzR2Y1dVJ6VStiRmdsR1NlSDJsdlZ1QXlPMXptUFlRcGRtWVFEZ3Y3ZmI2cVZmQXZBakQ5VUpiajAzUHBNWkJDSE1QMFpiQzJ2VjNjNld0Qk5zTlNNUU01NndIekE2Y1BnY0YxdEtsV01qSTEvTVRvK3YrUkd4aHNQdWNnWXoyRXhTeko0Mk1SSC9HK1dWU0xEdWxlaDZyenEvM0l1UC9Nbmx5bFJwaTFaUndPUjZYK2tVZTdRL0x2cTMwdmliMkpUcGhHT3g0ZmxlSlVhKzc2Uk1zVWpXbHJxVlR6azBWQTRSRW5zbW4ybGJPbE90WklmVVFyMWxCV0QrRHFZZWtTbTlqT2RpNUFoRUx0MlVoN3cvOGxib3hSb3FFNFlOWE5FZGtFUmhDRy8rUnErQUpWTXh2RHpMNDFMdjU0SS9hUjZjR2RMK3FEUUlVMEUrckdQQTB3SXp2VjBvZFdDWURvSzdIZEg1MER5V1VoV2x2Lzc4Qm5XeWxnWU54VHBXeG5HSUFQSVN2emprcTl6SXg1Y0c2V29TL01EZm5wVkNBMVJUMlZwczB2NDhCdmxsRmJRemVGWkRhcEtCRy9qak5odkVVd1RKTTY1WG5xRWJ1YTQrSkZuZzFRYjZveXM0cW1FWFVMSHpxVnRSQzNWdVdSRlVFR3BTaFVOak04VHBmQW5qRzEycWxzOE5qT1ZDdURObVdGeUdGT3AyTU8vSWpaemt4alFmNm5KalNIRUU3TE9yVzlhVHl3N05KaUJweTVNSmQxa0VLbmFmaUg1YkF2S2hoVGVEMDMzbGZ6YmhUeXF0Vnlid2Q5a1VxUjBURE1yUEZON0pxbnpNYlFDM0Jkb1NXd1BFSXB5YlFTeFk1MXo1bHFrUEU5SjM0cFpTUHFyRzQxK1JKS0lndStWTW8xWjNVN1NDaC9sTlY3OHFnTDB4SDBpZjFldzVXUG5JT3RkSWhRVm9BaEQzdHVsZHZFQm9kM2g1Sm5iZDZrbnRqaDdSVWFGSHU3TEZiUFJHczR2RzBGaXF4M0pXa0xOQjFFZDZUVloyaVh4bWNHUG05aVVUOGJyN2ZkdCs1dzZ5ZEtyWXJkK29LWlJIZzlDT3JvdjBWK3h6K094NTlXQVVIQ0t0MlM4TFRoV3ZsdjdsMHAzMjlRN1V3dnFlQ0JJNzVNWGRWSC9Sd0FNRVNWbzJQbkJ3TGVpTGlybS9icHk3T0JXUk8xZlBwL2RZTWQ0VTc2b1ZsV2hWR3pNaFN3ckVncXRwSG9iZSs3bEZWYmFGUTUxNUJnNEVXZXNQMW1ZbWljQmViVnArNTZXUUZNRloxOFMzUVNIMHpqaFp1NGpiQUNUTGFlaTZDbEhscmxGeTJ3NGx2d1NQV3JYdzVSYmNRMzV4eUhGV012Uk43NXh6Rm1LWTlGbWFDQ3N6dTdlZ2NTQy40S0Rwd0hKdkE5V25WVDZiUThCTzdhQWt5OW1ZdDhpQktnbVZodmtMbU43SEtvaHZDMEpZVE9QRlNRQUl6RW9Fay1kenpyWTVEQ0I1cTF1aC1wODNPUQ=="/><input type="hidden" name="_eventId" value="submitPasswordlessToken"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input type="hidden" name="trustAgent" value="" /><input 
                       name="submit2"
                       type="submit"
                       value="Login2"
                       style="display:none; width: 100%"
                /><div id="loginError2">
                        </div>

  <script type="text/javascript">
    var currentMenu = null;
    if (currentMenu == "2") {
      var containerFormInput = $("#fm2Input");
      var containerForm = $("#fm2");
      var originalUsername = null;
      if (originalUsername == null) {
        originalUsername = null;
      }
      var hasErrors = false;
      var errors = [];

      // console.log("trigger processLoginError, smsCodeLogin");
      // processLoginError(containerFormInput, containerForm, originalUsername, hasErrors, errors, "smsCodeLogin");
      
      console.log("init processLoginError", "smsCodeLogin");
      loginError = {
          containerFormInput: containerFormInput,
          containerForm: containerForm,
          originalUsername: originalUsername,
          hasErrors: hasErrors,
          errors: errors,
          loginType: "smsCodeLogin",
      };
    }
  </script>

            </form>


            <form method="post" id="fm3" action="login" style="display: none;">
                <input type="hidden" name="qrCodeKey" v-model="qrCodeStateKey" autocomplete="new-qrCodeKey" /><input type="hidden" name="currentMenu" value="3"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input type="hidden" name="trustAgent" value="" /><input class="btn btn-submit" name="_eventId_success" type="submit" value="Submit"/></form>

    <div class="card mfa">

    <el-dialog v-if="mfaEnabled"
      class="dialog-wrap"
      title="安全验证"
      :visible.sync="guardDialogVisible"
      width="506px"
      height="420px"
      :before-close="hideGuardDialog">

      <div class="check-tips"><img src="/cas/themes/mf/images/tip.svg"></img>当前登录环境异常，需通过安全验证确认是本人操作后才可继续登录。请选择安全验证方式！</div>
      
      <div class="check-tips"><el-checkbox label="true" v-model="trustAgent">登录成功后，设为可信客户端</el-checkbox></div>
      
      <div class="type-wrap">
        <el-row type="flex" align="center" justify="space-between">
          <el-col :span="12" class="safe-flex">
            <img class="safe-title-icon" :src="typeInfo[typeIndex].icon" :alt="typeInfo[typeIndex].title" :title="typeInfo[typeIndex].title"><span class="type-title">{{typeInfo[typeIndex].info}}</span>
          </el-col>
          <el-col :span="12" class="safe-flex safe-flex2">
            <span class="other-title">其他方式</span>
            <span v-for="(type,index) in typeInfo" :key="index">
              <img :class='index==typeIndex?"safe-icon":"safe-title-icon"' style="cursor: pointer; margin-right: 6px;" v-if="typeInfo[index].enabled" :src="index==typeIndex?type.icon2:type.icon" :disabled="index==typeIndex" :alt="type.title" :title="type.title" @click="changeGuard(index)" ></span>
          </el-col>
        </el-row>
      </div>

      <div v-if="typeIndex==0" class="app-style" style="height: 100px;">
        <div>点击发送验证请求后，请在 <span>超级APP</span> 上进行确认，完成安全验证</div>
        <div class="code-wrap">
          <div v-show="appPushCallbackCode" style="position: relative; text-align: center; font-size: 19px; margin-top: 15px;">确认码：{{appPushCallbackCode}}</div>
          <div class="error-text" v-show="appPushStatusShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{appPushStatusAlertMessage}}</div>
        </div>
      </div>
      
      <div v-if="typeIndex==1" class="phone-style-wrap" style="height: 160px; padding-bottom: 3px;">
        <div class="phone-style" v-show="securePhone"><span>+86</span> {{securePhone}}</div>
        <div class="code-wrap">
          <el-input class="input-style" v-show="securePhone" v-model="securePhoneCode" placeholder="请输入验证码"></el-input>
          <el-button type='text' class="code-text" v-show="securePhone" @click="securePhoneSend" :disabled="securePhoneSendDisabled">{{securePhoneSendText}}</el-button>
          <div class="error-text" v-show="securePhoneValidShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{securePhoneValidAlertMessage}}</div>
          <div class="error-text" v-show="!securePhone" style="position: relative; text-align: center; font-size: 12px;">安全手机未绑定，无法使用安全手机验证</div>
        </div>
      </div>
      
      <div v-if="typeIndex==2" class="phone-style-wrap" style="height: 160px; padding-bottom: 3px;">
        <div class="phone-style" v-show="secureEmail">{{secureEmail}}</div>
        <div class="code-wrap">
          <el-input class="input-style" v-show="secureEmail" v-model="secureEmailCode" placeholder="请输入验证码"></el-input>
          <el-button type='text' class="code-text" v-show="secureEmail" @click="secureEmailSend" :disabled="secureEmailSendDisabled">{{secureEmailSendText}}</el-button>
          <div class="error-text" v-show="secureEmailValidShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{secureEmailValidAlertMessage}}</div>
          <div class="error-text" v-show="!secureEmail" style="position: relative; text-align: center; font-size: 12px;">安全邮箱未绑定，无法使用安全邮箱验证</div>
        </div>
      </div>
      
      <div v-if="typeIndex==3" class="face-style-wrap" style="height: 160px; padding-bottom: 3px;">

        <div class="qrcode" v-if='!qrCodeScanSuccess'>
          <img v-if="qrCodeScanQrcode" :src="qrCodeScanQrcode"><div class="qrcode-reset-opacity" v-if='qrCodeStatusShowAlert'></div>
          <div class="qrcode-reset-wrap" v-if='qrCodeStatusShowAlert' @click="qrCodeRefresh">
            <i class="el-icon-refresh-right"></i>
            <div>点击刷新二维码</div>
          </div>
        </div>
        <div v-if='!qrCodeScanSuccess'>支持 {{qrCodeScanTypeNames}} 的扫一扫功能，完成安全验证</div>

        <div class="face-sucess" v-if='qrCodeScanSuccess && qrCodeStatusShowAlert'>
          <img src="/cas/themes/mf/images/safe/dui.png"><div>{{qrCodeStatusAlertMessage}}</div>
        </div>
        <div v-if='qrCodeScanSuccess && qrCodeStatusShowAlert' v-show="qrCodeCallbackCode" style="position: relative; text-align: center; font-size: 19px; margin-bottom: 15px;">确认码：{{qrCodeCallbackCode}}</div>
        <div v-if='qrCodeScanSuccess && qrCodeStatusShowAlert'>请在手机上点击同意以完成安全验证</div>
      </div>
      
      <div v-if="typeIndex==4" class="face-style-wrap" style="height: 160px; padding-bottom: 3px;">
        <div class="qrcode" v-if='!faceVerifyScanSuccess'>
          <img v-if="faceVerifyScanFaceverify" :src="faceVerifyScanFaceverify"><div class="qrcode-reset-opacity" v-if='faceVerifyStatusShowAlert'></div>
          <div class="qrcode-reset-wrap" v-if='faceVerifyStatusShowAlert' @click="faceVerifyRefresh">
            <i class="el-icon-refresh-right"></i>
            <div>点击刷新二维码</div>
          </div>
        </div>
        <div v-if="!faceVerifyScanSuccess">打开 <span>超级APP</span> 扫一扫功能，扫描二维码进行人脸识别，完成安全验证</div>
        
        <div class="face-sucess" v-if='faceVerifyScanSuccess && faceVerifyStatusShowAlert'>
          <img src="/cas/themes/mf/images/safe/dui.png"><div>{{faceVerifyStatusAlertMessage}}</div>
        </div>
      </div>
      
      <div v-if="typeIndex==5" class="app-style" style="height: 100px;">
        <div v-show="otpSecret">打开OTP验证器获取OTP动态口令，完成安全验证</div>

        <div class="code-wrap" style="padding: 15px 30px;">
          <el-input class="input-style" v-show="otpSecret" v-model="otpCode" placeholder="请输入OTP动态口令"></el-input>
          <div class="error-text" v-show="otpValidShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{otpValidAlertMessage}}</div>
          <div class="error-text" v-show="!otpSecret" style="position: relative; text-align: center; font-size: 12px;">OTP令牌未绑定，无法使用OTP令牌验证</div>
        </div>
        <div class="check-tips" v-show="otpSecret" style="padding: 5px 30px; text-align: left;"><img src="/cas/themes/mf/images/tip.svg"></img>支持 小程序类（数盾OTP）、APP类（Google Authenticator、Microsoft Authenticator）等OTP验证器</div>
      </div>
      
      <span slot="footer" class="dialog-footer" style="height: 50px; display: block;">
        <el-button type="primary" v-if="typeIndex==0" @click="appPushSend" :disabled="appPushSendDisabled">{{appPushSendText}}</el-button>

        <el-button type="primary" v-if="typeIndex==1" v-show="securePhone" @click='securePhoneValid' :disabled="!securePhoneCode">确 定</el-button>
        <el-button type="primary" v-if="typeIndex==2" v-show="secureEmail" @click='secureEmailValid' :disabled="!secureEmailCode">确 定</el-button>

        <el-button type="primary" v-if="typeIndex==5" v-show="otpSecret" @click='otpValid' :disabled="!otpCode">确 定</el-button>

      </span>

    </el-dialog>

            </div>
  
  </div>
  
  </div>

<script type="text/javascript">

function getQueryString(paramName) {
  var reg = new RegExp("(^|&)" + paramName + "=([^&]*)(&|$)");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return unescape(r[2]);
  return "";
}

var isDebug = getQueryString("debug") != null && getQueryString("debug") != "";

var isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) != null;

var mobilePattern = new RegExp("^1[0-9]{10}$", 'i');

var registeredServiceName = "\u7EFC\u5408\u670D\u52A1\u95E8\u6237";
console.log("registeredServiceName", registeredServiceName);

var globalI18n = eval('(' +"{\"screen.notice.button.close\":\"\u6211\u77E5\u9053\u4E86\",\"screen.welcome.button.loginwip\":\"\u7A0D\u7B49\u7247\u523B\u2026\u2026\",\"screen.pm.button.forgotpwd\":\"\u5FD8\u8BB0\u5BC6\u7801\uFF1F\",\"screen.rememberme.checkbox.title\":\"\u8BB0\u4F4F\u6211\",\"screen.pm.button.submit\":\"\u63D0\u4EA4\",\"screen.pm.button.downloadapp\":\"\u4E0B\u8F7D APP\",\"kimxz\":\"WPS \u534F\u4F5C\",\"screen.pm.button.cancel\":\"\u53D6\u6D88\",\"cas.login.by.password\":\"\u8D26\u53F7\u5BC6\u7801\u767B\u5F55\",\"screen.welcome.label.browsersupport\":\"\u6D4F\u89C8\u5668\u652F\u6301\",\"screen.welcome.label.mobile.placeholder\":\"\u8BF7\u8F93\u5165\u624B\u673A\u53F7\",\"screen.captcha.warning\":\"\u60A8\u7684\u64CD\u4F5C\u7591\u4F3C\u5F02\u5E38\uFF0C\u8BF7\u8F93\u5165\u56FE\u5F62\u9A8C\u8BC1\u7801\",\"dingtalk\":\"\u9489\u9489\",\"screen.welcome.label.password\":\"\u5BC6\u3000\u7801:\",\"workweixin\":\"\u4F01\u4E1A\u5FAE\u4FE1\",\"screen.rememberpass.checkbox.title\":\"\u8BB0\u4F4F\u5BC6\u7801\",\"screen.loginnotice.button.close\":\"\u6211\u77E5\u9053\u4E86\",\"cas.login.by.scan\":\"\u626B\u7801\u767B\u5F55\",\"screen.welcome.label.captcha.placeholder\":\"\u8BF7\u8F93\u5165\u56FE\u7247\u9A8C\u8BC1\u7801\",\"screen.welcome.label.dynamiccode.placeholder\":\"\u8BF7\u8F93\u5165\u52A8\u6001\u5BC6\u7801\",\"qq\":\"\u817E\u8BAFQQ\",\"alipay\":\"\u652F\u4ED8\u5B9D\",\"screen.loginnotice.button.view\":\"\u67E5\u770B\",\"screen.notice.title\":\"\u8FD0\u7EF4\u516C\u544A\",\"screen.welcome.label.captcha\":\"\u9A8C\u8BC1\u7801:\",\"screen.welcome.label.netid\":\"\u7528\u6237\u540D:\",\"cas.login.by.sms\":\"\u624B\u673A\u52A8\u6001\u7801\u767B\u5F55\",\"screen.welcome.label.captcha.refresh\":\"\u770B\u4E0D\u6E05\uFF0C\u6362\u4E00\u5F20\uFF01\",\"screen.welcome.label.password.placeholder\":\"\u8BF7\u8F93\u5165\u767B\u5F55\u5BC6\u7801\",\"screen.captcha.title\":\"\u5B89\u5168\u9A8C\u8BC1\",\"screen.scan.button.refresh\":\"\u5237\u65B0\u4E8C\u7EF4\u7801\",\"openweixin\":\"\u5FAE\u4FE1\",\"screen.welcome.button.send.token\":\"\u53D1\u9001\u52A8\u6001\u7801\",\"screen.welcome.label.mobile\":\"\u624B\u673A\u53F7:\",\"screen.welcome.label.dynamiccode\":\"\u52A8\u6001\u7801:\",\"screen.welcome.label.netid.placeholder\":\"\u8BF7\u8F93\u5165\u7528\u6237\u540D\",\"screen.welcome.label.loginwith\":\"\u5176\u4ED6\u65B9\u5F0F\u767B\u5F55\",\"screen.pm.button.activeaccount\":\"\u6FC0\u6D3B\u8D26\u53F7\",\"screen.welcome.button.sendwip\":\"\u5DF2\u53D1\u9001\",\"screen.welcome.button.sending\":\"\u53D1\u9001\u4E2D\u2026\u2026\",\"screen.welcome.button.login\":\"\u767B\u5F55\",\"screen.loginnotice.title\":\"\u767B\u5F55\u516C\u544A\"}"+ ')');
console.log("globalI18n", globalI18n);
var globalConfig = eval('(' +"{\"requestPerIPRateLimiter_enabled\":\"false\",\"mfaStrategyDynamic_usedAgentDetectorEnabled\":\"true\",\"casServerPrefix\":\"https:\/\/passport.jxqy.edu.cn\/cas\",\"userLogin.kickoutEnabled\":\"false\",\"hmSiteId\":\"d605d8df6bf5ca8a54fe078683196518\",\"requestPerIPRateLimiter.requestsPerRateTime\":\"10\",\"isSuperApp\":false,\"lockTimeIntervalInfo\":\"1 \u5206\u949F\",\"isWechat\":false,\"secStrategyDynamic\":\"true\",\"mfaStrategyDynamic.usedAgentDetectorEnabled\":\"true\",\"secTypeFaceVerify\":\"false\",\"scanClientInfo\":\"\u8D85\u7EA7APP\",\"accountAbnormal.kickoutEnabled\":\"false\",\"refererLimit\":\"false\",\"superappName\":\"\u8D85\u7EA7APP\",\"localeEnabled\":\"false\",\"activeAccountRedirectUrl\":\"https:\/\/authx-service.jxqy.edu.cn\/active-account\",\"mfaEnabled\":\"false\",\"isMobile\":false,\"secTypeSecurePhone\":\"true\",\"logoM\":\"cas-server-site-ui__7a4d8d83-4bb2-4009-b3c7-8649d7b958f0__128.png\",\"netidPlaceholder\":\"\u8BF7\u8F93\u5165\u5B66\u5DE5\u53F7-\u8D26\u53F7\/\u5B89\u5168\u624B\u673A\",\"lockTimeIntervalInSecond\":60,\"rememberMe_timeToKillInSeconds\":\"1209600\",\"captchaSkipN\":\"1\",\"mfaTypeQrCode\":\"false\",\"userPasswordChanged_kickoutEnabled\":\"false\",\"secTypeAppPush\":\"false\",\"bg\":\"cas-server-site-ui__abe4c9f9-705a-4542-b34e-3fd1f696d11c__casbeij.png\",\"isDingtalk\":false,\"mobileEnabled\":true,\"passwordPlaceholder\":\"\u8BF7\u8F93\u5165\u767B\u5F55\u5BC6\u7801\",\"mfaStrategyDynamic_userNonCompletedSkip\":\"true\",\"mfaStrategyStatic\":\"false\",\"loginNoticeShowMode\":\"1\",\"rememberMe.timeToKillInSeconds\":\"1209600\",\"inputMessageType\":\"default\",\"encryptEnabled\":\"true\",\"mfaStrategyDynamic.userNonCompletedSkip\":\"true\",\"mfaTypeAppPush\":\"false\",\"inputMessage\":\"\u8BF7\u8F93\u5165\u5B66\u5DE5\u53F7-\u8D26\u53F7\/\u5B89\u5168\u624B\u673A\",\"mfaTypeSecureEmail\":\"true\",\"customEntryName\":\"\u5FEB\u901F\u5165\u53E3\",\"mfaStrategyDynamic.trustAgentDetectorEnabled\":\"true\",\"secTypeOtp\":\"false\",\"mfaStrategyDynamic.ipDetectorType\":\"none\",\"mfaStrategyDynamic.recentSilenceInDays\":\"30\",\"mfaStrategyDynamic.recentIpSilenceInDays\":\"30\",\"showLogo\":\"true\",\"successRedirectUrl\":\"https:\/\/www.mzgylp.com/i\",\"mfaStrategyDynamic_trustIpDetectorEnabled\":\"true\",\"iconImageUrl\":\"cas-server-site-ui__02796e35-b5b1-4f57-b0fc-a7bf9741a608__128.png\",\"language\":\"zh\",\"mfaStrategyDynamic_loginIpDetectorEnabled\":\"false\",\"rememberPasswordEnabled\":\"false\",\"tracePathSuffix\":\"\",\"lockTimeLengthInSecond\":300,\"mfaStrategyDynamic\":\"true\",\"emailAddressEnabled\":false,\"isWxamp\":false,\"logo\":\"cas-server-site-ui__595c05e2-ca9e-42f1-85f7-48fa1ddad457__\u6C5F\u897F\u9752\u5E74\u804C\u4E1A\u5B66\u9662-\u6821\u5FBD---260-60.png\",\"mfaStrategyDynamic.loginIpDetectorEnabled\":\"false\",\"hideWrittenoffAccount\":\"false\",\"requestPerIPRateLimiter.enabled\":\"false\",\"requestPerIPRateLimiter.rateTime\":\"60\",\"mfaStrategyDynamic_recentSilenceInDays\":\"30\",\"webFavicon\":\"\/themes\/classic\/favicon.ico\",\"secTimeSilenceInMinutes\":\"10\",\"forgotPasswordRedirectUrl\":\"https:\/\/authx-service.jxqy.edu.cn\/find-pwd\",\"bgM\":\"cas-server-site-ui__d05007f3-4ca7-4d07-ba8e-114b62321afc__taskHL.png\",\"secTypeSecureEmail\":\"true\",\"mfaFirstNeed\":\"false\",\"requestUriForRateLimit\":\"POST \/cas\/login,POST \/cas\/mfa\/detect\",\"userLogin_kickoutEnabled\":\"false\",\"mfaStrategyDynamic.trustIpDetectorEnabled\":\"true\",\"mfaTypeOtp\":\"false\",\"schemeColor\":\"409EFF\",\"mfaTypeFaceVerify\":\"false\",\"MF_SERVER_URL\":\"https:\/\/passport.jxqy.edu.cn\/mf\",\"secSkipIfSecAccountsNull\":\"false\",\"smsCodeEnabled\":false,\"mfServerUrl\":\"https:\/\/passport.jxqy.edu.cn\/mf\",\"requestPerIPRateLimiter_requestsPerRateTime\":\"10\",\"logoutReturnUrl\":\"https:\/\/www.mzgylp.com/i\",\"lockErrorTimes\":5,\"qrCodeEnabled\":false,\"traceNode\":\"NONE\",\"userPasswordChanged.kickoutEnabled\":\"false\",\"mfaTypeSecurePhone\":\"true\",\"appealAccountRedirectUrl\":\"https:\/\/authx-service.jxqy.edu.cn\/appealAccount?type=unfreeze\",\"lockTimeLengthInfo\":\"5 \u5206\u949F\",\"mfaStrategyDynamic_ipDetectorType\":\"none\",\"mfaStrategyDynamic_usedIpDetectorEnabled\":\"true\",\"webTitle\":\"\u6C5F\u897F\u9752\u5E74\u804C\u4E1A\u5B66\u9662\",\"mfaStrategyDynamic_recentIpSilenceInDays\":\"30\",\"secEnabled\":\"false\",\"isWorkweixin\":false,\"mfaStrategyDynamic.usedIpDetectorEnabled\":\"true\",\"secStrategyStaticFirst\":\"false\",\"priorityPcWay\":\"account\",\"mfLayout\":\"right\",\"requestPerIPRateLimiter_rateTime\":\"60\",\"identityNoEnabled\":false,\"accountAbnormal_kickoutEnabled\":\"false\",\"mfaStrategyDynamic_trustAgentDetectorEnabled\":\"true\"}"+ ')');
globalConfig.registeredServiceName = registeredServiceName;
console.log("globalConfig", globalConfig);


var dialogVisible = false;

var superappName = "\u8D85\u7EA7APP";

// account 账号密码、smsCode 手机动态密码、qrCode 扫码登录
var priorityPcWay = "account";

// 1 账号密码、2 手机动态密码、3 扫码登录
var defaultMenu = "1";
if (priorityPcWay) {
  if (priorityPcWay == "account") {
    defaultMenu = "1";
  }
  else if (priorityPcWay == "smsCode") {
    defaultMenu = "2";
  }
  else if (priorityPcWay == "qrCode") {
    if (!isMobile) {
      defaultMenu = "3";
    }
  }
}
console.log("defaultMenu", defaultMenu);


var loginType = getQueryString("loginType");

var qrCodeEnabled = false;
var currentMenu = null;
var isQrcode = false;

if (currentMenu) {
  
} else {
  if (loginType === "") {
    currentMenu = defaultMenu;
  } else {
    currentMenu = loginType;
  }
}

if (currentMenu == 3) {
  if (qrCodeEnabled == true || qrCodeEnabled == 'true') {
    currentMenu = defaultMenu;
    isQrcode = true;
  } else {
    currentMenu = defaultMenu;
    isQrcode = false;
  }
}
console.log("isQrcode", isQrcode);
console.log("currentMenu", currentMenu);

var rememberPasswordEnabled = "false" == 'true';
var rememberPassword = localStorage.rememberPassword=="true";
console.log("rememberPassword", rememberPasswordEnabled, rememberPassword);

var localeEnabled = "false";
var language = "zh";
console.log("language", language);


// var icon = "\/cas\/file\/png\/icon.png";
var logo = "\/cas\/file\/png\/logo.png" +"?"+encodeURIComponent(globalConfig.logo);
var bg = "\/cas\/file\/png\/bg.png" +"?"+encodeURIComponent(globalConfig.bg);

var logoM = "\/cas\/file\/png\/logoM.png" +"?"+encodeURIComponent(globalConfig.logoM);
var bgM = "\/cas\/file\/png\/bgM.png" +"?"+encodeURIComponent(globalConfig.bgM);

var bg1 = "\/cas\/file\/png\/bg1.png" +"?"+encodeURIComponent(globalConfig.bg1);
var bg2 = "\/cas\/file\/png\/bg2.png" +"?"+encodeURIComponent(globalConfig.bg2);
var bg3 = "\/cas\/file\/png\/bg3.png" +"?"+encodeURIComponent(globalConfig.bg3);

var ppts = [];
var backgrounds = [];

if (ppts != null) {
  for (var i = 0; i < ppts.length; i++) {
    backgrounds[i] = ppts[i].fileurl;
  }
}

if (backgrounds == null || backgrounds.length == 0) {
  backgrounds = [ bg ];
  if (globalConfig.bg1) {
    backgrounds.push(bg1);
  }
  if (globalConfig.bg2) {
    backgrounds.push(bg2);
  }
  if (globalConfig.bg3) {
    backgrounds.push(bg3);
  }
}


var customEntryLinks = [];

var customEntryLink1Name = null;
var customEntryLink1Url = null;
var customEntryLink2Name = null;
var customEntryLink2Url = null;
var customEntryLink3Name = null;
var customEntryLink3Url = null;
var customEntryLink4Name = null;
var customEntryLink4Url = null;

if ( (customEntryLink1Name!=null && customEntryLink1Name!='') && (customEntryLink1Url!=null && customEntryLink1Url!='') ) {
  customEntryLinks.push({"name":customEntryLink1Name, "url":customEntryLink1Url});
}
if ( (customEntryLink2Name!=null && customEntryLink2Name!='') && (customEntryLink2Url!=null && customEntryLink2Url!='') ) {
  customEntryLinks.push({"name":customEntryLink2Name, "url":customEntryLink2Url});
}
if ( (customEntryLink3Name!=null && customEntryLink3Name!='') && (customEntryLink3Url!=null && customEntryLink3Url!='') ) {
  customEntryLinks.push({"name":customEntryLink3Name, "url":customEntryLink3Url});
}
if ( (customEntryLink4Name!=null && customEntryLink4Name!='') && (customEntryLink4Url!=null && customEntryLink4Url!='') ) {
  customEntryLinks.push({"name":customEntryLink4Name, "url":customEntryLink4Url});
}

var showLink = customEntryLinks.length>0;
var showLessLink = customEntryLinks.length<4;


var loadComponent = null;

//
var layoutCom = null;
var backgroudCom = null;
var logoCom = null;
var languageCom = null;
var announcementCom = null;
var noticeCom = null;
var customLinkCom = null;
var copyrightCom = null;
var browserSupportCom = null;

var passwordLoginCom = null;
var smsCodeLoginCom = null;
var scanLoginCom = null;
var federatedLoginCom = null;
var quickLinkCom = null;
var noticeBoardCom = null;


var _superappDownloadQrCodeImgUrl="\/cas\/qr\/generator.png";

var _federatedUrls = null;

var _backgrounds = backgrounds;
var _logo = logo;
var _language = language;


var _i18n = globalI18n;
var _config = globalConfig;

</script>

<!-- 登录表单 提交 --><script type="text/javascript">

function submitFm1() {
  // $("#fm1").submit();
  $("#fm1").find(":submit").click();
}
function submitFm2() {
  // $("#fm2").submit();
  $("#fm2").find(":submit").click();
}

<!-- 城市热点 -->
function submitFm9() {
  // $("#fm9").submit();
  $("#fm9").find(":submit").click();
}

</script>

<!-- 城市热点 --><script type="text/javascript">

var drcomIPLoginEnabled = false == true;
var drcomIPSuccess = null == true;
var isDrcomIPLoginAuto = drcomIPLoginEnabled && drcomIPSuccess && ((localStorage.isDrcomIPLoginAuto || "false") == "true");

</script>


<!-- 双因子 --><script type="text/javascript">

//双因子
var mfaEnabled = "false" == "true";

var mfaTypeAppPush = "false" == "true";
var mfaTypeSecurePhone = "true" == "true";
var mfaTypeSecureEmail = "true" == "true";
var mfaTypeQrCode = "false" == "true";
var mfaTypeFaceVerify = "false" == "true";
var mfaTypeOtp = "false" == "true";

if (isMobile) {
  mfaTypeQrCode = false;
  mfaTypeFaceVerify = false;
}

var typeList = ['使用App推送认证','使用安全手机认证','使用安全邮箱认证','使用客户端扫码','使用人脸识别认证'];

var safeIcon2 = [
  "\/cas\/themes\/mf\/images\/safe\/app2.png",
  "\/cas\/themes\/mf\/images\/safe\/phone2.png",
  "\/cas\/themes\/mf\/images\/safe\/email2.png",
  "\/cas\/themes\/mf\/images\/safe\/qrcode2.png",
  "\/cas\/themes\/mf\/images\/safe\/face2.png",
  "\/cas\/themes\/mf\/images\/safe\/otp2.png"
 ];
var safeIcon = [
  "\/cas\/themes\/mf\/images\/safe\/app.png",
  "\/cas\/themes\/mf\/images\/safe\/phone.png",
  "\/cas\/themes\/mf\/images\/safe\/email.png",
  "\/cas\/themes\/mf\/images\/safe\/qrcode.png",
  "\/cas\/themes\/mf\/images\/safe\/face.png",
  "\/cas\/themes\/mf\/images\/safe\/otp.png"
 ];
var typeInfo = [
  {'type':'apppush', 'enabled': mfaTypeAppPush, 'title':'APP推送', 'info':'使用APP推送验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/app.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/app2.png"},
  {'type':'securephone', 'enabled': mfaTypeSecurePhone, 'title':'安全手机', 'info':'使用安全手机验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/phone.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/phone2.png"},
  {'type':'secureemail', 'enabled': mfaTypeSecureEmail, 'title':'安全邮箱', 'info':'使用安全邮箱验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/email.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/email2.png"},
  {'type':'qrcode', 'enabled': mfaTypeQrCode, 'title':'客户端扫码', 'info':'使用客户端扫码', 'icon':"\/cas\/themes\/mf\/images\/safe\/qrcode.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/qrcode2.png"},
  {'type':'faceverify', 'enabled': mfaTypeFaceVerify, 'title':'人脸识别', 'info':'使用人脸识别验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/face.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/face2.png"},
  {'type':'otp', 'enabled': mfaTypeOtp, 'title':'OTP令牌', 'info':'使用OTP令牌验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/otp.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/otp2.png"},
 ];

var defaultTypeIndex = 0;
if (mfaTypeAppPush) {
  defaultTypeIndex = 0;
} else if (mfaTypeSecurePhone) {
  defaultTypeIndex = 1;
} else if (mfaTypeSecureEmail) {
  defaultTypeIndex = 2;
} else if (mfaTypeQrCode) {
  defaultTypeIndex = 3;
} else if (mfaTypeFaceVerify) {
  defaultTypeIndex = 4;
} else if (mfaTypeOtp) {
  defaultTypeIndex = 5;
}

function mfaDetect() {
  if (!mfaEnabled) {
    submitFm1();
    return;
  }
  
  var username = $("#fm1").find("#username").val();
  var password = $("#fm1").find("#password").val();
  var fpVisitorId = $("#fm1").find('[name="fpVisitorId"]').val();

  var fpVisitorId = $("#fm1").find('[name="fpVisitorId"]').val();

  if (encryptEnabled && password.indexOf('__RSA__') < 0) {
    var encodedPassword = "__RSA__"+encrypt.encrypt(password);
    password = encodedPassword;
  }

  var url = "\/cas\/mfa\/detect";
//  url += "?username=" + username;
  $.ajax({
    url: url,
    type: "POST",
    dataType: "json",
    data: "username=" + encodeURIComponent(username)+"&password=" + encodeURIComponent(password)+"&fpVisitorId="+encodeURIComponent(fpVisitorId),
    success: function success(r) {
      console.log(url, r);
      if (r && r.code == 0) {
        var state = r.data.state;
        $("#fm1").find('[name="mfaState"]').val(state);

        var need = r.data.need;
        if (need == true) {
          $("#showGuardDialog").click();
        } else {
          submitFm1();
        }
      } else {
        console.log(r);
        // submitFm1();
      }
    },
    error: function error(err) {
      console.log(err);
      // submitFm1();
    }
  });

}
</script>

<!-- 账号激活、忘记密码 链接地址 --><script type="text/javascript">
function __newForgotYourPassword() {
  return "\/cas\/personal\/forgotYourPassword?service=https:\/\/portal.jxqy.edu.cn\/?path%3Dhttps:\/\/portal.jxqy.edu.cn\/main.html";
}

function __newActiveYourAccount() {
  return "\/cas\/personal\/activeYourAccount?service=https:\/\/portal.jxqy.edu.cn\/?path%3Dhttps:\/\/portal.jxqy.edu.cn\/main.html";
}
</script>

<!-- 扫码登录 --><script type="text/javascript">

var __qrcodeImgUrl = "\/cas\/qr\/qrcode";
var __qrCometUrl = "\/cas\/qr\/comet";

var __qrcodeCometTimeout = 0;

function __newQrCodeImgUrl() {
  var qrcodeImgUrl = __qrcodeImgUrl+"?r=" +(new Date()).getTime()+ Math.floor(Math.random()*24) + (isDebug?"&debug=debug":"");
  return qrcodeImgUrl;
}

function __renewQrCodeStatus(isQrcodeAlert, qrcodeAlertMessage, stateKey, clearTimeout) {
  scanLoginCom.isQrcodeAlert = isQrcodeAlert;
  scanLoginCom.qrcodeAlertMessage = qrcodeAlertMessage;

  vm.qrCodeStateKey = stateKey; // console.log(vm.qrCodeStateKey, stateKey);
  
  if (clearTimeout) {
    window.clearTimeout(__qrcodeCometTimeout);
  }
}

function __refreshQrCode() {
  scanLoginCom.qrcodeImgUrl = __newQrCodeImgUrl();
  
  __renewQrCodeStatus(false, '', '', true);
  
  __startQrComet();
}

function __startQrComet() {
  window.clearTimeout(__qrcodeCometTimeout); // 开启定时

  function qrComet() {
    var url = __qrCometUrl;
    $.ajax({
      url: url,
      type: "POST",
      dataType: "json",
      timeout: 1000,
      success: function success(r) {
        // console.log(r);
        if (r && r.code == 0) {
          var stateKey = r.data.stateKey;
          var qrCode = r.data.qrCode;

          if (qrCode.status == "1") {
            // 1 创建、未扫码
            __renewQrCodeStatus(false, '', '');
          } else if (qrCode.status == "2") {
            // 2 已扫码
            __renewQrCodeStatus(true, '扫码成功', '');
          } else if (qrCode.status == "3") {
            // 3 已授权
            __renewQrCodeStatus(true, '确认登录', stateKey, true);
            window.setTimeout(function () {
              $("#fm3").submit();
            }, 500);
          } else if (qrCode.status == "4") {
            // 4 已取消
            __renewQrCodeStatus(true, '取消登录', '', true);
          }
        } else if (r && r.code == 1) {
          __renewQrCodeStatus(true, '二维码已失效，点击刷新', '', true);
        } else {
          __renewQrCodeStatus(true, '出现异常，点击刷新', '', true);
        }
      }
    });
    __qrcodeCometTimeout = window.setTimeout(qrComet, 2000);
  }

  __qrcodeCometTimeout = window.setTimeout(qrComet, 2000);
}

var _qrcodeImage = {
  qrcode : "\/cas\/themes\/mf\/images\/qrcode.svg",
  normal : "\/cas\/themes\/mf\/images\/pc-login.svg"
};

function _changeMenu(index) {
  this.currentMenu = index;
  // TODO: refreshCaptchaInMenu(this.currentMenu);

  currentMenu = this.currentMenu;
}

function _openOrCloseQrCode() {
  this.isQrcode = !this.isQrcode;

  __renewQrCodeStatus(false, '', '', true);

  if (this.isQrcode) {
    __refreshQrCode();
  } else {
    if (currentMenu == 3) {
      this.currentMenu = 1;
    } else {
      this.currentMenu = currentMenu;
    }
  }

  currentMenu = this.currentMenu;
}

</script>

<!-- 密码登录、手机动态码登录 --><script type="text/javascript">
function _passwordLogin() {
  console.log("submit button click");
  var username = $("#fm1").find("#username").val();
  var password = $("#fm1").find("#password").val();
  if (username == null || username == '') {
    $("#showErrorMessageUsername").click();
    return false;
  }

  if (password == null || password == '') {
    $("#showErrorMessagePassword").click();
    return false;
  }

  window.setTimeout(function () {
    mfaDetect();
  }, 500);

  return false;
}


var i_sendToken = "\u53D1\u9001\u52A8\u6001\u7801"
var i_sending = "\u53D1\u9001\u4E2D\u2026\u2026"
var i_send = "\u5DF2\u53D1\u9001"

function _smsCodeSend() {
  var self = this;

  var mobile = $("#fm2").find("#username").val();

  if (mobile == null || mobile == '') {
    self.disableSendToken = false;
    $("#showErrorMessageMobile").click();
    return;
  }
  if (!mobilePattern.test(mobile)) {
    self.disableSendToken = false;
    $("#showErrorMessageMobile").click();
    return;
  }

  var time = 60;
  var setSended = function() {
    self.sendButtonText = (i_send + '('+time+')');
    
    time --;
    if (time > 0) {
      setTimeout(setSended, 1000);
    } else {
      self.disableSendToken = false;

      self.sendButtonDisable = false;
      self.sendButtonText = i_sendToken;
    }
  }

  $.ajax({
    url: "\/cas\/passwordlessTokenSend",
    type: "POST",
    data: {"username": mobile},
  	dataType: "json",
  	success: function(r) {
  	  console.log(r);
  	  
  	  if (r.data.success) {
    	  // 提示信息
          $("#showSuccessMessageSendCode").click();
    	  // 倒计时 60s
    	  time = 60;
    	  setSended();
  	  }
  	  
  	  if (r.data.error) {
  	    $("#showFailureMessageSendCode").click();
  	    time = 0;
  	    setSended();
  	  }
  	}
  });
}

function _smsCodeLogin() {
  var mobile = $("#fm2").find("#username").val();
  var dynamiccode = $("#fm2").find("#password").val();
  if (mobile == null || mobile == '') {
    $("#showErrorMessageMobile").click();
    return false;
  }
  if (!mobilePattern.test(mobile)) {
    $("#showErrorMessageMobile").click();
    return false;
  }

  if (dynamiccode == null || dynamiccode == '') {
    $("#showErrorMessageDynamicCode").click();
    return false;
  }
  
  window.setTimeout(function () {
    submitFm2();
  }, 500);
  
  return false;
}
</script>

<!-- 公告 --><script type="text/javascript">

function _openNotice() {
  vm.noticeDialogVisible = true;
}

</script>


<!-- 图片验证码 --><script type="text/javascript">

var __captchaImgUrl = "\/cas\/captcha.jpg";
function __newCaptchaImgUrl() {
  var captchaImgUrl = __captchaImgUrl+"?r=" +(new Date()).getTime()+ Math.floor(Math.random()*24);
  return captchaImgUrl;
}

function __refreshCaptcha(loginType) {
  if ("passwordLogin" == loginType) {
    passwordLoginCom.captchaImgUrl = __newCaptchaImgUrl();
  } else if ("smsCodeLogin" == loginType) {
    smsCodeLoginCom.captchaImgUrl = __newCaptchaImgUrl();
  }
}

</script>


<!-- 记住密码，仅 移动浏览器 --><script type="text/javascript">
function doRememberPassword(username, password) {
  var containerFormInput = $("#fm1Input");
  var rememberPasswordObj = containerFormInput.find('[name="rememberPassword"]');
  if (rememberPasswordObj && rememberPasswordObj.length > 0) {
    var rememberPassword = rememberPasswordObj.prop('checked');
    if (rememberPassword) {
      var savedUsername = username;
      var savedPassword = password.indexOf('__RSA__') < 0 ? "__RSA__"+encrypt.encrypt(password) : password;
      
      localStorage.rememberPassword = true;
      localStorage.savedUsername = savedUsername;
      localStorage.savedPassword = savedPassword;
    } else {
      localStorage.rememberPassword = false;
      localStorage.savedUsername = "";
      localStorage.savedPassword = "";
    }
  }
}

function initRememberPassword() {
  var containerFormInput = $("#fm1Input");
  var rememberPasswordObj = containerFormInput.find('[name="rememberPassword"]');
  if (rememberPasswordObj && rememberPasswordObj.length > 0) {
    var rememberPassword = localStorage.rememberPassword == "true";
    if (rememberPassword) {
      var savedUsername = localStorage.savedUsername || "";
      var savedPassword = localStorage.savedPassword || "";

      containerFormInput.find('[name="username"]').val(savedUsername);
      containerFormInput.find('[name="password"]').val(savedPassword);
      
      containerFormInput.find('[name="username"]').focus(function() {this.select();});
      containerFormInput.find('[name="password"]').focus(function() {this.select();});
      
      containerFormInput.find('[name="username"]').keyup(function() {
        var thisUsername = containerFormInput.find('[name="username"]').val();
        if (thisUsername == savedUsername) {
          containerFormInput.find('[name="password"]').val(savedPassword);
        } else {
          containerFormInput.find('[name="password"]').val("");
        }
      });
    }
  }
}
</script>

<!-- 登录失败，处理失败 --><!-- 图片验证码 --><script type="text/javascript">
// 登录失败，处理失败
function processLoginError(containerFormInput, containerForm, originalUsername, hasErrors, errors, loginType) {
  console.log(containerForm);
  console.log(originalUsername);
  console.log(hasErrors);
  console.log(errors);
  
  doLoginFailN(containerFormInput, containerForm, originalUsername, hasErrors, errors, loginType);
}

var casServerCaptchaEnabled = true;
var casServerCaptchaSkipN = true;
var captchaSkipN = "1";

var casServerCaptchaShow = false;

// 提交登录时，记录登录次数、登录时间
function doLogin() {
  var loginN = (localStorage.loginN || "0");
  if (loginN == null) {
    loginN = "0";
  }
  
  loginN = parseInt(loginN) +1;
  localStorage.loginN = loginN;

  var nowTimestamp = new Date().getTime();
  localStorage.loginNTimestamp = nowTimestamp;
}

//登录失败时，记录失败次数、失败时间，并显示 图片验证码
function doLoginFailN(containerFormInput, containerForm, originalUsername, hasErrors, errors, loginType) {

  var failN = (localStorage.failN || "0");
  if (failN == null) {
    failN = "0";
  }

  if (hasErrors) {
    failN = parseInt(failN) +1;
    localStorage.failN = failN;
    
    var nowTimestamp = new Date().getTime();
    localStorage.failNTimestamp = nowTimestamp;
  }
  
  doErrorShow(containerForm, hasErrors, errors, loginType);
  doCaptchaShow(containerFormInput, containerForm, failN, loginType);
}

function doErrorShow(containerForm, hasErrors, errors, loginType) {
  if (!hasErrors) {
    return;
  }

  // 显示错误信息
  var error = errors[0];

  if ("passwordLogin" == loginType) {
    if (passwordLoginCom) {
      passwordLoginCom.loginError = error;
    }
  } else if ("smsCodeLogin" == loginType) {
    if (smsCodeLoginCom) {
      smsCodeLoginCom.loginError = error;
    }
  }

}

// 显示 图片验证码
function doCaptchaShow(containerFormInput, containerForm, failN, loginType) {
  console.log('show captcha, failN='+failN+", captchaSkipN="+captchaSkipN);

  var fialNInput = containerForm.find('[name="failN"]');
  fialNInput.val(failN);

  /* var captchaInput = containerFormInput.find('[name="captcha"]');  // console.log(captchaInput.parents("div.el-form-item"));
  if (captchaInput.length <= 0) {
    return;
  }
  
  captchaInput.parents("div.captcha-input-container").hide();

  if (failN < 0) {
    captchaInput.parents("div.captcha-input-container").show();
  } else if (failN >= captchaSkipN) {
    captchaInput.parents("div.captcha-input-container").show();
  } */

  var isCaptchaShow = false;
  if (failN < 0) {
    isCaptchaShow = true;
  } else if (failN >= captchaSkipN) {
    isCaptchaShow = true;
  }
  
  if ("passwordLogin" == loginType) {
    if (passwordLoginCom) {
      passwordLoginCom.isCaptchaShow = isCaptchaShow;
    }
  } else if ("smsCodeLogin" == loginType) {
    if (smsCodeLoginCom) {
      smsCodeLoginCom.isCaptchaShow = isCaptchaShow;
    }
  }
  
  var captchaInput = containerFormInput.find('[name="captcha"]');
  if (captchaInput.length <= 0) {
    return;
  }
  
  captchaInput.parents("div.captcha-input-container").hide();
  casServerCaptchaShow = false;
  if (isCaptchaShow) {
    captchaInput.parents("div.captcha-input-container").show();
    casServerCaptchaShow = true;
  }
}

// 判断是否显示 图片验证码
function initCaptchaShow(containerFormInput, containerForm, loginType) {
  if (casServerCaptchaEnabled) {
    if (casServerCaptchaSkipN) {
      var loginN = (localStorage.loginN || "0");
      if (loginN == null) {
        loginN = "0";
      }
      loginN = parseInt(loginN);
      
      var failN = (localStorage.failN || "0");
      if (failN == null) {
        failN = "0";
      }
      failN = parseInt(failN);
      
      var failNTimestamp = (localStorage.failNTimestamp || "0");
      if (failNTimestamp == null) {
        failNTimestamp = "0";
      }
      
      var nowTimestamp = new Date().getTime();
      console.log('init captcha, failNTimestamp='+failNTimestamp+", nowTimestamp="+nowTimestamp);
      if (failNTimestamp < (nowTimestamp - (1000 * 60 * 60 * 1))) { // FIXME: 如果 1小时后，再登录，则清空 failN
        loginN = 0; 
        localStorage.loginN = loginN;
        failN = 0;
        localStorage.failN = failN;
      }
      
      if (failN < loginN) {
        loginN = 0; 
        localStorage.loginN = loginN;
        failN = 0; 
        localStorage.failN = failN;
      }
      
      doCaptchaShow(containerFormInput, containerForm, failN, loginType); // 显示
    } else {
      doCaptchaShow(containerFormInput, containerForm, -1, loginType); // 始终显示
    }
  }
}
</script>


<!-- PC登录页面 加载 --><script>

loadComponent = function() {

  console.log(window["casServerSiteUi"]);

  window["casServerSiteUi"].get('./Layout').then(function layout(factory){
    
    // 先加载 layout
    var module = factory()
    var newDemo = Vue.component('Layout',module.default)
    layoutCom = new newDemo({
      el:"#layout",
      propsData: {
        i18n: _i18n,
        config: _config,

        qrcodeImage: _qrcodeImage,

        isQrcode: isQrcode,
        currentMenu: currentMenu,
      },
      
      methods: {
        changeMenu: function changeMenu(index) {
          _changeMenu.call(this, index);
        },
        // 扫码登录
        openOrCloseQrCode: function openOrCloseQrCode() {
          _openOrCloseQrCode.call(this);
        },
      }
    })

    // 再依次加载 其他组件
    window["casServerSiteUi"].get('./Background').then(function background(factory){
      var module = factory()
      var newDemo = Vue.component('Background', module.default)
      backgroudCom = new newDemo({
        el:"#background",
        propsData: {
          i18n: _i18n,
          config: _config,
          bg: _backgrounds,
        }
      })
    })

    window["casServerSiteUi"].get('./Logo').then(function logo(factory){
      var module = factory()
      var newDemo = Vue.component('Logo',module.default)
      logoCom = new newDemo({
        el:"#logo",
        propsData: {
          i18n: _i18n,
          config: _config,
          logo: _logo,
        }
      })
    })

    if (localeEnabled == "true") {
    window["casServerSiteUi"].get('./Language').then(function language(factory){
      var module = factory()
      var newDemo = Vue.component('Language',module.default)
      languageCom = new newDemo({
        el:"#language",
        propsData: {
          i18n: _i18n,
          config: _config,
          language: _language,
        },
        methods:{
          changeLanage: function changeLanage() {
            var lang = this.language == 'zh' ? 'en' : 'zh';
            
            var url = window.location.href;
            if (url.indexOf('&locale=') > 0) {
              url = url.substring(0, url.indexOf('&locale='));
            }
            if (url.indexOf('?')<0) {
              url = url + '?_x=0';
            }
            url = url + '&locale=' + lang;
            
            this.language = lang;
            console.log(this.language);

            window.location.href = url;
          }
        }
      })
    })
    }

    //  公告栏
    window["casServerSiteUi"].get('./NoticeBoard').then(function noticeBoard(factory){
      var module = factory()
      var newDemo = Vue.component('NoticeBoard',module.default)
      noticeBoardCom = new newDemo({
        el:"#noticeBoard", 
        propsData: {
          config: _config,
          i18n: _i18n,
          dialogVisible: dialogVisible,
        }
      })
    })

    window["casServerSiteUi"].get('./Announcement').then(function announcement(factory){
      var module = factory()
      var newDemo = Vue.component('Announcement',module.default)
      announcementCom = new newDemo({
        el:"#announcement", 
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })
    
    window["casServerSiteUi"].get('./Notice').then(function notice(factory){
      var module = factory()
      var newDemo = Vue.component('Notice',module.default)
      noticeCom = new newDemo({
        el:"#notice", 
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })
    
    window["casServerSiteUi"].get('./CustomLink').then(function customLink(factory){
      var module = factory()
      var newDemo = Vue.component('CustomLink',module.default)
      customLinkCom = new newDemo({
        el:"#customLink",
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })

    window["casServerSiteUi"].get('./Copyright').then(function copyright(factory){
      var module = factory()
      var newDemo = Vue.component('Copyright',module.default)
      copyrightCom = new newDemo({
        el:"#copyright",
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })

    window["casServerSiteUi"].get('./BrowserSupport').then(function browserSupport(factory){
      var module = factory()
      var newDemo = Vue.component('BrowserSupport',module.default)
      browserSupportCom = new newDemo({
        el:"#browserSupport",
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })

    window["casServerSiteUi"].get('./PasswordLogin').then(function passwordLogin(factory){
      var module = factory()
      var newDemo = Vue.component('PasswordLogin',module.default)
      passwordLoginCom = new newDemo({
        el:"#passwordLogin",
        propsData: {
          i18n: _i18n,
          config: _config,
          captchaEnabled: casServerCaptchaEnabled,
          captchaImgUrl: __newCaptchaImgUrl(),
          
          isCaptchaShow: false,
          
          rememberPasswordEnabled: rememberPasswordEnabled,
          rememberPassword: rememberPassword,
        },
        /* mounted() {
          initCaptchaShow($("#fm1Input"), $("#fm1"), "passwordLogin");
        }, */
        methods: {
          refreshCaptcha: function refreshCaptcha() {
            __refreshCaptcha('passwordLogin');
          },
          passwordLogin: function passwordLogin(username, password, captcha, rememberMe) {
            var self = this;
            
            vm.passwordLoginUsername = username;
            vm.passwordLoginPassword = password;
            vm.passwordLoginCaptcha = captcha;
            vm.passwordLoginRememberMe = rememberMe;

            window.setTimeout(function () {
              _passwordLogin.call(self);
            }, 500);
            
            return false;
          }
        }
      })
      
      initCaptchaShow($("#fm1Input"), $("#fm1"), "passwordLogin");

      if (loginError && loginError.loginType == "passwordLogin") {
        console.log("trigger processLoginError", loginError.loginType);
        processLoginError(loginError.containerFormInput, loginError.containerForm, loginError.originalUsername, loginError.hasErrors, loginError.errors, loginError.loginType);
      }

    })

    window["casServerSiteUi"].get('./SmsCodeLogin').then(function smsCodeLogin(factory){
      var module = factory()
      var newDemo = Vue.component('SmsCodeLogin',module.default)
      smsCodeLoginCom = new newDemo({
        el:"#smsCodeLogin",
        data: function data() {
          return {
            disableSendToken: false,
          }
        },
        propsData: {
          i18n: _i18n,
          config: _config,
          sendButtonDisable: false,
          sendButtonText: i_sendToken,
        },
        methods: {
          smsCodeSend: function smsCodeSend(mobile) {
            var self = this;

            vm.smsCodeLoginUsername = mobile;

            if (this.disableSendToken) {
              return;
            }
            this.disableSendToken = true;

            window.setTimeout(function () {
              _smsCodeSend.call(self);
            }, 500);
          },
          smsCodeLogin: function smsCodeLogin(mobile, dynamiccode) {
            var self = this;

            vm.smsCodeLoginUsername = mobile;
            vm.smsCodeLoginPassword = dynamiccode;

            window.setTimeout(function () {
              _smsCodeLogin.call(self);
            }, 500);
            
            return false;
          },
        }
      })
      
      if (loginError && loginError.loginType == "smsCodeLogin") {
        console.log("trigger processLoginError", loginError.loginType);
        processLoginError(loginError.containerFormInput, loginError.containerForm, loginError.originalUsername, loginError.hasErrors, loginError.errors, loginError.loginType);
      }
    })

    window["casServerSiteUi"].get('./ScanLogin').then(function scanLogin(factory){
      var module = factory()
      var newDemo = Vue.component('ScanLogin',module.default)
      scanLoginCom = new newDemo({
        el:"#scanLogin",
        propsData: {
          i18n: _i18n,
          config: _config,
          qrcodeImgUrl: __newQrCodeImgUrl(),

          isQrcodeAlert: false,
          qrcodeAlertMessage: "",
        },
        methods: {
          refreshQrCode: function refreshQrCode() {
            __refreshQrCode();
          }
        }
      })
      
      if (isQrcode) {
        __refreshQrCode();
      }
    })

    window["casServerSiteUi"].get('./FederatedLogin').then(function federatedLogin(factory){
      var module = factory()
      var newDemo = Vue.component('FederatedLogin',module.default)
      federatedLoginCom = new newDemo({
        el:"#federatedLogin",
        propsData: {
          i18n: _i18n,
          config: _config,
          
          federatedUrls: _federatedUrls,
        }
      })
    })

    window["casServerSiteUi"].get('./QuickLink').then(function quickLink(factory){
      var module = factory()
      var newDemo = Vue.component('QuickLink',module.default)
      quickLinkCom = new newDemo({
        el:"#quickLink",
        propsData: {
          i18n: _i18n,
          config: _config,
          superappDownloadQrCodeImgUrl: _superappDownloadQrCodeImgUrl,
          forgotPasswordRedirectUrl: __newForgotYourPassword(),
          activeAccountRedirectUrl: __newActiveYourAccount(),
        },
      })
    })

  })

};
</script>


<script type="text/javascript">
var SwUI = SWUI;
Vue.use(SwUI)

var vm = new Vue({
  el: '#vue_main',
  data: function data() {
    return {
      isMobile: isMobile,

      customEntryLinks: customEntryLinks,
      showLink: showLink,
      showLessLink: showLessLink,

      dialogVisible: dialogVisible,
      
      noticeDialogVisible: false,
      
      passwordLoginUsername: "",
      passwordLoginPassword: "",
      passwordLoginCaptcha: "",
      passwordLoginRememberMe: false,
      
      smsCodeLoginUsername: "",
      smsCodeLoginPassword: "",
      
      qrCodeStateKey: "",
      
      
      active:0,

      logoM: logoM, 
      bgM: bgM, 
      
      jointActive: -1,
      loading: false,

      rememberPassword: localStorage.rememberPassword=="true",

      // 城市热点
      drcomIPLoginEnabled: drcomIPLoginEnabled,
      drcomIPDialogVisible: drcomIPSuccess,
      isDrcomIPLoginAuto: isDrcomIPLoginAuto,
      drcomIPLoginAutoEnabled: isDrcomIPLoginAuto,
      drcomIPLoginAutoTimeout: 0,
      drcomIPLoginButtonText: "上网账号快速登录",
      
      // 双因子认证
      mfaEnabled: mfaEnabled,
      guardDialogVisible: false,

      typeList: typeList,
      iconIndex:0,  //安全验证方式   0：app 推送；1：安全手机； 2：安全邮箱  3：人脸识别
      safeIcon2: safeIcon2,
      safeIcon: safeIcon,
      typeInfo: typeInfo,
      typeIndex: defaultTypeIndex,  //安全验证方式   0：app 推送；1：安全手机； 2：安全邮箱  3：客户端扫码  4：人脸识别

      showError:false,  //是否显示验证码错误
      faceType:1,  // 人脸识别认证状态  1  扫描二维码  2 刷新二维码  3 扫描成功
      
      
      attestServerUrl: null,
      gid: null,
      
      trustAgent: false,
      
      appPushSendTimeout: 0,
      appPushSendDisabled: false,
      appPushSendText: "点击发送验证请求",
      appPushSendSeconds: 30,
      appPushStatusTimeout: 0,
      appPushStatusShowAlert: false,
      appPushStatusAlertMessage: null,
      appPushCallbackCode: null,

      otpSecret:'',
      otpSendTimeout: 0,
      otpSendDisabled: false,
      otpSendText: "获取验证码",
      otpSendSeconds: 60,
      otpCode:'',
      otpValidShowAlert: false,
      otpValidAlertMessage: null,

      securePhone:'',
      securePhoneSendTimeout: 0,
      securePhoneSendDisabled: false,
      securePhoneSendText: "获取验证码",
      securePhoneSendSeconds: 60,
      securePhoneCode:'',
      securePhoneValidShowAlert: false,
      securePhoneValidAlertMessage: null,

      secureEmail:'',
      secureEmailSendTimeout: 0,
      secureEmailSendDisabled: false,
      secureEmailSendText: "获取验证码",
      secureEmailSendSeconds: 60,
      secureEmailCode:'',
      secureEmailValidShowAlert: false,
      secureEmailValidAlertMessage: null,
      
      qrCode:null,
      qrCodeScanTypeNames: "",
      qrCodeScanQrcode: null,
      qrCodeScanSuccess: false,
      qrCodeStatusTimeout: 0,
      qrCodeStatusShowAlert: false,
      qrCodeStatusAlertMessage: null,
      qrCodeCallbackCode: null,
      

      faceVerify:null,
      faceVerifyScanFaceverify: null,
      faceVerifyScanSuccess: false,
      faceVerifyStatusTimeout: 0,
      faceVerifyStatusShowAlert: false,
      faceVerifyStatusAlertMessage: null,
      faceVerifyCallbackCode: null,
      
    };
  },
  mounted: function mounted() {
    if (!isMobile) {
      if (loadComponent) {
        loadComponent();
      }
      
      if (this.isQrcode) {
        // 显示二维码
        var self = this;
        self.isQrcodeAlert = false;
        self.qrcodeAlertMessage = "";
        self.stateKey = "";
        this.qrcodeImgUrl = "\/cas\/qr\/qrcode"+"?r=" +(new Date()).getTime()+ Math.floor(Math.random()*24) + (isDebug?"&debug=debug":"");
        this.startQrComet();
      }
      
      // 城市热点
      if (this.isDrcomIPLoginAuto) {
        var drcomIPCloseButton = $("#drcomIPClose");
        var drcomIPLoginButton = $("#drcomIPLogin");
        
        drcomIPCloseButton.css("display", "none")
        drcomIPLoginButton.css("display", "inline")
        
        this.drcomIPLoginAutoSubmit();
      } else {
        var drcomIPCloseButton = $("#drcomIPClose");
        var drcomIPLoginButton = $("#drcomIPLogin");
        
        drcomIPCloseButton.css("display", "inline-block")
        drcomIPLoginButton.css("display", "inline-block")
      }
      
    }
  },
  methods: {
    // 城市热点
    drcomIPLogin: function drcomIPLogin() {
      if (this.isDrcomIPLoginAuto) {
        this.drcomIPLoginAutoCancel();
      } else {
        if (this.drcomIPLoginAutoEnabled) {
          localStorage.isDrcomIPLoginAuto = "true";
        } else {
          localStorage.isDrcomIPLoginAuto = "false";
        }
        submitFm9();
      }
    },
    drcomIPLoginAutoSubmit: function drcomIPLoginAutoSubmit() {
      var self = this;
      var isDrcomIPLoginAuto = localStorage.isDrcomIPLoginAuto || "false";
      if (isDrcomIPLoginAuto == "true") {
        var drcomIPLoginButton = $("#drcomIPLogin");
        
        var time = 5;
        var autoSubmit = function() {
          drcomIPLoginButton.find('span').text(self.drcomIPLoginButtonText + '('+time+' 秒后自动登录，点击可取消)');
          
          time --;
          if (time >= 0) {
            self.drcomIPLoginAutoTimeout = window.setTimeout(autoSubmit, 1000);
          } else {
            submitFm9();
          }
        }
        
        self.drcomIPLoginAutoTimeout = window.setTimeout(autoSubmit, 1);
      }
    },
    drcomIPLoginAutoCancel: function drcomIPLoginAutoCancel() {
      var self = this;
      
      window.clearTimeout(self.drcomIPLoginAutoTimeout);
      self.isDrcomIPLoginAuto = false;
      self.drcomIPLoginAutoEnabled = false;
      
      var drcomIPLoginButton = $("#drcomIPLogin");
      drcomIPLoginButton.find('span').text(self.drcomIPLoginButtonText);
      
      var drcomIPCloseButton = $("#drcomIPClose");
      var drcomIPLoginButton = $("#drcomIPLogin");
      
      drcomIPCloseButton.css("display", "inline-block")
      drcomIPLoginButton.css("display", "inline-block")
      
      localStorage.isDrcomIPLoginAuto = "false";
    },
    
    /* closeNotice: function closeNotice() {
      this.noticeDialogVisible = false;
    }, */

    /* handleClose: function handleClose() {
      this.dialogVisible = false;
    }, */

    showErrorMessageUsername: function showErrorMessageUsername() {
      // var message = "\u8BF7\u8F93\u5165\u7528\u6237\u540D" + "\u8BF7\u8F93\u5165\u5B66\u5DE5\u53F7-\u8D26\u53F7\/\u5B89\u5168\u624B\u673A";
      var message = "\u8BF7\u8F93\u5165\u5B66\u5DE5\u53F7-\u8D26\u53F7\/\u5B89\u5168\u624B\u673A";
      this.$message.error(message);
    },
    showErrorMessagePassword: function showErrorMessagePassword() {
      // var message = "\u8BF7\u8F93\u5165\u767B\u5F55\u5BC6\u7801";
      var message = "\u8BF7\u8F93\u5165\u767B\u5F55\u5BC6\u7801";
      this.$message.error(message);
    },
    showErrorMessageCaptcha: function showErrorMessageCaptcha() {
      var message = "\u8BF7\u8F93\u5165\u56FE\u7247\u9A8C\u8BC1\u7801";
      this.$message.error(message);
    },
    showErrorMessageMobile: function showErrorMessageMobile() {
      var message = "\u8BF7\u8F93\u5165\u624B\u673A\u53F7";
      this.$message.error(message);
    },
    showErrorMessageDynamicCode: function showErrorMessageDynamicCode() {
      var message = "\u8BF7\u8F93\u5165\u52A8\u6001\u5BC6\u7801";
      this.$message.error(message);
    },
    showSuccessMessageSendCode: function showSuccessMessageSendCode() {
      var message = "\u5DF2\u53D1\u9001";
      this.$message.info(message);
    },
    showFailureMessageSendCode: function showFailureMessageSendCode() {
      var message = "\u53D1\u9001\u5931\u8D25";
      this.$message.error(message);
    },


    // 双因子
    showGuardDialog: function showGuardDialog() {
      var self = this;
      this.clearAppPushStatus();
      this.clearSecurePhone();
      this.clearSecureEmail();
      this.clearQrCode();
      this.clearFaceVerify();
      this.clearOtp();
      
      this.typeIndex = defaultTypeIndex;
      this.guardDialogVisible = true;
      
      this.trustAgent = false;
      
      this.changeGuard(defaultTypeIndex);
    },
    hideGuardDialog: function hideGuardDialog() {
      var self = this;
      this.clearAppPushStatus();
      this.clearSecurePhone();
      this.clearSecureEmail();
      this.clearQrCode();
      this.clearFaceVerify();
      this.clearOtp();
      
      this.typeIndex = defaultTypeIndex;
      this.guardDialogVisible = false;
      
      $("#fm1").find('[name="mfaState"]').val('');
      $("#fm1").find('[name="trustAgent"]').val('');
    },
    
    submitForm: function submitForm() {
      $("#fm1").find('[name="trustAgent"]').val(this.trustAgent);
      submitFm1();
    },
    
    changeGuard: function changeGuard(index) {
      var self = this;
      this.clearAppPushStatus();
      this.clearSecurePhone();
      this.clearSecureEmail();
      this.clearQrCode();
      this.clearFaceVerify();
      this.clearOtp();

      this.typeIndex = index;
      
      this.initGuard();
    },

    initGuard: function initGuard() {
      var self = this;
      
      var type = this.typeInfo[this.typeIndex].type;
      var state = $("#fm1").find('[name="mfaState"]').val();
      
      var url = "\/cas\/mfa\/initByType"+"/"+type;
      url += "?state=" + state;
      $.ajax({
        type: "GET",
        url: url,
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
          if (r && r.code == 0) {
            self.attestServerUrl = r.data.attestServerUrl;
            self.gid = r.data.gid;

            if (type == "apppush") {
              
            } else if (type == "securephone") {
              self.securePhone = r.data.securePhone;
            } else if (type == "secureemail") {
              self.secureEmail = r.data.secureEmail;
            } else if (type == "qrcode") {
              self.qrCode = r.data.qrCode;
              self.qrCodeInit();
            } else if (type == "faceverify") {
              self.faceVerifyInit();
            } else if (type == "otp") {
              self.otpSecret = r.data.otpSecret;
              if (self.otpSecret) {
                self.otpSend();
              }
            }
          } else {
            self.attestServerUrl = null;
            self.gid = null;

            self.securePhone = null;
            self.secureEmail = null;
            
            self.qrCode = null;
            
            self.otpSecret = null;
          }
        },
        error: function error(err) {
          self.attestServerUrl = null;
          self.gid = null;

          self.securePhone = null;
          self.secureEmail = null;
          
          self.qrCode = null;
          
          self.otpSecret = null;
        }
      });
    },

    appPushSend: function appPushSend() {
      var self = this;

      function appPushSendCountDown() {
        self.appPushSendSeconds --;
        
        self.appPushSendDisabled = true;
        self.appPushSendText = "点击发送验证请求" + "("+self.appPushSendSeconds+")";
        
        self.appPushSendTimeout = window.setTimeout(appPushSendCountDown, 1000);
        
        if (self.appPushSendSeconds <= 0) {
          window.clearTimeout(self.appPushSendTimeout);
          
          self.appPushSendDisabled = false;
          self.appPushSendText = "点击发送验证请求";
          self.appPushSendSeconds = 30;
        }
      }

      self.appPushSendDisabled = true;

      var url = self.attestServerUrl + '/api/guard/apppush/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          self.appPushSendDisabled = false;

          if (r && r.code == 0 && r.data.callbackCode) {
            self.appPushStatusShowAlert = false;
            self.appPushStatusAlertMessage = "";

            self.appPushCallbackCode = r.data.callbackCode;

            self.startAppPushStatus();
            
            appPushSendCountDown();
          } else {
            
            self.startAppPushStatus();
          }
        },
        error: function error(err) {
          console.log(err);

          self.appPushSendDisabled = false;
        }
      });
    },
    startAppPushStatus: function startAppPushStatus() {
      var self = this;

      window.clearTimeout(self.appPushStatusTimeout); // 定时
      
      /*
       * status 
       * 0 init 新建、初始化, 
       * 1 sent 已发送、已扫码等, 
       * 2 valid 验证通过, 
       * 3 fail 验证失败, 
       * 5 cancel 取消, 
       * 9 expired 已过期、不存在
       */
      function appPushStatus() {
        var url = self.attestServerUrl + '/api/guard/apppush/status';
        var postdata = { "gid": self.gid };
        
        $.ajax({
          type: "POST",
          url: url,
          contentType: 'application/json; charset=UTF-8',
          data: JSON.stringify(postdata),
          dataType: "json",
          timeout: 1000,
          success: function success(r) {
            // console.log(url, r);
            if (r && r.code == 0) {
              var status = r.data.status;
              
              if (status == 0) {
                
                self.appPushStatusShowAlert = false;
                self.appPushStatusAlertMessage = "";
              } else if (status == 1) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "等待确认";
              } else if (status == 2) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "已确认";

                window.clearTimeout(self.appPushStatusTimeout);
                window.setTimeout(function () {
                  self.submitForm();
                }, 500);
              } else if (status == 3) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "确认失败";
                
                window.clearTimeout(self.appPushStatusTimeout);
              } else if (status == 5) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "已取消";
                
                window.clearTimeout(self.appPushStatusTimeout);
              } else if (status == 9) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "已失效，请重新发送";
                
                self.appPushCallbackCode = null;
                
                window.clearTimeout(self.appPushStatusTimeout);
                
                window.setTimeout(function () {
                  self.initGuard();
                }, 500);
                
              }
              
            } else {
              window.clearTimeout(self.appPushStatusTimeout);
            }
          },
          error: function error(err) {
            console.log(err);
            window.clearTimeout(self.appPushStatusTimeout);
          }
        });
        
        self.appPushStatusTimeout = window.setTimeout(appPushStatus, 2000);
      }
      
      self.appPushStatusTimeout = window.setTimeout(appPushStatus, 100);
    },
    
    clearAppPushStatus: function clearAppPushStatus() {
      var self = this;

      window.clearTimeout(self.appPushSendTimeout);
      
      self.appPushSendDisabled = false;
      self.appPushSendText = "点击发送验证请求";
      self.appPushSendSeconds = 30;

      window.clearTimeout(self.appPushStatusTimeout);
      self.appPushStatusShowAlert = false;
      self.appPushStatusAlertMessage = "";
      
      self.appPushCallbackCode = null;
    },
    

    otpSend: function otpSend() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/otp/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          /* if (r && r.code == 0) {
            self.otpValidShowAlert = true;
            self.otpValidAlertMessage = "已发送";
          } else if (r && r.code != 0 && r.data.result == 'expired') {
            self.otpValidShowAlert = true;
            self.otpValidAlertMessage = "发送失败，已过期，请重新获取验证码";
            
            window.setTimeout(function () {
              self.initGuard();
            }, 500);
          } else {
            self.otpValidShowAlert = true;
            self.otpValidAlertMessage = "发送失败";
          } */
        },
        error: function error(err) {
          console.log(err);

          self.otpValidShowAlert = true;
          self.otpValidAlertMessage = "发送失败";
        }
      });
    },
    otpValid: function otpValid() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/otp/valid';
      var postdata = { "gid": self.gid, "code": self.otpCode };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
          
          if (r && r.code == 0) {
            var status = r.data.status;
            
            if (status == 2) {
              // self.clearOtp();

              window.setTimeout(function () {
                self.submitForm();
              }, 500);
            } else {
              self.otpValidShowAlert = true;
              self.otpValidAlertMessage = "验证失败";
            }
          }

        },
        error: function error(err) {
          console.log(err);
        }
      });
    },

    clearOtp: function clearOtp() {
      var self = this;
      
      self.otpSendDisabled = false;
      self.otpSendText = "获取验证码";
      self.otpSendSeconds = 60;

      self.otpCode = '';
      self.otpValidShowAlert = false;
      self.otpValidAlertMessage = "";
    },

    
    securePhoneSend: function securePhoneSend() {
      var self = this;
      
      function securePhoneSendCountDown() {
        self.securePhoneSendSeconds --;
        
        self.securePhoneSendDisabled = true;
        self.securePhoneSendText = "获取验证码" + "("+self.securePhoneSendSeconds+")";
        
        self.securePhoneSendTimeout = window.setTimeout(securePhoneSendCountDown, 1000);
        
        if (self.securePhoneSendSeconds <= 0) {
          window.clearTimeout(self.securePhoneSendTimeout);
          
          self.securePhoneSendDisabled = false;
          self.securePhoneSendText = "获取验证码";
          self.securePhoneSendSeconds = 60;
        }
      }

      self.securePhoneSendDisabled = true;

      var url = self.attestServerUrl + '/api/guard/securephone/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          self.securePhoneSendDisabled = false;

          if (r && r.code == 0) {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "已发送";
            
            securePhoneSendCountDown();
          } else if (r && r.code != 0 && r.data.result == 'expired') {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "发送失败，已过期，请重新获取验证码";
            
            window.setTimeout(function () {
              self.initGuard();
            }, 500);
          } else {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "发送失败";
          }
        },
        error: function error(err) {
          console.log(err);

          self.securePhoneSendDisabled = false;

          self.securePhoneValidShowAlert = true;
          self.securePhoneValidAlertMessage = "发送失败";
        }
      });
    },
    securePhoneValid: function securePhoneValid() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/securephone/valid';
      var postdata = { "gid": self.gid, "code": self.securePhoneCode };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
          
          if (r && r.code == 0) {
            var status = r.data.status;
            
            if (status == 2) {
              // self.clearSecurePhone();

              window.setTimeout(function () {
                self.submitForm();
              }, 500);
            } else {
              self.securePhoneValidShowAlert = true;
              self.securePhoneValidAlertMessage = "验证失败";
            }
          }

        },
        error: function error(err) {
          console.log(err);
        }
      });
    },

    clearSecurePhone: function clearSecurePhone() {
      var self = this;
      
      window.clearTimeout(self.securePhoneSendTimeout);
      
      self.securePhoneSendDisabled = false;
      self.securePhoneSendText = "获取验证码";
      self.securePhoneSendSeconds = 60;

      self.securePhoneCode = '';
      self.securePhoneValidShowAlert = false;
      self.securePhoneValidAlertMessage = "";
    },


    secureEmailSend: function secureEmailSend() {
      var self = this;
      
      function secureEmailSendCountDown() {
        self.secureEmailSendSeconds --;
        
        self.secureEmailSendDisabled = true;
        self.secureEmailSendText = "获取验证码" + "("+self.secureEmailSendSeconds+")";
        
        self.secureEmailSendTimeout = window.setTimeout(secureEmailSendCountDown, 1000);
        
        if (self.secureEmailSendSeconds <= 0) {
          window.clearTimeout(self.secureEmailSendTimeout);
          
          self.secureEmailSendDisabled = false;
          self.secureEmailSendText = "获取验证码";
          self.secureEmailSendSeconds = 60;
        }
      }
      
      self.secureEmailSendDisabled = true;

      var url = self.attestServerUrl + '/api/guard/secureemail/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          self.secureEmailSendDisabled = false;

          if (r && r.code == 0) {
            self.secureEmailValidShowAlert = true;
            self.secureEmailValidAlertMessage = "已发送";
            
            secureEmailSendCountDown();
          } else if (r && r.code != 0 && r.data.result == 'expired') {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "发送失败，已过期，请重新获取验证码";
            
            window.setTimeout(function () {
              self.initGuard();
            }, 500);
          } else {
            self.secureEmailValidShowAlert = true;
            self.secureEmailValidAlertMessage = "发送失败";
          }
        },
        error: function error(err) {
          console.log(err);

          self.secureEmailSendDisabled = false;
          
          self.secureEmailValidShowAlert = true;
          self.secureEmailValidAlertMessage = "发送失败";
        }
      });
    },
    secureEmailValid: function secureEmailValid() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/secureemail/valid';
      var postdata = { "gid": self.gid, "code": self.secureEmailCode };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          if (r && r.code == 0) {
            var status = r.data.status;
            
            if (status == 2) {
              // self.clearSecureEmail();

              window.setTimeout(function () {
                self.submitForm();
              }, 500);
            } else {
              self.secureEmailValidShowAlert = true;
              self.secureEmailValidAlertMessage = "验证失败";
            }
          }
        },
        error: function error(err) {
          console.log(err);
        }
      });
    },

    clearSecureEmail: function clearSecureEmail() {
      var self = this;

      window.clearTimeout(self.secureEmailSendTimeout);
      
      self.secureEmailSendDisabled = false;
      self.secureEmailSendText = "获取验证码";
      self.secureEmailSendSeconds = 60;

      self.secureEmailCode = '';
      self.secureEmailValidShowAlert = false;
      self.secureEmailValidAlertMessage = "";
    },
    

    qrCodeInit: function qrCodeInit() {
      var self = this;
      
      if (self.qrCode == null || self.qrCode.scanTypes == null || self.qrCode.scanTypes.length == 0) {
        return;
      }
      
      var scanTypeNames = "";
      for (var i=0; i<self.qrCode.scanTypes.length; i++) {
        var scanType = self.qrCode.scanTypes[i];
        if (scanType == "superapp") {
          scanTypeNames += "、"+superappName;
        } else if (scanType == "qq") {
          scanTypeNames += "、QQ";
        } else if (scanType == "weixinmp") {
          scanTypeNames += "、微信";
        } else if (scanType == "workweixinh5") {
          scanTypeNames += "、企业微信";
        } else if (scanType == "dingtalkh5") {
          scanTypeNames += "、钉钉";
        }
      }
      if (scanTypeNames!="") {
        scanTypeNames = scanTypeNames.substring(1);
      }
      
      self.qrCodeScanTypeNames = scanTypeNames;
      
      self.qrCodeSend();
    },
    
    qrCodeSend: function qrCodeSend() {
      var self = this;

      var url = self.attestServerUrl + '/api/guard/qrcode/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          if (r && r.code == 0 && r.data.scanQrcode) {
            self.qrCodeStatusShowAlert = false;
            self.qrCodeStatusAlertMessage = "";

            self.qrCodeScanQrcode = r.data.scanQrcode;
            self.qrCodeCallbackCode = r.data.callbackCode;

            self.startQrCodeStatus();
          } else {
            
            self.startQrCodeStatus();
          }
        },
        error: function error(err) {
          console.log(err);
        }
      });
    },
    
    qrCodeRefresh: function qrCodeRefresh() {
      var self = this;
      
      self.clearQrCode();
      self.initGuard();
    },

    startQrCodeStatus: function startQrCodeStatus() {
      var self = this;

      window.clearTimeout(self.appPushStatusTimeout); // 定时
      
      /*
       * status 
       * 0 init 新建、初始化, 
       * 1 sent 已发送、已扫码等, 
       * 2 valid 验证通过, 
       * 3 fail 验证失败, 
       * 5 cancel 取消, 
       * 8 scaned 已扫码
       * 9 expired 已过期、不存在
       */
      function qrCodeStatus() {
        var url = self.attestServerUrl + '/api/guard/qrcode/status';
        var postdata = { "gid": self.gid };
        
        $.ajax({
          type: "POST",
          url: url,
          contentType: 'application/json; charset=UTF-8',
          data: JSON.stringify(postdata),
          dataType: "json",
          timeout: 1000,
          success: function success(r) {
            // console.log(url, r);
            if (r && r.code == 0) {
              var status = r.data.status;
              
              if (status == 0) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = false;
                self.qrCodeStatusAlertMessage = "";
              } else if (status == 1) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = false;
                self.qrCodeStatusAlertMessage = "";
              } else if (status == 2) {
                
                self.qrCodeScanSuccess = true;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已确认";

                window.clearTimeout(self.qrCodeStatusTimeout);
                window.setTimeout(function () {
                  self.submitForm();
                }, 500);
              } else if (status == 3) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "确认失败";
                
                window.clearTimeout(self.qrCodeStatusTimeout);
              } else if (status == 5) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已拒绝";
                
                window.clearTimeout(self.qrCodeStatusTimeout);
              } else if (status == 8) {
                
                self.qrCodeScanSuccess = true;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已扫码，等待确认";
              } else if (status == 9) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已失效，请重新发送";
                
                self.qrCodeCallbackCode = null;
                
                window.clearTimeout(self.qrCodeStatusTimeout);
                
                /* window.setTimeout(function () {
                  self.initGuard();
                }, 500); */
                
              }
              
            } else {
              window.clearTimeout(self.qrCodeStatusTimeout);
            }
          },
          error: function error(err) {
            console.log(err);
            window.clearTimeout(self.qrCodeStatusTimeout);
          }
        });
        
        self.qrCodeStatusTimeout = window.setTimeout(qrCodeStatus, 2000);
      }
      
      self.qrCodeStatusTimeout = window.setTimeout(qrCodeStatus, 100);
    },
    
    clearQrCode: function clearQrCode() {
      var self = this;
      
      window.clearTimeout(self.qrCodeStatusTimeout);
      
      self.qrCodeScanQrcode = null;
      self.qrCodeScanSuccess = false;
      self.qrCodeStatusShowAlert = false;
      self.qrCodeStatusAlertMessage = "";

      self.qrCodeCallbackCode = null;
    },
    

    faceVerifyInit: function faceVerifyInit() {
      var self = this;
      
      self.faceVerifySend();
    },
    
    faceVerifySend: function faceVerifySend() {
      var self = this;

      var url = self.attestServerUrl + '/api/guard/faceverify/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          if (r && r.code == 0 && r.data.scanFaceverify) {
            self.faceVerifyStatusShowAlert = false;
            self.faceVerifyStatusAlertMessage = "";

            self.faceVerifyScanFaceverify = r.data.scanFaceverify;
            self.faceVerifyCallbackCode = r.data.callbackCode;

            self.startFaceVerifyStatus();
          } else {
            
            self.startFaceVerifyStatus();
          }
        },
        error: function error(err) {
          console.log(err);
        }
      });
    },
    
    faceVerifyRefresh: function faceVerifyRefresh() {
      var self = this;
      
      self.clearFaceVerify();
      self.initGuard();
    },

    startFaceVerifyStatus: function startFaceVerifyStatus() {
      var self = this;

      window.clearTimeout(self.appPushStatusTimeout); // 定时
      
      /*
       * status 
       * 0 init 新建、初始化, 
       * 1 sent 已发送、已扫码等, 
       * 2 valid 验证通过, 
       * 3 fail 验证失败, 
       * 5 cancel 取消, 
       * 8 scaned 已扫码
       * 9 expired 已过期、不存在
       */
      function faceVerifyStatus() {
        var url = self.attestServerUrl + '/api/guard/faceverify/status';
        var postdata = { "gid": self.gid };
        
        $.ajax({
          type: "POST",
          url: url,
          contentType: 'application/json; charset=UTF-8',
          data: JSON.stringify(postdata),
          dataType: "json",
          timeout: 1000,
          success: function success(r) {
            // console.log(url, r);
            if (r && r.code == 0) {
              var status = r.data.status;
              
              if (status == 0) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = false;
                self.faceVerifyStatusAlertMessage = "";
              } else if (status == 1) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = false;
                self.faceVerifyStatusAlertMessage = "";
              } else if (status == 2) {
                
                self.faceVerifyScanSuccess = true;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "人脸识别成功";

                window.clearTimeout(self.faceVerifyStatusTimeout);
                window.setTimeout(function () {
                  self.submitForm();
                }, 500);
              } else if (status == 3) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "人脸识别失败";
                
                window.clearTimeout(self.faceVerifyStatusTimeout);
              
              } else if (status == 11) {
                
                self.faceVerifyScanSuccess = true;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "人脸识别中…";
              } else if (status == 9) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "已失效，请刷新二维码";
                
                self.faceVerifyCallbackCode = null;
                
                window.clearTimeout(self.faceVerifyStatusTimeout);
                
                /* window.setTimeout(function () {
                  self.initGuard();
                }, 500); */
                
              }
              
            } else {
              window.clearTimeout(self.faceVerifyStatusTimeout);
            }
          },
          error: function error(err) {
            console.log(err);
            window.clearTimeout(self.faceVerifyStatusTimeout);
          }
        });
        
        self.faceVerifyStatusTimeout = window.setTimeout(faceVerifyStatus, 2000);
      }
      
      self.faceVerifyStatusTimeout = window.setTimeout(faceVerifyStatus, 100);
    },
    
    clearFaceVerify: function clearFaceVerify() {
      var self = this;
      
      window.clearTimeout(self.faceVerifyStatusTimeout);
      
      self.faceVerifyScanQrcode = null;
      self.faceVerifyScanSuccess = false;
      self.faceVerifyStatusShowAlert = false;
      self.faceVerifyStatusAlertMessage = "";

      self.faceVerifyCallbackCode = null;
    },
    
    
  }
});
</script>


<script type="text/javascript">

                        var i_login = "\u7A0D\u7B49\u7247\u523B\u2026\u2026";
                        $( document ).ready(function() {
                          
                            $("#fm1").submit(function () {
                              var username = $("#fm1").find("#username").val();
                              var password = $("#fm1").find("#password").val();
                              if (username == null || username == '') {
                                $("#showErrorMessageUsername").click();
                                return false;
                              }

                              if (password == null || password == '') {
                                $("#showErrorMessagePassword").click();
                                return false;
                              }

                              if (mfaEnabled) {
                                var mfaState = $("#fm1").find('[name="mfaState"]').val();
                                if (mfaState == null || mfaState == '') {
                                  mfaDetect();
                                  return false;
                                }
                              }
                              
                              // 前端密码加密
                              if (encryptEnabled && password.indexOf('__RSA__') < 0) {
                                var encodedPassword = "__RSA__"+encrypt.encrypt(password);
                                $("#fm1").find("#password").val(encodedPassword);
                              }
                              
                                //$("#fm1").find(":submit").attr("disabled", true);
                                //$("#fm1").find(":submit").attr("value", i_login);
                                //console.log(i_login);
                                
                                // 处理记住密码
                                doRememberPassword(username, password);
                                
                                doLogin();
                                return true;
                            });

                            $("#fm2").submit(function () {
                              var mobile = $("#fm2").find("#username").val();
                              var dynamiccode = $("#fm2").find("#password").val();
                              if (mobile == null || mobile == '') {
                                $("#showErrorMessageMobile").click();
                                return false;
                              }
                              if (!mobilePattern.test(mobile)) {
                                $("#showErrorMessageMobile").click();
                                return false;
                              }

                              if (dynamiccode == null || dynamiccode == '') {
                                $("#showErrorMessageDynamicCode").click();
                                return false;
                              }

                                //$("#fm2").find(":submit").attr("disabled", true);
                                //$("#fm2").find(":submit").attr("value", i_login);
                                //console.log(i_login);
                                
                                doLogin();
                                return true;
                            });
                        });
                    </script>

                    <script type="text/javascript">
                        function refreshCaptchaInMenu(currentMenu) {
                          refreshCaptcha($("#fm"+currentMenu+"Input").find("#captcha_img"));
                        }
                        function refreshCaptcha(obj) { // console.log(obj);
                          var captcha_img = $(obj);
                          var captcha_container = captcha_img.parents("div.captcha-input-container");
                          captcha_container.find("#captcha_img").attr("src", "\/cas\/captcha.jpg"+"?r=" + (new Date()).getTime() + Math.floor(Math.random()*24));
                          captcha_container.find("#captcha").val("");
                          captcha_container.find("#captcha").focus();
                        }
                        function togglePassword(obj) {
                          var $obj = $(obj);
                          
                          var $password = $(obj).parents('.sw-input').find("#password");
                          
                          if ($password.attr('type') == 'password') {
                            $password.attr('type', 'text');
                            $obj.removeClass('su-icon-hide').addClass('su-icon-display');
                          } else {
                            $password.attr('type', 'password');
                            $obj.removeClass('su-icon-display').addClass('su-icon-hide');
                          }
                        }
                    </script>


  
  <script type="text/javascript">
  $( document ).ready(function() {
    var location = self.document.location;
    var hash = decodeURIComponent(location.hash);
    
    if (hash != undefined && hash != '' && hash.indexOf('#') === -1) {
        hash = '#' + hash;
    }
    
    var action = location.href;
  
    /* var action = $('#fm1').attr('action');
    if (action == undefined) {
        action = location.href;
    } else {
        var qidx = location.href.indexOf('?');
        if (qidx != -1) {
            var queryParams = location.href.substring(qidx);
            action += queryParams;
        }
    } */
    action += hash;
    
    $('#fm1').attr('action', action);
    $('#fm2').attr('action', action);
    $('#fm3').attr('action', action);

    $('#fm9').attr('action', action);

    initRememberPassword();
  });
  </script>

  <script type="text/javascript">
  function submitByEnter(event, fmId) {
    if(event.which === 13 || event.keyCode === 13) {
      $(fmId).find('[name="button"]').click();
    }
  }
  $( document ).ready(function() {
    $("#fm1Input").find("#username").keyup(function(event){
      submitByEnter(event, "#fm1Input");
    });
    $("#fm1Input").find("#password").keyup(function(event){
      submitByEnter(event, "#fm1Input");
    });
    $("#fm1Input").find("#captcha").keyup(function(event){
      submitByEnter(event, "#fm1Input");
    });
    $("#fm2Input").find("#mobile").keyup(function(event){
      submitByEnter(event, "#fm2Input");
    });
    $("#fm2Input").find("#dynamiccode").keyup(function(event){
      submitByEnter(event, "#fm2Input");
    });
  });
  </script>

  <script type="text/javascript">
  /* $( document ).ready(function() {
    $(".el-carousel__container").css({"max-height":"1080px", "min-height":"660px"});
  }); */
  </script>

    </div>
</main>





<script type="text/javascript">
function back() {
  window.location.href = "\/cas\/login" + window.location.search;
}
</script>

<script src="/cas/deps/js/fingerprintjs/v3/iife.min.js"></script>
<script>
$( document ).ready(function() {
  var fpVisitorId = (localStorage.fpVisitorId || "");
  if (fpVisitorId == "") {
    var fpPromise = FingerprintJS.load();
    fpPromise
      .then(function (fp) { return fp.get() })
      .then(function (result) {
        // Handle the result
        //console.log(result)
        localStorage.fpVisitorId = result.visitorId;
        $('[name="fpVisitorId"]').val(result.visitorId);
      });
  } else {
    $('[name="fpVisitorId"]').val(fpVisitorId);
  }
});
</script>

</body>
</html>
