| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |   <template>    <view class="zai-box">      <scroll-view scroll-y class="page">        <view class="text-center" :style="[{ animation: 'show ' + 0.4 + 's 1' }]">          <image src="/static/desk-img/logo.png" mode='aspectFit' class="zai-logo "></image>        </view>        <view class="text-center" :style="[{ animation: 'show ' + 0.4 + 's 1' }]">          <!-- <u-link  class="zai-title2 text-shadow " href="http://localhost:8080?ticket=234" >切换单点登录</u-link> -->          <view class="zai-title2 text-shadow " @click="changeloginType">切换单点登录</view>        </view>        <view class="box padding-lr-xl login-paddingtop" :style="[{ animation: 'show ' + 0.6 + 's 1' }]">          <block>            <view class="cu-form-group margin-top  shadow-warp" :class="[shape == 'round' ? 'round' : '']">              <view class="title"><text class="cuIcon-people margin-right-xs"></text>账号:</view>              <input placeholder="请输入账号" name="input" v-model="userName"></input>            </view>            <view class="cu-form-group margin-top shadow-warp" :class="[shape == 'round' ? 'round' : '']">              <view class="title"><text class="cuIcon-lock margin-right-xs"></text>密码:</view>              <input class="uni-input" placeholder="请输入密码" :password="!showPassword" v-model="password" />              <view class="action text-lg">                <text :class="[showPassword ? 'cuIcon-attention' : 'cuIcon-attentionforbid']"                  @click="changePassword"></text>              </view>            </view>            <view class="padding text-center margin-top">              <button class="cu-btn bg-blue lg margin-right shadow" :loading="loading"                :class="[shape == 'round' ? 'round' : '']" @tap="onLogin"><text space="emsp">{{ loading ? "登录中..." :                  "登录" }}</text>              </button>            </view>          </block>          <!-- #ifdef APP-PLUS -->          <view class="padding flex flex-direction  text-center">            当前版本:{{ version }}          </view>          <!-- #endif -->        </view>      </scroll-view>      <!-- 登录加载弹窗 -->      <view class="cu-load load-modal" v-if="loading">        <!-- <view class="cuIcon-emojifill text-orange"></view> -->        <image src="/static/desk-img/144.png" mode="aspectFit" class="round"></image>        <view class="gray-text">登录中...</view>      </view>    </view>  </template><script>import { ACCESS_TOKEN, USER_NAME, USER_INFO } from "@/common/util/constants";import { mapActions } from "vuex";import configService from "@/common/service/config.service.js";//import FlvJs from "flv.js";import api from "@/api/api";export default {  data() {    return {      shape: "", //round 圆形      loading: false,      userName: "",      password: "",      phoneNo: "",      smsCode: "",      showPassword: false, //是否显示明文      smsCountDown: 0,      smsCountInterval: null,      toggleDelay: false,      version: "",      //第三方登录相关信息      thirdType: "",      thirdLoginInfo: "",      thirdLoginState: false,      bindingPhoneModal: false,      thirdUserUuid: "",    };  },  onLoad: function () {    // #ifdef APP-PLUS    var that = this;    plus.runtime.getProperty(plus.runtime.appid, function (wgtinfo) {      that.version = wgtinfo.version;    });    // #endif  },  computed: {    isSendSMSEnable() {      return this.smsCountDown <= 0 && this.phoneNo.length > 4;    },    getSendBtnText() {      if (this.smsCountDown > 0) {        return this.smsCountDown + "秒后发送";      } else {        return "发送验证码";      }    },    canSMSLogin() {      return this.userName.length > 4 && this.smsCode.length > 4;    },    canPwdLogin() {      return this.userName.length > 4 && this.password.length > 4;    },  },  methods: {    ...mapActions(["mLogin", "PhoneLogin", "ThirdLogin"]),    // 判断是否在APP环境中    isApp() {      return typeof plus !== "undefined";    },    onLogin: function () {      if (!this.userName || this.userName.length == 0) {        this.$tip.toast("请填写用户名");        return;      }      if (!this.password || this.password.length == 0) {        this.$tip.toast("请填写密码");        return;      }      let loginParams = {        username: this.userName,        password: this.password,      };      this.loading = true;      this.mLogin(loginParams)        .then((res) => {          this.loading = false;          if (res.data.success) {            if (this.isApp()) {              // console.log('当前是APP环境');              this.saveClientId();            } else {              this.getPermissionList();            }            // #ifdef APP-PLUS            // #endif            // #ifndef APP-PLUS            // #endif          } else {            this.$tip.alert(res.data.message);          }        })        .catch((err) => {          let msg = err.data.message || "请求出现错误,请稍后再试";          this.loading = false;          this.$tip.alert(msg);        })        .finally(() => {          this.loading = false;        });    },    //获取权限菜单    getPermissionList() {      new Promise((resolve, reject) => {        api          .getPermission({})          .then((response) => {            console.log(response, "权限菜单----------------");            if (response.statusCode == 200) {              let data = response.data.result.menuApp;              let dataBtn = response.data.result.appauth;              uni.setStorageSync("menuPermission", data);              uni.setStorageSync("btnPermission", dataBtn);              this.$tip.success("登录成功!");              uni.navigateTo({                url: "/pages/index/index",              });            } else {              reject(response);            }          })          .catch((error) => {            console.log("catch===>response", response);            reject(error);          });      });    },    saveClientId() {      var info = plus.push.getClientInfo();      var cid = info.clientid;      this.$http        .get("/sys/user/saveClientId", { params: { clientId: cid } })        .then((res) => {          console.log("res::saveClientId>", res);          //获取权限菜单          this.getPermissionList();        });    },    changePassword() {      this.showPassword = !this.showPassword;    },    onSMSSend() {      let smsParams = {};      smsParams.mobile = this.phoneNo;      smsParams.smsmode = "0";      let checkPhone = new RegExp(/^[1]([3-9])[0-9]{9}$/);      if (!smsParams.mobile || smsParams.mobile.length == 0) {        this.$tip.toast("请输入手机号");        return false;      }      if (!checkPhone.test(smsParams.mobile)) {        this.$tip.toast("请输入正确的手机号");        return false;      }      this.$http.post("/sys/sms", smsParams).then((res) => {        if (res.data.success) {          this.smsCountDown = 60;          this.startSMSTimer();        } else {          this.smsCountDown = 0;          this.$tip.toast(res.data.message);        }      });    },    startSMSTimer() {      this.smsCountInterval = setInterval(() => {        this.smsCountDown--;        if (this.smsCountDown <= 0) {          clearInterval(this.smsCountInterval);        }      }, 1000);    },    onSMSLogin() {      let checkPhone = new RegExp(/^[1]([3-9])[0-9]{9}$/);      if (!this.phoneNo || this.phoneNo.length == 0) {        this.$tip.toast("请填写手机号");        return;      }      if (!checkPhone.test(this.phoneNo)) {        this.$tip.toast("请输入正确的手机号");        return false;      }      if (!this.smsCode || this.smsCode.length == 0) {        this.$tip.toast("请填短信验证码");        return;      }      let loginParams = {        mobile: this.phoneNo,        captcha: this.smsCode,      };      this.PhoneLogin(loginParams)        .then((res) => {          console.log("res====》", res);          if (res.data.success) {            this.$tip.success("登录成功!");            uni.navigateTo({              url: "/pages/index/index",            });          } else {            this.$tip.error(res.data.message);          }        })        .catch((err) => {          let msg =            ((err.response || {}).data || {}).message ||            err.data.message ||            "请求出现错误,请稍后再试";          this.$tip.error(msg);        });    },    loginSuccess() {      // 登陆成功,重定向到主页      this.$Router.replace({ name: "index" });    },    requestFailed(err) {      this.$message.warning("登录失败");    },    changeloginType() {      console.log("changeloginType====");      var tourl = configService.apiUrl;      tourl = tourl.replace(9999, 8092);      var rastourl =        "https://id.shendong.com.cn/default" +        "/login?service=" + tourl;      console.log("===========" + rastourl);      this.openBrowser(rastourl);      // window.location.href='/pages/index/index?ticket=123'      // this.$router.push({ path: '/pages/index/index?ticket=123',query:"2w354" })    },    openBrowser(url) {      // 使用uni.navigateTo打开内置浏览器      console.log("----url---------------" + url);      uni.navigateTo({        url: "/pages/webview/webview?url=" + encodeURIComponent(url),      });    },  },  beforeDestroy() {    if (this.smsCountInterval) {      clearInterval(this.smsCountInterval);    }  },};</script><style>.login-paddingtop {  padding-top: 300upx;}.zai-box {  height: 100vh;  background-image: url(/static/desk-img/loginBg.png);  background-size: cover;  padding: 0 20upx;  padding-top: 100upx;  position: relative;}.zai-logo {  width: 200upx;  height: 150px;}.zai-title {  margin-top: 20upx;  font-size: 58upx;  color: #000000;  text-align: center;}.input-placeholder,.zai-input {  color: #94afce;}.zai-btn {  background: #ff65a3;  color: #fff;  border: 0;  border-radius: 100upx;  font-size: 36upx;}.zai-btn:after {  border: 0;}/*按钮点击效果*/.zai-btn.button-hover {  transform: translate(1upx, 1upx);}</style>
 |