From ef37c59e055a990ce247b265b27d3fcef430a243 Mon Sep 17 00:00:00 2001
From: 杨磊 <505174330@qq.com>
Date: 星期五, 15 八月 2025 10:19:18 +0800
Subject: [PATCH] first submit

---
 src/views/login/findPassword.vue |  402 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 402 insertions(+), 0 deletions(-)

diff --git a/src/views/login/findPassword.vue b/src/views/login/findPassword.vue
new file mode 100644
index 0000000..e97ccad
--- /dev/null
+++ b/src/views/login/findPassword.vue
@@ -0,0 +1,402 @@
+<template>
+  <div class="loginPage">
+    <div class="loginContent">
+      <div class="loginFormBox">
+        <div class="title">
+          <span class="active">鎵惧洖瀵嗙爜</span>
+        </div>
+        <!-- 鐢ㄦ埛鍚嶅瘑鐮佺櫥褰� -->
+        <div>
+          <div class="loginContentBox">
+            <div class="errorTips" v-if="errorTipsTxt">
+              {{ errorTipsTxt }}
+              <span
+                v-if="loginFormType == 'password'"
+                class="findPassword"
+                @click="toFindPassword()"
+                >鎵惧洖瀵嗙爜</span
+              >
+            </div>
+            <div class="codeLoginItemBox flex">
+              <el-select
+                style="width: 100px"
+                class="mr10"
+                placeholder="璇烽�夋嫨"
+                v-model="loginForm.region"
+              >
+                <el-option
+                  v-for="item in options"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                ></el-option>
+              </el-select>
+              <el-input
+                class="flex1"
+                placeholder="璇疯緭鍏ユ墜鏈哄彿"
+                v-model="loginForm.mobilePhone"
+                @keyup.enter.native="loginFun"
+              ></el-input>
+            </div>
+            <div class="codeLoginItemBox flex">
+              <el-input
+                placeholder="璇疯緭鍏ュ浘褰㈤獙璇佺爜"
+                class="flex1 mr10"
+                v-model="loginForm.imgCode"
+              ></el-input>
+              <div class="imgCode">
+                <img :src="imgCode" alt="" @click="getImgCapcha" />
+              </div>
+            </div>
+            <div class="codeLoginItemBox flex">
+              <el-input
+                placeholder="璇疯緭鍏ラ獙璇佺爜"
+                class="flex1 mr10"
+                v-model="loginForm.verificationCode"
+                @keyup.enter.native="loginFun"
+              ></el-input>
+              <el-button
+                style="width: 140px"
+                @click="getVerifyCode"
+                :disabled="countDown != 0"
+                >{{
+                  countDown == 0
+                    ? "鑾峰彇鐭俊楠岃瘉鐮�"
+                    : "楠岃瘉鐮�(" + countDown + "s)"
+                }}</el-button
+              >
+            </div>
+            <!-- <div class="loginItemBox" v-if="loginFormType == 'password'">
+              <span>鎵嬫満鍙�</span>
+              <el-input
+                class="loginItemIpt"
+                v-model="loginForm.mobilePhone"
+                placeholder="璇疯緭鍏ユ墜鏈哄彿"
+                clearable
+                @keyup.enter.native="loginFun"
+              ></el-input>
+            </div> -->
+            <div class="loginItemBox">
+              <span>鏂板瘑鐮�</span>
+              <el-input
+                class="loginItemIpt"
+                v-model="loginForm.password"
+                type="password"
+                show-password
+                placeholder="璇疯緭鍏ュ瘑鐮�"
+                @keyup.enter.native="loginFun"
+              ></el-input>
+            </div>
+            <div class="loginItemBox">
+              <span>纭瀵嗙爜</span>
+              <el-input
+                class="loginItemIpt"
+                v-model="loginForm.repetitionPassword"
+                type="password"
+                show-password
+                placeholder="璇疯緭鍏ョ‘璁ゅ瘑鐮�"
+                @keyup.enter.native="loginFun"
+              ></el-input>
+            </div>
+            <div class="loginBtnBox">
+              <el-button
+                type="primary"
+                class="loginBtn"
+                @click="loginFun"
+                :loading="loading"
+                >閲嶇疆瀵嗙爜</el-button
+              >
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  name: "login",
+  data() {
+    return {
+      redirectPath: "",
+      loading: false,
+      errorTipsTxt: "",
+      loginFormType: "code",
+      imgCode: "",
+      loginForm: {
+        region: "涓浗+86",
+        mobilePhone: "",
+        password: "",
+        imgCode: "",
+        verificationCode: "",
+        repetitionPassword: "",
+      },
+      countDown: 0,
+      options: [
+        {
+          value: "涓浗+86",
+          label: "涓浗+86",
+        },
+      ],
+    };
+  },
+  created() {
+    this.redirectPath = this.$route.query.redirectPath;
+    this.getImgCapcha();
+  },
+  methods: {
+    getImgCapcha() {
+      this.MG.identity.getImgCode().then((res) => {
+        this.imgCode = "data:image/png;base64," + res;
+      });
+    },
+    // 鑾峰彇楠岃瘉鐮�
+    getVerifyCode() {
+      if (!this.config.reg_tel.test(this.loginForm.mobilePhone)) {
+        this.$message({
+          message: "璇疯緭鍏ユ纭牸寮忕殑鎵嬫満鍙凤紒",
+          type: "error",
+        });
+        return false;
+      } else if (
+        this.loginForm.imgCode == "" ||
+        this.loginForm.imgCode.length != 4
+      ) {
+        this.$message({
+          message: "璇疯緭鍏ユ纭牸寮忕殑鍥惧舰楠岃瘉鐮�",
+          type: "error",
+        });
+        return false;
+      } else {
+        this.MG.identity
+          .getPhoneCode({
+            phoneNumber: this.loginForm.mobilePhone,
+            imageCaptcha: this.loginForm.imgCode,
+            appRefCode: this.config.appRefCode,
+          })
+          .then((res) => {
+            if (res == "楠岃瘉鐮佸彂閫佹垚鍔�") {
+              this.getSecond(60);
+              this.$message({
+                message: res,
+                type: "success",
+              });
+            } else {
+              this.$message({
+                message: res,
+                type: "error",
+              });
+              this.getImgCapcha();
+            }
+          });
+      }
+    },
+    //楠岃瘉鐮佸�掕鏃�
+    getSecond(time) {
+      if (!this.timer) {
+        this.countDown = time;
+        this.timer = setInterval(() => {
+          this.countDown--;
+          if (this.countDown == 0) {
+            clearInterval(this.timer);
+            this.timer = null;
+          }
+        }, 1000);
+      }
+    },
+    loginFun() {
+      if (!this.loginForm.mobilePhone) {
+        this.$message({
+          message: "璇疯緭鍏ユ墜鏈哄彿锛�",
+          type: "error",
+        });
+        return false;
+      }
+      if (!this.loginForm.verificationCode) {
+        this.$message({
+          message: "璇疯緭鍏ョ煭淇¢獙璇佺爜锛�",
+          type: "error",
+        });
+        return false;
+      }
+      if (!this.loginForm.password) {
+        this.$message({
+          message: "璇疯緭鍏ュ瘑鐮侊紒",
+          type: "error",
+        });
+        return false;
+      }
+      if (this.loginForm.password != this.loginForm.repetitionPassword) {
+        this.$message({
+          message: "涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷达紒",
+          type: "error",
+        });
+        return false;
+      }
+
+      this.loading = true;
+
+      this.MG.identity
+        .changePasswordByMobilePhone({
+          phoneNumber: this.loginForm.mobilePhone,
+          phoneCaptcha: this.loginForm.verificationCode,
+          password: this.loginForm.password,
+        })
+        .then((res) => {
+          this.loading = false;
+          this.$message({
+            message: "瀵嗙爜閲嶇疆鎴愬姛锛�",
+            type: "success",
+          });
+          this.$router.push({
+            path: "/login",
+          });
+        });
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+@import "@/assets/css/theme.less";
+.loginPage {
+  width: 100%;
+  height: 100%;
+  background-image: url("@/assets/images/login/pageBg.png");
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+  position: relative;
+  .loginContent {
+    width: 1200px;
+    height: 570px;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    margin-top: -285px;
+    margin-left: -600px;
+    padding: 36px 0;
+    box-shadow: 0px 0px 66px 0px rgb(170 170 170 / 35%);
+    background-image: url("@/assets/images/login/boxBg.png");
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    box-sizing: border-box;
+    text-align: right;
+    .loginFormBox {
+      display: inline-block;
+      width: 420px;
+      height: 496px;
+      padding: 30px 40px;
+      margin-right: 60px;
+      background: #fff;
+      box-sizing: border-box;
+      box-shadow: 0 0 5px 0 hsl(0deg 0% 67% / 35%);
+      .title {
+        font-size: 16px;
+        text-align: center;
+        color: #333333;
+        span {
+          display: inline-block;
+          width: 80px;
+          cursor: pointer;
+          &.active {
+            font-weight: bold;
+            color: @color;
+          }
+        }
+        .division {
+          width: 5px;
+          margin: 0 50px;
+          cursor: initial;
+          color: #d0d0d0;
+        }
+      }
+      .loginContentBox {
+        padding-top: 30px;
+        margin-top: 20px;
+        margin-bottom: 15px;
+        position: relative;
+        .errorTips {
+          position: absolute;
+          top: 8px;
+          left: 10px;
+          font-size: 12px;
+          color: #e50021;
+          .findPassword {
+            cursor: pointer;
+            color: #2b68cd;
+            font-size: 12px;
+          }
+        }
+        .codeLoginItemBox {
+          margin-bottom: 15px;
+          .imgCode {
+            width: 140px;
+            height: 40px;
+            img {
+              width: 100%;
+              height: 100%;
+              background: #efefef;
+            }
+          }
+        }
+        .loginItemBox {
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          border-radius: 4px;
+          margin-bottom: 15px;
+          box-sizing: border-box;
+          border: 1px solid #dcdfe6;
+          span {
+            display: inline-block;
+            width: 100px;
+            text-align: center;
+          }
+        }
+        .changFormBtn {
+          margin-bottom: 15px;
+          overflow: hidden;
+          span {
+            cursor: pointer;
+          }
+        }
+        .loginBtnBox {
+          margin-bottom: 15px;
+          .loginBtn {
+            width: 100%;
+          }
+        }
+        .registerBox {
+          margin-top: 20px;
+          font-size: 14px;
+          text-align: center;
+          color: #666666;
+          span {
+            cursor: pointer;
+          }
+          .division {
+            margin: 0 20px;
+            cursor: initial;
+            color: #d0d0d0;
+          }
+        }
+      }
+      .wechatBox {
+        .wxCodeBox {
+          margin-top: 10px;
+          height: 300px;
+        }
+      }
+    }
+  }
+}
+.mr10 {
+  margin-right: 10px;
+}
+</style>
+<style>
+.loginItemIpt .el-input__inner {
+  height: 38px;
+  line-height: 38px;
+  border: 0;
+}
+</style>

--
Gitblit v1.9.1